Files
disasm/NROM/Donkey Kong (JU)/dk_full_map.tsv
T
tmerrittandClaude Opus 4.8 49e117bfcc Fix Pass 3 symbol application and add promotion criteria to PROMPTS.md
- Apply symbols.inc hardware register names to Defender 2 (U) (51 operands)
- Apply symbols.inc hardware register names to Donkey Kong 3 (JUE) (36 operands)
- Add APU register symbols (-) to Defender 2 (U) and Donkey Kong 3 (JUE) symbols.inc
- Apply symbols to Donkey Kong Jr. Math (U) (80 operands: 11 single + 69 hardware)
- Apply symbols to Excitebike (JU) (786 operands: 785 single + 1 hardware)
- Add promotion criteria to PROMPTS.md: symbol/local substitution,
  ROM-specific semantic naming, and verification checklist

Add branch/jump target naming requirement to PROMPTS.md

All branches and jumps must target symbolic labels with descriptive names
derived from program flow role (e.g., _Loop, _Next, _Done, _Store, _Return),
never raw address literals. Adds criterion 8 to verification checklist.

Rename all OVERVIEW.md to README.md; add root README content to top-level

- Rename all OVERVIEW.md files to README.md throughout the repo (47 files)
- Prepend README.md content to top-level OVERVIEW.md before rename
- Fix apply_symbols.py NAME_RE regex to handle spaced assignments
- Apply symbols.inc to Defender 2 (U) (51 hardware operands)
- Apply symbols.inc to Donkey Kong 3 (JUE) (36 hardware operands)
- Apply symbols.inc to Donkey Kong Jr. Math (U) (80 operands: 11 single + 69 hardware)
- Apply symbols.inc to Excitebike (JU) (786 operands: 785 single + 1 hardware)
- Add missing Zp18/FrameCounter aliases to Excitebike prg.s
- Build all 27 top-level projects: byte-identical

Promote Donkey Kong Jr. Math back to _wip tier

Moves code from `copilot` folder and verifies each builds after

Add pre-commit hook for byte-identical verification

Add .git/hooks/pre-commit that runs 'make' then 'make clean' in each
project directory before committing. This ensures every project builds
byte-identical before any commit is accepted.

Also includes all file moves from the Donkey Kong Jr. Math (U) demotion
and other file restructuring from the session.

moves code out of copilot folder, its all AI generated.
Moves NROM games into NROM folder

removes copilot folder from Lunar Pool
Adds makefile to build all projects recursively

Updates docs to reflect changes in layout

Repromotes Donkey Kong Jr Math
Repromotes Excitebike
Promotes Popeye (JU) (PRG 1)
Updates Makefile to provide summary of build failure/success

Promote Raid on Bungeling Bay (U): Pass 2/3 partial, whole-ROM byte-identical

Move _wip/NROM/Raid on Bungeling Bay (U) to NROM/ and switch the build
from a PRG-only compare to a whole-ROM one:

  - header.s/chr.s added (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000, $0010) and CHR ($0000, $2000)
    areas ahead of PRG ($C000, $4000)
  - rom.nes symlink to the space-containing original ROM name
  - Makefile builds header.o/prg.o/chr.o into reconstructed.nes and
    compares it against rom.nes ('Byte-identical ROM verified.')
  - one leftover neutral indirect operand jmp (Zp01) at $E2EC becomes
    jmp (IndDispatch01); apply_symbols.py reports 0 substitutions pending

README.md / TODO.md / AGENTS.md updated: 29 promoted, 7 in _wip/.

Pac-Man (U): Pass 2 complete (label renaming) + Pass 3 partial (ZP aliases, table names)

Pass 2 — fresh map derived from the committed split, not from any drafted
map (the drafted maps in other projects were audited and found not
applicable):

  - all 194 address-derived Label_XXXX definitions renamed to semantic
    routine-entry names plus <Routine>_<Role>_<addr> internal branch
    targets; zero Label_ remains
  - all 49 jsr/jmp call sites resolved from raw $XXXX to labels; zero
    raw $XXXX call operands remain
  - routinemap.tsv / derived_names.tsv record the derivation

Pass 3 (partial):

  - 15 proven semantic zero-page aliases added to locals.inc
    (GameState, NmiFlag, ScrollX/Y, PpuCtrlShadow, OamDmaPage,
    CocktailModeFlag, ActivePlayerFlag, GameplaySuspended, FrameCounter,
    StateTimer, Player1/2Input, ActiveInput, CopyrightVerified)
  - 112 operands substituted into prg.s (11 single + 101 hardware)
  - key data tables named: ProgrammerSig ($C0EB), GameStateDispatchTable
    ($C253), TitleScreenData ($C2FD), EntityPtrTable ($D912),
    AudioCommandTable ($EFDD)

Also corrects the README's claim that the RESET vector points at padding:
$FF00 holds real boot code (sei/cld, PPU off, double vblank wait, then
jmp ColdStart at $C042).

.gitignore: ignore reconstructed_prg.bin (build artifact of the _wip
Makefiles; '**/reconstructed.*' does not match the underscore form).

Promote Pac-Man (U): Pass 2/3 complete, whole-ROM byte-identical

Move _wip/NROM/Pac-Man (U) to NROM/ and switch the build from a PRG-only
compare to a whole-ROM one:

  - header.s/chr.s added (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000, $0010) and CHR ($0000, $2000)
    areas ahead of PRG ($C000, $4000)
  - rom.nes symlink to 'Pac-Man (U) [!].nes' (the original ROM name
    contains a space and brackets)
  - Makefile builds header.o/prg.o/chr.o into reconstructed.nes and
    compares it against rom.nes
  - reconstructed.nes is 24,592 bytes, MD5 a69d310f8cae9397fbd39f204672b5c7
    - equal to the original ROM; the header/prg/chr splits were checked
    against the original before promotion and are byte-exact

Pass 3 residue closed.  The last 7 multi-alias zero-page operands are
resolved per site through a new sites.tsv, each proven from context
rather than guessed:

  - jmp ($0010) at $C250/$D3CA/$D90F/$D9B6 -> (DispatchPtrLo); each
    is immediately preceded by sta DispatchPtrLo/sta DispatchPtrHi
  - jmp ($00FE) at $EFDA -> (AudioHandlerPtrLo); preceded by
    sta AudioHandlerPtrLo/sta AudioHandlerPtrHi
  - sta a:$0000,y at $C048/$C089 -> a:Zp00,y; the literal zero-page
    base in the two ZP clear loops, so the neutral name is used rather
    than the semantic WorkPtrLo.  The 'a:' prefix survives the
    substitution, so the bytes stay 99 00 00 (sta abs,Y)

apply_symbols.py now reports 119 operands substituted (101 hardware,
11 single-name, 7 site) and 0 residue.

New tool _tools/align_audit_comments.py: re-aligns the audit comment to
column 35 after a substitution lengthens an operand (nesdis.py pads each
instruction to 31 characters).  Whitespace-only, so the byte identity
cannot change.  405 lines re-aligned in this project; all 2,387 audit
comments still match prg.bin at the stated PRG offset, 0 mismatches.

Docs: root README.md / TODO.md / AGENTS.md updated - 30 promoted, 6 in
_wip/; a per-project detail entry for Pac-Man (U) added; the stale
'Donkey Kong 3 (JUE) has no README.md' claim corrected (it has a
318-line one).

Promote Raid on Bungeling Bay (U) [a2]: Pass 3 complete, whole-ROM byte-identical

Move _wip/NROM/Raid on Bungeling Bay (U) [a2] to NROM/ and switch the build
from a PRG-only compare to a whole-ROM one:

  - header.s/chr.s added (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000, $0010) and CHR ($0000, $2000)
    areas ahead of PRG ($C000, $4000)
  - rom.nes symlink to 'Raid on Bungeling Bay (U) [a2].nes' (the original
    ROM name contains spaces and brackets)
  - reconstructed.nes is 24,592 bytes, MD5 659d340a1e9d420eee28df13319b0094
    - equal to the original ROM; the header/prg/chr splits were checked
    against the original before promotion and are byte-exact

Pass 3 - 15 semantic zero-page aliases, each applied only at the sites
where its role is proven:

  - PpuCtrlShadow ($C2), 15 sites: the reset entry primes it right after
    'sta PPUCTRL', and every other use is an ora/and/eor followed by
    'sta PPUCTRL'
  - NmiPathSelector ($C4), 5 sites: written 1 at $C3E9 and 0 at $C962
  - GameState ($D6), 6 sites: 'cmp #$02' and used as an index at $C4C7
  - FrameSubCounter ($55), 6 sites: set to $0A at $C520, decremented per
    NMI at $C07B
  - PrngPeriodCounter ($EA) / PrngSeedB ($EB) / PrngState ($EC), 13 sites:
    the PRNG state
  - PtrLo ($00) / PtrHi ($01), 8 sites: the 16-bit pair $1C13 and $1610
    compared at $E785/$E791
  - IndDispatch01 ($01) / IndDispatch02 ($02), 3 sites: the computed
    dispatch at $E2EC
  - IndDispatch1B ($1B) / IndDispatch1C ($1C), 6 sites: the dispatch at
    $E7A3
  - IndDispatch17 ($17) / IndDispatch19 ($19): the dispatches at $E79D
    and $E7A0

Addresses that carry two names keep the neutral ZpXX name where the other
role applies - $01 is PtrHi at the 16-bit compare and IndDispatch01 at the
dispatch; $17 is IndDispatch17 at the dispatch and Zp17 for the absolute
RAM $0017 store in the copy loop at $E895/$E8D0.

New tool _tools/apply_zp_aliases.py does the per-site substitution:
apply_symbols.py only rewrites *numeric* operands, so it cannot rename an
operand that is already written as a neutral ZpXX name.  The tool keeps the
ca65 'a:' prefix (dropping it would turn 'sta a:Zp17,y' into a zero-page
store and change the bytes) and rewrites only the operand token, so the
audit comment survives byte for byte.

Naming correction in the promoted sibling.  Finishing this dump showed that
$EA was misnamed 'VBlankWaitCounter': the routine at $C412 is the game's
pseudo-random generator (the classic eor/asl/php/lsr/plp/rol scrambler,
called from thirteen gameplay sites, twice in a row at $CDF4/$CDF9 with the
second result masked #$07), so $EA is the scrambler's phase counter.
Renamed PrngPeriodCounter in both dumps and named $EB/$EC PrngSeedB /
PrngState.  The sibling's two 'sta a:IndDispatch17,y' operands were also
wrong - they are absolute stores to RAM $0017, not the dispatch pointer -
and are now 'a:Zp17,y', matching the file's 'a:' = absolute convention.

Audit-comment alignment re-done with _tools/align_audit_comments.py (1,040
lines here, 1,080 in the sibling).  Both files still match prg.bin at every
stated PRG offset: 5,467 and 5,483 audit comments, 0 mismatches.

Docs: root README.md / TODO.md / AGENTS.md updated - 31 promoted, 5 in
_wip/; per-project detail entries added for both Raid dumps.

Promote Pac-Man (Tengen) (U): Pass 2/3 from scratch, whole-ROM byte-identical

Move _wip/NROM/Pac-Man (Tengen) (U) to NROM/ and switch the build from a
PRG-only compare to a whole-ROM one:

  - header.s/chr.s added (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000, $0010) and CHR ($0000, $2000)
    areas ahead of PRG ($C000, $4000)
  - rom.nes symlink to 'Pac-Man (Tengen) (U) [!].nes'
  - reconstructed.nes is 24,592 bytes, MD5 d34e7a74d8d2c231b6cc601210e28ad0
    - equal to the original ROM; the header/prg/chr splits were checked
    against the original before promotion and are byte-exact

Disassembled from scratch.  No name, map or file was carried over from the
sibling 'Pac-Man (U)' dump; the map was derived from this dump's own
committed split and the two were only compared afterwards.

Pass 2 (new tool _tools/apply_pass2_map.py):
  - all 194 Label_XXXX definitions renamed to semantic routine entries plus
    <Routine>_<Role> branch targets; zero Label_ remains
  - all 48 raw $XXXX jsr/jmp operands resolved to labels; zero raw $XXXX
    call or branch operands remain
  - the map is in routinemap.tsv

Pass 3:
  - 30 semantic zero-page aliases, each applied only at the sites where its
    role is proven (per-site choice in sites.tsv; the addresses that carry
    two roles keep the neutral ZpXX name elsewhere).  _tools/
    derive_zp_aliases.py records how the set was derived, and locals.inc
    records the reason for every remaining neutral slot
  - 28 data tables named (new tool _tools/name_data_region.py), including
    CharacterDataTable ($C66A) and CharacterNameStrings ($C67E), where the
    ROM itself names Blinky, Pinky, Inky and Clyde - which is why the four
    indexed entities are called ghosts and not 'actors'
  - apply_symbols.py reports 0 substitutions pending and 0 residue
  - audit-comment alignment re-done with _tools/align_audit_comments.py;
    all 2,479 audit comments still match prg.bin at the stated PRG offset

Pass 1 correction - six command handlers recovered (new tool
_tools/recode_region.py).  ScriptCommandTable ($EFDD) is read by the traced
instruction at $EFCC, and six of its entries point at $F00A, $F022, $F03A,
$F052, $F062 and $F072 - all of which the tracer had left as data, and two
of which it had mis-split across the 'jmp $EF61' at $F01F and $F04F.
Those 120 bytes are code here, decoded straight from the ROM; the six
handlers tile $F00A-$F081 exactly.  The same gap exists in the promoted
'Pac-Man (U)' dump, which has not been corrected - recorded in both READMEs.

Residue (documented, not guessed): the unreached main game logic at
$C45A-$C55F is still .byte data.  It is code - the tracer's own decoder
walks it cleanly and the dispatch table at $C511 points into it - but
nothing reaches it, so it cannot be entered without a guess.  The same gap
exists in the promoted 'Pac-Man (U)' dump.  Re-deriving it is a Pass 1 job;
a Mesen Code Data Logger capture is the tool the repo uses for it.

Docs: root README.md / TODO.md / AGENTS.md updated - 32 promoted, 4 in
_wip/; a per-project detail entry added for the Tengen dump.

Promote Pyramid (U): Pass 1 corrected, Pass 2/3 complete, whole-ROM byte-identical

Move _wip/NROM/Pyramid (U) to NROM/ and switch the build from a PRG-only
compare to a whole-ROM one:

  - header.s/chr.s added (one-line .incbin of header.bin / chr.bin)
  - linker.cfg gains HEADER ($0000, $0010) and CHR ($0000, $2000)
    areas ahead of PRG ($C000, $4000)
  - rom.nes symlink to 'Pyramid (U) (Sachen).nes'
  - reconstructed.nes is 24,592 bytes, MD5 aa285ff17f25dd05da5996b7466c59e2
    - equal to the original ROM; the header/prg/chr splits were checked
    against the original before promotion and are byte-exact

Pass 1 correction - the committed split was a strict subset of the correct
one.  This game dispatches through 'jmp' trampoline tables that live
*inside* the data regions, and the tracer cannot follow a jmp there, so
828 bytes of code were still marked as data.  Four such tables were found
($C01E 3 entries, $C02A 6, $C042 2, $C054 5) plus ten more entries at
$C000-$C01B; all sixteen targets decode as valid instructions.  Seeding
them, the $C800 boot mainline and six further code starts recovers the
whole lot, plus a five-byte stub at $DF89 (lda $33 / jmp $DECB) that sat
in a hole between two routines.  The re-trace loses NO committed code byte
and takes the split from 34.5% to 39.6% (3,130 instructions / 6,493 code
bytes).  'make regen' reproduces it, so the split stays verifiable.

Pass 2 - a fresh map derived from this dump's own committed split:
  - 428 Label_XXXX definitions renamed; zero Label_ residue
  - 320 raw $XXXX jsr/jmp operands resolved; zero raw $XXXX branch
    operands remain
  - 431 routine entries and the 32 data blocks named from the code
  - the internal branch-target names are derived mechanically from the
    branch that reaches them by the new _tools/derive_branch_names.py
    (beq -> OnZero, bne -> OnNonzero, bcc/bcs -> the carry cases, a
    backwards branch -> Loop)
  - recorded in routinemap.tsv

Pass 3:
  - 24 semantic zero-page aliases, each applied only where its role is
    proven; the 57 slots that stay neutral are each listed with the reason
    in locals.inc (the neutral set lives in zp_aliases.inc so that
    'make regen' can rebuild locals.inc from prg.bin)
  - 32 data tables named - TaskVectorTable1/2, LevelScriptData,
    MusicPeriodTable, SoundEnvelopeTable, the actor tables - recorded in
    data_region_names.tsv
  - apply_symbols.py reports 0 substitutions pending and 0 residue; no
    hardware register is left as a raw literal
  - the audit comments are now canonical on every line, data included
    (the old file carried only 'PRG:$xxxx' on its 1,358 data lines);
    all 3,762 audit comments match prg.bin at their stated PRG offset

Kept as-is, not 'cleaned up':
  - sta $4100 stays a raw operand.  The iNES header claims mapper 0 but
    the boot code writes past the NES register space; the ROM does not
    explain it, so it is recorded rather than guessed
  - the 'A'/'V' check on RAM $0120/$0121 and its seed/clear routines
    are named for what they do, not for what they are for
  - the ninth entry of the $C3A6 task vector table ($D820) is a junk
    slot and stays data

Docs: root README.md / TODO.md / AGENTS.md updated - 33 promoted, 3 in
_wip/; a per-project detail entry added.

Hogan's Alley (JU): Pass 1 correction, Pass 2, Pass 3, promoted to NROM/

The light-gun game whose engine dispatches through *inline* tables:
`IndirectCall` at $C34D pops the return address of the `jsr` that called
it and reads a 16-bit handler pointer from the word that follows, so all
six handler tables ($C124 19 entries, $C219 4, $C89C 14, $CDD1 1, $D234 2,
$D3D6 14) live inside the code stream and the static tracer cannot follow
them.

Pass 1 correction.  The committed split was a strict subset of the correct
one -- 41.8% of the PRG was classified as code.  A fresh Mesen Code Data
Logger capture was merged with the four captures already in the folder
(hogans_merged.cdl, the OR of five per-byte flag arrays, 6,544 code bytes)
and _tools/cdl_reclass.py rewrote the split to match what the CPU actually
fetched: 1,216 bytes moved from data to code, five the other way, 59 labels
emitted.  The split is now 49.1% code (3,950 instructions, 8,041 bytes).
The four branch targets the reclassifier could not prove were turned into
labels by the new _tools/resolve_raw_branches.py.

Pass 2.  206 routine entries hand-named from this dump's own code and 413
internal branch targets derived mechanically by _tools/derive_branch_names.py:
630 Label_XXXX definitions gone, 484 raw $XXXX call operands resolved, 15
call targets the tracer had never labelled given a label.  Recorded in
routinemap.tsv.  No SubC<addr> residue was needed -- every entry the engine
reaches is named after what it does.

Pass 3.  60 semantic zero-page aliases, each applied only where its role is
proven (zp_aliases.inc, zp_alias_sites.tsv); the slots that stay neutral are
each listed with the reason.  All 34 data blocks named
(data_region_names.tsv).  apply_symbols.py reports 1 residue: `sta a:$00B4,y`
at $C203, the same address as Zp40/ActorPalette but forced to absolute
addressing, so it must stay numeric.

Promotion.  header.s, chr.s and a HEADER/PRG/CHR linker.cfg added, rom.nes
symlinked to the original ROM; the whole-ROM cmp passes on the first
promoted build.  There is deliberately no `make regen` target: the Pass 1
split here is the static trace corrected by a CDL capture, and the base the
correction was applied to is not what the current _tools/nesdis.py
produces, so prg.s is the maintained source of truth.

Tools changed:
  nesdis.py             --split/--note/--provenance options, so a data
                          region can carry its own name and explanation;
                          a forced-data address is no longer reported as a
                          recovered routine entry
  apply_pass2_map.py    can create the label for a call target the tracer
                          left unlabelled; no longer double-labels it
  apply_zp_aliases.py   --at-file, an address-based per-site list
  derive_branch_names.py keeps the map's own header instead of writing a
                          fixed one
  resolve_raw_branches.py  new: turns `bXX *+$NN` operands into labels
  build_hogans_map.py   new: the hand-written Pass 2 map builder

The existing regen pipelines (MUSCLE (U), Urban Champion (JU)) still
reproduce prg.s byte for byte.

Apply the symbols.inc register names at Pass 1; fix a dropped byte in cdl_reclass

nesdis.py now names the hardware registers as it renders the operands, so a
project's Pass 1 output already reads `lda PPUSTATUS` instead of `lda $2002`
and the Pass 3 apply_symbols.py step has nothing left to do for them.

  * nesdis.py --symbols FILE reads a symbols.inc-style file and substitutes
    the register names.  Only unambiguous entries in the $2000-$4017 window
    are used: $4017 is both JOY2 and APUFRAMECOUNTER, so it stays numeric
    and apply_symbols.py reports it as multi-alias residue, exactly as
    before.  The default is the symbols.inc next to --out, so a new project
    gets the names without asking; --no-symbols opts out.
  * The renderer records the operand's numeric value on the Insn, because
    operand_value() used to re-parse the operand text and could no longer
    read a name.
  * The controller bit masks in symbols.inc (PAD_A and friends) are
    constants, not addresses, and are still never substituted.

MUSCLE (U) and Urban Champion (JU) keep --no-symbols: their committed
prg.s was produced with the registers named by the Pass 3 apply_symbols.py
step, and the columns in those files reflect the in-place substitution.
Adding the missing apply_symbols.py step to both regen pipelines makes
them reproduce their committed prg.s byte for byte again - neither did
before this change (MUSCLE was 440 lines out, Urban Champion 772).

cdl_reclass.py had a bug that cost a byte: a region whose last source row
straddled the region's end was replaced by a regeneration of the region
only, so the tail of that row was dropped.  Mario Bros (JU) hit it at
$C595, where the rebuild came out one byte short and every label after it
shifted.  A region now covers the whole rows it replaces.

pass2.py reflow takes an optional column argument; the default is
unchanged (the ';' lands on the same column as before).

Mario Bros (JU): Pass 1 correction, Pass 2, Pass 3, promoted to NROM/

A two-player platformer whose handler tables are *inline*: the pointers sit
in the middle of the code stream, right after the `jsr` that reads them, so
the static tracer could never follow them.

Pass 1 correction.  The committed split was a strict subset of the correct
one -- only 72.0% of the PRG was classified as code.  A Mesen Code Data
Logger capture of this ROM (mario_mesen.cdl, 10,915 code bytes) showed
1,010 bytes the tracer had left as data were code; two branch targets the
capture never reached ($E4CB and $E639) were forced with --override for 57
more, so 1,067 bytes moved from data to code and 22 moved the other way.
The split is now 78.4% code (6,210 instructions, 12,847 bytes).  The three
branch targets the reclassifier could not prove were turned into labels by
_resolve_raw_branches.py, which now refuses to put a label on a `.byte` row.

Pass 2.  206 routine entries and 519 internal branch targets: 931
Label_XXXX definitions gone, 51 raw $XXXX call operands resolved and 12 call
targets the tracer had never labelled given a label.  Zero SubC residue --
the 185 entries a previous session had left as address-derived residue were
all named from this dump's own code.  Recorded in routinemap.tsv.

Pass 3.  25 semantic zero-page aliases, each applied only where its role is
proven (zp_aliases.inc); the slots that stay neutral are each listed with the
reason.  35 data tables named -- GameStateHandlerTable, EnemyBehaviourTable,
EnemyScriptTable, EnemyTypePointerTable, SoundRoutineTable,
NoteFrequencyTable and the rest -- and recorded in
data_region_names.tsv.  apply_symbols.py reports 0 residue.

Promotion.  header.s, chr.s and a HEADER/PRG/CHR linker.cfg added, rom.nes
symlinked to the original ROM; the whole-ROM cmp passes on the first
promoted build.  There is deliberately no `make regen` target: the Pass 1
split here is the static trace corrected by a CDL capture, and the base the
correction was applied to is not what the current _tools/nesdis.py
produces, so prg.s is the maintained source of truth.

Tools:
  apply_pass2_map.py     renames a label of any spelling -- SubC<addr> is
                          the honest residue form -- and its references
                          follow it; one combined pattern, so a 16,000-line
                          file does not need a substitution per label
  resolve_raw_branches.py refuses to label a data row
  build_mario_map.py      new: the hand-written Pass 2 map builder

Remove the old _wip/NROM/Mario Bros (JU) folder (promoted to NROM/)

Mario Bros (JU): add the promoted-tier header, CHR, rom.nes symlink and zero-page aliases

Moves _ROMS/<ROM> into _wip/<MAPPER>/<ROM>

Sync the docs and the skeleton tool with the 857-project _wip tier

The _wip/ tier now holds 857 projects across 30 mapper folders, all
building byte-identical for the whole ROM.  README.md, TODO.md and
AGENTS.md still described the old 39-project tier, so bring them in line
with WIP.md, which carries the tier's index.

The tier is no longer 39 projects of NROM-256 with a 16/32 KB PRG:
only two projects have a 16 KB PRG, 151 have 32 KB, 523 have 128 KB and
one has 1.5 MB, so most of it is a banked mapper whose image does not fit
the 6502's address space.  Those projects link their MEMORY areas at .nes
file offsets rather than CPU addresses, which is the only option and the
honest model; the 39 older projects keep the CPU-address layout because
their PRG really is one contiguous window.

make_skeleton.py gains the two layouts (--layout flat|cpu), the board
name for the mapper, and a fix for find_rom() mistaking the build
output reconstructed.nes for the source ROM.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-20 16:44:06 -04:00

38 KiB

1labelLabel_C7A8Reset_Block
2labelLabel_C7B9Reset_Block_1
3labelLabel_C807LoadSpriteInitPointerToZp00
4labelLabel_C815LoadObjectPointerToZp02AndDraw
5labelLabel_C823LoadObjectPointerToZp00AndDraw
6labelLabel_C831LoadObjectAndLevelPointers
7labelLabel_C847LoadObjectPointerToZp02
8labelLabel_C853LoadObjectPointerToZp08
9labelLabel_C8A5NmiHandler_Block
10labelLabel_C95CUpdateGameState_Block
11labelLabel_C976UpdateGameState2_Block
12labelLabel_C985UpdateGameState2_Block_1
13labelLabel_C989UpdateGameState2_Block_2
14labelLabel_C991UpdateGameState3_Block
15labelLabel_C9ADUpdateGameState3_Block_1
16labelLabel_C9B1InitGameState
17labelLabel_CA06InitGameState_Block
18labelLabel_CA26InitGameState_Block_1
19labelLabel_CA4AUpdateSprites_Block
20labelLabel_CA5AUpdateSprites_Block_1
21labelLabel_CA5FUpdateSprites_Block_2
22labelLabel_CA64UpdateSprites_Block_3
23labelLabel_CA79UpdateSprites_Block_4
24labelLabel_CA94UpdateSprites_Block_5
25labelLabel_CA99UpdateSprites_Block_6
26labelLabel_CAABCopyToOAM_Block
27labelLabel_CABBCopyFromOAM_Block
28labelLabel_CAD8UpdateSpriteData_Block
29labelLabel_CAE7UpdateSpriteData_Block_1
30labelLabel_CAF6UpdateSpriteData_Block_2
31labelLabel_CAFAUpdateSpriteData_Block_3
32labelLabel_CB02UpdateSpriteData_Block_4
33labelLabel_CB15UpdateSpriteData_Block_5
34labelLabel_CB18UpdateSpriteData_Block_6
35labelLabel_CB30HandleController_Block
36labelLabel_CB36HandleController_Block_1
37labelLabel_CB39HandleController_Block_2
38labelLabel_CB46HandleController_Block_3
39labelLabel_CB47HandleController_Block_4
40labelLabel_CB58HandleController_Block_5
41labelLabel_CB7BHandleController_Block_6
42labelLabel_CB9EHandleController_Block_7
43labelLabel_CBDFCopyVramDataToBuffer
44labelLabel_CBEBCopyVramDataToBuffer_Block
45labelLabel_CC24SubCCC24
46labelLabel_CC4AInitScroll_Block
47labelLabel_CC99InitScroll_Block_1
48labelLabel_CCA6InitScroll_Block_2
49labelLabel_CCF3UpdateScroll8_Block
50labelLabel_CD07CheckGameState_1_Block
51labelLabel_CD13CheckGameState_1_Block_1
52labelLabel_CD45UpdateGameTimer_Block
53labelLabel_CD4AUpdateGameTimer_Block_1
54labelLabel_CD4FUpdateGameTimer_Block_2
55labelLabel_CD58UpdateGameTimer_Block_3
56labelLabel_CD61UpdateGameTimer_Block_4
57labelLabel_CD66UpdateGameTimer_Block_5
58labelLabel_CD69UpdateGameTimer_Block_6
59labelLabel_CD6CUpdateGameTimer_Block_7
60labelLabel_CDAEUpdateSpritePosition5_Block
61labelLabel_CDD7UpdateSpritePosition6_Block
62labelLabel_CDEFUpdateSpritePosition6_Block_1
63labelLabel_CDF3UpdateSpritePosition6_Block_2
64labelLabel_CE1FUpdateSpritePosition8_Block
65labelLabel_CE2FUpdateSpritePosition9_Block
66labelLabel_CE8BUpdateSpritePosition10_Block
67labelLabel_CE94UpdateSpritePosition10_Block_1
68labelLabel_CEA2UpdateSpritePosition10_Block_2
69labelLabel_CEAEUpdateSpritePosition10_Block_3
70labelLabel_CEB1UpdateSpritePosition10_Block_4
71labelLabel_CEB8UpdateSpritePosition10_Block_5
72labelLabel_CEC1UpdateSpritePosition10_Block_6
73labelLabel_CED3UpdateSpritePosition10_Block_7
74labelLabel_CF01UpdateSpritePosition11_Block
75labelLabel_CF0DUpdateSpritePosition11_Block_1
76labelLabel_CF2AUpdateSpritePosition13_3_Block
77labelLabel_CF55UpdateSpritePosition15_Block
78labelLabel_CF79UpdateSpritePosition15_Block_1
79labelLabel_CF7AUpdateSpritePosition15_Block_2
80labelLabel_CF8FUpdateSpritePosition15_Block_3
81labelLabel_CF92UpdateSpritePosition15_Block_4
82labelLabel_CF9BUpdateSpritePosition15_Block_5
83labelLabel_CFA1UpdateSpritePosition15_Block_6
84labelLabel_CFACUpdateSpritePosition17_Block
85labelLabel_CFB8UpdateSpritePosition17_Block_1
86labelLabel_CFCDUpdateSpritePosition18_Block
87labelLabel_CFF9UpdateSpritePosition18_Block_1
88labelLabel_D02AUpdateSpritePosition19_Block
89labelLabel_D04BUpdateSpritePosition21_1_Block
90labelLabel_D063UpdateSpritePosition21_3_Block
91labelLabel_D065UpdateSpritePosition21_3_Block_1
92labelLabel_D074UpdateSpritePosition21_3_Block_2
93labelLabel_D092UpdateSpritePosition22_1_Block
94labelLabel_D0A5UpdateSpritePosition22_1_Block_1
95labelLabel_D0AAUpdateSpritePosition22_1_Block_2
96labelLabel_D0BFUpdateSpritePosition22_3_Block
97labelLabel_D0DDUpdateSpritePosition23_Block
98labelLabel_D0E4UpdateSpritePosition23_Block_1
99labelLabel_D0F4UpdateSpritePosition23_Block_2
100labelLabel_D0F8UpdateSpritePosition23_Block_3
101labelLabel_D101UpdateSpritePosition23_Block_4
102labelLabel_D115UpdateSpritePosition23_Block_5
103labelLabel_D11DUpdateSpritePosition23_Block_6
104labelLabel_D130UpdateSpritePosition24_Block
105labelLabel_D138UpdateSpritePosition24_Block_1
106labelLabel_D139UpdateSpritePosition24_Block_2
107labelLabel_D14BUpdateSpritePosition24_Block_3
108labelLabel_D166UpdateSpritePosition24_Block_4
109labelLabel_D189UpdateSpritePosition26_Block
110labelLabel_D199UpdateSpritePosition26_Block_1
111labelLabel_D1BBUpdateSpritePosition28_Block
112labelLabel_D1C3UpdateSpritePosition29_Block
113labelLabel_D1C6UpdateSpritePosition29_Block_1
114labelLabel_D1C9UpdateSpritePosition29_Block_2
115labelLabel_D1CCUpdateSpritePosition29_Block_3
116labelLabel_D1E2UpdateSpritePosition30_Block
117labelLabel_D1E5UpdateSpritePosition30_Block_1
118labelLabel_D1F3UpdateSpritePosition30_Block_2
119labelLabel_D1F9UpdateSpritePosition30_Block_3
120labelLabel_D205UpdateSpritePosition30_Block_4
121labelLabel_D227UpdateSpritePosition31_Block
122labelLabel_D233UpdateSpritePosition31_Block_1
123labelLabel_D23EUpdateSpritePosition31_Block_2
124labelLabel_D25BUpdateSpritePosition31_Block_3
125labelLabel_D262UpdateSpritePosition31_Block_4
126labelLabel_D26DUpdateSpritePosition31_Block_5
127labelLabel_D288UpdateSpritePosition33_Block
128labelLabel_D2CAUpdateSpritePosition34_Block
129labelLabel_D2DDUpdateSpritePosition35_Block
130labelLabel_D2F0UpdateSpritePosition36_Block
131labelLabel_D34EUpdateSpritePosition40_Block
132labelLabel_D353UpdateSpritePosition40_Block_1
133labelLabel_D35EUpdateSpritePosition40_Block_2
134labelLabel_D365UpdateSpritePosition40_Block_3
135labelLabel_D373UpdateSpritePosition42_1_Block
136labelLabel_D38BUpdateSpritePosition43_Block
137labelLabel_D39CUpdateSpritePosition44_Block
138labelLabel_D3AFUpdateSpritePosition44_Block_1
139labelLabel_D3BBUpdateSpritePosition44_Block_2
140labelLabel_D3CDUpdateSpritePosition44_Block_3
141labelLabel_D3D0UpdateSpritePosition44_Block_4
142labelLabel_D3D2SubCD3D2
143labelLabel_D3E7UpdateSpritePosition44_Block_5
144labelLabel_D3F9UpdateSpritePosition44_Block_6
145labelLabel_D3FBSubCD3FB
146labelLabel_D40DSubCD40D
147labelLabel_D426SubCD40D_Block
148labelLabel_D42CSubCD42C
149labelLabel_D432SubCD432
150labelLabel_D445SubCD432_Block
151labelLabel_D45ASubCD432_Block_1
152labelLabel_D471SubCD432_Block_2
153labelLabel_D476SubCD432_Block_3
154labelLabel_D478SubCD478
155labelLabel_D48BSubCD432_Block_4
156labelLabel_D49DSubCD432_Block_5
157labelLabel_D49FSubCD49F
158labelLabel_D4B1SubCD4B1
159labelLabel_D4C6SubCD4B1_Block
160labelLabel_D4CCSubCD4CC
161labelLabel_D4EDUpdateSpritePosition49_Block
162labelLabel_D4EESubCD4EE
163labelLabel_D4F9SubCD4F9
164labelLabel_D501SubCD501
165labelLabel_D509SubCD501_Block
166labelLabel_D50ASubCD50A
167labelLabel_D544SubCD50A_Block
168labelLabel_D547SubCD547
169labelLabel_D551SubCD547_Block
170labelLabel_D55ASubCD547_Block_1
171labelLabel_D56ASubCD547_Block_2
172labelLabel_D56CSubCD56C
173labelLabel_D570SubCD56C_Block
174labelLabel_D58CSubCD56C_Block_1
175labelLabel_D59ASubCD56C_Block_2
176labelLabel_D5A1SubCD56C_Block_3
177labelLabel_D5AFSubCD56C_Block_4
178labelLabel_D5B3SubCD5B3
179labelLabel_D5CCSubCD5B3_Block
180labelLabel_D5E2SubCD5B3_Block_1
181labelLabel_D5F1SubCD5F1
182labelLabel_D5F6SubCD5F6
183labelLabel_D60DSubCD60D
184labelLabel_D642SubCD60D_Block
185labelLabel_D64FSubCD60D_Block_1
186labelLabel_D697SubCD697
187labelLabel_D6B1SubCD697_Block
188labelLabel_D6B7SubCD6B7
189labelLabel_D6C5SubCD6B7_Block
190labelLabel_D6C6SubCD6C6
191labelLabel_D6CDSubCD6C6_Block
192labelLabel_D6D9SubCD6C6_Block_1
193labelLabel_D6E8SubCD6C6_Block_2
194labelLabel_D6F2SubCD6C6_Block_3
195labelLabel_D6FESubCD6C6_Block_4
196labelLabel_D703SubCD6C6_Block_5
197labelLabel_D705SubCD705
198labelLabel_D70ASubCD6C6_Block_6
199labelLabel_D710SubCD6C6_Block_7
200labelLabel_D713SubCD713
201labelLabel_D732SubCD713_Block
202labelLabel_D73ESubCD713_Block_1
203labelLabel_D74FSubCD713_Block_2
204labelLabel_D753SubCD753
205labelLabel_D767SubCD753_Block
206labelLabel_D769SubCD769
207labelLabel_D786SubCD769_Block
208labelLabel_D795SubCD769_Block_1
209labelLabel_D79BSubCD79B
210labelLabel_D7ADSubCD7AD
211labelLabel_D7B8SubCD7AD_Block
212labelLabel_D7BASubCD7BA
213labelLabel_D7BFSubCD7BF
214labelLabel_D7D3SubCD7BF_Block
215labelLabel_D7DASubCD7DA
216labelLabel_D7F2SubCD7F2
217labelLabel_D800SubCD800
218labelLabel_D805SubCD800_Block
219labelLabel_D80ESubCD800_Block_1
220labelLabel_D81ESubCD800_Block_2
221labelLabel_D827SubCD800_Block_3
222labelLabel_D849SubCD800_Block_4
223labelLabel_D856SubCD800_Block_5
224labelLabel_D867SubCD800_Block_6
225labelLabel_D86FSubCD800_Block_7
226labelLabel_D87DSubCD87D
227labelLabel_D8A7SubCD87D_Block
228labelLabel_D8A8SubCD8A8
229labelLabel_D8ADCheckSpriteListCollision
230labelLabel_D8B9SubCD8B9
231labelLabel_D8E1SubCD8B9_Block
232labelLabel_D8E6SubCD8B9_Block_1
233labelLabel_D8E8SubCD8E8
234labelLabel_D8EBSubCD8EB
235labelLabel_D904SubCD8EB_Block
236labelLabel_D911SubCD8EB_Block_1
237labelLabel_D914SubCD8EB_Block_2
238labelLabel_D917SubCD917
239labelLabel_D91ASubCD91A
240labelLabel_D92DSubCD92D
241labelLabel_D938SubCD91A_Block
242labelLabel_D93BSubCD92D_Block
243labelLabel_D93CSubCD93C
244labelLabel_D964SubCD93C_Block
245labelLabel_D986SubCD93C_Block_1
246labelLabel_D98BSubCD93C_Block_2
247labelLabel_D98DSubCD98D
248labelLabel_D990SubCD990
249labelLabel_D99DSubCD990_Block
250labelLabel_D9AFSubCD990_Block_1
251labelLabel_D9D0SubCD990_Block_2
252labelLabel_D9D4SubCD9D4
253labelLabel_D9E0SubCD9D4_Block
254labelLabel_D9E3SubCD9E3
255labelLabel_D9E6CheckPeriodicEvent
256labelLabel_D9E8SubCD9E8
257labelLabel_D9F5SubCD9E8_Block
258labelLabel_D9F9SubCD9F9
259labelLabel_DA06SubCD9F9_Block
260labelLabel_DA0FSubCDA0F
261labelLabel_DA13SubCDA0F_Block
262labelLabel_DA16UpdateObjectListZp5D
263labelLabel_DA1DUpdateObjectListZp5D_Block
264labelLabel_DA3DUpdateObjectListZp5D_Block_1
265labelLabel_DA40UpdateObjectListZp5D_Block_2
266labelLabel_DA4CDispatchObjectStateZp5E
267labelLabel_DA7DDispatchObjectStateZp5E_Block
268labelLabel_DA80DispatchObjectStateZp5E_Block_1
269labelLabel_DA83DispatchObjectStateZp5E_Block_2
270labelLabel_DA86DispatchObjectStateZp5E_Block_3
271labelLabel_DA89DispatchObjectStateZp5E_Block_4
272labelLabel_DA8FDispatchObjectStateZp5E_Block_5
273labelLabel_DA92DispatchObjectStateZp5E_Block_6
274labelLabel_DA95DispatchObjectStateZp5E_Block_7
275labelLabel_DA98DispatchObjectStateZp5E_Block_8
276labelLabel_DA9CHandleObjectState80
277labelLabel_DAC3HandleObjectState80_Block
278labelLabel_DAD5SubCDAD5
279labelLabel_DAF2SubCDAD5_Block
280labelLabel_DAF7SubCDAF7
281labelLabel_DAFFSubCDAF7_Block
282labelLabel_DB00HandleObjectState81
283labelLabel_DB21HandleObjectState81_Block
284labelLabel_DB2BSubCDB2B
285labelLabel_DB2CHandleObjectState01
286labelLabel_DB34HandleObjectState01_Block
287labelLabel_DB4EHandleObjectState01_Block_1
288labelLabel_DB50SubCDB50
289labelLabel_DBA3SubCDB50_Block
290labelLabel_DBACSubCDB50_Block_1
291labelLabel_DBCDUpdateSpritePosition57_Block
292labelLabel_DBE7SubCDBE7
293labelLabel_DBEDSubCDBE7_Block
294labelLabel_DBEEUpdateObjectAnimationFrame
295labelLabel_DBFBUpdateObjectAnimationFrame_Block
296labelLabel_DC16UpdateObjectAnimationFrame_Block_1
297labelLabel_DC1BUpdateObjectAnimationFrame_Block_2
298labelLabel_DC2BUpdateObjectAnimationFrame_Block_3
299labelLabel_DC2DSubCDC2D
300labelLabel_DC30HandleObjectState02
301labelLabel_DC4FHandleObjectState02_Block
302labelLabel_DC51SubCDC51
303labelLabel_DC68SubCDC51_Block
304labelLabel_DC69HandleObjectState08
305labelLabel_DC71HandleObjectState08_Block
306labelLabel_DC8EHandleObjectState08_Block_1
307labelLabel_DC90SubCDC90
308labelLabel_DCBCSubCDC90_Block
309labelLabel_DCC9SubCDCC9
310labelLabel_DCCFSubCDCC9_Block
311labelLabel_DCD0HandleObjectState10
312labelLabel_DCD8HandleObjectState10_Block
313labelLabel_DCF3SubCDCF3
314labelLabel_DD00HandleObjectState10_Block_1
315labelLabel_DD06SubCDD06
316labelLabel_DD13SubCDD06_Block
317labelLabel_DD25SubCDD06_Block_1
318labelLabel_DD3AUpdateSpritePosition68_Block
319labelLabel_DD59UpdateSpritePosition68_Block_1
320labelLabel_DD60UpdateSpritePosition68_Block_2
321labelLabel_DD6AUpdateSpritePosition68_Block_3
322labelLabel_DD73UpdateSpritePosition68_Block_4
323labelLabel_DD7FSubCDD7F
324labelLabel_DD8BHandleObjectStateC0
325labelLabel_DD98HandleObjectStateC0_Block
326labelLabel_DDABHandleObjectStateC0_Block_1
327labelLabel_DDB0HandleObjectStateC0_Block_2
328labelLabel_DDB2SubCDDB2
329labelLabel_DDC9SubCDDB2_Block
330labelLabel_DDD7SubCDDB2_Block_1
331labelLabel_DDF5SubCDDB2_Block_2
332labelLabel_DE0BSubCDDB2_Block_3
333labelLabel_DE0DSubCDE0D
334labelLabel_DE10SubCDE0D_Block
335labelLabel_DE13SubCDDB2_Block_4
336labelLabel_DE1ASubCDE1A
337labelLabel_DE27SubCDE27
338labelLabel_DE36SubCDE27_Block
339labelLabel_DE50SubCDE27_Block_1
340labelLabel_DE56SubCDE56
341labelLabel_DE68SubCDE56_Block
342labelLabel_DE6ASubCDE6A
343labelLabel_DE73SubCDE73
344labelLabel_DE82SubCDE82
345labelLabel_DE85SubCDE82_Block
346labelLabel_DE86SubCDE86
347labelLabel_DE90SubCDE86_Block
348labelLabel_DE9FSubCDE86_Block_1
349labelLabel_DEA4SubCDEA4
350labelLabel_DEA5SubCDEA5
351labelLabel_DEDCSubCDEA5_Block
352labelLabel_DEE8SubCDEA5_Block_1
353labelLabel_DEEDSubCDEA5_Block_2
354labelLabel_DEF2SubCDEA5_Block_3
355labelLabel_DEFBSubCDEFB
356labelLabel_DF07HandleObjectState40
357labelLabel_DF0FHandleObjectState40_Block
358labelLabel_DF25HandleObjectState40_Block_1
359labelLabel_DF27SubCDF27
360labelLabel_DF35SubCDF27_Block
361labelLabel_DF40SubCDF40
362labelLabel_DF45SubCDF40_Block
363labelLabel_DF4CSubCDF40_Block_1
364labelLabel_DF55SubCDF40_Block_2
365labelLabel_DF5ESubCDF40_Block_3
366labelLabel_DF60SubCDF40_Block_4
367labelLabel_DF6CSubCDF40_Block_5
368labelLabel_DF72SubCDF72
369labelLabel_DF7BSubCDF72_Block
370labelLabel_DF7DSubCDF72_Block_1
371labelLabel_DF89SubCDF72_Block_2
372labelLabel_DF8FSubCDF72_Block_3
373labelLabel_DFADSubCDFAD
374labelLabel_DFB8SubCDFAD_Block
375labelLabel_DFC3SubCDFC3
376labelLabel_DFE3SubCDFC3_Block
377labelLabel_DFE4CheckPeriodicEventForObject
378labelLabel_DFE8SubCDFE8
379labelLabel_DFF7SubCDFE8_Block
380labelLabel_DFFBSubCDFFB
381labelLabel_E008SubCDFFB_Block
382labelLabel_E011SubCE011
383labelLabel_E015SubCE011_Block
384labelLabel_E016FindYRowIndex
385labelLabel_E02FSubCE02F
386labelLabel_E041SubCE02F_Block
387labelLabel_E045SubCE02F_Block_1
388labelLabel_E048SubCE048
389labelLabel_E057SubCE048_Block
390labelLabel_E05ASubCE05A
391labelLabel_E06ASubCE06A
392labelLabel_E079SubCE05A_Block
393labelLabel_E07BSubCE07B
394labelLabel_E08ASubCE07B_Block
395labelLabel_E08DSubCE07B_Block_1
396labelLabel_E090SubCE090
397labelLabel_E09FSubCE090_Block
398labelLabel_E0A1SubCE0A1
399labelLabel_E0ABSubCE0A1_Block
400labelLabel_E0AESubCE0AE
401labelLabel_E0CBSubCE0AE_Block
402labelLabel_E0D1SubCE0AE_Block_1
403labelLabel_E0DDSubCE0AE_Block_2
404labelLabel_E0E9SubCE0AE_Block_3
405labelLabel_E0ECSubCE0EC
406labelLabel_E0F1SubCE0F1
407labelLabel_E107SubCE0F1_Block
408labelLabel_E109SubCE0F1_Block_1
409labelLabel_E10FSubCE10F
410labelLabel_E112SearchTableForByte
411labelLabel_E116SearchTableForByte_Loop
412labelLabel_E124SearchTableForByte_Loop_Block
413labelLabel_E129SearchTableForByte_Loop_Block_1
414labelLabel_E12BSearchTableForByte_Return
415labelLabel_E130SubCE130
416labelLabel_E13ESubCE130_Block
417labelLabel_E141SubCE141
418labelLabel_E166CountObjectTypes
419labelLabel_E16ACountObjectTypes_Block
420labelLabel_E172CountObjectTypes_Loop
421labelLabel_E17FCountObjectTypes_Loop_Block
422labelLabel_E187CountObjectTypes_Loop_Block_1
423labelLabel_E199CountObjectTypes_Loop_Block_2
424labelLabel_E19ASubCE19A
425labelLabel_E19FSubCE19A_Block
426labelLabel_E1BFSubCE19A_Block_1
427labelLabel_E1D5SubCE19A_Block_2
428labelLabel_E1D7SubCE1D7
429labelLabel_E1E0SubCE1E0
430labelLabel_E1E4SubCE1E0_Block
431labelLabel_E1E5InitObjectListZpAE
432labelLabel_E1E9UpdateObjectListZpAE
433labelLabel_E200UpdateObjectListZpAE_Block
434labelLabel_E213UpdateObjectListZpAE_Block_1
435labelLabel_E21FSubCE21F
436labelLabel_E225SubCE225
437labelLabel_E228SubCE225_Block
438labelLabel_E237SubCE225_Block_1
439labelLabel_E24FSubCE225_Block_2
440labelLabel_E250DispatchObjectStateZpAF
441labelLabel_E254DispatchObjectState_Loop
442labelLabel_E280SubCE280
443labelLabel_E28CInitSound_3_Block
444labelLabel_E28FDispatchObjectState_Loop_Block
445labelLabel_E292SubCE292
446labelLabel_E295DispatchObjectState_Loop_Block_1
447labelLabel_E29ADispatchObjectState_Loop_Block_2
448labelLabel_E29CSubCE29C
449labelLabel_E2A1DispatchObjectState_Loop_Block_3
450labelLabel_E2B3DispatchObjectState_Loop_Block_4
451labelLabel_E2B6SubCE2B6
452labelLabel_E2D9SubCE2B6_Block
453labelLabel_E2DDSubCE2DD
454labelLabel_E2EBSubCE2DD_Block
455labelLabel_E2F4SubCE2DD_Block_1
456labelLabel_E2F6SubCE2F6
457labelLabel_E2F9SubCE2F9
458labelLabel_E305SubCE2F9_Block
459labelLabel_E31ASubCE2F9_Block_1
460labelLabel_E323SubCE2F9_Block_2
461labelLabel_E325SubCE325
462labelLabel_E33BSubCE325_Block
463labelLabel_E340SubCE325_Block_1
464labelLabel_E349SubCE325_Block_2
465labelLabel_E34BSubCE34B
466labelLabel_E363SubCE34B_Block
467labelLabel_E365SubCE365
468labelLabel_E368SubCE368
469labelLabel_E374SubCE368_Block
470labelLabel_E385SubCE368_Block_1
471labelLabel_E387SubCE387
472labelLabel_E396SubCE387_Block
473labelLabel_E39BSubCE39B
474labelLabel_E3AASubCE39B_Block
475labelLabel_E3AFSubCE3AF
476labelLabel_E3BASubCE3AF_Block
477labelLabel_E3C0SubCE3C0
478labelLabel_E3CESubCE3C0_Block
479labelLabel_E3DDSubCE3C0_Block_1
480labelLabel_E3E6SubCE3C0_Block_2
481labelLabel_E3EDSubCE3ED
482labelLabel_E408SubCE3ED_Block
483labelLabel_E411SubCE3ED_Block_1
484labelLabel_E413SubCE413
485labelLabel_E41BSubCE41B
486labelLabel_E429SubCE41B_Block
487labelLabel_E436SubCE41B_Block_1
488labelLabel_E44BSubCE44B
489labelLabel_E451SubCE44B_Block
490labelLabel_E466SubCE44B_Block_1
491labelLabel_E46DSubCE46D
492labelLabel_E47ASubCE47A
493labelLabel_E48ESubCE47A_Block
494labelLabel_E49BSubCE47A_Block_1
495labelLabel_E4A8SubCE47A_Block_2
496labelLabel_E4B5SubCE47A_Block_3
497labelLabel_E4C0SubCE47A_Block_4
498labelLabel_E4D3SubCE47A_Block_5
499labelLabel_E4D6SubCE4D6
500labelLabel_E4F9SubCE4D6_Block
501labelLabel_E50CSubCE50C
502labelLabel_E522SubCE50C_Block
503labelLabel_E527SubCE50C_Block_1
504labelLabel_E530SubCE50C_Block_2
505labelLabel_E532SubCE532
506labelLabel_E538SubCE538
507labelLabel_E545SubCE538_Block
508labelLabel_E548SubCE538_Block_1
509labelLabel_E553SubCE538_Block_2
510labelLabel_E564SubCE538_Block_3
511labelLabel_E570SubCE538_Block_4
512labelLabel_E572SubCE572
513labelLabel_E592SubCE592
514labelLabel_E594SubCE594
515labelLabel_E59FSubCE59F
516labelLabel_E5B4SubCE59F_Block
517labelLabel_E5BESubCE59F_Block_1
518labelLabel_E5D9SubCE59F_Block_2
519labelLabel_E5DBSubCE5DB
520labelLabel_E5E5SubCE5DB_Block
521labelLabel_E5E8SubCE5E8
522labelLabel_E5FASubCE5FA
523labelLabel_E60CSubCE5FA_Block
524labelLabel_E60FSubCE5E8_Block
525labelLabel_E611SubCE611
526labelLabel_E620SubCE611_Block
527labelLabel_E623SubCE611_Block_1
528labelLabel_E626SubCE626
529labelLabel_E62FSubCE626_Block
530labelLabel_E640SubCE626_Block_1
531labelLabel_E64DSubCE626_Block_2
532labelLabel_E65DSubCE626_Block_3
533labelLabel_E66DSubCE66D
534labelLabel_E67ASubCE66D_Block
535labelLabel_E68ASubCE66D_Block_1
536labelLabel_E697SubCE697
537labelLabel_E69ESubCE69E
538labelLabel_E6A5SubCE6A5
539labelLabel_E6BCSubCE6A5_Block
540labelLabel_E6C3SubCE6A5_Block_1
541labelLabel_E6C6SubCE6C6
542labelLabel_E6DBSubCE6C6_Block
543labelLabel_E6DESubCE6DE
544labelLabel_E6E3SubCE6DE_Block
545labelLabel_E6F3SubCE6DE_Block_1
546labelLabel_E6FBSubCE6DE_Block_2
547labelLabel_E702SubCE702
548labelLabel_E719SubCE702_Block
549labelLabel_E721SubCE702_Block_1
550labelLabel_E72DSubCE72D
551labelLabel_E72ESubCE702_Block_2
552labelLabel_E735SubCE702_Block_3
553labelLabel_E73CSubCE73C
554labelLabel_E747SubCE747
555labelLabel_E755SubCE747_Block
556labelLabel_E758SubCE758
557labelLabel_E75CSubCE747_Block_1
558labelLabel_E769SubCE747_Block_2
559labelLabel_E770SubCE770
560labelLabel_E790SubCE770_Block
561labelLabel_E79DSubCE770_Block_1
562labelLabel_E7A0SubCE770_Block_2
563labelLabel_E7A3SubCE7A3
564labelLabel_E7AESubCE7A3_Block
565labelLabel_E7E2SubCE7E2
566labelLabel_E7F2SubCE7E2_Block
567labelLabel_E7F9SubCE7E2_Block_1
568labelLabel_E806AdvancePatternBit
569labelLabel_E815AdvancePatternBit_Block
570labelLabel_E819ReadPatternBit
571labelLabel_E826ReadPatternBit_Block
572labelLabel_E82FReadPatternBit_Return
573labelLabel_E833ReadPatternBit_Return_Block
574labelLabel_E834SubCE834
575labelLabel_E84BSubCE834_Block
576labelLabel_E84FSubCE84F
577labelLabel_E86ASubCE84F_Block
578labelLabel_E889SubCE84F_Block_1
579labelLabel_E890SubCE890
580labelLabel_E89BSubCE890_Block
581labelLabel_E8A4SubCE890_Block_1
582labelLabel_E8A9SubCE84F_Block_2
583labelLabel_E8C4SubCE84F_Block_3
584labelLabel_E8E3SubCE84F_Block_4
585labelLabel_E8EASubCE8EA
586labelLabel_E8F8SubCE8EA_Block
587labelLabel_E8FCSubCE8EA_Block_1
588labelLabel_E901SubCE8EA_Block_2
589labelLabel_E90ESubCE84F_Block_5
590labelLabel_E918SubCE918
591labelLabel_E92ESubCE918_Block
592labelLabel_E93BSubCE84F_Block_6
593labelLabel_E945SubCE945
594labelLabel_E95BSubCE945_Block
595labelLabel_E967SubCE945_Block_1
596labelLabel_E968SubCE968
597labelLabel_E971SubCE971
598labelLabel_E97ASetSpritePairY
599labelLabel_E981SubCE981
600labelLabel_E986SubCE986
601labelLabel_E9B4SubCE986_Block
602labelLabel_E9BESubCE986_Block_1
603labelLabel_E9DASubCE9DA
604labelLabel_E9EASubCE9EA
605labelLabel_E9F0SubCE986_Block_2
606labelLabel_E9F3SubCE9F3
607labelLabel_EA00SubCE9F3_Block
608labelLabel_EA01SubCEA01
609labelLabel_EA11SubCEA01_Block
610labelLabel_EA2ASubCEA01_Block_1
611labelLabel_EA34SubCEA34
612labelLabel_EA5ESubCEA34_Block
613labelLabel_EA5FSubCEA5F
614labelLabel_EA64SubCEA5F_Block
615labelLabel_EA72SubCEA5F_Block_1
616labelLabel_EA88SubCEA5F_Block_2
617labelLabel_EA8ASubCEA8A
618labelLabel_EAA0SubCEA8A_Block
619labelLabel_EAA1AdvancePatternBitAlt
620labelLabel_EAAEAdvancePatternBitAlt_Block
621labelLabel_EAB2ReadPatternBitAlt
622labelLabel_EABFReadPatternBitAlt_Block
623labelLabel_EAC8ReadPatternBitAlt_Return
624labelLabel_EACCReadPatternBitAlt_Return_Block
625labelLabel_EACDClearSpriteDestOffset
626labelLabel_EAD4SetSpriteTile
627labelLabel_EAD6SetSpriteSize
628labelLabel_EADBSetSpriteSizeAndDraw
629labelLabel_EAE1LoadSprite0Position
630labelLabel_EAECLoadSpritePosition
631labelLabel_EAF7SubCEAF7
632labelLabel_EB05SubCEAF7_Block
633labelLabel_EB06SubCEB06
634labelLabel_EB0CSubCEB06_Block
635labelLabel_EB2BSubCEB2B
636labelLabel_EB32SubCEB2B_Block
637labelLabel_EB39SubCEB2B_Block_1
638labelLabel_EB40SubCEB2B_Block_2
639labelLabel_EB47SubCEB2B_Block_3
640labelLabel_EB4ESubCEB2B_Block_4
641labelLabel_EB4FSubCEB06_Block_1
642labelLabel_EB54SubCEB06_Block_2
643labelLabel_EB6FSubCEB06_Block_3
644labelLabel_EB74SubCEB06_Block_4
645labelLabel_EB7BSubCEB06_Block_5
646labelLabel_EB85SubCEB85
647labelLabel_EB89SubCEB89
648labelLabel_EB8ESubCEB8E
649labelLabel_EB92SubCEB92
650labelLabel_EB97SubCEB97
651labelLabel_EB9CSubCEB9C
652labelLabel_EBA1SubCEBA1
653labelLabel_EBA6SubCEBA6
654labelLabel_EBA8SubCEBA8
655labelLabel_EBB6SubCEBB6
656labelLabel_EBBBSubCEBB6_Block
657labelLabel_EBC4SubCEBB6_Block_1
658labelLabel_EBDASubCEBDA
659labelLabel_EBEDSubCEBDA_Block
660labelLabel_EC03SubCEBDA_Block_1
661labelLabel_EC0ASubCEBDA_Block_2
662labelLabel_EC12SubCEC12
663labelLabel_EC16SubCEBDA_Block_3
664labelLabel_EC29SubCEC29
665labelLabel_EC3BSubCEC29_Block
666labelLabel_EC3ESubCEC29_Block_1
667labelLabel_EC44SubCEC44
668labelLabel_EC48SubCEC48
669labelLabel_EC5BSubCEC48_Block
670labelLabel_EC76SubCEC48_Block_1
671labelLabel_EC97SubCEC97
672labelLabel_ECA7SubCEC48_Block_2
673labelLabel_ECAFSubCEC97_Block
674labelLabel_ECBESubCEC97_Block_1
675labelLabel_ECBFSubCECBF
676labelLabel_ECC6SubCECBF_Block
677labelLabel_ECD1SubCECBF_Block_1
678labelLabel_ECD3SubCECD3
679labelLabel_ECE8SubCECD3_Block
680labelLabel_ECF7SubCECD3_Block_1
681labelLabel_ECFDSubCECFD
682labelLabel_ED07SubCED07
683labelLabel_ED16SubCED16
684labelLabel_ED34SubCED07_Block
685labelLabel_ED38SubCED38
686labelLabel_ED57SubCED38_Block
687labelLabel_ED74SubCED38_Block_1
688labelLabel_ED85SubCED38_Block_2
689labelLabel_ED87SubCED87
690labelLabel_ED8ASubCED8A
691labelLabel_ED93SubCED93
692labelLabel_EDADSubCED93_Block
693labelLabel_EDB5SubCED93_Block_1
694labelLabel_EDC4SubCED93_Block_2
695labelLabel_EDC5SubCEDC5
696labelLabel_EDD2SubCEDC5_Block
697labelLabel_EDEBSubCEDEB
698labelLabel_EE07SubCEDEB_Block
699labelLabel_EE0BSubCEDEB_Block_1
700labelLabel_EE0CSubCEE0C
701labelLabel_EE1ASubCEE0C_Block
702labelLabel_EE26SubCEE0C_Block_1
703labelLabel_EE29SubCEE29
704labelLabel_EE38SubCEE29_Block
705labelLabel_EE51SubCEE29_Block_1
706labelLabel_EE5CSubCEE29_Block_2
707labelLabel_EE6CSetSpriteAttributes
708labelLabel_EE79CheckPlayerCollision
709labelLabel_EE80CheckPlayerCollision_Block
710labelLabel_EE8DSubCEE8D
711labelLabel_EED8SubCEE8D_Block
712labelLabel_EED9SubCEE8D_Block_1
713labelLabel_EEE6SubCEE8D_Block_2
714labelLabel_EEE7SubCEE8D_Block_3
715labelLabel_EEF0SubCEE8D_Block_4
716labelLabel_EEF7SubCEEF7
717labelLabel_EF2ESubCEEF7_Block
718labelLabel_EF2FSubCEEF7_Block_1
719labelLabel_EF38SubCEF38
720labelLabel_EF51SubCEF51
721labelLabel_EF71SubCEF51_Block
722labelLabel_EF72SubCEF72
723labelLabel_EF87SubCEF72_Block
724labelLabel_EF89SubCEF89
725labelLabel_EF94SubCEF72_Block_1
726labelLabel_EFA0SubCEF72_Block_2
727labelLabel_EFA2SubCEFA2
728labelLabel_EFADSubCEFAD
729labelLabel_EFD5ComputeOamOffsetFromZp5D
730labelLabel_EFD7SubCEFD7
731labelLabel_EFDDComputeOamOffsetFromZpAE
732labelLabel_EFE2ComputeOamOffset
733labelLabel_EFE8LoadObjectRect
734labelLabel_EFEBSubCEFEB
735labelLabel_EFEFCheckObjectOverlap
736labelLabel_EFF3SubCEFF3
737labelLabel_EFF5SubCEFF3_Block
738labelLabel_F018SubCEFF3_Block_1
739labelLabel_F057SubCEFF3_Block_2
740labelLabel_F059SubCF059
741labelLabel_F062SubCF062
742labelLabel_F063ReadPtrBytePlusZp00
743labelLabel_F069ReadPtrBytePlusZp01
744labelLabel_F070SubCF070
745labelLabel_F075SubCF075
746labelLabel_F078DrawSpriteByMode
747labelLabel_F080SetSpriteDrawOffset
748labelLabel_F082DrawSpritePatternMode0
749labelLabel_F086SetSpriteDrawOffsetMode1
750labelLabel_F088DrawSpritePatternMode1
751labelLabel_F08CSetSpriteDrawOffsetMode4
752labelLabel_F08EDrawSpritePatternMode4
753labelLabel_F092SetSpritePatternParams
754labelLabel_F094DrawSpritePatternMode15
755labelLabel_F096DrawSpritePattern
756labelLabel_F0CBDrawSpritePattern_Block
757labelLabel_F0DCDrawSpritePattern_Block_1
758labelLabel_F0E6DrawSpritePattern_Block_2
759labelLabel_F0E9SubCF0E9
760labelLabel_F0EFDrawSpritePattern_Block_3
761labelLabel_F0F2DrawSpritePatternReturn
762labelLabel_F10AHideSpriteRange
763labelLabel_F10EHideSpriteRange_Block
764labelLabel_F11EDrawSpriteTileRun
765labelLabel_F124DrawSpriteTileRun_Block
766labelLabel_F139DrawSpriteGrid
767labelLabel_F13BDrawSpriteGrid_Block
768labelLabel_F141DrawSpriteGrid_Block_1
769labelLabel_F161DrawSpriteMaskedGrid
770labelLabel_F16ADrawSpriteMaskedGrid_Block
771labelLabel_F16FDrawSpriteMaskedGrid_Block_1
772labelLabel_F195HideSpriteGrid
773labelLabel_F197HideSpriteGrid_Block
774labelLabel_F19FHideSpriteGrid_Block_1
775labelLabel_F1B4ClearNametable
776labelLabel_F1CEClearNametable_Block
777labelLabel_F1E5ClearNametable_Block_1
778labelLabel_F1ECFlushPpuBuffer_Block
779labelLabel_F202FlushPpuBuffer_Block_1
780labelLabel_F20EFlushPpuBuffer_Block_2
781labelLabel_F211FlushPpuBuffer_Block_3
782labelLabel_F214FlushPpuBuffer_Block_4
783labelLabel_F228FlushPpuBuffer
784labelLabel_F23CDrawLevelBlocks
785labelLabel_F23FDrawLevelBlocks_Block
786labelLabel_F248DrawLevelBlocks_Block_1
787labelLabel_F24EDrawLevelBlock
788labelLabel_F28EDrawLevelBlock_Block
789labelLabel_F296DrawLevelBlock_Block_1
790labelLabel_F29ADrawLevelBlock_Block_2
791labelLabel_F2B0DrawLevelBlock_Block_3
792labelLabel_F2B4DrawLevelBlock_Block_4
793labelLabel_F2BEDrawLevelBlock_Block_5
794labelLabel_F2C4DrawLevelBlock_Block_6
795labelLabel_F2D6DrawLevelBlock_Block_7
796labelLabel_F2D7DrawVramBlock
797labelLabel_F2EADrawVramBlock_Block
798labelLabel_F303DrawVramBlock_Block_1
799labelLabel_F32DAdvancePpuBufferWrite
800labelLabel_F32FCheckPpuBufferOverflow
801labelLabel_F33DCheckPpuBufferOverflow_Block
802labelLabel_F33ESubtractBcdValue
803labelLabel_F342AddBcdValue
804labelLabel_F344AddBcdValue_Block
805labelLabel_F355AddBcdValue_Block_1
806labelLabel_F35EApplyBcdAddSub
807labelLabel_F36BApplyBcdAddSub_Block
808labelLabel_F38EApplyBcdAddSub_Block_1
809labelLabel_F392ApplyBcdAddSub_Block_2
810labelLabel_F3C0ApplyBcdAddSub_Block_3
811labelLabel_F3C6ApplyBcdAddSub_Block_4
812labelLabel_F3E2ApplyBcdAddSub_Block_5
813labelLabel_F3E3AddBcdNibble
814labelLabel_F3EEAddBcdNibble_Block
815labelLabel_F3FBAddBcdNibble_Block_1
816labelLabel_F3FFAddBcdNibble_Block_2
817labelLabel_F404SubtractBcdNibble
818labelLabel_F417SubtractBcdNibble_Block
819labelLabel_F423SubtractBcdNibble_Block_1
820labelLabel_F426SplitBcdByte
821labelLabel_F435CompareBcdValues
822labelLabel_F44ACompareBcdValues_Block
823labelLabel_F453CompareBcdValues_Block_1
824labelLabel_F479CompareBcdValues_Block_2
825labelLabel_F47ECompareBcdValues_Block_3
826labelLabel_F493CompareBcdValues_Block_4
827labelLabel_F49FCompareBcdValues_Block_5
828labelLabel_F4A0CompareBcdValues_Block_6
829labelLabel_F4A4CompareBcdValues_Block_7
830labelLabel_F4A9CompareBcdValues_Block_8
831labelLabel_F4ACUpdateTimers
832labelLabel_F4B8UpdateTimers_Block
833labelLabel_F4BEUpdateTimers_Block_1
834labelLabel_F4C2QueuePpuByteWrite
835labelLabel_F4EDUpdateRandomSeed
836labelLabel_F4FDUpdateRandomSeed_Block
837labelLabel_F50EReadControllers
838labelLabel_F522ReadControllerShift
839labelLabel_F524ReadControllerShift_Block
840labelLabel_F549ReadControllerShift_Block_1
841labelLabel_F55AReadControllerShift_Block_2
842labelLabel_FA48UpdateSoundEngine
843labelLabel_FA64UpdateSoundEngine_Block
844labelLabel_FA6BUpdateSoundEngine_Block_1
845labelLabel_FA7FUpdateSoundEngine_Block_2
846labelLabel_FA82UpdateSoundEngine_Block_3
847labelLabel_FA86FindHighestSetBit
848labelLabel_FA88FindHighestSetBit_Block
849labelLabel_FA8EFindHighestSetBit_Block_1
850labelLabel_FA8FSubCFA8F
851labelLabel_FA93WritePulse1ControlDefault
852labelLabel_FA95WritePulse1Control
853labelLabel_FA9FWriteNoteFrequency
854labelLabel_FAA1WriteTriangleNote_Block
855labelLabel_FAB2WriteTriangleNote_Block_1
856labelLabel_FAB3WritePulse2Note
857labelLabel_FABAWriteTriangleNote
858labelLabel_FAC4DecodeNotePeriod
859labelLabel_FACALookupNotePeriod
860labelLabel_FAD5SubCFAD5
861labelLabel_FAD7SubCFAD7
862labelLabel_FAE0SilencePulse1
863labelLabel_FB75ProcessSoundCommands_Block
864labelLabel_FB7EProcessSoundCommands_Block_1
865labelLabel_FB89ProcessSoundCommands_Block_2
866labelLabel_FBA0ProcessSoundCommands_Block_3
867labelLabel_FBA7ProcessSoundCommands_Block_4
868labelLabel_FBAFProcessSoundCommands_Block_5
869labelLabel_FBB2ProcessSoundCommands_Block_6
870labelLabel_FBB7ProcessSoundCommands_Block_7
871labelLabel_FBC2ProcessSoundCommands_Block_8
872labelLabel_FBD4ProcessSoundCommands_Block_9
873labelLabel_FBD9ProcessSoundCommands_Block_10
874labelLabel_FBF2ProcessSoundCommands
875labelLabel_FC16ProcessSoundCommands_Block_11
876labelLabel_FC19ProcessSoundCommands_Block_12
877labelLabel_FC28ProcessSoundCommands_Block_13
878labelLabel_FC30ProcessSoundCommands_Block_14
879labelLabel_FC41ProcessSoundCommands_Block_15
880labelLabel_FC44ProcessSoundCommands_Block_16
881labelLabel_FC4BProcessSoundCommands_Block_17
882labelLabel_FC51ProcessSoundCommands_Block_18
883labelLabel_FC62ProcessSoundCommands_Block_19
884labelLabel_FC73SubCFC90_Block
885labelLabel_FC7FSubCFC90_Block_1
886labelLabel_FC90SubCFC90
887labelLabel_FC9DSubCFC90_Block_2
888labelLabel_FCBASubCFC90_Block_3
889labelLabel_FCBESubCFC90_Block_4
890labelLabel_FCC6SubCFC90_Block_5
891labelLabel_FCD1SubCFC90_Block_6
892labelLabel_FCDBSubCFC90_Block_7
893labelLabel_FCDDSubCFC90_Block_8
894labelLabel_FCF0SubCFC90_Block_9
895labelLabel_FD00SubCFC90_Block_10
896labelLabel_FD0BSubCFC90_Block_11
897labelLabel_FD18SubCFC90_Block_12
898labelLabel_FD1DSubCFC90_Block_13
899labelLabel_FD35SubCFC90_Block_14
900labelLabel_FD3ASubCFC90_Block_15
901labelLabel_FD58SubCFC90_Block_16
902labelLabel_FD62SubCFC90_Block_17
903labelLabel_FD67InitSoundEffect
904labelLabel_FD9BInitSoundEffect_Block
905labelLabel_FDA4InitSoundEffect_Block_1
906labelLabel_FDB8InitSoundEffect_Block_2
907labelLabel_FDC1InitSoundEffect_Block_3
908labelLabel_FDCFInitSoundEffect_Block_4
909labelLabel_FDD8InitSoundEffect_Block_5
910labelLabel_FDE9InitSoundEffect_Block_6
911labelLabel_FE00SilenceTriangleAndNoise
912labelLabel_FE03SilenceTriangleAndNoise_Block
913labelLabel_FE09InitSoundEffect_Block_7
914labelLabel_FE1DInitSoundEffect_Block_8
915labelLabel_FE2EInitSoundEffect_Block_9
916labelLabel_FE31InitSoundEffect_Block_10
917labelLabel_FE4FInitSoundEffect_Block_11
918labelLabel_FE55InitSoundEffect_Block_12
919labelLabel_FE58InitSoundEffect_Block_13
920zpZp00TempPtrLo
921zpZp01TempPtrHi
922zpZp02TempReg
923zpZp03TempReg2
924zpZp04TempReg3
925zpZp05TempReg3
926zpZp06TempReg4
927zpZp07TempReg5
928zpZp08TempReg6
929zpZp09TempReg7
930zpZp0ATempReg8
931zpZp0BTempReg9
932zpZp0CTempReg10
933zpZp0DTempReg11
934zpZp0ETempReg12
935zpZp0FTempReg13
936zpZp10PPUCtrlShadow
937zpZp11PPUMaskShadow
938zpZp12PPUScrollX
939zpZp13PPUScrollY
940zpZp10PPUCtrlShadow
941zpZp11PPUMaskShadow
942zpZp12PPUScrollX
943zpZp13PPUScrollY
944zpZp14TempReg14
945zpZp15TempReg15
946zpZp16TempReg16
947zpZp17TempReg17
948zpZp18TempReg18
949zpZp19TempReg19
950zpZp1ATempReg20
951zpZp1BTempReg21
952zpZp1CTempReg22
953zpZp1DTempReg23
954zpZp1ETempReg24
955zpZp1FTempReg25
956zpZp20TempReg26
957zpZp21TempReg27
958zpZp22TempReg28
959zpZp23TempReg29
960zpZp24TempReg30
961zpZp25TempReg31
962zpZp26TempReg32
963zpZp27TempReg33
964zpZp28TempReg34
965zpZp29TempReg35
966zpZp2ATempReg36
967zpZp2BTempReg37
968zpZp2CTempReg38
969zpZp2DTempReg39
970zpZp2ETempReg40
971zpZp2FTempReg41
972zpZp2FTempReg42
973zpZp30TempReg43
974zpZp31TempReg44
975zpZp32TempReg45
976zpZp33TempReg46
977zpZp34TempReg47
978zpZp35TempReg48
979zpZp36TempReg49
980zpZp37TempReg50
981zpZp38TempReg51
982zpZp39TempReg52
983zpZp3ATempReg53
984zpZp3BTempReg54
985zpZp3CTempReg55
986zpZp3DTempReg56
987zpZp3ETempReg57
988zpZp3FTempReg58
989zpZp40TempReg59
990zpZp41TempReg60
991zpZp42TempReg61
992zpZp43TempReg62
993zpZp44TempReg63
994zpZp45TempReg64
995zpZp46TempReg65
996zpZp47TempReg66
997zpZp48TempReg67
998zpZp49TempReg68
999zpZp4ATempReg69
1000zpZp4BTempReg70
1001zpZp4CTempReg71
1002zpZp4DTempReg72
1003zpZp4ETempReg73
1004zpZp4FTempReg74
1005zpZp50TempReg75
1006zpZp51TempReg76
1007zpZp52TempReg77
1008zpZp53TempReg78
1009zpZp54TempReg79
1010zpZp55TempReg80
1011zpZp56TempReg81
1012zpZp57TempReg82
1013zpZp58TempReg83
1014zpZp59TempReg84
1015zpZp5ATempReg85
1016zpZp5BTempReg86
1017zpZp5CTempReg87
1018zpZp5DTempReg88
1019zpZp5ETempReg89
1020zpZp5FTempReg90
1021zpZp5FTempReg91
1022zpZp60TempReg92
1023zpZp61TempReg93
1024zpZp62TempReg94
1025zpZp63TempReg95
1026zpZp64TempReg96
1027zpZp65TempReg96
1028zpZp66TempReg97
1029zpZp67TempReg98
1030zpZp68TempReg99
1031zpZp69TempReg100
1032zpZp6ATempReg101
1033zpZp6BTempReg102
1034zpZp6CTempReg103
1035zpZp6DTempReg104
1036zpZp6ETempReg105
1037zpZp6FTempReg106
1038zpZp70TempReg107
1039zpZp71TempReg108
1040zpZp72TempReg109
1041zpZp73TempReg110
1042zpZp74TempReg111
1043zpZp75TempReg111
1044zpZp76TempReg112
1045zpZp77TempReg113
1046zpZp78TempReg114
1047zpZp79TempReg115
1048zpZp7ATempReg116
1049zpZp7BTempReg117
1050zpZp7CTempReg118
1051zpZp7DTempReg119
1052zpZp7ETempReg120
1053zpZp7FTempReg121
1054zpZp80TempReg122
1055zpZp81TempReg123
1056zpZp82TempReg124
1057zpZp83TempReg125
1058zpZp84TempReg126
1059zpZp85TempReg127
1060zpZp86TempReg128
1061zpZp87TempReg129
1062zpZp88TempReg130
1063zpZp89TempReg131
1064zpZp8ATempReg132
1065zpZp8BTempReg133
1066zpZp8CTempReg134
1067zpZp8DTempReg135
1068zpZp8ETempReg136
1069zpZp8FTempReg137
1070zpZp90TempReg138
1071zpZp91TempReg139
1072zpZp92TempReg140
1073zpZp93TempReg141
1074zpZp94TempReg141
1075zpZp95TempReg142
1076zpZp96TempReg143
1077zpZp97TempReg144
1078zpZp98TempReg145
1079zpZp99TempReg146
1080zpZp9ATempReg147
1081zpZp9BTempReg148
1082zpZp9CTempReg149
1083zpZp9DTempReg150
1084zpZp9ETempReg151
1085zpZp9FTempReg152
1086zpZpA0TempReg153
1087zpZpA1TempReg154
1088zpZpA2TempReg155
1089zpZpA3TempReg156
1090zpZpA4TempReg157
1091zpZpA5TempReg158
1092zpZpA6TempReg159
1093zpZpA7TempReg160
1094zpZpA8TempReg161
1095zpZpA9TempReg162
1096zpZpAATempReg163
1097zpZpABTempReg164
1098zpZpACTempReg165
1099zpZpADTempReg166
1100zpZpAETempReg167
1101zpZpAFTempReg168
1102zpZpB0TempReg169
1103zpZpB1TempReg170
1104zpZpB2TempReg171
1105zpZpB3TempReg172
1106zpZpB4TempReg173
1107zpZpB5TempReg174
1108zpZpB6TempReg175
1109zpZpB7TempReg176
1110zpZpB8TempReg177
1111zpZpB9TempReg177
1112zpZpBATempReg178
1113zpZpBBTempReg179
1114zpZpBCTempReg180
1115zpZpBDTempReg181
1116zpZpBETempReg182
1117zpZpBFTempReg183
1118zpZpC0TempReg184
1119zpZpC1TempReg185
1120zpZpC2TempReg186
1121zpZpC3TempReg187
1122zpZpC4TempReg188
1123zpZpC5TempReg189
1124zpZpC6TempReg190
1125zpZpC7TempReg191
1126zpZpC8TempReg192
1127zpZpC9TempReg193
1128zpZpCATempReg194
1129zpZpCBTempReg195
1130zpZpCCTempReg196
1131zpZpCDTempReg197
1132zpZpCETempReg198
1133zpZpCFTempReg199
1134zpZpD0TempReg185
1135zpZpD1TempReg186
1136zpZpD2TempReg187
1137zpZpD3TempReg188
1138zpZpD4TempReg189
1139zpZpD5TempReg190
1140zpZpD6TempReg191
1141zpZpD7TempReg192
1142zpZpD8TempReg193
1143zpZpD9TempReg194
1144zpZpDATempReg195
1145zpZpDBTempReg196
1146zpZpDCTempReg197
1147zpZpDDTempReg198
1148zpZpDETempReg199
1149zpZpDFTempReg200
1150zpZpE0TempReg201
1151zpZpE1TempReg202
1152zpZpE2TempReg203
1153zpZpE3TempReg204
1154zpZpE4TempReg205
1155zpZpE5TempReg206
1156zpZpE6TempReg207
1157zpZpE7TempReg208
1158zpZpE8TempReg209
1159zpZpE9TempReg210
1160zpZpEATempReg211
1161zpZpEBTempReg212
1162zpZpECTempReg213
1163zpZpEDTempReg214
1164zpZpEETempReg215
1165zpZpEFTempReg216
1166zpZpF0TempReg217
1167zpZpF1TempReg218
1168zpZpF2TempReg219
1169zpZpF3TempReg220
1170zpZpF4TempReg221
1171zpZpF5TempReg222
1172zpZpF6TempReg223
1173zpZpF7TempReg224
1174zpZpF8TempReg225
1175zpZpF9TempReg226
1176zpZpFATempReg227
1177zpZpFBTempReg228
1178zpZpFCTempReg229
1179zpZpFDTempReg230
1180zpZpFETempReg231
1181zpZpFFTempReg232
1182zpZp00Zp00
1183zpZp01Zp01
1184zpZp02Zp02
1185zpZp03Zp03
1186zpZp04Zp04
1187zpZp05Zp05
1188zpZp06Zp06
1189zpZp07Zp07
1190zpZp08Zp08
1191zpZp09Zp09
1192zpZp0AZp0A
1193zpZp0BZp0B
1194zpZp0CZp0C
1195zpZp0FZp0F
1196zpZp10Zp10
1197zpZp11Zp11
1198zpZp12Zp12
1199zpZp13Zp13
1200zpZp14Zp14
1201zpZp15Zp15
1202zpZp18Zp18
1203zpZp19Zp19
1204zpZp1AZp1A
1205zpZp1BZp1B
1206zpZp1CZp1C
1207zpZp1DZp1D
1208zpZp1EZp1E
1209zpZp1FZp1F
1210zpZp20Zp20
1211zpZp21Zp21
1212zpZp22Zp22
1213zpZp23Zp23
1214zpZp24Zp24
1215zpZp25Zp25
1216zpZp26Zp26
1217zpZp27Zp27
1218zpZp2CZp2C
1219zpZp2EZp2E
1220zpZp34Zp34
1221zpZp35Zp35
1222zpZp36Zp36
1223zpZp37Zp37
1224zpZp38Zp38
1225zpZp39Zp39
1226zpZp3AZp3A
1227zpZp3BZp3B
1228zpZp3FZp3F
1229zpZp40Zp40
1230zpZp41Zp41
1231zpZp43Zp43
1232zpZp44Zp44
1233zpZp45Zp45
1234zpZp46Zp46
1235zpZp47Zp47
1236zpZp48Zp48
1237zpZp49Zp49
1238zpZp4AZp4A
1239zpZp4BZp4B
1240zpZp4CZp4C
1241zpZp4DZp4D
1242zpZp4EZp4E
1243zpZp4FZp4F
1244zpZp50Zp50
1245zpZp51Zp51
1246zpZp52Zp52
1247zpZp53Zp53
1248zpZp54Zp54
1249zpZp55Zp55
1250zpZp56Zp56
1251zpZp57Zp57
1252zpZp58Zp58
1253zpZp59Zp59
1254zpZp5AZp5A
1255zpZp5BZp5B
1256zpZp5CZp5C
1257zpZp5DZp5D
1258zpZp5EZp5E
1259zpZp68Zp68
1260zpZp72Zp72
1261zpZp7DZp7D
1262zpZp7EZp7E
1263zpZp85Zp85
1264zpZp86Zp86
1265zpZp88Zp88
1266zpZp8AZp8A
1267zpZp94Zp94
1268zpZp95Zp95
1269zpZp96Zp96
1270zpZp97Zp97
1271zpZp98Zp98
1272zpZp99Zp99
1273zpZp9AZp9A
1274zpZp9BZp9B
1275zpZp9CZp9C
1276zpZp9DZp9D
1277zpZp9EZp9E
1278zpZp9FZp9F
1279zpZpA0ZpA0
1280zpZpA1ZpA1
1281zpZpA2ZpA2
1282zpZpA3ZpA3
1283zpZpADZpAD
1284zpZpAEZpAE
1285zpZpAFZpAF
1286zpZpB3ZpB3
1287zpZpB7ZpB7
1288zpZpB8ZpB8
1289zpZpB9ZpB9
1290zpZpBEZpBE
1291zpZpBFZpBF
1292zpZpC0ZpC0
1293zpZpC1ZpC1
1294zpZpC2ZpC2
1295zpZpCCZpCC
1296zpZpCDZpCD
1297zpZpCEZpCE
1298zpZpCFZpCF
1299zpZpD0ZpD0
1300zpZpD2ZpD2
1301zpZpD3ZpD3
1302zpZpD4ZpD4
1303zpZpD5ZpD5
1304zpZpD8ZpD8
1305zpZpD9ZpD9
1306zpZpDAZpDA
1307zpZpDBZpDB
1308zpZpE0ZpE0
1309zpZpE4ZpE4
1310zpZpE8ZpE8
1311zpZpECZpEC
1312zpZpF0ZpF0
1313zpZpF1ZpF1
1314zpZpF2ZpF2
1315zpZpF3ZpF3
1316zpZpF5ZpF5
1317zpZpF6ZpF6
1318zpZpF7ZpF7
1319zpZpF8ZpF8
1320zpZpF9ZpF9
1321zpZpFAZpFA
1322zpZpFBZpFB
1323zpZpFCZpFC
1324zpZpFDZpFD
1325zpZpFEZpFE
1326zpZpFFZpFF