Valad: @renloz, how are you able to determine how to split these files? I've been trying to extract from the Arcade Archives games on the Nintendo Switch. I've been able to get the games to run but the graphics are garbled. I assume they're at the very least interleaved like how they are in The Last Blade 2. So I was wondering how you managed to figure it out.
In short the idea is to do a map between the memory bits and the pixels for both the arcade machine and the rerelease and use it to do a conversion between them.
Most game files should be the mapped ROM files; just read the MAME source to see how they to separate them. For The Last Blade read
neogeo.cpp The graphic ROMs are the problematic ones as the developers seem to not only have them mapped but also changed from the original format (likely planar) to one more convenient to them (packed pixels, packed tiles/sprites). So you have two formats, the one in the rerelease and the one of the original arcade machine, you need to understand both so you can do a conversion.
To understand the arcade format you can use references of how they work from the Internet. Some very graphical, like this
neogeo sprite format information, or in source code form from an emulator like
MAME.
If that's still unclear you can run MAME with a game for the machine you have trouble understanding with the -debug argument and open the Memory Window (Debug, New Memory Window) and select the graphics region. There, for some machines, you can edit the memory to see how they relate to the graphics in screen, you will need to do a reboot to see the changes (F3 by default). If the machine you are running does not work you can try editing the ROM files before loading the game. Depending on the machine you can use Show Gfx to make it easier to see how the changes affect the game graphics.
For the rerelease you can do edit the graphics file and see what changes when you run the game. I don't know if this is possible with the Switch but the PC releases don't seem to care if you change the files.
Now that you now how one sprite is stored in both you need to write code to convert from one to the other and after that deinterleave the result.
Some games have encrypted graphics so they are more complicated as you will need to implement the encryption and apply it to the converted data. You can read the MAME source to understand how decryption works and use it to implement the encryption.
To not derail this thread any more if you need more info add me to your friends list an send me a message.