Files
disasm/Donkey Kong (JU)/copilot/reconstructed.lbl
T
tmerritt 71ada15de0 Promote Donkey Kong (JU): Pass 3 complete, whole-ROM byte-identical
Pass 3 named the 10 data regions in prg.s, then the project was promoted
out of _wip/ so `make` now proves header + PRG + CHR against the original
ROM instead of only the PRG bank.

Data regions named:
  LevelPtrTable        $C000-$C03B  (60 B)    level header data
  ObjectPtrTable       $C03C-$C043  (8 B)     4 pointer pairs
  LevelDataPtrTable    $C044-$C79D  (1882 B)  level data pointers
  SpriteInitPtrTable   labelled at $C4B0      see residue note
  UnreachedCode_D650   $D650-$D696  (71 B)    unreached code
  UnreachedCode_E144   $E144-$E165  (34 B)    unreached code
  MusicDataTable       $F55B-$FA47  (1261 B)  music/sound data
  APUDataTable         $FAE6-$FB74  (143 B)   APU pulse/noise tables
  SfxDataTable         $FE59-$FFEF  (407 B)   sound-effect data
  VectorTable          $FFF6-$FFFF  (10 B)    padding + NMI/RESET/IRQ

Promotion (per the AGENTS.md checklist):
  - git mv "_wip/Donkey Kong (JU)" "Donkey Kong (JU)"
  - add copilot/rom.nes -> ../Donkey Kong (JU).nes symlink
  - add header.s / chr.s (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000/16 B) and CHR ($0000/8 KB)
  - Makefile switched from `cmp reconstructed_prg.bin prg.bin` to
    `cmp reconstructed.nes rom.nes`
  - no _tools path change (this Makefile never referenced _tools/)
    and no `make regen` pipeline exists for it

Doc corrections:
  - project OVERVIEW.md said Mirroring Vertical; header byte 6 = $00
    means Horizontal (the root index was right) — fixed
  - root OVERVIEW.md: row 18 now BYTE-IDENTICAL, tier paragraph and
    summary table refreshed (they had drifted around the Lunar Pool and
    Urban Champion promotions), new per-project detail entry
  - counts corrected to 19 top-level / 17 _wip in OVERVIEW.md,
    TODO.md and AGENTS.md

Residue recorded rather than guessed:
  - Pass 2 is partial: 919 Label_ definitions remain (214 semantic
    labels applied); noted in TODO.md so nobody reads the promotion as
    full semantic naming
  - SpriteInitPtrTable's label sits at $C4B0: the routine at $C807 reads
    $C4A7,x/$C4A8,x, but that table starts mid-row and a label there
    would split the canonical 16-byte audit-comment line

Verification:
  make clean && make  -> "Byte-identical ROM verified."
  verify_pass1.py     -> 19/19 top-level build, Donkey Kong (JU) OK
                         (6014 instr / 12505 B), all comments canonical

Doc-drift sweep: build tiers, mirroring, and stale status tails

Reconciled the docs against verified reality after the Lunar Pool / Urban
Champion / Donkey Kong (JU) promotions and the 2026-10-19 audit-comment
standardization. No source behaviour changed except the two build fixes below.

Build tier (whole-ROM vs PRG-only)
  - AGENTS.md: the 17 `_wip/` projects are real disassemblies at the PRG-build
    tier, not "skeletons"; header.s/chr.s/rom.nes are promotion additions;
    verify_pass1.py covers the top-level projects.
  - Root OVERVIEW.md: `_wip` prose, audit-comment narrative and summary table
    refreshed (37.5% figure, SEEDED vs OK wording, re-trace false alarm).
  - Promoted projects whose build blocks still claimed `make` emits
    `reconstructed_prg.bin` compared to `prg.bin` (Balloon Fight, Baseball,
    CIRCUS, Clu Clu Land, Excitebike, NES PowerPad, Pac-Man (USA), Tennis):
    now describe the whole-ROM `reconstructed.nes` vs `rom.nes`.
  - Lunar Pool / Urban Champion / CIRCUS also had stale `cd "_wip/..."`
    build paths and "Promotion" items; retargeted to their top-level folders.

Mirroring (header byte 6 bit 0: 0 = Horizontal, 1 = Vertical)
  - Corrected DK Jr. prose "horizontal mirroring (flag 6 = $01)" -> vertical,
    and both `_wip/Pac-Man` variant notes "Both use vertical mirroring" ->
    horizontal (both are byte-6 = $00).
  - Re-audited every project OVERVIEW: 0 rows and 0 prose claims now disagree.

Stale status tails
  - Retitled/restatused the `_wip` OVERVIEWs to their real `prg.s` (Golf,
    Ice Climber (U), Lode Runner, Millipede, Pac-Man Tengen, Pac-Man (U),
    Popeye 0/1, Raid, Raid a2, Hogan's Alley, Mario Bros); Golf's
    skeleton-era contents rows and Next Steps corrected.
  - Dropped the skeleton-era "## Next Steps (per `PROMPTS.md`)" heading and
    the "(from the skeleton)" wording across all project OVERVIEWs.
  - Rewrote Lunar Pool / Urban Champion Next Steps (both already Pass 1-3
    complete and promoted; their tails still described pending Pass 2 and
    promotion); fixed root row 13 (Wild Gunman) and row 20 (Duck Hunt).

Also lands two code fixes carried with this sweep:
  - `_wip/Hogan's Alley (JU)`: $E9F1-$E9FD and $EA13-$EA14 reclassified as
    data with canonical audit comments (the seeded build had decoded a data
    table base as code, breaking the build since 2ae09f7). `make` ->
    BYTE-IDENTICAL again; reconstructed_prg.bin/.lbl refreshed.
  - `_wip/Pyramid (U)`: `Label_D72E` -> `NMI:` (byte-identical).

Verification:
  make (Hogan's Alley, Pyramid)      -> BYTE-IDENTICAL, BYTE-IDENTICAL
  _tools/verify_pass1.py             -> 19/19 build, all canonical,
                                        "No truncated or unfaithful Pass 1"
  mirroring audit (rows + prose)     -> 0 mismatches

Donkey Kong (JU): complete Pass 2 — all 919 Label_ definitions named

The last non-zero Label_ residue in the repo is now gone. Every one of the
919 address-derived definitions in copilot/prg.s is replaced:

* 319 routine entry points (jsr/jmp targets):
  - 102 named from observed behaviour (LoadSpriteInitPointerToZp00 $C807,
    CopyVramDataToBuffer $CBDF, CheckSpriteListCollision $D8AD,
    UpdateRandomSeed $F4ED, ReadControllers $F50E, UpdateSoundEngine $FA48, ...)
  - 217 left as SubC<addr> — honest residue where the body is too
    context-dependent to name without guessing (Golf: 108, Mario Bros: 223)
  - the 77 already-named entries untouched
* 600 internal branch targets named <Routine>_Block / <Routine>_Block_n in
  address order within their owning routine (DK Jr./Balloon Fight convention).
  Ownership is control-flow containment, so a loop that physically precedes
  its own entry lands correctly (FlushPpuBuffer_Block $F1EC under $F228).
* Two proposal collisions disambiguated by indexing zero-page slot:
  UpdateObjectListZp5D/DispatchObjectStateZp5E ($DA16/$DA4C) vs
  UpdateObjectListZpAE/DispatchObjectStateZpAF ($E1E9/$E250).

jsr/jmp operands stay numeric (Wild Gunman style); only branch operands are
symbolic. Applied with _tools/pass2.py apply (919 defs + 2,622 refs rewritten,
comments re-aligned); the ROM still rebuilds byte-identically and
verify_pass1.py reports 19/19 canonical with no truncated split.

Docs synced: project OVERVIEW.md gains a Pass 2 Details section, root
OVERVIEW.md rows + conventions, TODO.md section 4 closed. dk_full_map.tsv now
records the complete applied map (its zp rows remain unapplied proposals).

_wip status correction: five false "Pass 2 complete" claims + map audit

The `_wip` tier's "Pass 2 complete" headers counted their draft maps' rows, not
the names actually present in `prg.s`, and described the count of *neutral*
`ZpXX` slots in `locals.inc` as "zero-page semantic aliases". Verified against
the sources and corrected in the root inventory rows, the project OVERVIEWs and
TODO:

  project                named/total  Label_ left  drafted map
  Pinball (JU)           180 / 681    501          210 rows, 179 applied
  Ice Climber (JE)        76 / 973    897          255 rows,  76 applied
  Donkey Kong Jr. Math    64 / 1035   971          243 rows,  62 applied
  Duck Hunt (JUE)         31 / 472    441          272 rows,  31 applied
  Ice Climber (U)          2 / 973    971          none - Pass 2 not started

No `_wip` project is Pass 2 complete. Ice Climber (U) was the worst case: the
2026-10-19 sweep itself restated it "Pass 2 complete" while describing its 971
`Label_` definitions in the same paragraph - a copy-paste from (JE); (U) has no
map file at all.

Drafted maps audited row by row against the committed split: they are not
applicable. 100/243 (DK Jr. Math), 96/255 (Ice Climber (JE)) and 17/210
(Pinball) rows point at addresses that are not instruction boundaries - they
were built against an older code/data split - while most of the rest are
unlabelled boundaries that no operand references, or (Duck Hunt) competing
candidate names for one label (`Label_C2BF` alone carries 205). Rows that are
both insertable and corroborated by control flow: 0 in every map. Recorded as
stale and kept for provenance; Pass 2 here needs a fresh map derived from the
committed split.

Also corrected while verifying:
- Mario Bros entry counts (docs said 252 / 90 + 165 / 477 sites / 156 neutral
  slots; the file holds 262 distinct `jsr`/`jmp` targets = 39 semantic + 223
  `SubC<addr>`, 478 sites, 151 slots).
- root `_wip` prose line/label ranges (4,482-17,180 lines, 192-971 `Label_`,
  11,126 total) and the Ice Climber code figure (74.6% / 6,112 instr, not
  74.7% / 6,113).
- TODO §4 re-scoped to the promoted tier, with the `_wip` residue table added.

Verification: `make` across all 17 `_wip` projects -> BYTE-IDENTICAL (17/17);
`_tools/verify_pass1.py` -> 19/19 build, all canonical, "No truncated or
unfaithful Pass 1 found". No source bytes changed.

Balloon Fight (JU): apply locals.inc/symbols.inc names to prg.s (Pass 3)

Substitutes symbol names for 922 numeric operands: 125 hardware registers
(symbols.inc) and 797 of 813 zero-page/RAM operands (locals.inc). The 15
multi-alias addresses were resolved per routine; 16 operands stay numeric
because $13 is used there as a plain high-byte scratch beside Temp12 and
none of its three aliases fits.

- _tools/apply_symbols.py: the substitution tool (dry run by default;
  --sites supplies per-routine choices for multi-alias addresses, --report
  lists the residue). Only the operand token is rewritten, so the
  `; CPU:$.... PRG:....  XX XX` audit comments survive byte for byte.
- prg.s: operand tokens only. make prints "Byte-identical ROM verified."
- OVERVIEW.md (project): instruction quotes now match prg.s, new
  alias-reuse table, and section 10 rewritten from the stale "497 Label_"
  prose to the real naming state and the 16-site residue.
- OVERVIEW.md (root), TODO.md, AGENTS.md: status, counts, tool list.

verify_pass1.py: 19/19 OK, all audit comments canonical.

Bomberman (U): apply locals.inc/symbols.inc names to prg.s (Pass 3)

Substitutes 362 zero-page operands in copilot/prg.s with the names already
declared in copilot/locals.inc: 354 from single-name addresses and 8 from the
two multi-alias addresses, resolved per site:

  $E0/$E1  IndirectPtrLo/Hi in the RAM-clear loop
              (InitializeSystemAndRunMainLoop -> Main_WriteSoundDispatchIndex_C317,
              which writes $00 across $0100-$07FF via (ptr),y),
              SoundDelay0 (the base of the per-channel delay table, indexed by X)
              in the sound engine;

No symbols.inc substitution was needed: copilot/prg.s contains no numeric
hardware operands ($2000-$4017) at all. All 362 operands were already written
with two hex digits, so no ca65 `a:` prefix was required.

make -> Byte-identical ROM verified. Operand token only; mnemonics, spacing and
the trailing `; CPU:$.... PRG:....  XX XX` audit comments are untouched.

Remaining numeric operands (758) address bytes that no .inc file names:
505 zero-page (133 addresses), 171 RAM $0100-$07FF (46 addresses) and 82
table reads in $8000+ (54 addresses).

Bomberman (U): substitute 24 in-file table labels at ROM operand sites

Uses the new `--labels` option of `apply_symbols.py` with the
ld65 `-Ln` output (`reconstructed.lbl`). Only labels that prg.s
actually defines and that live in the PRG (+) are considered,
so CHR/header segment labels cannot leak in.

24 numeric operands (`lda ,x`, `adc ,y`, etc.) now read
`lda SystemPaletteData,x`, `adc GameplayObjectClassTable,y`, etc.
All 24 point at exact label addresses; the remaining 58 ROM-space
numeric operands point at interior bytes or unlabelled tables and
stay numeric.

make -> Byte-identical ROM verified.

Bomberman (U): update docs for Pass 3 symbol application

- Project OVERVIEW.md: corrected source file from main.s to prg.s/header.s/chr.s;
  output name from reconstructed_bomberman.nes to reconstructed.nes;
  rewritten §10 Zero-Page/RAM Symbols table to match locals.inc (with aliases
  and unnamed residue documented);
  fixed §4 step 1/4 to use IndirectPtrLo/Hi and SoundDelay0 names;
  fixed §11 InesHeader location (now header.s);
  added §2 Pass 3 summary table;
  added §13 notes on legacy main.s and Main_WriteSoundDispatchIndex_C317 misnomer.

- Root OVERVIEW.md §3: updated source line count (7,553), file list, and added
  Pass 3 summary.

Both builds verified byte-identical.

Pass 3 symbol application to all 19 top-level projects (2026-10-19)

Ran _tools/apply_symbols.py --write on all 19 promoted projects to substitute
symbolic names from symbols.inc (hardware registers) and locals.inc (zero-page
RAM aliases, forward references) into prg.s operands. The tool preserves the
canonical audit comments (; CPU:$XXXX PRG:XXXX AA BB) and preserves byte
identity — all projects still rebuild byte-identical to their original ROMs.

Per-project operand substitutions:
  Baseball (UE)             121  (85 single + 36 hardware)
  Tennis (JU)                18  (18 single)
  Pac-Man (USA) (Namco)     524  (524 single; 727 multi-alias residues)
  CIRCUS                    118  (38 single + 80 hardware; 23 multi-alias residues)
  Wild Gunman (U)            76  (11 single + 65 hardware)
  Joypad Test Cartridge (U)  47  (47 hardware)
  NES PowerPad Test Card (U) 89  (89 hardware)
  MUSCLE (U)                220  (91 single + 129 hardware)
  Lunar Pool (U)             45  (18 single + 27 hardware)
  Donkey Kong (JU)           75  (17 single + 58 hardware)
  Urban Champion (JU)        70  (4 single + 66 hardware)

Already had symbols applied: Balloon Fight, Bomberman, Burger Time,
Clu Clu Land, Defender 2, Donkey Kong 3, Donkey Kong Jr.

Skipped: Excitebike (JU) — inline prg.s definitions conflict with locals.inc
values and source operands don't match ROM byte encodings; automatic
substitution breaks byte identity.

Documentation updated:
  OVERVIEW.md — added Pass 3 symbol notes to all 19 project entries,
  added Urban Champion as section #36
  TODO.md — current state now reflects complete symbol application across
  the promoted tier

Verification: python3 _tools/verify_pass1.py reports all 19 projects OK/SEEDED,
all canonical comments, no truncated or unfaithful Pass 1.
2026-10-19 14:55:08 -04:00

1026 lines
29 KiB
Plaintext

al 00FFF6 .VectorTable
al 00FFF0 .IrqHandler
al 00FE59 .SfxDataTable
al 00FE55 .InitSoundEffect_Block_12
al 00FE4F .InitSoundEffect_Block_11
al 00FE58 .InitSoundEffect_Block_13
al 00FE2E .InitSoundEffect_Block_9
al 00FE1D .InitSoundEffect_Block_8
al 00FE03 .SilenceTriangleAndNoise_Block
al 00FE00 .SilenceTriangleAndNoise
al 00FE09 .InitSoundEffect_Block_7
al 00FE31 .InitSoundEffect_Block_10
al 00FDCF .InitSoundEffect_Block_4
al 00FDC1 .InitSoundEffect_Block_3
al 00FDB8 .InitSoundEffect_Block_2
al 00FDE9 .InitSoundEffect_Block_6
al 00FDD8 .InitSoundEffect_Block_5
al 00FDA4 .InitSoundEffect_Block_1
al 00FD67 .InitSoundEffect
al 00FD9B .InitSoundEffect_Block
al 00FD62 .SubCFC90_Block_17
al 00FD3A .SubCFC90_Block_15
al 00FD1D .SubCFC90_Block_13
al 00FD35 .SubCFC90_Block_14
al 00FD18 .SubCFC90_Block_12
al 00FD58 .SubCFC90_Block_16
al 00FCD1 .SubCFC90_Block_6
al 00FD00 .SubCFC90_Block_10
al 00FCC6 .SubCFC90_Block_5
al 00FCDD .SubCFC90_Block_8
al 00FCDB .SubCFC90_Block_7
al 00FCF0 .SubCFC90_Block_9
al 00FCBE .SubCFC90_Block_4
al 00FCBA .SubCFC90_Block_3
al 00FD0B .SubCFC90_Block_11
al 00FC90 .SubCFC90
al 00FC9D .SubCFC90_Block_2
al 00FC7F .SubCFC90_Block_1
al 00FC73 .SubCFC90_Block
al 00FC41 .ProcessSoundCommands_Block_15
al 00FC30 .ProcessSoundCommands_Block_14
al 00FC16 .ProcessSoundCommands_Block_11
al 00FC51 .ProcessSoundCommands_Block_18
al 00FC62 .ProcessSoundCommands_Block_19
al 00FC19 .ProcessSoundCommands_Block_12
al 00FC28 .ProcessSoundCommands_Block_13
al 00FC4B .ProcessSoundCommands_Block_17
al 00FBF2 .ProcessSoundCommands
al 00FC44 .ProcessSoundCommands_Block_16
al 00FBD9 .ProcessSoundCommands_Block_10
al 00FBD4 .ProcessSoundCommands_Block_9
al 00FBC2 .ProcessSoundCommands_Block_8
al 00FBB7 .ProcessSoundCommands_Block_7
al 00FBAF .ProcessSoundCommands_Block_5
al 00FBB2 .ProcessSoundCommands_Block_6
al 00FBA7 .ProcessSoundCommands_Block_4
al 00FBA0 .ProcessSoundCommands_Block_3
al 00FB89 .ProcessSoundCommands_Block_2
al 00FB7E .ProcessSoundCommands_Block_1
al 00FB75 .ProcessSoundCommands_Block
al 00FAE6 .APUDataTable
al 00FAE0 .SilencePulse1
al 00FAD7 .SubCFAD7
al 00FAD5 .SubCFAD5
al 00FACA .LookupNotePeriod
al 00FAC4 .DecodeNotePeriod
al 00FABA .WriteTriangleNote
al 00FAB3 .WritePulse2Note
al 00FAB2 .WriteTriangleNote_Block_1
al 00FAA1 .WriteTriangleNote_Block
al 00FA9F .WriteNoteFrequency
al 00FA95 .WritePulse1Control
al 00FA93 .WritePulse1ControlDefault
al 00FA8F .SubCFA8F
al 00FA8E .FindHighestSetBit_Block_1
al 00FA88 .FindHighestSetBit_Block
al 00FA86 .FindHighestSetBit
al 00FA82 .UpdateSoundEngine_Block_3
al 00FA7F .UpdateSoundEngine_Block_2
al 00FA6B .UpdateSoundEngine_Block_1
al 00FA64 .UpdateSoundEngine_Block
al 00FA48 .UpdateSoundEngine
al 00F55B .MusicDataTable
al 00F55A .ReadControllerShift_Block_2
al 00F549 .ReadControllerShift_Block_1
al 00F524 .ReadControllerShift_Block
al 00F522 .ReadControllerShift
al 00F50E .ReadControllers
al 00F4FD .UpdateRandomSeed_Block
al 00F4ED .UpdateRandomSeed
al 00F4C2 .QueuePpuByteWrite
al 00F4BE .UpdateTimers_Block_1
al 00F4B8 .UpdateTimers_Block
al 00F4AC .UpdateTimers
al 00F493 .CompareBcdValues_Block_4
al 00F49F .CompareBcdValues_Block_5
al 00F47E .CompareBcdValues_Block_3
al 00F4A9 .CompareBcdValues_Block_8
al 00F4A4 .CompareBcdValues_Block_7
al 00F453 .CompareBcdValues_Block_1
al 00F479 .CompareBcdValues_Block_2
al 00F4A0 .CompareBcdValues_Block_6
al 00F44A .CompareBcdValues_Block
al 00F435 .CompareBcdValues
al 00F426 .SplitBcdByte
al 00F423 .SubtractBcdNibble_Block_1
al 00F417 .SubtractBcdNibble_Block
al 00F404 .SubtractBcdNibble
al 00F3FB .AddBcdNibble_Block_1
al 00F3FF .AddBcdNibble_Block_2
al 00F3EE .AddBcdNibble_Block
al 00F3E3 .AddBcdNibble
al 00F3E2 .ApplyBcdAddSub_Block_5
al 00F3C6 .ApplyBcdAddSub_Block_4
al 00F3C0 .ApplyBcdAddSub_Block_3
al 00F36B .ApplyBcdAddSub_Block
al 00F392 .ApplyBcdAddSub_Block_2
al 00F38E .ApplyBcdAddSub_Block_1
al 00F35E .ApplyBcdAddSub
al 00F355 .AddBcdValue_Block_1
al 00F342 .AddBcdValue
al 00F344 .AddBcdValue_Block
al 00F33E .SubtractBcdValue
al 00F33D .CheckPpuBufferOverflow_Block
al 00F32F .CheckPpuBufferOverflow
al 00F32D .AdvancePpuBufferWrite
al 00F303 .DrawVramBlock_Block_1
al 00F2EA .DrawVramBlock_Block
al 00F2D7 .DrawVramBlock
al 00F2D6 .DrawLevelBlock_Block_7
al 00F2BE .DrawLevelBlock_Block_5
al 00F2B4 .DrawLevelBlock_Block_4
al 00F2B0 .DrawLevelBlock_Block_3
al 00F2C4 .DrawLevelBlock_Block_6
al 00F29A .DrawLevelBlock_Block_2
al 00F296 .DrawLevelBlock_Block_1
al 00F28E .DrawLevelBlock_Block
al 00F24E .DrawLevelBlock
al 00F248 .DrawLevelBlocks_Block_1
al 00F23F .DrawLevelBlocks_Block
al 00F23C .DrawLevelBlocks
al 00F228 .FlushPpuBuffer
al 00F214 .FlushPpuBuffer_Block_4
al 00F211 .FlushPpuBuffer_Block_3
al 00F20E .FlushPpuBuffer_Block_2
al 00F202 .FlushPpuBuffer_Block_1
al 00F1EC .FlushPpuBuffer_Block
al 00F1E5 .ClearNametable_Block_1
al 00F1CE .ClearNametable_Block
al 00F1B4 .ClearNametable
al 00F19F .HideSpriteGrid_Block_1
al 00F197 .HideSpriteGrid_Block
al 00F195 .HideSpriteGrid
al 00F16F .DrawSpriteMaskedGrid_Block_1
al 00F16A .DrawSpriteMaskedGrid_Block
al 00F161 .DrawSpriteMaskedGrid
al 00F141 .DrawSpriteGrid_Block_1
al 00F13B .DrawSpriteGrid_Block
al 00F139 .DrawSpriteGrid
al 00F124 .DrawSpriteTileRun_Block
al 00F11E .DrawSpriteTileRun
al 00F10E .HideSpriteRange_Block
al 00F10A .HideSpriteRange
al 00F0F2 .DrawSpritePatternReturn
al 00F0E9 .SubCF0E9
al 00F0E6 .DrawSpritePattern_Block_2
al 00F0DC .DrawSpritePattern_Block_1
al 00F0CB .DrawSpritePattern_Block
al 00F0EF .DrawSpritePattern_Block_3
al 00F094 .DrawSpritePatternMode15
al 00F092 .SetSpritePatternParams
al 00F08E .DrawSpritePatternMode4
al 00F08C .SetSpriteDrawOffsetMode4
al 00F088 .DrawSpritePatternMode1
al 00F086 .SetSpriteDrawOffsetMode1
al 00F096 .DrawSpritePattern
al 00F082 .DrawSpritePatternMode0
al 00F080 .SetSpriteDrawOffset
al 00F078 .DrawSpriteByMode
al 00F075 .SubCF075
al 00F070 .SubCF070
al 00F069 .ReadPtrBytePlusZp01
al 00F063 .ReadPtrBytePlusZp00
al 00F062 .SubCF062
al 00F059 .SubCF059
al 00F057 .SubCEFF3_Block_2
al 00F018 .SubCEFF3_Block_1
al 00EFF3 .SubCEFF3
al 00EFEF .CheckObjectOverlap
al 00EFF5 .SubCEFF3_Block
al 00EFEB .SubCEFEB
al 00EFE8 .LoadObjectRect
al 00EFE2 .ComputeOamOffset
al 00EFDD .ComputeOamOffsetFromZpAE
al 00EFD7 .SubCEFD7
al 00EFD5 .ComputeOamOffsetFromZp5D
al 00EFAD .SubCEFAD
al 00EFA2 .SubCEFA2
al 00EFA0 .SubCEF72_Block_2
al 00EF89 .SubCEF89
al 00EF87 .SubCEF72_Block
al 00EF94 .SubCEF72_Block_1
al 00EF72 .SubCEF72
al 00EF71 .SubCEF51_Block
al 00EF51 .SubCEF51
al 00EF38 .SubCEF38
al 00EF2E .SubCEEF7_Block
al 00EF2F .SubCEEF7_Block_1
al 00EEF7 .SubCEEF7
al 00EEE6 .SubCEE8D_Block_2
al 00EED9 .SubCEE8D_Block_1
al 00EEE7 .SubCEE8D_Block_3
al 00EE8D .SubCEE8D
al 00EEF0 .SubCEE8D_Block_4
al 00EED8 .SubCEE8D_Block
al 00EE80 .CheckPlayerCollision_Block
al 00EE79 .CheckPlayerCollision
al 00EE6C .SetSpriteAttributes
al 00EE5C .SubCEE29_Block_2
al 00EE51 .SubCEE29_Block_1
al 00EE38 .SubCEE29_Block
al 00EE29 .SubCEE29
al 00EE26 .SubCEE0C_Block_1
al 00EE1A .SubCEE0C_Block
al 00EE0C .SubCEE0C
al 00EE0B .SubCEDEB_Block_1
al 00EE07 .SubCEDEB_Block
al 00EDEB .SubCEDEB
al 00EDD2 .SubCEDC5_Block
al 00EDC5 .SubCEDC5
al 00EDC4 .SubCED93_Block_2
al 00EDB5 .SubCED93_Block_1
al 00EDAD .SubCED93_Block
al 00ED93 .SubCED93
al 00ED8A .SubCED8A
al 00ED87 .SubCED87
al 00ED74 .SubCED38_Block_1
al 00ED38 .SubCED38
al 00ED85 .SubCED38_Block_2
al 00ED57 .SubCED38_Block
al 00ED16 .SubCED16
al 00ED34 .SubCED07_Block
al 00ED07 .SubCED07
al 00ECFD .SubCECFD
al 00ECF7 .SubCECD3_Block_1
al 00ECE8 .SubCECD3_Block
al 00ECD3 .SubCECD3
al 00ECD1 .SubCECBF_Block_1
al 00ECC6 .SubCECBF_Block
al 00ECBF .SubCECBF
al 00ECBE .SubCEC97_Block_1
al 00ECAF .SubCEC97_Block
al 00EC80 .UpdateMusic2
al 00EC76 .SubCEC48_Block_1
al 00EC97 .SubCEC97
al 00ECA7 .SubCEC48_Block_2
al 00EC5B .SubCEC48_Block
al 00EC48 .SubCEC48
al 00EC44 .SubCEC44
al 00EC3E .SubCEC29_Block_1
al 00EC3B .SubCEC29_Block
al 00EC29 .SubCEC29
al 00EC12 .SubCEC12
al 00EC03 .SubCEBDA_Block_1
al 00EC0A .SubCEBDA_Block_2
al 00EC16 .SubCEBDA_Block_3
al 00EBED .SubCEBDA_Block
al 00EBDA .SubCEBDA
al 00EBC4 .SubCEBB6_Block_1
al 00EBBB .SubCEBB6_Block
al 00EBB6 .SubCEBB6
al 00EBA8 .SubCEBA8
al 00EBA6 .SubCEBA6
al 00EBA1 .SubCEBA1
al 00EB9C .SubCEB9C
al 00EB97 .SubCEB97
al 00EB92 .SubCEB92
al 00EB8E .SubCEB8E
al 00EB89 .SubCEB89
al 00EB85 .SubCEB85
al 00EB6F .SubCEB06_Block_3
al 00EB7B .SubCEB06_Block_5
al 00EB74 .SubCEB06_Block_4
al 00EB4E .SubCEB2B_Block_4
al 00EB47 .SubCEB2B_Block_3
al 00EB40 .SubCEB2B_Block_2
al 00EB39 .SubCEB2B_Block_1
al 00EB32 .SubCEB2B_Block
al 00EB2B .SubCEB2B
al 00EB4F .SubCEB06_Block_1
al 00EB54 .SubCEB06_Block_2
al 00EB0C .SubCEB06_Block
al 00EB06 .SubCEB06
al 00EB05 .SubCEAF7_Block
al 00EAF7 .SubCEAF7
al 00EAEC .LoadSpritePosition
al 00EAE1 .LoadSprite0Position
al 00EADB .SetSpriteSizeAndDraw
al 00EAD6 .SetSpriteSize
al 00EAD4 .SetSpriteTile
al 00EAD1 .UpdateSoundChannel4
al 00EACD .ClearSpriteDestOffset
al 00EACC .ReadPatternBitAlt_Return_Block
al 00EAC8 .ReadPatternBitAlt_Return
al 00EABF .ReadPatternBitAlt_Block
al 00EAB2 .ReadPatternBitAlt
al 00EAAE .AdvancePatternBitAlt_Block
al 00EAA1 .AdvancePatternBitAlt
al 00EAA0 .SubCEA8A_Block
al 00EA8A .SubCEA8A
al 00EA88 .SubCEA5F_Block_2
al 00EA72 .SubCEA5F_Block_1
al 00EA64 .SubCEA5F_Block
al 00EA5F .SubCEA5F
al 00EA5E .SubCEA34_Block
al 00EA34 .SubCEA34
al 00EA2F .UpdateSoundChannels
al 00EA2A .SubCEA01_Block_1
al 00EA11 .SubCEA01_Block
al 00EA01 .SubCEA01
al 00EA00 .SubCE9F3_Block
al 00E9EA .SubCE9EA
al 00E9DA .SubCE9DA
al 00E9F3 .SubCE9F3
al 00E9BE .SubCE986_Block_1
al 00E9B4 .SubCE986_Block
al 00E9F0 .SubCE986_Block_2
al 00E986 .SubCE986
al 00E981 .SubCE981
al 00E97A .SetSpritePairY
al 00E971 .SubCE971
al 00E968 .SubCE968
al 00E95B .SubCE945_Block
al 00E945 .SubCE945
al 00E92E .SubCE918_Block
al 00E967 .SubCE945_Block_1
al 00E918 .SubCE918
al 00E93B .SubCE84F_Block_6
al 00E8F8 .SubCE8EA_Block
al 00E8EA .SubCE8EA
al 00E8E3 .SubCE84F_Block_4
al 00E8FC .SubCE8EA_Block_1
al 00E8C4 .SubCE84F_Block_3
al 00E90E .SubCE84F_Block_5
al 00E901 .SubCE8EA_Block_2
al 00E89B .SubCE890_Block
al 00E890 .SubCE890
al 00E889 .SubCE84F_Block_1
al 00E8A4 .SubCE890_Block_1
al 00E86A .SubCE84F_Block
al 00E8A9 .SubCE84F_Block_2
al 00E84F .SubCE84F
al 00E84B .SubCE834_Block
al 00E834 .SubCE834
al 00E833 .ReadPatternBit_Return_Block
al 00E82F .ReadPatternBit_Return
al 00E826 .ReadPatternBit_Block
al 00E819 .ReadPatternBit
al 00E815 .AdvancePatternBit_Block
al 00E806 .AdvancePatternBit
al 00E7F9 .SubCE7E2_Block_1
al 00E7E2 .SubCE7E2
al 00E7F2 .SubCE7E2_Block
al 00E7AE .SubCE7A3_Block
al 00E7A3 .SubCE7A3
al 00E7A0 .SubCE770_Block_2
al 00E79D .SubCE770_Block_1
al 00E790 .SubCE770_Block
al 00E770 .SubCE770
al 00E769 .SubCE747_Block_2
al 00E758 .SubCE758
al 00E755 .SubCE747_Block
al 00E75C .SubCE747_Block_1
al 00E747 .SubCE747
al 00E73C .SubCE73C
al 00E72D .SubCE72D
al 00E72E .SubCE702_Block_2
al 00E721 .SubCE702_Block_1
al 00E735 .SubCE702_Block_3
al 00E719 .SubCE702_Block
al 00E702 .SubCE702
al 00E6FB .SubCE6DE_Block_2
al 00E6F3 .SubCE6DE_Block_1
al 00E6DE .SubCE6DE
al 00E6DB .SubCE6C6_Block
al 00E6E3 .SubCE6DE_Block
al 00E6C6 .SubCE6C6
al 00E6C3 .SubCE6A5_Block_1
al 00E6BC .SubCE6A5_Block
al 00E6A5 .SubCE6A5
al 00E69E .SubCE69E
al 00E697 .SubCE697
al 00E68A .SubCE66D_Block_1
al 00E67A .SubCE66D_Block
al 00E66D .SubCE66D
al 00E65D .SubCE626_Block_3
al 00E64D .SubCE626_Block_2
al 00E640 .SubCE626_Block_1
al 00E62F .SubCE626_Block
al 00E626 .SubCE626
al 00E623 .SubCE611_Block_1
al 00E620 .SubCE611_Block
al 00E611 .SubCE611
al 00E60C .SubCE5FA_Block
al 00E609 .UpdateMusicEngine
al 00E5FA .SubCE5FA
al 00E60F .SubCE5E8_Block
al 00E5E8 .SubCE5E8
al 00E5DB .SubCE5DB
al 00E5D9 .SubCE59F_Block_2
al 00E5E5 .SubCE5DB_Block
al 00E5BE .SubCE59F_Block_1
al 00E5B4 .SubCE59F_Block
al 00E59F .SubCE59F
al 00E594 .SubCE594
al 00E592 .SubCE592
al 00E572 .SubCE572
al 00E570 .SubCE538_Block_4
al 00E564 .SubCE538_Block_3
al 00E553 .SubCE538_Block_2
al 00E545 .SubCE538_Block
al 00E548 .SubCE538_Block_1
al 00E538 .SubCE538
al 00E532 .SubCE532
al 00E530 .SubCE50C_Block_2
al 00E522 .SubCE50C_Block
al 00E527 .SubCE50C_Block_1
al 00E50C .SubCE50C
al 00E4F9 .SubCE4D6_Block
al 00E4D6 .SubCE4D6
al 00E4D3 .SubCE47A_Block_5
al 00E4C0 .SubCE47A_Block_4
al 00E4A8 .SubCE47A_Block_2
al 00E49B .SubCE47A_Block_1
al 00E48E .SubCE47A_Block
al 00E4B5 .SubCE47A_Block_3
al 00E47A .SubCE47A
al 00E466 .SubCE44B_Block_1
al 00E46D .SubCE46D
al 00E451 .SubCE44B_Block
al 00E44B .SubCE44B
al 00E429 .SubCE41B_Block
al 00E436 .SubCE41B_Block_1
al 00E41B .SubCE41B
al 00E413 .SubCE413
al 00E411 .SubCE3ED_Block_1
al 00E403 .CheckGameState_3
al 00E408 .SubCE3ED_Block
al 00E3E6 .SubCE3C0_Block_2
al 00E3DD .SubCE3C0_Block_1
al 00E3ED .SubCE3ED
al 00E3CE .SubCE3C0_Block
al 00E3C0 .SubCE3C0
al 00E3BA .SubCE3AF_Block
al 00E3AF .SubCE3AF
al 00E3AA .SubCE39B_Block
al 00E39B .SubCE39B
al 00E396 .SubCE387_Block
al 00E387 .SubCE387
al 00E385 .SubCE368_Block_1
al 00E374 .SubCE368_Block
al 00E368 .SubCE368
al 00E365 .SubCE365
al 00E363 .SubCE34B_Block
al 00E34B .SubCE34B
al 00E349 .SubCE325_Block_2
al 00E33B .SubCE325_Block
al 00E340 .SubCE325_Block_1
al 00E325 .SubCE325
al 00E323 .SubCE2F9_Block_2
al 00E31A .SubCE2F9_Block_1
al 00E305 .SubCE2F9_Block
al 00E2F9 .SubCE2F9
al 00E2F6 .SubCE2F6
al 00E2F4 .SubCE2DD_Block_1
al 00E2EB .SubCE2DD_Block
al 00E2D9 .SubCE2B6_Block
al 00E2DD .SubCE2DD
al 00E2B6 .SubCE2B6
al 00E2B3 .DispatchObjectState_Loop_Block_4
al 00E29C .SubCE29C
al 00E28C .InitSound_3_Block
al 00E28A .InitSound_3
al 00E280 .SubCE280
al 00E278 .UpdateBallTrajectory
al 00E2A1 .DispatchObjectState_Loop_Block_3
al 00E29A .DispatchObjectState_Loop_Block_2
al 00E295 .DispatchObjectState_Loop_Block_1
al 00E28F .DispatchObjectState_Loop_Block
al 00E292 .SubCE292
al 00E254 .DispatchObjectState_Loop
al 00E250 .DispatchObjectStateZpAF
al 00E24F .SubCE225_Block_2
al 00E237 .SubCE225_Block_1
al 00E21F .SubCE21F
al 00E228 .SubCE225_Block
al 00E213 .UpdateObjectListZpAE_Block_1
al 00E200 .UpdateObjectListZpAE_Block
al 00E225 .SubCE225
al 00E1E9 .UpdateObjectListZpAE
al 00E1E5 .InitObjectListZpAE
al 00E1E0 .SubCE1E0
al 00E1D7 .SubCE1D7
al 00E1D5 .SubCE19A_Block_2
al 00E1E4 .SubCE1E0_Block
al 00E1BF .SubCE19A_Block_1
al 00E19F .SubCE19A_Block
al 00E19A .SubCE19A
al 00E199 .CountObjectTypes_Loop_Block_2
al 00E187 .CountObjectTypes_Loop_Block_1
al 00E17F .CountObjectTypes_Loop_Block
al 00E172 .CountObjectTypes_Loop
al 00E16A .CountObjectTypes_Block
al 00E166 .CountObjectTypes
al 00E144 .UnreachedCode_E144
al 00E141 .SubCE141
al 00E13E .SubCE130_Block
al 00E130 .SubCE130
al 00E12B .SearchTableForByte_Return
al 00E124 .SearchTableForByte_Loop_Block
al 00E129 .SearchTableForByte_Loop_Block_1
al 00E116 .SearchTableForByte_Loop
al 00E112 .SearchTableForByte
al 00E10F .SubCE10F
al 00E107 .SubCE0F1_Block
al 00E0F1 .SubCE0F1
al 00E0EC .SubCE0EC
al 00E109 .SubCE0F1_Block_1
al 00E0E9 .SubCE0AE_Block_3
al 00E0DD .SubCE0AE_Block_2
al 00E0D1 .SubCE0AE_Block_1
al 00E0CB .SubCE0AE_Block
al 00E0AE .SubCE0AE
al 00E0AB .SubCE0A1_Block
al 00E0A1 .SubCE0A1
al 00E09F .SubCE090_Block
al 00E090 .SubCE090
al 00E07B .SubCE07B
al 00E08D .SubCE07B_Block_1
al 00E08A .SubCE07B_Block
al 00E06A .SubCE06A
al 00E079 .SubCE05A_Block
al 00E05A .SubCE05A
al 00E057 .SubCE048_Block
al 00E048 .SubCE048
al 00E045 .SubCE02F_Block_1
al 00E041 .SubCE02F_Block
al 00E02F .SubCE02F
al 00E016 .FindYRowIndex
al 00E015 .SubCE011_Block
al 00E011 .SubCE011
al 00E008 .SubCDFFB_Block
al 00DFFB .SubCDFFB
al 00DFF7 .SubCDFE8_Block
al 00DFE8 .SubCDFE8
al 00DFE4 .CheckPeriodicEventForObject
al 00DFE3 .SubCDFC3_Block
al 00DFC3 .SubCDFC3
al 00DFB8 .SubCDFAD_Block
al 00DFAD .SubCDFAD
al 00DF89 .SubCDF72_Block_2
al 00DF7D .SubCDF72_Block_1
al 00DF7B .SubCDF72_Block
al 00DF72 .SubCDF72
al 00DF8F .SubCDF72_Block_3
al 00DF6C .SubCDF40_Block_5
al 00DF60 .SubCDF40_Block_4
al 00DF5E .SubCDF40_Block_3
al 00DF55 .SubCDF40_Block_2
al 00DF4C .SubCDF40_Block_1
al 00DF45 .SubCDF40_Block
al 00DF40 .SubCDF40
al 00DF35 .SubCDF27_Block
al 00DF27 .SubCDF27
al 00DF25 .HandleObjectState40_Block_1
al 00DF0F .HandleObjectState40_Block
al 00DF07 .HandleObjectState40
al 00DEDC .SubCDEA5_Block
al 00DEFB .SubCDEFB
al 00DEED .SubCDEA5_Block_2
al 00DEF2 .SubCDEA5_Block_3
al 00DEE8 .SubCDEA5_Block_1
al 00DEA5 .SubCDEA5
al 00DE9F .SubCDE86_Block_1
al 00DE90 .SubCDE86_Block
al 00DEA4 .SubCDEA4
al 00DE86 .SubCDE86
al 00DE82 .SubCDE82
al 00DE73 .SubCDE73
al 00DE6A .SubCDE6A
al 00DE68 .SubCDE56_Block
al 00DE50 .SubCDE27_Block_1
al 00DE56 .SubCDE56
al 00DE36 .SubCDE27_Block
al 00DE27 .SubCDE27
al 00DE1A .SubCDE1A
al 00DE85 .SubCDE82_Block
al 00DE0D .SubCDE0D
al 00DE0B .SubCDDB2_Block_3
al 00DE10 .SubCDE0D_Block
al 00DDF5 .SubCDDB2_Block_2
al 00DE13 .SubCDDB2_Block_4
al 00DDC9 .SubCDDB2_Block
al 00DDB2 .SubCDDB2
al 00DDB0 .HandleObjectStateC0_Block_2
al 00DDAB .HandleObjectStateC0_Block_1
al 00DDD7 .SubCDDB2_Block_1
al 00DD98 .HandleObjectStateC0_Block
al 00DD8B .HandleObjectStateC0
al 00DD7F .SubCDD7F
al 00DD6A .UpdateSpritePosition68_Block_3
al 00DD73 .UpdateSpritePosition68_Block_4
al 00DD59 .UpdateSpritePosition68_Block_1
al 00DD60 .UpdateSpritePosition68_Block_2
al 00DD3A .UpdateSpritePosition68_Block
al 00DD32 .UpdateSpritePosition68
al 00DD06 .SubCDD06
al 00DD25 .SubCDD06_Block_1
al 00DD13 .SubCDD06_Block
al 00DCF3 .SubCDCF3
al 00DD00 .HandleObjectState10_Block_1
al 00DCD8 .HandleObjectState10_Block
al 00DCD0 .HandleObjectState10
al 00DCC9 .SubCDCC9
al 00DCBC .SubCDC90_Block
al 00DCCF .SubCDCC9_Block
al 00DC8E .HandleObjectState08_Block_1
al 00DC90 .SubCDC90
al 00DC71 .HandleObjectState08_Block
al 00DC69 .HandleObjectState08
al 00DC51 .SubCDC51
al 00DC4F .HandleObjectState02_Block
al 00DC68 .SubCDC51_Block
al 00DC30 .HandleObjectState02
al 00DC2D .SubCDC2D
al 00DC2B .UpdateObjectAnimationFrame_Block_3
al 00DC16 .UpdateObjectAnimationFrame_Block_1
al 00DC1B .UpdateObjectAnimationFrame_Block_2
al 00DBFB .UpdateObjectAnimationFrame_Block
al 00DBEE .UpdateObjectAnimationFrame
al 00DBE7 .SubCDBE7
al 00DBCD .UpdateSpritePosition57_Block
al 00DBED .SubCDBE7_Block
al 00DBB6 .UpdateSpritePosition57
al 00DBA3 .SubCDB50_Block
al 00DBAC .SubCDB50_Block_1
al 00DB50 .SubCDB50
al 00DB4E .HandleObjectState01_Block_1
al 00DB34 .HandleObjectState01_Block
al 00DB2C .HandleObjectState01
al 00DB2B .SubCDB2B
al 00DB21 .HandleObjectState81_Block
al 00DB00 .HandleObjectState81
al 00DAF7 .SubCDAF7
al 00DAF2 .SubCDAD5_Block
al 00DAD5 .SubCDAD5
al 00DAC3 .HandleObjectState80_Block
al 00DAFF .SubCDAF7_Block
al 00DA9C .HandleObjectState80
al 00DA98 .DispatchObjectStateZp5E_Block_8
al 00DA95 .DispatchObjectStateZp5E_Block_7
al 00DA92 .DispatchObjectStateZp5E_Block_6
al 00DA8F .DispatchObjectStateZp5E_Block_5
al 00DA89 .DispatchObjectStateZp5E_Block_4
al 00DA86 .DispatchObjectStateZp5E_Block_3
al 00DA83 .DispatchObjectStateZp5E_Block_2
al 00DA80 .DispatchObjectStateZp5E_Block_1
al 00DA7D .DispatchObjectStateZp5E_Block
al 00DA4C .DispatchObjectStateZp5E
al 00DA40 .UpdateObjectListZp5D_Block_2
al 00DA3D .UpdateObjectListZp5D_Block_1
al 00DA1D .UpdateObjectListZp5D_Block
al 00DA16 .UpdateObjectListZp5D
al 00DA13 .SubCDA0F_Block
al 00DA0F .SubCDA0F
al 00DA06 .SubCD9F9_Block
al 00D9F9 .SubCD9F9
al 00D9F5 .SubCD9E8_Block
al 00D9E8 .SubCD9E8
al 00D9E6 .CheckPeriodicEvent
al 00D9D4 .SubCD9D4
al 00D9D0 .SubCD990_Block_2
al 00D9E3 .SubCD9E3
al 00D9E0 .SubCD9D4_Block
al 00D9AF .SubCD990_Block_1
al 00D99D .SubCD990_Block
al 00D990 .SubCD990
al 00D98D .SubCD98D
al 00D986 .SubCD93C_Block_1
al 00D98B .SubCD93C_Block_2
al 00D964 .SubCD93C_Block
al 00D93C .SubCD93C
al 00D93B .SubCD92D_Block
al 00D92D .SubCD92D
al 00D938 .SubCD91A_Block
al 00D91A .SubCD91A
al 00D911 .SubCD8EB_Block_1
al 00D914 .SubCD8EB_Block_2
al 00D904 .SubCD8EB_Block
al 00D917 .SubCD917
al 00D8EB .SubCD8EB
al 00D8E8 .SubCD8E8
al 00D8E6 .SubCD8B9_Block_1
al 00D8E1 .SubCD8B9_Block
al 00D8B9 .SubCD8B9
al 00D8AD .CheckSpriteListCollision
al 00D8A7 .SubCD87D_Block
al 00D8A8 .SubCD8A8
al 00D87D .SubCD87D
al 00D86F .SubCD800_Block_7
al 00D856 .SubCD800_Block_5
al 00D867 .SubCD800_Block_6
al 00D849 .SubCD800_Block_4
al 00D827 .SubCD800_Block_3
al 00D81E .SubCD800_Block_2
al 00D80E .SubCD800_Block_1
al 00D805 .SubCD800_Block
al 00D800 .SubCD800
al 00D7F2 .SubCD7F2
al 00D7DA .SubCD7DA
al 00D7D3 .SubCD7BF_Block
al 00D7BF .SubCD7BF
al 00D7BA .SubCD7BA
al 00D7B8 .SubCD7AD_Block
al 00D7AD .SubCD7AD
al 00D79B .SubCD79B
al 00D795 .SubCD769_Block_1
al 00D786 .SubCD769_Block
al 00D769 .SubCD769
al 00D767 .SubCD753_Block
al 00D753 .SubCD753
al 00D74F .SubCD713_Block_2
al 00D732 .SubCD713_Block
al 00D73E .SubCD713_Block_1
al 00D713 .SubCD713
al 00D705 .SubCD705
al 00D703 .SubCD6C6_Block_5
al 00D6FE .SubCD6C6_Block_4
al 00D6F2 .SubCD6C6_Block_3
al 00D710 .SubCD6C6_Block_7
al 00D70A .SubCD6C6_Block_6
al 00D6E8 .SubCD6C6_Block_2
al 00D6D9 .SubCD6C6_Block_1
al 00D6CD .SubCD6C6_Block
al 00D6C6 .SubCD6C6
al 00D6B7 .SubCD6B7
al 00D6B1 .SubCD697_Block
al 00D6C5 .SubCD6B7_Block
al 00D697 .SubCD697
al 00D650 .UnreachedCode_D650
al 00D642 .SubCD60D_Block
al 00D64F .SubCD60D_Block_1
al 00D60D .SubCD60D
al 00D5F6 .SubCD5F6
al 00D5F1 .SubCD5F1
al 00D5CC .SubCD5B3_Block
al 00D5E2 .SubCD5B3_Block_1
al 00D5B3 .SubCD5B3
al 00D5AF .SubCD56C_Block_4
al 00D59A .SubCD56C_Block_2
al 00D5A1 .SubCD56C_Block_3
al 00D58C .SubCD56C_Block_1
al 00D56C .SubCD56C
al 00D56A .SubCD547_Block_2
al 00D570 .SubCD56C_Block
al 00D55A .SubCD547_Block_1
al 00D551 .SubCD547_Block
al 00D547 .SubCD547
al 00D544 .SubCD50A_Block
al 00D50A .SubCD50A
al 00D509 .SubCD501_Block
al 00D501 .SubCD501
al 00D4F9 .SubCD4F9
al 00D4EE .SubCD4EE
al 00D4ED .UpdateSpritePosition49_Block
al 00D4CF .UpdateSpritePosition49
al 00D4CC .SubCD4CC
al 00D4C6 .SubCD4B1_Block
al 00D4B1 .SubCD4B1
al 00D49F .SubCD49F
al 00D49D .SubCD432_Block_5
al 00D478 .SubCD478
al 00D476 .SubCD432_Block_3
al 00D471 .SubCD432_Block_2
al 00D48B .SubCD432_Block_4
al 00D45A .SubCD432_Block_1
al 00D445 .SubCD432_Block
al 00D432 .SubCD432
al 00D42C .SubCD42C
al 00D426 .SubCD40D_Block
al 00D40D .SubCD40D
al 00D3FB .SubCD3FB
al 00D3F9 .UpdateSpritePosition44_Block_6
al 00D3D2 .SubCD3D2
al 00D3D0 .UpdateSpritePosition44_Block_4
al 00D3BB .UpdateSpritePosition44_Block_2
al 00D3E7 .UpdateSpritePosition44_Block_5
al 00D3AF .UpdateSpritePosition44_Block_1
al 00D3CD .UpdateSpritePosition44_Block_3
al 00D39C .UpdateSpritePosition44_Block
al 00D38B .UpdateSpritePosition43_Block
al 00D38E .UpdateSpritePosition44
al 00D37E .UpdateSpritePosition43
al 00D37B .UpdateSpritePosition42_3
al 00D373 .UpdateSpritePosition42_1_Block
al 00D36A .UpdateSpritePosition42_1
al 00D360 .UpdateSpritePosition41
al 00D35E .UpdateSpritePosition40_Block_2
al 00D353 .UpdateSpritePosition40_Block_1
al 00D34E .UpdateSpritePosition40_Block
al 00D365 .UpdateSpritePosition40_Block_3
al 00D32F .UpdateSpritePosition40
al 00D326 .UpdateSpritePosition39
al 00D323 .UpdateSpritePosition38
al 00D2FD .UpdateSpritePosition37
al 00D2F0 .UpdateSpritePosition36_Block
al 00D2DF .UpdateSpritePosition36
al 00D2DD .UpdateSpritePosition35_Block
al 00D2CB .UpdateSpritePosition35
al 00D2CA .UpdateSpritePosition34_Block
al 00D28B .UpdateSpritePosition34
al 00D288 .UpdateSpritePosition33_Block
al 00D275 .UpdateSpritePosition33
al 00D25D .UpdateSpritePosition32
al 00D25B .UpdateSpritePosition31_Block_3
al 00D26D .UpdateSpritePosition31_Block_5
al 00D262 .UpdateSpritePosition31_Block_4
al 00D23E .UpdateSpritePosition31_Block_2
al 00D227 .UpdateSpritePosition31_Block
al 00D233 .UpdateSpritePosition31_Block_1
al 00D208 .UpdateSpritePosition31
al 00D205 .UpdateSpritePosition30_Block_4
al 00D1F9 .UpdateSpritePosition30_Block_3
al 00D1F3 .UpdateSpritePosition30_Block_2
al 00D1E2 .UpdateSpritePosition30_Block
al 00D1E5 .UpdateSpritePosition30_Block_1
al 00D1CF .UpdateSpritePosition30
al 00D1CC .UpdateSpritePosition29_Block_3
al 00D1C9 .UpdateSpritePosition29_Block_2
al 00D1C6 .UpdateSpritePosition29_Block_1
al 00D1C3 .UpdateSpritePosition29_Block
al 00D1AA .UpdateSpritePosition29
al 00D1BB .UpdateSpritePosition28_Block
al 00D1A4 .UpdateSpritePosition28
al 00D19A .UpdateSpritePosition27
al 00D199 .UpdateSpritePosition26_Block_1
al 00D189 .UpdateSpritePosition26_Block
al 00D175 .UpdateSpritePosition26
al 00D166 .UpdateSpritePosition24_Block_4
al 00D169 .UpdateSpritePosition25
al 00D14B .UpdateSpritePosition24_Block_3
al 00D139 .UpdateSpritePosition24_Block_2
al 00D11D .UpdateSpritePosition23_Block_6
al 00D115 .UpdateSpritePosition23_Block_5
al 00D11F .UpdateSpritePosition24
al 00D101 .UpdateSpritePosition23_Block_4
al 00D0F4 .UpdateSpritePosition23_Block_2
al 00D0F8 .UpdateSpritePosition23_Block_3
al 00D0DD .UpdateSpritePosition23_Block
al 00D0E4 .UpdateSpritePosition23_Block_1
al 00D130 .UpdateSpritePosition24_Block
al 00D138 .UpdateSpritePosition24_Block_1
al 00D0C0 .UpdateSpritePosition23
al 00D0B5 .UpdateSpritePosition22_3
al 00D0AA .UpdateSpritePosition22_1_Block_2
al 00D0A5 .UpdateSpritePosition22_1_Block_1
al 00D086 .UpdateSpritePosition22_1
al 00D065 .UpdateSpritePosition21_3_Block_1
al 00D074 .UpdateSpritePosition21_3_Block_2
al 00D0BF .UpdateSpritePosition22_3_Block
al 00D063 .UpdateSpritePosition21_3_Block
al 00D092 .UpdateSpritePosition22_1_Block
al 00D04C .UpdateSpritePosition21_3
al 00D04B .UpdateSpritePosition21_1_Block
al 00D041 .UpdateSpritePosition21_1
al 00D032 .UpdateSpritePosition20
al 00D02A .UpdateSpritePosition19_Block
al 00D008 .UpdateSpritePosition19
al 00CFF9 .UpdateSpritePosition18_Block_1
al 00CFCD .UpdateSpritePosition18_Block
al 00CFC6 .UpdateSpritePosition18
al 00CFB8 .UpdateSpritePosition17_Block_1
al 00CFAC .UpdateSpritePosition17_Block
al 00CFA8 .UpdateSpritePosition17
al 00CFA1 .UpdateSpritePosition15_Block_6
al 00CF9B .UpdateSpritePosition15_Block_5
al 00CF87 .UpdateSpritePosition16
al 00CF79 .UpdateSpritePosition15_Block_1
al 00CF7A .UpdateSpritePosition15_Block_2
al 00CF92 .UpdateSpritePosition15_Block_4
al 00CF55 .UpdateSpritePosition15_Block
al 00CF8F .UpdateSpritePosition15_Block_3
al 00CF42 .UpdateSpritePosition15
al 00CF2B .UpdateSpritePosition14
al 00CF2A .UpdateSpritePosition13_3_Block
al 00CF1C .UpdateSpritePosition13_3
al 00CF19 .UpdateSpritePosition13_1
al 00CF13 .UpdateSpritePosition12
al 00CF0D .UpdateSpritePosition11_Block_1
al 00CF01 .UpdateSpritePosition11_Block
al 00CED3 .UpdateSpritePosition10_Block_7
al 00CED6 .UpdateSpritePosition11
al 00CEC1 .UpdateSpritePosition10_Block_6
al 00CEB8 .UpdateSpritePosition10_Block_5
al 00CEB1 .UpdateSpritePosition10_Block_4
al 00CEA2 .UpdateSpritePosition10_Block_2
al 00CEAE .UpdateSpritePosition10_Block_3
al 00CE8B .UpdateSpritePosition10_Block
al 00CE94 .UpdateSpritePosition10_Block_1
al 00CE7C .UpdateSpritePosition10
al 00CE2F .UpdateSpritePosition9_Block
al 00CE24 .UpdateSpritePosition9
al 00CE1F .UpdateSpritePosition8_Block
al 00CE0E .UpdateSpritePosition8
al 00CDF3 .UpdateSpritePosition6_Block_2
al 00CDEF .UpdateSpritePosition6_Block_1
al 00CDCA .UpdateSpritePosition7
al 00CDD7 .UpdateSpritePosition6_Block
al 00CDB1 .UpdateSpritePosition6
al 00CDAE .UpdateSpritePosition5_Block
al 00CD9D .UpdateSpritePosition5
al 00CD89 .UpdateSpritePosition4
al 00CD7F .UpdateSpritePosition3
al 00CD76 .UpdateSpritePosition2
al 00CD6F .UpdateSpritePosition
al 00CD6C .UpdateGameTimer_Block_7
al 00CD69 .UpdateGameTimer_Block_6
al 00CD66 .UpdateGameTimer_Block_5
al 00CD61 .UpdateGameTimer_Block_4
al 00CD58 .UpdateGameTimer_Block_3
al 00CD4F .UpdateGameTimer_Block_2
al 00CD4A .UpdateGameTimer_Block_1
al 00CD45 .UpdateGameTimer_Block
al 00CD22 .UpdateGameTimer
al 00CD13 .CheckGameState_1_Block_1
al 00CD07 .CheckGameState_1_Block
al 00CCF4 .CheckGameState_1
al 00CCF3 .UpdateScroll8_Block
al 00CCD6 .UpdateScroll8
al 00CCC1 .UpdateScroll7
al 00CCA6 .InitScroll_Block_2
al 00CC99 .InitScroll_Block_1
al 00CC4A .InitScroll_Block
al 00CC47 .InitScroll
al 00CC34 .UpdateScroll6
al 00CC24 .SubCCC24
al 00CC23 .UpdateScroll5
al 00CC04 .UpdateScroll4
al 00CC03 .UpdateOAM3
al 00CBF7 .UpdateOAM2
al 00CBF5 .UpdateOAM
al 00CBEB .CopyVramDataToBuffer_Block
al 00CBDF .CopyVramDataToBuffer
al 00CBF4 .UpdateScroll3
al 00CBCA .UpdateScroll2
al 00CBBD .UpdateScroll
al 00CBB7 .WaitVBlank_1
al 00CBAE .ClearZeropage
al 00CB9E .HandleController_Block_7
al 00CB7B .HandleController_Block_6
al 00CB46 .HandleController_Block_3
al 00CB47 .HandleController_Block_4
al 00CB58 .HandleController_Block_5
al 00CB36 .HandleController_Block_1
al 00CB39 .HandleController_Block_2
al 00CB30 .HandleController_Block
al 00CB1B .HandleController
al 00CB15 .UpdateSpriteData_Block_5
al 00CAF6 .UpdateSpriteData_Block_2
al 00CAFA .UpdateSpriteData_Block_3
al 00CAE7 .UpdateSpriteData_Block_1
al 00CB18 .UpdateSpriteData_Block_6
al 00CB02 .UpdateSpriteData_Block_4
al 00CAD8 .UpdateSpriteData_Block
al 00CAC9 .UpdateSpriteData
al 00CABB .CopyFromOAM_Block
al 00CAB9 .CopyFromOAM
al 00CAAB .CopyToOAM_Block
al 00CAA9 .CopyToOAM
al 00CA99 .UpdateSprites_Block_6
al 00CA94 .UpdateSprites_Block_5
al 00CA53 .UpdateSprites2
al 00CA79 .UpdateSprites_Block_4
al 00CA64 .UpdateSprites_Block_3
al 00CA5F .UpdateSprites_Block_2
al 00CA5A .UpdateSprites_Block_1
al 00CA4A .UpdateSprites_Block
al 00CA30 .UpdateSprites
al 00CA26 .InitGameState_Block_1
al 00CA06 .InitGameState_Block
al 00C9B1 .InitGameState
al 00C9AD .UpdateGameState3_Block_1
al 00C991 .UpdateGameState3_Block
al 00C989 .UpdateGameState2_Block_2
al 00C976 .UpdateGameState2_Block
al 00C985 .UpdateGameState2_Block_1
al 00C95C .UpdateGameState_Block
al 00C98A .UpdateGameState3
al 00C95D .UpdateGameState2
al 00C940 .UpdateGameState
al 00C914 .InitLevel
al 00C8FE .InitSound_1
al 00C8F3 .InitAPU
al 00C8E8 .NmiFrameEnd
al 00C8CB .NmiFrameUpdate2
al 00C8D7 .NmiFrameUpdate4
al 00C8A5 .NmiHandler_Block
al 00C8D4 .NmiFrameUpdate3
al 00C8C1 .NmiFrameUpdate
al 00C85F .NmiHandler
al 00C853 .LoadObjectPointerToZp08
al 00C847 .LoadObjectPointerToZp02
al 00C831 .LoadObjectAndLevelPointers
al 00C823 .LoadObjectPointerToZp00AndDraw
al 00C815 .LoadObjectPointerToZp02AndDraw
al 00C807 .LoadSpriteInitPointerToZp00
al 00C7E7 .InitPPURegisters
al 00C7E1 .GameLoopEntry
al 00C7B9 .Reset_Block_1
al 00C7A8 .Reset_Block
al 00C79E .Reset
al 00C4B0 .SpriteInitPtrTable
al 00C044 .LevelDataPtrTable
al 00C03C .ObjectPtrTable
al 00C000 .LevelPtrTable