mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-07 06:37:31 +00:00
Refactored NES demo slightly.
This commit is contained in:
parent
70d90102bb
commit
67dedcc299
@ -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];
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
@ -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 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user