Update repo URLs
All checks were successful
Deploy / Deploy Website (push) Successful in 31s

This commit is contained in:
Joshua Goins 2025-05-21 16:17:18 -04:00
parent bdf2887a58
commit 400ee099f1
8 changed files with 12 additions and 12 deletions

View file

@ -39,7 +39,7 @@ So I asked on Mastodon about a possible solution to my condumdrum, and [@NotNite
(Embedded post temporarily unavailable.)
This is genius, it's basically pushing all of the parts that connect to the proprietary Steamworks bits to a separate process. That process can also start from another executable that could be compiled separately, which is what I did to create [Steamwrap](https://github.com/redstrate/steamwrap). It's basic at the moment and doesn't have IPC yet, but can be expanded in the future.
This is genius, it's basically pushing all of the parts that connect to the proprietary Steamworks bits to a separate process. That process can also start from another executable that could be compiled separately, which is what I did to create [steamwrap](https://codeberg.org/redstrate/steamwrap). It's basic at the moment and doesn't have IPC yet, but can be expanded in the future.
So my plan is to build binaries for Linux (ones that are compatible with the Steam Linux Runtime, of course) and upload them to the Astra distribution server. I want to do that during the build process, hopefully.

View file

@ -82,4 +82,4 @@ I recently had some trouble attempting to decompile the DX11 DXBC shader bytecod
{{< stoot "mastodon.art" "111110339774483271" >}}
So I took the time to splice together a new library called [dxbc](https://github.com/redstrate/dxbc) (yes, I know very creative name!) It's the DXBC decompiler used in DXVK, usable in library form. I plan on integrating this with Novus soon, so it can load the shader files from the game.
So I took the time to splice together a new library called [dxbc](https://codeberg.org/redstrate/dxbc) (yes, I know very creative name!) It's the DXBC decompiler used in DXVK, usable in library form. I plan on integrating this with Novus soon, so it can load the shader files from the game.

View file

@ -168,6 +168,6 @@ pub fn get_warp(&mut self, warp_id: u32) -> Option<(u32, u16)> {
}
```
Some of this was fixed by improving the signature of the function itself (with `Option`!) Another part of it is introducing a higher-level API for grabbing Excel data. I now have a library called [Icarus](https://github.com/redstrate/Icarus) based on the fantastic schema in [EXDSchema](https://github.com/xivdev/EXDSchema), generated with [EXDGen](https://github.com/redstrate/EXDGen). While it only supports a small portion of the schema, it's more than good enough for Kawari's purposes. Another improvement that helped was in [Physis](https://github.com/redstrate/Physis), where `ColumnData` now has `into_x()` helpers so you don't have to write `match` code yourself in the caller.
Some of this was fixed by improving the signature of the function itself (with `Option`!) Another part of it is introducing a higher-level API for grabbing Excel data. I now have a library called [Icarus](https://github.com/redstrate/Icarus) based on the fantastic schema in [EXDSchema](https://github.com/xivdev/EXDSchema), generated with [EXDGen](https://codeberg.org/redstrate/EXDGen). While it only supports a small portion of the schema, it's more than good enough for Kawari's purposes. Another improvement that helped was in [Physis](https://github.com/redstrate/Physis), where `ColumnData` now has `into_x()` helpers so you don't have to write `match` code yourself in the caller.
[^1]: If you are interested, I have some incomplete documentation [here](https://wiki.xiv.zone/Launcher). You might also want to take a look at [Kawari's launcher page HTML](https://github.com/redstrate/Kawari/blob/master/resources/templates/launcher.html).

View file

@ -16,7 +16,7 @@ In the last update, NotNite tipped me off to [Project Chronofoil](https://github
![The Chronofoil plugin in-game, on the main menu. I already captured a session beforehand.](plugin.webp)
However the project doesn't include a tool (that I could find anyway, maybe [FFXIVMon](https://github.com/takhlaq/ffxivmon)?) to extract the data of these captures. They have a library to read them in C#, but I don't work in C# so it's not too much use to me. After a few hours of hacking though, I whipped up a tool that extracts packets from `.cfcap` files and expands them into a nice directory structure. The project is [available on GitHub](https://github.com/redstrate/XIVPacketTools)[^1].
However the project doesn't include a tool (that I could find anyway, maybe [FFXIVMon](https://github.com/takhlaq/ffxivmon)?) to extract the data of these captures. They have a library to read them in C#, but I don't work in C# so it's not too much use to me. After a few hours of hacking though, I whipped up a tool that extracts packets from `.cfcap` files and expands them into a nice directory structure. The project is [available on GitHub](https://codeberg.org/redstrate/xivpackettools)[^1].
![An example of what the extracted directory structure looks like.](directory.webp)

View file

@ -58,7 +58,7 @@ They also reproduced an issue where the client takes a while to load into a zone
# Character creation
This is one the features I implemented after I was tipped off to [Project Chronofoil](https://github.com/ProjectChronofoil/) (as described in [the previous update.]({{< ref "kawari2" >}})) With it and [my cfcap-expand tool](https://github.com/redstrate/XIVPacketTools), it was trivial to dissect the lobby packets during character creaton. Not only was it easy, it was way faster than my previous methods. And now you can "create" a character!
This is one the features I implemented after I was tipped off to [Project Chronofoil](https://github.com/ProjectChronofoil/) (as described in [the previous update.]({{< ref "kawari2" >}})) With it and [my cfcap-expand tool](https://codeberg.org/redstrate/xivpackettools), it was trivial to dissect the lobby packets during character creaton. Not only was it easy, it was way faster than my previous methods. And now you can "create" a character!
{{< tube "https://tube.ryne.moe/videos/embed/094d6f28-2441-454e-a7fd-74791b72fe5a" >}}

View file

@ -45,7 +45,7 @@ In the meantime I'll move onto spawning NPCs/objects and see if I have more luck
# Packet names
When going through my packet captures, I manually typed what each IPC opcode meant as I went along. But this was slow, time-consuming - you get the point. So I added a feature to [cfcap-expand](https://github.com/redstrate/XIVPacketTools) that takes an opcode.json and uses an name for an IPC opcode if available.
When going through my packet captures, I manually typed what each IPC opcode meant as I went along. But this was slow, time-consuming - you get the point. So I added a feature to [cfcap-expand](https://codeberg.org/redstrate/xivpackettools) that takes an opcode.json and uses an name for an IPC opcode if available.
![Now it's much easier to tell the packets apart.](packets.webp)

View file

@ -7,7 +7,7 @@ projtags:
- Fediverse
- Mastodon
- Godot
source: "https://github.com/redstrate/fediseum"
source: "https://codeberg.org/redstrate/FEDISEUM"
license: MIT
summary: "Virtual art museum"
---

View file

@ -11,17 +11,17 @@
{
"name": "Refitter",
"description": "Modify chest bones for specific gear",
"url": "https://github.com/redstrate/Refitter"
"url": "https://codeberg.org/redstrate/Refitter"
},
{
"name": "Hooky",
"description": "Send webhooks for events in FFXIV",
"url": "https://github.com/redstrate/hooky"
"url": "https://codeberg.org/redstrate/hooky"
},
{
"name": "EasyFullscreen",
"description": "Make FFXIV act like a good game that can enter and exit fullscreen with F11",
"url": "https://github.com/redstrate/EasyFullscreen"
"url": "https://codeberg.org/redstrate/EasyFullscreen"
},
{
"name": "Neo Armor Refit Collection",
@ -36,12 +36,12 @@
{
"name": "AllowLoginFail",
"description": "Stop the game from quitting over lobby connection errors",
"url": "https://github.com/redstrate/AllowLoginFail"
"url": "https://codeberg.org/redstrate/AllowLoginFail"
},
{
"name": "Scripter",
"description": "Inspect the Lua state and run custom scripts",
"url": "https://github.com/redstrate/Scripter"
"url": "https://codeberg.org/redstrate/Scripter"
}
]
},