Functions
Startup Code
The startup code is copied from ROM 0x1000 to 0x8021ED00 by the boot code. It is a relatively short chunk of code whose main job is to initialize enough of the OS to DMA the rest of the gzipped code (hd_code_text.raw and hd_code_data.raw) from ROM and inflate it.
Address | Function | Description |
0x8021ED00 | EntryPoint | |
0x80220730 | Main | |
0x80220BA0 | bzero | |
0x80220C40 | osInitialize | |
0x80220E70 | DmaCopy | |
0x80220F50 | GetDmaStatus | |
0x80220F70 | __osGetSR | |
0x80220F80 | __osSetFpcCsr | |
0x80220F90 | __osSiRawReadIo | |
0x80220FE0 | __osSiRawWriteIo | |
0x802218A0 | osWriteBackDCache | |
0x80221920 | osInvalCache | |
0x80221A00 | osEPiRawReadIo | |
0x80221AC8 | __ull_div | |
0x80221BC8 | __ll_mul | |
0x80221DE0 | __osSiDeviceBusy | |
Address | Function | Description |
0x802447C0 | MainJump | |
0x80244870 | Thread1 | |
0x80244930 | Thread3 | |
0x8025615C | LoadLevel | |
0x80267A9C | Thread4 | |
0x8026FBB0 | LoadLevelRdus | |
0x80270F7C | Thread5 | |
0x8028B4C4 | InitiateDma | |
0x8028C190 | LoadLevelAmmo | |
0x8028D4C0 | LoadLevelTnt | |
0x8028FDA0 | LoadLevelSquareBlocks | |
0x802A1A9C | LoadLevelTodo74 | |
0x802A1C20 | LoadLevelTodo2C | |
0x802A1D54 | LoadLevelBuildings | |
0x802A2BB0 | CopyBuildingTableToRam | |
0x802A2A98 | InflateBuildingData | |
0x802A2C54 | LoadLevelTodo60 | |
0x802A2D68 | LoadLevelTodo4C | |
0x802A3000 | LoadLevelTodo78 | |
0x802A3504 | LoadLevelVehicles | |
0x802A3034 | LoadLevelMissileCarrier | |
0x802A3D4C | LoadLevelCollisionXZ | |
0x802A3DF0 | LoadLevelTodo70 | |
0x802A3E94 | LoadLevelTodo64 | |
0x802A3F78 | LoadLevelTrainPlatform | |
0x802A445C | LoadLevelTerrain | |
0x802A44DC | AlignTo8Bytes | |
0x802A5500 | LoadLevelTodo40 | |
0x802A55F4 | LoadLevelTodo44 | |
0x802A57CC | DecodeTexture | |
0x802A5948 | DecodeTexture6 | |
0x802A5A1C | DecodeTexture3 | |
0x802A5AD0 | DecodeTexture1 | |
0x802A5B80 | DecodeTexture2 | |
0x802A5C4C | DecodeTexture4 | |
0x802A5D24 | DecodeTexture5 | |
0x802A5E00 | DecodeTexture0 | |
0x802C4058 | GzipInflate | |
0x802CE9F0 | LoadLevelCommPoint | |
0x802D3F70 | osInitialize | |
0x802D41A0 | osEPiRawReadIo | |
0x802D4200 | osCreateThread | |
0x802D4350 | osStartThread | |
0x802D44B0 | osCreatePiManager | |
0x802D4630 | osSetThreadPri | |
0x802D4710 | osSendMesg | |
0x802D4860 | osRecvMesg | |
0x802D49A0 | osViBlack | |
0x802D4A10 | osGetTime | |
0x802D4AA0 | __ull_rshift | |
0x802D4ACC | __ull_rem | |
0x802D4B08 | __ull_div | |
0x802D4B44 | __ll_lshift | |
0x802D4B70 | __ll_rem | |
0x802D4BAC | __ll_div | |
0x802D4C08 | __ll_mul | |
0x802D4C38 | __ull_divremi | |
0x802D4C98 | __ll_mod | |
0x802D4D34 | __ll_rshift | |
0x802D4D70 | osVirtualToPhysical | |
0x802D4DF0 | osWriteBackDCache | |
0x802D4F10 | guOrthoF | |
0x802D5064 | guFrustum | |
0x802D50D0 | guPerspectiveF | |
0x802D5300 | guPerspective | |
0x802D5760 | guMtxF2L | |
0x802D5860 | guMtxIdentF | |
0x802D59D0 | guRotateRPYF | |
0x802D5A24 | guRotateRPY | |
0x802D5F30 | sqrtf | |
0x802D6270 | sinf | |
0x802D6430 | osCreateMesgQueue | |
0x802D64A0 | osViSetSpecialFeatures | |
0x802D6660 | osWriteBackDCacheAll | |
0x802D6690 | osInvalDCache | |
0x802D6740 | osDestroyThread | |
0x802D6840 | cosf | |
0x802D69B0 | proutSprintf | |
0x802D6A1C | sprintf | |
0x802D75B0 | osSetIntMask | |
0x802D83B4 | alBnkfNew | |
0x802D84B8 | alSetFileNew | |
0x802D9770 | osGetCount | |
0x802D9820 | __osViInit | |
0x802D9950 | osAiSetFrequency | |
0x802D9AB0 | osAiSetNextBuffer | |
0x802D9B60 | osAiGetLength | |
0x802DA240 | osPiStartDma | |
0x802DA560 | osCreateViManager | |
0x802DA6E4 | __osViDevMgrMain | |
0x802DA8C0 | osViSetMode | |
0x802DA930 | osSetEventMsg | |
0x802DA9A0 | osViSetEventMsg | |
0x802DAAA0 | osViSwapBuffer | |
0x802DAAF0 | osSetTimer | |
0x802DAC50 | osSpTaskDunno | |
0x802DAD6C | osSpTaskLoad | |
0x802DAECC | osSpTaskStartGo | |
0x802DAF10 | osSpTaskYield | |
0x802DAFF0 | osContInit | |
0x802DB1EC | __osContGetInitData | |
0x802DB2BC | __osPackRequestData | |
0x802DB420 | osContStartReadData | |
0x802DB4E4 | osContGetReadData | |
0x802DB680 | osInvalCache | |
0x802DB700 | bzero | |
0x802DB8E0 | __osSetSR | |
0x802DB8F0 | __osGetSR | |
0x802DB900 | __osSetFpcCsr | |
0x802DB910 | __osSiRawReadIo | |
0x802DB960 | __osSiRawWriteIo | |
0x802DB9B0 | __osExceptionPreamble | |
0x802DB9C0 | __osExceptionHandler | |
0x802DBFF0 | __osEnqueueAndYield | |
0x802DC080 | __osEnqueueThread | |
0x802DC0C8 | __osPopThread | |
0x802DC0D8 | __osDispatchThread | |
0x802DC218 | __osCleanupThread | |
0x802DC280 | __osDisableInt | |
0x802DC2A0 | __osRestoreInt | |
0x802DC300 | __osPiCreateAccessQueue | |
0x802DC350 | __osPiGetAccess | |
0x802DC394 | __osPiRelAccess | |
0x802DC3C0 | osGetThreadPri | |
0x802DC3E0 | osPiRawStartDma | |
0x802DC4C0 | __osDevMgrMain | |
0x802DC640 | __osTimerServicesInit | |
0x802DC6CC | __osTimerInterrupt | |
0x802DC844 | __osSetTimerIntr | |
0x802DC8B8 | __osInsertTimer | |
0x802DCA40 | __osProbeTLB | |
0x802DCB00 | _Printf | |
0x802DDC90 | memcpy | |
0x802DFB50 | __osAiDeviceBusy | |
0x802E20F0 | osJamMesg | |
0x802E2280 | __osSpGetStatus | |
0x802E2290 | bcopy | |
0x802E25A0 | __osSpSetStatus | |
0x802E25B0 | __osSpSetPc | |
0x802E25F0 | __osSpRawStartDma | |
0x802E2680 | __osSpDeviceBusy | |
0x802E26B0 | __osSiRawStartDma | |
0x802E2760 | __osSiCreateAccessQueue | |
0x802E27B0 | __osSiGetAccess | |
0x802E27F4 | __osSiRelAccess | |
0x802E2820 | __osSiDeviceBusy | |
0x802E2CD0 | __osSyncPutChars | |
0x802E2E00 | __osSetCompare | |
0x802E5150 | __osAtomicDec | |
The EEPROM functions are all stored in the hd_front_end_text.raw gzip file. In the (U) (1.0) ROM, these are inflated to 0x801E7000.
RAM/offset | Function |
801F1944/00A944 | int ManageEeprom(u8 block, u8 mode) |
801F2C84/00BC84 | u8 UpdateChecksum(u8 *eeprom, int length) |
80205760/01E760 | u8 ComputeChecksumByte(u8 *data) |
80202850/01B850 | s32 osEepromProbe(OSMesgQueue *mq) |
802042A0/01D2A0 | s32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) |
802043E0/01D3E0 | s32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) |
80204BE0/01DBE0 | s32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer) |
802050C0/01E0C0 | s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer) |