kaitai_struct_formats icon indicating copy to clipboard operation
kaitai_struct_formats copied to clipboard

Add yodesk.ksy

Open cyco opened this issue 4 years ago • 4 comments

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.

cyco avatar Jan 24 '21 11:01 cyco

Thanks for your feedback so far. I added a bunch of enums for type fields. What do you think?

cyco avatar Jan 24 '21 16:01 cyco

Alright then. I think this is ready to be merged.

cyco avatar Jan 25 '21 21:01 cyco

@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

cyco avatar Jun 29 '21 09:06 cyco

Here we go again :) I hope I didn't miss anything.

  1. 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.

  1. 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.

  1. Can we choose a better name than yodesk? It doesn't matter if the identifier is a bit longer (I'd say that for example battery_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 like starwars_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 that yodesk 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).

cyco avatar Jul 08 '21 13:07 cyco