Chocobo Races occur in Chocobo Circuit, a zone reachable for multiple towns. Players located in the grandstands (after paying 50g or using a pass) are automatically enrolled into the race cutscenes. Players can bet on upcoming races.
sequenceDiagram
participant S as Server
participant C as Client
S->>C: 1 · Push the whole race in one burst (0x069) -> client buffers it
S->>C: 2 · Start the event
Note over C: 3 · Client plays the race from its buffer
C->>S: pings at each phase (intro · names · start · results)
S-->>C: answers those (names, payout)
A polymorphic packet is sent in one batch before the actual race. The packet has 5 documented modes:
The client will memcpy the content of the payload into global Chocobo Race structs and exit. Nothing special will occur at that point.
// Packet handler feeds this struct
struct ChocoboRacingSys // at pGlobalNowZone + 245112
{
uint32_t DownloadFlg; // Modes 1-4 clear, Mode 5 sets 1
uint32_t RaceParams[2]; // [0]=weather (id<<5)+8, [1]=counter
ChocoboParam ChocoboParams[8]; //
SectionParam SectionParams[32]; //
uint8_t ResultParams[4]; //
};