1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-01-01 13:30:50 +00:00

Added text color to raster65.

This commit is contained in:
jespergravgaard 2020-09-15 11:25:46 +02:00
parent c4622fae00
commit bce8af7d66
5 changed files with 2436 additions and 1595 deletions

View File

@ -10,6 +10,13 @@
char * const SCREEN = 0x0400;
// Logo y-position (char row on screen)
char const LOGO_Y = 3;
// Scroll y-position (char row on screen)
char const SCROLL_Y = 13;
// Greeting y-position (char row on screen)
char const GREET_Y = 20;
// Sinus Values 0-183
char SINUS[256] = kickasm {{
.fill 256, 91.5 + 91.5*sin(i*2*PI/256)
@ -32,14 +39,20 @@ void main() {
// Enable 48MHz fast mode
VICIV->CONTROLB |= 0x40;
VICIV->CONTROLC |= 0x40;
// Clear screen
memset(SCREEN, ' ', 40*25);
// Initialize music
asm { lda #0 }
(*songInit)();
// Clear screen
memset(SCREEN, ' ', 40*25);
// Put MEGA logo on screen
for( char i=0; i<sizeof(MEGA_LOGO); i++)
(SCREEN+3*40)[i] = MEGA_LOGO[i];
for( char i=0; i<sizeof(MEGA_LOGO); i++) {
(SCREEN + LOGO_Y*40)[i] = MEGA_LOGO[i];
}
// Put dummy text up for scroll and greet
for( char i=0;i<40;i++) {
(SCREEN + SCROLL_Y*40)[i] = 'a';
(SCREEN + GREET_Y*40)[i] = 'b';
}
// Set up 256 color palette
char i=0;
do {
@ -80,9 +93,9 @@ volatile char greetnm;
// The number of greetings
const char GREETCOUNT = 16;
// The number of raster lines
const char NUMBERL = 0xe0;
const char NUMBERL = 0xd8;
// Moving Raster Bars
char rasters[256];
char rasters[NUMBERL];
// BIG INTERRUPT LOOP
interrupt(hardware_stack) void irq1() {
@ -106,7 +119,7 @@ interrupt(hardware_stack) void irq1() {
VICIII->BG_COLOR = col;
if(line < scrollypos) {
// if raster position < scrolly pos do wobble Logo!
VICIV->TEXTXPOS_LO = 0x28 + SINUS[wobblepos++];
VICIV->TEXTXPOS_LO = SINUS[wobblepos++];
// No zooming
VICIV->CHRXSCL = 0x66;
} else if(line == scrollypos) {
@ -135,13 +148,35 @@ interrupt(hardware_stack) void irq1() {
while(raster == VICII->RASTER) ;
}
// Set all raster bars to black
for(char l=0;l!=NUMBERL;l++)
rasters[l] = 0;
// Show start of calculation
VICII->BORDER_COLOR = 0x88;
VICII->BG_COLOR = 0x88;
// play music
(*songPlay)();
// Set up colors behind logo, scroll and greets
char colsin = sinpos;
for(char i=0;i<40;i++) {
// Greeting colors
char col = SINUS[colsin]/4;
(COLORRAM + GREET_Y*40)[i] = col;
// Logo colors
col /= 2;
(COLORRAM + LOGO_Y*40 + 0*40 - 1)[i] = col;
(COLORRAM + LOGO_Y*40 + 1*40 - 2)[i] = col;
(COLORRAM + LOGO_Y*40 + 2*40 - 3)[i] = col;
(COLORRAM + LOGO_Y*40 + 3*40 - 4)[i] = col;
(COLORRAM + LOGO_Y*40 + 4*40 - 5)[i] = col;
(COLORRAM + LOGO_Y*40 + 5*40 - 6)[i] = col;
// Scroll colors
(COLORRAM + SCROLL_Y*40)[i] = PAL_GREEN[colsin];
colsin++;
}
// Set all raster bars to black
for(char l=0;l!=NUMBERL;l++)
rasters[l] = 0;
// Big block of bars (16)
char barsin = sinpos;
for(char barcnt=0; barcnt<16; barcnt++) {
@ -153,11 +188,14 @@ interrupt(hardware_stack) void irq1() {
rasters[idx++] = --barcol;
barsin += 10;
}
// Produce dark area behind text
for(char i=0;i<19;i++)
rasters[scrollypos+i] = rasters[scrollypos+i] /2 & 7;
// Show end of calculation
VICII->BORDER_COLOR = 0;
VICII->BG_COLOR = 0;
}
// A MEGA logo

View File

@ -22,10 +22,16 @@
.const PROCPORT_DDR_MEMORY_MASK = 7
// RAM in 0xA000, 0xE000 I/O in 0xD000
.const PROCPORT_RAM_IO = 5
// Logo y-position (char row on screen)
.const LOGO_Y = 3
// Scroll y-position (char row on screen)
.const SCROLL_Y = $d
// Greeting y-position (char row on screen)
.const GREET_Y = $14
// The number of greetings
.const GREETCOUNT = $10
// The number of raster lines
.const NUMBERL = $e0
.const NUMBERL = $d8
.const OFFSET_STRUCT_MOS4569_VICIII_KEY = $2f
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = $31
.const OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = $54
@ -39,6 +45,8 @@
.const OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = $16
.const OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR = $20
.const OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR = $21
.const OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = $20
.const OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = $21
.const OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO = $4c
.const OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL = $5a
.const SIZEOF_BYTE = 1
@ -52,6 +60,8 @@
.label VICIII = $d000
// The VIC IV
.label VICIV = $d000
// Color Ram
.label COLORRAM = $d800
// Palette RED
.label PALETTE_RED = $d100
// Palette GREEN
@ -125,33 +135,55 @@ irq1: {
__b1:
// for(char line=0;line!=NUMBERL;line++)
cpz #NUMBERL
bne __b2
ldx #0
// Set all raster bars to black
__b15:
// for(char l=0;l!=NUMBERL;l++)
cpx #NUMBERL
bne __b16
beq !__b2+
jmp __b2
!__b2:
// VICII->BORDER_COLOR = 0x88
// Show start of calculation
lda #$88
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// VICII->BG_COLOR = 0x88
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
// (*songPlay)()
// play music
jsr songPlay
// colsin = sinpos
// Set up colors behind logo, scroll and greets
ldy.z sinpos
ldx #0
__b16:
// for(char i=0;i<40;i++)
cpx #$28
bcc __b17
ldx #0
// Set all raster bars to black
__b18:
// for(char l=0;l!=NUMBERL;l++)
cpx #NUMBERL
bne __b19
// barsin = sinpos
// Big block of bars (16)
lda.z sinpos
sta.z barsin
lda #0
sta.z barcnt
__b18:
__b21:
// for(char barcnt=0; barcnt<16; barcnt++)
lda.z barcnt
cmp #$10
bcc __b19
bcc __b22
ldx #0
// Produce dark area behind text
__b25:
__b28:
// for(char i=0;i<19;i++)
cpx #$13
bcc __b26
bcc __b29
// VICII->BORDER_COLOR = 0
// Show end of calculation
lda #0
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR
// VICII->BG_COLOR = 0
sta VICII+OFFSET_STRUCT_MOS6569_VICII_BG_COLOR
// }
pla
tay
@ -159,7 +191,7 @@ irq1: {
tax
pla
rti
__b26:
__b29:
// rasters[scrollypos+i] /2
lda rasters+scrollypos,x
lsr
@ -169,8 +201,8 @@ irq1: {
sta rasters+scrollypos,x
// for(char i=0;i<19;i++)
inx
jmp __b25
__b19:
jmp __b28
__b22:
// idx = SINUS[barsin]
ldx.z barsin
ldy SINUS,x
@ -182,15 +214,15 @@ irq1: {
asl
taz
ldx #0
__b20:
__b23:
// for(char i=0;i<16;i++)
cpx #$10
bcc __b21
bcc __b24
ldx #0
__b22:
__b25:
// for(char i=0;i<15;i++)
cpx #$f
bcc __b23
bcc __b26
// barsin += 10
lda #$a
clc
@ -198,8 +230,8 @@ irq1: {
sta.z barsin
// for(char barcnt=0; barcnt<16; barcnt++)
inc.z barcnt
jmp __b18
__b23:
jmp __b21
__b26:
// rasters[idx++] = --barcol;
dez
// rasters[idx++] = --barcol
@ -209,8 +241,8 @@ irq1: {
iny
// for(char i=0;i<15;i++)
inx
jmp __b22
__b21:
jmp __b25
__b24:
// rasters[idx++] = barcol++
tza
sta rasters,y
@ -219,14 +251,45 @@ irq1: {
inz
// for(char i=0;i<16;i++)
inx
jmp __b20
__b16:
jmp __b23
__b19:
// rasters[l] = 0
lda #0
sta rasters,x
// for(char l=0;l!=NUMBERL;l++)
inx
jmp __b15
jmp __b18
__b17:
// col = SINUS[colsin]/4
lda SINUS,y
lsr
lsr
// (COLORRAM + GREET_Y*40)[i] = col
sta COLORRAM+GREET_Y*$28,x
// col /= 2
// Logo colors
lsr
// (COLORRAM + LOGO_Y*40 + 0*40 - 1)[i] = col
sta COLORRAM+LOGO_Y*$28-1,x
// (COLORRAM + LOGO_Y*40 + 1*40 - 2)[i] = col
sta COLORRAM+LOGO_Y*$28+1*$28-2,x
// (COLORRAM + LOGO_Y*40 + 2*40 - 3)[i] = col
sta COLORRAM+LOGO_Y*$28+2*$28-3,x
// (COLORRAM + LOGO_Y*40 + 3*40 - 4)[i] = col
sta COLORRAM+LOGO_Y*$28+3*$28-4,x
// (COLORRAM + LOGO_Y*40 + 4*40 - 5)[i] = col
sta COLORRAM+LOGO_Y*$28+4*$28-5,x
// (COLORRAM + LOGO_Y*40 + 5*40 - 6)[i] = col
sta COLORRAM+LOGO_Y*$28+5*$28-6,x
// (COLORRAM + SCROLL_Y*40)[i] = PAL_GREEN[colsin]
// Scroll colors
lda PAL_GREEN,y
sta COLORRAM+SCROLL_Y*$28,x
// colsin++;
iny
// for(char i=0;i<40;i++)
inx
jmp __b16
__b2:
// col = rasters[line]
tza
@ -238,16 +301,16 @@ irq1: {
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR
// if(line < scrollypos)
cpz #scrollypos
bcc __b3
bcc __b4
// if(line == scrollypos)
cpz #scrollypos
beq __b4
beq __b5
// if(line == scrollypos+blackbar)
cpz #scrollypos+blackbar
beq __b5
beq __b6
// if(line == scrollypos+blackbar+1)
cpz #scrollypos+blackbar+1
bne __b6
bne __b7
// zoomval = SINUS[zoomx++]
// if raster position > scrolly pos do zoom
ldy.z zoomx
@ -262,34 +325,34 @@ irq1: {
// if(zoomx==0)
lda.z zoomx
cmp #0
bne __b6
bne __b7
// if(++greetnm==GREETCOUNT)
inc.z greetnm
lda #GREETCOUNT
cmp.z greetnm
bne __b6
bne __b7
// greetnm =0
lda #0
sta.z greetnm
__b6:
__b7:
// raster = VICII->RASTER
// Wait for the next raster line
lda VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
__b7:
__b8:
// while(raster == VICII->RASTER)
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
beq __b7
beq __b8
// for(char line=0;line!=NUMBERL;line++)
inz
jmp __b1
__b5:
__b6:
// VICIV->TEXTXPOS_LO = 0x50
// if raster position > scrolly pos do nozoom
// default value
lda #$50
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO
jmp __b6
__b4:
jmp __b7
__b5:
// if raster position = scrolly pos do scrolly
// no wobbling from this point
lda #$50
@ -298,22 +361,19 @@ irq1: {
// set softscroll
lda.z xpos
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2
jmp __b6
__b3:
// 0x28 + SINUS[wobblepos++]
lda #$28
clc
adc SINUS,x
// VICIV->TEXTXPOS_LO = 0x28 + SINUS[wobblepos++]
jmp __b7
__b4:
// VICIV->TEXTXPOS_LO = SINUS[wobblepos++]
// if raster position < scrolly pos do wobble Logo!
lda SINUS,x
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO
// VICIV->TEXTXPOS_LO = 0x28 + SINUS[wobblepos++];
// VICIV->TEXTXPOS_LO = SINUS[wobblepos++];
inx
// VICIV->CHRXSCL = 0x66
// No zooming
lda #$66
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL
jmp __b6
jmp __b7
}
main: {
// VICIII->KEY = 0x47
@ -332,14 +392,14 @@ main: {
lda #$40
ora VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CONTROLC
// memset(SCREEN, ' ', 40*25)
// Clear screen
jsr memset
// asm
// Initialize music
lda #0
// (*songInit)()
jsr songInit
// memset(SCREEN, ' ', 40*25)
// Clear screen
jsr memset
ldx #0
// Put MEGA logo on screen
__b1:
@ -347,7 +407,13 @@ main: {
cpx #$bc*SIZEOF_BYTE
bcc __b2
ldx #0
// Put dummy text up for scroll and greet
__b3:
// for( char i=0;i<40;i++)
cpx #$28
bcc __b4
ldx #0
__b5:
// PALETTE_RED[i] = PAL_RED[i]
lda PAL_RED,x
sta PALETTE_RED,x
@ -360,7 +426,7 @@ main: {
// while(++i!=0)
inx
cpx #0
bne __b3
bne __b5
// asm
// Set up raster interrupts C64 style
sei
@ -400,12 +466,22 @@ main: {
// asm
// Enable IRQ
cli
__b5:
jmp __b5
__b7:
jmp __b7
__b4:
// (SCREEN + SCROLL_Y*40)[i] = 'a'
lda #'a'
sta SCREEN+SCROLL_Y*$28,x
// (SCREEN + GREET_Y*40)[i] = 'b'
lda #'b'
sta SCREEN+GREET_Y*$28,x
// for( char i=0;i<40;i++)
inx
jmp __b3
__b2:
// (SCREEN+3*40)[i] = MEGA_LOGO[i]
// (SCREEN + LOGO_Y*40)[i] = MEGA_LOGO[i]
lda MEGA_LOGO,x
sta SCREEN+3*$28,x
sta SCREEN+LOGO_Y*$28,x
// for( char i=0; i<sizeof(MEGA_LOGO); i++)
inx
jmp __b1
@ -446,7 +522,7 @@ SINUS:
.fill 256, 91.5 + 91.5*sin(i*2*PI/256)
// Moving Raster Bars
rasters: .fill $100, 0
rasters: .fill NUMBERL, 0
// A MEGA logo
MEGA_LOGO: .byte $20, $20, $20, $20, $20, $cf, $cf, $cf, $20, $cf, $cf, $20, $20, $cf, $cf, $cf, $20, $20, $cf, $cf, $cf, $20, $20, $20, $cf, $cf, $cf, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $cf, $cf, $20, $cf, $cf, $20, $cf, $20, $cf, $20, $20, $20, $cf, $cf, $20, $20, $20, $20, $cf, $cf, $20, $20, $20, $cf, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $cf, $cf, $20, $20, $cf, $20, $cf, $cf, $cf, $cf, $cf, $20, $cf, $cf, $20, $cf, $cf, $cf, $cf, $cf, $20, $20, $20, $cf, $cf, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $cf, $cf, $cf, $20, $20, $20, $cf, $cf, $cf, $20, $20, $20, $20, $cf, $20, $20, $20, $cf, $cf, $cf, $20, $cf, $cf, $cf, $cf, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $20, $cf, $20, $20, $20, $20, $cf, $cf, $20, $cf, $cf, $cf, $20, $20, $cf, $cf, $cf, $20, $20, $cf, $20, $20, $20, $cf
PAL_RED: .byte 0, $f3, $d4, $b5, $a6, $97, $88, $79, $1a, $fa, $eb, $ec, $bd, $be, $af, $ff, $16, $c6, $a7, $88, $49, $5a, $2b, $1c, $ac, $ad, $8e, $8f, $ff, $ff, $ff, $ff, $c6, $77, $48, $29, $e9, $fa, $cb, $cc, $5d, $4e, $2f, $ff, $ff, $ff, $ff, $ff, $57, $18, $f8, $d9, $aa, $8b, $6c, $5d, $ed, $de, $cf, $ff, $ff, $ff, $ff, $ff, $26, $e6, $b7, $a8, $69, $5a, $3b, $3c, $dc, $cd, $ae, $9f, $ff, $ff, $ff, $ff, $65, $16, $17, $f7, $d8, $b9, $9a, $8b, $2c, $d, $fd, $ee, $cf, $ff, $ff, $ff, $64, $15, 6, $e6, $c7, $a8, $99, $8a, $1b, $c, $fc, $fd, $ee, $cf, $ff, $ff, $12, $d2, $d3, $b4, $95, $86, $77, $78, 9, $69, $ea, $fb, $dc, $ad, $ae, $af, $f0, $c1, $c2, $a3, $84, $85, $76, $67, 8, $f8, $e9, $da, $db, $bc, $bd, $ae, $40, $11, $12, $f2, $e3, $d4, $c5, $c6, $47, $38, $39, $2a, $1b, $c, $d, $ed, 0, 0, $f0, $d1, $c2, $b3, $a4, $95, $36, $27, $28, $29, $f9, $ea, $eb, $ec, $70, $41, $22, $23, $f3, $f4, $e5, $e6, $77, $78, $69, $7a, $3b, $3c, $3d, $3e, $a1, $82, $63, $54, $35, $26, 7, 8, $98, $99, $8a, $7b, $5c, $5d, $3e, $3f, $33, 4, $d4, $d5, $a6, $a7, $88, $89, $1a, $ab, $fb, $ec, $cd, $be, $af, $ff, $b4, $85, $56, $47, $18, 9, $f9, $ea, $7b, $7c, $5d, $5e, $2f, $ef, $ff, $ff, 6, $d6, $a7, $98, $59, $4a, $2b, $2c, $bc, $ad, $8e, $8f, $ff, $ff, $ff, $ff

View File

@ -25,183 +25,217 @@ irq1: scope:[irq1] from
[11] (volatile byte) sinpos ← ++ (volatile byte) sinpos
[12] (byte) irq1::wobblepos#0 ← (volatile byte) sinpos
to:irq1::@1
irq1::@1: scope:[irq1] from irq1 irq1::@8
[13] (byte) irq1::wobblepos#10 ← phi( irq1/(byte) irq1::wobblepos#0 irq1::@8/(byte) irq1::wobblepos#7 )
[13] (byte) irq1::line#10 ← phi( irq1/(byte) 0 irq1::@8/(byte) irq1::line#1 )
irq1::@1: scope:[irq1] from irq1 irq1::@9
[13] (byte) irq1::wobblepos#10 ← phi( irq1/(byte) irq1::wobblepos#0 irq1::@9/(byte) irq1::wobblepos#7 )
[13] (byte) irq1::line#10 ← phi( irq1/(byte) 0 irq1::@9/(byte) irq1::line#1 )
[14] if((byte) irq1::line#10!=(const nomodify byte) NUMBERL) goto irq1::@2
to:irq1::@15
irq1::@15: scope:[irq1] from irq1::@1 irq1::@16
[15] (byte) irq1::l#2 ← phi( irq1::@16/(byte) irq1::l#1 irq1::@1/(byte) 0 )
[16] if((byte) irq1::l#2!=(const nomodify byte) NUMBERL) goto irq1::@16
to:irq1::@17
irq1::@17: scope:[irq1] from irq1::@15
to:irq1::@3
irq1::@3: scope:[irq1] from irq1::@1
[15] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) $88
[16] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) $88
[17] call *((const void()*) songPlay)
[18] (byte) irq1::barsin#0 ← (volatile byte) sinpos
[18] (byte) irq1::colsin#0 ← (volatile byte) sinpos
to:irq1::@16
irq1::@16: scope:[irq1] from irq1::@17 irq1::@3
[19] (byte) irq1::colsin#2 ← phi( irq1::@17/(byte) irq1::colsin#1 irq1::@3/(byte) irq1::colsin#0 )
[19] (byte) irq1::i#2 ← phi( irq1::@17/(byte) irq1::i#1 irq1::@3/(byte) 0 )
[20] if((byte) irq1::i#2<(byte) $28) goto irq1::@17
to:irq1::@18
irq1::@18: scope:[irq1] from irq1::@17 irq1::@24
[19] (byte) irq1::barsin#2 ← phi( irq1::@17/(byte) irq1::barsin#0 irq1::@24/(byte) irq1::barsin#1 )
[19] (byte) irq1::barcnt#2 ← phi( irq1::@17/(byte) 0 irq1::@24/(byte) irq1::barcnt#1 )
[20] if((byte) irq1::barcnt#2<(byte) $10) goto irq1::@19
to:irq1::@25
irq1::@25: scope:[irq1] from irq1::@18 irq1::@26
[21] (byte) irq1::i2#2 ← phi( irq1::@18/(byte) 0 irq1::@26/(byte) irq1::i2#1 )
[22] if((byte) irq1::i2#2<(byte) $13) goto irq1::@26
irq1::@18: scope:[irq1] from irq1::@16 irq1::@19
[21] (byte) irq1::l#2 ← phi( irq1::@16/(byte) 0 irq1::@19/(byte) irq1::l#1 )
[22] if((byte) irq1::l#2!=(const nomodify byte) NUMBERL) goto irq1::@19
to:irq1::@20
irq1::@20: scope:[irq1] from irq1::@18
[23] (byte) irq1::barsin#0 ← (volatile byte) sinpos
to:irq1::@21
irq1::@21: scope:[irq1] from irq1::@20 irq1::@27
[24] (byte) irq1::barsin#2 ← phi( irq1::@20/(byte) irq1::barsin#0 irq1::@27/(byte) irq1::barsin#1 )
[24] (byte) irq1::barcnt#2 ← phi( irq1::@20/(byte) 0 irq1::@27/(byte) irq1::barcnt#1 )
[25] if((byte) irq1::barcnt#2<(byte) $10) goto irq1::@22
to:irq1::@28
irq1::@28: scope:[irq1] from irq1::@21 irq1::@29
[26] (byte) irq1::i3#2 ← phi( irq1::@21/(byte) 0 irq1::@29/(byte) irq1::i3#1 )
[27] if((byte) irq1::i3#2<(byte) $13) goto irq1::@29
to:irq1::@30
irq1::@30: scope:[irq1] from irq1::@28
[28] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR) ← (byte) 0
[29] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR) ← (byte) 0
to:irq1::@return
irq1::@return: scope:[irq1] from irq1::@25
[23] return
irq1::@return: scope:[irq1] from irq1::@30
[30] return
to:@return
irq1::@26: scope:[irq1] from irq1::@25
[24] (byte~) irq1::$22 ← *((const byte*) rasters+(const nomodify byte) irq1::scrollypos + (byte) irq1::i2#2) >> (byte) 1
[25] (byte~) irq1::$23 ← (byte~) irq1::$22 & (byte) 7
[26] *((const byte*) rasters+(const nomodify byte) irq1::scrollypos + (byte) irq1::i2#2) ← (byte~) irq1::$23
[27] (byte) irq1::i2#1 ← ++ (byte) irq1::i2#2
irq1::@29: scope:[irq1] from irq1::@28
[31] (byte~) irq1::$23 ← *((const byte*) rasters+(const nomodify byte) irq1::scrollypos + (byte) irq1::i3#2) >> (byte) 1
[32] (byte~) irq1::$24 ← (byte~) irq1::$23 & (byte) 7
[33] *((const byte*) rasters+(const nomodify byte) irq1::scrollypos + (byte) irq1::i3#2) ← (byte~) irq1::$24
[34] (byte) irq1::i3#1 ← ++ (byte) irq1::i3#2
to:irq1::@28
irq1::@22: scope:[irq1] from irq1::@21
[35] (byte) irq1::idx#0 ← *((const byte*) SINUS + (byte) irq1::barsin#2)
[36] (byte) irq1::barcol#0 ← (byte) irq1::barcnt#2 << (byte) 4
to:irq1::@23
irq1::@23: scope:[irq1] from irq1::@22 irq1::@24
[37] (byte) irq1::idx#3 ← phi( irq1::@22/(byte) irq1::idx#0 irq1::@24/(byte) irq1::idx#1 )
[37] (byte) irq1::barcol#3 ← phi( irq1::@22/(byte) irq1::barcol#0 irq1::@24/(byte) irq1::barcol#1 )
[37] (byte) irq1::i1#2 ← phi( irq1::@22/(byte) 0 irq1::@24/(byte) irq1::i1#1 )
[38] if((byte) irq1::i1#2<(byte) $10) goto irq1::@24
to:irq1::@25
irq1::@25: scope:[irq1] from irq1::@23 irq1::@26
[39] (byte) irq1::idx#4 ← phi( irq1::@23/(byte) irq1::idx#3 irq1::@26/(byte) irq1::idx#2 )
[39] (byte) irq1::barcol#4 ← phi( irq1::@23/(byte) irq1::barcol#3 irq1::@26/(byte) irq1::barcol#2 )
[39] (byte) irq1::i2#2 ← phi( irq1::@23/(byte) 0 irq1::@26/(byte) irq1::i2#1 )
[40] if((byte) irq1::i2#2<(byte) $f) goto irq1::@26
to:irq1::@27
irq1::@27: scope:[irq1] from irq1::@25
[41] (byte) irq1::barsin#1 ← (byte) irq1::barsin#2 + (byte) $a
[42] (byte) irq1::barcnt#1 ← ++ (byte) irq1::barcnt#2
to:irq1::@21
irq1::@26: scope:[irq1] from irq1::@25
[43] (byte) irq1::barcol#2 ← -- (byte) irq1::barcol#4
[44] *((const byte*) rasters + (byte) irq1::idx#4) ← (byte) irq1::barcol#2
[45] (byte) irq1::idx#2 ← ++ (byte) irq1::idx#4
[46] (byte) irq1::i2#1 ← ++ (byte) irq1::i2#2
to:irq1::@25
irq1::@24: scope:[irq1] from irq1::@23
[47] *((const byte*) rasters + (byte) irq1::idx#3) ← (byte) irq1::barcol#3
[48] (byte) irq1::idx#1 ← ++ (byte) irq1::idx#3
[49] (byte) irq1::barcol#1 ← ++ (byte) irq1::barcol#3
[50] (byte) irq1::i1#1 ← ++ (byte) irq1::i1#2
to:irq1::@23
irq1::@19: scope:[irq1] from irq1::@18
[28] (byte) irq1::idx#0 ← *((const byte*) SINUS + (byte) irq1::barsin#2)
[29] (byte) irq1::barcol#0 ← (byte) irq1::barcnt#2 << (byte) 4
to:irq1::@20
irq1::@20: scope:[irq1] from irq1::@19 irq1::@21
[30] (byte) irq1::idx#3 ← phi( irq1::@19/(byte) irq1::idx#0 irq1::@21/(byte) irq1::idx#1 )
[30] (byte) irq1::barcol#3 ← phi( irq1::@19/(byte) irq1::barcol#0 irq1::@21/(byte) irq1::barcol#1 )
[30] (byte) irq1::i#2 ← phi( irq1::@19/(byte) 0 irq1::@21/(byte) irq1::i#1 )
[31] if((byte) irq1::i#2<(byte) $10) goto irq1::@21
to:irq1::@22
irq1::@22: scope:[irq1] from irq1::@20 irq1::@23
[32] (byte) irq1::idx#4 ← phi( irq1::@20/(byte) irq1::idx#3 irq1::@23/(byte) irq1::idx#2 )
[32] (byte) irq1::barcol#4 ← phi( irq1::@20/(byte) irq1::barcol#3 irq1::@23/(byte) irq1::barcol#2 )
[32] (byte) irq1::i1#2 ← phi( irq1::@20/(byte) 0 irq1::@23/(byte) irq1::i1#1 )
[33] if((byte) irq1::i1#2<(byte) $f) goto irq1::@23
to:irq1::@24
irq1::@24: scope:[irq1] from irq1::@22
[34] (byte) irq1::barsin#1 ← (byte) irq1::barsin#2 + (byte) $a
[35] (byte) irq1::barcnt#1 ← ++ (byte) irq1::barcnt#2
[51] *((const byte*) rasters + (byte) irq1::l#2) ← (byte) 0
[52] (byte) irq1::l#1 ← ++ (byte) irq1::l#2
to:irq1::@18
irq1::@23: scope:[irq1] from irq1::@22
[36] (byte) irq1::barcol#2 ← -- (byte) irq1::barcol#4
[37] *((const byte*) rasters + (byte) irq1::idx#4) ← (byte) irq1::barcol#2
[38] (byte) irq1::idx#2 ← ++ (byte) irq1::idx#4
[39] (byte) irq1::i1#1 ← ++ (byte) irq1::i1#2
to:irq1::@22
irq1::@21: scope:[irq1] from irq1::@20
[40] *((const byte*) rasters + (byte) irq1::idx#3) ← (byte) irq1::barcol#3
[41] (byte) irq1::idx#1 ← ++ (byte) irq1::idx#3
[42] (byte) irq1::barcol#1 ← ++ (byte) irq1::barcol#3
[43] (byte) irq1::i#1 ← ++ (byte) irq1::i#2
to:irq1::@20
irq1::@16: scope:[irq1] from irq1::@15
[44] *((const byte*) rasters + (byte) irq1::l#2) ← (byte) 0
[45] (byte) irq1::l#1 ← ++ (byte) irq1::l#2
to:irq1::@15
irq1::@17: scope:[irq1] from irq1::@16
[53] (byte) irq1::col1#0 ← *((const byte*) SINUS + (byte) irq1::colsin#2) >> (byte) 2
[54] *((const nomodify byte*) COLORRAM+(const nomodify byte) GREET_Y*(byte) $28 + (byte) irq1::i#2) ← (byte) irq1::col1#0
[55] (byte) irq1::col1#1 ← (byte) irq1::col1#0 >> (byte) 1
[56] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28-(byte) 1 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[57] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28+(byte)(number) 1*(number) $28-(byte) 2 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[58] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28+(byte)(number) 2*(number) $28-(byte) 3 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[59] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28+(byte)(number) 3*(number) $28-(byte) 4 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[60] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28+(byte)(number) 4*(number) $28-(byte) 5 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[61] *((const nomodify byte*) COLORRAM+(const nomodify byte) LOGO_Y*(byte) $28+(byte)(number) 5*(number) $28-(byte) 6 + (byte) irq1::i#2) ← (byte) irq1::col1#1
[62] *((const nomodify byte*) COLORRAM+(const nomodify byte) SCROLL_Y*(byte) $28 + (byte) irq1::i#2) ← *((const byte*) PAL_GREEN + (byte) irq1::colsin#2)
[63] (byte) irq1::colsin#1 ← ++ (byte) irq1::colsin#2
[64] (byte) irq1::i#1 ← ++ (byte) irq1::i#2
to:irq1::@16
irq1::@2: scope:[irq1] from irq1::@1
[46] (byte) irq1::col#0 ← *((const byte*) rasters + (byte) irq1::line#10)
[47] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) irq1::col#0
[48] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) irq1::col#0
[49] if((byte) irq1::line#10<(const nomodify byte) irq1::scrollypos) goto irq1::@3
to:irq1::@9
irq1::@9: scope:[irq1] from irq1::@2
[50] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos) goto irq1::@4
[65] (byte) irq1::col#0 ← *((const byte*) rasters + (byte) irq1::line#10)
[66] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) irq1::col#0
[67] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) irq1::col#0
[68] if((byte) irq1::line#10<(const nomodify byte) irq1::scrollypos) goto irq1::@4
to:irq1::@10
irq1::@10: scope:[irq1] from irq1::@9
[51] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar) goto irq1::@5
irq1::@10: scope:[irq1] from irq1::@2
[69] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos) goto irq1::@5
to:irq1::@11
irq1::@11: scope:[irq1] from irq1::@10
[52] if((byte) irq1::line#10!=(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar+(byte) 1) goto irq1::@6
[70] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar) goto irq1::@6
to:irq1::@12
irq1::@12: scope:[irq1] from irq1::@11
[53] (byte) irq1::zoomval#0 ← *((const byte*) SINUS + (volatile byte) zoomx)
[54] (volatile byte) zoomx ← ++ (volatile byte) zoomx
[55] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) irq1::zoomval#0
[56] (byte~) irq1::$7 ← (byte) irq1::zoomval#0 + (byte) 1
[57] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte~) irq1::$7
[58] if((volatile byte) zoomx!=(byte) 0) goto irq1::@6
[71] if((byte) irq1::line#10!=(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar+(byte) 1) goto irq1::@7
to:irq1::@13
irq1::@13: scope:[irq1] from irq1::@12
[59] (volatile byte) greetnm ← ++ (volatile byte) greetnm
[60] if((volatile byte) greetnm!=(const nomodify byte) GREETCOUNT) goto irq1::@6
[72] (byte) irq1::zoomval#0 ← *((const byte*) SINUS + (volatile byte) zoomx)
[73] (volatile byte) zoomx ← ++ (volatile byte) zoomx
[74] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) irq1::zoomval#0
[75] (byte~) irq1::$7 ← (byte) irq1::zoomval#0 + (byte) 1
[76] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte~) irq1::$7
[77] if((volatile byte) zoomx!=(byte) 0) goto irq1::@7
to:irq1::@14
irq1::@14: scope:[irq1] from irq1::@13
[61] (volatile byte) greetnm ← (byte) 0
to:irq1::@6
irq1::@6: scope:[irq1] from irq1::@11 irq1::@12 irq1::@13 irq1::@14 irq1::@3 irq1::@4 irq1::@5
[62] (byte) irq1::wobblepos#7 ← phi( irq1::@11/(byte) irq1::wobblepos#10 irq1::@12/(byte) irq1::wobblepos#10 irq1::@13/(byte) irq1::wobblepos#10 irq1::@14/(byte) irq1::wobblepos#10 irq1::@3/(byte) irq1::wobblepos#1 irq1::@4/(byte) irq1::wobblepos#10 irq1::@5/(byte) irq1::wobblepos#10 )
[63] (byte) irq1::raster#0 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)
[78] (volatile byte) greetnm ← ++ (volatile byte) greetnm
[79] if((volatile byte) greetnm!=(const nomodify byte) GREETCOUNT) goto irq1::@7
to:irq1::@15
irq1::@15: scope:[irq1] from irq1::@14
[80] (volatile byte) greetnm ← (byte) 0
to:irq1::@7
irq1::@7: scope:[irq1] from irq1::@6 irq1::@7
[64] if((byte) irq1::raster#0==*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)) goto irq1::@7
irq1::@7: scope:[irq1] from irq1::@12 irq1::@13 irq1::@14 irq1::@15 irq1::@4 irq1::@5 irq1::@6
[81] (byte) irq1::wobblepos#7 ← phi( irq1::@12/(byte) irq1::wobblepos#10 irq1::@13/(byte) irq1::wobblepos#10 irq1::@14/(byte) irq1::wobblepos#10 irq1::@15/(byte) irq1::wobblepos#10 irq1::@4/(byte) irq1::wobblepos#1 irq1::@5/(byte) irq1::wobblepos#10 irq1::@6/(byte) irq1::wobblepos#10 )
[82] (byte) irq1::raster#0 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)
to:irq1::@8
irq1::@8: scope:[irq1] from irq1::@7
[65] (byte) irq1::line#1 ← ++ (byte) irq1::line#10
irq1::@8: scope:[irq1] from irq1::@7 irq1::@8
[83] if((byte) irq1::raster#0==*((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)) goto irq1::@8
to:irq1::@9
irq1::@9: scope:[irq1] from irq1::@8
[84] (byte) irq1::line#1 ← ++ (byte) irq1::line#10
to:irq1::@1
irq1::@6: scope:[irq1] from irq1::@11
[85] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte) $50
to:irq1::@7
irq1::@5: scope:[irq1] from irq1::@10
[66] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte) $50
to:irq1::@6
irq1::@4: scope:[irq1] from irq1::@9
[67] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte) $50
[68] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (volatile byte) xpos
to:irq1::@6
irq1::@3: scope:[irq1] from irq1::@2
[69] (byte~) irq1::$12 ← (byte) $28 + *((const byte*) SINUS + (byte) irq1::wobblepos#10)
[70] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte~) irq1::$12
[71] (byte) irq1::wobblepos#1 ← ++ (byte) irq1::wobblepos#10
[72] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) $66
to:irq1::@6
[86] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte) $50
[87] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2) ← (volatile byte) xpos
to:irq1::@7
irq1::@4: scope:[irq1] from irq1::@2
[88] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← *((const byte*) SINUS + (byte) irq1::wobblepos#10)
[89] (byte) irq1::wobblepos#1 ← ++ (byte) irq1::wobblepos#10
[90] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) $66
to:irq1::@7
(void()) main()
main: scope:[main] from __start::@1
[73] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $47
[74] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $53
[75] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) ← *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | (byte) $40
[76] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) ← *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | (byte) $40
[77] call memset
to:main::@6
main::@6: scope:[main] from main
[91] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $47
[92] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $53
[93] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) ← *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLB) | (byte) $40
[94] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) ← *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLC) | (byte) $40
asm { lda#0 }
[79] call *((const void()*) songInit)
[96] call *((const void()*) songInit)
[97] call memset
to:main::@1
main::@1: scope:[main] from main::@2 main::@6
[80] (byte) main::i1#2 ← phi( main::@2/(byte) main::i1#1 main::@6/(byte) 0 )
[81] if((byte) main::i1#2<(byte) $bc*(const byte) SIZEOF_BYTE) goto main::@2
main::@1: scope:[main] from main main::@2
[98] (byte) main::i1#2 ← phi( main/(byte) 0 main::@2/(byte) main::i1#1 )
[99] if((byte) main::i1#2<(byte) $bc*(const byte) SIZEOF_BYTE) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1 main::@3
[82] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::i#1 )
[83] *((const nomodify byte*) PALETTE_RED + (byte) main::i#2) ← *((const byte*) PAL_RED + (byte) main::i#2)
[84] *((const nomodify byte*) PALETTE_GREEN + (byte) main::i#2) ← *((const byte*) PAL_GREEN + (byte) main::i#2)
[85] *((const nomodify byte*) PALETTE_BLUE + (byte) main::i#2) ← *((const byte*) PAL_BLUE + (byte) main::i#2)
[86] (byte) main::i#1 ← ++ (byte) main::i#2
[87] if((byte) main::i#1!=(byte) 0) goto main::@3
to:main::@4
main::@4: scope:[main] from main::@3
main::@3: scope:[main] from main::@1 main::@4
[100] (byte) main::i2#2 ← phi( main::@1/(byte) 0 main::@4/(byte) main::i2#1 )
[101] if((byte) main::i2#2<(byte) $28) goto main::@4
to:main::@5
main::@5: scope:[main] from main::@3 main::@5
[102] (byte) main::i#2 ← phi( main::@3/(byte) 0 main::@5/(byte) main::i#1 )
[103] *((const nomodify byte*) PALETTE_RED + (byte) main::i#2) ← *((const byte*) PAL_RED + (byte) main::i#2)
[104] *((const nomodify byte*) PALETTE_GREEN + (byte) main::i#2) ← *((const byte*) PAL_GREEN + (byte) main::i#2)
[105] *((const nomodify byte*) PALETTE_BLUE + (byte) main::i#2) ← *((const byte*) PAL_BLUE + (byte) main::i#2)
[106] (byte) main::i#1 ← ++ (byte) main::i#2
[107] if((byte) main::i#1!=(byte) 0) goto main::@5
to:main::@6
main::@6: scope:[main] from main::@5
asm { sei }
[89] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
[90] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (byte) $16
[91] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & (byte) $7f
[92] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
[93] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_STACK)(void()) irq1()
[94] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
[95] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
[96] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) ← (byte) 1
[109] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
[110] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (byte) $16
[111] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1) & (byte) $7f
[112] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
[113] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_STACK)(void()) irq1()
[114] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
[115] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
[116] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) ← (byte) 1
asm { cli }
to:main::@5
main::@5: scope:[main] from main::@4 main::@5
[98] phi()
to:main::@5
to:main::@7
main::@7: scope:[main] from main::@6 main::@7
[118] phi()
to:main::@7
main::@4: scope:[main] from main::@3
[119] *((const nomodify byte*) SCREEN+(const nomodify byte) SCROLL_Y*(byte) $28 + (byte) main::i2#2) ← (byte) 'a'
[120] *((const nomodify byte*) SCREEN+(const nomodify byte) GREET_Y*(byte) $28 + (byte) main::i2#2) ← (byte) 'b'
[121] (byte) main::i2#1 ← ++ (byte) main::i2#2
to:main::@3
main::@2: scope:[main] from main::@1
[99] *((const nomodify byte*) SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i1#2) ← *((const byte*) MEGA_LOGO + (byte) main::i1#2)
[100] (byte) main::i1#1 ← ++ (byte) main::i1#2
[122] *((const nomodify byte*) SCREEN+(const nomodify byte) LOGO_Y*(byte) $28 + (byte) main::i1#2) ← *((const byte*) MEGA_LOGO + (byte) main::i1#2)
[123] (byte) main::i1#1 ← ++ (byte) main::i1#2
to:main::@1
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from main
[101] phi()
[124] phi()
to:memset::@1
memset::@1: scope:[memset] from memset memset::@2
[102] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
[103] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
[125] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
[126] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
to:memset::@return
memset::@return: scope:[memset] from memset::@1
[104] return
[127] return
to:@return
memset::@2: scope:[memset] from memset::@1
[105] *((byte*) memset::dst#2) ← (const byte) memset::c#0
[106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
[128] *((byte*) memset::dst#2) ← (const byte) memset::c#0
[129] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@1

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,11 @@
(const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*) 56320
(const nomodify byte) CIA_INTERRUPT_CLEAR = (byte) $7f
(const nomodify byte*) COLORRAM = (byte*) 55296
(const nomodify byte) GREETCOUNT = (byte) $10
(const nomodify byte) GREET_Y = (byte) $14
(const nomodify void()**) HARDWARE_IRQ = (void()**) 65534
(const nomodify byte) IRQ_RASTER = (byte) 1
(const nomodify byte) LOGO_Y = (byte) 3
(byte) MEGA65_VICIV::ALPHADELAY
(byte) MEGA65_VICIV::B0PIX
(byte) MEGA65_VICIV::B0_ADDR
@ -288,7 +291,7 @@
(byte) MOS6581_SID::POT_X
(byte) MOS6581_SID::POT_Y
(byte) MOS6581_SID::VOLUME_FILTER_MODE
(const nomodify byte) NUMBERL = (byte) $e0
(const nomodify byte) NUMBERL = (byte) $d8
(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL = (byte) $5a
(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLB = (byte) $31
(const byte) OFFSET_STRUCT_MEGA65_VICIV_CONTROLC = (byte) $54
@ -299,6 +302,8 @@
(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR = (byte) $20
(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY = (byte) $2f
(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = (byte) $d
(const byte) OFFSET_STRUCT_MOS6569_VICII_BG_COLOR = (byte) $21
(const byte) OFFSET_STRUCT_MOS6569_VICII_BORDER_COLOR = (byte) $20
(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL1 = (byte) $11
(const byte) OFFSET_STRUCT_MOS6569_VICII_CONTROL2 = (byte) $16
(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE = (byte) $1a
@ -315,6 +320,7 @@
(const nomodify byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
(const nomodify byte) PROCPORT_RAM_IO = (byte) 5
(const nomodify byte*) SCREEN = (byte*) 1024
(const nomodify byte) SCROLL_Y = (byte) $d
(const byte*) SINUS[(number) $100] = kickasm {{ .fill 256, 91.5 + 91.5*sin(i*2*PI/256)
}}
(const byte) SIZEOF_BYTE = (byte) 1
@ -327,11 +333,10 @@
(label) __start::@1
(label) __start::@return
(label) __start::__init1
(volatile byte) greetnm loadstore zp[1]:9 1.3529411764705883
(volatile byte) greetnm loadstore zp[1]:9 1.3939393939393938
interrupt(HARDWARE_STACK)(void()) irq1()
(byte~) irq1::$12 reg byte a 22.0
(byte~) irq1::$22 reg byte a 22.0
(byte~) irq1::$23 reg byte a 22.0
(byte~) irq1::$24 reg byte a 22.0
(byte~) irq1::$7 reg byte a 22.0
(label) irq1::@1
(label) irq1::@10
@ -352,7 +357,11 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(label) irq1::@24
(label) irq1::@25
(label) irq1::@26
(label) irq1::@27
(label) irq1::@28
(label) irq1::@29
(label) irq1::@3
(label) irq1::@30
(label) irq1::@4
(label) irq1::@5
(label) irq1::@6
@ -376,15 +385,25 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(const nomodify byte) irq1::blackbar = (byte) $13
(byte) irq1::col
(byte) irq1::col#0 reg byte a 16.5
(byte) irq1::col1
(byte) irq1::col1#0 reg byte a 16.5
(byte) irq1::col1#1 reg byte a 12.833333333333334
(byte) irq1::colsin
(byte) irq1::colsin#0 reg byte y 4.0
(byte) irq1::colsin#1 reg byte y 11.0
(byte) irq1::colsin#2 reg byte y 3.833333333333333
(byte) irq1::i
(byte) irq1::i#1 reg byte x 202.0
(byte) irq1::i#2 reg byte x 60.599999999999994
(byte) irq1::i#1 reg byte x 22.0
(byte) irq1::i#2 reg byte x 9.307692307692307
(byte) irq1::i1
(byte) irq1::i1#1 reg byte x 202.0
(byte) irq1::i1#2 reg byte x 60.599999999999994
(byte) irq1::i2
(byte) irq1::i2#1 reg byte x 22.0
(byte) irq1::i2#2 reg byte x 11.0
(byte) irq1::i2#1 reg byte x 202.0
(byte) irq1::i2#2 reg byte x 60.599999999999994
(byte) irq1::i3
(byte) irq1::i3#1 reg byte x 22.0
(byte) irq1::i3#2 reg byte x 11.0
(byte) irq1::idx
(byte) irq1::idx#0 reg byte y 11.0
(byte) irq1::idx#1 reg byte y 67.33333333333333
@ -396,14 +415,14 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(byte) irq1::l#2 reg byte x 14.666666666666666
(byte) irq1::line
(byte) irq1::line#1 reg byte z 22.0
(byte) irq1::line#10 reg byte z 3.142857142857143
(byte) irq1::line#10 reg byte z 3.259259259259259
(byte) irq1::raster
(byte) irq1::raster#0 reg byte a 56.0
(const nomodify byte) irq1::scrollypos = (byte) $66
(byte) irq1::wobblepos
(byte) irq1::wobblepos#0 reg byte x 4.0
(byte) irq1::wobblepos#1 reg byte x 11.0
(byte) irq1::wobblepos#10 reg byte x 4.391304347826087
(byte) irq1::wobblepos#10 reg byte x 4.590909090909091
(byte) irq1::wobblepos#7 reg byte x 22.0
(byte) irq1::zoomval
(byte) irq1::zoomval#0 reg byte a 11.0
@ -414,12 +433,16 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(byte) main::i
(byte) main::i#1 reg byte x 151.5
(byte) main::i#2 reg byte x 202.0
(byte) main::i1
(byte) main::i1#1 reg byte x 202.0
(byte) main::i1#2 reg byte x 168.33333333333331
(byte) main::i2
(byte) main::i2#1 reg byte x 202.0
(byte) main::i2#2 reg byte x 126.25
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
@ -436,34 +459,38 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(void*) memset::return
(void*) memset::str
(const void*) memset::str#0 str = (void*)(const nomodify byte*) SCREEN
(const byte*) rasters[(number) $100] = { fill( $100, 0) }
(volatile byte) sinpos loadstore zp[1]:6 0.2564102564102564
(const byte*) rasters[(const nomodify byte) NUMBERL] = { fill( NUMBERL, 0) }
(volatile byte) sinpos loadstore zp[1]:6 0.2181818181818182
(const void()*) songInit = (void()*)(const byte*) SONG
(const void()*) songPlay = (void()*)(const byte*) SONG+(byte) 3
(volatile byte) xpos loadstore zp[1]:8 0.3823529411764706
(volatile byte) zoomx loadstore zp[1]:7 1.3529411764705883
(volatile byte) xpos loadstore zp[1]:8 0.3939393939393939
(volatile byte) zoomx loadstore zp[1]:7 1.3939393939393938
reg byte z [ irq1::line#10 irq1::line#1 ]
reg byte x [ irq1::wobblepos#10 irq1::wobblepos#0 irq1::wobblepos#7 irq1::wobblepos#1 ]
reg byte x [ irq1::i#2 irq1::i#1 ]
reg byte y [ irq1::colsin#2 irq1::colsin#1 irq1::colsin#0 ]
reg byte x [ irq1::l#2 irq1::l#1 ]
zp[1]:2 [ irq1::barcnt#2 irq1::barcnt#1 ]
zp[1]:3 [ irq1::barsin#2 irq1::barsin#0 irq1::barsin#1 ]
reg byte x [ irq1::i2#2 irq1::i2#1 ]
reg byte x [ irq1::i#2 irq1::i#1 ]
reg byte x [ irq1::i3#2 irq1::i3#1 ]
reg byte x [ irq1::i1#2 irq1::i1#1 ]
reg byte x [ irq1::i2#2 irq1::i2#1 ]
reg byte z [ irq1::barcol#4 irq1::barcol#3 irq1::barcol#0 irq1::barcol#1 irq1::barcol#2 ]
reg byte y [ irq1::idx#4 irq1::idx#3 irq1::idx#0 irq1::idx#1 irq1::idx#2 ]
reg byte x [ main::i1#2 main::i1#1 ]
reg byte x [ main::i2#2 main::i2#1 ]
reg byte x [ main::i#2 main::i#1 ]
zp[2]:4 [ memset::dst#2 memset::dst#1 ]
zp[1]:6 [ sinpos ]
zp[1]:7 [ zoomx ]
zp[1]:8 [ xpos ]
zp[1]:9 [ greetnm ]
reg byte a [ irq1::$22 ]
reg byte a [ irq1::$23 ]
reg byte a [ irq1::$24 ]
reg byte a [ irq1::col1#0 ]
reg byte a [ irq1::col1#1 ]
reg byte a [ irq1::col#0 ]
reg byte a [ irq1::zoomval#0 ]
reg byte a [ irq1::$7 ]
reg byte a [ irq1::raster#0 ]
reg byte a [ irq1::$12 ]