ACA NeoGeo releases
Is there any information on extracting the ROM files from the various Arcade Archives releases? They're available on consoles, phones (mostly), and on Windows via the Microsoft Store, but the latter are apps rather than executables.
@TheNametag, people are working on it (if I remember correctly), but no one has been able to get them fully extracted.
It's only the NeoGeo games that are released on Windows, right?
It appears so, according to Wikipedia etc.
Seems that it's possible to extracts the ROMs from certain releases, such as the Android version of The King of Fighters 2003: https://milkchoco.info/archives/8448
I did some stuff around extracting from ACA NeoGeo releases here: https://github.com/ValadAmoleo/sf30ac-extractor
Unfortunately I don't have time to support or update this anymore. But the source might give you some hints if you want to try taking it further.
I've been poking around in the apk for the android release of Aero Fighters 2, but I can't find any sign of the Neo Geo binaries. Either they are inside one of the Unity archives or they get downloaded separately.
I've been poking around in the apk for the android release of Aero Fighters 2, but I can't find any sign of the Neo Geo binaries. Either they are inside one of the Unity archives or they get downloaded separately.
Looks like the ROM can be extracted, here's a blogpost with the instructions: https://milkchoco.info/archives/5936
I've been poking around in the apk for the android release of Aero Fighters 2, but I can't find any sign of the Neo Geo binaries. Either they are inside one of the Unity archives or they get downloaded separately.
Looks like the ROM can be extracted, here's a blogpost with the instructions: https://milkchoco.info/archives/5936
Thanks, that worked. Google translate was a big help for this.
It appears so, according to Wikipedia etc.
Is there a guide to extract ACA NeoGeo roms from Windows versions?
Guides exist, but they are not suitable for the people here.
Would it be possible to extract a rom from a NGCD disc?
Would it be possible to extract a rom from a NGCD disc?
I haven't done that system, but RetroArch can dump the CD games of many consoles, including it. All you need is a CD or DVD drive connected.
Here's the file list for Puzzle Bobble when the disc is simply in the CD drive of the PC.
I did a search of the files and it looks as if others were thinking of the same thing down at the bottom of the page.
Here's the dumped file list. lol
@NeoArcade1, the NGCD is a completely separate platform than the Neo Geo. Sure, hardware-wise they are somewhat similar, but they still have many differences under the hood. What you’re asking to do is the equivalent of trying to extract a Sega Genesis/Mega Drive rom from a Sega CD disc.
Try emulating the NGCD rather than extracting from the disc!
Maybe it was just that Puzzle Bobble was a unique situation and I happened to stumble across that. Here is the translation of the post from the link that was mentioned above.
I am planning to verify whether the NeoGeo version can be extracted from the NeoGeo CD version of Puzzle Bobble. The background music for the NeoGeoCD version of Puzzle Bobble is not converted to Audio tracks, so what do you think? and.
NeoGeoCD version file 1995/03/31 05:43 1,048,576 PUZZLE.PCM 1995/04/13 00:31 232,882 PB_PROG.PRG 1995/03/24 20:57 851,968 PB_CHR.SPR 1995/04/13 04:00 65,200 PUZZLE.Z80 1994/08/19 01:52 131,072 PB_FIX.FIX
d96-01.v3 1 MB 0840cbc4 → PUZZLE.PCM's 0x00000-0x0dffff (896KB) + 0x0e0000-0x0ffffff is filled with ff (128KB) matches d96-05.v4 512 KB CRC: 0a548948 → PUZZLE.PCM's 0x0e5300-0x0f97ff+ d96-02.c5 512 KB CRC: e89ad494 → Even byte for PB_CHR.SPR? , fill +0x6800-0x80000 with ff d96-03.c6 512 KB CRC: 4b42d7eb →Odd number byte for PB_CHR.SPR? , fill +0x6800-0x80000 with ff d96-04.s1 128 KB CRC: 9caae538 → Matches PB_FIX.FIX d96-06.m1 128 KB CRC: f424368a d96-07.ep1 512 KB CRC: 6102ca14 #
Interesting. I guess I’m not that surprised as almost every NGCD game is a direct port of a Neo Geo game to very similar hardware. Still, I would consider this the exception rather than the rule when it comes to NGCD ports as those usually rework elements such as sprite animations and music to make it work with the read speed of a disc drive.
I tried to build a standalone Python script for the Switch version of Aero Fighters 2, based on @ValadAmoleo's split.py combined with @alhumbra's blogpost about the Android version to append a 512KB dummy file to 075-v2.v2 in order to create a ROM with the correct hashes. I also excluded the sfix file since it's not required for the ROM to work. The script assumes that all gz files are in the same folder as the script:
import os
import gzip
import zipfile
def rename_file(input_file, output_file):
with gzip.open(input_file, 'rb') as f_in:
data = f_in.read()
with open(output_file, 'wb') as f_out:
f_out.write(data)
def split_file(input_file, output_file, size):
with gzip.open(input_file, 'rb') as f_in:
data = f_in.read(size)
with open(output_file, 'wb') as f_out:
f_out.write(data)
def rename_file_offset(input_file, output_file, offset):
with gzip.open(input_file, 'rb') as f_in:
f_in.seek(offset)
data = f_in.read()
with open(output_file, 'wb') as f_out:
f_out.write(data)
def append_ff_block(output_file, size):
with open(output_file, 'ab') as f_out:
f_out.write(b'\xFF' * size)
def join_files(input_files, output_file):
with open(output_file, 'wb') as f_out:
for file in input_files:
with open(file, 'rb') as f_in:
f_out.write(f_in.read())
def split_even_odd_block(input_file, output_pair, offset, chunk_size):
with gzip.open(input_file, 'rb') as f:
f.seek(offset)
data = f.read(chunk_size)
even = data[::2]
odd = data[1::2]
with open(output_pair[0], 'wb') as f_even:
f_even.write(even)
with open(output_pair[1], 'wb') as f_odd:
f_odd.write(odd)
# === Main Execution ===
if __name__ == "__main__":
files = {f: f for f in os.listdir() if f.endswith(".gz")}
# Rename m1, s1
if "m1.bin.gz" in files:
rename_file("m1.bin.gz", "075-m1.m1")
if "s1.bin.gz" in files:
rename_file("s1.bin.gz", "075-s1.s1")
# Split v1 and extract offset for v2
if "v1.bin.gz" in files:
split_file("v1.bin.gz", "075-v1.v1", 0x200000)
rename_file_offset("v1.bin.gz", "075-v2.v2", 0x200000)
append_ff_block("075-v2.v2", 0x80000) # Append 512KB of 0xFF
# Handle p1 reordering
if "p1.bin.gz" in files:
split_file("p1.bin.gz", "075-p1.p1b", 0x100000)
rename_file_offset("p1.bin.gz", "075-p1.p1a", 0x100000)
join_files(["075-p1.p1a", "075-p1.p1b"], "075-p1.p1")
os.remove("075-p1.p1a")
os.remove("075-p1.p1b")
# Handle c1 even/odd splitting with 2MB output files
if "c1.bin.gz" in files:
split_even_odd_block("c1.bin.gz", ("075-c1.c1", "075-c2.c2"), 0x000000, 0x400000)
split_even_odd_block("c1.bin.gz", ("075-c3.c3", "075-c4.c4"), 0x400000, 0x400000)
# Compress selected files into sonicwi2.zip
output_files = [
"075-p1.p1", "075-s1.s1", "075-m1.m1",
"075-v1.v1", "075-v2.v2",
"075-c1.c1", "075-c2.c2", "075-c3.c3", "075-c4.c4"
]
with zipfile.ZipFile("sonicwi2.zip", "w", compression=zipfile.ZIP_DEFLATED) as zipf:
for file in output_files:
if os.path.exists(file):
zipf.write(file)
os.remove(file)
print("All files processed, archived into sonicwi2.zip, and cleaned up.")
I've been trying to extract the Switch version of ACA Neo Geo Strikers 1945 Plus. v1.bin.gz splits properly into four files with individual sizes of 4MB, matching the correct hashes for 254-v1.v1 through 254-v4.v4. p1.bin.gz has a size of 5MB when decompressed, cutting out the first 1MB as 254-p1.p1 and the remaining 4MB as 254-p2.sp2 will once again yield files with the correct hashes. I'm having trouble with the remaining files, s1.bin.gz and m1.bin.gz seem to have the correct file sizes as 254-sm1.sm1 and 254-m1.m1, but the hashes don't match. Just splitting the C-ROM like with Aero Fighters 2 doesn't seem to work either.