Toaplan shooters from Steam
I picked up the Toplan Arcade Shoot'em up Ultimate Collection on Steam a little while back when it was on sale. I've been having a look at them over the last couple of days, and there definitely are roms inside the binaries.
binwalk can decompress some files inside each executable, and one of the extracted files has a rom set. The question is how to massage it into something Mame or Finalburn neo can recognize.
So far I've been able to get Batsugun, Dogyuun, Fixeight, and Grind Stormer to work with the libfbneo core in Retroarch.
I've uploaded my shell scripts here if anyone is interested :
https://github.com/stuckinstyx/toashoot
They are very simple linux shell scripts that use dd and zip. This is not pretty code at all. No error checking, Use a different temporary folder for each executable.
Update: I got Twin Hawk to work. Two of the roms were combined into one file so that every odd byte come from one file and the even bytes came from the other. I wrote a little python script that splits them apart, I tried it with a shell script and dd first but dd is crazy slow when it goes one byte at a time.
Update: I got Twin Hawk to work. Two of the roms were combined into one file so that every odd byte come from one file and the even bytes came from the other. I wrote a little python script that splits them apart, I tried it with a shell script and dd first but dd is crazy slow when it goes one byte at a time.
Tested this, and it seems to work:
$ xxd -p -c 2 input.bin | cut -b 1-2 | xxd -r -p > output-odd.bin
$ xxd -p -c 2 input.bin | cut -b 3-4 | xxd -r -p > output-even.bin
Adapted from https://www.linuxquestions.org/questions/linux-general-1/linux-command-to-copy-every-other-byte-from-file-708566/
@stuckinstyx : Do you have plans to release scripts for the rest of the collection like Vimana or Frying Shark?
@stuckinstyx : Do you have plans to release scripts for the rest of the collection like Vimana or Frying Shark?
I'm working on it, but several of them have some interesting things going on. A bunch seem to have files that only use the bottom 4 bits of each byte, so I have to figure out how to massage them back into a format that FBNeo likes. Real life has been getting in the way of spending time on it for a little while. Families, jobs, and theatre performances really sap your energy sometimes.
@stuckinstyx : Do you have plans to release scripts for the rest of the collection like Vimana or Frying Shark?
I'm working on it, but several of them have some interesting things going on. A bunch seem to have files that only use the bottom 4 bits of each byte, so I have to figure out how to massage them back into a format that FBNeo likes. Real life has been getting in the way of spending time on it for a little while. Families, jobs, and theatre performances really sap your energy sometimes.
Hi stuckinstyx, I have found the solution to extracting the tiles and sprites from Zero Wing in the GOG and Steam collections. Follow these directions:
After using binwalk to extract the files look for 108F30 (I'm using the Steam release so it might be a different file in the GOG collection). It is 2,696kb in size. Open the file in a hex editor and copy the data from line 557,056 to 2,654,208 into a separate file named "sprites". It will be 2,048kb in size.
Now install Thonny at https://thonny.org/ for python on your computer and run the file "nibbleremovalandmerge" in the same directory as sprites. This file will remove all of the extraneous 0s shown in the first nibble (high nibble?) of the byte. It will also merge the second nibble (low nibbles?) together to form new bytes. It will output a file called "output" that will be exactly half the size (1,024kb).
3)Now put the bitwise.py program in the same directory as "output" and run the file. This will change the format of the sprites into another file called "bitwise".
4)Lastly use a program like BINMAN at https://jammarcade.net/binman-3-8-update/ to split the file "bitwise" in half. This will give you 2 512kb files. Deinterleave the files in the first half. This will give you 2 256kb files. Then deinterleave those files into 4 128kb files. Do the same for the second half. Deinterleave and deinterleave again. Eventually you will get these files:
o15-05.rom | 131072 | 4e5dd246 | 5366b4a6f3c900a4f57a6583b7399163a06f42d7 | tiles | 0 | good | no | |
o15-06.rom | 131072 | c8c6d428 | 76ee5bcb8f10fe201fc5c32697beee3de9d8b751 | tiles | 1 | good | no | |
o15-07.rom | 131072 | efc40e99 | a04fad4197a7fb4787cd9bebf43e1d9b02b2f61b | tiles | 40000 | good | no | |
o15-08.rom | 131072 | 1b019eab | c9569ca85696825142acc5cde9ac829e82b1ca1b | tiles | 40001 | good | no | |
o15-03.rom | 131072 | 7f245fd3 | efbcb3663d4accc4f8128a8fee5475bc109bc17a | sprites | 0 | good | no | |
o15-04.rom | 131072 | 0b1a1289 | ce6c06342392d11952873e3b1d6aea8dc02a551c | sprites | 1 | good | no | |
o15-01.rom | 131072 | 70570e43 | acc9baec71b0930cb2f193677e0663efa5d5551d | sprites | 40000 | good | no | |
o15-02.rom | 131072 | 724b487f | 06af31520866eea69aebbd5d428f80e882289a15 | sprites | 40001 | good | no | |
I hope this helps. Ask any questions if this was unclear.