Standardizes build process and adds OVERVIEW.md for each
This commit is contained in:
1 parent
25423d3828
commit
a29b03b00b
135 files changed
+26562
-420
No files matched your search
@@ -0,0 +1,364 @@
|
||||
# Burger Time (U) — Game Flow from Power-On
|
||||
|
||||
This document describes the execution flow of the disassembled Burger Time (U) PRG bank (16 KB, mapped at CPU **$C000–$FFFF**), starting from power-on. It is based entirely on `copilot/prg.s` in the repository. The rebuild is verified **byte-identical** to the original `burger_time.nes`.
|
||||
|
||||
---
|
||||
|
||||
## 1. ROM and Memory Layout
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| Format | iNES / NES 2.0 |
|
||||
| PRG | 1 × 16 KB (mapped at CPU $C000–$FFFF) |
|
||||
| CHR | 1 × 8 KB |
|
||||
| Mirroring | Horizontal |
|
||||
| PRG bank start | CPU $C000 |
|
||||
| Source files | `copilot/prg.s` (9,323 lines), `copilot/header.s`, `copilot/chr.s` |
|
||||
| Output | `burger_time_rebuilt.nes` (24,592 bytes) |
|
||||
|
||||
### Interrupt vectors (CPU $FFFA–$FFFF)
|
||||
|
||||
| Vector | Address | Handler |
|
||||
|--------|---------|---------|
|
||||
| NMI | $FF7F | `NmiHandler` |
|
||||
| RESET | $FD24 | `ResetHandler` |
|
||||
| IRQ / BRK | $FD24 | `ResetHandler` (reused) |
|
||||
|
||||
---
|
||||
|
||||
## 2. Build Status
|
||||
|
||||
`make` in `copilot/` assembles `header.s`, `prg.s`, and `chr.s`, links them via `ld65`, and verifies the result against `burger_time.nes`.
|
||||
|
||||
**Verification result: BYTE-IDENTICAL** — headers, CHR, and all PRG bytes match exactly.
|
||||
|
||||
Note: the Makefile references `burger_time.nes`, while the actual ROM file is named `Burger Time (U) [!].nes`. A symlink `burger_time.nes → "../Burger Time (U) [!].nes"` is required before building.
|
||||
|
||||
---
|
||||
|
||||
## 3. Reset — CPU $FFFC → $FD24
|
||||
|
||||
**`ResetHandler`** ($FD24)
|
||||
|
||||
On power-on or reset:
|
||||
|
||||
1. `sei` — disable maskable interrupts.
|
||||
2. `cld` — clear decimal mode.
|
||||
3. `lda #$00 / sta PPUCTRL / sta PPUMASK` — disable PPU rendering and NMI.
|
||||
4. **Wait for two VBlanks** — `Flow_FD2E` and `Flow_FD33` each poll `PPUSTATUS` ($2002) for the VBlank bit.
|
||||
5. `jsr SetDefaultScroll` ($FFEB) — set scroll to ($08, $00).
|
||||
6. `FrameCounter` ($14) = $00; `FrameCounterReload` ($13) = $08.
|
||||
7. `JOY2` ($4017) = $80 — select controller latch mode / disable IRQ.
|
||||
8. Stack pointer = $FF.
|
||||
9. `jsr InitializeRuntimeState` ($FD63) — clear NmiCompletedFlag ($0E), GameMode ($4C), PendingFrameTask ($8F), PlayerDeathFlag ($4F), StageCompleteFlag ($4E); set PPUCTRL shadow to $90; clear nametables; load initial palette; wait for NMI; set PPUMASK shadow to $1A.
|
||||
10. `jsr InitializeGameSystems` ($C00E) — process game state at $C76E and $CB53; set up initial OAM positions ($0700=$70, $0701=$10); clear $32; call `SetMainState` to enter the first state.
|
||||
11. Falls into **`Flow_FD4F`** ($FD4F) — the main loop.
|
||||
|
||||
---
|
||||
|
||||
## 4. Main Loop — State Machine at $FD4F
|
||||
|
||||
**`Flow_FD4F`** ($FD4F) is the central main loop. Every iteration:
|
||||
|
||||
1. `jsr WaitForNmi` ($FD9D) — block until NmiCompletedFlag ($0E) is set, then clear it.
|
||||
2. Load `MainGameState` ($16), multiply by 2, use as index into a pointer table:
|
||||
- Low byte from `MainStateDispatchTable` ($C000)
|
||||
- High byte from `LookupTable_C001` ($C001)
|
||||
- The two tables are interleaved in the same $C000–$C00D region.
|
||||
3. Indirect jump (`jmp (DataPointerLo)`) to the state handler.
|
||||
|
||||
### State Dispatch Table (CPU $C000–$C00D)
|
||||
|
||||
The table is structured as alternating low/high bytes indexed by `MainGameState * 2`:
|
||||
|
||||
| State | CPU Addr | Handler Routine | Purpose |
|
||||
|-------|----------|-----------------|---------|
|
||||
| 0 | $C3F8 | `RunFrameSynchronizedTask_C3F8` | Initial / boot frame task |
|
||||
| 1 | $C04E | `HandleTitleState` | Title screen |
|
||||
| 2 | $C12F | `HandleGameStartState` | Game start / level init |
|
||||
| 3 | $4DC2 | *(unmapped / bank-switched)* | *(state 3 entry)* |
|
||||
| 4 | $C24D | `Flow_C24D` | Stage transition / between-levels |
|
||||
| 5 | $C14F | `HandleGameplayState` | Main gameplay |
|
||||
| 6 | $C1AA | `HandlePlayerDeathState` | Player death sequence |
|
||||
| *(state 7+)* | *(from table)* | *(various)* | *(additional states)* |
|
||||
|
||||
`SetMainState` ($FF7C) stores the accumulator into `MainGameState` ($16) and returns — used by every state handler to transition to the next state.
|
||||
|
||||
---
|
||||
|
||||
## 5. NMI / Frame Heartbeat — `NmiHandler` ($FF7F)
|
||||
|
||||
The NMI fires once per frame and is the real-time driver:
|
||||
|
||||
1. **Save registers** (A, X, Y on stack).
|
||||
2. **OAM DMA** — write $00 to OAMADDR ($2003), then $07 to OAMDMA ($4014) to DMA sprite data from $0700–$07FF.
|
||||
3. Set `NmiCompletedFlag` ($0E) = $01 — signals the main loop that a frame has elapsed.
|
||||
4. Read `PPUSTATUS` ($2002) to reset the address latch.
|
||||
5. **Stage complete handling** — if `StageCompleteFlag` ($4E) is set, `jsr ProcessGameState_CEA3` ($CEA3), then clear the flag.
|
||||
6. `jsr ProcessPendingFrameTask` ($C029) — if a frame task is pending, advance its counter.
|
||||
7. If `GameMode` ($4C) is nonzero, `jsr ProcessGameState_F493` ($F493) — per-frame gameplay/audio update.
|
||||
8. **Restore registers, `rti`.**
|
||||
|
||||
---
|
||||
|
||||
## 6. State Handlers
|
||||
|
||||
### 6.1 Title State — `HandleTitleState` ($C04E)
|
||||
|
||||
- Sets `GameMode` ($4C) = $00 and `Zp_57` ($57) = $00.
|
||||
- `jsr ProcessGameState_C7F7` ($C7F7) — title-specific game state processing.
|
||||
- `StateInitializedFlag` ($31) = $01.
|
||||
- `jsr ProcessGameState_CB53` ($CB53) and `jsr ProcessGameState_C81B` ($C81B).
|
||||
- `jsr EnableBackgroundAndSprites` ($C3EE) — enables rendering.
|
||||
- `jmp Flow_C233` ($C233) — clears stage state, sets `MainGameState` = 4, returns to main loop.
|
||||
|
||||
### 6.2 Game Start State — `HandleGameStartState` ($C12F)
|
||||
|
||||
- `jsr ProcessGameState_C7F7` ($C7F7).
|
||||
- `GameActiveFlag` ($4D) = $01; `StateInitializedFlag` ($31) = $01.
|
||||
- `jsr ClearNametable2000` ($FDD0) — clear nametable at $2000.
|
||||
- `jsr ProcessGameState_C81B` ($C81B) and `jsr ProcessGameState_C977` ($C977).
|
||||
- Decrement `Ram_0400` ($0400).
|
||||
- `jsr ClearNametable2000` again.
|
||||
- Set `MainGameState` = 6 → gameplay state.
|
||||
- Return to main loop via `Flow_FD4F`.
|
||||
|
||||
### 6.3 Gameplay State — `HandleGameplayState` ($C14F)
|
||||
|
||||
The core gameplay state. Checks `Zp_52` ($52):
|
||||
- If `Zp_52` is nonzero → `Flow_C161` (second-player / alternate player path).
|
||||
- If zero → `Flow_C153` (first player path).
|
||||
|
||||
Checks `PlayerDeathFlag` ($4F):
|
||||
- Bit 0 = player 1 dead; bit 1 = player 2 dead.
|
||||
- If a player is dead → `Flow_C19E` → sets `MainGameState` = 5 (player death state).
|
||||
- Otherwise continues gameplay.
|
||||
|
||||
When transitioning to death (`Flow_C177`):
|
||||
- Disable background/sprites, set state initialized, process game state, re-enable rendering.
|
||||
- Store pending sound command $03 (death sound), set GameMode = $01.
|
||||
- Run a frame-synchronized task at $CA80, store sound command $04.
|
||||
- Jump to `Flow_C233` → `MainGameState` = 4 (stage transition).
|
||||
|
||||
### 6.4 Player Death State — `HandlePlayerDeathState` ($C1AA)
|
||||
|
||||
- Disable rendering, clear nametable.
|
||||
- Loads player-specific data based on `CurrentPlayerIndex` ($50): X = $C1 (player 1) or $12 (player 2).
|
||||
- `jsr ProcessGameState_C715` ($C715) with player data.
|
||||
- Store player sprite Y at $0701.
|
||||
- Load palette, wait for NMI, set PPUCTRL/PPUMASK.
|
||||
- Run frame-synchronized task, clear nametable, process game state at $CEC8.
|
||||
- Set `MainGameState` = 5, return to main loop.
|
||||
|
||||
### 6.5 Stage Complete / Between-Stage State — `HandleStageCompleteState` ($C22A) / `Flow_C233` ($C233)
|
||||
|
||||
- Disable rendering, process game state, enable rendering.
|
||||
- `Flow_C233`: clear `Ram_046E`–$470, `Zp_2E`, `Zp_2F`, `Ram_045A`.
|
||||
- Set `MainGameState` = 4 → stage transition state.
|
||||
- Return to main loop.
|
||||
|
||||
`Flow_C24D` ($C24D) — the stage transition update (runs every 8th frame via `Zp_15` counter):
|
||||
- Processes a long chain of game state routines: $C9F9, $D7D3, $D980, $E11E, $E0B7, $E71A, $E6AE.
|
||||
- If `GameMode` != 0: reads controllers for current player.
|
||||
- More game state processing: $D1C1, $D6BF, $CB6F, $DB45, $DBD7, $DC82, $DD61, $EA1A, $E7DE, $E81A.
|
||||
- If `GameMode` != 0: `ProcessGameState_C5FF` ($C5FF) — score/remaining-life logic.
|
||||
- Handles player lives (`Zp_1B` for player 1, `Zp_23` for player 2), wraps at 7.
|
||||
- Clears nametable, sets `MainGameState` = 5 or 6 depending on mode.
|
||||
|
||||
---
|
||||
|
||||
## 7. Core Gameplay Update Loop
|
||||
|
||||
Every 8 frames (when `Zp_15 & $07 == 0`), `Flow_C258` ($C258) runs the primary gameplay update:
|
||||
|
||||
| Routine | Address | Purpose |
|
||||
|---------|---------|---------|
|
||||
| `ProcessGameState_C9F9` | $C9F9 | Object/enemy movement |
|
||||
| `CalculateAndClampValue_D7D3` | $D7D3 | Value clamping |
|
||||
| `ProcessGameState_D980` | $D980 | Object processing |
|
||||
| `ProcessGameState_E11E` | $E11E | Collision / interaction |
|
||||
| `ProcessGameState_E0B7` | $E0B7 | State update |
|
||||
| `ProcessGameState_E71A` | $E71A | Animation |
|
||||
| `ProcessGameState_E6AE` | $E6AE | Object cleanup |
|
||||
| *(player input)* | — | Controller reading when GameMode != 0 |
|
||||
| `ProcessGameState_D1C1` | $D1C1 | Player movement |
|
||||
| `ProcessGameState_D6BF` | $D6BF | Player animation |
|
||||
| `ProcessGameState_CB6F` | $CB6F | Burger/part assembly |
|
||||
| `ProcessGameState_DB45` | $DB45 | Enemy AI |
|
||||
| `ProcessGameState_DBD7` | $DBD7 | Collision detection |
|
||||
| `ProcessGameState_DC82` | $DC82 | Score / points |
|
||||
| `ProcessGameState_DD61` | $DD61 | Bonus items |
|
||||
| `ProcessGameState_EA1A` | $EA1A | Pepper / power-up |
|
||||
| `ProcessGameState_E7DE` | $E7DE | Round timing |
|
||||
| `ProcessGameState_E81A` | $E81A | Level progression |
|
||||
| `ProcessGameState_C5FF` | $C5FF | Lives / continues (GameMode != 0) |
|
||||
|
||||
---
|
||||
|
||||
## 8. Audio Engine
|
||||
|
||||
**`UpdateAudioEngine`** ($F478)
|
||||
|
||||
Called from:
|
||||
- `Flow_C368` ($C368) — during title/transition states
|
||||
- `RunFrameSynchronizedTask_C3F8` ($C3F8) — during frame-synchronized tasks
|
||||
- `Flow_C615` ($C615) — during gameplay state
|
||||
- `Flow_C7D6` ($C7D6) — tail call from another path
|
||||
|
||||
The audio engine:
|
||||
1. Clears audio RAM at $052F (167 bytes, X from $A7 down).
|
||||
2. Clears APU channel volume registers $4000–$400F (20 bytes).
|
||||
3. Writes $00 to SND_CHN ($4015) — disable all channels initially.
|
||||
4. Sets `Ram_05A3` ($05A3) = $38.
|
||||
5. Processes sound commands and music updates via subroutines at $F4B3, $F5B3, $F748, $F6E4.
|
||||
|
||||
**`StorePendingSoundCommand`** ($C026) — stores a sound command in `PendingSoundCommand` ($90), processed by the NMI or audio engine.
|
||||
|
||||
**`ProcessPendingFrameTask`** ($C029) — processes `PendingFrameTask` ($8F); if $FF, resets to $00 and advances; otherwise increments the task counter up to $F1.
|
||||
|
||||
---
|
||||
|
||||
## 9. PPU / Rendering
|
||||
|
||||
### `EnableBackgroundAndSprites` ($C3EE)
|
||||
Waits for PPU VBlank, loads `PpuMaskShadow` ($11), ORs with $18 (enable background + sprites), calls `SetPpuMaskShadow`.
|
||||
|
||||
### `DisableBackgroundAndSprites` ($C3E4)
|
||||
Waits for PPU VBlank, loads `PpuMaskShadow`, ANDs with $E7 (disable background + sprites).
|
||||
|
||||
### `SetPpuControlShadow` ($C3D8) / `SetPpuMaskShadow` ($C3DE)
|
||||
Store accumulator to the shadow register ($0C/$0D) and to the corresponding PPU register ($2000/$2001).
|
||||
|
||||
### `ClearNametables` ($FDAE)
|
||||
Clears both nametables ($2000 and $2800) via `ClearNametable2000` and `ClearNametable2800`.
|
||||
|
||||
### `LoadPalette` ($FDF0)
|
||||
Waits for PPU VBlank, sets PPU address to $3F00 (palette), writes 16 bytes of palette data from a pointer in X/Y.
|
||||
|
||||
### `SetDefaultScroll` ($FFEB)
|
||||
Writes $08 then $00 to PPUSCROLL ($2005).
|
||||
|
||||
### `DecodeNametableStream` ($FE74)
|
||||
Decodes a run-length-encoded nametable stream from a pointer (X/Y) into PPU memory. Used extensively during screen initialization (`RunFrameSynchronizedTask_C3F8` calls it multiple times for different screen regions).
|
||||
|
||||
---
|
||||
|
||||
## 10. Controller Input
|
||||
|
||||
**`ReadControllers`** ($FE2B)
|
||||
|
||||
Reads both controller ports ($4016/$4017) by strobing JOY1, then shifting in 8 bits per controller. Results are packed into scratch variables:
|
||||
- `ScratchValue0` ($01), `ScratchValue1` ($02), `ScratchIndex` ($03) — raw button bits.
|
||||
- The result is processed into directional/button flags stored in `Zp_2F` ($2F), checked with `and #$0C` (start/select) and `and #$08` (specific button) throughout the code.
|
||||
|
||||
---
|
||||
|
||||
## 11. Key Zero-Page / RAM Symbols
|
||||
|
||||
| Address | Symbol | Use |
|
||||
|---------|--------|-----|
|
||||
| $0E | NmiCompletedFlag | NMI frame-sync flag |
|
||||
| $10 | PpuControlShadow | $2000 mirror |
|
||||
| $11 | PpuMaskShadow | $2001 mirror |
|
||||
| $13 | FrameCounterReload | Frame counter reload value |
|
||||
| $14 | FrameCounter | Frame tick counter |
|
||||
| $15 | Zp_15 | Frame divider (gameplay runs every 8 frames) |
|
||||
| $16 | MainGameState | Current state machine state |
|
||||
| $1B | Zp_1B | Player 1 lives counter |
|
||||
| $1F | Zp_1F | (unnamed) |
|
||||
| $23 | Zp_23 | Player 2 lives counter |
|
||||
| $2E–$2F | Zp_2E / Zp_2F | Controller/button state |
|
||||
| $31 | StateInitializedFlag | State init flag |
|
||||
| $32–$35 | Zp_32–$35 | Indirect pointers / coordinates |
|
||||
| $3F | Zp_3F | (unnamed) |
|
||||
| $44 | Zp_44 | (unnamed) |
|
||||
| $4C | GameMode | Game mode flag (0=title/demo, nonzero=gameplay) |
|
||||
| $4D | GameActiveFlag | Game active flag |
|
||||
| $4E | StageCompleteFlag | Stage completed flag |
|
||||
| $4F | PlayerDeathFlag | Player death flags (bit0=P1, bit1=P2) |
|
||||
| $50 | CurrentPlayerIndex | Current player (0 or 1) |
|
||||
| $52 | Zp_52 | Gameplay sub-state |
|
||||
| $56 | Zp_56 | (unnamed) |
|
||||
| $57 | Zp_57 | Title state variable |
|
||||
| $5A–$5B | Zp_5A / Zp_5B | (unnamed) |
|
||||
| $8F | PendingFrameTask | Pending frame task counter |
|
||||
| $90 | PendingSoundCommand | Pending sound command |
|
||||
| $95–$96 | DispatchPointerLo / DispatchPointerHi | State dispatch indirect pointer |
|
||||
| $0400 | Ram_0400 | (unnamed) |
|
||||
| $040D–$040F | Ram_040D–$040F | (unnamed) |
|
||||
| $045A–$045F | Ram_045A–$045F | (unnamed) |
|
||||
| $0460–$0467 | Ram_0460–$0467 | Object/enemy state |
|
||||
| $046E–$0470 | Ram_046E–$0470 | Stage state |
|
||||
| $04E0 | Ram_04E0 | (unnamed) |
|
||||
| $0500–$0535 | Ram_0500–$0535 | Object arrays |
|
||||
| $052F–$05A7 | Ram_052F–$05A7 | Audio engine state |
|
||||
| $0536 | CurrentObjectIndex | Current object being processed |
|
||||
| $0700–$07FF | Ram_0700–$07FF | OAM buffer + sprite data |
|
||||
|
||||
---
|
||||
|
||||
## 12. Summary of Execution Flow
|
||||
|
||||
```
|
||||
Power On / Reset
|
||||
│
|
||||
▼
|
||||
ResetHandler ($FD24) ───────────────────────────────┐
|
||||
│ sei, cld, disable PPU, wait 2× VBlank │
|
||||
│ SetDefaultScroll, init frame counters │
|
||||
│ InitializeRuntimeState ($FD63) │
|
||||
│ ├─ clear NmiCompletedFlag, GameMode, etc. │
|
||||
│ ├─ set PPUCTRL shadow=$90, clear nametables │
|
||||
│ ├─ load palette, wait NMI │
|
||||
│ └─ set PPUMASK shadow=$1A │
|
||||
│ InitializeGameSystems ($C00E) │
|
||||
│ ├─ process game state ($C76E, $CB53) │
|
||||
│ ├─ set initial OAM ($0700=$70, $0701=$10) │
|
||||
│ └─ SetMainState → first state │
|
||||
▼ │
|
||||
Flow_FD4F ($FD4F) ───────────────────────────────────┤
|
||||
│ │
|
||||
├─ WaitForNmi ($FD9D) ◄────── waits for NMI ───┘
|
||||
│ │
|
||||
├─ MainGameState ($16) → dispatch table │
|
||||
│ ├─ State 0: $C3F8 (frame sync task) │
|
||||
│ ├─ State 1: $C04E (HandleTitleState) │
|
||||
│ ├─ State 2: $C12F (HandleGameStartState) │
|
||||
│ ├─ State 4: $C24D (stage transition) │
|
||||
│ ├─ State 5: $C1AA (HandlePlayerDeathState) │
|
||||
│ ├─ State 6: $C14F (HandleGameplayState) │
|
||||
│ └─ ... │
|
||||
│ │
|
||||
└─ (state handler returns via SetMainState) │
|
||||
│ │
|
||||
▼ │
|
||||
back to Flow_FD4F ◄───────────────────────────────┘
|
||||
|
||||
NMI ($FF7F) [every frame]
|
||||
├─ OAM DMA from $0700 ($4014)
|
||||
├─ NmiCompletedFlag ($0E) = $01
|
||||
├─ StageCompleteFlag ($4E) handling ($CEA3)
|
||||
├─ ProcessPendingFrameTask ($C029)
|
||||
├─ if GameMode != 0: ProcessGameState_F493 ($F493)
|
||||
└─ rti
|
||||
|
||||
Gameplay Update (every 8 frames, Flow_C258 at $C258)
|
||||
├─ object movement & collision ($C9F9–$E6AE)
|
||||
├─ controller input (when GameMode != 0)
|
||||
├─ player movement & animation ($D1C1, $D6BF)
|
||||
├─ burger assembly, enemy AI ($CB6F, $DB45)
|
||||
├─ collision, score, bonus ($DBD7–$DD61)
|
||||
├─ pepper, round timing ($EA1A–$E81A)
|
||||
└─ lives/continues ($C5FF)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 13. Notes
|
||||
|
||||
- The disassembly is organized as a state machine driven by `MainGameState` ($16), with the dispatch table at CPU $C000–$C00D.
|
||||
- The NMI is the sole frame-sync source; the main loop (`Flow_FD4F`) blocks on `WaitForNmi` before dispatching to the current state handler.
|
||||
- Gameplay updates run on an 8-frame divider (`Zp_15` at $15), not every frame.
|
||||
- Audio is updated both from the NMI path (`ProcessGameState_F493` when `GameMode != 0`) and from state-specific code paths.
|
||||
- Many routines are named `Flow_Cxxx` or `ProcessGameState_Cxxx` based on their CPU address, reflecting the automated disassembly origins. Semantic names are provisional.
|
||||
- Build verification: `make` in `copilot/` produces `burger_time_rebuilt.nes` that is **byte-identical** to `burger_time.nes` (requires a symlink named `burger_time.nes` pointing to the actual ROM file due to spaces/special characters in the original filename).
|
||||
@@ -1,16 +1,25 @@
|
||||
CA65 ?= ca65
|
||||
LD65 ?= ld65
|
||||
all: verify
|
||||
|
||||
all: reconstructed.nes verify
|
||||
|
||||
prg.o: prg.s symbols.inc locals.inc
|
||||
$(CA65) -g -o $@ $<
|
||||
|
||||
header.o: header.s
|
||||
$(CA65) -g -o $@ $<
|
||||
prg.o: prg.s symbols.inc locals.inc burger_time.nes
|
||||
|
||||
chr.o: chr.s
|
||||
$(CA65) -g -o $@ $<
|
||||
chr.o: chr.s burger_time.nes
|
||||
$(CA65) -g -o $@ $<
|
||||
burger_time_rebuilt.nes: header.o prg.o chr.o linker.cfg
|
||||
$(LD65) -C linker.cfg -m burger_time.map -Ln burger_time.lbl -o $@ header.o prg.o chr.o
|
||||
verify: burger_time_rebuilt.nes
|
||||
cmp burger_time.nes burger_time_rebuilt.nes
|
||||
|
||||
reconstructed.nes: header.o prg.o chr.o linker.cfg
|
||||
$(LD65) -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ header.o prg.o chr.o
|
||||
|
||||
verify: reconstructed.nes
|
||||
cmp reconstructed.nes rom.nes
|
||||
@echo "Byte-identical ROM verified."
|
||||
|
||||
clean:
|
||||
rm -f *.o burger_time_rebuilt.nes burger_time.map burger_time.lbl
|
||||
rm -f *.o reconstructed.nes reconstructed.map reconstructed.lbl
|
||||
|
||||
.PHONY: all verify clean
|
||||
+1
@@ -0,0 +1 @@
|
||||
../Burger Time (U) [!].nes
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
.segment "CHR"
|
||||
.incbin "burger_time.nes", $4010, $2000
|
||||
.incbin "chr.bin"
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
||||
.segment "HEADER"
|
||||
.byte $4E,$45,$53,$1A,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
.incbin "header.bin"
|
||||
@@ -1,12 +1,10 @@
|
||||
MEMORY {
|
||||
HEADER: start=$0000, size=$0010, file=%O, fill=yes;
|
||||
PRG: start=$C000, size=$3FFA, file=%O, fill=yes;
|
||||
VECTORS: start=$FFFA, size=$0006, file=%O, fill=yes;
|
||||
CHR: start=$0000, size=$2000, file=%O, fill=yes;
|
||||
HEADER: start = $0000, size = $0010, fill = yes;
|
||||
PRG: start = $C000, size = $4000, fill = yes;
|
||||
CHR: start = $0000, size = $2000, fill = yes;
|
||||
}
|
||||
SEGMENTS {
|
||||
HEADER: load=HEADER, type=ro;
|
||||
PRG: load=PRG, type=ro;
|
||||
VECTORS: load=VECTORS, type=ro;
|
||||
CHR: load=CHR, type=ro;
|
||||
}
|
||||
HEADER: load = HEADER, type = ro;
|
||||
PRG: load = PRG, type = ro;
|
||||
CHR: load = CHR, type = ro;
|
||||
}
|
||||
Binary file not shown.
@@ -9317,7 +9317,6 @@ SetDefaultScroll:
|
||||
.byte $00,$FF,$FF,$FF ; PRG $3FF6 | CPU $FFF6
|
||||
|
||||
; Interrupt vectors
|
||||
.segment "VECTORS"
|
||||
.word NmiHandler ; PRG $3FFA | CPU $FFFA | 7F FF
|
||||
.word ResetHandler ; PRG $3FFC | CPU $FFFC | 24 FD
|
||||
.word ResetHandler ; PRG $3FFE | CPU $FFFE | 24 FD
|
||||
@@ -0,0 +1,634 @@
|
||||
al 00FFE8 .Flow_FFE8
|
||||
al 00FFD5 .Flow_FFD5
|
||||
al 00FFC6 .Flow_FFC6
|
||||
al 00FFA8 .Flow_FFA8
|
||||
al 00FF9E .Flow_FF9E
|
||||
al 00FF7F .NmiHandler
|
||||
al 00FF4A .Flow_FF4A
|
||||
al 00FF38 .Flow_FF38
|
||||
al 00FF3B .Flow_FF3B
|
||||
al 00FF1E .Flow_FF1E
|
||||
al 00FF2C .WriteRepeatedPpuValue
|
||||
al 00FF00 .Flow_FF00
|
||||
al 00FF10 .Flow_FF10
|
||||
al 00FEA9 .Flow_FEA9
|
||||
al 00FECC .Flow_FECC
|
||||
al 00FE95 .Flow_FE95
|
||||
al 00FE90 .Flow_FE90
|
||||
al 00FE55 .Flow_FE55
|
||||
al 00FE48 .Flow_FE48
|
||||
al 00FE3F .Flow_FE3F
|
||||
al 00FE38 .Flow_FE38
|
||||
al 00FE0A .Flow_FE0A
|
||||
al 00FE03 .Flow_FE03
|
||||
al 00FDE3 .Flow_FDE3
|
||||
al 00FDD6 .Flow_FDD6
|
||||
al 00FDB8 .Flow_FDB8
|
||||
al 00FDA7 .Flow_FDA7
|
||||
al 00FD63 .InitializeRuntimeState
|
||||
al 00FD33 .Flow_FD33
|
||||
al 00FD2E .Flow_FD2E
|
||||
al 00FD24 .ResetHandler
|
||||
al 00F939 .LookupTable_F939
|
||||
al 00F938 .ObjectHandlerDispatchTable
|
||||
al 00F92A .ProcessGameState_F92A
|
||||
al 00F91F .ProcessGameState_F91F
|
||||
al 00F914 .ProcessGameState_F914
|
||||
al 00F90C .ProcessGameState_F90C
|
||||
al 00F904 .ProcessGameState_F904
|
||||
al 00F8F8 .Flow_F8F8
|
||||
al 00F8F5 .ProcessGameState_F8F5
|
||||
al 00F8DF .ProcessGameState_F8DF
|
||||
al 00F8C9 .ProcessGameState_F8C9
|
||||
al 00F8C2 .UpdateStateField_F8C2
|
||||
al 00F982 .ProcessGameState_F982
|
||||
al 00F8B8 .ProcessGameState_F8B8
|
||||
al 00F8AC .Flow_F8AC
|
||||
al 00F8AB .ProcessGameState_F8AB
|
||||
al 00F8A4 .ProcessGameState_F8A4
|
||||
al 00F89D .ProcessGameState_F89D
|
||||
al 00F895 .Flow_F895
|
||||
al 00F880 .ProcessGameState_F880
|
||||
al 00F865 .ProcessGameState_F865
|
||||
al 00F852 .ProcessGameState_F852
|
||||
al 00F84A .Flow_F84A
|
||||
al 00F81D .Flow_F81D
|
||||
al 00F809 .Flow_F809
|
||||
al 00F7FD .Flow_F7FD
|
||||
al 00F98A .LookupTable_F98A
|
||||
al 00F98B .LookupTable_F98B
|
||||
al 00F7E9 .Flow_F7E9
|
||||
al 00F839 .Flow_F839
|
||||
al 00F7B5 .Flow_F7B5
|
||||
al 00F793 .Flow_F793
|
||||
al 00F796 .Flow_F796
|
||||
al 00F79A .Flow_F79A
|
||||
al 00F75D .TransformValue_F75D
|
||||
al 00F73A .Flow_F73A
|
||||
al 00F96E .DispatchObjectHandler
|
||||
al 00F726 .Flow_F726
|
||||
al 00F709 .Flow_F709
|
||||
al 00F6F2 .Flow_F6F2
|
||||
al 00F6DB .Flow_F6DB
|
||||
al 00F6DC .LookupTable_F6DC
|
||||
al 00F6B1 .Flow_F6B1
|
||||
al 00F664 .Flow_F664
|
||||
al 00F657 .Flow_F657
|
||||
al 00F655 .Flow_F655
|
||||
al 00F840 .ProcessGameState_F840
|
||||
al 00F64A .ProcessGameState_F64A
|
||||
al 00F60E .Flow_F60E
|
||||
al 00F60C .Flow_F60C
|
||||
al 00F6BA .TransformValue_F6BA
|
||||
al 00F604 .Flow_F604
|
||||
al 00F611 .Flow_F611
|
||||
al 00F63C .Flow_F63C
|
||||
al 00F5E1 .Flow_F5E1
|
||||
al 00F66B .Flow_F66B
|
||||
al 00F5DC .Flow_F5DC
|
||||
al 00F9A3 .LookupTable_F9A3
|
||||
al 00F9A2 .LookupTable_F9A2
|
||||
al 00F5BF .Flow_F5BF
|
||||
al 00F5B8 .Flow_F5B8
|
||||
al 00F5B2 .Flow_F5B2
|
||||
al 00F597 .Flow_F597
|
||||
al 00F57C .Flow_F57C
|
||||
al 00F55C .Flow_F55C
|
||||
al 00F548 .Flow_F548
|
||||
al 00F526 .Flow_F526
|
||||
al 00F511 .Flow_F511
|
||||
al 00F4F6 .Flow_F4F6
|
||||
al 00F55D .Flow_F55D
|
||||
al 00F4D5 .Flow_F4D5
|
||||
al 00F4D8 .Flow_F4D8
|
||||
al 00F53E .Flow_F53E
|
||||
al 00F4C1 .Flow_F4C1
|
||||
al 00F6E4 .ProcessGameState_F6E4
|
||||
al 00F4B2 .Flow_F4B2
|
||||
al 00F748 .ProcessGameState_F748
|
||||
al 00F4A7 .Flow_F4A7
|
||||
al 00F5B3 .UpdateStateField_F5B3
|
||||
al 00F4B3 .ProcessGameState_F4B3
|
||||
al 00F493 .ProcessGameState_F493
|
||||
al 00F484 .Flow_F484
|
||||
al 00F47C .Flow_F47C
|
||||
al 00EADD .LookupTable_EADD
|
||||
al 00EADA .LookupTable_EADA
|
||||
al 00EAD7 .LookupTable_EAD7
|
||||
al 00EAE0 .LookupTable_EAE0
|
||||
al 00EAD0 .LookupTable_EAD0
|
||||
al 00EAE3 .LookupTable_EAE3
|
||||
al 00EAE6 .LookupTable_EAE6
|
||||
al 00EA65 .Flow_EA65
|
||||
al 00EA9B .Flow_EA9B
|
||||
al 00EA89 .Flow_EA89
|
||||
al 00EA77 .Flow_EA77
|
||||
al 00EAAD .Flow_EAAD
|
||||
al 00EA33 .Flow_EA33
|
||||
al 00EA25 .Flow_EA25
|
||||
al 00EA29 .Flow_EA29
|
||||
al 00EA1C .Flow_EA1C
|
||||
al 00E9C9 .Flow_E9C9
|
||||
al 00E9B5 .Flow_E9B5
|
||||
al 00FF42 .SelectPpuRunLength
|
||||
al 00E983 .Flow_E983
|
||||
al 00E9F5 .LookupTable_E9F5
|
||||
al 00E977 .Flow_E977
|
||||
al 00EA00 .LookupTable_EA00
|
||||
al 00E9F0 .Flow_E9F0
|
||||
al 00E95E .Flow_E95E
|
||||
al 00FFAE .ConvertPackedDecimalDigit
|
||||
al 00E951 .ProcessGameState_E951
|
||||
al 00E94E .LookupTable_E94E
|
||||
al 00E945 .LookupTable_E945
|
||||
al 00E948 .LookupTable_E948
|
||||
al 00E93F .LookupTable_E93F
|
||||
al 00E939 .LookupTable_E939
|
||||
al 00E938 .Flow_E938
|
||||
al 00E8B0 .Flow_E8B0
|
||||
al 00E867 .Flow_E867
|
||||
al 00E88D .LookupTable_E88D
|
||||
al 00E83A .Flow_E83A
|
||||
al 00E871 .RomData_E871
|
||||
al 00E82E .Flow_E82E
|
||||
al 00E829 .Flow_E829
|
||||
al 00E870 .Flow_E870
|
||||
al 00E803 .Flow_E803
|
||||
al 00E801 .Flow_E801
|
||||
al 00E816 .Flow_E816
|
||||
al 00E819 .Flow_E819
|
||||
al 00E733 .Flow_E733
|
||||
al 00E739 .Flow_E739
|
||||
al 00E72C .Flow_E72C
|
||||
al 00E738 .Flow_E738
|
||||
al 00E716 .LookupTable_E716
|
||||
al 00E712 .LookupTable_E712
|
||||
al 00E6EF .Flow_E6EF
|
||||
al 00E70E .LookupTable_E70E
|
||||
al 00E6E4 .Flow_E6E4
|
||||
al 00E6FB .Flow_E6FB
|
||||
al 00E6BF .Flow_E6BF
|
||||
al 00E6B9 .Flow_E6B9
|
||||
al 00E6B0 .Flow_E6B0
|
||||
al 00E697 .Flow_E697
|
||||
al 00E65A .Flow_E65A
|
||||
al 00E660 .Flow_E660
|
||||
al 00E655 .Flow_E655
|
||||
al 00E65F .Flow_E65F
|
||||
al 00E151 .LookupTable_E151
|
||||
al 00E150 .LookupTable_E150
|
||||
al 00E12C .Flow_E12C
|
||||
al 00E113 .Flow_E113
|
||||
al 00E0E4 .UpdateObjectState_E0E4
|
||||
al 00E8A9 .ProcessGameState_E8A9
|
||||
al 00E0D7 .Flow_E0D7
|
||||
al 00E08F .Flow_E08F
|
||||
al 00E07D .Flow_E07D
|
||||
al 00E053 .Flow_E053
|
||||
al 00E052 .Flow_E052
|
||||
al 00E01B .Flow_E01B
|
||||
al 00DFFD .Flow_DFFD
|
||||
al 00DFAB .Flow_DFAB
|
||||
al 00DFC1 .Flow_DFC1
|
||||
al 00DFFE .UpdateObjectState_DFFE
|
||||
al 00DEF0 .Flow_DEF0
|
||||
al 00DE7A .Flow_DE7A
|
||||
al 00DF94 .Flow_DF94
|
||||
al 00DF7D .Flow_DF7D
|
||||
al 00DF66 .Flow_DF66
|
||||
al 00DF4F .Flow_DF4F
|
||||
al 00DF38 .Flow_DF38
|
||||
al 00DF21 .Flow_DF21
|
||||
al 00DF0A .Flow_DF0A
|
||||
al 00DEF3 .Flow_DEF3
|
||||
al 00DED9 .Flow_DED9
|
||||
al 00DEC2 .Flow_DEC2
|
||||
al 00DEAB .Flow_DEAB
|
||||
al 00DE94 .Flow_DE94
|
||||
al 00DE66 .Flow_DE66
|
||||
al 00DE63 .Flow_DE63
|
||||
al 00DE60 .Flow_DE60
|
||||
al 00DE5D .Flow_DE5D
|
||||
al 00DE5A .Flow_DE5A
|
||||
al 00DE57 .Flow_DE57
|
||||
al 00DE54 .Flow_DE54
|
||||
al 00DE51 .Flow_DE51
|
||||
al 00DE4E .Flow_DE4E
|
||||
al 00DE4B .Flow_DE4B
|
||||
al 00DE48 .Flow_DE48
|
||||
al 00DE45 .Flow_DE45
|
||||
al 00DE33 .Flow_DE33
|
||||
al 00DE21 .Flow_DE21
|
||||
al 00DE0F .Flow_DE0F
|
||||
al 00DDFD .Flow_DDFD
|
||||
al 00DDF4 .Flow_DDF4
|
||||
al 00DDDA .Flow_DDDA
|
||||
al 00DDD3 .Flow_DDD3
|
||||
al 00DDD0 .Flow_DDD0
|
||||
al 00DDCD .Flow_DDCD
|
||||
al 00DDCA .Flow_DDCA
|
||||
al 00DE69 .Flow_DE69
|
||||
al 00DD9A .Flow_DD9A
|
||||
al 00DD9D .Flow_DD9D
|
||||
al 00DD90 .Flow_DD90
|
||||
al 00DD75 .Flow_DD75
|
||||
al 00DD7B .Flow_DD7B
|
||||
al 00DD6B .Flow_DD6B
|
||||
al 00DD7A .Flow_DD7A
|
||||
al 00DD2F .LookupTable_DD2F
|
||||
al 00DD2E .LookupTable_DD2E
|
||||
al 00DD29 .Flow_DD29
|
||||
al 00DCD5 .Flow_DCD5
|
||||
al 00DCCC .Flow_DCCC
|
||||
al 00DCBF .Flow_DCBF
|
||||
al 00DCB8 .Flow_DCB8
|
||||
al 00DCB1 .Flow_DCB1
|
||||
al 00DC99 .Flow_DC99
|
||||
al 00DCBB .Flow_DCBB
|
||||
al 00DCE5 .Flow_DCE5
|
||||
al 00E10D .ProcessGameState_E10D
|
||||
al 00DC76 .Flow_DC76
|
||||
al 00DFE0 .UpdateObjectState_DFE0
|
||||
al 00E02C .ProcessGameState_E02C
|
||||
al 00DC42 .Flow_DC42
|
||||
al 00E01C .ProcessGameState_E01C
|
||||
al 00DC3B .Flow_DC3B
|
||||
al 00E03C .ProcessGameState_E03C
|
||||
al 00DC2C .Flow_DC2C
|
||||
al 00DC53 .Flow_DC53
|
||||
al 00E056 .ProcessGameState_E056
|
||||
al 00DC59 .Flow_DC59
|
||||
al 00DC69 .Flow_DC69
|
||||
al 00DBF2 .Flow_DBF2
|
||||
al 00DBEC .Flow_DBEC
|
||||
al 00DBDE .Flow_DBDE
|
||||
al 00DBF1 .Flow_DBF1
|
||||
al 00DCE6 .TransformValue_DCE6
|
||||
al 00DBC0 .LookupTable_DBC0
|
||||
al 00DBBD .LookupTable_DBBD
|
||||
al 00DBBB .LookupTable_DBBB
|
||||
al 00DB78 .Flow_DB78
|
||||
al 00DB69 .Flow_DB69
|
||||
al 00DB5C .Flow_DB5C
|
||||
al 00DBBA .Flow_DBBA
|
||||
al 00DB1C .LookupTable_DB1C
|
||||
al 00DB13 .LookupTable_DB13
|
||||
al 00DB02 .Flow_DB02
|
||||
al 00DAF2 .Flow_DAF2
|
||||
al 00DB18 .LookupTable_DB18
|
||||
al 00DAE7 .Flow_DAE7
|
||||
al 00DB0F .LookupTable_DB0F
|
||||
al 00DAE1 .Flow_DAE1
|
||||
al 00DAD9 .Flow_DAD9
|
||||
al 00DB39 .LookupTable_DB39
|
||||
al 00DB2D .LookupTable_DB2D
|
||||
al 00DB21 .LookupTable_DB21
|
||||
al 00DA51 .Flow_DA51
|
||||
al 00DA3E .Flow_DA3E
|
||||
al 00DA2D .Flow_DA2D
|
||||
al 00DA1B .Flow_DA1B
|
||||
al 00D9A6 .Flow_D9A6
|
||||
al 00DA3A .ProcessGameState_DA3A
|
||||
al 00D9E9 .ProcessGameState_D9E9
|
||||
al 00D998 .ProcessGameState_D998
|
||||
al 00DA17 .ProcessGameState_DA17
|
||||
al 00D997 .Flow_D997
|
||||
al 00D979 .Flow_D979
|
||||
al 00D947 .Flow_D947
|
||||
al 00D929 .Flow_D929
|
||||
al 00D91F .Flow_D91F
|
||||
al 00D8EA .Flow_D8EA
|
||||
al 00D948 .CalculateAndClampValue_D948
|
||||
al 00D8C5 .Flow_D8C5
|
||||
al 00D8B1 .Flow_D8B1
|
||||
al 00D892 .Flow_D892
|
||||
al 00D8A7 .Flow_D8A7
|
||||
al 00DA5E .TransformValue_DA5E
|
||||
al 00D867 .Flow_D867
|
||||
al 00D88F .Flow_D88F
|
||||
al 00D89C .Flow_D89C
|
||||
al 00D891 .Flow_D891
|
||||
al 00D897 .Flow_D897
|
||||
al 00D82B .Flow_D82B
|
||||
al 00D81D .Flow_D81D
|
||||
al 00D809 .Flow_D809
|
||||
al 00D7F5 .Flow_D7F5
|
||||
al 00D890 .Flow_D890
|
||||
al 00D7D0 .Flow_D7D0
|
||||
al 00D7CF .Flow_D7CF
|
||||
al 00D7C6 .Flow_D7C6
|
||||
al 00D7CE .Flow_D7CE
|
||||
al 00D7C0 .Flow_D7C0
|
||||
al 00D7A6 .ProcessGameState_D7A6
|
||||
al 00D7A2 .Flow_D7A2
|
||||
al 00D752 .Flow_D752
|
||||
al 00FFD9 .DecrementPackedDecimalDigit
|
||||
al 00D785 .LookupTable_D785
|
||||
al 00D771 .LookupTable_D771
|
||||
al 00D780 .LookupTable_D780
|
||||
al 00D76C .LookupTable_D76C
|
||||
al 00D77B .LookupTable_D77B
|
||||
al 00D767 .LookupTable_D767
|
||||
al 00D776 .LookupTable_D776
|
||||
al 00D78A .CalculateAndClampValue_D78A
|
||||
al 00D762 .LookupTable_D762
|
||||
al 00D733 .Flow_D733
|
||||
al 00D721 .Flow_D721
|
||||
al 00D70F .Flow_D70F
|
||||
al 00D6FD .Flow_D6FD
|
||||
al 00D6E6 .Flow_D6E6
|
||||
al 00E642 .ProcessGameState_E642
|
||||
al 00D753 .Flow_D753
|
||||
al 00D6C9 .Flow_D6C9
|
||||
al 00D476 .LookupTable_D476
|
||||
al 00D475 .LookupTable_D475
|
||||
al 00D3D2 .Flow_D3D2
|
||||
al 00D3C0 .Flow_D3C0
|
||||
al 00D3B9 .Flow_D3B9
|
||||
al 00D3A3 .Flow_D3A3
|
||||
al 00D446 .LookupTable_D446
|
||||
al 00D38C .Flow_D38C
|
||||
al 00D445 .LookupTable_D445
|
||||
al 00D3E4 .Flow_D3E4
|
||||
al 00D35E .Flow_D35E
|
||||
al 00D34C .Flow_D34C
|
||||
al 00D346 .Flow_D346
|
||||
al 00D324 .Flow_D324
|
||||
al 00D354 .Flow_D354
|
||||
al 00D311 .Flow_D311
|
||||
al 00D2F8 .Flow_D2F8
|
||||
al 00D3A8 .Flow_D3A8
|
||||
al 00D2E2 .Flow_D2E2
|
||||
al 00D3E6 .LookupTable_D3E6
|
||||
al 00D3E5 .LookupTable_D3E5
|
||||
al 00D2BD .Flow_D2BD
|
||||
al 00D2BF .Flow_D2BF
|
||||
al 00D2AF .Flow_D2AF
|
||||
al 00D292 .Flow_D292
|
||||
al 00D28C .Flow_D28C
|
||||
al 00D284 .Flow_D284
|
||||
al 00D27E .UpdateStateField_D27E
|
||||
al 00D267 .Flow_D267
|
||||
al 00D44F .DispatchHandler_D44F
|
||||
al 00D262 .Flow_D262
|
||||
al 00D256 .Flow_D256
|
||||
al 00D23E .Flow_D23E
|
||||
al 00D24D .Flow_D24D
|
||||
al 00D272 .LookupTable_D272
|
||||
al 00D269 .LookupTable_D269
|
||||
al 00D268 .LookupTable_D268
|
||||
al 00D207 .Flow_D207
|
||||
al 00D219 .Flow_D219
|
||||
al 00D21E .Flow_D21E
|
||||
al 00D1CE .Flow_D1CE
|
||||
al 00D1CD .Flow_D1CD
|
||||
al 00D106 .Flow_D106
|
||||
al 00D10A .Flow_D10A
|
||||
al 00D11C .Flow_D11C
|
||||
al 00D0FA .Flow_D0FA
|
||||
al 00D0E4 .TransformValue_D0E4
|
||||
al 00CF44 .TransformValue_CF44
|
||||
al 00CF3F .Flow_CF3F
|
||||
al 00CF54 .ProcessGameState_CF54
|
||||
al 00CF07 .Flow_CF07
|
||||
al 00CEC6 .Flow_CEC6
|
||||
al 00CEB1 .Flow_CEB1
|
||||
al 00CEA3 .ProcessGameState_CEA3
|
||||
al 00CE8E .Flow_CE8E
|
||||
al 00DA80 .ProcessGameState_DA80
|
||||
al 00CE62 .Flow_CE62
|
||||
al 00CE60 .Flow_CE60
|
||||
al 00CE42 .Flow_CE42
|
||||
al 00CE6B .ProcessGameState_CE6B
|
||||
al 00CE38 .Flow_CE38
|
||||
al 00CE25 .ProcessGameState_CE25
|
||||
al 00CCE9 .LookupTable_CCE9
|
||||
al 00CCE0 .Flow_CCE0
|
||||
al 00CC9F .Flow_CC9F
|
||||
al 00CBCD .Flow_CBCD
|
||||
al 00CBA4 .Flow_CBA4
|
||||
al 00CB93 .Flow_CB93
|
||||
al 00FE6A .WaitForNmiAndSetPpuAddress
|
||||
al 00CB7B .Flow_CB7B
|
||||
al 00CB6B .LookupTable_CB6B
|
||||
al 00CB1A .Flow_CB1A
|
||||
al 00CAFF .Flow_CAFF
|
||||
al 00F23C .LookupTable_F23C
|
||||
al 00F23B .LookupTable_F23B
|
||||
al 00CAEE .Flow_CAEE
|
||||
al 00CAE2 .Flow_CAE2
|
||||
al 00CAC7 .Flow_CAC7
|
||||
al 00FED0 .DecodeAttributeStream
|
||||
al 00CA75 .LookupTable_CA75
|
||||
al 00CA74 .LookupTable_CA74
|
||||
al 00CA58 .Flow_CA58
|
||||
al 00CA56 .Flow_CA56
|
||||
al 00CA52 .Flow_CA52
|
||||
al 00CA73 .Flow_CA73
|
||||
al 00CA29 .Flow_CA29
|
||||
al 00CA30 .Flow_CA30
|
||||
al 00CA0E .Flow_CA0E
|
||||
al 00CA0F .Flow_CA0F
|
||||
al 00CA1A .Flow_CA1A
|
||||
al 00C9F1 .Flow_C9F1
|
||||
al 00FE6D .SetPpuAddress
|
||||
al 00C998 .Flow_C998
|
||||
al 00C994 .Flow_C994
|
||||
al 00C98B .Flow_C98B
|
||||
al 00C95C .ProcessGameState_C95C
|
||||
al 00C954 .Flow_C954
|
||||
al 00C93B .Flow_C93B
|
||||
al 00C93A .Flow_C93A
|
||||
al 00C922 .LookupTable_C922
|
||||
al 00CEBE .ProcessGameState_CEBE
|
||||
al 00C915 .Flow_C915
|
||||
al 00C918 .Flow_C918
|
||||
al 00C928 .ProcessGameState_C928
|
||||
al 00CAA7 .ProcessGameState_CAA7
|
||||
al 00CA87 .ProcessGameState_CA87
|
||||
al 00C9DF .ProcessGameState_C9DF
|
||||
al 00DA99 .TransformValue_DA99
|
||||
al 00C8D5 .Flow_C8D5
|
||||
al 00C8CA .Flow_C8CA
|
||||
al 00C8BF .Flow_C8BF
|
||||
al 00C8B5 .Flow_C8B5
|
||||
al 00F259 .LookupTable_F259
|
||||
al 00F253 .LookupTable_F253
|
||||
al 00F24D .LookupTable_F24D
|
||||
al 00F247 .LookupTable_F247
|
||||
al 00C878 .Flow_C878
|
||||
al 00C86B .Flow_C86B
|
||||
al 00C85F .Flow_C85F
|
||||
al 00C859 .Flow_C859
|
||||
al 00C850 .Flow_C850
|
||||
al 00CC7D .TransformValue_CC7D
|
||||
al 00CC8E .TransformValue_CC8E
|
||||
al 00C90A .Flow_C90A
|
||||
al 00C836 .Flow_C836
|
||||
al 00CB88 .ProcessGameState_CB88
|
||||
al 00C82C .Flow_C82C
|
||||
al 00CADC .ProcessGameState_CADC
|
||||
al 00C7EA .Flow_C7EA
|
||||
al 00C7DC .Flow_C7DC
|
||||
al 00C7E7 .ProcessGameState_C7E7
|
||||
al 00C7AC .Flow_C7AC
|
||||
al 00C7A1 .Flow_C7A1
|
||||
al 00C7BD .Flow_C7BD
|
||||
al 00C79D .Flow_C79D
|
||||
al 00C7F3 .LookupTable_C7F3
|
||||
al 00C790 .Flow_C790
|
||||
al 00C7D9 .ProcessGameState_C7D9
|
||||
al 00C75C .Flow_C75C
|
||||
al 00C741 .ProcessGameState_C741
|
||||
al 00C734 .Flow_C734
|
||||
al 00C72E .Flow_C72E
|
||||
al 00C705 .Flow_C705
|
||||
al 00C6E4 .Flow_C6E4
|
||||
al 00C700 .Flow_C700
|
||||
al 00C6E0 .ProcessGameState_C6E0
|
||||
al 00C673 .Flow_C673
|
||||
al 00C671 .Flow_C671
|
||||
al 00C65F .Flow_C65F
|
||||
al 00C695 .Flow_C695
|
||||
al 00C6CD .ProcessGameState_C6CD
|
||||
al 00C642 .Flow_C642
|
||||
al 00C633 .Flow_C633
|
||||
al 00C6ED .ProcessGameState_C6ED
|
||||
al 00C6BC .ProcessGameState_C6BC
|
||||
al 00C69C .ProcessGameState_C69C
|
||||
al 00C682 .Flow_C682
|
||||
al 00C68E .Flow_C68E
|
||||
al 00C615 .Flow_C615
|
||||
al 00C68D .Flow_C68D
|
||||
al 00C606 .Flow_C606
|
||||
al 00C609 .Flow_C609
|
||||
al 00CA37 .TransformValue_CA37
|
||||
al 00CA31 .ProcessGameState_CA31
|
||||
al 00C4F1 .Flow_C4F1
|
||||
al 00C4CE .Flow_C4CE
|
||||
al 00C4C4 .Flow_C4C4
|
||||
al 00C4D7 .Flow_C4D7
|
||||
al 00C4F7 .Flow_C4F7
|
||||
al 00C496 .Flow_C496
|
||||
al 00C480 .Flow_C480
|
||||
al 00FFEB .SetDefaultScroll
|
||||
al 00C465 .Flow_C465
|
||||
al 00C45F .Flow_C45F
|
||||
al 00C44C .Flow_C44C
|
||||
al 00C469 .Flow_C469
|
||||
al 00FD83 .ProcessGameState_FD83
|
||||
al 00D18F .TransformValue_D18F
|
||||
al 00C4FB .ProcessGameState_C4FB
|
||||
al 00CE86 .ProcessGameState_CE86
|
||||
al 00CBC1 .ProcessGameState_CBC1
|
||||
al 00FE74 .DecodeNametableStream
|
||||
al 00FDAE .ClearNametables
|
||||
al 00C3F8 .RunFrameSynchronizedTask_C3F8
|
||||
al 00C3F5 .Flow_C3F5
|
||||
al 00FDA6 .WaitForPpuVblank
|
||||
al 00C3DE .SetPpuMaskShadow
|
||||
al 00C3D8 .SetPpuControlShadow
|
||||
al 00C3CD .Flow_C3CD
|
||||
al 00C3C1 .InitializeObjectSlots
|
||||
al 00C3A7 .Flow_C3A7
|
||||
al 00C395 .Flow_C395
|
||||
al 00C37F .Flow_C37F
|
||||
al 00C378 .Flow_C378
|
||||
al 00C54B .ProcessGameState_C54B
|
||||
al 00C39D .Flow_C39D
|
||||
al 00F478 .UpdateAudioEngine
|
||||
al 00C537 .ProcessGameState_C537
|
||||
al 00C351 .Flow_C351
|
||||
al 00C344 .Flow_C344
|
||||
al 00C356 .Flow_C356
|
||||
al 00C75A .ProcessGameState_C75A
|
||||
al 00C3B9 .ClearNametableAndSprites
|
||||
al 00C523 .ProcessGameState_C523
|
||||
al 00C3AD .DisableRenderingAndAudio
|
||||
al 00C329 .Flow_C329
|
||||
al 00C33A .Flow_C33A
|
||||
al 00C330 .Flow_C330
|
||||
al 00C368 .Flow_C368
|
||||
al 00C307 .Flow_C307
|
||||
al 00FDD4 .ClearNametable2800
|
||||
al 00E0CA .ProcessGameState_E0CA
|
||||
al 00C30B .Flow_C30B
|
||||
al 00C30E .Flow_C30E
|
||||
al 00C2F2 .Flow_C2F2
|
||||
al 00C2D9 .Flow_C2D9
|
||||
al 00C2DC .Flow_C2DC
|
||||
al 00C2CA .Flow_C2CA
|
||||
al 00C2BE .Flow_C2BE
|
||||
al 00C2D1 .Flow_C2D1
|
||||
al 00C2E2 .Flow_C2E2
|
||||
al 00C5FF .ProcessGameState_C5FF
|
||||
al 00C2A2 .Flow_C2A2
|
||||
al 00E81A .ProcessGameState_E81A
|
||||
al 00E7DE .ProcessGameState_E7DE
|
||||
al 00EA1A .ProcessGameState_EA1A
|
||||
al 00DD61 .ProcessGameState_DD61
|
||||
al 00DC82 .ProcessGameState_DC82
|
||||
al 00DBD7 .ProcessGameState_DBD7
|
||||
al 00DB45 .ProcessGameState_DB45
|
||||
al 00CB6F .ProcessGameState_CB6F
|
||||
al 00D6BF .ProcessGameState_D6BF
|
||||
al 00D1C1 .ProcessGameState_D1C1
|
||||
al 00C279 .Flow_C279
|
||||
al 00C27D .Flow_C27D
|
||||
al 00E6AE .ProcessGameState_E6AE
|
||||
al 00E71A .ProcessGameState_E71A
|
||||
al 00E0B7 .ProcessGameState_E0B7
|
||||
al 00E11E .ProcessGameState_E11E
|
||||
al 00D980 .ProcessGameState_D980
|
||||
al 00D7D3 .CalculateAndClampValue_D7D3
|
||||
al 00C9F9 .ProcessGameState_C9F9
|
||||
al 00C258 .Flow_C258
|
||||
al 00C22A .HandleStageCompleteState
|
||||
al 00CEC8 .ProcessGameState_CEC8
|
||||
al 00FDF0 .LoadPalette
|
||||
al 00C1BF .Flow_C1BF
|
||||
al 00C715 .ProcessGameState_C715
|
||||
al 00FDB4 .ClearNametable
|
||||
al 00C1AA .HandlePlayerDeathState
|
||||
al 00CA80 .RunFrameSynchronizedTask_CA80
|
||||
al 00C3E4 .DisableBackgroundAndSprites
|
||||
al 00C177 .Flow_C177
|
||||
al 00C159 .Flow_C159
|
||||
al 00C19E .Flow_C19E
|
||||
al 00C153 .Flow_C153
|
||||
al 00C161 .Flow_C161
|
||||
al 00C14F .HandleGameplayState
|
||||
al 00C977 .ProcessGameState_C977
|
||||
al 00FDD0 .ClearNametable2000
|
||||
al 00C12F .HandleGameStartState
|
||||
al 00FD4F .Flow_FD4F
|
||||
al 00C24D .Flow_C24D
|
||||
al 00C0F3 .Flow_C0F3
|
||||
al 00C0E9 .Flow_C0E9
|
||||
al 00C0EF .Flow_C0EF
|
||||
al 00FE2B .ReadControllers
|
||||
al 00FD9D .WaitForNmi
|
||||
al 00C0F6 .Flow_C0F6
|
||||
al 00C0BF .Flow_C0BF
|
||||
al 00C0C1 .Flow_C0C1
|
||||
al 00C096 .Flow_C096
|
||||
al 00C0B2 .Flow_C0B2
|
||||
al 00C0A5 .Flow_C0A5
|
||||
al 00C09B .Flow_C09B
|
||||
al 00C067 .Flow_C067
|
||||
al 00C233 .Flow_C233
|
||||
al 00C3EE .EnableBackgroundAndSprites
|
||||
al 00C81B .ProcessGameState_C81B
|
||||
al 00C7F7 .ProcessGameState_C7F7
|
||||
al 00C04E .HandleTitleState
|
||||
al 00C048 .Flow_C048
|
||||
al 00C035 .Flow_C035
|
||||
al 00C04C .Flow_C04C
|
||||
al 00C029 .ProcessPendingFrameTask
|
||||
al 00C026 .StorePendingSoundCommand
|
||||
al 00FF7C .SetMainState
|
||||
al 00CB53 .ProcessGameState_CB53
|
||||
al 00C76E .ProcessGameState_C76E
|
||||
al 00C00E .InitializeGameSystems
|
||||
al 00C001 .LookupTable_C001
|
||||
al 00C000 .MainStateDispatchTable
|
||||
@@ -0,0 +1,32 @@
|
||||
Modules list:
|
||||
-------------
|
||||
header.o:
|
||||
HEADER Offs=000000 Size=000010 Align=00001 Fill=0000
|
||||
prg.o:
|
||||
PRG Offs=000000 Size=004000 Align=00001 Fill=0000
|
||||
chr.o:
|
||||
CHR Offs=000000 Size=002000 Align=00001 Fill=0000
|
||||
|
||||
|
||||
Segment list:
|
||||
-------------
|
||||
Name Start End Size Align
|
||||
----------------------------------------------------
|
||||
CHR 000000 001FFF 002000 00001
|
||||
HEADER 000000 00000F 000010 00001
|
||||
PRG 00C000 00FFFF 004000 00001
|
||||
|
||||
|
||||
Exports list by name:
|
||||
---------------------
|
||||
|
||||
|
||||
|
||||
Exports list by value:
|
||||
----------------------
|
||||
|
||||
|
||||
|
||||
Imports list:
|
||||
-------------
|
||||
|
||||
Binary file not shown.
Symlink
+1
@@ -0,0 +1 @@
|
||||
../Burger Time (U) [!].nes
|
||||
Reference in new issue
Block a user