; 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