Author Topic: Chrono Trigger Playstation Research  (Read 2833 times)

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1756
    • View Profile
Chrono Trigger Playstation Research
« on: July 21, 2020, 03:02:04 am »
I was recently inspired to investigate the PS1 version again.
This research was done on the Greatest Hits release.

Most of my investigations were done on the field module. Elsewhere, like the overworld, menus, and battle, the contents of memory may be different.

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.
« Last Edit: August 07, 2020, 07:10:57 pm by Vehek »

ZeaLitY

  • Entity
  • End of Timer (+10000)
  • *
  • Posts: 10795
  • Spring Breeze Dancin'
    • View Profile
    • My Compendium Staff Profile
Re: Chrono Trigger Playstation Research
« Reply #1 on: August 24, 2020, 02:10:01 am »
I forgot where we landed on this ages ago, but there's no real chance of the four extra PS1 tracks having true rippable SPC counterparts, right?