RED-Project icon indicating copy to clipboard operation
RED-Project copied to clipboard

SEGA 3D Classics on 3DS

Open kjetil-f opened this issue 1 year ago • 25 comments

Is it possible to extract ROMs from 3D classics on 3DS, or are they straight up ports?

kjetil-f avatar Oct 10 '24 10:10 kjetil-f

Yes, Sega 3D Classics contains ROMs. Here is what I was able to find:

  • Altered Beast (Japan, USA) (En) (Sega 3D Classics Collection).md
    • AlteredBeast_JP_3D_130419.SGD
  • Altered Beast (USA, Europe) (Sega 3D Classics Collection).md
    • AlteredBeast_3D_130419.SGD
  • Fantasy Zone II - Opa-Opa no Namida (Japan).sms
    • FantasyZone2_J.SMS
  • Maze Walker (Japan) (En) (Sega 3D Classics).sms
    • MazeWalker_patch.sms
  • Sonic The Hedgehog (World) (Sonic Mega Collection).md
    • Sonic1.SGD
  • Sonic The Hedgehog (USA, Europe).md
    • Sonic1_US.SGD
  • Sonic The Hedgehog 2 (World) (Rev A) (Sonic Mega Collection).md
    • Sonic2.SGD
    • Sonic2_US.SGD
- FZ1_NEW_OPLL_OB.BIN ("New"? Fantasy Zone)
- FZ1_OLD_OPLL_OB.BIN ("Old"? Fantasy Zone)
- PuyoPuyo2x.ccf (fbneo "light" rom?)

These are the no-intro expected filenames, with the original unpacked filenames underneath. As for the other three, these are the unpacked original filenames (See edit at end of post). PuyoPuyo2x.ccf should have a ROM in it, but I can't make out what the other two are supposed to be as of yet.

I basically took hints from other guides on extracting ROMs from 3DS titles in figuring out how to get these. If you give me a few days to locate my 3DS, I can provide specifics.

EDIT: Post updated with full listing of roms I was able to find.

All of these originally came in a .m file and upon decompression, the filenames dropped the .m extension. Checking those unpacked files against no-intro dats will get them recognized. It's just the FZ1 and PuyoPuyo2 files I'm unsure about.

aceofstax avatar Oct 12 '24 06:10 aceofstax

Excellent! If you can, that would be great. That's what this place is for.

It seems like you have figured out the basics of how to extract Master System and Genesis ROMs.

About Puyo Puyo 2. I think it is the arcade version. I know Sega released a lot of arcade games under the 3D Classics line. So would be interesting to see if they were possible to extract as well.

kjetil-f avatar Oct 12 '24 22:10 kjetil-f

I've been wanting to find it for my own reasons (other rom extracting), but it may not be somewhere convenient right now.

That said, I decided to check around digitally for any traces of the extraction process. And yes, the Sonic games are playable too, I just apparently moved those files somewhere else. So here is the original file listing. If you find these files in GodMode9, you're on the right track:

AlteredBeast_3D_130419.SGD.m AlteredBeast_JP_3D_130419.SGD.m FantasyZone2_J.SMS.m FZ1_NEW_OPLL_OB.BIN.m FZ1_OLD_OPLL_OB.BIN.m MazeWalker_patch.sms.m PuyoPuyo2x.ccf.m Sonic1.SGD.m Sonic1_USA.SGD.m Sonic2.SGD.m Sonic2_USA.SGD.m

Seems pretty clear that FZ1 is Fantasy Zone, but the difference between the two files I can't comment on. Running in RetroArch I get a Mark III logo flash on screen, but I don't believe any other content loaded. As for Puyo Puyo 2, I'll try running it in some arcade emulators and see what I find.

As for tools to use on this, I used mdfTools. It comes with mdfCompressor.exe, mdfDecompressor.exe and Zlib.portable.dll. Obviously you'll want to decompress, and the resulting files will have the same name without the .m extension.

This is the only place I was able to find mdfTools in a quick search, but I'd imagine using the right algorithm with MArchiveBatchTool would also extract these. I also used mdfTools for Collection of Mana, but I don't recall getting the tool on the site linked.

I will update this post if I figure out which seed (algorithm?) to use. I also plan to update the list of games included in the previous post after a little bit of tinkering.

EDIT: MArchiveBatchTool will work, it just spits out some errors with the command I used. But the resulting decompressed file is a ROM recognized by no-intro.

.\MArchiveBatchTool.exe fullunpack --keep .\AlteredBeast_3D_130419.SGD.m zlib 25G/xpvTbsb+6 64

Repeat as necessary for each rom included in this collection. This also should work for Collection of Mana, which is currently not listed on RED-Project Wiki, nor by game-extraction-toolbox. As I mentioned, I used mdfTools originally to get the rom files from Collection of Mana.

aceofstax avatar Oct 13 '24 21:10 aceofstax

I can confirm that the mdfTools extraction method works for 3D Streets of Rage / Bare Knuckle 1&2 as well, you'll get BK1_20130611.BIN, BK2U_20150218.GEN and BK2J_20150218.GEN. None of these are a match for the entries in the No-Intro database, I think this is part of the reason: sor1

I've only got the Rev A ROM from Steam to compare the ROM sourced from my 3DS with, but other than that, there are additional differences between them besides this line.

Both mdfTools and MArchiveBatchTool weren't able to extract the Mega Drive ROMs from SVC Streets of Rage on XBLA, though.

Since I also bought 3D Space Harrier back then, I decided to give that one a try as well. I suppose that the files for the arcade version are somewhere in romfs\system\raw, but I don't know how to extract them. I read that M2 included the Game Gear version of Space Harrier in their PS2 release: https://web.archive.org/web/20160919053355/http://blogs.sega.com/2013/11/25/sega-3d-classics-space-harrier-3d-interview-with-developer-m2/ (You should give this interview a read in any event, since it provides a lot of insight into how M2 works and how much care they put into their releases.)

There's a file named dammy.GG.m in the "rom" folder, but it's not a working ROM and only 1KB in size. Did 3D Space Harrier include a playable Game Gear ROM or is this just a leftover from M2's work on the PS2 version?

RealRelativeEase avatar Oct 19 '24 18:10 RealRelativeEase

I've been missing the forest for the trees, the multiplayer has been dummied out in the Mega Drive ROM extracted from 3D Streets of Rage / Bare Knuckle.

BK1_20130611-241027-141204

RealRelativeEase avatar Oct 27 '24 17:10 RealRelativeEase

Both mdfTools and MArchiveBatchTool weren't able to extract the Mega Drive ROMs from SVC Streets of Rage on XBLA, though.

That doesn't surprise me. I spent some time looking at SVC titles of my own. I don't know for certain but I think it's more likely they're stored differently on 360 than just not being there. I'm very rusty on my X360 stuff, but before RGH hacks all people could do was tinker with the files on the removable HDD. Utils may be a bit outdated, but I think it was 7 years without unsigned code lol.

If you aren't using it already, Velocity is a good multi platform X360 tool for extracting game files. For file decryption and decompression you'll likely need other utils. Search online for the magic bytes of the files you want to identify and you may get somewhere.

Since I also bought 3D Space Harrier back then, I decided to give that one a try as well. I suppose that the files for the arcade version are somewhere in romfs\system\raw, but I don't know how to extract them. I read that M2 included the Game Gear version of Space Harrier in their PS2 release

There's a file named dammy.GG.m in the "rom" folder, but it's not a working ROM and only 1KB in size. Did 3D Space Harrier include a playable Game Gear ROM or is this just a leftover from M2's work on the PS2 version? It's possible the file just wasn't processed correctly. I ran into something similar extracting .qd files from Japanese Smash Bros for Wii.

Plombo's original vcromclaim NES extraction script would output some tiny file, because some of the files are actually Famicom Disk System games. So while searching for the "NES" header, it found "NES" near the end of the file containing the .qd roms and output something that couldn't be used. For all NES and FC/FDS purposes, I have to use two different commits of JanErikGunnar's fork.

There's quite possibly something in vcromclaim that could be used for getting something useful. A lot of non-VC titles can be extracted like official VC titles. But I'd also try MArchiveBatchTool if you haven't already. It's also possible it's some leftover file. Check No-Intro for info on different dumps of Space Harrier. If this version has been dumped, there may be a comment on what tool to use there.

I've been missing the forest for the trees, the multiplayer has been dummied out in the Mega Drive ROM extracted from 3D Streets of Rage / Bare Knuckle.

Heh. I don't blame you. Both faster and easier to find differences in a hex editor than it is to play the title itself. Makes me wonder if speedrunners note the specific version of the game/rom they do their runs in. You'd think someone that familiar with a particular game could cite rom differences on the spot.

aceofstax avatar Oct 28 '24 00:10 aceofstax

There's quite possibly something in vcromclaim that could be used for getting something useful. A lot of non-VC titles can be extracted like official VC titles. But I'd also try MArchiveBatchTool if you haven't already. It's also possible it's some leftover file. Check No-Intro for info on different dumps of Space Harrier. If this version has been dumped, there may be a comment on what tool to use there.

I can confirm that JanErikGunnar's fork of vcromclaim can extract a working Space Harrier arcade ROM from the Wii. Maybe the 3DS version of the same game are packaged in a similar way?

kjetil-f avatar Oct 28 '24 08:10 kjetil-f

I can confirm that JanErikGunnar's fork of vcromclaim can extract a working Space Harrier arcade ROM from the Wii. Maybe the 3DS version of the same game are packaged in a similar way?

I would imagine so. And actually, because you mentioned it... I just looked at that fork of vcromclaim again and apparently the only .ccf archive it supports is for the Space Harrier rom. If it doesn't work, then it may just be a different version of Space Harrier. See the if/else statement here.

Anyway, you were right about Puyo Puyo 2. It's most likely an arcade rom, there's just no code in vcromclaim to handle more than Space Harrier at the moment.

EDIT: This repo seems interesting. CCF Tools, and was made for Wii VC extraction.

EDIT 2: Extracting PuyoPuyo2x.ccf with CCF Tools (ccfex.exe) output a couple files, but I know next to nothing about arcade roms. So here are the filenames with crc32 checksum.

cpu.bin = 4a6d76d6 (1024 KiB)
pcm.bin = 9dc30cbf (3050 KiB)

Tried running these on a Miyoo device and got an error telling me to read this page to build a fbneo romset.

You can download the dat files for the latest version of the core from the dats directory. Note that some devices (Nintendo 3DS) are running a "light" build with fewer supported games due to memory limitation, the dat files for that build are available from the light subdirectory.

I was expecting more than two files, but that may explain what I got out of 3D Classics' Puyo Puyo 2. So arcade roms from 3DS are "light" roms?

aceofstax avatar Oct 29 '24 04:10 aceofstax

Not an arcade ROM expert myself, but traditionally there are a lot of files zipped up to a single zip-file, and that zip-file is the one you use with your emulator. And to make life harder, the game is often very sensitive to what version of MAME or FinalBurn Alpha you are using. Maybe even name sensitive?

Maybe it's possible to zip the cpu.bin and pcm.bin into a PuyoPuyo2x.zip and use it on an emulator, but my very uneducated guess, is that those two bin files need do be extracted into smaller parts before they all get zipped together.

kjetil-f avatar Oct 29 '24 10:10 kjetil-f

There's a file named dammy.GG.m in the "rom" folder, but it's not a working ROM and only 1KB in size. Did 3D Space Harrier include a playable Game Gear ROM or is this just a leftover from M2's work on the PS2 version?

It's possible the file just wasn't processed correctly. I ran into something similar extracting .qd files from Japanese Smash Bros for Wii.

The file is already 1KB in size when examined in GodMode9, even before it's been run through mdfTools. So I guess it's either stored somewhere else or they might have decided against including the Game Gear version.

You can download the dat files for the latest version of the core from the dats directory. Note that some devices (Nintendo 3DS) are running a "light" build with fewer supported games due to memory limitation, the dat files for that build are available from the light subdirectory.

I was expecting more than two files, but that may explain what I got out of 3D Classics' Puyo Puyo 2. So arcade roms from 3DS are "light" roms?

I don't think this is in reference to arcade ROMs extracted from 3DS titles, rather than the 3DS version of FB Neo not being compatible with more demanding games due to the hardware's lack of processing power for emulation.

While I don't think the original Puyo Puyo 2 arcade hardware used PCM sound, it's often the case with official re-releases using emulation. Like kjetil-f said, arcade ROMs require the correct files and the correct version of the game to run in an emulator. These are the files required for a ROM of Puyo Puyo 2, according to Arcade Italia: puyo

These files could potentially be extracted from either .bin file that you ended up with, usually by cutting and or merging the corresponding bytes from the files. But I don't know how to identify those and how to build a working ROM.

RealRelativeEase avatar Oct 29 '24 15:10 RealRelativeEase

Something weird I noticed after typing my replies: I opened cpu.bin in a hex editor and found "SEGA MEGA DRIVE" near the top of the file. I checked No-Intro for 'Puyo' and found "Puyo Puyo Tsuu" (tsuu is just japanese pronouciation of "two"). The dumps listed there have serial numbers to go with most of the dumps, but none match the number in this file. Serial number of this rom is "T-35013-01", but I haven't gotten it to load in an emulator yet. It actually could be a Mega Drive rom, unless they casually drop text like that in arcade roms. But this cpu.bin file is the exact same file length (2097152) as a Puyo Puyo Tsuu MD rom too.

.ccf extension is why I thought it was an arcade rom to begin with, but the hex editor threw me for a loop. If it's not an arcade rom, then CCF Tools isn't coded with non-arcade roms in mind. If it is an arcade rom, I'm curious if Sega converts MD titles to arcade and leaves references to MD intact. I loaded it with three different retroarch cores and no luck. It runs, but black screen and no audio. There was an fps counter though, lol.

@kjetil-f

Not an arcade ROM expert myself, but traditionally there are a lot of files zipped up to a single zip-file, and that zip-file is the one you use with your emulator.

That's kind of what I thought. Amazon Prime Gaming gave out a ton of arcade stuff, including SNK 40th Collection. I don't recall which titles/collections, but many games had at least 4 or 5 .bin files. So seeing just two is a little unexpected. One way or another I'll have to learn.

Maybe it's possible to zip the cpu.bin and pcm.bin into a PuyoPuyo2x.zip and use it on an emulator, but my very uneducated guess, is that those two bin files need do be extracted into smaller parts before they all get zipped together.

I did try that, and it was the .zip file that was launchable on the Miyoo device. That's when I got the error telling me to build a fbneo romset. If the files aren't good in their current form, seems like ClrMamePro could help fix that. I may try

@RealRelativeEase

The file is already 1KB in size when examined in GodMode9, even before it's been run through mdfTools. So I guess it's either stored somewhere else or they might have decided against including the Game Gear version.

I'd agree with that logic. I still can't find my 3DS, but I looked up a guide for dumping VC titles, as I used general techniques for those to find roms in other titles. GBA VC roms are peculiar in that they're stored in exefs of the title as opposed to romfs. That said, although we're not talking about GBA, it could be worth checking exefs and try to ID and extract anything found there.

I don't think this is in reference to arcade ROMs extracted from 3DS titles, rather than the 3DS version of FB Neo not being compatible with more demanding games due to the hardware's lack of processing power for emulation.

Yeah, I could see it go either way. If people have extracted arcade titles from 3DS already elsewhere on the net, then that's neat. Given how complicated arcade roms are compared to consoles, it would be nice if I could find something to point me in the right direction.

These files could potentially be extracted from either .bin file that you ended up with, usually by cutting and or merging the corresponding bytes from the files. But I don't know how to identify those and how to build a working ROM.

Same, so I'm going to try to learn how to use ClrMamePro so I have a better idea of what I'm doing. It didn't recognize the files I had, so it's either user error or they're just not recognized. I have no idea if I have other Sega arcade roms, but if I do and they get recognized by ClrMamePro (or even just playable), I can probably problem solve from there.

aceofstax avatar Oct 29 '24 23:10 aceofstax

Something weird I noticed after typing my replies: I opened cpu.bin in a hex editor and found "SEGA MEGA DRIVE" near the top of the file. I checked No-Intro for 'Puyo' and found "Puyo Puyo Tsuu" (tsuu is just japanese pronouciation of "two"). The dumps listed there have serial numbers to go with most of the dumps, but none match the number in this file. Serial number of this rom is "T-35013-01", but I haven't gotten it to load in an emulator yet. It actually could be a Mega Drive rom, unless they casually drop text like that in arcade roms. But this cpu.bin file is the exact same file length (2097152) as a Puyo Puyo Tsuu MD rom too.

.ccf extension is why I thought it was an arcade rom to begin with, but the hex editor threw me for a loop. If it's not an arcade rom, then CCF Tools isn't coded with non-arcade roms in mind. If it is an arcade rom, I'm curious if Sega converts MD titles to arcade and leaves references to MD intact. I loaded it with three different retroarch cores and no luck. It runs, but black screen and no audio. There was an fps counter though, lol.

I know that Sega released Mega Drive based arcade hardware like Mega-Tech or Mega Play. So maybe this game is actually more or less an Mega Drive game, and that's why you don't get the usual arcade file structure. On a quick YouTube comparison these games seems more or less identical. The 3DS version seems to have updated the "Insert Coin(s)" and "Credit" to "Push X button" and "Free Play" but the Mega Drive version doesn't seem to have neither.

kjetil-f avatar Oct 30 '24 09:10 kjetil-f

I know that Sega released Mega Drive based arcade hardware like Mega-Tech or Mega Play. So maybe this game is actually more or less an Mega Drive game, and that's why you don't get the usual arcade file structure. On a quick YouTube comparison these games seems more or less identical. The 3DS version seems to have updated the "Insert Coin(s)" and "Credit" to "Push X button" and "Free Play" but the Mega Drive version doesn't seem to have neither.

That helps, and probably explains why I haven't been getting matching CRCs or any luck with ClrMamePro.

I took a second look at the FBA datfiles and noticed a few things:

  1. "FinalBurn Neo (ClrMame Pro XML, Arcade only).dat" has the same file info as RealRelativeEase shared.
	<game name="puyopuy2" sourcefile="sega/d_segac2.cpp">
		<description>Puyo Puyo 2 (Japan)</description>
		<year>1994</year>
		<manufacturer>Compile (Sega license)</manufacturer>
		<rom name="epr-17241.ic32" size="524288" crc="1cad1149"/>
		<rom name="epr-17240.ic31" size="524288" crc="beecf96d"/>
		<rom name="epr-17239.ic4" size="524288" crc="020ff6ef"/>
		<video type="raster" orientation="horizontal" width="320" height="224" aspectx="4" aspecty="3"/>
		<driver status="good"/>
	</game>
  1. There's a "FinalBurn Neo (ClrMame Pro XML, Megadrive only).dat", lol
	<game name="puyopuy2a" cloneof="puyopuy2" romof="puyopuy2" sourcefile="megadrive/d_megadrive.cpp">
		<description>Puyo Puyo 2 (Japan)</description>
		<year>1994</year>
		<manufacturer>Compile</manufacturer>
		<rom name="puyo puyo 2 (jpn).bin" size="2097152" crc="51ad7797"/>
		<video type="raster" orientation="horizontal" width="320" height="224" aspectx="4" aspecty="3"/>
		<driver status="good"/>
	</game>
	<game name="puyopuy2" sourcefile="megadrive/d_megadrive.cpp">
		<description>Puyo Puyo 2 (Japan, v1.1)</description>
		<year>1994</year>
		<manufacturer>Compile</manufacturer>
		<rom name="puyo puyo 2 (jpn) (v1.1).bin" size="2097152" crc="25b7b2aa"/>
		<video type="raster" orientation="horizontal" width="320" height="224" aspectx="4" aspecty="3"/>
		<driver status="good"/>
	</game>

Whether this is the specialized arcade hardware you mentioned or the actual game console, I thought it was worth considering. Given that there are the subtle differences in the rom that you noted, this probably explains why I can't get a matching CRC. But I've been playing around with the files and trying to find something that works.

Something I noticed about cpu.bin is, if you slice it into two 524288 (decimal) length blocks, it seems to cut it cleanly like it was meant to be two different files (both end with a block of FF bytes). So this may be modified versions of two files in the Arcade only datfile.

Kinda grasping at straws at this point, but the last thing I can think of trying is editing the datfiles to add an entry for the files I have and see what happens. Arcade datfile uses "d_segac2.cpp" and Megadrive datfile uses "d_megadrive.cpp". I would imagine this makes a huge difference when testing the rom.

Another thing: Nintendo Switch also has a version of Puyo Puyo 2 released. If I can get it cheap, I'll look into comparing with that. Wikipedia has a small section on both the 3DS version and the Switch version. Switch version is definitely arcade.

If anyone else has access to the Sega 3D Classics PuyoPuyo2x.ccf file and wants to help, please do. I'm just a noob who likes to tinker.

aceofstax avatar Nov 03 '24 03:11 aceofstax

Something I noticed about cpu.bin is, if you slice it into two 524288 (decimal) length blocks, it seems to cut it cleanly like it was meant to be two different files (both end with a block of FF bytes). So this may be modified versions of two files in the Arcade only datfile.

It might be two of the .bin files required for the arcade ROM? Doesn't really solve the issue on how to obtain the third file, though.

RealRelativeEase avatar Nov 10 '24 21:11 RealRelativeEase

It might be two of the .bin files required for the arcade ROM? Doesn't really solve the issue on how to obtain the third file, though.

Yeah, that's where I was hoping ClrMamePro would come in. I'm still trying to grasp the nature of arcade roms, but it seems clear that ClrMamePro slices files it recognizes into different playable formats. Still, it has to recognize the rom via the provided datfile.

In the meantime, I tried out an idea I got from gex-toolbox and ran Binwalk on the cpu.bin and pcm.bin.

I played around with it a little, and this command was one I used: binwalk -B -e cpu.bin pcm.bin

Binwalk did not detect anything embedded in cpu.bin, but it did find a MySQL isam v2 archive in pcm.bin.

Target File: pcm.bin
MD5 Checksum: c04016144307af2bc90fca5eac374866
Signatures: 411
DECIMAL       HEXADECIMAL     DESCRIPTION
----------------------------------------------------------------------------
1585056       0x182FA0        MySQL ISAM compressed data file Version 2

"myisamchk" is supposed to be able to handle these files. I did attempt to use that too, but not knowing much about the filetype, I literally selected from the offset it appears (in pcm.bin) to the end of the file. Copied that, saved to a new file and tried to extract with myisamchk. I got an error message telling me it wasn't an isam archive.

$ myisamchk -o --create-missing-keys pcmbin.myi
myisamchk: error: 'pcmbin.myi' is not a MyISAM-table

Binwalk identifies it as containing an isam v2, and so does UniExtract 2. But I still haven't found a way to extract it using either tool.

Funny thing about cpu.bin. Kali says it's a "Genesis rom" in the file manager lol. I think I already tested it with a Genesis emu though and no result.

So the other thing I have yet to try is to get the CRC32 hash of the cpu.bin, add it to the "FinalBurn Neo (ClrMame Pro XML, Megadrive only).dat", and load that in an emulator. Those entries are single file roms, so we'll see what happens.

aceofstax avatar Nov 19 '24 09:11 aceofstax

Small update, and new details on Switch versions of Puyo Puyo 2 and Space Harrier.

Switch homebrew NX Dump Tool rewrite dumps to separate folders for base version and updated version ("[game title & version]"). Assume drive "S" is your Switch microSD card. This command will work for either title:

.\MArchiveBatchTool.exe fullunpack --keep 'S:\nxdt_rw_poc\NCA FS\User\Extracted\[game title & version]\Program #0\1\alldata.psb.m' zlib 25G/xpvTbsb+6 64

Insights from Puyo Puyo 2 for Switch (base version 1.0.0 & update 1.1.0):

  • Rom found in \system\roms\PuyoPuyo2_jp.ccf (1073152 bytes; CRC32 = 551E2A45)
  • Both base version 1.0.0 and update 1.1.0 contain the same PuyoPuyo2_jp.ccf
  • US eshop release is identical to JP eshop release. ROM itself is JP only.
  • Extracted ccf file produces cpu.bin identical to 3DS version (1048576 bytes; crc32 = 4A6D76D6)
  • Extracted ccf file produces a much smaller (1/6th size) pcm.bin (524288 bytes; crc32 = 020FF6EF)
  • pcm.bin scanned with Binwalk (-B pcm.bin) doesn't return anything useful

The second point on base and update having identical roms is significant. Base version of Collection of Mana differs from updated versions in that the European Seiken Densetsu 3 roms have been changed to "Rev 1" versions. Always worth checking, regardless of the Switch title with roms.

The last point on Binwalk means the MySQL isam v2 file in the 3DS pcm.bin may be insignificant. Maybe this is what was in that archive. Size of Switch cpu.pcm + pcm.bin (1.5mb) vs 3DS version (4mb) is interesting though. FinalBurn Neo datfile seems to want 2mb roms. The main challenge to a working rom is figuring out these pcm.bin files.

Insights from Space Harrier for Switch (base version 1.0.0):

  • File directory structure is extremely similar to Puyo Puyo 2 (both are SEGA AGES releases)
  • \system\roms folder is completely missing. Probably a port with no rom.
  • As both of you had thought, I too think its likely the 3DS version also has no rom.

aceofstax avatar Nov 21 '24 02:11 aceofstax

It actually could be a Mega Drive rom, unless they casually drop text like that in arcade roms. But this cpu.bin file is the exact same file length (2097152) as a Puyo Puyo Tsuu MD rom too

So I'm guessing the Wii VC Mega Drive ROM works in a Genesis emulator. Since the 3DS cpu.bin have the same file lenght, maybe it only need a small modification in an hex editor to make it work on a Genesis emulator as well. I know that on NES ROMs you sometimes have to fix the header in hex to make them work, so maybe something similar can be done with a Genesis ROM as well.

kjetil-f avatar Nov 21 '24 11:11 kjetil-f

Any progress on getting Fantasy Zone 1 extracted and running properly?

PW5190 avatar Nov 23 '24 00:11 PW5190

I've been missing the forest for the trees, the multiplayer has been dummied out in the Mega Drive ROM extracted from 3D Streets of Rage / Bare Knuckle.

BK1_20130611-241027-141204

This also occurs with 3D Sonic 2, removing the 2 PLAYER VS option.

PW5190 avatar Nov 23 '24 02:11 PW5190

Yes, Sega 3D Classics contains ROMs. Here is what I was able to find:

  • Altered Beast (Japan, USA) (En) (Sega 3D Classics Collection).md
    • AlteredBeast_JP_3D_130419.SGD
  • Altered Beast (USA, Europe) (Sega 3D Classics Collection).md
    • AlteredBeast_3D_130419.SGD
  • Fantasy Zone II - Opa-Opa no Namida (Japan).sms
    • FantasyZone2_J.SMS
  • Maze Walker (Japan) (En) (Sega 3D Classics).sms
    • MazeWalker_patch.sms
  • Sonic The Hedgehog (World) (Sonic Mega Collection).md
    • Sonic1.SGD
  • Sonic The Hedgehog (USA, Europe).md
    • Sonic1_US.SGD
  • Sonic The Hedgehog 2 (World) (Rev A) (Sonic Mega Collection).md
    • Sonic2.SGD
    • Sonic2_US.SGD
- FZ1_NEW_OPLL_OB.BIN ("New"? Fantasy Zone)
- FZ1_OLD_OPLL_OB.BIN ("Old"? Fantasy Zone)
- PuyoPuyo2x.ccf (fbneo "light" rom?)

These are the no-intro expected filenames, with the original unpacked filenames underneath. As for the other three, these are the unpacked original filenames (See edit at end of post). PuyoPuyo2x.ccf should have a ROM in it, but I can't make out what the other two are supposed to be as of yet.

I basically took hints from other guides on extracting ROMs from 3DS titles in figuring out how to get these. If you give me a few days to locate my 3DS, I can provide specifics.

EDIT: Post updated with full listing of roms I was able to find.

All of these originally came in a .m file and upon decompression, the filenames dropped the .m extension. Checking those unpacked files against no-intro dats will get them recognized. It's just the FZ1 and PuyoPuyo2 files I'm unsure about.

I'm in the process of trying to get Fantasy Zone 1 extracted and running properly as well. Any luck so far for you?

PW5190 avatar Nov 23 '24 02:11 PW5190

M2 seems to have used the same ROM for both the 3D Classics/AGES versions and the Astro City Mini: https://twitter.com/bakueikozo/status/1344655854855979008

RealRelativeEase avatar Dec 02 '24 20:12 RealRelativeEase

Any progress on getting Fantasy Zone 1 extracted and running properly?

Not exactly. However I did search around a little bit and found this.

There's another page on this site that talks about the differences in more technical detail, but I can't link it here as attachments in that thread seem to have copyrighted material.

What I learned is there may be intentional corruption in the ROMs. For one they're twice the size of the standard roms (256KB instead of 128KB), but when you load up either in an unmodified state, they're both unplayable yet fully decompresed.

The corruption is seemingly intentional, with the rationale given that mdf format is only deobfuscated, and zlib decompressed afterward. From what I understand, if it wasn't properly deobfuscated, it wouldn't decompress.

So, what we have are the actual contents of the compressed archive. It just so happens that these were edited in a way that makes them unplayable in most (if not all) emulators.

Something else interesting about these roms is, if FZ1_NEW_OPLL_OB.bin is patched with certain data from FZ1_OLD_OPLL_OB.bin, you can actually get to a working title screen. Whether or not it's playable is not clear, and I have yet to try it myself.

M2 seems to have used the same ROM for both the 3D Classics/AGES versions and the Astro City Mini: https://twitter.com/bakueikozo/status/1344655854855979008

This is helpful, and I think this nearly solves the whole issue around a working 3DS classics Puyo Puyo 2 rom.

It just hit me that the CRC32 of pcm.bin in the switch release is identical to epr-17239.ic4.

But given that the 3DS release has a much larger pcm.bin, that's not useful for people who only own the 3DS title. The data looks entirely different in the 3DS release, and the file is 7x bigger. I suppose the pcm.bin we need is in that mysql isam v2 archive?

Splitting the cpu.bin into two 524288 byte files (as I mentioned earlier, it appears to split cleanly like this) does not produce the same CRC32 for the expected .ic31 and .ic32 files. But here are the CRC's regardless.

cpu1.bin = DBA2B9D6 cpu2.bin = 7DFA01E8

Keep in mind the original cpu.bin is identical across 3DS and Switch versions.

I will test these three 524288 byte files in an emulator tonight or tomorrow. At the very least, I now know I have epr-17239.ic4 (switch ver's pcm.bin) to work with.

aceofstax avatar Dec 07 '24 00:12 aceofstax

Splitting the cpu.bin into two 524288 byte files (as I mentioned earlier, it appears to split cleanly like this) does not produce the same CRC32 for the expected .ic31 and .ic32 files. But here are the CRC's regardless.

cpu1.bin = DBA2B9D6 cpu2.bin = 7DFA01E8

You could modify your FB Neo DAT file to use those CRC32 values. Or you could modify the CRC32 values of those files yourself using ForceCRC32 to see if the CPU data can be used to produce a ROM that boots in FB Neo.

RealRelativeEase avatar Dec 07 '24 23:12 RealRelativeEase

You could modify your FB Neo DAT file to use those CRC32 values. Or you could modify the CRC32 values of those files yourself using ForceCRC32 to see if the CPU data can be used to produce a ROM that boots in FB Neo.

That ForceCRC32 script is interesting. I'm not certain where to apply the patch in these files, as I don't know where would be safe to make an edit.

However, I did test the ROM anyway. Got FB Neo configured proper in Retroarch (as per FB Neo tutorial, with modified .dat), and learned you can also load "patched" ROMs that don't match known CRCs in /Retroarch/system/fbneo/patched

Doing this, I got something to boot, but nothing playable. Flashed a purple screen, then some purple and blue alternating lines. Basically just garbage, and no audio as far as I could tell.

I believe I've tested it in all ways possible (for example, cpu1 = .ic31 in one test, cpu2 = .ic31 in another;), but seemingly same result. I would have expected different behavior, so I'll double check everything and try again.

aceofstax avatar Dec 08 '24 20:12 aceofstax

That ForceCRC32 script is interesting. I'm not certain where to apply the patch in these files, as I don't know where would be safe to make an edit.

You need to subtract the last four bytes. For example, if the CPU files are 524288 bytes each, the correct number would be 524284. Make backups of both files and move them to a folder along with forcecrc32.py, then you open a command line interface and move use the cd command to open the directory you've created. Then you enter: python forcecrc32.py epr-17241.ic32 524284 1cad1149 python forcecrc32.py epr-17240.ic31 524284 beecf96d

Since I don't know which CPU file is which, there is some trial and error involved, so you should prepare two folders for both options. This is more of a bandaid solution to see if it results in a ROM that boots in FB Neo. If nothing else, it might show that there were further modifications made to those files, other than the CRC32 being different.

RealRelativeEase avatar Dec 08 '24 22:12 RealRelativeEase