16 · Appendices
Reference Tables
The addresses a reimplementation reaches for daily: process globals,
condition bits, physics state, judgment tables, and the function index per chapter.
| Address | Name | Meaning |
| 0x6f0408 | procman | current process ID (2=GameTask, 3=MenuTask, 4=Ending) |
| 0x6f040c | setNextProc target | requested next process (0 = none) |
| 0x6167f4 | procfunc[] | {stack, task, cleanup} per process |
| 0x42C348 | mainFunc[12] | map-phase dispatch table |
| 0x6d74cc | GameCondition | +0x0 condition · +0x4 backup · +0x8 mainMapMode · +0xc mode backup |
| 0x6d32f8 | game_status | 876-byte run state (also dia_status/score_status views) |
| 0x6d360c / 0x6d3610 | clock / scheduled | game time vs scheduled arrival (seconds) |
| 0x6dca60 | menuinfo | menu top-level state (0–15) |
| 0x6f2b14 | menuwk | 68-byte menu work struct (cursor at +0xa) |
| 0x6d5580 / 74 / 78 | mnkey / plkey / plkey_just | menu keys / play keys / play edges |
| 0x6d557c | isdencon | controller type (0 digital, 2/3 detent, 4 analog) |
| 0x6c8748..4c | boot flags | Undead · DebugData · JoinDebug · GameLoop · MenuLoop |
| 0x6e180c | optiondata | 0x4c options (volumes +0x20.., control type +0x44, autosave +0x48) |
| 0x6e3d88 | playerdata | 0x178c progression |
| 0x6ec138 | station_status | current/next station indices and flags |
| 0x422848 | gameDataAll[78] | per-diagram DGF_GameData pointers |
| 0x5b8870 | lectdat | lecture records (80 B each) |
| 0x6dce20 | examstates | startup-inspection ladder (gate at 8) |
| 0x6f05a8 | _SysCount | frame counter (60 Hz) |
| Address | Name | Meaning |
| 0x6d2470 | Speed | km/h (float) |
| 0x6f0450 / 54 / 58 | _RunMove / RunDist / _RunDir | m/frame · section distance · direction |
| 0x6d1a44 / 0x6d1a3c | Notch / Brake | 0–5 / 0–9 |
| 0x6d1a40 / 0x6d1a38 | Noch / Brake (PnP copies) | lever detents pre-dispatch |
| 0x6e17ac | per-controller struct | nochMax/brakeMax/handlelock/Dnoch/Dbrake/DbrakeMax/hardBrakeFlg |
| 0x6ec1c4 / 0x6ec200 | DistStop / DistStopMax | distance to stop point / section length |
| 0x6d2e2c / 0x6d2e40 / 0x6d2e48 | comLim / speedLimit / comAtc | limits (km/h / table index) |
| 0x425380 | limSpeed[] | [5,10,…,125,25(ATC),0] |
| 0x4251a0 | PressResist[10] | brake pressure per level |
| 0x589de0 | BrakeJumpTbl[30] | {BrakeFunc*, DGF_BrakeCapaRecord*} |
| 0x589ed0 | brake_capa[22] | 0x10-byte records (speed bounds, pressure endpoints, rate) |
| 0x58a030 | TrainFormation[30] | {front,rear} ExtCapa index pairs |
| 0x58a0a8 | ExtCapa[30] | 0x1c-byte: model id, weight, axles, mass, capacity, rolling/tunnel coeff |
| 0x58ae74 / 0x58a3f0 | MotorCapa_DC / _AC | 22×0x7a4 / 1×0xa84 motor tables |
| 0x425f60 | judgeTbl | 2 × 0x1dc profiles: stop windows + overrun thresholds |
| 0x429760 | ScoreTbl | 2 × 0x10c profiles: bonuses + penalty values (row+0xa4) |
| 0x425c08 | unlock table | 8-word dependency entries for setClearData |
| 0x6d796c | SaveStartNowTime | departure-time anchor (door melody gate) |
| 0x6d7978 / 0x6d7970 | startMapFunc::StationStart / cnt | departure machine state |
| 0x6d67e8 / 0x6d67ec | playDemo::mode / cnt | intro cinematic state |
| Function | Address | Chapter |
| main | 0x1918c8 | 1 |
| ALInit | 0x1987e0 | 1 |
| MainTask | 0x198938 | 1, 2 |
| motherTask | 0x1ffa18 | 2 |
| trainMain | 0x213a50 | 2 |
| setNextProc | 0x213a10 | 2 |
| UpdatePnPCon / ReadControl / setGameKey | 0x1b61e4 / 0x1b633c / 0x1dbca4 | 2 |
| ALPadImpUnix::ProcessDeviceImpl | 0x395078 | 2 |
| PollPSW | 0x1984bc | 2 |
| ALSystemImp::UpdateAll | 0x226a08 | 3 |
| ttStartTask / ttCountTask | 0x198d88 / — | 3 |
| GameTask / GameEnd | 0x1e718c / 0x1e7560 | 4 |
| setMainMapMode / mainMap | 0x1e7974 / 0x1e7aac | 4 |
| MenuTask / MenuInit | 0x1ef81c / 0x1ef710 | 5 |
| exam_play | 0x1efe20 | 5 |
| Get_Diano_Nor / getNewDiaListNo | 0x219d10 / 0x21f8d4 | 5 |
| startMapFunc / mapstart_DoorClose / CheckDoorClose | 0x1e9968 / 0x1e98b8 / 0x1e619c | 6 |
| joinMapFunc | 0x1e8a38 | 6 |
| playDemo (startDemo table 0x42c1b8) | 0x1e41a0 | 4 |
| setNochBrake / __setpadcontrol | 0x200630 / 0x20030c | 7 |
| ttTrainGo / ttTrainInit | 0x1b9960 / 0x1b975c | 7 |
| getMotorPower / DC_MotorPower | 0x1b9ee0 / 0x1b9d40 | 7 |
| getBrakePower / BrakeFunc_E | 0x1b9ee8-family / 0x1b9005 | 7 |
| RunRegist / StartRegist / TunnelRegist / CurveGradeRegist | 0x1ba3ac / 0x1ba4d0 / 0x1ba524 / 0x1ba58c | 7 |
| controlAts / controlAtc | 0x1bd220 / — | 7 |
| subLifePoint | 0x1cbb94 | 8 |
| judgeStopLine / judgeLateTime / judgeOverSpeed / judgeAtcOverSpeed / judgeGSensor | 0x1c5fc8 / 0x1c6498 / 0x1c66e8 / 0x1c6820 / 0x1c5ee0 | 8 |
| setGameData / initGameData / InitTimeCtl | 0x1a0cd0 / 0x1a078c / 0x213630 | 9 |
| saveGameData / loadGameData | see symtab | 9 |
| setClearData / setStartScore | 0x1c2238 / — | 9, 10 |
| gmOverCheck / gmOverInit / gmOverFuncMain | 0x1e6b88 / 0x1e6bbc / 0x1e6f14 | 10 |
| shortReplayMapFunc / procSReplay | 0x1e9520 / — | 10 |
| checkPause / initPause / pauseFuncMain | 0x1eb3fc / — / — | 10 |
| entryLecture / procLecture / cancelLecture | 0x1c7040 / 0x1c70ec / — | 11 |
| DrawThreadFunc / ExecPacketMain | 0x3942f0 / 0x393c74 | 12 |
| ALScreenImpGLES ctor | 0x387a08 | 12 |
| DALPlaySound / VoicePlay2 / StationAnnounce / PlayAnnounce / PcmCheck | 0x20ab60 / 0x201928 / 0x1e47e8 / 0x1e46e4 / 0x1a8e14 | 13 |
| ALLzDecoder::Decode / ALArchiveImp accessors | 0x3c0304 (HeaderCheck) / 0x31c430.. | 14 |