The VG Resource

Full Version: Macross Plus Arcade ripping and interlaced ROM Binaries
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
So, I know Macross Plus has an arcade game, and I haven't seen any rips from it. I'm not sure if anyone cares about it (I know I don't particularly) but in the process of trying to rip the Sailor Moon Quiz game I tripped across the fact that macrossp and quizmoon use the same driver.... which means IF someone cares about it they might benefit from what I had to do to Quizmoon to get it into a rippable format.

Quizmoon's sprites display well in mame, but getting all the palettes (especially for cut content) required hunting through the binaries. The problem is that the binaries look like utter garbage. Eventually, with much mucking about in GGD I eventually found four binaries that looked like they had something that might have been graphical data. What it comes down to is that the sprites are stored in four separate rom chips in an interlaced format (I assume for the speed of reading the data or something.) To re-interlace the files I had to write up a program that wrote one byte at a time from each of the four files: 4, 3, 2, 1, 4, 3, 2, 1.... 

This is also true for the palette files (Although there's some data that makes me think there might be some uninterlaced palettes as well, but I haven't actually found any working palettes in the uninterlaced files.)

If there's anyone out there who cares enough about Macross to want to rip the game this info might help. I'm not sure how often interlacing like this comes up in ROMS, but it struck me as fairly unusual so I also wanted to toss out the info because it might help crack some tough nuts.

If someone's really desperate for the program for interlacing, I can provide it, but it's really a kludge that involves copy-pasting from hex editors in chunks...someone who's actually good at programming may want to take a better crack at it if interlaced roms are more common than I thought.
Wait, how did you write a program to interleave the files, could it also do two bytes at a time, like two bytes offsets? I'm using python by the way.
I used ActionScript in adobe animate of all things (formerly flash) because that's what I'm comfortable with. I pulled up a hex editor, copied out chunks of the raw hex code, dropped them into four text boxes and set it to basically chop a byte off the front of each string and write those numbers to a fifth box. Copy the fifth box back into the hex editor and bam. There are more elegant ways to do it, I'm sure, but it got the job done. (Like actually automating the writing to a file and not having to do the binaries a chunk at a time because flash couldn't handle that much input...)

You could do it for any number of bytes you wanted. At that point it's just string manipulation.

Edit: I just pulled it up. looks like I put in a variable character skip because I wasn't sure how many bytes I'd need per file. I *did* assume four files though, so I don't know what would happen if you had a different number.

https://www.dropbox.com/s/dve1cp43b5il3g...ce.7z?dl=0

I won't leave it up forever, but if it will help...
Thanks, now how do I change the per bytes, such as two bytes per time, because most will have to have two bytes to interleave.
it's the character offset box. you're offsetting by hex digits so one character is two bytes.

btw: I highly recommend looking the script over so you can see what it does and then re-writing it to be a more functional program in a way that can function well and actually be robust enough to be useful (and maybe writes its own output file.) This is a horrible kludge that requites manually selecting precise chunks of identically sized amounts of hex from multiple files because of character input limitations. It has NO error handling because I knew exactly how I wanted it to work. My coding skills aren't really high enough to support it either. I absolutely recommend you rewrite the sucker in python or something else if this is actually a tool that might be useful to the community.
I'm trying to rip sprites from Outrunners for someone.
Ok, now I downloaded adobe animate, where can I find the action script at?
EDIT: never mind, I found it, now what do I do with it?
(08-23-2019, 02:50 PM)AFruitaday! Wrote: [ -> ]Ok, now I downloaded adobe animate, where can I find the action script at?
EDIT: never mind, I found it, now what do I do with it?
if you just want to run it use the SWF file. 

if you actually want to write your own python code you'll want to look at the "InterpCode" function and implement it in python.

if you only have 2 files you're lacing together you'd comment out any lines that reference StrC and StrD and just not use the text boxes associated with them)

shift+enter will compile the swf so you can run it.

once you paste your hex strings copied from a hex editor into boxes A and B (and more) hit the button. they will all be truncated to the length of A and then interlaced. copy the output into a fresh hex editor file and save it. it should work.
Where do I put the files at?
where ever you want. you're not writing a file with the swf. you're getting an output that you're pasting into a blank hex editor file. save it where you like.
I'm using the interleaver from Nineko, but it only interleaves one byte per time. And it can only select two files at a time.

By the way, the file is now a fla file, not a swl file.
Fla is the uncompiled project file. Swf (which should be in the zip) is the compiled version that will actually run. Make any changes you need to the FLA, then press "Ctrl+enter" it will do a fast compile and throw up the program window that you paste the hex code into.

As far as being only able to interleave two files at a time, if you had 4 files and interlaced 1&3 and 2&4 and then interlace the two results you'll get 1234.
Do I click load code?
(08-25-2019, 11:33 PM)AFruitaday! Wrote: [ -> ]Do I click load code?
Paste the hex of your files into the four text boxes on the left.
Set your offset number (every number is 2 bytes. So 3 is 6 bytes.) 
Push the button.
Copy the output box to the clipboard.
Paste the output into a new, empty file in your bed editor of choice and save it wherever you like.
Do i copy the entire hex thingy? Or I copy like four or five file hexes?
Pages: 1 2