mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-08-08 13:25:12 +00:00
Added an ASM optimization
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
cmp ({z1}),y
|
||||||
|
beq {la1}
|
@@ -37,6 +37,11 @@ public class TestPrograms {
|
|||||||
public TestPrograms() {
|
public TestPrograms() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGridBobs() throws IOException, URISyntaxException {
|
||||||
|
compileAndCompare("complex/prebob/grid-bobs");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testVogelBobs() throws IOException, URISyntaxException {
|
public void testVogelBobs() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("complex/prebob/vogel-bobs");
|
compileAndCompare("complex/prebob/vogel-bobs");
|
||||||
|
265
src/test/kc/complex/prebob/grid-bobs.kc
Normal file
265
src/test/kc/complex/prebob/grid-bobs.kc
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
// Pre-calculated bobs inside a charset (pre-moved to all x/y-combinations)
|
||||||
|
import "c64"
|
||||||
|
import "string"
|
||||||
|
import "keyboard"
|
||||||
|
import "time"
|
||||||
|
import "print"
|
||||||
|
import "fastmultiply"
|
||||||
|
|
||||||
|
// The prototype BOB (a 3x3 char image with a bob image in the upper 2x2 chars)
|
||||||
|
// The chars are layout as follows with data in chars 0, 1, 3, 4 initially
|
||||||
|
// 0 3 6
|
||||||
|
// 1 4 7
|
||||||
|
// 2 5 8
|
||||||
|
const char[3*3*8] PROTO_BOB = kickasm(resource "smiley.png") {{
|
||||||
|
.var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
|
||||||
|
.for (var x=0;x<3; x++)
|
||||||
|
.for (var y=0; y<24; y++)
|
||||||
|
.byte pic.getSinglecolorByte(x,y)
|
||||||
|
}};
|
||||||
|
|
||||||
|
// Sine and Cosine tables
|
||||||
|
// Angles: $00=0, $80=PI,$100=2*PI
|
||||||
|
// Sine/Cosine: signed fixed [-$7f,$7f]
|
||||||
|
signed char[0x140] align(0x40) SIN = kickasm {{
|
||||||
|
.for(var i=0;i<$140;i++)
|
||||||
|
.byte >round($7fff*sin(i*2*PI/256))
|
||||||
|
}};
|
||||||
|
|
||||||
|
signed char* COS = SIN+$40; // sin(x) = cos(x+PI/2)
|
||||||
|
|
||||||
|
// The BASIC screen
|
||||||
|
const char* SCREEN_BASIC = 0x0400;
|
||||||
|
// The BASIC charset
|
||||||
|
const char* CHARSET_BASIC = 0x1000;
|
||||||
|
// The BOB screen
|
||||||
|
const char* BOB_SCREEN = 0x2800;
|
||||||
|
// The BOB charset
|
||||||
|
const char* BOB_CHARSET = 0x2000;
|
||||||
|
|
||||||
|
// Tables containing the char to use for a specific cell of a shifted BOB.
|
||||||
|
// char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x];
|
||||||
|
char[9*8*4] BOB_TABLES;
|
||||||
|
// The number of different X-shifts
|
||||||
|
const char BOB_SHIFTS_X = 4;
|
||||||
|
// The number of different Y-shifts
|
||||||
|
const char BOB_SHIFTS_Y = 8;
|
||||||
|
// The size of a sub-table of BOB_TABLES
|
||||||
|
const char BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y;
|
||||||
|
|
||||||
|
// The number of BOBs to render
|
||||||
|
const char NUM_BOBS = 20;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
mulf_init();
|
||||||
|
prepareBobs();
|
||||||
|
renderBobInit();
|
||||||
|
vicSelectGfxBank(BOB_SCREEN);
|
||||||
|
*D018 = toD018(BOB_SCREEN, BOB_CHARSET);
|
||||||
|
// Clear screen
|
||||||
|
memset(BOB_SCREEN, 0x00, 1000);
|
||||||
|
// Render Rotated BOBs
|
||||||
|
char angle = 0;
|
||||||
|
while(true) {
|
||||||
|
do { } while (*RASTER<$f8);
|
||||||
|
*BORDERCOL = 0xf;
|
||||||
|
renderBobCleanup();
|
||||||
|
signed char r = 30;
|
||||||
|
char a = angle;
|
||||||
|
for(char i: 0..NUM_BOBS-1) {
|
||||||
|
//kickasm {{ .break }}
|
||||||
|
*BORDERCOL = 1;
|
||||||
|
int x = mulf8s(r, COS[a]) + 75*0x100;
|
||||||
|
int y = mulf8s(r, SIN[a])*2 + 90*0x100;
|
||||||
|
*BORDERCOL = 2;
|
||||||
|
a += 98;
|
||||||
|
r += 3;
|
||||||
|
renderBob(>x, >y);
|
||||||
|
}
|
||||||
|
angle += 3;
|
||||||
|
*BORDERCOL = 0;
|
||||||
|
if(keyboard_key_pressed(KEY_SPACE)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Wait for space release
|
||||||
|
while(keyboard_key_pressed(KEY_SPACE)) {}
|
||||||
|
// Return to BASIC
|
||||||
|
vicSelectGfxBank(SCREEN_BASIC);
|
||||||
|
*D018 = toD018(SCREEN_BASIC, CHARSET_BASIC);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table used for deleting rendered BOB's. Contains pointers to first char of each BOB.
|
||||||
|
char*[NUM_BOBS] RENDERBOB_CLEANUP;
|
||||||
|
|
||||||
|
// Pointer to the next clean-up to add
|
||||||
|
char** renderBobCleanupNext;
|
||||||
|
|
||||||
|
// *40 Table unsigned int[0x20] MUL40 = { ((unsigned int)i)*40 };
|
||||||
|
unsigned int[0x20] MUL40;
|
||||||
|
|
||||||
|
// Initialize the tables used by renderBob()
|
||||||
|
void renderBobInit() {
|
||||||
|
for(char y: 0..0x1f)
|
||||||
|
MUL40[y] = ((unsigned int)y)*40;
|
||||||
|
for(char i: 0..NUM_BOBS-1)
|
||||||
|
RENDERBOB_CLEANUP[i] = BOB_SCREEN;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render a single BOB at a given x/y-position
|
||||||
|
// X-position is 0-151. Each x-position is 2 pixels wide.
|
||||||
|
// Y-position is 0-183. Each y-position is 1 pixel high.
|
||||||
|
void renderBob(char xpos, char ypos) {
|
||||||
|
char x_char_offset = xpos/BOB_SHIFTS_X;
|
||||||
|
char y_char_offset = ypos/BOB_SHIFTS_Y;
|
||||||
|
unsigned int y_offset = MUL40[y_char_offset];
|
||||||
|
char* screen = BOB_SCREEN+y_offset+x_char_offset;
|
||||||
|
char bob_table_idx = (ypos&7)*BOB_SHIFTS_X+(xpos&3);
|
||||||
|
*renderBobCleanupNext++ = screen;
|
||||||
|
screen[0] = (BOB_TABLES+0*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[40] = (BOB_TABLES+1*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[80] = (BOB_TABLES+2*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[1] = (BOB_TABLES+3*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[41] = (BOB_TABLES+4*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[81] = (BOB_TABLES+5*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[2] = (BOB_TABLES+6*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[42] = (BOB_TABLES+7*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
screen[82] = (BOB_TABLES+8*BOB_SUBTABLE_SIZE)[bob_table_idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean Up the rendered BOB's
|
||||||
|
void renderBobCleanup() {
|
||||||
|
for(char i: 0..NUM_BOBS-1) {
|
||||||
|
char* screen = RENDERBOB_CLEANUP[i];
|
||||||
|
screen[0] = 0;
|
||||||
|
screen[40] = 0;
|
||||||
|
screen[80] = 0;
|
||||||
|
screen[1] = 0;
|
||||||
|
screen[41] = 0;
|
||||||
|
screen[81] = 0;
|
||||||
|
screen[2] = 0;
|
||||||
|
screen[42] = 0;
|
||||||
|
screen[82] = 0;
|
||||||
|
}
|
||||||
|
// Prepare for next clean-up
|
||||||
|
renderBobCleanupNext = RENDERBOB_CLEANUP;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES
|
||||||
|
// Modifies PROTO_BOB by shifting it around
|
||||||
|
void prepareBobs() {
|
||||||
|
progress_init(SCREEN_BASIC);
|
||||||
|
bob_charset_next_id = 0;
|
||||||
|
// Ensure that glyph #0 is empty
|
||||||
|
charsetFindOrAddGlyph(PROTO_BOB+48, BOB_CHARSET);
|
||||||
|
char bob_table_idx = 0;
|
||||||
|
for(char shift_y=0;shift_y<BOB_SHIFTS_Y;shift_y++) {
|
||||||
|
for(char shift_x=0;shift_x<BOB_SHIFTS_X;shift_x++) {
|
||||||
|
// Populate charset and tables
|
||||||
|
char* bob_glyph = PROTO_BOB;
|
||||||
|
char* bob_table = BOB_TABLES + bob_table_idx;
|
||||||
|
for(char cell = 0; cell<9; cell++) {
|
||||||
|
// Look for an existing char in BOB_CHARSET
|
||||||
|
*bob_table = charsetFindOrAddGlyph(bob_glyph, BOB_CHARSET);
|
||||||
|
// Move to the next glyph
|
||||||
|
bob_glyph+=8;
|
||||||
|
// Move to the next sub-table
|
||||||
|
bob_table += BOB_SHIFTS_X*BOB_SHIFTS_Y;
|
||||||
|
progress_inc();
|
||||||
|
}
|
||||||
|
// Move to the next bob table idx
|
||||||
|
bob_table_idx++;
|
||||||
|
// Shift PROTO_BOB right twice
|
||||||
|
protoBobShiftRight();
|
||||||
|
protoBobShiftRight();
|
||||||
|
}
|
||||||
|
// Shift PROTO_BOB down and 8px left
|
||||||
|
protoBobShiftDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Shift PROTO_BOB right one X pixel
|
||||||
|
void protoBobShiftRight() {
|
||||||
|
char carry = 0;
|
||||||
|
char j = 0;
|
||||||
|
for(char i=0;i<3*3*8;i++) {
|
||||||
|
// Get the new carry (0x80 / 0x00)
|
||||||
|
char new_carry = (PROTO_BOB[j]&1)?0x80ub:0ub;
|
||||||
|
// Shift value and add old carry
|
||||||
|
PROTO_BOB[j] = carry | PROTO_BOB[j]>>1;
|
||||||
|
// Update carry
|
||||||
|
carry = new_carry;
|
||||||
|
// Increment j to iterate over the PROTO_BOB left-to-right, top-to-bottom (0, 24, 48, 1, 25, 49, ...)
|
||||||
|
if(j>=48) {
|
||||||
|
j-=47;
|
||||||
|
} else {
|
||||||
|
j+=24;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shift PROTO_BOB down one Y pixel
|
||||||
|
// At the same time restore PROTO_BOB X by shifting 8 pixels left
|
||||||
|
void protoBobShiftDown() {
|
||||||
|
for(char i=23;i>0;i--) {
|
||||||
|
PROTO_BOB[i] = (PROTO_BOB+23)[i];
|
||||||
|
(PROTO_BOB+24)[i] = (PROTO_BOB+47)[i];
|
||||||
|
(PROTO_BOB+48)[i] = 0x00;
|
||||||
|
}
|
||||||
|
PROTO_BOB[0] = 0;
|
||||||
|
PROTO_BOB[24] = 0;
|
||||||
|
PROTO_BOB[48] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOB charset ID of the next glyph to be added
|
||||||
|
char bob_charset_next_id;
|
||||||
|
|
||||||
|
// Looks through a charset to find a glyph if present. If not present it is added.
|
||||||
|
// Returns the glyph ID
|
||||||
|
char charsetFindOrAddGlyph(char* glyph, char* charset) {
|
||||||
|
char* glyph_cursor = charset;
|
||||||
|
char glyph_id = 0;
|
||||||
|
while(glyph_id!=bob_charset_next_id) {
|
||||||
|
char found = 1;
|
||||||
|
for(char i=0;i<8;i++) {
|
||||||
|
if(glyph_cursor[i]!=glyph[i]) {
|
||||||
|
found = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(found) return glyph_id;
|
||||||
|
glyph_id++;
|
||||||
|
glyph_cursor +=8;
|
||||||
|
}
|
||||||
|
// Not found - add it
|
||||||
|
for(char i=0;i<8;i++)
|
||||||
|
glyph_cursor[i]=glyph[i];
|
||||||
|
bob_charset_next_id++;
|
||||||
|
return glyph_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Current position of the progress cursor
|
||||||
|
char* progress_cursor;
|
||||||
|
// Current index within the progress cursor (0-7)
|
||||||
|
char progress_idx;
|
||||||
|
|
||||||
|
// Initialize the PETSCII progress bar
|
||||||
|
void progress_init(char* line) {
|
||||||
|
progress_cursor = line;
|
||||||
|
progress_idx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Increase PETSCII progress one bit
|
||||||
|
// Done by increasing the character until the idx is 8 and then moving to the next char
|
||||||
|
void progress_inc() {
|
||||||
|
// Progress characters
|
||||||
|
const char[] progress_chars = { 0x20, 0x65, 0x74, 0x75, 0x61, 0xf6, 0xe7, 0xea, 0xe0 };
|
||||||
|
if(++progress_idx==8) {
|
||||||
|
*progress_cursor = progress_chars[8];
|
||||||
|
progress_cursor++;
|
||||||
|
progress_idx = 0;
|
||||||
|
}
|
||||||
|
*progress_cursor = progress_chars[progress_idx];
|
||||||
|
}
|
||||||
|
|
@@ -28,14 +28,11 @@ signed char[0x140] align(0x40) SIN = kickasm {{
|
|||||||
|
|
||||||
signed char* COS = SIN+$40; // sin(x) = cos(x+PI/2)
|
signed char* COS = SIN+$40; // sin(x) = cos(x+PI/2)
|
||||||
|
|
||||||
// Constants for KickAsm Vogel Sunflower
|
|
||||||
kickasm {{
|
|
||||||
.const PHI = (1+sqrt(5))/2
|
|
||||||
|
|
||||||
}}
|
|
||||||
|
|
||||||
// Vogel Sunflower polar coordinates
|
// Vogel Sunflower polar coordinates
|
||||||
align(0x100) const char[] VOGEL_THETA = kickasm {{ .fill 100, round(mod(256*i/(PHI*PHI),256)) }};
|
align(0x100) const char[] VOGEL_THETA = kickasm {{
|
||||||
|
.const PHI = (1+sqrt(5))/2
|
||||||
|
.fill 100, round(mod(256*i/(PHI*PHI),256))
|
||||||
|
}};
|
||||||
align(0x100) const char[] VOGEL_R = kickasm {{ .fill 100, round(sqrt(i)*15) }};
|
align(0x100) const char[] VOGEL_R = kickasm {{ .fill 100, round(sqrt(i)*15) }};
|
||||||
|
|
||||||
// The BASIC screen
|
// The BASIC screen
|
||||||
|
866
src/test/ref/complex/prebob/grid-bobs.asm
Normal file
866
src/test/ref/complex/prebob/grid-bobs.asm
Normal file
@@ -0,0 +1,866 @@
|
|||||||
|
// Pre-calculated bobs inside a charset (pre-moved to all x/y-combinations)
|
||||||
|
.pc = $801 "Basic"
|
||||||
|
:BasicUpstart(main)
|
||||||
|
.pc = $80d "Program"
|
||||||
|
.label RASTER = $d012
|
||||||
|
.label BORDERCOL = $d020
|
||||||
|
.label D018 = $d018
|
||||||
|
// CIA#1 Port A: keyboard matrix columns and joystick #2
|
||||||
|
.label CIA1_PORT_A = $dc00
|
||||||
|
// CIA#1 Port B: keyboard matrix rows and joystick #1.
|
||||||
|
.label CIA1_PORT_B = $dc01
|
||||||
|
// CIA#2 Port A: Serial bus, RS-232, VIC memory bank
|
||||||
|
.label CIA2_PORT_A = $dd00
|
||||||
|
// CIA #2 Port A data direction register.
|
||||||
|
.label CIA2_PORT_A_DDR = $dd02
|
||||||
|
.const KEY_SPACE = $3c
|
||||||
|
// The BASIC screen
|
||||||
|
.label SCREEN_BASIC = $400
|
||||||
|
// The BASIC charset
|
||||||
|
.label CHARSET_BASIC = $1000
|
||||||
|
// The BOB screen
|
||||||
|
.label BOB_SCREEN = $2800
|
||||||
|
// The BOB charset
|
||||||
|
.label BOB_CHARSET = $2000
|
||||||
|
// The number of different X-shifts
|
||||||
|
.const BOB_SHIFTS_X = 4
|
||||||
|
// The number of different Y-shifts
|
||||||
|
.const BOB_SHIFTS_Y = 8
|
||||||
|
// The size of a sub-table of BOB_TABLES
|
||||||
|
.const BOB_SUBTABLE_SIZE = BOB_SHIFTS_X*BOB_SHIFTS_Y
|
||||||
|
// The number of BOBs to render
|
||||||
|
.const NUM_BOBS = $14
|
||||||
|
.const SIZEOF_POINTER = 2
|
||||||
|
.label COS = SIN+$40
|
||||||
|
// BOB charset ID of the next glyph to be added
|
||||||
|
.label bob_charset_next_id = $d
|
||||||
|
// Current index within the progress cursor (0-7)
|
||||||
|
.label progress_idx = 3
|
||||||
|
// Current position of the progress cursor
|
||||||
|
.label progress_cursor = $b
|
||||||
|
// Pointer to the next clean-up to add
|
||||||
|
// Prepare for next clean-up
|
||||||
|
.label renderBobCleanupNext = 6
|
||||||
|
main: {
|
||||||
|
.const vicSelectGfxBank1_toDd001_return = 3
|
||||||
|
.const vicSelectGfxBank2_toDd001_return = 3
|
||||||
|
.const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f
|
||||||
|
.const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f
|
||||||
|
.label __10 = $b
|
||||||
|
.label __12 = $b
|
||||||
|
.label __13 = $b
|
||||||
|
.label x = 8
|
||||||
|
.label y = $b
|
||||||
|
.label a = 4
|
||||||
|
.label r = 3
|
||||||
|
.label i = 5
|
||||||
|
// Render Rotated BOBs
|
||||||
|
.label angle = 2
|
||||||
|
jsr mulf_init
|
||||||
|
jsr prepareBobs
|
||||||
|
jsr renderBobInit
|
||||||
|
lda #3
|
||||||
|
sta CIA2_PORT_A_DDR
|
||||||
|
lda #vicSelectGfxBank1_toDd001_return
|
||||||
|
sta CIA2_PORT_A
|
||||||
|
lda #toD0181_return
|
||||||
|
sta D018
|
||||||
|
jsr memset
|
||||||
|
lda #0
|
||||||
|
sta.z angle
|
||||||
|
__b2:
|
||||||
|
lda RASTER
|
||||||
|
cmp #$f8
|
||||||
|
bcc __b2
|
||||||
|
lda #$f
|
||||||
|
sta BORDERCOL
|
||||||
|
jsr renderBobCleanup
|
||||||
|
lda.z angle
|
||||||
|
sta.z a
|
||||||
|
lda #0
|
||||||
|
sta.z i
|
||||||
|
lda #<RENDERBOB_CLEANUP
|
||||||
|
sta.z renderBobCleanupNext
|
||||||
|
lda #>RENDERBOB_CLEANUP
|
||||||
|
sta.z renderBobCleanupNext+1
|
||||||
|
lda #$1e
|
||||||
|
sta.z r
|
||||||
|
__b4:
|
||||||
|
//kickasm {{ .break }}
|
||||||
|
lda #1
|
||||||
|
sta BORDERCOL
|
||||||
|
lda.z r
|
||||||
|
ldy.z a
|
||||||
|
ldx COS,y
|
||||||
|
jsr mulf8s
|
||||||
|
lda.z __10
|
||||||
|
clc
|
||||||
|
adc #<$4b*$100
|
||||||
|
sta.z x
|
||||||
|
lda.z __10+1
|
||||||
|
adc #>$4b*$100
|
||||||
|
sta.z x+1
|
||||||
|
lda.z r
|
||||||
|
ldy.z a
|
||||||
|
ldx SIN,y
|
||||||
|
jsr mulf8s
|
||||||
|
asl.z __13
|
||||||
|
rol.z __13+1
|
||||||
|
clc
|
||||||
|
lda.z y
|
||||||
|
adc #<$5a*$100
|
||||||
|
sta.z y
|
||||||
|
lda.z y+1
|
||||||
|
adc #>$5a*$100
|
||||||
|
sta.z y+1
|
||||||
|
lda #2
|
||||||
|
sta BORDERCOL
|
||||||
|
lax.z a
|
||||||
|
axs #-[$62]
|
||||||
|
stx.z a
|
||||||
|
lax.z r
|
||||||
|
axs #-[3]
|
||||||
|
stx.z r
|
||||||
|
lda.z x+1
|
||||||
|
sta.z renderBob.xpos
|
||||||
|
lda.z y+1
|
||||||
|
tax
|
||||||
|
jsr renderBob
|
||||||
|
inc.z i
|
||||||
|
lda #NUM_BOBS-1+1
|
||||||
|
cmp.z i
|
||||||
|
bne __b4
|
||||||
|
lax.z angle
|
||||||
|
axs #-[3]
|
||||||
|
stx.z angle
|
||||||
|
lda #0
|
||||||
|
sta BORDERCOL
|
||||||
|
jsr keyboard_key_pressed
|
||||||
|
cmp #0
|
||||||
|
bne __b6
|
||||||
|
jmp __b2
|
||||||
|
// Wait for space release
|
||||||
|
__b6:
|
||||||
|
jsr keyboard_key_pressed
|
||||||
|
cmp #0
|
||||||
|
bne __b6
|
||||||
|
lda #3
|
||||||
|
sta CIA2_PORT_A_DDR
|
||||||
|
lda #vicSelectGfxBank2_toDd001_return
|
||||||
|
sta CIA2_PORT_A
|
||||||
|
lda #toD0182_return
|
||||||
|
sta D018
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Determines whether a specific key is currently pressed by accessing the matrix directly
|
||||||
|
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
|
||||||
|
// All keys exist as as KEY_XXX constants.
|
||||||
|
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
|
||||||
|
keyboard_key_pressed: {
|
||||||
|
.const colidx = KEY_SPACE&7
|
||||||
|
.label rowidx = KEY_SPACE>>3
|
||||||
|
jsr keyboard_matrix_read
|
||||||
|
and keyboard_matrix_col_bitmask+colidx
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Read a single row of the keyboard matrix
|
||||||
|
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
|
||||||
|
// Returns the keys pressed on the row as bits according to the C64 key matrix.
|
||||||
|
// Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write
|
||||||
|
// leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader.
|
||||||
|
keyboard_matrix_read: {
|
||||||
|
lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx
|
||||||
|
sta CIA1_PORT_A
|
||||||
|
lda CIA1_PORT_B
|
||||||
|
eor #$ff
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Render a single BOB at a given x/y-position
|
||||||
|
// X-position is 0-151. Each x-position is 2 pixels wide.
|
||||||
|
// Y-position is 0-183. Each y-position is 1 pixel high.
|
||||||
|
// renderBob(byte zeropage($e) xpos, byte register(X) ypos)
|
||||||
|
renderBob: {
|
||||||
|
.label __2 = $b
|
||||||
|
.label __5 = $d
|
||||||
|
.label xpos = $e
|
||||||
|
.label x_char_offset = $a
|
||||||
|
.label y_offset = $b
|
||||||
|
.label screen = $b
|
||||||
|
lda.z xpos
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
sta.z x_char_offset
|
||||||
|
txa
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda MUL40,y
|
||||||
|
sta.z y_offset
|
||||||
|
lda MUL40+1,y
|
||||||
|
sta.z y_offset+1
|
||||||
|
clc
|
||||||
|
lda.z __2
|
||||||
|
adc #<BOB_SCREEN
|
||||||
|
sta.z __2
|
||||||
|
lda.z __2+1
|
||||||
|
adc #>BOB_SCREEN
|
||||||
|
sta.z __2+1
|
||||||
|
lda.z x_char_offset
|
||||||
|
clc
|
||||||
|
adc.z screen
|
||||||
|
sta.z screen
|
||||||
|
bcc !+
|
||||||
|
inc.z screen+1
|
||||||
|
!:
|
||||||
|
txa
|
||||||
|
and #7
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta.z __5
|
||||||
|
lda #3
|
||||||
|
and.z xpos
|
||||||
|
clc
|
||||||
|
adc.z __5
|
||||||
|
tax
|
||||||
|
ldy #0
|
||||||
|
lda.z screen
|
||||||
|
sta (renderBobCleanupNext),y
|
||||||
|
iny
|
||||||
|
lda.z screen+1
|
||||||
|
sta (renderBobCleanupNext),y
|
||||||
|
lda #SIZEOF_POINTER
|
||||||
|
clc
|
||||||
|
adc.z renderBobCleanupNext
|
||||||
|
sta.z renderBobCleanupNext
|
||||||
|
bcc !+
|
||||||
|
inc.z renderBobCleanupNext+1
|
||||||
|
!:
|
||||||
|
lda BOB_TABLES,x
|
||||||
|
ldy #0
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+1*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$28
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+2*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$50
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+3*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #1
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+4*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$29
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+5*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$51
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+6*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #2
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+7*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$2a
|
||||||
|
sta (screen),y
|
||||||
|
lda BOB_TABLES+8*BOB_SUBTABLE_SIZE,x
|
||||||
|
ldy #$52
|
||||||
|
sta (screen),y
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Fast multiply two signed bytes to a word result
|
||||||
|
// mulf8s(signed byte register(A) a, signed byte register(X) b)
|
||||||
|
mulf8s: {
|
||||||
|
.label return = $b
|
||||||
|
jsr mulf8u_prepare
|
||||||
|
stx.z mulf8s_prepared.b
|
||||||
|
jsr mulf8s_prepared
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Calculate fast multiply with a prepared unsigned byte to a word result
|
||||||
|
// The prepared number is set by calling mulf8s_prepare(byte a)
|
||||||
|
// mulf8s_prepared(signed byte zeropage($e) b)
|
||||||
|
mulf8s_prepared: {
|
||||||
|
.label memA = $fd
|
||||||
|
.label m = $b
|
||||||
|
.label b = $e
|
||||||
|
lda.z b
|
||||||
|
jsr mulf8u_prepared
|
||||||
|
lda memA
|
||||||
|
cmp #0
|
||||||
|
bpl __b1
|
||||||
|
lda.z m+1
|
||||||
|
sec
|
||||||
|
sbc.z b
|
||||||
|
sta.z m+1
|
||||||
|
__b1:
|
||||||
|
lda.z b
|
||||||
|
cmp #0
|
||||||
|
bpl __b2
|
||||||
|
lda.z m+1
|
||||||
|
sec
|
||||||
|
sbc memA
|
||||||
|
sta.z m+1
|
||||||
|
__b2:
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Calculate fast multiply with a prepared unsigned byte to a word result
|
||||||
|
// The prepared number is set by calling mulf8u_prepare(byte a)
|
||||||
|
// mulf8u_prepared(byte register(A) b)
|
||||||
|
mulf8u_prepared: {
|
||||||
|
.label resL = $fe
|
||||||
|
.label memB = $ff
|
||||||
|
.label return = $b
|
||||||
|
sta memB
|
||||||
|
tax
|
||||||
|
sec
|
||||||
|
sm1:
|
||||||
|
lda mulf_sqr1_lo,x
|
||||||
|
sm2:
|
||||||
|
sbc mulf_sqr2_lo,x
|
||||||
|
sta resL
|
||||||
|
sm3:
|
||||||
|
lda mulf_sqr1_hi,x
|
||||||
|
sm4:
|
||||||
|
sbc mulf_sqr2_hi,x
|
||||||
|
sta memB
|
||||||
|
lda resL
|
||||||
|
sta.z return
|
||||||
|
lda memB
|
||||||
|
sta.z return+1
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Prepare for fast multiply with an unsigned byte to a word result
|
||||||
|
// mulf8u_prepare(byte register(A) a)
|
||||||
|
mulf8u_prepare: {
|
||||||
|
.label memA = $fd
|
||||||
|
sta memA
|
||||||
|
sta mulf8u_prepared.sm1+1
|
||||||
|
sta mulf8u_prepared.sm3+1
|
||||||
|
eor #$ff
|
||||||
|
sta mulf8u_prepared.sm2+1
|
||||||
|
sta mulf8u_prepared.sm4+1
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Clean Up the rendered BOB's
|
||||||
|
renderBobCleanup: {
|
||||||
|
.label screen = $f
|
||||||
|
ldx #0
|
||||||
|
__b1:
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda RENDERBOB_CLEANUP,y
|
||||||
|
sta.z screen
|
||||||
|
lda RENDERBOB_CLEANUP+1,y
|
||||||
|
sta.z screen+1
|
||||||
|
lda #0
|
||||||
|
tay
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$28
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$50
|
||||||
|
sta (screen),y
|
||||||
|
ldy #1
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$29
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$51
|
||||||
|
sta (screen),y
|
||||||
|
ldy #2
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$2a
|
||||||
|
sta (screen),y
|
||||||
|
ldy #$52
|
||||||
|
sta (screen),y
|
||||||
|
inx
|
||||||
|
cpx #NUM_BOBS-1+1
|
||||||
|
bne __b1
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||||
|
memset: {
|
||||||
|
.label str = BOB_SCREEN
|
||||||
|
.const c = 0
|
||||||
|
.const num = $3e8
|
||||||
|
.label end = str+num
|
||||||
|
.label dst = 6
|
||||||
|
lda #<str
|
||||||
|
sta.z dst
|
||||||
|
lda #>str
|
||||||
|
sta.z dst+1
|
||||||
|
__b1:
|
||||||
|
lda.z dst+1
|
||||||
|
cmp #>end
|
||||||
|
bne __b2
|
||||||
|
lda.z dst
|
||||||
|
cmp #<end
|
||||||
|
bne __b2
|
||||||
|
rts
|
||||||
|
__b2:
|
||||||
|
lda #c
|
||||||
|
ldy #0
|
||||||
|
sta (dst),y
|
||||||
|
inc.z dst
|
||||||
|
bne !+
|
||||||
|
inc.z dst+1
|
||||||
|
!:
|
||||||
|
jmp __b1
|
||||||
|
}
|
||||||
|
// Initialize the tables used by renderBob()
|
||||||
|
renderBobInit: {
|
||||||
|
.label __0 = $f
|
||||||
|
.label __1 = $f
|
||||||
|
.label __6 = $11
|
||||||
|
.label __7 = $f
|
||||||
|
ldx #0
|
||||||
|
__b1:
|
||||||
|
txa
|
||||||
|
sta.z __0
|
||||||
|
lda #0
|
||||||
|
sta.z __0+1
|
||||||
|
lda.z __0
|
||||||
|
asl
|
||||||
|
sta.z __6
|
||||||
|
lda.z __0+1
|
||||||
|
rol
|
||||||
|
sta.z __6+1
|
||||||
|
asl.z __6
|
||||||
|
rol.z __6+1
|
||||||
|
lda.z __7
|
||||||
|
clc
|
||||||
|
adc.z __6
|
||||||
|
sta.z __7
|
||||||
|
lda.z __7+1
|
||||||
|
adc.z __6+1
|
||||||
|
sta.z __7+1
|
||||||
|
asl.z __1
|
||||||
|
rol.z __1+1
|
||||||
|
asl.z __1
|
||||||
|
rol.z __1+1
|
||||||
|
asl.z __1
|
||||||
|
rol.z __1+1
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda.z __1
|
||||||
|
sta MUL40,y
|
||||||
|
lda.z __1+1
|
||||||
|
sta MUL40+1,y
|
||||||
|
inx
|
||||||
|
cpx #$20
|
||||||
|
bne __b1
|
||||||
|
ldx #0
|
||||||
|
__b2:
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
lda #<BOB_SCREEN
|
||||||
|
sta RENDERBOB_CLEANUP,y
|
||||||
|
lda #>BOB_SCREEN
|
||||||
|
sta RENDERBOB_CLEANUP+1,y
|
||||||
|
inx
|
||||||
|
cpx #NUM_BOBS-1+1
|
||||||
|
bne __b2
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES
|
||||||
|
// Modifies PROTO_BOB by shifting it around
|
||||||
|
prepareBobs: {
|
||||||
|
.label bob_table = $f
|
||||||
|
.label shift_y = 2
|
||||||
|
// Populate charset and tables
|
||||||
|
.label bob_glyph = 6
|
||||||
|
.label cell = $a
|
||||||
|
.label bob_table_idx = 4
|
||||||
|
.label shift_x = 5
|
||||||
|
jsr progress_init
|
||||||
|
lda #<PROTO_BOB+$30
|
||||||
|
sta.z charsetFindOrAddGlyph.glyph
|
||||||
|
lda #>PROTO_BOB+$30
|
||||||
|
sta.z charsetFindOrAddGlyph.glyph+1
|
||||||
|
lda #0
|
||||||
|
sta.z bob_charset_next_id
|
||||||
|
jsr charsetFindOrAddGlyph
|
||||||
|
lda #0
|
||||||
|
sta.z bob_table_idx
|
||||||
|
sta.z progress_idx
|
||||||
|
lda #<SCREEN_BASIC
|
||||||
|
sta.z progress_cursor
|
||||||
|
lda #>SCREEN_BASIC
|
||||||
|
sta.z progress_cursor+1
|
||||||
|
lda #0
|
||||||
|
sta.z shift_y
|
||||||
|
__b1:
|
||||||
|
lda.z shift_y
|
||||||
|
cmp #BOB_SHIFTS_Y
|
||||||
|
bcc b1
|
||||||
|
rts
|
||||||
|
b1:
|
||||||
|
lda #0
|
||||||
|
sta.z shift_x
|
||||||
|
__b2:
|
||||||
|
lda.z shift_x
|
||||||
|
cmp #BOB_SHIFTS_X
|
||||||
|
bcc __b3
|
||||||
|
jsr protoBobShiftDown
|
||||||
|
inc.z shift_y
|
||||||
|
jmp __b1
|
||||||
|
__b3:
|
||||||
|
lda.z bob_table_idx
|
||||||
|
clc
|
||||||
|
adc #<BOB_TABLES
|
||||||
|
sta.z bob_table
|
||||||
|
lda #>BOB_TABLES
|
||||||
|
adc #0
|
||||||
|
sta.z bob_table+1
|
||||||
|
lda #<PROTO_BOB
|
||||||
|
sta.z bob_glyph
|
||||||
|
lda #>PROTO_BOB
|
||||||
|
sta.z bob_glyph+1
|
||||||
|
lda #0
|
||||||
|
sta.z cell
|
||||||
|
__b5:
|
||||||
|
lda.z cell
|
||||||
|
cmp #9
|
||||||
|
bcc __b6
|
||||||
|
inc.z bob_table_idx
|
||||||
|
jsr protoBobShiftRight
|
||||||
|
jsr protoBobShiftRight
|
||||||
|
inc.z shift_x
|
||||||
|
jmp __b2
|
||||||
|
__b6:
|
||||||
|
jsr charsetFindOrAddGlyph
|
||||||
|
txa
|
||||||
|
// Look for an existing char in BOB_CHARSET
|
||||||
|
ldy #0
|
||||||
|
sta (bob_table),y
|
||||||
|
// Move to the next glyph
|
||||||
|
lda #8
|
||||||
|
clc
|
||||||
|
adc.z bob_glyph
|
||||||
|
sta.z bob_glyph
|
||||||
|
bcc !+
|
||||||
|
inc.z bob_glyph+1
|
||||||
|
!:
|
||||||
|
// Move to the next sub-table
|
||||||
|
lda #BOB_SHIFTS_X*BOB_SHIFTS_Y
|
||||||
|
clc
|
||||||
|
adc.z bob_table
|
||||||
|
sta.z bob_table
|
||||||
|
bcc !+
|
||||||
|
inc.z bob_table+1
|
||||||
|
!:
|
||||||
|
jsr progress_inc
|
||||||
|
inc.z cell
|
||||||
|
jmp __b5
|
||||||
|
}
|
||||||
|
// Increase PETSCII progress one bit
|
||||||
|
// Done by increasing the character until the idx is 8 and then moving to the next char
|
||||||
|
progress_inc: {
|
||||||
|
inc.z progress_idx
|
||||||
|
lda #8
|
||||||
|
cmp.z progress_idx
|
||||||
|
bne __b1
|
||||||
|
lda progress_chars+8
|
||||||
|
ldy #0
|
||||||
|
sta (progress_cursor),y
|
||||||
|
inc.z progress_cursor
|
||||||
|
bne !+
|
||||||
|
inc.z progress_cursor+1
|
||||||
|
!:
|
||||||
|
lda #0
|
||||||
|
sta.z progress_idx
|
||||||
|
__b1:
|
||||||
|
ldy.z progress_idx
|
||||||
|
lda progress_chars,y
|
||||||
|
ldy #0
|
||||||
|
sta (progress_cursor),y
|
||||||
|
rts
|
||||||
|
// Progress characters
|
||||||
|
progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
|
||||||
|
}
|
||||||
|
// Looks through a charset to find a glyph if present. If not present it is added.
|
||||||
|
// Returns the glyph ID
|
||||||
|
// charsetFindOrAddGlyph(byte* zeropage(6) glyph)
|
||||||
|
charsetFindOrAddGlyph: {
|
||||||
|
.label glyph = 6
|
||||||
|
.label glyph_cursor = $11
|
||||||
|
lda #<BOB_CHARSET
|
||||||
|
sta.z glyph_cursor
|
||||||
|
lda #>BOB_CHARSET
|
||||||
|
sta.z glyph_cursor+1
|
||||||
|
ldx #0
|
||||||
|
__b1:
|
||||||
|
cpx.z bob_charset_next_id
|
||||||
|
bne b1
|
||||||
|
ldy #0
|
||||||
|
// Not found - add it
|
||||||
|
__b7:
|
||||||
|
cpy #8
|
||||||
|
bcc __b8
|
||||||
|
inc.z bob_charset_next_id
|
||||||
|
rts
|
||||||
|
__b8:
|
||||||
|
lda (glyph),y
|
||||||
|
sta (glyph_cursor),y
|
||||||
|
iny
|
||||||
|
jmp __b7
|
||||||
|
b1:
|
||||||
|
ldy #0
|
||||||
|
__b2:
|
||||||
|
cpy #8
|
||||||
|
bcc __b3
|
||||||
|
lda #1
|
||||||
|
jmp __b5
|
||||||
|
__b3:
|
||||||
|
lda (glyph_cursor),y
|
||||||
|
cmp (glyph),y
|
||||||
|
beq __b4
|
||||||
|
lda #0
|
||||||
|
__b5:
|
||||||
|
cmp #0
|
||||||
|
beq __b6
|
||||||
|
rts
|
||||||
|
__b6:
|
||||||
|
inx
|
||||||
|
lda #8
|
||||||
|
clc
|
||||||
|
adc.z glyph_cursor
|
||||||
|
sta.z glyph_cursor
|
||||||
|
bcc !+
|
||||||
|
inc.z glyph_cursor+1
|
||||||
|
!:
|
||||||
|
jmp __b1
|
||||||
|
__b4:
|
||||||
|
iny
|
||||||
|
jmp __b2
|
||||||
|
}
|
||||||
|
// Shift PROTO_BOB right one X pixel
|
||||||
|
protoBobShiftRight: {
|
||||||
|
.label carry = $e
|
||||||
|
.label i = $a
|
||||||
|
ldy #0
|
||||||
|
ldx #0
|
||||||
|
txa
|
||||||
|
sta.z i
|
||||||
|
__b1:
|
||||||
|
lda.z i
|
||||||
|
cmp #3*3*8
|
||||||
|
bcc __b2
|
||||||
|
rts
|
||||||
|
__b2:
|
||||||
|
lda #1
|
||||||
|
and PROTO_BOB,x
|
||||||
|
cmp #0
|
||||||
|
bne __b3
|
||||||
|
lda #0
|
||||||
|
sta.z carry
|
||||||
|
jmp __b4
|
||||||
|
__b3:
|
||||||
|
lda #$80
|
||||||
|
sta.z carry
|
||||||
|
__b4:
|
||||||
|
lda PROTO_BOB,x
|
||||||
|
lsr
|
||||||
|
sty.z $ff
|
||||||
|
ora.z $ff
|
||||||
|
// Shift value and add old carry
|
||||||
|
sta PROTO_BOB,x
|
||||||
|
// Increment j to iterate over the PROTO_BOB left-to-right, top-to-bottom (0, 24, 48, 1, 25, 49, ...)
|
||||||
|
cpx #$30
|
||||||
|
bcs __b5
|
||||||
|
txa
|
||||||
|
axs #-[$18]
|
||||||
|
__b6:
|
||||||
|
inc.z i
|
||||||
|
ldy.z carry
|
||||||
|
jmp __b1
|
||||||
|
__b5:
|
||||||
|
txa
|
||||||
|
axs #$2f
|
||||||
|
jmp __b6
|
||||||
|
}
|
||||||
|
// Shift PROTO_BOB down one Y pixel
|
||||||
|
// At the same time restore PROTO_BOB X by shifting 8 pixels left
|
||||||
|
protoBobShiftDown: {
|
||||||
|
ldx #$17
|
||||||
|
__b1:
|
||||||
|
cpx #0
|
||||||
|
bne __b2
|
||||||
|
lda #0
|
||||||
|
sta PROTO_BOB
|
||||||
|
sta PROTO_BOB+$18
|
||||||
|
sta PROTO_BOB+$30
|
||||||
|
rts
|
||||||
|
__b2:
|
||||||
|
lda PROTO_BOB+$17,x
|
||||||
|
sta PROTO_BOB,x
|
||||||
|
lda PROTO_BOB+$2f,x
|
||||||
|
sta PROTO_BOB+$18,x
|
||||||
|
lda #0
|
||||||
|
sta PROTO_BOB+$30,x
|
||||||
|
dex
|
||||||
|
jmp __b1
|
||||||
|
}
|
||||||
|
// Initialize the PETSCII progress bar
|
||||||
|
progress_init: {
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
|
||||||
|
mulf_init: {
|
||||||
|
// x/2
|
||||||
|
.label c = $d
|
||||||
|
// Counter used for determining x%2==0
|
||||||
|
.label sqr1_hi = $f
|
||||||
|
// Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
|
||||||
|
.label sqr = $b
|
||||||
|
.label sqr1_lo = 6
|
||||||
|
// Decrease or increase x_255 - initially we decrease
|
||||||
|
.label sqr2_hi = 8
|
||||||
|
.label sqr2_lo = $11
|
||||||
|
//Start with g(0)=f(255)
|
||||||
|
.label dir = $e
|
||||||
|
ldx #0
|
||||||
|
lda #<mulf_sqr1_hi+1
|
||||||
|
sta.z sqr1_hi
|
||||||
|
lda #>mulf_sqr1_hi+1
|
||||||
|
sta.z sqr1_hi+1
|
||||||
|
txa
|
||||||
|
sta.z sqr
|
||||||
|
sta.z sqr+1
|
||||||
|
sta.z c
|
||||||
|
lda #<mulf_sqr1_lo+1
|
||||||
|
sta.z sqr1_lo
|
||||||
|
lda #>mulf_sqr1_lo+1
|
||||||
|
sta.z sqr1_lo+1
|
||||||
|
__b1:
|
||||||
|
lda.z sqr1_lo+1
|
||||||
|
cmp #>mulf_sqr1_lo+$200
|
||||||
|
bne __b2
|
||||||
|
lda.z sqr1_lo
|
||||||
|
cmp #<mulf_sqr1_lo+$200
|
||||||
|
bne __b2
|
||||||
|
lda #$ff
|
||||||
|
sta.z dir
|
||||||
|
lda #<mulf_sqr2_hi
|
||||||
|
sta.z sqr2_hi
|
||||||
|
lda #>mulf_sqr2_hi
|
||||||
|
sta.z sqr2_hi+1
|
||||||
|
ldx #-1
|
||||||
|
lda #<mulf_sqr2_lo
|
||||||
|
sta.z sqr2_lo
|
||||||
|
lda #>mulf_sqr2_lo
|
||||||
|
sta.z sqr2_lo+1
|
||||||
|
__b5:
|
||||||
|
lda.z sqr2_lo+1
|
||||||
|
cmp #>mulf_sqr2_lo+$1ff
|
||||||
|
bne __b6
|
||||||
|
lda.z sqr2_lo
|
||||||
|
cmp #<mulf_sqr2_lo+$1ff
|
||||||
|
bne __b6
|
||||||
|
// Set the very last value g(511) = f(256)
|
||||||
|
lda mulf_sqr1_lo+$100
|
||||||
|
sta mulf_sqr2_lo+$1ff
|
||||||
|
lda mulf_sqr1_hi+$100
|
||||||
|
sta mulf_sqr2_hi+$1ff
|
||||||
|
rts
|
||||||
|
__b6:
|
||||||
|
lda mulf_sqr1_lo,x
|
||||||
|
ldy #0
|
||||||
|
sta (sqr2_lo),y
|
||||||
|
lda mulf_sqr1_hi,x
|
||||||
|
sta (sqr2_hi),y
|
||||||
|
inc.z sqr2_hi
|
||||||
|
bne !+
|
||||||
|
inc.z sqr2_hi+1
|
||||||
|
!:
|
||||||
|
txa
|
||||||
|
clc
|
||||||
|
adc.z dir
|
||||||
|
tax
|
||||||
|
cpx #0
|
||||||
|
bne __b8
|
||||||
|
lda #1
|
||||||
|
sta.z dir
|
||||||
|
__b8:
|
||||||
|
inc.z sqr2_lo
|
||||||
|
bne !+
|
||||||
|
inc.z sqr2_lo+1
|
||||||
|
!:
|
||||||
|
jmp __b5
|
||||||
|
__b2:
|
||||||
|
inc.z c
|
||||||
|
lda #1
|
||||||
|
and.z c
|
||||||
|
cmp #0
|
||||||
|
bne __b3
|
||||||
|
inx
|
||||||
|
inc.z sqr
|
||||||
|
bne !+
|
||||||
|
inc.z sqr+1
|
||||||
|
!:
|
||||||
|
__b3:
|
||||||
|
lda.z sqr
|
||||||
|
ldy #0
|
||||||
|
sta (sqr1_lo),y
|
||||||
|
lda.z sqr+1
|
||||||
|
sta (sqr1_hi),y
|
||||||
|
inc.z sqr1_hi
|
||||||
|
bne !+
|
||||||
|
inc.z sqr1_hi+1
|
||||||
|
!:
|
||||||
|
txa
|
||||||
|
clc
|
||||||
|
adc.z sqr
|
||||||
|
sta.z sqr
|
||||||
|
bcc !+
|
||||||
|
inc.z sqr+1
|
||||||
|
!:
|
||||||
|
inc.z sqr1_lo
|
||||||
|
bne !+
|
||||||
|
inc.z sqr1_lo+1
|
||||||
|
!:
|
||||||
|
jmp __b1
|
||||||
|
}
|
||||||
|
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
|
||||||
|
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
|
||||||
|
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
|
||||||
|
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
|
||||||
|
// mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255).
|
||||||
|
// <f(x) = <(( x * x )/4)
|
||||||
|
.align $100
|
||||||
|
mulf_sqr1_lo: .fill $200, 0
|
||||||
|
// >f(x) = >(( x * x )/4)
|
||||||
|
.align $100
|
||||||
|
mulf_sqr1_hi: .fill $200, 0
|
||||||
|
// <g(x) = <((( x - 255) * ( x - 255 ))/4)
|
||||||
|
.align $100
|
||||||
|
mulf_sqr2_lo: .fill $200, 0
|
||||||
|
// >g(x) = >((( x - 255) * ( x - 255 ))/4)
|
||||||
|
.align $100
|
||||||
|
mulf_sqr2_hi: .fill $200, 0
|
||||||
|
// The prototype BOB (a 3x3 char image with a bob image in the upper 2x2 chars)
|
||||||
|
// The chars are layout as follows with data in chars 0, 1, 3, 4 initially
|
||||||
|
// 0 3 6
|
||||||
|
// 1 4 7
|
||||||
|
// 2 5 8
|
||||||
|
PROTO_BOB:
|
||||||
|
.var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
|
||||||
|
.for (var x=0;x<3; x++)
|
||||||
|
.for (var y=0; y<24; y++)
|
||||||
|
.byte pic.getSinglecolorByte(x,y)
|
||||||
|
|
||||||
|
// Sine and Cosine tables
|
||||||
|
// Angles: $00=0, $80=PI,$100=2*PI
|
||||||
|
// Sine/Cosine: signed fixed [-$7f,$7f]
|
||||||
|
.align $40
|
||||||
|
SIN:
|
||||||
|
.for(var i=0;i<$140;i++)
|
||||||
|
.byte >round($7fff*sin(i*2*PI/256))
|
||||||
|
|
||||||
|
// Tables containing the char to use for a specific cell of a shifted BOB.
|
||||||
|
// char_id = BOB_TABLES[cell*BOB_SUBTABLE_SIZE + shift_y*BOB_SHIFTS_X + shift_x];
|
||||||
|
BOB_TABLES: .fill 9*8*4, 0
|
||||||
|
// Table used for deleting rendered BOB's. Contains pointers to first char of each BOB.
|
||||||
|
RENDERBOB_CLEANUP: .fill 2*NUM_BOBS, 0
|
||||||
|
// *40 Table unsigned int[0x20] MUL40 = { ((unsigned int)i)*40 };
|
||||||
|
MUL40: .fill 2*$20, 0
|
577
src/test/ref/complex/prebob/grid-bobs.cfg
Normal file
577
src/test/ref/complex/prebob/grid-bobs.cfg
Normal file
@@ -0,0 +1,577 @@
|
|||||||
|
@begin: scope:[] from
|
||||||
|
[0] phi()
|
||||||
|
to:@1
|
||||||
|
@1: scope:[] from @begin
|
||||||
|
[1] phi()
|
||||||
|
[2] call main
|
||||||
|
to:@end
|
||||||
|
@end: scope:[] from @1
|
||||||
|
[3] phi()
|
||||||
|
|
||||||
|
(void()) main()
|
||||||
|
main: scope:[main] from @1
|
||||||
|
[4] phi()
|
||||||
|
[5] call mulf_init
|
||||||
|
to:main::@9
|
||||||
|
main::@9: scope:[main] from main
|
||||||
|
[6] phi()
|
||||||
|
[7] call prepareBobs
|
||||||
|
to:main::@10
|
||||||
|
main::@10: scope:[main] from main::@9
|
||||||
|
[8] phi()
|
||||||
|
[9] call renderBobInit
|
||||||
|
to:main::vicSelectGfxBank1
|
||||||
|
main::vicSelectGfxBank1: scope:[main] from main::@10
|
||||||
|
[10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
||||||
|
to:main::vicSelectGfxBank1_toDd001
|
||||||
|
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||||
|
[11] phi()
|
||||||
|
to:main::vicSelectGfxBank1_@1
|
||||||
|
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
|
||||||
|
[12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
|
||||||
|
to:main::toD0181
|
||||||
|
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
|
||||||
|
[13] phi()
|
||||||
|
to:main::@7
|
||||||
|
main::@7: scope:[main] from main::toD0181
|
||||||
|
[14] *((const byte*) D018) ← (const byte) main::toD0181_return#0
|
||||||
|
[15] call memset
|
||||||
|
to:main::@1
|
||||||
|
main::@1: scope:[main] from main::@15 main::@7
|
||||||
|
[16] (byte) main::angle#8 ← phi( main::@7/(byte) 0 main::@15/(byte) main::angle#1 )
|
||||||
|
to:main::@2
|
||||||
|
main::@2: scope:[main] from main::@1 main::@2
|
||||||
|
[17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2
|
||||||
|
to:main::@3
|
||||||
|
main::@3: scope:[main] from main::@2
|
||||||
|
[18] *((const byte*) BORDERCOL) ← (byte) $f
|
||||||
|
[19] call renderBobCleanup
|
||||||
|
to:main::@11
|
||||||
|
main::@11: scope:[main] from main::@3
|
||||||
|
[20] (byte) main::a#6 ← (byte) main::angle#8
|
||||||
|
to:main::@4
|
||||||
|
main::@4: scope:[main] from main::@11 main::@14
|
||||||
|
[21] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@14/(byte) main::i#1 )
|
||||||
|
[21] (byte**) renderBobCleanupNext#17 ← phi( main::@11/(const byte**) RENDERBOB_CLEANUP main::@14/(byte**) renderBobCleanupNext#13 )
|
||||||
|
[21] (byte) main::a#2 ← phi( main::@11/(byte) main::a#6 main::@14/(byte) main::a#1 )
|
||||||
|
[21] (signed byte) main::r#2 ← phi( main::@11/(signed byte) $1e main::@14/(signed byte) main::r#1 )
|
||||||
|
[22] *((const byte*) BORDERCOL) ← (byte) 1
|
||||||
|
[23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2
|
||||||
|
[24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2)
|
||||||
|
[25] call mulf8s
|
||||||
|
[26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
|
||||||
|
to:main::@12
|
||||||
|
main::@12: scope:[main] from main::@4
|
||||||
|
[27] (signed word~) main::$10 ← (signed word) mulf8s::return#2
|
||||||
|
[28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100
|
||||||
|
[29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2
|
||||||
|
[30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2)
|
||||||
|
[31] call mulf8s
|
||||||
|
[32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0
|
||||||
|
to:main::@13
|
||||||
|
main::@13: scope:[main] from main::@12
|
||||||
|
[33] (signed word~) main::$12 ← (signed word) mulf8s::return#3
|
||||||
|
[34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1
|
||||||
|
[35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100
|
||||||
|
[36] *((const byte*) BORDERCOL) ← (byte) 2
|
||||||
|
[37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62
|
||||||
|
[38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3
|
||||||
|
[39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0
|
||||||
|
[40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0
|
||||||
|
[41] call renderBob
|
||||||
|
to:main::@14
|
||||||
|
main::@14: scope:[main] from main::@13
|
||||||
|
[42] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
|
[43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4
|
||||||
|
to:main::@5
|
||||||
|
main::@5: scope:[main] from main::@14
|
||||||
|
[44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3
|
||||||
|
[45] *((const byte*) BORDERCOL) ← (byte) 0
|
||||||
|
[46] call keyboard_key_pressed
|
||||||
|
[47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0
|
||||||
|
to:main::@15
|
||||||
|
main::@15: scope:[main] from main::@5
|
||||||
|
[48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2
|
||||||
|
[49] if((byte) 0!=(byte~) main::$19) goto main::@6
|
||||||
|
to:main::@1
|
||||||
|
main::@6: scope:[main] from main::@15 main::@16
|
||||||
|
[50] phi()
|
||||||
|
[51] call keyboard_key_pressed
|
||||||
|
[52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0
|
||||||
|
to:main::@16
|
||||||
|
main::@16: scope:[main] from main::@6
|
||||||
|
[53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3
|
||||||
|
[54] if((byte) 0!=(byte~) main::$21) goto main::@6
|
||||||
|
to:main::vicSelectGfxBank2
|
||||||
|
main::vicSelectGfxBank2: scope:[main] from main::@16
|
||||||
|
[55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
||||||
|
to:main::vicSelectGfxBank2_toDd001
|
||||||
|
main::vicSelectGfxBank2_toDd001: scope:[main] from main::vicSelectGfxBank2
|
||||||
|
[56] phi()
|
||||||
|
to:main::vicSelectGfxBank2_@1
|
||||||
|
main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001
|
||||||
|
[57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0
|
||||||
|
to:main::toD0182
|
||||||
|
main::toD0182: scope:[main] from main::vicSelectGfxBank2_@1
|
||||||
|
[58] phi()
|
||||||
|
to:main::@8
|
||||||
|
main::@8: scope:[main] from main::toD0182
|
||||||
|
[59] *((const byte*) D018) ← (const byte) main::toD0182_return#0
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main::@8
|
||||||
|
[60] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||||
|
keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@5 main::@6
|
||||||
|
[61] phi()
|
||||||
|
[62] call keyboard_matrix_read
|
||||||
|
[63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
|
||||||
|
to:keyboard_key_pressed::@1
|
||||||
|
keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed
|
||||||
|
[64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2
|
||||||
|
[65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0)
|
||||||
|
to:keyboard_key_pressed::@return
|
||||||
|
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1
|
||||||
|
[66] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||||
|
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
||||||
|
[67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0)
|
||||||
|
[68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B)
|
||||||
|
to:keyboard_matrix_read::@return
|
||||||
|
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
|
||||||
|
[69] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
||||||
|
renderBob: scope:[renderBob] from main::@13
|
||||||
|
[70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2
|
||||||
|
[71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3
|
||||||
|
[72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1
|
||||||
|
[73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8)
|
||||||
|
[74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0
|
||||||
|
[75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0
|
||||||
|
[76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7
|
||||||
|
[77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2
|
||||||
|
[78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3
|
||||||
|
[79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6
|
||||||
|
[80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0
|
||||||
|
[81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER
|
||||||
|
[82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
[90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
|
to:renderBob::@return
|
||||||
|
renderBob::@return: scope:[renderBob] from renderBob
|
||||||
|
[91] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
|
||||||
|
mulf8s: scope:[mulf8s] from main::@12 main::@4
|
||||||
|
[92] (signed byte) mulf8s::b#2 ← phi( main::@12/(signed byte) mulf8s::b#1 main::@4/(signed byte) mulf8s::b#0 )
|
||||||
|
[92] (signed byte) mulf8s::mulf8s_prepare1_a#0 ← phi( main::@12/(signed byte) mulf8s::a#1 main::@4/(signed byte) mulf8s::a#0 )
|
||||||
|
to:mulf8s::mulf8s_prepare1
|
||||||
|
mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s
|
||||||
|
[93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0
|
||||||
|
[94] call mulf8u_prepare
|
||||||
|
to:mulf8s::@1
|
||||||
|
mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1
|
||||||
|
[95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2
|
||||||
|
[96] call mulf8s_prepared
|
||||||
|
to:mulf8s::@2
|
||||||
|
mulf8s::@2: scope:[mulf8s] from mulf8s::@1
|
||||||
|
[97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
|
||||||
|
to:mulf8s::@return
|
||||||
|
mulf8s::@return: scope:[mulf8s] from mulf8s::@2
|
||||||
|
[98] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||||
|
mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1
|
||||||
|
[99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0
|
||||||
|
[100] call mulf8u_prepared
|
||||||
|
[101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
|
||||||
|
to:mulf8s_prepared::@5
|
||||||
|
mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared
|
||||||
|
[102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2
|
||||||
|
[103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1
|
||||||
|
to:mulf8s_prepared::@3
|
||||||
|
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5
|
||||||
|
[104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
|
||||||
|
[105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
|
||||||
|
[106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||||
|
to:mulf8s_prepared::@1
|
||||||
|
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5
|
||||||
|
[107] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
|
||||||
|
[108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
|
||||||
|
to:mulf8s_prepared::@4
|
||||||
|
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
||||||
|
[109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
|
||||||
|
[110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA)
|
||||||
|
[111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||||
|
to:mulf8s_prepared::@2
|
||||||
|
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
||||||
|
[112] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||||
|
to:mulf8s_prepared::@return
|
||||||
|
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||||
|
[113] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
|
||||||
|
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
|
||||||
|
[114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0
|
||||||
|
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||||
|
[116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL)
|
||||||
|
to:mulf8u_prepared::@return
|
||||||
|
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
||||||
|
[117] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
||||||
|
mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1
|
||||||
|
[118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0
|
||||||
|
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
||||||
|
to:mulf8u_prepare::@return
|
||||||
|
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
||||||
|
[120] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void()) renderBobCleanup()
|
||||||
|
renderBobCleanup: scope:[renderBobCleanup] from main::@3
|
||||||
|
[121] phi()
|
||||||
|
to:renderBobCleanup::@1
|
||||||
|
renderBobCleanup::@1: scope:[renderBobCleanup] from renderBobCleanup renderBobCleanup::@1
|
||||||
|
[122] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 )
|
||||||
|
[123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1
|
||||||
|
[124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1)
|
||||||
|
[125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0
|
||||||
|
[126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0
|
||||||
|
[127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0
|
||||||
|
[128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0
|
||||||
|
[129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0
|
||||||
|
[130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0
|
||||||
|
[131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0
|
||||||
|
[132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0
|
||||||
|
[133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0
|
||||||
|
[134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2
|
||||||
|
[135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1
|
||||||
|
to:renderBobCleanup::@return
|
||||||
|
renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@1
|
||||||
|
[136] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
|
memset: scope:[memset] from main::@7
|
||||||
|
[137] phi()
|
||||||
|
to:memset::@1
|
||||||
|
memset::@1: scope:[memset] from memset memset::@2
|
||||||
|
[138] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
||||||
|
[139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
||||||
|
to:memset::@return
|
||||||
|
memset::@return: scope:[memset] from memset::@1
|
||||||
|
[140] return
|
||||||
|
to:@return
|
||||||
|
memset::@2: scope:[memset] from memset::@1
|
||||||
|
[141] *((byte*) memset::dst#2) ← (const byte) memset::c#0
|
||||||
|
[142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||||
|
to:memset::@1
|
||||||
|
|
||||||
|
(void()) renderBobInit()
|
||||||
|
renderBobInit: scope:[renderBobInit] from main::@10
|
||||||
|
[143] phi()
|
||||||
|
to:renderBobInit::@1
|
||||||
|
renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1
|
||||||
|
[144] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 )
|
||||||
|
[145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2
|
||||||
|
[146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2
|
||||||
|
[147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0
|
||||||
|
[148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3
|
||||||
|
[149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1
|
||||||
|
[150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1
|
||||||
|
[151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2
|
||||||
|
[152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1
|
||||||
|
to:renderBobInit::@2
|
||||||
|
renderBobInit::@2: scope:[renderBobInit] from renderBobInit::@1 renderBobInit::@2
|
||||||
|
[153] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 )
|
||||||
|
[154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1
|
||||||
|
[155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN
|
||||||
|
[156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2
|
||||||
|
[157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2
|
||||||
|
to:renderBobInit::@return
|
||||||
|
renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@2
|
||||||
|
[158] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void()) prepareBobs()
|
||||||
|
prepareBobs: scope:[prepareBobs] from main::@9
|
||||||
|
[159] phi()
|
||||||
|
[160] call progress_init
|
||||||
|
to:prepareBobs::@8
|
||||||
|
prepareBobs::@8: scope:[prepareBobs] from prepareBobs
|
||||||
|
[161] phi()
|
||||||
|
[162] call charsetFindOrAddGlyph
|
||||||
|
to:prepareBobs::@1
|
||||||
|
prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@8 prepareBobs::@9
|
||||||
|
[163] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 )
|
||||||
|
[163] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 )
|
||||||
|
[163] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 )
|
||||||
|
[163] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) SCREEN_BASIC prepareBobs::@9/(byte*) progress_cursor#31 )
|
||||||
|
[163] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 )
|
||||||
|
[164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2
|
||||||
|
to:prepareBobs::@return
|
||||||
|
prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1
|
||||||
|
[165] return
|
||||||
|
to:@return
|
||||||
|
prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1 prepareBobs::@13
|
||||||
|
[166] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 )
|
||||||
|
[166] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 )
|
||||||
|
[166] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 )
|
||||||
|
[166] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 )
|
||||||
|
[166] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 )
|
||||||
|
[167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3
|
||||||
|
to:prepareBobs::@4
|
||||||
|
prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2
|
||||||
|
[168] phi()
|
||||||
|
[169] call protoBobShiftDown
|
||||||
|
to:prepareBobs::@9
|
||||||
|
prepareBobs::@9: scope:[prepareBobs] from prepareBobs::@4
|
||||||
|
[170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2
|
||||||
|
to:prepareBobs::@1
|
||||||
|
prepareBobs::@3: scope:[prepareBobs] from prepareBobs::@2
|
||||||
|
[171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12
|
||||||
|
to:prepareBobs::@5
|
||||||
|
prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@11 prepareBobs::@3
|
||||||
|
[172] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 )
|
||||||
|
[172] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 )
|
||||||
|
[172] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 )
|
||||||
|
[172] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 )
|
||||||
|
[172] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB )
|
||||||
|
[172] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 )
|
||||||
|
[173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6
|
||||||
|
to:prepareBobs::@7
|
||||||
|
prepareBobs::@7: scope:[prepareBobs] from prepareBobs::@5
|
||||||
|
[174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12
|
||||||
|
[175] call protoBobShiftRight
|
||||||
|
to:prepareBobs::@12
|
||||||
|
prepareBobs::@12: scope:[prepareBobs] from prepareBobs::@7
|
||||||
|
[176] phi()
|
||||||
|
[177] call protoBobShiftRight
|
||||||
|
to:prepareBobs::@13
|
||||||
|
prepareBobs::@13: scope:[prepareBobs] from prepareBobs::@12
|
||||||
|
[178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2
|
||||||
|
to:prepareBobs::@2
|
||||||
|
prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@5
|
||||||
|
[179] (byte*) charsetFindOrAddGlyph::glyph#1 ← (byte*) prepareBobs::bob_glyph#2
|
||||||
|
[180] call charsetFindOrAddGlyph
|
||||||
|
[181] (byte) charsetFindOrAddGlyph::return#1 ← (byte) charsetFindOrAddGlyph::glyph_id#11
|
||||||
|
to:prepareBobs::@10
|
||||||
|
prepareBobs::@10: scope:[prepareBobs] from prepareBobs::@6
|
||||||
|
[182] (byte~) prepareBobs::$6 ← (byte) charsetFindOrAddGlyph::return#1
|
||||||
|
[183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6
|
||||||
|
[184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8
|
||||||
|
[185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
|
||||||
|
[186] call progress_inc
|
||||||
|
to:prepareBobs::@11
|
||||||
|
prepareBobs::@11: scope:[prepareBobs] from prepareBobs::@10
|
||||||
|
[187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2
|
||||||
|
to:prepareBobs::@5
|
||||||
|
|
||||||
|
(void()) progress_inc()
|
||||||
|
progress_inc: scope:[progress_inc] from prepareBobs::@10
|
||||||
|
[188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25
|
||||||
|
[189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1
|
||||||
|
to:progress_inc::@2
|
||||||
|
progress_inc::@2: scope:[progress_inc] from progress_inc
|
||||||
|
[190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8)
|
||||||
|
[191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24
|
||||||
|
to:progress_inc::@1
|
||||||
|
progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2
|
||||||
|
[192] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 )
|
||||||
|
[192] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 )
|
||||||
|
[193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10)
|
||||||
|
to:progress_inc::@return
|
||||||
|
progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||||
|
[194] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset)
|
||||||
|
charsetFindOrAddGlyph: scope:[charsetFindOrAddGlyph] from prepareBobs::@6 prepareBobs::@8
|
||||||
|
[195] (byte*) charsetFindOrAddGlyph::glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) charsetFindOrAddGlyph::glyph#1 )
|
||||||
|
[195] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 )
|
||||||
|
to:charsetFindOrAddGlyph::@1
|
||||||
|
charsetFindOrAddGlyph::@1: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph charsetFindOrAddGlyph::@6
|
||||||
|
[196] (byte*) charsetFindOrAddGlyph::glyph_cursor#11 ← phi( charsetFindOrAddGlyph/(const byte*) BOB_CHARSET charsetFindOrAddGlyph::@6/(byte*) charsetFindOrAddGlyph::glyph_cursor#1 )
|
||||||
|
[196] (byte) charsetFindOrAddGlyph::glyph_id#11 ← phi( charsetFindOrAddGlyph/(byte) 0 charsetFindOrAddGlyph::@6/(byte) charsetFindOrAddGlyph::glyph_id#1 )
|
||||||
|
[197] if((byte) charsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto charsetFindOrAddGlyph::@2
|
||||||
|
to:charsetFindOrAddGlyph::@7
|
||||||
|
charsetFindOrAddGlyph::@7: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@8
|
||||||
|
[198] (byte) charsetFindOrAddGlyph::i1#2 ← phi( charsetFindOrAddGlyph::@8/(byte) charsetFindOrAddGlyph::i1#1 charsetFindOrAddGlyph::@1/(byte) 0 )
|
||||||
|
[199] if((byte) charsetFindOrAddGlyph::i1#2<(byte) 8) goto charsetFindOrAddGlyph::@8
|
||||||
|
to:charsetFindOrAddGlyph::@9
|
||||||
|
charsetFindOrAddGlyph::@9: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7
|
||||||
|
[200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23
|
||||||
|
to:charsetFindOrAddGlyph::@return
|
||||||
|
charsetFindOrAddGlyph::@return: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5 charsetFindOrAddGlyph::@9
|
||||||
|
[201] (byte) bob_charset_next_id#16 ← phi( charsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 charsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 )
|
||||||
|
[202] return
|
||||||
|
to:@return
|
||||||
|
charsetFindOrAddGlyph::@8: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@7
|
||||||
|
[203] *((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i1#2) ← *((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i1#2)
|
||||||
|
[204] (byte) charsetFindOrAddGlyph::i1#1 ← ++ (byte) charsetFindOrAddGlyph::i1#2
|
||||||
|
to:charsetFindOrAddGlyph::@7
|
||||||
|
charsetFindOrAddGlyph::@2: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@1 charsetFindOrAddGlyph::@4
|
||||||
|
[205] (byte) charsetFindOrAddGlyph::i#2 ← phi( charsetFindOrAddGlyph::@1/(byte) 0 charsetFindOrAddGlyph::@4/(byte) charsetFindOrAddGlyph::i#1 )
|
||||||
|
[206] if((byte) charsetFindOrAddGlyph::i#2<(byte) 8) goto charsetFindOrAddGlyph::@3
|
||||||
|
to:charsetFindOrAddGlyph::@5
|
||||||
|
charsetFindOrAddGlyph::@3: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2
|
||||||
|
[207] if(*((byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) charsetFindOrAddGlyph::i#2)==*((byte*) charsetFindOrAddGlyph::glyph#10 + (byte) charsetFindOrAddGlyph::i#2)) goto charsetFindOrAddGlyph::@4
|
||||||
|
to:charsetFindOrAddGlyph::@5
|
||||||
|
charsetFindOrAddGlyph::@5: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@2 charsetFindOrAddGlyph::@3
|
||||||
|
[208] (byte) charsetFindOrAddGlyph::found#2 ← phi( charsetFindOrAddGlyph::@3/(byte) 0 charsetFindOrAddGlyph::@2/(byte) 1 )
|
||||||
|
[209] if((byte) 0==(byte) charsetFindOrAddGlyph::found#2) goto charsetFindOrAddGlyph::@6
|
||||||
|
to:charsetFindOrAddGlyph::@return
|
||||||
|
charsetFindOrAddGlyph::@6: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@5
|
||||||
|
[210] (byte) charsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) charsetFindOrAddGlyph::glyph_id#11
|
||||||
|
[211] (byte*) charsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) charsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8
|
||||||
|
to:charsetFindOrAddGlyph::@1
|
||||||
|
charsetFindOrAddGlyph::@4: scope:[charsetFindOrAddGlyph] from charsetFindOrAddGlyph::@3
|
||||||
|
[212] (byte) charsetFindOrAddGlyph::i#1 ← ++ (byte) charsetFindOrAddGlyph::i#2
|
||||||
|
to:charsetFindOrAddGlyph::@2
|
||||||
|
|
||||||
|
(void()) protoBobShiftRight()
|
||||||
|
protoBobShiftRight: scope:[protoBobShiftRight] from prepareBobs::@12 prepareBobs::@7
|
||||||
|
[213] phi()
|
||||||
|
to:protoBobShiftRight::@1
|
||||||
|
protoBobShiftRight::@1: scope:[protoBobShiftRight] from protoBobShiftRight protoBobShiftRight::@6
|
||||||
|
[214] (byte) protoBobShiftRight::carry#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::carry#10 )
|
||||||
|
[214] (byte) protoBobShiftRight::j#3 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::j#10 )
|
||||||
|
[214] (byte) protoBobShiftRight::i#2 ← phi( protoBobShiftRight/(byte) 0 protoBobShiftRight::@6/(byte) protoBobShiftRight::i#1 )
|
||||||
|
[215] if((byte) protoBobShiftRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto protoBobShiftRight::@2
|
||||||
|
to:protoBobShiftRight::@return
|
||||||
|
protoBobShiftRight::@return: scope:[protoBobShiftRight] from protoBobShiftRight::@1
|
||||||
|
[216] return
|
||||||
|
to:@return
|
||||||
|
protoBobShiftRight::@2: scope:[protoBobShiftRight] from protoBobShiftRight::@1
|
||||||
|
[217] (byte~) protoBobShiftRight::$1 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) & (byte) 1
|
||||||
|
[218] if((byte) 0!=(byte~) protoBobShiftRight::$1) goto protoBobShiftRight::@3
|
||||||
|
to:protoBobShiftRight::@4
|
||||||
|
protoBobShiftRight::@3: scope:[protoBobShiftRight] from protoBobShiftRight::@2
|
||||||
|
[219] phi()
|
||||||
|
to:protoBobShiftRight::@4
|
||||||
|
protoBobShiftRight::@4: scope:[protoBobShiftRight] from protoBobShiftRight::@2 protoBobShiftRight::@3
|
||||||
|
[220] (byte) protoBobShiftRight::carry#1 ← phi( protoBobShiftRight::@3/(byte) $80 protoBobShiftRight::@2/(byte) 0 )
|
||||||
|
[221] (byte~) protoBobShiftRight::$5 ← *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) >> (byte) 1
|
||||||
|
[222] (byte~) protoBobShiftRight::$6 ← (byte) protoBobShiftRight::carry#2 | (byte~) protoBobShiftRight::$5
|
||||||
|
[223] *((const byte*) PROTO_BOB + (byte) protoBobShiftRight::j#3) ← (byte~) protoBobShiftRight::$6
|
||||||
|
[224] if((byte) protoBobShiftRight::j#3>=(byte) $30) goto protoBobShiftRight::@5
|
||||||
|
to:protoBobShiftRight::@7
|
||||||
|
protoBobShiftRight::@7: scope:[protoBobShiftRight] from protoBobShiftRight::@4
|
||||||
|
[225] (byte) protoBobShiftRight::j#2 ← (byte) protoBobShiftRight::j#3 + (byte) $18
|
||||||
|
to:protoBobShiftRight::@6
|
||||||
|
protoBobShiftRight::@6: scope:[protoBobShiftRight] from protoBobShiftRight::@5 protoBobShiftRight::@7
|
||||||
|
[226] (byte) protoBobShiftRight::j#10 ← phi( protoBobShiftRight::@7/(byte) protoBobShiftRight::j#2 protoBobShiftRight::@5/(byte) protoBobShiftRight::j#1 )
|
||||||
|
[227] (byte) protoBobShiftRight::i#1 ← ++ (byte) protoBobShiftRight::i#2
|
||||||
|
[228] (byte) protoBobShiftRight::carry#10 ← (byte) protoBobShiftRight::carry#1
|
||||||
|
to:protoBobShiftRight::@1
|
||||||
|
protoBobShiftRight::@5: scope:[protoBobShiftRight] from protoBobShiftRight::@4
|
||||||
|
[229] (byte) protoBobShiftRight::j#1 ← (byte) protoBobShiftRight::j#3 - (byte) $2f
|
||||||
|
to:protoBobShiftRight::@6
|
||||||
|
|
||||||
|
(void()) protoBobShiftDown()
|
||||||
|
protoBobShiftDown: scope:[protoBobShiftDown] from prepareBobs::@4
|
||||||
|
[230] phi()
|
||||||
|
to:protoBobShiftDown::@1
|
||||||
|
protoBobShiftDown::@1: scope:[protoBobShiftDown] from protoBobShiftDown protoBobShiftDown::@2
|
||||||
|
[231] (byte) protoBobShiftDown::i#2 ← phi( protoBobShiftDown/(byte) $17 protoBobShiftDown::@2/(byte) protoBobShiftDown::i#1 )
|
||||||
|
[232] if((byte) protoBobShiftDown::i#2>(byte) 0) goto protoBobShiftDown::@2
|
||||||
|
to:protoBobShiftDown::@3
|
||||||
|
protoBobShiftDown::@3: scope:[protoBobShiftDown] from protoBobShiftDown::@1
|
||||||
|
[233] *((const byte*) PROTO_BOB) ← (byte) 0
|
||||||
|
[234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0
|
||||||
|
[235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0
|
||||||
|
to:protoBobShiftDown::@return
|
||||||
|
protoBobShiftDown::@return: scope:[protoBobShiftDown] from protoBobShiftDown::@3
|
||||||
|
[236] return
|
||||||
|
to:@return
|
||||||
|
protoBobShiftDown::@2: scope:[protoBobShiftDown] from protoBobShiftDown::@1
|
||||||
|
[237] *((const byte*) PROTO_BOB + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) protoBobShiftDown::i#2)
|
||||||
|
[238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) protoBobShiftDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) protoBobShiftDown::i#2)
|
||||||
|
[239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) protoBobShiftDown::i#2) ← (byte) 0
|
||||||
|
[240] (byte) protoBobShiftDown::i#1 ← -- (byte) protoBobShiftDown::i#2
|
||||||
|
to:protoBobShiftDown::@1
|
||||||
|
|
||||||
|
(void()) progress_init((byte*) progress_init::line)
|
||||||
|
progress_init: scope:[progress_init] from prepareBobs
|
||||||
|
[241] phi()
|
||||||
|
to:progress_init::@return
|
||||||
|
progress_init::@return: scope:[progress_init] from progress_init
|
||||||
|
[242] return
|
||||||
|
to:@return
|
||||||
|
|
||||||
|
(void()) mulf_init()
|
||||||
|
mulf_init: scope:[mulf_init] from main
|
||||||
|
[243] phi()
|
||||||
|
to:mulf_init::@1
|
||||||
|
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
|
||||||
|
[244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
|
||||||
|
[244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
|
||||||
|
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
|
||||||
|
[244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
|
||||||
|
[244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
|
||||||
|
[245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
|
||||||
|
to:mulf_init::@5
|
||||||
|
mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8
|
||||||
|
[246] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
|
||||||
|
[246] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
|
||||||
|
[246] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
|
||||||
|
[246] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
|
||||||
|
[247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6
|
||||||
|
to:mulf_init::@7
|
||||||
|
mulf_init::@7: scope:[mulf_init] from mulf_init::@5
|
||||||
|
[248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
|
||||||
|
[249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100)
|
||||||
|
to:mulf_init::@return
|
||||||
|
mulf_init::@return: scope:[mulf_init] from mulf_init::@7
|
||||||
|
[250] return
|
||||||
|
to:@return
|
||||||
|
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
|
||||||
|
[251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
|
||||||
|
[252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
|
||||||
|
[253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||||
|
[254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||||
|
[255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
|
||||||
|
to:mulf_init::@8
|
||||||
|
mulf_init::@9: scope:[mulf_init] from mulf_init::@6
|
||||||
|
[256] phi()
|
||||||
|
to:mulf_init::@8
|
||||||
|
mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9
|
||||||
|
[257] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
|
||||||
|
[258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||||
|
to:mulf_init::@5
|
||||||
|
mulf_init::@2: scope:[mulf_init] from mulf_init::@1
|
||||||
|
[259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||||
|
[260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
|
||||||
|
[261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3
|
||||||
|
to:mulf_init::@4
|
||||||
|
mulf_init::@4: scope:[mulf_init] from mulf_init::@2
|
||||||
|
[262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||||
|
[263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||||
|
to:mulf_init::@3
|
||||||
|
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||||
|
[264] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
|
||||||
|
[264] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
|
||||||
|
[265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
|
||||||
|
[266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
|
||||||
|
[267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
|
||||||
|
[268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
|
||||||
|
[269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||||
|
[270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||||
|
[271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||||
|
to:mulf_init::@1
|
11543
src/test/ref/complex/prebob/grid-bobs.log
Normal file
11543
src/test/ref/complex/prebob/grid-bobs.log
Normal file
File diff suppressed because it is too large
Load Diff
473
src/test/ref/complex/prebob/grid-bobs.sym
Normal file
473
src/test/ref/complex/prebob/grid-bobs.sym
Normal file
@@ -0,0 +1,473 @@
|
|||||||
|
(label) @1
|
||||||
|
(label) @begin
|
||||||
|
(label) @end
|
||||||
|
(const byte*) BOB_CHARSET = (byte*) 8192
|
||||||
|
(const byte*) BOB_SCREEN = (byte*) 10240
|
||||||
|
(const byte) BOB_SHIFTS_X = (number) 4
|
||||||
|
(const byte) BOB_SHIFTS_Y = (number) 8
|
||||||
|
(const byte) BOB_SUBTABLE_SIZE = (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
|
||||||
|
(const byte*) BOB_TABLES = { fill( 9*8*4, 0) }
|
||||||
|
(const byte*) BORDERCOL = (byte*) 53280
|
||||||
|
(const byte*) CHARSET_BASIC = (byte*) 4096
|
||||||
|
(const byte*) CIA1_PORT_A = (byte*) 56320
|
||||||
|
(const byte*) CIA1_PORT_B = (byte*) 56321
|
||||||
|
(const byte*) CIA2_PORT_A = (byte*) 56576
|
||||||
|
(const byte*) CIA2_PORT_A_DDR = (byte*) 56578
|
||||||
|
(const signed byte*) COS = (const signed byte*) SIN+(byte) $40
|
||||||
|
(const byte*) D018 = (byte*) 53272
|
||||||
|
(const byte) KEY_SPACE = (number) $3c
|
||||||
|
(const word*) MUL40 = { fill( $20, 0) }
|
||||||
|
(const byte) NUM_BOBS = (number) $14
|
||||||
|
(const byte*) PROTO_BOB = kickasm {{ .var pic = LoadPicture("smiley.png", List().add($000000, $ffffff))
|
||||||
|
.for (var x=0;x<3; x++)
|
||||||
|
.for (var y=0; y<24; y++)
|
||||||
|
.byte pic.getSinglecolorByte(x,y)
|
||||||
|
}}
|
||||||
|
(const byte) RADIX::BINARY = (number) 2
|
||||||
|
(const byte) RADIX::DECIMAL = (number) $a
|
||||||
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||||
|
(const byte) RADIX::OCTAL = (number) 8
|
||||||
|
(const byte*) RASTER = (byte*) 53266
|
||||||
|
(const byte**) RENDERBOB_CLEANUP = { fill( NUM_BOBS, 0) }
|
||||||
|
(const byte*) SCREEN_BASIC = (byte*) 1024
|
||||||
|
(const signed byte*) SIN = kickasm {{ .for(var i=0;i<$140;i++)
|
||||||
|
.byte >round($7fff*sin(i*2*PI/256))
|
||||||
|
}}
|
||||||
|
(const byte) SIZEOF_POINTER = (byte) 2
|
||||||
|
(byte) bob_charset_next_id
|
||||||
|
(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:13 12.0
|
||||||
|
(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:13 1000.5454545454544
|
||||||
|
(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:13 275.5
|
||||||
|
(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:13 1400.3333333333335
|
||||||
|
(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:13 37.33333333333333
|
||||||
|
(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:13 4.0
|
||||||
|
(byte()) charsetFindOrAddGlyph((byte*) charsetFindOrAddGlyph::glyph , (byte*) charsetFindOrAddGlyph::charset)
|
||||||
|
(label) charsetFindOrAddGlyph::@1
|
||||||
|
(label) charsetFindOrAddGlyph::@2
|
||||||
|
(label) charsetFindOrAddGlyph::@3
|
||||||
|
(label) charsetFindOrAddGlyph::@4
|
||||||
|
(label) charsetFindOrAddGlyph::@5
|
||||||
|
(label) charsetFindOrAddGlyph::@6
|
||||||
|
(label) charsetFindOrAddGlyph::@7
|
||||||
|
(label) charsetFindOrAddGlyph::@8
|
||||||
|
(label) charsetFindOrAddGlyph::@9
|
||||||
|
(label) charsetFindOrAddGlyph::@return
|
||||||
|
(byte*) charsetFindOrAddGlyph::charset
|
||||||
|
(byte) charsetFindOrAddGlyph::found
|
||||||
|
(byte) charsetFindOrAddGlyph::found#2 reg byte a 10001.0
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph#1 glyph zp[2]:6 2002.0
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph#10 glyph zp[2]:6 7400.200000000001
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph_cursor
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:17 20002.0
|
||||||
|
(byte*) charsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:17 10000.307692307691
|
||||||
|
(byte) charsetFindOrAddGlyph::glyph_id
|
||||||
|
(byte) charsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0
|
||||||
|
(byte) charsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75
|
||||||
|
(byte) charsetFindOrAddGlyph::i
|
||||||
|
(byte) charsetFindOrAddGlyph::i#1 reg byte y 200002.0
|
||||||
|
(byte) charsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333
|
||||||
|
(byte) charsetFindOrAddGlyph::i1
|
||||||
|
(byte) charsetFindOrAddGlyph::i1#1 reg byte y 20002.0
|
||||||
|
(byte) charsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332
|
||||||
|
(byte) charsetFindOrAddGlyph::return
|
||||||
|
(byte) charsetFindOrAddGlyph::return#1 reg byte a 2002.0
|
||||||
|
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||||
|
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||||
|
(label) keyboard_key_pressed::@1
|
||||||
|
(label) keyboard_key_pressed::@return
|
||||||
|
(byte) keyboard_key_pressed::colidx
|
||||||
|
(const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE&(byte) 7
|
||||||
|
(byte) keyboard_key_pressed::key
|
||||||
|
(byte) keyboard_key_pressed::return
|
||||||
|
(byte) keyboard_key_pressed::return#0 reg byte a 6.0
|
||||||
|
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
|
||||||
|
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
|
||||||
|
(byte) keyboard_key_pressed::rowidx
|
||||||
|
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE>>(byte) 3
|
||||||
|
(const byte*) keyboard_matrix_col_bitmask = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
|
||||||
|
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||||
|
(label) keyboard_matrix_read::@return
|
||||||
|
(byte) keyboard_matrix_read::return
|
||||||
|
(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333
|
||||||
|
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
|
||||||
|
(byte) keyboard_matrix_read::row_pressed_bits
|
||||||
|
(byte) keyboard_matrix_read::rowid
|
||||||
|
(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
|
||||||
|
(void()) main()
|
||||||
|
(signed word~) main::$10 zp[2]:11 202.0
|
||||||
|
(signed word~) main::$12 zp[2]:11 202.0
|
||||||
|
(signed word~) main::$13 zp[2]:11 202.0
|
||||||
|
(byte~) main::$19 reg byte a 22.0
|
||||||
|
(byte~) main::$21 reg byte a 22.0
|
||||||
|
(label) main::@1
|
||||||
|
(label) main::@10
|
||||||
|
(label) main::@11
|
||||||
|
(label) main::@12
|
||||||
|
(label) main::@13
|
||||||
|
(label) main::@14
|
||||||
|
(label) main::@15
|
||||||
|
(label) main::@16
|
||||||
|
(label) main::@2
|
||||||
|
(label) main::@3
|
||||||
|
(label) main::@4
|
||||||
|
(label) main::@5
|
||||||
|
(label) main::@6
|
||||||
|
(label) main::@7
|
||||||
|
(label) main::@8
|
||||||
|
(label) main::@9
|
||||||
|
(label) main::@return
|
||||||
|
(byte) main::a
|
||||||
|
(byte) main::a#1 a zp[1]:4 28.857142857142858
|
||||||
|
(byte) main::a#2 a zp[1]:4 25.9375
|
||||||
|
(byte) main::a#6 a zp[1]:4 22.0
|
||||||
|
(byte) main::angle
|
||||||
|
(byte) main::angle#1 angle zp[1]:2 3.6666666666666665
|
||||||
|
(byte) main::angle#8 angle zp[1]:2 1.1785714285714286
|
||||||
|
(byte) main::i
|
||||||
|
(byte) main::i#1 i zp[1]:5 151.5
|
||||||
|
(byte) main::i#2 i zp[1]:5 9.619047619047619
|
||||||
|
(signed byte) main::r
|
||||||
|
(signed byte) main::r#1 r zp[1]:3 33.666666666666664
|
||||||
|
(signed byte) main::r#2 r zp[1]:3 23.764705882352942
|
||||||
|
(label) main::toD0181
|
||||||
|
(byte*) main::toD0181_gfx
|
||||||
|
(byte) main::toD0181_return
|
||||||
|
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) BOB_SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BOB_CHARSET/(byte) 4&(byte) $f
|
||||||
|
(byte*) main::toD0181_screen
|
||||||
|
(label) main::toD0182
|
||||||
|
(byte*) main::toD0182_gfx
|
||||||
|
(byte) main::toD0182_return
|
||||||
|
(const byte) main::toD0182_return#0 toD0182_return = >(word)(const byte*) SCREEN_BASIC&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET_BASIC/(byte) 4&(byte) $f
|
||||||
|
(byte*) main::toD0182_screen
|
||||||
|
(label) main::vicSelectGfxBank1
|
||||||
|
(label) main::vicSelectGfxBank1_@1
|
||||||
|
(byte*) main::vicSelectGfxBank1_gfx
|
||||||
|
(label) main::vicSelectGfxBank1_toDd001
|
||||||
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx
|
||||||
|
(byte) main::vicSelectGfxBank1_toDd001_return
|
||||||
|
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte) 3
|
||||||
|
(label) main::vicSelectGfxBank2
|
||||||
|
(label) main::vicSelectGfxBank2_@1
|
||||||
|
(byte*) main::vicSelectGfxBank2_gfx
|
||||||
|
(label) main::vicSelectGfxBank2_toDd001
|
||||||
|
(byte*) main::vicSelectGfxBank2_toDd001_gfx
|
||||||
|
(byte) main::vicSelectGfxBank2_toDd001_return
|
||||||
|
(const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3
|
||||||
|
(signed word) main::x
|
||||||
|
(signed word) main::x#0 x zp[2]:8 18.363636363636363
|
||||||
|
(signed word) main::y
|
||||||
|
(signed word) main::y#0 y zp[2]:11 40.4
|
||||||
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
|
(label) memset::@1
|
||||||
|
(label) memset::@2
|
||||||
|
(label) memset::@return
|
||||||
|
(byte) memset::c
|
||||||
|
(const byte) memset::c#0 c = (byte) 0
|
||||||
|
(byte*) memset::dst
|
||||||
|
(byte*) memset::dst#1 dst zp[2]:6 22.0
|
||||||
|
(byte*) memset::dst#2 dst zp[2]:6 14.666666666666666
|
||||||
|
(byte*) memset::end
|
||||||
|
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
|
||||||
|
(word) memset::num
|
||||||
|
(const word) memset::num#0 num = (word) $3e8
|
||||||
|
(void*) memset::return
|
||||||
|
(void*) memset::str
|
||||||
|
(const void*) memset::str#0 str = (void*)(const byte*) BOB_SCREEN
|
||||||
|
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
|
||||||
|
(label) mulf8s::@1
|
||||||
|
(label) mulf8s::@2
|
||||||
|
(label) mulf8s::@return
|
||||||
|
(signed byte) mulf8s::a
|
||||||
|
(signed byte) mulf8s::a#0 reg byte a 101.0
|
||||||
|
(signed byte) mulf8s::a#1 reg byte a 101.0
|
||||||
|
(signed byte) mulf8s::b
|
||||||
|
(signed byte) mulf8s::b#0 reg byte x 202.0
|
||||||
|
(signed byte) mulf8s::b#1 reg byte x 202.0
|
||||||
|
(signed byte) mulf8s::b#2 reg byte x 68.0
|
||||||
|
(label) mulf8s::mulf8s_prepare1
|
||||||
|
(signed byte) mulf8s::mulf8s_prepare1_a
|
||||||
|
(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0
|
||||||
|
(signed word) mulf8s::return
|
||||||
|
(signed word) mulf8s::return#0 return zp[2]:11 51.0
|
||||||
|
(signed word) mulf8s::return#2 return zp[2]:11 202.0
|
||||||
|
(signed word) mulf8s::return#3 return zp[2]:11 202.0
|
||||||
|
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||||
|
(byte~) mulf8s_prepared::$12 reg byte a 4.0
|
||||||
|
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
||||||
|
(byte~) mulf8s_prepared::$16 reg byte a 4.0
|
||||||
|
(byte~) mulf8s_prepared::$8 reg byte a 4.0
|
||||||
|
(label) mulf8s_prepared::@1
|
||||||
|
(label) mulf8s_prepared::@2
|
||||||
|
(label) mulf8s_prepared::@3
|
||||||
|
(label) mulf8s_prepared::@4
|
||||||
|
(label) mulf8s_prepared::@5
|
||||||
|
(label) mulf8s_prepared::@return
|
||||||
|
(signed byte) mulf8s_prepared::b
|
||||||
|
(signed byte) mulf8s_prepared::b#0 b zp[1]:14 0.4
|
||||||
|
(word) mulf8s_prepared::m
|
||||||
|
(word) mulf8s_prepared::m#0 m zp[2]:11 2.0
|
||||||
|
(word) mulf8s_prepared::m#1 m zp[2]:11 4.0
|
||||||
|
(word) mulf8s_prepared::m#2 m zp[2]:11 4.0
|
||||||
|
(word) mulf8s_prepared::m#4 m zp[2]:11 1.3333333333333333
|
||||||
|
(word) mulf8s_prepared::m#5 m zp[2]:11 2.5
|
||||||
|
(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253
|
||||||
|
(signed word) mulf8s_prepared::return
|
||||||
|
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
||||||
|
(label) mulf8u_prepare::@return
|
||||||
|
(byte) mulf8u_prepare::a
|
||||||
|
(byte) mulf8u_prepare::a#0 reg byte a 4.0
|
||||||
|
(const byte*) mulf8u_prepare::memA = (byte*) 253
|
||||||
|
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
|
||||||
|
(label) mulf8u_prepared::@return
|
||||||
|
(byte) mulf8u_prepared::b
|
||||||
|
(byte) mulf8u_prepared::b#0 reg byte a 4.0
|
||||||
|
(const byte*) mulf8u_prepared::memB = (byte*) 255
|
||||||
|
(const byte*) mulf8u_prepared::resL = (byte*) 254
|
||||||
|
(word) mulf8u_prepared::return
|
||||||
|
(word) mulf8u_prepared::return#0 return zp[2]:11 1.3333333333333333
|
||||||
|
(word) mulf8u_prepared::return#2 return zp[2]:11 4.0
|
||||||
|
(void()) mulf_init()
|
||||||
|
(byte~) mulf_init::$1 reg byte a 22.0
|
||||||
|
(byte~) mulf_init::$4 reg byte a 22.0
|
||||||
|
(byte~) mulf_init::$5 reg byte a 22.0
|
||||||
|
(label) mulf_init::@1
|
||||||
|
(label) mulf_init::@2
|
||||||
|
(label) mulf_init::@3
|
||||||
|
(label) mulf_init::@4
|
||||||
|
(label) mulf_init::@5
|
||||||
|
(label) mulf_init::@6
|
||||||
|
(label) mulf_init::@7
|
||||||
|
(label) mulf_init::@8
|
||||||
|
(label) mulf_init::@9
|
||||||
|
(label) mulf_init::@return
|
||||||
|
(byte) mulf_init::c
|
||||||
|
(byte) mulf_init::c#1 c zp[1]:13 2.5384615384615383
|
||||||
|
(byte) mulf_init::c#2 c zp[1]:13 11.0
|
||||||
|
(byte) mulf_init::dir
|
||||||
|
(byte) mulf_init::dir#2 dir zp[1]:14 4.125
|
||||||
|
(byte) mulf_init::dir#4 dir zp[1]:14 11.0
|
||||||
|
(word) mulf_init::sqr
|
||||||
|
(word) mulf_init::sqr#1 sqr zp[2]:11 11.0
|
||||||
|
(word) mulf_init::sqr#2 sqr zp[2]:11 22.0
|
||||||
|
(word) mulf_init::sqr#3 sqr zp[2]:11 9.166666666666666
|
||||||
|
(word) mulf_init::sqr#4 sqr zp[2]:11 5.5
|
||||||
|
(byte*) mulf_init::sqr1_hi
|
||||||
|
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:15 7.333333333333333
|
||||||
|
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:15 2.75
|
||||||
|
(byte*) mulf_init::sqr1_lo
|
||||||
|
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:6 22.0
|
||||||
|
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:6 3.142857142857143
|
||||||
|
(byte*) mulf_init::sqr2_hi
|
||||||
|
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:8 3.6666666666666665
|
||||||
|
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:8 8.25
|
||||||
|
(byte*) mulf_init::sqr2_lo
|
||||||
|
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:17 22.0
|
||||||
|
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:17 4.888888888888889
|
||||||
|
(byte) mulf_init::x_2
|
||||||
|
(byte) mulf_init::x_2#1 reg byte x 11.0
|
||||||
|
(byte) mulf_init::x_2#2 reg byte x 5.5
|
||||||
|
(byte) mulf_init::x_2#3 reg byte x 6.6000000000000005
|
||||||
|
(byte) mulf_init::x_255
|
||||||
|
(byte) mulf_init::x_255#1 reg byte x 6.6000000000000005
|
||||||
|
(byte) mulf_init::x_255#2 reg byte x 8.8
|
||||||
|
(const byte*) mulf_sqr1_hi = { fill( $200, 0) }
|
||||||
|
(const byte*) mulf_sqr1_lo = { fill( $200, 0) }
|
||||||
|
(const byte*) mulf_sqr2_hi = { fill( $200, 0) }
|
||||||
|
(const byte*) mulf_sqr2_lo = { fill( $200, 0) }
|
||||||
|
(void()) prepareBobs()
|
||||||
|
(byte~) prepareBobs::$6 reg byte a 2002.0
|
||||||
|
(label) prepareBobs::@1
|
||||||
|
(label) prepareBobs::@10
|
||||||
|
(label) prepareBobs::@11
|
||||||
|
(label) prepareBobs::@12
|
||||||
|
(label) prepareBobs::@13
|
||||||
|
(label) prepareBobs::@2
|
||||||
|
(label) prepareBobs::@3
|
||||||
|
(label) prepareBobs::@4
|
||||||
|
(label) prepareBobs::@5
|
||||||
|
(label) prepareBobs::@6
|
||||||
|
(label) prepareBobs::@7
|
||||||
|
(label) prepareBobs::@8
|
||||||
|
(label) prepareBobs::@9
|
||||||
|
(label) prepareBobs::@return
|
||||||
|
(byte*) prepareBobs::bob_glyph
|
||||||
|
(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:6 500.5
|
||||||
|
(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:6 429.0
|
||||||
|
(byte*) prepareBobs::bob_table
|
||||||
|
(byte*) prepareBobs::bob_table#0 bob_table zp[2]:15 202.0
|
||||||
|
(byte*) prepareBobs::bob_table#1 bob_table zp[2]:15 667.3333333333334
|
||||||
|
(byte*) prepareBobs::bob_table#2 bob_table zp[2]:15 388.0
|
||||||
|
(byte) prepareBobs::bob_table_idx
|
||||||
|
(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:4 40.4
|
||||||
|
(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:4 19.11764705882353
|
||||||
|
(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:4 11.0
|
||||||
|
(byte) prepareBobs::cell
|
||||||
|
(byte) prepareBobs::cell#1 cell zp[1]:10 2002.0
|
||||||
|
(byte) prepareBobs::cell#2 cell zp[1]:10 300.29999999999995
|
||||||
|
(byte) prepareBobs::shift_x
|
||||||
|
(byte) prepareBobs::shift_x#1 shift_x zp[1]:5 202.0
|
||||||
|
(byte) prepareBobs::shift_x#2 shift_x zp[1]:5 16.833333333333332
|
||||||
|
(byte) prepareBobs::shift_y
|
||||||
|
(byte) prepareBobs::shift_y#1 shift_y zp[1]:2 22.0
|
||||||
|
(byte) prepareBobs::shift_y#2 shift_y zp[1]:2 1.4347826086956523
|
||||||
|
(byte*) progress_cursor
|
||||||
|
(byte*) progress_cursor#15 progress_cursor zp[2]:11 11.0
|
||||||
|
(byte*) progress_cursor#17 progress_cursor zp[2]:11 201.4
|
||||||
|
(byte*) progress_cursor#24 progress_cursor zp[2]:11 71.11764705882355
|
||||||
|
(byte*) progress_cursor#31 progress_cursor zp[2]:11 37.33333333333333
|
||||||
|
(byte*) progress_cursor#8 progress_cursor zp[2]:11 4.0
|
||||||
|
(byte) progress_idx
|
||||||
|
(byte) progress_idx#10 progress_idx zp[1]:3 201.0
|
||||||
|
(byte) progress_idx#16 progress_idx zp[1]:3 11.0
|
||||||
|
(byte) progress_idx#25 progress_idx zp[1]:3 86.07142857142856
|
||||||
|
(byte) progress_idx#31 progress_idx zp[1]:3 37.33333333333333
|
||||||
|
(byte) progress_idx#8 progress_idx zp[1]:3 3.0
|
||||||
|
(void()) progress_inc()
|
||||||
|
(label) progress_inc::@1
|
||||||
|
(label) progress_inc::@2
|
||||||
|
(label) progress_inc::@return
|
||||||
|
(const byte*) progress_inc::progress_chars = { (byte) $20, (byte) $65, (byte) $74, (byte) $75, (byte) $61, (byte) $f6, (byte) $e7, (byte) $ea, (byte) $e0 }
|
||||||
|
(void()) progress_init((byte*) progress_init::line)
|
||||||
|
(label) progress_init::@return
|
||||||
|
(byte*) progress_init::line
|
||||||
|
(void()) protoBobShiftDown()
|
||||||
|
(label) protoBobShiftDown::@1
|
||||||
|
(label) protoBobShiftDown::@2
|
||||||
|
(label) protoBobShiftDown::@3
|
||||||
|
(label) protoBobShiftDown::@return
|
||||||
|
(byte) protoBobShiftDown::i
|
||||||
|
(byte) protoBobShiftDown::i#1 reg byte x 202.0
|
||||||
|
(byte) protoBobShiftDown::i#2 reg byte x 161.6
|
||||||
|
(void()) protoBobShiftRight()
|
||||||
|
(byte~) protoBobShiftRight::$1 reg byte a 2002.0
|
||||||
|
(byte~) protoBobShiftRight::$5 reg byte a 2002.0
|
||||||
|
(byte~) protoBobShiftRight::$6 reg byte a 2002.0
|
||||||
|
(label) protoBobShiftRight::@1
|
||||||
|
(label) protoBobShiftRight::@2
|
||||||
|
(label) protoBobShiftRight::@3
|
||||||
|
(label) protoBobShiftRight::@4
|
||||||
|
(label) protoBobShiftRight::@5
|
||||||
|
(label) protoBobShiftRight::@6
|
||||||
|
(label) protoBobShiftRight::@7
|
||||||
|
(label) protoBobShiftRight::@return
|
||||||
|
(byte) protoBobShiftRight::carry
|
||||||
|
(byte) protoBobShiftRight::carry#1 carry zp[1]:14 111.22222222222223
|
||||||
|
(byte) protoBobShiftRight::carry#10 reg byte y 2002.0
|
||||||
|
(byte) protoBobShiftRight::carry#2 reg byte y 286.0
|
||||||
|
(byte) protoBobShiftRight::i
|
||||||
|
(byte) protoBobShiftRight::i#1 i zp[1]:10 1001.0
|
||||||
|
(byte) protoBobShiftRight::i#2 i zp[1]:10 231.0
|
||||||
|
(byte) protoBobShiftRight::j
|
||||||
|
(byte) protoBobShiftRight::j#1 reg byte x 2002.0
|
||||||
|
(byte) protoBobShiftRight::j#10 reg byte x 1001.0
|
||||||
|
(byte) protoBobShiftRight::j#2 reg byte x 2002.0
|
||||||
|
(byte) protoBobShiftRight::j#3 reg byte x 700.7
|
||||||
|
(byte) protoBobShiftRight::new_carry
|
||||||
|
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
||||||
|
(byte*~) renderBob::$2 zp[2]:11 4.0
|
||||||
|
(byte~) renderBob::$4 reg byte a 4.0
|
||||||
|
(byte~) renderBob::$5 zp[1]:13 2.0
|
||||||
|
(byte~) renderBob::$6 reg byte a 4.0
|
||||||
|
(byte~) renderBob::$8 reg byte a 4.0
|
||||||
|
(label) renderBob::@return
|
||||||
|
(byte) renderBob::bob_table_idx
|
||||||
|
(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186
|
||||||
|
(byte*) renderBob::screen
|
||||||
|
(byte*) renderBob::screen#0 screen zp[2]:11 1.4666666666666666
|
||||||
|
(byte) renderBob::x_char_offset
|
||||||
|
(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:10 0.8
|
||||||
|
(byte) renderBob::xpos
|
||||||
|
(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998
|
||||||
|
(byte) renderBob::y_char_offset
|
||||||
|
(byte) renderBob::y_char_offset#0 reg byte a 4.0
|
||||||
|
(word) renderBob::y_offset
|
||||||
|
(word) renderBob::y_offset#0 y_offset zp[2]:11 4.0
|
||||||
|
(byte) renderBob::ypos
|
||||||
|
(byte) renderBob::ypos#0 reg byte x 15.000000000000002
|
||||||
|
(void()) renderBobCleanup()
|
||||||
|
(byte~) renderBobCleanup::$1 reg byte a 202.0
|
||||||
|
(label) renderBobCleanup::@1
|
||||||
|
(label) renderBobCleanup::@return
|
||||||
|
(byte) renderBobCleanup::i
|
||||||
|
(byte) renderBobCleanup::i#1 reg byte x 151.5
|
||||||
|
(byte) renderBobCleanup::i#2 reg byte x 25.25
|
||||||
|
(byte*) renderBobCleanup::screen
|
||||||
|
(byte*) renderBobCleanup::screen#0 screen zp[2]:15 112.22222222222223
|
||||||
|
(byte**) renderBobCleanupNext
|
||||||
|
(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:6 7.357142857142858
|
||||||
|
(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:6 3.3870967741935485
|
||||||
|
(void()) renderBobInit()
|
||||||
|
(word~) renderBobInit::$0 zp[2]:15 16.5
|
||||||
|
(word~) renderBobInit::$1 zp[2]:15 11.0
|
||||||
|
(byte~) renderBobInit::$4 reg byte a 22.0
|
||||||
|
(byte~) renderBobInit::$5 reg byte a 22.0
|
||||||
|
(word~) renderBobInit::$6 zp[2]:17 22.0
|
||||||
|
(word~) renderBobInit::$7 zp[2]:15 22.0
|
||||||
|
(label) renderBobInit::@1
|
||||||
|
(label) renderBobInit::@2
|
||||||
|
(label) renderBobInit::@return
|
||||||
|
(byte) renderBobInit::i
|
||||||
|
(byte) renderBobInit::i#1 reg byte x 16.5
|
||||||
|
(byte) renderBobInit::i#2 reg byte x 11.0
|
||||||
|
(byte) renderBobInit::y
|
||||||
|
(byte) renderBobInit::y#1 reg byte x 16.5
|
||||||
|
(byte) renderBobInit::y#2 reg byte x 4.714285714285714
|
||||||
|
|
||||||
|
reg byte a [ mulf8s::mulf8s_prepare1_a#0 mulf8s::a#1 mulf8s::a#0 ]
|
||||||
|
reg byte x [ mulf8s::b#2 mulf8s::b#1 mulf8s::b#0 ]
|
||||||
|
reg byte x [ renderBobCleanup::i#2 renderBobCleanup::i#1 ]
|
||||||
|
reg byte x [ renderBobInit::y#2 renderBobInit::y#1 ]
|
||||||
|
reg byte x [ renderBobInit::i#2 renderBobInit::i#1 ]
|
||||||
|
zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::angle#8 main::angle#1 ]
|
||||||
|
zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ]
|
||||||
|
zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ]
|
||||||
|
zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ]
|
||||||
|
reg byte x [ charsetFindOrAddGlyph::glyph_id#11 charsetFindOrAddGlyph::glyph_id#1 ]
|
||||||
|
reg byte y [ charsetFindOrAddGlyph::i1#2 charsetFindOrAddGlyph::i1#1 ]
|
||||||
|
reg byte y [ charsetFindOrAddGlyph::i#2 charsetFindOrAddGlyph::i#1 ]
|
||||||
|
reg byte a [ charsetFindOrAddGlyph::found#2 ]
|
||||||
|
reg byte x [ protoBobShiftRight::j#3 protoBobShiftRight::j#10 protoBobShiftRight::j#2 protoBobShiftRight::j#1 ]
|
||||||
|
reg byte y [ protoBobShiftRight::carry#2 protoBobShiftRight::carry#10 ]
|
||||||
|
reg byte x [ protoBobShiftDown::i#2 protoBobShiftDown::i#1 ]
|
||||||
|
zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 charsetFindOrAddGlyph::glyph#10 charsetFindOrAddGlyph::glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ]
|
||||||
|
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
|
||||||
|
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
|
||||||
|
zp[2]:8 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||||
|
reg byte x [ renderBob::ypos#0 ]
|
||||||
|
reg byte a [ keyboard_key_pressed::return#2 ]
|
||||||
|
reg byte a [ main::$19 ]
|
||||||
|
reg byte a [ keyboard_key_pressed::return#3 ]
|
||||||
|
reg byte a [ main::$21 ]
|
||||||
|
reg byte a [ keyboard_matrix_read::return#2 ]
|
||||||
|
reg byte a [ keyboard_key_pressed::$2 ]
|
||||||
|
reg byte a [ keyboard_key_pressed::return#0 ]
|
||||||
|
reg byte a [ keyboard_matrix_read::return#0 ]
|
||||||
|
zp[1]:10 [ renderBob::x_char_offset#0 protoBobShiftRight::i#2 protoBobShiftRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ]
|
||||||
|
reg byte a [ renderBob::y_char_offset#0 ]
|
||||||
|
reg byte a [ renderBob::$8 ]
|
||||||
|
zp[2]:11 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ]
|
||||||
|
reg byte a [ renderBob::$4 ]
|
||||||
|
zp[1]:13 [ renderBob::$5 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ]
|
||||||
|
reg byte a [ renderBob::$6 ]
|
||||||
|
reg byte x [ renderBob::bob_table_idx#0 ]
|
||||||
|
reg byte a [ mulf8u_prepare::a#0 ]
|
||||||
|
zp[1]:14 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::dir#2 mulf_init::dir#4 protoBobShiftRight::carry#1 ]
|
||||||
|
reg byte a [ mulf8u_prepared::b#0 ]
|
||||||
|
reg byte a [ mulf8s_prepared::$8 ]
|
||||||
|
reg byte a [ mulf8s_prepared::$15 ]
|
||||||
|
reg byte a [ mulf8s_prepared::$12 ]
|
||||||
|
reg byte a [ mulf8s_prepared::$16 ]
|
||||||
|
reg byte a [ renderBobCleanup::$1 ]
|
||||||
|
zp[2]:15 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ]
|
||||||
|
zp[2]:17 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 charsetFindOrAddGlyph::glyph_cursor#11 charsetFindOrAddGlyph::glyph_cursor#1 ]
|
||||||
|
reg byte a [ renderBobInit::$4 ]
|
||||||
|
reg byte a [ renderBobInit::$5 ]
|
||||||
|
reg byte a [ charsetFindOrAddGlyph::return#1 ]
|
||||||
|
reg byte a [ prepareBobs::$6 ]
|
||||||
|
reg byte a [ protoBobShiftRight::$1 ]
|
||||||
|
reg byte a [ protoBobShiftRight::$5 ]
|
||||||
|
reg byte a [ protoBobShiftRight::$6 ]
|
||||||
|
reg byte a [ mulf_init::$1 ]
|
||||||
|
reg byte a [ mulf_init::$4 ]
|
||||||
|
reg byte a [ mulf_init::$5 ]
|
@@ -33,28 +33,24 @@
|
|||||||
.const SIZEOF_POINTER = 2
|
.const SIZEOF_POINTER = 2
|
||||||
.label COS = SIN+$40
|
.label COS = SIN+$40
|
||||||
// BOB charset ID of the next glyph to be added
|
// BOB charset ID of the next glyph to be added
|
||||||
.label bob_charset_next_id = $f
|
.label bob_charset_next_id = $d
|
||||||
// Current index within the progress cursor (0-7)
|
// Current index within the progress cursor (0-7)
|
||||||
.label progress_idx = 3
|
.label progress_idx = 3
|
||||||
// Current position of the progress cursor
|
// Current position of the progress cursor
|
||||||
.label progress_cursor = $c
|
.label progress_cursor = $b
|
||||||
// Pointer to the next clean-up to add
|
// Pointer to the next clean-up to add
|
||||||
// Prepare for next clean-up
|
// Prepare for next clean-up
|
||||||
.label renderBobCleanupNext = 6
|
.label renderBobCleanupNext = 6
|
||||||
// Constants for KickAsm Vogel Sunflower
|
|
||||||
.const PHI = (1+sqrt(5))/2
|
|
||||||
|
|
||||||
|
|
||||||
main: {
|
main: {
|
||||||
.const vicSelectGfxBank1_toDd001_return = 3
|
.const vicSelectGfxBank1_toDd001_return = 3
|
||||||
.const vicSelectGfxBank2_toDd001_return = 3
|
.const vicSelectGfxBank2_toDd001_return = 3
|
||||||
.const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f
|
.const toD0181_return = (>(BOB_SCREEN&$3fff)*4)|(>BOB_CHARSET)/4&$f
|
||||||
.const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f
|
.const toD0182_return = (>(SCREEN_BASIC&$3fff)*4)|(>CHARSET_BASIC)/4&$f
|
||||||
.label __10 = $c
|
.label __10 = $b
|
||||||
.label __12 = $c
|
.label __12 = $b
|
||||||
.label __13 = $c
|
.label __13 = $b
|
||||||
.label x = 9
|
.label x = 8
|
||||||
.label y = $c
|
.label y = $b
|
||||||
.label a = 4
|
.label a = 4
|
||||||
.label r = 3
|
.label r = 3
|
||||||
.label i = 5
|
.label i = 5
|
||||||
@@ -182,14 +178,14 @@ keyboard_matrix_read: {
|
|||||||
// Render a single BOB at a given x/y-position
|
// Render a single BOB at a given x/y-position
|
||||||
// X-position is 0-151. Each x-position is 2 pixels wide.
|
// X-position is 0-151. Each x-position is 2 pixels wide.
|
||||||
// Y-position is 0-183. Each y-position is 1 pixel high.
|
// Y-position is 0-183. Each y-position is 1 pixel high.
|
||||||
// renderBob(byte zeropage($f) xpos, byte register(X) ypos)
|
// renderBob(byte zeropage($e) xpos, byte register(X) ypos)
|
||||||
renderBob: {
|
renderBob: {
|
||||||
.label __2 = $c
|
.label __2 = $b
|
||||||
.label __5 = $e
|
.label __5 = $d
|
||||||
.label xpos = $f
|
.label xpos = $e
|
||||||
.label x_char_offset = $b
|
.label x_char_offset = $a
|
||||||
.label y_offset = $c
|
.label y_offset = $b
|
||||||
.label screen = $c
|
.label screen = $b
|
||||||
lda.z xpos
|
lda.z xpos
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
@@ -273,7 +269,7 @@ renderBob: {
|
|||||||
// Fast multiply two signed bytes to a word result
|
// Fast multiply two signed bytes to a word result
|
||||||
// mulf8s(signed byte register(A) a, signed byte register(X) b)
|
// mulf8s(signed byte register(A) a, signed byte register(X) b)
|
||||||
mulf8s: {
|
mulf8s: {
|
||||||
.label return = $c
|
.label return = $b
|
||||||
jsr mulf8u_prepare
|
jsr mulf8u_prepare
|
||||||
stx.z mulf8s_prepared.b
|
stx.z mulf8s_prepared.b
|
||||||
jsr mulf8s_prepared
|
jsr mulf8s_prepared
|
||||||
@@ -281,11 +277,11 @@ mulf8s: {
|
|||||||
}
|
}
|
||||||
// Calculate fast multiply with a prepared unsigned byte to a word result
|
// Calculate fast multiply with a prepared unsigned byte to a word result
|
||||||
// The prepared number is set by calling mulf8s_prepare(byte a)
|
// The prepared number is set by calling mulf8s_prepare(byte a)
|
||||||
// mulf8s_prepared(signed byte zeropage($f) b)
|
// mulf8s_prepared(signed byte zeropage($e) b)
|
||||||
mulf8s_prepared: {
|
mulf8s_prepared: {
|
||||||
.label memA = $fd
|
.label memA = $fd
|
||||||
.label m = $c
|
.label m = $b
|
||||||
.label b = $f
|
.label b = $e
|
||||||
lda.z b
|
lda.z b
|
||||||
jsr mulf8u_prepared
|
jsr mulf8u_prepared
|
||||||
lda memA
|
lda memA
|
||||||
@@ -312,7 +308,7 @@ mulf8s_prepared: {
|
|||||||
mulf8u_prepared: {
|
mulf8u_prepared: {
|
||||||
.label resL = $fe
|
.label resL = $fe
|
||||||
.label memB = $ff
|
.label memB = $ff
|
||||||
.label return = $c
|
.label return = $b
|
||||||
sta memB
|
sta memB
|
||||||
tax
|
tax
|
||||||
sec
|
sec
|
||||||
@@ -346,7 +342,7 @@ mulf8u_prepare: {
|
|||||||
}
|
}
|
||||||
// Clean Up the rendered BOB's
|
// Clean Up the rendered BOB's
|
||||||
renderBobCleanup: {
|
renderBobCleanup: {
|
||||||
.label screen = $10
|
.label screen = $f
|
||||||
ldx #0
|
ldx #0
|
||||||
__b1:
|
__b1:
|
||||||
txa
|
txa
|
||||||
@@ -411,10 +407,10 @@ memset: {
|
|||||||
}
|
}
|
||||||
// Initialize the tables used by renderBob()
|
// Initialize the tables used by renderBob()
|
||||||
renderBobInit: {
|
renderBobInit: {
|
||||||
.label __0 = $10
|
.label __0 = $f
|
||||||
.label __1 = $10
|
.label __1 = $f
|
||||||
.label __6 = $12
|
.label __6 = $11
|
||||||
.label __7 = $10
|
.label __7 = $f
|
||||||
ldx #0
|
ldx #0
|
||||||
__b1:
|
__b1:
|
||||||
txa
|
txa
|
||||||
@@ -469,11 +465,11 @@ renderBobInit: {
|
|||||||
// Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES
|
// Creates the pre-shifted bobs into BOB_CHARSET and populates the BOB_TABLES
|
||||||
// Modifies PROTO_BOB by shifting it around
|
// Modifies PROTO_BOB by shifting it around
|
||||||
prepareBobs: {
|
prepareBobs: {
|
||||||
.label bob_table = $10
|
.label bob_table = $f
|
||||||
.label shift_y = 2
|
.label shift_y = 2
|
||||||
// Populate charset and tables
|
// Populate charset and tables
|
||||||
.label bob_glyph = 6
|
.label bob_glyph = 6
|
||||||
.label cell = $b
|
.label cell = $a
|
||||||
.label bob_table_idx = 4
|
.label bob_table_idx = 4
|
||||||
.label shift_x = 5
|
.label shift_x = 5
|
||||||
jsr progress_init
|
jsr progress_init
|
||||||
@@ -533,7 +529,7 @@ prepareBobs: {
|
|||||||
jmp __b2
|
jmp __b2
|
||||||
__b6:
|
__b6:
|
||||||
jsr bobCharsetFindOrAddGlyph
|
jsr bobCharsetFindOrAddGlyph
|
||||||
lda.z bobCharsetFindOrAddGlyph.glyph_id
|
txa
|
||||||
// Look for an existing char in BOB_CHARSET
|
// Look for an existing char in BOB_CHARSET
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (bob_table),y
|
sta (bob_table),y
|
||||||
@@ -588,18 +584,14 @@ progress_inc: {
|
|||||||
// bobCharsetFindOrAddGlyph(byte* zeropage(6) bob_glyph)
|
// bobCharsetFindOrAddGlyph(byte* zeropage(6) bob_glyph)
|
||||||
bobCharsetFindOrAddGlyph: {
|
bobCharsetFindOrAddGlyph: {
|
||||||
.label bob_glyph = 6
|
.label bob_glyph = 6
|
||||||
.label i = 8
|
.label glyph_cursor = $11
|
||||||
.label glyph_id = $e
|
|
||||||
.label glyph_cursor = $12
|
|
||||||
lda #<BOB_CHARSET
|
lda #<BOB_CHARSET
|
||||||
sta.z glyph_cursor
|
sta.z glyph_cursor
|
||||||
lda #>BOB_CHARSET
|
lda #>BOB_CHARSET
|
||||||
sta.z glyph_cursor+1
|
sta.z glyph_cursor+1
|
||||||
lda #0
|
ldx #0
|
||||||
sta.z glyph_id
|
|
||||||
__b1:
|
__b1:
|
||||||
lda.z glyph_id
|
cpx.z bob_charset_next_id
|
||||||
cmp.z bob_charset_next_id
|
|
||||||
bne b1
|
bne b1
|
||||||
ldy #0
|
ldy #0
|
||||||
// Not found - add it
|
// Not found - add it
|
||||||
@@ -614,22 +606,15 @@ bobCharsetFindOrAddGlyph: {
|
|||||||
iny
|
iny
|
||||||
jmp __b7
|
jmp __b7
|
||||||
b1:
|
b1:
|
||||||
lda #0
|
ldy #0
|
||||||
sta.z i
|
|
||||||
__b2:
|
__b2:
|
||||||
lda.z i
|
cpy #8
|
||||||
cmp #8
|
|
||||||
bcc __b3
|
bcc __b3
|
||||||
lda #1
|
lda #1
|
||||||
jmp __b5
|
jmp __b5
|
||||||
__b3:
|
__b3:
|
||||||
ldy.z i
|
|
||||||
lda (glyph_cursor),y
|
lda (glyph_cursor),y
|
||||||
tax
|
cmp (bob_glyph),y
|
||||||
lda (bob_glyph),y
|
|
||||||
tay
|
|
||||||
sty.z $ff
|
|
||||||
cpx.z $ff
|
|
||||||
beq __b4
|
beq __b4
|
||||||
lda #0
|
lda #0
|
||||||
__b5:
|
__b5:
|
||||||
@@ -637,7 +622,7 @@ bobCharsetFindOrAddGlyph: {
|
|||||||
beq __b6
|
beq __b6
|
||||||
rts
|
rts
|
||||||
__b6:
|
__b6:
|
||||||
inc.z glyph_id
|
inx
|
||||||
lda #8
|
lda #8
|
||||||
clc
|
clc
|
||||||
adc.z glyph_cursor
|
adc.z glyph_cursor
|
||||||
@@ -647,13 +632,13 @@ bobCharsetFindOrAddGlyph: {
|
|||||||
!:
|
!:
|
||||||
jmp __b1
|
jmp __b1
|
||||||
__b4:
|
__b4:
|
||||||
inc.z i
|
iny
|
||||||
jmp __b2
|
jmp __b2
|
||||||
}
|
}
|
||||||
// Shift PROTO_BOB right one X pixel
|
// Shift PROTO_BOB right one X pixel
|
||||||
shiftProtoBobRight: {
|
shiftProtoBobRight: {
|
||||||
.label carry = $e
|
.label carry = $e
|
||||||
.label i = $b
|
.label i = $a
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #0
|
ldx #0
|
||||||
txa
|
txa
|
||||||
@@ -724,17 +709,17 @@ progress_init: {
|
|||||||
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
|
// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4)
|
||||||
mulf_init: {
|
mulf_init: {
|
||||||
// x/2
|
// x/2
|
||||||
.label c = $f
|
.label c = $d
|
||||||
// Counter used for determining x%2==0
|
// Counter used for determining x%2==0
|
||||||
.label sqr1_hi = $10
|
.label sqr1_hi = $f
|
||||||
// Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
|
// Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4
|
||||||
.label sqr = $c
|
.label sqr = $b
|
||||||
.label sqr1_lo = 6
|
.label sqr1_lo = 6
|
||||||
// Decrease or increase x_255 - initially we decrease
|
// Decrease or increase x_255 - initially we decrease
|
||||||
.label sqr2_hi = 9
|
.label sqr2_hi = 8
|
||||||
.label sqr2_lo = $12
|
.label sqr2_lo = $11
|
||||||
//Start with g(0)=f(255)
|
//Start with g(0)=f(255)
|
||||||
.label dir = 8
|
.label dir = $e
|
||||||
ldx #0
|
ldx #0
|
||||||
lda #<mulf_sqr1_hi+1
|
lda #<mulf_sqr1_hi+1
|
||||||
sta.z sqr1_hi
|
sta.z sqr1_hi
|
||||||
|
@@ -2,581 +2,576 @@
|
|||||||
[0] phi()
|
[0] phi()
|
||||||
to:@1
|
to:@1
|
||||||
@1: scope:[] from @begin
|
@1: scope:[] from @begin
|
||||||
kickasm() {{ .const PHI = (1+sqrt(5))/2
|
[1] phi()
|
||||||
|
[2] call main
|
||||||
}}
|
|
||||||
to:@2
|
|
||||||
@2: scope:[] from @1
|
|
||||||
[2] phi()
|
|
||||||
[3] call main
|
|
||||||
to:@end
|
to:@end
|
||||||
@end: scope:[] from @2
|
@end: scope:[] from @1
|
||||||
[4] phi()
|
[3] phi()
|
||||||
|
|
||||||
(void()) main()
|
(void()) main()
|
||||||
main: scope:[main] from @2
|
main: scope:[main] from @1
|
||||||
[5] phi()
|
[4] phi()
|
||||||
[6] call mulf_init
|
[5] call mulf_init
|
||||||
to:main::@9
|
to:main::@9
|
||||||
main::@9: scope:[main] from main
|
main::@9: scope:[main] from main
|
||||||
[7] phi()
|
[6] phi()
|
||||||
[8] call prepareBobs
|
[7] call prepareBobs
|
||||||
to:main::@10
|
to:main::@10
|
||||||
main::@10: scope:[main] from main::@9
|
main::@10: scope:[main] from main::@9
|
||||||
[9] phi()
|
[8] phi()
|
||||||
[10] call renderBobInit
|
[9] call renderBobInit
|
||||||
to:main::vicSelectGfxBank1
|
to:main::vicSelectGfxBank1
|
||||||
main::vicSelectGfxBank1: scope:[main] from main::@10
|
main::vicSelectGfxBank1: scope:[main] from main::@10
|
||||||
[11] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
[10] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
||||||
to:main::vicSelectGfxBank1_toDd001
|
to:main::vicSelectGfxBank1_toDd001
|
||||||
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||||
[12] phi()
|
[11] phi()
|
||||||
to:main::vicSelectGfxBank1_@1
|
to:main::vicSelectGfxBank1_@1
|
||||||
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
|
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
|
||||||
[13] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
|
[12] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
|
||||||
to:main::toD0181
|
to:main::toD0181
|
||||||
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
|
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
|
||||||
[14] phi()
|
[13] phi()
|
||||||
to:main::@7
|
to:main::@7
|
||||||
main::@7: scope:[main] from main::toD0181
|
main::@7: scope:[main] from main::toD0181
|
||||||
[15] *((const byte*) D018) ← (const byte) main::toD0181_return#0
|
[14] *((const byte*) D018) ← (const byte) main::toD0181_return#0
|
||||||
[16] call memset
|
[15] call memset
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@1: scope:[main] from main::@15 main::@7
|
main::@1: scope:[main] from main::@15 main::@7
|
||||||
[17] (byte) main::angle#8 ← phi( main::@7/(byte) 0 main::@15/(byte) main::angle#1 )
|
[16] (byte) main::angle#8 ← phi( main::@7/(byte) 0 main::@15/(byte) main::angle#1 )
|
||||||
to:main::@2
|
to:main::@2
|
||||||
main::@2: scope:[main] from main::@1 main::@2
|
main::@2: scope:[main] from main::@1 main::@2
|
||||||
[18] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2
|
[17] if(*((const byte*) RASTER)<(byte) $f8) goto main::@2
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[19] *((const byte*) BORDERCOL) ← (byte) $f
|
[18] *((const byte*) BORDERCOL) ← (byte) $f
|
||||||
[20] call renderBobCleanup
|
[19] call renderBobCleanup
|
||||||
to:main::@11
|
to:main::@11
|
||||||
main::@11: scope:[main] from main::@3
|
main::@11: scope:[main] from main::@3
|
||||||
[21] (byte) main::a#6 ← (byte) main::angle#8
|
[20] (byte) main::a#6 ← (byte) main::angle#8
|
||||||
to:main::@4
|
to:main::@4
|
||||||
main::@4: scope:[main] from main::@11 main::@14
|
main::@4: scope:[main] from main::@11 main::@14
|
||||||
[22] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@14/(byte) main::i#1 )
|
[21] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@14/(byte) main::i#1 )
|
||||||
[22] (byte**) renderBobCleanupNext#17 ← phi( main::@11/(const byte**) RENDERBOB_CLEANUP main::@14/(byte**) renderBobCleanupNext#13 )
|
[21] (byte**) renderBobCleanupNext#17 ← phi( main::@11/(const byte**) RENDERBOB_CLEANUP main::@14/(byte**) renderBobCleanupNext#13 )
|
||||||
[22] (byte) main::a#2 ← phi( main::@11/(byte) main::a#6 main::@14/(byte) main::a#1 )
|
[21] (byte) main::a#2 ← phi( main::@11/(byte) main::a#6 main::@14/(byte) main::a#1 )
|
||||||
[22] (signed byte) main::r#2 ← phi( main::@11/(signed byte) $1e main::@14/(signed byte) main::r#1 )
|
[21] (signed byte) main::r#2 ← phi( main::@11/(signed byte) $1e main::@14/(signed byte) main::r#1 )
|
||||||
[23] *((const byte*) BORDERCOL) ← (byte) 1
|
[22] *((const byte*) BORDERCOL) ← (byte) 1
|
||||||
[24] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2
|
[23] (signed byte) mulf8s::a#0 ← (signed byte) main::r#2
|
||||||
[25] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2)
|
[24] (signed byte) mulf8s::b#0 ← *((const signed byte*) COS + (byte) main::a#2)
|
||||||
[26] call mulf8s
|
[25] call mulf8s
|
||||||
[27] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
|
[26] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0
|
||||||
to:main::@12
|
to:main::@12
|
||||||
main::@12: scope:[main] from main::@4
|
main::@12: scope:[main] from main::@4
|
||||||
[28] (signed word~) main::$10 ← (signed word) mulf8s::return#2
|
[27] (signed word~) main::$10 ← (signed word) mulf8s::return#2
|
||||||
[29] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100
|
[28] (signed word) main::x#0 ← (signed word~) main::$10 + (signed word)(number) $4b*(number) $100
|
||||||
[30] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2
|
[29] (signed byte) mulf8s::a#1 ← (signed byte) main::r#2
|
||||||
[31] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2)
|
[30] (signed byte) mulf8s::b#1 ← *((const signed byte*) SIN + (byte) main::a#2)
|
||||||
[32] call mulf8s
|
[31] call mulf8s
|
||||||
[33] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0
|
[32] (signed word) mulf8s::return#3 ← (signed word) mulf8s::return#0
|
||||||
to:main::@13
|
to:main::@13
|
||||||
main::@13: scope:[main] from main::@12
|
main::@13: scope:[main] from main::@12
|
||||||
[34] (signed word~) main::$12 ← (signed word) mulf8s::return#3
|
[33] (signed word~) main::$12 ← (signed word) mulf8s::return#3
|
||||||
[35] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1
|
[34] (signed word~) main::$13 ← (signed word~) main::$12 << (byte) 1
|
||||||
[36] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100
|
[35] (signed word) main::y#0 ← (signed word~) main::$13 + (signed word)(number) $5a*(number) $100
|
||||||
[37] *((const byte*) BORDERCOL) ← (byte) 2
|
[36] *((const byte*) BORDERCOL) ← (byte) 2
|
||||||
[38] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62
|
[37] (byte) main::a#1 ← (byte) main::a#2 + (byte) $62
|
||||||
[39] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3
|
[38] (signed byte) main::r#1 ← (signed byte) main::r#2 + (signed byte) 3
|
||||||
[40] (byte) renderBob::xpos#0 ← > (signed word) main::x#0
|
[39] (byte) renderBob::xpos#0 ← > (signed word) main::x#0
|
||||||
[41] (byte) renderBob::ypos#0 ← > (signed word) main::y#0
|
[40] (byte) renderBob::ypos#0 ← > (signed word) main::y#0
|
||||||
[42] call renderBob
|
[41] call renderBob
|
||||||
to:main::@14
|
to:main::@14
|
||||||
main::@14: scope:[main] from main::@13
|
main::@14: scope:[main] from main::@13
|
||||||
[43] (byte) main::i#1 ← ++ (byte) main::i#2
|
[42] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
[44] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4
|
[43] if((byte) main::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto main::@4
|
||||||
to:main::@5
|
to:main::@5
|
||||||
main::@5: scope:[main] from main::@14
|
main::@5: scope:[main] from main::@14
|
||||||
[45] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3
|
[44] (byte) main::angle#1 ← (byte) main::angle#8 + (byte) 3
|
||||||
[46] *((const byte*) BORDERCOL) ← (byte) 0
|
[45] *((const byte*) BORDERCOL) ← (byte) 0
|
||||||
[47] call keyboard_key_pressed
|
[46] call keyboard_key_pressed
|
||||||
[48] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0
|
[47] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0
|
||||||
to:main::@15
|
to:main::@15
|
||||||
main::@15: scope:[main] from main::@5
|
main::@15: scope:[main] from main::@5
|
||||||
[49] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2
|
[48] (byte~) main::$19 ← (byte) keyboard_key_pressed::return#2
|
||||||
[50] if((byte) 0!=(byte~) main::$19) goto main::@6
|
[49] if((byte) 0!=(byte~) main::$19) goto main::@6
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@6: scope:[main] from main::@15 main::@16
|
main::@6: scope:[main] from main::@15 main::@16
|
||||||
[51] phi()
|
[50] phi()
|
||||||
[52] call keyboard_key_pressed
|
[51] call keyboard_key_pressed
|
||||||
[53] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0
|
[52] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0
|
||||||
to:main::@16
|
to:main::@16
|
||||||
main::@16: scope:[main] from main::@6
|
main::@16: scope:[main] from main::@6
|
||||||
[54] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3
|
[53] (byte~) main::$21 ← (byte) keyboard_key_pressed::return#3
|
||||||
[55] if((byte) 0!=(byte~) main::$21) goto main::@6
|
[54] if((byte) 0!=(byte~) main::$21) goto main::@6
|
||||||
to:main::vicSelectGfxBank2
|
to:main::vicSelectGfxBank2
|
||||||
main::vicSelectGfxBank2: scope:[main] from main::@16
|
main::vicSelectGfxBank2: scope:[main] from main::@16
|
||||||
[56] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
[55] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 3
|
||||||
to:main::vicSelectGfxBank2_toDd001
|
to:main::vicSelectGfxBank2_toDd001
|
||||||
main::vicSelectGfxBank2_toDd001: scope:[main] from main::vicSelectGfxBank2
|
main::vicSelectGfxBank2_toDd001: scope:[main] from main::vicSelectGfxBank2
|
||||||
[57] phi()
|
[56] phi()
|
||||||
to:main::vicSelectGfxBank2_@1
|
to:main::vicSelectGfxBank2_@1
|
||||||
main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001
|
main::vicSelectGfxBank2_@1: scope:[main] from main::vicSelectGfxBank2_toDd001
|
||||||
[58] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0
|
[57] *((const byte*) CIA2_PORT_A) ← (const byte) main::vicSelectGfxBank2_toDd001_return#0
|
||||||
to:main::toD0182
|
to:main::toD0182
|
||||||
main::toD0182: scope:[main] from main::vicSelectGfxBank2_@1
|
main::toD0182: scope:[main] from main::vicSelectGfxBank2_@1
|
||||||
[59] phi()
|
[58] phi()
|
||||||
to:main::@8
|
to:main::@8
|
||||||
main::@8: scope:[main] from main::toD0182
|
main::@8: scope:[main] from main::toD0182
|
||||||
[60] *((const byte*) D018) ← (const byte) main::toD0182_return#0
|
[59] *((const byte*) D018) ← (const byte) main::toD0182_return#0
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@8
|
main::@return: scope:[main] from main::@8
|
||||||
[61] return
|
[60] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||||
keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@5 main::@6
|
keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@5 main::@6
|
||||||
[62] phi()
|
[61] phi()
|
||||||
[63] call keyboard_matrix_read
|
[62] call keyboard_matrix_read
|
||||||
[64] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
|
[63] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
|
||||||
to:keyboard_key_pressed::@1
|
to:keyboard_key_pressed::@1
|
||||||
keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed
|
keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed
|
||||||
[65] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2
|
[64] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2
|
||||||
[66] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0)
|
[65] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte*) keyboard_matrix_col_bitmask+(const byte) keyboard_key_pressed::colidx#0)
|
||||||
to:keyboard_key_pressed::@return
|
to:keyboard_key_pressed::@return
|
||||||
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1
|
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1
|
||||||
[67] return
|
[66] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
|
||||||
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
||||||
[68] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0)
|
[67] *((const byte*) CIA1_PORT_A) ← *((const byte*) keyboard_matrix_row_bitmask+(const byte) keyboard_key_pressed::rowidx#0)
|
||||||
[69] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B)
|
[68] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B)
|
||||||
to:keyboard_matrix_read::@return
|
to:keyboard_matrix_read::@return
|
||||||
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
|
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
|
||||||
[70] return
|
[69] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
||||||
renderBob: scope:[renderBob] from main::@13
|
renderBob: scope:[renderBob] from main::@13
|
||||||
[71] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2
|
[70] (byte) renderBob::x_char_offset#0 ← (byte) renderBob::xpos#0 >> (byte) 2
|
||||||
[72] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3
|
[71] (byte) renderBob::y_char_offset#0 ← (byte) renderBob::ypos#0 >> (byte) 3
|
||||||
[73] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1
|
[72] (byte~) renderBob::$8 ← (byte) renderBob::y_char_offset#0 << (byte) 1
|
||||||
[74] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8)
|
[73] (word) renderBob::y_offset#0 ← *((const word*) MUL40 + (byte~) renderBob::$8)
|
||||||
[75] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0
|
[74] (byte*~) renderBob::$2 ← (const byte*) BOB_SCREEN + (word) renderBob::y_offset#0
|
||||||
[76] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0
|
[75] (byte*) renderBob::screen#0 ← (byte*~) renderBob::$2 + (byte) renderBob::x_char_offset#0
|
||||||
[77] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7
|
[76] (byte~) renderBob::$4 ← (byte) renderBob::ypos#0 & (byte) 7
|
||||||
[78] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2
|
[77] (byte~) renderBob::$5 ← (byte~) renderBob::$4 << (byte) 2
|
||||||
[79] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3
|
[78] (byte~) renderBob::$6 ← (byte) renderBob::xpos#0 & (byte) 3
|
||||||
[80] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6
|
[79] (byte) renderBob::bob_table_idx#0 ← (byte~) renderBob::$5 + (byte~) renderBob::$6
|
||||||
[81] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0
|
[80] *((byte**) renderBobCleanupNext#17) ← (byte*) renderBob::screen#0
|
||||||
[82] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER
|
[81] (byte**) renderBobCleanupNext#13 ← (byte**) renderBobCleanupNext#17 + (const byte) SIZEOF_POINTER
|
||||||
[83] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0)
|
[82] *((byte*) renderBob::screen#0) ← *((const byte*) BOB_TABLES + (byte) renderBob::bob_table_idx#0)
|
||||||
[84] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[83] *((byte*) renderBob::screen#0 + (byte) $28) ← *((const byte*) BOB_TABLES+(byte) 1*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[85] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[84] *((byte*) renderBob::screen#0 + (byte) $50) ← *((const byte*) BOB_TABLES+(byte) 2*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[86] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[85] *((byte*) renderBob::screen#0 + (byte) 1) ← *((const byte*) BOB_TABLES+(byte) 3*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[87] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[86] *((byte*) renderBob::screen#0 + (byte) $29) ← *((const byte*) BOB_TABLES+(byte) 4*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[88] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[87] *((byte*) renderBob::screen#0 + (byte) $51) ← *((const byte*) BOB_TABLES+(byte) 5*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[89] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[88] *((byte*) renderBob::screen#0 + (byte) 2) ← *((const byte*) BOB_TABLES+(byte) 6*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[90] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[89] *((byte*) renderBob::screen#0 + (byte) $2a) ← *((const byte*) BOB_TABLES+(byte) 7*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
[91] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
[90] *((byte*) renderBob::screen#0 + (byte) $52) ← *((const byte*) BOB_TABLES+(byte) 8*(const byte) BOB_SUBTABLE_SIZE + (byte) renderBob::bob_table_idx#0)
|
||||||
to:renderBob::@return
|
to:renderBob::@return
|
||||||
renderBob::@return: scope:[renderBob] from renderBob
|
renderBob::@return: scope:[renderBob] from renderBob
|
||||||
[92] return
|
[91] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
|
(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b)
|
||||||
mulf8s: scope:[mulf8s] from main::@12 main::@4
|
mulf8s: scope:[mulf8s] from main::@12 main::@4
|
||||||
[93] (signed byte) mulf8s::b#2 ← phi( main::@12/(signed byte) mulf8s::b#1 main::@4/(signed byte) mulf8s::b#0 )
|
[92] (signed byte) mulf8s::b#2 ← phi( main::@12/(signed byte) mulf8s::b#1 main::@4/(signed byte) mulf8s::b#0 )
|
||||||
[93] (signed byte) mulf8s::mulf8s_prepare1_a#0 ← phi( main::@12/(signed byte) mulf8s::a#1 main::@4/(signed byte) mulf8s::a#0 )
|
[92] (signed byte) mulf8s::mulf8s_prepare1_a#0 ← phi( main::@12/(signed byte) mulf8s::a#1 main::@4/(signed byte) mulf8s::a#0 )
|
||||||
to:mulf8s::mulf8s_prepare1
|
to:mulf8s::mulf8s_prepare1
|
||||||
mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s
|
mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s
|
||||||
[94] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0
|
[93] (byte) mulf8u_prepare::a#0 ← (byte)(signed byte) mulf8s::mulf8s_prepare1_a#0
|
||||||
[95] call mulf8u_prepare
|
[94] call mulf8u_prepare
|
||||||
to:mulf8s::@1
|
to:mulf8s::@1
|
||||||
mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1
|
mulf8s::@1: scope:[mulf8s] from mulf8s::mulf8s_prepare1
|
||||||
[96] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2
|
[95] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#2
|
||||||
[97] call mulf8s_prepared
|
[96] call mulf8s_prepared
|
||||||
to:mulf8s::@2
|
to:mulf8s::@2
|
||||||
mulf8s::@2: scope:[mulf8s] from mulf8s::@1
|
mulf8s::@2: scope:[mulf8s] from mulf8s::@1
|
||||||
[98] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
|
[97] (signed word) mulf8s::return#0 ← (signed word)(word) mulf8s_prepared::m#4
|
||||||
to:mulf8s::@return
|
to:mulf8s::@return
|
||||||
mulf8s::@return: scope:[mulf8s] from mulf8s::@2
|
mulf8s::@return: scope:[mulf8s] from mulf8s::@2
|
||||||
[99] return
|
[98] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||||
mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1
|
mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@1
|
||||||
[100] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0
|
[99] (byte) mulf8u_prepared::b#0 ← (byte)(signed byte) mulf8s_prepared::b#0
|
||||||
[101] call mulf8u_prepared
|
[100] call mulf8u_prepared
|
||||||
[102] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
|
[101] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
|
||||||
to:mulf8s_prepared::@5
|
to:mulf8s_prepared::@5
|
||||||
mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared
|
mulf8s_prepared::@5: scope:[mulf8s_prepared] from mulf8s_prepared
|
||||||
[103] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2
|
[102] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2
|
||||||
[104] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1
|
[103] if(*((const signed byte*) mulf8s_prepared::memA)>=(signed byte) 0) goto mulf8s_prepared::@1
|
||||||
to:mulf8s_prepared::@3
|
to:mulf8s_prepared::@3
|
||||||
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5
|
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@5
|
||||||
[105] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
|
[104] (byte~) mulf8s_prepared::$8 ← > (word) mulf8s_prepared::m#0
|
||||||
[106] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
|
[105] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$8 - (byte)(signed byte) mulf8s_prepared::b#0
|
||||||
[107] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
[106] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||||
to:mulf8s_prepared::@1
|
to:mulf8s_prepared::@1
|
||||||
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5
|
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@5
|
||||||
[108] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
|
[107] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@5/(word) mulf8s_prepared::m#0 )
|
||||||
[109] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
|
[108] if((signed byte) mulf8s_prepared::b#0>=(signed byte) 0) goto mulf8s_prepared::@2
|
||||||
to:mulf8s_prepared::@4
|
to:mulf8s_prepared::@4
|
||||||
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
||||||
[110] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
|
[109] (byte~) mulf8s_prepared::$12 ← > (word) mulf8s_prepared::m#5
|
||||||
[111] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA)
|
[110] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$12 - (byte)*((const signed byte*) mulf8s_prepared::memA)
|
||||||
[112] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
[111] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||||
to:mulf8s_prepared::@2
|
to:mulf8s_prepared::@2
|
||||||
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
||||||
[113] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
[112] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||||
to:mulf8s_prepared::@return
|
to:mulf8s_prepared::@return
|
||||||
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||||
[114] return
|
[113] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
|
(word()) mulf8u_prepared((byte) mulf8u_prepared::b)
|
||||||
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
|
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
|
||||||
[115] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0
|
[114] *((const byte*) mulf8u_prepared::memB) ← (byte) mulf8u_prepared::b#0
|
||||||
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||||
[117] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL)
|
[116] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB) w= *((const byte*) mulf8u_prepared::resL)
|
||||||
to:mulf8u_prepared::@return
|
to:mulf8u_prepared::@return
|
||||||
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
||||||
[118] return
|
[117] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
||||||
mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1
|
mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1
|
||||||
[119] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0
|
[118] *((const byte*) mulf8u_prepare::memA) ← (byte) mulf8u_prepare::a#0
|
||||||
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
||||||
to:mulf8u_prepare::@return
|
to:mulf8u_prepare::@return
|
||||||
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
||||||
[121] return
|
[120] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) renderBobCleanup()
|
(void()) renderBobCleanup()
|
||||||
renderBobCleanup: scope:[renderBobCleanup] from main::@3
|
renderBobCleanup: scope:[renderBobCleanup] from main::@3
|
||||||
[122] phi()
|
[121] phi()
|
||||||
to:renderBobCleanup::@1
|
to:renderBobCleanup::@1
|
||||||
renderBobCleanup::@1: scope:[renderBobCleanup] from renderBobCleanup renderBobCleanup::@1
|
renderBobCleanup::@1: scope:[renderBobCleanup] from renderBobCleanup renderBobCleanup::@1
|
||||||
[123] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 )
|
[122] (byte) renderBobCleanup::i#2 ← phi( renderBobCleanup/(byte) 0 renderBobCleanup::@1/(byte) renderBobCleanup::i#1 )
|
||||||
[124] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1
|
[123] (byte~) renderBobCleanup::$1 ← (byte) renderBobCleanup::i#2 << (byte) 1
|
||||||
[125] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1)
|
[124] (byte*) renderBobCleanup::screen#0 ← *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobCleanup::$1)
|
||||||
[126] *((byte*) renderBobCleanup::screen#0) ← (byte) 0
|
[125] *((byte*) renderBobCleanup::screen#0) ← (byte) 0
|
||||||
[127] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0
|
[126] *((byte*) renderBobCleanup::screen#0 + (byte) $28) ← (byte) 0
|
||||||
[128] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0
|
[127] *((byte*) renderBobCleanup::screen#0 + (byte) $50) ← (byte) 0
|
||||||
[129] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0
|
[128] *((byte*) renderBobCleanup::screen#0 + (byte) 1) ← (byte) 0
|
||||||
[130] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0
|
[129] *((byte*) renderBobCleanup::screen#0 + (byte) $29) ← (byte) 0
|
||||||
[131] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0
|
[130] *((byte*) renderBobCleanup::screen#0 + (byte) $51) ← (byte) 0
|
||||||
[132] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0
|
[131] *((byte*) renderBobCleanup::screen#0 + (byte) 2) ← (byte) 0
|
||||||
[133] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0
|
[132] *((byte*) renderBobCleanup::screen#0 + (byte) $2a) ← (byte) 0
|
||||||
[134] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0
|
[133] *((byte*) renderBobCleanup::screen#0 + (byte) $52) ← (byte) 0
|
||||||
[135] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2
|
[134] (byte) renderBobCleanup::i#1 ← ++ (byte) renderBobCleanup::i#2
|
||||||
[136] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1
|
[135] if((byte) renderBobCleanup::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobCleanup::@1
|
||||||
to:renderBobCleanup::@return
|
to:renderBobCleanup::@return
|
||||||
renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@1
|
renderBobCleanup::@return: scope:[renderBobCleanup] from renderBobCleanup::@1
|
||||||
[137] return
|
[136] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from main::@7
|
memset: scope:[memset] from main::@7
|
||||||
[138] phi()
|
[137] phi()
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset memset::@2
|
memset::@1: scope:[memset] from memset memset::@2
|
||||||
[139] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
[138] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
||||||
[140] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
[139] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
||||||
to:memset::@return
|
to:memset::@return
|
||||||
memset::@return: scope:[memset] from memset::@1
|
memset::@return: scope:[memset] from memset::@1
|
||||||
[141] return
|
[140] return
|
||||||
to:@return
|
to:@return
|
||||||
memset::@2: scope:[memset] from memset::@1
|
memset::@2: scope:[memset] from memset::@1
|
||||||
[142] *((byte*) memset::dst#2) ← (const byte) memset::c#0
|
[141] *((byte*) memset::dst#2) ← (const byte) memset::c#0
|
||||||
[143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
[142] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
|
|
||||||
(void()) renderBobInit()
|
(void()) renderBobInit()
|
||||||
renderBobInit: scope:[renderBobInit] from main::@10
|
renderBobInit: scope:[renderBobInit] from main::@10
|
||||||
[144] phi()
|
[143] phi()
|
||||||
to:renderBobInit::@1
|
to:renderBobInit::@1
|
||||||
renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1
|
renderBobInit::@1: scope:[renderBobInit] from renderBobInit renderBobInit::@1
|
||||||
[145] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 )
|
[144] (byte) renderBobInit::y#2 ← phi( renderBobInit/(byte) 0 renderBobInit::@1/(byte) renderBobInit::y#1 )
|
||||||
[146] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2
|
[145] (word~) renderBobInit::$0 ← (word)(byte) renderBobInit::y#2
|
||||||
[147] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2
|
[146] (word~) renderBobInit::$6 ← (word~) renderBobInit::$0 << (byte) 2
|
||||||
[148] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0
|
[147] (word~) renderBobInit::$7 ← (word~) renderBobInit::$6 + (word~) renderBobInit::$0
|
||||||
[149] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3
|
[148] (word~) renderBobInit::$1 ← (word~) renderBobInit::$7 << (byte) 3
|
||||||
[150] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1
|
[149] (byte~) renderBobInit::$4 ← (byte) renderBobInit::y#2 << (byte) 1
|
||||||
[151] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1
|
[150] *((const word*) MUL40 + (byte~) renderBobInit::$4) ← (word~) renderBobInit::$1
|
||||||
[152] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2
|
[151] (byte) renderBobInit::y#1 ← ++ (byte) renderBobInit::y#2
|
||||||
[153] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1
|
[152] if((byte) renderBobInit::y#1!=(byte) $20) goto renderBobInit::@1
|
||||||
to:renderBobInit::@2
|
to:renderBobInit::@2
|
||||||
renderBobInit::@2: scope:[renderBobInit] from renderBobInit::@1 renderBobInit::@2
|
renderBobInit::@2: scope:[renderBobInit] from renderBobInit::@1 renderBobInit::@2
|
||||||
[154] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 )
|
[153] (byte) renderBobInit::i#2 ← phi( renderBobInit::@1/(byte) 0 renderBobInit::@2/(byte) renderBobInit::i#1 )
|
||||||
[155] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1
|
[154] (byte~) renderBobInit::$5 ← (byte) renderBobInit::i#2 << (byte) 1
|
||||||
[156] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN
|
[155] *((const byte**) RENDERBOB_CLEANUP + (byte~) renderBobInit::$5) ← (const byte*) BOB_SCREEN
|
||||||
[157] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2
|
[156] (byte) renderBobInit::i#1 ← ++ (byte) renderBobInit::i#2
|
||||||
[158] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2
|
[157] if((byte) renderBobInit::i#1!=(const byte) NUM_BOBS-(byte) 1+(byte) 1) goto renderBobInit::@2
|
||||||
to:renderBobInit::@return
|
to:renderBobInit::@return
|
||||||
renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@2
|
renderBobInit::@return: scope:[renderBobInit] from renderBobInit::@2
|
||||||
[159] return
|
[158] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) prepareBobs()
|
(void()) prepareBobs()
|
||||||
prepareBobs: scope:[prepareBobs] from main::@9
|
prepareBobs: scope:[prepareBobs] from main::@9
|
||||||
[160] phi()
|
[159] phi()
|
||||||
[161] call progress_init
|
[160] call progress_init
|
||||||
to:prepareBobs::@8
|
to:prepareBobs::@8
|
||||||
prepareBobs::@8: scope:[prepareBobs] from prepareBobs
|
prepareBobs::@8: scope:[prepareBobs] from prepareBobs
|
||||||
[162] phi()
|
[161] phi()
|
||||||
[163] call bobCharsetFindOrAddGlyph
|
[162] call bobCharsetFindOrAddGlyph
|
||||||
to:prepareBobs::@1
|
to:prepareBobs::@1
|
||||||
prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@8 prepareBobs::@9
|
prepareBobs::@1: scope:[prepareBobs] from prepareBobs::@8 prepareBobs::@9
|
||||||
[164] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 )
|
[163] (byte) prepareBobs::bob_table_idx#6 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::bob_table_idx#12 )
|
||||||
[164] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 )
|
[163] (byte) bob_charset_next_id#14 ← phi( prepareBobs::@8/(byte) bob_charset_next_id#16 prepareBobs::@9/(byte) bob_charset_next_id#30 )
|
||||||
[164] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 )
|
[163] (byte) progress_idx#16 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) progress_idx#31 )
|
||||||
[164] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) SCREEN_BASIC prepareBobs::@9/(byte*) progress_cursor#31 )
|
[163] (byte*) progress_cursor#15 ← phi( prepareBobs::@8/(const byte*) SCREEN_BASIC prepareBobs::@9/(byte*) progress_cursor#31 )
|
||||||
[164] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 )
|
[163] (byte) prepareBobs::shift_y#2 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@9/(byte) prepareBobs::shift_y#1 )
|
||||||
[165] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2
|
[164] if((byte) prepareBobs::shift_y#2<(const byte) BOB_SHIFTS_Y) goto prepareBobs::@2
|
||||||
to:prepareBobs::@return
|
to:prepareBobs::@return
|
||||||
prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1
|
prepareBobs::@return: scope:[prepareBobs] from prepareBobs::@1
|
||||||
[166] return
|
[165] return
|
||||||
to:@return
|
to:@return
|
||||||
prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1 prepareBobs::@13
|
prepareBobs::@2: scope:[prepareBobs] from prepareBobs::@1 prepareBobs::@13
|
||||||
[167] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 )
|
[166] (byte) progress_idx#31 ← phi( prepareBobs::@1/(byte) progress_idx#16 prepareBobs::@13/(byte) progress_idx#25 )
|
||||||
[167] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 )
|
[166] (byte*) progress_cursor#31 ← phi( prepareBobs::@1/(byte*) progress_cursor#15 prepareBobs::@13/(byte*) progress_cursor#24 )
|
||||||
[167] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 )
|
[166] (byte) bob_charset_next_id#30 ← phi( prepareBobs::@1/(byte) bob_charset_next_id#14 prepareBobs::@13/(byte) bob_charset_next_id#21 )
|
||||||
[167] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 )
|
[166] (byte) prepareBobs::bob_table_idx#12 ← phi( prepareBobs::@1/(byte) prepareBobs::bob_table_idx#6 prepareBobs::@13/(byte) prepareBobs::bob_table_idx#1 )
|
||||||
[167] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 )
|
[166] (byte) prepareBobs::shift_x#2 ← phi( prepareBobs::@1/(byte) 0 prepareBobs::@13/(byte) prepareBobs::shift_x#1 )
|
||||||
[168] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3
|
[167] if((byte) prepareBobs::shift_x#2<(const byte) BOB_SHIFTS_X) goto prepareBobs::@3
|
||||||
to:prepareBobs::@4
|
to:prepareBobs::@4
|
||||||
prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2
|
prepareBobs::@4: scope:[prepareBobs] from prepareBobs::@2
|
||||||
[169] phi()
|
[168] phi()
|
||||||
[170] call shiftProtoBobDown
|
[169] call shiftProtoBobDown
|
||||||
to:prepareBobs::@9
|
to:prepareBobs::@9
|
||||||
prepareBobs::@9: scope:[prepareBobs] from prepareBobs::@4
|
prepareBobs::@9: scope:[prepareBobs] from prepareBobs::@4
|
||||||
[171] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2
|
[170] (byte) prepareBobs::shift_y#1 ← ++ (byte) prepareBobs::shift_y#2
|
||||||
to:prepareBobs::@1
|
to:prepareBobs::@1
|
||||||
prepareBobs::@3: scope:[prepareBobs] from prepareBobs::@2
|
prepareBobs::@3: scope:[prepareBobs] from prepareBobs::@2
|
||||||
[172] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12
|
[171] (byte*) prepareBobs::bob_table#0 ← (const byte*) BOB_TABLES + (byte) prepareBobs::bob_table_idx#12
|
||||||
to:prepareBobs::@5
|
to:prepareBobs::@5
|
||||||
prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@11 prepareBobs::@3
|
prepareBobs::@5: scope:[prepareBobs] from prepareBobs::@11 prepareBobs::@3
|
||||||
[173] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 )
|
[172] (byte*) progress_cursor#24 ← phi( prepareBobs::@11/(byte*) progress_cursor#17 prepareBobs::@3/(byte*) progress_cursor#31 )
|
||||||
[173] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 )
|
[172] (byte) progress_idx#25 ← phi( prepareBobs::@11/(byte) progress_idx#10 prepareBobs::@3/(byte) progress_idx#31 )
|
||||||
[173] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 )
|
[172] (byte*) prepareBobs::bob_table#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_table#1 prepareBobs::@3/(byte*) prepareBobs::bob_table#0 )
|
||||||
[173] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 )
|
[172] (byte) bob_charset_next_id#21 ← phi( prepareBobs::@11/(byte) bob_charset_next_id#16 prepareBobs::@3/(byte) bob_charset_next_id#30 )
|
||||||
[173] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB )
|
[172] (byte*) prepareBobs::bob_glyph#2 ← phi( prepareBobs::@11/(byte*) prepareBobs::bob_glyph#1 prepareBobs::@3/(const byte*) PROTO_BOB )
|
||||||
[173] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 )
|
[172] (byte) prepareBobs::cell#2 ← phi( prepareBobs::@11/(byte) prepareBobs::cell#1 prepareBobs::@3/(byte) 0 )
|
||||||
[174] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6
|
[173] if((byte) prepareBobs::cell#2<(byte) 9) goto prepareBobs::@6
|
||||||
to:prepareBobs::@7
|
to:prepareBobs::@7
|
||||||
prepareBobs::@7: scope:[prepareBobs] from prepareBobs::@5
|
prepareBobs::@7: scope:[prepareBobs] from prepareBobs::@5
|
||||||
[175] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12
|
[174] (byte) prepareBobs::bob_table_idx#1 ← ++ (byte) prepareBobs::bob_table_idx#12
|
||||||
[176] call shiftProtoBobRight
|
[175] call shiftProtoBobRight
|
||||||
to:prepareBobs::@12
|
to:prepareBobs::@12
|
||||||
prepareBobs::@12: scope:[prepareBobs] from prepareBobs::@7
|
prepareBobs::@12: scope:[prepareBobs] from prepareBobs::@7
|
||||||
[177] phi()
|
[176] phi()
|
||||||
[178] call shiftProtoBobRight
|
[177] call shiftProtoBobRight
|
||||||
to:prepareBobs::@13
|
to:prepareBobs::@13
|
||||||
prepareBobs::@13: scope:[prepareBobs] from prepareBobs::@12
|
prepareBobs::@13: scope:[prepareBobs] from prepareBobs::@12
|
||||||
[179] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2
|
[178] (byte) prepareBobs::shift_x#1 ← ++ (byte) prepareBobs::shift_x#2
|
||||||
to:prepareBobs::@2
|
to:prepareBobs::@2
|
||||||
prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@5
|
prepareBobs::@6: scope:[prepareBobs] from prepareBobs::@5
|
||||||
[180] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2
|
[179] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2
|
||||||
[181] call bobCharsetFindOrAddGlyph
|
[180] call bobCharsetFindOrAddGlyph
|
||||||
[182] (byte) bobCharsetFindOrAddGlyph::return#1 ← (byte) bobCharsetFindOrAddGlyph::glyph_id#11
|
[181] (byte) bobCharsetFindOrAddGlyph::return#1 ← (byte) bobCharsetFindOrAddGlyph::glyph_id#11
|
||||||
to:prepareBobs::@10
|
to:prepareBobs::@10
|
||||||
prepareBobs::@10: scope:[prepareBobs] from prepareBobs::@6
|
prepareBobs::@10: scope:[prepareBobs] from prepareBobs::@6
|
||||||
[183] (byte~) prepareBobs::$6 ← (byte) bobCharsetFindOrAddGlyph::return#1
|
[182] (byte~) prepareBobs::$6 ← (byte) bobCharsetFindOrAddGlyph::return#1
|
||||||
[184] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6
|
[183] *((byte*) prepareBobs::bob_table#2) ← (byte~) prepareBobs::$6
|
||||||
[185] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8
|
[184] (byte*) prepareBobs::bob_glyph#1 ← (byte*) prepareBobs::bob_glyph#2 + (byte) 8
|
||||||
[186] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
|
[185] (byte*) prepareBobs::bob_table#1 ← (byte*) prepareBobs::bob_table#2 + (const byte) BOB_SHIFTS_X*(const byte) BOB_SHIFTS_Y
|
||||||
[187] call progress_inc
|
[186] call progress_inc
|
||||||
to:prepareBobs::@11
|
to:prepareBobs::@11
|
||||||
prepareBobs::@11: scope:[prepareBobs] from prepareBobs::@10
|
prepareBobs::@11: scope:[prepareBobs] from prepareBobs::@10
|
||||||
[188] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2
|
[187] (byte) prepareBobs::cell#1 ← ++ (byte) prepareBobs::cell#2
|
||||||
to:prepareBobs::@5
|
to:prepareBobs::@5
|
||||||
|
|
||||||
(void()) progress_inc()
|
(void()) progress_inc()
|
||||||
progress_inc: scope:[progress_inc] from prepareBobs::@10
|
progress_inc: scope:[progress_inc] from prepareBobs::@10
|
||||||
[189] (byte) progress_idx#8 ← ++ (byte) progress_idx#25
|
[188] (byte) progress_idx#8 ← ++ (byte) progress_idx#25
|
||||||
[190] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1
|
[189] if((byte) progress_idx#8!=(byte) 8) goto progress_inc::@1
|
||||||
to:progress_inc::@2
|
to:progress_inc::@2
|
||||||
progress_inc::@2: scope:[progress_inc] from progress_inc
|
progress_inc::@2: scope:[progress_inc] from progress_inc
|
||||||
[191] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8)
|
[190] *((byte*) progress_cursor#24) ← *((const byte*) progress_inc::progress_chars+(byte) 8)
|
||||||
[192] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24
|
[191] (byte*) progress_cursor#8 ← ++ (byte*) progress_cursor#24
|
||||||
to:progress_inc::@1
|
to:progress_inc::@1
|
||||||
progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2
|
progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2
|
||||||
[193] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 )
|
[192] (byte*) progress_cursor#17 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#8 )
|
||||||
[193] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 )
|
[192] (byte) progress_idx#10 ← phi( progress_inc/(byte) progress_idx#8 progress_inc::@2/(byte) 0 )
|
||||||
[194] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10)
|
[193] *((byte*) progress_cursor#17) ← *((const byte*) progress_inc::progress_chars + (byte) progress_idx#10)
|
||||||
to:progress_inc::@return
|
to:progress_inc::@return
|
||||||
progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||||
[195] return
|
[194] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(byte()) bobCharsetFindOrAddGlyph((byte*) bobCharsetFindOrAddGlyph::bob_glyph)
|
(byte()) bobCharsetFindOrAddGlyph((byte*) bobCharsetFindOrAddGlyph::bob_glyph)
|
||||||
bobCharsetFindOrAddGlyph: scope:[bobCharsetFindOrAddGlyph] from prepareBobs::@6 prepareBobs::@8
|
bobCharsetFindOrAddGlyph: scope:[bobCharsetFindOrAddGlyph] from prepareBobs::@6 prepareBobs::@8
|
||||||
[196] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 )
|
[195] (byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 ← phi( prepareBobs::@8/(const byte*) PROTO_BOB+(byte) $30 prepareBobs::@6/(byte*) bobCharsetFindOrAddGlyph::bob_glyph#1 )
|
||||||
[196] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 )
|
[195] (byte) bob_charset_next_id#23 ← phi( prepareBobs::@8/(byte) 0 prepareBobs::@6/(byte) bob_charset_next_id#21 )
|
||||||
to:bobCharsetFindOrAddGlyph::@1
|
to:bobCharsetFindOrAddGlyph::@1
|
||||||
bobCharsetFindOrAddGlyph::@1: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph bobCharsetFindOrAddGlyph::@6
|
bobCharsetFindOrAddGlyph::@1: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph bobCharsetFindOrAddGlyph::@6
|
||||||
[197] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 ← phi( bobCharsetFindOrAddGlyph/(const byte*) BOB_CHARSET bobCharsetFindOrAddGlyph::@6/(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 )
|
[196] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 ← phi( bobCharsetFindOrAddGlyph/(const byte*) BOB_CHARSET bobCharsetFindOrAddGlyph::@6/(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 )
|
||||||
[197] (byte) bobCharsetFindOrAddGlyph::glyph_id#11 ← phi( bobCharsetFindOrAddGlyph/(byte) 0 bobCharsetFindOrAddGlyph::@6/(byte) bobCharsetFindOrAddGlyph::glyph_id#1 )
|
[196] (byte) bobCharsetFindOrAddGlyph::glyph_id#11 ← phi( bobCharsetFindOrAddGlyph/(byte) 0 bobCharsetFindOrAddGlyph::@6/(byte) bobCharsetFindOrAddGlyph::glyph_id#1 )
|
||||||
[198] if((byte) bobCharsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto bobCharsetFindOrAddGlyph::@2
|
[197] if((byte) bobCharsetFindOrAddGlyph::glyph_id#11!=(byte) bob_charset_next_id#23) goto bobCharsetFindOrAddGlyph::@2
|
||||||
to:bobCharsetFindOrAddGlyph::@7
|
to:bobCharsetFindOrAddGlyph::@7
|
||||||
bobCharsetFindOrAddGlyph::@7: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@1 bobCharsetFindOrAddGlyph::@8
|
bobCharsetFindOrAddGlyph::@7: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@1 bobCharsetFindOrAddGlyph::@8
|
||||||
[199] (byte) bobCharsetFindOrAddGlyph::i1#2 ← phi( bobCharsetFindOrAddGlyph::@8/(byte) bobCharsetFindOrAddGlyph::i1#1 bobCharsetFindOrAddGlyph::@1/(byte) 0 )
|
[198] (byte) bobCharsetFindOrAddGlyph::i1#2 ← phi( bobCharsetFindOrAddGlyph::@8/(byte) bobCharsetFindOrAddGlyph::i1#1 bobCharsetFindOrAddGlyph::@1/(byte) 0 )
|
||||||
[200] if((byte) bobCharsetFindOrAddGlyph::i1#2<(byte) 8) goto bobCharsetFindOrAddGlyph::@8
|
[199] if((byte) bobCharsetFindOrAddGlyph::i1#2<(byte) 8) goto bobCharsetFindOrAddGlyph::@8
|
||||||
to:bobCharsetFindOrAddGlyph::@9
|
to:bobCharsetFindOrAddGlyph::@9
|
||||||
bobCharsetFindOrAddGlyph::@9: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@7
|
bobCharsetFindOrAddGlyph::@9: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@7
|
||||||
[201] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23
|
[200] (byte) bob_charset_next_id#8 ← ++ (byte) bob_charset_next_id#23
|
||||||
to:bobCharsetFindOrAddGlyph::@return
|
to:bobCharsetFindOrAddGlyph::@return
|
||||||
bobCharsetFindOrAddGlyph::@return: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@5 bobCharsetFindOrAddGlyph::@9
|
bobCharsetFindOrAddGlyph::@return: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@5 bobCharsetFindOrAddGlyph::@9
|
||||||
[202] (byte) bob_charset_next_id#16 ← phi( bobCharsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 bobCharsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 )
|
[201] (byte) bob_charset_next_id#16 ← phi( bobCharsetFindOrAddGlyph::@5/(byte) bob_charset_next_id#23 bobCharsetFindOrAddGlyph::@9/(byte) bob_charset_next_id#8 )
|
||||||
[203] return
|
[202] return
|
||||||
to:@return
|
to:@return
|
||||||
bobCharsetFindOrAddGlyph::@8: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@7
|
bobCharsetFindOrAddGlyph::@8: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@7
|
||||||
[204] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2)
|
[203] *((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i1#2) ← *((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i1#2)
|
||||||
[205] (byte) bobCharsetFindOrAddGlyph::i1#1 ← ++ (byte) bobCharsetFindOrAddGlyph::i1#2
|
[204] (byte) bobCharsetFindOrAddGlyph::i1#1 ← ++ (byte) bobCharsetFindOrAddGlyph::i1#2
|
||||||
to:bobCharsetFindOrAddGlyph::@7
|
to:bobCharsetFindOrAddGlyph::@7
|
||||||
bobCharsetFindOrAddGlyph::@2: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@1 bobCharsetFindOrAddGlyph::@4
|
bobCharsetFindOrAddGlyph::@2: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@1 bobCharsetFindOrAddGlyph::@4
|
||||||
[206] (byte) bobCharsetFindOrAddGlyph::i#2 ← phi( bobCharsetFindOrAddGlyph::@1/(byte) 0 bobCharsetFindOrAddGlyph::@4/(byte) bobCharsetFindOrAddGlyph::i#1 )
|
[205] (byte) bobCharsetFindOrAddGlyph::i#2 ← phi( bobCharsetFindOrAddGlyph::@1/(byte) 0 bobCharsetFindOrAddGlyph::@4/(byte) bobCharsetFindOrAddGlyph::i#1 )
|
||||||
[207] if((byte) bobCharsetFindOrAddGlyph::i#2<(byte) 8) goto bobCharsetFindOrAddGlyph::@3
|
[206] if((byte) bobCharsetFindOrAddGlyph::i#2<(byte) 8) goto bobCharsetFindOrAddGlyph::@3
|
||||||
to:bobCharsetFindOrAddGlyph::@5
|
to:bobCharsetFindOrAddGlyph::@5
|
||||||
bobCharsetFindOrAddGlyph::@3: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@2
|
bobCharsetFindOrAddGlyph::@3: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@2
|
||||||
[208] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4
|
[207] if(*((byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) bobCharsetFindOrAddGlyph::i#2)==*((byte*) bobCharsetFindOrAddGlyph::bob_glyph#10 + (byte) bobCharsetFindOrAddGlyph::i#2)) goto bobCharsetFindOrAddGlyph::@4
|
||||||
to:bobCharsetFindOrAddGlyph::@5
|
to:bobCharsetFindOrAddGlyph::@5
|
||||||
bobCharsetFindOrAddGlyph::@5: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@2 bobCharsetFindOrAddGlyph::@3
|
bobCharsetFindOrAddGlyph::@5: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@2 bobCharsetFindOrAddGlyph::@3
|
||||||
[209] (byte) bobCharsetFindOrAddGlyph::found#2 ← phi( bobCharsetFindOrAddGlyph::@3/(byte) 0 bobCharsetFindOrAddGlyph::@2/(byte) 1 )
|
[208] (byte) bobCharsetFindOrAddGlyph::found#2 ← phi( bobCharsetFindOrAddGlyph::@3/(byte) 0 bobCharsetFindOrAddGlyph::@2/(byte) 1 )
|
||||||
[210] if((byte) 0==(byte) bobCharsetFindOrAddGlyph::found#2) goto bobCharsetFindOrAddGlyph::@6
|
[209] if((byte) 0==(byte) bobCharsetFindOrAddGlyph::found#2) goto bobCharsetFindOrAddGlyph::@6
|
||||||
to:bobCharsetFindOrAddGlyph::@return
|
to:bobCharsetFindOrAddGlyph::@return
|
||||||
bobCharsetFindOrAddGlyph::@6: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@5
|
bobCharsetFindOrAddGlyph::@6: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@5
|
||||||
[211] (byte) bobCharsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) bobCharsetFindOrAddGlyph::glyph_id#11
|
[210] (byte) bobCharsetFindOrAddGlyph::glyph_id#1 ← ++ (byte) bobCharsetFindOrAddGlyph::glyph_id#11
|
||||||
[212] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8
|
[211] (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 ← (byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 + (byte) 8
|
||||||
to:bobCharsetFindOrAddGlyph::@1
|
to:bobCharsetFindOrAddGlyph::@1
|
||||||
bobCharsetFindOrAddGlyph::@4: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@3
|
bobCharsetFindOrAddGlyph::@4: scope:[bobCharsetFindOrAddGlyph] from bobCharsetFindOrAddGlyph::@3
|
||||||
[213] (byte) bobCharsetFindOrAddGlyph::i#1 ← ++ (byte) bobCharsetFindOrAddGlyph::i#2
|
[212] (byte) bobCharsetFindOrAddGlyph::i#1 ← ++ (byte) bobCharsetFindOrAddGlyph::i#2
|
||||||
to:bobCharsetFindOrAddGlyph::@2
|
to:bobCharsetFindOrAddGlyph::@2
|
||||||
|
|
||||||
(void()) shiftProtoBobRight()
|
(void()) shiftProtoBobRight()
|
||||||
shiftProtoBobRight: scope:[shiftProtoBobRight] from prepareBobs::@12 prepareBobs::@7
|
shiftProtoBobRight: scope:[shiftProtoBobRight] from prepareBobs::@12 prepareBobs::@7
|
||||||
[214] phi()
|
[213] phi()
|
||||||
to:shiftProtoBobRight::@1
|
to:shiftProtoBobRight::@1
|
||||||
shiftProtoBobRight::@1: scope:[shiftProtoBobRight] from shiftProtoBobRight shiftProtoBobRight::@6
|
shiftProtoBobRight::@1: scope:[shiftProtoBobRight] from shiftProtoBobRight shiftProtoBobRight::@6
|
||||||
[215] (byte) shiftProtoBobRight::carry#2 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::carry#10 )
|
[214] (byte) shiftProtoBobRight::carry#2 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::carry#10 )
|
||||||
[215] (byte) shiftProtoBobRight::j#3 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::j#10 )
|
[214] (byte) shiftProtoBobRight::j#3 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::j#10 )
|
||||||
[215] (byte) shiftProtoBobRight::i#2 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::i#1 )
|
[214] (byte) shiftProtoBobRight::i#2 ← phi( shiftProtoBobRight/(byte) 0 shiftProtoBobRight::@6/(byte) shiftProtoBobRight::i#1 )
|
||||||
[216] if((byte) shiftProtoBobRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto shiftProtoBobRight::@2
|
[215] if((byte) shiftProtoBobRight::i#2<(byte)(number) 3*(number) 3*(number) 8) goto shiftProtoBobRight::@2
|
||||||
to:shiftProtoBobRight::@return
|
to:shiftProtoBobRight::@return
|
||||||
shiftProtoBobRight::@return: scope:[shiftProtoBobRight] from shiftProtoBobRight::@1
|
shiftProtoBobRight::@return: scope:[shiftProtoBobRight] from shiftProtoBobRight::@1
|
||||||
[217] return
|
[216] return
|
||||||
to:@return
|
to:@return
|
||||||
shiftProtoBobRight::@2: scope:[shiftProtoBobRight] from shiftProtoBobRight::@1
|
shiftProtoBobRight::@2: scope:[shiftProtoBobRight] from shiftProtoBobRight::@1
|
||||||
[218] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1
|
[217] (byte~) shiftProtoBobRight::$1 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) & (byte) 1
|
||||||
[219] if((byte) 0!=(byte~) shiftProtoBobRight::$1) goto shiftProtoBobRight::@3
|
[218] if((byte) 0!=(byte~) shiftProtoBobRight::$1) goto shiftProtoBobRight::@3
|
||||||
to:shiftProtoBobRight::@4
|
to:shiftProtoBobRight::@4
|
||||||
shiftProtoBobRight::@3: scope:[shiftProtoBobRight] from shiftProtoBobRight::@2
|
shiftProtoBobRight::@3: scope:[shiftProtoBobRight] from shiftProtoBobRight::@2
|
||||||
[220] phi()
|
[219] phi()
|
||||||
to:shiftProtoBobRight::@4
|
to:shiftProtoBobRight::@4
|
||||||
shiftProtoBobRight::@4: scope:[shiftProtoBobRight] from shiftProtoBobRight::@2 shiftProtoBobRight::@3
|
shiftProtoBobRight::@4: scope:[shiftProtoBobRight] from shiftProtoBobRight::@2 shiftProtoBobRight::@3
|
||||||
[221] (byte) shiftProtoBobRight::carry#1 ← phi( shiftProtoBobRight::@3/(byte) $80 shiftProtoBobRight::@2/(byte) 0 )
|
[220] (byte) shiftProtoBobRight::carry#1 ← phi( shiftProtoBobRight::@3/(byte) $80 shiftProtoBobRight::@2/(byte) 0 )
|
||||||
[222] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1
|
[221] (byte~) shiftProtoBobRight::$5 ← *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) >> (byte) 1
|
||||||
[223] (byte~) shiftProtoBobRight::$6 ← (byte) shiftProtoBobRight::carry#2 | (byte~) shiftProtoBobRight::$5
|
[222] (byte~) shiftProtoBobRight::$6 ← (byte) shiftProtoBobRight::carry#2 | (byte~) shiftProtoBobRight::$5
|
||||||
[224] *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) ← (byte~) shiftProtoBobRight::$6
|
[223] *((const byte*) PROTO_BOB + (byte) shiftProtoBobRight::j#3) ← (byte~) shiftProtoBobRight::$6
|
||||||
[225] if((byte) shiftProtoBobRight::j#3>=(byte) $30) goto shiftProtoBobRight::@5
|
[224] if((byte) shiftProtoBobRight::j#3>=(byte) $30) goto shiftProtoBobRight::@5
|
||||||
to:shiftProtoBobRight::@7
|
to:shiftProtoBobRight::@7
|
||||||
shiftProtoBobRight::@7: scope:[shiftProtoBobRight] from shiftProtoBobRight::@4
|
shiftProtoBobRight::@7: scope:[shiftProtoBobRight] from shiftProtoBobRight::@4
|
||||||
[226] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18
|
[225] (byte) shiftProtoBobRight::j#2 ← (byte) shiftProtoBobRight::j#3 + (byte) $18
|
||||||
to:shiftProtoBobRight::@6
|
to:shiftProtoBobRight::@6
|
||||||
shiftProtoBobRight::@6: scope:[shiftProtoBobRight] from shiftProtoBobRight::@5 shiftProtoBobRight::@7
|
shiftProtoBobRight::@6: scope:[shiftProtoBobRight] from shiftProtoBobRight::@5 shiftProtoBobRight::@7
|
||||||
[227] (byte) shiftProtoBobRight::j#10 ← phi( shiftProtoBobRight::@7/(byte) shiftProtoBobRight::j#2 shiftProtoBobRight::@5/(byte) shiftProtoBobRight::j#1 )
|
[226] (byte) shiftProtoBobRight::j#10 ← phi( shiftProtoBobRight::@7/(byte) shiftProtoBobRight::j#2 shiftProtoBobRight::@5/(byte) shiftProtoBobRight::j#1 )
|
||||||
[228] (byte) shiftProtoBobRight::i#1 ← ++ (byte) shiftProtoBobRight::i#2
|
[227] (byte) shiftProtoBobRight::i#1 ← ++ (byte) shiftProtoBobRight::i#2
|
||||||
[229] (byte) shiftProtoBobRight::carry#10 ← (byte) shiftProtoBobRight::carry#1
|
[228] (byte) shiftProtoBobRight::carry#10 ← (byte) shiftProtoBobRight::carry#1
|
||||||
to:shiftProtoBobRight::@1
|
to:shiftProtoBobRight::@1
|
||||||
shiftProtoBobRight::@5: scope:[shiftProtoBobRight] from shiftProtoBobRight::@4
|
shiftProtoBobRight::@5: scope:[shiftProtoBobRight] from shiftProtoBobRight::@4
|
||||||
[230] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f
|
[229] (byte) shiftProtoBobRight::j#1 ← (byte) shiftProtoBobRight::j#3 - (byte) $2f
|
||||||
to:shiftProtoBobRight::@6
|
to:shiftProtoBobRight::@6
|
||||||
|
|
||||||
(void()) shiftProtoBobDown()
|
(void()) shiftProtoBobDown()
|
||||||
shiftProtoBobDown: scope:[shiftProtoBobDown] from prepareBobs::@4
|
shiftProtoBobDown: scope:[shiftProtoBobDown] from prepareBobs::@4
|
||||||
[231] phi()
|
[230] phi()
|
||||||
to:shiftProtoBobDown::@1
|
to:shiftProtoBobDown::@1
|
||||||
shiftProtoBobDown::@1: scope:[shiftProtoBobDown] from shiftProtoBobDown shiftProtoBobDown::@2
|
shiftProtoBobDown::@1: scope:[shiftProtoBobDown] from shiftProtoBobDown shiftProtoBobDown::@2
|
||||||
[232] (byte) shiftProtoBobDown::i#2 ← phi( shiftProtoBobDown/(byte) $17 shiftProtoBobDown::@2/(byte) shiftProtoBobDown::i#1 )
|
[231] (byte) shiftProtoBobDown::i#2 ← phi( shiftProtoBobDown/(byte) $17 shiftProtoBobDown::@2/(byte) shiftProtoBobDown::i#1 )
|
||||||
[233] if((byte) shiftProtoBobDown::i#2>(byte) 0) goto shiftProtoBobDown::@2
|
[232] if((byte) shiftProtoBobDown::i#2>(byte) 0) goto shiftProtoBobDown::@2
|
||||||
to:shiftProtoBobDown::@3
|
to:shiftProtoBobDown::@3
|
||||||
shiftProtoBobDown::@3: scope:[shiftProtoBobDown] from shiftProtoBobDown::@1
|
shiftProtoBobDown::@3: scope:[shiftProtoBobDown] from shiftProtoBobDown::@1
|
||||||
[234] *((const byte*) PROTO_BOB) ← (byte) 0
|
[233] *((const byte*) PROTO_BOB) ← (byte) 0
|
||||||
[235] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0
|
[234] *((const byte*) PROTO_BOB+(byte) $18) ← (byte) 0
|
||||||
[236] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0
|
[235] *((const byte*) PROTO_BOB+(byte) $30) ← (byte) 0
|
||||||
to:shiftProtoBobDown::@return
|
to:shiftProtoBobDown::@return
|
||||||
shiftProtoBobDown::@return: scope:[shiftProtoBobDown] from shiftProtoBobDown::@3
|
shiftProtoBobDown::@return: scope:[shiftProtoBobDown] from shiftProtoBobDown::@3
|
||||||
[237] return
|
[236] return
|
||||||
to:@return
|
to:@return
|
||||||
shiftProtoBobDown::@2: scope:[shiftProtoBobDown] from shiftProtoBobDown::@1
|
shiftProtoBobDown::@2: scope:[shiftProtoBobDown] from shiftProtoBobDown::@1
|
||||||
[238] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2)
|
[237] *((const byte*) PROTO_BOB + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $17 + (byte) shiftProtoBobDown::i#2)
|
||||||
[239] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2)
|
[238] *((const byte*) PROTO_BOB+(byte) $18 + (byte) shiftProtoBobDown::i#2) ← *((const byte*) PROTO_BOB+(byte) $2f + (byte) shiftProtoBobDown::i#2)
|
||||||
[240] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0
|
[239] *((const byte*) PROTO_BOB+(byte) $30 + (byte) shiftProtoBobDown::i#2) ← (byte) 0
|
||||||
[241] (byte) shiftProtoBobDown::i#1 ← -- (byte) shiftProtoBobDown::i#2
|
[240] (byte) shiftProtoBobDown::i#1 ← -- (byte) shiftProtoBobDown::i#2
|
||||||
to:shiftProtoBobDown::@1
|
to:shiftProtoBobDown::@1
|
||||||
|
|
||||||
(void()) progress_init((byte*) progress_init::line)
|
(void()) progress_init((byte*) progress_init::line)
|
||||||
progress_init: scope:[progress_init] from prepareBobs
|
progress_init: scope:[progress_init] from prepareBobs
|
||||||
[242] phi()
|
[241] phi()
|
||||||
to:progress_init::@return
|
to:progress_init::@return
|
||||||
progress_init::@return: scope:[progress_init] from progress_init
|
progress_init::@return: scope:[progress_init] from progress_init
|
||||||
[243] return
|
[242] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) mulf_init()
|
(void()) mulf_init()
|
||||||
mulf_init: scope:[mulf_init] from main
|
mulf_init: scope:[mulf_init] from main
|
||||||
[244] phi()
|
[243] phi()
|
||||||
to:mulf_init::@1
|
to:mulf_init::@1
|
||||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
|
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
|
||||||
[245] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
|
[244] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::x_2#2 )
|
||||||
[245] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
|
[244] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte*) mulf_sqr1_hi+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_hi#1 )
|
||||||
[245] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
|
[244] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte) 0 mulf_init::@3/(word) mulf_init::sqr#1 )
|
||||||
[245] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
|
[244] (byte) mulf_init::c#2 ← phi( mulf_init/(byte) 0 mulf_init::@3/(byte) mulf_init::c#1 )
|
||||||
[245] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
|
[244] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte*) mulf_sqr1_lo+(byte) 1 mulf_init::@3/(byte*) mulf_init::sqr1_lo#1 )
|
||||||
[246] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
|
[245] if((byte*) mulf_init::sqr1_lo#2!=(const byte*) mulf_sqr1_lo+(word) $200) goto mulf_init::@2
|
||||||
to:mulf_init::@5
|
to:mulf_init::@5
|
||||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8
|
mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8
|
||||||
[247] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
|
[246] (byte) mulf_init::dir#2 ← phi( mulf_init::@8/(byte) mulf_init::dir#4 mulf_init::@1/(byte) $ff )
|
||||||
[247] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
|
[246] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_hi#1 mulf_init::@1/(const byte*) mulf_sqr2_hi )
|
||||||
[247] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
|
[246] (byte) mulf_init::x_255#2 ← phi( mulf_init::@8/(byte) mulf_init::x_255#1 mulf_init::@1/(byte) -1 )
|
||||||
[247] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
|
[246] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@8/(byte*) mulf_init::sqr2_lo#1 mulf_init::@1/(const byte*) mulf_sqr2_lo )
|
||||||
[248] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6
|
[247] if((byte*) mulf_init::sqr2_lo#2!=(const byte*) mulf_sqr2_lo+(word) $1ff) goto mulf_init::@6
|
||||||
to:mulf_init::@7
|
to:mulf_init::@7
|
||||||
mulf_init::@7: scope:[mulf_init] from mulf_init::@5
|
mulf_init::@7: scope:[mulf_init] from mulf_init::@5
|
||||||
[249] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
|
[248] *((const byte*) mulf_sqr2_lo+(word) $1ff) ← *((const byte*) mulf_sqr1_lo+(word) $100)
|
||||||
[250] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100)
|
[249] *((const byte*) mulf_sqr2_hi+(word) $1ff) ← *((const byte*) mulf_sqr1_hi+(word) $100)
|
||||||
to:mulf_init::@return
|
to:mulf_init::@return
|
||||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@7
|
mulf_init::@return: scope:[mulf_init] from mulf_init::@7
|
||||||
[251] return
|
[250] return
|
||||||
to:@return
|
to:@return
|
||||||
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
|
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
|
||||||
[252] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
|
[251] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte*) mulf_sqr1_lo + (byte) mulf_init::x_255#2)
|
||||||
[253] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
|
[252] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte*) mulf_sqr1_hi + (byte) mulf_init::x_255#2)
|
||||||
[254] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
[253] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||||
[255] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
[254] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||||
[256] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
|
[255] if((byte) mulf_init::x_255#1!=(byte) 0) goto mulf_init::@9
|
||||||
to:mulf_init::@8
|
to:mulf_init::@8
|
||||||
mulf_init::@9: scope:[mulf_init] from mulf_init::@6
|
mulf_init::@9: scope:[mulf_init] from mulf_init::@6
|
||||||
[257] phi()
|
[256] phi()
|
||||||
to:mulf_init::@8
|
to:mulf_init::@8
|
||||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9
|
mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9
|
||||||
[258] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
|
[257] (byte) mulf_init::dir#4 ← phi( mulf_init::@9/(byte) mulf_init::dir#2 mulf_init::@6/(byte) 1 )
|
||||||
[259] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
[258] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||||
to:mulf_init::@5
|
to:mulf_init::@5
|
||||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1
|
mulf_init::@2: scope:[mulf_init] from mulf_init::@1
|
||||||
[260] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
[259] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||||
[261] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
|
[260] (byte~) mulf_init::$1 ← (byte) mulf_init::c#1 & (byte) 1
|
||||||
[262] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3
|
[261] if((byte~) mulf_init::$1!=(byte) 0) goto mulf_init::@3
|
||||||
to:mulf_init::@4
|
to:mulf_init::@4
|
||||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@2
|
mulf_init::@4: scope:[mulf_init] from mulf_init::@2
|
||||||
[263] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
[262] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||||
[264] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
[263] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||||
to:mulf_init::@3
|
to:mulf_init::@3
|
||||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||||
[265] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
|
[264] (byte) mulf_init::x_2#2 ← phi( mulf_init::@2/(byte) mulf_init::x_2#3 mulf_init::@4/(byte) mulf_init::x_2#1 )
|
||||||
[265] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
|
[264] (word) mulf_init::sqr#3 ← phi( mulf_init::@2/(word) mulf_init::sqr#4 mulf_init::@4/(word) mulf_init::sqr#2 )
|
||||||
[266] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
|
[265] (byte~) mulf_init::$4 ← < (word) mulf_init::sqr#3
|
||||||
[267] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
|
[266] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$4
|
||||||
[268] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
|
[267] (byte~) mulf_init::$5 ← > (word) mulf_init::sqr#3
|
||||||
[269] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
|
[268] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$5
|
||||||
[270] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
[269] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||||
[271] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
[270] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||||
[272] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
[271] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||||
to:mulf_init::@1
|
to:mulf_init::@1
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
|||||||
(label) @1
|
(label) @1
|
||||||
(label) @2
|
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(const byte*) BOB_CHARSET = (byte*) 8192
|
(const byte*) BOB_CHARSET = (byte*) 8192
|
||||||
@@ -52,26 +51,26 @@
|
|||||||
(byte) bobCharsetFindOrAddGlyph::found
|
(byte) bobCharsetFindOrAddGlyph::found
|
||||||
(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 10001.0
|
(byte) bobCharsetFindOrAddGlyph::found#2 reg byte a 10001.0
|
||||||
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor
|
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor
|
||||||
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:18 20002.0
|
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#1 glyph_cursor zp[2]:17 20002.0
|
||||||
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:18 10000.307692307691
|
(byte*) bobCharsetFindOrAddGlyph::glyph_cursor#11 glyph_cursor zp[2]:17 10000.307692307691
|
||||||
(byte) bobCharsetFindOrAddGlyph::glyph_id
|
(byte) bobCharsetFindOrAddGlyph::glyph_id
|
||||||
(byte) bobCharsetFindOrAddGlyph::glyph_id#1 glyph_id zp[1]:14 10001.0
|
(byte) bobCharsetFindOrAddGlyph::glyph_id#1 reg byte x 10001.0
|
||||||
(byte) bobCharsetFindOrAddGlyph::glyph_id#11 glyph_id zp[1]:14 1937.75
|
(byte) bobCharsetFindOrAddGlyph::glyph_id#11 reg byte x 1937.75
|
||||||
(byte) bobCharsetFindOrAddGlyph::i
|
(byte) bobCharsetFindOrAddGlyph::i
|
||||||
(byte) bobCharsetFindOrAddGlyph::i#1 i zp[1]:8 200002.0
|
(byte) bobCharsetFindOrAddGlyph::i#1 reg byte y 200002.0
|
||||||
(byte) bobCharsetFindOrAddGlyph::i#2 i zp[1]:8 166668.3333333333
|
(byte) bobCharsetFindOrAddGlyph::i#2 reg byte y 166668.3333333333
|
||||||
(byte) bobCharsetFindOrAddGlyph::i1
|
(byte) bobCharsetFindOrAddGlyph::i1
|
||||||
(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 20002.0
|
(byte) bobCharsetFindOrAddGlyph::i1#1 reg byte y 20002.0
|
||||||
(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332
|
(byte) bobCharsetFindOrAddGlyph::i1#2 reg byte y 16668.333333333332
|
||||||
(byte) bobCharsetFindOrAddGlyph::return
|
(byte) bobCharsetFindOrAddGlyph::return
|
||||||
(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 2002.0
|
(byte) bobCharsetFindOrAddGlyph::return#1 reg byte a 2002.0
|
||||||
(byte) bob_charset_next_id
|
(byte) bob_charset_next_id
|
||||||
(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:15 12.0
|
(byte) bob_charset_next_id#14 bob_charset_next_id zp[1]:13 12.0
|
||||||
(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:15 1000.5454545454544
|
(byte) bob_charset_next_id#16 bob_charset_next_id zp[1]:13 1000.5454545454544
|
||||||
(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:15 275.5
|
(byte) bob_charset_next_id#21 bob_charset_next_id zp[1]:13 275.5
|
||||||
(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:15 1400.3333333333335
|
(byte) bob_charset_next_id#23 bob_charset_next_id zp[1]:13 1400.3333333333335
|
||||||
(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:15 37.33333333333333
|
(byte) bob_charset_next_id#30 bob_charset_next_id zp[1]:13 37.33333333333333
|
||||||
(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:15 4.0
|
(byte) bob_charset_next_id#8 bob_charset_next_id zp[1]:13 4.0
|
||||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||||
(label) keyboard_key_pressed::@1
|
(label) keyboard_key_pressed::@1
|
||||||
@@ -95,9 +94,9 @@
|
|||||||
(byte) keyboard_matrix_read::rowid
|
(byte) keyboard_matrix_read::rowid
|
||||||
(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
|
(const byte*) keyboard_matrix_row_bitmask = { (byte) $fe, (byte) $fd, (byte) $fb, (byte) $f7, (byte) $ef, (byte) $df, (byte) $bf, (byte) $7f }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(signed word~) main::$10 zp[2]:12 202.0
|
(signed word~) main::$10 zp[2]:11 202.0
|
||||||
(signed word~) main::$12 zp[2]:12 202.0
|
(signed word~) main::$12 zp[2]:11 202.0
|
||||||
(signed word~) main::$13 zp[2]:12 202.0
|
(signed word~) main::$13 zp[2]:11 202.0
|
||||||
(byte~) main::$19 reg byte a 22.0
|
(byte~) main::$19 reg byte a 22.0
|
||||||
(byte~) main::$21 reg byte a 22.0
|
(byte~) main::$21 reg byte a 22.0
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
@@ -155,9 +154,9 @@
|
|||||||
(byte) main::vicSelectGfxBank2_toDd001_return
|
(byte) main::vicSelectGfxBank2_toDd001_return
|
||||||
(const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3
|
(const byte) main::vicSelectGfxBank2_toDd001_return#0 vicSelectGfxBank2_toDd001_return = (byte) 3
|
||||||
(signed word) main::x
|
(signed word) main::x
|
||||||
(signed word) main::x#0 x zp[2]:9 18.363636363636363
|
(signed word) main::x#0 x zp[2]:8 18.363636363636363
|
||||||
(signed word) main::y
|
(signed word) main::y
|
||||||
(signed word) main::y#0 y zp[2]:12 40.4
|
(signed word) main::y#0 y zp[2]:11 40.4
|
||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
(label) memset::@1
|
(label) memset::@1
|
||||||
(label) memset::@2
|
(label) memset::@2
|
||||||
@@ -189,9 +188,9 @@
|
|||||||
(signed byte) mulf8s::mulf8s_prepare1_a
|
(signed byte) mulf8s::mulf8s_prepare1_a
|
||||||
(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0
|
(signed byte) mulf8s::mulf8s_prepare1_a#0 reg byte a 202.0
|
||||||
(signed word) mulf8s::return
|
(signed word) mulf8s::return
|
||||||
(signed word) mulf8s::return#0 return zp[2]:12 51.0
|
(signed word) mulf8s::return#0 return zp[2]:11 51.0
|
||||||
(signed word) mulf8s::return#2 return zp[2]:12 202.0
|
(signed word) mulf8s::return#2 return zp[2]:11 202.0
|
||||||
(signed word) mulf8s::return#3 return zp[2]:12 202.0
|
(signed word) mulf8s::return#3 return zp[2]:11 202.0
|
||||||
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||||
(byte~) mulf8s_prepared::$12 reg byte a 4.0
|
(byte~) mulf8s_prepared::$12 reg byte a 4.0
|
||||||
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
||||||
@@ -204,13 +203,13 @@
|
|||||||
(label) mulf8s_prepared::@5
|
(label) mulf8s_prepared::@5
|
||||||
(label) mulf8s_prepared::@return
|
(label) mulf8s_prepared::@return
|
||||||
(signed byte) mulf8s_prepared::b
|
(signed byte) mulf8s_prepared::b
|
||||||
(signed byte) mulf8s_prepared::b#0 b zp[1]:15 0.4
|
(signed byte) mulf8s_prepared::b#0 b zp[1]:14 0.4
|
||||||
(word) mulf8s_prepared::m
|
(word) mulf8s_prepared::m
|
||||||
(word) mulf8s_prepared::m#0 m zp[2]:12 2.0
|
(word) mulf8s_prepared::m#0 m zp[2]:11 2.0
|
||||||
(word) mulf8s_prepared::m#1 m zp[2]:12 4.0
|
(word) mulf8s_prepared::m#1 m zp[2]:11 4.0
|
||||||
(word) mulf8s_prepared::m#2 m zp[2]:12 4.0
|
(word) mulf8s_prepared::m#2 m zp[2]:11 4.0
|
||||||
(word) mulf8s_prepared::m#4 m zp[2]:12 1.3333333333333333
|
(word) mulf8s_prepared::m#4 m zp[2]:11 1.3333333333333333
|
||||||
(word) mulf8s_prepared::m#5 m zp[2]:12 2.5
|
(word) mulf8s_prepared::m#5 m zp[2]:11 2.5
|
||||||
(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253
|
(const signed byte*) mulf8s_prepared::memA = (signed byte*) 253
|
||||||
(signed word) mulf8s_prepared::return
|
(signed word) mulf8s_prepared::return
|
||||||
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
(void()) mulf8u_prepare((byte) mulf8u_prepare::a)
|
||||||
@@ -225,8 +224,8 @@
|
|||||||
(const byte*) mulf8u_prepared::memB = (byte*) 255
|
(const byte*) mulf8u_prepared::memB = (byte*) 255
|
||||||
(const byte*) mulf8u_prepared::resL = (byte*) 254
|
(const byte*) mulf8u_prepared::resL = (byte*) 254
|
||||||
(word) mulf8u_prepared::return
|
(word) mulf8u_prepared::return
|
||||||
(word) mulf8u_prepared::return#0 return zp[2]:12 1.3333333333333333
|
(word) mulf8u_prepared::return#0 return zp[2]:11 1.3333333333333333
|
||||||
(word) mulf8u_prepared::return#2 return zp[2]:12 4.0
|
(word) mulf8u_prepared::return#2 return zp[2]:11 4.0
|
||||||
(void()) mulf_init()
|
(void()) mulf_init()
|
||||||
(byte~) mulf_init::$1 reg byte a 22.0
|
(byte~) mulf_init::$1 reg byte a 22.0
|
||||||
(byte~) mulf_init::$4 reg byte a 22.0
|
(byte~) mulf_init::$4 reg byte a 22.0
|
||||||
@@ -242,28 +241,28 @@
|
|||||||
(label) mulf_init::@9
|
(label) mulf_init::@9
|
||||||
(label) mulf_init::@return
|
(label) mulf_init::@return
|
||||||
(byte) mulf_init::c
|
(byte) mulf_init::c
|
||||||
(byte) mulf_init::c#1 c zp[1]:15 2.5384615384615383
|
(byte) mulf_init::c#1 c zp[1]:13 2.5384615384615383
|
||||||
(byte) mulf_init::c#2 c zp[1]:15 11.0
|
(byte) mulf_init::c#2 c zp[1]:13 11.0
|
||||||
(byte) mulf_init::dir
|
(byte) mulf_init::dir
|
||||||
(byte) mulf_init::dir#2 dir zp[1]:8 4.125
|
(byte) mulf_init::dir#2 dir zp[1]:14 4.125
|
||||||
(byte) mulf_init::dir#4 dir zp[1]:8 11.0
|
(byte) mulf_init::dir#4 dir zp[1]:14 11.0
|
||||||
(word) mulf_init::sqr
|
(word) mulf_init::sqr
|
||||||
(word) mulf_init::sqr#1 sqr zp[2]:12 11.0
|
(word) mulf_init::sqr#1 sqr zp[2]:11 11.0
|
||||||
(word) mulf_init::sqr#2 sqr zp[2]:12 22.0
|
(word) mulf_init::sqr#2 sqr zp[2]:11 22.0
|
||||||
(word) mulf_init::sqr#3 sqr zp[2]:12 9.166666666666666
|
(word) mulf_init::sqr#3 sqr zp[2]:11 9.166666666666666
|
||||||
(word) mulf_init::sqr#4 sqr zp[2]:12 5.5
|
(word) mulf_init::sqr#4 sqr zp[2]:11 5.5
|
||||||
(byte*) mulf_init::sqr1_hi
|
(byte*) mulf_init::sqr1_hi
|
||||||
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:16 7.333333333333333
|
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp[2]:15 7.333333333333333
|
||||||
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:16 2.75
|
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp[2]:15 2.75
|
||||||
(byte*) mulf_init::sqr1_lo
|
(byte*) mulf_init::sqr1_lo
|
||||||
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:6 22.0
|
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp[2]:6 22.0
|
||||||
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:6 3.142857142857143
|
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp[2]:6 3.142857142857143
|
||||||
(byte*) mulf_init::sqr2_hi
|
(byte*) mulf_init::sqr2_hi
|
||||||
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:9 3.6666666666666665
|
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp[2]:8 3.6666666666666665
|
||||||
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:9 8.25
|
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp[2]:8 8.25
|
||||||
(byte*) mulf_init::sqr2_lo
|
(byte*) mulf_init::sqr2_lo
|
||||||
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:18 22.0
|
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp[2]:17 22.0
|
||||||
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:18 4.888888888888889
|
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp[2]:17 4.888888888888889
|
||||||
(byte) mulf_init::x_2
|
(byte) mulf_init::x_2
|
||||||
(byte) mulf_init::x_2#1 reg byte x 11.0
|
(byte) mulf_init::x_2#1 reg byte x 11.0
|
||||||
(byte) mulf_init::x_2#2 reg byte x 5.5
|
(byte) mulf_init::x_2#2 reg byte x 5.5
|
||||||
@@ -295,16 +294,16 @@
|
|||||||
(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:6 500.5
|
(byte*) prepareBobs::bob_glyph#1 bob_glyph zp[2]:6 500.5
|
||||||
(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:6 429.0
|
(byte*) prepareBobs::bob_glyph#2 bob_glyph zp[2]:6 429.0
|
||||||
(byte*) prepareBobs::bob_table
|
(byte*) prepareBobs::bob_table
|
||||||
(byte*) prepareBobs::bob_table#0 bob_table zp[2]:16 202.0
|
(byte*) prepareBobs::bob_table#0 bob_table zp[2]:15 202.0
|
||||||
(byte*) prepareBobs::bob_table#1 bob_table zp[2]:16 667.3333333333334
|
(byte*) prepareBobs::bob_table#1 bob_table zp[2]:15 667.3333333333334
|
||||||
(byte*) prepareBobs::bob_table#2 bob_table zp[2]:16 388.0
|
(byte*) prepareBobs::bob_table#2 bob_table zp[2]:15 388.0
|
||||||
(byte) prepareBobs::bob_table_idx
|
(byte) prepareBobs::bob_table_idx
|
||||||
(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:4 40.4
|
(byte) prepareBobs::bob_table_idx#1 bob_table_idx zp[1]:4 40.4
|
||||||
(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:4 19.11764705882353
|
(byte) prepareBobs::bob_table_idx#12 bob_table_idx zp[1]:4 19.11764705882353
|
||||||
(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:4 11.0
|
(byte) prepareBobs::bob_table_idx#6 bob_table_idx zp[1]:4 11.0
|
||||||
(byte) prepareBobs::cell
|
(byte) prepareBobs::cell
|
||||||
(byte) prepareBobs::cell#1 cell zp[1]:11 2002.0
|
(byte) prepareBobs::cell#1 cell zp[1]:10 2002.0
|
||||||
(byte) prepareBobs::cell#2 cell zp[1]:11 300.29999999999995
|
(byte) prepareBobs::cell#2 cell zp[1]:10 300.29999999999995
|
||||||
(byte) prepareBobs::shift_x
|
(byte) prepareBobs::shift_x
|
||||||
(byte) prepareBobs::shift_x#1 shift_x zp[1]:5 202.0
|
(byte) prepareBobs::shift_x#1 shift_x zp[1]:5 202.0
|
||||||
(byte) prepareBobs::shift_x#2 shift_x zp[1]:5 16.833333333333332
|
(byte) prepareBobs::shift_x#2 shift_x zp[1]:5 16.833333333333332
|
||||||
@@ -312,11 +311,11 @@
|
|||||||
(byte) prepareBobs::shift_y#1 shift_y zp[1]:2 22.0
|
(byte) prepareBobs::shift_y#1 shift_y zp[1]:2 22.0
|
||||||
(byte) prepareBobs::shift_y#2 shift_y zp[1]:2 1.4347826086956523
|
(byte) prepareBobs::shift_y#2 shift_y zp[1]:2 1.4347826086956523
|
||||||
(byte*) progress_cursor
|
(byte*) progress_cursor
|
||||||
(byte*) progress_cursor#15 progress_cursor zp[2]:12 11.0
|
(byte*) progress_cursor#15 progress_cursor zp[2]:11 11.0
|
||||||
(byte*) progress_cursor#17 progress_cursor zp[2]:12 201.4
|
(byte*) progress_cursor#17 progress_cursor zp[2]:11 201.4
|
||||||
(byte*) progress_cursor#24 progress_cursor zp[2]:12 71.11764705882355
|
(byte*) progress_cursor#24 progress_cursor zp[2]:11 71.11764705882355
|
||||||
(byte*) progress_cursor#31 progress_cursor zp[2]:12 37.33333333333333
|
(byte*) progress_cursor#31 progress_cursor zp[2]:11 37.33333333333333
|
||||||
(byte*) progress_cursor#8 progress_cursor zp[2]:12 4.0
|
(byte*) progress_cursor#8 progress_cursor zp[2]:11 4.0
|
||||||
(byte) progress_idx
|
(byte) progress_idx
|
||||||
(byte) progress_idx#10 progress_idx zp[1]:3 201.0
|
(byte) progress_idx#10 progress_idx zp[1]:3 201.0
|
||||||
(byte) progress_idx#16 progress_idx zp[1]:3 11.0
|
(byte) progress_idx#16 progress_idx zp[1]:3 11.0
|
||||||
@@ -332,24 +331,24 @@
|
|||||||
(label) progress_init::@return
|
(label) progress_init::@return
|
||||||
(byte*) progress_init::line
|
(byte*) progress_init::line
|
||||||
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
(void()) renderBob((byte) renderBob::xpos , (byte) renderBob::ypos)
|
||||||
(byte*~) renderBob::$2 zp[2]:12 4.0
|
(byte*~) renderBob::$2 zp[2]:11 4.0
|
||||||
(byte~) renderBob::$4 reg byte a 4.0
|
(byte~) renderBob::$4 reg byte a 4.0
|
||||||
(byte~) renderBob::$5 zp[1]:14 2.0
|
(byte~) renderBob::$5 zp[1]:13 2.0
|
||||||
(byte~) renderBob::$6 reg byte a 4.0
|
(byte~) renderBob::$6 reg byte a 4.0
|
||||||
(byte~) renderBob::$8 reg byte a 4.0
|
(byte~) renderBob::$8 reg byte a 4.0
|
||||||
(label) renderBob::@return
|
(label) renderBob::@return
|
||||||
(byte) renderBob::bob_table_idx
|
(byte) renderBob::bob_table_idx
|
||||||
(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186
|
(byte) renderBob::bob_table_idx#0 reg byte x 1.8181818181818186
|
||||||
(byte*) renderBob::screen
|
(byte*) renderBob::screen
|
||||||
(byte*) renderBob::screen#0 screen zp[2]:12 1.4666666666666666
|
(byte*) renderBob::screen#0 screen zp[2]:11 1.4666666666666666
|
||||||
(byte) renderBob::x_char_offset
|
(byte) renderBob::x_char_offset
|
||||||
(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:11 0.8
|
(byte) renderBob::x_char_offset#0 x_char_offset zp[1]:10 0.8
|
||||||
(byte) renderBob::xpos
|
(byte) renderBob::xpos
|
||||||
(byte) renderBob::xpos#0 xpos zp[1]:15 10.499999999999998
|
(byte) renderBob::xpos#0 xpos zp[1]:14 10.499999999999998
|
||||||
(byte) renderBob::y_char_offset
|
(byte) renderBob::y_char_offset
|
||||||
(byte) renderBob::y_char_offset#0 reg byte a 4.0
|
(byte) renderBob::y_char_offset#0 reg byte a 4.0
|
||||||
(word) renderBob::y_offset
|
(word) renderBob::y_offset
|
||||||
(word) renderBob::y_offset#0 y_offset zp[2]:12 4.0
|
(word) renderBob::y_offset#0 y_offset zp[2]:11 4.0
|
||||||
(byte) renderBob::ypos
|
(byte) renderBob::ypos
|
||||||
(byte) renderBob::ypos#0 reg byte x 15.000000000000002
|
(byte) renderBob::ypos#0 reg byte x 15.000000000000002
|
||||||
(void()) renderBobCleanup()
|
(void()) renderBobCleanup()
|
||||||
@@ -360,17 +359,17 @@
|
|||||||
(byte) renderBobCleanup::i#1 reg byte x 151.5
|
(byte) renderBobCleanup::i#1 reg byte x 151.5
|
||||||
(byte) renderBobCleanup::i#2 reg byte x 25.25
|
(byte) renderBobCleanup::i#2 reg byte x 25.25
|
||||||
(byte*) renderBobCleanup::screen
|
(byte*) renderBobCleanup::screen
|
||||||
(byte*) renderBobCleanup::screen#0 screen zp[2]:16 112.22222222222223
|
(byte*) renderBobCleanup::screen#0 screen zp[2]:15 112.22222222222223
|
||||||
(byte**) renderBobCleanupNext
|
(byte**) renderBobCleanupNext
|
||||||
(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:6 7.357142857142858
|
(byte**) renderBobCleanupNext#13 renderBobCleanupNext zp[2]:6 7.357142857142858
|
||||||
(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:6 3.3870967741935485
|
(byte**) renderBobCleanupNext#17 renderBobCleanupNext zp[2]:6 3.3870967741935485
|
||||||
(void()) renderBobInit()
|
(void()) renderBobInit()
|
||||||
(word~) renderBobInit::$0 zp[2]:16 16.5
|
(word~) renderBobInit::$0 zp[2]:15 16.5
|
||||||
(word~) renderBobInit::$1 zp[2]:16 11.0
|
(word~) renderBobInit::$1 zp[2]:15 11.0
|
||||||
(byte~) renderBobInit::$4 reg byte a 22.0
|
(byte~) renderBobInit::$4 reg byte a 22.0
|
||||||
(byte~) renderBobInit::$5 reg byte a 22.0
|
(byte~) renderBobInit::$5 reg byte a 22.0
|
||||||
(word~) renderBobInit::$6 zp[2]:18 22.0
|
(word~) renderBobInit::$6 zp[2]:17 22.0
|
||||||
(word~) renderBobInit::$7 zp[2]:16 22.0
|
(word~) renderBobInit::$7 zp[2]:15 22.0
|
||||||
(label) renderBobInit::@1
|
(label) renderBobInit::@1
|
||||||
(label) renderBobInit::@2
|
(label) renderBobInit::@2
|
||||||
(label) renderBobInit::@return
|
(label) renderBobInit::@return
|
||||||
@@ -405,8 +404,8 @@
|
|||||||
(byte) shiftProtoBobRight::carry#10 reg byte y 2002.0
|
(byte) shiftProtoBobRight::carry#10 reg byte y 2002.0
|
||||||
(byte) shiftProtoBobRight::carry#2 reg byte y 286.0
|
(byte) shiftProtoBobRight::carry#2 reg byte y 286.0
|
||||||
(byte) shiftProtoBobRight::i
|
(byte) shiftProtoBobRight::i
|
||||||
(byte) shiftProtoBobRight::i#1 i zp[1]:11 1001.0
|
(byte) shiftProtoBobRight::i#1 i zp[1]:10 1001.0
|
||||||
(byte) shiftProtoBobRight::i#2 i zp[1]:11 231.0
|
(byte) shiftProtoBobRight::i#2 i zp[1]:10 231.0
|
||||||
(byte) shiftProtoBobRight::j
|
(byte) shiftProtoBobRight::j
|
||||||
(byte) shiftProtoBobRight::j#1 reg byte x 2002.0
|
(byte) shiftProtoBobRight::j#1 reg byte x 2002.0
|
||||||
(byte) shiftProtoBobRight::j#10 reg byte x 1001.0
|
(byte) shiftProtoBobRight::j#10 reg byte x 1001.0
|
||||||
@@ -423,7 +422,9 @@ zp[1]:2 [ prepareBobs::shift_y#2 prepareBobs::shift_y#1 main::angle#8 main::angl
|
|||||||
zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ]
|
zp[1]:3 [ progress_idx#16 progress_idx#31 progress_idx#25 progress_idx#10 progress_idx#8 main::r#2 main::r#1 ]
|
||||||
zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ]
|
zp[1]:4 [ prepareBobs::bob_table_idx#6 prepareBobs::bob_table_idx#12 prepareBobs::bob_table_idx#1 main::a#2 main::a#6 main::a#1 ]
|
||||||
zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ]
|
zp[1]:5 [ prepareBobs::shift_x#2 prepareBobs::shift_x#1 main::i#2 main::i#1 ]
|
||||||
|
reg byte x [ bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ]
|
||||||
reg byte y [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ]
|
reg byte y [ bobCharsetFindOrAddGlyph::i1#2 bobCharsetFindOrAddGlyph::i1#1 ]
|
||||||
|
reg byte y [ bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ]
|
||||||
reg byte a [ bobCharsetFindOrAddGlyph::found#2 ]
|
reg byte a [ bobCharsetFindOrAddGlyph::found#2 ]
|
||||||
reg byte x [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ]
|
reg byte x [ shiftProtoBobRight::j#3 shiftProtoBobRight::j#10 shiftProtoBobRight::j#2 shiftProtoBobRight::j#1 ]
|
||||||
reg byte y [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ]
|
reg byte y [ shiftProtoBobRight::carry#2 shiftProtoBobRight::carry#10 ]
|
||||||
@@ -431,8 +432,7 @@ reg byte x [ shiftProtoBobDown::i#2 shiftProtoBobDown::i#1 ]
|
|||||||
zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ]
|
zp[2]:6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 prepareBobs::bob_glyph#2 prepareBobs::bob_glyph#1 bobCharsetFindOrAddGlyph::bob_glyph#10 bobCharsetFindOrAddGlyph::bob_glyph#1 memset::dst#2 memset::dst#1 renderBobCleanupNext#17 renderBobCleanupNext#13 ]
|
||||||
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
|
reg byte x [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ]
|
||||||
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
|
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
|
||||||
zp[1]:8 [ mulf_init::dir#2 mulf_init::dir#4 bobCharsetFindOrAddGlyph::i#2 bobCharsetFindOrAddGlyph::i#1 ]
|
zp[2]:8 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||||
zp[2]:9 [ main::x#0 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
|
||||||
reg byte x [ renderBob::ypos#0 ]
|
reg byte x [ renderBob::ypos#0 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#2 ]
|
reg byte a [ keyboard_key_pressed::return#2 ]
|
||||||
reg byte a [ main::$19 ]
|
reg byte a [ main::$19 ]
|
||||||
@@ -442,24 +442,24 @@ reg byte a [ keyboard_matrix_read::return#2 ]
|
|||||||
reg byte a [ keyboard_key_pressed::$2 ]
|
reg byte a [ keyboard_key_pressed::$2 ]
|
||||||
reg byte a [ keyboard_key_pressed::return#0 ]
|
reg byte a [ keyboard_key_pressed::return#0 ]
|
||||||
reg byte a [ keyboard_matrix_read::return#0 ]
|
reg byte a [ keyboard_matrix_read::return#0 ]
|
||||||
zp[1]:11 [ renderBob::x_char_offset#0 shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ]
|
zp[1]:10 [ renderBob::x_char_offset#0 shiftProtoBobRight::i#2 shiftProtoBobRight::i#1 prepareBobs::cell#2 prepareBobs::cell#1 ]
|
||||||
reg byte a [ renderBob::y_char_offset#0 ]
|
reg byte a [ renderBob::y_char_offset#0 ]
|
||||||
reg byte a [ renderBob::$8 ]
|
reg byte a [ renderBob::$8 ]
|
||||||
zp[2]:12 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ]
|
zp[2]:11 [ renderBob::y_offset#0 renderBob::$2 renderBob::screen#0 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 progress_cursor#15 progress_cursor#31 progress_cursor#24 progress_cursor#17 progress_cursor#8 mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s::return#0 mulf8u_prepared::return#2 mulf8s::return#2 main::$10 mulf8s::return#3 main::$12 mulf8u_prepared::return#0 main::$13 main::y#0 ]
|
||||||
reg byte a [ renderBob::$4 ]
|
reg byte a [ renderBob::$4 ]
|
||||||
zp[1]:14 [ renderBob::$5 shiftProtoBobRight::carry#1 bobCharsetFindOrAddGlyph::glyph_id#11 bobCharsetFindOrAddGlyph::glyph_id#1 ]
|
zp[1]:13 [ renderBob::$5 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ]
|
||||||
reg byte a [ renderBob::$6 ]
|
reg byte a [ renderBob::$6 ]
|
||||||
reg byte x [ renderBob::bob_table_idx#0 ]
|
reg byte x [ renderBob::bob_table_idx#0 ]
|
||||||
reg byte a [ mulf8u_prepare::a#0 ]
|
reg byte a [ mulf8u_prepare::a#0 ]
|
||||||
zp[1]:15 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::c#2 mulf_init::c#1 bob_charset_next_id#23 bob_charset_next_id#14 bob_charset_next_id#16 bob_charset_next_id#30 bob_charset_next_id#21 bob_charset_next_id#8 ]
|
zp[1]:14 [ mulf8s_prepared::b#0 renderBob::xpos#0 mulf_init::dir#2 mulf_init::dir#4 shiftProtoBobRight::carry#1 ]
|
||||||
reg byte a [ mulf8u_prepared::b#0 ]
|
reg byte a [ mulf8u_prepared::b#0 ]
|
||||||
reg byte a [ mulf8s_prepared::$8 ]
|
reg byte a [ mulf8s_prepared::$8 ]
|
||||||
reg byte a [ mulf8s_prepared::$15 ]
|
reg byte a [ mulf8s_prepared::$15 ]
|
||||||
reg byte a [ mulf8s_prepared::$12 ]
|
reg byte a [ mulf8s_prepared::$12 ]
|
||||||
reg byte a [ mulf8s_prepared::$16 ]
|
reg byte a [ mulf8s_prepared::$16 ]
|
||||||
reg byte a [ renderBobCleanup::$1 ]
|
reg byte a [ renderBobCleanup::$1 ]
|
||||||
zp[2]:16 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ]
|
zp[2]:15 [ renderBobInit::$0 renderBobInit::$7 renderBobInit::$1 renderBobCleanup::screen#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 prepareBobs::bob_table#2 prepareBobs::bob_table#1 prepareBobs::bob_table#0 ]
|
||||||
zp[2]:18 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::glyph_cursor#1 ]
|
zp[2]:17 [ renderBobInit::$6 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 bobCharsetFindOrAddGlyph::glyph_cursor#11 bobCharsetFindOrAddGlyph::glyph_cursor#1 ]
|
||||||
reg byte a [ renderBobInit::$4 ]
|
reg byte a [ renderBobInit::$4 ]
|
||||||
reg byte a [ renderBobInit::$5 ]
|
reg byte a [ renderBobInit::$5 ]
|
||||||
reg byte a [ bobCharsetFindOrAddGlyph::return#1 ]
|
reg byte a [ bobCharsetFindOrAddGlyph::return#1 ]
|
||||||
|
Reference in New Issue
Block a user