Information on Phantasy Star Collection

TrekkiesUnite118

Established Member
So while I am still working on Grandia, I've been curious about Phantasy Star Collection for some time and decided to poke around the disc for a bit today. And while I may jump into this once I finish up Grandia, I thought I'd post my findings if anyone else wants to take a crack at it. The 4 games seem work like this:
  • Each game has it's own dedicated EXE (PS1.EXE, PS2.EXE, PS3.EXE, and PS4.EXE)
  • Each game has it's own directory, PS1, PS2, PS3, and PS4. These hold PCM files for the games sound effects and music, as well as the original game ROM.
  • Phantasy Star 4 is the one special snowflake since it's ROM is too big to fit into RAM, so the game is broken up into different files.
  • When each game is running, the EXE is loaded into HWRAM and the original Game ROM is loaded in it's entirety into LWRAM, again PS4 being the exception here.
  • The EXE has multiple pointers in it that point to specific LWRAM offsets for data from the game's rom.
So what looks like was done is that the games were ported to the Saturn hardware similar to Sonic Jam, but instead of having the data there in individual files, the original ROMS are used instead for the game data. So it should be possible to translate these games by swapping out the ROMs and then updating the pointers in the EXEs to point to correct offsets in the English ROM. To test this theory I tried it out with Phantasy Star II and got the following results:

FD4qVpE.png


rLkMM09.png


Unfortunately the game crashed at this point, but it still proves that this should work as I probably missed an offset or changed something incorrectly.

tl;dr, this shouldn't be too hard for a team of people to do if they have a good understanding of the original Genesis ROMs and how the English and Japanese versions differ. Phantasy Star IV would be the special snowflake however that would require some extra work.
 
Nice Work as always.
I also found the same (years ago) way to play MD games over Saturn with "Sega Ages: I Love Mickey Mouse - I Love Donald Duck", The Mickey game fit on the ram, I extrated the file and it ran perfectly on Kega. I think it's the official Release for Japan even I translated some graphics and text.
The Donald duck it's splited in two files.
 
I allways thinked Sonic Jam was not a regular port, since it includes the special move on Sonic 1 that was not in the original game.
Is there any chance the Saturn load MD roms?
 
I allways thinked Sonic Jam was not a regular port, since it includes the special move on Sonic 1 that was not in the original game.
Is there any chance the Saturn load MD roms?

That's exactly why it's a port. The game has been reprogrammed to run natively on the Saturn hardware, as a result making small changes to add in stuff like that is rather trivial at that point as you're not doing some kind of ROM hack, you're reprogramming the game at the source code level and can do whatever you want.

Is there any chance the Saturn load MD roms?

If by load roms you mean emulation, probably not. I don't think the Saturn is powerful enough to do that at a playable speed. Which is why just because there's Roms on the disc it doesn't mean emulation is going on. The ROM also contains all the data for the original game, so it's a nice and compact way to just get all of the games data into RAM quickly that the natively running code can reference for it's data. This is what is going on with Phantasy Star Collection and most likely the Castle of Illusion port.
 
So I had a crazy thought a day or so ago about this. I tried making a Java program that would scan the Saturn EXE for Phantasy Star II looking for pointers that are in the address range of the Genesis ROM file. Upon finding them I had it check the Japanese ROM file to figure out what data was at those values, and then scan the US ROM file to find similar data. Then I had the code update the pointers to align with the US ROM. This worked pretty well and after some tinkering to figure out some special snowflake pointers, I was able to get these results:

sneBKHQ.png
OD3LiYH.png

qE6ReMm.png
HOuNxd5.png

dSEQiSI.png


However, there's a snag. First as you can see the characters are all called " ". So something is off there. But the bigger issue is that the US version of the game implemented Nemesis Compression on the background tile graphics to free up space for the English Script. The Japanese version didn't do this. So the US ROM's tile data for the maps is compressed and the Saturn code doesn't know what to do with it. So while the game runs and doesn't crash as far as I can tell, you have no background tiles:

AXWjAjv.png


So I'd imagine what would be required here is a Saturn implementation of the Nemesis decompression code and then an ASM hack to redirect any attempts to read that data to the new Nemesis Decompression code.
 
  • Like
Reactions: vbt
Back
Top