Files
disasm/_wip/MUSCLE (U)/copilot/routine_names.tsv
T
tmerritt 4c644d2a20 Pass 3 for NES PowerPad Test Card (U): name all data tables and VramWrite streams
- Decoded the VramWrite ($E1CC) stream format: <addr hi> <addr lo> <count> <bytes>, $00 terminator
- Named all 9 payload streams ($E4CC-$E7C2, no gaps/overlaps) plus VramWriteSourcePointerTable at $F000
- Split PadBitTableLives into Player1TileTable ($E4B4) and Player2TileTable ($E4C0), 12 entries each (Y=0..11)
- Decoded CHR font (digits $30-$39, letters $3A-$52, space $5F; 'W' missing from the A-Z run)
  and recovered on-screen text including 'PRESS A TO TEST SIDE-A' / 'SIDE-B'
- Documented that the 16 KiB PRG is two byte-identical 8 KiB halves; $C000 copy is dead
- Documented 7 unreached subroutines inside the live code region (kept as .byte per Pass-1 policy)
- Fixed a stray duplicate sentence and stale _wip paths in root OVERVIEW.md

Byte-identical ROM verified.
2026-10-16 20:24:23 -04:00

6.1 KiB

10x8000Reset
20x800EWaitForFirstPpuWarmup
30x8019WaitForSecondPpuWarmup
40x802CInitializeGameState
50x8052UpdateNametableFromStream
60x80ACStartStageSequence
70x8132UpdateFadeFlashSprites
80x8164InitializeRound
90x8226MainGameLoop
100x82ACDivideBy20
110x82E1SilenceSoundChannels1And3
120x82EDSilenceSoundChannel3
130x82FAStartIntroMusic
140x82FFStartMusicSequence
150x832AUpdateHudTallyTiles
160x8353UpdateScoreTallyDigits
170x8372WriteScoreTallyDigits
180x8399LoadOamShadowFromTable
190x83A7UpdateActorPositions
200x845CUpdateRoundTimers
210x856CPlayRoundChangeMusic
220x8596UpdateScrollTarget
230x8598UpdateScrollTargetAlt
240x8639BeginVblankFrame
250x8644ForceRenderingOff
260x8653SetRenderingOffAndSignalVblank
270x865DUpdateRoundLogic
280x86CBNmiHandler
290x8751FinishNmiUpdates
300x8759FinishNmiRegisters
310x8764IrqHandler
320x8765SetSoundSequenceChannel1
330x877CRunGameStateDispatcher
340x87BFUpdateTimersAlt
350x87D1PollControllerStart
360x87F2UpdateFlashCounter
370x8837PlayDeathSequence
380x8848PollControllerBits
390x885BPollControllerAndAdvance
400x886CPollControllerBitsAlt
410x887CSignalVblankComplete
420x8882PollControllerAndCheckRound
430x88A4BuildOamList
440x88B0EmitOamEntry
450x88EBEmitOamBlankEntry
460x88F9EmitOamFromTable
470x88FFEmitOamAtOffset
480x8936FindFreeOamSlot
490x8986CompactOamList
500x89CEReadControllerAndInit
510x8A28UpdateStageActors
520x8A5ESpawnStageActors
530x8AE8UpdateAttributeTable
540x8B07ClearScrollLatch
550x8B20WriteNametableTile
560x8B33ClearAttributeRegion
570x8B92RenderHudDigits
580x8BEFRenderHudDigitDescriptor
590x8BF8SetRenderingOn
600x8C05AdvanceAnimationSlot
610x8C0EQueueVramTransfer
620x8C11QueueVramTransferAlt
630x8C65ExecuteVramTransfer
640x8CB8QueueVramDescriptor
650x934BUpdateActorX
660x9371UpdateActorTile
670x9374UpdateActorTileAlt
680x94B1TestPlayerFacing
690x94C7SelectActorSlot
700x94C8SelectActorSlotAlt
710x94CFClearActorPosition
720x94D7ClearActorFields
730x94FESetActorFlag
740x9585UpdateActorState
750x95AEComputeActorLeftEdge
760x95D2ComputeActorRightEdge
770x95D9CompareActorToLimit
780x9653SetActorTileFromPalette
790x9667StoreActorTile
800x969EAdvanceActorCounter
810x96AASetActorTileValue
820x96C8TestActorCollisionFlag
830x96F7ComputeActorLeftEdgeAlt
840x9722ComputeActorRightEdgeAlt
850x9729TestActorRange
860x9732MoveActorByStep
870x97BCSetActorAnimation63
880x97C0SetActorAnimation62
890x97C4SetActorAnimation61
900x97D5UpdateActorAnimation
910x97FCTestAnimationSlot
920x982AComputeActorLeftEdgeAt
930x9858ComputeActorRightEdgeAt
940x985FTestActorValue
950x98E6ComputeActorLeftEdgeAlt2
960x9911UpdateActorTileFromIndex
970x9918UpdateActorTileFromIndexAlt
980x99A3SetSoundSequenceChannel2
990x99E2LookupActorTileId
1000x99E4LookupActorTileIdAlt
1010x9A24StoreActorCoordinates
1020x9A2EStoreActorCoordinatesAlt
1030x9A3FFlipActorFacing
1040x9A4ESpawnActorPair
1050x9A6BSpawnActorPairAlt
1060x9AE8RunBytecodeInterpreter
1070x9B05DispatchThroughPointer
1080x9B25RunBytecodeProgram
1090x9CBBResetBytecodeState
1100x9D4ECopyActorCoordinates
1110x9DD6SetActorBounds
1120x9DE6LoadActorTileIndex
1130x9E6EUpdateActorFacing
1140x9E7FQueueNametableWrite
1150x9F14FlushNametableWrite
1160x9F4BUpdateActorMovement
1170x9F54MoveActorByOpcode
1180x9FDFAddToNametableValue
1190xA002SubtractFromNametableValue
1200xA01DProcessBytecodeOpcode
1210xA085ComputeBytecodeOffset
1220xA0A5ResetBytecodeAccumulator
1230xA0C6ResetBytecodeAccumulatorAlt
1240xA0F4AdvanceBytecodeProgram
1250xA0FBResetBytecodeStateAlt
1260xA12EComputeActorTileRow
1270xA15DResetBytecodePointers
1280xA17FRunActorScript
1290xA250LoadActorConfigByte
1300xA253ComputeActorConfigOffset
1310xA25FCopyConfigBytes
1320xA270LoadActorConfigRecord
1330xA298CompareConfigValue
1340xA2C8ReturnFromConfigLoad
1350xA2C9LoadActorConfigFields
1360xA316StoreActorPaletteByte
1370xA32CStoreActorControlByte
1380xA338ReadActorConfigByte
1390xA435CompareActorConfigValue
1400xA46FStoreActorConfigResult
1410xA482LoadActorConfigAlt
1420xA49FStoreActorConfigResultAlt
1430xA4AALoadActorFacingFlag
1440xA4C7LoadActorConfigBlock
1450xA4DFTestSoundChannelState
1460xA4F2SetSoundSequenceChannel2Alt
1470xA4FFFlipObjectIndex
1480xA508LookupObjectIndex
1490xA512UpdateObjectSlots
1500xA51BAdvanceObjectSlot
1510xA5DDWriteNametableBytes
1520xA660SetSoundSequenceChannel4
1530xA68EUpdateObjectList
1540xA695UpdateObjectListEntry
1550xA6F8UpdateObjectCollisions
1560xA79FCheckObjectScroll
1570xA82FClearScrollLatchAlt
1580xA834UpdateObjectSprite
1590xA884SetObjectFlags
1600xA8D1AdvanceObjectFrame
1610xA8E9TestObjectActive
1620xA949UpdateObjectAnimations
1630xA952UpdateObjectAnimation
1640xA992UpdateObjectTimer
1650xA99EDecrementObjectCounter
1660xA9ABUpdateObjectState
1670xA9D8ToggleScrollRegionFlip
1680xA9FFBuildObjectList
1690xAA56ReadControllers
1700xAA63ReadControllerShiftRegister
1710xAAB8StoreControllerButtonBits
1720xAACDEnableRendering
1730xAADCDisableRenderingAndClearNametables
1740xAAEFClearNametablePattern
1750xAB68CopyPaletteFromTable
1760xAB98LoadShadowOamBlock
1770xABA3FillShadowOamBlock
1780xABB1UploadPalette
1790xABE4ApplyPpuScrollAndControl
1800xABF7ShiftAccumulatorRight4
1810xABFCClearOamShadow
1820xAC0DSelectLevelVramWriter
1830xAC3BSetLevelVramStream
1840xAC43FillAttributeBlock
1850xAC4CWriteAttributeBlock
1860xAC62LoadAttributeStream
1870xAC78SetPpuAddressHighAnd40
1880xAC82WriteCompressedVramStream
1890xAC88AdvanceSourceByte
1900xAC96DecodeVramStreamToken
1910xACA7WriteVramRunToken
1920xACC9AdvanceDestinationWord
1930xACD7AdvanceCountWord
1940xACE5WithRenderingEnabled
1950xACF5WriteCompressedVramBlocks
1960xAD19ComputeCollisionBits
1970xAD36ComputePlayerOverlapBits
1980xAE45SetDefaultOverlapBits
1990xAE9BComputeEdgeOverlapBits
2000xAF25InitializeSoundEngine
2010xAF3BUpdateSoundFrame
2020xAF40UpdateAllSoundChannels
2030xAF43UpdateSoundChannel
2040xAF55AdvanceSoundChannelNote
2050xAF69WriteSoundChannelState
2060xAF6BRebuildApuEnableMask
2070xAF73StartSoundChannelNote
2080xAFABAdvanceSoundSequencePointer
2090xAFC5ComputeEnvelopeMask
2100xAFD9ComputeTonePeriod
2110xB000ShiftNoteTableIndex
2120xB007WriteToneRegisters
2130xB029WriteFixedToneRegisters
2140xB03AReadNoteDuration
2150xB049StoreNoteDuration
2160xB059StoreShortNoteDuration
2170xB05DBuildApuChannelMask
2180xB062WriteApuEnable
2190xB06CApplySoundCommand
2200xB083WriteApuControlRegister
2210xB08CAdvanceSoundSequenceStep
2220xB08EAdvanceSoundSequenceStepAlt
2230xB095ReturnFromSoundCommand
2240xB096ReadLoopFlag
2250xB09DHandleNoteTerminator
2260xB0A9HandleSustainCounter
2270xB0B3LoadSoundSequenceStep
2280xB0C6DecrementSustainCounter