Initial commit

This commit is contained in:
tmerritt committed 2026-10-07 08:03:54 -04:00
commit 8683e2f94a
22 files changed
+43771

No files matched your search

Binary file not shown.
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
all: reconstructed_prg.bin verify
prg.o: prg.s symbols.inc prg.bin
ca65 -g -o $@ prg.s
reconstructed_prg.bin: prg.o linker.cfg
ld65 -C linker.cfg -m reconstructed.map -Ln reconstructed.lbl -o $@ prg.o
verify: reconstructed_prg.bin prg.bin
cmp reconstructed_prg.bin prg.bin
@echo BYTE-IDENTICAL
clean:
rm -f prg.o reconstructed_prg.bin reconstructed.map reconstructed.lbl
@@ -0,0 +1,6 @@
MEMORY {
PRG: start = $C000, size = $4000, file = %O, fill = yes;
}
SEGMENTS {
PRG: load = PRG, type = ro;
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,85 @@
; PPU registers
PPUCTRL = $2000
PPUMASK = $2001
PPUSTATUS = $2002
OAMADDR = $2003
OAMDATA = $2004
PPUSCROLL = $2005
PPUADDR = $2006
PPUDATA = $2007
OAMDMA = $4014
JOY1 = $4016
; Variables
PpuControlShadow = $10
PpuMaskShadow = $11
Controller1Held = $14
Controller1Pressed = $15
Controller2Held = $16
Controller2Pressed = $17
ControllerState = Controller1Held
NmiDispatchMode = $40
NmiState = $41
MenuSelectionIndex = $42
NmiSequenceStep = $44
NmiSyncState = $48
InputActionLatch = $49
OamBuffer = $0200
PersistentRecord0 = $0580
PersistentRecord1 = $05A3
ResetMagic1 = $05CE
ResetMagic2 = $05CF
PersistentBuffer = $06E0
PAD_RIGHT=$01
PAD_LEFT=$02
PAD_DOWN=$04
PAD_UP=$08
PAD_START=$10
PAD_SELECT=$20
PAD_B=$40
PAD_A=$80
PAD_HORIZONTAL=PAD_LEFT|PAD_RIGHT
PAD_VERTICAL=PAD_UP|PAD_DOWN
PAD_DPAD=PAD_HORIZONTAL|PAD_VERTICAL
PAD_MENU_INPUT=PAD_SELECT|PAD_START|PAD_VERTICAL
MENU_HORIZONTAL_COUNT=$05
MENU_VERTICAL_COUNT=$06
MENU_ACTION_NONE=$00
MENU_ACTION_ACCEPTED=$04
NMI_SYNC_PENDING=$FF
NMI_SYNC_COMPLETE=$01
RESET_MAGIC_1=$A5
RESET_MAGIC_2=$5A
PPUCTRL_NMI_ENABLE=$80
WorkingBuffer = $05E0
PERSISTENT_BUFFER_SIZE = $0100
StateTargetCA85 = $CA85
; Serial I/O helpers using $4016 (verified structure; peripheral identity unknown)
WriteSerialTiming = $C62D
WaitSerialPulse = $C639
TransmitPulseShort = $C64E
TransmitPulseLong = $C653
TransmitByte = $C66E
IncrementSerialCount = $C68A
ReceiveSerialBit = $C691
ReceiveByte = $C6A5
; Block protocol helpers
TransmitRuntimeData = $C6C8
TransmitDataBlock = $C6D1
SetupTransmitRamBlock = $C716
SetupTransmitWorkingBuffer = $C726
SetTransmitPreambleCounts = $C734
ReceiveRuntimeData = $C739
ReceiveDataBlock = $C792
SerialBlockLength = $0D
SerialBlockPtr = $0E
SerialBitCountLo = $08
SerialBitCountHi = $09
; App Specific Variables
TMP00 = $00
TMP01 = $01