1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-10-21 17:24:39 +00:00

Refactored NES demo slightly.

This commit is contained in:
jespergravgaard 2020-05-26 23:30:33 +02:00
parent 70d90102bb
commit 67dedcc299
5 changed files with 577 additions and 597 deletions

View File

@ -32,33 +32,26 @@ void main() {
// NMI Called when the PPU refreshes the screen (also known as the V-Blank period)
interrupt(hardware_stack) void vblank() {
// DMA transfer the entire sprite buffer to the PPU
ppuSpriteBufferDmaTransfer(SPRITE_BUFFER);
// Read controller 1
char joy = readJoy1();
if(joy&JOY_DOWN) {
SPRITE_BUFFER[0].y++;
SPRITE_BUFFER[1].y++;
SPRITE_BUFFER[2].y++;
SPRITE_BUFFER[3].y++;
}
if(joy&JOY_UP) {
SPRITE_BUFFER[0].y--;
SPRITE_BUFFER[1].y--;
SPRITE_BUFFER[2].y--;
SPRITE_BUFFER[3].y--;
}
if(joy&JOY_LEFT) {
SPRITE_BUFFER[0].x--;
SPRITE_BUFFER[1].x--;
SPRITE_BUFFER[2].x--;
SPRITE_BUFFER[3].x--;
}
if(joy&JOY_RIGHT) {
SPRITE_BUFFER[0].x++;
SPRITE_BUFFER[1].x++;
@ -66,6 +59,9 @@ interrupt(hardware_stack) void vblank() {
SPRITE_BUFFER[3].x++;
}
// DMA transfer the entire sprite buffer to the PPU
ppuSpriteBufferDmaTransfer(SPRITE_BUFFER);
// Set scroll
PPU->PPUSCROLL = 0;
PPU->PPUSCROLL = -8;
@ -82,13 +78,14 @@ char FLOOR[] = { 0x85, 0x85, 0x86, 0x86};
// Sprite Data
struct SpriteData SPRITES[] = {
// Y , TILE, ATTR , X
// Small Luigi
// Small Luigi
// Y , TILE, ATTR , X
{ 150, 0x36, 0b00000010, 12 }, // Sprite 0
{ 150, 0x37, 0b00000010, 20 }, // Sprite 1
{ 158, 0x38, 0b00000010, 12 }, // Sprite 2
{ 158, 0x39, 0b00000010, 20 }, // Sprite 3
// Small Goomba
// Y , TILE, ATTR , X
{ 150, 0x70, 0b00000000, 72 }, // Sprite 0
{ 150, 0x71, 0b00000000, 80 }, // Sprite 1
{ 158, 0x72, 0b00000001, 72 }, // Sprite 2
@ -116,7 +113,7 @@ export char TILES[] = kickasm(resource "smb1_chr.bin") {{
}};
// Sprite Buffer (in GAME RAM)
// Will be transfered to the PPU via DMA during vblank
// Will be transferred to the PPU via DMA during vblank
#pragma data_seg(GameRam)
struct SpriteData align(0x100) SPRITE_BUFFER[0x40];

View File

@ -411,12 +411,6 @@ vblank: {
pha
tya
pha
// PPU->OAMADDR = 0
lda #0
sta PPU+OFFSET_STRUCT_RICOH_2C02_OAMADDR
// APU->OAMDMA = >spriteBuffer
lda #>SPRITE_BUFFER
sta APU+OFFSET_STRUCT_RICOH_2A03_OAMDMA
// readJoy1()
jsr readJoy1
// joy = readJoy1()
@ -471,7 +465,7 @@ vblank: {
and #JOY_RIGHT
// if(joy&JOY_RIGHT)
cmp #0
beq __b4
beq ppuSpriteBufferDmaTransfer1
// SPRITE_BUFFER[0].x++;
inc SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X
// SPRITE_BUFFER[1].x++;
@ -480,7 +474,13 @@ vblank: {
inc SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X+2*SIZEOF_STRUCT_SPRITEDATA
// SPRITE_BUFFER[3].x++;
inc SPRITE_BUFFER+OFFSET_STRUCT_SPRITEDATA_X+3*SIZEOF_STRUCT_SPRITEDATA
__b4:
ppuSpriteBufferDmaTransfer1:
// PPU->OAMADDR = 0
lda #0
sta PPU+OFFSET_STRUCT_RICOH_2C02_OAMADDR
// APU->OAMDMA = >spriteBuffer
lda #>SPRITE_BUFFER
sta APU+OFFSET_STRUCT_RICOH_2A03_OAMDMA
// PPU->PPUSCROLL = 0
// Set scroll
lda #0

View File

@ -218,81 +218,78 @@ ppuDataTransfer::@3: scope:[ppuDataTransfer] from ppuDataTransfer::ppuDataPut1
interrupt(HARDWARE_STACK)(void()) vblank()
vblank: scope:[vblank] from
[94] phi()
to:vblank::ppuSpriteBufferDmaTransfer1
vblank::ppuSpriteBufferDmaTransfer1: scope:[vblank] from vblank
[95] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_OAMADDR) ← (byte) 0
[96] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_OAMDMA) ← >(const struct SpriteData*) SPRITE_BUFFER
[95] call readJoy1
[96] (byte) readJoy1::return#2 ← (byte) readJoy1::joy#2
to:vblank::@9
vblank::@9: scope:[vblank] from vblank::ppuSpriteBufferDmaTransfer1
[97] phi()
[98] call readJoy1
[99] (byte) readJoy1::return#2 ← (byte) readJoy1::joy#2
to:vblank::@10
vblank::@10: scope:[vblank] from vblank::@9
[100] (byte) vblank::joy#0 ← (byte) readJoy1::return#2
[101] (byte~) vblank::$2 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_DOWN
[102] if((byte) 0==(byte~) vblank::$2) goto vblank::@1
to:vblank::@5
vblank::@5: scope:[vblank] from vblank::@10
[103] *((byte*)(const struct SpriteData*) SPRITE_BUFFER) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER)
[104] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[105] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@1
vblank::@1: scope:[vblank] from vblank::@10 vblank::@5
[107] (byte~) vblank::$4 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_UP
[108] if((byte) 0==(byte~) vblank::$4) goto vblank::@2
to:vblank::@6
vblank::@6: scope:[vblank] from vblank::@1
[109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER)
[110] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[111] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@2
vblank::@2: scope:[vblank] from vblank::@1 vblank::@6
[113] (byte~) vblank::$6 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_LEFT
[114] if((byte) 0==(byte~) vblank::$6) goto vblank::@3
to:vblank::@7
vblank::@7: scope:[vblank] from vblank::@2
[115] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X)
[116] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[117] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[118] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@3
vblank::@3: scope:[vblank] from vblank::@2 vblank::@7
[119] (byte~) vblank::$8 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_RIGHT
[120] if((byte) 0==(byte~) vblank::$8) goto vblank::@4
to:vblank::@8
vblank::@8: scope:[vblank] from vblank::@3
[121] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X)
[122] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[123] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[124] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
vblank::@9: scope:[vblank] from vblank
[97] (byte) vblank::joy#0 ← (byte) readJoy1::return#2
[98] (byte~) vblank::$1 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_DOWN
[99] if((byte) 0==(byte~) vblank::$1) goto vblank::@1
to:vblank::@4
vblank::@4: scope:[vblank] from vblank::@3 vblank::@8
[125] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) 0
[126] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) -8
vblank::@4: scope:[vblank] from vblank::@9
[100] *((byte*)(const struct SpriteData*) SPRITE_BUFFER) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER)
[101] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[102] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[103] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@1
vblank::@1: scope:[vblank] from vblank::@4 vblank::@9
[104] (byte~) vblank::$3 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_UP
[105] if((byte) 0==(byte~) vblank::$3) goto vblank::@2
to:vblank::@5
vblank::@5: scope:[vblank] from vblank::@1
[106] *((byte*)(const struct SpriteData*) SPRITE_BUFFER) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER)
[107] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[108] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[109] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@2
vblank::@2: scope:[vblank] from vblank::@1 vblank::@5
[110] (byte~) vblank::$5 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_LEFT
[111] if((byte) 0==(byte~) vblank::$5) goto vblank::@3
to:vblank::@6
vblank::@6: scope:[vblank] from vblank::@2
[112] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X)
[113] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[114] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[115] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← -- *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::@3
vblank::@3: scope:[vblank] from vblank::@2 vblank::@6
[116] (byte~) vblank::$7 ← (byte) vblank::joy#0 & (const nomodify byte) JOY_RIGHT
[117] if((byte) 0==(byte~) vblank::$7) goto vblank::ppuSpriteBufferDmaTransfer1
to:vblank::@7
vblank::@7: scope:[vblank] from vblank::@3
[118] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X)
[119] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 1*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[120] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 2*(const byte) SIZEOF_STRUCT_SPRITEDATA)
[121] *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA) ← ++ *((byte*)(const struct SpriteData*) SPRITE_BUFFER+(const byte) OFFSET_STRUCT_SPRITEDATA_X+(byte) 3*(const byte) SIZEOF_STRUCT_SPRITEDATA)
to:vblank::ppuSpriteBufferDmaTransfer1
vblank::ppuSpriteBufferDmaTransfer1: scope:[vblank] from vblank::@3 vblank::@7
[122] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_OAMADDR) ← (byte) 0
[123] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_OAMDMA) ← >(const struct SpriteData*) SPRITE_BUFFER
to:vblank::@8
vblank::@8: scope:[vblank] from vblank::ppuSpriteBufferDmaTransfer1
[124] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) 0
[125] *((byte*)(const struct RICOH_2C02*) PPU+(const byte) OFFSET_STRUCT_RICOH_2C02_PPUSCROLL) ← (byte) -8
to:vblank::@return
vblank::@return: scope:[vblank] from vblank::@4
[127] return
vblank::@return: scope:[vblank] from vblank::@8
[126] return
to:@return
(byte()) readJoy1()
readJoy1: scope:[readJoy1] from vblank::@9
[128] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) ← (byte) 1
[129] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) ← (byte) 0
readJoy1: scope:[readJoy1] from vblank
[127] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) ← (byte) 1
[128] *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) ← (byte) 0
to:readJoy1::@1
readJoy1::@1: scope:[readJoy1] from readJoy1 readJoy1::@2
[130] (byte) readJoy1::joy#2 ← phi( readJoy1/(byte) 0 readJoy1::@2/(byte) readJoy1::joy#1 )
[130] (byte) readJoy1::i#2 ← phi( readJoy1/(byte) 0 readJoy1::@2/(byte) readJoy1::i#1 )
[131] if((byte) readJoy1::i#2<(byte) 8) goto readJoy1::@2
[129] (byte) readJoy1::joy#2 ← phi( readJoy1/(byte) 0 readJoy1::@2/(byte) readJoy1::joy#1 )
[129] (byte) readJoy1::i#2 ← phi( readJoy1/(byte) 0 readJoy1::@2/(byte) readJoy1::i#1 )
[130] if((byte) readJoy1::i#2<(byte) 8) goto readJoy1::@2
to:readJoy1::@return
readJoy1::@return: scope:[readJoy1] from readJoy1::@1
[132] return
[131] return
to:@return
readJoy1::@2: scope:[readJoy1] from readJoy1::@1
[133] (byte~) readJoy1::$1 ← (byte) readJoy1::joy#2 << (byte) 1
[134] (byte~) readJoy1::$2 ← *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) & (byte) 1
[135] (byte) readJoy1::joy#1 ← (byte~) readJoy1::$1 | (byte~) readJoy1::$2
[136] (byte) readJoy1::i#1 ← ++ (byte) readJoy1::i#2
[132] (byte~) readJoy1::$1 ← (byte) readJoy1::joy#2 << (byte) 1
[133] (byte~) readJoy1::$2 ← *((byte*)(const struct RICOH_2A03*) APU+(const byte) OFFSET_STRUCT_RICOH_2A03_JOY1) & (byte) 1
[134] (byte) readJoy1::joy#1 ← (byte~) readJoy1::$1 | (byte~) readJoy1::$2
[135] (byte) readJoy1::i#1 ← ++ (byte) readJoy1::i#2
to:readJoy1::@1

File diff suppressed because it is too large Load Diff

View File

@ -207,12 +207,11 @@
(byte) readJoy1::return
(byte) readJoy1::return#2 reg byte a 4.0
interrupt(HARDWARE_STACK)(void()) vblank()
(byte~) vblank::$2 reg byte a 4.0
(byte~) vblank::$4 reg byte a 4.0
(byte~) vblank::$6 reg byte a 4.0
(byte~) vblank::$8 reg byte a 4.0
(byte~) vblank::$1 reg byte a 4.0
(byte~) vblank::$3 reg byte a 4.0
(byte~) vblank::$5 reg byte a 4.0
(byte~) vblank::$7 reg byte a 4.0
(label) vblank::@1
(label) vblank::@10
(label) vblank::@2
(label) vblank::@3
(label) vblank::@4
@ -250,9 +249,9 @@ reg byte a [ ppuDataFill::ppuDataPrepare1_$1 ]
reg byte a [ ppuDataTransfer::ppuDataPut1_val#0 ]
reg byte a [ readJoy1::return#2 ]
reg byte x [ vblank::joy#0 ]
reg byte a [ vblank::$2 ]
reg byte a [ vblank::$4 ]
reg byte a [ vblank::$6 ]
reg byte a [ vblank::$8 ]
reg byte a [ vblank::$1 ]
reg byte a [ vblank::$3 ]
reg byte a [ vblank::$5 ]
reg byte a [ vblank::$7 ]
zp[1]:8 [ readJoy1::$1 ]
reg byte a [ readJoy1::$2 ]