# Pyramid (U) (Sachen) — Pass 2 name map # # Derived from this dump's own committed split. Every name below was read # out of the code; nothing is generic where the ROM gives a better basis. # # Format: # # The routine entries (the task table, the engine routines and the boot # chain) are named by hand; the internal branch targets are derived from the # branch that reaches them by _tools/derive_branch_names.py: # beq -> OnZero bne -> OnNonzero # bcc -> OnCarryClear bcs -> OnCarrySet # bmi -> OnNegative bpl -> OnNonnegative # bvc -> OnOverflowClear bvs -> OnOverflowSet # a backwards branch (the target is below the branch) -> Loop # # The game dispatches through `jmp` trampoline tables that live inside the # data regions ($C000-$C01B and the data blocks at $C01E, $C02A, $C042 and # $C054). Those table entries are the game's *task* entries and are named # Task_; the routines they jump to carry the plain name. # # Two vocabularies are used for the zero-page and RAM state: # * $02/$03 the 16-bit script pointer # * $00/$01 the high/low bytes of a VRAM address # * $04 the command-list sync flag # * $05/$06 the VRAM write position # * $0700/$0701 the VRAM command buffer (16-bit pointer) C000 Task_PlayVramScript C003 Task_CopyBlockToCommandBuffer C006 Task_UploadPalette1 C009 Task_UploadPalette2 C00C Task_FinishCommandList C00F Task_StrobeControllers C012 Task_EmitVramAddressMarker C015 Task_DrawSpriteAtPosition C018 Task_ClearOamShadow C01B Task_AddToCounter C027 Task_FlushVramCommandList C03C Task_Multiply16 C03F Task_BuildVramCommandList C048 Task_ShiftRight8 C04B Task_ShiftLeft8 C04E Task_SetPalette16 C051 Task_SetPaletteBlock16 C063 PlayVramScript C090 PlayVramScript_CopyRun C0A0 PlayVramScript_WriteData C0A8 PlayVramScript_StoreCount C0AD PlayVramScript_NextCommand C0B3 PlayVramScript_End C0B9 CopyBlockToCommandBuffer C0CD CopyBlockToCommandBuffer_Loop C0DB UploadPalette1 C0ED UploadPalette1_Loop C0FB UploadPalette2 C10D UploadPalette2_Loop C11B FinishCommandList C122 FinishCommandList_Wait C127 FlushVramCommandList C139 FlushVramCommandList_Loop C155 FlushVramCommandList_WriteData C15B FlushVramCommandList_End C160 StrobeControllers C16A ReadControllers C188 DrawSpriteAtPosition C192 EmitVramAddressMarker C198 BuildVramAddress C1B6 ClearOamShadow C1BA ClearOamShadow_Loop C1C1 AddToCounter C1C4 AddToCounter_Wait C1C9 IncrementCounter16 C1CF IncrementCounter16_End C1D0 AdvanceScriptPointer C1D6 AdvanceScriptPointer_Loop C1D7 ConvertNibbleToBcd C1E2 ConvertNibbleToBcd_Digit C1EA ConvertNibbleToBcd_Store C1EF SetPpuCtrl C1F6 WaitForVblankClear C1FB WaitForVblankSet C201 SetPpuCtrlAndMask C205 SetPpuCtrlAndMask_Alt C207 SetPpuCtrlAndMask_Store C225 StoreOamEntry C23A DrawTwoDigitNumber C256 DrawTwoDigitNumber_Loop C25F DrawTwoDigitNumber_High C277 EmitDigit C28A EmitDigit_SetFlag C28F EmitDigit_Store C294 AddDeltaToPosition C2A0 AddDeltaToPosition_Loop C2B6 AddDeltaToPosition_Carry C2BE AddDeltaToPosition_Store C2E2 AddDeltaToPosition_Carry2 C2EA AddDeltaToPosition_Store2 C2F9 AddDeltaToPosition_End C300 Multiply16 C317 BuildVramCommandList C31B BuildVramCommandList_SetAddress C32C BuildVramCommandList_Data C341 BuildVramCommandList_Store C347 BuildVramCommandList_End C34A CopyBlockToCommandBufferTail C354 CopyBlockToCommandBufferTail_Loop C35F SetPaletteBlock C36D SetPaletteBlock_Loop C384 ScanForButtonPress C386 ScanForButtonPress_Loop C392 DispatchTask1 C3B6 MoveSpriteRight C3C7 MoveSpriteLeft C3D8 ComputeOamSlotAddress C3E3 MoveSpriteDown C3E7 MoveSpriteUp C3EB MoveSpriteLeft2 C3EF MoveSpriteRight2 C3F0 ClampSpriteToGrid C3FA ClampSpriteToGrid_Redraw C3FD Task_ReturnStub C3FE BuildVramPositionWrite C43E Subtract16 C460 Subtract16_Loop C477 Subtract16_Loop2 C47A Subtract16_Loop3 C49A Subtract16_Loop4 C4B1 Subtract16_Loop5 C4B4 Subtract16_Loop6 C4B8 ShiftRight8 C4C0 ShiftRight8_OnNonzero C4C7 ShiftRight8_Loop C4D1 ShiftLeft8 C4D9 ShiftLeft8_OnNonzero C4E4 ShiftLeft8_Loop C4EB SetPalette16 C4FD SetPalette16_Loop C50A SetPalette16_Entry C536 SetPaletteBlock16 C548 SetPaletteBlock16_Loop C56D SetPaletteBlock16_Entry C585 WriteDigitString C58F WriteDigitString_Loop C59D WriteDigitString_Loop_Loop C5A1 WriteDigitString_Loop_Loop2 C5AB AddDelta24 C5B8 AddDelta24_Copy C5C0 AddDelta24_Loop C5E1 AddDelta24_Borrow C614 AddDelta24B C620 AddDelta24B_Save C662 SetPaletteEntry C676 SetPaletteEntry_OnCarryClear C683 SetPaletteEntry_OnCarryClear2 C6A3 SetPaletteEntry2 C6BA SetPaletteEntry2_OnNonnegative C6DB SetPaletteEntry2_OnCarryClear C800 BootColdStart C805 BootWaitForVblank C80A BootWaitForVblank2 C815 BootClearRam C835 BootInitState C897 BootFirstFrame C8A4 BootDecCounters C8B8 BootDecTimer C8D0 BootCopySpriteData C8F2 BootUploadPalette C90D BootCopyTableToBuffer C932 BootCopyTableStart C934 BootCopyTableLoop C9A7 BootInitLevel CA1D BootCheckController CA32 BootFrameCounter CA41 BootDrawSprite CA61 BootSetFlag CA68 BootSelectTable CA80 BootCopyTable CA97 BootSetPaletteBlock CAF3 BootInitPpu CB68 ActorGridClear CB6C ActorGridClear_Loop CB82 ActorGridLookup CB99 ActorGridRead CBAD ActorGridStart CBDC ActorGridClamp CBE5 ActorGridInit CBF9 ActorGridFill CC11 TaskScheduler CC3D TaskScheduler_Tick CC56 TaskScheduler_Count CC5C TaskScheduler_Step CC71 TaskScheduler_Scan CC73 TaskScheduler_ScanLoop CC8B TaskScheduler_Button CC90 TaskScheduler_Next CCA5 TaskScheduler_Restart CCA8 TaskScheduler_Accept CCB1 DispatchTask2 CCB8 DispatchTask2_Build CCE5 TaskScheduler_Return CCEE TaskScheduler_Select CD07 TaskScheduler_Compare CD18 TaskScheduler_Compare_Loop CD23 TaskScheduler_Compare_Loop2 CD24 TaskScheduler_Return2 CD27 TaskScheduler_Check CD43 TaskScheduler_Check2 CD72 TaskScheduler_Return3 CD75 TaskScheduler_SetPointer CD80 TaskScheduler_Wait CD85 TaskScheduler_Wait2 CD8A TaskScheduler_Wait3 CDA4 TaskScheduler_Finish CDAC TaskScheduler_Advance CDBD TaskScheduler_Return4 CDC0 TaskScheduler_Start CDDC TaskScheduler_Place CE14 TaskScheduler_CursorNext CE17 TaskScheduler_Return5 CE1A TaskScheduler_Move CE22 TaskScheduler_MoveStep CE32 TaskScheduler_Return6 CE35 TaskScheduler_Turn CE54 TaskScheduler_TurnStep CE5B TaskScheduler_Return7 CE5E TaskScheduler_Move2 CE66 TaskScheduler_Move2Step CE78 TaskScheduler_Return8 CE7B TaskScheduler_Turn2 CE96 TaskScheduler_Turn2Step CE9D TaskScheduler_Return9 CEA0 ActorPositionLookup CEA8 ActorPositionLookup_Entry CED3 TaskScheduler_Return10 CED6 ActorGridRebuild CEE0 ActorGridRebuild_Row CEEB ActorGridRebuild_Cell CEF6 ActorGridRebuild_Next CF02 ActorGridRebuild_NextRow CF0E ActorGridRebuild_Column CF10 ActorGridRebuild_ColumnStart CF14 ActorGridRebuild_Slot CF29 ActorGridRebuild_Copy CF35 ActorGridRebuild_SlotEnd CF55 ActorGridRebuild_Column2 CF67 ActorGridRebuild_Column2Loop CF74 ActorGridRebuild_Copy2 CF90 ActorGridRebuild_Copy2End CF98 ActorGridRebuild_Column2End CFC4 ActorGridRebuild_End CFC7 ActorGridNext CFFA ActorGridNext_Reset CFFF ActorGridNext_Start D020 ActorGridNext_Start_Loop D02A ActorSearch D036 ActorSearch_Row D03D ActorSearch_Slot D04A ActorSearch_Match D074 ActorSearch_Check D085 ActorSearch_NotFound D087 ActorSearch_Restore D0A0 ActorSearch_Restore2 D0AC ActorSearch_Restore3 D0AD ActorSearch_Empty D0B6 ActorSearch_Restore4 D0B8 ActorSearch_Next D0C3 ActorSearch_Done D0D3 ActorPositionTest D0DF ActorPositionTest_Loop D0F5 ActorPositionTest_Loop_Loop D0F8 ActorPositionTest_Step D105 ActorPositionTest_End D10D ActorPositionTest_Match D134 ActorPositionTest_Blocked D13C ActorPositionTest_Taken D146 ActorPositionTest_Compare D15B ActorPositionTest_Blocked2 D15E ActorPositionTest_Compare2 D16A ActorPositionTest_Compare3 D185 ActorPositionTest_Next D190 ActorPositionTest_Done D193 RandomByte D1B2 DrawActorRow D1BB DrawActorRow_Setup D1D7 DrawActorRow_Copy D1EC DrawScore D1FD DrawLifeCount D20E DrawLevelNumber D21C DrawTileRow D227 DrawTileRow_Loop D237 DrawTileRow_Digit D23A DrawTileRow_Store D248 DecimalSplit D24A DecimalSplit_Hundreds D253 DecimalSplit_Tens D257 DecimalSplit_Units D260 DecimalSplit_Done D265 DrawActorSprite D27F DrawActorSprite_Setup D2A0 OamShadowClear D2A4 OamShadowClear_Loop D2BF ActorGridOffset D2ED ActorGridOffset_Copy D3A1 RandomWithinRange D3B5 RandomWithinRange_Out D3B7 ActorSpriteSetup D3BB ActorSpriteSetup_Offset D41D ActorSpriteSetup_State D424 ActorSpriteSetup_Pos D42E ActorSpriteSetup_Next D43E ActorSpriteSetup_Draw D45A OamShadowClear2 D45E OamShadowClear2_Loop D476 OamShadowClear3 D47F OamShadowClear3_Loop D488 ActorSpriteSetup_Offset2 D4B7 OamShadowClear4 D4BB OamShadowClear4_Loop D4C5 ActorInitFromTable D50A ActorUpdate D510 ActorUpdate_Loop D512 ActorUpdate_Slot D520 ActorUpdate_Timer D530 ActorUpdate_Move D54A ActorUpdate_Next D555 ActorUpdate_Done D56B ActorUpdate_Anim D57A ActorUpdate_AnimIndex D59A ActorUpdate_Sprite D5AD ActorUpdate_SpritePos D5CA ActorUpdate_NextSprite D632 ActorSpawn D63B ActorSpawn_Setup D655 ActorSpawn_Start D66D ActorSpawn_Copy D679 ActorSpawn_CopyLoop D6AC ActorGridShift D6B2 ActorGridShift_Row D6BB ActorGridShift_Scan D6C9 ActorGridShift_Next D6D6 ActorGridShift_Dst D6E7 ActorGridShift_Copy D6F6 ActorGridShift_Copy_Loop D6FD ActorGridShift_Copy2 D720 ActorGridShift_End D72C ActorGridShift_Done D72E NmiHandler D78A NmiHandler_Body D793 NmiHandler_Epilogue D79D NmiHandler_Number D79F NmiHandler_NumberLoop D7A8 NmiHandler_NumberDigit D7B6 WriteSoundRegister D7C5 WriteSoundRegister_Loop D7D7 SoundTableEntry D7E3 IrqHandler D7EB ColdStartAlternate DE9A SoundInit DEA9 SoundInit_Copy DECB SoundPlayEffect DEFF SoundClearVoices DF0E SoundStopAll DF14 SoundStopAll_Loop DF29 SoundClearVoices_Loop DF80 SoundTick DF89 PlaySoundEffectFromSlot DF8E SoundTick_Voice DF9A SoundTick_Next DFA1 SoundTick_Command DFAC SoundTick_Command2 DFB5 SoundTick_Command3 DFBF SoundTick_Command4 DFD5 SoundTick_Sample DFF4 SoundTick_Volume E00C SoundTick_Volume2 E017 SoundTick_VolumeLoop E029 SoundTick_Envelope E04B SoundPlayer E057 SoundPlayer_Reset E05E SoundPlayer_Command E069 SoundPlayer_Command2 E072 SoundPlayer_Command3 E07C SoundPlayer_Command4 E099 SoundPlayer_Volume E0B1 SoundPlayer_Volume2 E0BC SoundPlayer_VolumeLoop E0CE SoundPlayer_Envelope E0F0 SoundPlayer2 E0FC SoundPlayer2_Reset E103 SoundPlayer2_Command E10E SoundPlayer2_Command2 E117 SoundPlayer2_Command3 E121 SoundPlayer2_Command4 E13E SoundPlayer2_Volume E156 SoundPlayer2_Volume2 E161 SoundPlayer2_VolumeLoop E173 SoundPlayer2_Envelope E195 SoundPlayer3 E1A1 SoundPlayer3_Reset E1A8 SoundPlayer3_Command E1B7 SoundPlayer3_Command2 E1D4 SoundPlayer3_Sample E1E9 SoundPlayer3_Envelope E1FB SoundPlayer3_Write E20B SoundPlayer3_WriteLoop E215 SoundPlayer3_Voice E220 SoundPlayer3_VoiceLoop E226 SoundPlayer3_VoiceLoop_OnCarryClear E230 SoundPlayer3_Voice2 E236 SoundPlayer3_Voice2Loop E240 SoundPlayer3_Decay E249 SoundPlayer3_Decay2 E24F SoundPlayer3_Decay2Loop E259 SoundPlayer3_Done E25A SoundVoiceIndexAdvance E260 SoundVoiceIndexAdvance_End E261 SoundVoiceIndexAdvance2 E267 SoundVoiceIndexAdvance2_End E268 SoundVoiceIndexAdvance3 E26E SoundVoiceIndexAdvance3_End E26F SoundVoiceIndexAdvance4 E275 SoundVoiceIndexAdvance4_End ED6E SampleTableLookup EDB7 SampleTableLookup_OnNonzero F891 SampleTableRead F894 SampleTableRead2 F897 SampleTableRead3 F89A SampleTableNext F8A2 SampleTableNext_OnNonzero F8AD SampleTableNext_Loop F8B2 SampleTableNext_Loop2 F8BC SampleTableNext_Loop3 F8C0 SampleTableNext_Loop4 F8C4 SampleTableNext_OnZero F8C5 SampleTableNext_Loop5 F8D8 SampleTableNext_Loop6 F8DD SampleTableNext_OnNegative F8EF SampleTableEnd F908 SampleTableEnd_OnNonzero F914 SampleTableEnd_Loop F922 SampleTableEnd_Loop2 F929 SampleTableEnd_Loop3 F93C SampleTableEnd_Loop4 F941 SampleTableCopy F942 SampleDecode F951 SampleTableCopy2 F959 SampleTableCopy2_Loop FF00 Reset FF2F Reset_Loop FF3E BootChainEntry FF49 BootPokeMapperUnlock FF4C BootUnlockDelay FF4E BootUnlockDelay_OnNonzero FF50 BootUnlockDelay_OnNonzero2 FF57 BootCheckStackBytes FF67 BootCheckStackBytes_Fail FF69 BootSeedStackBytes FF74 ClearCheckerBytes