mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-08-09 20:25:17 +00:00
10836 lines
649 KiB
Plaintext
10836 lines
649 KiB
Plaintext
Resolved forward reference irqTop to interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
Resolved forward reference RASTER_IRQ_TOP to (byte) RASTER_IRQ_TOP
|
|
Resolved forward reference SQUARES_X to (word[$28]) SQUARES_X
|
|
Resolved forward reference SQUARES_Y to (word[$19]) SQUARES_Y
|
|
Resolved forward reference RASTER_IRQ_MIDDLE to (byte) RASTER_IRQ_MIDDLE
|
|
Resolved forward reference irqBottom to interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
Fixing pointer addition (struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) processChars::i
|
|
Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) main::i)
|
|
Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) getCharToProcess::x)
|
|
Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) getCharToProcess::y)
|
|
Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::i)
|
|
Fixing pointer array-indexing *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte) startProcessing::spriteIdx)
|
|
Fixing pointer array-indexing *((word*) VXSIN + (byte) processChars::xchar)
|
|
Fixing pointer array-indexing *((word*) VYSIN + (byte) processChars::ychar)
|
|
Fixing pointer array-indexing *((word[$28]) SQUARES_X + (byte) initSquareTables::x)
|
|
Fixing pointer array-indexing *((word[$19]) SQUARES_Y + (byte) initSquareTables::y)
|
|
Created struct value member variable (byte) main::center_x
|
|
Created struct value member variable (byte) main::center_y
|
|
Created struct value member variable (word) main::center_dist
|
|
Converted struct value to member variables (struct ProcessingChar) main::center
|
|
Created struct value member variable (byte) main::$9_x
|
|
Created struct value member variable (byte) main::$9_y
|
|
Created struct value member variable (word) main::$9_dist
|
|
Converted struct value to member variables (struct ProcessingChar~) main::$9
|
|
Created struct value member variable (byte) getCharToProcess::return_x
|
|
Created struct value member variable (byte) getCharToProcess::return_y
|
|
Created struct value member variable (word) getCharToProcess::return_dist
|
|
Converted struct value to member variables (struct ProcessingChar) getCharToProcess::return
|
|
Created struct value member variable (byte) getCharToProcess::closest_x
|
|
Created struct value member variable (byte) getCharToProcess::closest_y
|
|
Created struct value member variable (word) getCharToProcess::closest_dist
|
|
Converted struct value to member variables (struct ProcessingChar) getCharToProcess::closest
|
|
Created struct value member variable (byte) startProcessing::center_x
|
|
Created struct value member variable (byte) startProcessing::center_y
|
|
Created struct value member variable (word) startProcessing::center_dist
|
|
Converted struct value to member variables (struct ProcessingChar) startProcessing::center
|
|
Converted procedure struct value parameter to member variables (void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist)
|
|
Adding struct value list initializer *((word*) main::$17 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((word*) main::$18 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((word*) main::$19 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((word*) main::$20 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((byte*) main::$21 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((byte*) main::$22 + (byte~) main::$16) ← (number) 0
|
|
Adding struct value list initializer *((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE
|
|
Adding struct value list initializer *((byte**) main::$24 + (byte~) main::$16) ← (number) 0
|
|
Converted procedure call LValue to member variables { (byte) main::$9_x, (byte) main::$9_y, (word) main::$9_dist } ← call getCharToProcess
|
|
Adding struct value member variable copy (byte) main::center_x ← (byte) main::$9_x
|
|
Adding struct value member variable copy (byte) main::center_y ← (byte) main::$9_y
|
|
Adding struct value member variable copy (word) main::center_dist ← (word) main::$9_dist
|
|
Converted procedure struct value parameter to member variables in call (void~) main::$12 ← call startProcessing (byte) main::center_x (byte) main::center_y (word) main::center_dist
|
|
Adding struct value list initializer (byte) getCharToProcess::closest_x ← (number) 0
|
|
Adding struct value list initializer (byte) getCharToProcess::closest_y ← (number) 0
|
|
Adding struct value list initializer (word) getCharToProcess::closest_dist ← (word) NOT_FOUND
|
|
Adding struct value list initializer (byte) getCharToProcess::closest_x ← (byte) getCharToProcess::x
|
|
Adding struct value list initializer (byte) getCharToProcess::closest_y ← (byte) getCharToProcess::y
|
|
Adding struct value list initializer (word) getCharToProcess::closest_dist ← (word) getCharToProcess::dist
|
|
Adding struct value member variable copy (byte) getCharToProcess::return_x ← (byte) getCharToProcess::closest_x
|
|
Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::closest_y
|
|
Adding struct value member variable copy (word) getCharToProcess::return_dist ← (word) getCharToProcess::closest_dist
|
|
Adding struct value member variable copy (byte) getCharToProcess::return_x ← (byte) getCharToProcess::return_x
|
|
Adding struct value member variable copy (byte) getCharToProcess::return_y ← (byte) getCharToProcess::return_y
|
|
Adding struct value member variable copy (word) getCharToProcess::return_dist ← (word) getCharToProcess::return_dist
|
|
Converted procedure struct return value to member variables return { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist }
|
|
Adding struct value list initializer *((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX
|
|
Adding struct value list initializer *((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY
|
|
Adding struct value list initializer *((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22
|
|
Adding struct value list initializer *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c
|
|
Adding struct value list initializer *((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx
|
|
Adding struct value list initializer *((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr
|
|
Adding struct value list initializer *((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW
|
|
Adding struct value list initializer *((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr
|
|
Replacing struct member reference (struct ProcessingChar) main::center.dist with member variable reference (word) main::center_dist
|
|
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist
|
|
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.dist with member variable reference (word) getCharToProcess::closest_dist
|
|
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.y with member variable reference (byte) getCharToProcess::closest_y
|
|
Replacing struct member reference (struct ProcessingChar) getCharToProcess::closest.x with member variable reference (byte) getCharToProcess::closest_x
|
|
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member variable reference (byte) startProcessing::center_y
|
|
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x
|
|
Replacing struct member reference (struct ProcessingChar) startProcessing::center.x with member variable reference (byte) startProcessing::center_x
|
|
Replacing struct member reference (struct ProcessingChar) startProcessing::center.y with member variable reference (byte) startProcessing::center_y
|
|
Rewriting struct pointer member access *((struct ProcessingSprite[NUM_PROCESSING]) PROCESSING + (byte~) startProcessing::$29).status
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).screenPtr
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).id
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).ptr
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).status
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vx
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).x
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).vy
|
|
Rewriting struct pointer member access *((struct ProcessingSprite*) processChars::processing).y
|
|
Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$12
|
|
Adding pointer type conversion cast (byte*) PROCPORT_DDR in (byte*) PROCPORT_DDR ← (number) 0
|
|
Adding pointer type conversion cast (byte*) PROCPORT in (byte*) PROCPORT ← (number) 1
|
|
Adding pointer type conversion cast (byte*) CHARGEN in (byte*) CHARGEN ← (number) $d000
|
|
Adding pointer type conversion cast (byte*) SPRITES_XPOS in (byte*) SPRITES_XPOS ← (number) $d000
|
|
Adding pointer type conversion cast (byte*) SPRITES_YPOS in (byte*) SPRITES_YPOS ← (number) $d001
|
|
Adding pointer type conversion cast (byte*) SPRITES_XMSB in (byte*) SPRITES_XMSB ← (number) $d010
|
|
Adding pointer type conversion cast (byte*) RASTER in (byte*) RASTER ← (number) $d012
|
|
Adding pointer type conversion cast (byte*) SPRITES_ENABLE in (byte*) SPRITES_ENABLE ← (number) $d015
|
|
Adding pointer type conversion cast (byte*) SPRITES_EXPAND_Y in (byte*) SPRITES_EXPAND_Y ← (number) $d017
|
|
Adding pointer type conversion cast (byte*) SPRITES_PRIORITY in (byte*) SPRITES_PRIORITY ← (number) $d01b
|
|
Adding pointer type conversion cast (byte*) SPRITES_MC in (byte*) SPRITES_MC ← (number) $d01c
|
|
Adding pointer type conversion cast (byte*) SPRITES_EXPAND_X in (byte*) SPRITES_EXPAND_X ← (number) $d01d
|
|
Adding pointer type conversion cast (byte*) BORDERCOL in (byte*) BORDERCOL ← (number) $d020
|
|
Adding pointer type conversion cast (byte*) BGCOL in (byte*) BGCOL ← (number) $d021
|
|
Adding pointer type conversion cast (byte*) BGCOL1 in (byte*) BGCOL1 ← (number) $d021
|
|
Adding pointer type conversion cast (byte*) BGCOL2 in (byte*) BGCOL2 ← (number) $d022
|
|
Adding pointer type conversion cast (byte*) BGCOL3 in (byte*) BGCOL3 ← (number) $d023
|
|
Adding pointer type conversion cast (byte*) BGCOL4 in (byte*) BGCOL4 ← (number) $d024
|
|
Adding pointer type conversion cast (byte*) SPRITES_MC1 in (byte*) SPRITES_MC1 ← (number) $d025
|
|
Adding pointer type conversion cast (byte*) SPRITES_MC2 in (byte*) SPRITES_MC2 ← (number) $d026
|
|
Adding pointer type conversion cast (byte*) SPRITES_COLS in (byte*) SPRITES_COLS ← (number) $d027
|
|
Adding pointer type conversion cast (byte*) VIC_CONTROL in (byte*) VIC_CONTROL ← (number) $d011
|
|
Adding pointer type conversion cast (byte*) D011 in (byte*) D011 ← (number) $d011
|
|
Adding pointer type conversion cast (byte*) VIC_CONTROL2 in (byte*) VIC_CONTROL2 ← (number) $d016
|
|
Adding pointer type conversion cast (byte*) D016 in (byte*) D016 ← (number) $d016
|
|
Adding pointer type conversion cast (byte*) D018 in (byte*) D018 ← (number) $d018
|
|
Adding pointer type conversion cast (byte*) VIC_MEMORY in (byte*) VIC_MEMORY ← (number) $d018
|
|
Adding pointer type conversion cast (byte*) LIGHTPEN_X in (byte*) LIGHTPEN_X ← (number) $d013
|
|
Adding pointer type conversion cast (byte*) LIGHTPEN_Y in (byte*) LIGHTPEN_Y ← (number) $d014
|
|
Adding pointer type conversion cast (byte*) IRQ_STATUS in (byte*) IRQ_STATUS ← (number) $d019
|
|
Adding pointer type conversion cast (byte*) IRQ_ENABLE in (byte*) IRQ_ENABLE ← (number) $d01a
|
|
Adding pointer type conversion cast (byte*) COLS in (byte*) COLS ← (number) $d800
|
|
Adding pointer type conversion cast (byte*) CIA1_PORT_A in (byte*) CIA1_PORT_A ← (number) $dc00
|
|
Adding pointer type conversion cast (byte*) CIA1_PORT_B in (byte*) CIA1_PORT_B ← (number) $dc01
|
|
Adding pointer type conversion cast (byte*) CIA1_PORT_A_DDR in (byte*) CIA1_PORT_A_DDR ← (number) $dc02
|
|
Adding pointer type conversion cast (byte*) CIA1_PORT_B_DDR in (byte*) CIA1_PORT_B_DDR ← (number) $dc03
|
|
Adding pointer type conversion cast (byte*) CIA1_INTERRUPT in (byte*) CIA1_INTERRUPT ← (number) $dc0d
|
|
Adding pointer type conversion cast (byte*) CIA2_PORT_A in (byte*) CIA2_PORT_A ← (number) $dd00
|
|
Adding pointer type conversion cast (byte*) CIA2_PORT_B in (byte*) CIA2_PORT_B ← (number) $dd01
|
|
Adding pointer type conversion cast (byte*) CIA2_PORT_A_DDR in (byte*) CIA2_PORT_A_DDR ← (number) $dd02
|
|
Adding pointer type conversion cast (byte*) CIA2_PORT_B_DDR in (byte*) CIA2_PORT_B_DDR ← (number) $dd03
|
|
Adding pointer type conversion cast (byte*) CIA2_INTERRUPT in (byte*) CIA2_INTERRUPT ← (number) $dd0d
|
|
Adding pointer type conversion cast (void()**) KERNEL_IRQ in (void()**) KERNEL_IRQ ← (number) $314
|
|
Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWARE_IRQ ← (number) $fffe
|
|
Adding pointer type conversion cast (byte*) SCREEN in (byte*) SCREEN ← (number) $400
|
|
Adding pointer type conversion cast (byte*) SPRITE_DATA in (byte*) SPRITE_DATA ← (number) $2000
|
|
Adding pointer type conversion cast (word*) VXSIN in (word*) VXSIN ← (number) $2200
|
|
Adding pointer type conversion cast (word*) VYSIN in (word*) VYSIN ← (number) $2280
|
|
Adding pointer type conversion cast (byte*) *(main::$24 + main::$16) in *((byte**) main::$24 + (byte~) main::$16) ← (number) 0
|
|
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
|
Culled Empty Block (label) @1
|
|
Culled Empty Block (label) @2
|
|
Culled Empty Block (label) @3
|
|
Culled Empty Block (label) @4
|
|
Culled Empty Block (label) mul8u::@5
|
|
Culled Empty Block (label) mul8u::@6
|
|
Culled Empty Block (label) mul8u::@8
|
|
Culled Empty Block (label) mul8u::@9
|
|
Culled Empty Block (label) @5
|
|
Culled Empty Block (label) @6
|
|
Culled Empty Block (label) @7
|
|
Culled Empty Block (label) @8
|
|
Culled Empty Block (label) main::@8
|
|
Culled Empty Block (label) main::@9
|
|
Culled Empty Block (label) main::@10
|
|
Culled Empty Block (label) main::@12
|
|
Culled Empty Block (label) @10
|
|
Culled Empty Block (label) getCharToProcess::@6
|
|
Culled Empty Block (label) getCharToProcess::@2
|
|
Culled Empty Block (label) @11
|
|
Culled Empty Block (label) startProcessing::@6
|
|
Culled Empty Block (label) startProcessing::@7
|
|
Culled Empty Block (label) processChars::@9
|
|
Culled Empty Block (label) processChars::@11
|
|
Culled Empty Block (label) initSquareTables::@5
|
|
Culled Empty Block (label) initSquareTables::@6
|
|
Culled Empty Block (label) initSquareTables::@12
|
|
Culled Empty Block (label) initSquareTables::@13
|
|
Culled Empty Block (label) initSquareTables::@14
|
|
Culled Empty Block (label) @14
|
|
Culled Empty Block (label) @15
|
|
Culled Empty Block (label) setupRasterIrq::@4
|
|
Unwinding list assignment { (byte) main::$9_x, (byte) main::$9_y, (word) main::$9_dist } ← { (byte) getCharToProcess::return_x, (byte) getCharToProcess::return_y, (word) getCharToProcess::return_dist }
|
|
Unwinding list assignment { (byte) getCharToProcess::return_x#0, (byte) getCharToProcess::return_y#0, (word) getCharToProcess::return_dist#0 } ← { (byte) getCharToProcess::return_x#2, (byte) getCharToProcess::return_y#2, (word) getCharToProcess::return_dist#2 }
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
@begin: scope:[] from
|
|
(byte*) PROCPORT_DDR#0 ← ((byte*)) (number) 0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (number) 7
|
|
(byte*) PROCPORT#0 ← ((byte*)) (number) 1
|
|
(byte) PROCPORT_RAM_IO#0 ← (number) $35
|
|
(byte) PROCPORT_RAM_CHARROM#0 ← (number) $31
|
|
(byte*) CHARGEN#0 ← ((byte*)) (number) $d000
|
|
(byte) BORDER_XPOS_LEFT#0 ← (number) $18
|
|
(word) BORDER_XPOS_RIGHT#0 ← (number) $158
|
|
(byte) BORDER_YPOS_TOP#0 ← (number) $32
|
|
(byte) BORDER_YPOS_BOTTOM#0 ← (number) $fa
|
|
(word) SPRITE_PTRS#0 ← (number) $3f8
|
|
(byte*) SPRITES_XPOS#0 ← ((byte*)) (number) $d000
|
|
(byte*) SPRITES_YPOS#0 ← ((byte*)) (number) $d001
|
|
(byte*) SPRITES_XMSB#0 ← ((byte*)) (number) $d010
|
|
(byte*) RASTER#0 ← ((byte*)) (number) $d012
|
|
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (number) $d015
|
|
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (number) $d017
|
|
(byte*) SPRITES_MC#0 ← ((byte*)) (number) $d01c
|
|
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (number) $d01d
|
|
(byte*) SPRITES_COLS#0 ← ((byte*)) (number) $d027
|
|
(byte*) VIC_CONTROL#0 ← ((byte*)) (number) $d011
|
|
(byte*) IRQ_STATUS#0 ← ((byte*)) (number) $d019
|
|
(byte*) IRQ_ENABLE#0 ← ((byte*)) (number) $d01a
|
|
(byte) IRQ_RASTER#0 ← (number) 1
|
|
(byte*) COLS#0 ← ((byte*)) (number) $d800
|
|
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (number) $dc0d
|
|
(byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f
|
|
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (number) $fffe
|
|
(byte) LIGHT_BLUE#0 ← (number) $e
|
|
to:@9
|
|
mul8u: scope:[mul8u] from initSquareTables::@11 initSquareTables::@4
|
|
(byte) mul8u::a#6 ← phi( initSquareTables::@11/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
|
|
(byte) mul8u::b#2 ← phi( initSquareTables::@11/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 )
|
|
(word) mul8u::res#0 ← (number) 0
|
|
(word) mul8u::mb#0 ← (byte) mul8u::b#2
|
|
to:mul8u::@1
|
|
mul8u::@1: scope:[mul8u] from mul8u mul8u::@4
|
|
(word) mul8u::mb#5 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
|
|
(word) mul8u::res#4 ← phi( mul8u/(word) mul8u::res#0 mul8u::@4/(word) mul8u::res#6 )
|
|
(byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
|
|
(bool~) mul8u::$0 ← (byte) mul8u::a#3 != (number) 0
|
|
if((bool~) mul8u::$0) goto mul8u::@2
|
|
to:mul8u::@3
|
|
mul8u::@2: scope:[mul8u] from mul8u::@1
|
|
(word) mul8u::res#5 ← phi( mul8u::@1/(word) mul8u::res#4 )
|
|
(word) mul8u::mb#4 ← phi( mul8u::@1/(word) mul8u::mb#5 )
|
|
(byte) mul8u::a#4 ← phi( mul8u::@1/(byte) mul8u::a#3 )
|
|
(number~) mul8u::$1 ← (byte) mul8u::a#4 & (number) 1
|
|
(bool~) mul8u::$2 ← (number~) mul8u::$1 != (number) 0
|
|
(bool~) mul8u::$3 ← ! (bool~) mul8u::$2
|
|
if((bool~) mul8u::$3) goto mul8u::@4
|
|
to:mul8u::@7
|
|
mul8u::@3: scope:[mul8u] from mul8u::@1
|
|
(word) mul8u::res#2 ← phi( mul8u::@1/(word) mul8u::res#4 )
|
|
(word) mul8u::return#0 ← (word) mul8u::res#2
|
|
to:mul8u::@return
|
|
mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7
|
|
(word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#5 mul8u::@7/(word) mul8u::res#1 )
|
|
(word) mul8u::mb#2 ← phi( mul8u::@2/(word) mul8u::mb#4 mul8u::@7/(word) mul8u::mb#3 )
|
|
(byte) mul8u::a#5 ← phi( mul8u::@2/(byte) mul8u::a#4 mul8u::@7/(byte) mul8u::a#7 )
|
|
(byte~) mul8u::$5 ← (byte) mul8u::a#5 >> (number) 1
|
|
(byte) mul8u::a#0 ← (byte~) mul8u::$5
|
|
(word~) mul8u::$6 ← (word) mul8u::mb#2 << (number) 1
|
|
(word) mul8u::mb#1 ← (word~) mul8u::$6
|
|
to:mul8u::@1
|
|
mul8u::@7: scope:[mul8u] from mul8u::@2
|
|
(byte) mul8u::a#7 ← phi( mul8u::@2/(byte) mul8u::a#4 )
|
|
(word) mul8u::mb#3 ← phi( mul8u::@2/(word) mul8u::mb#4 )
|
|
(word) mul8u::res#3 ← phi( mul8u::@2/(word) mul8u::res#5 )
|
|
(word~) mul8u::$4 ← (word) mul8u::res#3 + (word) mul8u::mb#3
|
|
(word) mul8u::res#1 ← (word~) mul8u::$4
|
|
to:mul8u::@4
|
|
mul8u::@return: scope:[mul8u] from mul8u::@3
|
|
(word) mul8u::return#4 ← phi( mul8u::@3/(word) mul8u::return#0 )
|
|
(word) mul8u::return#1 ← (word) mul8u::return#4
|
|
return
|
|
to:@return
|
|
@9: scope:[] from @begin
|
|
(byte*) SCREEN#0 ← ((byte*)) (number) $400
|
|
(byte*) SPRITE_DATA#0 ← ((byte*)) (number) $2000
|
|
(word*) VXSIN#0 ← ((word*)) (number) $2200
|
|
(word*) VYSIN#0 ← ((word*)) (number) $2280
|
|
(byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) }
|
|
(byte) NUM_PROCESSING#0 ← (number) 8
|
|
(word) NOT_FOUND#0 ← (number) $ffff
|
|
(byte) STATUS_FREE#0 ← (number) 0
|
|
(byte) STATUS_NEW#0 ← (number) 1
|
|
(byte) STATUS_PROCESSING#0 ← (number) 2
|
|
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) }
|
|
to:@12
|
|
main: scope:[main] from @18
|
|
call initSquareTables
|
|
to:main::@13
|
|
main::@13: scope:[main] from main
|
|
(byte*) main::src#0 ← (byte*) SCREEN#0
|
|
(byte*) main::dst#0 ← (byte[$3e8]) SCREEN_COPY#0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@1 main::@13
|
|
(byte*) main::dst#2 ← phi( main::@1/(byte*) main::dst#1 main::@13/(byte*) main::dst#0 )
|
|
(byte*) main::src#2 ← phi( main::@1/(byte*) main::src#1 main::@13/(byte*) main::src#0 )
|
|
*((byte*) main::dst#2) ← *((byte*) main::src#2)
|
|
(byte*) main::src#1 ← ++ (byte*) main::src#2
|
|
(byte*) main::dst#1 ← ++ (byte*) main::dst#2
|
|
(byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8
|
|
(bool~) main::$6 ← (byte*) main::src#1 != (byte*~) main::$5
|
|
if((bool~) main::$6) goto main::@1
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1
|
|
(number~) main::$7 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
(byte) main::i#0 ← (byte) 0
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@2 main::@3
|
|
(byte) main::i#2 ← phi( main::@2/(byte) main::i#0 main::@3/(byte) main::i#1 )
|
|
(byte~) main::$16 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
(word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
*((word*) main::$17 + (byte~) main::$16) ← (number) 0
|
|
(word*) main::$18 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
*((word*) main::$18 + (byte~) main::$16) ← (number) 0
|
|
(word*) main::$19 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
*((word*) main::$19 + (byte~) main::$16) ← (number) 0
|
|
(word*) main::$20 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
*((word*) main::$20 + (byte~) main::$16) ← (number) 0
|
|
(byte*) main::$21 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
*((byte*) main::$21 + (byte~) main::$16) ← (number) 0
|
|
(byte*) main::$22 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
*((byte*) main::$22 + (byte~) main::$16) ← (number) 0
|
|
(byte*) main::$23 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
*((byte*) main::$23 + (byte~) main::$16) ← (byte) STATUS_FREE#0
|
|
(byte**) main::$24 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
*((byte**) main::$24 + (byte~) main::$16) ← ((byte*)) (number) 0
|
|
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,main::$7)
|
|
(bool~) main::$8 ← (byte) main::i#1 != rangelast(0,main::$7)
|
|
if((bool~) main::$8) goto main::@3
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@3
|
|
call initSprites
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@4
|
|
(void()*~) main::$2 ← & interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
(word) setupRasterIrq::raster#0 ← (byte) RASTER_IRQ_TOP#0
|
|
(void()*) setupRasterIrq::irqRoutine#0 ← (void()*~) main::$2
|
|
call setupRasterIrq
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@14
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@15 main::@17
|
|
call getCharToProcess
|
|
(byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#2
|
|
(byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#2
|
|
(word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#2
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::@5
|
|
(word) getCharToProcess::return_dist#3 ← phi( main::@5/(word) getCharToProcess::return_dist#0 )
|
|
(byte) getCharToProcess::return_y#3 ← phi( main::@5/(byte) getCharToProcess::return_y#0 )
|
|
(byte) getCharToProcess::return_x#3 ← phi( main::@5/(byte) getCharToProcess::return_x#0 )
|
|
(byte) main::$9_x ← (byte) getCharToProcess::return_x#3
|
|
(byte) main::$9_y ← (byte) getCharToProcess::return_y#3
|
|
(word) main::$9_dist ← (word) getCharToProcess::return_dist#3
|
|
(byte) main::center_x#0 ← (byte) main::$9_x
|
|
(byte) main::center_y#0 ← (byte) main::$9_y
|
|
(word) main::center_dist#0 ← (word) main::$9_dist
|
|
(bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0
|
|
(bool~) main::$11 ← ! (bool~) main::$10
|
|
if((bool~) main::$11) goto main::@6
|
|
to:main::@7
|
|
main::@6: scope:[main] from main::@16
|
|
(word) main::center_dist#1 ← phi( main::@16/(word) main::center_dist#0 )
|
|
(byte) main::center_y#1 ← phi( main::@16/(byte) main::center_y#0 )
|
|
(byte) main::center_x#1 ← phi( main::@16/(byte) main::center_x#0 )
|
|
(byte) startProcessing::center_x#0 ← (byte) main::center_x#1
|
|
(byte) startProcessing::center_y#0 ← (byte) main::center_y#1
|
|
(word) startProcessing::center_dist#0 ← (word) main::center_dist#1
|
|
call startProcessing
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@6
|
|
if(true) goto main::@5
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@16 main::@17
|
|
(byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7
|
|
*((byte*~) main::$4) ← (byte) '.'
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@11 main::@7
|
|
(byte*~) main::$15 ← (byte*) COLS#0 + (number) $3e7
|
|
*((byte*~) main::$15) ← ++ *((byte*~) main::$15)
|
|
if(true) goto main::@11
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@11
|
|
return
|
|
to:@return
|
|
getCharToProcess: scope:[getCharToProcess] from main::@5
|
|
(byte) getCharToProcess::closest_x#0 ← (number) 0
|
|
(byte) getCharToProcess::closest_y#0 ← (number) 0
|
|
(word) getCharToProcess::closest_dist#0 ← (word) NOT_FOUND#0
|
|
(byte*) getCharToProcess::screen_line#0 ← (byte[$3e8]) SCREEN_COPY#0
|
|
(byte) getCharToProcess::y#0 ← (byte) 0
|
|
to:getCharToProcess::@3
|
|
getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9
|
|
(byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) getCharToProcess::closest_y#0 getCharToProcess::@9/(byte) getCharToProcess::closest_y#5 )
|
|
(byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) getCharToProcess::closest_x#0 getCharToProcess::@9/(byte) getCharToProcess::closest_x#5 )
|
|
(word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(word) getCharToProcess::closest_dist#0 getCharToProcess::@9/(word) getCharToProcess::closest_dist#6 )
|
|
(byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) getCharToProcess::y#0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
|
|
(byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(byte*) getCharToProcess::screen_line#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
|
|
(byte) getCharToProcess::x#0 ← (byte) 0
|
|
to:getCharToProcess::@4
|
|
getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@3 getCharToProcess::@5
|
|
(byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@3/(byte) getCharToProcess::closest_y#9 getCharToProcess::@5/(byte) getCharToProcess::closest_y#6 )
|
|
(byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@3/(byte) getCharToProcess::closest_x#9 getCharToProcess::@5/(byte) getCharToProcess::closest_x#6 )
|
|
(word) getCharToProcess::closest_dist#5 ← phi( getCharToProcess::@3/(word) getCharToProcess::closest_dist#8 getCharToProcess::@5/(word) getCharToProcess::closest_dist#9 )
|
|
(byte) getCharToProcess::y#5 ← phi( getCharToProcess::@3/(byte) getCharToProcess::y#7 getCharToProcess::@5/(byte) getCharToProcess::y#6 )
|
|
(byte) getCharToProcess::x#2 ← phi( getCharToProcess::@3/(byte) getCharToProcess::x#0 getCharToProcess::@5/(byte) getCharToProcess::x#1 )
|
|
(byte*) getCharToProcess::screen_line#2 ← phi( getCharToProcess::@3/(byte*) getCharToProcess::screen_line#4 getCharToProcess::@5/(byte*) getCharToProcess::screen_line#5 )
|
|
(bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' '
|
|
(bool~) getCharToProcess::$3 ← ! (bool~) getCharToProcess::$2
|
|
if((bool~) getCharToProcess::$3) goto getCharToProcess::@5
|
|
to:getCharToProcess::@7
|
|
getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4 getCharToProcess::@7 getCharToProcess::@8
|
|
(byte) getCharToProcess::closest_y#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_y#7 getCharToProcess::@7/(byte) getCharToProcess::closest_y#8 getCharToProcess::@8/(byte) getCharToProcess::closest_y#1 )
|
|
(byte) getCharToProcess::closest_x#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_x#7 getCharToProcess::@7/(byte) getCharToProcess::closest_x#8 getCharToProcess::@8/(byte) getCharToProcess::closest_x#1 )
|
|
(word) getCharToProcess::closest_dist#9 ← phi( getCharToProcess::@4/(word) getCharToProcess::closest_dist#5 getCharToProcess::@7/(word) getCharToProcess::closest_dist#2 getCharToProcess::@8/(word) getCharToProcess::closest_dist#1 )
|
|
(byte) getCharToProcess::y#6 ← phi( getCharToProcess::@4/(byte) getCharToProcess::y#5 getCharToProcess::@7/(byte) getCharToProcess::y#2 getCharToProcess::@8/(byte) getCharToProcess::y#3 )
|
|
(byte*) getCharToProcess::screen_line#5 ← phi( getCharToProcess::@4/(byte*) getCharToProcess::screen_line#2 getCharToProcess::@7/(byte*) getCharToProcess::screen_line#6 getCharToProcess::@8/(byte*) getCharToProcess::screen_line#7 )
|
|
(byte) getCharToProcess::x#3 ← phi( getCharToProcess::@4/(byte) getCharToProcess::x#2 getCharToProcess::@7/(byte) getCharToProcess::x#4 getCharToProcess::@8/(byte) getCharToProcess::x#5 )
|
|
(byte) getCharToProcess::x#1 ← (byte) getCharToProcess::x#3 + rangenext(0,$27)
|
|
(bool~) getCharToProcess::$7 ← (byte) getCharToProcess::x#1 != rangelast(0,$27)
|
|
if((bool~) getCharToProcess::$7) goto getCharToProcess::@4
|
|
to:getCharToProcess::@9
|
|
getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@4
|
|
(byte) getCharToProcess::closest_y#8 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_y#7 )
|
|
(byte) getCharToProcess::closest_x#8 ← phi( getCharToProcess::@4/(byte) getCharToProcess::closest_x#7 )
|
|
(byte*) getCharToProcess::screen_line#6 ← phi( getCharToProcess::@4/(byte*) getCharToProcess::screen_line#2 )
|
|
(word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@4/(word) getCharToProcess::closest_dist#5 )
|
|
(byte) getCharToProcess::y#2 ← phi( getCharToProcess::@4/(byte) getCharToProcess::y#5 )
|
|
(byte) getCharToProcess::x#4 ← phi( getCharToProcess::@4/(byte) getCharToProcess::x#2 )
|
|
(byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#4 * (const byte) SIZEOF_WORD
|
|
(byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#2 * (const byte) SIZEOF_WORD
|
|
(word~) getCharToProcess::$4 ← *((word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
|
|
(word) getCharToProcess::dist#0 ← (word~) getCharToProcess::$4
|
|
(bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2
|
|
(bool~) getCharToProcess::$6 ← ! (bool~) getCharToProcess::$5
|
|
if((bool~) getCharToProcess::$6) goto getCharToProcess::@5
|
|
to:getCharToProcess::@8
|
|
getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7
|
|
(byte*) getCharToProcess::screen_line#7 ← phi( getCharToProcess::@7/(byte*) getCharToProcess::screen_line#6 )
|
|
(word) getCharToProcess::dist#1 ← phi( getCharToProcess::@7/(word) getCharToProcess::dist#0 )
|
|
(byte) getCharToProcess::y#3 ← phi( getCharToProcess::@7/(byte) getCharToProcess::y#2 )
|
|
(byte) getCharToProcess::x#5 ← phi( getCharToProcess::@7/(byte) getCharToProcess::x#4 )
|
|
(byte) getCharToProcess::closest_x#1 ← (byte) getCharToProcess::x#5
|
|
(byte) getCharToProcess::closest_y#1 ← (byte) getCharToProcess::y#3
|
|
(word) getCharToProcess::closest_dist#1 ← (word) getCharToProcess::dist#1
|
|
to:getCharToProcess::@5
|
|
getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@5
|
|
(byte) getCharToProcess::closest_y#5 ← phi( getCharToProcess::@5/(byte) getCharToProcess::closest_y#6 )
|
|
(byte) getCharToProcess::closest_x#5 ← phi( getCharToProcess::@5/(byte) getCharToProcess::closest_x#6 )
|
|
(word) getCharToProcess::closest_dist#6 ← phi( getCharToProcess::@5/(word) getCharToProcess::closest_dist#9 )
|
|
(byte) getCharToProcess::y#4 ← phi( getCharToProcess::@5/(byte) getCharToProcess::y#6 )
|
|
(byte*) getCharToProcess::screen_line#3 ← phi( getCharToProcess::@5/(byte*) getCharToProcess::screen_line#5 )
|
|
(byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#3 + (number) $28
|
|
(byte) getCharToProcess::y#1 ← (byte) getCharToProcess::y#4 + rangenext(0,$18)
|
|
(bool~) getCharToProcess::$8 ← (byte) getCharToProcess::y#1 != rangelast(0,$18)
|
|
if((bool~) getCharToProcess::$8) goto getCharToProcess::@3
|
|
to:getCharToProcess::@10
|
|
getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@9
|
|
(byte) getCharToProcess::closest_y#4 ← phi( getCharToProcess::@9/(byte) getCharToProcess::closest_y#5 )
|
|
(byte) getCharToProcess::closest_x#4 ← phi( getCharToProcess::@9/(byte) getCharToProcess::closest_x#5 )
|
|
(word) getCharToProcess::closest_dist#3 ← phi( getCharToProcess::@9/(word) getCharToProcess::closest_dist#6 )
|
|
(bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0
|
|
(bool~) getCharToProcess::$1 ← ! (bool~) getCharToProcess::$0
|
|
if((bool~) getCharToProcess::$1) goto getCharToProcess::@1
|
|
to:getCharToProcess::@11
|
|
getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess::@10 getCharToProcess::@11
|
|
(word) getCharToProcess::closest_dist#4 ← phi( getCharToProcess::@10/(word) getCharToProcess::closest_dist#3 getCharToProcess::@11/(word) getCharToProcess::closest_dist#7 )
|
|
(byte) getCharToProcess::closest_y#2 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_y#4 getCharToProcess::@11/(byte) getCharToProcess::closest_y#3 )
|
|
(byte) getCharToProcess::closest_x#2 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_x#4 getCharToProcess::@11/(byte) getCharToProcess::closest_x#3 )
|
|
(byte) getCharToProcess::return_x#1 ← (byte) getCharToProcess::closest_x#2
|
|
(byte) getCharToProcess::return_y#1 ← (byte) getCharToProcess::closest_y#2
|
|
(word) getCharToProcess::return_dist#1 ← (word) getCharToProcess::closest_dist#4
|
|
to:getCharToProcess::@return
|
|
getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@10
|
|
(word) getCharToProcess::closest_dist#7 ← phi( getCharToProcess::@10/(word) getCharToProcess::closest_dist#3 )
|
|
(byte) getCharToProcess::closest_x#3 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_x#4 )
|
|
(byte) getCharToProcess::closest_y#3 ← phi( getCharToProcess::@10/(byte) getCharToProcess::closest_y#4 )
|
|
(word~) getCharToProcess::$9 ← ((word)) (byte) getCharToProcess::closest_y#3
|
|
(number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (number) $28
|
|
(byte*~) getCharToProcess::$11 ← (byte[$3e8]) SCREEN_COPY#0 + (number~) getCharToProcess::$10
|
|
(byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::closest_x#3
|
|
*((byte*~) getCharToProcess::$12) ← (byte) ' '
|
|
to:getCharToProcess::@1
|
|
getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@1
|
|
(word) getCharToProcess::return_dist#4 ← phi( getCharToProcess::@1/(word) getCharToProcess::return_dist#1 )
|
|
(byte) getCharToProcess::return_y#4 ← phi( getCharToProcess::@1/(byte) getCharToProcess::return_y#1 )
|
|
(byte) getCharToProcess::return_x#4 ← phi( getCharToProcess::@1/(byte) getCharToProcess::return_x#1 )
|
|
(byte) getCharToProcess::return_x#2 ← (byte) getCharToProcess::return_x#4
|
|
(byte) getCharToProcess::return_y#2 ← (byte) getCharToProcess::return_y#4
|
|
(word) getCharToProcess::return_dist#2 ← (word) getCharToProcess::return_dist#4
|
|
return
|
|
to:@return
|
|
startProcessing: scope:[startProcessing] from main::@6
|
|
(byte) startProcessing::center_x#9 ← phi( main::@6/(byte) startProcessing::center_x#0 )
|
|
(byte) startProcessing::center_y#9 ← phi( main::@6/(byte) startProcessing::center_y#0 )
|
|
(byte) startProcessing::freeIdx#0 ← (number) $ff
|
|
to:startProcessing::@1
|
|
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@4
|
|
(byte) startProcessing::center_x#8 ← phi( startProcessing/(byte) startProcessing::center_x#9 startProcessing::@4/(byte) startProcessing::center_x#3 )
|
|
(byte) startProcessing::center_y#8 ← phi( startProcessing/(byte) startProcessing::center_y#9 startProcessing::@4/(byte) startProcessing::center_y#3 )
|
|
(byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) startProcessing::freeIdx#0 startProcessing::@4/(byte) startProcessing::freeIdx#2 )
|
|
(number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
(byte) startProcessing::i#0 ← (byte) 0
|
|
to:startProcessing::@2
|
|
startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3
|
|
(byte) startProcessing::center_x#7 ← phi( startProcessing::@1/(byte) startProcessing::center_x#8 startProcessing::@3/(byte) startProcessing::center_x#5 )
|
|
(byte) startProcessing::center_y#7 ← phi( startProcessing::@1/(byte) startProcessing::center_y#8 startProcessing::@3/(byte) startProcessing::center_y#5 )
|
|
(byte) startProcessing::freeIdx#5 ← phi( startProcessing::@1/(byte) startProcessing::freeIdx#6 startProcessing::@3/(byte) startProcessing::freeIdx#4 )
|
|
(byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) startProcessing::i#0 startProcessing::@3/(byte) startProcessing::i#1 )
|
|
(byte~) startProcessing::$29 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
(byte*) startProcessing::$39 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
(bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0
|
|
(bool~) startProcessing::$25 ← ! (bool~) startProcessing::$24
|
|
if((bool~) startProcessing::$25) goto startProcessing::@3
|
|
to:startProcessing::@5
|
|
startProcessing::@3: scope:[startProcessing] from startProcessing::@2
|
|
(byte) startProcessing::center_x#5 ← phi( startProcessing::@2/(byte) startProcessing::center_x#7 )
|
|
(byte) startProcessing::center_y#5 ← phi( startProcessing::@2/(byte) startProcessing::center_y#7 )
|
|
(byte) startProcessing::freeIdx#4 ← phi( startProcessing::@2/(byte) startProcessing::freeIdx#5 )
|
|
(byte) startProcessing::i#3 ← phi( startProcessing::@2/(byte) startProcessing::i#2 )
|
|
(byte) startProcessing::i#1 ← (byte) startProcessing::i#3 + rangenext(0,startProcessing::$23)
|
|
(bool~) startProcessing::$26 ← (byte) startProcessing::i#1 != rangelast(0,startProcessing::$23)
|
|
if((bool~) startProcessing::$26) goto startProcessing::@2
|
|
to:startProcessing::@4
|
|
startProcessing::@5: scope:[startProcessing] from startProcessing::@2
|
|
(byte) startProcessing::center_x#6 ← phi( startProcessing::@2/(byte) startProcessing::center_x#7 )
|
|
(byte) startProcessing::center_y#6 ← phi( startProcessing::@2/(byte) startProcessing::center_y#7 )
|
|
(byte) startProcessing::i#4 ← phi( startProcessing::@2/(byte) startProcessing::i#2 )
|
|
(byte) startProcessing::freeIdx#1 ← (byte) startProcessing::i#4
|
|
to:startProcessing::@4
|
|
startProcessing::@4: scope:[startProcessing] from startProcessing::@3 startProcessing::@5
|
|
(byte) startProcessing::center_x#3 ← phi( startProcessing::@3/(byte) startProcessing::center_x#5 startProcessing::@5/(byte) startProcessing::center_x#6 )
|
|
(byte) startProcessing::center_y#3 ← phi( startProcessing::@3/(byte) startProcessing::center_y#5 startProcessing::@5/(byte) startProcessing::center_y#6 )
|
|
(byte) startProcessing::freeIdx#2 ← phi( startProcessing::@3/(byte) startProcessing::freeIdx#4 startProcessing::@5/(byte) startProcessing::freeIdx#1 )
|
|
(bool~) startProcessing::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff
|
|
if((bool~) startProcessing::$27) goto startProcessing::@1
|
|
to:startProcessing::@8
|
|
startProcessing::@8: scope:[startProcessing] from startProcessing::@4
|
|
(byte) startProcessing::center_x#1 ← phi( startProcessing::@4/(byte) startProcessing::center_x#3 )
|
|
(byte) startProcessing::center_y#1 ← phi( startProcessing::@4/(byte) startProcessing::center_y#3 )
|
|
(byte) startProcessing::freeIdx#3 ← phi( startProcessing::@4/(byte) startProcessing::freeIdx#2 )
|
|
(byte) startProcessing::spriteIdx#0 ← (byte) startProcessing::freeIdx#3
|
|
(word~) startProcessing::$0 ← ((word)) (byte) startProcessing::center_y#1
|
|
(number~) startProcessing::$1 ← (word~) startProcessing::$0 * (number) $28
|
|
(byte*~) startProcessing::$2 ← (byte*) SCREEN#0 + (number~) startProcessing::$1
|
|
(byte*~) startProcessing::$3 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#1
|
|
(byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$3
|
|
(word~) startProcessing::$4 ← ((word)) (byte) startProcessing::spriteIdx#0
|
|
(number~) startProcessing::$5 ← (word~) startProcessing::$4 * (number) $40
|
|
(byte*~) startProcessing::$6 ← (byte*) SPRITE_DATA#0 + (number~) startProcessing::$5
|
|
(byte*) startProcessing::spriteData#0 ← (byte*~) startProcessing::$6
|
|
(byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0)
|
|
(word~) startProcessing::$7 ← ((word)) (byte) startProcessing::ch#0
|
|
(number~) startProcessing::$8 ← (word~) startProcessing::$7 * (number) 8
|
|
(byte*~) startProcessing::$9 ← (byte*) CHARGEN#0 + (number~) startProcessing::$8
|
|
(byte*) startProcessing::chargenData#0 ← (byte*~) startProcessing::$9
|
|
asm { sei }
|
|
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_CHARROM#0
|
|
(byte) startProcessing::i1#0 ← (byte) 0
|
|
to:startProcessing::@9
|
|
startProcessing::@9: scope:[startProcessing] from startProcessing::@8 startProcessing::@9
|
|
(byte*) startProcessing::screenPtr#2 ← phi( startProcessing::@8/(byte*) startProcessing::screenPtr#0 startProcessing::@9/(byte*) startProcessing::screenPtr#2 )
|
|
(byte) startProcessing::spriteIdx#2 ← phi( startProcessing::@8/(byte) startProcessing::spriteIdx#0 startProcessing::@9/(byte) startProcessing::spriteIdx#2 )
|
|
(byte) startProcessing::center_y#4 ← phi( startProcessing::@8/(byte) startProcessing::center_y#1 startProcessing::@9/(byte) startProcessing::center_y#4 )
|
|
(byte) startProcessing::center_x#4 ← phi( startProcessing::@8/(byte) startProcessing::center_x#1 startProcessing::@9/(byte) startProcessing::center_x#4 )
|
|
(byte) startProcessing::i1#2 ← phi( startProcessing::@8/(byte) startProcessing::i1#0 startProcessing::@9/(byte) startProcessing::i1#1 )
|
|
(byte*) startProcessing::spriteData#2 ← phi( startProcessing::@8/(byte*) startProcessing::spriteData#0 startProcessing::@9/(byte*) startProcessing::spriteData#1 )
|
|
(byte*) startProcessing::chargenData#2 ← phi( startProcessing::@8/(byte*) startProcessing::chargenData#0 startProcessing::@9/(byte*) startProcessing::chargenData#1 )
|
|
*((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
|
|
(byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (number) 3
|
|
(byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
|
|
(byte) startProcessing::i1#1 ← (byte) startProcessing::i1#2 + rangenext(0,7)
|
|
(bool~) startProcessing::$28 ← (byte) startProcessing::i1#1 != rangelast(0,7)
|
|
if((bool~) startProcessing::$28) goto startProcessing::@9
|
|
to:startProcessing::@10
|
|
startProcessing::@10: scope:[startProcessing] from startProcessing::@9
|
|
(byte*) startProcessing::screenPtr#1 ← phi( startProcessing::@9/(byte*) startProcessing::screenPtr#2 )
|
|
(byte) startProcessing::spriteIdx#1 ← phi( startProcessing::@9/(byte) startProcessing::spriteIdx#2 )
|
|
(byte) startProcessing::center_y#2 ← phi( startProcessing::@9/(byte) startProcessing::center_y#4 )
|
|
(byte) startProcessing::center_x#2 ← phi( startProcessing::@9/(byte) startProcessing::center_x#4 )
|
|
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
|
|
asm { cli }
|
|
(word~) startProcessing::$10 ← ((word)) (byte) startProcessing::center_x#2
|
|
(number~) startProcessing::$11 ← (word~) startProcessing::$10 * (number) 8
|
|
(number~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (number~) startProcessing::$11
|
|
(number~) startProcessing::$13 ← (number~) startProcessing::$12 << (number) 4
|
|
(word) startProcessing::spriteX#0 ← (number~) startProcessing::$13
|
|
(word~) startProcessing::$14 ← ((word)) (byte) startProcessing::center_y#2
|
|
(number~) startProcessing::$15 ← (word~) startProcessing::$14 * (number) 8
|
|
(number~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (number~) startProcessing::$15
|
|
(number~) startProcessing::$17 ← (number~) startProcessing::$16 << (number) 4
|
|
(word) startProcessing::spriteY#0 ← (number~) startProcessing::$17
|
|
(byte*~) startProcessing::$18 ← (byte*) SPRITE_DATA#0 / (number) $40
|
|
(byte~) startProcessing::$19 ← ((byte)) (byte*~) startProcessing::$18
|
|
(byte~) startProcessing::$20 ← (byte~) startProcessing::$19 + (byte) startProcessing::spriteIdx#1
|
|
(byte) startProcessing::spritePtr#0 ← (byte~) startProcessing::$20
|
|
(number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8
|
|
(word~) startProcessing::$22 ← ((word)) (number~) startProcessing::$21
|
|
(byte~) startProcessing::$30 ← (byte) startProcessing::spriteIdx#1 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
(word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
*((word*) startProcessing::$31 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0
|
|
(word*) startProcessing::$32 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
*((word*) startProcessing::$32 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0
|
|
(word*) startProcessing::$33 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
*((word*) startProcessing::$33 + (byte~) startProcessing::$30) ← (word~) startProcessing::$22
|
|
(word*) startProcessing::$34 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
*((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c
|
|
(byte*) startProcessing::$35 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
*((byte*) startProcessing::$35 + (byte~) startProcessing::$30) ← (byte) startProcessing::spriteIdx#1
|
|
(byte*) startProcessing::$36 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
*((byte*) startProcessing::$36 + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0
|
|
(byte*) startProcessing::$37 ← (byte*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
*((byte*) startProcessing::$37 + (byte~) startProcessing::$30) ← (byte) STATUS_NEW#0
|
|
(byte**) startProcessing::$38 ← (byte**)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
*((byte**) startProcessing::$38 + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#1
|
|
to:startProcessing::@return
|
|
startProcessing::@return: scope:[startProcessing] from startProcessing::@10
|
|
return
|
|
to:@return
|
|
@12: scope:[] from @9
|
|
(number~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (number) 8
|
|
(word~) $1 ← ((word)) (number~) $0
|
|
(word~) $2 ← (word~) $1 << (number) 4
|
|
(word) XPOS_LEFTMOST#0 ← (word~) $2
|
|
(word~) $3 ← ((word)) (word) BORDER_XPOS_RIGHT#0
|
|
(word~) $4 ← (word~) $3 << (number) 4
|
|
(word) XPOS_RIGHTMOST#0 ← (word~) $4
|
|
(number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (number) 8
|
|
(word~) $6 ← ((word)) (number~) $5
|
|
(word~) $7 ← (word~) $6 << (number) 4
|
|
(word) YPOS_TOPMOST#0 ← (word~) $7
|
|
(word~) $8 ← ((word)) (byte) BORDER_YPOS_BOTTOM#0
|
|
(word~) $9 ← (word~) $8 << (number) 4
|
|
(word) YPOS_BOTTOMMOST#0 ← (word~) $9
|
|
kickasm(location (word*) VXSIN#0) {{ .for(var i=0; i<40; i++) {
|
|
.word -sin(toRadians([i*360]/40))*4
|
|
}
|
|
}}
|
|
kickasm(location (word*) VYSIN#0) {{ .for(var i=0; i<25; i++) {
|
|
.word -sin(toRadians([i*360]/25))*4
|
|
}
|
|
}}
|
|
to:@13
|
|
processChars: scope:[processChars] from irqBottom::@2
|
|
(byte) processChars::numActive#0 ← (number) 0
|
|
(number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
(byte) processChars::i#0 ← (byte) 0
|
|
to:processChars::@1
|
|
processChars::@1: scope:[processChars] from processChars processChars::@2
|
|
(byte) processChars::numActive#7 ← phi( processChars/(byte) processChars::numActive#0 processChars::@2/(byte) processChars::numActive#6 )
|
|
(byte) processChars::i#2 ← phi( processChars/(byte) processChars::i#0 processChars::@2/(byte) processChars::i#1 )
|
|
(byte~) processChars::$36 ← (byte) processChars::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
(struct ProcessingSprite*~) processChars::$3 ← (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36
|
|
(struct ProcessingSprite*) processChars::processing#0 ← (struct ProcessingSprite*~) processChars::$3
|
|
(byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
(number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39)
|
|
(byte) processChars::bitmask#0 ← (number~) processChars::$4
|
|
(byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
(bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0
|
|
(bool~) processChars::$6 ← ! (bool~) processChars::$5
|
|
if((bool~) processChars::$6) goto processChars::@2
|
|
to:processChars::@12
|
|
processChars::@2: scope:[processChars] from processChars::@1 processChars::@7
|
|
(byte) processChars::numActive#6 ← phi( processChars::@1/(byte) processChars::numActive#7 processChars::@7/(byte) processChars::numActive#1 )
|
|
(byte) processChars::i#3 ← phi( processChars::@1/(byte) processChars::i#2 processChars::@7/(byte) processChars::i#5 )
|
|
(byte) processChars::i#1 ← (byte) processChars::i#3 + rangenext(0,processChars::$2)
|
|
(bool~) processChars::$35 ← (byte) processChars::i#1 != rangelast(0,processChars::$2)
|
|
if((bool~) processChars::$35) goto processChars::@1
|
|
to:processChars::@14
|
|
processChars::@12: scope:[processChars] from processChars::@1
|
|
(byte) processChars::numActive#12 ← phi( processChars::@1/(byte) processChars::numActive#7 )
|
|
(byte) processChars::i#11 ← phi( processChars::@1/(byte) processChars::i#2 )
|
|
(byte) processChars::bitmask#5 ← phi( processChars::@1/(byte) processChars::bitmask#0 )
|
|
(struct ProcessingSprite*) processChars::processing#1 ← phi( processChars::@1/(struct ProcessingSprite*) processChars::processing#0 )
|
|
(byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#1 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
(bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0
|
|
(bool~) processChars::$8 ← ! (bool~) processChars::$7
|
|
if((bool~) processChars::$8) goto processChars::@3
|
|
to:processChars::@13
|
|
processChars::@3: scope:[processChars] from processChars::@12 processChars::@13
|
|
(byte) processChars::numActive#11 ← phi( processChars::@12/(byte) processChars::numActive#12 processChars::@13/(byte) processChars::numActive#13 )
|
|
(byte) processChars::i#8 ← phi( processChars::@12/(byte) processChars::i#11 processChars::@13/(byte) processChars::i#12 )
|
|
(byte) processChars::bitmask#6 ← phi( processChars::@12/(byte) processChars::bitmask#5 processChars::@13/(byte) processChars::bitmask#1 )
|
|
(struct ProcessingSprite*) processChars::processing#2 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 processChars::@13/(struct ProcessingSprite*) processChars::processing#3 )
|
|
(word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#2 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
(word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4
|
|
(word) processChars::xpos#0 ← (word~) processChars::$11
|
|
(byte~) processChars::$12 ← > (word) processChars::xpos#0
|
|
(bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12
|
|
if((bool~) processChars::$63) goto processChars::@4
|
|
to:processChars::@8
|
|
processChars::@13: scope:[processChars] from processChars::@12
|
|
(byte) processChars::numActive#13 ← phi( processChars::@12/(byte) processChars::numActive#12 )
|
|
(byte) processChars::i#12 ← phi( processChars::@12/(byte) processChars::i#11 )
|
|
(byte) processChars::bitmask#1 ← phi( processChars::@12/(byte) processChars::bitmask#5 )
|
|
(struct ProcessingSprite*) processChars::processing#3 ← phi( processChars::@12/(struct ProcessingSprite*) processChars::processing#1 )
|
|
(byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
*(*((byte**) processChars::$43)) ← (byte) ' '
|
|
*((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#1
|
|
(byte*~) processChars::$9 ← (byte*) SCREEN#0 + (word) SPRITE_PTRS#0
|
|
(byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
(byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44)
|
|
(byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
*((byte*~) processChars::$10) ← *((byte*) processChars::$45)
|
|
(byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#3 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
*((byte*) processChars::$46) ← (byte) STATUS_PROCESSING#0
|
|
to:processChars::@3
|
|
processChars::@4: scope:[processChars] from processChars::@3
|
|
(byte) processChars::numActive#9 ← phi( processChars::@3/(byte) processChars::numActive#11 )
|
|
(struct ProcessingSprite*) processChars::processing#7 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 )
|
|
(word) processChars::xpos#3 ← phi( processChars::@3/(word) processChars::xpos#0 )
|
|
(byte) processChars::i#6 ← phi( processChars::@3/(byte) processChars::i#8 )
|
|
(byte) processChars::bitmask#2 ← phi( processChars::@3/(byte) processChars::bitmask#6 )
|
|
*((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#2
|
|
to:processChars::@5
|
|
processChars::@8: scope:[processChars] from processChars::@3
|
|
(byte) processChars::numActive#10 ← phi( processChars::@3/(byte) processChars::numActive#11 )
|
|
(struct ProcessingSprite*) processChars::processing#8 ← phi( processChars::@3/(struct ProcessingSprite*) processChars::processing#2 )
|
|
(word) processChars::xpos#4 ← phi( processChars::@3/(word) processChars::xpos#0 )
|
|
(byte) processChars::i#7 ← phi( processChars::@3/(byte) processChars::i#8 )
|
|
(byte) processChars::bitmask#3 ← phi( processChars::@3/(byte) processChars::bitmask#6 )
|
|
(number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3
|
|
*((byte*) SPRITES_XMSB#0) ← *((byte*) SPRITES_XMSB#0) & (number~) processChars::$13
|
|
to:processChars::@5
|
|
processChars::@5: scope:[processChars] from processChars::@4 processChars::@8
|
|
(byte) processChars::numActive#8 ← phi( processChars::@4/(byte) processChars::numActive#9 processChars::@8/(byte) processChars::numActive#10 )
|
|
(byte) processChars::bitmask#7 ← phi( processChars::@4/(byte) processChars::bitmask#2 processChars::@8/(byte) processChars::bitmask#3 )
|
|
(struct ProcessingSprite*) processChars::processing#4 ← phi( processChars::@4/(struct ProcessingSprite*) processChars::processing#7 processChars::@8/(struct ProcessingSprite*) processChars::processing#8 )
|
|
(word) processChars::xpos#1 ← phi( processChars::@4/(word) processChars::xpos#3 processChars::@8/(word) processChars::xpos#4 )
|
|
(byte) processChars::i#4 ← phi( processChars::@4/(byte) processChars::i#6 processChars::@8/(byte) processChars::i#7 )
|
|
(number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2
|
|
(byte~) processChars::$15 ← ((byte)) (word) processChars::xpos#1
|
|
*((byte*) SPRITES_XPOS#0 + (number~) processChars::$14) ← (byte~) processChars::$15
|
|
(word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
(word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4
|
|
(byte~) processChars::$17 ← ((byte)) (word~) processChars::$16
|
|
(byte) processChars::ypos#0 ← (byte~) processChars::$17
|
|
(number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2
|
|
*((byte*) SPRITES_YPOS#0 + (number~) processChars::$18) ← (byte) processChars::ypos#0
|
|
(word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
(bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0
|
|
(word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
(bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0
|
|
(bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20
|
|
(word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
(bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0
|
|
(bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22
|
|
(word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#4 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
(bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0
|
|
(bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24
|
|
if((bool~) processChars::$25) goto processChars::@6
|
|
to:processChars::@10
|
|
processChars::@6: scope:[processChars] from processChars::@5
|
|
(byte) processChars::i#10 ← phi( processChars::@5/(byte) processChars::i#4 )
|
|
(byte) processChars::numActive#5 ← phi( processChars::@5/(byte) processChars::numActive#8 )
|
|
(byte) processChars::bitmask#4 ← phi( processChars::@5/(byte) processChars::bitmask#7 )
|
|
(struct ProcessingSprite*) processChars::processing#5 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 )
|
|
(byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#5 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
*((byte*) processChars::$52) ← (byte) STATUS_FREE#0
|
|
(number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4
|
|
*((byte*) SPRITES_ENABLE#0) ← *((byte*) SPRITES_ENABLE#0) & (number~) processChars::$34
|
|
to:processChars::@7
|
|
processChars::@10: scope:[processChars] from processChars::@5
|
|
(byte) processChars::i#9 ← phi( processChars::@5/(byte) processChars::i#4 )
|
|
(byte) processChars::numActive#4 ← phi( processChars::@5/(byte) processChars::numActive#8 )
|
|
(byte) processChars::ypos#1 ← phi( processChars::@5/(byte) processChars::ypos#0 )
|
|
(struct ProcessingSprite*) processChars::processing#6 ← phi( processChars::@5/(struct ProcessingSprite*) processChars::processing#4 )
|
|
(word) processChars::xpos#2 ← phi( processChars::@5/(word) processChars::xpos#1 )
|
|
(number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8
|
|
(byte~) processChars::$27 ← ((byte)) (number~) processChars::$26
|
|
(number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8
|
|
(number~) processChars::$29 ← (byte~) processChars::$27 - (number~) processChars::$28
|
|
(byte) processChars::xchar#0 ← (number~) processChars::$29
|
|
(byte~) processChars::$37 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD
|
|
(word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
(word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
*((word*) processChars::$54) ← *((word*) processChars::$53) + *((word*) VXSIN#0 + (byte~) processChars::$37)
|
|
(word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
(word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
(word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
*((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56)
|
|
(number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8
|
|
(byte~) processChars::$31 ← ((byte)) (number~) processChars::$30
|
|
(number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8
|
|
(number~) processChars::$33 ← (byte~) processChars::$31 - (number~) processChars::$32
|
|
(byte) processChars::ychar#0 ← (number~) processChars::$33
|
|
(byte~) processChars::$38 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD
|
|
(word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
(word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
*((word*) processChars::$59) ← *((word*) processChars::$58) + *((word*) VYSIN#0 + (byte~) processChars::$38)
|
|
(word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
(word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
(word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#6 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
*((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61)
|
|
to:processChars::@7
|
|
processChars::@7: scope:[processChars] from processChars::@10 processChars::@6
|
|
(byte) processChars::i#5 ← phi( processChars::@10/(byte) processChars::i#9 processChars::@6/(byte) processChars::i#10 )
|
|
(byte) processChars::numActive#2 ← phi( processChars::@10/(byte) processChars::numActive#4 processChars::@6/(byte) processChars::numActive#5 )
|
|
(byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#2
|
|
to:processChars::@2
|
|
processChars::@14: scope:[processChars] from processChars::@2
|
|
(byte) processChars::numActive#3 ← phi( processChars::@2/(byte) processChars::numActive#6 )
|
|
(byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7
|
|
(byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3
|
|
*((byte*~) processChars::$0) ← (byte~) processChars::$1
|
|
to:processChars::@return
|
|
processChars::@return: scope:[processChars] from processChars::@14
|
|
return
|
|
to:@return
|
|
@13: scope:[] from @12
|
|
(word[$28]) SQUARES_X#0 ← { fill( $28, 0) }
|
|
(word[$19]) SQUARES_Y#0 ← { fill( $19, 0) }
|
|
to:@16
|
|
initSquareTables: scope:[initSquareTables] from main
|
|
(byte) initSquareTables::x#0 ← (byte) 0
|
|
to:initSquareTables::@1
|
|
initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@15
|
|
(byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) initSquareTables::x#0 initSquareTables::@15/(byte) initSquareTables::x#1 )
|
|
(bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14
|
|
if((bool~) initSquareTables::$0) goto initSquareTables::@2
|
|
to:initSquareTables::@3
|
|
initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1
|
|
(byte) initSquareTables::x#3 ← phi( initSquareTables::@1/(byte) initSquareTables::x#2 )
|
|
(number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3
|
|
(number~) initSquareTables::$4 ← (number~) initSquareTables::$3
|
|
to:initSquareTables::@4
|
|
initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1
|
|
(byte) initSquareTables::x#4 ← phi( initSquareTables::@1/(byte) initSquareTables::x#2 )
|
|
(number~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (number) $14
|
|
(number~) initSquareTables::$2 ← (number~) initSquareTables::$1
|
|
to:initSquareTables::@4
|
|
initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3
|
|
(byte) initSquareTables::x#6 ← phi( initSquareTables::@2/(byte) initSquareTables::x#3 initSquareTables::@3/(byte) initSquareTables::x#4 )
|
|
(number~) initSquareTables::$5 ← phi( initSquareTables::@2/(number~) initSquareTables::$4 initSquareTables::@3/(number~) initSquareTables::$2 )
|
|
(byte) initSquareTables::x_dist#0 ← (number~) initSquareTables::$5
|
|
(byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
|
|
(byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
|
call mul8u
|
|
(word) mul8u::return#2 ← (word) mul8u::return#1
|
|
to:initSquareTables::@15
|
|
initSquareTables::@15: scope:[initSquareTables] from initSquareTables::@4
|
|
(byte) initSquareTables::x#5 ← phi( initSquareTables::@4/(byte) initSquareTables::x#6 )
|
|
(word) mul8u::return#5 ← phi( initSquareTables::@4/(word) mul8u::return#2 )
|
|
(word~) initSquareTables::$6 ← (word) mul8u::return#5
|
|
(byte~) initSquareTables::$16 ← (byte) initSquareTables::x#5 * (const byte) SIZEOF_WORD
|
|
*((word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
|
|
(byte) initSquareTables::x#1 ← (byte) initSquareTables::x#5 + rangenext(0,$27)
|
|
(bool~) initSquareTables::$7 ← (byte) initSquareTables::x#1 != rangelast(0,$27)
|
|
if((bool~) initSquareTables::$7) goto initSquareTables::@1
|
|
to:initSquareTables::@7
|
|
initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@15
|
|
(byte) initSquareTables::y#0 ← (byte) 0
|
|
to:initSquareTables::@8
|
|
initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@16 initSquareTables::@7
|
|
(byte) initSquareTables::y#2 ← phi( initSquareTables::@16/(byte) initSquareTables::y#1 initSquareTables::@7/(byte) initSquareTables::y#0 )
|
|
(bool~) initSquareTables::$8 ← (byte) initSquareTables::y#2 < (number) $c
|
|
if((bool~) initSquareTables::$8) goto initSquareTables::@9
|
|
to:initSquareTables::@10
|
|
initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@8
|
|
(byte) initSquareTables::y#3 ← phi( initSquareTables::@8/(byte) initSquareTables::y#2 )
|
|
(number~) initSquareTables::$11 ← (number) $c - (byte) initSquareTables::y#3
|
|
(number~) initSquareTables::$12 ← (number~) initSquareTables::$11
|
|
to:initSquareTables::@11
|
|
initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8
|
|
(byte) initSquareTables::y#4 ← phi( initSquareTables::@8/(byte) initSquareTables::y#2 )
|
|
(number~) initSquareTables::$9 ← (byte) initSquareTables::y#4 - (number) $c
|
|
(number~) initSquareTables::$10 ← (number~) initSquareTables::$9
|
|
to:initSquareTables::@11
|
|
initSquareTables::@11: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9
|
|
(byte) initSquareTables::y#6 ← phi( initSquareTables::@10/(byte) initSquareTables::y#4 initSquareTables::@9/(byte) initSquareTables::y#3 )
|
|
(number~) initSquareTables::$13 ← phi( initSquareTables::@9/(number~) initSquareTables::$12 initSquareTables::@10/(number~) initSquareTables::$10 )
|
|
(byte) initSquareTables::y_dist#0 ← (number~) initSquareTables::$13
|
|
(byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
|
|
(byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
|
call mul8u
|
|
(word) mul8u::return#3 ← (word) mul8u::return#1
|
|
to:initSquareTables::@16
|
|
initSquareTables::@16: scope:[initSquareTables] from initSquareTables::@11
|
|
(byte) initSquareTables::y#5 ← phi( initSquareTables::@11/(byte) initSquareTables::y#6 )
|
|
(word) mul8u::return#6 ← phi( initSquareTables::@11/(word) mul8u::return#3 )
|
|
(word~) initSquareTables::$14 ← (word) mul8u::return#6
|
|
(byte~) initSquareTables::$17 ← (byte) initSquareTables::y#5 * (const byte) SIZEOF_WORD
|
|
*((word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
|
|
(byte) initSquareTables::y#1 ← (byte) initSquareTables::y#5 + rangenext(0,$18)
|
|
(bool~) initSquareTables::$15 ← (byte) initSquareTables::y#1 != rangelast(0,$18)
|
|
if((bool~) initSquareTables::$15) goto initSquareTables::@8
|
|
to:initSquareTables::@return
|
|
initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@16
|
|
return
|
|
to:@return
|
|
initSprites: scope:[initSprites] from main::@4
|
|
(byte*) initSprites::sp#0 ← (byte*) SPRITE_DATA#0
|
|
to:initSprites::@1
|
|
initSprites::@1: scope:[initSprites] from initSprites initSprites::@1
|
|
(byte*) initSprites::sp#2 ← phi( initSprites/(byte*) initSprites::sp#0 initSprites::@1/(byte*) initSprites::sp#1 )
|
|
*((byte*) initSprites::sp#2) ← (number) 0
|
|
(byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
|
|
(number~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (number) $40
|
|
(byte*~) initSprites::$1 ← (byte*) SPRITE_DATA#0 + (number~) initSprites::$0
|
|
(bool~) initSprites::$2 ← (byte*) initSprites::sp#1 < (byte*~) initSprites::$1
|
|
if((bool~) initSprites::$2) goto initSprites::@1
|
|
to:initSprites::@2
|
|
initSprites::@2: scope:[initSprites] from initSprites::@1
|
|
(byte) initSprites::i#0 ← (byte) 0
|
|
to:initSprites::@3
|
|
initSprites::@3: scope:[initSprites] from initSprites::@2 initSprites::@3
|
|
(byte) initSprites::i#2 ← phi( initSprites::@2/(byte) initSprites::i#0 initSprites::@3/(byte) initSprites::i#1 )
|
|
*((byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (byte) LIGHT_BLUE#0
|
|
(byte) initSprites::i#1 ← (byte) initSprites::i#2 + rangenext(0,7)
|
|
(bool~) initSprites::$3 ← (byte) initSprites::i#1 != rangelast(0,7)
|
|
if((bool~) initSprites::$3) goto initSprites::@3
|
|
to:initSprites::@4
|
|
initSprites::@4: scope:[initSprites] from initSprites::@3
|
|
*((byte*) SPRITES_MC#0) ← (number) 0
|
|
*((byte*) SPRITES_EXPAND_X#0) ← (number) 0
|
|
*((byte*) SPRITES_EXPAND_Y#0) ← (number) 0
|
|
to:initSprites::@return
|
|
initSprites::@return: scope:[initSprites] from initSprites::@4
|
|
return
|
|
to:@return
|
|
setupRasterIrq: scope:[setupRasterIrq] from main::@14
|
|
(void()*) setupRasterIrq::irqRoutine#4 ← phi( main::@14/(void()*) setupRasterIrq::irqRoutine#0 )
|
|
(word) setupRasterIrq::raster#1 ← phi( main::@14/(word) setupRasterIrq::raster#0 )
|
|
asm { sei }
|
|
*((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
|
|
*((byte*) CIA1_INTERRUPT#0) ← (byte) CIA_INTERRUPT_CLEAR#0
|
|
(bool~) setupRasterIrq::$0 ← (word) setupRasterIrq::raster#1 < (number) $100
|
|
if((bool~) setupRasterIrq::$0) goto setupRasterIrq::@1
|
|
to:setupRasterIrq::@3
|
|
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
|
|
(void()*) setupRasterIrq::irqRoutine#2 ← phi( setupRasterIrq/(void()*) setupRasterIrq::irqRoutine#4 )
|
|
(word) setupRasterIrq::raster#3 ← phi( setupRasterIrq/(word) setupRasterIrq::raster#1 )
|
|
*((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (number) $7f
|
|
to:setupRasterIrq::@2
|
|
setupRasterIrq::@3: scope:[setupRasterIrq] from setupRasterIrq
|
|
(void()*) setupRasterIrq::irqRoutine#3 ← phi( setupRasterIrq/(void()*) setupRasterIrq::irqRoutine#4 )
|
|
(word) setupRasterIrq::raster#4 ← phi( setupRasterIrq/(word) setupRasterIrq::raster#1 )
|
|
*((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) | (number) $80
|
|
to:setupRasterIrq::@2
|
|
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1 setupRasterIrq::@3
|
|
(void()*) setupRasterIrq::irqRoutine#1 ← phi( setupRasterIrq::@1/(void()*) setupRasterIrq::irqRoutine#2 setupRasterIrq::@3/(void()*) setupRasterIrq::irqRoutine#3 )
|
|
(word) setupRasterIrq::raster#2 ← phi( setupRasterIrq::@1/(word) setupRasterIrq::raster#3 setupRasterIrq::@3/(word) setupRasterIrq::raster#4 )
|
|
(byte~) setupRasterIrq::$1 ← < (word) setupRasterIrq::raster#2
|
|
*((byte*) RASTER#0) ← (byte~) setupRasterIrq::$1
|
|
*((byte*) IRQ_ENABLE#0) ← (byte) IRQ_RASTER#0
|
|
*((void()**) HARDWARE_IRQ#0) ← (void()*) setupRasterIrq::irqRoutine#1
|
|
asm { cli }
|
|
to:setupRasterIrq::@return
|
|
setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2
|
|
return
|
|
to:@return
|
|
@16: scope:[] from @13
|
|
(byte) RASTER_IRQ_TOP#0 ← (number) $30
|
|
to:@17
|
|
irqTop: scope:[irqTop] from
|
|
(byte) irqTop::i#0 ← (byte) 0
|
|
to:irqTop::@1
|
|
irqTop::@1: scope:[irqTop] from irqTop irqTop::@1
|
|
(byte) irqTop::i#2 ← phi( irqTop/(byte) irqTop::i#0 irqTop::@1/(byte) irqTop::i#1 )
|
|
(byte) irqTop::i#1 ← (byte) irqTop::i#2 + rangenext(0,4)
|
|
(bool~) irqTop::$1 ← (byte) irqTop::i#1 != rangelast(0,4)
|
|
if((bool~) irqTop::$1) goto irqTop::@1
|
|
to:irqTop::@2
|
|
irqTop::@2: scope:[irqTop] from irqTop::@1
|
|
(byte) irqTop::i1#0 ← (byte) 0
|
|
to:irqTop::@3
|
|
irqTop::@3: scope:[irqTop] from irqTop::@2 irqTop::@3
|
|
(byte) irqTop::i1#2 ← phi( irqTop::@2/(byte) irqTop::i1#0 irqTop::@3/(byte) irqTop::i1#1 )
|
|
(byte) irqTop::i1#1 ← (byte) irqTop::i1#2 + rangenext(0,7)
|
|
(bool~) irqTop::$2 ← (byte) irqTop::i1#1 != rangelast(0,7)
|
|
if((bool~) irqTop::$2) goto irqTop::@3
|
|
to:irqTop::@4
|
|
irqTop::@4: scope:[irqTop] from irqTop::@3
|
|
*((byte*) RASTER#0) ← (byte) RASTER_IRQ_MIDDLE#0
|
|
(void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
*((void()**) HARDWARE_IRQ#0) ← (void()*~) irqTop::$0
|
|
*((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0
|
|
to:irqTop::@return
|
|
irqTop::@return: scope:[irqTop] from irqTop::@4
|
|
return
|
|
to:@return
|
|
@17: scope:[] from @16
|
|
(byte) RASTER_IRQ_MIDDLE#0 ← (number) $ff
|
|
to:@18
|
|
irqBottom: scope:[irqBottom] from
|
|
(byte) irqBottom::i#0 ← (byte) 0
|
|
to:irqBottom::@1
|
|
irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1
|
|
(byte) irqBottom::i#2 ← phi( irqBottom/(byte) irqBottom::i#0 irqBottom::@1/(byte) irqBottom::i#1 )
|
|
(byte) irqBottom::i#1 ← (byte) irqBottom::i#2 + rangenext(0,4)
|
|
(bool~) irqBottom::$2 ← (byte) irqBottom::i#1 != rangelast(0,4)
|
|
if((bool~) irqBottom::$2) goto irqBottom::@1
|
|
to:irqBottom::@2
|
|
irqBottom::@2: scope:[irqBottom] from irqBottom::@1
|
|
call processChars
|
|
to:irqBottom::@3
|
|
irqBottom::@3: scope:[irqBottom] from irqBottom::@2
|
|
*((byte*) RASTER#0) ← (byte) RASTER_IRQ_TOP#0
|
|
(void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
*((void()**) HARDWARE_IRQ#0) ← (void()*~) irqBottom::$1
|
|
*((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0
|
|
to:irqBottom::@return
|
|
irqBottom::@return: scope:[irqBottom] from irqBottom::@3
|
|
return
|
|
to:@return
|
|
@18: scope:[] from @17
|
|
call main
|
|
to:@19
|
|
@19: scope:[] from @18
|
|
to:@end
|
|
@end: scope:[] from @19
|
|
|
|
SYMBOL TABLE SSA
|
|
(number~) $0
|
|
(word~) $1
|
|
(word~) $2
|
|
(word~) $3
|
|
(word~) $4
|
|
(number~) $5
|
|
(word~) $6
|
|
(word~) $7
|
|
(word~) $8
|
|
(word~) $9
|
|
(label) @12
|
|
(label) @13
|
|
(label) @16
|
|
(label) @17
|
|
(label) @18
|
|
(label) @19
|
|
(label) @9
|
|
(label) @begin
|
|
(label) @end
|
|
(byte) BORDER_XPOS_LEFT
|
|
(byte) BORDER_XPOS_LEFT#0
|
|
(word) BORDER_XPOS_RIGHT
|
|
(word) BORDER_XPOS_RIGHT#0
|
|
(byte) BORDER_YPOS_BOTTOM
|
|
(byte) BORDER_YPOS_BOTTOM#0
|
|
(byte) BORDER_YPOS_TOP
|
|
(byte) BORDER_YPOS_TOP#0
|
|
(byte*) CHARGEN
|
|
(byte*) CHARGEN#0
|
|
(byte*) CIA1_INTERRUPT
|
|
(byte*) CIA1_INTERRUPT#0
|
|
(byte) CIA_INTERRUPT_CLEAR
|
|
(byte) CIA_INTERRUPT_CLEAR#0
|
|
(byte*) COLS
|
|
(byte*) COLS#0
|
|
(void()**) HARDWARE_IRQ
|
|
(void()**) HARDWARE_IRQ#0
|
|
(byte*) IRQ_ENABLE
|
|
(byte*) IRQ_ENABLE#0
|
|
(byte) IRQ_RASTER
|
|
(byte) IRQ_RASTER#0
|
|
(byte*) IRQ_STATUS
|
|
(byte*) IRQ_STATUS#0
|
|
(byte) LIGHT_BLUE
|
|
(byte) LIGHT_BLUE#0
|
|
(word) NOT_FOUND
|
|
(word) NOT_FOUND#0
|
|
(byte) NUM_PROCESSING
|
|
(byte) NUM_PROCESSING#0
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X = (byte) 0
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2
|
|
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING
|
|
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0
|
|
(byte*) PROCPORT
|
|
(byte*) PROCPORT#0
|
|
(byte*) PROCPORT_DDR
|
|
(byte*) PROCPORT_DDR#0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
(byte) PROCPORT_RAM_CHARROM
|
|
(byte) PROCPORT_RAM_CHARROM#0
|
|
(byte) PROCPORT_RAM_IO
|
|
(byte) PROCPORT_RAM_IO#0
|
|
(word) ProcessingChar::dist
|
|
(byte) ProcessingChar::x
|
|
(byte) ProcessingChar::y
|
|
(byte) ProcessingSprite::id
|
|
(byte) ProcessingSprite::ptr
|
|
(byte*) ProcessingSprite::screenPtr
|
|
(byte) ProcessingSprite::status
|
|
(word) ProcessingSprite::vx
|
|
(word) ProcessingSprite::vy
|
|
(word) ProcessingSprite::x
|
|
(word) ProcessingSprite::y
|
|
(byte*) RASTER
|
|
(byte*) RASTER#0
|
|
(byte) RASTER_IRQ_MIDDLE
|
|
(byte) RASTER_IRQ_MIDDLE#0
|
|
(byte) RASTER_IRQ_TOP
|
|
(byte) RASTER_IRQ_TOP#0
|
|
(byte*) SCREEN
|
|
(byte*) SCREEN#0
|
|
(byte[$3e8]) SCREEN_COPY
|
|
(byte[$3e8]) SCREEN_COPY#0
|
|
(const byte) SIZEOF_STRUCT_PROCESSINGSPRITE = (byte) $d
|
|
(const byte) SIZEOF_WORD = (byte) 2
|
|
(byte*) SPRITES_COLS
|
|
(byte*) SPRITES_COLS#0
|
|
(byte*) SPRITES_ENABLE
|
|
(byte*) SPRITES_ENABLE#0
|
|
(byte*) SPRITES_EXPAND_X
|
|
(byte*) SPRITES_EXPAND_X#0
|
|
(byte*) SPRITES_EXPAND_Y
|
|
(byte*) SPRITES_EXPAND_Y#0
|
|
(byte*) SPRITES_MC
|
|
(byte*) SPRITES_MC#0
|
|
(byte*) SPRITES_XMSB
|
|
(byte*) SPRITES_XMSB#0
|
|
(byte*) SPRITES_XPOS
|
|
(byte*) SPRITES_XPOS#0
|
|
(byte*) SPRITES_YPOS
|
|
(byte*) SPRITES_YPOS#0
|
|
(byte*) SPRITE_DATA
|
|
(byte*) SPRITE_DATA#0
|
|
(word) SPRITE_PTRS
|
|
(word) SPRITE_PTRS#0
|
|
(word[$28]) SQUARES_X
|
|
(word[$28]) SQUARES_X#0
|
|
(word[$19]) SQUARES_Y
|
|
(word[$19]) SQUARES_Y#0
|
|
(byte) STATUS_FREE
|
|
(byte) STATUS_FREE#0
|
|
(byte) STATUS_NEW
|
|
(byte) STATUS_NEW#0
|
|
(byte) STATUS_PROCESSING
|
|
(byte) STATUS_PROCESSING#0
|
|
(byte*) VIC_CONTROL
|
|
(byte*) VIC_CONTROL#0
|
|
(word*) VXSIN
|
|
(word*) VXSIN#0
|
|
(word*) VYSIN
|
|
(word*) VYSIN#0
|
|
(word) XPOS_LEFTMOST
|
|
(word) XPOS_LEFTMOST#0
|
|
(word) XPOS_RIGHTMOST
|
|
(word) XPOS_RIGHTMOST#0
|
|
(word) YPOS_BOTTOMMOST
|
|
(word) YPOS_BOTTOMMOST#0
|
|
(word) YPOS_TOPMOST
|
|
(word) YPOS_TOPMOST#0
|
|
(struct ProcessingChar()) getCharToProcess()
|
|
(bool~) getCharToProcess::$0
|
|
(bool~) getCharToProcess::$1
|
|
(number~) getCharToProcess::$10
|
|
(byte*~) getCharToProcess::$11
|
|
(byte*~) getCharToProcess::$12
|
|
(byte~) getCharToProcess::$13
|
|
(byte~) getCharToProcess::$14
|
|
(bool~) getCharToProcess::$2
|
|
(bool~) getCharToProcess::$3
|
|
(word~) getCharToProcess::$4
|
|
(bool~) getCharToProcess::$5
|
|
(bool~) getCharToProcess::$6
|
|
(bool~) getCharToProcess::$7
|
|
(bool~) getCharToProcess::$8
|
|
(word~) getCharToProcess::$9
|
|
(label) getCharToProcess::@1
|
|
(label) getCharToProcess::@10
|
|
(label) getCharToProcess::@11
|
|
(label) getCharToProcess::@3
|
|
(label) getCharToProcess::@4
|
|
(label) getCharToProcess::@5
|
|
(label) getCharToProcess::@7
|
|
(label) getCharToProcess::@8
|
|
(label) getCharToProcess::@9
|
|
(label) getCharToProcess::@return
|
|
(struct ProcessingChar) getCharToProcess::closest
|
|
(word) getCharToProcess::closest_dist
|
|
(word) getCharToProcess::closest_dist#0
|
|
(word) getCharToProcess::closest_dist#1
|
|
(word) getCharToProcess::closest_dist#2
|
|
(word) getCharToProcess::closest_dist#3
|
|
(word) getCharToProcess::closest_dist#4
|
|
(word) getCharToProcess::closest_dist#5
|
|
(word) getCharToProcess::closest_dist#6
|
|
(word) getCharToProcess::closest_dist#7
|
|
(word) getCharToProcess::closest_dist#8
|
|
(word) getCharToProcess::closest_dist#9
|
|
(byte) getCharToProcess::closest_x
|
|
(byte) getCharToProcess::closest_x#0
|
|
(byte) getCharToProcess::closest_x#1
|
|
(byte) getCharToProcess::closest_x#2
|
|
(byte) getCharToProcess::closest_x#3
|
|
(byte) getCharToProcess::closest_x#4
|
|
(byte) getCharToProcess::closest_x#5
|
|
(byte) getCharToProcess::closest_x#6
|
|
(byte) getCharToProcess::closest_x#7
|
|
(byte) getCharToProcess::closest_x#8
|
|
(byte) getCharToProcess::closest_x#9
|
|
(byte) getCharToProcess::closest_y
|
|
(byte) getCharToProcess::closest_y#0
|
|
(byte) getCharToProcess::closest_y#1
|
|
(byte) getCharToProcess::closest_y#2
|
|
(byte) getCharToProcess::closest_y#3
|
|
(byte) getCharToProcess::closest_y#4
|
|
(byte) getCharToProcess::closest_y#5
|
|
(byte) getCharToProcess::closest_y#6
|
|
(byte) getCharToProcess::closest_y#7
|
|
(byte) getCharToProcess::closest_y#8
|
|
(byte) getCharToProcess::closest_y#9
|
|
(word) getCharToProcess::dist
|
|
(word) getCharToProcess::dist#0
|
|
(word) getCharToProcess::dist#1
|
|
(struct ProcessingChar) getCharToProcess::return
|
|
(word) getCharToProcess::return_dist
|
|
(word) getCharToProcess::return_dist#0
|
|
(word) getCharToProcess::return_dist#1
|
|
(word) getCharToProcess::return_dist#2
|
|
(word) getCharToProcess::return_dist#3
|
|
(word) getCharToProcess::return_dist#4
|
|
(byte) getCharToProcess::return_x
|
|
(byte) getCharToProcess::return_x#0
|
|
(byte) getCharToProcess::return_x#1
|
|
(byte) getCharToProcess::return_x#2
|
|
(byte) getCharToProcess::return_x#3
|
|
(byte) getCharToProcess::return_x#4
|
|
(byte) getCharToProcess::return_y
|
|
(byte) getCharToProcess::return_y#0
|
|
(byte) getCharToProcess::return_y#1
|
|
(byte) getCharToProcess::return_y#2
|
|
(byte) getCharToProcess::return_y#3
|
|
(byte) getCharToProcess::return_y#4
|
|
(byte*) getCharToProcess::screen_line
|
|
(byte*) getCharToProcess::screen_line#0
|
|
(byte*) getCharToProcess::screen_line#1
|
|
(byte*) getCharToProcess::screen_line#2
|
|
(byte*) getCharToProcess::screen_line#3
|
|
(byte*) getCharToProcess::screen_line#4
|
|
(byte*) getCharToProcess::screen_line#5
|
|
(byte*) getCharToProcess::screen_line#6
|
|
(byte*) getCharToProcess::screen_line#7
|
|
(byte) getCharToProcess::x
|
|
(byte) getCharToProcess::x#0
|
|
(byte) getCharToProcess::x#1
|
|
(byte) getCharToProcess::x#2
|
|
(byte) getCharToProcess::x#3
|
|
(byte) getCharToProcess::x#4
|
|
(byte) getCharToProcess::x#5
|
|
(byte) getCharToProcess::y
|
|
(byte) getCharToProcess::y#0
|
|
(byte) getCharToProcess::y#1
|
|
(byte) getCharToProcess::y#2
|
|
(byte) getCharToProcess::y#3
|
|
(byte) getCharToProcess::y#4
|
|
(byte) getCharToProcess::y#5
|
|
(byte) getCharToProcess::y#6
|
|
(byte) getCharToProcess::y#7
|
|
(void()) initSprites()
|
|
(number~) initSprites::$0
|
|
(byte*~) initSprites::$1
|
|
(bool~) initSprites::$2
|
|
(bool~) initSprites::$3
|
|
(label) initSprites::@1
|
|
(label) initSprites::@2
|
|
(label) initSprites::@3
|
|
(label) initSprites::@4
|
|
(label) initSprites::@return
|
|
(byte) initSprites::i
|
|
(byte) initSprites::i#0
|
|
(byte) initSprites::i#1
|
|
(byte) initSprites::i#2
|
|
(byte*) initSprites::sp
|
|
(byte*) initSprites::sp#0
|
|
(byte*) initSprites::sp#1
|
|
(byte*) initSprites::sp#2
|
|
(void()) initSquareTables()
|
|
(bool~) initSquareTables::$0
|
|
(number~) initSquareTables::$1
|
|
(number~) initSquareTables::$10
|
|
(number~) initSquareTables::$11
|
|
(number~) initSquareTables::$12
|
|
(number~) initSquareTables::$13
|
|
(word~) initSquareTables::$14
|
|
(bool~) initSquareTables::$15
|
|
(byte~) initSquareTables::$16
|
|
(byte~) initSquareTables::$17
|
|
(number~) initSquareTables::$2
|
|
(number~) initSquareTables::$3
|
|
(number~) initSquareTables::$4
|
|
(number~) initSquareTables::$5
|
|
(word~) initSquareTables::$6
|
|
(bool~) initSquareTables::$7
|
|
(bool~) initSquareTables::$8
|
|
(number~) initSquareTables::$9
|
|
(label) initSquareTables::@1
|
|
(label) initSquareTables::@10
|
|
(label) initSquareTables::@11
|
|
(label) initSquareTables::@15
|
|
(label) initSquareTables::@16
|
|
(label) initSquareTables::@2
|
|
(label) initSquareTables::@3
|
|
(label) initSquareTables::@4
|
|
(label) initSquareTables::@7
|
|
(label) initSquareTables::@8
|
|
(label) initSquareTables::@9
|
|
(label) initSquareTables::@return
|
|
(byte) initSquareTables::x
|
|
(byte) initSquareTables::x#0
|
|
(byte) initSquareTables::x#1
|
|
(byte) initSquareTables::x#2
|
|
(byte) initSquareTables::x#3
|
|
(byte) initSquareTables::x#4
|
|
(byte) initSquareTables::x#5
|
|
(byte) initSquareTables::x#6
|
|
(byte) initSquareTables::x_dist
|
|
(byte) initSquareTables::x_dist#0
|
|
(byte) initSquareTables::y
|
|
(byte) initSquareTables::y#0
|
|
(byte) initSquareTables::y#1
|
|
(byte) initSquareTables::y#2
|
|
(byte) initSquareTables::y#3
|
|
(byte) initSquareTables::y#4
|
|
(byte) initSquareTables::y#5
|
|
(byte) initSquareTables::y#6
|
|
(byte) initSquareTables::y_dist
|
|
(byte) initSquareTables::y_dist#0
|
|
interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
(void()*~) irqBottom::$1
|
|
(bool~) irqBottom::$2
|
|
(label) irqBottom::@1
|
|
(label) irqBottom::@2
|
|
(label) irqBottom::@3
|
|
(label) irqBottom::@return
|
|
(byte) irqBottom::i
|
|
(byte) irqBottom::i#0
|
|
(byte) irqBottom::i#1
|
|
(byte) irqBottom::i#2
|
|
interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
(void()*~) irqTop::$0
|
|
(bool~) irqTop::$1
|
|
(bool~) irqTop::$2
|
|
(label) irqTop::@1
|
|
(label) irqTop::@2
|
|
(label) irqTop::@3
|
|
(label) irqTop::@4
|
|
(label) irqTop::@return
|
|
(byte) irqTop::i
|
|
(byte) irqTop::i#0
|
|
(byte) irqTop::i#1
|
|
(byte) irqTop::i#2
|
|
(byte) irqTop::i1
|
|
(byte) irqTop::i1#0
|
|
(byte) irqTop::i1#1
|
|
(byte) irqTop::i1#2
|
|
(void()) main()
|
|
(bool~) main::$10
|
|
(bool~) main::$11
|
|
(byte*~) main::$15
|
|
(byte~) main::$16
|
|
(word*) main::$17
|
|
(word*) main::$18
|
|
(word*) main::$19
|
|
(void()*~) main::$2
|
|
(word*) main::$20
|
|
(byte*) main::$21
|
|
(byte*) main::$22
|
|
(byte*) main::$23
|
|
(byte**) main::$24
|
|
(byte*~) main::$4
|
|
(byte*~) main::$5
|
|
(bool~) main::$6
|
|
(number~) main::$7
|
|
(bool~) main::$8
|
|
(struct ProcessingChar~) main::$9
|
|
(word) main::$9_dist
|
|
(byte) main::$9_x
|
|
(byte) main::$9_y
|
|
(label) main::@1
|
|
(label) main::@11
|
|
(label) main::@13
|
|
(label) main::@14
|
|
(label) main::@15
|
|
(label) main::@16
|
|
(label) main::@17
|
|
(label) main::@2
|
|
(label) main::@3
|
|
(label) main::@4
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@return
|
|
(struct ProcessingChar) main::center
|
|
(word) main::center_dist
|
|
(word) main::center_dist#0
|
|
(word) main::center_dist#1
|
|
(byte) main::center_x
|
|
(byte) main::center_x#0
|
|
(byte) main::center_x#1
|
|
(byte) main::center_y
|
|
(byte) main::center_y#0
|
|
(byte) main::center_y#1
|
|
(byte*) main::dst
|
|
(byte*) main::dst#0
|
|
(byte*) main::dst#1
|
|
(byte*) main::dst#2
|
|
(byte) main::i
|
|
(byte) main::i#0
|
|
(byte) main::i#1
|
|
(byte) main::i#2
|
|
(byte*) main::src
|
|
(byte*) main::src#0
|
|
(byte*) main::src#1
|
|
(byte*) main::src#2
|
|
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
|
(bool~) mul8u::$0
|
|
(number~) mul8u::$1
|
|
(bool~) mul8u::$2
|
|
(bool~) mul8u::$3
|
|
(word~) mul8u::$4
|
|
(byte~) mul8u::$5
|
|
(word~) mul8u::$6
|
|
(label) mul8u::@1
|
|
(label) mul8u::@2
|
|
(label) mul8u::@3
|
|
(label) mul8u::@4
|
|
(label) mul8u::@7
|
|
(label) mul8u::@return
|
|
(byte) mul8u::a
|
|
(byte) mul8u::a#0
|
|
(byte) mul8u::a#1
|
|
(byte) mul8u::a#2
|
|
(byte) mul8u::a#3
|
|
(byte) mul8u::a#4
|
|
(byte) mul8u::a#5
|
|
(byte) mul8u::a#6
|
|
(byte) mul8u::a#7
|
|
(byte) mul8u::b
|
|
(byte) mul8u::b#0
|
|
(byte) mul8u::b#1
|
|
(byte) mul8u::b#2
|
|
(word) mul8u::mb
|
|
(word) mul8u::mb#0
|
|
(word) mul8u::mb#1
|
|
(word) mul8u::mb#2
|
|
(word) mul8u::mb#3
|
|
(word) mul8u::mb#4
|
|
(word) mul8u::mb#5
|
|
(word) mul8u::res
|
|
(word) mul8u::res#0
|
|
(word) mul8u::res#1
|
|
(word) mul8u::res#2
|
|
(word) mul8u::res#3
|
|
(word) mul8u::res#4
|
|
(word) mul8u::res#5
|
|
(word) mul8u::res#6
|
|
(word) mul8u::return
|
|
(word) mul8u::return#0
|
|
(word) mul8u::return#1
|
|
(word) mul8u::return#2
|
|
(word) mul8u::return#3
|
|
(word) mul8u::return#4
|
|
(word) mul8u::return#5
|
|
(word) mul8u::return#6
|
|
(void()) processChars()
|
|
(byte*~) processChars::$0
|
|
(byte~) processChars::$1
|
|
(byte*~) processChars::$10
|
|
(word~) processChars::$11
|
|
(byte~) processChars::$12
|
|
(number~) processChars::$13
|
|
(number~) processChars::$14
|
|
(byte~) processChars::$15
|
|
(word~) processChars::$16
|
|
(byte~) processChars::$17
|
|
(number~) processChars::$18
|
|
(bool~) processChars::$19
|
|
(number~) processChars::$2
|
|
(bool~) processChars::$20
|
|
(bool~) processChars::$21
|
|
(bool~) processChars::$22
|
|
(bool~) processChars::$23
|
|
(bool~) processChars::$24
|
|
(bool~) processChars::$25
|
|
(number~) processChars::$26
|
|
(byte~) processChars::$27
|
|
(number~) processChars::$28
|
|
(number~) processChars::$29
|
|
(struct ProcessingSprite*~) processChars::$3
|
|
(number~) processChars::$30
|
|
(byte~) processChars::$31
|
|
(number~) processChars::$32
|
|
(number~) processChars::$33
|
|
(number~) processChars::$34
|
|
(bool~) processChars::$35
|
|
(byte~) processChars::$36
|
|
(byte~) processChars::$37
|
|
(byte~) processChars::$38
|
|
(byte*) processChars::$39
|
|
(number~) processChars::$4
|
|
(byte*) processChars::$40
|
|
(byte*) processChars::$41
|
|
(word*) processChars::$42
|
|
(byte**) processChars::$43
|
|
(byte*) processChars::$44
|
|
(byte*) processChars::$45
|
|
(byte*) processChars::$46
|
|
(word*) processChars::$47
|
|
(word*) processChars::$48
|
|
(word*) processChars::$49
|
|
(bool~) processChars::$5
|
|
(word*) processChars::$50
|
|
(word*) processChars::$51
|
|
(byte*) processChars::$52
|
|
(word*) processChars::$53
|
|
(word*) processChars::$54
|
|
(word*) processChars::$55
|
|
(word*) processChars::$56
|
|
(word*) processChars::$57
|
|
(word*) processChars::$58
|
|
(word*) processChars::$59
|
|
(bool~) processChars::$6
|
|
(word*) processChars::$60
|
|
(word*) processChars::$61
|
|
(word*) processChars::$62
|
|
(bool~) processChars::$63
|
|
(bool~) processChars::$7
|
|
(bool~) processChars::$8
|
|
(byte*~) processChars::$9
|
|
(label) processChars::@1
|
|
(label) processChars::@10
|
|
(label) processChars::@12
|
|
(label) processChars::@13
|
|
(label) processChars::@14
|
|
(label) processChars::@2
|
|
(label) processChars::@3
|
|
(label) processChars::@4
|
|
(label) processChars::@5
|
|
(label) processChars::@6
|
|
(label) processChars::@7
|
|
(label) processChars::@8
|
|
(label) processChars::@return
|
|
(byte) processChars::bitmask
|
|
(byte) processChars::bitmask#0
|
|
(byte) processChars::bitmask#1
|
|
(byte) processChars::bitmask#2
|
|
(byte) processChars::bitmask#3
|
|
(byte) processChars::bitmask#4
|
|
(byte) processChars::bitmask#5
|
|
(byte) processChars::bitmask#6
|
|
(byte) processChars::bitmask#7
|
|
(byte) processChars::i
|
|
(byte) processChars::i#0
|
|
(byte) processChars::i#1
|
|
(byte) processChars::i#10
|
|
(byte) processChars::i#11
|
|
(byte) processChars::i#12
|
|
(byte) processChars::i#2
|
|
(byte) processChars::i#3
|
|
(byte) processChars::i#4
|
|
(byte) processChars::i#5
|
|
(byte) processChars::i#6
|
|
(byte) processChars::i#7
|
|
(byte) processChars::i#8
|
|
(byte) processChars::i#9
|
|
(byte) processChars::numActive
|
|
(byte) processChars::numActive#0
|
|
(byte) processChars::numActive#1
|
|
(byte) processChars::numActive#10
|
|
(byte) processChars::numActive#11
|
|
(byte) processChars::numActive#12
|
|
(byte) processChars::numActive#13
|
|
(byte) processChars::numActive#2
|
|
(byte) processChars::numActive#3
|
|
(byte) processChars::numActive#4
|
|
(byte) processChars::numActive#5
|
|
(byte) processChars::numActive#6
|
|
(byte) processChars::numActive#7
|
|
(byte) processChars::numActive#8
|
|
(byte) processChars::numActive#9
|
|
(struct ProcessingSprite*) processChars::processing
|
|
(struct ProcessingSprite*) processChars::processing#0
|
|
(struct ProcessingSprite*) processChars::processing#1
|
|
(struct ProcessingSprite*) processChars::processing#2
|
|
(struct ProcessingSprite*) processChars::processing#3
|
|
(struct ProcessingSprite*) processChars::processing#4
|
|
(struct ProcessingSprite*) processChars::processing#5
|
|
(struct ProcessingSprite*) processChars::processing#6
|
|
(struct ProcessingSprite*) processChars::processing#7
|
|
(struct ProcessingSprite*) processChars::processing#8
|
|
(byte) processChars::xchar
|
|
(byte) processChars::xchar#0
|
|
(word) processChars::xpos
|
|
(word) processChars::xpos#0
|
|
(word) processChars::xpos#1
|
|
(word) processChars::xpos#2
|
|
(word) processChars::xpos#3
|
|
(word) processChars::xpos#4
|
|
(byte) processChars::ychar
|
|
(byte) processChars::ychar#0
|
|
(byte) processChars::ypos
|
|
(byte) processChars::ypos#0
|
|
(byte) processChars::ypos#1
|
|
(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
|
|
(bool~) setupRasterIrq::$0
|
|
(byte~) setupRasterIrq::$1
|
|
(label) setupRasterIrq::@1
|
|
(label) setupRasterIrq::@2
|
|
(label) setupRasterIrq::@3
|
|
(label) setupRasterIrq::@return
|
|
(void()*) setupRasterIrq::irqRoutine
|
|
(void()*) setupRasterIrq::irqRoutine#0
|
|
(void()*) setupRasterIrq::irqRoutine#1
|
|
(void()*) setupRasterIrq::irqRoutine#2
|
|
(void()*) setupRasterIrq::irqRoutine#3
|
|
(void()*) setupRasterIrq::irqRoutine#4
|
|
(word) setupRasterIrq::raster
|
|
(word) setupRasterIrq::raster#0
|
|
(word) setupRasterIrq::raster#1
|
|
(word) setupRasterIrq::raster#2
|
|
(word) setupRasterIrq::raster#3
|
|
(word) setupRasterIrq::raster#4
|
|
(void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist)
|
|
(word~) startProcessing::$0
|
|
(number~) startProcessing::$1
|
|
(word~) startProcessing::$10
|
|
(number~) startProcessing::$11
|
|
(number~) startProcessing::$12
|
|
(number~) startProcessing::$13
|
|
(word~) startProcessing::$14
|
|
(number~) startProcessing::$15
|
|
(number~) startProcessing::$16
|
|
(number~) startProcessing::$17
|
|
(byte*~) startProcessing::$18
|
|
(byte~) startProcessing::$19
|
|
(byte*~) startProcessing::$2
|
|
(byte~) startProcessing::$20
|
|
(number~) startProcessing::$21
|
|
(word~) startProcessing::$22
|
|
(number~) startProcessing::$23
|
|
(bool~) startProcessing::$24
|
|
(bool~) startProcessing::$25
|
|
(bool~) startProcessing::$26
|
|
(bool~) startProcessing::$27
|
|
(bool~) startProcessing::$28
|
|
(byte~) startProcessing::$29
|
|
(byte*~) startProcessing::$3
|
|
(byte~) startProcessing::$30
|
|
(word*) startProcessing::$31
|
|
(word*) startProcessing::$32
|
|
(word*) startProcessing::$33
|
|
(word*) startProcessing::$34
|
|
(byte*) startProcessing::$35
|
|
(byte*) startProcessing::$36
|
|
(byte*) startProcessing::$37
|
|
(byte**) startProcessing::$38
|
|
(byte*) startProcessing::$39
|
|
(word~) startProcessing::$4
|
|
(number~) startProcessing::$5
|
|
(byte*~) startProcessing::$6
|
|
(word~) startProcessing::$7
|
|
(number~) startProcessing::$8
|
|
(byte*~) startProcessing::$9
|
|
(label) startProcessing::@1
|
|
(label) startProcessing::@10
|
|
(label) startProcessing::@2
|
|
(label) startProcessing::@3
|
|
(label) startProcessing::@4
|
|
(label) startProcessing::@5
|
|
(label) startProcessing::@8
|
|
(label) startProcessing::@9
|
|
(label) startProcessing::@return
|
|
(struct ProcessingChar) startProcessing::center
|
|
(word) startProcessing::center_dist
|
|
(word) startProcessing::center_dist#0
|
|
(byte) startProcessing::center_x
|
|
(byte) startProcessing::center_x#0
|
|
(byte) startProcessing::center_x#1
|
|
(byte) startProcessing::center_x#2
|
|
(byte) startProcessing::center_x#3
|
|
(byte) startProcessing::center_x#4
|
|
(byte) startProcessing::center_x#5
|
|
(byte) startProcessing::center_x#6
|
|
(byte) startProcessing::center_x#7
|
|
(byte) startProcessing::center_x#8
|
|
(byte) startProcessing::center_x#9
|
|
(byte) startProcessing::center_y
|
|
(byte) startProcessing::center_y#0
|
|
(byte) startProcessing::center_y#1
|
|
(byte) startProcessing::center_y#2
|
|
(byte) startProcessing::center_y#3
|
|
(byte) startProcessing::center_y#4
|
|
(byte) startProcessing::center_y#5
|
|
(byte) startProcessing::center_y#6
|
|
(byte) startProcessing::center_y#7
|
|
(byte) startProcessing::center_y#8
|
|
(byte) startProcessing::center_y#9
|
|
(byte) startProcessing::ch
|
|
(byte) startProcessing::ch#0
|
|
(byte*) startProcessing::chargenData
|
|
(byte*) startProcessing::chargenData#0
|
|
(byte*) startProcessing::chargenData#1
|
|
(byte*) startProcessing::chargenData#2
|
|
(byte) startProcessing::freeIdx
|
|
(byte) startProcessing::freeIdx#0
|
|
(byte) startProcessing::freeIdx#1
|
|
(byte) startProcessing::freeIdx#2
|
|
(byte) startProcessing::freeIdx#3
|
|
(byte) startProcessing::freeIdx#4
|
|
(byte) startProcessing::freeIdx#5
|
|
(byte) startProcessing::freeIdx#6
|
|
(byte) startProcessing::i
|
|
(byte) startProcessing::i#0
|
|
(byte) startProcessing::i#1
|
|
(byte) startProcessing::i#2
|
|
(byte) startProcessing::i#3
|
|
(byte) startProcessing::i#4
|
|
(byte) startProcessing::i1
|
|
(byte) startProcessing::i1#0
|
|
(byte) startProcessing::i1#1
|
|
(byte) startProcessing::i1#2
|
|
(byte*) startProcessing::screenPtr
|
|
(byte*) startProcessing::screenPtr#0
|
|
(byte*) startProcessing::screenPtr#1
|
|
(byte*) startProcessing::screenPtr#2
|
|
(byte*) startProcessing::spriteData
|
|
(byte*) startProcessing::spriteData#0
|
|
(byte*) startProcessing::spriteData#1
|
|
(byte*) startProcessing::spriteData#2
|
|
(byte) startProcessing::spriteIdx
|
|
(byte) startProcessing::spriteIdx#0
|
|
(byte) startProcessing::spriteIdx#1
|
|
(byte) startProcessing::spriteIdx#2
|
|
(byte) startProcessing::spritePtr
|
|
(byte) startProcessing::spritePtr#0
|
|
(word) startProcessing::spriteX
|
|
(word) startProcessing::spriteX#0
|
|
(word) startProcessing::spriteY
|
|
(word) startProcessing::spriteY#0
|
|
|
|
Adding number conversion cast (unumber) 7 in (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (number) 7
|
|
Adding number conversion cast (unumber) $35 in (byte) PROCPORT_RAM_IO#0 ← (number) $35
|
|
Adding number conversion cast (unumber) $31 in (byte) PROCPORT_RAM_CHARROM#0 ← (number) $31
|
|
Adding number conversion cast (unumber) $18 in (byte) BORDER_XPOS_LEFT#0 ← (number) $18
|
|
Adding number conversion cast (unumber) $158 in (word) BORDER_XPOS_RIGHT#0 ← (number) $158
|
|
Adding number conversion cast (unumber) $32 in (byte) BORDER_YPOS_TOP#0 ← (number) $32
|
|
Adding number conversion cast (unumber) $fa in (byte) BORDER_YPOS_BOTTOM#0 ← (number) $fa
|
|
Adding number conversion cast (unumber) $3f8 in (word) SPRITE_PTRS#0 ← (number) $3f8
|
|
Adding number conversion cast (unumber) 1 in (byte) IRQ_RASTER#0 ← (number) 1
|
|
Adding number conversion cast (unumber) $7f in (byte) CIA_INTERRUPT_CLEAR#0 ← (number) $7f
|
|
Adding number conversion cast (unumber) $e in (byte) LIGHT_BLUE#0 ← (number) $e
|
|
Adding number conversion cast (unumber) 0 in (word) mul8u::res#0 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (bool~) mul8u::$0 ← (byte) mul8u::a#3 != (number) 0
|
|
Adding number conversion cast (unumber) 1 in (number~) mul8u::$1 ← (byte) mul8u::a#4 & (number) 1
|
|
Adding number conversion cast (unumber) mul8u::$1 in (number~) mul8u::$1 ← (byte) mul8u::a#4 & (unumber)(number) 1
|
|
Adding number conversion cast (unumber) 0 in (bool~) mul8u::$2 ← (unumber~) mul8u::$1 != (number) 0
|
|
Adding number conversion cast (unumber) 1 in (byte~) mul8u::$5 ← (byte) mul8u::a#5 >> (number) 1
|
|
Adding number conversion cast (unumber) 1 in (word~) mul8u::$6 ← (word) mul8u::mb#2 << (number) 1
|
|
Adding number conversion cast (unumber) 8 in (byte) NUM_PROCESSING#0 ← (number) 8
|
|
Adding number conversion cast (unumber) $ffff in (word) NOT_FOUND#0 ← (number) $ffff
|
|
Adding number conversion cast (unumber) 0 in (byte) STATUS_FREE#0 ← (number) 0
|
|
Adding number conversion cast (unumber) 1 in (byte) STATUS_NEW#0 ← (number) 1
|
|
Adding number conversion cast (unumber) 2 in (byte) STATUS_PROCESSING#0 ← (number) 2
|
|
Adding number conversion cast (unumber) $3e8 in (byte*~) main::$5 ← (byte*) SCREEN#0 + (number) $3e8
|
|
Adding number conversion cast (unumber) 1 in (number~) main::$7 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
Adding number conversion cast (unumber) main::$7 in (number~) main::$7 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1
|
|
Adding number conversion cast (unumber) 0 in *((word*) main::$17 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((word*) main::$18 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((word*) main::$19 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((word*) main::$20 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((byte*) main::$21 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((byte*) main::$22 + (byte~) main::$16) ← (number) 0
|
|
Adding number conversion cast (unumber) $3e7 in (byte*~) main::$4 ← (byte*) SCREEN#0 + (number) $3e7
|
|
Adding number conversion cast (unumber) $3e7 in (byte*~) main::$15 ← (byte*) COLS#0 + (number) $3e7
|
|
Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_x#0 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (byte) getCharToProcess::closest_y#0 ← (number) 0
|
|
Adding number conversion cast (unumber) $28 in (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#3 + (number) $28
|
|
Adding number conversion cast (unumber) $28 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (number) $28
|
|
Adding number conversion cast (unumber) getCharToProcess::$10 in (number~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (unumber)(number) $28
|
|
Adding number conversion cast (unumber) $ff in (byte) startProcessing::freeIdx#0 ← (number) $ff
|
|
Adding number conversion cast (unumber) 1 in (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
Adding number conversion cast (unumber) startProcessing::$23 in (number~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1
|
|
Adding number conversion cast (unumber) $ff in (bool~) startProcessing::$27 ← (byte) startProcessing::freeIdx#2 == (number) $ff
|
|
Adding number conversion cast (unumber) $28 in (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (number) $28
|
|
Adding number conversion cast (unumber) startProcessing::$1 in (number~) startProcessing::$1 ← (word~) startProcessing::$0 * (unumber)(number) $28
|
|
Adding number conversion cast (unumber) $40 in (number~) startProcessing::$5 ← (word~) startProcessing::$4 * (number) $40
|
|
Adding number conversion cast (unumber) startProcessing::$5 in (number~) startProcessing::$5 ← (word~) startProcessing::$4 * (unumber)(number) $40
|
|
Adding number conversion cast (unumber) 8 in (number~) startProcessing::$8 ← (word~) startProcessing::$7 * (number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$8 in (number~) startProcessing::$8 ← (word~) startProcessing::$7 * (unumber)(number) 8
|
|
Adding number conversion cast (unumber) 3 in (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (number) 3
|
|
Adding number conversion cast (unumber) 8 in (number~) startProcessing::$11 ← (word~) startProcessing::$10 * (number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$11 in (number~) startProcessing::$11 ← (word~) startProcessing::$10 * (unumber)(number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$12 in (number~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (unumber~) startProcessing::$11
|
|
Adding number conversion cast (unumber) 4 in (number~) startProcessing::$13 ← (unumber~) startProcessing::$12 << (number) 4
|
|
Adding number conversion cast (unumber) startProcessing::$13 in (number~) startProcessing::$13 ← (unumber~) startProcessing::$12 << (unumber)(number) 4
|
|
Adding number conversion cast (unumber) 8 in (number~) startProcessing::$15 ← (word~) startProcessing::$14 * (number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$15 in (number~) startProcessing::$15 ← (word~) startProcessing::$14 * (unumber)(number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$16 in (number~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (unumber~) startProcessing::$15
|
|
Adding number conversion cast (unumber) 4 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (number) 4
|
|
Adding number conversion cast (unumber) startProcessing::$17 in (number~) startProcessing::$17 ← (unumber~) startProcessing::$16 << (unumber)(number) 4
|
|
Adding number conversion cast (unumber) $40 in (byte*~) startProcessing::$18 ← (byte*) SPRITE_DATA#0 / (number) $40
|
|
Adding number conversion cast (unumber) 8 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (number) 8
|
|
Adding number conversion cast (unumber) startProcessing::$21 in (number~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (unumber)(number) 8
|
|
Adding number conversion cast (unumber) $3c in *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (number) $3c
|
|
Adding number conversion cast (unumber) 8 in (number~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (number) 8
|
|
Adding number conversion cast (unumber) $0 in (number~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (unumber)(number) 8
|
|
Adding number conversion cast (unumber) 4 in (word~) $2 ← (word~) $1 << (number) 4
|
|
Adding number conversion cast (unumber) 4 in (word~) $4 ← (word~) $3 << (number) 4
|
|
Adding number conversion cast (unumber) 8 in (number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (number) 8
|
|
Adding number conversion cast (unumber) $5 in (number~) $5 ← (byte) BORDER_YPOS_TOP#0 - (unumber)(number) 8
|
|
Adding number conversion cast (unumber) 4 in (word~) $7 ← (word~) $6 << (number) 4
|
|
Adding number conversion cast (unumber) 4 in (word~) $9 ← (word~) $8 << (number) 4
|
|
Adding number conversion cast (unumber) 0 in (byte) processChars::numActive#0 ← (number) 0
|
|
Adding number conversion cast (unumber) 1 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (number) 1
|
|
Adding number conversion cast (unumber) processChars::$2 in (number~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (unumber)(number) 1
|
|
Adding number conversion cast (unumber) 1 in (number~) processChars::$4 ← (number) 1 << *((byte*) processChars::$39)
|
|
Adding number conversion cast (unumber) processChars::$4 in (number~) processChars::$4 ← (unumber)(number) 1 << *((byte*) processChars::$39)
|
|
Adding number conversion cast (unumber) 4 in (word~) processChars::$11 ← *((word*) processChars::$42) >> (number) 4
|
|
Adding number conversion cast (unumber) 0 in (bool~) processChars::$63 ← (number) 0 != (byte~) processChars::$12
|
|
Adding number conversion cast (unumber) $ff in (number~) processChars::$13 ← (number) $ff ^ (byte) processChars::bitmask#3
|
|
Adding number conversion cast (unumber) processChars::$13 in (number~) processChars::$13 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#3
|
|
Adding number conversion cast (unumber) 2 in (number~) processChars::$14 ← (byte) processChars::i#4 * (number) 2
|
|
Adding number conversion cast (unumber) processChars::$14 in (number~) processChars::$14 ← (byte) processChars::i#4 * (unumber)(number) 2
|
|
Adding number conversion cast (unumber) 4 in (word~) processChars::$16 ← *((word*) processChars::$47) >> (number) 4
|
|
Adding number conversion cast (unumber) 2 in (number~) processChars::$18 ← (byte) processChars::i#4 * (number) 2
|
|
Adding number conversion cast (unumber) processChars::$18 in (number~) processChars::$18 ← (byte) processChars::i#4 * (unumber)(number) 2
|
|
Adding number conversion cast (unumber) $ff in (number~) processChars::$34 ← (number) $ff ^ (byte) processChars::bitmask#4
|
|
Adding number conversion cast (unumber) processChars::$34 in (number~) processChars::$34 ← (unumber)(number) $ff ^ (byte) processChars::bitmask#4
|
|
Adding number conversion cast (unumber) 8 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (number) 8
|
|
Adding number conversion cast (unumber) processChars::$26 in (number~) processChars::$26 ← (word) processChars::xpos#2 / (unumber)(number) 8
|
|
Adding number conversion cast (unumber) 8 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (number) 8
|
|
Adding number conversion cast (unumber) processChars::$28 in (number~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (unumber)(number) 8
|
|
Adding number conversion cast (unumber) processChars::$29 in (number~) processChars::$29 ← (byte~) processChars::$27 - (unumber~) processChars::$28
|
|
Adding number conversion cast (unumber) 8 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (number) 8
|
|
Adding number conversion cast (unumber) processChars::$30 in (number~) processChars::$30 ← (byte) processChars::ypos#1 / (unumber)(number) 8
|
|
Adding number conversion cast (unumber) 8 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (number) 8
|
|
Adding number conversion cast (unumber) processChars::$32 in (number~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (unumber)(number) 8
|
|
Adding number conversion cast (unumber) processChars::$33 in (number~) processChars::$33 ← (byte~) processChars::$31 - (unumber~) processChars::$32
|
|
Adding number conversion cast (unumber) $3e7 in (byte*~) processChars::$0 ← (byte*) SCREEN#0 + (number) $3e7
|
|
Adding number conversion cast (unumber) $14 in (bool~) initSquareTables::$0 ← (byte) initSquareTables::x#2 < (number) $14
|
|
Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$3 ← (number) $14 - (byte) initSquareTables::x#3
|
|
Adding number conversion cast (unumber) initSquareTables::$3 in (number~) initSquareTables::$3 ← (unumber)(number) $14 - (byte) initSquareTables::x#3
|
|
Adding number conversion cast (unumber) initSquareTables::$4 in (number~) initSquareTables::$4 ← (unumber~) initSquareTables::$3
|
|
Adding number conversion cast (unumber) $14 in (number~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (number) $14
|
|
Adding number conversion cast (unumber) initSquareTables::$1 in (number~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (unumber)(number) $14
|
|
Adding number conversion cast (unumber) initSquareTables::$2 in (number~) initSquareTables::$2 ← (unumber~) initSquareTables::$1
|
|
Adding number conversion cast (unumber) initSquareTables::$5 in (byte) initSquareTables::x#6 ← phi( initSquareTables::@2/(byte) initSquareTables::x#3 initSquareTables::@3/(byte) initSquareTables::x#4 )
|
|
(number~) initSquareTables::$5 ← phi( initSquareTables::@2/(unumber~) initSquareTables::$4 initSquareTables::@3/(unumber~) initSquareTables::$2 )
|
|
Adding number conversion cast (unumber) $c in (bool~) initSquareTables::$8 ← (byte) initSquareTables::y#2 < (number) $c
|
|
Adding number conversion cast (unumber) $c in (number~) initSquareTables::$11 ← (number) $c - (byte) initSquareTables::y#3
|
|
Adding number conversion cast (unumber) initSquareTables::$11 in (number~) initSquareTables::$11 ← (unumber)(number) $c - (byte) initSquareTables::y#3
|
|
Adding number conversion cast (unumber) initSquareTables::$12 in (number~) initSquareTables::$12 ← (unumber~) initSquareTables::$11
|
|
Adding number conversion cast (unumber) $c in (number~) initSquareTables::$9 ← (byte) initSquareTables::y#4 - (number) $c
|
|
Adding number conversion cast (unumber) initSquareTables::$9 in (number~) initSquareTables::$9 ← (byte) initSquareTables::y#4 - (unumber)(number) $c
|
|
Adding number conversion cast (unumber) initSquareTables::$10 in (number~) initSquareTables::$10 ← (unumber~) initSquareTables::$9
|
|
Adding number conversion cast (unumber) initSquareTables::$13 in (byte) initSquareTables::y#6 ← phi( initSquareTables::@10/(byte) initSquareTables::y#4 initSquareTables::@9/(byte) initSquareTables::y#3 )
|
|
(number~) initSquareTables::$13 ← phi( initSquareTables::@9/(unumber~) initSquareTables::$12 initSquareTables::@10/(unumber~) initSquareTables::$10 )
|
|
Adding number conversion cast (unumber) 0 in *((byte*) initSprites::sp#2) ← (number) 0
|
|
Adding number conversion cast (unumber) $40 in (number~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (number) $40
|
|
Adding number conversion cast (unumber) initSprites::$0 in (number~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (unumber)(number) $40
|
|
Adding number conversion cast (unumber) 0 in *((byte*) SPRITES_MC#0) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((byte*) SPRITES_EXPAND_X#0) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in *((byte*) SPRITES_EXPAND_Y#0) ← (number) 0
|
|
Adding number conversion cast (unumber) $100 in (bool~) setupRasterIrq::$0 ← (word) setupRasterIrq::raster#1 < (number) $100
|
|
Adding number conversion cast (unumber) $7f in *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (number) $7f
|
|
Adding number conversion cast (unumber) $80 in *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) | (number) $80
|
|
Adding number conversion cast (unumber) $30 in (byte) RASTER_IRQ_TOP#0 ← (number) $30
|
|
Adding number conversion cast (unumber) $ff in (byte) RASTER_IRQ_MIDDLE#0 ← (number) $ff
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast (byte*) PROCPORT_DDR#0 ← (byte*)(number) 0
|
|
Inlining cast (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (unumber)(number) 7
|
|
Inlining cast (byte*) PROCPORT#0 ← (byte*)(number) 1
|
|
Inlining cast (byte) PROCPORT_RAM_IO#0 ← (unumber)(number) $35
|
|
Inlining cast (byte) PROCPORT_RAM_CHARROM#0 ← (unumber)(number) $31
|
|
Inlining cast (byte*) CHARGEN#0 ← (byte*)(number) $d000
|
|
Inlining cast (byte) BORDER_XPOS_LEFT#0 ← (unumber)(number) $18
|
|
Inlining cast (word) BORDER_XPOS_RIGHT#0 ← (unumber)(number) $158
|
|
Inlining cast (byte) BORDER_YPOS_TOP#0 ← (unumber)(number) $32
|
|
Inlining cast (byte) BORDER_YPOS_BOTTOM#0 ← (unumber)(number) $fa
|
|
Inlining cast (word) SPRITE_PTRS#0 ← (unumber)(number) $3f8
|
|
Inlining cast (byte*) SPRITES_XPOS#0 ← (byte*)(number) $d000
|
|
Inlining cast (byte*) SPRITES_YPOS#0 ← (byte*)(number) $d001
|
|
Inlining cast (byte*) SPRITES_XMSB#0 ← (byte*)(number) $d010
|
|
Inlining cast (byte*) RASTER#0 ← (byte*)(number) $d012
|
|
Inlining cast (byte*) SPRITES_ENABLE#0 ← (byte*)(number) $d015
|
|
Inlining cast (byte*) SPRITES_EXPAND_Y#0 ← (byte*)(number) $d017
|
|
Inlining cast (byte*) SPRITES_MC#0 ← (byte*)(number) $d01c
|
|
Inlining cast (byte*) SPRITES_EXPAND_X#0 ← (byte*)(number) $d01d
|
|
Inlining cast (byte*) SPRITES_COLS#0 ← (byte*)(number) $d027
|
|
Inlining cast (byte*) VIC_CONTROL#0 ← (byte*)(number) $d011
|
|
Inlining cast (byte*) IRQ_STATUS#0 ← (byte*)(number) $d019
|
|
Inlining cast (byte*) IRQ_ENABLE#0 ← (byte*)(number) $d01a
|
|
Inlining cast (byte) IRQ_RASTER#0 ← (unumber)(number) 1
|
|
Inlining cast (byte*) COLS#0 ← (byte*)(number) $d800
|
|
Inlining cast (byte*) CIA1_INTERRUPT#0 ← (byte*)(number) $dc0d
|
|
Inlining cast (byte) CIA_INTERRUPT_CLEAR#0 ← (unumber)(number) $7f
|
|
Inlining cast (void()**) HARDWARE_IRQ#0 ← (void()**)(number) $fffe
|
|
Inlining cast (byte) LIGHT_BLUE#0 ← (unumber)(number) $e
|
|
Inlining cast (word) mul8u::res#0 ← (unumber)(number) 0
|
|
Inlining cast (byte*) SCREEN#0 ← (byte*)(number) $400
|
|
Inlining cast (byte*) SPRITE_DATA#0 ← (byte*)(number) $2000
|
|
Inlining cast (word*) VXSIN#0 ← (word*)(number) $2200
|
|
Inlining cast (word*) VYSIN#0 ← (word*)(number) $2280
|
|
Inlining cast (byte) NUM_PROCESSING#0 ← (unumber)(number) 8
|
|
Inlining cast (word) NOT_FOUND#0 ← (unumber)(number) $ffff
|
|
Inlining cast (byte) STATUS_FREE#0 ← (unumber)(number) 0
|
|
Inlining cast (byte) STATUS_NEW#0 ← (unumber)(number) 1
|
|
Inlining cast (byte) STATUS_PROCESSING#0 ← (unumber)(number) 2
|
|
Inlining cast *((word*) main::$17 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((word*) main::$18 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((word*) main::$19 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((word*) main::$20 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((byte*) main::$21 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((byte*) main::$22 + (byte~) main::$16) ← (unumber)(number) 0
|
|
Inlining cast *((byte**) main::$24 + (byte~) main::$16) ← (byte*)(number) 0
|
|
Inlining cast (byte) getCharToProcess::closest_x#0 ← (unumber)(number) 0
|
|
Inlining cast (byte) getCharToProcess::closest_y#0 ← (unumber)(number) 0
|
|
Inlining cast (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::closest_y#3
|
|
Inlining cast (byte) startProcessing::freeIdx#0 ← (unumber)(number) $ff
|
|
Inlining cast (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#1
|
|
Inlining cast (word~) startProcessing::$4 ← (word)(byte) startProcessing::spriteIdx#0
|
|
Inlining cast (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0
|
|
Inlining cast (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#2
|
|
Inlining cast (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#2
|
|
Inlining cast (byte~) startProcessing::$19 ← (byte)(byte*~) startProcessing::$18
|
|
Inlining cast (word~) startProcessing::$22 ← (word)(unumber~) startProcessing::$21
|
|
Inlining cast *((word*) startProcessing::$34 + (byte~) startProcessing::$30) ← (unumber)(number) $3c
|
|
Inlining cast (word~) $1 ← (word)(unumber~) $0
|
|
Inlining cast (word~) $3 ← (word)(word) BORDER_XPOS_RIGHT#0
|
|
Inlining cast (word~) $6 ← (word)(unumber~) $5
|
|
Inlining cast (word~) $8 ← (word)(byte) BORDER_YPOS_BOTTOM#0
|
|
Inlining cast (byte) processChars::numActive#0 ← (unumber)(number) 0
|
|
Inlining cast (byte~) processChars::$15 ← (byte)(word) processChars::xpos#1
|
|
Inlining cast (byte~) processChars::$17 ← (byte)(word~) processChars::$16
|
|
Inlining cast (byte~) processChars::$27 ← (byte)(unumber~) processChars::$26
|
|
Inlining cast (byte~) processChars::$31 ← (byte)(unumber~) processChars::$30
|
|
Inlining cast *((byte*) initSprites::sp#2) ← (unumber)(number) 0
|
|
Inlining cast *((byte*) SPRITES_MC#0) ← (unumber)(number) 0
|
|
Inlining cast *((byte*) SPRITES_EXPAND_X#0) ← (unumber)(number) 0
|
|
Inlining cast *((byte*) SPRITES_EXPAND_Y#0) ← (unumber)(number) 0
|
|
Inlining cast (byte) RASTER_IRQ_TOP#0 ← (unumber)(number) $30
|
|
Inlining cast (byte) RASTER_IRQ_MIDDLE#0 ← (unumber)(number) $ff
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 0
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant pointer cast (byte*) 1
|
|
Simplifying constant integer cast $35
|
|
Simplifying constant integer cast $31
|
|
Simplifying constant pointer cast (byte*) 53248
|
|
Simplifying constant integer cast $18
|
|
Simplifying constant integer cast $158
|
|
Simplifying constant integer cast $32
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $3f8
|
|
Simplifying constant pointer cast (byte*) 53248
|
|
Simplifying constant pointer cast (byte*) 53249
|
|
Simplifying constant pointer cast (byte*) 53264
|
|
Simplifying constant pointer cast (byte*) 53266
|
|
Simplifying constant pointer cast (byte*) 53269
|
|
Simplifying constant pointer cast (byte*) 53271
|
|
Simplifying constant pointer cast (byte*) 53276
|
|
Simplifying constant pointer cast (byte*) 53277
|
|
Simplifying constant pointer cast (byte*) 53287
|
|
Simplifying constant pointer cast (byte*) 53265
|
|
Simplifying constant pointer cast (byte*) 53273
|
|
Simplifying constant pointer cast (byte*) 53274
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant pointer cast (byte*) 55296
|
|
Simplifying constant pointer cast (byte*) 56333
|
|
Simplifying constant integer cast $7f
|
|
Simplifying constant pointer cast (void()**) 65534
|
|
Simplifying constant integer cast $e
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant pointer cast (byte*) 8192
|
|
Simplifying constant pointer cast (word*) 8704
|
|
Simplifying constant pointer cast (word*) 8832
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $ffff
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $3e8
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant pointer cast (byte*) 0
|
|
Simplifying constant integer cast $3e7
|
|
Simplifying constant integer cast $3e7
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $3c
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast (word) BORDER_XPOS_RIGHT#0
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $3e7
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $c
|
|
Simplifying constant integer cast $c
|
|
Simplifying constant integer cast $c
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $40
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $100
|
|
Simplifying constant integer cast $7f
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $30
|
|
Simplifying constant integer cast $ff
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) $35
|
|
Finalized unsigned number type (byte) $31
|
|
Finalized unsigned number type (byte) $18
|
|
Finalized unsigned number type (word) $158
|
|
Finalized unsigned number type (byte) $32
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (word) $3f8
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $7f
|
|
Finalized unsigned number type (byte) $e
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (word) $ffff
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (word) $3e8
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (word) $3e7
|
|
Finalized unsigned number type (word) $3e7
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $3c
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (word) $3e7
|
|
Finalized unsigned number type (byte) $14
|
|
Finalized unsigned number type (byte) $14
|
|
Finalized unsigned number type (byte) $14
|
|
Finalized unsigned number type (byte) $c
|
|
Finalized unsigned number type (byte) $c
|
|
Finalized unsigned number type (byte) $c
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $40
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (word) $100
|
|
Finalized unsigned number type (byte) $7f
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) $30
|
|
Finalized unsigned number type (byte) $ff
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in (unumber~) mul8u::$1 ← (byte) mul8u::a#4 & (byte) 1
|
|
Inferred type updated to byte in (unumber~) main::$7 ← (byte) NUM_PROCESSING#0 - (byte) 1
|
|
Inferred type updated to word in (unumber~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28
|
|
Inferred type updated to byte in (unumber~) startProcessing::$23 ← (byte) NUM_PROCESSING#0 - (byte) 1
|
|
Inferred type updated to word in (unumber~) startProcessing::$1 ← (word~) startProcessing::$0 * (byte) $28
|
|
Inferred type updated to word in (unumber~) startProcessing::$5 ← (word~) startProcessing::$4 * (byte) $40
|
|
Inferred type updated to word in (unumber~) startProcessing::$8 ← (word~) startProcessing::$7 * (byte) 8
|
|
Inferred type updated to word in (unumber~) startProcessing::$11 ← (word~) startProcessing::$10 * (byte) 8
|
|
Inferred type updated to word in (unumber~) startProcessing::$12 ← (byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11
|
|
Inferred type updated to word in (unumber~) startProcessing::$13 ← (word~) startProcessing::$12 << (byte) 4
|
|
Inferred type updated to word in (unumber~) startProcessing::$15 ← (word~) startProcessing::$14 * (byte) 8
|
|
Inferred type updated to word in (unumber~) startProcessing::$16 ← (byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15
|
|
Inferred type updated to word in (unumber~) startProcessing::$17 ← (word~) startProcessing::$16 << (byte) 4
|
|
Inferred type updated to byte in (unumber~) startProcessing::$21 ← (byte) startProcessing::spriteIdx#1 * (byte) 8
|
|
Inferred type updated to byte in (unumber~) $0 ← (byte) BORDER_XPOS_LEFT#0 - (byte) 8
|
|
Inferred type updated to byte in (unumber~) $5 ← (byte) BORDER_YPOS_TOP#0 - (byte) 8
|
|
Inferred type updated to byte in (unumber~) processChars::$2 ← (byte) NUM_PROCESSING#0 - (byte) 1
|
|
Inferred type updated to byte in (unumber~) processChars::$4 ← (byte) 1 << *((byte*) processChars::$39)
|
|
Inferred type updated to byte in (unumber~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#3
|
|
Inferred type updated to byte in (unumber~) processChars::$14 ← (byte) processChars::i#4 * (byte) 2
|
|
Inferred type updated to byte in (unumber~) processChars::$18 ← (byte) processChars::i#4 * (byte) 2
|
|
Inferred type updated to byte in (unumber~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#4
|
|
Inferred type updated to word in (unumber~) processChars::$26 ← (word) processChars::xpos#2 / (byte) 8
|
|
Inferred type updated to byte in (unumber~) processChars::$28 ← (byte) BORDER_XPOS_LEFT#0 / (byte) 8
|
|
Inferred type updated to byte in (unumber~) processChars::$29 ← (byte~) processChars::$27 - (byte~) processChars::$28
|
|
Inferred type updated to byte in (unumber~) processChars::$30 ← (byte) processChars::ypos#1 / (byte) 8
|
|
Inferred type updated to byte in (unumber~) processChars::$32 ← (byte) BORDER_YPOS_TOP#0 / (byte) 8
|
|
Inferred type updated to byte in (unumber~) processChars::$33 ← (byte~) processChars::$31 - (byte~) processChars::$32
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$3 ← (byte) $14 - (byte) initSquareTables::x#3
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$4 ← (byte~) initSquareTables::$3
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$1 ← (byte) initSquareTables::x#4 - (byte) $14
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$2 ← (byte~) initSquareTables::$1
|
|
Inferred type updated to byte for (unumber~) initSquareTables::$5
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$11 ← (byte) $c - (byte) initSquareTables::y#3
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$12 ← (byte~) initSquareTables::$11
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$9 ← (byte) initSquareTables::y#4 - (byte) $c
|
|
Inferred type updated to byte in (unumber~) initSquareTables::$10 ← (byte~) initSquareTables::$9
|
|
Inferred type updated to byte for (unumber~) initSquareTables::$13
|
|
Inferred type updated to byte in (unumber~) initSprites::$0 ← (byte) NUM_PROCESSING#0 * (byte) $40
|
|
Inversing boolean not [38] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte) 0 from [37] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte) 0
|
|
Inversing boolean not [114] (bool~) main::$11 ← (word) main::center_dist#0 != (word) NOT_FOUND#0 from [113] (bool~) main::$10 ← (word) main::center_dist#0 == (word) NOT_FOUND#0
|
|
Inversing boolean not [137] (bool~) getCharToProcess::$3 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) == (byte) ' ' from [136] (bool~) getCharToProcess::$2 ← *((byte*) getCharToProcess::screen_line#2 + (byte) getCharToProcess::x#2) != (byte) ' '
|
|
Inversing boolean not [149] (bool~) getCharToProcess::$6 ← (word) getCharToProcess::dist#0 >= (word) getCharToProcess::closest_dist#2 from [148] (bool~) getCharToProcess::$5 ← (word) getCharToProcess::dist#0 < (word) getCharToProcess::closest_dist#2
|
|
Inversing boolean not [162] (bool~) getCharToProcess::$1 ← (word) getCharToProcess::closest_dist#3 == (word) NOT_FOUND#0 from [161] (bool~) getCharToProcess::$0 ← (word) getCharToProcess::closest_dist#3 != (word) NOT_FOUND#0
|
|
Inversing boolean not [188] (bool~) startProcessing::$25 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) != (byte) STATUS_FREE#0 from [187] (bool~) startProcessing::$24 ← *((byte*) startProcessing::$39 + (byte~) startProcessing::$29) == (byte) STATUS_FREE#0
|
|
Inversing boolean not [290] (bool~) processChars::$6 ← *((byte*) processChars::$40) == (byte) STATUS_FREE#0 from [289] (bool~) processChars::$5 ← *((byte*) processChars::$40) != (byte) STATUS_FREE#0
|
|
Inversing boolean not [299] (bool~) processChars::$8 ← *((byte*) processChars::$41) != (byte) STATUS_NEW#0 from [298] (bool~) processChars::$7 ← *((byte*) processChars::$41) == (byte) STATUS_NEW#0
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias (word) mul8u::mb#0 = (byte) mul8u::b#2
|
|
Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7
|
|
Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5
|
|
Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1
|
|
Alias (byte) mul8u::a#0 = (byte~) mul8u::$5
|
|
Alias (word) mul8u::mb#1 = (word~) mul8u::$6
|
|
Alias (word) mul8u::res#1 = (word~) mul8u::$4
|
|
Alias (void()*) setupRasterIrq::irqRoutine#0 = (void()*~) main::$2
|
|
Alias (byte) getCharToProcess::return_x#0 = (byte) getCharToProcess::return_x#3
|
|
Alias (byte) getCharToProcess::return_y#0 = (byte) getCharToProcess::return_y#3
|
|
Alias (word) getCharToProcess::return_dist#0 = (word) getCharToProcess::return_dist#3
|
|
Alias (byte) main::center_x#0 = (byte) main::$9_x (byte) main::center_x#1
|
|
Alias (byte) main::center_y#0 = (byte) main::$9_y (byte) main::center_y#1
|
|
Alias (word) main::center_dist#0 = (word) main::$9_dist (word) main::center_dist#1
|
|
Alias (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#4 (byte) getCharToProcess::x#5 (byte) getCharToProcess::closest_x#1
|
|
Alias (byte) getCharToProcess::y#2 = (byte) getCharToProcess::y#5 (byte) getCharToProcess::y#3 (byte) getCharToProcess::closest_y#1
|
|
Alias (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#5
|
|
Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#6 (byte*) getCharToProcess::screen_line#7
|
|
Alias (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#8
|
|
Alias (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#8
|
|
Alias (word) getCharToProcess::dist#0 = (word~) getCharToProcess::$4 (word) getCharToProcess::dist#1 (word) getCharToProcess::closest_dist#1
|
|
Alias (byte*) getCharToProcess::screen_line#3 = (byte*) getCharToProcess::screen_line#5
|
|
Alias (byte) getCharToProcess::y#4 = (byte) getCharToProcess::y#6
|
|
Alias (word) getCharToProcess::closest_dist#3 = (word) getCharToProcess::closest_dist#6 (word) getCharToProcess::closest_dist#9 (word) getCharToProcess::closest_dist#7
|
|
Alias (byte) getCharToProcess::closest_x#3 = (byte) getCharToProcess::closest_x#5 (byte) getCharToProcess::closest_x#6 (byte) getCharToProcess::closest_x#4
|
|
Alias (byte) getCharToProcess::closest_y#3 = (byte) getCharToProcess::closest_y#5 (byte) getCharToProcess::closest_y#6 (byte) getCharToProcess::closest_y#4
|
|
Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#2 (byte) getCharToProcess::return_x#4 (byte) getCharToProcess::return_x#2
|
|
Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#2 (byte) getCharToProcess::return_y#4 (byte) getCharToProcess::return_y#2
|
|
Alias (word) getCharToProcess::return_dist#1 = (word) getCharToProcess::closest_dist#4 (word) getCharToProcess::return_dist#4 (word) getCharToProcess::return_dist#2
|
|
Alias (byte) startProcessing::i#2 = (byte) startProcessing::i#3 (byte) startProcessing::i#4 (byte) startProcessing::freeIdx#1
|
|
Alias (byte) startProcessing::freeIdx#4 = (byte) startProcessing::freeIdx#5
|
|
Alias (byte) startProcessing::center_y#5 = (byte) startProcessing::center_y#7 (byte) startProcessing::center_y#6
|
|
Alias (byte) startProcessing::center_x#5 = (byte) startProcessing::center_x#7 (byte) startProcessing::center_x#6
|
|
Alias (byte) startProcessing::freeIdx#2 = (byte) startProcessing::freeIdx#3 (byte) startProcessing::spriteIdx#0
|
|
Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#3
|
|
Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#3
|
|
Alias (byte*) startProcessing::screenPtr#0 = (byte*~) startProcessing::$3
|
|
Alias (byte*) startProcessing::spriteData#0 = (byte*~) startProcessing::$6
|
|
Alias (byte*) startProcessing::chargenData#0 = (byte*~) startProcessing::$9
|
|
Alias (byte) startProcessing::center_x#2 = (byte) startProcessing::center_x#4
|
|
Alias (byte) startProcessing::center_y#2 = (byte) startProcessing::center_y#4
|
|
Alias (byte) startProcessing::spriteIdx#1 = (byte) startProcessing::spriteIdx#2
|
|
Alias (byte*) startProcessing::screenPtr#1 = (byte*) startProcessing::screenPtr#2
|
|
Alias (word) startProcessing::spriteX#0 = (word~) startProcessing::$13
|
|
Alias (word) startProcessing::spriteY#0 = (word~) startProcessing::$17
|
|
Alias (byte) startProcessing::spritePtr#0 = (byte~) startProcessing::$20
|
|
Alias (word) XPOS_LEFTMOST#0 = (word~) $2
|
|
Alias (word) BORDER_XPOS_RIGHT#0 = (word~) $3
|
|
Alias (word) XPOS_RIGHTMOST#0 = (word~) $4
|
|
Alias (word) YPOS_TOPMOST#0 = (word~) $7
|
|
Alias (word) YPOS_BOTTOMMOST#0 = (word~) $9
|
|
Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*~) processChars::$3 (struct ProcessingSprite*) processChars::processing#1 (struct ProcessingSprite*) processChars::processing#3
|
|
Alias (byte) processChars::bitmask#0 = (byte~) processChars::$4 (byte) processChars::bitmask#5 (byte) processChars::bitmask#1
|
|
Alias (byte) processChars::i#11 = (byte) processChars::i#2 (byte) processChars::i#12
|
|
Alias (byte) processChars::numActive#12 = (byte) processChars::numActive#7 (byte) processChars::numActive#13
|
|
Alias (word) processChars::xpos#0 = (word~) processChars::$11 (word) processChars::xpos#3 (word) processChars::xpos#4
|
|
Alias (byte) processChars::bitmask#2 = (byte) processChars::bitmask#6 (byte) processChars::bitmask#3
|
|
Alias (byte) processChars::i#6 = (byte) processChars::i#8 (byte) processChars::i#7
|
|
Alias (struct ProcessingSprite*) processChars::processing#2 = (struct ProcessingSprite*) processChars::processing#7 (struct ProcessingSprite*) processChars::processing#8
|
|
Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#9 (byte) processChars::numActive#11
|
|
Alias (byte) processChars::ypos#0 = (byte~) processChars::$17 (byte) processChars::ypos#1
|
|
Alias (struct ProcessingSprite*) processChars::processing#4 = (struct ProcessingSprite*) processChars::processing#5 (struct ProcessingSprite*) processChars::processing#6
|
|
Alias (byte) processChars::bitmask#4 = (byte) processChars::bitmask#7
|
|
Alias (byte) processChars::numActive#4 = (byte) processChars::numActive#5 (byte) processChars::numActive#8
|
|
Alias (byte) processChars::i#10 = (byte) processChars::i#4 (byte) processChars::i#9
|
|
Alias (word) processChars::xpos#1 = (word) processChars::xpos#2
|
|
Alias (byte) processChars::xchar#0 = (byte~) processChars::$29
|
|
Alias (byte) processChars::ychar#0 = (byte~) processChars::$33
|
|
Alias (byte) processChars::numActive#3 = (byte) processChars::numActive#6
|
|
Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#3 (byte) initSquareTables::x#4
|
|
Alias (byte~) initSquareTables::$4 = (byte~) initSquareTables::$3
|
|
Alias (byte~) initSquareTables::$2 = (byte~) initSquareTables::$1
|
|
Alias (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$5
|
|
Alias (word) mul8u::return#2 = (word) mul8u::return#5
|
|
Alias (byte) initSquareTables::x#5 = (byte) initSquareTables::x#6
|
|
Alias (byte) initSquareTables::y#2 = (byte) initSquareTables::y#3 (byte) initSquareTables::y#4
|
|
Alias (byte~) initSquareTables::$12 = (byte~) initSquareTables::$11
|
|
Alias (byte~) initSquareTables::$10 = (byte~) initSquareTables::$9
|
|
Alias (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$13
|
|
Alias (word) mul8u::return#3 = (word) mul8u::return#6
|
|
Alias (byte) initSquareTables::y#5 = (byte) initSquareTables::y#6
|
|
Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#3 (word) setupRasterIrq::raster#4
|
|
Alias (void()*) setupRasterIrq::irqRoutine#2 = (void()*) setupRasterIrq::irqRoutine#4 (void()*) setupRasterIrq::irqRoutine#3
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2
|
|
Alias candidate removed (solo) (byte) getCharToProcess::x#3 =
|
|
Alias candidate removed (solo) (byte) getCharToProcess::y#4 =
|
|
Alias (byte) mul8u::a#3 = (byte) mul8u::a#5
|
|
Alias (word) mul8u::mb#2 = (word) mul8u::mb#3
|
|
Alias (byte*) getCharToProcess::screen_line#2 = (byte*) getCharToProcess::screen_line#3
|
|
Alias (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#3
|
|
Alias (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#3
|
|
Alias (word) getCharToProcess::return_dist#1 = (word) getCharToProcess::closest_dist#3
|
|
Alias (byte) startProcessing::center_y#1 = (byte) startProcessing::center_y#5
|
|
Alias (byte) startProcessing::center_x#1 = (byte) startProcessing::center_x#5
|
|
Alias (struct ProcessingSprite*) processChars::processing#0 = (struct ProcessingSprite*) processChars::processing#2 (struct ProcessingSprite*) processChars::processing#4
|
|
Alias (byte) processChars::bitmask#0 = (byte) processChars::bitmask#2 (byte) processChars::bitmask#4
|
|
Alias (byte) processChars::i#10 = (byte) processChars::i#6 (byte) processChars::i#11 (byte) processChars::i#5
|
|
Alias (byte) processChars::numActive#10 = (byte) processChars::numActive#12 (byte) processChars::numActive#4 (byte) processChars::numActive#2
|
|
Alias (word) processChars::xpos#0 = (word) processChars::xpos#1
|
|
Alias (byte) initSquareTables::x#2 = (byte) initSquareTables::x#5
|
|
Alias (byte) initSquareTables::y#2 = (byte) initSquareTables::y#5
|
|
Alias (word) setupRasterIrq::raster#1 = (word) setupRasterIrq::raster#2
|
|
Alias (void()*) setupRasterIrq::irqRoutine#1 = (void()*) setupRasterIrq::irqRoutine#2
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2
|
|
Alias candidate removed (solo) (byte) getCharToProcess::x#3 =
|
|
Alias candidate removed (solo) (byte) getCharToProcess::y#4 =
|
|
Alias (byte) processChars::i#10 = (byte) processChars::i#3
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::x#2
|
|
Alias candidate removed (phi-usage) (byte) getCharToProcess::y#2
|
|
Alias candidate removed (solo) (byte) getCharToProcess::x#3 =
|
|
Alias candidate removed (solo) (byte) getCharToProcess::y#4 =
|
|
Self Phi Eliminated (byte*) getCharToProcess::screen_line#2
|
|
Self Phi Eliminated (byte) startProcessing::freeIdx#4
|
|
Self Phi Eliminated (byte) startProcessing::center_y#1
|
|
Self Phi Eliminated (byte) startProcessing::center_x#1
|
|
Self Phi Eliminated (byte) startProcessing::center_x#2
|
|
Self Phi Eliminated (byte) startProcessing::center_y#2
|
|
Self Phi Eliminated (byte) startProcessing::spriteIdx#1
|
|
Self Phi Eliminated (byte*) startProcessing::screenPtr#1
|
|
Successful SSA optimization Pass2SelfPhiElimination
|
|
Identical Phi Values (byte*) getCharToProcess::screen_line#2 (byte*) getCharToProcess::screen_line#4
|
|
Identical Phi Values (byte) getCharToProcess::x#3 (byte) getCharToProcess::x#2
|
|
Identical Phi Values (byte) getCharToProcess::y#4 (byte) getCharToProcess::y#2
|
|
Identical Phi Values (byte) startProcessing::center_y#9 (byte) startProcessing::center_y#0
|
|
Identical Phi Values (byte) startProcessing::center_x#9 (byte) startProcessing::center_x#0
|
|
Identical Phi Values (byte) startProcessing::freeIdx#4 (byte) startProcessing::freeIdx#6
|
|
Identical Phi Values (byte) startProcessing::center_y#1 (byte) startProcessing::center_y#8
|
|
Identical Phi Values (byte) startProcessing::center_x#1 (byte) startProcessing::center_x#8
|
|
Identical Phi Values (byte) startProcessing::center_x#2 (byte) startProcessing::center_x#1
|
|
Identical Phi Values (byte) startProcessing::center_y#2 (byte) startProcessing::center_y#1
|
|
Identical Phi Values (byte) startProcessing::spriteIdx#1 (byte) startProcessing::freeIdx#2
|
|
Identical Phi Values (byte*) startProcessing::screenPtr#1 (byte*) startProcessing::screenPtr#0
|
|
Identical Phi Values (word) setupRasterIrq::raster#1 (word) setupRasterIrq::raster#0
|
|
Identical Phi Values (void()*) setupRasterIrq::irqRoutine#1 (void()*) setupRasterIrq::irqRoutine#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identified duplicate assignment right side [332] (byte~) processChars::$18 ← (byte) processChars::i#10 * (byte) 2
|
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
Simple Condition (bool~) mul8u::$0 [34] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
|
|
Simple Condition (bool~) mul8u::$3 [39] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@4
|
|
Simple Condition (bool~) main::$6 [73] if((byte*) main::src#1!=(byte*~) main::$5) goto main::@1
|
|
Simple Condition (bool~) main::$8 [96] if((byte) main::i#1!=rangelast(0,main::$7)) goto main::@3
|
|
Simple Condition (bool~) main::$11 [115] if((word) main::center_dist#0!=(word) NOT_FOUND#0) goto main::@6
|
|
Simple Condition (bool~) getCharToProcess::$3 [138] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@5
|
|
Simple Condition (bool~) getCharToProcess::$7 [142] if((byte) getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4
|
|
Simple Condition (bool~) getCharToProcess::$6 [150] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@5
|
|
Simple Condition (bool~) getCharToProcess::$8 [159] if((byte) getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3
|
|
Simple Condition (bool~) getCharToProcess::$1 [163] if((word) getCharToProcess::return_dist#1==(word) NOT_FOUND#0) goto getCharToProcess::@1
|
|
Simple Condition (bool~) startProcessing::$25 [189] if(*((byte*) startProcessing::$39 + (byte~) startProcessing::$29)!=(byte) STATUS_FREE#0) goto startProcessing::@3
|
|
Simple Condition (bool~) startProcessing::$26 [193] if((byte) startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2
|
|
Simple Condition (bool~) startProcessing::$27 [198] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@1
|
|
Simple Condition (bool~) startProcessing::$28 [224] if((byte) startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9
|
|
Simple Condition (bool~) processChars::$6 [291] if(*((byte*) processChars::$40)==(byte) STATUS_FREE#0) goto processChars::@2
|
|
Simple Condition (bool~) processChars::$35 [295] if((byte) processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1
|
|
Simple Condition (bool~) processChars::$8 [300] if(*((byte*) processChars::$41)!=(byte) STATUS_NEW#0) goto processChars::@3
|
|
Simple Condition (bool~) processChars::$63 [307] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4
|
|
Simple Condition (bool~) initSquareTables::$0 [390] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
|
|
Simple Condition (bool~) initSquareTables::$7 [409] if((byte) initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1
|
|
Simple Condition (bool~) initSquareTables::$8 [413] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@9
|
|
Simple Condition (bool~) initSquareTables::$15 [432] if((byte) initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8
|
|
Simple Condition (bool~) initSprites::$2 [441] if((byte*) initSprites::sp#1<(byte*~) initSprites::$1) goto initSprites::@1
|
|
Simple Condition (bool~) initSprites::$3 [447] if((byte) initSprites::i#1!=rangelast(0,7)) goto initSprites::@3
|
|
Simple Condition (bool~) setupRasterIrq::$0 [458] if((word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1
|
|
Simple Condition (bool~) irqTop::$1 [475] if((byte) irqTop::i#1!=rangelast(0,4)) goto irqTop::@1
|
|
Simple Condition (bool~) irqTop::$2 [480] if((byte) irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3
|
|
Simple Condition (bool~) irqBottom::$2 [491] if((byte) irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Rewriting || if()-condition to two if()s [344] (bool~) processChars::$25 ← (bool~) processChars::$23 || (bool~) processChars::$24
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Rewriting || if()-condition to two if()s [341] (bool~) processChars::$23 ← (bool~) processChars::$21 || (bool~) processChars::$22
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Rewriting || if()-condition to two if()s [338] (bool~) processChars::$21 ← (bool~) processChars::$19 || (bool~) processChars::$20
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Constant right-side identified [57] (byte[$3e8]) SCREEN_COPY#0 ← { fill( $3e8, 0) }
|
|
Constant right-side identified [98] (void()*) setupRasterIrq::irqRoutine#0 ← & interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
Constant right-side identified [385] (word[$28]) SQUARES_X#0 ← { fill( $28, 0) }
|
|
Constant right-side identified [386] (word[$19]) SQUARES_Y#0 ← { fill( $19, 0) }
|
|
Constant right-side identified [482] (void()*~) irqTop::$0 ← & interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
Constant right-side identified [494] (void()*~) irqBottom::$1 ← & interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const byte*) PROCPORT_DDR#0 = (byte*) 0
|
|
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
|
Constant (const byte*) PROCPORT#0 = (byte*) 1
|
|
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
|
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
|
Constant (const byte*) CHARGEN#0 = (byte*) 53248
|
|
Constant (const byte) BORDER_XPOS_LEFT#0 = $18
|
|
Constant (const word) BORDER_XPOS_RIGHT#0 = $158
|
|
Constant (const byte) BORDER_YPOS_TOP#0 = $32
|
|
Constant (const byte) BORDER_YPOS_BOTTOM#0 = $fa
|
|
Constant (const word) SPRITE_PTRS#0 = $3f8
|
|
Constant (const byte*) SPRITES_XPOS#0 = (byte*) 53248
|
|
Constant (const byte*) SPRITES_YPOS#0 = (byte*) 53249
|
|
Constant (const byte*) SPRITES_XMSB#0 = (byte*) 53264
|
|
Constant (const byte*) RASTER#0 = (byte*) 53266
|
|
Constant (const byte*) SPRITES_ENABLE#0 = (byte*) 53269
|
|
Constant (const byte*) SPRITES_EXPAND_Y#0 = (byte*) 53271
|
|
Constant (const byte*) SPRITES_MC#0 = (byte*) 53276
|
|
Constant (const byte*) SPRITES_EXPAND_X#0 = (byte*) 53277
|
|
Constant (const byte*) SPRITES_COLS#0 = (byte*) 53287
|
|
Constant (const byte*) VIC_CONTROL#0 = (byte*) 53265
|
|
Constant (const byte*) IRQ_STATUS#0 = (byte*) 53273
|
|
Constant (const byte*) IRQ_ENABLE#0 = (byte*) 53274
|
|
Constant (const byte) IRQ_RASTER#0 = 1
|
|
Constant (const byte*) COLS#0 = (byte*) 55296
|
|
Constant (const byte*) CIA1_INTERRUPT#0 = (byte*) 56333
|
|
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
|
Constant (const void()**) HARDWARE_IRQ#0 = (void()**) 65534
|
|
Constant (const byte) LIGHT_BLUE#0 = $e
|
|
Constant (const word) mul8u::res#0 = 0
|
|
Constant (const byte*) SCREEN#0 = (byte*) 1024
|
|
Constant (const byte*) SPRITE_DATA#0 = (byte*) 8192
|
|
Constant (const word*) VXSIN#0 = (word*) 8704
|
|
Constant (const word*) VYSIN#0 = (word*) 8832
|
|
Constant (const byte[$3e8]) SCREEN_COPY#0 = { fill( $3e8, 0) }
|
|
Constant (const byte) NUM_PROCESSING#0 = 8
|
|
Constant (const word) NOT_FOUND#0 = $ffff
|
|
Constant (const byte) STATUS_FREE#0 = 0
|
|
Constant (const byte) STATUS_NEW#0 = 1
|
|
Constant (const byte) STATUS_PROCESSING#0 = 2
|
|
Constant (const byte) main::i#0 = 0
|
|
Constant (const void()*) setupRasterIrq::irqRoutine#0 = &irqTop
|
|
Constant (const byte) getCharToProcess::closest_x#0 = 0
|
|
Constant (const byte) getCharToProcess::closest_y#0 = 0
|
|
Constant (const byte) getCharToProcess::y#0 = 0
|
|
Constant (const byte) getCharToProcess::x#0 = 0
|
|
Constant (const byte) startProcessing::freeIdx#0 = $ff
|
|
Constant (const byte) startProcessing::i#0 = 0
|
|
Constant (const byte) startProcessing::i1#0 = 0
|
|
Constant (const byte) processChars::numActive#0 = 0
|
|
Constant (const byte) processChars::i#0 = 0
|
|
Constant (const word[$28]) SQUARES_X#0 = { fill( $28, 0) }
|
|
Constant (const word[$19]) SQUARES_Y#0 = { fill( $19, 0) }
|
|
Constant (const byte) initSquareTables::x#0 = 0
|
|
Constant (const byte) initSquareTables::y#0 = 0
|
|
Constant (const byte) initSprites::i#0 = 0
|
|
Constant (const byte) RASTER_IRQ_TOP#0 = $30
|
|
Constant (const byte) irqTop::i#0 = 0
|
|
Constant (const byte) irqTop::i1#0 = 0
|
|
Constant (const void()*) irqTop::$0 = &irqBottom
|
|
Constant (const byte) RASTER_IRQ_MIDDLE#0 = $ff
|
|
Constant (const byte) irqBottom::i#0 = 0
|
|
Constant (const void()*) irqBottom::$1 = &irqTop
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const byte*) main::src#0 = SCREEN#0
|
|
Constant (const byte*) main::dst#0 = SCREEN_COPY#0
|
|
Constant (const word) setupRasterIrq::raster#0 = RASTER_IRQ_TOP#0
|
|
Constant (const word) getCharToProcess::closest_dist#0 = NOT_FOUND#0
|
|
Constant (const byte*) getCharToProcess::screen_line#0 = SCREEN_COPY#0
|
|
Constant (const byte*) initSprites::sp#0 = SPRITE_DATA#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant value identified { fill( NUM_PROCESSING#0, 0) } in [63] (struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 ← { fill( NUM_PROCESSING#0, 0) }
|
|
Constant value identified (word)BORDER_YPOS_BOTTOM#0 in [273] (word~) $8 ← (word)(const byte) BORDER_YPOS_BOTTOM#0
|
|
Successful SSA optimization Pass2ConstantValues
|
|
if() condition always true - replacing block destination [121] if(true) goto main::@5
|
|
if() condition always true - replacing block destination [126] if(true) goto main::@11
|
|
if() condition always true - replacing block destination [458] if((const word) setupRasterIrq::raster#0<(word) $100) goto setupRasterIrq::@1
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Resolved ranged next value [140] getCharToProcess::x#1 ← ++ getCharToProcess::x#2 to ++
|
|
Resolved ranged comparison value [142] if(getCharToProcess::x#1!=rangelast(0,$27)) goto getCharToProcess::@4 to (number) $28
|
|
Resolved ranged next value [157] getCharToProcess::y#1 ← ++ getCharToProcess::y#2 to ++
|
|
Resolved ranged comparison value [159] if(getCharToProcess::y#1!=rangelast(0,$18)) goto getCharToProcess::@3 to (number) $19
|
|
Resolved ranged next value [222] startProcessing::i1#1 ← ++ startProcessing::i1#2 to ++
|
|
Resolved ranged comparison value [224] if(startProcessing::i1#1!=rangelast(0,7)) goto startProcessing::@9 to (number) 8
|
|
Resolved ranged next value [407] initSquareTables::x#1 ← ++ initSquareTables::x#2 to ++
|
|
Resolved ranged comparison value [409] if(initSquareTables::x#1!=rangelast(0,$27)) goto initSquareTables::@1 to (number) $28
|
|
Resolved ranged next value [430] initSquareTables::y#1 ← ++ initSquareTables::y#2 to ++
|
|
Resolved ranged comparison value [432] if(initSquareTables::y#1!=rangelast(0,$18)) goto initSquareTables::@8 to (number) $19
|
|
Resolved ranged next value [445] initSprites::i#1 ← ++ initSprites::i#2 to ++
|
|
Resolved ranged comparison value [447] if(initSprites::i#1!=rangelast(0,7)) goto initSprites::@3 to (number) 8
|
|
Resolved ranged next value [473] irqTop::i#1 ← ++ irqTop::i#2 to ++
|
|
Resolved ranged comparison value [475] if(irqTop::i#1!=rangelast(0,4)) goto irqTop::@1 to (number) 5
|
|
Resolved ranged next value [478] irqTop::i1#1 ← ++ irqTop::i1#2 to ++
|
|
Resolved ranged comparison value [480] if(irqTop::i1#1!=rangelast(0,7)) goto irqTop::@3 to (number) 8
|
|
Resolved ranged next value [489] irqBottom::i#1 ← ++ irqBottom::i#2 to ++
|
|
Resolved ranged comparison value [491] if(irqBottom::i#1!=rangelast(0,4)) goto irqBottom::@1 to (number) 5
|
|
Converting *(pointer+n) to pointer[n] [173] *((byte*~) getCharToProcess::$12) ← (byte) ' ' -- *(getCharToProcess::$11 + getCharToProcess::return_x#1)
|
|
Converting *(pointer+n) to pointer[n] [210] (byte) startProcessing::ch#0 ← *((byte*) startProcessing::screenPtr#0) -- *(startProcessing::$2 + startProcessing::center_x#8)
|
|
Converting *(pointer+n) to pointer[n] [286] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*) processChars::$39) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)
|
|
Converting *(pointer+n) to pointer[n] [291] if(*((byte*) processChars::$40)==(const byte) STATUS_FREE#0) goto processChars::@2 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)
|
|
Converting *(pointer+n) to pointer[n] [300] if(*((byte*) processChars::$41)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)
|
|
Converting *(pointer+n) to pointer[n] [303] (word) processChars::xpos#0 ← *((word*) processChars::$42) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X)
|
|
Converting *(pointer+n) to pointer[n] [310] *(*((byte**) processChars::$43)) ← (byte) ' ' -- *((byte**)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)
|
|
Converting *(pointer+n) to pointer[n] [314] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*) processChars::$44) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID)
|
|
Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*) processChars::$45) -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
|
|
Converting *(pointer+n) to pointer[n] [316] *((byte*~) processChars::$10) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- *(processChars::$9 + *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_ID))
|
|
Converting *(pointer+n) to pointer[n] [318] *((byte*) processChars::$46) ← (const byte) STATUS_PROCESSING#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)
|
|
Converting *(pointer+n) to pointer[n] [329] (word~) processChars::$16 ← *((word*) processChars::$47) >> (byte) 4 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
|
Converting *(pointer+n) to pointer[n] [335] (bool~) processChars::$19 ← *((word*) processChars::$48) < (word) XPOS_LEFTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X)
|
|
Converting *(pointer+n) to pointer[n] [337] (bool~) processChars::$20 ← *((word*) processChars::$49) > (word) XPOS_RIGHTMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X)
|
|
Converting *(pointer+n) to pointer[n] [340] (bool~) processChars::$22 ← *((word*) processChars::$50) < (word) YPOS_TOPMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
|
Converting *(pointer+n) to pointer[n] [343] (bool~) processChars::$24 ← *((word*) processChars::$51) > (word) YPOS_BOTTOMMOST#0 -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
|
Converting *(pointer+n) to pointer[n] [348] *((byte*) processChars::$52) ← (const byte) STATUS_FREE#0 -- *((byte*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)
|
|
Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*) processChars::$53) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
Converting *(pointer+n) to pointer[n] [360] *((word*) processChars::$54) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*) processChars::$55) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X)
|
|
Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*) processChars::$56) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
Converting *(pointer+n) to pointer[n] [364] *((word*) processChars::$57) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_X)
|
|
Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*) processChars::$58) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY)
|
|
Converting *(pointer+n) to pointer[n] [373] *((word*) processChars::$59) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY)
|
|
Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*) processChars::$60) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
|
Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*) processChars::$61) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_VY)
|
|
Converting *(pointer+n) to pointer[n] [377] *((word*) processChars::$62) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- *((word*)processChars::processing#0 + OFFSET_STRUCT_PROCESSINGSPRITE_Y)
|
|
Successful SSA optimization Pass2InlineDerefIdx
|
|
Simplifying expression containing zero (word*)PROCESSING#0 in [78] (word*) main::$17 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)PROCESSING#0 in [245] (word*) startProcessing::$31 ← (word*)(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [302] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [303] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) >> (byte) 4
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [334] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [335] (bool~) processChars::$19 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) < (word) XPOS_LEFTMOST#0
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [336] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [337] (bool~) processChars::$20 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) > (word) XPOS_RIGHTMOST#0
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [361] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [363] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
Simplifying expression containing zero (word*)processChars::processing#0 in [364] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating unused variable (word) startProcessing::center_dist#0 and assignment [51] (word) startProcessing::center_dist#0 ← (word) main::center_dist#0
|
|
Eliminating unused variable (byte*~) getCharToProcess::$12 and assignment [75] (byte*~) getCharToProcess::$12 ← (byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1
|
|
Eliminating unused variable (byte*) processChars::$39 and assignment [155] (byte*) processChars::$39 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Eliminating unused variable (byte*) processChars::$40 and assignment [157] (byte*) processChars::$40 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Eliminating unused variable (byte*) processChars::$41 and assignment [162] (byte*) processChars::$41 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Eliminating unused variable (word*) processChars::$42 and assignment [164] (word*) processChars::$42 ← (word*)(struct ProcessingSprite*) processChars::processing#0
|
|
Eliminating unused variable (byte**) processChars::$43 and assignment [168] (byte**) processChars::$43 ← (byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Eliminating unused variable (byte*) processChars::$44 and assignment [172] (byte*) processChars::$44 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Eliminating unused variable (byte*~) processChars::$10 and assignment [173] (byte*~) processChars::$10 ← (byte*~) processChars::$9 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
|
|
Eliminating unused variable (byte*) processChars::$45 and assignment [174] (byte*) processChars::$45 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Eliminating unused variable (byte*) processChars::$46 and assignment [176] (byte*) processChars::$46 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Eliminating unused variable (word*) processChars::$47 and assignment [184] (word*) processChars::$47 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Eliminating unused variable (word*) processChars::$48 and assignment [189] (word*) processChars::$48 ← (word*)(struct ProcessingSprite*) processChars::processing#0
|
|
Eliminating unused variable (word*) processChars::$49 and assignment [191] (word*) processChars::$49 ← (word*)(struct ProcessingSprite*) processChars::processing#0
|
|
Eliminating unused variable (word*) processChars::$50 and assignment [193] (word*) processChars::$50 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Eliminating unused variable (word*) processChars::$51 and assignment [195] (word*) processChars::$51 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Eliminating unused variable (byte*) processChars::$52 and assignment [198] (byte*) processChars::$52 ← (byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Eliminating unused variable (word*) processChars::$53 and assignment [207] (word*) processChars::$53 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Eliminating unused variable (word*) processChars::$54 and assignment [208] (word*) processChars::$54 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Eliminating unused variable (word*) processChars::$55 and assignment [210] (word*) processChars::$55 ← (word*)(struct ProcessingSprite*) processChars::processing#0
|
|
Eliminating unused variable (word*) processChars::$56 and assignment [211] (word*) processChars::$56 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Eliminating unused variable (word*) processChars::$57 and assignment [212] (word*) processChars::$57 ← (word*)(struct ProcessingSprite*) processChars::processing#0
|
|
Eliminating unused variable (word*) processChars::$58 and assignment [219] (word*) processChars::$58 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Eliminating unused variable (word*) processChars::$59 and assignment [220] (word*) processChars::$59 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Eliminating unused variable (word*) processChars::$60 and assignment [222] (word*) processChars::$60 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Eliminating unused variable (word*) processChars::$61 and assignment [223] (word*) processChars::$61 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Eliminating unused variable (word*) processChars::$62 and assignment [224] (word*) processChars::$62 ← (word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Eliminating unused constant (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_X
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Removing unused block main::@return
|
|
Removing unused block setupRasterIrq::@3
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Adding number conversion cast (unumber) $28 in if((byte) getCharToProcess::x#1!=(number) $28) goto getCharToProcess::@4
|
|
Adding number conversion cast (unumber) $19 in if((byte) getCharToProcess::y#1!=(number) $19) goto getCharToProcess::@3
|
|
Adding number conversion cast (unumber) 8 in if((byte) startProcessing::i1#1!=(number) 8) goto startProcessing::@9
|
|
Adding number conversion cast (unumber) $28 in if((byte) initSquareTables::x#1!=(number) $28) goto initSquareTables::@1
|
|
Adding number conversion cast (unumber) $19 in if((byte) initSquareTables::y#1!=(number) $19) goto initSquareTables::@8
|
|
Adding number conversion cast (unumber) 8 in if((byte) initSprites::i#1!=(number) 8) goto initSprites::@3
|
|
Adding number conversion cast (unumber) 5 in if((byte) irqTop::i#1!=(number) 5) goto irqTop::@1
|
|
Adding number conversion cast (unumber) 8 in if((byte) irqTop::i1#1!=(number) 8) goto irqTop::@3
|
|
Adding number conversion cast (unumber) 5 in if((byte) irqBottom::i#1!=(number) 5) goto irqBottom::@1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast (byte~) processChars::$30
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 5
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 5
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $19
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $19
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 5
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 5
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias (byte~) processChars::$18 = (byte~) processChars::$14
|
|
Alias (byte~) processChars::$31 = (byte~) processChars::$30
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Self Phi Eliminated (byte) getCharToProcess::y#2
|
|
Self Phi Eliminated (byte) startProcessing::center_y#8
|
|
Self Phi Eliminated (byte) startProcessing::center_x#8
|
|
Successful SSA optimization Pass2SelfPhiElimination
|
|
Identical Phi Values (byte) getCharToProcess::y#2 (byte) getCharToProcess::y#7
|
|
Identical Phi Values (byte) startProcessing::center_y#8 (byte) startProcessing::center_y#0
|
|
Identical Phi Values (byte) startProcessing::center_x#8 (byte) startProcessing::center_x#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Simple Condition (bool~) processChars::$19 [180] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(word) XPOS_LEFTMOST#0) goto processChars::@6
|
|
Simple Condition (bool~) processChars::$24 [276] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(word) YPOS_BOTTOMMOST#0) goto processChars::@6
|
|
Simple Condition (bool~) processChars::$22 [277] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(word) YPOS_TOPMOST#0) goto processChars::@6
|
|
Simple Condition (bool~) processChars::$20 [278] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(word) XPOS_RIGHTMOST#0) goto processChars::@6
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Constant right-side identified [16] (byte*~) main::$5 ← (const byte*) SCREEN#0 + (word) $3e8
|
|
Constant right-side identified [18] (byte~) main::$7 ← (const byte) NUM_PROCESSING#0 - (byte) 1
|
|
Constant right-side identified [52] (byte*~) main::$4 ← (const byte*) SCREEN#0 + (word) $3e7
|
|
Constant right-side identified [54] (byte*~) main::$15 ← (const byte*) COLS#0 + (word) $3e7
|
|
Constant right-side identified [76] (byte~) startProcessing::$23 ← (const byte) NUM_PROCESSING#0 - (byte) 1
|
|
Constant right-side identified [114] (byte*~) startProcessing::$18 ← (const byte*) SPRITE_DATA#0 / (byte) $40
|
|
Constant right-side identified [137] (byte~) $0 ← (const byte) BORDER_XPOS_LEFT#0 - (byte) 8
|
|
Constant right-side identified [140] (word) XPOS_RIGHTMOST#0 ← (const word) BORDER_XPOS_RIGHT#0 << (byte) 4
|
|
Constant right-side identified [141] (byte~) $5 ← (const byte) BORDER_YPOS_TOP#0 - (byte) 8
|
|
Constant right-side identified [148] (byte~) processChars::$2 ← (const byte) NUM_PROCESSING#0 - (byte) 1
|
|
Constant right-side identified [163] (byte*~) processChars::$9 ← (const byte*) SCREEN#0 + (const word) SPRITE_PTRS#0
|
|
Constant right-side identified [186] (byte~) processChars::$28 ← (const byte) BORDER_XPOS_LEFT#0 / (byte) 8
|
|
Constant right-side identified [193] (byte~) processChars::$32 ← (const byte) BORDER_YPOS_TOP#0 / (byte) 8
|
|
Constant right-side identified [199] (byte*~) processChars::$0 ← (const byte*) SCREEN#0 + (word) $3e7
|
|
Constant right-side identified [235] (byte~) initSprites::$0 ← (const byte) NUM_PROCESSING#0 * (byte) $40
|
|
Constant right-side identified [251] (byte~) setupRasterIrq::$1 ← < (const word) setupRasterIrq::raster#0
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 = { fill( NUM_PROCESSING#0, 0) }
|
|
Constant (const byte*) main::$5 = SCREEN#0+$3e8
|
|
Constant (const byte) main::$7 = NUM_PROCESSING#0-1
|
|
Constant (const byte*) main::$4 = SCREEN#0+$3e7
|
|
Constant (const byte*) main::$15 = COLS#0+$3e7
|
|
Constant (const byte) startProcessing::$23 = NUM_PROCESSING#0-1
|
|
Constant (const byte*) startProcessing::$18 = SPRITE_DATA#0/$40
|
|
Constant (const byte) $0 = BORDER_XPOS_LEFT#0-8
|
|
Constant (const word) XPOS_RIGHTMOST#0 = BORDER_XPOS_RIGHT#0<<4
|
|
Constant (const byte) $5 = BORDER_YPOS_TOP#0-8
|
|
Constant (const word) $8 = (word)BORDER_YPOS_BOTTOM#0
|
|
Constant (const byte) processChars::$2 = NUM_PROCESSING#0-1
|
|
Constant (const byte*) processChars::$9 = SCREEN#0+SPRITE_PTRS#0
|
|
Constant (const byte) processChars::$28 = BORDER_XPOS_LEFT#0/8
|
|
Constant (const byte) processChars::$32 = BORDER_YPOS_TOP#0/8
|
|
Constant (const byte*) processChars::$0 = SCREEN#0+$3e7
|
|
Constant (const byte) initSprites::$0 = NUM_PROCESSING#0*$40
|
|
Constant (const byte) setupRasterIrq::$1 = <setupRasterIrq::raster#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant value identified (word*)PROCESSING#0 in [21] (word*) main::$17 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0
|
|
Constant value identified (word*)PROCESSING#0 in [23] (word*) main::$18 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant value identified (word*)PROCESSING#0 in [25] (word*) main::$19 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant value identified (word*)PROCESSING#0 in [27] (word*) main::$20 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant value identified (byte*)PROCESSING#0 in [29] (byte*) main::$21 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant value identified (byte*)PROCESSING#0 in [31] (byte*) main::$22 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant value identified (byte*)PROCESSING#0 in [33] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant value identified (byte**)PROCESSING#0 in [35] (byte**) main::$24 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant value identified (byte*)PROCESSING#0 in [79] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant value identified (byte)startProcessing::$18 in [115] (byte~) startProcessing::$19 ← (byte)(const byte*) startProcessing::$18
|
|
Constant value identified (word*)PROCESSING#0 in [120] (word*) startProcessing::$31 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0
|
|
Constant value identified (word*)PROCESSING#0 in [122] (word*) startProcessing::$32 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant value identified (word*)PROCESSING#0 in [124] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant value identified (word*)PROCESSING#0 in [126] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant value identified (byte*)PROCESSING#0 in [128] (byte*) startProcessing::$35 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant value identified (byte*)PROCESSING#0 in [130] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant value identified (byte*)PROCESSING#0 in [132] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant value identified (byte**)PROCESSING#0 in [134] (byte**) startProcessing::$38 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant value identified (word)$0 in [138] (word~) $1 ← (word)(const byte) $0
|
|
Constant value identified (word)$5 in [142] (word~) $6 ← (word)(const byte) $5
|
|
Successful SSA optimization Pass2ConstantValues
|
|
Resolved ranged next value [37] main::i#1 ← ++ main::i#2 to ++
|
|
Resolved ranged comparison value [38] if(main::i#1!=rangelast(0,main::$7)) goto main::@3 to (const byte) main::$7+(number) 1
|
|
Resolved ranged next value [81] startProcessing::i#1 ← ++ startProcessing::i#2 to ++
|
|
Resolved ranged comparison value [82] if(startProcessing::i#1!=rangelast(0,startProcessing::$23)) goto startProcessing::@2 to (const byte) startProcessing::$23+(number) 1
|
|
Resolved ranged next value [155] processChars::i#1 ← ++ processChars::i#10 to ++
|
|
Resolved ranged comparison value [156] if(processChars::i#1!=rangelast(0,processChars::$2)) goto processChars::@1 to (const byte) processChars::$2+(number) 1
|
|
Adding number conversion cast (unumber) main::$7+1 in if((byte) main::i#1!=(const byte) main::$7+(number) 1) goto main::@3
|
|
Adding number conversion cast (unumber) 1 in if((byte) main::i#1!=(unumber)(const byte) main::$7+(number) 1) goto main::@3
|
|
Adding number conversion cast (unumber) startProcessing::$23+1 in if((byte) startProcessing::i#1!=(const byte) startProcessing::$23+(number) 1) goto startProcessing::@2
|
|
Adding number conversion cast (unumber) 1 in if((byte) startProcessing::i#1!=(unumber)(const byte) startProcessing::$23+(number) 1) goto startProcessing::@2
|
|
Adding number conversion cast (unumber) processChars::$2+1 in if((byte) processChars::i#1!=(const byte) processChars::$2+(number) 1) goto processChars::@1
|
|
Adding number conversion cast (unumber) 1 in if((byte) processChars::i#1!=(unumber)(const byte) processChars::$2+(number) 1) goto processChars::@1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast (const byte) main::$7+(unumber)(number) 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast (const byte) startProcessing::$23+(unumber)(number) 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast (const byte) processChars::$2+(unumber)(number) 1
|
|
Simplifying constant integer cast 1
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Constant right-side identified [20] (word*) main::$18 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant right-side identified [22] (word*) main::$19 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant right-side identified [24] (word*) main::$20 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant right-side identified [26] (byte*) main::$21 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant right-side identified [28] (byte*) main::$22 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant right-side identified [30] (byte*) main::$23 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant right-side identified [32] (byte**) main::$24 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant right-side identified [73] (byte*) startProcessing::$39 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant right-side identified [115] (word*) startProcessing::$32 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant right-side identified [117] (word*) startProcessing::$33 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant right-side identified [119] (word*) startProcessing::$34 ← (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant right-side identified [121] (byte*) startProcessing::$35 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant right-side identified [123] (byte*) startProcessing::$36 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant right-side identified [125] (byte*) startProcessing::$37 ← (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant right-side identified [127] (byte**) startProcessing::$38 ← (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant right-side identified [134] (word) YPOS_BOTTOMMOST#0 ← (const word) $8 << (byte) 4
|
|
Constant right-side identified [213] (byte*~) initSprites::$1 ← (const byte*) SPRITE_DATA#0 + (const byte) initSprites::$0
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const word*) main::$17 = (word*)PROCESSING#0
|
|
Constant (const word*) main::$18 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant (const word*) main::$19 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant (const word*) main::$20 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant (const byte*) main::$21 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant (const byte*) main::$22 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant (const byte*) main::$23 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant (const byte**) main::$24 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant (const byte*) startProcessing::$39 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant (const byte) startProcessing::$19 = (byte)startProcessing::$18
|
|
Constant (const word*) startProcessing::$31 = (word*)PROCESSING#0
|
|
Constant (const word*) startProcessing::$32 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant (const word*) startProcessing::$33 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant (const word*) startProcessing::$34 = (word*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant (const byte*) startProcessing::$35 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant (const byte*) startProcessing::$36 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant (const byte*) startProcessing::$37 = (byte*)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant (const byte**) startProcessing::$38 = (byte**)PROCESSING#0+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant (const word) $1 = (word)$0
|
|
Constant (const word) $6 = (word)$5
|
|
Constant (const word) YPOS_BOTTOMMOST#0 = $8<<4
|
|
Constant (const byte*) initSprites::$1 = SPRITE_DATA#0+initSprites::$0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [112] (word) XPOS_LEFTMOST#0 ← (const word) $1 << (byte) 4
|
|
Constant right-side identified [113] (word) YPOS_TOPMOST#0 ← (const word) $6 << (byte) 4
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const word) XPOS_LEFTMOST#0 = $1<<4
|
|
Constant (const word) YPOS_TOPMOST#0 = $6<<4
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Rewriting multiplication to use shift and addition[17] (byte~) main::$16 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
Rewriting multiplication to use shift [49] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 * (const byte) SIZEOF_WORD
|
|
Rewriting multiplication to use shift [50] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 * (const byte) SIZEOF_WORD
|
|
Rewriting multiplication to use shift and addition[58] (word~) getCharToProcess::$10 ← (word~) getCharToProcess::$9 * (byte) $28
|
|
Rewriting multiplication to use shift and addition[64] (byte~) startProcessing::$29 ← (byte) startProcessing::i#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
Rewriting multiplication to use shift and addition[71] (word~) startProcessing::$1 ← (word~) startProcessing::$0 * (byte) $28
|
|
Rewriting multiplication to use shift [75] (word~) startProcessing::$5 ← (word~) startProcessing::$4 * (byte) $40
|
|
Rewriting multiplication to use shift [79] (word~) startProcessing::$8 ← (word~) startProcessing::$7 * (byte) 8
|
|
Rewriting multiplication to use shift [92] (word~) startProcessing::$11 ← (word~) startProcessing::$10 * (byte) 8
|
|
Rewriting multiplication to use shift [96] (word~) startProcessing::$15 ← (word~) startProcessing::$14 * (byte) 8
|
|
Rewriting multiplication to use shift [100] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 * (byte) 8
|
|
Rewriting multiplication to use shift and addition[102] (byte~) startProcessing::$30 ← (byte) startProcessing::freeIdx#2 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
Rewriting multiplication to use shift and addition[115] (byte~) processChars::$36 ← (byte) processChars::i#10 * (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
Rewriting multiplication to use shift [133] (byte~) processChars::$18 ← (byte) processChars::i#10 * (byte) 2
|
|
Rewriting division to use shift [143] (word~) processChars::$26 ← (word) processChars::xpos#0 / (byte) 8
|
|
Rewriting multiplication to use shift [146] (byte~) processChars::$37 ← (byte) processChars::xchar#0 * (const byte) SIZEOF_WORD
|
|
Rewriting division to use shift [149] (byte~) processChars::$31 ← (byte) processChars::ypos#0 / (byte) 8
|
|
Rewriting multiplication to use shift [151] (byte~) processChars::$38 ← (byte) processChars::ychar#0 * (const byte) SIZEOF_WORD
|
|
Rewriting multiplication to use shift [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 * (const byte) SIZEOF_WORD
|
|
Rewriting multiplication to use shift [182] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 * (const byte) SIZEOF_WORD
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
Inlining constant with var siblings (const word) mul8u::res#0
|
|
Inlining constant with var siblings (const byte) main::i#0
|
|
Inlining constant with var siblings (const byte*) main::src#0
|
|
Inlining constant with var siblings (const byte*) main::dst#0
|
|
Inlining constant with var siblings (const byte) getCharToProcess::closest_x#0
|
|
Inlining constant with var siblings (const byte) getCharToProcess::closest_y#0
|
|
Inlining constant with var siblings (const byte) getCharToProcess::y#0
|
|
Inlining constant with var siblings (const byte) getCharToProcess::x#0
|
|
Inlining constant with var siblings (const word) getCharToProcess::closest_dist#0
|
|
Inlining constant with var siblings (const byte*) getCharToProcess::screen_line#0
|
|
Inlining constant with var siblings (const byte) startProcessing::freeIdx#0
|
|
Inlining constant with var siblings (const byte) startProcessing::i#0
|
|
Inlining constant with var siblings (const byte) startProcessing::i1#0
|
|
Inlining constant with var siblings (const byte) processChars::numActive#0
|
|
Inlining constant with var siblings (const byte) processChars::i#0
|
|
Inlining constant with var siblings (const byte) initSquareTables::x#0
|
|
Inlining constant with var siblings (const byte) initSquareTables::y#0
|
|
Inlining constant with var siblings (const byte) initSprites::i#0
|
|
Inlining constant with var siblings (const byte*) initSprites::sp#0
|
|
Inlining constant with var siblings (const byte) irqTop::i#0
|
|
Inlining constant with var siblings (const byte) irqTop::i1#0
|
|
Inlining constant with var siblings (const byte) irqBottom::i#0
|
|
Constant inlined processChars::$32 = (const byte) BORDER_YPOS_TOP#0/(byte) 8
|
|
Constant inlined startProcessing::$19 = (byte)(const byte*) SPRITE_DATA#0/(byte) $40
|
|
Constant inlined startProcessing::$18 = (const byte*) SPRITE_DATA#0/(byte) $40
|
|
Constant inlined main::src#0 = (const byte*) SCREEN#0
|
|
Constant inlined main::$15 = (const byte*) COLS#0+(word) $3e7
|
|
Constant inlined $0 = (const byte) BORDER_XPOS_LEFT#0-(byte) 8
|
|
Constant inlined $1 = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8
|
|
Constant inlined getCharToProcess::y#0 = (byte) 0
|
|
Constant inlined $5 = (const byte) BORDER_YPOS_TOP#0-(byte) 8
|
|
Constant inlined $6 = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8
|
|
Constant inlined setupRasterIrq::raster#0 = (const byte) RASTER_IRQ_TOP#0
|
|
Constant inlined $8 = (word)(const byte) BORDER_YPOS_BOTTOM#0
|
|
Constant inlined main::$17 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0
|
|
Constant inlined main::$18 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant inlined main::$19 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant inlined processChars::numActive#0 = (byte) 0
|
|
Constant inlined getCharToProcess::closest_x#0 = (byte) 0
|
|
Constant inlined startProcessing::i1#0 = (byte) 0
|
|
Constant inlined startProcessing::$23 = (const byte) NUM_PROCESSING#0-(byte) 1
|
|
Constant inlined irqTop::$0 = &interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
Constant inlined initSprites::$0 = (const byte) NUM_PROCESSING#0*(byte) $40
|
|
Constant inlined initSprites::$1 = (const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40
|
|
Constant inlined mul8u::res#0 = (byte) 0
|
|
Constant inlined irqBottom::i#0 = (byte) 0
|
|
Constant inlined processChars::$2 = (const byte) NUM_PROCESSING#0-(byte) 1
|
|
Constant inlined main::dst#0 = (const byte[$3e8]) SCREEN_COPY#0
|
|
Constant inlined processChars::i#0 = (byte) 0
|
|
Constant inlined initSquareTables::x#0 = (byte) 0
|
|
Constant inlined getCharToProcess::closest_dist#0 = (const word) NOT_FOUND#0
|
|
Constant inlined processChars::$0 = (const byte*) SCREEN#0+(word) $3e7
|
|
Constant inlined initSprites::i#0 = (byte) 0
|
|
Constant inlined startProcessing::$35 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant inlined startProcessing::$34 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant inlined startProcessing::$37 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant inlined startProcessing::$36 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant inlined startProcessing::$39 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant inlined startProcessing::freeIdx#0 = (byte) $ff
|
|
Constant inlined startProcessing::$38 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant inlined processChars::$9 = (const byte*) SCREEN#0+(const word) SPRITE_PTRS#0
|
|
Constant inlined irqBottom::$1 = &interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
Constant inlined getCharToProcess::x#0 = (byte) 0
|
|
Constant inlined initSprites::sp#0 = (const byte*) SPRITE_DATA#0
|
|
Constant inlined getCharToProcess::closest_y#0 = (byte) 0
|
|
Constant inlined main::i#0 = (byte) 0
|
|
Constant inlined startProcessing::$31 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0
|
|
Constant inlined startProcessing::$33 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
Constant inlined startProcessing::$32 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
Constant inlined main::$23 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Constant inlined main::$24 = (byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
Constant inlined irqTop::i1#0 = (byte) 0
|
|
Constant inlined getCharToProcess::screen_line#0 = (const byte[$3e8]) SCREEN_COPY#0
|
|
Constant inlined processChars::$28 = (const byte) BORDER_XPOS_LEFT#0/(byte) 8
|
|
Constant inlined main::$20 = (word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
Constant inlined main::$21 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
Constant inlined main::$22 = (byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
Constant inlined irqTop::i#0 = (byte) 0
|
|
Constant inlined setupRasterIrq::$1 = <(const byte) RASTER_IRQ_TOP#0
|
|
Constant inlined startProcessing::i#0 = (byte) 0
|
|
Constant inlined main::$5 = (const byte*) SCREEN#0+(word) $3e8
|
|
Constant inlined main::$4 = (const byte*) SCREEN#0+(word) $3e7
|
|
Constant inlined initSquareTables::y#0 = (byte) 0
|
|
Constant inlined main::$7 = (const byte) NUM_PROCESSING#0-(byte) 1
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Alias (byte~) main::$16 = (byte) main::$28
|
|
Alias (word~) getCharToProcess::$10 = (word) getCharToProcess::$17
|
|
Alias (byte~) startProcessing::$29 = (byte) startProcessing::$43
|
|
Alias (word~) startProcessing::$1 = (word) startProcessing::$46
|
|
Alias (byte~) startProcessing::$30 = (byte) startProcessing::$50
|
|
Alias (byte~) processChars::$36 = (byte) processChars::$67
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Eliminating unused constant (const byte) SIZEOF_STRUCT_PROCESSINGSPRITE
|
|
Eliminating unused constant (const byte) SIZEOF_WORD
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
|
|
Added new block during phi lifting main::@18(between main::@1 and main::@1)
|
|
Added new block during phi lifting main::@19(between main::@3 and main::@3)
|
|
Added new block during phi lifting getCharToProcess::@12(between getCharToProcess::@9 and getCharToProcess::@3)
|
|
Added new block during phi lifting getCharToProcess::@13(between getCharToProcess::@5 and getCharToProcess::@4)
|
|
Added new block during phi lifting getCharToProcess::@14(between getCharToProcess::@4 and getCharToProcess::@5)
|
|
Added new block during phi lifting getCharToProcess::@15(between getCharToProcess::@7 and getCharToProcess::@5)
|
|
Added new block during phi lifting startProcessing::@11(between startProcessing::@4 and startProcessing::@1)
|
|
Added new block during phi lifting startProcessing::@12(between startProcessing::@3 and startProcessing::@2)
|
|
Added new block during phi lifting startProcessing::@13(between startProcessing::@3 and startProcessing::@4)
|
|
Added new block during phi lifting startProcessing::@14(between startProcessing::@9 and startProcessing::@9)
|
|
Added new block during phi lifting processChars::@18(between processChars::@2 and processChars::@1)
|
|
Added new block during phi lifting processChars::@19(between processChars::@1 and processChars::@2)
|
|
Added new block during phi lifting initSquareTables::@17(between initSquareTables::@15 and initSquareTables::@1)
|
|
Added new block during phi lifting initSquareTables::@18(between initSquareTables::@16 and initSquareTables::@8)
|
|
Added new block during phi lifting initSprites::@5(between initSprites::@1 and initSprites::@1)
|
|
Added new block during phi lifting initSprites::@6(between initSprites::@3 and initSprites::@3)
|
|
Added new block during phi lifting irqTop::@5(between irqTop::@1 and irqTop::@1)
|
|
Added new block during phi lifting irqTop::@6(between irqTop::@3 and irqTop::@3)
|
|
Added new block during phi lifting irqBottom::@4(between irqBottom::@1 and irqBottom::@1)
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @9
|
|
Adding NOP phi() at start of @13
|
|
Adding NOP phi() at start of @16
|
|
Adding NOP phi() at start of @17
|
|
Adding NOP phi() at start of @18
|
|
Adding NOP phi() at start of @19
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of main::@2
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of main::@14
|
|
Adding NOP phi() at start of main::@15
|
|
Adding NOP phi() at start of main::@5
|
|
Adding NOP phi() at start of main::@17
|
|
Adding NOP phi() at start of startProcessing
|
|
Adding NOP phi() at start of getCharToProcess
|
|
Adding NOP phi() at start of getCharToProcess::@1
|
|
Adding NOP phi() at start of initSprites
|
|
Adding NOP phi() at start of initSprites::@2
|
|
Adding NOP phi() at start of initSquareTables
|
|
Adding NOP phi() at start of initSquareTables::@7
|
|
Adding NOP phi() at start of mul8u::@3
|
|
Adding NOP phi() at start of irqBottom
|
|
Adding NOP phi() at start of irqBottom::@2
|
|
Adding NOP phi() at start of processChars
|
|
Adding NOP phi() at start of irqTop
|
|
Adding NOP phi() at start of irqTop::@2
|
|
CALL GRAPH
|
|
Calls in [] to main:8
|
|
Calls in [main] to initSquareTables:12 initSprites:36 setupRasterIrq:38 getCharToProcess:41 startProcessing:53
|
|
Calls in [initSquareTables] to mul8u:206 mul8u:223
|
|
Calls in [irqBottom] to processChars:260
|
|
|
|
Created 39 initial phi equivalence classes
|
|
Coalesced [55] main::i#3 ← main::i#1
|
|
Coalesced [56] main::src#3 ← main::src#1
|
|
Coalesced [57] main::dst#3 ← main::dst#1
|
|
Coalesced [66] startProcessing::freeIdx#9 ← startProcessing::i#2
|
|
Coalesced [84] startProcessing::chargenData#3 ← startProcessing::chargenData#0
|
|
Coalesced [85] startProcessing::spriteData#3 ← startProcessing::spriteData#0
|
|
Coalesced [118] startProcessing::chargenData#4 ← startProcessing::chargenData#1
|
|
Coalesced [119] startProcessing::spriteData#4 ← startProcessing::spriteData#1
|
|
Coalesced [120] startProcessing::i1#3 ← startProcessing::i1#1
|
|
Not coalescing [121] startProcessing::freeIdx#7 ← startProcessing::freeIdx#2
|
|
Not coalescing [124] startProcessing::freeIdx#8 ← startProcessing::freeIdx#6
|
|
Coalesced [125] startProcessing::i#5 ← startProcessing::i#1
|
|
Coalesced [128] getCharToProcess::closest_dist#11 ← getCharToProcess::closest_dist#8
|
|
Coalesced [129] getCharToProcess::closest_x#11 ← getCharToProcess::closest_x#9
|
|
Coalesced [130] getCharToProcess::closest_y#11 ← getCharToProcess::closest_y#9
|
|
Coalesced [137] getCharToProcess::return_dist#7 ← getCharToProcess::dist#0
|
|
Not coalescing [138] getCharToProcess::return_x#7 ← getCharToProcess::x#2
|
|
Not coalescing [139] getCharToProcess::return_y#7 ← getCharToProcess::y#7
|
|
Coalesced [155] getCharToProcess::screen_line#8 ← getCharToProcess::screen_line#1
|
|
Coalesced [156] getCharToProcess::y#8 ← getCharToProcess::y#1
|
|
Not coalescing [157] getCharToProcess::closest_dist#10 ← getCharToProcess::return_dist#1
|
|
Coalesced [158] getCharToProcess::closest_x#10 ← getCharToProcess::return_x#1
|
|
Coalesced [159] getCharToProcess::closest_y#10 ← getCharToProcess::return_y#1
|
|
Coalesced [160] getCharToProcess::x#6 ← getCharToProcess::x#1
|
|
Not coalescing [161] getCharToProcess::closest_dist#12 ← getCharToProcess::return_dist#1
|
|
Coalesced (already) [162] getCharToProcess::closest_x#12 ← getCharToProcess::return_x#1
|
|
Coalesced (already) [163] getCharToProcess::closest_y#12 ← getCharToProcess::return_y#1
|
|
Not coalescing [164] getCharToProcess::return_dist#6 ← getCharToProcess::closest_dist#2
|
|
Coalesced (already) [165] getCharToProcess::return_x#6 ← getCharToProcess::closest_x#7
|
|
Coalesced (already) [166] getCharToProcess::return_y#6 ← getCharToProcess::closest_y#7
|
|
Not coalescing [167] getCharToProcess::return_dist#5 ← getCharToProcess::closest_dist#2
|
|
Coalesced (already) [168] getCharToProcess::return_x#5 ← getCharToProcess::closest_x#7
|
|
Coalesced (already) [169] getCharToProcess::return_y#5 ← getCharToProcess::closest_y#7
|
|
Coalesced [194] initSprites::i#3 ← initSprites::i#1
|
|
Coalesced [195] initSprites::sp#3 ← initSprites::sp#1
|
|
Coalesced [200] initSquareTables::x_dist#2 ← initSquareTables::$2
|
|
Coalesced [204] mul8u::mb#7 ← mul8u::b#0
|
|
Coalesced [205] mul8u::a#9 ← mul8u::a#1
|
|
Coalesced [217] initSquareTables::y_dist#2 ← initSquareTables::$10
|
|
Coalesced [221] mul8u::mb#6 ← mul8u::b#1
|
|
Coalesced [222] mul8u::a#8 ← mul8u::a#2
|
|
Coalesced [231] initSquareTables::y#7 ← initSquareTables::y#1
|
|
Coalesced [233] initSquareTables::y_dist#1 ← initSquareTables::$12
|
|
Coalesced [234] initSquareTables::x#7 ← initSquareTables::x#1
|
|
Coalesced [236] initSquareTables::x_dist#1 ← initSquareTables::$4
|
|
Coalesced [238] mul8u::a#10 ← mul8u::a#6
|
|
Coalesced [239] mul8u::mb#8 ← mul8u::mb#0
|
|
Coalesced [247] mul8u::res#9 ← mul8u::res#1
|
|
Coalesced [251] mul8u::a#11 ← mul8u::a#0
|
|
Coalesced [252] mul8u::res#7 ← mul8u::res#6
|
|
Coalesced [253] mul8u::mb#9 ← mul8u::mb#1
|
|
Coalesced (already) [254] mul8u::res#8 ← mul8u::res#2
|
|
Coalesced [265] irqBottom::i#3 ← irqBottom::i#1
|
|
Coalesced [307] processChars::numActive#16 ← processChars::numActive#1
|
|
Coalesced [314] processChars::i#13 ← processChars::i#1
|
|
Coalesced [315] processChars::numActive#14 ← processChars::numActive#3
|
|
Coalesced (already) [320] processChars::numActive#15 ← processChars::numActive#10
|
|
Coalesced [333] irqTop::i1#3 ← irqTop::i1#1
|
|
Coalesced [334] irqTop::i#3 ← irqTop::i#1
|
|
Coalesced down to 29 phi equivalence classes
|
|
Culled Empty Block (label) @9
|
|
Culled Empty Block (label) @13
|
|
Culled Empty Block (label) @16
|
|
Culled Empty Block (label) @17
|
|
Culled Empty Block (label) @19
|
|
Culled Empty Block (label) main::@13
|
|
Culled Empty Block (label) main::@2
|
|
Culled Empty Block (label) main::@15
|
|
Culled Empty Block (label) main::@17
|
|
Culled Empty Block (label) main::@19
|
|
Culled Empty Block (label) main::@18
|
|
Culled Empty Block (label) startProcessing::@5
|
|
Culled Empty Block (label) startProcessing::@14
|
|
Culled Empty Block (label) startProcessing::@12
|
|
Culled Empty Block (label) getCharToProcess::@1
|
|
Culled Empty Block (label) initSprites::@2
|
|
Culled Empty Block (label) initSprites::@6
|
|
Culled Empty Block (label) initSprites::@5
|
|
Culled Empty Block (label) initSquareTables::@7
|
|
Culled Empty Block (label) initSquareTables::@18
|
|
Culled Empty Block (label) initSquareTables::@17
|
|
Culled Empty Block (label) mul8u::@3
|
|
Culled Empty Block (label) mul8u::@10
|
|
Culled Empty Block (label) irqBottom::@4
|
|
Culled Empty Block (label) processChars::@18
|
|
Culled Empty Block (label) processChars::@19
|
|
Culled Empty Block (label) irqTop::@2
|
|
Culled Empty Block (label) irqTop::@6
|
|
Culled Empty Block (label) irqTop::@5
|
|
Renumbering block @12 to @1
|
|
Renumbering block @18 to @2
|
|
Renumbering block mul8u::@4 to mul8u::@3
|
|
Renumbering block mul8u::@7 to mul8u::@4
|
|
Renumbering block main::@3 to main::@2
|
|
Renumbering block main::@4 to main::@3
|
|
Renumbering block main::@5 to main::@4
|
|
Renumbering block main::@6 to main::@5
|
|
Renumbering block main::@7 to main::@6
|
|
Renumbering block main::@11 to main::@7
|
|
Renumbering block main::@14 to main::@8
|
|
Renumbering block main::@16 to main::@9
|
|
Renumbering block getCharToProcess::@3 to getCharToProcess::@1
|
|
Renumbering block getCharToProcess::@4 to getCharToProcess::@2
|
|
Renumbering block getCharToProcess::@5 to getCharToProcess::@3
|
|
Renumbering block getCharToProcess::@7 to getCharToProcess::@4
|
|
Renumbering block getCharToProcess::@8 to getCharToProcess::@5
|
|
Renumbering block getCharToProcess::@9 to getCharToProcess::@6
|
|
Renumbering block getCharToProcess::@10 to getCharToProcess::@7
|
|
Renumbering block getCharToProcess::@11 to getCharToProcess::@8
|
|
Renumbering block getCharToProcess::@12 to getCharToProcess::@9
|
|
Renumbering block getCharToProcess::@13 to getCharToProcess::@10
|
|
Renumbering block getCharToProcess::@14 to getCharToProcess::@11
|
|
Renumbering block getCharToProcess::@15 to getCharToProcess::@12
|
|
Renumbering block startProcessing::@8 to startProcessing::@5
|
|
Renumbering block startProcessing::@9 to startProcessing::@6
|
|
Renumbering block startProcessing::@10 to startProcessing::@7
|
|
Renumbering block startProcessing::@11 to startProcessing::@8
|
|
Renumbering block startProcessing::@13 to startProcessing::@9
|
|
Renumbering block processChars::@10 to processChars::@9
|
|
Renumbering block processChars::@12 to processChars::@10
|
|
Renumbering block processChars::@13 to processChars::@11
|
|
Renumbering block processChars::@14 to processChars::@12
|
|
Renumbering block processChars::@15 to processChars::@13
|
|
Renumbering block processChars::@16 to processChars::@14
|
|
Renumbering block processChars::@17 to processChars::@15
|
|
Renumbering block initSquareTables::@8 to initSquareTables::@5
|
|
Renumbering block initSquareTables::@9 to initSquareTables::@6
|
|
Renumbering block initSquareTables::@10 to initSquareTables::@7
|
|
Renumbering block initSquareTables::@11 to initSquareTables::@8
|
|
Renumbering block initSquareTables::@15 to initSquareTables::@9
|
|
Renumbering block initSquareTables::@16 to initSquareTables::@10
|
|
Renumbering block initSprites::@3 to initSprites::@2
|
|
Renumbering block initSprites::@4 to initSprites::@3
|
|
Renumbering block irqTop::@3 to irqTop::@2
|
|
Renumbering block irqTop::@4 to irqTop::@3
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @2
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@3
|
|
Adding NOP phi() at start of main::@8
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of startProcessing
|
|
Adding NOP phi() at start of getCharToProcess
|
|
Adding NOP phi() at start of initSprites
|
|
Adding NOP phi() at start of initSquareTables
|
|
Adding NOP phi() at start of irqBottom
|
|
Adding NOP phi() at start of irqBottom::@2
|
|
Adding NOP phi() at start of processChars
|
|
Adding NOP phi() at start of irqTop
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
@begin: scope:[] from
|
|
[0] phi()
|
|
to:@1
|
|
@1: scope:[] from @begin
|
|
kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) {
|
|
.word -sin(toRadians([i*360]/40))*4
|
|
}
|
|
}}
|
|
kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) {
|
|
.word -sin(toRadians([i*360]/25))*4
|
|
}
|
|
}}
|
|
to:@2
|
|
@2: scope:[] from @1
|
|
[3] phi()
|
|
[4] call main
|
|
to:@end
|
|
@end: scope:[] from @2
|
|
[5] phi()
|
|
main: scope:[main] from @2
|
|
[6] phi()
|
|
[7] call initSquareTables
|
|
to:main::@1
|
|
main::@1: scope:[main] from main main::@1
|
|
[8] (byte*) main::dst#2 ← phi( main::@1/(byte*) main::dst#1 main/(const byte[$3e8]) SCREEN_COPY#0 )
|
|
[8] (byte*) main::src#2 ← phi( main::@1/(byte*) main::src#1 main/(const byte*) SCREEN#0 )
|
|
[9] *((byte*) main::dst#2) ← *((byte*) main::src#2)
|
|
[10] (byte*) main::src#1 ← ++ (byte*) main::src#2
|
|
[11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2
|
|
[12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1 main::@2
|
|
[13] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::i#1 )
|
|
[14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1
|
|
[15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2
|
|
[16] (byte) main::$27 ← (byte) main::$26 << (byte) 2
|
|
[17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2
|
|
[18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0
|
|
[19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0
|
|
[20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0
|
|
[21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0
|
|
[22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0
|
|
[23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0
|
|
[24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0
|
|
[25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0
|
|
[26] (byte) main::i#1 ← ++ (byte) main::i#2
|
|
[27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@2
|
|
[28] phi()
|
|
[29] call initSprites
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@3
|
|
[30] phi()
|
|
[31] call setupRasterIrq
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@5 main::@8
|
|
[32] phi()
|
|
[33] call getCharToProcess
|
|
[34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1
|
|
[35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1
|
|
[36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@4
|
|
[37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
|
|
[38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
|
|
[39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
|
|
[40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@9
|
|
[41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.'
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6 main::@7
|
|
[42] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7)
|
|
to:main::@7
|
|
main::@5: scope:[main] from main::@9
|
|
[43] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0
|
|
[44] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0
|
|
[45] call startProcessing
|
|
to:main::@4
|
|
startProcessing: scope:[startProcessing] from main::@5
|
|
[46] phi()
|
|
to:startProcessing::@1
|
|
startProcessing::@1: scope:[startProcessing] from startProcessing startProcessing::@8
|
|
[47] (byte) startProcessing::freeIdx#6 ← phi( startProcessing/(byte) $ff startProcessing::@8/(byte~) startProcessing::freeIdx#7 )
|
|
to:startProcessing::@2
|
|
startProcessing::@2: scope:[startProcessing] from startProcessing::@1 startProcessing::@3
|
|
[48] (byte) startProcessing::i#2 ← phi( startProcessing::@1/(byte) 0 startProcessing::@3/(byte) startProcessing::i#1 )
|
|
[49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1
|
|
[50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2
|
|
[51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2
|
|
[52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2
|
|
[53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3
|
|
to:startProcessing::@4
|
|
startProcessing::@4: scope:[startProcessing] from startProcessing::@2 startProcessing::@9
|
|
[54] (byte) startProcessing::freeIdx#2 ← phi( startProcessing::@9/(byte~) startProcessing::freeIdx#8 startProcessing::@2/(byte) startProcessing::i#2 )
|
|
[55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8
|
|
to:startProcessing::@5
|
|
startProcessing::@5: scope:[startProcessing] from startProcessing::@4
|
|
[56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0
|
|
[57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2
|
|
[58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0
|
|
[59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3
|
|
[60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1
|
|
[61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0
|
|
[62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2
|
|
[63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6
|
|
[64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5
|
|
[65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0)
|
|
[66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0
|
|
[67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3
|
|
[68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8
|
|
asm { sei }
|
|
[70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0
|
|
to:startProcessing::@6
|
|
startProcessing::@6: scope:[startProcessing] from startProcessing::@5 startProcessing::@6
|
|
[71] (byte) startProcessing::i1#2 ← phi( startProcessing::@5/(byte) 0 startProcessing::@6/(byte) startProcessing::i1#1 )
|
|
[71] (byte*) startProcessing::spriteData#2 ← phi( startProcessing::@5/(byte*) startProcessing::spriteData#0 startProcessing::@6/(byte*) startProcessing::spriteData#1 )
|
|
[71] (byte*) startProcessing::chargenData#2 ← phi( startProcessing::@5/(byte*) startProcessing::chargenData#0 startProcessing::@6/(byte*) startProcessing::chargenData#1 )
|
|
[72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2)
|
|
[73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3
|
|
[74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2
|
|
[75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2
|
|
[76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6
|
|
to:startProcessing::@7
|
|
startProcessing::@7: scope:[startProcessing] from startProcessing::@6
|
|
[77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
|
asm { cli }
|
|
[79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0
|
|
[80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3
|
|
[81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11
|
|
[82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4
|
|
[83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0
|
|
[84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3
|
|
[85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15
|
|
[86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4
|
|
[87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2
|
|
[88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3
|
|
[89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21
|
|
[90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1
|
|
[91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2
|
|
[92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2
|
|
[93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2
|
|
[94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0
|
|
[95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0
|
|
[96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22
|
|
[97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c
|
|
[98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2
|
|
[99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0
|
|
[100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0
|
|
[101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0
|
|
to:startProcessing::@return
|
|
startProcessing::@return: scope:[startProcessing] from startProcessing::@7
|
|
[102] return
|
|
to:@return
|
|
startProcessing::@8: scope:[startProcessing] from startProcessing::@4
|
|
[103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2
|
|
to:startProcessing::@1
|
|
startProcessing::@3: scope:[startProcessing] from startProcessing::@2
|
|
[104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2
|
|
[105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2
|
|
to:startProcessing::@9
|
|
startProcessing::@9: scope:[startProcessing] from startProcessing::@3
|
|
[106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6
|
|
to:startProcessing::@4
|
|
getCharToProcess: scope:[getCharToProcess] from main::@4
|
|
[107] phi()
|
|
to:getCharToProcess::@1
|
|
getCharToProcess::@1: scope:[getCharToProcess] from getCharToProcess getCharToProcess::@9
|
|
[108] (byte) getCharToProcess::closest_y#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_y#1 )
|
|
[108] (byte) getCharToProcess::closest_x#9 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::return_x#1 )
|
|
[108] (word) getCharToProcess::closest_dist#8 ← phi( getCharToProcess/(const word) NOT_FOUND#0 getCharToProcess::@9/(word~) getCharToProcess::closest_dist#10 )
|
|
[108] (byte) getCharToProcess::y#7 ← phi( getCharToProcess/(byte) 0 getCharToProcess::@9/(byte) getCharToProcess::y#1 )
|
|
[108] (byte*) getCharToProcess::screen_line#4 ← phi( getCharToProcess/(const byte[$3e8]) SCREEN_COPY#0 getCharToProcess::@9/(byte*) getCharToProcess::screen_line#1 )
|
|
to:getCharToProcess::@2
|
|
getCharToProcess::@2: scope:[getCharToProcess] from getCharToProcess::@1 getCharToProcess::@10
|
|
[109] (byte) getCharToProcess::closest_y#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_y#9 getCharToProcess::@10/(byte) getCharToProcess::return_y#1 )
|
|
[109] (byte) getCharToProcess::closest_x#7 ← phi( getCharToProcess::@1/(byte) getCharToProcess::closest_x#9 getCharToProcess::@10/(byte) getCharToProcess::return_x#1 )
|
|
[109] (word) getCharToProcess::closest_dist#2 ← phi( getCharToProcess::@1/(word) getCharToProcess::closest_dist#8 getCharToProcess::@10/(word~) getCharToProcess::closest_dist#12 )
|
|
[109] (byte) getCharToProcess::x#2 ← phi( getCharToProcess::@1/(byte) 0 getCharToProcess::@10/(byte) getCharToProcess::x#1 )
|
|
[110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11
|
|
to:getCharToProcess::@4
|
|
getCharToProcess::@4: scope:[getCharToProcess] from getCharToProcess::@2
|
|
[111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1
|
|
[112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1
|
|
[113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14)
|
|
[114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12
|
|
to:getCharToProcess::@5
|
|
getCharToProcess::@5: scope:[getCharToProcess] from getCharToProcess::@4
|
|
[115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2
|
|
[116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7
|
|
to:getCharToProcess::@3
|
|
getCharToProcess::@3: scope:[getCharToProcess] from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5
|
|
[117] (byte) getCharToProcess::return_y#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_y#7 getCharToProcess::@12/(byte) getCharToProcess::closest_y#7 getCharToProcess::@5/(byte~) getCharToProcess::return_y#7 )
|
|
[117] (byte) getCharToProcess::return_x#1 ← phi( getCharToProcess::@11/(byte) getCharToProcess::closest_x#7 getCharToProcess::@12/(byte) getCharToProcess::closest_x#7 getCharToProcess::@5/(byte~) getCharToProcess::return_x#7 )
|
|
[117] (word) getCharToProcess::return_dist#1 ← phi( getCharToProcess::@11/(word~) getCharToProcess::return_dist#5 getCharToProcess::@12/(word~) getCharToProcess::return_dist#6 getCharToProcess::@5/(word) getCharToProcess::dist#0 )
|
|
[118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2
|
|
[119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10
|
|
to:getCharToProcess::@6
|
|
getCharToProcess::@6: scope:[getCharToProcess] from getCharToProcess::@3
|
|
[120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28
|
|
[121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7
|
|
[122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9
|
|
to:getCharToProcess::@7
|
|
getCharToProcess::@7: scope:[getCharToProcess] from getCharToProcess::@6
|
|
[123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return
|
|
to:getCharToProcess::@8
|
|
getCharToProcess::@8: scope:[getCharToProcess] from getCharToProcess::@7
|
|
[124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1
|
|
[125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2
|
|
[126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9
|
|
[127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3
|
|
[128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10
|
|
[129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' '
|
|
to:getCharToProcess::@return
|
|
getCharToProcess::@return: scope:[getCharToProcess] from getCharToProcess::@7 getCharToProcess::@8
|
|
[130] return
|
|
to:@return
|
|
getCharToProcess::@9: scope:[getCharToProcess] from getCharToProcess::@6
|
|
[131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1
|
|
to:getCharToProcess::@1
|
|
getCharToProcess::@10: scope:[getCharToProcess] from getCharToProcess::@3
|
|
[132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1
|
|
to:getCharToProcess::@2
|
|
getCharToProcess::@12: scope:[getCharToProcess] from getCharToProcess::@4
|
|
[133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2
|
|
to:getCharToProcess::@3
|
|
getCharToProcess::@11: scope:[getCharToProcess] from getCharToProcess::@2
|
|
[134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2
|
|
to:getCharToProcess::@3
|
|
setupRasterIrq: scope:[setupRasterIrq] from main::@8
|
|
asm { sei }
|
|
[136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
[137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
|
[138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
|
to:setupRasterIrq::@1
|
|
setupRasterIrq::@1: scope:[setupRasterIrq] from setupRasterIrq
|
|
[139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f
|
|
to:setupRasterIrq::@2
|
|
setupRasterIrq::@2: scope:[setupRasterIrq] from setupRasterIrq::@1
|
|
[140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0
|
|
[141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
|
[142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0
|
|
asm { cli }
|
|
to:setupRasterIrq::@return
|
|
setupRasterIrq::@return: scope:[setupRasterIrq] from setupRasterIrq::@2
|
|
[144] return
|
|
to:@return
|
|
initSprites: scope:[initSprites] from main::@3
|
|
[145] phi()
|
|
to:initSprites::@1
|
|
initSprites::@1: scope:[initSprites] from initSprites initSprites::@1
|
|
[146] (byte*) initSprites::sp#2 ← phi( initSprites/(const byte*) SPRITE_DATA#0 initSprites::@1/(byte*) initSprites::sp#1 )
|
|
[147] *((byte*) initSprites::sp#2) ← (byte) 0
|
|
[148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2
|
|
[149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1
|
|
to:initSprites::@2
|
|
initSprites::@2: scope:[initSprites] from initSprites::@1 initSprites::@2
|
|
[150] (byte) initSprites::i#2 ← phi( initSprites::@1/(byte) 0 initSprites::@2/(byte) initSprites::i#1 )
|
|
[151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0
|
|
[152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2
|
|
[153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2
|
|
to:initSprites::@3
|
|
initSprites::@3: scope:[initSprites] from initSprites::@2
|
|
[154] *((const byte*) SPRITES_MC#0) ← (byte) 0
|
|
[155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0
|
|
[156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0
|
|
to:initSprites::@return
|
|
initSprites::@return: scope:[initSprites] from initSprites::@3
|
|
[157] return
|
|
to:@return
|
|
initSquareTables: scope:[initSquareTables] from main
|
|
[158] phi()
|
|
to:initSquareTables::@1
|
|
initSquareTables::@1: scope:[initSquareTables] from initSquareTables initSquareTables::@9
|
|
[159] (byte) initSquareTables::x#2 ← phi( initSquareTables/(byte) 0 initSquareTables::@9/(byte) initSquareTables::x#1 )
|
|
[160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2
|
|
to:initSquareTables::@3
|
|
initSquareTables::@3: scope:[initSquareTables] from initSquareTables::@1
|
|
[161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14
|
|
to:initSquareTables::@4
|
|
initSquareTables::@4: scope:[initSquareTables] from initSquareTables::@2 initSquareTables::@3
|
|
[162] (byte) initSquareTables::x_dist#0 ← phi( initSquareTables::@2/(byte~) initSquareTables::$4 initSquareTables::@3/(byte~) initSquareTables::$2 )
|
|
[163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0
|
|
[164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
|
[165] call mul8u
|
|
[166] (word) mul8u::return#2 ← (word) mul8u::res#2
|
|
to:initSquareTables::@9
|
|
initSquareTables::@9: scope:[initSquareTables] from initSquareTables::@4
|
|
[167] (word~) initSquareTables::$6 ← (word) mul8u::return#2
|
|
[168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1
|
|
[169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6
|
|
[170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2
|
|
[171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1
|
|
to:initSquareTables::@5
|
|
initSquareTables::@5: scope:[initSquareTables] from initSquareTables::@10 initSquareTables::@9
|
|
[172] (byte) initSquareTables::y#2 ← phi( initSquareTables::@10/(byte) initSquareTables::y#1 initSquareTables::@9/(byte) 0 )
|
|
[173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6
|
|
to:initSquareTables::@7
|
|
initSquareTables::@7: scope:[initSquareTables] from initSquareTables::@5
|
|
[174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c
|
|
to:initSquareTables::@8
|
|
initSquareTables::@8: scope:[initSquareTables] from initSquareTables::@6 initSquareTables::@7
|
|
[175] (byte) initSquareTables::y_dist#0 ← phi( initSquareTables::@6/(byte~) initSquareTables::$12 initSquareTables::@7/(byte~) initSquareTables::$10 )
|
|
[176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0
|
|
[177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
|
[178] call mul8u
|
|
[179] (word) mul8u::return#3 ← (word) mul8u::res#2
|
|
to:initSquareTables::@10
|
|
initSquareTables::@10: scope:[initSquareTables] from initSquareTables::@8
|
|
[180] (word~) initSquareTables::$14 ← (word) mul8u::return#3
|
|
[181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1
|
|
[182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14
|
|
[183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2
|
|
[184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5
|
|
to:initSquareTables::@return
|
|
initSquareTables::@return: scope:[initSquareTables] from initSquareTables::@10
|
|
[185] return
|
|
to:@return
|
|
initSquareTables::@6: scope:[initSquareTables] from initSquareTables::@5
|
|
[186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2
|
|
to:initSquareTables::@8
|
|
initSquareTables::@2: scope:[initSquareTables] from initSquareTables::@1
|
|
[187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2
|
|
to:initSquareTables::@4
|
|
mul8u: scope:[mul8u] from initSquareTables::@4 initSquareTables::@8
|
|
[188] (byte) mul8u::a#6 ← phi( initSquareTables::@8/(byte) mul8u::a#2 initSquareTables::@4/(byte) mul8u::a#1 )
|
|
[188] (word) mul8u::mb#0 ← phi( initSquareTables::@8/(byte) mul8u::b#1 initSquareTables::@4/(byte) mul8u::b#0 )
|
|
to:mul8u::@1
|
|
mul8u::@1: scope:[mul8u] from mul8u mul8u::@3
|
|
[189] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
|
|
[189] (word) mul8u::res#2 ← phi( mul8u/(byte) 0 mul8u::@3/(word) mul8u::res#6 )
|
|
[189] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
|
|
[190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
|
|
to:mul8u::@return
|
|
mul8u::@return: scope:[mul8u] from mul8u::@1
|
|
[191] return
|
|
to:@return
|
|
mul8u::@2: scope:[mul8u] from mul8u::@1
|
|
[192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
|
|
[193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
|
|
to:mul8u::@4
|
|
mul8u::@4: scope:[mul8u] from mul8u::@2
|
|
[194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
|
to:mul8u::@3
|
|
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
|
|
[195] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
|
|
[196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
|
|
[197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
|
|
to:mul8u::@1
|
|
irqBottom: scope:[irqBottom] from
|
|
[198] phi()
|
|
to:irqBottom::@1
|
|
irqBottom::@1: scope:[irqBottom] from irqBottom irqBottom::@1
|
|
[199] (byte) irqBottom::i#2 ← phi( irqBottom/(byte) 0 irqBottom::@1/(byte) irqBottom::i#1 )
|
|
[200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2
|
|
[201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1
|
|
to:irqBottom::@2
|
|
irqBottom::@2: scope:[irqBottom] from irqBottom::@1
|
|
[202] phi()
|
|
[203] call processChars
|
|
to:irqBottom::@3
|
|
irqBottom::@3: scope:[irqBottom] from irqBottom::@2
|
|
[204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0
|
|
[205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
[206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
|
to:irqBottom::@return
|
|
irqBottom::@return: scope:[irqBottom] from irqBottom::@3
|
|
[207] return
|
|
to:@return
|
|
processChars: scope:[processChars] from irqBottom::@2
|
|
[208] phi()
|
|
to:processChars::@1
|
|
processChars::@1: scope:[processChars] from processChars processChars::@2
|
|
[209] (byte) processChars::numActive#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::numActive#3 )
|
|
[209] (byte) processChars::i#10 ← phi( processChars/(byte) 0 processChars::@2/(byte) processChars::i#1 )
|
|
[210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1
|
|
[211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10
|
|
[212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2
|
|
[213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10
|
|
[214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36
|
|
[215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)
|
|
[216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2
|
|
to:processChars::@10
|
|
processChars::@10: scope:[processChars] from processChars::@1
|
|
[217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3
|
|
to:processChars::@11
|
|
processChars::@11: scope:[processChars] from processChars::@10
|
|
[218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' '
|
|
[219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0
|
|
[220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR)
|
|
[221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0
|
|
to:processChars::@3
|
|
processChars::@3: scope:[processChars] from processChars::@10 processChars::@11
|
|
[222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4
|
|
[223] (byte~) processChars::$12 ← > (word) processChars::xpos#0
|
|
[224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4
|
|
to:processChars::@8
|
|
processChars::@8: scope:[processChars] from processChars::@3
|
|
[225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0
|
|
[226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13
|
|
to:processChars::@5
|
|
processChars::@5: scope:[processChars] from processChars::@4 processChars::@8
|
|
[227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1
|
|
[228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0
|
|
[229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15
|
|
[230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4
|
|
[231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16
|
|
[232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0
|
|
[233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6
|
|
to:processChars::@15
|
|
processChars::@15: scope:[processChars] from processChars::@5
|
|
[234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6
|
|
to:processChars::@14
|
|
processChars::@14: scope:[processChars] from processChars::@15
|
|
[235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6
|
|
to:processChars::@13
|
|
processChars::@13: scope:[processChars] from processChars::@14
|
|
[236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6
|
|
to:processChars::@9
|
|
processChars::@9: scope:[processChars] from processChars::@13
|
|
[237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3
|
|
[238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26
|
|
[239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8
|
|
[240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1
|
|
[241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37)
|
|
[242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX)
|
|
[243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3
|
|
[244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8
|
|
[245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1
|
|
[246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38)
|
|
[247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY)
|
|
to:processChars::@7
|
|
processChars::@7: scope:[processChars] from processChars::@6 processChars::@9
|
|
[248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10
|
|
to:processChars::@2
|
|
processChars::@2: scope:[processChars] from processChars::@1 processChars::@7
|
|
[249] (byte) processChars::numActive#3 ← phi( processChars::@1/(byte) processChars::numActive#10 processChars::@7/(byte) processChars::numActive#1 )
|
|
[250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10
|
|
[251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1
|
|
to:processChars::@12
|
|
processChars::@12: scope:[processChars] from processChars::@2
|
|
[252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3
|
|
[253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1
|
|
to:processChars::@return
|
|
processChars::@return: scope:[processChars] from processChars::@12
|
|
[254] return
|
|
to:@return
|
|
processChars::@6: scope:[processChars] from processChars::@13 processChars::@14 processChars::@15 processChars::@5
|
|
[255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0
|
|
[256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0
|
|
[257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34
|
|
to:processChars::@7
|
|
processChars::@4: scope:[processChars] from processChars::@3
|
|
[258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0
|
|
to:processChars::@5
|
|
irqTop: scope:[irqTop] from
|
|
[259] phi()
|
|
to:irqTop::@1
|
|
irqTop::@1: scope:[irqTop] from irqTop irqTop::@1
|
|
[260] (byte) irqTop::i#2 ← phi( irqTop/(byte) 0 irqTop::@1/(byte) irqTop::i#1 )
|
|
[261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2
|
|
[262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1
|
|
to:irqTop::@2
|
|
irqTop::@2: scope:[irqTop] from irqTop::@1 irqTop::@2
|
|
[263] (byte) irqTop::i1#2 ← phi( irqTop::@1/(byte) 0 irqTop::@2/(byte) irqTop::i1#1 )
|
|
[264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2
|
|
[265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2
|
|
to:irqTop::@3
|
|
irqTop::@3: scope:[irqTop] from irqTop::@2
|
|
[266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0
|
|
[267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
[268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
|
to:irqTop::@return
|
|
irqTop::@return: scope:[irqTop] from irqTop::@3
|
|
[269] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
(byte) BORDER_XPOS_LEFT
|
|
(word) BORDER_XPOS_RIGHT
|
|
(byte) BORDER_YPOS_BOTTOM
|
|
(byte) BORDER_YPOS_TOP
|
|
(byte*) CHARGEN
|
|
(byte*) CIA1_INTERRUPT
|
|
(byte) CIA_INTERRUPT_CLEAR
|
|
(byte*) COLS
|
|
(void()**) HARDWARE_IRQ
|
|
(byte*) IRQ_ENABLE
|
|
(byte) IRQ_RASTER
|
|
(byte*) IRQ_STATUS
|
|
(byte) LIGHT_BLUE
|
|
(word) NOT_FOUND
|
|
(byte) NUM_PROCESSING
|
|
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING
|
|
(byte*) PROCPORT
|
|
(byte*) PROCPORT_DDR
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(byte) PROCPORT_RAM_CHARROM
|
|
(byte) PROCPORT_RAM_IO
|
|
(word) ProcessingChar::dist
|
|
(byte) ProcessingChar::x
|
|
(byte) ProcessingChar::y
|
|
(byte) ProcessingSprite::id
|
|
(byte) ProcessingSprite::ptr
|
|
(byte*) ProcessingSprite::screenPtr
|
|
(byte) ProcessingSprite::status
|
|
(word) ProcessingSprite::vx
|
|
(word) ProcessingSprite::vy
|
|
(word) ProcessingSprite::x
|
|
(word) ProcessingSprite::y
|
|
(byte*) RASTER
|
|
(byte) RASTER_IRQ_MIDDLE
|
|
(byte) RASTER_IRQ_TOP
|
|
(byte*) SCREEN
|
|
(byte[$3e8]) SCREEN_COPY
|
|
(byte*) SPRITES_COLS
|
|
(byte*) SPRITES_ENABLE
|
|
(byte*) SPRITES_EXPAND_X
|
|
(byte*) SPRITES_EXPAND_Y
|
|
(byte*) SPRITES_MC
|
|
(byte*) SPRITES_XMSB
|
|
(byte*) SPRITES_XPOS
|
|
(byte*) SPRITES_YPOS
|
|
(byte*) SPRITE_DATA
|
|
(word) SPRITE_PTRS
|
|
(word[$28]) SQUARES_X
|
|
(word[$19]) SQUARES_Y
|
|
(byte) STATUS_FREE
|
|
(byte) STATUS_NEW
|
|
(byte) STATUS_PROCESSING
|
|
(byte*) VIC_CONTROL
|
|
(word*) VXSIN
|
|
(word*) VYSIN
|
|
(word) XPOS_LEFTMOST
|
|
(word) XPOS_RIGHTMOST
|
|
(word) YPOS_BOTTOMMOST
|
|
(word) YPOS_TOPMOST
|
|
(struct ProcessingChar()) getCharToProcess()
|
|
(word~) getCharToProcess::$10 4.0
|
|
(byte*~) getCharToProcess::$11 4.0
|
|
(byte~) getCharToProcess::$13 1001.0
|
|
(byte~) getCharToProcess::$14 2002.0
|
|
(word) getCharToProcess::$15 4.0
|
|
(word) getCharToProcess::$16 4.0
|
|
(word~) getCharToProcess::$9 3.0
|
|
(struct ProcessingChar) getCharToProcess::closest
|
|
(word) getCharToProcess::closest_dist
|
|
(word~) getCharToProcess::closest_dist#10 202.0
|
|
(word~) getCharToProcess::closest_dist#12 2002.0
|
|
(word) getCharToProcess::closest_dist#2 684.1666666666667
|
|
(word) getCharToProcess::closest_dist#8 202.0
|
|
(byte) getCharToProcess::closest_x
|
|
(byte) getCharToProcess::closest_x#7 388.0
|
|
(byte) getCharToProcess::closest_x#9 202.0
|
|
(byte) getCharToProcess::closest_y
|
|
(byte) getCharToProcess::closest_y#7 388.0
|
|
(byte) getCharToProcess::closest_y#9 202.0
|
|
(word) getCharToProcess::dist
|
|
(word) getCharToProcess::dist#0 750.75
|
|
(struct ProcessingChar) getCharToProcess::return
|
|
(word) getCharToProcess::return_dist
|
|
(word) getCharToProcess::return_dist#0 7.333333333333333
|
|
(word) getCharToProcess::return_dist#1 242.23529411764704
|
|
(word~) getCharToProcess::return_dist#5 2002.0
|
|
(word~) getCharToProcess::return_dist#6 2002.0
|
|
(byte) getCharToProcess::return_x
|
|
(byte) getCharToProcess::return_x#0 7.333333333333333
|
|
(byte) getCharToProcess::return_x#1 242.23529411764704
|
|
(byte~) getCharToProcess::return_x#7 1001.0
|
|
(byte) getCharToProcess::return_y
|
|
(byte) getCharToProcess::return_y#0 7.333333333333333
|
|
(byte) getCharToProcess::return_y#1 228.66666666666669
|
|
(byte~) getCharToProcess::return_y#7 2002.0
|
|
(byte*) getCharToProcess::screen_line
|
|
(byte*) getCharToProcess::screen_line#1 50.5
|
|
(byte*) getCharToProcess::screen_line#4 80.2
|
|
(byte) getCharToProcess::x
|
|
(byte) getCharToProcess::x#1 1001.0
|
|
(byte) getCharToProcess::x#2 455.0
|
|
(byte) getCharToProcess::y
|
|
(byte) getCharToProcess::y#1 101.0
|
|
(byte) getCharToProcess::y#7 137.75
|
|
(void()) initSprites()
|
|
(byte) initSprites::i
|
|
(byte) initSprites::i#1 16.5
|
|
(byte) initSprites::i#2 16.5
|
|
(byte*) initSprites::sp
|
|
(byte*) initSprites::sp#1 16.5
|
|
(byte*) initSprites::sp#2 16.5
|
|
(void()) initSquareTables()
|
|
(byte~) initSquareTables::$10 22.0
|
|
(byte~) initSquareTables::$12 22.0
|
|
(word~) initSquareTables::$14 11.0
|
|
(byte~) initSquareTables::$16 22.0
|
|
(byte~) initSquareTables::$17 22.0
|
|
(byte~) initSquareTables::$2 22.0
|
|
(byte~) initSquareTables::$4 22.0
|
|
(word~) initSquareTables::$6 11.0
|
|
(byte) initSquareTables::x
|
|
(byte) initSquareTables::x#1 16.5
|
|
(byte) initSquareTables::x#2 5.5
|
|
(byte) initSquareTables::x_dist
|
|
(byte) initSquareTables::x_dist#0 22.0
|
|
(byte) initSquareTables::y
|
|
(byte) initSquareTables::y#1 16.5
|
|
(byte) initSquareTables::y#2 5.5
|
|
(byte) initSquareTables::y_dist
|
|
(byte) initSquareTables::y_dist#0 22.0
|
|
interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
(byte) irqBottom::i
|
|
(byte) irqBottom::i#1 16.5
|
|
(byte) irqBottom::i#2 22.0
|
|
interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
(byte) irqTop::i
|
|
(byte) irqTop::i#1 16.5
|
|
(byte) irqTop::i#2 22.0
|
|
(byte) irqTop::i1
|
|
(byte) irqTop::i1#1 16.5
|
|
(byte) irqTop::i1#2 22.0
|
|
(void()) main()
|
|
(byte~) main::$16 12.375
|
|
(byte) main::$25 22.0
|
|
(byte) main::$26 22.0
|
|
(byte) main::$27 22.0
|
|
(struct ProcessingChar~) main::$9
|
|
(struct ProcessingChar) main::center
|
|
(word) main::center_dist
|
|
(word) main::center_dist#0 22.0
|
|
(byte) main::center_x
|
|
(byte) main::center_x#0 5.5
|
|
(byte) main::center_y
|
|
(byte) main::center_y#0 5.5
|
|
(byte*) main::dst
|
|
(byte*) main::dst#1 11.0
|
|
(byte*) main::dst#2 11.0
|
|
(byte) main::i
|
|
(byte) main::i#1 16.5
|
|
(byte) main::i#2 4.230769230769231
|
|
(byte*) main::src
|
|
(byte*) main::src#1 11.0
|
|
(byte*) main::src#2 16.5
|
|
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
|
(byte~) mul8u::$1 202.0
|
|
(byte) mul8u::a
|
|
(byte) mul8u::a#0 101.0
|
|
(byte) mul8u::a#1 11.0
|
|
(byte) mul8u::a#2 11.0
|
|
(byte) mul8u::a#3 67.66666666666666
|
|
(byte) mul8u::a#6 24.0
|
|
(byte) mul8u::b
|
|
(byte) mul8u::b#0 22.0
|
|
(byte) mul8u::b#1 22.0
|
|
(word) mul8u::mb
|
|
(word) mul8u::mb#0 24.0
|
|
(word) mul8u::mb#1 202.0
|
|
(word) mul8u::mb#2 43.57142857142858
|
|
(word) mul8u::res
|
|
(word) mul8u::res#1 202.0
|
|
(word) mul8u::res#2 46.42857142857143
|
|
(word) mul8u::res#6 101.0
|
|
(word) mul8u::return
|
|
(word) mul8u::return#2 22.0
|
|
(word) mul8u::return#3 22.0
|
|
(void()) processChars()
|
|
(byte~) processChars::$1 4.0
|
|
(byte~) processChars::$12 22.0
|
|
(byte~) processChars::$13 22.0
|
|
(byte~) processChars::$15 22.0
|
|
(word~) processChars::$16 11.0
|
|
(byte~) processChars::$18 6.6000000000000005
|
|
(word~) processChars::$26 11.0
|
|
(byte~) processChars::$27 22.0
|
|
(byte~) processChars::$31 22.0
|
|
(byte~) processChars::$34 22.0
|
|
(byte~) processChars::$36 22.0
|
|
(byte~) processChars::$37 22.0
|
|
(byte~) processChars::$38 22.0
|
|
(byte) processChars::$64 22.0
|
|
(byte) processChars::$65 22.0
|
|
(byte) processChars::$66 22.0
|
|
(byte) processChars::bitmask
|
|
(byte) processChars::bitmask#0 2.2916666666666665
|
|
(byte) processChars::i
|
|
(byte) processChars::i#1 16.5
|
|
(byte) processChars::i#10 1.4666666666666666
|
|
(byte) processChars::numActive
|
|
(byte) processChars::numActive#1 22.0
|
|
(byte) processChars::numActive#10 0.7674418604651163
|
|
(byte) processChars::numActive#3 11.666666666666666
|
|
(struct ProcessingSprite*) processChars::processing
|
|
(struct ProcessingSprite*) processChars::processing#0 0.3235294117647059
|
|
(byte) processChars::xchar
|
|
(byte) processChars::xchar#0 22.0
|
|
(word) processChars::xpos
|
|
(word) processChars::xpos#0 2.0625
|
|
(byte) processChars::ychar
|
|
(byte) processChars::ychar#0 22.0
|
|
(byte) processChars::ypos
|
|
(byte) processChars::ypos#0 2.75
|
|
(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
|
|
(void()*) setupRasterIrq::irqRoutine
|
|
(word) setupRasterIrq::raster
|
|
(void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist)
|
|
(word~) startProcessing::$0 3.0
|
|
(word~) startProcessing::$1 4.0
|
|
(word~) startProcessing::$10 4.0
|
|
(word~) startProcessing::$11 4.0
|
|
(word~) startProcessing::$12 4.0
|
|
(word~) startProcessing::$14 4.0
|
|
(word~) startProcessing::$15 4.0
|
|
(word~) startProcessing::$16 4.0
|
|
(byte*~) startProcessing::$2 1.2000000000000002
|
|
(byte~) startProcessing::$21 2.0
|
|
(word~) startProcessing::$22 0.5714285714285714
|
|
(byte~) startProcessing::$29 2002.0
|
|
(byte~) startProcessing::$30 2.25
|
|
(word~) startProcessing::$4 4.0
|
|
(byte) startProcessing::$40 2002.0
|
|
(byte) startProcessing::$41 2002.0
|
|
(byte) startProcessing::$42 2002.0
|
|
(word) startProcessing::$44 4.0
|
|
(word) startProcessing::$45 4.0
|
|
(byte) startProcessing::$47 4.0
|
|
(byte) startProcessing::$48 4.0
|
|
(byte) startProcessing::$49 4.0
|
|
(word~) startProcessing::$5 4.0
|
|
(word~) startProcessing::$7 4.0
|
|
(word~) startProcessing::$8 4.0
|
|
(struct ProcessingChar) startProcessing::center
|
|
(word) startProcessing::center_dist
|
|
(byte) startProcessing::center_x
|
|
(byte) startProcessing::center_x#0 0.3846153846153846
|
|
(byte) startProcessing::center_y
|
|
(byte) startProcessing::center_y#0 0.2619047619047619
|
|
(byte) startProcessing::ch
|
|
(byte) startProcessing::ch#0 2.0
|
|
(byte*) startProcessing::chargenData
|
|
(byte*) startProcessing::chargenData#0 1.3333333333333333
|
|
(byte*) startProcessing::chargenData#1 67.33333333333333
|
|
(byte*) startProcessing::chargenData#2 101.66666666666666
|
|
(byte) startProcessing::freeIdx
|
|
(byte) startProcessing::freeIdx#2 29.90909090909092
|
|
(byte) startProcessing::freeIdx#6 22.444444444444443
|
|
(byte~) startProcessing::freeIdx#7 202.0
|
|
(byte~) startProcessing::freeIdx#8 202.0
|
|
(byte) startProcessing::i
|
|
(byte) startProcessing::i#1 1501.5
|
|
(byte) startProcessing::i#2 1001.0000000000001
|
|
(byte) startProcessing::i1
|
|
(byte) startProcessing::i1#1 151.5
|
|
(byte) startProcessing::i1#2 50.5
|
|
(byte*) startProcessing::screenPtr
|
|
(byte*) startProcessing::screenPtr#0 0.1
|
|
(byte*) startProcessing::spriteData
|
|
(byte*) startProcessing::spriteData#0 0.5714285714285714
|
|
(byte*) startProcessing::spriteData#1 50.5
|
|
(byte*) startProcessing::spriteData#2 152.5
|
|
(byte) startProcessing::spriteIdx
|
|
(byte) startProcessing::spritePtr
|
|
(byte) startProcessing::spritePtr#0 0.3333333333333333
|
|
(word) startProcessing::spriteX
|
|
(word) startProcessing::spriteX#0 0.3333333333333333
|
|
(word) startProcessing::spriteY
|
|
(word) startProcessing::spriteY#0 0.4444444444444444
|
|
|
|
Not consolidating phi with different size mul8u::mb#0 mul8u::b#1
|
|
Not consolidating phi with different size mul8u::mb#0 mul8u::b#0
|
|
Initial phi equivalence classes
|
|
[ main::src#2 main::src#1 ]
|
|
[ main::dst#2 main::dst#1 ]
|
|
[ main::i#2 main::i#1 ]
|
|
[ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
[ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
[ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ]
|
|
[ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ]
|
|
[ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
[ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
|
[ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
[ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
[ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
|
[ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
[ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
[ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ]
|
|
[ initSprites::sp#2 initSprites::sp#1 ]
|
|
[ initSprites::i#2 initSprites::i#1 ]
|
|
[ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
[ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
|
|
[ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
[ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ]
|
|
[ mul8u::b#1 ]
|
|
[ mul8u::b#0 ]
|
|
[ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
|
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
|
|
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
|
[ irqBottom::i#2 irqBottom::i#1 ]
|
|
[ processChars::i#10 processChars::i#1 ]
|
|
[ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
[ irqTop::i#2 irqTop::i#1 ]
|
|
[ irqTop::i1#2 irqTop::i1#1 ]
|
|
Added variable main::$25 to zero page equivalence class [ main::$25 ]
|
|
Added variable main::$26 to zero page equivalence class [ main::$26 ]
|
|
Added variable main::$27 to zero page equivalence class [ main::$27 ]
|
|
Added variable main::$16 to zero page equivalence class [ main::$16 ]
|
|
Added variable getCharToProcess::return_x#0 to zero page equivalence class [ getCharToProcess::return_x#0 ]
|
|
Added variable getCharToProcess::return_y#0 to zero page equivalence class [ getCharToProcess::return_y#0 ]
|
|
Added variable getCharToProcess::return_dist#0 to zero page equivalence class [ getCharToProcess::return_dist#0 ]
|
|
Added variable main::center_x#0 to zero page equivalence class [ main::center_x#0 ]
|
|
Added variable main::center_y#0 to zero page equivalence class [ main::center_y#0 ]
|
|
Added variable main::center_dist#0 to zero page equivalence class [ main::center_dist#0 ]
|
|
Added variable startProcessing::center_x#0 to zero page equivalence class [ startProcessing::center_x#0 ]
|
|
Added variable startProcessing::center_y#0 to zero page equivalence class [ startProcessing::center_y#0 ]
|
|
Added variable startProcessing::$40 to zero page equivalence class [ startProcessing::$40 ]
|
|
Added variable startProcessing::$41 to zero page equivalence class [ startProcessing::$41 ]
|
|
Added variable startProcessing::$42 to zero page equivalence class [ startProcessing::$42 ]
|
|
Added variable startProcessing::$29 to zero page equivalence class [ startProcessing::$29 ]
|
|
Added variable startProcessing::$0 to zero page equivalence class [ startProcessing::$0 ]
|
|
Added variable startProcessing::$44 to zero page equivalence class [ startProcessing::$44 ]
|
|
Added variable startProcessing::$45 to zero page equivalence class [ startProcessing::$45 ]
|
|
Added variable startProcessing::$1 to zero page equivalence class [ startProcessing::$1 ]
|
|
Added variable startProcessing::$2 to zero page equivalence class [ startProcessing::$2 ]
|
|
Added variable startProcessing::screenPtr#0 to zero page equivalence class [ startProcessing::screenPtr#0 ]
|
|
Added variable startProcessing::$4 to zero page equivalence class [ startProcessing::$4 ]
|
|
Added variable startProcessing::$5 to zero page equivalence class [ startProcessing::$5 ]
|
|
Added variable startProcessing::ch#0 to zero page equivalence class [ startProcessing::ch#0 ]
|
|
Added variable startProcessing::$7 to zero page equivalence class [ startProcessing::$7 ]
|
|
Added variable startProcessing::$8 to zero page equivalence class [ startProcessing::$8 ]
|
|
Added variable startProcessing::$10 to zero page equivalence class [ startProcessing::$10 ]
|
|
Added variable startProcessing::$11 to zero page equivalence class [ startProcessing::$11 ]
|
|
Added variable startProcessing::$12 to zero page equivalence class [ startProcessing::$12 ]
|
|
Added variable startProcessing::spriteX#0 to zero page equivalence class [ startProcessing::spriteX#0 ]
|
|
Added variable startProcessing::$14 to zero page equivalence class [ startProcessing::$14 ]
|
|
Added variable startProcessing::$15 to zero page equivalence class [ startProcessing::$15 ]
|
|
Added variable startProcessing::$16 to zero page equivalence class [ startProcessing::$16 ]
|
|
Added variable startProcessing::spriteY#0 to zero page equivalence class [ startProcessing::spriteY#0 ]
|
|
Added variable startProcessing::spritePtr#0 to zero page equivalence class [ startProcessing::spritePtr#0 ]
|
|
Added variable startProcessing::$21 to zero page equivalence class [ startProcessing::$21 ]
|
|
Added variable startProcessing::$22 to zero page equivalence class [ startProcessing::$22 ]
|
|
Added variable startProcessing::$47 to zero page equivalence class [ startProcessing::$47 ]
|
|
Added variable startProcessing::$48 to zero page equivalence class [ startProcessing::$48 ]
|
|
Added variable startProcessing::$49 to zero page equivalence class [ startProcessing::$49 ]
|
|
Added variable startProcessing::$30 to zero page equivalence class [ startProcessing::$30 ]
|
|
Added variable getCharToProcess::$13 to zero page equivalence class [ getCharToProcess::$13 ]
|
|
Added variable getCharToProcess::$14 to zero page equivalence class [ getCharToProcess::$14 ]
|
|
Added variable getCharToProcess::$9 to zero page equivalence class [ getCharToProcess::$9 ]
|
|
Added variable getCharToProcess::$15 to zero page equivalence class [ getCharToProcess::$15 ]
|
|
Added variable getCharToProcess::$16 to zero page equivalence class [ getCharToProcess::$16 ]
|
|
Added variable getCharToProcess::$10 to zero page equivalence class [ getCharToProcess::$10 ]
|
|
Added variable getCharToProcess::$11 to zero page equivalence class [ getCharToProcess::$11 ]
|
|
Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ]
|
|
Added variable initSquareTables::$6 to zero page equivalence class [ initSquareTables::$6 ]
|
|
Added variable initSquareTables::$16 to zero page equivalence class [ initSquareTables::$16 ]
|
|
Added variable mul8u::return#3 to zero page equivalence class [ mul8u::return#3 ]
|
|
Added variable initSquareTables::$14 to zero page equivalence class [ initSquareTables::$14 ]
|
|
Added variable initSquareTables::$17 to zero page equivalence class [ initSquareTables::$17 ]
|
|
Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ]
|
|
Added variable processChars::$64 to zero page equivalence class [ processChars::$64 ]
|
|
Added variable processChars::$65 to zero page equivalence class [ processChars::$65 ]
|
|
Added variable processChars::$66 to zero page equivalence class [ processChars::$66 ]
|
|
Added variable processChars::$36 to zero page equivalence class [ processChars::$36 ]
|
|
Added variable processChars::processing#0 to zero page equivalence class [ processChars::processing#0 ]
|
|
Added variable processChars::bitmask#0 to zero page equivalence class [ processChars::bitmask#0 ]
|
|
Added variable processChars::xpos#0 to zero page equivalence class [ processChars::xpos#0 ]
|
|
Added variable processChars::$12 to zero page equivalence class [ processChars::$12 ]
|
|
Added variable processChars::$13 to zero page equivalence class [ processChars::$13 ]
|
|
Added variable processChars::$18 to zero page equivalence class [ processChars::$18 ]
|
|
Added variable processChars::$15 to zero page equivalence class [ processChars::$15 ]
|
|
Added variable processChars::$16 to zero page equivalence class [ processChars::$16 ]
|
|
Added variable processChars::ypos#0 to zero page equivalence class [ processChars::ypos#0 ]
|
|
Added variable processChars::$26 to zero page equivalence class [ processChars::$26 ]
|
|
Added variable processChars::$27 to zero page equivalence class [ processChars::$27 ]
|
|
Added variable processChars::xchar#0 to zero page equivalence class [ processChars::xchar#0 ]
|
|
Added variable processChars::$37 to zero page equivalence class [ processChars::$37 ]
|
|
Added variable processChars::$31 to zero page equivalence class [ processChars::$31 ]
|
|
Added variable processChars::ychar#0 to zero page equivalence class [ processChars::ychar#0 ]
|
|
Added variable processChars::$38 to zero page equivalence class [ processChars::$38 ]
|
|
Added variable processChars::$1 to zero page equivalence class [ processChars::$1 ]
|
|
Added variable processChars::$34 to zero page equivalence class [ processChars::$34 ]
|
|
Complete equivalence classes
|
|
[ main::src#2 main::src#1 ]
|
|
[ main::dst#2 main::dst#1 ]
|
|
[ main::i#2 main::i#1 ]
|
|
[ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
[ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
[ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ]
|
|
[ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ]
|
|
[ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
[ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
|
[ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
[ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
[ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
|
[ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
[ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
[ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ]
|
|
[ initSprites::sp#2 initSprites::sp#1 ]
|
|
[ initSprites::i#2 initSprites::i#1 ]
|
|
[ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
[ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
|
|
[ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
[ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ]
|
|
[ mul8u::b#1 ]
|
|
[ mul8u::b#0 ]
|
|
[ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
|
[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
|
|
[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
|
[ irqBottom::i#2 irqBottom::i#1 ]
|
|
[ processChars::i#10 processChars::i#1 ]
|
|
[ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
[ irqTop::i#2 irqTop::i#1 ]
|
|
[ irqTop::i1#2 irqTop::i1#1 ]
|
|
[ main::$25 ]
|
|
[ main::$26 ]
|
|
[ main::$27 ]
|
|
[ main::$16 ]
|
|
[ getCharToProcess::return_x#0 ]
|
|
[ getCharToProcess::return_y#0 ]
|
|
[ getCharToProcess::return_dist#0 ]
|
|
[ main::center_x#0 ]
|
|
[ main::center_y#0 ]
|
|
[ main::center_dist#0 ]
|
|
[ startProcessing::center_x#0 ]
|
|
[ startProcessing::center_y#0 ]
|
|
[ startProcessing::$40 ]
|
|
[ startProcessing::$41 ]
|
|
[ startProcessing::$42 ]
|
|
[ startProcessing::$29 ]
|
|
[ startProcessing::$0 ]
|
|
[ startProcessing::$44 ]
|
|
[ startProcessing::$45 ]
|
|
[ startProcessing::$1 ]
|
|
[ startProcessing::$2 ]
|
|
[ startProcessing::screenPtr#0 ]
|
|
[ startProcessing::$4 ]
|
|
[ startProcessing::$5 ]
|
|
[ startProcessing::ch#0 ]
|
|
[ startProcessing::$7 ]
|
|
[ startProcessing::$8 ]
|
|
[ startProcessing::$10 ]
|
|
[ startProcessing::$11 ]
|
|
[ startProcessing::$12 ]
|
|
[ startProcessing::spriteX#0 ]
|
|
[ startProcessing::$14 ]
|
|
[ startProcessing::$15 ]
|
|
[ startProcessing::$16 ]
|
|
[ startProcessing::spriteY#0 ]
|
|
[ startProcessing::spritePtr#0 ]
|
|
[ startProcessing::$21 ]
|
|
[ startProcessing::$22 ]
|
|
[ startProcessing::$47 ]
|
|
[ startProcessing::$48 ]
|
|
[ startProcessing::$49 ]
|
|
[ startProcessing::$30 ]
|
|
[ getCharToProcess::$13 ]
|
|
[ getCharToProcess::$14 ]
|
|
[ getCharToProcess::$9 ]
|
|
[ getCharToProcess::$15 ]
|
|
[ getCharToProcess::$16 ]
|
|
[ getCharToProcess::$10 ]
|
|
[ getCharToProcess::$11 ]
|
|
[ mul8u::return#2 ]
|
|
[ initSquareTables::$6 ]
|
|
[ initSquareTables::$16 ]
|
|
[ mul8u::return#3 ]
|
|
[ initSquareTables::$14 ]
|
|
[ initSquareTables::$17 ]
|
|
[ mul8u::$1 ]
|
|
[ processChars::$64 ]
|
|
[ processChars::$65 ]
|
|
[ processChars::$66 ]
|
|
[ processChars::$36 ]
|
|
[ processChars::processing#0 ]
|
|
[ processChars::bitmask#0 ]
|
|
[ processChars::xpos#0 ]
|
|
[ processChars::$12 ]
|
|
[ processChars::$13 ]
|
|
[ processChars::$18 ]
|
|
[ processChars::$15 ]
|
|
[ processChars::$16 ]
|
|
[ processChars::ypos#0 ]
|
|
[ processChars::$26 ]
|
|
[ processChars::$27 ]
|
|
[ processChars::xchar#0 ]
|
|
[ processChars::$37 ]
|
|
[ processChars::$31 ]
|
|
[ processChars::ychar#0 ]
|
|
[ processChars::$38 ]
|
|
[ processChars::$1 ]
|
|
[ processChars::$34 ]
|
|
Allocated zp ZP_WORD:2 [ main::src#2 main::src#1 ]
|
|
Allocated zp ZP_WORD:4 [ main::dst#2 main::dst#1 ]
|
|
Allocated zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
|
Allocated zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
Allocated zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Allocated zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ]
|
|
Allocated zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ]
|
|
Allocated zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
Allocated zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
|
Allocated zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
Allocated zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
Allocated zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
|
Allocated zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
Allocated zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
Allocated zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ]
|
|
Allocated zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ]
|
|
Allocated zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ]
|
|
Allocated zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
Allocated zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
|
|
Allocated zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
Allocated zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ]
|
|
Allocated zp ZP_BYTE:31 [ mul8u::b#1 ]
|
|
Allocated zp ZP_BYTE:32 [ mul8u::b#0 ]
|
|
Allocated zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
|
Allocated zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ]
|
|
Allocated zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
|
Allocated zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ]
|
|
Allocated zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Allocated zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Allocated zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ]
|
|
Allocated zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ]
|
|
Allocated zp ZP_BYTE:43 [ main::$25 ]
|
|
Allocated zp ZP_BYTE:44 [ main::$26 ]
|
|
Allocated zp ZP_BYTE:45 [ main::$27 ]
|
|
Allocated zp ZP_BYTE:46 [ main::$16 ]
|
|
Allocated zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ]
|
|
Allocated zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ]
|
|
Allocated zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ]
|
|
Allocated zp ZP_BYTE:51 [ main::center_x#0 ]
|
|
Allocated zp ZP_BYTE:52 [ main::center_y#0 ]
|
|
Allocated zp ZP_WORD:53 [ main::center_dist#0 ]
|
|
Allocated zp ZP_BYTE:55 [ startProcessing::center_x#0 ]
|
|
Allocated zp ZP_BYTE:56 [ startProcessing::center_y#0 ]
|
|
Allocated zp ZP_BYTE:57 [ startProcessing::$40 ]
|
|
Allocated zp ZP_BYTE:58 [ startProcessing::$41 ]
|
|
Allocated zp ZP_BYTE:59 [ startProcessing::$42 ]
|
|
Allocated zp ZP_BYTE:60 [ startProcessing::$29 ]
|
|
Allocated zp ZP_WORD:61 [ startProcessing::$0 ]
|
|
Allocated zp ZP_WORD:63 [ startProcessing::$44 ]
|
|
Allocated zp ZP_WORD:65 [ startProcessing::$45 ]
|
|
Allocated zp ZP_WORD:67 [ startProcessing::$1 ]
|
|
Allocated zp ZP_WORD:69 [ startProcessing::$2 ]
|
|
Allocated zp ZP_WORD:71 [ startProcessing::screenPtr#0 ]
|
|
Allocated zp ZP_WORD:73 [ startProcessing::$4 ]
|
|
Allocated zp ZP_WORD:75 [ startProcessing::$5 ]
|
|
Allocated zp ZP_BYTE:77 [ startProcessing::ch#0 ]
|
|
Allocated zp ZP_WORD:78 [ startProcessing::$7 ]
|
|
Allocated zp ZP_WORD:80 [ startProcessing::$8 ]
|
|
Allocated zp ZP_WORD:82 [ startProcessing::$10 ]
|
|
Allocated zp ZP_WORD:84 [ startProcessing::$11 ]
|
|
Allocated zp ZP_WORD:86 [ startProcessing::$12 ]
|
|
Allocated zp ZP_WORD:88 [ startProcessing::spriteX#0 ]
|
|
Allocated zp ZP_WORD:90 [ startProcessing::$14 ]
|
|
Allocated zp ZP_WORD:92 [ startProcessing::$15 ]
|
|
Allocated zp ZP_WORD:94 [ startProcessing::$16 ]
|
|
Allocated zp ZP_WORD:96 [ startProcessing::spriteY#0 ]
|
|
Allocated zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ]
|
|
Allocated zp ZP_BYTE:99 [ startProcessing::$21 ]
|
|
Allocated zp ZP_WORD:100 [ startProcessing::$22 ]
|
|
Allocated zp ZP_BYTE:102 [ startProcessing::$47 ]
|
|
Allocated zp ZP_BYTE:103 [ startProcessing::$48 ]
|
|
Allocated zp ZP_BYTE:104 [ startProcessing::$49 ]
|
|
Allocated zp ZP_BYTE:105 [ startProcessing::$30 ]
|
|
Allocated zp ZP_BYTE:106 [ getCharToProcess::$13 ]
|
|
Allocated zp ZP_BYTE:107 [ getCharToProcess::$14 ]
|
|
Allocated zp ZP_WORD:108 [ getCharToProcess::$9 ]
|
|
Allocated zp ZP_WORD:110 [ getCharToProcess::$15 ]
|
|
Allocated zp ZP_WORD:112 [ getCharToProcess::$16 ]
|
|
Allocated zp ZP_WORD:114 [ getCharToProcess::$10 ]
|
|
Allocated zp ZP_WORD:116 [ getCharToProcess::$11 ]
|
|
Allocated zp ZP_WORD:118 [ mul8u::return#2 ]
|
|
Allocated zp ZP_WORD:120 [ initSquareTables::$6 ]
|
|
Allocated zp ZP_BYTE:122 [ initSquareTables::$16 ]
|
|
Allocated zp ZP_WORD:123 [ mul8u::return#3 ]
|
|
Allocated zp ZP_WORD:125 [ initSquareTables::$14 ]
|
|
Allocated zp ZP_BYTE:127 [ initSquareTables::$17 ]
|
|
Allocated zp ZP_BYTE:128 [ mul8u::$1 ]
|
|
Allocated zp ZP_BYTE:129 [ processChars::$64 ]
|
|
Allocated zp ZP_BYTE:130 [ processChars::$65 ]
|
|
Allocated zp ZP_BYTE:131 [ processChars::$66 ]
|
|
Allocated zp ZP_BYTE:132 [ processChars::$36 ]
|
|
Allocated zp ZP_WORD:133 [ processChars::processing#0 ]
|
|
Allocated zp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Allocated zp ZP_WORD:136 [ processChars::xpos#0 ]
|
|
Allocated zp ZP_BYTE:138 [ processChars::$12 ]
|
|
Allocated zp ZP_BYTE:139 [ processChars::$13 ]
|
|
Allocated zp ZP_BYTE:140 [ processChars::$18 ]
|
|
Allocated zp ZP_BYTE:141 [ processChars::$15 ]
|
|
Allocated zp ZP_WORD:142 [ processChars::$16 ]
|
|
Allocated zp ZP_BYTE:144 [ processChars::ypos#0 ]
|
|
Allocated zp ZP_WORD:145 [ processChars::$26 ]
|
|
Allocated zp ZP_BYTE:147 [ processChars::$27 ]
|
|
Allocated zp ZP_BYTE:148 [ processChars::xchar#0 ]
|
|
Allocated zp ZP_BYTE:149 [ processChars::$37 ]
|
|
Allocated zp ZP_BYTE:150 [ processChars::$31 ]
|
|
Allocated zp ZP_BYTE:151 [ processChars::ychar#0 ]
|
|
Allocated zp ZP_BYTE:152 [ processChars::$38 ]
|
|
Allocated zp ZP_BYTE:153 [ processChars::$1 ]
|
|
Allocated zp ZP_BYTE:154 [ processChars::$34 ]
|
|
|
|
INITIAL ASM
|
|
//SEG0 File Comments
|
|
// Black Hole at the center of the BASIC screen sucking in letters
|
|
//SEG1 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(bbegin)
|
|
.pc = $80d "Program"
|
|
//SEG2 Global Constants & labels
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// RAM in $A000, $E000 I/O in $D000
|
|
.const PROCPORT_RAM_IO = $35
|
|
// RAM in $A000, $E000 CHAR ROM in $D000
|
|
.const PROCPORT_RAM_CHARROM = $31
|
|
// The address of the CHARGEN character set
|
|
.label CHARGEN = $d000
|
|
// Positions of the border (in sprite positions)
|
|
.const BORDER_XPOS_LEFT = $18
|
|
.const BORDER_XPOS_RIGHT = $158
|
|
.const BORDER_YPOS_TOP = $32
|
|
.const BORDER_YPOS_BOTTOM = $fa
|
|
// The offset of the sprite pointers from the screen start address
|
|
.const SPRITE_PTRS = $3f8
|
|
.label SPRITES_XPOS = $d000
|
|
.label SPRITES_YPOS = $d001
|
|
.label SPRITES_XMSB = $d010
|
|
.label RASTER = $d012
|
|
.label SPRITES_ENABLE = $d015
|
|
.label SPRITES_EXPAND_Y = $d017
|
|
.label SPRITES_MC = $d01c
|
|
.label SPRITES_EXPAND_X = $d01d
|
|
.label SPRITES_COLS = $d027
|
|
.label VIC_CONTROL = $d011
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Bits for the IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Color Ram
|
|
.label COLS = $d800
|
|
// CIA#1 Interrupt Status & Control Register
|
|
.label CIA1_INTERRUPT = $dc0d
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.const LIGHT_BLUE = $e
|
|
// Address of the screen
|
|
.label SCREEN = $400
|
|
// Sprite data for the animating sprites
|
|
.label SPRITE_DATA = $2000
|
|
// Values added to VX
|
|
.label VXSIN = $2200
|
|
// Values added to VY
|
|
.label VYSIN = $2280
|
|
// Max number of chars processed at once
|
|
.const NUM_PROCESSING = 8
|
|
// Distance value meaning not found
|
|
.const NOT_FOUND = $ffff
|
|
// Values for ProcessingSprite.status
|
|
.const STATUS_FREE = 0
|
|
.const STATUS_NEW = 1
|
|
.const STATUS_PROCESSING = 2
|
|
.const RASTER_IRQ_TOP = $30
|
|
.const RASTER_IRQ_MIDDLE = $ff
|
|
.const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4
|
|
.const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4
|
|
.const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4
|
|
.const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4
|
|
//SEG3 @begin
|
|
bbegin:
|
|
jmp b1
|
|
//SEG4 @1
|
|
b1:
|
|
//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }}
|
|
//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }}
|
|
//SEG7 [3] phi from @1 to @2 [phi:@1->@2]
|
|
b2_from_b1:
|
|
jmp b2
|
|
//SEG8 @2
|
|
b2:
|
|
//SEG9 [4] call main
|
|
//SEG10 [6] phi from @2 to main [phi:@2->main]
|
|
main_from_b2:
|
|
jsr main
|
|
//SEG11 [5] phi from @2 to @end [phi:@2->@end]
|
|
bend_from_b2:
|
|
jmp bend
|
|
//SEG12 @end
|
|
bend:
|
|
//SEG13 main
|
|
main: {
|
|
.label _16 = $2e
|
|
.label src = 2
|
|
.label dst = 4
|
|
.label i = 6
|
|
.label center_x = $33
|
|
.label center_y = $34
|
|
.label center_dist = $35
|
|
.label _25 = $2b
|
|
.label _26 = $2c
|
|
.label _27 = $2d
|
|
//SEG14 [7] call initSquareTables
|
|
//SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables]
|
|
initSquareTables_from_main:
|
|
jsr initSquareTables
|
|
//SEG16 [8] phi from main to main::@1 [phi:main->main::@1]
|
|
b1_from_main:
|
|
//SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta dst
|
|
lda #>SCREEN_COPY
|
|
sta dst+1
|
|
//SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta src
|
|
lda #>SCREEN
|
|
sta src+1
|
|
jmp b1
|
|
// Copy screen to screen copy
|
|
//SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
|
b1_from_b1:
|
|
//SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy
|
|
//SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG22 main::@1
|
|
b1:
|
|
//SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (src),y
|
|
ldy #0
|
|
sta (dst),y
|
|
//SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1
|
|
inc src
|
|
bne !+
|
|
inc src+1
|
|
!:
|
|
//SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc dst
|
|
bne !+
|
|
inc dst+1
|
|
!:
|
|
//SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1
|
|
lda src+1
|
|
cmp #>SCREEN+$3e8
|
|
bne b1_from_b1
|
|
lda src
|
|
cmp #<SCREEN+$3e8
|
|
bne b1_from_b1
|
|
//SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
b2_from_b1:
|
|
//SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b2
|
|
// Init processing array
|
|
//SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
|
b2_from_b2:
|
|
//SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG31 main::@2
|
|
b2:
|
|
//SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda i
|
|
asl
|
|
sta _25
|
|
//SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _25
|
|
clc
|
|
adc i
|
|
sta _26
|
|
//SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
|
lda _26
|
|
asl
|
|
asl
|
|
sta _27
|
|
//SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _27
|
|
clc
|
|
adc i
|
|
sta _16
|
|
//SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2
|
|
lda _16
|
|
ldx #0
|
|
tay
|
|
txa
|
|
sta PROCESSING,y
|
|
//SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2
|
|
lda _16
|
|
ldx #0
|
|
tay
|
|
txa
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y
|
|
//SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2
|
|
lda _16
|
|
ldx #0
|
|
tay
|
|
txa
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y
|
|
//SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuz1=vbuc2
|
|
lda _16
|
|
ldx #0
|
|
tay
|
|
txa
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y
|
|
//SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #0
|
|
ldy _16
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y
|
|
//SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #0
|
|
ldy _16
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y
|
|
//SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #STATUS_FREE
|
|
ldy _16
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
|
//SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuz1=pbuc2
|
|
ldy _16
|
|
lda #<0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y
|
|
lda #>0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y
|
|
//SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b2_from_b2
|
|
//SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
|
|
b3_from_b2:
|
|
jmp b3
|
|
//SEG47 main::@3
|
|
b3:
|
|
//SEG48 [29] call initSprites
|
|
//SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites]
|
|
initSprites_from_b3:
|
|
jsr initSprites
|
|
//SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8]
|
|
b8_from_b3:
|
|
jmp b8
|
|
//SEG51 main::@8
|
|
b8:
|
|
//SEG52 [31] call setupRasterIrq
|
|
jsr setupRasterIrq
|
|
//SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4]
|
|
b4_from_b5:
|
|
b4_from_b8:
|
|
jmp b4
|
|
// Main loop
|
|
//SEG54 main::@4
|
|
b4:
|
|
//SEG55 [33] call getCharToProcess
|
|
//SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess]
|
|
getCharToProcess_from_b4:
|
|
jsr getCharToProcess
|
|
//SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuz1=vbuz2
|
|
lda getCharToProcess.return_x_1
|
|
sta getCharToProcess.return_x
|
|
//SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuz1=vbuz2
|
|
lda getCharToProcess.return_y_1
|
|
sta getCharToProcess.return_y
|
|
//SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda getCharToProcess.return_dist_1
|
|
sta getCharToProcess.return_dist
|
|
lda getCharToProcess.return_dist_1+1
|
|
sta getCharToProcess.return_dist+1
|
|
jmp b9
|
|
//SEG60 main::@9
|
|
b9:
|
|
//SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0 -- vbuz1=vbuz2
|
|
lda getCharToProcess.return_x
|
|
sta center_x
|
|
//SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0 -- vbuz1=vbuz2
|
|
lda getCharToProcess.return_y
|
|
sta center_y
|
|
//SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 -- vwuz1=vwuz2
|
|
lda getCharToProcess.return_dist
|
|
sta center_dist
|
|
lda getCharToProcess.return_dist+1
|
|
sta center_dist+1
|
|
//SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1
|
|
lda center_dist+1
|
|
cmp #>NOT_FOUND
|
|
bne b5
|
|
lda center_dist
|
|
cmp #<NOT_FOUND
|
|
bne b5
|
|
jmp b6
|
|
//SEG65 main::@6
|
|
b6:
|
|
//SEG66 [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' -- _deref_pbuc1=vbuc2
|
|
lda #'.'
|
|
sta SCREEN+$3e7
|
|
jmp b7
|
|
//SEG67 main::@7
|
|
b7:
|
|
//SEG68 [42] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc COLS+$3e7
|
|
jmp b7
|
|
//SEG69 main::@5
|
|
b5:
|
|
//SEG70 [43] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 -- vbuz1=vbuz2
|
|
lda center_x
|
|
sta startProcessing.center_x
|
|
//SEG71 [44] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 -- vbuz1=vbuz2
|
|
lda center_y
|
|
sta startProcessing.center_y
|
|
//SEG72 [45] call startProcessing
|
|
//SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing]
|
|
startProcessing_from_b5:
|
|
jsr startProcessing
|
|
jmp b4_from_b5
|
|
}
|
|
//SEG74 startProcessing
|
|
// Start processing a char - by inserting it into the PROCESSING array
|
|
// startProcessing(byte zeropage($37) center_x, byte zeropage($38) center_y)
|
|
startProcessing: {
|
|
.label _0 = $3d
|
|
.label _1 = $43
|
|
.label _2 = $45
|
|
.label _4 = $49
|
|
.label _5 = $4b
|
|
.label _7 = $4e
|
|
.label _8 = $50
|
|
.label _10 = $52
|
|
.label _11 = $54
|
|
.label _12 = $56
|
|
.label _14 = $5a
|
|
.label _15 = $5c
|
|
.label _16 = $5e
|
|
.label _21 = $63
|
|
.label _22 = $64
|
|
.label _29 = $3c
|
|
.label _30 = $69
|
|
.label center_x = $37
|
|
.label center_y = $38
|
|
.label i = 8
|
|
.label screenPtr = $47
|
|
.label spriteData = $b
|
|
.label ch = $4d
|
|
.label chargenData = 9
|
|
.label i1 = $d
|
|
.label spriteX = $58
|
|
.label spriteY = $60
|
|
.label spritePtr = $62
|
|
.label freeIdx = 8
|
|
.label freeIdx_6 = 7
|
|
.label _40 = $39
|
|
.label _41 = $3a
|
|
.label _42 = $3b
|
|
.label _44 = $3f
|
|
.label _45 = $41
|
|
.label _47 = $66
|
|
.label _48 = $67
|
|
.label _49 = $68
|
|
.label freeIdx_7 = 7
|
|
//SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1]
|
|
b1_from_startProcessing:
|
|
//SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuz1=vbuc1
|
|
lda #$ff
|
|
sta freeIdx_6
|
|
jmp b1
|
|
//SEG77 startProcessing::@1
|
|
b1:
|
|
//SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2]
|
|
b2_from_b1:
|
|
//SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b2
|
|
//SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2]
|
|
b2_from_b3:
|
|
//SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG82 startProcessing::@2
|
|
b2:
|
|
//SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda i
|
|
asl
|
|
sta _40
|
|
//SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _40
|
|
clc
|
|
adc i
|
|
sta _41
|
|
//SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
|
lda _41
|
|
asl
|
|
asl
|
|
sta _42
|
|
//SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _42
|
|
clc
|
|
adc i
|
|
sta _29
|
|
//SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
|
|
lda #STATUS_FREE
|
|
ldy _29
|
|
cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
|
bne b3
|
|
//SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4]
|
|
b4_from_b2:
|
|
b4_from_b9:
|
|
//SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG90 startProcessing::@4
|
|
b4:
|
|
//SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #$ff
|
|
cmp freeIdx
|
|
beq b8
|
|
jmp b5
|
|
//SEG92 startProcessing::@5
|
|
b5:
|
|
//SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _0
|
|
lda #0
|
|
sta _0+1
|
|
//SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _0
|
|
asl
|
|
sta _44
|
|
lda _0+1
|
|
rol
|
|
sta _44+1
|
|
asl _44
|
|
rol _44+1
|
|
//SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz3
|
|
lda _44
|
|
clc
|
|
adc _0
|
|
sta _45
|
|
lda _44+1
|
|
adc _0+1
|
|
sta _45+1
|
|
//SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda _45
|
|
asl
|
|
sta _1
|
|
lda _45+1
|
|
rol
|
|
sta _1+1
|
|
asl _1
|
|
rol _1+1
|
|
asl _1
|
|
rol _1+1
|
|
//SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda _1
|
|
clc
|
|
adc #<SCREEN
|
|
sta _2
|
|
lda _1+1
|
|
adc #>SCREEN
|
|
sta _2+1
|
|
//SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3
|
|
lda center_x
|
|
clc
|
|
adc _2
|
|
sta screenPtr
|
|
lda #0
|
|
adc _2+1
|
|
sta screenPtr+1
|
|
//SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2
|
|
lda freeIdx
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz2_rol_6
|
|
lda _4
|
|
asl
|
|
sta _5
|
|
lda _4+1
|
|
rol
|
|
sta _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
//SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda _5
|
|
clc
|
|
adc #<SPRITE_DATA
|
|
sta spriteData
|
|
lda _5+1
|
|
adc #>SPRITE_DATA
|
|
sta spriteData+1
|
|
//SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuz1=pbuz2_derefidx_vbuz3
|
|
ldy center_x
|
|
lda (_2),y
|
|
sta ch
|
|
//SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuz2
|
|
lda ch
|
|
sta _7
|
|
lda #0
|
|
sta _7+1
|
|
//SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda _7
|
|
asl
|
|
sta _8
|
|
lda _7+1
|
|
rol
|
|
sta _8+1
|
|
asl _8
|
|
rol _8+1
|
|
asl _8
|
|
rol _8+1
|
|
//SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda _8
|
|
clc
|
|
adc #<CHARGEN
|
|
sta chargenData
|
|
lda _8+1
|
|
adc #>CHARGEN
|
|
sta chargenData+1
|
|
//SEG106 asm { sei }
|
|
sei
|
|
//SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_CHARROM
|
|
sta PROCPORT
|
|
//SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6]
|
|
b6_from_b5:
|
|
//SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i1
|
|
//SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy
|
|
//SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy
|
|
jmp b6
|
|
//SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6]
|
|
b6_from_b6:
|
|
//SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy
|
|
//SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy
|
|
//SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy
|
|
jmp b6
|
|
//SEG116 startProcessing::@6
|
|
b6:
|
|
//SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (chargenData),y
|
|
ldy #0
|
|
sta (spriteData),y
|
|
//SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #3
|
|
clc
|
|
adc spriteData
|
|
sta spriteData
|
|
bcc !+
|
|
inc spriteData+1
|
|
!:
|
|
//SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1
|
|
inc chargenData
|
|
bne !+
|
|
inc chargenData+1
|
|
!:
|
|
//SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuz1=_inc_vbuz1
|
|
inc i1
|
|
//SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp i1
|
|
bne b6_from_b6
|
|
jmp b7
|
|
//SEG122 startProcessing::@7
|
|
b7:
|
|
//SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG124 asm { cli }
|
|
cli
|
|
//SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2
|
|
lda center_x
|
|
sta _10
|
|
lda #0
|
|
sta _10+1
|
|
//SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda _10
|
|
asl
|
|
sta _11
|
|
lda _10+1
|
|
rol
|
|
sta _11+1
|
|
asl _11
|
|
rol _11+1
|
|
asl _11
|
|
rol _11+1
|
|
//SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz2
|
|
lda #BORDER_XPOS_LEFT
|
|
clc
|
|
adc _11
|
|
sta _12
|
|
lda #0
|
|
adc _11+1
|
|
sta _12+1
|
|
//SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz2_rol_4
|
|
lda _12
|
|
asl
|
|
sta spriteX
|
|
lda _12+1
|
|
rol
|
|
sta spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
//SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _14
|
|
lda #0
|
|
sta _14+1
|
|
//SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda _14
|
|
asl
|
|
sta _15
|
|
lda _14+1
|
|
rol
|
|
sta _15+1
|
|
asl _15
|
|
rol _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz2
|
|
lda #BORDER_YPOS_TOP
|
|
clc
|
|
adc _15
|
|
sta _16
|
|
lda #0
|
|
adc _15+1
|
|
sta _16+1
|
|
//SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz2_rol_4
|
|
lda _16
|
|
asl
|
|
sta spriteY
|
|
lda _16+1
|
|
rol
|
|
sta spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
//SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2
|
|
lax freeIdx
|
|
axs #-[SPRITE_DATA/$40]
|
|
stx spritePtr
|
|
//SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuz1=vbuz2_rol_3
|
|
lda freeIdx
|
|
asl
|
|
asl
|
|
asl
|
|
sta _21
|
|
//SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuz2
|
|
lda _21
|
|
sta _22
|
|
lda #0
|
|
sta _22+1
|
|
//SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda freeIdx
|
|
asl
|
|
sta _47
|
|
//SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _47
|
|
clc
|
|
adc freeIdx
|
|
sta _48
|
|
//SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
|
lda _48
|
|
asl
|
|
asl
|
|
sta _49
|
|
//SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _49
|
|
clc
|
|
adc freeIdx
|
|
sta _30
|
|
//SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy _30
|
|
lda spriteX
|
|
sta PROCESSING,y
|
|
lda spriteX+1
|
|
sta PROCESSING+1,y
|
|
//SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy _30
|
|
lda spriteY
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,y
|
|
lda spriteY+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,y
|
|
//SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy _30
|
|
lda _22
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,y
|
|
lda _22+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,y
|
|
//SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuz1=vbuc2
|
|
lda _30
|
|
ldx #$3c
|
|
tay
|
|
txa
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,y
|
|
//SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda freeIdx
|
|
ldy _30
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,y
|
|
//SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda spritePtr
|
|
ldy _30
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,y
|
|
//SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #STATUS_NEW
|
|
ldy _30
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
|
//SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuz1=pbuz2
|
|
ldy _30
|
|
lda screenPtr
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,y
|
|
lda screenPtr+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,y
|
|
jmp breturn
|
|
//SEG148 startProcessing::@return
|
|
breturn:
|
|
//SEG149 [102] return
|
|
rts
|
|
//SEG150 startProcessing::@8
|
|
b8:
|
|
//SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuz1=vbuz2
|
|
lda freeIdx
|
|
sta freeIdx_7
|
|
//SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1]
|
|
b1_from_b8:
|
|
//SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG154 startProcessing::@3
|
|
b3:
|
|
//SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b2_from_b3
|
|
jmp b9
|
|
//SEG157 startProcessing::@9
|
|
b9:
|
|
//SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuz2
|
|
lda freeIdx_6
|
|
sta freeIdx
|
|
jmp b4_from_b9
|
|
}
|
|
//SEG159 getCharToProcess
|
|
// Find the non-space char closest to the center of the screen
|
|
// If no non-space char is found the distance will be 0xffff
|
|
getCharToProcess: {
|
|
.label _9 = $6c
|
|
.label _10 = $72
|
|
.label _11 = $74
|
|
.label _13 = $6a
|
|
.label _14 = $6b
|
|
.label return_x = $2f
|
|
.label return_y = $30
|
|
.label return_dist = $31
|
|
.label x = $11
|
|
.label dist = $16
|
|
.label screen_line = $e
|
|
.label y = $10
|
|
.label return_x_1 = $14
|
|
.label return_y_1 = $15
|
|
.label return_dist_1 = $16
|
|
.label closest_dist = $12
|
|
.label closest_x = $14
|
|
.label closest_y = $15
|
|
.label _15 = $6e
|
|
.label _16 = $70
|
|
.label return_dist_5 = $16
|
|
.label return_dist_6 = $16
|
|
.label return_x_7 = $14
|
|
.label return_y_7 = $15
|
|
//SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1]
|
|
b1_from_getCharToProcess:
|
|
//SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta closest_y
|
|
//SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta closest_x
|
|
//SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1
|
|
lda #<NOT_FOUND
|
|
sta closest_dist
|
|
lda #>NOT_FOUND
|
|
sta closest_dist+1
|
|
//SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta screen_line
|
|
lda #>SCREEN_COPY
|
|
sta screen_line+1
|
|
jmp b1
|
|
//SEG166 getCharToProcess::@1
|
|
b1:
|
|
//SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2]
|
|
b2_from_b1:
|
|
//SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy
|
|
//SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy
|
|
//SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy
|
|
//SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
jmp b2
|
|
//SEG172 getCharToProcess::@2
|
|
b2:
|
|
//SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1
|
|
ldy x
|
|
lda (screen_line),y
|
|
cmp #' '
|
|
beq b11
|
|
jmp b4
|
|
//SEG174 getCharToProcess::@4
|
|
b4:
|
|
//SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda x
|
|
asl
|
|
sta _13
|
|
//SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda y
|
|
asl
|
|
sta _14
|
|
//SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuz2_plus_pwuc2_derefidx_vbuz3
|
|
ldx _13
|
|
ldy _14
|
|
lda SQUARES_X,x
|
|
clc
|
|
adc SQUARES_Y,y
|
|
sta dist
|
|
lda SQUARES_X+1,x
|
|
adc SQUARES_Y+1,y
|
|
sta dist+1
|
|
//SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1
|
|
lda closest_dist+1
|
|
cmp dist+1
|
|
bne !+
|
|
lda closest_dist
|
|
cmp dist
|
|
beq b12
|
|
!:
|
|
bcc b12
|
|
jmp b5
|
|
//SEG179 getCharToProcess::@5
|
|
b5:
|
|
//SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2
|
|
lda x
|
|
sta return_x_7
|
|
//SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2
|
|
lda y
|
|
sta return_y_7
|
|
//SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3]
|
|
b3_from_b11:
|
|
b3_from_b12:
|
|
b3_from_b5:
|
|
//SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy
|
|
//SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy
|
|
//SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy
|
|
jmp b3
|
|
//SEG186 getCharToProcess::@3
|
|
b3:
|
|
//SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b10
|
|
jmp b6
|
|
//SEG189 getCharToProcess::@6
|
|
b6:
|
|
//SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc screen_line
|
|
sta screen_line
|
|
bcc !+
|
|
inc screen_line+1
|
|
!:
|
|
//SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b9
|
|
jmp b7
|
|
//SEG193 getCharToProcess::@7
|
|
b7:
|
|
//SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1
|
|
lda return_dist_1
|
|
cmp #<NOT_FOUND
|
|
bne !+
|
|
lda return_dist_1+1
|
|
cmp #>NOT_FOUND
|
|
beq breturn
|
|
!:
|
|
jmp b8
|
|
//SEG195 getCharToProcess::@8
|
|
b8:
|
|
//SEG196 [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2
|
|
lda return_y_1
|
|
sta _9
|
|
lda #0
|
|
sta _9+1
|
|
//SEG197 [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _9
|
|
asl
|
|
sta _15
|
|
lda _9+1
|
|
rol
|
|
sta _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG198 [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz3
|
|
lda _15
|
|
clc
|
|
adc _9
|
|
sta _16
|
|
lda _15+1
|
|
adc _9+1
|
|
sta _16+1
|
|
//SEG199 [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda _16
|
|
asl
|
|
sta _10
|
|
lda _16+1
|
|
rol
|
|
sta _10+1
|
|
asl _10
|
|
rol _10+1
|
|
asl _10
|
|
rol _10+1
|
|
//SEG200 [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda _10
|
|
clc
|
|
adc #<SCREEN_COPY
|
|
sta _11
|
|
lda _10+1
|
|
adc #>SCREEN_COPY
|
|
sta _11+1
|
|
//SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1
|
|
// clear the found char on the screen copy
|
|
lda #' '
|
|
ldy return_x_1
|
|
sta (_11),y
|
|
jmp breturn
|
|
//SEG202 getCharToProcess::@return
|
|
breturn:
|
|
//SEG203 [130] return
|
|
rts
|
|
//SEG204 getCharToProcess::@9
|
|
b9:
|
|
//SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist_1
|
|
sta closest_dist
|
|
lda return_dist_1+1
|
|
sta closest_dist+1
|
|
//SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1]
|
|
b1_from_b9:
|
|
//SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy
|
|
//SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy
|
|
//SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy
|
|
//SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy
|
|
//SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy
|
|
jmp b1
|
|
//SEG212 getCharToProcess::@10
|
|
b10:
|
|
//SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist_1
|
|
sta closest_dist
|
|
lda return_dist_1+1
|
|
sta closest_dist+1
|
|
//SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2]
|
|
b2_from_b10:
|
|
//SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy
|
|
//SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy
|
|
//SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy
|
|
//SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy
|
|
jmp b2
|
|
//SEG219 getCharToProcess::@12
|
|
b12:
|
|
//SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist_6
|
|
lda closest_dist+1
|
|
sta return_dist_6+1
|
|
jmp b3_from_b12
|
|
//SEG221 getCharToProcess::@11
|
|
b11:
|
|
//SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist_5
|
|
lda closest_dist+1
|
|
sta return_dist_5+1
|
|
jmp b3_from_b11
|
|
}
|
|
//SEG223 setupRasterIrq
|
|
// Setup Raster IRQ
|
|
setupRasterIrq: {
|
|
.label irqRoutine = irqTop
|
|
//SEG224 asm { sei }
|
|
sei
|
|
//SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1_INTERRUPT
|
|
jmp b1
|
|
//SEG228 setupRasterIrq::@1
|
|
b1:
|
|
//SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
|
lda #$7f
|
|
and VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
jmp b2
|
|
//SEG230 setupRasterIrq::@2
|
|
b2:
|
|
//SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
//SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irqRoutine
|
|
sta HARDWARE_IRQ
|
|
lda #>irqRoutine
|
|
sta HARDWARE_IRQ+1
|
|
//SEG234 asm { cli }
|
|
cli
|
|
jmp breturn
|
|
//SEG235 setupRasterIrq::@return
|
|
breturn:
|
|
//SEG236 [144] return
|
|
rts
|
|
}
|
|
//SEG237 initSprites
|
|
// Initialize sprites
|
|
initSprites: {
|
|
.label sp = $18
|
|
.label i = $1a
|
|
//SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1]
|
|
b1_from_initSprites:
|
|
//SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1
|
|
lda #<SPRITE_DATA
|
|
sta sp
|
|
lda #>SPRITE_DATA
|
|
sta sp+1
|
|
jmp b1
|
|
// Clear sprite data
|
|
//SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1]
|
|
b1_from_b1:
|
|
//SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG242 initSprites::@1
|
|
b1:
|
|
//SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
ldy #0
|
|
sta (sp),y
|
|
//SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1
|
|
inc sp
|
|
bne !+
|
|
inc sp+1
|
|
!:
|
|
//SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1
|
|
lda sp+1
|
|
cmp #>SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1_from_b1
|
|
bne !+
|
|
lda sp
|
|
cmp #<SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1_from_b1
|
|
!:
|
|
//SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2]
|
|
b2_from_b1:
|
|
//SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b2
|
|
// Initialize sprite registers
|
|
//SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2]
|
|
b2_from_b2:
|
|
//SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG250 initSprites::@2
|
|
b2:
|
|
//SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
lda #LIGHT_BLUE
|
|
ldy i
|
|
sta SPRITES_COLS,y
|
|
//SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp i
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG254 initSprites::@3
|
|
b3:
|
|
//SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_MC
|
|
//SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_EXPAND_X
|
|
//SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_EXPAND_Y
|
|
jmp breturn
|
|
//SEG258 initSprites::@return
|
|
breturn:
|
|
//SEG259 [157] return
|
|
rts
|
|
}
|
|
//SEG260 initSquareTables
|
|
// initialize SQUARES table
|
|
initSquareTables: {
|
|
.label _2 = $1c
|
|
.label _4 = $1c
|
|
.label _6 = $78
|
|
.label _10 = $1e
|
|
.label _12 = $1e
|
|
.label _14 = $7d
|
|
.label _16 = $7a
|
|
.label _17 = $7f
|
|
.label x_dist = $1c
|
|
.label x = $1b
|
|
.label y_dist = $1e
|
|
.label y = $1d
|
|
//SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1]
|
|
b1_from_initSquareTables:
|
|
//SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
jmp b1
|
|
//SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1]
|
|
b1_from_b9:
|
|
//SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG265 initSquareTables::@1
|
|
b1:
|
|
//SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda x
|
|
cmp #$14
|
|
bcc b2
|
|
jmp b3
|
|
//SEG267 initSquareTables::@3
|
|
b3:
|
|
//SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuz1=vbuz2_minus_vbuc1
|
|
lax x
|
|
axs #$14
|
|
stx _2
|
|
//SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4]
|
|
b4_from_b2:
|
|
b4_from_b3:
|
|
//SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG271 initSquareTables::@4
|
|
b4:
|
|
//SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2
|
|
lda x_dist
|
|
sta mul8u.a
|
|
//SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0 -- vbuz1=vbuz2
|
|
lda x_dist
|
|
sta mul8u.b
|
|
//SEG274 [165] call mul8u
|
|
//SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u]
|
|
mul8u_from_b4:
|
|
//SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy
|
|
//SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuz2
|
|
lda mul8u.b
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2
|
|
lda mul8u.res
|
|
sta mul8u.return
|
|
lda mul8u.res+1
|
|
sta mul8u.return+1
|
|
jmp b9
|
|
//SEG279 initSquareTables::@9
|
|
b9:
|
|
//SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 -- vwuz1=vwuz2
|
|
lda mul8u.return
|
|
sta _6
|
|
lda mul8u.return+1
|
|
sta _6+1
|
|
//SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda x
|
|
asl
|
|
sta _16
|
|
//SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy _16
|
|
lda _6
|
|
sta SQUARES_X,y
|
|
lda _6+1
|
|
sta SQUARES_X+1,y
|
|
//SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b1_from_b9
|
|
//SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5]
|
|
b5_from_b9:
|
|
//SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
jmp b5
|
|
//SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5]
|
|
b5_from_b10:
|
|
//SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy
|
|
jmp b5
|
|
//SEG289 initSquareTables::@5
|
|
b5:
|
|
//SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda y
|
|
cmp #$c
|
|
bcc b6
|
|
jmp b7
|
|
//SEG291 initSquareTables::@7
|
|
b7:
|
|
//SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuz1=vbuz2_minus_vbuc1
|
|
lax y
|
|
axs #$c
|
|
stx _10
|
|
//SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8]
|
|
b8_from_b6:
|
|
b8_from_b7:
|
|
//SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy
|
|
jmp b8
|
|
//SEG295 initSquareTables::@8
|
|
b8:
|
|
//SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2
|
|
lda y_dist
|
|
sta mul8u.a
|
|
//SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0 -- vbuz1=vbuz2
|
|
lda y_dist
|
|
sta mul8u.b_1
|
|
//SEG298 [178] call mul8u
|
|
//SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u]
|
|
mul8u_from_b8:
|
|
//SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy
|
|
//SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuz2
|
|
lda mul8u.b_1
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2
|
|
lda mul8u.res
|
|
sta mul8u.return_3
|
|
lda mul8u.res+1
|
|
sta mul8u.return_3+1
|
|
jmp b10
|
|
//SEG303 initSquareTables::@10
|
|
b10:
|
|
//SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 -- vwuz1=vwuz2
|
|
lda mul8u.return_3
|
|
sta _14
|
|
lda mul8u.return_3+1
|
|
sta _14+1
|
|
//SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda y
|
|
asl
|
|
sta _17
|
|
//SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy _17
|
|
lda _14
|
|
sta SQUARES_Y,y
|
|
lda _14+1
|
|
sta SQUARES_Y+1,y
|
|
//SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b5_from_b10
|
|
jmp breturn
|
|
//SEG309 initSquareTables::@return
|
|
breturn:
|
|
//SEG310 [185] return
|
|
rts
|
|
//SEG311 initSquareTables::@6
|
|
b6:
|
|
//SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuz1=vbuc1_minus_vbuz2
|
|
lda #$c
|
|
sec
|
|
sbc y
|
|
sta _12
|
|
jmp b8_from_b6
|
|
//SEG313 initSquareTables::@2
|
|
b2:
|
|
//SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuz1=vbuc1_minus_vbuz2
|
|
lda #$14
|
|
sec
|
|
sbc x
|
|
sta _4
|
|
jmp b4_from_b2
|
|
}
|
|
//SEG315 mul8u
|
|
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
|
|
// mul8u(byte zeropage($21) a, byte zeropage($20) b)
|
|
mul8u: {
|
|
.label _1 = $80
|
|
.label mb = $24
|
|
.label a = $21
|
|
.label res = $22
|
|
.label b = $20
|
|
.label return = $76
|
|
.label b_1 = $1f
|
|
.label return_3 = $7b
|
|
//SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
|
|
b1_from_mul8u:
|
|
//SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy
|
|
//SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1
|
|
lda #0
|
|
sta res
|
|
lda #0
|
|
sta res+1
|
|
//SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy
|
|
jmp b1
|
|
//SEG320 mul8u::@1
|
|
b1:
|
|
//SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1
|
|
lda a
|
|
cmp #0
|
|
bne b2
|
|
jmp breturn
|
|
//SEG322 mul8u::@return
|
|
breturn:
|
|
//SEG323 [191] return
|
|
rts
|
|
//SEG324 mul8u::@2
|
|
b2:
|
|
//SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #1
|
|
and a
|
|
sta _1
|
|
//SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuz1_eq_0_then_la1
|
|
lda _1
|
|
cmp #0
|
|
beq b3_from_b2
|
|
jmp b4
|
|
//SEG327 mul8u::@4
|
|
b4:
|
|
//SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda res
|
|
clc
|
|
adc mb
|
|
sta res
|
|
lda res+1
|
|
adc mb+1
|
|
sta res+1
|
|
//SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
|
|
b3_from_b2:
|
|
b3_from_b4:
|
|
//SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy
|
|
jmp b3
|
|
//SEG331 mul8u::@3
|
|
b3:
|
|
//SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr a
|
|
//SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl mb
|
|
rol mb+1
|
|
//SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
|
|
b1_from_b3:
|
|
//SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy
|
|
//SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy
|
|
//SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy
|
|
jmp b1
|
|
}
|
|
//SEG338 irqBottom
|
|
// Raster Interrupt at the middle of the screen
|
|
irqBottom: {
|
|
.label i = $26
|
|
//SEG339 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1]
|
|
b1_from_irqBottom:
|
|
//SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1]
|
|
b1_from_b1:
|
|
//SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG344 irqBottom::@1
|
|
b1:
|
|
//SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #5
|
|
cmp i
|
|
bne b1_from_b1
|
|
//SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2]
|
|
b2_from_b1:
|
|
jmp b2
|
|
//SEG348 irqBottom::@2
|
|
b2:
|
|
//SEG349 [203] call processChars
|
|
//SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars]
|
|
processChars_from_b2:
|
|
jsr processChars
|
|
jmp b3
|
|
//SEG351 irqBottom::@3
|
|
b3:
|
|
//SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the top of the screen
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2
|
|
lda #<irqTop
|
|
sta HARDWARE_IRQ
|
|
lda #>irqTop
|
|
sta HARDWARE_IRQ+1
|
|
//SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp breturn
|
|
//SEG355 irqBottom::@return
|
|
breturn:
|
|
//SEG356 [207] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
//SEG357 processChars
|
|
// Process any chars in the PROCESSING array
|
|
processChars: {
|
|
.label _1 = $99
|
|
.label _12 = $8a
|
|
.label _13 = $8b
|
|
.label _15 = $8d
|
|
.label _16 = $8e
|
|
.label _18 = $8c
|
|
.label _26 = $91
|
|
.label _27 = $93
|
|
.label _31 = $96
|
|
.label _34 = $9a
|
|
.label _36 = $84
|
|
.label _37 = $95
|
|
.label _38 = $98
|
|
.label processing = $85
|
|
.label bitmask = $87
|
|
.label i = $27
|
|
.label xpos = $88
|
|
.label ypos = $90
|
|
.label xchar = $94
|
|
.label ychar = $97
|
|
.label numActive = $28
|
|
.label _64 = $81
|
|
.label _65 = $82
|
|
.label _66 = $83
|
|
//SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1]
|
|
b1_from_processChars:
|
|
//SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta numActive
|
|
//SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1]
|
|
b1_from_b2:
|
|
//SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy
|
|
//SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG364 processChars::@1
|
|
b1:
|
|
//SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda i
|
|
asl
|
|
sta _64
|
|
//SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _64
|
|
clc
|
|
adc i
|
|
sta _65
|
|
//SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuz1=vbuz2_rol_2
|
|
lda _65
|
|
asl
|
|
asl
|
|
sta _66
|
|
//SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuz1=vbuz2_plus_vbuz3
|
|
lda _66
|
|
clc
|
|
adc i
|
|
sta _36
|
|
//SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuz2
|
|
lda _36
|
|
clc
|
|
adc #<PROCESSING
|
|
sta processing
|
|
lda #>PROCESSING
|
|
adc #0
|
|
sta processing+1
|
|
//SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
lda (processing),y
|
|
tax
|
|
lda #1
|
|
cpx #0
|
|
beq !e+
|
|
!:
|
|
asl
|
|
dex
|
|
bne !-
|
|
!e:
|
|
sta bitmask
|
|
//SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
lda (processing),y
|
|
cmp #STATUS_FREE
|
|
beq b2_from_b1
|
|
jmp b10
|
|
//SEG372 processChars::@10
|
|
b10:
|
|
//SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
lda (processing),y
|
|
cmp #STATUS_NEW
|
|
bne b3
|
|
jmp b11
|
|
//SEG374 processChars::@11
|
|
b11:
|
|
//SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2
|
|
// Clear the char on the screen
|
|
ldx #' '
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
lda (processing),y
|
|
sta !++1
|
|
iny
|
|
lda (processing),y
|
|
sta !++2
|
|
txa
|
|
!:
|
|
sta $ffff
|
|
//SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
// Enable the sprite
|
|
lda SPRITES_ENABLE
|
|
ora bitmask
|
|
sta SPRITES_ENABLE
|
|
//SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3
|
|
// Set sprite pointer
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
pha
|
|
lda (processing),y
|
|
tay
|
|
pla
|
|
sta SCREEN+SPRITE_PTRS,y
|
|
//SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status
|
|
lda #STATUS_PROCESSING
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
jmp b3
|
|
//SEG379 processChars::@3
|
|
b3:
|
|
//SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4
|
|
ldy #0
|
|
lda (processing),y
|
|
sta xpos
|
|
iny
|
|
lda (processing),y
|
|
sta xpos+1
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
//SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuz1=_hi_vwuz2
|
|
lda xpos+1
|
|
sta _12
|
|
//SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuz1_then_la1
|
|
// Set sprite position
|
|
lda #0
|
|
cmp _12
|
|
bne b4
|
|
jmp b8
|
|
//SEG383 processChars::@8
|
|
b8:
|
|
//SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2
|
|
lda #$ff
|
|
eor bitmask
|
|
sta _13
|
|
//SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1
|
|
lda SPRITES_XMSB
|
|
and _13
|
|
sta SPRITES_XMSB
|
|
jmp b5
|
|
//SEG386 processChars::@5
|
|
b5:
|
|
//SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda i
|
|
asl
|
|
sta _18
|
|
//SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuz1=_byte_vwuz2
|
|
lda xpos
|
|
sta _15
|
|
//SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda _15
|
|
ldy _18
|
|
sta SPRITES_XPOS,y
|
|
//SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
lda (processing),y
|
|
sta _16
|
|
iny
|
|
lda (processing),y
|
|
sta _16+1
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
//SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2
|
|
lda _16
|
|
sta ypos
|
|
//SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda ypos
|
|
ldy _18
|
|
sta SPRITES_YPOS,y
|
|
//SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1
|
|
// Move sprite
|
|
ldy #1
|
|
lda (processing),y
|
|
cmp #>XPOS_LEFTMOST
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<XPOS_LEFTMOST
|
|
bcc b6
|
|
!:
|
|
jmp b15
|
|
//SEG394 processChars::@15
|
|
b15:
|
|
//SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1
|
|
ldy #1
|
|
lda #>XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda #<XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
!:
|
|
jmp b14
|
|
//SEG396 processChars::@14
|
|
b14:
|
|
//SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda (processing),y
|
|
cmp #>YPOS_TOPMOST
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<YPOS_TOPMOST
|
|
bcc b6
|
|
!:
|
|
jmp b13
|
|
//SEG398 processChars::@13
|
|
b13:
|
|
//SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda #>YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda #<YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
!:
|
|
jmp b9
|
|
//SEG400 processChars::@9
|
|
b9:
|
|
//SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz2_ror_3
|
|
lda xpos+1
|
|
lsr
|
|
sta _26+1
|
|
lda xpos
|
|
ror
|
|
sta _26
|
|
lsr _26+1
|
|
ror _26
|
|
lsr _26+1
|
|
ror _26
|
|
//SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuz1=_byte_vwuz2
|
|
lda _26
|
|
sta _27
|
|
//SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1
|
|
lax _27
|
|
axs #BORDER_XPOS_LEFT/8
|
|
stx xchar
|
|
//SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda xchar
|
|
asl
|
|
sta _37
|
|
//SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2
|
|
ldx _37
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
clc
|
|
lda (processing),y
|
|
adc VXSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VXSIN+1,x
|
|
sta (processing),y
|
|
//SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
sty $ff
|
|
clc
|
|
lda (processing),y
|
|
ldy #0
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy $ff
|
|
iny
|
|
lda (processing),y
|
|
ldy #1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
//SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuz1=vbuz2_ror_3
|
|
lda ypos
|
|
lsr
|
|
lsr
|
|
lsr
|
|
sta _31
|
|
//SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuz1=vbuz2_minus_vbuc1
|
|
lax _31
|
|
axs #BORDER_YPOS_TOP/8
|
|
stx ychar
|
|
//SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
|
lda ychar
|
|
asl
|
|
sta _38
|
|
//SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuz2
|
|
ldx _38
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
clc
|
|
lda (processing),y
|
|
adc VYSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VYSIN+1,x
|
|
sta (processing),y
|
|
//SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
clc
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
jmp b7
|
|
//SEG412 processChars::@7
|
|
b7:
|
|
//SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1
|
|
inc numActive
|
|
//SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2]
|
|
b2_from_b1:
|
|
b2_from_b7:
|
|
//SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG416 processChars::@2
|
|
b2:
|
|
//SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b1_from_b2
|
|
jmp b12
|
|
//SEG419 processChars::@12
|
|
b12:
|
|
//SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuz1=vbuc1_plus_vbuz2
|
|
lax numActive
|
|
axs #-['0']
|
|
stx _1
|
|
//SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuz1
|
|
lda _1
|
|
sta SCREEN+$3e7
|
|
jmp breturn
|
|
//SEG422 processChars::@return
|
|
breturn:
|
|
//SEG423 [254] return
|
|
rts
|
|
//SEG424 processChars::@6
|
|
b6:
|
|
//SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status to FREE
|
|
lda #STATUS_FREE
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
//SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuz1=vbuc1_bxor_vbuz2
|
|
lda #$ff
|
|
eor bitmask
|
|
sta _34
|
|
//SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1
|
|
// Disable the sprite
|
|
lda SPRITES_ENABLE
|
|
and _34
|
|
sta SPRITES_ENABLE
|
|
jmp b7
|
|
//SEG428 processChars::@4
|
|
b4:
|
|
//SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
lda SPRITES_XMSB
|
|
ora bitmask
|
|
sta SPRITES_XMSB
|
|
jmp b5
|
|
}
|
|
//SEG430 irqTop
|
|
// Raster Interrupt at the top of the screen
|
|
irqTop: {
|
|
.label i = $29
|
|
.label i1 = $2a
|
|
//SEG431 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1]
|
|
b1_from_irqTop:
|
|
//SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1]
|
|
b1_from_b1:
|
|
//SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG436 irqTop::@1
|
|
b1:
|
|
//SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #5
|
|
cmp i
|
|
bne b1_from_b1
|
|
//SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2]
|
|
b2_from_b1:
|
|
//SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i1
|
|
jmp b2
|
|
//*BORDERCOL = WHITE;
|
|
//*BGCOL = WHITE;
|
|
//SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2]
|
|
b2_from_b2:
|
|
//SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG443 irqTop::@2
|
|
b2:
|
|
//SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuz1=_inc_vbuz1
|
|
inc i1
|
|
//SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #8
|
|
cmp i1
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG446 irqTop::@3
|
|
b3:
|
|
//SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the middle of the screen
|
|
lda #RASTER_IRQ_MIDDLE
|
|
sta RASTER
|
|
//SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2
|
|
lda #<irqBottom
|
|
sta HARDWARE_IRQ
|
|
lda #>irqBottom
|
|
sta HARDWARE_IRQ+1
|
|
//SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp breturn
|
|
//SEG450 irqTop::@return
|
|
breturn:
|
|
//SEG451 [269] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
// Copy of the screen used for finding chars to process
|
|
SCREEN_COPY: .fill $3e8, 0
|
|
// SQUARES_X[i] = (i-20)*(i-20)
|
|
SQUARES_X: .fill 2*$28, 0
|
|
// SQUARES_Y[i] = (i-12)*(i-12)
|
|
SQUARES_Y: .fill 2*$19, 0
|
|
// Sprites currently being processed in the interrupt
|
|
PROCESSING: .fill $d*NUM_PROCESSING, 0
|
|
.pc = VXSIN "VXSIN"
|
|
.for(var i=0; i<40; i++) {
|
|
.word -sin(toRadians([i*360]/40))*4
|
|
}
|
|
|
|
.pc = VYSIN "VYSIN"
|
|
.for(var i=0; i<25; i++) {
|
|
.word -sin(toRadians([i*360]/25))*4
|
|
}
|
|
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:4 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:4 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a
|
|
Statement [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$25 ] ( main:4 [ main::i#2 main::$25 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
|
Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a
|
|
Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a
|
|
Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ main::$16 ]
|
|
Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a
|
|
Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ]
|
|
Statement [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ main::center_x#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ main::center_y#0 ]
|
|
Statement [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a
|
|
Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a
|
|
Statement [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Statement [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ) always clobbers reg byte a
|
|
Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a
|
|
Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a
|
|
Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a
|
|
Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a
|
|
Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a
|
|
Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a
|
|
Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a
|
|
Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a
|
|
Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a
|
|
Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a
|
|
Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a
|
|
Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a
|
|
Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a
|
|
Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a
|
|
Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a
|
|
Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a
|
|
Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a
|
|
Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ startProcessing::center_x#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:56 [ startProcessing::center_y#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a
|
|
Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a
|
|
Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a
|
|
Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a
|
|
Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a
|
|
Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a
|
|
Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a
|
|
Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a
|
|
Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a
|
|
Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a
|
|
Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a
|
|
Statement [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ]
|
|
Statement [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a
|
|
Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ) always clobbers reg byte a
|
|
Statement [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ) always clobbers reg byte a
|
|
Statement [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ) always clobbers reg byte a
|
|
Statement [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:105 [ startProcessing::$30 ]
|
|
Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a
|
|
Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
Statement [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a
|
|
Statement [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:106 [ getCharToProcess::$13 ]
|
|
Statement [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a
|
|
Statement [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a
|
|
Statement [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a
|
|
Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a
|
|
Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a
|
|
Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a
|
|
Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a
|
|
Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a
|
|
Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a
|
|
Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a
|
|
Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a
|
|
Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a
|
|
Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a
|
|
Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a
|
|
Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a
|
|
Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ]
|
|
Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a
|
|
Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a
|
|
Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a
|
|
Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a
|
|
Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a
|
|
Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a
|
|
Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a
|
|
Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a
|
|
Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
|
Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a
|
|
Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a
|
|
Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a
|
|
Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a
|
|
Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a
|
|
Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a
|
|
Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a
|
|
Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a
|
|
Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a
|
|
Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:140 [ processChars::$18 ]
|
|
Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:140 [ processChars::$18 ]
|
|
Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a
|
|
Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:144 [ processChars::ypos#0 ]
|
|
Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a
|
|
Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a
|
|
Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a
|
|
Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a
|
|
Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a
|
|
Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y
|
|
Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a
|
|
Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a
|
|
Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a
|
|
Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a
|
|
Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a
|
|
Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) [ main::src#2 main::dst#2 ] ( main:4 [ main::src#2 main::dst#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 [ main::src#1 main::dst#1 ] ( main:4 [ main::src#1 main::dst#1 ] ) always clobbers reg byte a
|
|
Statement [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$25 ] ( main:4 [ main::i#2 main::$25 ] ) always clobbers reg byte a
|
|
Statement [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 [ main::i#2 main::$26 ] ( main:4 [ main::i#2 main::$26 ] ) always clobbers reg byte a
|
|
Statement [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 [ main::i#2 main::$27 ] ( main:4 [ main::i#2 main::$27 ] ) always clobbers reg byte a
|
|
Statement [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 [ main::i#2 main::$16 ] ( main:4 [ main::i#2 main::$16 ] ) always clobbers reg byte a
|
|
Statement [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 [ main::i#2 ] ( main:4 [ main::i#2 ] ) always clobbers reg byte a
|
|
Statement [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ( main:4 [ getCharToProcess::return_x#0 getCharToProcess::return_y#0 getCharToProcess::return_dist#0 ] ) always clobbers reg byte a
|
|
Statement [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ( main:4 [ main::center_x#0 main::center_y#0 main::center_dist#0 ] ) always clobbers reg byte a
|
|
Statement [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 [ main::center_x#0 main::center_y#0 ] ( main:4 [ main::center_x#0 main::center_y#0 ] ) always clobbers reg byte a
|
|
Statement [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' [ ] ( main:4 [ ] ) always clobbers reg byte a
|
|
Statement [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$40 ] ) always clobbers reg byte a
|
|
Statement [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$41 ] ) always clobbers reg byte a
|
|
Statement [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$42 ] ) always clobbers reg byte a
|
|
Statement [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 startProcessing::$29 ] ) always clobbers reg byte a
|
|
Statement [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#6 startProcessing::i#2 ] ) always clobbers reg byte a
|
|
Statement [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 ] ) always clobbers reg byte a
|
|
Statement [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$0 startProcessing::$44 ] ) always clobbers reg byte a
|
|
Statement [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$45 ] ) always clobbers reg byte a
|
|
Statement [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$1 ] ) always clobbers reg byte a
|
|
Statement [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 ] ) always clobbers reg byte a
|
|
Statement [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a
|
|
Statement [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$4 ] ) always clobbers reg byte a
|
|
Statement [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::$5 ] ) always clobbers reg byte a
|
|
Statement [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::$2 startProcessing::screenPtr#0 startProcessing::spriteData#0 ] ) always clobbers reg byte a
|
|
Statement [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::ch#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$7 ] ) always clobbers reg byte a
|
|
Statement [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::$8 ] ) always clobbers reg byte a
|
|
Statement [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a
|
|
Statement [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteData#0 startProcessing::chargenData#0 ] ) always clobbers reg byte a
|
|
Statement [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::spriteData#2 startProcessing::i1#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::chargenData#2 startProcessing::i1#2 startProcessing::spriteData#1 ] ) always clobbers reg byte a
|
|
Statement [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ( main:4::startProcessing:45 [ startProcessing::center_x#0 startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 ] ) always clobbers reg byte a
|
|
Statement [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$10 ] ) always clobbers reg byte a
|
|
Statement [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$11 ] ) always clobbers reg byte a
|
|
Statement [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::$12 ] ) always clobbers reg byte a
|
|
Statement [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ( main:4::startProcessing:45 [ startProcessing::center_y#0 startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 ] ) always clobbers reg byte a
|
|
Statement [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$14 ] ) always clobbers reg byte a
|
|
Statement [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$15 ] ) always clobbers reg byte a
|
|
Statement [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::$16 ] ) always clobbers reg byte a
|
|
Statement [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 ] ) always clobbers reg byte a
|
|
Statement [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 ] ) always clobbers reg byte a
|
|
Statement [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$21 ] ) always clobbers reg byte a
|
|
Statement [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 ] ) always clobbers reg byte a
|
|
Statement [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$47 ] ) always clobbers reg byte a
|
|
Statement [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$48 ] ) always clobbers reg byte a
|
|
Statement [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$49 ] ) always clobbers reg byte a
|
|
Statement [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteX#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spriteY#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$22 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::freeIdx#2 startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::spritePtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 [ startProcessing::screenPtr#0 startProcessing::$30 ] ( main:4::startProcessing:45 [ startProcessing::screenPtr#0 startProcessing::$30 ] ) always clobbers reg byte a
|
|
Statement [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 [ ] ( main:4::startProcessing:45 [ ] ) always clobbers reg byte a
|
|
Statement [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 ] ) always clobbers reg byte a
|
|
Statement [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 ] ) always clobbers reg byte a
|
|
Statement [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::$13 getCharToProcess::$14 ] ) always clobbers reg byte a
|
|
Statement [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a
|
|
Statement [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_dist#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::dist#0 ] ) always clobbers reg byte a
|
|
Statement [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::y#7 getCharToProcess::screen_line#1 ] ) always clobbers reg byte a
|
|
Statement [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a
|
|
Statement [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 ] ) always clobbers reg byte a
|
|
Statement [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$9 getCharToProcess::$15 ] ) always clobbers reg byte a
|
|
Statement [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$16 ] ) always clobbers reg byte a
|
|
Statement [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$10 ] ) always clobbers reg byte a
|
|
Statement [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 getCharToProcess::$11 ] ) always clobbers reg byte a
|
|
Statement [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::return_dist#1 ] ) always clobbers reg byte a
|
|
Statement [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#1 getCharToProcess::y#1 getCharToProcess::closest_dist#10 ] ) always clobbers reg byte a
|
|
Statement [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ( main:4::getCharToProcess:33 [ getCharToProcess::return_x#1 getCharToProcess::return_y#1 getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#1 getCharToProcess::closest_dist#12 ] ) always clobbers reg byte a
|
|
Statement [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#6 ] ) always clobbers reg byte a
|
|
Statement [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ( main:4::getCharToProcess:33 [ getCharToProcess::screen_line#4 getCharToProcess::y#7 getCharToProcess::x#2 getCharToProcess::closest_x#7 getCharToProcess::closest_y#7 getCharToProcess::return_dist#5 ] ) always clobbers reg byte a
|
|
Statement [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 [ ] ( main:4::setupRasterIrq:31 [ ] ) always clobbers reg byte a
|
|
Statement [147] *((byte*) initSprites::sp#2) ← (byte) 0 [ initSprites::sp#2 ] ( main:4::initSprites:29 [ initSprites::sp#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 [ initSprites::sp#1 ] ( main:4::initSprites:29 [ initSprites::sp#1 ] ) always clobbers reg byte a
|
|
Statement [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 [ initSprites::i#2 ] ( main:4::initSprites:29 [ initSprites::i#2 ] ) always clobbers reg byte a
|
|
Statement [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 [ ] ( main:4::initSprites:29 [ ] ) always clobbers reg byte a
|
|
Statement [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 [ initSquareTables::x#2 initSquareTables::$2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$2 ] ) always clobbers reg byte a
|
|
Statement [166] (word) mul8u::return#2 ← (word) mul8u::res#2 [ initSquareTables::x#2 mul8u::return#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 mul8u::return#2 ] ) always clobbers reg byte a
|
|
Statement [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2 [ initSquareTables::x#2 initSquareTables::$6 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 ] ) always clobbers reg byte a
|
|
Statement [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$6 initSquareTables::$16 ] ) always clobbers reg byte a
|
|
Statement [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 [ initSquareTables::x#2 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 ] ) always clobbers reg byte a
|
|
Statement [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c [ initSquareTables::y#2 initSquareTables::$10 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$10 ] ) always clobbers reg byte a
|
|
Statement [179] (word) mul8u::return#3 ← (word) mul8u::res#2 [ initSquareTables::y#2 mul8u::return#3 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 mul8u::return#3 ] ) always clobbers reg byte a
|
|
Statement [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3 [ initSquareTables::y#2 initSquareTables::$14 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 ] ) always clobbers reg byte a
|
|
Statement [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$14 initSquareTables::$17 ] ) always clobbers reg byte a
|
|
Statement [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 [ initSquareTables::y#2 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 ] ) always clobbers reg byte a
|
|
Statement [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 [ initSquareTables::y#2 initSquareTables::$12 ] ( main:4::initSquareTables:7 [ initSquareTables::y#2 initSquareTables::$12 ] ) always clobbers reg byte a
|
|
Statement [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 [ initSquareTables::x#2 initSquareTables::$4 ] ( main:4::initSquareTables:7 [ initSquareTables::x#2 initSquareTables::$4 ] ) always clobbers reg byte a
|
|
Statement [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a
|
|
Statement [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:4::initSquareTables:7::mul8u:165 [ initSquareTables::x#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:4::initSquareTables:7::mul8u:178 [ initSquareTables::y#2 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
|
|
Statement [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [207] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$64 ] ) always clobbers reg byte a
|
|
Statement [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$65 ] ) always clobbers reg byte a
|
|
Statement [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$66 ] ) always clobbers reg byte a
|
|
Statement [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$36 ] ) always clobbers reg byte a
|
|
Statement [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a
|
|
Statement [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a
|
|
Statement [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$12 ] ) always clobbers reg byte a
|
|
Statement [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$13 ] ) always clobbers reg byte a
|
|
Statement [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a
|
|
Statement [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 ] ) always clobbers reg byte a
|
|
Statement [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$15 ] ) always clobbers reg byte a
|
|
Statement [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::$16 ] ) always clobbers reg byte a reg byte y
|
|
Statement [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::$18 processChars::ypos#0 ] ) always clobbers reg byte a
|
|
Statement [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a
|
|
Statement [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$26 ] ) always clobbers reg byte a
|
|
Statement [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$27 ] ) always clobbers reg byte a
|
|
Statement [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 processChars::$37 ] ) always clobbers reg byte a
|
|
Statement [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::ypos#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$31 ] ) always clobbers reg byte a
|
|
Statement [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::$38 ] ) always clobbers reg byte a
|
|
Statement [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a reg byte y
|
|
Statement [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 [ processChars::i#1 processChars::numActive#3 ] ( processChars:203 [ processChars::i#1 processChars::numActive#3 ] ) always clobbers reg byte a
|
|
Statement [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 [ processChars::$1 ] ( processChars:203 [ processChars::$1 ] ) always clobbers reg byte a
|
|
Statement [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::bitmask#0 ] ) always clobbers reg byte a reg byte y
|
|
Statement [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::$34 ] ) always clobbers reg byte a
|
|
Statement [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 [ processChars::i#10 processChars::numActive#10 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 ] ) always clobbers reg byte a
|
|
Statement [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ( processChars:203 [ processChars::i#10 processChars::numActive#10 processChars::processing#0 processChars::bitmask#0 processChars::xpos#0 ] ) always clobbers reg byte a
|
|
Statement [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( [ ] ) always clobbers reg byte a
|
|
Statement [269] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
|
Potential registers zp ZP_WORD:2 [ main::src#2 main::src#1 ] : zp ZP_WORD:2 ,
|
|
Potential registers zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] : zp ZP_WORD:4 ,
|
|
Potential registers zp ZP_BYTE:6 [ main::i#2 main::i#1 ] : zp ZP_BYTE:6 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] : zp ZP_BYTE:7 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] : zp ZP_BYTE:8 , reg byte x ,
|
|
Potential registers zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] : zp ZP_WORD:9 ,
|
|
Potential registers zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] : zp ZP_WORD:11 ,
|
|
Potential registers zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] : zp ZP_BYTE:13 , reg byte x ,
|
|
Potential registers zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] : zp ZP_WORD:14 ,
|
|
Potential registers zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] : zp ZP_BYTE:16 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] : zp ZP_BYTE:17 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] : zp ZP_WORD:18 ,
|
|
Potential registers zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] : zp ZP_BYTE:20 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] : zp ZP_BYTE:21 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] : zp ZP_WORD:22 ,
|
|
Potential registers zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] : zp ZP_WORD:24 ,
|
|
Potential registers zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ] : zp ZP_BYTE:26 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] : zp ZP_BYTE:29 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:31 [ mul8u::b#1 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:32 [ mul8u::b#0 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:33 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:34 ,
|
|
Potential registers zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:36 ,
|
|
Potential registers zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] : zp ZP_BYTE:39 ,
|
|
Potential registers zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] : zp ZP_BYTE:40 ,
|
|
Potential registers zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:43 [ main::$25 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:44 [ main::$26 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:45 [ main::$27 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:46 [ main::$16 ] : zp ZP_BYTE:46 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] : zp ZP_BYTE:47 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] : zp ZP_WORD:49 ,
|
|
Potential registers zp ZP_BYTE:51 [ main::center_x#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:52 [ main::center_y#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:53 [ main::center_dist#0 ] : zp ZP_WORD:53 ,
|
|
Potential registers zp ZP_BYTE:55 [ startProcessing::center_x#0 ] : zp ZP_BYTE:55 , reg byte x ,
|
|
Potential registers zp ZP_BYTE:56 [ startProcessing::center_y#0 ] : zp ZP_BYTE:56 , reg byte x ,
|
|
Potential registers zp ZP_BYTE:57 [ startProcessing::$40 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:58 [ startProcessing::$41 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:59 [ startProcessing::$42 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:60 [ startProcessing::$29 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:61 [ startProcessing::$0 ] : zp ZP_WORD:61 ,
|
|
Potential registers zp ZP_WORD:63 [ startProcessing::$44 ] : zp ZP_WORD:63 ,
|
|
Potential registers zp ZP_WORD:65 [ startProcessing::$45 ] : zp ZP_WORD:65 ,
|
|
Potential registers zp ZP_WORD:67 [ startProcessing::$1 ] : zp ZP_WORD:67 ,
|
|
Potential registers zp ZP_WORD:69 [ startProcessing::$2 ] : zp ZP_WORD:69 ,
|
|
Potential registers zp ZP_WORD:71 [ startProcessing::screenPtr#0 ] : zp ZP_WORD:71 ,
|
|
Potential registers zp ZP_WORD:73 [ startProcessing::$4 ] : zp ZP_WORD:73 ,
|
|
Potential registers zp ZP_WORD:75 [ startProcessing::$5 ] : zp ZP_WORD:75 ,
|
|
Potential registers zp ZP_BYTE:77 [ startProcessing::ch#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:78 [ startProcessing::$7 ] : zp ZP_WORD:78 ,
|
|
Potential registers zp ZP_WORD:80 [ startProcessing::$8 ] : zp ZP_WORD:80 ,
|
|
Potential registers zp ZP_WORD:82 [ startProcessing::$10 ] : zp ZP_WORD:82 ,
|
|
Potential registers zp ZP_WORD:84 [ startProcessing::$11 ] : zp ZP_WORD:84 ,
|
|
Potential registers zp ZP_WORD:86 [ startProcessing::$12 ] : zp ZP_WORD:86 ,
|
|
Potential registers zp ZP_WORD:88 [ startProcessing::spriteX#0 ] : zp ZP_WORD:88 ,
|
|
Potential registers zp ZP_WORD:90 [ startProcessing::$14 ] : zp ZP_WORD:90 ,
|
|
Potential registers zp ZP_WORD:92 [ startProcessing::$15 ] : zp ZP_WORD:92 ,
|
|
Potential registers zp ZP_WORD:94 [ startProcessing::$16 ] : zp ZP_WORD:94 ,
|
|
Potential registers zp ZP_WORD:96 [ startProcessing::spriteY#0 ] : zp ZP_WORD:96 ,
|
|
Potential registers zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:99 [ startProcessing::$21 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:100 [ startProcessing::$22 ] : zp ZP_WORD:100 ,
|
|
Potential registers zp ZP_BYTE:102 [ startProcessing::$47 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:103 [ startProcessing::$48 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:104 [ startProcessing::$49 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:105 [ startProcessing::$30 ] : zp ZP_BYTE:105 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:106 [ getCharToProcess::$13 ] : zp ZP_BYTE:106 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:107 [ getCharToProcess::$14 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:108 [ getCharToProcess::$9 ] : zp ZP_WORD:108 ,
|
|
Potential registers zp ZP_WORD:110 [ getCharToProcess::$15 ] : zp ZP_WORD:110 ,
|
|
Potential registers zp ZP_WORD:112 [ getCharToProcess::$16 ] : zp ZP_WORD:112 ,
|
|
Potential registers zp ZP_WORD:114 [ getCharToProcess::$10 ] : zp ZP_WORD:114 ,
|
|
Potential registers zp ZP_WORD:116 [ getCharToProcess::$11 ] : zp ZP_WORD:116 ,
|
|
Potential registers zp ZP_WORD:118 [ mul8u::return#2 ] : zp ZP_WORD:118 ,
|
|
Potential registers zp ZP_WORD:120 [ initSquareTables::$6 ] : zp ZP_WORD:120 ,
|
|
Potential registers zp ZP_BYTE:122 [ initSquareTables::$16 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:123 [ mul8u::return#3 ] : zp ZP_WORD:123 ,
|
|
Potential registers zp ZP_WORD:125 [ initSquareTables::$14 ] : zp ZP_WORD:125 ,
|
|
Potential registers zp ZP_BYTE:127 [ initSquareTables::$17 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:128 [ mul8u::$1 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:129 [ processChars::$64 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:130 [ processChars::$65 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:131 [ processChars::$66 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:132 [ processChars::$36 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:133 [ processChars::processing#0 ] : zp ZP_WORD:133 ,
|
|
Potential registers zp ZP_BYTE:135 [ processChars::bitmask#0 ] : zp ZP_BYTE:135 ,
|
|
Potential registers zp ZP_WORD:136 [ processChars::xpos#0 ] : zp ZP_WORD:136 ,
|
|
Potential registers zp ZP_BYTE:138 [ processChars::$12 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:139 [ processChars::$13 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:140 [ processChars::$18 ] : zp ZP_BYTE:140 , reg byte x ,
|
|
Potential registers zp ZP_BYTE:141 [ processChars::$15 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:142 [ processChars::$16 ] : zp ZP_WORD:142 ,
|
|
Potential registers zp ZP_BYTE:144 [ processChars::ypos#0 ] : zp ZP_BYTE:144 , reg byte x ,
|
|
Potential registers zp ZP_WORD:145 [ processChars::$26 ] : zp ZP_WORD:145 ,
|
|
Potential registers zp ZP_BYTE:147 [ processChars::$27 ] : zp ZP_BYTE:147 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:148 [ processChars::xchar#0 ] : zp ZP_BYTE:148 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:149 [ processChars::$37 ] : zp ZP_BYTE:149 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:150 [ processChars::$31 ] : zp ZP_BYTE:150 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:151 [ processChars::ychar#0 ] : zp ZP_BYTE:151 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:152 [ processChars::$38 ] : zp ZP_BYTE:152 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:153 [ processChars::$1 ] : zp ZP_BYTE:153 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:154 [ processChars::$34 ] : zp ZP_BYTE:154 , reg byte a , reg byte x , reg byte y ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [getCharToProcess] 4,996.99: zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] 3,090.17: zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] 2,820.67: zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] 2,002: zp ZP_BYTE:107 [ getCharToProcess::$14 ] 1,833.24: zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] 1,456: zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] 1,001: zp ZP_BYTE:106 [ getCharToProcess::$13 ] 238.75: zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] 130.7: zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] 7.33: zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] 7.33: zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] 7.33: zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] 4: zp ZP_WORD:110 [ getCharToProcess::$15 ] 4: zp ZP_WORD:112 [ getCharToProcess::$16 ] 4: zp ZP_WORD:114 [ getCharToProcess::$10 ] 4: zp ZP_WORD:116 [ getCharToProcess::$11 ] 3: zp ZP_WORD:108 [ getCharToProcess::$9 ]
|
|
Uplift Scope [startProcessing] 2,734.41: zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] 2,002: zp ZP_BYTE:57 [ startProcessing::$40 ] 2,002: zp ZP_BYTE:58 [ startProcessing::$41 ] 2,002: zp ZP_BYTE:59 [ startProcessing::$42 ] 2,002: zp ZP_BYTE:60 [ startProcessing::$29 ] 224.44: zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] 203.57: zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] 202: zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] 170.33: zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] 4: zp ZP_WORD:63 [ startProcessing::$44 ] 4: zp ZP_WORD:65 [ startProcessing::$45 ] 4: zp ZP_WORD:67 [ startProcessing::$1 ] 4: zp ZP_WORD:73 [ startProcessing::$4 ] 4: zp ZP_WORD:75 [ startProcessing::$5 ] 4: zp ZP_WORD:78 [ startProcessing::$7 ] 4: zp ZP_WORD:80 [ startProcessing::$8 ] 4: zp ZP_WORD:82 [ startProcessing::$10 ] 4: zp ZP_WORD:84 [ startProcessing::$11 ] 4: zp ZP_WORD:86 [ startProcessing::$12 ] 4: zp ZP_WORD:90 [ startProcessing::$14 ] 4: zp ZP_WORD:92 [ startProcessing::$15 ] 4: zp ZP_WORD:94 [ startProcessing::$16 ] 4: zp ZP_BYTE:102 [ startProcessing::$47 ] 4: zp ZP_BYTE:103 [ startProcessing::$48 ] 4: zp ZP_BYTE:104 [ startProcessing::$49 ] 3: zp ZP_WORD:61 [ startProcessing::$0 ] 2.25: zp ZP_BYTE:105 [ startProcessing::$30 ] 2: zp ZP_BYTE:77 [ startProcessing::ch#0 ] 2: zp ZP_BYTE:99 [ startProcessing::$21 ] 1.2: zp ZP_WORD:69 [ startProcessing::$2 ] 0.57: zp ZP_WORD:100 [ startProcessing::$22 ] 0.44: zp ZP_WORD:96 [ startProcessing::spriteY#0 ] 0.38: zp ZP_BYTE:55 [ startProcessing::center_x#0 ] 0.33: zp ZP_WORD:88 [ startProcessing::spriteX#0 ] 0.33: zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] 0.26: zp ZP_BYTE:56 [ startProcessing::center_y#0 ] 0.1: zp ZP_WORD:71 [ startProcessing::screenPtr#0 ]
|
|
Uplift Scope [mul8u] 349.43: zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 269.57: zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 214.67: zp ZP_BYTE:33 [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 202: zp ZP_BYTE:128 [ mul8u::$1 ] 22: zp ZP_BYTE:31 [ mul8u::b#1 ] 22: zp ZP_BYTE:32 [ mul8u::b#0 ] 22: zp ZP_WORD:118 [ mul8u::return#2 ] 22: zp ZP_WORD:123 [ mul8u::return#3 ]
|
|
Uplift Scope [processChars] 34.43: zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ] 22: zp ZP_BYTE:129 [ processChars::$64 ] 22: zp ZP_BYTE:130 [ processChars::$65 ] 22: zp ZP_BYTE:131 [ processChars::$66 ] 22: zp ZP_BYTE:132 [ processChars::$36 ] 22: zp ZP_BYTE:138 [ processChars::$12 ] 22: zp ZP_BYTE:139 [ processChars::$13 ] 22: zp ZP_BYTE:141 [ processChars::$15 ] 22: zp ZP_BYTE:147 [ processChars::$27 ] 22: zp ZP_BYTE:148 [ processChars::xchar#0 ] 22: zp ZP_BYTE:149 [ processChars::$37 ] 22: zp ZP_BYTE:150 [ processChars::$31 ] 22: zp ZP_BYTE:151 [ processChars::ychar#0 ] 22: zp ZP_BYTE:152 [ processChars::$38 ] 22: zp ZP_BYTE:154 [ processChars::$34 ] 17.97: zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ] 11: zp ZP_WORD:142 [ processChars::$16 ] 11: zp ZP_WORD:145 [ processChars::$26 ] 6.6: zp ZP_BYTE:140 [ processChars::$18 ] 4: zp ZP_BYTE:153 [ processChars::$1 ] 2.75: zp ZP_BYTE:144 [ processChars::ypos#0 ] 2.29: zp ZP_BYTE:135 [ processChars::bitmask#0 ] 2.06: zp ZP_WORD:136 [ processChars::xpos#0 ] 0.32: zp ZP_WORD:133 [ processChars::processing#0 ]
|
|
Uplift Scope [initSquareTables] 66: zp ZP_BYTE:28 [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] 66: zp ZP_BYTE:30 [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] 22: zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] 22: zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] 22: zp ZP_BYTE:122 [ initSquareTables::$16 ] 22: zp ZP_BYTE:127 [ initSquareTables::$17 ] 11: zp ZP_WORD:120 [ initSquareTables::$6 ] 11: zp ZP_WORD:125 [ initSquareTables::$14 ]
|
|
Uplift Scope [main] 27.5: zp ZP_WORD:2 [ main::src#2 main::src#1 ] 22: zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] 22: zp ZP_BYTE:43 [ main::$25 ] 22: zp ZP_BYTE:44 [ main::$26 ] 22: zp ZP_BYTE:45 [ main::$27 ] 22: zp ZP_WORD:53 [ main::center_dist#0 ] 20.73: zp ZP_BYTE:6 [ main::i#2 main::i#1 ] 12.38: zp ZP_BYTE:46 [ main::$16 ] 5.5: zp ZP_BYTE:51 [ main::center_x#0 ] 5.5: zp ZP_BYTE:52 [ main::center_y#0 ]
|
|
Uplift Scope [irqTop] 38.5: zp ZP_BYTE:41 [ irqTop::i#2 irqTop::i#1 ] 38.5: zp ZP_BYTE:42 [ irqTop::i1#2 irqTop::i1#1 ]
|
|
Uplift Scope [initSprites] 33: zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] 33: zp ZP_BYTE:26 [ initSprites::i#2 initSprites::i#1 ]
|
|
Uplift Scope [irqBottom] 38.5: zp ZP_BYTE:38 [ irqBottom::i#2 irqBottom::i#1 ]
|
|
Uplift Scope [ProcessingChar]
|
|
Uplift Scope [ProcessingSprite]
|
|
Uplift Scope [setupRasterIrq]
|
|
Uplift Scope []
|
|
|
|
Uplifting [getCharToProcess] best 290835 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:106 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:47 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:48 [ getCharToProcess::return_y#0 ] zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:110 [ getCharToProcess::$15 ] zp ZP_WORD:112 [ getCharToProcess::$16 ] zp ZP_WORD:114 [ getCharToProcess::$10 ] zp ZP_WORD:116 [ getCharToProcess::$11 ] zp ZP_WORD:108 [ getCharToProcess::$9 ]
|
|
Limited combination testing to 100 combinations of 8748 possible.
|
|
Uplifting [startProcessing] best 272835 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ] reg byte a [ startProcessing::$40 ] reg byte a [ startProcessing::$41 ] reg byte a [ startProcessing::$42 ] zp ZP_BYTE:60 [ startProcessing::$29 ] zp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ] zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] zp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ] zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] zp ZP_WORD:63 [ startProcessing::$44 ] zp ZP_WORD:65 [ startProcessing::$45 ] zp ZP_WORD:67 [ startProcessing::$1 ] zp ZP_WORD:73 [ startProcessing::$4 ] zp ZP_WORD:75 [ startProcessing::$5 ] zp ZP_WORD:78 [ startProcessing::$7 ] zp ZP_WORD:80 [ startProcessing::$8 ] zp ZP_WORD:82 [ startProcessing::$10 ] zp ZP_WORD:84 [ startProcessing::$11 ] zp ZP_WORD:86 [ startProcessing::$12 ] zp ZP_WORD:90 [ startProcessing::$14 ] zp ZP_WORD:92 [ startProcessing::$15 ] zp ZP_WORD:94 [ startProcessing::$16 ] zp ZP_BYTE:102 [ startProcessing::$47 ] zp ZP_BYTE:103 [ startProcessing::$48 ] zp ZP_BYTE:104 [ startProcessing::$49 ] zp ZP_WORD:61 [ startProcessing::$0 ] zp ZP_BYTE:105 [ startProcessing::$30 ] zp ZP_BYTE:77 [ startProcessing::ch#0 ] zp ZP_BYTE:99 [ startProcessing::$21 ] zp ZP_WORD:69 [ startProcessing::$2 ] zp ZP_WORD:100 [ startProcessing::$22 ] zp ZP_WORD:96 [ startProcessing::spriteY#0 ] zp ZP_BYTE:55 [ startProcessing::center_x#0 ] zp ZP_WORD:88 [ startProcessing::spriteX#0 ] zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ] zp ZP_BYTE:56 [ startProcessing::center_y#0 ] zp ZP_WORD:71 [ startProcessing::screenPtr#0 ]
|
|
Limited combination testing to 100 combinations of 113246208 possible.
|
|
Uplifting [mul8u] best 271809 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:118 [ mul8u::return#2 ] zp ZP_WORD:123 [ mul8u::return#3 ]
|
|
Limited combination testing to 100 combinations of 192 possible.
|
|
Uplifting [initSquareTables] best 271649 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:122 [ initSquareTables::$16 ] zp ZP_BYTE:127 [ initSquareTables::$17 ] zp ZP_WORD:120 [ initSquareTables::$6 ] zp ZP_WORD:125 [ initSquareTables::$14 ]
|
|
Limited combination testing to 100 combinations of 2304 possible.
|
|
Uplifting [main] best 271469 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$25 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] zp ZP_WORD:53 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:46 [ main::$16 ] zp ZP_BYTE:51 [ main::center_x#0 ] zp ZP_BYTE:52 [ main::center_y#0 ]
|
|
Limited combination testing to 100 combinations of 5184 possible.
|
|
Uplifting [irqTop] best 271289 combination reg byte x [ irqTop::i#2 irqTop::i#1 ] reg byte x [ irqTop::i1#2 irqTop::i1#1 ]
|
|
Uplifting [initSprites] best 271169 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ]
|
|
Uplifting [irqBottom] best 271079 combination reg byte x [ irqBottom::i#2 irqBottom::i#1 ]
|
|
Uplifting [ProcessingChar] best 271079 combination
|
|
Uplifting [ProcessingSprite] best 271079 combination
|
|
Uplifting [setupRasterIrq] best 271079 combination
|
|
Uplifting [] best 271079 combination
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
Uplifting [getCharToProcess] best 271079 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Uplifting [startProcessing] best 271079 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:60 [ startProcessing::$29 ]
|
|
Uplifting [startProcessing] best 267079 combination reg byte a [ startProcessing::$29 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
Uplifting [getCharToProcess] best 267079 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:106 [ getCharToProcess::$13 ]
|
|
Uplifting [getCharToProcess] best 263079 combination reg byte x [ getCharToProcess::$13 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
Uplifting [getCharToProcess] best 263079 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
Uplifting [startProcessing] best 262179 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
Uplifting [startProcessing] best 261279 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Uplifting [processChars] best 261279 combination zp ZP_BYTE:40 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
Uplifting [initSquareTables] best 261279 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
Uplifting [initSquareTables] best 261279 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:122 [ initSquareTables::$16 ]
|
|
Uplifting [initSquareTables] best 261239 combination reg byte a [ initSquareTables::$16 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:127 [ initSquareTables::$17 ]
|
|
Uplifting [initSquareTables] best 261199 combination reg byte a [ initSquareTables::$17 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:129 [ processChars::$64 ]
|
|
Uplifting [processChars] best 261139 combination reg byte a [ processChars::$64 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:130 [ processChars::$65 ]
|
|
Uplifting [processChars] best 261079 combination reg byte a [ processChars::$65 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:131 [ processChars::$66 ]
|
|
Uplifting [processChars] best 261019 combination reg byte a [ processChars::$66 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::$36 ]
|
|
Uplifting [processChars] best 260959 combination reg byte a [ processChars::$36 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:138 [ processChars::$12 ]
|
|
Uplifting [processChars] best 260899 combination reg byte a [ processChars::$12 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:139 [ processChars::$13 ]
|
|
Uplifting [processChars] best 260839 combination reg byte a [ processChars::$13 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:141 [ processChars::$15 ]
|
|
Uplifting [processChars] best 260779 combination reg byte a [ processChars::$15 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:147 [ processChars::$27 ]
|
|
Uplifting [processChars] best 260739 combination reg byte a [ processChars::$27 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::xchar#0 ]
|
|
Uplifting [processChars] best 260679 combination reg byte a [ processChars::xchar#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:149 [ processChars::$37 ]
|
|
Uplifting [processChars] best 260639 combination reg byte a [ processChars::$37 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:150 [ processChars::$31 ]
|
|
Uplifting [processChars] best 260599 combination reg byte a [ processChars::$31 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:151 [ processChars::ychar#0 ]
|
|
Uplifting [processChars] best 260539 combination reg byte a [ processChars::ychar#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:152 [ processChars::$38 ]
|
|
Uplifting [processChars] best 260499 combination reg byte a [ processChars::$38 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:154 [ processChars::$34 ]
|
|
Uplifting [processChars] best 260439 combination reg byte a [ processChars::$34 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
|
Uplifting [main] best 260439 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Uplifting [processChars] best 260439 combination zp ZP_BYTE:39 [ processChars::i#10 processChars::i#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ main::$16 ]
|
|
Uplifting [main] best 260309 combination reg byte x [ main::$16 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ getCharToProcess::return_x#0 ]
|
|
Uplifting [getCharToProcess] best 260249 combination reg byte x [ getCharToProcess::return_x#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ getCharToProcess::return_y#0 ]
|
|
Uplifting [getCharToProcess] best 260189 combination reg byte y [ getCharToProcess::return_y#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:140 [ processChars::$18 ]
|
|
Uplifting [processChars] best 260119 combination reg byte x [ processChars::$18 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ main::center_x#0 ]
|
|
Uplifting [main] best 260059 combination reg byte x [ main::center_x#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:52 [ main::center_y#0 ]
|
|
Uplifting [main] best 259999 combination reg byte y [ main::center_y#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:102 [ startProcessing::$47 ]
|
|
Uplifting [startProcessing] best 259993 combination reg byte a [ startProcessing::$47 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:103 [ startProcessing::$48 ]
|
|
Uplifting [startProcessing] best 259987 combination reg byte a [ startProcessing::$48 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$49 ]
|
|
Uplifting [startProcessing] best 259981 combination reg byte a [ startProcessing::$49 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$1 ]
|
|
Uplifting [processChars] best 259975 combination reg byte x [ processChars::$1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::ypos#0 ]
|
|
Uplifting [processChars] best 259975 combination zp ZP_BYTE:144 [ processChars::ypos#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Uplifting [processChars] best 259975 combination zp ZP_BYTE:135 [ processChars::bitmask#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$30 ]
|
|
Uplifting [startProcessing] best 259953 combination reg byte x [ startProcessing::$30 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ startProcessing::ch#0 ]
|
|
Uplifting [startProcessing] best 259947 combination reg byte a [ startProcessing::ch#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:99 [ startProcessing::$21 ]
|
|
Uplifting [startProcessing] best 259941 combination reg byte a [ startProcessing::$21 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::center_x#0 ]
|
|
Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:55 [ startProcessing::center_x#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:98 [ startProcessing::spritePtr#0 ]
|
|
Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:98 [ startProcessing::spritePtr#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::center_y#0 ]
|
|
Uplifting [startProcessing] best 259941 combination zp ZP_BYTE:56 [ startProcessing::center_y#0 ]
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:80 [ startProcessing::$8 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:75 [ startProcessing::$5 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:49 [ getCharToProcess::return_dist#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:118 [ mul8u::return#2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:123 [ mul8u::return#3 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 ] ] with [ zp ZP_WORD:65 [ startProcessing::$45 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:67 [ startProcessing::$1 ] ] with [ zp ZP_WORD:69 [ startProcessing::$2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 ] ] with [ zp ZP_WORD:84 [ startProcessing::$11 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:86 [ startProcessing::$12 ] ] with [ zp ZP_WORD:88 [ startProcessing::spriteX#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 ] ] with [ zp ZP_WORD:92 [ startProcessing::$15 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:94 [ startProcessing::$16 ] ] with [ zp ZP_WORD:96 [ startProcessing::spriteY#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 ] ] with [ zp ZP_WORD:112 [ getCharToProcess::$16 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:114 [ getCharToProcess::$10 ] ] with [ zp ZP_WORD:116 [ getCharToProcess::$11 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:136 [ processChars::xpos#0 ] ] with [ zp ZP_WORD:145 [ processChars::$26 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 ] ] with [ zp ZP_WORD:78 [ startProcessing::$7 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 ] ] with [ zp ZP_WORD:73 [ startProcessing::$4 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 ] ] with [ zp ZP_WORD:53 [ main::center_dist#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 ] ] with [ zp ZP_WORD:120 [ initSquareTables::$6 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 ] ] with [ zp ZP_WORD:125 [ initSquareTables::$14 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ startProcessing::$0 startProcessing::$45 ] ] with [ zp ZP_WORD:67 [ startProcessing::$1 startProcessing::$2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:82 [ startProcessing::$10 startProcessing::$11 ] ] with [ zp ZP_WORD:86 [ startProcessing::$12 startProcessing::spriteX#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:90 [ startProcessing::$14 startProcessing::$15 ] ] with [ zp ZP_WORD:94 [ startProcessing::$16 startProcessing::spriteY#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ getCharToProcess::$9 getCharToProcess::$16 ] ] with [ zp ZP_WORD:114 [ getCharToProcess::$10 getCharToProcess::$11 ] ] - score: 1
|
|
Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
Allocated (was zp ZP_WORD:9) zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ]
|
|
Allocated (was zp ZP_WORD:11) zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ]
|
|
Allocated (was zp ZP_WORD:14) zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
|
Allocated (was zp ZP_BYTE:16) zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
Allocated (was zp ZP_BYTE:17) zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
Allocated (was zp ZP_WORD:18) zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
|
Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
Allocated (was zp ZP_WORD:22) zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ]
|
|
Allocated (was zp ZP_WORD:24) zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ]
|
|
Allocated (was zp ZP_BYTE:27) zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
Allocated (was zp ZP_BYTE:29) zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
Allocated (was zp ZP_WORD:34) zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
|
|
Allocated (was zp ZP_WORD:36) zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
|
Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ]
|
|
Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
Allocated (was zp ZP_BYTE:55) zp ZP_BYTE:32 [ startProcessing::center_x#0 ]
|
|
Allocated (was zp ZP_BYTE:56) zp ZP_BYTE:33 [ startProcessing::center_y#0 ]
|
|
Allocated (was zp ZP_WORD:61) zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ]
|
|
Allocated (was zp ZP_WORD:63) zp ZP_WORD:36 [ startProcessing::$44 ]
|
|
Allocated (was zp ZP_WORD:71) zp ZP_WORD:38 [ startProcessing::screenPtr#0 ]
|
|
Allocated (was zp ZP_WORD:82) zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ]
|
|
Allocated (was zp ZP_WORD:90) zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ]
|
|
Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ]
|
|
Allocated (was zp ZP_WORD:100) zp ZP_WORD:45 [ startProcessing::$22 ]
|
|
Allocated (was zp ZP_WORD:108) zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
|
|
Allocated (was zp ZP_WORD:110) zp ZP_WORD:49 [ getCharToProcess::$15 ]
|
|
Allocated (was zp ZP_WORD:133) zp ZP_WORD:51 [ processChars::processing#0 ]
|
|
Allocated (was zp ZP_BYTE:135) zp ZP_BYTE:53 [ processChars::bitmask#0 ]
|
|
Allocated (was zp ZP_WORD:136) zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ]
|
|
Allocated (was zp ZP_WORD:142) zp ZP_WORD:56 [ processChars::$16 ]
|
|
Allocated (was zp ZP_BYTE:144) zp ZP_BYTE:58 [ processChars::ypos#0 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
//SEG0 File Comments
|
|
// Black Hole at the center of the BASIC screen sucking in letters
|
|
//SEG1 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(bbegin)
|
|
.pc = $80d "Program"
|
|
//SEG2 Global Constants & labels
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// RAM in $A000, $E000 I/O in $D000
|
|
.const PROCPORT_RAM_IO = $35
|
|
// RAM in $A000, $E000 CHAR ROM in $D000
|
|
.const PROCPORT_RAM_CHARROM = $31
|
|
// The address of the CHARGEN character set
|
|
.label CHARGEN = $d000
|
|
// Positions of the border (in sprite positions)
|
|
.const BORDER_XPOS_LEFT = $18
|
|
.const BORDER_XPOS_RIGHT = $158
|
|
.const BORDER_YPOS_TOP = $32
|
|
.const BORDER_YPOS_BOTTOM = $fa
|
|
// The offset of the sprite pointers from the screen start address
|
|
.const SPRITE_PTRS = $3f8
|
|
.label SPRITES_XPOS = $d000
|
|
.label SPRITES_YPOS = $d001
|
|
.label SPRITES_XMSB = $d010
|
|
.label RASTER = $d012
|
|
.label SPRITES_ENABLE = $d015
|
|
.label SPRITES_EXPAND_Y = $d017
|
|
.label SPRITES_MC = $d01c
|
|
.label SPRITES_EXPAND_X = $d01d
|
|
.label SPRITES_COLS = $d027
|
|
.label VIC_CONTROL = $d011
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Bits for the IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Color Ram
|
|
.label COLS = $d800
|
|
// CIA#1 Interrupt Status & Control Register
|
|
.label CIA1_INTERRUPT = $dc0d
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.const LIGHT_BLUE = $e
|
|
// Address of the screen
|
|
.label SCREEN = $400
|
|
// Sprite data for the animating sprites
|
|
.label SPRITE_DATA = $2000
|
|
// Values added to VX
|
|
.label VXSIN = $2200
|
|
// Values added to VY
|
|
.label VYSIN = $2280
|
|
// Max number of chars processed at once
|
|
.const NUM_PROCESSING = 8
|
|
// Distance value meaning not found
|
|
.const NOT_FOUND = $ffff
|
|
// Values for ProcessingSprite.status
|
|
.const STATUS_FREE = 0
|
|
.const STATUS_NEW = 1
|
|
.const STATUS_PROCESSING = 2
|
|
.const RASTER_IRQ_TOP = $30
|
|
.const RASTER_IRQ_MIDDLE = $ff
|
|
.const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4
|
|
.const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4
|
|
.const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4
|
|
.const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4
|
|
//SEG3 @begin
|
|
bbegin:
|
|
jmp b1
|
|
//SEG4 @1
|
|
b1:
|
|
//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }}
|
|
//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }}
|
|
//SEG7 [3] phi from @1 to @2 [phi:@1->@2]
|
|
b2_from_b1:
|
|
jmp b2
|
|
//SEG8 @2
|
|
b2:
|
|
//SEG9 [4] call main
|
|
//SEG10 [6] phi from @2 to main [phi:@2->main]
|
|
main_from_b2:
|
|
jsr main
|
|
//SEG11 [5] phi from @2 to @end [phi:@2->@end]
|
|
bend_from_b2:
|
|
jmp bend
|
|
//SEG12 @end
|
|
bend:
|
|
//SEG13 main
|
|
main: {
|
|
.label src = 2
|
|
.label dst = 4
|
|
.label i = 6
|
|
.label center_dist = $14
|
|
//SEG14 [7] call initSquareTables
|
|
//SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables]
|
|
initSquareTables_from_main:
|
|
jsr initSquareTables
|
|
//SEG16 [8] phi from main to main::@1 [phi:main->main::@1]
|
|
b1_from_main:
|
|
//SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta dst
|
|
lda #>SCREEN_COPY
|
|
sta dst+1
|
|
//SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta src
|
|
lda #>SCREEN
|
|
sta src+1
|
|
jmp b1
|
|
// Copy screen to screen copy
|
|
//SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
|
b1_from_b1:
|
|
//SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy
|
|
//SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG22 main::@1
|
|
b1:
|
|
//SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (src),y
|
|
ldy #0
|
|
sta (dst),y
|
|
//SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1
|
|
inc src
|
|
bne !+
|
|
inc src+1
|
|
!:
|
|
//SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc dst
|
|
bne !+
|
|
inc dst+1
|
|
!:
|
|
//SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1
|
|
lda src+1
|
|
cmp #>SCREEN+$3e8
|
|
bne b1_from_b1
|
|
lda src
|
|
cmp #<SCREEN+$3e8
|
|
bne b1_from_b1
|
|
//SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
b2_from_b1:
|
|
//SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b2
|
|
// Init processing array
|
|
//SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
|
b2_from_b2:
|
|
//SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG31 main::@2
|
|
b2:
|
|
//SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
tax
|
|
//SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING,x
|
|
lda #0
|
|
sta PROCESSING+1,x
|
|
//SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
|
|
//SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
|
|
//SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
|
|
//SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
|
//SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
|
//SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #STATUS_FREE
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
|
//SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2
|
|
lda #<0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
|
lda #>0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
|
//SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b2_from_b2
|
|
//SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
|
|
b3_from_b2:
|
|
jmp b3
|
|
//SEG47 main::@3
|
|
b3:
|
|
//SEG48 [29] call initSprites
|
|
//SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites]
|
|
initSprites_from_b3:
|
|
jsr initSprites
|
|
//SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8]
|
|
b8_from_b3:
|
|
jmp b8
|
|
//SEG51 main::@8
|
|
b8:
|
|
//SEG52 [31] call setupRasterIrq
|
|
jsr setupRasterIrq
|
|
//SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4]
|
|
b4_from_b5:
|
|
b4_from_b8:
|
|
jmp b4
|
|
// Main loop
|
|
//SEG54 main::@4
|
|
b4:
|
|
//SEG55 [33] call getCharToProcess
|
|
//SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess]
|
|
getCharToProcess_from_b4:
|
|
jsr getCharToProcess
|
|
//SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1
|
|
ldx getCharToProcess.return_x
|
|
//SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1
|
|
ldy getCharToProcess.return_y
|
|
//SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
|
|
jmp b9
|
|
//SEG60 main::@9
|
|
b9:
|
|
//SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
|
|
//SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
|
|
//SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
|
|
//SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1
|
|
lda center_dist+1
|
|
cmp #>NOT_FOUND
|
|
bne b5
|
|
lda center_dist
|
|
cmp #<NOT_FOUND
|
|
bne b5
|
|
jmp b6
|
|
//SEG65 main::@6
|
|
b6:
|
|
//SEG66 [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' -- _deref_pbuc1=vbuc2
|
|
lda #'.'
|
|
sta SCREEN+$3e7
|
|
jmp b7
|
|
//SEG67 main::@7
|
|
b7:
|
|
//SEG68 [42] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc COLS+$3e7
|
|
jmp b7
|
|
//SEG69 main::@5
|
|
b5:
|
|
//SEG70 [43] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 -- vbuz1=vbuxx
|
|
stx startProcessing.center_x
|
|
//SEG71 [44] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 -- vbuz1=vbuyy
|
|
sty startProcessing.center_y
|
|
//SEG72 [45] call startProcessing
|
|
//SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing]
|
|
startProcessing_from_b5:
|
|
jsr startProcessing
|
|
jmp b4_from_b5
|
|
}
|
|
//SEG74 startProcessing
|
|
// Start processing a char - by inserting it into the PROCESSING array
|
|
// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y)
|
|
startProcessing: {
|
|
.label _0 = $22
|
|
.label _1 = $22
|
|
.label _2 = $22
|
|
.label _4 = $a
|
|
.label _5 = $a
|
|
.label _7 = 8
|
|
.label _8 = 8
|
|
.label _10 = $28
|
|
.label _11 = $28
|
|
.label _12 = $28
|
|
.label _14 = $2a
|
|
.label _15 = $2a
|
|
.label _16 = $2a
|
|
.label _22 = $2d
|
|
.label center_x = $20
|
|
.label center_y = $21
|
|
.label i = 7
|
|
.label screenPtr = $26
|
|
.label spriteData = $a
|
|
.label chargenData = 8
|
|
.label spriteX = $28
|
|
.label spriteY = $2a
|
|
.label spritePtr = $2c
|
|
.label freeIdx = 7
|
|
.label _44 = $24
|
|
.label _45 = $22
|
|
//SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1]
|
|
b1_from_startProcessing:
|
|
//SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1
|
|
ldx #$ff
|
|
jmp b1
|
|
//SEG77 startProcessing::@1
|
|
b1:
|
|
//SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2]
|
|
b2_from_b1:
|
|
//SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b2
|
|
//SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2]
|
|
b2_from_b3:
|
|
//SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG82 startProcessing::@2
|
|
b2:
|
|
//SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1
|
|
tay
|
|
lda #STATUS_FREE
|
|
cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
|
bne b3
|
|
//SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4]
|
|
b4_from_b2:
|
|
b4_from_b9:
|
|
//SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG90 startProcessing::@4
|
|
b4:
|
|
//SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #$ff
|
|
cmp freeIdx
|
|
beq b8
|
|
jmp b5
|
|
//SEG92 startProcessing::@5
|
|
b5:
|
|
//SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _0
|
|
lda #0
|
|
sta _0+1
|
|
//SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _0
|
|
asl
|
|
sta _44
|
|
lda _0+1
|
|
rol
|
|
sta _44+1
|
|
asl _44
|
|
rol _44+1
|
|
//SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1
|
|
lda _45
|
|
clc
|
|
adc _44
|
|
sta _45
|
|
lda _45+1
|
|
adc _44+1
|
|
sta _45+1
|
|
//SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _1
|
|
rol _1+1
|
|
asl _1
|
|
rol _1+1
|
|
asl _1
|
|
rol _1+1
|
|
//SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda _2
|
|
adc #<SCREEN
|
|
sta _2
|
|
lda _2+1
|
|
adc #>SCREEN
|
|
sta _2+1
|
|
//SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3
|
|
lda center_x
|
|
clc
|
|
adc _2
|
|
sta screenPtr
|
|
lda #0
|
|
adc _2+1
|
|
sta screenPtr+1
|
|
//SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2
|
|
lda freeIdx
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
//SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda spriteData
|
|
adc #<SPRITE_DATA
|
|
sta spriteData
|
|
lda spriteData+1
|
|
adc #>SPRITE_DATA
|
|
sta spriteData+1
|
|
//SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2
|
|
ldy center_x
|
|
lda (_2),y
|
|
//SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa
|
|
sta _7
|
|
lda #0
|
|
sta _7+1
|
|
//SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _8
|
|
rol _8+1
|
|
asl _8
|
|
rol _8+1
|
|
asl _8
|
|
rol _8+1
|
|
//SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda chargenData
|
|
adc #<CHARGEN
|
|
sta chargenData
|
|
lda chargenData+1
|
|
adc #>CHARGEN
|
|
sta chargenData+1
|
|
//SEG106 asm { sei }
|
|
sei
|
|
//SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_CHARROM
|
|
sta PROCPORT
|
|
//SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6]
|
|
b6_from_b5:
|
|
//SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy
|
|
//SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy
|
|
jmp b6
|
|
//SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6]
|
|
b6_from_b6:
|
|
//SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy
|
|
//SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy
|
|
//SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy
|
|
jmp b6
|
|
//SEG116 startProcessing::@6
|
|
b6:
|
|
//SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (chargenData),y
|
|
ldy #0
|
|
sta (spriteData),y
|
|
//SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #3
|
|
clc
|
|
adc spriteData
|
|
sta spriteData
|
|
bcc !+
|
|
inc spriteData+1
|
|
!:
|
|
//SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1
|
|
inc chargenData
|
|
bne !+
|
|
inc chargenData+1
|
|
!:
|
|
//SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b6_from_b6
|
|
jmp b7
|
|
//SEG122 startProcessing::@7
|
|
b7:
|
|
//SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG124 asm { cli }
|
|
cli
|
|
//SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2
|
|
lda center_x
|
|
sta _10
|
|
lda #0
|
|
sta _10+1
|
|
//SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _11
|
|
rol _11+1
|
|
asl _11
|
|
rol _11+1
|
|
asl _11
|
|
rol _11+1
|
|
//SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1
|
|
lda #BORDER_XPOS_LEFT
|
|
clc
|
|
adc _12
|
|
sta _12
|
|
bcc !+
|
|
inc _12+1
|
|
!:
|
|
//SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
//SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _14
|
|
lda #0
|
|
sta _14+1
|
|
//SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _15
|
|
rol _15+1
|
|
asl _15
|
|
rol _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1
|
|
lda #BORDER_YPOS_TOP
|
|
clc
|
|
adc _16
|
|
sta _16
|
|
bcc !+
|
|
inc _16+1
|
|
!:
|
|
//SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
//SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2
|
|
lax freeIdx
|
|
axs #-[SPRITE_DATA/$40]
|
|
stx spritePtr
|
|
//SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3
|
|
lda freeIdx
|
|
asl
|
|
asl
|
|
asl
|
|
//SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa
|
|
sta _22
|
|
lda #0
|
|
sta _22+1
|
|
//SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda freeIdx
|
|
asl
|
|
//SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc freeIdx
|
|
//SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1
|
|
clc
|
|
adc freeIdx
|
|
tax
|
|
//SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda spriteX
|
|
sta PROCESSING,x
|
|
lda spriteX+1
|
|
sta PROCESSING+1,x
|
|
//SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda spriteY
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
|
lda spriteY+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
|
|
//SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda _22
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
|
|
lda _22+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
|
|
//SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #$3c
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
|
|
//SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda freeIdx
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
|
//SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda spritePtr
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
|
//SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #STATUS_NEW
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
|
//SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1
|
|
lda screenPtr
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
|
lda screenPtr+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
|
jmp breturn
|
|
//SEG148 startProcessing::@return
|
|
breturn:
|
|
//SEG149 [102] return
|
|
rts
|
|
//SEG150 startProcessing::@8
|
|
b8:
|
|
//SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1
|
|
ldx freeIdx
|
|
//SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1]
|
|
b1_from_b8:
|
|
//SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG154 startProcessing::@3
|
|
b3:
|
|
//SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b2_from_b3
|
|
jmp b9
|
|
//SEG157 startProcessing::@9
|
|
b9:
|
|
//SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx
|
|
stx freeIdx
|
|
jmp b4_from_b9
|
|
}
|
|
//SEG159 getCharToProcess
|
|
// Find the non-space char closest to the center of the screen
|
|
// If no non-space char is found the distance will be 0xffff
|
|
getCharToProcess: {
|
|
.label _9 = $2f
|
|
.label _10 = $2f
|
|
.label _11 = $2f
|
|
.label return_dist = $14
|
|
.label x = $f
|
|
.label dist = $14
|
|
.label screen_line = $c
|
|
.label y = $e
|
|
.label return_x = $12
|
|
.label return_y = $13
|
|
.label closest_dist = $10
|
|
.label closest_x = $12
|
|
.label closest_y = $13
|
|
.label _15 = $31
|
|
.label _16 = $2f
|
|
//SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1]
|
|
b1_from_getCharToProcess:
|
|
//SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta closest_y
|
|
//SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta closest_x
|
|
//SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1
|
|
lda #<NOT_FOUND
|
|
sta closest_dist
|
|
lda #>NOT_FOUND
|
|
sta closest_dist+1
|
|
//SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta screen_line
|
|
lda #>SCREEN_COPY
|
|
sta screen_line+1
|
|
jmp b1
|
|
//SEG166 getCharToProcess::@1
|
|
b1:
|
|
//SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2]
|
|
b2_from_b1:
|
|
//SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy
|
|
//SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy
|
|
//SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy
|
|
//SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
jmp b2
|
|
//SEG172 getCharToProcess::@2
|
|
b2:
|
|
//SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1
|
|
ldy x
|
|
lda (screen_line),y
|
|
cmp #' '
|
|
beq b11
|
|
jmp b4
|
|
//SEG174 getCharToProcess::@4
|
|
b4:
|
|
//SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1
|
|
lda x
|
|
asl
|
|
tax
|
|
//SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda y
|
|
asl
|
|
//SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa
|
|
tay
|
|
lda SQUARES_X,x
|
|
clc
|
|
adc SQUARES_Y,y
|
|
sta dist
|
|
lda SQUARES_X+1,x
|
|
adc SQUARES_Y+1,y
|
|
sta dist+1
|
|
//SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1
|
|
lda closest_dist+1
|
|
cmp dist+1
|
|
bne !+
|
|
lda closest_dist
|
|
cmp dist
|
|
beq b12
|
|
!:
|
|
bcc b12
|
|
jmp b5
|
|
//SEG179 getCharToProcess::@5
|
|
b5:
|
|
//SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2
|
|
lda x
|
|
sta return_x
|
|
//SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2
|
|
lda y
|
|
sta return_y
|
|
//SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3]
|
|
b3_from_b11:
|
|
b3_from_b12:
|
|
b3_from_b5:
|
|
//SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy
|
|
//SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy
|
|
//SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy
|
|
jmp b3
|
|
//SEG186 getCharToProcess::@3
|
|
b3:
|
|
//SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b10
|
|
jmp b6
|
|
//SEG189 getCharToProcess::@6
|
|
b6:
|
|
//SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc screen_line
|
|
sta screen_line
|
|
bcc !+
|
|
inc screen_line+1
|
|
!:
|
|
//SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b9
|
|
jmp b7
|
|
//SEG193 getCharToProcess::@7
|
|
b7:
|
|
//SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1
|
|
lda return_dist
|
|
cmp #<NOT_FOUND
|
|
bne !+
|
|
lda return_dist+1
|
|
cmp #>NOT_FOUND
|
|
beq breturn
|
|
!:
|
|
jmp b8
|
|
//SEG195 getCharToProcess::@8
|
|
b8:
|
|
//SEG196 [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2
|
|
lda return_y
|
|
sta _9
|
|
lda #0
|
|
sta _9+1
|
|
//SEG197 [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _9
|
|
asl
|
|
sta _15
|
|
lda _9+1
|
|
rol
|
|
sta _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG198 [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1
|
|
lda _16
|
|
clc
|
|
adc _15
|
|
sta _16
|
|
lda _16+1
|
|
adc _15+1
|
|
sta _16+1
|
|
//SEG199 [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _10
|
|
rol _10+1
|
|
asl _10
|
|
rol _10+1
|
|
asl _10
|
|
rol _10+1
|
|
//SEG200 [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda _11
|
|
adc #<SCREEN_COPY
|
|
sta _11
|
|
lda _11+1
|
|
adc #>SCREEN_COPY
|
|
sta _11+1
|
|
//SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1
|
|
// clear the found char on the screen copy
|
|
lda #' '
|
|
ldy return_x
|
|
sta (_11),y
|
|
jmp breturn
|
|
//SEG202 getCharToProcess::@return
|
|
breturn:
|
|
//SEG203 [130] return
|
|
rts
|
|
//SEG204 getCharToProcess::@9
|
|
b9:
|
|
//SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist
|
|
sta closest_dist
|
|
lda return_dist+1
|
|
sta closest_dist+1
|
|
//SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1]
|
|
b1_from_b9:
|
|
//SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy
|
|
//SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy
|
|
//SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy
|
|
//SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy
|
|
//SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy
|
|
jmp b1
|
|
//SEG212 getCharToProcess::@10
|
|
b10:
|
|
//SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist
|
|
sta closest_dist
|
|
lda return_dist+1
|
|
sta closest_dist+1
|
|
//SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2]
|
|
b2_from_b10:
|
|
//SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy
|
|
//SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy
|
|
//SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy
|
|
//SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy
|
|
jmp b2
|
|
//SEG219 getCharToProcess::@12
|
|
b12:
|
|
//SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist
|
|
lda closest_dist+1
|
|
sta return_dist+1
|
|
jmp b3_from_b12
|
|
//SEG221 getCharToProcess::@11
|
|
b11:
|
|
//SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist
|
|
lda closest_dist+1
|
|
sta return_dist+1
|
|
jmp b3_from_b11
|
|
}
|
|
//SEG223 setupRasterIrq
|
|
// Setup Raster IRQ
|
|
setupRasterIrq: {
|
|
.label irqRoutine = irqTop
|
|
//SEG224 asm { sei }
|
|
sei
|
|
//SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1_INTERRUPT
|
|
jmp b1
|
|
//SEG228 setupRasterIrq::@1
|
|
b1:
|
|
//SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
|
lda #$7f
|
|
and VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
jmp b2
|
|
//SEG230 setupRasterIrq::@2
|
|
b2:
|
|
//SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
//SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irqRoutine
|
|
sta HARDWARE_IRQ
|
|
lda #>irqRoutine
|
|
sta HARDWARE_IRQ+1
|
|
//SEG234 asm { cli }
|
|
cli
|
|
jmp breturn
|
|
//SEG235 setupRasterIrq::@return
|
|
breturn:
|
|
//SEG236 [144] return
|
|
rts
|
|
}
|
|
//SEG237 initSprites
|
|
// Initialize sprites
|
|
initSprites: {
|
|
.label sp = $16
|
|
//SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1]
|
|
b1_from_initSprites:
|
|
//SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1
|
|
lda #<SPRITE_DATA
|
|
sta sp
|
|
lda #>SPRITE_DATA
|
|
sta sp+1
|
|
jmp b1
|
|
// Clear sprite data
|
|
//SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1]
|
|
b1_from_b1:
|
|
//SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG242 initSprites::@1
|
|
b1:
|
|
//SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
ldy #0
|
|
sta (sp),y
|
|
//SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1
|
|
inc sp
|
|
bne !+
|
|
inc sp+1
|
|
!:
|
|
//SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1
|
|
lda sp+1
|
|
cmp #>SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1_from_b1
|
|
bne !+
|
|
lda sp
|
|
cmp #<SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1_from_b1
|
|
!:
|
|
//SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2]
|
|
b2_from_b1:
|
|
//SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp b2
|
|
// Initialize sprite registers
|
|
//SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2]
|
|
b2_from_b2:
|
|
//SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG250 initSprites::@2
|
|
b2:
|
|
//SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #LIGHT_BLUE
|
|
sta SPRITES_COLS,x
|
|
//SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG254 initSprites::@3
|
|
b3:
|
|
//SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_MC
|
|
//SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_EXPAND_X
|
|
//SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_EXPAND_Y
|
|
jmp breturn
|
|
//SEG258 initSprites::@return
|
|
breturn:
|
|
//SEG259 [157] return
|
|
rts
|
|
}
|
|
//SEG260 initSquareTables
|
|
// initialize SQUARES table
|
|
initSquareTables: {
|
|
.label _6 = $1a
|
|
.label _14 = $1a
|
|
.label x = $18
|
|
.label y = $19
|
|
//SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1]
|
|
b1_from_initSquareTables:
|
|
//SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
jmp b1
|
|
//SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1]
|
|
b1_from_b9:
|
|
//SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG265 initSquareTables::@1
|
|
b1:
|
|
//SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda x
|
|
cmp #$14
|
|
bcc b2
|
|
jmp b3
|
|
//SEG267 initSquareTables::@3
|
|
b3:
|
|
//SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1
|
|
lda x
|
|
sec
|
|
sbc #$14
|
|
//SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4]
|
|
b4_from_b2:
|
|
b4_from_b3:
|
|
//SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG271 initSquareTables::@4
|
|
b4:
|
|
//SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa
|
|
tax
|
|
//SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
|
//SEG274 [165] call mul8u
|
|
//SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u]
|
|
mul8u_from_b4:
|
|
//SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy
|
|
//SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2
|
|
jmp b9
|
|
//SEG279 initSquareTables::@9
|
|
b9:
|
|
//SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2
|
|
//SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda x
|
|
asl
|
|
//SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1
|
|
tay
|
|
lda _6
|
|
sta SQUARES_X,y
|
|
lda _6+1
|
|
sta SQUARES_X+1,y
|
|
//SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b1_from_b9
|
|
//SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5]
|
|
b5_from_b9:
|
|
//SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
jmp b5
|
|
//SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5]
|
|
b5_from_b10:
|
|
//SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy
|
|
jmp b5
|
|
//SEG289 initSquareTables::@5
|
|
b5:
|
|
//SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda y
|
|
cmp #$c
|
|
bcc b6
|
|
jmp b7
|
|
//SEG291 initSquareTables::@7
|
|
b7:
|
|
//SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1
|
|
lda y
|
|
sec
|
|
sbc #$c
|
|
//SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8]
|
|
b8_from_b6:
|
|
b8_from_b7:
|
|
//SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy
|
|
jmp b8
|
|
//SEG295 initSquareTables::@8
|
|
b8:
|
|
//SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa
|
|
tax
|
|
//SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
|
//SEG298 [178] call mul8u
|
|
//SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u]
|
|
mul8u_from_b8:
|
|
//SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy
|
|
//SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2
|
|
jmp b10
|
|
//SEG303 initSquareTables::@10
|
|
b10:
|
|
//SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3
|
|
//SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda y
|
|
asl
|
|
//SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1
|
|
tay
|
|
lda _14
|
|
sta SQUARES_Y,y
|
|
lda _14+1
|
|
sta SQUARES_Y+1,y
|
|
//SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b5_from_b10
|
|
jmp breturn
|
|
//SEG309 initSquareTables::@return
|
|
breturn:
|
|
//SEG310 [185] return
|
|
rts
|
|
//SEG311 initSquareTables::@6
|
|
b6:
|
|
//SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$c
|
|
sec
|
|
sbc y
|
|
jmp b8_from_b6
|
|
//SEG313 initSquareTables::@2
|
|
b2:
|
|
//SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$14
|
|
sec
|
|
sbc x
|
|
jmp b4_from_b2
|
|
}
|
|
//SEG315 mul8u
|
|
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
|
|
// mul8u(byte register(X) a, byte register(A) b)
|
|
mul8u: {
|
|
.label mb = $1c
|
|
.label res = $1a
|
|
.label return = $1a
|
|
//SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
|
|
b1_from_mul8u:
|
|
//SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy
|
|
//SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1
|
|
lda #0
|
|
sta res
|
|
lda #0
|
|
sta res+1
|
|
//SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy
|
|
jmp b1
|
|
//SEG320 mul8u::@1
|
|
b1:
|
|
//SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b2
|
|
jmp breturn
|
|
//SEG322 mul8u::@return
|
|
breturn:
|
|
//SEG323 [191] return
|
|
rts
|
|
//SEG324 mul8u::@2
|
|
b2:
|
|
//SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #1
|
|
//SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq b3_from_b2
|
|
jmp b4
|
|
//SEG327 mul8u::@4
|
|
b4:
|
|
//SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda res
|
|
clc
|
|
adc mb
|
|
sta res
|
|
lda res+1
|
|
adc mb+1
|
|
sta res+1
|
|
//SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
|
|
b3_from_b2:
|
|
b3_from_b4:
|
|
//SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy
|
|
jmp b3
|
|
//SEG331 mul8u::@3
|
|
b3:
|
|
//SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
tax
|
|
//SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl mb
|
|
rol mb+1
|
|
//SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
|
|
b1_from_b3:
|
|
//SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy
|
|
//SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy
|
|
//SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy
|
|
jmp b1
|
|
}
|
|
//SEG338 irqBottom
|
|
// Raster Interrupt at the middle of the screen
|
|
irqBottom: {
|
|
//SEG339 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1]
|
|
b1_from_irqBottom:
|
|
//SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp b1
|
|
//SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1]
|
|
b1_from_b1:
|
|
//SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG344 irqBottom::@1
|
|
b1:
|
|
//SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #5
|
|
bne b1_from_b1
|
|
//SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2]
|
|
b2_from_b1:
|
|
jmp b2
|
|
//SEG348 irqBottom::@2
|
|
b2:
|
|
//SEG349 [203] call processChars
|
|
//SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars]
|
|
processChars_from_b2:
|
|
jsr processChars
|
|
jmp b3
|
|
//SEG351 irqBottom::@3
|
|
b3:
|
|
//SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the top of the screen
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2
|
|
lda #<irqTop
|
|
sta HARDWARE_IRQ
|
|
lda #>irqTop
|
|
sta HARDWARE_IRQ+1
|
|
//SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp breturn
|
|
//SEG355 irqBottom::@return
|
|
breturn:
|
|
//SEG356 [207] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
//SEG357 processChars
|
|
// Process any chars in the PROCESSING array
|
|
processChars: {
|
|
.label _16 = $38
|
|
.label _26 = $36
|
|
.label processing = $33
|
|
.label bitmask = $35
|
|
.label i = $1e
|
|
.label xpos = $36
|
|
.label ypos = $3a
|
|
.label numActive = $1f
|
|
//SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1]
|
|
b1_from_processChars:
|
|
//SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta numActive
|
|
//SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1]
|
|
b1_from_b2:
|
|
//SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy
|
|
//SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG364 processChars::@1
|
|
b1:
|
|
//SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa
|
|
clc
|
|
adc #<PROCESSING
|
|
sta processing
|
|
lda #>PROCESSING
|
|
adc #0
|
|
sta processing+1
|
|
//SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
lda (processing),y
|
|
tax
|
|
lda #1
|
|
cpx #0
|
|
beq !e+
|
|
!:
|
|
asl
|
|
dex
|
|
bne !-
|
|
!e:
|
|
sta bitmask
|
|
//SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
lda (processing),y
|
|
cmp #STATUS_FREE
|
|
beq b2_from_b1
|
|
jmp b10
|
|
//SEG372 processChars::@10
|
|
b10:
|
|
//SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
lda (processing),y
|
|
cmp #STATUS_NEW
|
|
bne b3
|
|
jmp b11
|
|
//SEG374 processChars::@11
|
|
b11:
|
|
//SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2
|
|
// Clear the char on the screen
|
|
ldx #' '
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
lda (processing),y
|
|
sta !++1
|
|
iny
|
|
lda (processing),y
|
|
sta !++2
|
|
txa
|
|
!:
|
|
sta $ffff
|
|
//SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
// Enable the sprite
|
|
lda SPRITES_ENABLE
|
|
ora bitmask
|
|
sta SPRITES_ENABLE
|
|
//SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3
|
|
// Set sprite pointer
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
pha
|
|
lda (processing),y
|
|
tay
|
|
pla
|
|
sta SCREEN+SPRITE_PTRS,y
|
|
//SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status
|
|
lda #STATUS_PROCESSING
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
jmp b3
|
|
//SEG379 processChars::@3
|
|
b3:
|
|
//SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4
|
|
ldy #0
|
|
lda (processing),y
|
|
sta xpos
|
|
iny
|
|
lda (processing),y
|
|
sta xpos+1
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
//SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1
|
|
lda xpos+1
|
|
//SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1
|
|
// Set sprite position
|
|
cmp #0
|
|
bne b4
|
|
jmp b8
|
|
//SEG383 processChars::@8
|
|
b8:
|
|
//SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor bitmask
|
|
//SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
and SPRITES_XMSB
|
|
sta SPRITES_XMSB
|
|
jmp b5
|
|
//SEG386 processChars::@5
|
|
b5:
|
|
//SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
tax
|
|
//SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1
|
|
lda xpos
|
|
//SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta SPRITES_XPOS,x
|
|
//SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
lda (processing),y
|
|
sta _16
|
|
iny
|
|
lda (processing),y
|
|
sta _16+1
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
//SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2
|
|
lda _16
|
|
sta ypos
|
|
//SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda ypos
|
|
sta SPRITES_YPOS,x
|
|
//SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1
|
|
// Move sprite
|
|
ldy #1
|
|
lda (processing),y
|
|
cmp #>XPOS_LEFTMOST
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<XPOS_LEFTMOST
|
|
bcc b6
|
|
!:
|
|
jmp b15
|
|
//SEG394 processChars::@15
|
|
b15:
|
|
//SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1
|
|
ldy #1
|
|
lda #>XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda #<XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
!:
|
|
jmp b14
|
|
//SEG396 processChars::@14
|
|
b14:
|
|
//SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda (processing),y
|
|
cmp #>YPOS_TOPMOST
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<YPOS_TOPMOST
|
|
bcc b6
|
|
!:
|
|
jmp b13
|
|
//SEG398 processChars::@13
|
|
b13:
|
|
//SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda #>YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
bne !+
|
|
dey
|
|
lda #<YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcc b6
|
|
!:
|
|
jmp b9
|
|
//SEG400 processChars::@9
|
|
b9:
|
|
//SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3
|
|
lsr _26+1
|
|
ror _26
|
|
lsr _26+1
|
|
ror _26
|
|
lsr _26+1
|
|
ror _26
|
|
//SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1
|
|
lda _26
|
|
//SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #BORDER_XPOS_LEFT/8
|
|
//SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
//SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
tax
|
|
clc
|
|
lda (processing),y
|
|
adc VXSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VXSIN+1,x
|
|
sta (processing),y
|
|
//SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
sty $ff
|
|
clc
|
|
lda (processing),y
|
|
ldy #0
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy $ff
|
|
iny
|
|
lda (processing),y
|
|
ldy #1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
//SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3
|
|
lda ypos
|
|
lsr
|
|
lsr
|
|
lsr
|
|
//SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #BORDER_YPOS_TOP/8
|
|
//SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
//SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
tax
|
|
clc
|
|
lda (processing),y
|
|
adc VYSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VYSIN+1,x
|
|
sta (processing),y
|
|
//SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
clc
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
jmp b7
|
|
//SEG412 processChars::@7
|
|
b7:
|
|
//SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1
|
|
inc numActive
|
|
//SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2]
|
|
b2_from_b1:
|
|
b2_from_b7:
|
|
//SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG416 processChars::@2
|
|
b2:
|
|
//SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b1_from_b2
|
|
jmp b12
|
|
//SEG419 processChars::@12
|
|
b12:
|
|
//SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1
|
|
lax numActive
|
|
axs #-['0']
|
|
//SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$3e7
|
|
jmp breturn
|
|
//SEG422 processChars::@return
|
|
breturn:
|
|
//SEG423 [254] return
|
|
rts
|
|
//SEG424 processChars::@6
|
|
b6:
|
|
//SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status to FREE
|
|
lda #STATUS_FREE
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
//SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor bitmask
|
|
//SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
// Disable the sprite
|
|
and SPRITES_ENABLE
|
|
sta SPRITES_ENABLE
|
|
jmp b7
|
|
//SEG428 processChars::@4
|
|
b4:
|
|
//SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
lda SPRITES_XMSB
|
|
ora bitmask
|
|
sta SPRITES_XMSB
|
|
jmp b5
|
|
}
|
|
//SEG430 irqTop
|
|
// Raster Interrupt at the top of the screen
|
|
irqTop: {
|
|
//SEG431 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1]
|
|
b1_from_irqTop:
|
|
//SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp b1
|
|
//SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1]
|
|
b1_from_b1:
|
|
//SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG436 irqTop::@1
|
|
b1:
|
|
//SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #5
|
|
bne b1_from_b1
|
|
//SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2]
|
|
b2_from_b1:
|
|
//SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp b2
|
|
//*BORDERCOL = WHITE;
|
|
//*BGCOL = WHITE;
|
|
//SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2]
|
|
b2_from_b2:
|
|
//SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG443 irqTop::@2
|
|
b2:
|
|
//SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG446 irqTop::@3
|
|
b3:
|
|
//SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the middle of the screen
|
|
lda #RASTER_IRQ_MIDDLE
|
|
sta RASTER
|
|
//SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2
|
|
lda #<irqBottom
|
|
sta HARDWARE_IRQ
|
|
lda #>irqBottom
|
|
sta HARDWARE_IRQ+1
|
|
//SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp breturn
|
|
//SEG450 irqTop::@return
|
|
breturn:
|
|
//SEG451 [269] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
// Copy of the screen used for finding chars to process
|
|
SCREEN_COPY: .fill $3e8, 0
|
|
// SQUARES_X[i] = (i-20)*(i-20)
|
|
SQUARES_X: .fill 2*$28, 0
|
|
// SQUARES_Y[i] = (i-12)*(i-12)
|
|
SQUARES_Y: .fill 2*$19, 0
|
|
// Sprites currently being processed in the interrupt
|
|
PROCESSING: .fill $d*NUM_PROCESSING, 0
|
|
.pc = VXSIN "VXSIN"
|
|
.for(var i=0; i<40; i++) {
|
|
.word -sin(toRadians([i*360]/40))*4
|
|
}
|
|
|
|
.pc = VYSIN "VYSIN"
|
|
.for(var i=0; i<25; i++) {
|
|
.word -sin(toRadians([i*360]/25))*4
|
|
}
|
|
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp bend
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b8
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b9
|
|
Removing instruction jmp b6
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b6
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b9
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b6
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b8
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b9
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b8
|
|
Removing instruction jmp b10
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b10
|
|
Removing instruction jmp b11
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b8
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b15
|
|
Removing instruction jmp b14
|
|
Removing instruction jmp b13
|
|
Removing instruction jmp b9
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b12
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction ldy #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #>0
|
|
Removing instruction ldy #0
|
|
Removing instruction lda #0
|
|
Replacing instruction ldy #0 with TAY
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #0
|
|
Removing instruction lda ypos
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b2_from_b2 with b2
|
|
Replacing label b4_from_b5 with b4_from_b8
|
|
Replacing label b6_from_b6 with b6
|
|
Replacing label b2_from_b3 with b2
|
|
Replacing label b4_from_b9 with b4
|
|
Replacing label b3_from_b12 with b3
|
|
Replacing label b3_from_b11 with b3
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b2_from_b2 with b2
|
|
Replacing label b1_from_b9 with b1
|
|
Replacing label b5_from_b10 with b5
|
|
Replacing label b8_from_b6 with b8
|
|
Replacing label b4_from_b2 with b4
|
|
Replacing label b3_from_b2 with b3
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b2_from_b1 with b2
|
|
Replacing label b1_from_b2 with b1
|
|
Replacing label b1_from_b1 with b1
|
|
Replacing label b2_from_b2 with b2
|
|
Removing instruction b1:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2:
|
|
Removing instruction main_from_b2:
|
|
Removing instruction bend_from_b2:
|
|
Removing instruction b1_from_b1:
|
|
Removing instruction b2_from_b2:
|
|
Removing instruction b3_from_b2:
|
|
Removing instruction initSprites_from_b3:
|
|
Removing instruction b8_from_b3:
|
|
Removing instruction b4_from_b5:
|
|
Removing instruction getCharToProcess_from_b4:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2_from_b3:
|
|
Removing instruction b4_from_b2:
|
|
Removing instruction b4_from_b9:
|
|
Removing instruction b6_from_b6:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b3_from_b11:
|
|
Removing instruction b3_from_b12:
|
|
Removing instruction b3_from_b5:
|
|
Removing instruction b1_from_b1:
|
|
Removing instruction b2_from_b2:
|
|
Removing instruction b1_from_b9:
|
|
Removing instruction b4_from_b2:
|
|
Removing instruction b4_from_b3:
|
|
Removing instruction b5_from_b10:
|
|
Removing instruction b8_from_b6:
|
|
Removing instruction b8_from_b7:
|
|
Removing instruction b3_from_b2:
|
|
Removing instruction b3_from_b4:
|
|
Removing instruction b1_from_b1:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction processChars_from_b2:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_b2:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2_from_b7:
|
|
Removing instruction b1_from_b1:
|
|
Removing instruction b2_from_b2:
|
|
Removing instruction breturn:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction bend:
|
|
Removing instruction initSquareTables_from_main:
|
|
Removing instruction b1_from_main:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b3:
|
|
Removing instruction b8:
|
|
Removing instruction b4:
|
|
Removing instruction b9:
|
|
Removing instruction b6:
|
|
Removing instruction startProcessing_from_b5:
|
|
Removing instruction b1_from_startProcessing:
|
|
Removing instruction b5:
|
|
Removing instruction b6_from_b5:
|
|
Removing instruction b7:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_b8:
|
|
Removing instruction b9:
|
|
Removing instruction b1_from_getCharToProcess:
|
|
Removing instruction b4:
|
|
Removing instruction b5:
|
|
Removing instruction b6:
|
|
Removing instruction b7:
|
|
Removing instruction b8:
|
|
Removing instruction b1_from_b9:
|
|
Removing instruction b2_from_b10:
|
|
Removing instruction b1:
|
|
Removing instruction b2:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_initSprites:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b3:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_initSquareTables:
|
|
Removing instruction b3:
|
|
Removing instruction mul8u_from_b4:
|
|
Removing instruction b9:
|
|
Removing instruction b5_from_b9:
|
|
Removing instruction b7:
|
|
Removing instruction mul8u_from_b8:
|
|
Removing instruction b10:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_mul8u:
|
|
Removing instruction breturn:
|
|
Removing instruction b4:
|
|
Removing instruction b1_from_b3:
|
|
Removing instruction b1_from_irqBottom:
|
|
Removing instruction b2:
|
|
Removing instruction b3:
|
|
Removing instruction b1_from_processChars:
|
|
Removing instruction b10:
|
|
Removing instruction b11:
|
|
Removing instruction b8:
|
|
Removing instruction b15:
|
|
Removing instruction b14:
|
|
Removing instruction b13:
|
|
Removing instruction b9:
|
|
Removing instruction b12:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_irqTop:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b3:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Updating BasicUpstart to call main directly
|
|
Removing instruction jsr main
|
|
Succesful ASM optimization Pass5SkipBegin
|
|
Relabelling long label b4_from_b8 to b3
|
|
Succesful ASM optimization Pass5RelabelLongLabels
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b6
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Replacing instruction lda x with TYA
|
|
Removing instruction lda #$28
|
|
Removing instruction lda x
|
|
Removing instruction lda y
|
|
Removing instruction ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Removing instruction bbegin:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Fixing long branch [425] bne b2 to beq
|
|
Fixing long branch [1007] bne b1 to beq
|
|
Fixing long branch [212] bne b3 to beq
|
|
Fixing long branch [218] beq b8 to bne
|
|
Fixing long branch [473] beq b11 to bne
|
|
Fixing long branch [494] beq b12 to bne
|
|
Fixing long branch [498] bcc b12 to bcs
|
|
Fixing long branch [829] beq b2 to bne
|
|
Fixing long branch [881] bne b4 to beq
|
|
Fixing long branch [915] bcc b6 to bcs
|
|
Fixing long branch [922] bcc b6 to bcs
|
|
Fixing long branch [929] bcc b6 to bcs
|
|
Fixing long branch [936] bcc b6 to bcs
|
|
Fixing long branch [944] bcc b6 to bcs
|
|
Fixing long branch [951] bcc b6 to bcs
|
|
Fixing long branch [959] bcc b6 to bcs
|
|
Fixing long branch [966] bcc b6 to bcs
|
|
|
|
FINAL SYMBOL TABLE
|
|
(label) @1
|
|
(label) @2
|
|
(label) @begin
|
|
(label) @end
|
|
(byte) BORDER_XPOS_LEFT
|
|
(const byte) BORDER_XPOS_LEFT#0 BORDER_XPOS_LEFT = (byte) $18
|
|
(word) BORDER_XPOS_RIGHT
|
|
(const word) BORDER_XPOS_RIGHT#0 BORDER_XPOS_RIGHT = (word) $158
|
|
(byte) BORDER_YPOS_BOTTOM
|
|
(const byte) BORDER_YPOS_BOTTOM#0 BORDER_YPOS_BOTTOM = (byte) $fa
|
|
(byte) BORDER_YPOS_TOP
|
|
(const byte) BORDER_YPOS_TOP#0 BORDER_YPOS_TOP = (byte) $32
|
|
(byte*) CHARGEN
|
|
(const byte*) CHARGEN#0 CHARGEN = (byte*) 53248
|
|
(byte*) CIA1_INTERRUPT
|
|
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = (byte*) 56333
|
|
(byte) CIA_INTERRUPT_CLEAR
|
|
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f
|
|
(byte*) COLS
|
|
(const byte*) COLS#0 COLS = (byte*) 55296
|
|
(void()**) HARDWARE_IRQ
|
|
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534
|
|
(byte*) IRQ_ENABLE
|
|
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = (byte*) 53274
|
|
(byte) IRQ_RASTER
|
|
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte) 1
|
|
(byte*) IRQ_STATUS
|
|
(const byte*) IRQ_STATUS#0 IRQ_STATUS = (byte*) 53273
|
|
(byte) LIGHT_BLUE
|
|
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte) $e
|
|
(word) NOT_FOUND
|
|
(const word) NOT_FOUND#0 NOT_FOUND = (word) $ffff
|
|
(byte) NUM_PROCESSING
|
|
(const byte) NUM_PROCESSING#0 NUM_PROCESSING = (byte) 8
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID OFFSET_STRUCT_PROCESSINGSPRITE_ID = (byte) 8
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR OFFSET_STRUCT_PROCESSINGSPRITE_PTR = (byte) 9
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = (byte) $b
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = (byte) $a
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX OFFSET_STRUCT_PROCESSINGSPRITE_VX = (byte) 4
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY OFFSET_STRUCT_PROCESSINGSPRITE_VY = (byte) 6
|
|
(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y OFFSET_STRUCT_PROCESSINGSPRITE_Y = (byte) 2
|
|
(struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING
|
|
(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 PROCESSING = { fill( NUM_PROCESSING#0, 0) }
|
|
(byte*) PROCPORT
|
|
(const byte*) PROCPORT#0 PROCPORT = (byte*) 1
|
|
(byte*) PROCPORT_DDR
|
|
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = (byte*) 0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte) 7
|
|
(byte) PROCPORT_RAM_CHARROM
|
|
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte) $31
|
|
(byte) PROCPORT_RAM_IO
|
|
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte) $35
|
|
(word) ProcessingChar::dist
|
|
(byte) ProcessingChar::x
|
|
(byte) ProcessingChar::y
|
|
(byte) ProcessingSprite::id
|
|
(byte) ProcessingSprite::ptr
|
|
(byte*) ProcessingSprite::screenPtr
|
|
(byte) ProcessingSprite::status
|
|
(word) ProcessingSprite::vx
|
|
(word) ProcessingSprite::vy
|
|
(word) ProcessingSprite::x
|
|
(word) ProcessingSprite::y
|
|
(byte*) RASTER
|
|
(const byte*) RASTER#0 RASTER = (byte*) 53266
|
|
(byte) RASTER_IRQ_MIDDLE
|
|
(const byte) RASTER_IRQ_MIDDLE#0 RASTER_IRQ_MIDDLE = (byte) $ff
|
|
(byte) RASTER_IRQ_TOP
|
|
(const byte) RASTER_IRQ_TOP#0 RASTER_IRQ_TOP = (byte) $30
|
|
(byte*) SCREEN
|
|
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
|
|
(byte[$3e8]) SCREEN_COPY
|
|
(const byte[$3e8]) SCREEN_COPY#0 SCREEN_COPY = { fill( $3e8, 0) }
|
|
(byte*) SPRITES_COLS
|
|
(const byte*) SPRITES_COLS#0 SPRITES_COLS = (byte*) 53287
|
|
(byte*) SPRITES_ENABLE
|
|
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = (byte*) 53269
|
|
(byte*) SPRITES_EXPAND_X
|
|
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = (byte*) 53277
|
|
(byte*) SPRITES_EXPAND_Y
|
|
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = (byte*) 53271
|
|
(byte*) SPRITES_MC
|
|
(const byte*) SPRITES_MC#0 SPRITES_MC = (byte*) 53276
|
|
(byte*) SPRITES_XMSB
|
|
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = (byte*) 53264
|
|
(byte*) SPRITES_XPOS
|
|
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = (byte*) 53248
|
|
(byte*) SPRITES_YPOS
|
|
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = (byte*) 53249
|
|
(byte*) SPRITE_DATA
|
|
(const byte*) SPRITE_DATA#0 SPRITE_DATA = (byte*) 8192
|
|
(word) SPRITE_PTRS
|
|
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word) $3f8
|
|
(word[$28]) SQUARES_X
|
|
(const word[$28]) SQUARES_X#0 SQUARES_X = { fill( $28, 0) }
|
|
(word[$19]) SQUARES_Y
|
|
(const word[$19]) SQUARES_Y#0 SQUARES_Y = { fill( $19, 0) }
|
|
(byte) STATUS_FREE
|
|
(const byte) STATUS_FREE#0 STATUS_FREE = (byte) 0
|
|
(byte) STATUS_NEW
|
|
(const byte) STATUS_NEW#0 STATUS_NEW = (byte) 1
|
|
(byte) STATUS_PROCESSING
|
|
(const byte) STATUS_PROCESSING#0 STATUS_PROCESSING = (byte) 2
|
|
(byte*) VIC_CONTROL
|
|
(const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265
|
|
(word*) VXSIN
|
|
(const word*) VXSIN#0 VXSIN = (word*) 8704
|
|
(word*) VYSIN
|
|
(const word*) VYSIN#0 VYSIN = (word*) 8832
|
|
(word) XPOS_LEFTMOST
|
|
(const word) XPOS_LEFTMOST#0 XPOS_LEFTMOST = (word)(const byte) BORDER_XPOS_LEFT#0-(byte) 8<<(byte) 4
|
|
(word) XPOS_RIGHTMOST
|
|
(const word) XPOS_RIGHTMOST#0 XPOS_RIGHTMOST = (const word) BORDER_XPOS_RIGHT#0<<(byte) 4
|
|
(word) YPOS_BOTTOMMOST
|
|
(const word) YPOS_BOTTOMMOST#0 YPOS_BOTTOMMOST = (word)(const byte) BORDER_YPOS_BOTTOM#0<<(byte) 4
|
|
(word) YPOS_TOPMOST
|
|
(const word) YPOS_TOPMOST#0 YPOS_TOPMOST = (word)(const byte) BORDER_YPOS_TOP#0-(byte) 8<<(byte) 4
|
|
(struct ProcessingChar()) getCharToProcess()
|
|
(word~) getCharToProcess::$10 $10 zp ZP_WORD:47 4.0
|
|
(byte*~) getCharToProcess::$11 $11 zp ZP_WORD:47 4.0
|
|
(byte~) getCharToProcess::$13 reg byte x 1001.0
|
|
(byte~) getCharToProcess::$14 reg byte a 2002.0
|
|
(word) getCharToProcess::$15 $15 zp ZP_WORD:49 4.0
|
|
(word) getCharToProcess::$16 $16 zp ZP_WORD:47 4.0
|
|
(word~) getCharToProcess::$9 $9 zp ZP_WORD:47 3.0
|
|
(label) getCharToProcess::@1
|
|
(label) getCharToProcess::@10
|
|
(label) getCharToProcess::@11
|
|
(label) getCharToProcess::@12
|
|
(label) getCharToProcess::@2
|
|
(label) getCharToProcess::@3
|
|
(label) getCharToProcess::@4
|
|
(label) getCharToProcess::@5
|
|
(label) getCharToProcess::@6
|
|
(label) getCharToProcess::@7
|
|
(label) getCharToProcess::@8
|
|
(label) getCharToProcess::@9
|
|
(label) getCharToProcess::@return
|
|
(struct ProcessingChar) getCharToProcess::closest
|
|
(word) getCharToProcess::closest_dist
|
|
(word~) getCharToProcess::closest_dist#10 closest_dist zp ZP_WORD:16 202.0
|
|
(word~) getCharToProcess::closest_dist#12 closest_dist zp ZP_WORD:16 2002.0
|
|
(word) getCharToProcess::closest_dist#2 closest_dist zp ZP_WORD:16 684.1666666666667
|
|
(word) getCharToProcess::closest_dist#8 closest_dist zp ZP_WORD:16 202.0
|
|
(byte) getCharToProcess::closest_x
|
|
(byte) getCharToProcess::closest_x#7 closest_x zp ZP_BYTE:18 388.0
|
|
(byte) getCharToProcess::closest_x#9 closest_x zp ZP_BYTE:18 202.0
|
|
(byte) getCharToProcess::closest_y
|
|
(byte) getCharToProcess::closest_y#7 closest_y zp ZP_BYTE:19 388.0
|
|
(byte) getCharToProcess::closest_y#9 closest_y zp ZP_BYTE:19 202.0
|
|
(word) getCharToProcess::dist
|
|
(word) getCharToProcess::dist#0 dist zp ZP_WORD:20 750.75
|
|
(struct ProcessingChar) getCharToProcess::return
|
|
(word) getCharToProcess::return_dist
|
|
(word) getCharToProcess::return_dist#0 return_dist zp ZP_WORD:20 7.333333333333333
|
|
(word) getCharToProcess::return_dist#1 return_dist zp ZP_WORD:20 242.23529411764704
|
|
(word~) getCharToProcess::return_dist#5 return_dist zp ZP_WORD:20 2002.0
|
|
(word~) getCharToProcess::return_dist#6 return_dist zp ZP_WORD:20 2002.0
|
|
(byte) getCharToProcess::return_x
|
|
(byte) getCharToProcess::return_x#0 reg byte x 7.333333333333333
|
|
(byte) getCharToProcess::return_x#1 return_x zp ZP_BYTE:18 242.23529411764704
|
|
(byte~) getCharToProcess::return_x#7 return_x zp ZP_BYTE:18 1001.0
|
|
(byte) getCharToProcess::return_y
|
|
(byte) getCharToProcess::return_y#0 reg byte y 7.333333333333333
|
|
(byte) getCharToProcess::return_y#1 return_y zp ZP_BYTE:19 228.66666666666669
|
|
(byte~) getCharToProcess::return_y#7 return_y zp ZP_BYTE:19 2002.0
|
|
(byte*) getCharToProcess::screen_line
|
|
(byte*) getCharToProcess::screen_line#1 screen_line zp ZP_WORD:12 50.5
|
|
(byte*) getCharToProcess::screen_line#4 screen_line zp ZP_WORD:12 80.2
|
|
(byte) getCharToProcess::x
|
|
(byte) getCharToProcess::x#1 x zp ZP_BYTE:15 1001.0
|
|
(byte) getCharToProcess::x#2 x zp ZP_BYTE:15 455.0
|
|
(byte) getCharToProcess::y
|
|
(byte) getCharToProcess::y#1 y zp ZP_BYTE:14 101.0
|
|
(byte) getCharToProcess::y#7 y zp ZP_BYTE:14 137.75
|
|
(void()) initSprites()
|
|
(label) initSprites::@1
|
|
(label) initSprites::@2
|
|
(label) initSprites::@3
|
|
(label) initSprites::@return
|
|
(byte) initSprites::i
|
|
(byte) initSprites::i#1 reg byte x 16.5
|
|
(byte) initSprites::i#2 reg byte x 16.5
|
|
(byte*) initSprites::sp
|
|
(byte*) initSprites::sp#1 sp zp ZP_WORD:22 16.5
|
|
(byte*) initSprites::sp#2 sp zp ZP_WORD:22 16.5
|
|
(void()) initSquareTables()
|
|
(byte~) initSquareTables::$10 reg byte a 22.0
|
|
(byte~) initSquareTables::$12 reg byte a 22.0
|
|
(word~) initSquareTables::$14 $14 zp ZP_WORD:26 11.0
|
|
(byte~) initSquareTables::$16 reg byte a 22.0
|
|
(byte~) initSquareTables::$17 reg byte a 22.0
|
|
(byte~) initSquareTables::$2 reg byte a 22.0
|
|
(byte~) initSquareTables::$4 reg byte a 22.0
|
|
(word~) initSquareTables::$6 $6 zp ZP_WORD:26 11.0
|
|
(label) initSquareTables::@1
|
|
(label) initSquareTables::@10
|
|
(label) initSquareTables::@2
|
|
(label) initSquareTables::@3
|
|
(label) initSquareTables::@4
|
|
(label) initSquareTables::@5
|
|
(label) initSquareTables::@6
|
|
(label) initSquareTables::@7
|
|
(label) initSquareTables::@8
|
|
(label) initSquareTables::@9
|
|
(label) initSquareTables::@return
|
|
(byte) initSquareTables::x
|
|
(byte) initSquareTables::x#1 x zp ZP_BYTE:24 16.5
|
|
(byte) initSquareTables::x#2 x zp ZP_BYTE:24 5.5
|
|
(byte) initSquareTables::x_dist
|
|
(byte) initSquareTables::x_dist#0 reg byte a 22.0
|
|
(byte) initSquareTables::y
|
|
(byte) initSquareTables::y#1 y zp ZP_BYTE:25 16.5
|
|
(byte) initSquareTables::y#2 y zp ZP_BYTE:25 5.5
|
|
(byte) initSquareTables::y_dist
|
|
(byte) initSquareTables::y_dist#0 reg byte a 22.0
|
|
interrupt(HARDWARE_ALL)(void()) irqBottom()
|
|
(label) irqBottom::@1
|
|
(label) irqBottom::@2
|
|
(label) irqBottom::@3
|
|
(label) irqBottom::@return
|
|
(byte) irqBottom::i
|
|
(byte) irqBottom::i#1 reg byte x 16.5
|
|
(byte) irqBottom::i#2 reg byte x 22.0
|
|
interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
(label) irqTop::@1
|
|
(label) irqTop::@2
|
|
(label) irqTop::@3
|
|
(label) irqTop::@return
|
|
(byte) irqTop::i
|
|
(byte) irqTop::i#1 reg byte x 16.5
|
|
(byte) irqTop::i#2 reg byte x 22.0
|
|
(byte) irqTop::i1
|
|
(byte) irqTop::i1#1 reg byte x 16.5
|
|
(byte) irqTop::i1#2 reg byte x 22.0
|
|
(void()) main()
|
|
(byte~) main::$16 reg byte x 12.375
|
|
(byte) main::$25 reg byte a 22.0
|
|
(byte) main::$26 reg byte a 22.0
|
|
(byte) main::$27 reg byte a 22.0
|
|
(struct ProcessingChar~) main::$9
|
|
(label) main::@1
|
|
(label) main::@2
|
|
(label) main::@3
|
|
(label) main::@4
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@8
|
|
(label) main::@9
|
|
(struct ProcessingChar) main::center
|
|
(word) main::center_dist
|
|
(word) main::center_dist#0 center_dist zp ZP_WORD:20 22.0
|
|
(byte) main::center_x
|
|
(byte) main::center_x#0 reg byte x 5.5
|
|
(byte) main::center_y
|
|
(byte) main::center_y#0 reg byte y 5.5
|
|
(byte*) main::dst
|
|
(byte*) main::dst#1 dst zp ZP_WORD:4 11.0
|
|
(byte*) main::dst#2 dst zp ZP_WORD:4 11.0
|
|
(byte) main::i
|
|
(byte) main::i#1 i zp ZP_BYTE:6 16.5
|
|
(byte) main::i#2 i zp ZP_BYTE:6 4.230769230769231
|
|
(byte*) main::src
|
|
(byte*) main::src#1 src zp ZP_WORD:2 11.0
|
|
(byte*) main::src#2 src zp ZP_WORD:2 16.5
|
|
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
|
(byte~) mul8u::$1 reg byte a 202.0
|
|
(label) mul8u::@1
|
|
(label) mul8u::@2
|
|
(label) mul8u::@3
|
|
(label) mul8u::@4
|
|
(label) mul8u::@return
|
|
(byte) mul8u::a
|
|
(byte) mul8u::a#0 reg byte x 101.0
|
|
(byte) mul8u::a#1 reg byte x 11.0
|
|
(byte) mul8u::a#2 reg byte x 11.0
|
|
(byte) mul8u::a#3 reg byte x 67.66666666666666
|
|
(byte) mul8u::a#6 reg byte x 24.0
|
|
(byte) mul8u::b
|
|
(byte) mul8u::b#0 reg byte a 22.0
|
|
(byte) mul8u::b#1 reg byte a 22.0
|
|
(word) mul8u::mb
|
|
(word) mul8u::mb#0 mb zp ZP_WORD:28 24.0
|
|
(word) mul8u::mb#1 mb zp ZP_WORD:28 202.0
|
|
(word) mul8u::mb#2 mb zp ZP_WORD:28 43.57142857142858
|
|
(word) mul8u::res
|
|
(word) mul8u::res#1 res zp ZP_WORD:26 202.0
|
|
(word) mul8u::res#2 res zp ZP_WORD:26 46.42857142857143
|
|
(word) mul8u::res#6 res zp ZP_WORD:26 101.0
|
|
(word) mul8u::return
|
|
(word) mul8u::return#2 return zp ZP_WORD:26 22.0
|
|
(word) mul8u::return#3 return zp ZP_WORD:26 22.0
|
|
(void()) processChars()
|
|
(byte~) processChars::$1 reg byte x 4.0
|
|
(byte~) processChars::$12 reg byte a 22.0
|
|
(byte~) processChars::$13 reg byte a 22.0
|
|
(byte~) processChars::$15 reg byte a 22.0
|
|
(word~) processChars::$16 $16 zp ZP_WORD:56 11.0
|
|
(byte~) processChars::$18 reg byte x 6.6000000000000005
|
|
(word~) processChars::$26 $26 zp ZP_WORD:54 11.0
|
|
(byte~) processChars::$27 reg byte a 22.0
|
|
(byte~) processChars::$31 reg byte a 22.0
|
|
(byte~) processChars::$34 reg byte a 22.0
|
|
(byte~) processChars::$36 reg byte a 22.0
|
|
(byte~) processChars::$37 reg byte a 22.0
|
|
(byte~) processChars::$38 reg byte a 22.0
|
|
(byte) processChars::$64 reg byte a 22.0
|
|
(byte) processChars::$65 reg byte a 22.0
|
|
(byte) processChars::$66 reg byte a 22.0
|
|
(label) processChars::@1
|
|
(label) processChars::@10
|
|
(label) processChars::@11
|
|
(label) processChars::@12
|
|
(label) processChars::@13
|
|
(label) processChars::@14
|
|
(label) processChars::@15
|
|
(label) processChars::@2
|
|
(label) processChars::@3
|
|
(label) processChars::@4
|
|
(label) processChars::@5
|
|
(label) processChars::@6
|
|
(label) processChars::@7
|
|
(label) processChars::@8
|
|
(label) processChars::@9
|
|
(label) processChars::@return
|
|
(byte) processChars::bitmask
|
|
(byte) processChars::bitmask#0 bitmask zp ZP_BYTE:53 2.2916666666666665
|
|
(byte) processChars::i
|
|
(byte) processChars::i#1 i zp ZP_BYTE:30 16.5
|
|
(byte) processChars::i#10 i zp ZP_BYTE:30 1.4666666666666666
|
|
(byte) processChars::numActive
|
|
(byte) processChars::numActive#1 numActive zp ZP_BYTE:31 22.0
|
|
(byte) processChars::numActive#10 numActive zp ZP_BYTE:31 0.7674418604651163
|
|
(byte) processChars::numActive#3 numActive zp ZP_BYTE:31 11.666666666666666
|
|
(struct ProcessingSprite*) processChars::processing
|
|
(struct ProcessingSprite*) processChars::processing#0 processing zp ZP_WORD:51 0.3235294117647059
|
|
(byte) processChars::xchar
|
|
(byte) processChars::xchar#0 reg byte a 22.0
|
|
(word) processChars::xpos
|
|
(word) processChars::xpos#0 xpos zp ZP_WORD:54 2.0625
|
|
(byte) processChars::ychar
|
|
(byte) processChars::ychar#0 reg byte a 22.0
|
|
(byte) processChars::ypos
|
|
(byte) processChars::ypos#0 ypos zp ZP_BYTE:58 2.75
|
|
(void()) setupRasterIrq((word) setupRasterIrq::raster , (void()*) setupRasterIrq::irqRoutine)
|
|
(label) setupRasterIrq::@1
|
|
(label) setupRasterIrq::@2
|
|
(label) setupRasterIrq::@return
|
|
(void()*) setupRasterIrq::irqRoutine
|
|
(const void()*) setupRasterIrq::irqRoutine#0 irqRoutine = &interrupt(HARDWARE_ALL)(void()) irqTop()
|
|
(word) setupRasterIrq::raster
|
|
(void()) startProcessing((byte) startProcessing::center_x , (byte) startProcessing::center_y , (word) startProcessing::center_dist)
|
|
(word~) startProcessing::$0 $0 zp ZP_WORD:34 3.0
|
|
(word~) startProcessing::$1 $1 zp ZP_WORD:34 4.0
|
|
(word~) startProcessing::$10 $10 zp ZP_WORD:40 4.0
|
|
(word~) startProcessing::$11 $11 zp ZP_WORD:40 4.0
|
|
(word~) startProcessing::$12 $12 zp ZP_WORD:40 4.0
|
|
(word~) startProcessing::$14 $14 zp ZP_WORD:42 4.0
|
|
(word~) startProcessing::$15 $15 zp ZP_WORD:42 4.0
|
|
(word~) startProcessing::$16 $16 zp ZP_WORD:42 4.0
|
|
(byte*~) startProcessing::$2 $2 zp ZP_WORD:34 1.2000000000000002
|
|
(byte~) startProcessing::$21 reg byte a 2.0
|
|
(word~) startProcessing::$22 $22 zp ZP_WORD:45 0.5714285714285714
|
|
(byte~) startProcessing::$29 reg byte a 2002.0
|
|
(byte~) startProcessing::$30 reg byte x 2.25
|
|
(word~) startProcessing::$4 $4 zp ZP_WORD:10 4.0
|
|
(byte) startProcessing::$40 reg byte a 2002.0
|
|
(byte) startProcessing::$41 reg byte a 2002.0
|
|
(byte) startProcessing::$42 reg byte a 2002.0
|
|
(word) startProcessing::$44 $44 zp ZP_WORD:36 4.0
|
|
(word) startProcessing::$45 $45 zp ZP_WORD:34 4.0
|
|
(byte) startProcessing::$47 reg byte a 4.0
|
|
(byte) startProcessing::$48 reg byte a 4.0
|
|
(byte) startProcessing::$49 reg byte a 4.0
|
|
(word~) startProcessing::$5 $5 zp ZP_WORD:10 4.0
|
|
(word~) startProcessing::$7 $7 zp ZP_WORD:8 4.0
|
|
(word~) startProcessing::$8 $8 zp ZP_WORD:8 4.0
|
|
(label) startProcessing::@1
|
|
(label) startProcessing::@2
|
|
(label) startProcessing::@3
|
|
(label) startProcessing::@4
|
|
(label) startProcessing::@5
|
|
(label) startProcessing::@6
|
|
(label) startProcessing::@7
|
|
(label) startProcessing::@8
|
|
(label) startProcessing::@9
|
|
(label) startProcessing::@return
|
|
(struct ProcessingChar) startProcessing::center
|
|
(word) startProcessing::center_dist
|
|
(byte) startProcessing::center_x
|
|
(byte) startProcessing::center_x#0 center_x zp ZP_BYTE:32 0.3846153846153846
|
|
(byte) startProcessing::center_y
|
|
(byte) startProcessing::center_y#0 center_y zp ZP_BYTE:33 0.2619047619047619
|
|
(byte) startProcessing::ch
|
|
(byte) startProcessing::ch#0 reg byte a 2.0
|
|
(byte*) startProcessing::chargenData
|
|
(byte*) startProcessing::chargenData#0 chargenData zp ZP_WORD:8 1.3333333333333333
|
|
(byte*) startProcessing::chargenData#1 chargenData zp ZP_WORD:8 67.33333333333333
|
|
(byte*) startProcessing::chargenData#2 chargenData zp ZP_WORD:8 101.66666666666666
|
|
(byte) startProcessing::freeIdx
|
|
(byte) startProcessing::freeIdx#2 freeIdx zp ZP_BYTE:7 29.90909090909092
|
|
(byte) startProcessing::freeIdx#6 reg byte x 22.444444444444443
|
|
(byte~) startProcessing::freeIdx#7 reg byte x 202.0
|
|
(byte~) startProcessing::freeIdx#8 freeIdx zp ZP_BYTE:7 202.0
|
|
(byte) startProcessing::i
|
|
(byte) startProcessing::i#1 i zp ZP_BYTE:7 1501.5
|
|
(byte) startProcessing::i#2 i zp ZP_BYTE:7 1001.0000000000001
|
|
(byte) startProcessing::i1
|
|
(byte) startProcessing::i1#1 reg byte x 151.5
|
|
(byte) startProcessing::i1#2 reg byte x 50.5
|
|
(byte*) startProcessing::screenPtr
|
|
(byte*) startProcessing::screenPtr#0 screenPtr zp ZP_WORD:38 0.1
|
|
(byte*) startProcessing::spriteData
|
|
(byte*) startProcessing::spriteData#0 spriteData zp ZP_WORD:10 0.5714285714285714
|
|
(byte*) startProcessing::spriteData#1 spriteData zp ZP_WORD:10 50.5
|
|
(byte*) startProcessing::spriteData#2 spriteData zp ZP_WORD:10 152.5
|
|
(byte) startProcessing::spriteIdx
|
|
(byte) startProcessing::spritePtr
|
|
(byte) startProcessing::spritePtr#0 spritePtr zp ZP_BYTE:44 0.3333333333333333
|
|
(word) startProcessing::spriteX
|
|
(word) startProcessing::spriteX#0 spriteX zp ZP_WORD:40 0.3333333333333333
|
|
(word) startProcessing::spriteY
|
|
(word) startProcessing::spriteY#0 spriteY zp ZP_WORD:42 0.4444444444444444
|
|
|
|
zp ZP_WORD:2 [ main::src#2 main::src#1 ]
|
|
zp ZP_WORD:4 [ main::dst#2 main::dst#1 ]
|
|
zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
|
reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
|
|
zp ZP_BYTE:7 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
|
|
zp ZP_WORD:8 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 startProcessing::$8 startProcessing::$7 ]
|
|
zp ZP_WORD:10 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 startProcessing::$5 startProcessing::$4 ]
|
|
reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ]
|
|
zp ZP_WORD:12 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ]
|
|
zp ZP_BYTE:14 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
|
|
zp ZP_BYTE:15 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
|
|
zp ZP_WORD:16 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ]
|
|
zp ZP_BYTE:18 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
|
|
zp ZP_BYTE:19 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
|
|
zp ZP_WORD:20 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 getCharToProcess::return_dist#0 main::center_dist#0 ]
|
|
zp ZP_WORD:22 [ initSprites::sp#2 initSprites::sp#1 ]
|
|
reg byte x [ initSprites::i#2 initSprites::i#1 ]
|
|
zp ZP_BYTE:24 [ initSquareTables::x#2 initSquareTables::x#1 ]
|
|
reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ]
|
|
zp ZP_BYTE:25 [ initSquareTables::y#2 initSquareTables::y#1 ]
|
|
reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ]
|
|
reg byte a [ mul8u::b#1 ]
|
|
reg byte a [ mul8u::b#0 ]
|
|
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ]
|
|
zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 initSquareTables::$6 initSquareTables::$14 ]
|
|
zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
|
reg byte x [ irqBottom::i#2 irqBottom::i#1 ]
|
|
zp ZP_BYTE:30 [ processChars::i#10 processChars::i#1 ]
|
|
zp ZP_BYTE:31 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
|
|
reg byte x [ irqTop::i#2 irqTop::i#1 ]
|
|
reg byte x [ irqTop::i1#2 irqTop::i1#1 ]
|
|
reg byte a [ main::$25 ]
|
|
reg byte a [ main::$26 ]
|
|
reg byte a [ main::$27 ]
|
|
reg byte x [ main::$16 ]
|
|
reg byte x [ getCharToProcess::return_x#0 ]
|
|
reg byte y [ getCharToProcess::return_y#0 ]
|
|
reg byte x [ main::center_x#0 ]
|
|
reg byte y [ main::center_y#0 ]
|
|
zp ZP_BYTE:32 [ startProcessing::center_x#0 ]
|
|
zp ZP_BYTE:33 [ startProcessing::center_y#0 ]
|
|
reg byte a [ startProcessing::$40 ]
|
|
reg byte a [ startProcessing::$41 ]
|
|
reg byte a [ startProcessing::$42 ]
|
|
reg byte a [ startProcessing::$29 ]
|
|
zp ZP_WORD:34 [ startProcessing::$0 startProcessing::$45 startProcessing::$1 startProcessing::$2 ]
|
|
zp ZP_WORD:36 [ startProcessing::$44 ]
|
|
zp ZP_WORD:38 [ startProcessing::screenPtr#0 ]
|
|
reg byte a [ startProcessing::ch#0 ]
|
|
zp ZP_WORD:40 [ startProcessing::$10 startProcessing::$11 startProcessing::$12 startProcessing::spriteX#0 ]
|
|
zp ZP_WORD:42 [ startProcessing::$14 startProcessing::$15 startProcessing::$16 startProcessing::spriteY#0 ]
|
|
zp ZP_BYTE:44 [ startProcessing::spritePtr#0 ]
|
|
reg byte a [ startProcessing::$21 ]
|
|
zp ZP_WORD:45 [ startProcessing::$22 ]
|
|
reg byte a [ startProcessing::$47 ]
|
|
reg byte a [ startProcessing::$48 ]
|
|
reg byte a [ startProcessing::$49 ]
|
|
reg byte x [ startProcessing::$30 ]
|
|
reg byte x [ getCharToProcess::$13 ]
|
|
reg byte a [ getCharToProcess::$14 ]
|
|
zp ZP_WORD:47 [ getCharToProcess::$9 getCharToProcess::$16 getCharToProcess::$10 getCharToProcess::$11 ]
|
|
zp ZP_WORD:49 [ getCharToProcess::$15 ]
|
|
reg byte a [ initSquareTables::$16 ]
|
|
reg byte a [ initSquareTables::$17 ]
|
|
reg byte a [ mul8u::$1 ]
|
|
reg byte a [ processChars::$64 ]
|
|
reg byte a [ processChars::$65 ]
|
|
reg byte a [ processChars::$66 ]
|
|
reg byte a [ processChars::$36 ]
|
|
zp ZP_WORD:51 [ processChars::processing#0 ]
|
|
zp ZP_BYTE:53 [ processChars::bitmask#0 ]
|
|
zp ZP_WORD:54 [ processChars::xpos#0 processChars::$26 ]
|
|
reg byte a [ processChars::$12 ]
|
|
reg byte a [ processChars::$13 ]
|
|
reg byte x [ processChars::$18 ]
|
|
reg byte a [ processChars::$15 ]
|
|
zp ZP_WORD:56 [ processChars::$16 ]
|
|
zp ZP_BYTE:58 [ processChars::ypos#0 ]
|
|
reg byte a [ processChars::$27 ]
|
|
reg byte a [ processChars::xchar#0 ]
|
|
reg byte a [ processChars::$37 ]
|
|
reg byte a [ processChars::$31 ]
|
|
reg byte a [ processChars::ychar#0 ]
|
|
reg byte a [ processChars::$38 ]
|
|
reg byte x [ processChars::$1 ]
|
|
reg byte a [ processChars::$34 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 243580
|
|
|
|
//SEG0 File Comments
|
|
// Black Hole at the center of the BASIC screen sucking in letters
|
|
//SEG1 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(main)
|
|
.pc = $80d "Program"
|
|
//SEG2 Global Constants & labels
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_Y = 2
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VX = 4
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_VY = 6
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_ID = 8
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_PTR = 9
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_STATUS = $a
|
|
.const OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR = $b
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// RAM in $A000, $E000 I/O in $D000
|
|
.const PROCPORT_RAM_IO = $35
|
|
// RAM in $A000, $E000 CHAR ROM in $D000
|
|
.const PROCPORT_RAM_CHARROM = $31
|
|
// The address of the CHARGEN character set
|
|
.label CHARGEN = $d000
|
|
// Positions of the border (in sprite positions)
|
|
.const BORDER_XPOS_LEFT = $18
|
|
.const BORDER_XPOS_RIGHT = $158
|
|
.const BORDER_YPOS_TOP = $32
|
|
.const BORDER_YPOS_BOTTOM = $fa
|
|
// The offset of the sprite pointers from the screen start address
|
|
.const SPRITE_PTRS = $3f8
|
|
.label SPRITES_XPOS = $d000
|
|
.label SPRITES_YPOS = $d001
|
|
.label SPRITES_XMSB = $d010
|
|
.label RASTER = $d012
|
|
.label SPRITES_ENABLE = $d015
|
|
.label SPRITES_EXPAND_Y = $d017
|
|
.label SPRITES_MC = $d01c
|
|
.label SPRITES_EXPAND_X = $d01d
|
|
.label SPRITES_COLS = $d027
|
|
.label VIC_CONTROL = $d011
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Bits for the IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Color Ram
|
|
.label COLS = $d800
|
|
// CIA#1 Interrupt Status & Control Register
|
|
.label CIA1_INTERRUPT = $dc0d
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.const LIGHT_BLUE = $e
|
|
// Address of the screen
|
|
.label SCREEN = $400
|
|
// Sprite data for the animating sprites
|
|
.label SPRITE_DATA = $2000
|
|
// Values added to VX
|
|
.label VXSIN = $2200
|
|
// Values added to VY
|
|
.label VYSIN = $2280
|
|
// Max number of chars processed at once
|
|
.const NUM_PROCESSING = 8
|
|
// Distance value meaning not found
|
|
.const NOT_FOUND = $ffff
|
|
// Values for ProcessingSprite.status
|
|
.const STATUS_FREE = 0
|
|
.const STATUS_NEW = 1
|
|
.const STATUS_PROCESSING = 2
|
|
.const RASTER_IRQ_TOP = $30
|
|
.const RASTER_IRQ_MIDDLE = $ff
|
|
.const XPOS_RIGHTMOST = BORDER_XPOS_RIGHT<<4
|
|
.const YPOS_BOTTOMMOST = BORDER_YPOS_BOTTOM<<4
|
|
.const XPOS_LEFTMOST = BORDER_XPOS_LEFT-8<<4
|
|
.const YPOS_TOPMOST = BORDER_YPOS_TOP-8<<4
|
|
//SEG3 @begin
|
|
//SEG4 @1
|
|
//SEG5 kickasm(location (const word*) VXSIN#0) {{ .for(var i=0; i<40; i++) { .word -sin(toRadians([i*360]/40))*4 } }}
|
|
//SEG6 kickasm(location (const word*) VYSIN#0) {{ .for(var i=0; i<25; i++) { .word -sin(toRadians([i*360]/25))*4 } }}
|
|
//SEG7 [3] phi from @1 to @2 [phi:@1->@2]
|
|
//SEG8 @2
|
|
//SEG9 [4] call main
|
|
//SEG10 [6] phi from @2 to main [phi:@2->main]
|
|
//SEG11 [5] phi from @2 to @end [phi:@2->@end]
|
|
//SEG12 @end
|
|
//SEG13 main
|
|
main: {
|
|
.label src = 2
|
|
.label dst = 4
|
|
.label i = 6
|
|
.label center_dist = $14
|
|
//SEG14 [7] call initSquareTables
|
|
//SEG15 [158] phi from main to initSquareTables [phi:main->initSquareTables]
|
|
jsr initSquareTables
|
|
//SEG16 [8] phi from main to main::@1 [phi:main->main::@1]
|
|
//SEG17 [8] phi (byte*) main::dst#2 = (const byte[$3e8]) SCREEN_COPY#0 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta dst
|
|
lda #>SCREEN_COPY
|
|
sta dst+1
|
|
//SEG18 [8] phi (byte*) main::src#2 = (const byte*) SCREEN#0 [phi:main->main::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta src
|
|
lda #>SCREEN
|
|
sta src+1
|
|
// Copy screen to screen copy
|
|
//SEG19 [8] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
|
//SEG20 [8] phi (byte*) main::dst#2 = (byte*) main::dst#1 [phi:main::@1->main::@1#0] -- register_copy
|
|
//SEG21 [8] phi (byte*) main::src#2 = (byte*) main::src#1 [phi:main::@1->main::@1#1] -- register_copy
|
|
//SEG22 main::@1
|
|
b1:
|
|
//SEG23 [9] *((byte*) main::dst#2) ← *((byte*) main::src#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (src),y
|
|
sta (dst),y
|
|
//SEG24 [10] (byte*) main::src#1 ← ++ (byte*) main::src#2 -- pbuz1=_inc_pbuz1
|
|
inc src
|
|
bne !+
|
|
inc src+1
|
|
!:
|
|
//SEG25 [11] (byte*) main::dst#1 ← ++ (byte*) main::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc dst
|
|
bne !+
|
|
inc dst+1
|
|
!:
|
|
//SEG26 [12] if((byte*) main::src#1!=(const byte*) SCREEN#0+(word) $3e8) goto main::@1 -- pbuz1_neq_pbuc1_then_la1
|
|
lda src+1
|
|
cmp #>SCREEN+$3e8
|
|
bne b1
|
|
lda src
|
|
cmp #<SCREEN+$3e8
|
|
bne b1
|
|
//SEG27 [13] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
//SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
// Init processing array
|
|
//SEG29 [13] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
|
//SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@2#0] -- register_copy
|
|
//SEG31 main::@2
|
|
b2:
|
|
//SEG32 [14] (byte) main::$25 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG33 [15] (byte) main::$26 ← (byte) main::$25 + (byte) main::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG34 [16] (byte) main::$27 ← (byte) main::$26 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG35 [17] (byte~) main::$16 ← (byte) main::$27 + (byte) main::i#2 -- vbuxx=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
tax
|
|
//SEG36 [18] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #0
|
|
sta PROCESSING,x
|
|
sta PROCESSING+1,x
|
|
//SEG37 [19] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
|
|
//SEG38 [20] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
|
|
//SEG39 [21] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) main::$16) ← (byte) 0 -- pwuc1_derefidx_vbuxx=vbuc2
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
|
|
//SEG40 [22] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
|
//SEG41 [23] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) main::$16) ← (byte) 0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
|
//SEG42 [24] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) main::$16) ← (const byte) STATUS_FREE#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #STATUS_FREE
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
|
//SEG43 [25] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) main::$16) ← (byte*) 0 -- pptc1_derefidx_vbuxx=pbuc2
|
|
lda #<0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
|
//SEG44 [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG45 [27] if((byte) main::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
bne b2
|
|
//SEG46 [28] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
|
|
//SEG47 main::@3
|
|
//SEG48 [29] call initSprites
|
|
//SEG49 [145] phi from main::@3 to initSprites [phi:main::@3->initSprites]
|
|
jsr initSprites
|
|
//SEG50 [30] phi from main::@3 to main::@8 [phi:main::@3->main::@8]
|
|
//SEG51 main::@8
|
|
//SEG52 [31] call setupRasterIrq
|
|
jsr setupRasterIrq
|
|
//SEG53 [32] phi from main::@5 main::@8 to main::@4 [phi:main::@5/main::@8->main::@4]
|
|
b3:
|
|
// Main loop
|
|
//SEG54 main::@4
|
|
//SEG55 [33] call getCharToProcess
|
|
//SEG56 [107] phi from main::@4 to getCharToProcess [phi:main::@4->getCharToProcess]
|
|
jsr getCharToProcess
|
|
//SEG57 [34] (byte) getCharToProcess::return_x#0 ← (byte) getCharToProcess::return_x#1 -- vbuxx=vbuz1
|
|
ldx getCharToProcess.return_x
|
|
//SEG58 [35] (byte) getCharToProcess::return_y#0 ← (byte) getCharToProcess::return_y#1 -- vbuyy=vbuz1
|
|
ldy getCharToProcess.return_y
|
|
//SEG59 [36] (word) getCharToProcess::return_dist#0 ← (word) getCharToProcess::return_dist#1
|
|
//SEG60 main::@9
|
|
//SEG61 [37] (byte) main::center_x#0 ← (byte) getCharToProcess::return_x#0
|
|
//SEG62 [38] (byte) main::center_y#0 ← (byte) getCharToProcess::return_y#0
|
|
//SEG63 [39] (word) main::center_dist#0 ← (word) getCharToProcess::return_dist#0
|
|
//SEG64 [40] if((word) main::center_dist#0!=(const word) NOT_FOUND#0) goto main::@5 -- vwuz1_neq_vwuc1_then_la1
|
|
lda center_dist+1
|
|
cmp #>NOT_FOUND
|
|
bne b5
|
|
lda center_dist
|
|
cmp #<NOT_FOUND
|
|
bne b5
|
|
//SEG65 main::@6
|
|
//SEG66 [41] *((const byte*) SCREEN#0+(word) $3e7) ← (byte) '.' -- _deref_pbuc1=vbuc2
|
|
lda #'.'
|
|
sta SCREEN+$3e7
|
|
//SEG67 main::@7
|
|
b7:
|
|
//SEG68 [42] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc COLS+$3e7
|
|
jmp b7
|
|
//SEG69 main::@5
|
|
b5:
|
|
//SEG70 [43] (byte) startProcessing::center_x#0 ← (byte) main::center_x#0 -- vbuz1=vbuxx
|
|
stx startProcessing.center_x
|
|
//SEG71 [44] (byte) startProcessing::center_y#0 ← (byte) main::center_y#0 -- vbuz1=vbuyy
|
|
sty startProcessing.center_y
|
|
//SEG72 [45] call startProcessing
|
|
//SEG73 [46] phi from main::@5 to startProcessing [phi:main::@5->startProcessing]
|
|
jsr startProcessing
|
|
jmp b3
|
|
}
|
|
//SEG74 startProcessing
|
|
// Start processing a char - by inserting it into the PROCESSING array
|
|
// startProcessing(byte zeropage($20) center_x, byte zeropage($21) center_y)
|
|
startProcessing: {
|
|
.label _0 = $22
|
|
.label _1 = $22
|
|
.label _2 = $22
|
|
.label _4 = $a
|
|
.label _5 = $a
|
|
.label _7 = 8
|
|
.label _8 = 8
|
|
.label _10 = $28
|
|
.label _11 = $28
|
|
.label _12 = $28
|
|
.label _14 = $2a
|
|
.label _15 = $2a
|
|
.label _16 = $2a
|
|
.label _22 = $2d
|
|
.label center_x = $20
|
|
.label center_y = $21
|
|
.label i = 7
|
|
.label screenPtr = $26
|
|
.label spriteData = $a
|
|
.label chargenData = 8
|
|
.label spriteX = $28
|
|
.label spriteY = $2a
|
|
.label spritePtr = $2c
|
|
.label freeIdx = 7
|
|
.label _44 = $24
|
|
.label _45 = $22
|
|
//SEG75 [47] phi from startProcessing to startProcessing::@1 [phi:startProcessing->startProcessing::@1]
|
|
//SEG76 [47] phi (byte) startProcessing::freeIdx#6 = (byte) $ff [phi:startProcessing->startProcessing::@1#0] -- vbuxx=vbuc1
|
|
ldx #$ff
|
|
//SEG77 startProcessing::@1
|
|
b1:
|
|
//SEG78 [48] phi from startProcessing::@1 to startProcessing::@2 [phi:startProcessing::@1->startProcessing::@2]
|
|
//SEG79 [48] phi (byte) startProcessing::i#2 = (byte) 0 [phi:startProcessing::@1->startProcessing::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
//SEG80 [48] phi from startProcessing::@3 to startProcessing::@2 [phi:startProcessing::@3->startProcessing::@2]
|
|
//SEG81 [48] phi (byte) startProcessing::i#2 = (byte) startProcessing::i#1 [phi:startProcessing::@3->startProcessing::@2#0] -- register_copy
|
|
//SEG82 startProcessing::@2
|
|
b2:
|
|
//SEG83 [49] (byte) startProcessing::$40 ← (byte) startProcessing::i#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG84 [50] (byte) startProcessing::$41 ← (byte) startProcessing::$40 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG85 [51] (byte) startProcessing::$42 ← (byte) startProcessing::$41 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG86 [52] (byte~) startProcessing::$29 ← (byte) startProcessing::$42 + (byte) startProcessing::i#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG87 [53] if(*((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$29)!=(const byte) STATUS_FREE#0) goto startProcessing::@3 -- pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1
|
|
tay
|
|
lda #STATUS_FREE
|
|
cmp PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,y
|
|
beq !b3+
|
|
jmp b3
|
|
!b3:
|
|
//SEG88 [54] phi from startProcessing::@2 startProcessing::@9 to startProcessing::@4 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4]
|
|
//SEG89 [54] phi (byte) startProcessing::freeIdx#2 = (byte) startProcessing::i#2 [phi:startProcessing::@2/startProcessing::@9->startProcessing::@4#0] -- register_copy
|
|
//SEG90 startProcessing::@4
|
|
b4:
|
|
//SEG91 [55] if((byte) startProcessing::freeIdx#2==(byte) $ff) goto startProcessing::@8 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #$ff
|
|
cmp freeIdx
|
|
bne !b8+
|
|
jmp b8
|
|
!b8:
|
|
//SEG92 startProcessing::@5
|
|
//SEG93 [56] (word~) startProcessing::$0 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _0
|
|
lda #0
|
|
sta _0+1
|
|
//SEG94 [57] (word) startProcessing::$44 ← (word~) startProcessing::$0 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _0
|
|
asl
|
|
sta _44
|
|
lda _0+1
|
|
rol
|
|
sta _44+1
|
|
asl _44
|
|
rol _44+1
|
|
//SEG95 [58] (word) startProcessing::$45 ← (word) startProcessing::$44 + (word~) startProcessing::$0 -- vwuz1=vwuz2_plus_vwuz1
|
|
lda _45
|
|
clc
|
|
adc _44
|
|
sta _45
|
|
lda _45+1
|
|
adc _44+1
|
|
sta _45+1
|
|
//SEG96 [59] (word~) startProcessing::$1 ← (word) startProcessing::$45 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _1
|
|
rol _1+1
|
|
asl _1
|
|
rol _1+1
|
|
asl _1
|
|
rol _1+1
|
|
//SEG97 [60] (byte*~) startProcessing::$2 ← (const byte*) SCREEN#0 + (word~) startProcessing::$1 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda _2
|
|
adc #<SCREEN
|
|
sta _2
|
|
lda _2+1
|
|
adc #>SCREEN
|
|
sta _2+1
|
|
//SEG98 [61] (byte*) startProcessing::screenPtr#0 ← (byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0 -- pbuz1=pbuz2_plus_vbuz3
|
|
lda center_x
|
|
clc
|
|
adc _2
|
|
sta screenPtr
|
|
lda #0
|
|
adc _2+1
|
|
sta screenPtr+1
|
|
//SEG99 [62] (word~) startProcessing::$4 ← (word)(byte) startProcessing::freeIdx#2 -- vwuz1=_word_vbuz2
|
|
lda freeIdx
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG100 [63] (word~) startProcessing::$5 ← (word~) startProcessing::$4 << (byte) 6 -- vwuz1=vwuz1_rol_6
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
asl _5
|
|
rol _5+1
|
|
//SEG101 [64] (byte*) startProcessing::spriteData#0 ← (const byte*) SPRITE_DATA#0 + (word~) startProcessing::$5 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda spriteData
|
|
adc #<SPRITE_DATA
|
|
sta spriteData
|
|
lda spriteData+1
|
|
adc #>SPRITE_DATA
|
|
sta spriteData+1
|
|
//SEG102 [65] (byte) startProcessing::ch#0 ← *((byte*~) startProcessing::$2 + (byte) startProcessing::center_x#0) -- vbuaa=pbuz1_derefidx_vbuz2
|
|
ldy center_x
|
|
lda (_2),y
|
|
//SEG103 [66] (word~) startProcessing::$7 ← (word)(byte) startProcessing::ch#0 -- vwuz1=_word_vbuaa
|
|
sta _7
|
|
lda #0
|
|
sta _7+1
|
|
//SEG104 [67] (word~) startProcessing::$8 ← (word~) startProcessing::$7 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _8
|
|
rol _8+1
|
|
asl _8
|
|
rol _8+1
|
|
asl _8
|
|
rol _8+1
|
|
//SEG105 [68] (byte*) startProcessing::chargenData#0 ← (const byte*) CHARGEN#0 + (word~) startProcessing::$8 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda chargenData
|
|
adc #<CHARGEN
|
|
sta chargenData
|
|
lda chargenData+1
|
|
adc #>CHARGEN
|
|
sta chargenData+1
|
|
//SEG106 asm { sei }
|
|
sei
|
|
//SEG107 [70] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_CHARROM
|
|
sta PROCPORT
|
|
//SEG108 [71] phi from startProcessing::@5 to startProcessing::@6 [phi:startProcessing::@5->startProcessing::@6]
|
|
//SEG109 [71] phi (byte) startProcessing::i1#2 = (byte) 0 [phi:startProcessing::@5->startProcessing::@6#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG110 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#0 [phi:startProcessing::@5->startProcessing::@6#1] -- register_copy
|
|
//SEG111 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#0 [phi:startProcessing::@5->startProcessing::@6#2] -- register_copy
|
|
//SEG112 [71] phi from startProcessing::@6 to startProcessing::@6 [phi:startProcessing::@6->startProcessing::@6]
|
|
//SEG113 [71] phi (byte) startProcessing::i1#2 = (byte) startProcessing::i1#1 [phi:startProcessing::@6->startProcessing::@6#0] -- register_copy
|
|
//SEG114 [71] phi (byte*) startProcessing::spriteData#2 = (byte*) startProcessing::spriteData#1 [phi:startProcessing::@6->startProcessing::@6#1] -- register_copy
|
|
//SEG115 [71] phi (byte*) startProcessing::chargenData#2 = (byte*) startProcessing::chargenData#1 [phi:startProcessing::@6->startProcessing::@6#2] -- register_copy
|
|
//SEG116 startProcessing::@6
|
|
b6:
|
|
//SEG117 [72] *((byte*) startProcessing::spriteData#2) ← *((byte*) startProcessing::chargenData#2) -- _deref_pbuz1=_deref_pbuz2
|
|
ldy #0
|
|
lda (chargenData),y
|
|
sta (spriteData),y
|
|
//SEG118 [73] (byte*) startProcessing::spriteData#1 ← (byte*) startProcessing::spriteData#2 + (byte) 3 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #3
|
|
clc
|
|
adc spriteData
|
|
sta spriteData
|
|
bcc !+
|
|
inc spriteData+1
|
|
!:
|
|
//SEG119 [74] (byte*) startProcessing::chargenData#1 ← ++ (byte*) startProcessing::chargenData#2 -- pbuz1=_inc_pbuz1
|
|
inc chargenData
|
|
bne !+
|
|
inc chargenData+1
|
|
!:
|
|
//SEG120 [75] (byte) startProcessing::i1#1 ← ++ (byte) startProcessing::i1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG121 [76] if((byte) startProcessing::i1#1!=(byte) 8) goto startProcessing::@6 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b6
|
|
//SEG122 startProcessing::@7
|
|
//SEG123 [77] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG124 asm { cli }
|
|
cli
|
|
//SEG125 [79] (word~) startProcessing::$10 ← (word)(byte) startProcessing::center_x#0 -- vwuz1=_word_vbuz2
|
|
lda center_x
|
|
sta _10
|
|
lda #0
|
|
sta _10+1
|
|
//SEG126 [80] (word~) startProcessing::$11 ← (word~) startProcessing::$10 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _11
|
|
rol _11+1
|
|
asl _11
|
|
rol _11+1
|
|
asl _11
|
|
rol _11+1
|
|
//SEG127 [81] (word~) startProcessing::$12 ← (const byte) BORDER_XPOS_LEFT#0 + (word~) startProcessing::$11 -- vwuz1=vbuc1_plus_vwuz1
|
|
lda #BORDER_XPOS_LEFT
|
|
clc
|
|
adc _12
|
|
sta _12
|
|
bcc !+
|
|
inc _12+1
|
|
!:
|
|
//SEG128 [82] (word) startProcessing::spriteX#0 ← (word~) startProcessing::$12 << (byte) 4 -- vwuz1=vwuz1_rol_4
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
asl spriteX
|
|
rol spriteX+1
|
|
//SEG129 [83] (word~) startProcessing::$14 ← (word)(byte) startProcessing::center_y#0 -- vwuz1=_word_vbuz2
|
|
lda center_y
|
|
sta _14
|
|
lda #0
|
|
sta _14+1
|
|
//SEG130 [84] (word~) startProcessing::$15 ← (word~) startProcessing::$14 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _15
|
|
rol _15+1
|
|
asl _15
|
|
rol _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG131 [85] (word~) startProcessing::$16 ← (const byte) BORDER_YPOS_TOP#0 + (word~) startProcessing::$15 -- vwuz1=vbuc1_plus_vwuz1
|
|
lda #BORDER_YPOS_TOP
|
|
clc
|
|
adc _16
|
|
sta _16
|
|
bcc !+
|
|
inc _16+1
|
|
!:
|
|
//SEG132 [86] (word) startProcessing::spriteY#0 ← (word~) startProcessing::$16 << (byte) 4 -- vwuz1=vwuz1_rol_4
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
asl spriteY
|
|
rol spriteY+1
|
|
//SEG133 [87] (byte) startProcessing::spritePtr#0 ← (byte)(const byte*) SPRITE_DATA#0/(byte) $40 + (byte) startProcessing::freeIdx#2 -- vbuz1=vbuc1_plus_vbuz2
|
|
lax freeIdx
|
|
axs #-[SPRITE_DATA/$40]
|
|
stx spritePtr
|
|
//SEG134 [88] (byte~) startProcessing::$21 ← (byte) startProcessing::freeIdx#2 << (byte) 3 -- vbuaa=vbuz1_rol_3
|
|
lda freeIdx
|
|
asl
|
|
asl
|
|
asl
|
|
//SEG135 [89] (word~) startProcessing::$22 ← (word)(byte~) startProcessing::$21 -- vwuz1=_word_vbuaa
|
|
sta _22
|
|
lda #0
|
|
sta _22+1
|
|
//SEG136 [90] (byte) startProcessing::$47 ← (byte) startProcessing::freeIdx#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda freeIdx
|
|
asl
|
|
//SEG137 [91] (byte) startProcessing::$48 ← (byte) startProcessing::$47 + (byte) startProcessing::freeIdx#2 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc freeIdx
|
|
//SEG138 [92] (byte) startProcessing::$49 ← (byte) startProcessing::$48 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG139 [93] (byte~) startProcessing::$30 ← (byte) startProcessing::$49 + (byte) startProcessing::freeIdx#2 -- vbuxx=vbuaa_plus_vbuz1
|
|
clc
|
|
adc freeIdx
|
|
tax
|
|
//SEG140 [94] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) startProcessing::$30) ← (word) startProcessing::spriteX#0 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda spriteX
|
|
sta PROCESSING,x
|
|
lda spriteX+1
|
|
sta PROCESSING+1,x
|
|
//SEG141 [95] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y + (byte~) startProcessing::$30) ← (word) startProcessing::spriteY#0 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda spriteY
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y,x
|
|
lda spriteY+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_Y+1,x
|
|
//SEG142 [96] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX + (byte~) startProcessing::$30) ← (word~) startProcessing::$22 -- pwuc1_derefidx_vbuxx=vwuz1
|
|
lda _22
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX,x
|
|
lda _22+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VX+1,x
|
|
//SEG143 [97] *((word*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY + (byte~) startProcessing::$30) ← (byte) $3c -- pwuc1_derefidx_vbuxx=vbuc2
|
|
lda #$3c
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY,x
|
|
lda #0
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_VY+1,x
|
|
//SEG144 [98] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID + (byte~) startProcessing::$30) ← (byte) startProcessing::freeIdx#2 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda freeIdx
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_ID,x
|
|
//SEG145 [99] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR + (byte~) startProcessing::$30) ← (byte) startProcessing::spritePtr#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
lda spritePtr
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_PTR,x
|
|
//SEG146 [100] *((byte*)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS + (byte~) startProcessing::$30) ← (const byte) STATUS_NEW#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #STATUS_NEW
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_STATUS,x
|
|
//SEG147 [101] *((byte**)(const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0+(const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR + (byte~) startProcessing::$30) ← (byte*) startProcessing::screenPtr#0 -- pptc1_derefidx_vbuxx=pbuz1
|
|
lda screenPtr
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR,x
|
|
lda screenPtr+1
|
|
sta PROCESSING+OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR+1,x
|
|
//SEG148 startProcessing::@return
|
|
//SEG149 [102] return
|
|
rts
|
|
//SEG150 startProcessing::@8
|
|
b8:
|
|
//SEG151 [103] (byte~) startProcessing::freeIdx#7 ← (byte) startProcessing::freeIdx#2 -- vbuxx=vbuz1
|
|
ldx freeIdx
|
|
//SEG152 [47] phi from startProcessing::@8 to startProcessing::@1 [phi:startProcessing::@8->startProcessing::@1]
|
|
//SEG153 [47] phi (byte) startProcessing::freeIdx#6 = (byte~) startProcessing::freeIdx#7 [phi:startProcessing::@8->startProcessing::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG154 startProcessing::@3
|
|
b3:
|
|
//SEG155 [104] (byte) startProcessing::i#1 ← ++ (byte) startProcessing::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG156 [105] if((byte) startProcessing::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto startProcessing::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
beq !b2+
|
|
jmp b2
|
|
!b2:
|
|
//SEG157 startProcessing::@9
|
|
//SEG158 [106] (byte~) startProcessing::freeIdx#8 ← (byte) startProcessing::freeIdx#6 -- vbuz1=vbuxx
|
|
stx freeIdx
|
|
jmp b4
|
|
}
|
|
//SEG159 getCharToProcess
|
|
// Find the non-space char closest to the center of the screen
|
|
// If no non-space char is found the distance will be 0xffff
|
|
getCharToProcess: {
|
|
.label _9 = $2f
|
|
.label _10 = $2f
|
|
.label _11 = $2f
|
|
.label return_dist = $14
|
|
.label x = $f
|
|
.label dist = $14
|
|
.label screen_line = $c
|
|
.label y = $e
|
|
.label return_x = $12
|
|
.label return_y = $13
|
|
.label closest_dist = $10
|
|
.label closest_x = $12
|
|
.label closest_y = $13
|
|
.label _15 = $31
|
|
.label _16 = $2f
|
|
//SEG160 [108] phi from getCharToProcess to getCharToProcess::@1 [phi:getCharToProcess->getCharToProcess::@1]
|
|
//SEG161 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta closest_y
|
|
//SEG162 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#1] -- vbuz1=vbuc1
|
|
sta closest_x
|
|
//SEG163 [108] phi (word) getCharToProcess::closest_dist#8 = (const word) NOT_FOUND#0 [phi:getCharToProcess->getCharToProcess::@1#2] -- vwuz1=vwuc1
|
|
lda #<NOT_FOUND
|
|
sta closest_dist
|
|
lda #>NOT_FOUND
|
|
sta closest_dist+1
|
|
//SEG164 [108] phi (byte) getCharToProcess::y#7 = (byte) 0 [phi:getCharToProcess->getCharToProcess::@1#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG165 [108] phi (byte*) getCharToProcess::screen_line#4 = (const byte[$3e8]) SCREEN_COPY#0 [phi:getCharToProcess->getCharToProcess::@1#4] -- pbuz1=pbuc1
|
|
lda #<SCREEN_COPY
|
|
sta screen_line
|
|
lda #>SCREEN_COPY
|
|
sta screen_line+1
|
|
//SEG166 getCharToProcess::@1
|
|
b1:
|
|
//SEG167 [109] phi from getCharToProcess::@1 to getCharToProcess::@2 [phi:getCharToProcess::@1->getCharToProcess::@2]
|
|
//SEG168 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::closest_y#9 [phi:getCharToProcess::@1->getCharToProcess::@2#0] -- register_copy
|
|
//SEG169 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::closest_x#9 [phi:getCharToProcess::@1->getCharToProcess::@2#1] -- register_copy
|
|
//SEG170 [109] phi (word) getCharToProcess::closest_dist#2 = (word) getCharToProcess::closest_dist#8 [phi:getCharToProcess::@1->getCharToProcess::@2#2] -- register_copy
|
|
//SEG171 [109] phi (byte) getCharToProcess::x#2 = (byte) 0 [phi:getCharToProcess::@1->getCharToProcess::@2#3] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
//SEG172 getCharToProcess::@2
|
|
b2:
|
|
//SEG173 [110] if(*((byte*) getCharToProcess::screen_line#4 + (byte) getCharToProcess::x#2)==(byte) ' ') goto getCharToProcess::@11 -- pbuz1_derefidx_vbuz2_eq_vbuc1_then_la1
|
|
ldy x
|
|
lda (screen_line),y
|
|
cmp #' '
|
|
bne !b11+
|
|
jmp b11
|
|
!b11:
|
|
//SEG174 getCharToProcess::@4
|
|
//SEG175 [111] (byte~) getCharToProcess::$13 ← (byte) getCharToProcess::x#2 << (byte) 1 -- vbuxx=vbuz1_rol_1
|
|
tya
|
|
asl
|
|
tax
|
|
//SEG176 [112] (byte~) getCharToProcess::$14 ← (byte) getCharToProcess::y#7 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda y
|
|
asl
|
|
//SEG177 [113] (word) getCharToProcess::dist#0 ← *((const word[$28]) SQUARES_X#0 + (byte~) getCharToProcess::$13) + *((const word[$19]) SQUARES_Y#0 + (byte~) getCharToProcess::$14) -- vwuz1=pwuc1_derefidx_vbuxx_plus_pwuc2_derefidx_vbuaa
|
|
tay
|
|
lda SQUARES_X,x
|
|
clc
|
|
adc SQUARES_Y,y
|
|
sta dist
|
|
lda SQUARES_X+1,x
|
|
adc SQUARES_Y+1,y
|
|
sta dist+1
|
|
//SEG178 [114] if((word) getCharToProcess::dist#0>=(word) getCharToProcess::closest_dist#2) goto getCharToProcess::@12 -- vwuz1_ge_vwuz2_then_la1
|
|
lda closest_dist+1
|
|
cmp dist+1
|
|
bne !+
|
|
lda closest_dist
|
|
cmp dist
|
|
bne !b12+
|
|
jmp b12
|
|
!b12:
|
|
!:
|
|
bcs !b12+
|
|
jmp b12
|
|
!b12:
|
|
//SEG179 getCharToProcess::@5
|
|
//SEG180 [115] (byte~) getCharToProcess::return_x#7 ← (byte) getCharToProcess::x#2 -- vbuz1=vbuz2
|
|
lda x
|
|
sta return_x
|
|
//SEG181 [116] (byte~) getCharToProcess::return_y#7 ← (byte) getCharToProcess::y#7 -- vbuz1=vbuz2
|
|
lda y
|
|
sta return_y
|
|
//SEG182 [117] phi from getCharToProcess::@11 getCharToProcess::@12 getCharToProcess::@5 to getCharToProcess::@3 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3]
|
|
//SEG183 [117] phi (byte) getCharToProcess::return_y#1 = (byte) getCharToProcess::closest_y#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#0] -- register_copy
|
|
//SEG184 [117] phi (byte) getCharToProcess::return_x#1 = (byte) getCharToProcess::closest_x#7 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#1] -- register_copy
|
|
//SEG185 [117] phi (word) getCharToProcess::return_dist#1 = (word~) getCharToProcess::return_dist#5 [phi:getCharToProcess::@11/getCharToProcess::@12/getCharToProcess::@5->getCharToProcess::@3#2] -- register_copy
|
|
//SEG186 getCharToProcess::@3
|
|
b3:
|
|
//SEG187 [118] (byte) getCharToProcess::x#1 ← ++ (byte) getCharToProcess::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG188 [119] if((byte) getCharToProcess::x#1!=(byte) $28) goto getCharToProcess::@10 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b10
|
|
//SEG189 getCharToProcess::@6
|
|
//SEG190 [120] (byte*) getCharToProcess::screen_line#1 ← (byte*) getCharToProcess::screen_line#4 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
clc
|
|
adc screen_line
|
|
sta screen_line
|
|
bcc !+
|
|
inc screen_line+1
|
|
!:
|
|
//SEG191 [121] (byte) getCharToProcess::y#1 ← ++ (byte) getCharToProcess::y#7 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG192 [122] if((byte) getCharToProcess::y#1!=(byte) $19) goto getCharToProcess::@9 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b9
|
|
//SEG193 getCharToProcess::@7
|
|
//SEG194 [123] if((word) getCharToProcess::return_dist#1==(const word) NOT_FOUND#0) goto getCharToProcess::@return -- vwuz1_eq_vwuc1_then_la1
|
|
lda return_dist
|
|
cmp #<NOT_FOUND
|
|
bne !+
|
|
lda return_dist+1
|
|
cmp #>NOT_FOUND
|
|
beq breturn
|
|
!:
|
|
//SEG195 getCharToProcess::@8
|
|
//SEG196 [124] (word~) getCharToProcess::$9 ← (word)(byte) getCharToProcess::return_y#1 -- vwuz1=_word_vbuz2
|
|
lda return_y
|
|
sta _9
|
|
lda #0
|
|
sta _9+1
|
|
//SEG197 [125] (word) getCharToProcess::$15 ← (word~) getCharToProcess::$9 << (byte) 2 -- vwuz1=vwuz2_rol_2
|
|
lda _9
|
|
asl
|
|
sta _15
|
|
lda _9+1
|
|
rol
|
|
sta _15+1
|
|
asl _15
|
|
rol _15+1
|
|
//SEG198 [126] (word) getCharToProcess::$16 ← (word) getCharToProcess::$15 + (word~) getCharToProcess::$9 -- vwuz1=vwuz2_plus_vwuz1
|
|
lda _16
|
|
clc
|
|
adc _15
|
|
sta _16
|
|
lda _16+1
|
|
adc _15+1
|
|
sta _16+1
|
|
//SEG199 [127] (word~) getCharToProcess::$10 ← (word) getCharToProcess::$16 << (byte) 3 -- vwuz1=vwuz1_rol_3
|
|
asl _10
|
|
rol _10+1
|
|
asl _10
|
|
rol _10+1
|
|
asl _10
|
|
rol _10+1
|
|
//SEG200 [128] (byte*~) getCharToProcess::$11 ← (const byte[$3e8]) SCREEN_COPY#0 + (word~) getCharToProcess::$10 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda _11
|
|
adc #<SCREEN_COPY
|
|
sta _11
|
|
lda _11+1
|
|
adc #>SCREEN_COPY
|
|
sta _11+1
|
|
//SEG201 [129] *((byte*~) getCharToProcess::$11 + (byte) getCharToProcess::return_x#1) ← (byte) ' ' -- pbuz1_derefidx_vbuz2=vbuc1
|
|
// clear the found char on the screen copy
|
|
lda #' '
|
|
ldy return_x
|
|
sta (_11),y
|
|
//SEG202 getCharToProcess::@return
|
|
breturn:
|
|
//SEG203 [130] return
|
|
rts
|
|
//SEG204 getCharToProcess::@9
|
|
b9:
|
|
//SEG205 [131] (word~) getCharToProcess::closest_dist#10 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist
|
|
sta closest_dist
|
|
lda return_dist+1
|
|
sta closest_dist+1
|
|
//SEG206 [108] phi from getCharToProcess::@9 to getCharToProcess::@1 [phi:getCharToProcess::@9->getCharToProcess::@1]
|
|
//SEG207 [108] phi (byte) getCharToProcess::closest_y#9 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#0] -- register_copy
|
|
//SEG208 [108] phi (byte) getCharToProcess::closest_x#9 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@9->getCharToProcess::@1#1] -- register_copy
|
|
//SEG209 [108] phi (word) getCharToProcess::closest_dist#8 = (word~) getCharToProcess::closest_dist#10 [phi:getCharToProcess::@9->getCharToProcess::@1#2] -- register_copy
|
|
//SEG210 [108] phi (byte) getCharToProcess::y#7 = (byte) getCharToProcess::y#1 [phi:getCharToProcess::@9->getCharToProcess::@1#3] -- register_copy
|
|
//SEG211 [108] phi (byte*) getCharToProcess::screen_line#4 = (byte*) getCharToProcess::screen_line#1 [phi:getCharToProcess::@9->getCharToProcess::@1#4] -- register_copy
|
|
jmp b1
|
|
//SEG212 getCharToProcess::@10
|
|
b10:
|
|
//SEG213 [132] (word~) getCharToProcess::closest_dist#12 ← (word) getCharToProcess::return_dist#1 -- vwuz1=vwuz2
|
|
lda return_dist
|
|
sta closest_dist
|
|
lda return_dist+1
|
|
sta closest_dist+1
|
|
//SEG214 [109] phi from getCharToProcess::@10 to getCharToProcess::@2 [phi:getCharToProcess::@10->getCharToProcess::@2]
|
|
//SEG215 [109] phi (byte) getCharToProcess::closest_y#7 = (byte) getCharToProcess::return_y#1 [phi:getCharToProcess::@10->getCharToProcess::@2#0] -- register_copy
|
|
//SEG216 [109] phi (byte) getCharToProcess::closest_x#7 = (byte) getCharToProcess::return_x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#1] -- register_copy
|
|
//SEG217 [109] phi (word) getCharToProcess::closest_dist#2 = (word~) getCharToProcess::closest_dist#12 [phi:getCharToProcess::@10->getCharToProcess::@2#2] -- register_copy
|
|
//SEG218 [109] phi (byte) getCharToProcess::x#2 = (byte) getCharToProcess::x#1 [phi:getCharToProcess::@10->getCharToProcess::@2#3] -- register_copy
|
|
jmp b2
|
|
//SEG219 getCharToProcess::@12
|
|
b12:
|
|
//SEG220 [133] (word~) getCharToProcess::return_dist#6 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist
|
|
lda closest_dist+1
|
|
sta return_dist+1
|
|
jmp b3
|
|
//SEG221 getCharToProcess::@11
|
|
b11:
|
|
//SEG222 [134] (word~) getCharToProcess::return_dist#5 ← (word) getCharToProcess::closest_dist#2 -- vwuz1=vwuz2
|
|
lda closest_dist
|
|
sta return_dist
|
|
lda closest_dist+1
|
|
sta return_dist+1
|
|
jmp b3
|
|
}
|
|
//SEG223 setupRasterIrq
|
|
// Setup Raster IRQ
|
|
setupRasterIrq: {
|
|
.label irqRoutine = irqTop
|
|
//SEG224 asm { sei }
|
|
sei
|
|
//SEG225 [136] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG226 [137] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG227 [138] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1_INTERRUPT
|
|
//SEG228 setupRasterIrq::@1
|
|
//SEG229 [139] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte) $7f -- _deref_pbuc1=_deref_pbuc1_band_vbuc2
|
|
lda #$7f
|
|
and VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
//SEG230 setupRasterIrq::@2
|
|
//SEG231 [140] *((const byte*) RASTER#0) ← <(const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG232 [141] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
//SEG233 [142] *((const void()**) HARDWARE_IRQ#0) ← (const void()*) setupRasterIrq::irqRoutine#0 -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irqRoutine
|
|
sta HARDWARE_IRQ
|
|
lda #>irqRoutine
|
|
sta HARDWARE_IRQ+1
|
|
//SEG234 asm { cli }
|
|
cli
|
|
//SEG235 setupRasterIrq::@return
|
|
//SEG236 [144] return
|
|
rts
|
|
}
|
|
//SEG237 initSprites
|
|
// Initialize sprites
|
|
initSprites: {
|
|
.label sp = $16
|
|
//SEG238 [146] phi from initSprites to initSprites::@1 [phi:initSprites->initSprites::@1]
|
|
//SEG239 [146] phi (byte*) initSprites::sp#2 = (const byte*) SPRITE_DATA#0 [phi:initSprites->initSprites::@1#0] -- pbuz1=pbuc1
|
|
lda #<SPRITE_DATA
|
|
sta sp
|
|
lda #>SPRITE_DATA
|
|
sta sp+1
|
|
// Clear sprite data
|
|
//SEG240 [146] phi from initSprites::@1 to initSprites::@1 [phi:initSprites::@1->initSprites::@1]
|
|
//SEG241 [146] phi (byte*) initSprites::sp#2 = (byte*) initSprites::sp#1 [phi:initSprites::@1->initSprites::@1#0] -- register_copy
|
|
//SEG242 initSprites::@1
|
|
b1:
|
|
//SEG243 [147] *((byte*) initSprites::sp#2) ← (byte) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
tay
|
|
sta (sp),y
|
|
//SEG244 [148] (byte*) initSprites::sp#1 ← ++ (byte*) initSprites::sp#2 -- pbuz1=_inc_pbuz1
|
|
inc sp
|
|
bne !+
|
|
inc sp+1
|
|
!:
|
|
//SEG245 [149] if((byte*) initSprites::sp#1<(const byte*) SPRITE_DATA#0+(const byte) NUM_PROCESSING#0*(byte) $40) goto initSprites::@1 -- pbuz1_lt_pbuc1_then_la1
|
|
lda sp+1
|
|
cmp #>SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1
|
|
bne !+
|
|
lda sp
|
|
cmp #<SPRITE_DATA+NUM_PROCESSING*$40
|
|
bcc b1
|
|
!:
|
|
//SEG246 [150] phi from initSprites::@1 to initSprites::@2 [phi:initSprites::@1->initSprites::@2]
|
|
//SEG247 [150] phi (byte) initSprites::i#2 = (byte) 0 [phi:initSprites::@1->initSprites::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// Initialize sprite registers
|
|
//SEG248 [150] phi from initSprites::@2 to initSprites::@2 [phi:initSprites::@2->initSprites::@2]
|
|
//SEG249 [150] phi (byte) initSprites::i#2 = (byte) initSprites::i#1 [phi:initSprites::@2->initSprites::@2#0] -- register_copy
|
|
//SEG250 initSprites::@2
|
|
b2:
|
|
//SEG251 [151] *((const byte*) SPRITES_COLS#0 + (byte) initSprites::i#2) ← (const byte) LIGHT_BLUE#0 -- pbuc1_derefidx_vbuxx=vbuc2
|
|
lda #LIGHT_BLUE
|
|
sta SPRITES_COLS,x
|
|
//SEG252 [152] (byte) initSprites::i#1 ← ++ (byte) initSprites::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG253 [153] if((byte) initSprites::i#1!=(byte) 8) goto initSprites::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b2
|
|
//SEG254 initSprites::@3
|
|
//SEG255 [154] *((const byte*) SPRITES_MC#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SPRITES_MC
|
|
//SEG256 [155] *((const byte*) SPRITES_EXPAND_X#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
sta SPRITES_EXPAND_X
|
|
//SEG257 [156] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
sta SPRITES_EXPAND_Y
|
|
//SEG258 initSprites::@return
|
|
//SEG259 [157] return
|
|
rts
|
|
}
|
|
//SEG260 initSquareTables
|
|
// initialize SQUARES table
|
|
initSquareTables: {
|
|
.label _6 = $1a
|
|
.label _14 = $1a
|
|
.label x = $18
|
|
.label y = $19
|
|
//SEG261 [159] phi from initSquareTables to initSquareTables::@1 [phi:initSquareTables->initSquareTables::@1]
|
|
//SEG262 [159] phi (byte) initSquareTables::x#2 = (byte) 0 [phi:initSquareTables->initSquareTables::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
//SEG263 [159] phi from initSquareTables::@9 to initSquareTables::@1 [phi:initSquareTables::@9->initSquareTables::@1]
|
|
//SEG264 [159] phi (byte) initSquareTables::x#2 = (byte) initSquareTables::x#1 [phi:initSquareTables::@9->initSquareTables::@1#0] -- register_copy
|
|
//SEG265 initSquareTables::@1
|
|
b1:
|
|
//SEG266 [160] if((byte) initSquareTables::x#2<(byte) $14) goto initSquareTables::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda x
|
|
cmp #$14
|
|
bcc b2
|
|
//SEG267 initSquareTables::@3
|
|
//SEG268 [161] (byte~) initSquareTables::$2 ← (byte) initSquareTables::x#2 - (byte) $14 -- vbuaa=vbuz1_minus_vbuc1
|
|
sec
|
|
sbc #$14
|
|
//SEG269 [162] phi from initSquareTables::@2 initSquareTables::@3 to initSquareTables::@4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4]
|
|
//SEG270 [162] phi (byte) initSquareTables::x_dist#0 = (byte~) initSquareTables::$4 [phi:initSquareTables::@2/initSquareTables::@3->initSquareTables::@4#0] -- register_copy
|
|
//SEG271 initSquareTables::@4
|
|
b4:
|
|
//SEG272 [163] (byte) mul8u::a#1 ← (byte) initSquareTables::x_dist#0 -- vbuxx=vbuaa
|
|
tax
|
|
//SEG273 [164] (byte) mul8u::b#0 ← (byte) initSquareTables::x_dist#0
|
|
//SEG274 [165] call mul8u
|
|
//SEG275 [188] phi from initSquareTables::@4 to mul8u [phi:initSquareTables::@4->mul8u]
|
|
//SEG276 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#1 [phi:initSquareTables::@4->mul8u#0] -- register_copy
|
|
//SEG277 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#0 [phi:initSquareTables::@4->mul8u#1] -- vwuz1=vbuaa
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG278 [166] (word) mul8u::return#2 ← (word) mul8u::res#2
|
|
//SEG279 initSquareTables::@9
|
|
//SEG280 [167] (word~) initSquareTables::$6 ← (word) mul8u::return#2
|
|
//SEG281 [168] (byte~) initSquareTables::$16 ← (byte) initSquareTables::x#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda x
|
|
asl
|
|
//SEG282 [169] *((const word[$28]) SQUARES_X#0 + (byte~) initSquareTables::$16) ← (word~) initSquareTables::$6 -- pwuc1_derefidx_vbuaa=vwuz1
|
|
tay
|
|
lda _6
|
|
sta SQUARES_X,y
|
|
lda _6+1
|
|
sta SQUARES_X+1,y
|
|
//SEG283 [170] (byte) initSquareTables::x#1 ← ++ (byte) initSquareTables::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG284 [171] if((byte) initSquareTables::x#1!=(byte) $28) goto initSquareTables::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$28
|
|
cmp x
|
|
bne b1
|
|
//SEG285 [172] phi from initSquareTables::@9 to initSquareTables::@5 [phi:initSquareTables::@9->initSquareTables::@5]
|
|
//SEG286 [172] phi (byte) initSquareTables::y#2 = (byte) 0 [phi:initSquareTables::@9->initSquareTables::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG287 [172] phi from initSquareTables::@10 to initSquareTables::@5 [phi:initSquareTables::@10->initSquareTables::@5]
|
|
//SEG288 [172] phi (byte) initSquareTables::y#2 = (byte) initSquareTables::y#1 [phi:initSquareTables::@10->initSquareTables::@5#0] -- register_copy
|
|
//SEG289 initSquareTables::@5
|
|
b5:
|
|
//SEG290 [173] if((byte) initSquareTables::y#2<(byte) $c) goto initSquareTables::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda y
|
|
cmp #$c
|
|
bcc b6
|
|
//SEG291 initSquareTables::@7
|
|
//SEG292 [174] (byte~) initSquareTables::$10 ← (byte) initSquareTables::y#2 - (byte) $c -- vbuaa=vbuz1_minus_vbuc1
|
|
sec
|
|
sbc #$c
|
|
//SEG293 [175] phi from initSquareTables::@6 initSquareTables::@7 to initSquareTables::@8 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8]
|
|
//SEG294 [175] phi (byte) initSquareTables::y_dist#0 = (byte~) initSquareTables::$12 [phi:initSquareTables::@6/initSquareTables::@7->initSquareTables::@8#0] -- register_copy
|
|
//SEG295 initSquareTables::@8
|
|
b8:
|
|
//SEG296 [176] (byte) mul8u::a#2 ← (byte) initSquareTables::y_dist#0 -- vbuxx=vbuaa
|
|
tax
|
|
//SEG297 [177] (byte) mul8u::b#1 ← (byte) initSquareTables::y_dist#0
|
|
//SEG298 [178] call mul8u
|
|
//SEG299 [188] phi from initSquareTables::@8 to mul8u [phi:initSquareTables::@8->mul8u]
|
|
//SEG300 [188] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:initSquareTables::@8->mul8u#0] -- register_copy
|
|
//SEG301 [188] phi (word) mul8u::mb#0 = (byte) mul8u::b#1 [phi:initSquareTables::@8->mul8u#1] -- vwuz1=vbuaa
|
|
sta mul8u.mb
|
|
lda #0
|
|
sta mul8u.mb+1
|
|
jsr mul8u
|
|
//SEG302 [179] (word) mul8u::return#3 ← (word) mul8u::res#2
|
|
//SEG303 initSquareTables::@10
|
|
//SEG304 [180] (word~) initSquareTables::$14 ← (word) mul8u::return#3
|
|
//SEG305 [181] (byte~) initSquareTables::$17 ← (byte) initSquareTables::y#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda y
|
|
asl
|
|
//SEG306 [182] *((const word[$19]) SQUARES_Y#0 + (byte~) initSquareTables::$17) ← (word~) initSquareTables::$14 -- pwuc1_derefidx_vbuaa=vwuz1
|
|
tay
|
|
lda _14
|
|
sta SQUARES_Y,y
|
|
lda _14+1
|
|
sta SQUARES_Y+1,y
|
|
//SEG307 [183] (byte) initSquareTables::y#1 ← ++ (byte) initSquareTables::y#2 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG308 [184] if((byte) initSquareTables::y#1!=(byte) $19) goto initSquareTables::@5 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$19
|
|
cmp y
|
|
bne b5
|
|
//SEG309 initSquareTables::@return
|
|
//SEG310 [185] return
|
|
rts
|
|
//SEG311 initSquareTables::@6
|
|
b6:
|
|
//SEG312 [186] (byte~) initSquareTables::$12 ← (byte) $c - (byte) initSquareTables::y#2 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$c
|
|
sec
|
|
sbc y
|
|
jmp b8
|
|
//SEG313 initSquareTables::@2
|
|
b2:
|
|
//SEG314 [187] (byte~) initSquareTables::$4 ← (byte) $14 - (byte) initSquareTables::x#2 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$14
|
|
sec
|
|
sbc x
|
|
jmp b4
|
|
}
|
|
//SEG315 mul8u
|
|
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
|
|
// mul8u(byte register(X) a, byte register(A) b)
|
|
mul8u: {
|
|
.label mb = $1c
|
|
.label res = $1a
|
|
.label return = $1a
|
|
//SEG316 [189] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1]
|
|
//SEG317 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy
|
|
//SEG318 [189] phi (word) mul8u::res#2 = (byte) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1
|
|
lda #0
|
|
sta res
|
|
sta res+1
|
|
//SEG319 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy
|
|
//SEG320 mul8u::@1
|
|
b1:
|
|
//SEG321 [190] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b2
|
|
//SEG322 mul8u::@return
|
|
//SEG323 [191] return
|
|
rts
|
|
//SEG324 mul8u::@2
|
|
b2:
|
|
//SEG325 [192] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #1
|
|
//SEG326 [193] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq b3
|
|
//SEG327 mul8u::@4
|
|
//SEG328 [194] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda res
|
|
clc
|
|
adc mb
|
|
sta res
|
|
lda res+1
|
|
adc mb+1
|
|
sta res+1
|
|
//SEG329 [195] phi from mul8u::@2 mul8u::@4 to mul8u::@3 [phi:mul8u::@2/mul8u::@4->mul8u::@3]
|
|
//SEG330 [195] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@4->mul8u::@3#0] -- register_copy
|
|
//SEG331 mul8u::@3
|
|
b3:
|
|
//SEG332 [196] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1 -- vbuxx=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
tax
|
|
//SEG333 [197] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl mb
|
|
rol mb+1
|
|
//SEG334 [189] phi from mul8u::@3 to mul8u::@1 [phi:mul8u::@3->mul8u::@1]
|
|
//SEG335 [189] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@3->mul8u::@1#0] -- register_copy
|
|
//SEG336 [189] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@3->mul8u::@1#1] -- register_copy
|
|
//SEG337 [189] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@3->mul8u::@1#2] -- register_copy
|
|
jmp b1
|
|
}
|
|
//SEG338 irqBottom
|
|
// Raster Interrupt at the middle of the screen
|
|
irqBottom: {
|
|
//SEG339 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG340 [199] phi from irqBottom to irqBottom::@1 [phi:irqBottom->irqBottom::@1]
|
|
//SEG341 [199] phi (byte) irqBottom::i#2 = (byte) 0 [phi:irqBottom->irqBottom::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG342 [199] phi from irqBottom::@1 to irqBottom::@1 [phi:irqBottom::@1->irqBottom::@1]
|
|
//SEG343 [199] phi (byte) irqBottom::i#2 = (byte) irqBottom::i#1 [phi:irqBottom::@1->irqBottom::@1#0] -- register_copy
|
|
//SEG344 irqBottom::@1
|
|
b1:
|
|
//SEG345 [200] (byte) irqBottom::i#1 ← ++ (byte) irqBottom::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG346 [201] if((byte) irqBottom::i#1!=(byte) 5) goto irqBottom::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #5
|
|
bne b1
|
|
//SEG347 [202] phi from irqBottom::@1 to irqBottom::@2 [phi:irqBottom::@1->irqBottom::@2]
|
|
//SEG348 irqBottom::@2
|
|
//SEG349 [203] call processChars
|
|
//SEG350 [208] phi from irqBottom::@2 to processChars [phi:irqBottom::@2->processChars]
|
|
jsr processChars
|
|
//SEG351 irqBottom::@3
|
|
//SEG352 [204] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_TOP#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the top of the screen
|
|
lda #RASTER_IRQ_TOP
|
|
sta RASTER
|
|
//SEG353 [205] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqTop() -- _deref_pptc1=pprc2
|
|
lda #<irqTop
|
|
sta HARDWARE_IRQ
|
|
lda #>irqTop
|
|
sta HARDWARE_IRQ+1
|
|
//SEG354 [206] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
//SEG355 irqBottom::@return
|
|
//SEG356 [207] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
//SEG357 processChars
|
|
// Process any chars in the PROCESSING array
|
|
processChars: {
|
|
.label _16 = $38
|
|
.label _26 = $36
|
|
.label processing = $33
|
|
.label bitmask = $35
|
|
.label i = $1e
|
|
.label xpos = $36
|
|
.label ypos = $3a
|
|
.label numActive = $1f
|
|
//SEG358 [209] phi from processChars to processChars::@1 [phi:processChars->processChars::@1]
|
|
//SEG359 [209] phi (byte) processChars::numActive#10 = (byte) 0 [phi:processChars->processChars::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta numActive
|
|
//SEG360 [209] phi (byte) processChars::i#10 = (byte) 0 [phi:processChars->processChars::@1#1] -- vbuz1=vbuc1
|
|
sta i
|
|
//SEG361 [209] phi from processChars::@2 to processChars::@1 [phi:processChars::@2->processChars::@1]
|
|
//SEG362 [209] phi (byte) processChars::numActive#10 = (byte) processChars::numActive#3 [phi:processChars::@2->processChars::@1#0] -- register_copy
|
|
//SEG363 [209] phi (byte) processChars::i#10 = (byte) processChars::i#1 [phi:processChars::@2->processChars::@1#1] -- register_copy
|
|
//SEG364 processChars::@1
|
|
b1:
|
|
//SEG365 [210] (byte) processChars::$64 ← (byte) processChars::i#10 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
//SEG366 [211] (byte) processChars::$65 ← (byte) processChars::$64 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG367 [212] (byte) processChars::$66 ← (byte) processChars::$65 << (byte) 2 -- vbuaa=vbuaa_rol_2
|
|
asl
|
|
asl
|
|
//SEG368 [213] (byte~) processChars::$36 ← (byte) processChars::$66 + (byte) processChars::i#10 -- vbuaa=vbuaa_plus_vbuz1
|
|
clc
|
|
adc i
|
|
//SEG369 [214] (struct ProcessingSprite*) processChars::processing#0 ← (const struct ProcessingSprite[NUM_PROCESSING#0]) PROCESSING#0 + (byte~) processChars::$36 -- pssz1=pssc1_plus_vbuaa
|
|
clc
|
|
adc #<PROCESSING
|
|
sta processing
|
|
lda #>PROCESSING
|
|
adc #0
|
|
sta processing+1
|
|
//SEG370 [215] (byte) processChars::bitmask#0 ← (byte) 1 << *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID) -- vbuz1=vbuc1_rol_pbuz2_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
lda (processing),y
|
|
tax
|
|
lda #1
|
|
cpx #0
|
|
beq !e+
|
|
!:
|
|
asl
|
|
dex
|
|
bne !-
|
|
!e:
|
|
sta bitmask
|
|
//SEG371 [216] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)==(const byte) STATUS_FREE#0) goto processChars::@2 -- pbuz1_derefidx_vbuc1_eq_vbuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
lda (processing),y
|
|
cmp #STATUS_FREE
|
|
bne !b2+
|
|
jmp b2
|
|
!b2:
|
|
//SEG372 processChars::@10
|
|
//SEG373 [217] if(*((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS)!=(const byte) STATUS_NEW#0) goto processChars::@3 -- pbuz1_derefidx_vbuc1_neq_vbuc2_then_la1
|
|
lda (processing),y
|
|
cmp #STATUS_NEW
|
|
bne b3
|
|
//SEG374 processChars::@11
|
|
//SEG375 [218] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2
|
|
// Clear the char on the screen
|
|
ldx #' '
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR
|
|
lda (processing),y
|
|
sta !++1
|
|
iny
|
|
lda (processing),y
|
|
sta !++2
|
|
txa
|
|
!:
|
|
sta $ffff
|
|
//SEG376 [219] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
// Enable the sprite
|
|
lda SPRITES_ENABLE
|
|
ora bitmask
|
|
sta SPRITES_ENABLE
|
|
//SEG377 [220] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3
|
|
// Set sprite pointer
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_ID
|
|
pha
|
|
lda (processing),y
|
|
tay
|
|
pla
|
|
sta SCREEN+SPRITE_PTRS,y
|
|
//SEG378 [221] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_PROCESSING#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status
|
|
lda #STATUS_PROCESSING
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
//SEG379 processChars::@3
|
|
b3:
|
|
//SEG380 [222] (word) processChars::xpos#0 ← *((word*)(struct ProcessingSprite*) processChars::processing#0) >> (byte) 4 -- vwuz1=_deref_pwuz2_ror_4
|
|
ldy #0
|
|
lda (processing),y
|
|
sta xpos
|
|
iny
|
|
lda (processing),y
|
|
sta xpos+1
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
lsr xpos+1
|
|
ror xpos
|
|
//SEG381 [223] (byte~) processChars::$12 ← > (word) processChars::xpos#0 -- vbuaa=_hi_vwuz1
|
|
lda xpos+1
|
|
//SEG382 [224] if((byte) 0!=(byte~) processChars::$12) goto processChars::@4 -- vbuc1_neq_vbuaa_then_la1
|
|
// Set sprite position
|
|
cmp #0
|
|
beq !b4+
|
|
jmp b4
|
|
!b4:
|
|
//SEG383 processChars::@8
|
|
//SEG384 [225] (byte~) processChars::$13 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor bitmask
|
|
//SEG385 [226] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) & (byte~) processChars::$13 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
and SPRITES_XMSB
|
|
sta SPRITES_XMSB
|
|
//SEG386 processChars::@5
|
|
b5:
|
|
//SEG387 [227] (byte~) processChars::$18 ← (byte) processChars::i#10 << (byte) 1 -- vbuxx=vbuz1_rol_1
|
|
lda i
|
|
asl
|
|
tax
|
|
//SEG388 [228] (byte~) processChars::$15 ← (byte)(word) processChars::xpos#0 -- vbuaa=_byte_vwuz1
|
|
lda xpos
|
|
//SEG389 [229] *((const byte*) SPRITES_XPOS#0 + (byte~) processChars::$18) ← (byte~) processChars::$15 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta SPRITES_XPOS,x
|
|
//SEG390 [230] (word~) processChars::$16 ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) >> (byte) 4 -- vwuz1=pwuz2_derefidx_vbuc1_ror_4
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
lda (processing),y
|
|
sta _16
|
|
iny
|
|
lda (processing),y
|
|
sta _16+1
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
lsr _16+1
|
|
ror _16
|
|
//SEG391 [231] (byte) processChars::ypos#0 ← (byte)(word~) processChars::$16 -- vbuz1=_byte_vwuz2
|
|
lda _16
|
|
sta ypos
|
|
//SEG392 [232] *((const byte*) SPRITES_YPOS#0 + (byte~) processChars::$18) ← (byte) processChars::ypos#0 -- pbuc1_derefidx_vbuxx=vbuz1
|
|
sta SPRITES_YPOS,x
|
|
//SEG393 [233] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)<(const word) XPOS_LEFTMOST#0) goto processChars::@6 -- _deref_pwuz1_lt_vwuc1_then_la1
|
|
// Move sprite
|
|
ldy #1
|
|
lda (processing),y
|
|
cmp #>XPOS_LEFTMOST
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<XPOS_LEFTMOST
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
!:
|
|
//SEG394 processChars::@15
|
|
//SEG395 [234] if(*((word*)(struct ProcessingSprite*) processChars::processing#0)>(const word) XPOS_RIGHTMOST#0) goto processChars::@6 -- _deref_pwuz1_gt_vwuc1_then_la1
|
|
ldy #1
|
|
lda #>XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
bne !+
|
|
dey
|
|
lda #<XPOS_RIGHTMOST
|
|
cmp (processing),y
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
!:
|
|
//SEG396 processChars::@14
|
|
//SEG397 [235] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)<(const word) YPOS_TOPMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_lt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda (processing),y
|
|
cmp #>YPOS_TOPMOST
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
bne !+
|
|
dey
|
|
lda (processing),y
|
|
cmp #<YPOS_TOPMOST
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
!:
|
|
//SEG398 processChars::@13
|
|
//SEG399 [236] if(*((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y)>(const word) YPOS_BOTTOMMOST#0) goto processChars::@6 -- pwuz1_derefidx_vbuc1_gt_vwuc2_then_la1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
iny
|
|
lda #>YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
bne !+
|
|
dey
|
|
lda #<YPOS_BOTTOMMOST
|
|
cmp (processing),y
|
|
bcs !b6+
|
|
jmp b6
|
|
!b6:
|
|
!:
|
|
//SEG400 processChars::@9
|
|
//SEG401 [237] (word~) processChars::$26 ← (word) processChars::xpos#0 >> (byte) 3 -- vwuz1=vwuz1_ror_3
|
|
lsr _26+1
|
|
ror _26
|
|
lsr _26+1
|
|
ror _26
|
|
lsr _26+1
|
|
ror _26
|
|
//SEG402 [238] (byte~) processChars::$27 ← (byte)(word~) processChars::$26 -- vbuaa=_byte_vwuz1
|
|
lda _26
|
|
//SEG403 [239] (byte) processChars::xchar#0 ← (byte~) processChars::$27 - (const byte) BORDER_XPOS_LEFT#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #BORDER_XPOS_LEFT/8
|
|
//SEG404 [240] (byte~) processChars::$37 ← (byte) processChars::xchar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
//SEG405 [241] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) + *((const word*) VXSIN#0 + (byte~) processChars::$37) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
tax
|
|
clc
|
|
lda (processing),y
|
|
adc VXSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VXSIN+1,x
|
|
sta (processing),y
|
|
//SEG406 [242] *((word*)(struct ProcessingSprite*) processChars::processing#0) ← *((word*)(struct ProcessingSprite*) processChars::processing#0) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VX) -- _deref_pwuz1=_deref_pwuz1_plus_pwuz1_derefidx_vbuc1
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VX
|
|
sty $ff
|
|
clc
|
|
lda (processing),y
|
|
ldy #0
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy $ff
|
|
iny
|
|
lda (processing),y
|
|
ldy #1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
//SEG407 [243] (byte~) processChars::$31 ← (byte) processChars::ypos#0 >> (byte) 3 -- vbuaa=vbuz1_ror_3
|
|
lda ypos
|
|
lsr
|
|
lsr
|
|
lsr
|
|
//SEG408 [244] (byte) processChars::ychar#0 ← (byte~) processChars::$31 - (const byte) BORDER_YPOS_TOP#0/(byte) 8 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #BORDER_YPOS_TOP/8
|
|
//SEG409 [245] (byte~) processChars::$38 ← (byte) processChars::ychar#0 << (byte) 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
//SEG410 [246] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) + *((const word*) VYSIN#0 + (byte~) processChars::$38) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuc2_derefidx_vbuaa
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
tax
|
|
clc
|
|
lda (processing),y
|
|
adc VYSIN,x
|
|
sta (processing),y
|
|
iny
|
|
lda (processing),y
|
|
adc VYSIN+1,x
|
|
sta (processing),y
|
|
//SEG411 [247] *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) ← *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_Y) + *((word*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_VY) -- pwuz1_derefidx_vbuc1=pwuz1_derefidx_vbuc1_plus_pwuz1_derefidx_vbuc2
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY
|
|
clc
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y
|
|
adc (processing),y
|
|
sta (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_VY+1
|
|
lda (processing),y
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_Y+1
|
|
adc (processing),y
|
|
sta (processing),y
|
|
//SEG412 processChars::@7
|
|
b7:
|
|
//SEG413 [248] (byte) processChars::numActive#1 ← ++ (byte) processChars::numActive#10 -- vbuz1=_inc_vbuz1
|
|
inc numActive
|
|
//SEG414 [249] phi from processChars::@1 processChars::@7 to processChars::@2 [phi:processChars::@1/processChars::@7->processChars::@2]
|
|
//SEG415 [249] phi (byte) processChars::numActive#3 = (byte) processChars::numActive#10 [phi:processChars::@1/processChars::@7->processChars::@2#0] -- register_copy
|
|
//SEG416 processChars::@2
|
|
b2:
|
|
//SEG417 [250] (byte) processChars::i#1 ← ++ (byte) processChars::i#10 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG418 [251] if((byte) processChars::i#1!=(const byte) NUM_PROCESSING#0-(byte) 1+(byte) 1) goto processChars::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #NUM_PROCESSING-1+1
|
|
cmp i
|
|
beq !b1+
|
|
jmp b1
|
|
!b1:
|
|
//SEG419 processChars::@12
|
|
//SEG420 [252] (byte~) processChars::$1 ← (byte) '0' + (byte) processChars::numActive#3 -- vbuxx=vbuc1_plus_vbuz1
|
|
lax numActive
|
|
axs #-['0']
|
|
//SEG421 [253] *((const byte*) SCREEN#0+(word) $3e7) ← (byte~) processChars::$1 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$3e7
|
|
//SEG422 processChars::@return
|
|
//SEG423 [254] return
|
|
rts
|
|
//SEG424 processChars::@6
|
|
b6:
|
|
//SEG425 [255] *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_STATUS) ← (const byte) STATUS_FREE#0 -- pbuz1_derefidx_vbuc1=vbuc2
|
|
// Set status to FREE
|
|
lda #STATUS_FREE
|
|
ldy #OFFSET_STRUCT_PROCESSINGSPRITE_STATUS
|
|
sta (processing),y
|
|
//SEG426 [256] (byte~) processChars::$34 ← (byte) $ff ^ (byte) processChars::bitmask#0 -- vbuaa=vbuc1_bxor_vbuz1
|
|
lda #$ff
|
|
eor bitmask
|
|
//SEG427 [257] *((const byte*) SPRITES_ENABLE#0) ← *((const byte*) SPRITES_ENABLE#0) & (byte~) processChars::$34 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
|
|
// Disable the sprite
|
|
and SPRITES_ENABLE
|
|
sta SPRITES_ENABLE
|
|
jmp b7
|
|
//SEG428 processChars::@4
|
|
b4:
|
|
//SEG429 [258] *((const byte*) SPRITES_XMSB#0) ← *((const byte*) SPRITES_XMSB#0) | (byte) processChars::bitmask#0 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
|
|
lda SPRITES_XMSB
|
|
ora bitmask
|
|
sta SPRITES_XMSB
|
|
jmp b5
|
|
}
|
|
//SEG430 irqTop
|
|
// Raster Interrupt at the top of the screen
|
|
irqTop: {
|
|
//SEG431 entry interrupt(HARDWARE_ALL)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
//SEG432 [260] phi from irqTop to irqTop::@1 [phi:irqTop->irqTop::@1]
|
|
//SEG433 [260] phi (byte) irqTop::i#2 = (byte) 0 [phi:irqTop->irqTop::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG434 [260] phi from irqTop::@1 to irqTop::@1 [phi:irqTop::@1->irqTop::@1]
|
|
//SEG435 [260] phi (byte) irqTop::i#2 = (byte) irqTop::i#1 [phi:irqTop::@1->irqTop::@1#0] -- register_copy
|
|
//SEG436 irqTop::@1
|
|
b1:
|
|
//SEG437 [261] (byte) irqTop::i#1 ← ++ (byte) irqTop::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG438 [262] if((byte) irqTop::i#1!=(byte) 5) goto irqTop::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #5
|
|
bne b1
|
|
//SEG439 [263] phi from irqTop::@1 to irqTop::@2 [phi:irqTop::@1->irqTop::@2]
|
|
//SEG440 [263] phi (byte) irqTop::i1#2 = (byte) 0 [phi:irqTop::@1->irqTop::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//*BORDERCOL = WHITE;
|
|
//*BGCOL = WHITE;
|
|
//SEG441 [263] phi from irqTop::@2 to irqTop::@2 [phi:irqTop::@2->irqTop::@2]
|
|
//SEG442 [263] phi (byte) irqTop::i1#2 = (byte) irqTop::i1#1 [phi:irqTop::@2->irqTop::@2#0] -- register_copy
|
|
//SEG443 irqTop::@2
|
|
b2:
|
|
//SEG444 [264] (byte) irqTop::i1#1 ← ++ (byte) irqTop::i1#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG445 [265] if((byte) irqTop::i1#1!=(byte) 8) goto irqTop::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #8
|
|
bne b2
|
|
//SEG446 irqTop::@3
|
|
//SEG447 [266] *((const byte*) RASTER#0) ← (const byte) RASTER_IRQ_MIDDLE#0 -- _deref_pbuc1=vbuc2
|
|
// Trigger IRQ at the middle of the screen
|
|
lda #RASTER_IRQ_MIDDLE
|
|
sta RASTER
|
|
//SEG448 [267] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_ALL)(void()) irqBottom() -- _deref_pptc1=pprc2
|
|
lda #<irqBottom
|
|
sta HARDWARE_IRQ
|
|
lda #>irqBottom
|
|
sta HARDWARE_IRQ+1
|
|
//SEG449 [268] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
//SEG450 irqTop::@return
|
|
//SEG451 [269] return - exit interrupt(HARDWARE_ALL)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
// Copy of the screen used for finding chars to process
|
|
SCREEN_COPY: .fill $3e8, 0
|
|
// SQUARES_X[i] = (i-20)*(i-20)
|
|
SQUARES_X: .fill 2*$28, 0
|
|
// SQUARES_Y[i] = (i-12)*(i-12)
|
|
SQUARES_Y: .fill 2*$19, 0
|
|
// Sprites currently being processed in the interrupt
|
|
PROCESSING: .fill $d*NUM_PROCESSING, 0
|
|
.pc = VXSIN "VXSIN"
|
|
.for(var i=0; i<40; i++) {
|
|
.word -sin(toRadians([i*360]/40))*4
|
|
}
|
|
|
|
.pc = VYSIN "VYSIN"
|
|
.for(var i=0; i<25; i++) {
|
|
.word -sin(toRadians([i*360]/25))*4
|
|
}
|
|
|
|
|