PSX ROM Notes
Ever see that Japanese ROM when you opened up your PSX disc of Final Fantasy Chronicles in your computer? Wonder what it was for? Well, thanks to halkun, we have the answer.
ROM Notes[edit]
The ROM in the PSX CD is just a very unique way to hold game data; it's NEVER executed. The Chrono Trigger CD does not not contain an emulator, nor is the ROM emulated. Square wrote a whole new kernel for CT which simply opens the ROM to grab the game data, like maps, enemy data, and scripts but doesn't execute the RPOM itself.
If you look in the FF6 PSX CD and do a compare with the SNES ROM you will find that that CD contains the ROM too, but in FF6's case, the ROM has been "shattered" and split up into individual data sets. The executable data has been stripped. The CT ROM was actually there as a "secret bonus" for the Japanese market. It was put there on purpose.
However, the US version of Chrono Trigger has an exclusive distribution contract with Nintendo. If you run the US CT ROM in an SNES emulator it says "Licensed to Nintendo" in the US version. Because Nintendo has the rights, Square couldn't release the English version of the ROM in the US.
Well, why a ROM as a data set?
The sound chip in the PSX is actually *COMPATIBLE* with the SNES one. Sony made them both and one is just a big brother of the other, so the sound data can be directly "ripped" from the ROM. (That's why the PSX and SNES version sound exactly the same.) Not only that, Minoru Akao, the sound designer, was one of the original R&D guys who came up with Sony's sound system for the SNES. He was then hired by Square and not only did the original sound design for the Chrono Trigger ROM, but also did the remake. He knows the system forward and backwards. Not only that, but he's the sound designer for 98% of all Squaresoft games.
The PSX also uses the same high color colordepth format for displaying game sprites. That doesn't hurt either. However the display code is *WAY* different.
Swapping the ROM will break the game. It won't work. It's not an emulator.
This doesn't mean the ROM isn't used in the US Final Fantasy Chronicles, though. It still "rips" the graphics, sound, enemy data, and such in real time. They are exactly the same. However, the US version ROM is different than the Japanese one.
Due to the changes in the dialogue script, the English is external to the ROM now. (Actually is just a chunk of the US SNES ROM.) The kernel calls that as opposed to the original data inside the whole Japanese ROM.
Other Research[edit]
Thanks to Vehek
The $7F0000 block of SNES memory is mapped to 0x8010000 in Playstation memory. This includes the decompressed location event data.
- $7E0000-01FFF->0x802E000
- $7E2000-FFFFF->0x8020000
DIALOGUE TEXT
Contrary what halkun said, the internal ROM has been modified with the English script - just the dialogue as far as I can tell. The dictionary entries are elsewhere - more on that later.
For both names and dictionary strings, the game automatically inserts a space, UNLESS what follows is a punctuation mark. This may complicate reinserting text without a mountain of duplicate entries for every punctuation mark or an inserter that can account for it.
There are some external dialogue strings used in place of the ones from the ROM, but I'll get to that later.
Music IDs
The first two are listed here because since they weren't included in the Japanese SFC release, there was no guarantee that they'd be in the same slots as the English SNES version we're familiar with and mainly hack.
- 51: Battle 2
- 52: Singing Mountain
- 53: Underground Sewer (no water)
- 54-5B: Memories of Green
- 5C: Time To Rest -After the Battle
- 5D: One Sunny Day When We Met
- 5E: Scattering Blossoms
- 5F: A Meeting with Destiny
- 60-7F: (glitch version of faraway times?)
COMPRESSION
- The Playstation version has its own compression format for its data.
- It's a typical LZSS implementation, except that it always works in 2-byte units instead of single-byte. So a control "byte" is two bytes long even though only the first byte is used and it writes two bytes at a time instead of one.
- References: lower 5-bits are length (add 2 to get the number of 2-byte segments to copy), upper 11 the distance back to copy from (multiply by 2). Distances before the start of the decompressed data produce 00 00's.
(Edit - a prior decompression/compression tool exists - Squaresoft's portings file extractor)
- File - GAME1\KOK.BIN
- This appears to be part of the field module.
- It contains two compressed files.
- The first, decompressed to 0x9FC00 of memory, is known to contain among other things, the dictionary strings, credits text, and some replacement dialogue strings.
- Dictionary strings come before their pointer tables. The first set are single-byte text codes, the rest two-byte codes, starting with E0 XX.
Mostly, the replacement text is for button references (they were probably more important in the Japanese version), but there a few that don't fit that pattern
- Ayla and Lucca talking about "soup"
- Taban offering Crono a sip of his drink in the ending - this line got mentioned at a Japanese BBS as a change in the PS version
- Receipt of the Prism Helms - upon further research, this line didn't exist in the Japanese SFC release, it was added for the English release
The second part contains parts of the CT ROM. It gets stored at 0x123000 of memory.
I've only manually matched up a few parts of it.
- Field sprite related data - palettes, graphic pointers, sprite assembly pointers, animation data & pointers, sprite data
- Bank C0: End of bank C0, starting from 0xF300
- Location exit data
- Unknown data pointers and data from 3DF290
The location data and location event pointers are also in there. As a result, if you edit just the ROM in Temporal Flux, the changes made to those parts won't be reflected and you might wonder why nothing seemed to change.
Attract mode Back when I started studying the PS1 version, I was planning on doing a write-up and providing codes or a patch for what I could get working of the attract mode. For now, this is just a list of some of the obstacles I ran into.
- The title screen with its event code managing the warps and stuff for the attract mode scenes is not actually loaded on boot
- The pendulum mode7 scene also displays the intro movie
- All the credits screens calls crash the game
- Attract mode battles don't load all the data necessary. The main part I know about is the party has 0 HP/MP, causing a game over.
- Some of the side-wipes in the overworld scenes don't work
Misc observations
The game has a routine that constantly checks the current location and probably some other stuff to determine when to play a movie.
When I tried using the edited-warp method (see "Game Notes" in Geiger's Chrono Trigger Database) to view endings, the credits didn't display.
From: Modification