1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-08-07 22:25:13 +00:00
Files
kickc/src/test/ref/complex/borderline_pacman/pacman.sym
jespergravgaard ce28c50d34 updated tests
2023-05-19 11:06:44 +02:00

1742 lines
87 KiB
Plaintext

__constant char ABS[$100] = kickasm {{ .for(var i=0;i<$100;i++) {
.var x = (i<$80)?i:($100-i);
.byte abs(x)
}
}}
__constant char ABS_POST[1] = { 0 }
__constant char ABS_PRE[1] = { 1 }
__constant char * const BANK_1 = (char *) 16384
__constant char * const BANK_2 = (char *) 49152
__constant const char BLACK = 0
__constant const char BLUE = 6
__constant char BOB_GRAPHICS_CRUNCHED[] = kickasm( uses BOB_MASK_LEFT) {{ .modify B2() {
.pc = BOB_MASK_LEFT "BOB GRAPHICS TABLES"
.var bobs_pic = LoadPicture("pacman-bobs.png", List().add($000000, $352879, $bfce72, $883932))
// TABLE char BOB_MASK_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(0,48+scroll*6+row)
}
// TABLE char BOB_MASK_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,24+scroll*6+row)
.for(var blue=0; blue<8;blue++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(1,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_LEFT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(2+ghost*2,48+scroll*6+row)
}
// TABLE char BOB_PIXEL_RIGT[BOB_ROW_SIZE*6]
.for(var row=0; row<6;row++) {
.align BOB_ROW_SIZE
.for(var pac=0; pac<9;pac++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+pac*2,scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,24+scroll*6+row)
.for(var ghost=0; ghost<8;ghost++)
.for(var scroll=0; scroll<4;scroll++)
.byte bobs_pic.getMulticolorByte(3+ghost*2,48+scroll*6+row)
}
}
}}
__constant char * const BOB_MASK_LEFT = (char *) 21504
__constant char * const BOB_MASK_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*6
__constant char * const BOB_PIXEL_LEFT = BOB_MASK_LEFT+BOB_ROW_SIZE*$c
__constant char * const BOB_PIXEL_RIGT = BOB_MASK_LEFT+BOB_ROW_SIZE*$12
__constant const char BOB_ROW_SIZE = $80
__constant char * const BORDER_COLOR = (char *) 53280
__constant char BYTEBOOZER[] = kickasm {{ .const B2_ZP_BASE = $fc
#import "byteboozer_decrunch.asm"
}}
__constant char CHASE = 0
__constant struct MOS6526_CIA * const CIA1 = (struct MOS6526_CIA *) 56320
__constant char * const CIA1_INTERRUPT = (char *) 56333
__constant struct MOS6526_CIA * const CIA2 = (struct MOS6526_CIA *) 56576
__constant const char CIA_INTERRUPT_CLEAR = $7f
__constant char DIRECTION::DOWN = 8
__constant char DIRECTION::LEFT = $10
__constant char DIRECTION::RIGHT = $20
__constant char DIRECTION::STOP = 0
__constant char DIRECTION::UP = 4
__constant char DIRECTION_ELIMINATE[$21] = { $ff, 0, 0, 0, $f7, 0, 0, 0, $fb, 0, 0, 0, 0, 0, 0, 0, $df, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $ef }
__constant char DIRECTION_REVERSE[$21] = { 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, $20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, $10 }
__constant char DIRECTION_SINGLE[$40] = { 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $20, $20, $20, $20, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, $10, $10, $10, $10, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4 }
__constant char DOWN = 8
__constant char EMPTY = 0
__constant char FRIGHTENED = 2
__constant char * const GAMEOVER_GFX = (char *) 42752
__constant char GAMEOVER_GFX_CRUNCHED[] = kickasm( uses GAMEOVER_GFX) {{ .modify B2() {
.pc = GAMEOVER_GFX "GAMEOVER GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_gameover = LoadPicture("pacman-gameover.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_gameover.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant char GHOSTS_MODE::CHASE = 0
__constant char GHOSTS_MODE::FRIGHTENED = 2
__constant char GHOSTS_MODE::SCATTER = 1
__constant void (** const HARDWARE_IRQ)() = (void (**)()) 65534
__constant char * const INTRO_MUSIC = (char *) 12288
__constant char INTRO_MUSIC_CRUNCHED[] = kickasm( uses INTRO_MUSIC) {{ .modify B2() {
.pc = INTRO_MUSIC "INTRO MUSIC"
.const music = LoadBinary("pacman-2chn-simpler.prg", BF_C64FILE)
.fill music.getSize(), music.get(i)
}
}}
__constant const unsigned int INTRO_MUSIC_CRUNCHED_SIZE = $600
__constant char * const INTRO_MUSIC_CRUNCHED_UPPER = (char *) 42752
__constant const char IRQ_RASTER = 1
__constant const char IRQ_SCREEN_TOP_LINE = 5
__constant char * const IRQ_STATUS = (char *) 53273
__constant char LEFT = $10
__constant char * const LEVEL_TILES = (char *) 18432
__constant char LEVEL_TILES_CRUNCHED[] = kickasm( uses LEVEL_TILES) {{ .modify B2() {
.pc = LEVEL_TILES "LEVEL TILE GRAPHICS"
.var pic_level = LoadPicture("pacman-tiled.png", List().add($000000, $352879, $bfce72, $883932))
// Maps the tile pixels (a 16 bit number) to the tile ID
.var TILESET = Hashtable()
// Maps the tile ID to the pixels (a 16 bit number)
.var TILESET_BY_ID = Hashtable()
// Tile ID 0 is empty
.eval TILESET.put(0, 0)
.eval TILESET_BY_ID.put(0, 0)
.align $100
// TABLE LEVEL_TILES[64*37]
// The level is 50 tiles * 37 tiles. The first tile line are special half-tiles (where only the last 2 pixel rows are shown).
// The level data is organized as 37 rows of 64 bytes containing tile IDs. (the last 14 are unused to achieve 64-byte alignment)
.for(var ytile=0; ytile<37; ytile++) {
.for(var xtile=0; xtile<50; xtile++) {
// Find the tile pixels (4x4 px - 16 bits)
.var pixels = 0;
.for(var i=0; i<4; i++) {
.var pix = pic_level.getMulticolorByte(xtile/2,ytile*4+i)
.if((xtile&1)==0) {
// left nibble
.eval pix = floor(pix / $10)
} else {
// right nibble
.eval pix = pix & $0f
}
.eval pixels = pixels*$10 + pix
}
.var tile_id = 0
.if(TILESET.containsKey(pixels)) {
.eval tile_id = TILESET.get(pixels)
} else {
.eval tile_id = TILESET.keys().size()
.eval TILESET.put(pixels, tile_id)
.eval TILESET_BY_ID.put(tile_id, pixels)
// .print "tile "+tile_id+" : "+toHexString(pixels,4)
}
// Output the tile ID
.byte tile_id
}
.fill 14, 0
}
.align $100
// TABLE char TILES_LEFT[0x80]
// The left tile graphics. A tile is 4x4 px. The left tiles contain tile graphics for the 4 left bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix<<4
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_RIGHT[0x80]
// The right tile graphics. A tile is 4x4 px. The right tiles contain tile graphics for the 4 right bits of a char. Each tile is 4 bytes.
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
.byte pix
.eval pixels = pixels << 4
}
}
.align $80
// TABLE char TILES_TYPE[0x20]
// 0: empty (all black), 1:pill, 2:powerup, 4: wall (contains blue pixels)
.for(var tile_id=0;tile_id<TILESET_BY_ID.keys().size();tile_id++) {
.var pixels = TILESET_BY_ID.get(tile_id)
.var tile_type = 0
.if(pixels==$0220) .eval tile_type=1 // 1:pill
.if(pixels==$aaaa) .eval tile_type=2 // 2:powerup
.for(var i=0; i<4; i++) {
.var pix = (pixels & $f000) >> 12
// Detect wall - any blue pixels (%01)
.if( (pix&%0100)==%0100) .eval tile_type = 4; // 4:wall
.if( (pix&%0001)==%0001) .eval tile_type = 4; // 4:wall
.eval pixels = pixels << 4
}
.byte tile_type
//.print "tile "+tile_id+" gfx "+toHexString(TILESET_BY_ID.get(tile_id),4) + " type "+tile_type
}
}
}}
__constant char * const LEVEL_TILES_DIRECTIONS = (char *) 15872
__constant unsigned int LEVEL_YTILE_OFFSET[$25] = { 0, $40, $80, $c0, $100, $140, $180, $1c0, $200, $240, $280, $2c0, $300, $340, $380, $3c0, $400, $440, $480, $4c0, $500, $540, $580, $5c0, $600, $640, $680, $6c0, $700, $740, $780, $7c0, $800, $840, $880, $8c0, $900 }
__constant char LOGIC_CODE_CRUNCHED[] = kickasm( uses bobs_xcol uses bobs_yfine uses bobs_bob_id uses bobs_restore uses RENDER_INDEX uses RENDER_OFFSET_CANVAS_LO uses RENDER_OFFSET_CANVAS_HI uses RENDER_OFFSET_YPOS_INC uses SIZE_BOB_RESTORE uses BOB_ROW_SIZE uses NUM_BOBS uses left_render_index_xcol uses left_canvas uses left_ypos_inc_offset uses rigt_render_index_xcol uses rigt_canvas uses rigt_ypos_inc_offset uses BOB_MASK_LEFT uses BOB_PIXEL_LEFT uses BOB_MASK_RIGT uses BOB_PIXEL_RIGT uses canvas_base_hi uses bobs_restore_base uses RENDER_YPOS_INC uses logic_tile_ptr uses logic_tile_xcol uses logic_tile_yfine uses logic_tile_left_idx uses logic_tile_right_idx) {{ .macro LOGIC_BEGIN(cycles) {
.byte cycles
}
.macro LOGIC_END() {
.byte $ff
}
.modify B2() {
.pc = LOGIC_CODE_UNMERGED "LOGIC CODE UNMERGED"
LOGIC_BEGIN(2)
clc
LOGIC_END()
// ******************************************
// Restores the canvas under the rendered bobs
// ******************************************
.for(var bob=NUM_BOBS-1;bob>=0; bob--) {
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// char * volatile left_canvas = *((char**)&bob_restore[0]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+0,x
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+1,x
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = bob_restore[2];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+2,x
sta.z left_ypos_inc_offset
LOGIC_END()
// char * volatile rigt_canvas = *((char**)&bob_restore[3]);
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+3,x
sta.z rigt_canvas
LOGIC_END()
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+4,x
sta.z rigt_canvas+1
LOGIC_END()
// char rigt_ypos_inc_offset = bob_restore[5];
LOGIC_BEGIN(7)
lda bobs_restore+SIZE_BOB_RESTORE*bob+5,x
sta.z rigt_ypos_inc_offset
LOGIC_END()
// Restore Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
// *left_canvas = bob_restore[6] ;
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
sta (left_canvas),y
LOGIC_END()
// *rigt_canvas = bob_restore[7];
LOGIC_BEGIN(10)
lda bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
sta (rigt_canvas),y
LOGIC_END()
}
}
// ******************************************
// Render two tiles on the canvas
// ******************************************
// y==0 from bob restore
LOGIC_BEGIN(12)
// char tile_left_idx = 4 * logic_tile_ptr[0];
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_left_idx
LOGIC_END()
// char logic_tile_right_idx = 4 * logic_tile_ptr[1];
LOGIC_BEGIN(2)
iny
LOGIC_END()
LOGIC_BEGIN(12)
lda (logic_tile_ptr),y
asl
asl
sta logic_tile_right_idx
LOGIC_END()
// char * render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, ytile*2 };
LOGIC_BEGIN(8)
lda #>RENDER_INDEX
adc logic_tile_xcol
sta.z left_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(6)
lda logic_tile_yfine
sta.z left_render_index_xcol
LOGIC_END()
// unsigned int canvas_offset = {render_index_xcol[RENDER_OFFSET_CANVAS_HI], render_index_xcol[RENDER_OFFSET_CANVAS_LO] };
// char * left_canvas = canvas_base_hi*$100 + canvas_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_canvas
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(11)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
LOGIC_END()
// char left_ypos_inc_offset = render_index_xcol[RENDER_OFFSET_YPOS_INC];
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(8)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
LOGIC_END()
// Render Tile Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<4;row++) {
// *left_canvas = tile_left_pixels[y] | tile_right_pixels[y];
LOGIC_BEGIN(3)
ldx logic_tile_left_idx
LOGIC_END()
LOGIC_BEGIN(17)
lda TILES_LEFT+row,x
ldx logic_tile_right_idx
ora TILES_RIGHT+row,x
sta (left_canvas),y
LOGIC_END()
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
}
// ******************************************
// Renders the BOBs at the given positions
// ******************************************
.for(var bob=0;bob<NUM_BOBS; bob++) {
// char * left_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol, yfine };
// char * rigt_render_index_xcol = (char*){ (>RENDER_INDEX) + xcol+1, yfine };
//LOGIC_BEGIN(6)
//inc $d021
//LOGIC_END()
LOGIC_BEGIN(14)
lda #>RENDER_INDEX
adc bobs_xcol+bob
sta.z left_render_index_xcol+1
adc #1
sta.z rigt_render_index_xcol+1
LOGIC_END()
LOGIC_BEGIN(10)
lda bobs_yfine+bob
sta.z left_render_index_xcol
sta.z rigt_render_index_xcol
LOGIC_END()
// char * left_canvas = (char*){ left_render_index_xcol[85], left_render_index_xcol[0] };
// bob_restore[0] = <left_canvas; bob_restore[1] = >left_canvas;
// char * rigt_canvas = (char*){ rigt_render_index_xcol[85], rigt_render_index_xcol[0] };
// bob_restore[3] = <rigt_canvas; bob_restore[4] = >rigt_canvas;
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_LO
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+0,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_canvas
sta bobs_restore+SIZE_BOB_RESTORE*bob+3,x
LOGIC_END()
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_CANVAS_HI
LOGIC_END()
LOGIC_BEGIN(16)
lda (left_render_index_xcol),y
adc canvas_base_hi
sta.z left_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+1,x
LOGIC_END()
LOGIC_BEGIN(16)
lda (rigt_render_index_xcol),y
adc canvas_base_hi
sta.z rigt_canvas+1
sta bobs_restore+SIZE_BOB_RESTORE*bob+4,x
LOGIC_END()
// char left_ypos_inc_offset = left_render_index_xcol[170];
// bob_restore[2] = left_ypos_inc_offset;
// char rigt_ypos_inc_offset = rigt_render_index_xcol[170];
// bob_restore[5] = rigt_ypos_inc_offset;
LOGIC_BEGIN(2)
ldy #RENDER_OFFSET_YPOS_INC
LOGIC_END()
LOGIC_BEGIN(13)
lda (left_render_index_xcol),y
sta.z left_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+2,x
LOGIC_END()
LOGIC_BEGIN(13)
lda (rigt_render_index_xcol),y
sta.z rigt_ypos_inc_offset
sta bobs_restore+SIZE_BOB_RESTORE*bob+5,x
LOGIC_END()
// Render Bob Rows
LOGIC_BEGIN(2)
ldy #0
LOGIC_END()
.for(var row=0;row<6;row++) {
//left_canvas += RENDER_YPOS_INC[left_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z left_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z left_canvas
sta.z left_canvas
lda.z left_canvas+1
adc #0
sta.z left_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z left_ypos_inc_offset
LOGIC_END()
//rigt_canvas += RENDER_YPOS_INC[rigt_ypos_inc_offset++];
LOGIC_BEGIN(3)
ldx.z rigt_ypos_inc_offset
LOGIC_END()
LOGIC_BEGIN(18)
lda RENDER_YPOS_INC,x
adc.z rigt_canvas
sta.z rigt_canvas
lda.z rigt_canvas+1
adc #0
sta.z rigt_canvas+1
LOGIC_END()
LOGIC_BEGIN(5)
inc.z rigt_ypos_inc_offset
LOGIC_END()
// bob_restore[6] = *left_canvas;
// *left_canvas = *left_canvas & BOB_MASK_LEFT_0[bob_id] | BOB_PIXEL_LEFT_0[bob_id];
LOGIC_BEGIN(3)
ldx bobs_restore_base
LOGIC_END()
LOGIC_BEGIN(10)
lda (left_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+6+row,x
LOGIC_END()
LOGIC_BEGIN(10)
lda (rigt_canvas),y
sta bobs_restore+SIZE_BOB_RESTORE*bob+12+row,x
LOGIC_END()
LOGIC_BEGIN(4)
ldx bobs_bob_id+bob
LOGIC_END()
LOGIC_BEGIN(19)
lda (left_canvas),y
and BOB_MASK_LEFT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_LEFT+row*BOB_ROW_SIZE,x
sta (left_canvas),y
LOGIC_END()
// bob_restore[7] = *rigt_canvas;
// *rigt_canvas = *rigt_canvas & BOB_MASK_RIGT_0[bob_id] | BOB_PIXEL_RIGT_0[bob_id];
LOGIC_BEGIN(19)
lda (rigt_canvas),y
and BOB_MASK_RIGT+row*BOB_ROW_SIZE,x
ora BOB_PIXEL_RIGT+row*BOB_ROW_SIZE,x
sta (rigt_canvas),y
LOGIC_END()
}
}
//LOGIC_BEGIN(6)
//lda #0
//sta $d021
//LOGIC_END()
LOGIC_BEGIN(0) // end of logic code
}
}}
__constant char * const LOGIC_CODE_UNMERGED = (char *) 57344
__constant const char NUM_BOBS = 5
__constant const unsigned int OFFSET_SPRITE_PTRS = $3f8
__constant char OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
__constant char OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR = 2
__constant char OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
__constant char OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = $11
__constant char OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = $1a
__constant char OFFSET_STRUCT_MOS6569_VICII_IRQ_STATUS = $19
__constant char OFFSET_STRUCT_MOS6569_VICII_MEMORY = $18
__constant char OFFSET_STRUCT_MOS6569_VICII_RASTER = $12
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_COLOR = $27
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE0_Y = 1
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_COLOR = $28
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE1_Y = 3
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE2_Y = 5
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE3_Y = 7
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE4_Y = 9
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE5_Y = $b
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE6_Y = $d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITE7_Y = $f
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_ENABLE = $15
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_EXPAND_X = $1d
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MC = $1c
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR1 = $25
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_MCOLOR2 = $26
__constant char OFFSET_STRUCT_MOS6569_VICII_SPRITES_XMSB = $10
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_ATTACK_DECAY = 5
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_CONTROL = 4
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_PULSE_WIDTH = 2
__constant char OFFSET_STRUCT_MOS6581_SID_CH1_SUSTAIN_RELEASE = 6
__constant char OFFSET_STRUCT_MOS6581_SID_VOLUME_FILTER_MODE = $18
__constant char PACMAN_CH1_CONTROL[] = { $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0, $21, $21, $21, $21, $21, $21, 0, 0, 0, 0, 0 }
__constant char PACMAN_CH1_FREQ_HI[] = { $23, $1d, $1a, $17, $15, $12, 0, 0, 0, 0, 0, $19, $1a, $1c, $1d, $20, $23, 0, 0, 0, 0, 0 }
__constant char PILL = 1
__constant char POWERUP = 2
__constant char * const PROCPORT = (char *) 1
__constant char * const PROCPORT_DDR = (char *) 0
__constant const char PROCPORT_DDR_MEMORY_MASK = 7
__constant const char PROCPORT_RAM_ALL = 0
__constant const char PROCPORT_RAM_IO = 5
__constant char * const RASTER = (char *) 53266
__constant char * const RASTER_CODE = (char *) 32768
__constant char RASTER_CODE_CRUNCHED[] = kickasm( uses VICII_CONTROL2 uses BORDER_COLOR uses RASTER_CODE_UNMERGED uses side_sprites_color uses side_sprites_mc uses bottom_sprites_color uses bottom_sprites_mc) {{ .macro RASTER_CYCLES(cycles) {
.byte $ff, cycles
}
.modify B2() {
.pc = RASTER_CODE_UNMERGED "RASTER CODE UNMERGED"
RASTER_CYCLES(29)
// Line 7 cycle 44
// Raster Line
.var raster_line = 7
// Line in the sprite
.var sprite_line = 20
// Current sprite ypos
.var sprite_ypos = 7
// Current sprite screen (graphics bank not important since sprite layout in the banks is identical)
.var sprite_screen = SCREENS_1
.var available_cycles = 0;
.for(var i=0;i<293;i++) {
// Line cycle count
.var line_cycles = 46
.if(raster_line>=70 && raster_line<238) {
// Only 2 sprites on these lines - so more cycles available
.eval line_cycles = 58
}
// Create 9th sprite by moving sprite 0
.if(mod(raster_line,2)==0) {
lda #$6f
sta $d000
} else {
lda #$e7
sta $d000
}
.eval line_cycles -= 6;
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
.eval line_cycles -= 12;
.eval raster_line++
.eval sprite_line++
.if(sprite_line==21) {
.eval sprite_line = 0
.eval sprite_ypos += 21
}
// Set sprite single-color mode on splash
.if(raster_line==53) {
lda side_sprites_mc
sta $d01c
lda side_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
}
// Set sprite multi-color mode on splash
.if(raster_line==248) {
lda bottom_sprites_mc
sta $d01c
lda bottom_sprites_color
sta $d027
sta $d028
.eval line_cycles -= 18
//.print "raster:"+raster_line+" multi-color"
}
// Open top border
.if(raster_line==55) {
lda #VICII_RSEL|VICII_ECM|VICII_BMM|7
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" top border rsel=1"
}
// Open bottom border
.if(raster_line==250) {
lda #VICII_ECM|VICII_BMM|7 // DEN=0, RSEL=0
sta VICII_CONTROL1
.eval line_cycles -= 6
//.print "raster:"+raster_line+" bottom border rsel=0"
}
// Move sprites down
.if(sprite_line>=2 && sprite_line<=9) {
.if(sprite_ypos<300) {
.var sprite_id = sprite_line-2
.if(sprite_id==0 || sprite_id==1 || sprite_ypos<=55 || sprite_ypos>=(246-21)) {
lda #sprite_ypos
sta SPRITES_YPOS+2*sprite_id
.eval line_cycles -= 6;
//.print "raster:"+raster_line+" sprite:"+sprite_id+" ypos:"+sprite_ypos
}
}
}
// Change sprite data
.if(sprite_line==20) {
.eval sprite_screen += $400
lda #sprite_screen/$40
sta VICII_MEMORY
.eval line_cycles -= 6
//.print "raster:"+raster_line+" sprite data $"+toHexString(sprite_screen)
}
// Spend the rest of the cycles on NOPS
.if(line_cycles<0 || line_cycles==1) .error "Too many cycles spent on line "+raster_line
.if(line_cycles>0) {
//.print "raster:"+raster_line+" cycles $"+toHexString(line_cycles)
RASTER_CYCLES(line_cycles)
.eval line_cycles -= line_cycles
.eval available_cycles += line_cycles
}
}
//.print "Available cycles: "+available_cycles
lda #$6f
sta $d000
lda #$8
// Cycle 50. LSR abs is a 6 cycle RWM instruction.
lsr VICII_CONTROL2
sta VICII_CONTROL2
RASTER_CYCLES(00) // End of raster code
}
}}
__constant char * const RASTER_CODE_UNMERGED = (char *) 24576
__constant const char RED = 2
__constant char * const RENDER_INDEX = (char *) 46592
__constant const char RENDER_OFFSET_CANVAS_HI = $50
__constant const char RENDER_OFFSET_CANVAS_LO = 0
__constant const char RENDER_OFFSET_YPOS_INC = $a0
__constant char *RENDER_XCOLS[$1a] = { 0, 1, 2, $400, $401, $402, $800, $801, $802, $c00, $c01, $c02, $1000, $1001, $1002, $1400, $1401, $1402, $1800, $1801, $1802, $1c00, $1c01, $1c02, 0, 0 }
__constant unsigned int RENDER_YPOS[$95] = { 0, 0, 0, 6, $c, $12, $18, $1e, $24, $2a, $30, $36, $3c, (unsigned int)$40+3, (unsigned int)$40+9, (unsigned int)$40+$f, (unsigned int)$40+$15, (unsigned int)$40+$1b, (unsigned int)$40+$21, (unsigned int)$40+$27, (unsigned int)$40+$2d, (unsigned int)$40+$33, (unsigned int)$40+$39, $80, (unsigned int)$80+6, (unsigned int)$80+$c, (unsigned int)$80+$12, (unsigned int)$80+$18, (unsigned int)$80+$1e, (unsigned int)$80+$24, (unsigned int)$80+$2a, (unsigned int)$80+$30, (unsigned int)$80+$36, (unsigned int)$80+$3c, (unsigned int)$c0+3, (unsigned int)$c0+9, (unsigned int)$c0+$f, (unsigned int)$c0+$15, (unsigned int)$c0+$1b, (unsigned int)$c0+$21, (unsigned int)$c0+$27, (unsigned int)$c0+$2d, (unsigned int)$c0+$33, (unsigned int)$c0+$39, $100, $100+6, $100+$c, $100+$12, $100+$18, $100+$1e, $100+$24, $100+$2a, $100+$30, $100+$36, $100+$3c, $140+3, $140+9, $140+$f, $140+$15, $140+$1b, $140+$21, $140+$27, $140+$2d, $140+$33, $140+$39, $180, $180+6, $180+$c, $180+$12, $180+$18, $180+$1e, $180+$24, $180+$2a, $180+$30, $180+$36, $180+$3c, $1c0+3, $1c0+9, $1c0+$f, $1c0+$15, $1c0+$1b, $1c0+$21, $1c0+$27, $1c0+$2d, $1c0+$33, $1c0+$39, $200, $200+6, $200+$c, $200+$12, $200+$18, $200+$1e, $200+$24, $200+$2a, $200+$30, $200+$36, $200+$3c, $240+3, $240+9, $240+$f, $240+$15, $240+$1b, $240+$21, $240+$27, $240+$2d, $240+$33, $240+$39, $280, $280+6, $280+$c, $280+$12, $280+$18, $280+$1e, $280+$24, $280+$2a, $280+$30, $280+$36, $280+$3c, $2c0+3, $2c0+9, $2c0+$f, $2c0+$15, $2c0+$1b, $2c0+$21, $2c0+$27, $2c0+$2d, $2c0+$33, $2c0+$39, $300, $300+6, $300+$c, $300+$12, $300+$18, $300+$1e, $300+$24, $300+$2a, $300+$30, $300+$36, $300+$3c, $340+3, $340+9, $340+$f, $340+$15, $340+$1b, $340+$21, $340+$27, $340+$2d, $340+$33, $340+$39 }
__constant unsigned int RENDER_YPOS_9TH[$95] = { 3, 3, 3, 9, $f, $15, $1b, $21, $27, $2d, $33, $39, $40, (unsigned int)$40+6, (unsigned int)$40+$c, (unsigned int)$40+$12, (unsigned int)$40+$18, (unsigned int)$40+$1e, (unsigned int)$40+$24, (unsigned int)$40+$2a, (unsigned int)$40+$30, (unsigned int)$40+$36, (unsigned int)$40+$3c, (unsigned int)$80+3, (unsigned int)$80+9, (unsigned int)$80+$f, (unsigned int)$80+$15, (unsigned int)$80+$1b, (unsigned int)$80+$21, (unsigned int)$80+$27, (unsigned int)$80+$2d, (unsigned int)$80+$33, (unsigned int)$80+$39, $c0, (unsigned int)$c0+6, (unsigned int)$c0+$c, (unsigned int)$c0+$12, (unsigned int)$c0+$18, (unsigned int)$c0+$1e, (unsigned int)$c0+$24, (unsigned int)$c0+$2a, (unsigned int)$c0+$30, (unsigned int)$c0+$36, (unsigned int)$c0+$3c, $100+3, $100+9, $100+$f, $100+$15, $100+$1b, $100+$21, $100+$27, $100+$2d, $100+$33, $100+$39, $140, $140+6, $140+$c, $140+$12, $140+$18, $140+$1e, $140+$24, $140+$2a, $140+$30, $140+$36, $140+$3c, $180+3, $180+9, $180+$f, $180+$15, $180+$1b, $180+$21, $180+$27, $180+$2d, $180+$33, $180+$39, $1c0, $1c0+6, $1c0+$c, $1c0+$12, $1c0+$18, $1c0+$1e, $1c0+$24, $1c0+$2a, $1c0+$30, $1c0+$36, $1c0+$3c, $200+3, $200+9, $200+$f, $200+$15, $200+$1b, $200+$21, $200+$27, $200+$2d, $200+$33, $200+$39, $240, $240+6, $240+$c, $240+$12, $240+$18, $240+$1e, $240+$24, $240+$2a, $240+$30, $240+$36, $240+$3c, $280+3, $280+9, $280+$f, $280+$15, $280+$1b, $280+$21, $280+$27, $280+$2d, $280+$33, $280+$39, $2c0, $2c0+6, $2c0+$c, $2c0+$12, $2c0+$18, $2c0+$1e, $2c0+$24, $2c0+$2a, $2c0+$30, $2c0+$36, $2c0+$3c, $300+3, $300+9, $300+$f, $300+$15, $300+$1b, $300+$21, $300+$27, $300+$2d, $300+$33, $300+$39, $340, $340+6, $340+$c, $340+$12, $340+$18, $340+$1e, $340+$24, $340+$2a, $340+$30, $340+$36, $340+$3c }
__constant char RENDER_YPOS_INC[$a0] = { 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7 }
__constant char RIGHT = $20
__constant char SCATTER = 1
__constant char * const SCREENS_1 = (char *) 16384
__constant char * const SCREENS_2 = (char *) 49152
__constant struct MOS6581_SID * const SID = (struct MOS6581_SID *) 54272
__constant char * const SID_CH1_FREQ_HI = (char *) 54273
__constant char SIZEOF_CHAR = 1
__constant const char SIZE_BOB_RESTORE = $12
__constant char * const SPLASH = (char *) 16384
__constant char SPLASH_CRUNCHED[] = kickasm( uses SPLASH) {{ .modify B2() {
.pc = SPLASH "SPLASH SCREEN" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_splash_mc = LoadPicture("pacman-splash.png", List().add($000000, $352879, $bfce72, $883932))
// 0:BLACK, 1:YELLOW
.var pic_splash_yellow = LoadPicture("pacman-splash.png", List().add($000000, $bfce72))
// 0:BLACK, 1:BLUE
.var pic_splash_blue = LoadPicture("pacman-splash.png", List().add($000000, $352879))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<147; ypos++) {
.if(ypos>25 && ypos<123) {
// Sprites in the sides are in single color blue on splash screen
.byte pic_splash_blue.getSinglecolorByte(xcol,ypos)
} else .if(xcol>2 && xcol<21) {
// Sprites 2-7 are in single color yellow on splash screen
.byte pic_splash_yellow.getSinglecolorByte(xcol,ypos)
} else {
// Sprites 0&1 are in multi color on splash screen
.byte pic_splash_mc.getMulticolorByte(xcol,ypos)
}
}
}
}
}}
__constant char * const SPRITES_1 = (char *) 24576
__constant char * const SPRITES_2 = (char *) 57344
__constant char * const SPRITES_COLOR = (char *) 53287
__constant char * const SPRITES_XPOS = (char *) 53248
__constant char * const SPRITES_YPOS = (char *) 53249
__constant char STOP = 0
__constant char * const TILES_LEFT = LEVEL_TILES+$a00
__constant char * const TILES_RIGHT = LEVEL_TILES+$a80
__constant char * const TILES_TYPE = LEVEL_TILES+$b00
__constant char TILE_TYPE::EMPTY = 0
__constant char TILE_TYPE::PILL = 1
__constant char TILE_TYPE::POWERUP = 2
__constant char TILE_TYPE::WALL = 4
__constant char UP = 4
__constant struct MOS6569_VICII * const VICII = (struct MOS6569_VICII *) 53248
__constant const char VICII_BMM = $20
__constant char * const VICII_CONTROL1 = (char *) 53265
__constant char * const VICII_CONTROL2 = (char *) 53270
__constant const char VICII_DEN = $10
__constant const char VICII_ECM = $40
__constant char * const VICII_MEMORY = (char *) 53272
__constant const char VICII_RSEL = 8
__constant const char VICII_RST8 = $80
__constant char WALL = 4
__constant char * const WIN_GFX = (char *) 42752
__constant char WIN_GFX_CRUNCHED[] = kickasm( uses WIN_GFX) {{ .modify B2() {
.pc = WIN_GFX "WIN GRAPHICS" // 00:BLACK, 01:BLUE, 10:YELLOW, 11:RED
.var pic_win = LoadPicture("pacman-win.png", List().add($000000, $352879, $bfce72, $883932))
.for(var xcol=0; xcol<25; xcol++) {
.for(var ypos=0; ypos<25; ypos++) {
.byte pic_win.getMulticolorByte(xcol,ypos)
}
}
}
}}
__constant const char YELLOW = 7
void __start()
__loadstore volatile char anim_frame_idx // zp[1]:96 0.9019607843137255
__constant char bobs_bob_id[NUM_BOBS] = { 0, 0, 0, 0, 0 }
__constant char bobs_restore[NUM_BOBS*SIZE_BOB_RESTORE*2] = { fill( NUM_BOBS*SIZE_BOB_RESTORE*2, 0) }
__loadstore volatile char bobs_restore_base // zp[1]:33 1070.0
__constant char bobs_xcol[NUM_BOBS] = { $a, $a, $a, $a, $a }
__constant char bobs_yfine[NUM_BOBS] = { $2d, $2d, $2d, $2d, $2d }
__loadstore volatile char bottom_sprites_color // zp[1]:24 11040.0
__loadstore volatile char bottom_sprites_mc // zp[1]:25 11040.0
void byteboozer_decrunch(char * volatile crunched)
__loadstore char * volatile byteboozer_decrunch::crunched // zp[2]:36 438.5
__loadstore volatile char canvas_base_hi // zp[1]:32 1070.0
char choose_direction(char open_directions , char ghost_xtile , char ghost_ytile , char target_xtile , char target_ytile)
char choose_direction::$2 // reg byte a 202.0
char choose_direction::$4 // reg byte a 202.0
char choose_direction::$6 // reg byte a 202.0
char choose_direction::$8 // reg byte a 202.0
char choose_direction::direction
char choose_direction::direction#10 // direction zp[1]:51 28.857142857142858
char choose_direction::direction#6 // direction zp[1]:51 67.33333333333333
char choose_direction::direction#8 // direction zp[1]:51 57.714285714285715
char choose_direction::dist_down
char choose_direction::dist_down#0 // reg byte x 151.5
char choose_direction::dist_left
char choose_direction::dist_left#0 // dist_left zp[1]:34 151.5
char choose_direction::dist_min
char choose_direction::dist_min#10 // reg byte x 121.2
char choose_direction::dist_min#11 // dist_min zp[1]:34 101.0
char choose_direction::dist_min#13 // reg byte x 202.0
char choose_direction::dist_min#14 // reg byte x 202.0
char choose_direction::dist_min#17 // dist_min zp[1]:34 202.0
char choose_direction::dist_min#18 // dist_min zp[1]:34 202.0
char choose_direction::dist_min#6 // reg byte y 80.8
char choose_direction::dist_right
char choose_direction::dist_right#0 // reg byte a 202.0
char choose_direction::dist_up
char choose_direction::dist_up#0 // reg byte y 101.0
char choose_direction::ghost_xtile
char choose_direction::ghost_xtile#0 // reg byte y 5.5
char choose_direction::ghost_xtile#1 // reg byte y 5.5
char choose_direction::ghost_xtile#2 // reg byte y 5.5
char choose_direction::ghost_xtile#3 // reg byte y 5.5
char choose_direction::ghost_xtile#4 // reg byte y 145.0
char choose_direction::ghost_ytile
char choose_direction::ghost_ytile#0 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#1 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#2 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#3 // ghost_ytile zp[1]:52 7.333333333333333
char choose_direction::ghost_ytile#4 // ghost_ytile zp[1]:52 72.5
char choose_direction::open_directions
char choose_direction::open_directions#0 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#1 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#10 // open_directions zp[1]:73 19.478260869565215
char choose_direction::open_directions#2 // open_directions zp[1]:73 4.4
char choose_direction::open_directions#3 // open_directions zp[1]:73 4.4
char choose_direction::return
char choose_direction::return#0 // reg byte a 22.0
char choose_direction::return#1 // reg byte a 22.0
char choose_direction::return#10 // return zp[1]:51 41.0
char choose_direction::return#2 // reg byte a 22.0
char choose_direction::return#3 // reg byte a 22.0
char choose_direction::target_xtile
char choose_direction::target_xtile#0 // reg byte x 11.0
char choose_direction::target_xtile#1 // reg byte x 11.0
char choose_direction::target_xtile#2 // reg byte x 11.0
char choose_direction::target_xtile#3 // reg byte x 11.0
char choose_direction::target_xtile#4 // reg byte x 145.0
char choose_direction::target_ytile
char choose_direction::target_ytile#0 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#1 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#2 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#3 // target_ytile zp[1]:39 22.0
char choose_direction::target_ytile#4 // target_ytile zp[1]:39 72.5
char choose_direction::xdiff
char choose_direction::xdiff#0 // xdiff zp[1]:75 21.041666666666664
char choose_direction::ydiff
char choose_direction::ydiff#0 // ydiff zp[1]:52 21.956521739130434
void done_run()
char done_run::$8 // reg byte a 2000002.0
char *done_run::gfx
char *done_run::gfx#1 // gfx zp[2]:5 333333.6666666667
char *done_run::gfx#2 // gfx zp[2]:5 800001.25
char *done_run::gfx#4 // gfx zp[2]:5 100001.0
char done_run::i
char done_run::i#1 // reg byte x 200002.0
char done_run::i#2 // reg byte x 133334.66666666666
char done_run::i1
char done_run::i1#1 // reg byte x 200002.0
char done_run::i1#2 // reg byte x 120001.2
char done_run::pixels
char done_run::pixels#0 // reg byte x 500000.5
char done_run::xcol
char done_run::xcol#1 // xcol zp[1]:20 200002.0
char done_run::xcol#2 // xcol zp[1]:20 118182.18181818182
char done_run::ypos
char done_run::ypos#1 // ypos zp[1]:16 2000002.0
char done_run::ypos#2 // ypos zp[1]:16 500000.5
__loadstore volatile char frame // zp[1]:101 0.5
void game_logic()
char game_logic::$119 // reg byte a 22.0
char game_logic::$14 // reg byte x 22.0
char game_logic::$140 // reg byte a 22.0
char game_logic::$15 // reg byte a 22.0
char game_logic::$161 // reg byte a 22.0
char game_logic::$17 // reg byte a 22.0
char game_logic::$18 // reg byte x 22.0
char game_logic::$182 // reg byte a 22.0
char game_logic::$19 // reg byte x 11.0
char game_logic::$199 // reg byte a 22.0
char game_logic::$2 // reg byte x 22.0
char game_logic::$20 // reg byte a 22.0
char game_logic::$200 // reg byte a 22.0
char game_logic::$204 // reg byte a 22.0
char game_logic::$21 // reg byte a 22.0
char game_logic::$210 // zp[1]:34 2.588235294117647
char game_logic::$220 // reg byte x 11.0
char game_logic::$223 // reg byte x 11.0
char game_logic::$226 // reg byte x 11.0
char game_logic::$229 // reg byte x 11.0
char game_logic::$232 // reg byte x 11.0
char game_logic::$25 // reg byte a 22.0
char game_logic::$26 // reg byte x 22.0
char game_logic::$27 // reg byte x 11.0
char game_logic::$28 // reg byte a 22.0
char game_logic::$29 // reg byte a 22.0
char game_logic::$3 // reg byte a 22.0
char game_logic::$31 // reg byte a 22.0
char game_logic::$32 // reg byte x 22.0
char game_logic::$33 // reg byte x 11.0
char game_logic::$34 // reg byte a 22.0
char game_logic::$35 // reg byte a 22.0
char game_logic::$37 // reg byte a 22.0
char game_logic::$38 // reg byte x 22.0
char game_logic::$39 // reg byte x 11.0
char game_logic::$40 // reg byte a 22.0
char game_logic::$41 // reg byte a 22.0
char game_logic::$43 // reg byte a 22.0
char game_logic::$44 // reg byte x 22.0
char game_logic::$45 // reg byte x 11.0
char game_logic::$46 // reg byte a 22.0
char game_logic::$47 // reg byte a 22.0
char game_logic::$65 // reg byte a 22.0
char game_logic::$66 // reg byte a 22.0
char *game_logic::$67 // zp[2]:69 22.0
char game_logic::$68 // reg byte a 22.0
char game_logic::$69 // reg byte a 22.0
char game_logic::$70 // reg byte a 22.0
char *game_logic::$71 // zp[2]:69 22.0
char game_logic::$72 // reg byte a 22.0
char game_logic::$75 // reg byte x 11.0
char game_logic::$77 // reg byte y 11.0
char game_logic::$80 // reg byte x 11.0
char game_logic::$82 // reg byte y 11.0
char game_logic::$85 // reg byte x 11.0
char game_logic::$87 // reg byte y 11.0
char game_logic::$90 // reg byte x 11.0
char game_logic::$92 // reg byte y 11.0
char game_logic::do_reverse
char game_logic::do_reverse#4 // reg byte a 11.0
char game_logic::ghost1_bob_xfine
char game_logic::ghost1_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost1_xtile
char game_logic::ghost1_xtile#0 // ghost1_xtile zp[1]:93 2.357142857142857
char game_logic::ghost1_ytile
char game_logic::ghost1_ytile#0 // ghost1_ytile zp[1]:52 2.357142857142857
char game_logic::ghost2_bob_xfine
char game_logic::ghost2_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost2_xtile
char game_logic::ghost2_xtile#0 // ghost2_xtile zp[1]:92 2.357142857142857
char game_logic::ghost2_ytile
char game_logic::ghost2_ytile#0 // ghost2_ytile zp[1]:52 2.357142857142857
char game_logic::ghost3_bob_xfine
char game_logic::ghost3_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost3_xtile
char game_logic::ghost3_xtile#0 // ghost3_xtile zp[1]:91 2.357142857142857
char game_logic::ghost3_ytile
char game_logic::ghost3_ytile#0 // ghost3_ytile zp[1]:52 2.357142857142857
char game_logic::ghost4_bob_xfine
char game_logic::ghost4_bob_xfine#0 // reg byte y 5.5
char game_logic::ghost4_xtile
char game_logic::ghost4_xtile#0 // ghost4_xtile zp[1]:51 2.357142857142857
char game_logic::ghost4_ytile
char game_logic::ghost4_ytile#0 // ghost4_ytile zp[1]:52 2.357142857142857
char game_logic::ghost_frame_idx
char game_logic::ghost_frame_idx#0 // ghost_frame_idx zp[1]:74 16.5
char game_logic::ghost_frame_idx#1 // ghost_frame_idx zp[1]:74 22.0
char game_logic::ghost_frame_idx#2 // ghost_frame_idx zp[1]:74 1.9999999999999998
char game_logic::joy_directions
char game_logic::joy_directions#0 // reg byte a 16.5
char game_logic::new_direction
char game_logic::new_direction#0 // reg byte a 16.5
char game_logic::open_directions
char game_logic::open_directions#0 // reg byte a 22.0
char game_logic::open_directions#1 // reg byte y 5.5
char game_logic::open_directions1
char game_logic::open_directions1#0 // reg byte a 22.0
char game_logic::open_directions1#1 // reg byte y 5.5
char game_logic::open_directions2
char game_logic::open_directions2#0 // reg byte a 22.0
char game_logic::open_directions2#1 // reg byte y 5.5
char game_logic::open_directions3
char game_logic::open_directions3#0 // reg byte a 22.0
char game_logic::open_directions3#1 // reg byte y 5.5
char game_logic::open_directions4
char game_logic::open_directions4#0 // reg byte x 3.666666666666667
char game_logic::pacman_bob_xfine
char game_logic::pacman_bob_xfine#0 // reg byte y 5.5
char game_logic::pacman_xtile
char game_logic::pacman_xtile#0 // pacman_xtile zp[1]:73 6.769230769230768
char game_logic::pacman_xtile1
char game_logic::pacman_xtile1#0 // reg byte x 11.0
char game_logic::pacman_ytile
char game_logic::pacman_ytile#0 // reg byte a 22.0
char game_logic::pacman_ytile1
char game_logic::pacman_ytile1#0 // reg byte a 11.0
char game_logic::target_xtile
char game_logic::target_xtile#2 // reg byte x 11.0
char game_logic::target_xtile#3 // reg byte x 5.5
char game_logic::target_xtile1
char game_logic::target_xtile1#2 // reg byte x 11.0
char game_logic::target_xtile1#3 // reg byte x 5.5
char game_logic::target_xtile2
char game_logic::target_xtile2#2 // reg byte x 11.0
char game_logic::target_xtile2#3 // reg byte x 5.5
char game_logic::target_xtile3
char game_logic::target_xtile3#2 // reg byte x 11.0
char game_logic::target_xtile3#3 // reg byte x 5.5
char game_logic::target_ytile
char game_logic::target_ytile#2 // target_ytile zp[1]:39 22.0
char game_logic::target_ytile#3 // target_ytile zp[1]:39 4.4
char game_logic::target_ytile1
char game_logic::target_ytile1#2 // target_ytile1 zp[1]:39 22.0
char game_logic::target_ytile1#3 // target_ytile1 zp[1]:39 4.4
char game_logic::target_ytile2
char game_logic::target_ytile2#2 // target_ytile2 zp[1]:39 22.0
char game_logic::target_ytile2#3 // target_ytile2 zp[1]:39 4.4
char game_logic::target_ytile3
char game_logic::target_ytile3#2 // target_ytile3 zp[1]:39 22.0
char game_logic::target_ytile3#3 // target_ytile3 zp[1]:39 4.4
char game_logic::tile_id
char game_logic::tile_id#0 // reg byte x 16.5
char *game_logic::ytiles
char *game_logic::ytiles#0 // ytiles zp[2]:69 5.5
__loadstore volatile char game_logic_substep // zp[1]:90 2.947368421052632
__loadstore volatile char game_playable // zp[1]:65 69.48275862068965
void gameplay_run()
unsigned int gameplay_run::$4 // zp[2]:9 2002.0
char gameplay_run::i
char gameplay_run::i#1 // reg byte x 200002.0
char gameplay_run::i#2 // reg byte x 133334.66666666666
char gameplay_run::i1
char gameplay_run::i1#1 // reg byte x 200002.0
char gameplay_run::i1#2 // reg byte x 133334.66666666666
char gameplay_run::i2
char gameplay_run::i2#1 // reg byte x 200002.0
char gameplay_run::i2#2 // reg byte x 133334.66666666666
__loadstore volatile char ghost1_direction // zp[1]:54 122.24096385542168
__loadstore volatile char ghost1_respawn // zp[1]:38 271.8378378378378
__loadstore volatile char ghost1_reverse // zp[1]:97 0.7291666666666666
__loadstore volatile char ghost1_substep // zp[1]:45 223.51111111111112
__loadstore volatile char ghost1_xfine // zp[1]:59 84.55
__loadstore volatile char ghost1_yfine // zp[1]:60 82.13008130081302
__loadstore volatile char ghost2_direction // zp[1]:55 110.28260869565217
__loadstore volatile char ghost2_respawn // zp[1]:40 264.6842105263158
__loadstore volatile char ghost2_reverse // zp[1]:98 0.7142857142857143
__loadstore volatile char ghost2_substep // zp[1]:46 218.65217391304347
__loadstore volatile char ghost2_xfine // zp[1]:62 76.28571428571428
__loadstore volatile char ghost2_yfine // zp[1]:63 74.27941176470588
__loadstore volatile char ghost3_direction // zp[1]:56 100.45544554455446
__loadstore volatile char ghost3_respawn // zp[1]:41 257.8974358974359
__loadstore volatile char ghost3_reverse // zp[1]:99 0.7
__loadstore volatile char ghost3_substep // zp[1]:47 214.0
__loadstore volatile char ghost3_xfine // zp[1]:64 69.4931506849315
__loadstore volatile char ghost3_yfine // zp[1]:66 67.7986577181208
__loadstore volatile char ghost4_direction // zp[1]:57 92.23636363636363
__loadstore volatile char ghost4_respawn // zp[1]:42 251.45000000000002
__loadstore volatile char ghost4_reverse // zp[1]:100 0.6862745098039216
__loadstore volatile char ghost4_substep // zp[1]:48 209.54166666666666
__loadstore volatile char ghost4_xfine // zp[1]:67 63.81132075471698
__loadstore volatile char ghost4_yfine // zp[1]:68 62.358024691358025
__constant char ghost_frames[] = { 0, 0, 0, 0, $3c, $40, $3c, $40, $34, $38, $34, $38, 0, 0, 0, 0, $2c, $30, $2c, $30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $24, $28, $24, $28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $5c, $60, $5c, $60, $54, $58, $54, $58, 0, 0, 0, 0, $4c, $50, $4c, $50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, $44, $48, $44, $48 }
__loadstore volatile char ghosts_mode // zp[1]:95 1.1044776119402984
__loadstore volatile char ghosts_mode_count // zp[1]:43 234.93023255813955
void init_bobs_restore()
__constant char *init_bobs_restore::CANVAS_HIDDEN = (char *) 59904
char init_bobs_restore::bob
char init_bobs_restore::bob#1 // reg byte x 20002.0
char init_bobs_restore::bob#2 // reg byte x 2727.5454545454545
char *init_bobs_restore::bob_restore
char *init_bobs_restore::bob_restore#1 // bob_restore zp[2]:9 10001.0
char *init_bobs_restore::bob_restore#5 // bob_restore zp[2]:9 16000.7
char init_bobs_restore::i
char init_bobs_restore::i#1 // reg byte y 200002.0
char init_bobs_restore::i#2 // reg byte y 133334.66666666666
void init_level_tile_directions()
char init_level_tile_directions::$11 // reg byte a 2.0000002E7
char init_level_tile_directions::$15 // reg byte a 2.0000002E7
char init_level_tile_directions::$3 // reg byte x 2.0000002E7
char init_level_tile_directions::$7 // reg byte x 2.0000002E7
char *init_level_tile_directions::directions
char *init_level_tile_directions::directions#1 // directions zp[2]:9 1000001.0
char *init_level_tile_directions::directions#7 // directions zp[2]:9 315789.55263157893
char init_level_tile_directions::open_directions
char init_level_tile_directions::open_directions#11 // open_directions zp[1]:15 2857143.1428571427
char init_level_tile_directions::open_directions#12 // open_directions zp[1]:15 5714286.285714285
char init_level_tile_directions::open_directions#13 // open_directions zp[1]:15 5714286.285714285
char init_level_tile_directions::open_directions#2 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#3 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#4 // open_directions zp[1]:15 2.0000002E7
char init_level_tile_directions::open_directions#8 // open_directions zp[1]:15 3.0000003E7
char init_level_tile_directions::xtile
char init_level_tile_directions::xtile#1 // xtile zp[1]:16 2.0000002E7
char init_level_tile_directions::xtile#10 // xtile zp[1]:16 2285714.514285714
char init_level_tile_directions::ytile
char init_level_tile_directions::ytile#1 // ytile zp[1]:20 2000002.0
char init_level_tile_directions::ytile#15 // ytile zp[1]:20 1102564.282051282
void init_render_index()
unsigned int init_render_index::$10 // zp[2]:13 200002.0
unsigned int init_render_index::$11 // zp[2]:13 200002.0
unsigned int *init_render_index::$12 // zp[2]:13 200002.0
char init_render_index::$5 // reg byte a 200002.0
char init_render_index::$6 // reg byte a 200002.0
char init_render_index::$9 // reg byte a 20002.0
char *init_render_index::canvas
char *init_render_index::canvas#0 // canvas zp[2]:13 100001.0
char *init_render_index::canvas_xcol
char *init_render_index::canvas_xcol#0 // canvas_xcol zp[2]:3 5789.578947368421
char *init_render_index::render_index
char *init_render_index::render_index#1 // render_index zp[2]:5 10001.0
char *init_render_index::render_index_xcol
char *init_render_index::render_index_xcol#0 // render_index_xcol zp[2]:5 1200.1200000000001
char *init_render_index::render_index_xcol#1 // render_index_xcol_1 zp[2]:11 100001.0
char *init_render_index::render_index_xcol#2 // render_index_xcol_1 zp[2]:11 34000.4
char *init_render_index::render_index_xcol#7 // render_index_xcol_1 zp[2]:11 20002.0
unsigned int *init_render_index::render_ypos_table
unsigned int *init_render_index::render_ypos_table#4 // render_ypos_table zp[2]:9 4761.952380952381
char init_render_index::x_col
char init_render_index::x_col#1 // x_col zp[1]:20 20002.0
char init_render_index::x_col#2 // x_col zp[1]:20 1923.2692307692307
char init_render_index::y_pos
char init_render_index::y_pos#1 // y_pos zp[1]:16 200002.0
char init_render_index::y_pos#2 // y_pos zp[1]:16 18750.1875
char init_render_index::ypos_inc_offset
char init_render_index::ypos_inc_offset#2 // reg byte x 200002.0
char init_render_index::ypos_inc_offset#3 // reg byte x 200002.0
char init_render_index::ypos_inc_offset#4 // reg byte x 28182.181818181816
char init_render_index::ypos_inc_offset#7 // reg byte x 2500.25
char init_render_index::ypos_inc_offset#8 // reg byte x 100001.0
void init_sprite_pointers()
char init_sprite_pointers::$2 // reg byte a 2.0000002E7
__constant const char init_sprite_pointers::SPRITE_ID_0 = (char)SPRITES_1&$3fff/$40
char init_sprite_pointers::screen
char init_sprite_pointers::screen#1 // reg byte x 2000002.0
char init_sprite_pointers::screen#2 // reg byte x 1181818.5454545454
char init_sprite_pointers::sprite
char init_sprite_pointers::sprite#1 // reg byte y 2.0000002E7
char init_sprite_pointers::sprite#2 // reg byte y 1.0000001E7
char init_sprite_pointers::sprite_id
char init_sprite_pointers::sprite_id#0 // reg byte a 1.50000015E7
__constant char init_sprite_pointers::sprites_id[] = { 0, $70, $60, $50, $40, $30, $20, $10 }
char *init_sprite_pointers::sprites_ptr_1
char *init_sprite_pointers::sprites_ptr_1#1 // sprites_ptr_1 zp[2]:9 666667.3333333334
char *init_sprite_pointers::sprites_ptr_1#5 // sprites_ptr_1 zp[2]:9 1333333.6666666667
char *init_sprite_pointers::sprites_ptr_2
char *init_sprite_pointers::sprites_ptr_2#1 // sprites_ptr_2 zp[2]:7 1000001.0
char *init_sprite_pointers::sprites_ptr_2#5 // sprites_ptr_2 zp[2]:7 1200000.3
__interrupt(hardware_clobber) void irq_screen_top()
char irq_screen_top::$1 // reg byte a 4.0
char irq_screen_top::$2 // reg byte a 4.0
char *irq_screen_top::toD0181_gfx
char irq_screen_top::toD0181_return
__constant char irq_screen_top::toD0181_return#0 = 0 // toD0181_return
char *irq_screen_top::toD0181_screen
char *irq_screen_top::toDd001_gfx
char irq_screen_top::toDd001_return
__constant char irq_screen_top::toDd001_return#0 = 0 // toDd001_return
char *irq_screen_top::toDd002_gfx
char irq_screen_top::toDd002_return
__constant char irq_screen_top::toDd002_return#0 = 3^byte1 (unsigned int)SCREENS_1/$40 // toDd002_return
char joyfire()
char joyfire::$0 // reg byte a 2.0000002E7
char joyfire::return
char joyfire::return#0 // reg byte a 2000002.0
char joyfire::return#1 // reg byte a 20002.0
char joyfire::return#4 // reg byte a 252500.5
void joyinit()
__loadstore char * volatile left_canvas // zp[2]:80 20.0
__loadstore char * volatile left_render_index_xcol // zp[2]:78 20.0
__loadstore volatile char left_ypos_inc_offset // zp[1]:82 20.0
unsigned int level_show()
unsigned int level_show::count
unsigned int level_show::count#1 // count zp[2]:9 2.0000002E7
unsigned int level_show::count#10 // count zp[2]:9 4571429.285714285
unsigned int level_show::count#11 // count zp[2]:9 4285714.714285715
unsigned int level_show::count#12 // count zp[2]:9 500250.75
unsigned int level_show::count#2 // count zp[2]:9 2.0000002E7
unsigned int level_show::count#5 // count zp[2]:9 1.0000001E7
char *level_show::level
char *level_show::level#1 // level zp[2]:7 1000001.0
char *level_show::level#8 // level zp[2]:7 1100000.2
unsigned int level_show::return
unsigned int level_show::return#0 // return zp[2]:9 2002.0
char level_show::tile_left
char level_show::tile_left#0 // reg byte x 2500000.25
char level_show::tile_right
char level_show::tile_right#0 // tile_right zp[1]:2 3750000.375
char level_show::xcol
char level_show::xcol#1 // xcol zp[1]:15 2.0000002E7
char level_show::xcol#2 // xcol zp[1]:15 2352941.411764706
char level_show::xtile
char level_show::xtile#1 // reg byte y 6000000.6
char level_show::xtile#2 // xtile zp[1]:19 2000000.2
char level_show::xtile#3 // xtile zp[1]:19 1.0000001E7
char level_show::ytile
char level_show::ytile#1 // ytile zp[1]:16 2000002.0
char level_show::ytile#2 // ytile zp[1]:16 619047.8095238095
char level_tile_directions(char xtile , char ytile)
char level_tile_directions::$5 // reg byte a 202.0
char level_tile_directions::return
char level_tile_directions::return#0 // reg byte a 202.0
char level_tile_directions::return#10 // reg byte a 22.0
char level_tile_directions::return#11 // reg byte a 22.0
char level_tile_directions::return#12 // reg byte a 22.0
char level_tile_directions::return#13 // reg byte a 22.0
char level_tile_directions::return#2 // reg byte a 22.285714285714285
char level_tile_directions::return#3 // reg byte a 22.0
char level_tile_directions::xtile
char level_tile_directions::xtile#0 // reg byte x 11.0
char level_tile_directions::xtile#1 // reg byte x 11.0
char level_tile_directions::xtile#2 // reg byte x 11.0
char level_tile_directions::xtile#3 // reg byte x 11.0
char level_tile_directions::xtile#4 // reg byte x 11.0
char level_tile_directions::xtile#5 // reg byte x 51.4
char level_tile_directions::ytile
char level_tile_directions::ytile#0 // reg byte a 22.0
char level_tile_directions::ytile#1 // reg byte a 22.0
char level_tile_directions::ytile#2 // reg byte a 22.0
char level_tile_directions::ytile#3 // reg byte a 22.0
char level_tile_directions::ytile#4 // reg byte a 22.0
char level_tile_directions::ytile#5 // reg byte a 85.66666666666666
char *level_tile_directions::ytiles
char *level_tile_directions::ytiles#0 // ytiles zp[2]:49 202.0
char level_tile_get(char xtile , char ytile)
char level_tile_get::$5 // reg byte a 2.00000002E8
char level_tile_get::return
char level_tile_get::return#0 // reg byte a 2.00000002E8
char level_tile_get::return#10 // reg byte a 2.0000002E7
char level_tile_get::return#11 // reg byte a 2.0000002E7
char level_tile_get::return#2 // reg byte a 2.3333334166666668E7
char level_tile_get::return#3 // reg byte a 2.0000002E7
char level_tile_get::return#4 // reg byte a 2.0000002E7
char level_tile_get::xtile
char level_tile_get::xtile#0 // reg byte x 1.0000001E7
char level_tile_get::xtile#1 // reg byte x 1.0000001E7
char level_tile_get::xtile#2 // reg byte x 2.0000002E7
char level_tile_get::xtile#3 // reg byte x 2.0000002E7
char level_tile_get::xtile#4 // reg byte x 4.80000012E7
char level_tile_get::ytile
char level_tile_get::ytile#0 // reg byte a 2.0000002E7
char level_tile_get::ytile#1 // reg byte a 2.0000002E7
char level_tile_get::ytile#2 // reg byte a 1.0000001E7
char level_tile_get::ytile#3 // reg byte a 1.0000001E7
char level_tile_get::ytile#4 // reg byte a 8.0000002E7
char *level_tile_get::ytiles
char *level_tile_get::ytiles#0 // ytiles zp[2]:13 2.00000002E8
__loadstore volatile char logic_tile_left_idx // zp[1]:76 20.0
__loadstore volatile char * volatile logic_tile_ptr // zp[2]:26 10250.0
__loadstore volatile char logic_tile_right_idx // zp[1]:77 20.0
__loadstore volatile char logic_tile_xcol // zp[1]:28 10250.0
__loadstore volatile char logic_tile_yfine // zp[1]:29 10250.0
void main()
void * memcpy(void *destination , void *source , unsigned int num)
void *memcpy::destination
__constant void *memcpy::destination#0 = (void *)INTRO_MUSIC_CRUNCHED_UPPER // destination
char *memcpy::dst
char *memcpy::dst#1 // dst zp[2]:9 10001.0
char *memcpy::dst#2 // dst zp[2]:9 10001.0
unsigned int memcpy::num
void *memcpy::return
void *memcpy::source
__constant void *memcpy::source#0 = (void *)INTRO_MUSIC_CRUNCHED // source
char *memcpy::src
char *memcpy::src#1 // src zp[2]:7 20002.0
char *memcpy::src#2 // src zp[2]:7 10001.0
char *memcpy::src_end
__constant char *memcpy::src_end#0 = (char *)memcpy::source#0+INTRO_MUSIC_CRUNCHED_SIZE // src_end
void * memset(void *str , char c , unsigned int num)
char memset::c
char *memset::dst
char *memset::dst#1 // dst zp[2]:11 20002.0
char *memset::dst#2 // dst zp[2]:11 13668.333333333332
char *memset::dst#4 // dst zp[2]:11 2002.0
char *memset::end
char *memset::end#0 // end zp[2]:5 1833.6666666666665
unsigned int memset::num
unsigned int memset::num#5 // num zp[2]:5 1001.0
void *memset::return
void *memset::str
void *memset::str#6 // str zp[2]:11
void merge_code(char *dest_code , char *raster_code , char *logic_code)
char merge_code::$5 // reg byte y 100001.0
__constant const char merge_code::LOGIC_END = $ff
__constant const char merge_code::LOGIC_EXIT = 0
__constant const char merge_code::RASTER_END = $ff
__constant const char merge_code::RASTER_EXIT = 0
char merge_code::cycle_budget
char merge_code::cycle_budget#0 // reg byte x 10001.0
char merge_code::cycle_budget#1 // reg byte x 200002.0
char merge_code::cycle_budget#10 // reg byte x 88889.77777777777
char merge_code::cycle_budget#13 // reg byte x 50714.857142857145
char merge_code::cycle_budget#2 // reg byte x 200002.0
char merge_code::cycle_budget#3 // reg byte x 200002.0
char *merge_code::dest_code
char *merge_code::dest_code#0 // dest_code zp[2]:9 10001.0
char *merge_code::dest_code#1 // dest_code zp[2]:9 1000001.0
char *merge_code::dest_code#10 // dest_code zp[2]:9 180001.80000000002
char *merge_code::dest_code#12 // dest_code zp[2]:9 10334.666666666666
char *merge_code::dest_code#13 // dest_code zp[2]:9 80001.25
char *merge_code::dest_code#14 // dest_code zp[2]:9 21429.428571428572
char *merge_code::dest_code#15 // dest_code zp[2]:9 640001.0
char *merge_code::dest_code#2 // dest_code zp[2]:9 150001.5
char *merge_code::dest_code#21 // dest_code zp[2]:9 51250.625
char *merge_code::dest_code#3 // dest_code zp[2]:9 100001.0
char *merge_code::dest_code#4 // dest_code zp[2]:9 100001.0
char *merge_code::dest_code#6 // dest_code zp[2]:9 100001.0
char *merge_code::logic_code
char *merge_code::logic_code#0 // logic_code zp[2]:5 200002.0
char *merge_code::logic_code#1 // logic_code zp[2]:5 2000002.0
char *merge_code::logic_code#10 // logic_code zp[2]:5 1050001.5
char *merge_code::logic_code#12 // logic_code zp[2]:5 20002.0
char *merge_code::logic_code#14 // logic_code zp[2]:5 105001.5
char *merge_code::logic_code#17 // logic_code zp[2]:5 22778.055555555555
char *merge_code::logic_code#18 // logic_code zp[2]:5 15556.111111111113
char *merge_code::logic_code#2 // logic_code zp[2]:5 100001.0
char *merge_code::logic_code#3 // logic_code zp[2]:5 20002.0
char *merge_code::logic_code#4 // logic_code zp[2]:5 200002.0
char *merge_code::logic_code#5 // logic_code zp[2]:5 20002.0
char merge_code::logic_cycles
char merge_code::logic_cycles#0 // logic_cycles zp[1]:2 41667.08333333333
char *merge_code::raster_code
char *merge_code::raster_code#0 // raster_code zp[2]:11 20002.0
char *merge_code::raster_code#1 // raster_code zp[2]:11 15001.5
char *merge_code::raster_code#2 // raster_code zp[2]:11 3928.6428571428573
char *merge_code::raster_code#4 // raster_code zp[2]:11 37501.5
__constant void (* const musicInit)() = (void (*)())INTRO_MUSIC
__constant void (* const musicPlay)() = (void (*)())INTRO_MUSIC+6
__loadstore volatile char music_play_next // zp[1]:21 69506.875
__loadstore volatile char pacman_ch1_enabled // zp[1]:102 0.08254716981132076
__loadstore volatile char pacman_ch1_idx // zp[1]:94 1.9428571428571428
__loadstore volatile char pacman_direction // zp[1]:53 132.92105263157893
__constant char pacman_frames[] = { 8, 8, 8, 8, 8, $18, $14, $18, 8, $20, $1c, $20, 0, 0, 0, 0, 8, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, $c, $10, $c }
__loadstore volatile char pacman_lives // zp[1]:35 656.4415584415585
void pacman_sound_init()
void pacman_sound_play()
__loadstore volatile char pacman_substep // zp[1]:44 233.39534883720933
__loadstore volatile char pacman_wins // zp[1]:31 2040.32
__loadstore volatile char pacman_xfine // zp[1]:71 47.719626168224295
__loadstore volatile char pacman_yfine // zp[1]:72 46.21818181818182
__loadstore volatile char phase // zp[1]:61 78.03703703703704
__loadstore volatile unsigned int pill_count // zp[2]:88 14.191780821917808
void render(char xcol , char ypos , char pixels)
char render::$1 // reg byte x 1.0000001E7
char render::$2 // reg byte a 2.0000002E7
char *render::canvas1
char *render::canvas1#0 // canvas1 zp[2]:7 5000000.5
char *render::canvas1#1 // canvas1 zp[2]:7 5.00000000005E10
char *render::canvas1#2 // canvas1 zp[2]:7 1.00010000002E11
char *render::canvas2
char *render::canvas2#0 // canvas2 zp[2]:9 6666667.333333333
char *render::canvas2#1 // canvas2 zp[2]:9 6.6666666667333336E10
char *render::canvas2#2 // canvas2 zp[2]:9 5.0005000001E10
unsigned int render::canvas_offset
unsigned int render::canvas_offset#0 // canvas_offset zp[2]:9 1.50000015E7
char render::i
char render::i#1 // reg byte y 2.00000000002E11
char render::i#2 // reg byte y 6.0000000000600006E10
char render::pixels
char render::pixels#0 // pixels zp[1]:19 2000002.0
char render::pixels#1 // pixels zp[1]:19 200002.0
char render::pixels#4 // pixels zp[1]:19 1241176.705882353
char *render::render_index_xcol
unsigned int render::render_index_xcol#0 // render_index_xcol zp[2]:13 2500000.25
char render::xcol
char render::xcol#0 // xcol zp[1]:20 666667.3333333334
char render::xcol#1 // xcol zp[1]:20 66667.33333333333
char render::xcol#2 // xcol zp[1]:20 5550001.5
char render::ypix
char render::ypix#0 // ypix zp[1]:2 1.4287142857428572E10
char render::ypos
char render::ypos#0 // ypos zp[1]:16 1000001.0
char render::ypos#1 // ypos zp[1]:16 100001.0
char render::ypos#2 // ypos zp[1]:16 2344444.888888889
char render::ypos_inc_offset
char render::ypos_inc_offset#0 // reg byte x 1.0000001E7
char render::ypos_inc_offset#1 // reg byte x 1.00000000001E11
char render::ypos_inc_offset#2 // reg byte x 1.0000250000125E11
char render::ytile
char render::ytile#0 // reg byte y 1.0000001E7
void render_tiles(char xcol , char ytile , char tile_left , char tile_right)
char render_tiles::$0 // reg byte a 2.00000002E8
char render_tiles::$2 // reg byte a 2.00000002E8
char render_tiles::$4 // reg byte x 1.00000001E8
char render_tiles::$5 // reg byte a 2.00000002E8
char *render_tiles::canvas1
char *render_tiles::canvas1#0 // canvas1 zp[2]:5 6.6666667333333336E7
char *render_tiles::canvas1#1 // canvas1 zp[2]:5 5.000000000005E11
char *render_tiles::canvas1#2 // canvas1 zp[2]:5 6.000200000008E11
char *render_tiles::canvas2
char *render_tiles::canvas2#0 // canvas2 zp[2]:3 1.00000001E8
char *render_tiles::canvas2#1 // canvas2 zp[2]:3 6.666666666673334E11
char *render_tiles::canvas2#2 // canvas2 zp[2]:3 5.000166666673334E11
unsigned int render_tiles::canvas_offset
unsigned int render_tiles::canvas_offset#0 // canvas_offset zp[2]:3 1.500000015E8
char render_tiles::pixels
char render_tiles::pixels#0 // reg byte a 1.5000000000015E12
char *render_tiles::render_index_xcol
unsigned int render_tiles::render_index_xcol#0 // render_index_xcol zp[2]:17 2.500000025E7
char render_tiles::tile_left
char render_tiles::tile_left#0 // reg byte x 5.5000001E7
char *render_tiles::tile_left_pixels
char *render_tiles::tile_left_pixels#0 // tile_left_pixels zp[2]:13 5.2636842105368416E10
char render_tiles::tile_right
char render_tiles::tile_right#0 // reg byte y 3.6666667333333336E7
char *render_tiles::tile_right_pixels
char *render_tiles::tile_right_pixels#0 // tile_right_pixels zp[2]:11 5.882941176482353E10
char render_tiles::xcol
char render_tiles::xcol#0 // xcol zp[1]:15 1.375000025E7
char render_tiles::y
char render_tiles::y#1 // y zp[1]:2 2.000000000002E12
char render_tiles::y#2 // y zp[1]:2 6.25000000000625E11
char render_tiles::ypos_inc_offset
char render_tiles::ypos_inc_offset#0 // reg byte x 2.00000002E8
char render_tiles::ypos_inc_offset#1 // reg byte x 1.000000000001E12
char render_tiles::ypos_inc_offset#2 // reg byte x 5.714428571435714E11
char render_tiles::ytile
char render_tiles::ytile#0 // ytile zp[1]:16 1.375000025E7
__loadstore char * volatile rigt_canvas // zp[2]:85 20.0
__loadstore char * volatile rigt_render_index_xcol // zp[2]:83 20.0
__loadstore volatile char rigt_ypos_inc_offset // zp[1]:87 20.0
__loadstore volatile char side_sprites_color // zp[1]:22 11040.0
__loadstore volatile char side_sprites_mc // zp[1]:23 11040.0
void spawn_all()
void splash_run()
char splash_run::$25 // reg byte a 2002.0
char splash_run::$30 // reg byte a 20002.0
char splash_run::$34 // reg byte y 1334.6666666666667
char splash_run::i
char splash_run::i#1 // i zp[1]:20 2002.0
char splash_run::i#2 // i zp[1]:20 364.0
char splash_run::i1
char splash_run::i1#1 // reg byte x 2002.0
char splash_run::i1#2 // reg byte x 1334.6666666666667
char splash_run::i2
char splash_run::i2#1 // reg byte x 2002.0
char splash_run::i2#2 // reg byte x 1201.2
char splash_run::msb
char splash_run::msb#1 // reg byte x 1001.0
char splash_run::msb#10 // reg byte x 175.25
char splash_run::msb#2 // reg byte x 2002.0
char splash_run::msb#8 // reg byte x 1501.5
__constant unsigned int splash_run::sprites_xpos[] = { $1e7, $13f, $10f, $df, $af, $7f, $4f, $1f }
char *splash_run::toD0181_gfx
char splash_run::toD0181_return
__constant char splash_run::toD0181_return#0 = 0 // toD0181_return
char *splash_run::toD0181_screen
char *splash_run::toDd001_gfx
char splash_run::toDd001_return
__constant char splash_run::toDd001_return#0 = 3^byte1 (unsigned int)SCREENS_1/$40 // toDd001_return
unsigned int splash_run::xpos
unsigned int splash_run::xpos#0 // xpos zp[2]:5 667.3333333333334
void splash_show()
char splash_show::pixels
char splash_show::pixels#0 // reg byte x 50000.5
char *splash_show::splash
char *splash_show::splash#1 // splash zp[2]:11 33333.666666666664
char *splash_show::splash#2 // splash zp[2]:11 80001.25
char *splash_show::splash#4 // splash zp[2]:11 10001.0
char splash_show::xcol
char splash_show::xcol#1 // xcol zp[1]:20 20002.0
char splash_show::xcol#2 // xcol zp[1]:20 11818.545454545454
char splash_show::ypos
char splash_show::ypos#1 // ypos zp[1]:16 200002.0
char splash_show::ypos#2 // ypos zp[1]:16 50000.5
__loadstore volatile char top_sprites_color // zp[1]:30 3403.666666666667
__loadstore volatile char top_sprites_mc // zp[1]:58 92.0
zp[1]:74 [ game_logic::ghost_frame_idx#2 game_logic::ghost_frame_idx#0 game_logic::ghost_frame_idx#1 ]
reg byte a [ game_logic::do_reverse#4 ]
reg byte x [ game_logic::target_xtile#3 game_logic::target_xtile#2 ]
zp[1]:39 [ game_logic::target_ytile#3 game_logic::target_ytile#2 choose_direction::target_ytile#4 choose_direction::target_ytile#2 choose_direction::target_ytile#3 choose_direction::target_ytile#0 choose_direction::target_ytile#1 game_logic::target_ytile1#3 game_logic::target_ytile1#2 game_logic::target_ytile2#3 game_logic::target_ytile2#2 game_logic::target_ytile3#3 game_logic::target_ytile3#2 ]
reg byte x [ game_logic::target_xtile1#3 game_logic::target_xtile1#2 ]
reg byte x [ game_logic::target_xtile2#3 game_logic::target_xtile2#2 ]
reg byte x [ game_logic::target_xtile3#3 game_logic::target_xtile3#2 ]
reg byte x [ splash_run::msb#10 splash_run::msb#8 splash_run::msb#1 splash_run::msb#2 ]
reg byte x [ splash_run::i1#2 splash_run::i1#1 ]
reg byte x [ splash_run::i2#2 splash_run::i2#1 ]
reg byte x [ gameplay_run::i#2 gameplay_run::i#1 ]
reg byte x [ gameplay_run::i1#2 gameplay_run::i1#1 ]
reg byte x [ gameplay_run::i2#2 gameplay_run::i2#1 ]
reg byte x [ done_run::i#2 done_run::i#1 ]
reg byte x [ done_run::i1#2 done_run::i1#1 ]
reg byte x [ level_tile_directions::xtile#5 level_tile_directions::xtile#1 level_tile_directions::xtile#2 level_tile_directions::xtile#3 level_tile_directions::xtile#4 level_tile_directions::xtile#0 ]
reg byte a [ level_tile_directions::ytile#5 level_tile_directions::ytile#1 level_tile_directions::ytile#2 level_tile_directions::ytile#3 level_tile_directions::ytile#4 level_tile_directions::ytile#0 ]
reg byte a [ level_tile_directions::return#2 level_tile_directions::return#0 ]
reg byte y [ choose_direction::ghost_xtile#4 choose_direction::ghost_xtile#2 choose_direction::ghost_xtile#3 choose_direction::ghost_xtile#0 choose_direction::ghost_xtile#1 ]
reg byte x [ choose_direction::target_xtile#4 choose_direction::target_xtile#2 choose_direction::target_xtile#3 choose_direction::target_xtile#0 choose_direction::target_xtile#1 ]
zp[1]:52 [ choose_direction::ghost_ytile#4 choose_direction::ghost_ytile#2 choose_direction::ghost_ytile#3 choose_direction::ghost_ytile#0 choose_direction::ghost_ytile#1 game_logic::ghost4_ytile#0 game_logic::ghost3_ytile#0 game_logic::ghost2_ytile#0 game_logic::ghost1_ytile#0 choose_direction::ydiff#0 ]
reg byte y [ choose_direction::dist_min#6 choose_direction::dist_up#0 ]
reg byte x [ choose_direction::dist_min#10 choose_direction::dist_min#13 choose_direction::dist_min#14 choose_direction::dist_down#0 ]
reg byte x [ merge_code::cycle_budget#10 merge_code::cycle_budget#2 merge_code::cycle_budget#3 merge_code::cycle_budget#13 merge_code::cycle_budget#0 merge_code::cycle_budget#1 ]
reg byte x [ init_render_index::ypos_inc_offset#4 init_render_index::ypos_inc_offset#7 init_render_index::ypos_inc_offset#8 init_render_index::ypos_inc_offset#2 init_render_index::ypos_inc_offset#3 ]
reg byte x [ init_bobs_restore::bob#2 init_bobs_restore::bob#1 ]
reg byte y [ init_bobs_restore::i#2 init_bobs_restore::i#1 ]
reg byte x [ init_sprite_pointers::screen#2 init_sprite_pointers::screen#1 ]
reg byte y [ init_sprite_pointers::sprite#2 init_sprite_pointers::sprite#1 ]
reg byte a [ joyfire::return#4 ]
zp[1]:20 [ init_level_tile_directions::ytile#15 init_level_tile_directions::ytile#1 splash_run::i#2 splash_run::i#1 init_render_index::x_col#2 init_render_index::x_col#1 done_run::xcol#2 done_run::xcol#1 render::xcol#2 render::xcol#0 render::xcol#1 splash_show::xcol#2 splash_show::xcol#1 ]
zp[1]:16 [ level_show::ytile#2 level_show::ytile#1 render_tiles::ytile#0 init_level_tile_directions::xtile#10 init_level_tile_directions::xtile#1 init_render_index::y_pos#2 init_render_index::y_pos#1 done_run::ypos#2 done_run::ypos#1 render::ypos#2 render::ypos#0 render::ypos#1 splash_show::ypos#2 splash_show::ypos#1 ]
zp[1]:15 [ level_show::xcol#2 level_show::xcol#1 render_tiles::xcol#0 init_level_tile_directions::open_directions#8 init_level_tile_directions::open_directions#4 init_level_tile_directions::open_directions#13 init_level_tile_directions::open_directions#3 init_level_tile_directions::open_directions#12 init_level_tile_directions::open_directions#2 init_level_tile_directions::open_directions#11 ]
zp[1]:19 [ render::pixels#4 render::pixels#0 render::pixels#1 level_show::xtile#3 level_show::xtile#2 ]
reg byte y [ render::i#2 render::i#1 ]
zp[2]:7 [ render::canvas1#2 render::canvas1#0 render::canvas1#1 level_show::level#8 level_show::level#1 memcpy::src#2 memcpy::src#1 init_sprite_pointers::sprites_ptr_2#5 init_sprite_pointers::sprites_ptr_2#1 ]
reg byte x [ render::ypos_inc_offset#2 render::ypos_inc_offset#0 render::ypos_inc_offset#1 ]
zp[2]:9 [ render::canvas2#2 render::canvas2#0 render::canvas2#1 render::canvas_offset#0 level_show::count#5 level_show::count#12 level_show::count#10 level_show::count#11 level_show::count#1 level_show::count#2 level_show::return#0 gameplay_run::$4 init_level_tile_directions::directions#7 init_level_tile_directions::directions#1 memcpy::dst#2 memcpy::dst#1 init_sprite_pointers::sprites_ptr_1#5 init_sprite_pointers::sprites_ptr_1#1 init_bobs_restore::bob_restore#5 init_bobs_restore::bob_restore#1 init_render_index::render_ypos_table#4 merge_code::dest_code#21 merge_code::dest_code#12 merge_code::dest_code#13 merge_code::dest_code#14 merge_code::dest_code#10 merge_code::dest_code#0 merge_code::dest_code#6 merge_code::dest_code#15 merge_code::dest_code#3 merge_code::dest_code#4 merge_code::dest_code#1 merge_code::dest_code#2 ]
reg byte x [ level_tile_get::xtile#4 level_tile_get::xtile#0 level_tile_get::xtile#1 level_tile_get::xtile#2 level_tile_get::xtile#3 ]
reg byte a [ level_tile_get::ytile#4 level_tile_get::ytile#0 level_tile_get::ytile#1 level_tile_get::ytile#2 level_tile_get::ytile#3 ]
reg byte a [ level_tile_get::return#2 level_tile_get::return#0 ]
reg byte x [ render_tiles::ypos_inc_offset#2 render_tiles::ypos_inc_offset#0 render_tiles::ypos_inc_offset#1 ]
zp[1]:102 [ pacman_ch1_enabled ]
zp[1]:94 [ pacman_ch1_idx ]
zp[2]:26 [ logic_tile_ptr ]
zp[1]:28 [ logic_tile_xcol ]
zp[1]:29 [ logic_tile_yfine ]
zp[1]:76 [ logic_tile_left_idx ]
zp[1]:77 [ logic_tile_right_idx ]
zp[2]:78 [ left_render_index_xcol ]
zp[2]:80 [ left_canvas ]
zp[1]:82 [ left_ypos_inc_offset ]
zp[2]:83 [ rigt_render_index_xcol ]
zp[2]:85 [ rigt_canvas ]
zp[1]:87 [ rigt_ypos_inc_offset ]
zp[1]:32 [ canvas_base_hi ]
zp[1]:33 [ bobs_restore_base ]
zp[1]:30 [ top_sprites_color ]
zp[1]:58 [ top_sprites_mc ]
zp[1]:22 [ side_sprites_color ]
zp[1]:23 [ side_sprites_mc ]
zp[1]:24 [ bottom_sprites_color ]
zp[1]:25 [ bottom_sprites_mc ]
zp[2]:88 [ pill_count ]
zp[1]:31 [ pacman_wins ]
zp[1]:35 [ pacman_lives ]
zp[1]:21 [ music_play_next ]
zp[1]:61 [ phase ]
zp[1]:101 [ frame ]
zp[1]:96 [ anim_frame_idx ]
zp[1]:71 [ pacman_xfine ]
zp[1]:72 [ pacman_yfine ]
zp[1]:53 [ pacman_direction ]
zp[1]:44 [ pacman_substep ]
zp[1]:95 [ ghosts_mode ]
zp[1]:43 [ ghosts_mode_count ]
zp[1]:59 [ ghost1_xfine ]
zp[1]:60 [ ghost1_yfine ]
zp[1]:54 [ ghost1_direction ]
zp[1]:45 [ ghost1_substep ]
zp[1]:97 [ ghost1_reverse ]
zp[1]:38 [ ghost1_respawn ]
zp[1]:62 [ ghost2_xfine ]
zp[1]:63 [ ghost2_yfine ]
zp[1]:55 [ ghost2_direction ]
zp[1]:46 [ ghost2_substep ]
zp[1]:98 [ ghost2_reverse ]
zp[1]:40 [ ghost2_respawn ]
zp[1]:64 [ ghost3_xfine ]
zp[1]:66 [ ghost3_yfine ]
zp[1]:56 [ ghost3_direction ]
zp[1]:47 [ ghost3_substep ]
zp[1]:99 [ ghost3_reverse ]
zp[1]:41 [ ghost3_respawn ]
zp[1]:67 [ ghost4_xfine ]
zp[1]:68 [ ghost4_yfine ]
zp[1]:57 [ ghost4_direction ]
zp[1]:48 [ ghost4_substep ]
zp[1]:100 [ ghost4_reverse ]
zp[1]:42 [ ghost4_respawn ]
zp[1]:90 [ game_logic_substep ]
zp[1]:65 [ game_playable ]
reg byte a [ irq_screen_top::$1 ]
reg byte a [ irq_screen_top::$2 ]
reg byte x [ game_logic::$2 ]
reg byte a [ game_logic::$3 ]
reg byte x [ game_logic::$14 ]
reg byte a [ game_logic::$15 ]
reg byte y [ game_logic::pacman_bob_xfine#0 ]
reg byte a [ game_logic::$17 ]
reg byte x [ game_logic::$18 ]
reg byte x [ game_logic::$19 ]
reg byte a [ game_logic::$20 ]
reg byte a [ game_logic::$21 ]
reg byte y [ game_logic::ghost1_bob_xfine#0 ]
reg byte a [ game_logic::$25 ]
reg byte x [ game_logic::$26 ]
reg byte x [ game_logic::$27 ]
reg byte a [ game_logic::$28 ]
reg byte a [ game_logic::$29 ]
reg byte y [ game_logic::ghost2_bob_xfine#0 ]
reg byte a [ game_logic::$31 ]
reg byte x [ game_logic::$32 ]
reg byte x [ game_logic::$33 ]
reg byte a [ game_logic::$34 ]
reg byte a [ game_logic::$35 ]
reg byte y [ game_logic::ghost3_bob_xfine#0 ]
reg byte a [ game_logic::$37 ]
reg byte x [ game_logic::$38 ]
reg byte x [ game_logic::$39 ]
reg byte a [ game_logic::$40 ]
reg byte a [ game_logic::$41 ]
reg byte y [ game_logic::ghost4_bob_xfine#0 ]
reg byte a [ game_logic::$43 ]
reg byte x [ game_logic::$44 ]
reg byte x [ game_logic::$45 ]
reg byte a [ game_logic::$46 ]
reg byte a [ game_logic::$47 ]
zp[1]:73 [ game_logic::pacman_xtile#0 choose_direction::open_directions#10 choose_direction::open_directions#2 choose_direction::open_directions#3 choose_direction::open_directions#0 choose_direction::open_directions#1 ]
reg byte a [ game_logic::pacman_ytile#0 ]
zp[1]:34 [ game_logic::$210 choose_direction::dist_min#11 choose_direction::dist_left#0 choose_direction::dist_min#17 choose_direction::dist_min#18 ]
zp[2]:69 [ game_logic::ytiles#0 game_logic::$67 game_logic::$71 ]
reg byte x [ game_logic::tile_id#0 ]
reg byte a [ game_logic::$65 ]
reg byte a [ game_logic::$66 ]
reg byte a [ game_logic::$68 ]
reg byte x [ game_logic::$75 ]
reg byte y [ game_logic::$77 ]
reg byte x [ game_logic::$80 ]
reg byte y [ game_logic::$82 ]
reg byte x [ game_logic::$85 ]
reg byte y [ game_logic::$87 ]
reg byte x [ game_logic::$90 ]
reg byte y [ game_logic::$92 ]
reg byte a [ game_logic::$69 ]
reg byte a [ game_logic::$70 ]
reg byte a [ game_logic::$72 ]
reg byte x [ game_logic::$220 ]
zp[1]:51 [ game_logic::ghost4_xtile#0 choose_direction::return#10 choose_direction::direction#6 choose_direction::direction#8 choose_direction::direction#10 ]
reg byte a [ level_tile_directions::return#3 ]
reg byte a [ game_logic::open_directions#0 ]
reg byte y [ game_logic::open_directions#1 ]
reg byte a [ choose_direction::return#0 ]
reg byte a [ game_logic::$119 ]
reg byte x [ game_logic::$223 ]
zp[1]:91 [ game_logic::ghost3_xtile#0 ]
reg byte a [ level_tile_directions::return#10 ]
reg byte a [ game_logic::open_directions1#0 ]
reg byte y [ game_logic::open_directions1#1 ]
reg byte a [ choose_direction::return#1 ]
reg byte a [ game_logic::$140 ]
reg byte x [ game_logic::$226 ]
zp[1]:92 [ game_logic::ghost2_xtile#0 ]
reg byte a [ level_tile_directions::return#11 ]
reg byte a [ game_logic::open_directions2#0 ]
reg byte y [ game_logic::open_directions2#1 ]
reg byte a [ choose_direction::return#2 ]
reg byte a [ game_logic::$161 ]
reg byte x [ game_logic::$229 ]
zp[1]:93 [ game_logic::ghost1_xtile#0 ]
reg byte a [ level_tile_directions::return#12 ]
reg byte a [ game_logic::open_directions3#0 ]
reg byte y [ game_logic::open_directions3#1 ]
reg byte a [ choose_direction::return#3 ]
reg byte a [ game_logic::$182 ]
reg byte x [ game_logic::$232 ]
reg byte x [ game_logic::pacman_xtile1#0 ]
reg byte a [ game_logic::pacman_ytile1#0 ]
reg byte a [ level_tile_directions::return#13 ]
reg byte x [ game_logic::open_directions4#0 ]
reg byte a [ game_logic::$199 ]
reg byte a [ game_logic::$200 ]
reg byte a [ game_logic::joy_directions#0 ]
reg byte a [ game_logic::$204 ]
reg byte a [ game_logic::new_direction#0 ]
zp[2]:36 [ byteboozer_decrunch::crunched ]
reg byte a [ joyfire::return#1 ]
reg byte a [ splash_run::$30 ]
reg byte y [ splash_run::$34 ]
zp[2]:5 [ splash_run::xpos#0 render_tiles::canvas1#2 render_tiles::canvas1#0 render_tiles::canvas1#1 init_render_index::render_index_xcol#0 init_render_index::render_index#1 merge_code::logic_code#12 merge_code::logic_code#5 merge_code::logic_code#18 merge_code::logic_code#17 merge_code::logic_code#2 merge_code::logic_code#14 merge_code::logic_code#3 merge_code::logic_code#4 merge_code::logic_code#10 merge_code::logic_code#1 merge_code::logic_code#0 memset::num#5 memset::end#0 done_run::gfx#4 done_run::gfx#2 done_run::gfx#1 ]
reg byte a [ splash_run::$25 ]
reg byte a [ joyfire::return#0 ]
reg byte a [ done_run::$8 ]
reg byte x [ done_run::pixels#0 ]
reg byte a [ level_tile_directions::$5 ]
zp[2]:49 [ level_tile_directions::ytiles#0 ]
zp[1]:75 [ choose_direction::xdiff#0 ]
reg byte a [ choose_direction::$2 ]
reg byte a [ choose_direction::$4 ]
reg byte a [ choose_direction::$6 ]
reg byte a [ choose_direction::$8 ]
reg byte a [ choose_direction::dist_right#0 ]
reg byte y [ merge_code::$5 ]
reg byte a [ init_render_index::$9 ]
zp[2]:3 [ init_render_index::canvas_xcol#0 render_tiles::canvas2#2 render_tiles::canvas2#0 render_tiles::canvas2#1 render_tiles::canvas_offset#0 ]
reg byte a [ init_render_index::$5 ]
reg byte a [ init_render_index::$6 ]
reg byte x [ splash_show::pixels#0 ]
reg byte a [ init_sprite_pointers::$2 ]
reg byte a [ init_sprite_pointers::sprite_id#0 ]
reg byte a [ joyfire::$0 ]
reg byte a [ level_tile_get::return#3 ]
reg byte x [ init_level_tile_directions::$3 ]
reg byte a [ level_tile_get::return#4 ]
reg byte x [ init_level_tile_directions::$7 ]
reg byte a [ level_tile_get::return#10 ]
reg byte a [ init_level_tile_directions::$11 ]
reg byte a [ level_tile_get::return#11 ]
reg byte a [ init_level_tile_directions::$15 ]
reg byte x [ level_show::tile_left#0 ]
reg byte y [ level_show::xtile#1 ]
reg byte x [ render_tiles::tile_left#0 ]
reg byte y [ render_tiles::tile_right#0 ]
reg byte y [ render::ytile#0 ]
reg byte x [ render::$1 ]
reg byte a [ render::$2 ]
zp[1]:2 [ render::ypix#0 level_show::tile_right#0 merge_code::logic_cycles#0 render_tiles::y#2 render_tiles::y#1 ]
reg byte a [ level_tile_get::$5 ]
reg byte a [ render_tiles::$0 ]
zp[2]:13 [ render_tiles::tile_left_pixels#0 level_tile_get::ytiles#0 render::render_index_xcol#0 init_render_index::$11 init_render_index::$10 init_render_index::$12 init_render_index::canvas#0 ]
reg byte a [ render_tiles::$2 ]
zp[2]:11 [ render_tiles::tile_right_pixels#0 splash_show::splash#4 splash_show::splash#2 splash_show::splash#1 init_render_index::render_index_xcol#2 init_render_index::render_index_xcol#7 init_render_index::render_index_xcol#1 merge_code::raster_code#4 merge_code::raster_code#2 merge_code::raster_code#0 merge_code::raster_code#1 memset::str#6 memset::dst#2 memset::dst#4 memset::dst#1 ]
reg byte x [ render_tiles::$4 ]
reg byte a [ render_tiles::$5 ]
zp[2]:17 [ render_tiles::render_index_xcol#0 ]
reg byte a [ render_tiles::pixels#0 ]