Skip to content

Pokemon Stadium (J)

LuigiBlood edited this page May 28, 2020 · 4 revisions

Pokémon Stadium (Japan only) is a reboot game. It loads a portion of code from disk, disables N64 OS and executes it.

Technical Details

  • The game checks for the following 64DD units:
    • Japanese Retail Unit
    • Development Unit? [To be determined]
  • The game loads the Disk ID and performs the following checks:
    • Checks if the Company Code is 01 (Nintendo).
    • Checks if the last 3 letters of the Game Code are PSJ.
    • Checks if the first letter of the Game Code is between E to Z.
    • Checks if the Disk Number is 01.
  • If the checks are successful, then it's an Expansion Disk, then performs the following:
    • Load LBA 560 to 801684B0.
      The format is the following:
      504F4B45 SSSSAAAA DDDDDDDD ????????
      
      504F4B45 = "POKE"
      SSSS = LBA Start
      AAAA = LBA Block Amount
      DDDDDDDD = RAM Load Address and Code Entrypoint
      
    • Checks if the first 4 bytes are "POKE", then copy to 800AB200 (Function 8000C888).
    • Load <LBA Block Amount> from <LBA Start> at RAM Load Address.
    • Decrypt and boot the loaded code at described entrypoint address via LeoBootGame function (80009490).
      • The first 0x100 bytes of the loaded code are encrypted. See 64ddutils' bootcodecrypto.c for the crypto process.