kaitai_struct_formats
kaitai_struct_formats copied to clipboard
Add yodesk.ksy
As suggested in https://github.com/cyco/WebFun/issues/3 this PR adds a spec for the file format used by Yoda Stories. The definition contains a few fields whose purpose is unclear to me (e.g. https://github.com/cyco/kaitai_struct_formats/blob/add-yodesk/game/yodesk.ksy#L203) and there's some unusual error handling that could probably be improved but I don't know how (https://github.com/cyco/kaitai_struct_formats/blob/add-yodesk/game/yodesk.ksy#L36). Apart from that, I tried to follow the style guide.
The game Indiana Jones and His Desktop Adventures uses a very similar file format (a predecessor) to this one. As far as I can tell it mostly differs in the size of some integers. When this PR goes through I can open another one for that game.
I'm looking forward to your feedback on this one.
Thanks for your feedback so far. I added a bunch of enums for type
fields. What do you think?
Alright then. I think this is ready to be merged.
@generalmimon Just wanted to check in to see if this is still on your radar. We've all spent a lot of time on this PR and it would be a shame not to merge it.
I also have another one coming up https://github.com/cyco/kaitai_struct_formats/blob/add-deskadv/game/deskadv.ksy
Here we go again :) I hope I didn't miss anything.
- Do you have sample files for testing? Could you put links to them in the
/doc
block?
Sadly no. Some versions of the game are available on archive.org and various abandonware sites, but nothing I'd feel comfortable linking to.
- What are the sources that you used as a reference? Are there any official/unofficial descriptions (specifications), forum threads / blog posts discussing the structure or existing open source parsers/generators that you could link in
doc-ref
?
This file is solely based on my own reverse engineering efforts for https://github.com/cyco/webfun. Aside from the parser implementation at https://github.com/cyco/WebFun/tree/master/src/engine/file-format there's no documentation on the file format in the project yet. As far as I can tell there's also no official documentation available. Zach Barth wrote an excellent piece on reverse engineering the format back in 2014 (phew, long time ago) here https://www.trashworldnews.com/yoda-stories/ but I'm hesitant to use that article as doc-ref
as it is incomplete and inaccurate at times.
- Can we choose a better name than
yodesk
? It doesn't matter if the identifier is a bit longer (I'd say that for examplebattery_management_system_protocol
is still OK, although expanding established abbreviations does not necessarily make sense), but it should be descriptive enough so that people with no background have some idea what format it is just from the name. Something likestarwars_yodesk
maybe? It is OK to use short names for a.ksy
in your own repo if you know what it is, but in a general-purpose repo like the format gallery, we need to be more specific and provide some context. The problem is thatyodesk
is not much widespread name, so people would usually have no idea.
I felt that starwars
was too generic, the game is called Star Wars: Yoda Stories or just Yoda Stories – so I've renamed the ksy to yoda_stories_dta
following the pattern used for other files here (e.g. gran_turismo_vol.ksy
).