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

Added moving raster bars to raster65.

This commit is contained in:
jespergravgaard 2020-09-14 21:41:26 +02:00
parent 98b59afe8e
commit c4622fae00
5 changed files with 1949 additions and 1010 deletions

View File

@ -135,25 +135,31 @@ interrupt(hardware_stack) void irq1() {
while(raster == VICII->RASTER) ;
}
VICIII->BORDER_COLOR = 1;
VICIII->BG_COLOR = 1;
// Set all raster bars to black
for(char l=0;l!=NUMBERL;l++)
rasters[l] = 0;
VICIII->BORDER_COLOR = 1;
VICIII->BG_COLOR = 1;
// play music
(*songPlay)();
VICIII->BORDER_COLOR = 2;
VICIII->BG_COLOR = 2;
// Big block of bars (16)
char barsin = sinpos;
for(char barcnt=0; barcnt<16; barcnt++) {
char idx = SINUS[barsin];
char barcol = barcnt*16;
for(char i=0;i<16;i++)
rasters[idx++] = barcol++;
for(char i=0;i<15;i++)
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;
}
// A MEGA logo
char MEGA_LOGO[] = {
0x20,0x20,0x20,0x20,0x20,0xcf,0xcf,0xcf,0x20,0xcf,0xcf,0x20,0x20,0xcf,0xcf,0xcf,0x20,0x20,0xcf,0xcf,

View File

@ -68,13 +68,13 @@
// Pointer to the song play routine
.label songPlay = SONG+3
// Sinus Position
.label sinpos = 4
.label sinpos = 6
// Zoom Position
.label zoomx = 5
.label zoomx = 7
// soft scroll position of text scrolly (0-7)
.label xpos = 6
.label xpos = 8
// The greeting currently being shown
.label greetnm = 7
.label greetnm = 9
.segment Code
__start: {
// sinpos
@ -97,6 +97,8 @@ irq1: {
.const scrollypos = $66
// size of raster behind scrolly
.const blackbar = $13
.label barsin = 3
.label barcnt = 2
pha
txa
pha
@ -118,36 +120,38 @@ irq1: {
// wobblepos = ++sinpos
inc.z sinpos
// Generate Raster Bars and more
ldz sinpos
tax
ldx.z sinpos
ldz #0
__b1:
// for(char line=0;line!=NUMBERL;line++)
cpx #NUMBERL
cpz #NUMBERL
bne __b2
// VICIII->BORDER_COLOR = 1
lda #1
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR
// VICIII->BG_COLOR = 1
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR
ldx #0
// Set all raster bars to black
__b16:
__b15:
// for(char l=0;l!=NUMBERL;l++)
cpx #NUMBERL
bne __b17
// VICIII->BORDER_COLOR = 1
lda #1
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR
// VICIII->BG_COLOR = 1
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR
bne __b16
// (*songPlay)()
// play music
jsr songPlay
// VICIII->BORDER_COLOR = 2
lda #2
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR
// VICIII->BG_COLOR = 2
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR
// barsin = sinpos
// Big block of bars (16)
lda.z sinpos
sta.z barsin
lda #0
sta.z barcnt
__b18:
// for(char barcnt=0; barcnt<16; barcnt++)
lda.z barcnt
cmp #$10
bcc __b19
ldx #0
// Produce dark area behind text
__b25:
// for(char i=0;i<19;i++)
cpx #$13
bcc __b26
// }
pla
tay
@ -155,32 +159,95 @@ irq1: {
tax
pla
rti
__b17:
__b26:
// rasters[scrollypos+i] /2
lda rasters+scrollypos,x
lsr
// rasters[scrollypos+i] /2 & 7
and #7
// rasters[scrollypos+i] = rasters[scrollypos+i] /2 & 7
sta rasters+scrollypos,x
// for(char i=0;i<19;i++)
inx
jmp __b25
__b19:
// idx = SINUS[barsin]
ldx.z barsin
ldy SINUS,x
// barcol = barcnt*16
lda.z barcnt
asl
asl
asl
asl
taz
ldx #0
__b20:
// for(char i=0;i<16;i++)
cpx #$10
bcc __b21
ldx #0
__b22:
// for(char i=0;i<15;i++)
cpx #$f
bcc __b23
// barsin += 10
lda #$a
clc
adc.z barsin
sta.z barsin
// for(char barcnt=0; barcnt<16; barcnt++)
inc.z barcnt
jmp __b18
__b23:
// rasters[idx++] = --barcol;
dez
// rasters[idx++] = --barcol
tza
sta rasters,y
// rasters[idx++] = --barcol;
iny
// for(char i=0;i<15;i++)
inx
jmp __b22
__b21:
// rasters[idx++] = barcol++
tza
sta rasters,y
// rasters[idx++] = barcol++;
iny
inz
// for(char i=0;i<16;i++)
inx
jmp __b20
__b16:
// rasters[l] = 0
lda #0
sta rasters,x
// for(char l=0;l!=NUMBERL;l++)
inx
jmp __b16
jmp __b15
__b2:
// col = rasters[line]
lda rasters,x
tza
tay
lda rasters,y
// VICIII->BORDER_COLOR = col
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR
// VICIII->BG_COLOR = col
sta VICIII+OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR
// if(line < scrollypos)
cpx #scrollypos
bcc __b4
cpz #scrollypos
bcc __b3
// if(line == scrollypos)
cpx #scrollypos
beq __b5
cpz #scrollypos
beq __b4
// if(line == scrollypos+blackbar)
cpx #scrollypos+blackbar
beq __b6
cpz #scrollypos+blackbar
beq __b5
// if(line == scrollypos+blackbar+1)
cpx #scrollypos+blackbar+1
bne __b7
cpz #scrollypos+blackbar+1
bne __b6
// zoomval = SINUS[zoomx++]
// if raster position > scrolly pos do zoom
ldy.z zoomx
@ -195,34 +262,34 @@ irq1: {
// if(zoomx==0)
lda.z zoomx
cmp #0
bne __b7
bne __b6
// if(++greetnm==GREETCOUNT)
inc.z greetnm
lda #GREETCOUNT
cmp.z greetnm
bne __b7
bne __b6
// greetnm =0
lda #0
sta.z greetnm
__b7:
__b6:
// raster = VICII->RASTER
// Wait for the next raster line
lda VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
__b8:
__b7:
// while(raster == VICII->RASTER)
cmp VICII+OFFSET_STRUCT_MOS6569_VICII_RASTER
beq __b8
beq __b7
// for(char line=0;line!=NUMBERL;line++)
inx
inz
jmp __b1
__b6:
__b5:
// VICIV->TEXTXPOS_LO = 0x50
// if raster position > scrolly pos do nozoom
// default value
lda #$50
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO
jmp __b7
__b5:
jmp __b6
__b4:
// if raster position = scrolly pos do scrolly
// no wobbling from this point
lda #$50
@ -231,24 +298,22 @@ irq1: {
// set softscroll
lda.z xpos
sta VICII+OFFSET_STRUCT_MOS6569_VICII_CONTROL2
jmp __b7
__b4:
jmp __b6
__b3:
// 0x28 + SINUS[wobblepos++]
tza
tay
lda #$28
clc
adc SINUS,y
adc SINUS,x
// VICIV->TEXTXPOS_LO = 0x28 + SINUS[wobblepos++]
// if raster position < scrolly pos do wobble Logo!
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO
// VICIV->TEXTXPOS_LO = 0x28 + SINUS[wobblepos++];
inz
inx
// VICIV->CHRXSCL = 0x66
// No zooming
lda #$66
sta VICIV+OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL
jmp __b7
jmp __b6
}
main: {
// VICIII->KEY = 0x47
@ -351,7 +416,7 @@ memset: {
.const num = $28*$19
.label str = SCREEN
.label end = str+num
.label dst = 2
.label dst = 4
lda #<str
sta.z dst
lda #>str

View File

@ -25,143 +25,183 @@ 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::@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 )
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 )
[14] if((byte) irq1::line#10!=(const nomodify byte) NUMBERL) goto irq1::@2
to:irq1::@3
irq1::@3: scope:[irq1] from irq1::@1
[15] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) 1
[16] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) 1
to:irq1::@16
irq1::@16: scope:[irq1] from irq1::@17 irq1::@3
[17] (byte) irq1::l#2 ← phi( irq1::@17/(byte) irq1::l#1 irq1::@3/(byte) 0 )
[18] if((byte) irq1::l#2!=(const nomodify byte) NUMBERL) goto irq1::@17
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
[17] call *((const void()*) songPlay)
[18] (byte) irq1::barsin#0 ← (volatile byte) sinpos
to:irq1::@18
irq1::@18: scope:[irq1] from irq1::@16
[19] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) 1
[20] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) 1
[21] call *((const void()*) songPlay)
[22] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) 2
[23] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) 2
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
to:irq1::@return
irq1::@return: scope:[irq1] from irq1::@18
[24] return
irq1::@return: scope:[irq1] from irq1::@25
[23] return
to:@return
irq1::@17: scope:[irq1] from irq1::@16
[25] *((const byte*) rasters + (byte) irq1::l#2) ← (byte) 0
[26] (byte) irq1::l#1 ← ++ (byte) irq1::l#2
to:irq1::@16
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
to:irq1::@25
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
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::@2: scope:[irq1] from irq1::@1
[27] (byte) irq1::col#0 ← *((const byte*) rasters + (byte) irq1::line#10)
[28] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BORDER_COLOR) ← (byte) irq1::col#0
[29] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_BG_COLOR) ← (byte) irq1::col#0
[30] if((byte) irq1::line#10<(const nomodify byte) irq1::scrollypos) goto irq1::@4
[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
to:irq1::@10
irq1::@10: scope:[irq1] from irq1::@2
[31] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos) goto irq1::@5
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
to:irq1::@11
irq1::@11: scope:[irq1] from irq1::@10
[32] if((byte) irq1::line#10==(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar) goto irq1::@6
[52] if((byte) irq1::line#10!=(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar+(byte) 1) goto irq1::@6
to:irq1::@12
irq1::@12: scope:[irq1] from irq1::@11
[33] if((byte) irq1::line#10!=(const nomodify byte) irq1::scrollypos+(const nomodify byte) irq1::blackbar+(byte) 1) goto irq1::@7
[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
to:irq1::@13
irq1::@13: scope:[irq1] from irq1::@12
[34] (byte) irq1::zoomval#0 ← *((const byte*) SINUS + (volatile byte) zoomx)
[35] (volatile byte) zoomx ← ++ (volatile byte) zoomx
[36] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) irq1::zoomval#0
[37] (byte~) irq1::$7 ← (byte) irq1::zoomval#0 + (byte) 1
[38] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte~) irq1::$7
[39] if((volatile byte) zoomx!=(byte) 0) goto irq1::@7
[59] (volatile byte) greetnm ← ++ (volatile byte) greetnm
[60] if((volatile byte) greetnm!=(const nomodify byte) GREETCOUNT) goto irq1::@6
to:irq1::@14
irq1::@14: scope:[irq1] from irq1::@13
[40] (volatile byte) greetnm ← ++ (volatile byte) greetnm
[41] if((volatile byte) greetnm!=(const nomodify byte) GREETCOUNT) goto irq1::@7
to:irq1::@15
irq1::@15: scope:[irq1] from irq1::@14
[42] (volatile byte) greetnm ← (byte) 0
[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)
to:irq1::@7
irq1::@7: scope:[irq1] from irq1::@12 irq1::@13 irq1::@14 irq1::@15 irq1::@4 irq1::@5 irq1::@6
[43] (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 )
[44] (byte) irq1::raster#0 ← *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER)
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
to:irq1::@8
irq1::@8: scope:[irq1] from irq1::@7 irq1::@8
[45] 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
[46] (byte) irq1::line#1 ← ++ (byte) irq1::line#10
irq1::@8: scope:[irq1] from irq1::@7
[65] (byte) irq1::line#1 ← ++ (byte) irq1::line#10
to:irq1::@1
irq1::@6: scope:[irq1] from irq1::@11
[47] *((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
[48] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte) $50
[49] *((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
[50] (byte~) irq1::$12 ← (byte) $28 + *((const byte*) SINUS + (byte) irq1::wobblepos#10)
[51] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_TEXTXPOS_LO) ← (byte~) irq1::$12
[52] (byte) irq1::wobblepos#1 ← ++ (byte) irq1::wobblepos#10
[53] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_CHRXSCL) ← (byte) $66
to:irq1::@7
[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
(void()) main()
main: scope:[main] from __start::@1
[54] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $47
[55] *((byte*)(const nomodify struct MOS4569_VICIII*) VICIII+(const byte) OFFSET_STRUCT_MOS4569_VICIII_KEY) ← (byte) $53
[56] *((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
[57] *((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
[58] call memset
[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
asm { lda#0 }
[60] call *((const void()*) songInit)
[79] call *((const void()*) songInit)
to:main::@1
main::@1: scope:[main] from main::@2 main::@6
[61] (byte) main::i1#2 ← phi( main::@2/(byte) main::i1#1 main::@6/(byte) 0 )
[62] if((byte) main::i1#2<(byte) $bc*(const byte) SIZEOF_BYTE) goto main::@2
[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
to:main::@3
main::@3: scope:[main] from main::@1 main::@3
[63] (byte) main::i#2 ← phi( main::@1/(byte) 0 main::@3/(byte) main::i#1 )
[64] *((const nomodify byte*) PALETTE_RED + (byte) main::i#2) ← *((const byte*) PAL_RED + (byte) main::i#2)
[65] *((const nomodify byte*) PALETTE_GREEN + (byte) main::i#2) ← *((const byte*) PAL_GREEN + (byte) main::i#2)
[66] *((const nomodify byte*) PALETTE_BLUE + (byte) main::i#2) ← *((const byte*) PAL_BLUE + (byte) main::i#2)
[67] (byte) main::i#1 ← ++ (byte) main::i#2
[68] if((byte) main::i#1!=(byte) 0) goto 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
asm { sei }
[70] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
[71] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_RASTER) ← (byte) $16
[72] *((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
[73] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte) OFFSET_STRUCT_MOS6569_VICII_IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
[74] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_STACK)(void()) irq1()
[75] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
[76] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
[77] *((byte*)(const nomodify struct MEGA65_VICIV*) VICIV+(const byte) OFFSET_STRUCT_MEGA65_VICIV_SIDBDRWD_LO) ← (byte) 1
[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
asm { cli }
to:main::@5
main::@5: scope:[main] from main::@4 main::@5
[79] phi()
[98] phi()
to:main::@5
main::@2: scope:[main] from main::@1
[80] *((const nomodify byte*) SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i1#2) ← *((const byte*) MEGA_LOGO + (byte) main::i1#2)
[81] (byte) main::i1#1 ← ++ (byte) main::i1#2
[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
to:main::@1
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from main
[82] phi()
[101] phi()
to:memset::@1
memset::@1: scope:[memset] from memset memset::@2
[83] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
[84] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto 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
to:memset::@return
memset::@return: scope:[memset] from memset::@1
[85] return
[104] return
to:@return
memset::@2: scope:[memset] from memset::@1
[86] *((byte*) memset::dst#2) ← (const byte) memset::c#0
[87] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
[105] *((byte*) memset::dst#2) ← (const byte) memset::c#0
[106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@1

File diff suppressed because it is too large Load Diff

View File

@ -327,9 +327,11 @@
(label) __start::@1
(label) __start::@return
(label) __start::__init1
(volatile byte) greetnm loadstore zp[1]:7 1.3529411764705883
(volatile byte) greetnm loadstore zp[1]:9 1.3529411764705883
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::$7 reg byte a 22.0
(label) irq1::@1
(label) irq1::@10
@ -341,7 +343,15 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(label) irq1::@16
(label) irq1::@17
(label) irq1::@18
(label) irq1::@19
(label) irq1::@2
(label) irq1::@20
(label) irq1::@21
(label) irq1::@22
(label) irq1::@23
(label) irq1::@24
(label) irq1::@25
(label) irq1::@26
(label) irq1::@3
(label) irq1::@4
(label) irq1::@5
@ -350,23 +360,51 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(label) irq1::@8
(label) irq1::@9
(label) irq1::@return
(byte) irq1::barcnt
(byte) irq1::barcnt#1 barcnt zp[1]:2 22.0
(byte) irq1::barcnt#2 barcnt zp[1]:2 2.588235294117647
(byte) irq1::barcol
(byte) irq1::barcol#0 reg byte z 22.0
(byte) irq1::barcol#1 reg byte z 101.0
(byte) irq1::barcol#2 reg byte z 75.75
(byte) irq1::barcol#3 reg byte z 103.75
(byte) irq1::barcol#4 reg byte z 151.5
(byte) irq1::barsin
(byte) irq1::barsin#0 barsin zp[1]:3 4.0
(byte) irq1::barsin#1 barsin zp[1]:3 11.0
(byte) irq1::barsin#2 barsin zp[1]:3 2.1875
(const nomodify byte) irq1::blackbar = (byte) $13
(byte) irq1::col
(byte) irq1::col#0 reg byte a 16.5
(byte) irq1::i
(byte) irq1::i#1 reg byte x 202.0
(byte) irq1::i#2 reg byte x 60.599999999999994
(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::idx
(byte) irq1::idx#0 reg byte y 11.0
(byte) irq1::idx#1 reg byte y 67.33333333333333
(byte) irq1::idx#2 reg byte y 101.0
(byte) irq1::idx#3 reg byte y 138.33333333333331
(byte) irq1::idx#4 reg byte y 101.0
(byte) irq1::l
(byte) irq1::l#1 reg byte x 22.0
(byte) irq1::l#2 reg byte x 14.666666666666666
(byte) irq1::line
(byte) irq1::line#1 reg byte x 22.0
(byte) irq1::line#10 reg byte x 3.142857142857143
(byte) irq1::line#1 reg byte z 22.0
(byte) irq1::line#10 reg byte z 3.142857142857143
(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 z 4.0
(byte) irq1::wobblepos#1 reg byte z 11.0
(byte) irq1::wobblepos#10 reg byte z 4.391304347826087
(byte) irq1::wobblepos#7 reg byte z 22.0
(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#7 reg byte x 22.0
(byte) irq1::zoomval
(byte) irq1::zoomval#0 reg byte a 11.0
(void()) main()
@ -389,8 +427,8 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(byte) memset::c
(const byte) memset::c#0 c = (byte) ' '
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:2 2002.0
(byte*) memset::dst#2 dst zp[2]:2 1334.6666666666667
(byte*) memset::dst#1 dst zp[2]:4 2002.0
(byte*) memset::dst#2 dst zp[2]:4 1334.6666666666667
(byte*) memset::end
(const byte*) memset::end#0 end = (byte*)(const void*) memset::str#0+(const word) memset::num#0
(word) memset::num
@ -399,22 +437,31 @@ interrupt(HARDWARE_STACK)(void()) irq1()
(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]:4 2.0
(volatile byte) sinpos loadstore zp[1]:6 0.2564102564102564
(const void()*) songInit = (void()*)(const byte*) SONG
(const void()*) songPlay = (void()*)(const byte*) SONG+(byte) 3
(volatile byte) xpos loadstore zp[1]:6 0.3823529411764706
(volatile byte) zoomx loadstore zp[1]:5 1.3529411764705883
(volatile byte) xpos loadstore zp[1]:8 0.3823529411764706
(volatile byte) zoomx loadstore zp[1]:7 1.3529411764705883
reg byte x [ irq1::line#10 irq1::line#1 ]
reg byte z [ irq1::wobblepos#10 irq1::wobblepos#0 irq1::wobblepos#7 irq1::wobblepos#1 ]
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::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::i1#2 irq1::i1#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::i#2 main::i#1 ]
zp[2]:2 [ memset::dst#2 memset::dst#1 ]
zp[1]:4 [ sinpos ]
zp[1]:5 [ zoomx ]
zp[1]:6 [ xpos ]
zp[1]:7 [ greetnm ]
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::col#0 ]
reg byte a [ irq1::zoomval#0 ]
reg byte a [ irq1::$7 ]