From 770f213b4040ca035a5ed6a0875dc6137a502f81 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 26 Mar 2018 00:44:41 +0200 Subject: [PATCH] Added missing SCREEN var --- .../camelot64/kickc/test/kc/sinus-sprites.kc | 1 + .../kickc/test/ref/sinus-sprites.asm | 2 +- .../kickc/test/ref/sinus-sprites.cfg | 8 +- .../kickc/test/ref/sinus-sprites.log | 850 +++++++++++------- .../kickc/test/ref/sinus-sprites.sym | 2 +- 5 files changed, 547 insertions(+), 316 deletions(-) diff --git a/src/test/java/dk/camelot64/kickc/test/kc/sinus-sprites.kc b/src/test/java/dk/camelot64/kickc/test/kc/sinus-sprites.kc index 88059a61a..58e3fad68 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/sinus-sprites.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/sinus-sprites.kc @@ -7,6 +7,7 @@ const byte[221] sintab_x; const byte sinlen_y = 197; const byte[197] sintab_y; const byte* sprites = $2000; +const byte* SCREEN = $400; void main() { init(); diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm index 5ea41237d..7ad73511c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm @@ -15,10 +15,10 @@ .label COLS = $d800 .label memLo = $fe .label memHi = $ff - .label SCREEN = $400 .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 + .label SCREEN = $400 .label progress_idx = 4 .label progress_cursor = $a .label sin_idx_x = 2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg index b7cc379ba..11fc43caa 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@47 -@47: scope:[] from @begin + to:@50 +@50: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @47 +@end: scope:[] from @50 [3] phi() [ ] ( ) -main: scope:[main] from @47 +main: scope:[main] from @50 [4] phi() [ ] ( main:2 [ ] ) [5] call init param-assignment [ ] ( main:2 [ ] ) to:main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 3e918b44f..aa7382ad9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -8,6 +8,7 @@ const byte[221] sintab_x; const byte sinlen_y = 197; const byte[197] sintab_y; const byte* sprites = $2000; +const byte* SCREEN = $400; void main() { init(); @@ -232,10 +233,28 @@ const byte* SPRITES_MC = $d01c; const byte* SPRITES_EXPAND_X = $d01d; const byte* BORDERCOL = $d020; const byte* BGCOL = $d021; +const byte* BGCOL1 = $d021; +const byte* BGCOL2 = $d022; const byte* SPRITES_MC1 = $d025; const byte* SPRITES_MC2 = $d026; const byte* SPRITES_COLS = $d027; +const byte* VIC_CONTROL = $d011; +const byte* D011 = $d011; +const byte VIC_RST8 = %10000000; +const byte VIC_ECM = %01000000; +const byte VIC_BMM = %00100000; +const byte VIC_DEN = %00010000; +const byte VIC_RSEL = %00001000; + +const byte* VIC_CONTROL2 = $d016; +const byte* D016 = $d016; +const byte VIC_MCM = %00010000; +const byte VIC_CSEL = %00001000; + +const byte* D018 = $d018; +const byte* VIC_MEMORY = $d018; + const byte* COLS = $d800; // CIA#1 Port A: keyboard matrix columns and joystick #2 @@ -247,6 +266,15 @@ const byte* CIA1_PORT_A_DDR = $dc02; // CIA #1 Port B data direction register. const byte* CIA1_PORT_B_DDR = $dc03; +// CIA#2 Port A: Serial bus, RS-232, VIC memory bank +const byte* CIA2_PORT_A = $dd00; +// CIA#2 Port B: RS-232 +const byte* CIA2_PORT_B = $dd01; +// CIA #2 Port A data direction register. +const byte* CIA2_PORT_A_DDR = $dd02; +// CIA #2 Port B data direction register. +const byte* CIA2_PORT_B_DDR = $dd03; + const byte BLACK = $0; const byte WHITE = $1; const byte RED = $2; @@ -546,24 +574,37 @@ void mulFACby10() { Importing print PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc -const byte* SCREEN = $0400; - -byte* line_cursor = SCREEN; -byte* char_cursor = line_cursor; +byte* print_screen = $0400; +byte* print_line_cursor = print_screen; +byte* print_char_cursor = print_line_cursor; // Print a zero-terminated string void print_str(byte* str) { while(*str!='@') { - *(char_cursor++) = *(str++); + *(print_char_cursor++) = *(str++); } } +// Print a string at a specific screen position +void print_str_at(byte* str, byte* at) { + while(*str!='@') { + *(at++) = *(str++); + } +} + +// Print a zero-terminated string followed by a newline +void print_str_ln(byte* str) { + print_str(str); + print_ln(); +} + + // Print a newline void print_ln() { do { - line_cursor = line_cursor + $28; - } while (line_cursor (word) print_word::w (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 @@ -1983,8 +2179,8 @@ print_word: scope:[print_word] from print_word::@return: scope:[print_word] from print_word return to:@return -@32: scope:[] from @31 - to:@33 +@34: scope:[] from @33 + to:@35 print_dword: scope:[print_dword] from (word~) print_dword::$0 ← > (dword) print_dword::dw (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 @@ -1994,8 +2190,8 @@ print_dword: scope:[print_dword] from print_dword::@return: scope:[print_dword] from print_dword return to:@return -@33: scope:[] from @32 - to:@34 +@35: scope:[] from @34 + to:@36 print_sdword: scope:[print_sdword] from (boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0 @@ -2013,8 +2209,8 @@ print_sdword::@2: scope:[print_sdword] from print_sdword print_sdword::@return: scope:[print_sdword] from print_sdword::@1 return to:@return -@34: scope:[] from @33 - to:@35 +@36: scope:[] from @35 + to:@37 print_byte: scope:[print_byte] from (byte[]) print_byte::hextab ← (string) "0123456789abcdef" (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -2025,41 +2221,52 @@ print_byte: scope:[print_byte] from print_byte::@return: scope:[print_byte] from print_byte return to:@return -@35: scope:[] from @34 - to:@36 +@37: scope:[] from @36 + to:@38 print_char: scope:[print_char] from - *((byte*) char_cursor) ← (byte) print_char::ch - (byte*) char_cursor ← ++ (byte*) char_cursor + *((byte*) print_char_cursor) ← (byte) print_char::ch + (byte*) print_char_cursor ← ++ (byte*) print_char_cursor to:print_char::@return print_char::@return: scope:[print_char] from print_char return to:@return -@36: scope:[] from @35 - to:@37 +@38: scope:[] from @37 + to:@39 print_cls: scope:[print_cls] from - (byte*) print_cls::sc ← (byte*) SCREEN + (byte*) print_cls::sc ← (byte*) print_screen to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 *((byte*) print_cls::sc) ← (byte) ' ' (byte*) print_cls::sc ← ++ (byte*) print_cls::sc - (byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000 + (byte*~) print_cls::$0 ← (byte*) print_screen + (word/signed word/dword/signed dword) 1000 (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0 if((boolean~) print_cls::$1) goto print_cls::@1 to:print_cls::@2 print_cls::@2: scope:[print_cls] from print_cls::@1 - (byte*) line_cursor ← (byte*) SCREEN - (byte*) char_cursor ← (byte*) line_cursor + (byte*) print_line_cursor ← (byte*) print_screen + (byte*) print_char_cursor ← (byte*) print_line_cursor to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return -@37: scope:[] from @36 +@39: scope:[] from @38 + to:@40 +print_set_screen: scope:[print_set_screen] from + (byte*) print_screen ← (byte*) print_set_screen::screen + (byte*) print_line_cursor ← (byte*) print_screen + (byte*) print_char_cursor ← (byte*) print_line_cursor + to:print_set_screen::@return +print_set_screen::@return: scope:[print_set_screen] from print_set_screen + return + to:@return +@40: scope:[] from @39 (byte) sinlen_x ← (byte/word/signed word/dword/signed dword) 221 (byte[221]) sintab_x ← { fill( 221, 0) } (byte) sinlen_y ← (byte/word/signed word/dword/signed dword) 197 (byte[197]) sintab_y ← { fill( 197, 0) } (byte*) sprites ← ((byte*)) (word/signed word/dword/signed dword) 8192 - to:@38 + (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 + to:@41 main: scope:[main] from (void~) main::$0 ← call init to:main::@1 @@ -2078,8 +2285,8 @@ main::@4: scope:[main] from main::@3 main::@return: scope:[main] from main::@4 return to:@return -@38: scope:[] from @37 - to:@39 +@41: scope:[] from @40 + to:@42 init: scope:[init] from (void~) init::$0 ← call clear_screen (byte) init::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2105,8 +2312,8 @@ init::@2: scope:[init] from init::@1 init::@return: scope:[init] from init::@2 return to:@return -@39: scope:[] from @38 - to:@40 +@42: scope:[] from @41 + to:@43 clear_screen: scope:[clear_screen] from (byte*) clear_screen::sc ← (byte*) SCREEN to:clear_screen::@1 @@ -2122,10 +2329,10 @@ clear_screen::@2: scope:[clear_screen] from clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@2 return to:@return -@40: scope:[] from @39 +@43: scope:[] from @42 (byte*) progress_cursor ← (byte*) SCREEN (byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@41 + to:@44 progress_init: scope:[progress_init] from (byte*) progress_cursor ← (byte*) progress_init::line (byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2133,8 +2340,8 @@ progress_init: scope:[progress_init] from progress_init::@return: scope:[progress_init] from progress_init return to:@return -@41: scope:[] from @40 - to:@42 +@44: scope:[] from @43 + to:@45 progress_inc: scope:[progress_inc] from (byte[]) progress_inc::progress_chars ← { (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 116, (byte/signed byte/word/signed word/dword/signed dword) 117, (byte/signed byte/word/signed word/dword/signed dword) 97, (byte/word/signed word/dword/signed dword) 246, (byte/word/signed word/dword/signed dword) 231, (byte/word/signed word/dword/signed dword) 234, (byte/word/signed word/dword/signed dword) 224 } (byte) progress_idx ← ++ (byte) progress_idx @@ -2153,10 +2360,10 @@ progress_inc::@2: scope:[progress_inc] from progress_inc progress_inc::@return: scope:[progress_inc] from progress_inc::@1 return to:@return -@42: scope:[] from @41 +@45: scope:[] from @44 (byte) sin_idx_x ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin_idx_y ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@43 + to:@46 anim: scope:[anim] from *((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL) (byte) anim::xidx ← (byte) sin_idx_x @@ -2229,8 +2436,8 @@ anim::@10: scope:[anim] from anim::@4 anim::@return: scope:[anim] from anim::@5 return to:@return -@43: scope:[] from @42 - to:@44 +@46: scope:[] from @45 + to:@47 place_sprites: scope:[place_sprites] from *((byte*) SPRITES_ENABLE) ← (byte/signed byte/word/signed word/dword/signed dword) 127 *((byte*) SPRITES_EXPAND_X) ← (byte/signed byte/word/signed word/dword/signed dword) 127 @@ -2267,8 +2474,8 @@ place_sprites::@2: scope:[place_sprites] from place_sprites::@1 place_sprites::@return: scope:[place_sprites] from place_sprites::@2 return to:@return -@44: scope:[] from @43 - to:@45 +@47: scope:[] from @46 + to:@48 gen_sprites: scope:[gen_sprites] from (byte[]) gen_sprites::cml ← (string) "camelot" (byte*) gen_sprites::spr ← (byte*) sprites @@ -2287,8 +2494,8 @@ gen_sprites::@2: scope:[gen_sprites] from gen_sprites::@1 gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@2 return to:@return -@45: scope:[] from @44 - to:@46 +@48: scope:[] from @47 + to:@49 gen_chargen_sprite: scope:[gen_chargen_sprite] from (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 @@ -2360,8 +2567,8 @@ gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 return to:@return -@46: scope:[] from @45 - to:@47 +@49: scope:[] from @48 + to:@50 gen_sintab: scope:[gen_sintab] from (byte[]) gen_sintab::f_i ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) gen_sintab::f_min ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } @@ -2407,10 +2614,10 @@ gen_sintab::@2: scope:[gen_sintab] from gen_sintab::@1 gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@2 return to:@return -@47: scope:[] from @46 +@50: scope:[] from @49 call main to:@end -@end: scope:[] from @47 +@end: scope:[] from @50 Removing unused procedure setFACtoARG Removing unused procedure setFACtoMEM @@ -2429,12 +2636,15 @@ Removing unused procedure expFAC Removing unused procedure logFAC Removing unused procedure divFACby10 Removing unused procedure mulFACby10 -Removing unused procedure print_str -Removing unused procedure print_ln +Removing unused procedure print_str_at +Removing unused procedure print_str_ln Removing unused procedure print_sword Removing unused procedure print_sbyte Removing unused procedure print_sdword Removing unused procedure print_cls +Removing unused procedure print_set_screen +Removing unused procedure print_str +Removing unused procedure print_ln Removing unused procedure print_dword Removing unused procedure print_word Removing unused procedure print_byte @@ -2442,34 +2652,53 @@ Removing unused procedure print_char Eliminating unused variable (byte*) SPRITES_PRIORITY and assignment [8] (byte*) SPRITES_PRIORITY ← ((byte*)) (word/dword/signed dword) 53275 Eliminating unused variable (byte*) SPRITES_MC and assignment [9] (byte*) SPRITES_MC ← ((byte*)) (word/dword/signed dword) 53276 Eliminating unused variable (byte*) BGCOL and assignment [12] (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281 -Eliminating unused variable (byte*) SPRITES_MC1 and assignment [13] (byte*) SPRITES_MC1 ← ((byte*)) (word/dword/signed dword) 53285 -Eliminating unused variable (byte*) SPRITES_MC2 and assignment [14] (byte*) SPRITES_MC2 ← ((byte*)) (word/dword/signed dword) 53286 -Eliminating unused variable (byte*) CIA1_PORT_A and assignment [17] (byte*) CIA1_PORT_A ← ((byte*)) (word/dword/signed dword) 56320 -Eliminating unused variable (byte*) CIA1_PORT_B and assignment [18] (byte*) CIA1_PORT_B ← ((byte*)) (word/dword/signed dword) 56321 -Eliminating unused variable (byte*) CIA1_PORT_A_DDR and assignment [19] (byte*) CIA1_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56322 -Eliminating unused variable (byte*) CIA1_PORT_B_DDR and assignment [20] (byte*) CIA1_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56323 -Eliminating unused variable (byte) BLACK and assignment [21] (byte) BLACK ← (byte/signed byte/word/signed word/dword/signed dword) 0 -Eliminating unused variable (byte) WHITE and assignment [22] (byte) WHITE ← (byte/signed byte/word/signed word/dword/signed dword) 1 -Eliminating unused variable (byte) RED and assignment [23] (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2 -Eliminating unused variable (byte) CYAN and assignment [24] (byte) CYAN ← (byte/signed byte/word/signed word/dword/signed dword) 3 -Eliminating unused variable (byte) PURPLE and assignment [25] (byte) PURPLE ← (byte/signed byte/word/signed word/dword/signed dword) 4 -Eliminating unused variable (byte) GREEN and assignment [26] (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5 -Eliminating unused variable (byte) BLUE and assignment [27] (byte) BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 6 -Eliminating unused variable (byte) YELLOW and assignment [28] (byte) YELLOW ← (byte/signed byte/word/signed word/dword/signed dword) 7 -Eliminating unused variable (byte) ORANGE and assignment [29] (byte) ORANGE ← (byte/signed byte/word/signed word/dword/signed dword) 8 -Eliminating unused variable (byte) BROWN and assignment [30] (byte) BROWN ← (byte/signed byte/word/signed word/dword/signed dword) 9 -Eliminating unused variable (byte) PINK and assignment [31] (byte) PINK ← (byte/signed byte/word/signed word/dword/signed dword) 10 -Eliminating unused variable (byte) DARK_GREY and assignment [32] (byte) DARK_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 11 -Eliminating unused variable (byte) GREY and assignment [33] (byte) GREY ← (byte/signed byte/word/signed word/dword/signed dword) 12 -Eliminating unused variable (byte) LIGHT_GREEN and assignment [34] (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 -Eliminating unused variable (byte) LIGHT_BLUE and assignment [35] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 -Eliminating unused variable (byte) LIGHT_GREY and assignment [36] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 +Eliminating unused variable (byte*) BGCOL1 and assignment [13] (byte*) BGCOL1 ← ((byte*)) (word/dword/signed dword) 53281 +Eliminating unused variable (byte*) BGCOL2 and assignment [14] (byte*) BGCOL2 ← ((byte*)) (word/dword/signed dword) 53282 +Eliminating unused variable (byte*) SPRITES_MC1 and assignment [15] (byte*) SPRITES_MC1 ← ((byte*)) (word/dword/signed dword) 53285 +Eliminating unused variable (byte*) SPRITES_MC2 and assignment [16] (byte*) SPRITES_MC2 ← ((byte*)) (word/dword/signed dword) 53286 +Eliminating unused variable (byte*) VIC_CONTROL and assignment [18] (byte*) VIC_CONTROL ← ((byte*)) (word/dword/signed dword) 53265 +Eliminating unused variable (byte*) D011 and assignment [19] (byte*) D011 ← ((byte*)) (word/dword/signed dword) 53265 +Eliminating unused variable (byte) VIC_RST8 and assignment [20] (byte) VIC_RST8 ← (byte/word/signed word/dword/signed dword) 128 +Eliminating unused variable (byte) VIC_ECM and assignment [21] (byte) VIC_ECM ← (byte/signed byte/word/signed word/dword/signed dword) 64 +Eliminating unused variable (byte) VIC_BMM and assignment [22] (byte) VIC_BMM ← (byte/signed byte/word/signed word/dword/signed dword) 32 +Eliminating unused variable (byte) VIC_DEN and assignment [23] (byte) VIC_DEN ← (byte/signed byte/word/signed word/dword/signed dword) 16 +Eliminating unused variable (byte) VIC_RSEL and assignment [24] (byte) VIC_RSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8 +Eliminating unused variable (byte*) VIC_CONTROL2 and assignment [25] (byte*) VIC_CONTROL2 ← ((byte*)) (word/dword/signed dword) 53270 +Eliminating unused variable (byte*) D016 and assignment [26] (byte*) D016 ← ((byte*)) (word/dword/signed dword) 53270 +Eliminating unused variable (byte) VIC_MCM and assignment [27] (byte) VIC_MCM ← (byte/signed byte/word/signed word/dword/signed dword) 16 +Eliminating unused variable (byte) VIC_CSEL and assignment [28] (byte) VIC_CSEL ← (byte/signed byte/word/signed word/dword/signed dword) 8 +Eliminating unused variable (byte*) D018 and assignment [29] (byte*) D018 ← ((byte*)) (word/dword/signed dword) 53272 +Eliminating unused variable (byte*) VIC_MEMORY and assignment [30] (byte*) VIC_MEMORY ← ((byte*)) (word/dword/signed dword) 53272 +Eliminating unused variable (byte*) CIA1_PORT_A and assignment [32] (byte*) CIA1_PORT_A ← ((byte*)) (word/dword/signed dword) 56320 +Eliminating unused variable (byte*) CIA1_PORT_B and assignment [33] (byte*) CIA1_PORT_B ← ((byte*)) (word/dword/signed dword) 56321 +Eliminating unused variable (byte*) CIA1_PORT_A_DDR and assignment [34] (byte*) CIA1_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56322 +Eliminating unused variable (byte*) CIA1_PORT_B_DDR and assignment [35] (byte*) CIA1_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56323 +Eliminating unused variable (byte*) CIA2_PORT_A and assignment [36] (byte*) CIA2_PORT_A ← ((byte*)) (word/dword/signed dword) 56576 +Eliminating unused variable (byte*) CIA2_PORT_B and assignment [37] (byte*) CIA2_PORT_B ← ((byte*)) (word/dword/signed dword) 56577 +Eliminating unused variable (byte*) CIA2_PORT_A_DDR and assignment [38] (byte*) CIA2_PORT_A_DDR ← ((byte*)) (word/dword/signed dword) 56578 +Eliminating unused variable (byte*) CIA2_PORT_B_DDR and assignment [39] (byte*) CIA2_PORT_B_DDR ← ((byte*)) (word/dword/signed dword) 56579 +Eliminating unused variable (byte) BLACK and assignment [40] (byte) BLACK ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (byte) WHITE and assignment [41] (byte) WHITE ← (byte/signed byte/word/signed word/dword/signed dword) 1 +Eliminating unused variable (byte) RED and assignment [42] (byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2 +Eliminating unused variable (byte) CYAN and assignment [43] (byte) CYAN ← (byte/signed byte/word/signed word/dword/signed dword) 3 +Eliminating unused variable (byte) PURPLE and assignment [44] (byte) PURPLE ← (byte/signed byte/word/signed word/dword/signed dword) 4 +Eliminating unused variable (byte) GREEN and assignment [45] (byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5 +Eliminating unused variable (byte) BLUE and assignment [46] (byte) BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 6 +Eliminating unused variable (byte) YELLOW and assignment [47] (byte) YELLOW ← (byte/signed byte/word/signed word/dword/signed dword) 7 +Eliminating unused variable (byte) ORANGE and assignment [48] (byte) ORANGE ← (byte/signed byte/word/signed word/dword/signed dword) 8 +Eliminating unused variable (byte) BROWN and assignment [49] (byte) BROWN ← (byte/signed byte/word/signed word/dword/signed dword) 9 +Eliminating unused variable (byte) PINK and assignment [50] (byte) PINK ← (byte/signed byte/word/signed word/dword/signed dword) 10 +Eliminating unused variable (byte) DARK_GREY and assignment [51] (byte) DARK_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 11 +Eliminating unused variable (byte) GREY and assignment [52] (byte) GREY ← (byte/signed byte/word/signed word/dword/signed dword) 12 +Eliminating unused variable (byte) LIGHT_GREEN and assignment [53] (byte) LIGHT_GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 13 +Eliminating unused variable (byte) LIGHT_BLUE and assignment [54] (byte) LIGHT_BLUE ← (byte/signed byte/word/signed word/dword/signed dword) 14 +Eliminating unused variable (byte) LIGHT_GREY and assignment [55] (byte) LIGHT_GREY ← (byte/signed byte/word/signed word/dword/signed dword) 15 Eliminating unused variable - keeping the call (void~) setFAC::$1 Eliminating unused variable - keeping the call (void~) setMEMtoFAC::$0 Eliminating unused variable - keeping the call (void~) addMEMtoFAC::$0 Eliminating unused variable - keeping the call (void~) divMEMbyFAC::$0 Eliminating unused variable - keeping the call (void~) mulFACbyMEM::$0 -Eliminating unused variable (byte*) char_cursor and assignment [73] (byte*) char_cursor ← (byte*) line_cursor +Eliminating unused variable (byte*) print_char_cursor and assignment [92] (byte*) print_char_cursor ← (byte*) print_line_cursor Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) init::$0 @@ -2501,7 +2730,8 @@ Eliminating unused variable - keeping the call (void~) gen_sintab::$20 Eliminating unused variable - keeping the call (void~) gen_sintab::$21 Eliminating unused variable - keeping the call (void~) gen_sintab::$22 Eliminating unused variable - keeping the call (void~) gen_sintab::$25 -Eliminating unused variable (byte*) line_cursor and assignment [47] (byte*) line_cursor ← (byte*) SCREEN +Eliminating unused variable (byte*) print_line_cursor and assignment [47] (byte*) print_line_cursor ← (byte*) print_screen +Eliminating unused variable (byte*) print_screen and assignment [46] (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 Creating constant string variable for inline (const string) gen_sprites::$3 "camelot" Removing empty block @1 Removing empty block @2 @@ -2530,6 +2760,7 @@ Removing empty block @23 Removing empty block @24 Removing empty block @25 Removing empty block @26 +Removing empty block @27 Removing empty block @28 Removing empty block @29 Removing empty block @30 @@ -2539,17 +2770,20 @@ Removing empty block @33 Removing empty block @34 Removing empty block @35 Removing empty block @36 -Removing empty block main::@4 +Removing empty block @37 Removing empty block @38 Removing empty block @39 -Removing empty block clear_screen::@2 +Removing empty block main::@4 Removing empty block @41 -Removing empty block @43 -Removing empty block place_sprites::@2 +Removing empty block @42 +Removing empty block clear_screen::@2 Removing empty block @44 -Removing empty block gen_sprites::@2 -Removing empty block @45 Removing empty block @46 +Removing empty block place_sprites::@2 +Removing empty block @47 +Removing empty block gen_sprites::@2 +Removing empty block @48 +Removing empty block @49 Removing empty block gen_sintab::@2 PROCEDURE MODIFY VARIABLE ANALYSIS main modifies progress_cursor @@ -2607,7 +2841,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) memLo#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 (byte*) memHi#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - to:@27 + to:@40 prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 @@ -2702,21 +2936,19 @@ sinFAC: scope:[sinFAC] from gen_sintab::@18 sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@27: scope:[] from @begin - (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@37 -@37: scope:[] from @27 +@40: scope:[] from @begin (byte) sinlen_x#0 ← (byte/word/signed word/dword/signed dword) 221 (byte[221]) sintab_x#0 ← { fill( 221, 0) } (byte) sinlen_y#0 ← (byte/word/signed word/dword/signed dword) 197 (byte[197]) sintab_y#0 ← { fill( 197, 0) } (byte*) sprites#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 - to:@40 -main: scope:[main] from @47 - (byte) sin_idx_y#24 ← phi( @47/(byte) sin_idx_y#17 ) - (byte) sin_idx_x#26 ← phi( @47/(byte) sin_idx_x#16 ) - (byte) progress_idx#30 ← phi( @47/(byte) progress_idx#35 ) - (byte*) progress_cursor#29 ← phi( @47/(byte*) progress_cursor#35 ) + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + to:@43 +main: scope:[main] from @50 + (byte) sin_idx_y#24 ← phi( @50/(byte) sin_idx_y#17 ) + (byte) sin_idx_x#26 ← phi( @50/(byte) sin_idx_x#16 ) + (byte) progress_idx#30 ← phi( @50/(byte) progress_idx#35 ) + (byte*) progress_cursor#29 ← phi( @50/(byte*) progress_cursor#35 ) call init param-assignment to:main::@5 main::@5: scope:[main] from main @@ -2868,10 +3100,10 @@ clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@1 return to:@return -@40: scope:[] from @37 +@43: scope:[] from @40 (byte*) progress_cursor#7 ← (byte*) SCREEN#0 (byte) progress_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@42 + to:@45 progress_init: scope:[progress_init] from init::@5 init::@7 (byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 ) (byte*) progress_cursor#8 ← (byte*) progress_init::line#2 @@ -2911,12 +3143,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1 (byte*) progress_cursor#11 ← (byte*) progress_cursor#25 return to:@return -@42: scope:[] from @40 - (byte) progress_idx#39 ← phi( @40/(byte) progress_idx#7 ) - (byte*) progress_cursor#39 ← phi( @40/(byte*) progress_cursor#7 ) +@45: scope:[] from @43 + (byte) progress_idx#39 ← phi( @43/(byte) progress_idx#7 ) + (byte*) progress_cursor#39 ← phi( @43/(byte*) progress_cursor#7 ) (byte) sin_idx_x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin_idx_y#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@47 + to:@50 anim: scope:[anim] from main::@3 (byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 ) (byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 ) @@ -3476,32 +3708,31 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 (byte*) progress_cursor#13 ← (byte*) progress_cursor#27 return to:@return -@47: scope:[] from @42 - (byte) sin_idx_y#17 ← phi( @42/(byte) sin_idx_y#2 ) - (byte) sin_idx_x#16 ← phi( @42/(byte) sin_idx_x#2 ) - (byte) progress_idx#35 ← phi( @42/(byte) progress_idx#39 ) - (byte*) progress_cursor#35 ← phi( @42/(byte*) progress_cursor#39 ) +@50: scope:[] from @45 + (byte) sin_idx_y#17 ← phi( @45/(byte) sin_idx_y#2 ) + (byte) sin_idx_x#16 ← phi( @45/(byte) sin_idx_x#2 ) + (byte) progress_idx#35 ← phi( @45/(byte) progress_idx#39 ) + (byte*) progress_cursor#35 ← phi( @45/(byte*) progress_cursor#39 ) call main param-assignment - to:@48 -@48: scope:[] from @47 - (byte) sin_idx_y#12 ← phi( @47/(byte) sin_idx_y#1 ) - (byte) sin_idx_x#12 ← phi( @47/(byte) sin_idx_x#1 ) - (byte) progress_idx#29 ← phi( @47/(byte) progress_idx#1 ) - (byte*) progress_cursor#28 ← phi( @47/(byte*) progress_cursor#1 ) + to:@51 +@51: scope:[] from @50 + (byte) sin_idx_y#12 ← phi( @50/(byte) sin_idx_y#1 ) + (byte) sin_idx_x#12 ← phi( @50/(byte) sin_idx_x#1 ) + (byte) progress_idx#29 ← phi( @50/(byte) progress_idx#1 ) + (byte*) progress_cursor#28 ← phi( @50/(byte*) progress_cursor#1 ) (byte*) progress_cursor#14 ← (byte*) progress_cursor#28 (byte) progress_idx#15 ← (byte) progress_idx#29 (byte) sin_idx_x#6 ← (byte) sin_idx_x#12 (byte) sin_idx_y#6 ← (byte) sin_idx_y#12 to:@end -@end: scope:[] from @48 +@end: scope:[] from @51 SYMBOL TABLE SSA -(label) @27 -(label) @37 (label) @40 -(label) @42 -(label) @47 -(label) @48 +(label) @43 +(label) @45 +(label) @50 +(label) @51 (label) @begin (label) @end (byte*) BORDERCOL @@ -4711,12 +4942,12 @@ Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) memLo#0 = ((byte*))254 Constant (const byte*) memHi#0 = ((byte*))255 -Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) sinlen_x#0 = 221 Constant (const byte[221]) sintab_x#0 = { fill( 221, 0) } Constant (const byte) sinlen_y#0 = 197 Constant (const byte[197]) sintab_y#0 = { fill( 197, 0) } Constant (const byte*) sprites#0 = ((byte*))8192 +Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) init::i#0 = 0 Constant (const byte) gen_sintab::min#0 = 0 Constant (const byte) gen_sintab::max#0 = 255 @@ -4801,19 +5032,18 @@ Eliminating unused constant (const byte) progress_idx#35 Succesful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 Succesful SSA optimization Pass2NopCastElimination -Culled Empty Block (label) @27 -Culled Empty Block (label) @37 +Culled Empty Block (label) @40 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) init::@3 Culled Empty Block (label) init::@10 -Culled Empty Block (label) @40 -Culled Empty Block (label) @42 +Culled Empty Block (label) @43 +Culled Empty Block (label) @45 Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 Not culling empty block because it shares successor with its predecessor. (label) gen_chargen_sprite::@6 Culled Empty Block (label) gen_sintab::@13 -Culled Empty Block (label) @48 +Culled Empty Block (label) @51 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) anim::@9 Not culling empty block because it shares successor with its predecessor. (label) anim::@10 @@ -5073,7 +5303,7 @@ Constant inlined progress_idx#11 = (byte/signed byte/word/signed word/dword/sign Constant inlined gen_sprites::$3 = (const string) gen_sprites::cml#0 Constant inlined anim::j2#0 = (byte/signed byte/word/signed word/dword/signed dword) 12 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @50 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Added new block during phi lifting main::@7(between main::@6 and main::@2) Added new block during phi lifting anim::@11(between anim::@3 and anim::@1) Added new block during phi lifting anim::@12(between anim::@1 and anim::@2) @@ -5090,9 +5320,9 @@ Added new block during phi lifting gen_chargen_sprite::@12(between gen_chargen_s Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_sprite::@5 and gen_chargen_sprite::@4) Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5) Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1) -Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 +Block Sequence Planned @begin @50 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @47 +Adding NOP phi() at start of @50 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -5271,9 +5501,9 @@ Culled Empty Block (label) gen_chargen_sprite::@12 Culled Empty Block (label) gen_chargen_sprite::@13 Culled Empty Block (label) gen_chargen_sprite::@14 Culled Empty Block (label) place_sprites::@3 -Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return +Block Sequence Planned @begin @50 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @47 +Adding NOP phi() at start of @50 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -5357,14 +5587,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@47 -@47: scope:[] from @begin + to:@50 +@50: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @47 +@end: scope:[] from @50 [3] phi() [ ] ( ) -main: scope:[main] from @47 +main: scope:[main] from @50 [4] phi() [ ] ( main:2 [ ] ) [5] call init param-assignment [ ] ( main:2 [ ] ) to:main::@2 @@ -5826,111 +6056,111 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1 DOMINATORS @begin dominated by @begin -@47 dominated by @begin @47 -@end dominated by @end @begin @47 -main dominated by main @begin @47 -main::@2 dominated by main::@2 main @begin @47 -main::@3 dominated by main::@2 main::@3 main @begin @47 -main::@6 dominated by main::@2 main::@6 main::@3 main @begin @47 -main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @47 -anim dominated by main::@2 main::@3 anim main @begin @47 -anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @47 -anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @47 -anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @47 -anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @47 -anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @47 -anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 -anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 -anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 -anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @47 -anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 anim::@15 -anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 anim::@14 -init dominated by init main @begin @47 -init::@1 dominated by init main @begin init::@1 @47 -init::@2 dominated by init main @begin init::@2 init::@1 @47 -init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @47 -init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @47 -init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 -init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @47 -init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @47 -init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @47 -init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @47 -clear_screen dominated by init clear_screen main @begin @47 -clear_screen::@1 dominated by init clear_screen main @begin @47 clear_screen::@1 -clear_screen::@return dominated by init clear_screen main @begin @47 clear_screen::@1 clear_screen::@return -gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 -gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 getFAC::@return -addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 -prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 prepareMEM::@return -mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 -sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 -divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3 -divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3 -setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 -setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setFAC::@1 -setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setFAC::@1 -setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setMEMtoFAC::@return gen_sintab::@3 -subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 subFACfromARG::@return gen_sintab::@3 -setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 -progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @47 -progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @47 progress_init::@return -gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @47 -gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @47 -gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @47 -gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47 -place_sprites dominated by init main @begin init::@2 init::@1 @47 place_sprites -place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @47 place_sprites -place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @47 place_sprites +@50 dominated by @begin @50 +@end dominated by @end @begin @50 +main dominated by main @begin @50 +main::@2 dominated by main::@2 main @begin @50 +main::@3 dominated by main::@2 main::@3 main @begin @50 +main::@6 dominated by main::@2 main::@6 main::@3 main @begin @50 +main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @50 +anim dominated by main::@2 main::@3 anim main @begin @50 +anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @50 +anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @50 +anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @50 +anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @50 +anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @50 +anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @50 +anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @50 +anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @50 +anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @50 +anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@15 @50 +anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin anim::@14 @50 +init dominated by init main @begin @50 +init::@1 dominated by init main @begin init::@1 @50 +init::@2 dominated by init main @begin init::@2 init::@1 @50 +init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @50 +init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @50 +init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 +init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @50 +init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @50 +init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @50 +init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @50 +clear_screen dominated by init clear_screen main @begin @50 +clear_screen::@1 dominated by init clear_screen main @begin @50 clear_screen::@1 +clear_screen::@return dominated by init clear_screen main @begin @50 clear_screen::@1 clear_screen::@return +gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 +gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 getFAC::@return +addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 +prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 prepareMEM::@return +mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1 +sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 gen_sintab::@1 +divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 divMEMbyFAC gen_sintab::@3 +divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 divMEMbyFAC gen_sintab::@3 +setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 +setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @50 +setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 setFAC::@1 @50 +setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 setMEMtoFAC::@return gen_sintab::@3 +subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 subFACfromARG::@return gen_sintab::@3 +setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @50 gen_sintab::@3 +progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @50 +progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 progress_init::@return @50 +gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @50 +gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @50 +gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @50 +gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @50 +place_sprites dominated by init main @begin init::@2 init::@1 @50 place_sprites +place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @50 place_sprites +place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @50 place_sprites NATURAL LOOPS Found back edge: Loop head: main::@2 tails: main::@2 blocks: null @@ -6400,27 +6630,27 @@ INITIAL ASM .label COLS = $d800 .label memLo = $fe .label memHi = $ff - .label SCREEN = $400 .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 + .label SCREEN = $400 .label progress_idx = $12 .label progress_cursor = $13 .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] -b47_from_bbegin: - jmp b47 -//SEG4 @47 -b47: +//SEG3 [1] phi from @begin to @50 [phi:@begin->@50] +b50_from_bbegin: + jmp b50 +//SEG4 @50 +b50: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @47 to main [phi:@47->main] -main_from_b47: +//SEG6 [4] phi from @50 to main [phi:@50->main] +main_from_b50: jsr main -//SEG7 [3] phi from @47 to @end [phi:@47->@end] -bend_from_b47: +//SEG7 [3] phi from @50 to @end [phi:@50->@end] +bend_from_b50: jmp bend //SEG8 @end bend: @@ -8153,27 +8383,27 @@ ASSEMBLER BEFORE OPTIMIZATION .label COLS = $d800 .label memLo = $fe .label memHi = $ff - .label SCREEN = $400 .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 + .label SCREEN = $400 .label progress_idx = 4 .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] -b47_from_bbegin: - jmp b47 -//SEG4 @47 -b47: +//SEG3 [1] phi from @begin to @50 [phi:@begin->@50] +b50_from_bbegin: + jmp b50 +//SEG4 @50 +b50: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @47 to main [phi:@47->main] -main_from_b47: +//SEG6 [4] phi from @50 to main [phi:@50->main] +main_from_b50: jsr main -//SEG7 [3] phi from @47 to @end [phi:@47->@end] -bend_from_b47: +//SEG7 [3] phi from @50 to @end [phi:@50->@end] +bend_from_b50: jmp bend //SEG8 @end bend: @@ -9470,7 +9700,7 @@ place_sprites: { sintab_y: .fill $c5, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b47 +Removing instruction jmp b50 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -9590,9 +9820,9 @@ Replacing label b2_from_b8 with b2 Replacing label b1_from_b9 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b47_from_bbegin: -Removing instruction main_from_b47: -Removing instruction bend_from_b47: +Removing instruction b50_from_bbegin: +Removing instruction main_from_b50: +Removing instruction bend_from_b50: Removing instruction b2_from_b6: Removing instruction b3_from_b2: Removing instruction b1_from_b3: @@ -9659,7 +9889,7 @@ Removing instruction b4_from_b5: Removing instruction b5_from_b4: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b47: +Removing instruction b50: Removing instruction bend: Removing instruction init_from_main: Removing instruction b2_from_main: @@ -9788,7 +10018,7 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @47 +(label) @50 (label) @begin (label) @end (byte*) BORDERCOL @@ -10152,21 +10382,21 @@ Score: 767890 .label COLS = $d800 .label memLo = $fe .label memHi = $ff - .label SCREEN = $400 .const sinlen_x = $dd .const sinlen_y = $c5 .label sprites = $2000 + .label SCREEN = $400 .label progress_idx = 4 .label progress_cursor = $a .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin -//SEG3 [1] phi from @begin to @47 [phi:@begin->@47] -//SEG4 @47 +//SEG3 [1] phi from @begin to @50 [phi:@begin->@50] +//SEG4 @50 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @47 to main [phi:@47->main] +//SEG6 [4] phi from @50 to main [phi:@50->main] jsr main -//SEG7 [3] phi from @47 to @end [phi:@47->@end] +//SEG7 [3] phi from @50 to @end [phi:@50->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index ccb025624..1fe49b647 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -1,4 +1,4 @@ -(label) @47 +(label) @50 (label) @begin (label) @end (byte*) BORDERCOL