shawngmc / game-extraction-toolbox

Python tools for extracting ROMs from games and investigating files
MIT License
66 stars 7 forks source link

Sega Smash Pack I and II PC #35

Closed zZeck closed 1 year ago

zZeck commented 1 year ago

I figured out the format awhile ago Do you want a PR for it? I also wrote code to encode roms FOR the collection just to see the limitations of the old emulator.

shawngmc commented 1 year ago

Sure, if you want to make a PR for it, that'd be great. If you want, I can add a stub module on the develop branch, or you can just base it off the task_template.py.

I unfortunately don't have the Smash Pack titles, so I won't be able to test it myself.

shawngmc commented 1 year ago

@zZeck Does your code also cover Sega Puzzle Pack? https://en.wikipedia.org/wiki/Sega_Smash_Pack

zZeck commented 1 year ago

I didn't realize that existed. I suspect the only difference will be the encoding string. The other two both use encoding strings related to the pack name. I ordered it cheap on ebay. We'll see.

Do you have any interest in the encoding code? It's rather interesting to see how old emulators work with titles sometimes. I fired up ristar in the smash pack II emulator and it crashed spectacularly.

It's also useful for testing the decoder, to also write an encoder, so you can roundtrip stuff and see if it comes out the same. Haven't looked if you have tests. Just a thought.

I could include checksums of the input files, and expected checksums of the decoded files so people with them can verify. Also could include some random data to use as a test for people who don't.

shawngmc commented 1 year ago

Hmm.... - the encoding doesn't fit nicely in the CLI as it is right now.

If you want to add that code in there (uncalled), that would be OK for now. Prepping a game for a specific emulator is a more niche type of task, but let me think about how I'd make that work with existing syntax.

zZeck commented 1 year ago

Puzzle pack arrived today. Decoder works for it as well. Only difference is the encoding string.

zZeck commented 1 year ago

Still working on this.

I will match the naming stuff from the steam genesis task. There is one ROM that I believe is different, which is the strange beta Super Shinobi in Smash Pack 1. Are the names you used following a convention from somewhere?

shawngmc commented 1 year ago

Not really. I probably should figure out non-MAME naming conventions at some point, but all address that later.

zZeck commented 1 year ago

I am thinking I should be adding 4 tasks and some kind of helper file with the decode logic. The kvq rom files are located in these directories by default. Task names would be drmbm, columnsiii, ssp, sspii. (I do not know why the puzzle pack has separate programs and installers for the two games, but that's how they did it)

C:\Sega\Dr. Robotnik's Mean Bean Machine\MyGames C:\Sega\Columns III\MyGames C:\Sega\Sega Smash Pack\MyGames C:\Sega\Sega Smash Pack II\MyGames

shawngmc commented 1 year ago

That sounds good to me. I've been doing some restructuring (see the develop branch), and moving a lot of the data to a separate metadata.json.

For the naming, might I recommend spp_drmbm and spp_columnsiii?

shawngmc commented 1 year ago

For the helper class, might I recommend src/lib/archive/kqa.py ?

zZeck commented 1 year ago

Smash Pack I & II and Puzzle Pack now supported!