Skip to content

PS2 version analysis

Shingo INADA edited this page Jul 19, 2023 · 14 revisions

The PS2 version of this game has a lot of debug symbols, which is very useful for development.

Analysis is needed to avoid modem code or eliminate in-game lag.

Getting started

  • Extract SLPM_650.76 and MODULE directory from the game disc.
  • Download ps2dis.exe (please google)

Run ps2dis.exe and open SLPM_650.76.

  • Hit Ctrl+G to list and jump to debugging labels.

Tips

There are two version

I'm on newer game version

  • oldone: 2001/11/11 21:07
  • newone: 2001/12/26 11:23 (BestHits version)

fix gp address

When ps2dis does not recognize the value of gp correctly, insert following ops near the function you want to analyze.

lui a0, $0058
addiu gp, a0, $6370

Most gp fixes are possible with the following patch.

00100048 addiu gp, a0, $6370
0010005c nop
003a5434 nop

pcsx2 memory dump with debugging symbol

The state save data of pcsx2 can also be opened with ps2dis.

Unzip your state save file and get eeMemory.bin

Run ps2dis.exe and open SLPM_650.76, and then open eeMemory.bin. Then memory state is loaded with debugging symbol :)

PS2 version player parameter.

002C2B40 pl_paramset1

Base Address

Old

1p: 008665A0 2p: 008686A0 3p: 0086A7A0 4p: 0086C8A0

BestHits

1p: 00866620 2p: 00868720 3p: 0086A820 4p: 0086C920

Structures

  • 20C2: MS Index
  • 0424: JumpMaxSpeed1 Horizontal
  • 0428: JumpMaxSpeed2 Vertical
  • 03e0: JumpPower1 Vertical Jump Power Take off time
  • 03e4: JumpPower2 Vertical Jump Power
  • 03e8: JumpPower3 Gravity, x0.4 on space
  • 0354-0356: LandAngle ?
  • 0358-0368: JumpAngle ? Neutral+ 8Dir
  • 040c: PlAirFallSpeed Horizontal Speed while No boot with Lever in air
  • 0418: PlAirDashPara1 Dash Speed
  • 0410: PlAirDashPara2 Air resistance(?)
  • 0414: PlAirDashPara3 Dash fr
  • 0470 : RunSpeed speed of after the second steps
  • 0430-044c : StartRunSpeed speed of a first step, for each 8 directions
  • 0474 : AquaRunSpeed
  • 0450-046c : StartAquaRunSpeed
  • 0478 : AquafloatSpeed
  • 036e : SpMaxRollSpeed 2byte
  • 036a : SpMaxRollSpeedZ
  • 0330: BoostData0
  • 0332: BoostData0
  • 033e: BoostData1
  • 0340: BoostData2
  • 0344: BoostData3
  • 0334: BoostData4
  • 0336: BoostData5
  • 0338: BoostData6
  • 033a: BoostData7
  • 047c: SlowRate0
  • 0480: SlowRate1
  • 04e0: StepData0
  • 04e4: StepData1
  • 04e8: StepData2 (scaled?)
  • 04ea: StepData3 (scaled?)

Tables

  • 004e0310: PlMaxAirSpeed float*2 HV
  • 004e07d0: PlJumpPower float*3
  • 004e09d0: PlLandAngle 2byte*2
  • 004e05b0: PlAirFallSpeed float
  • 004e0420: PlAirDashParaTbl float*2
  • 004e0a60: PlJumpAngle 2byte*9
  • 004def80: PlNmlRunSpeed float
  • 004df010: PlStartRunSpeed float*8
  • 004dfdf0: PlAquaMoveSpeed float
  • 004dff10: PlStartAquaSpeed float*8
  • 004dfe80: AquafloatSpeed
  • 004e0640: AquaRollSpeed
  • 0053ed00: SpMaxRollSpeed 2byte
  • 0053ed50: SpRollSpeedZ 1byte
  • 003fac30: SpBoostData1 Unused? similar to SpBoostData
  • 0053e770: SpBoostData 2byte*8(9?)
    • BoostData0 max boost
    • BoostData1 recover/fr
    • BoostData2 unknown
    • BoostData3 unknown
    • BoostData4 Jump boost use /fr
    • BoostData5 Dash boost use /fr
    • BoostData6 Step boost use /fr
    • BoostData7 Special boost use /fr (ZGock)
    • BoostData8
  • 004e23d0: PlSlowRate
  • 0053e970: SpStepData