mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-13 03:39:12 +00:00
Added sprite MSB
This commit is contained in:
parent
ad9873d201
commit
c1b2b8ab7d
src/main/java/dk/camelot64/kickc
@ -74,15 +74,19 @@ public class AsmProgramStaticRegisterValues {
|
||||
if (instructionType.getMnemnonic().equals("lda") && instructionType.getAddressingMode().equals(AsmAddressingMode.IMM)) {
|
||||
current.setA(instruction.getParameter());
|
||||
current.setaMem(null);
|
||||
|
||||
Integer immValue = getImmValue(instruction.getParameter());
|
||||
if (immValue != null) {
|
||||
current.setZ(immValue == 0);
|
||||
current.setN(immValue > 127);
|
||||
}
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("lda") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setaMem(instruction.getParameter());
|
||||
current.setA(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("sta") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setaMem(instruction.getParameter());
|
||||
current.setA(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("ldx") && instructionType.getAddressingMode().equals(AsmAddressingMode.IMM)) {
|
||||
current.setX(instruction.getParameter());
|
||||
@ -93,8 +97,13 @@ public class AsmProgramStaticRegisterValues {
|
||||
current.setN(immValue > 127);
|
||||
}
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("ldx") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setxMem(instruction.getParameter());
|
||||
current.setX(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("stx") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setxMem(instruction.getParameter());
|
||||
current.setX(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("ldy") && instructionType.getAddressingMode().equals(AsmAddressingMode.IMM)) {
|
||||
current.setY(instruction.getParameter());
|
||||
@ -105,8 +114,13 @@ public class AsmProgramStaticRegisterValues {
|
||||
current.setN(immValue > 127);
|
||||
}
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("ldy") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setyMem(instruction.getParameter());
|
||||
current.setY(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("sty") && (instructionType.getAddressingMode().equals(AsmAddressingMode.ZP) || instructionType.getAddressingMode().equals(AsmAddressingMode.ABS))) {
|
||||
current.setyMem(instruction.getParameter());
|
||||
current.setY(null);
|
||||
}
|
||||
if (instructionType.getMnemnonic().equals("txa")) {
|
||||
current.setA(current.getX());
|
||||
|
@ -0,0 +1,2 @@
|
||||
and {zpby1}
|
||||
sta {zpby1}
|
@ -0,0 +1,2 @@
|
||||
ora {zpby1}
|
||||
sta {zpby1}
|
@ -11,6 +11,7 @@
|
||||
.const BORDERCOL = $d020
|
||||
.const SPRITES_XPOS = $d000
|
||||
.const SPRITES_YPOS = $d001
|
||||
.const SPRITES_XMSB = $d010
|
||||
.const SPRITES_ENABLE = $d015
|
||||
.const SPRITES_EXPAND_Y = $d017
|
||||
.const SPRITES_EXPAND_X = $d01d
|
||||
@ -21,7 +22,7 @@
|
||||
.const sintab_y = $1100
|
||||
.const sprites = $2000
|
||||
.label progress_idx = 4
|
||||
.label progress_cursor = 9
|
||||
.label progress_cursor = $a
|
||||
.label sin_idx_x = 2
|
||||
.label sin_idx_y = 3
|
||||
jsr main
|
||||
@ -38,24 +39,40 @@ main: {
|
||||
jmp b2
|
||||
}
|
||||
anim: {
|
||||
.label _3 = 5
|
||||
.label xidx = 4
|
||||
.label yidx = 5
|
||||
.label j = 6
|
||||
.label x = $e
|
||||
.label x_msb = 5
|
||||
.label j2 = 6
|
||||
.label j = 7
|
||||
inc BORDERCOL
|
||||
lda sin_idx_x
|
||||
sta xidx
|
||||
lda sin_idx_y
|
||||
sta yidx
|
||||
ldy sin_idx_y
|
||||
lda #0
|
||||
sta j
|
||||
ldy #$c
|
||||
lda #$c
|
||||
sta j2
|
||||
lda #0
|
||||
sta x_msb
|
||||
b1:
|
||||
ldx xidx
|
||||
lda sintab_x,x
|
||||
sta SPRITES_XPOS,y
|
||||
ldx yidx
|
||||
lda sintab_y,x
|
||||
sta SPRITES_YPOS,y
|
||||
clc
|
||||
adc #<$1e
|
||||
sta x
|
||||
lda #>$1e
|
||||
adc #0
|
||||
sta x+1
|
||||
asl _3
|
||||
ora x_msb
|
||||
sta x_msb
|
||||
lda x
|
||||
ldx j2
|
||||
sta SPRITES_XPOS,x
|
||||
lda sintab_y,y
|
||||
ldx j2
|
||||
sta SPRITES_YPOS,x
|
||||
lda xidx
|
||||
clc
|
||||
adc #$a
|
||||
@ -66,22 +83,28 @@ anim: {
|
||||
sbc #sinlen_x
|
||||
sta xidx
|
||||
b2:
|
||||
lda yidx
|
||||
tya
|
||||
clc
|
||||
adc #8
|
||||
sta yidx
|
||||
cmp #sinlen_y
|
||||
tay
|
||||
cpy #sinlen_y
|
||||
bcc b3
|
||||
tya
|
||||
sec
|
||||
sbc #sinlen_y
|
||||
sta yidx
|
||||
tay
|
||||
b3:
|
||||
dey
|
||||
dey
|
||||
lda j2
|
||||
sec
|
||||
sbc #1
|
||||
sta j2
|
||||
dec j2
|
||||
inc j
|
||||
lda j
|
||||
cmp #7
|
||||
bne b1
|
||||
lda x_msb
|
||||
sta SPRITES_XMSB
|
||||
inc sin_idx_x
|
||||
lda sin_idx_x
|
||||
cmp #sinlen_x
|
||||
@ -123,7 +146,7 @@ init: {
|
||||
sta gen_sintab.sintab+1
|
||||
lda #sinlen_x
|
||||
sta gen_sintab.length
|
||||
lda #$10
|
||||
lda #0
|
||||
sta gen_sintab.min
|
||||
ldx #$ff
|
||||
jsr gen_sintab
|
||||
@ -138,7 +161,7 @@ init: {
|
||||
sta gen_sintab.sintab+1
|
||||
lda #sinlen_y
|
||||
sta gen_sintab.length
|
||||
lda #$30
|
||||
lda #$32
|
||||
sta gen_sintab.min
|
||||
ldx #$d0
|
||||
jsr gen_sintab
|
||||
@ -146,7 +169,7 @@ init: {
|
||||
rts
|
||||
}
|
||||
clear_screen: {
|
||||
.label sc = 7
|
||||
.label sc = 8
|
||||
lda #<SCREEN
|
||||
sta sc
|
||||
lda #>SCREEN
|
||||
@ -171,15 +194,15 @@ clear_screen: {
|
||||
}
|
||||
gen_sintab: {
|
||||
.const f_2pi = $e2e5
|
||||
.label _0 = $d
|
||||
.label _3 = $d
|
||||
.label _13 = $d
|
||||
.label _17 = $d
|
||||
.label _23 = $d
|
||||
.label _0 = $e
|
||||
.label _3 = $e
|
||||
.label _13 = $e
|
||||
.label _17 = $e
|
||||
.label _23 = $e
|
||||
.label i = 2
|
||||
.label min = 2
|
||||
.label length = 3
|
||||
.label sintab = 7
|
||||
.label sintab = 8
|
||||
txa
|
||||
sta _0
|
||||
lda #0
|
||||
@ -307,8 +330,8 @@ progress_inc: {
|
||||
progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
|
||||
}
|
||||
getFAC: {
|
||||
.label w = $d
|
||||
.label return = $d
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
@ -321,7 +344,7 @@ getFAC: {
|
||||
rts
|
||||
}
|
||||
addMEMtoFAC: {
|
||||
.label mem = $b
|
||||
.label mem = $c
|
||||
jsr prepareMEM
|
||||
lda $fe
|
||||
ldy $ff
|
||||
@ -329,7 +352,7 @@ addMEMtoFAC: {
|
||||
rts
|
||||
}
|
||||
prepareMEM: {
|
||||
.label mem = $b
|
||||
.label mem = $c
|
||||
lda mem
|
||||
sta memLo
|
||||
lda mem+1
|
||||
@ -337,7 +360,7 @@ prepareMEM: {
|
||||
rts
|
||||
}
|
||||
mulFACbyMEM: {
|
||||
.label mem = $b
|
||||
.label mem = $c
|
||||
jsr prepareMEM
|
||||
lda $fe
|
||||
ldy $ff
|
||||
@ -349,7 +372,7 @@ sinFAC: {
|
||||
rts
|
||||
}
|
||||
divMEMbyFAC: {
|
||||
.label mem = $b
|
||||
.label mem = $c
|
||||
jsr prepareMEM
|
||||
lda $fe
|
||||
ldy $ff
|
||||
@ -357,8 +380,8 @@ divMEMbyFAC: {
|
||||
rts
|
||||
}
|
||||
setFAC: {
|
||||
.label _0 = $b
|
||||
.label w = $d
|
||||
.label _0 = $c
|
||||
.label w = $e
|
||||
lda w
|
||||
sta _0
|
||||
lda w+1
|
||||
@ -370,7 +393,7 @@ setFAC: {
|
||||
rts
|
||||
}
|
||||
setMEMtoFAC: {
|
||||
.label mem = $b
|
||||
.label mem = $c
|
||||
jsr prepareMEM
|
||||
ldx $fe
|
||||
ldy $ff
|
||||
@ -386,11 +409,11 @@ setARGtoFAC: {
|
||||
rts
|
||||
}
|
||||
progress_init: {
|
||||
.label line = 9
|
||||
.label line = $a
|
||||
rts
|
||||
}
|
||||
gen_sprites: {
|
||||
.label spr = 7
|
||||
.label spr = 8
|
||||
.label i = 2
|
||||
lda #<sprites
|
||||
sta spr
|
||||
@ -422,12 +445,12 @@ gen_sprites: {
|
||||
cml: .text "camelot"
|
||||
}
|
||||
gen_chargen_sprite: {
|
||||
.label _0 = $d
|
||||
.label _1 = $d
|
||||
.label sprite = 9
|
||||
.label chargen = $b
|
||||
.label _0 = $e
|
||||
.label _1 = $e
|
||||
.label sprite = $a
|
||||
.label chargen = $c
|
||||
.label bits = 4
|
||||
.label s_gen = $f
|
||||
.label s_gen = 7
|
||||
.label x = 5
|
||||
.label y = 3
|
||||
.label c = 6
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -21,6 +21,8 @@
|
||||
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word) 53277
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word) 53271
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
@ -29,10 +31,13 @@
|
||||
(label) addMEMtoFAC::@1
|
||||
(label) addMEMtoFAC::@return
|
||||
(byte*) addMEMtoFAC::mem
|
||||
(byte*) addMEMtoFAC::mem#2 mem zp ZP_PTR_BYTE:11 2.0
|
||||
(byte*) addMEMtoFAC::mem#2 mem zp ZP_PTR_BYTE:12 2.0
|
||||
(void()) anim()
|
||||
(byte~) anim::$0 reg byte a 202.0
|
||||
(byte~) anim::$1 reg byte a 202.0
|
||||
(byte~) anim::$3 $3 zp ZP_BYTE:5 101.0
|
||||
(byte~) anim::$4 reg byte a 202.0
|
||||
(byte~) anim::$6 reg byte a 202.0
|
||||
(byte~) anim::$7 reg byte a 202.0
|
||||
(label) anim::@1
|
||||
(label) anim::@14
|
||||
(label) anim::@15
|
||||
@ -45,38 +50,43 @@
|
||||
(label) anim::@8
|
||||
(label) anim::@return
|
||||
(byte) anim::j
|
||||
(byte) anim::j#1 j zp ZP_BYTE:6 151.5
|
||||
(byte) anim::j#2 j zp ZP_BYTE:6 13.466666666666667
|
||||
(byte) anim::j#1 j zp ZP_BYTE:7 151.5
|
||||
(byte) anim::j#2 j zp ZP_BYTE:7 10.1
|
||||
(byte) anim::j2
|
||||
(byte) anim::j2#1 reg byte y 202.0
|
||||
(byte) anim::j2#2 reg byte y 67.33333333333333
|
||||
(byte) anim::j2#3 reg byte y 31.076923076923077
|
||||
(byte) anim::j2#1 reg byte a 202.0
|
||||
(byte) anim::j2#2 j2 zp ZP_BYTE:6 67.33333333333333
|
||||
(byte) anim::j2#3 j2 zp ZP_BYTE:6 22.444444444444443
|
||||
(word) anim::x
|
||||
(word) anim::x#0 x zp ZP_WORD:14 75.75
|
||||
(byte) anim::x_msb
|
||||
(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.0
|
||||
(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 67.33333333333333
|
||||
(byte) anim::xidx
|
||||
(byte) anim::xidx#0 xidx zp ZP_BYTE:4 2.0
|
||||
(byte) anim::xidx#1 xidx zp ZP_BYTE:4 202.0
|
||||
(byte) anim::xidx#2 xidx zp ZP_BYTE:4 202.0
|
||||
(byte) anim::xidx#3 xidx zp ZP_BYTE:4 61.0
|
||||
(byte) anim::xidx#3 xidx zp ZP_BYTE:4 30.5
|
||||
(byte) anim::xidx#5 xidx zp ZP_BYTE:4 33.666666666666664
|
||||
(byte) anim::yidx
|
||||
(byte) anim::yidx#0 yidx zp ZP_BYTE:5 4.0
|
||||
(byte) anim::yidx#1 yidx zp ZP_BYTE:5 202.0
|
||||
(byte) anim::yidx#2 yidx zp ZP_BYTE:5 202.0
|
||||
(byte) anim::yidx#3 yidx zp ZP_BYTE:5 33.888888888888886
|
||||
(byte) anim::yidx#6 yidx zp ZP_BYTE:5 60.599999999999994
|
||||
(byte) anim::yidx#0 reg byte y 4.0
|
||||
(byte) anim::yidx#1 reg byte y 202.0
|
||||
(byte) anim::yidx#2 reg byte y 202.0
|
||||
(byte) anim::yidx#3 reg byte y 21.78571428571429
|
||||
(byte) anim::yidx#6 reg byte y 60.599999999999994
|
||||
(void()) clear_screen()
|
||||
(label) clear_screen::@1
|
||||
(label) clear_screen::@return
|
||||
(byte*) clear_screen::sc
|
||||
(byte*) clear_screen::sc#1 sc zp ZP_PTR_BYTE:7 16.5
|
||||
(byte*) clear_screen::sc#2 sc zp ZP_PTR_BYTE:7 16.5
|
||||
(byte*) clear_screen::sc#1 sc zp ZP_PTR_BYTE:8 16.5
|
||||
(byte*) clear_screen::sc#2 sc zp ZP_PTR_BYTE:8 16.5
|
||||
(void()) divMEMbyFAC((byte*) divMEMbyFAC::mem)
|
||||
(label) divMEMbyFAC::@1
|
||||
(label) divMEMbyFAC::@return
|
||||
(byte*) divMEMbyFAC::mem
|
||||
(byte*) divMEMbyFAC::mem#2 mem zp ZP_PTR_BYTE:11 2.0
|
||||
(byte*) divMEMbyFAC::mem#2 mem zp ZP_PTR_BYTE:12 2.0
|
||||
(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
|
||||
(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:13 4.0
|
||||
(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:13 4.0
|
||||
(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:14 4.0
|
||||
(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:14 4.0
|
||||
(byte~) gen_chargen_sprite::$4 reg byte a 2002.0
|
||||
(byte~) gen_chargen_sprite::$7 reg byte a 20002.0
|
||||
(label) gen_chargen_sprite::@1
|
||||
@ -102,25 +112,25 @@
|
||||
(byte) gen_chargen_sprite::ch
|
||||
(byte) gen_chargen_sprite::ch#0 reg byte x 6.5
|
||||
(byte*) gen_chargen_sprite::chargen
|
||||
(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_PTR_BYTE:11 3.678571428571429
|
||||
(byte*) gen_chargen_sprite::chargen#0 chargen zp ZP_PTR_BYTE:12 3.678571428571429
|
||||
(byte) gen_chargen_sprite::s_gen
|
||||
(byte) gen_chargen_sprite::s_gen#1 s_gen zp ZP_BYTE:15 10001.0
|
||||
(byte) gen_chargen_sprite::s_gen#3 s_gen zp ZP_BYTE:15 21003.0
|
||||
(byte) gen_chargen_sprite::s_gen#5 s_gen zp ZP_BYTE:15 400.4
|
||||
(byte) gen_chargen_sprite::s_gen#6 s_gen zp ZP_BYTE:15 3500.5
|
||||
(byte) gen_chargen_sprite::s_gen#1 s_gen zp ZP_BYTE:7 10001.0
|
||||
(byte) gen_chargen_sprite::s_gen#3 s_gen zp ZP_BYTE:7 21003.0
|
||||
(byte) gen_chargen_sprite::s_gen#5 s_gen zp ZP_BYTE:7 400.4
|
||||
(byte) gen_chargen_sprite::s_gen#6 s_gen zp ZP_BYTE:7 3500.5
|
||||
(byte) gen_chargen_sprite::s_gen_cnt
|
||||
(byte) gen_chargen_sprite::s_gen_cnt#1 reg byte y 15001.5
|
||||
(byte) gen_chargen_sprite::s_gen_cnt#3 reg byte y 7001.0
|
||||
(byte) gen_chargen_sprite::s_gen_cnt#4 reg byte y 400.4
|
||||
(byte) gen_chargen_sprite::s_gen_cnt#5 reg byte y 3500.5
|
||||
(byte*) gen_chargen_sprite::sprite
|
||||
(byte*) gen_chargen_sprite::sprite#0 sprite zp ZP_PTR_BYTE:9 2.1666666666666665
|
||||
(byte*) gen_chargen_sprite::sprite#1 sprite zp ZP_PTR_BYTE:9 20002.0
|
||||
(byte*) gen_chargen_sprite::sprite#10 sprite zp ZP_PTR_BYTE:9 420.59999999999997
|
||||
(byte*) gen_chargen_sprite::sprite#11 sprite zp ZP_PTR_BYTE:9 102.0
|
||||
(byte*) gen_chargen_sprite::sprite#2 sprite zp ZP_PTR_BYTE:9 67.33333333333333
|
||||
(byte*) gen_chargen_sprite::sprite#3 sprite zp ZP_PTR_BYTE:9 7625.875
|
||||
(byte*) gen_chargen_sprite::sprite#4 sprite zp ZP_PTR_BYTE:9 5184.166666666666
|
||||
(byte*) gen_chargen_sprite::sprite#0 sprite zp ZP_PTR_BYTE:10 2.1666666666666665
|
||||
(byte*) gen_chargen_sprite::sprite#1 sprite zp ZP_PTR_BYTE:10 20002.0
|
||||
(byte*) gen_chargen_sprite::sprite#10 sprite zp ZP_PTR_BYTE:10 420.59999999999997
|
||||
(byte*) gen_chargen_sprite::sprite#11 sprite zp ZP_PTR_BYTE:10 102.0
|
||||
(byte*) gen_chargen_sprite::sprite#2 sprite zp ZP_PTR_BYTE:10 67.33333333333333
|
||||
(byte*) gen_chargen_sprite::sprite#3 sprite zp ZP_PTR_BYTE:10 7625.875
|
||||
(byte*) gen_chargen_sprite::sprite#4 sprite zp ZP_PTR_BYTE:10 5184.166666666666
|
||||
(byte) gen_chargen_sprite::x
|
||||
(byte) gen_chargen_sprite::x#1 x zp ZP_BYTE:5 1501.5
|
||||
(byte) gen_chargen_sprite::x#6 x zp ZP_BYTE:5 111.22222222222223
|
||||
@ -128,12 +138,12 @@
|
||||
(byte) gen_chargen_sprite::y#1 y zp ZP_BYTE:3 151.5
|
||||
(byte) gen_chargen_sprite::y#2 y zp ZP_BYTE:3 13.173913043478262
|
||||
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
|
||||
(word~) gen_sintab::$0 $0 zp ZP_WORD:13 4.0
|
||||
(word~) gen_sintab::$13 $13 zp ZP_WORD:13 22.0
|
||||
(word~) gen_sintab::$17 $17 zp ZP_WORD:13 22.0
|
||||
(word~) gen_sintab::$23 $23 zp ZP_WORD:13 22.0
|
||||
(word~) gen_sintab::$0 $0 zp ZP_WORD:14 4.0
|
||||
(word~) gen_sintab::$13 $13 zp ZP_WORD:14 22.0
|
||||
(word~) gen_sintab::$17 $17 zp ZP_WORD:14 22.0
|
||||
(word~) gen_sintab::$23 $23 zp ZP_WORD:14 22.0
|
||||
(byte~) gen_sintab::$24 reg byte a 22.0
|
||||
(word~) gen_sintab::$3 $3 zp ZP_WORD:13 4.0
|
||||
(word~) gen_sintab::$3 $3 zp ZP_WORD:14 4.0
|
||||
(label) gen_sintab::@1
|
||||
(label) gen_sintab::@10
|
||||
(label) gen_sintab::@11
|
||||
@ -174,7 +184,7 @@
|
||||
(byte) gen_sintab::min
|
||||
(byte) gen_sintab::min#2 min zp ZP_BYTE:2 0.2857142857142857
|
||||
(byte*) gen_sintab::sintab
|
||||
(byte*) gen_sintab::sintab#12 sintab zp ZP_PTR_BYTE:7 0.2037037037037037
|
||||
(byte*) gen_sintab::sintab#12 sintab zp ZP_PTR_BYTE:8 0.2037037037037037
|
||||
(void()) gen_sprites()
|
||||
(byte~) gen_sprites::$0 reg byte a 22.0
|
||||
(label) gen_sprites::@1
|
||||
@ -186,15 +196,15 @@
|
||||
(byte) gen_sprites::i#1 i zp ZP_BYTE:2 16.5
|
||||
(byte) gen_sprites::i#2 i zp ZP_BYTE:2 5.5
|
||||
(byte*) gen_sprites::spr
|
||||
(byte*) gen_sprites::spr#1 spr zp ZP_PTR_BYTE:7 7.333333333333333
|
||||
(byte*) gen_sprites::spr#2 spr zp ZP_PTR_BYTE:7 6.6000000000000005
|
||||
(byte*) gen_sprites::spr#1 spr zp ZP_PTR_BYTE:8 7.333333333333333
|
||||
(byte*) gen_sprites::spr#2 spr zp ZP_PTR_BYTE:8 6.6000000000000005
|
||||
(word()) getFAC()
|
||||
(label) getFAC::@return
|
||||
(word) getFAC::return
|
||||
(word) getFAC::return#0 return zp ZP_WORD:13 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:13 22.0
|
||||
(word) getFAC::return#0 return zp ZP_WORD:14 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:14 22.0
|
||||
(word) getFAC::w
|
||||
(word) getFAC::w#1 w zp ZP_WORD:13 4.0
|
||||
(word) getFAC::w#1 w zp ZP_WORD:14 4.0
|
||||
(void()) init()
|
||||
(label) init::@1
|
||||
(label) init::@2
|
||||
@ -221,7 +231,7 @@
|
||||
(label) mulFACbyMEM::@1
|
||||
(label) mulFACbyMEM::@return
|
||||
(byte*) mulFACbyMEM::mem
|
||||
(byte*) mulFACbyMEM::mem#2 mem zp ZP_PTR_BYTE:11 2.0
|
||||
(byte*) mulFACbyMEM::mem#2 mem zp ZP_PTR_BYTE:12 2.0
|
||||
(void()) place_sprites()
|
||||
(label) place_sprites::@1
|
||||
(label) place_sprites::@return
|
||||
@ -248,16 +258,16 @@
|
||||
(byte~) prepareMEM::$1 reg byte a 4.0
|
||||
(label) prepareMEM::@return
|
||||
(byte*) prepareMEM::mem
|
||||
(byte*) prepareMEM::mem#0 mem zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*) prepareMEM::mem#1 mem zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*) prepareMEM::mem#2 mem zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*) prepareMEM::mem#3 mem zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*) prepareMEM::mem#4 mem zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_PTR_BYTE:11 4.666666666666666
|
||||
(byte*) prepareMEM::mem#0 mem zp ZP_PTR_BYTE:12 4.0
|
||||
(byte*) prepareMEM::mem#1 mem zp ZP_PTR_BYTE:12 4.0
|
||||
(byte*) prepareMEM::mem#2 mem zp ZP_PTR_BYTE:12 4.0
|
||||
(byte*) prepareMEM::mem#3 mem zp ZP_PTR_BYTE:12 4.0
|
||||
(byte*) prepareMEM::mem#4 mem zp ZP_PTR_BYTE:12 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_PTR_BYTE:12 4.666666666666666
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#10 progress_cursor zp ZP_PTR_BYTE:9 4.0
|
||||
(byte*) progress_cursor#11 progress_cursor zp ZP_PTR_BYTE:9 2.4285714285714284
|
||||
(byte*) progress_cursor#34 progress_cursor zp ZP_PTR_BYTE:9 0.6551724137931035
|
||||
(byte*) progress_cursor#10 progress_cursor zp ZP_PTR_BYTE:10 4.0
|
||||
(byte*) progress_cursor#11 progress_cursor zp ZP_PTR_BYTE:10 2.4285714285714284
|
||||
(byte*) progress_cursor#34 progress_cursor zp ZP_PTR_BYTE:10 0.6551724137931035
|
||||
(byte) progress_idx
|
||||
(byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0
|
||||
(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.142857142857143
|
||||
@ -273,33 +283,33 @@
|
||||
(void()) progress_init((byte*) progress_init::line)
|
||||
(label) progress_init::@return
|
||||
(byte*) progress_init::line
|
||||
(byte*) progress_init::line#2 line zp ZP_PTR_BYTE:9 0.0625
|
||||
(byte*) progress_init::line#2 line zp ZP_PTR_BYTE:10 0.0625
|
||||
(void()) setARGtoFAC()
|
||||
(label) setARGtoFAC::@return
|
||||
(void()) setFAC((word) setFAC::w)
|
||||
(byte*~) setFAC::$0 $0 zp ZP_PTR_BYTE:11 4.0
|
||||
(byte*~) setFAC::$0 $0 zp ZP_PTR_BYTE:12 4.0
|
||||
(label) setFAC::@1
|
||||
(label) setFAC::@return
|
||||
(word) setFAC::w
|
||||
(word) setFAC::w#0 w zp ZP_WORD:13 4.0
|
||||
(word) setFAC::w#1 w zp ZP_WORD:13 4.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:13 22.0
|
||||
(word) setFAC::w#4 w zp ZP_WORD:13 22.0
|
||||
(word) setFAC::w#5 w zp ZP_WORD:13 28.0
|
||||
(word) setFAC::w#0 w zp ZP_WORD:14 4.0
|
||||
(word) setFAC::w#1 w zp ZP_WORD:14 4.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:14 22.0
|
||||
(word) setFAC::w#4 w zp ZP_WORD:14 22.0
|
||||
(word) setFAC::w#5 w zp ZP_WORD:14 28.0
|
||||
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
|
||||
(label) setMEMtoFAC::@1
|
||||
(label) setMEMtoFAC::@return
|
||||
(byte*) setMEMtoFAC::mem
|
||||
(byte*) setMEMtoFAC::mem#5 mem zp ZP_PTR_BYTE:11 2.0
|
||||
(byte*) setMEMtoFAC::mem#5 mem zp ZP_PTR_BYTE:12 2.0
|
||||
(void()) sinFAC()
|
||||
(label) sinFAC::@return
|
||||
(byte) sin_idx_x
|
||||
(byte) sin_idx_x#11 sin_idx_x zp ZP_BYTE:2 1.4444444444444446
|
||||
(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.6521739130434783
|
||||
(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5172413793103449
|
||||
(byte) sin_idx_x#3 sin_idx_x zp ZP_BYTE:2 2.0
|
||||
(byte) sin_idx_y
|
||||
(byte) sin_idx_y#11 sin_idx_y zp ZP_BYTE:3 2.6
|
||||
(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.5555555555555556
|
||||
(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.45454545454545453
|
||||
(byte) sin_idx_y#3 sin_idx_y zp ZP_BYTE:3 2.0
|
||||
(byte) sinlen_x
|
||||
(const byte) sinlen_x#0 sinlen_x = (byte/word/signed word) 221
|
||||
@ -317,23 +327,25 @@
|
||||
zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ]
|
||||
zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ]
|
||||
zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ]
|
||||
reg byte y [ anim::j2#3 anim::j2#2 ]
|
||||
zp ZP_BYTE:5 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ]
|
||||
zp ZP_BYTE:6 [ anim::j#2 anim::j#1 gen_chargen_sprite::c#3 ]
|
||||
zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$3 ]
|
||||
zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ]
|
||||
reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
|
||||
zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
|
||||
reg byte x [ init::i#2 init::i#1 ]
|
||||
zp ZP_PTR_BYTE:7 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ]
|
||||
zp ZP_PTR_BYTE:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ]
|
||||
reg byte x [ gen_sintab::max#2 ]
|
||||
zp ZP_PTR_BYTE:9 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
|
||||
zp ZP_PTR_BYTE:11 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setMEMtoFAC::mem#5 setFAC::$0 gen_chargen_sprite::chargen#0 ]
|
||||
zp ZP_WORD:13 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 gen_sintab::$0 gen_sintab::$3 gen_sintab::$13 gen_sintab::$17 getFAC::return#2 gen_sintab::$23 getFAC::w#1 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ]
|
||||
zp ZP_BYTE:15 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
|
||||
zp ZP_PTR_BYTE:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
|
||||
zp ZP_PTR_BYTE:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setMEMtoFAC::mem#5 setFAC::$0 gen_chargen_sprite::chargen#0 ]
|
||||
zp ZP_WORD:14 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 anim::x#0 gen_sintab::$0 gen_sintab::$3 gen_sintab::$13 gen_sintab::$17 getFAC::return#2 gen_sintab::$23 getFAC::w#1 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ]
|
||||
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
|
||||
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
|
||||
reg byte y [ place_sprites::j#2 place_sprites::j#1 ]
|
||||
reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ]
|
||||
reg byte a [ anim::$0 ]
|
||||
reg byte a [ anim::$1 ]
|
||||
reg byte y [ anim::j2#1 ]
|
||||
reg byte a [ anim::$4 ]
|
||||
reg byte a [ anim::$6 ]
|
||||
reg byte a [ anim::$7 ]
|
||||
reg byte a [ anim::j2#1 ]
|
||||
reg byte a [ gen_sintab::$24 ]
|
||||
reg byte a [ progress_inc::$2 ]
|
||||
reg byte a [ progress_inc::$3 ]
|
||||
|
@ -44,9 +44,9 @@ void init() {
|
||||
place_sprites();
|
||||
gen_sprites();
|
||||
progress_init(SCREEN);
|
||||
gen_sintab(sintab_x, sinlen_x, $10, $ff);
|
||||
gen_sintab(sintab_x, sinlen_x, $00, $ff);
|
||||
progress_init(SCREEN+40);
|
||||
gen_sintab(sintab_y, sinlen_y, $30, $d0);
|
||||
gen_sintab(sintab_y, sinlen_y, $32, $d0);
|
||||
clear_screen();
|
||||
}
|
||||
|
||||
@ -89,8 +89,11 @@ void anim() {
|
||||
byte xidx = sin_idx_x;
|
||||
byte yidx = sin_idx_y;
|
||||
byte j2 = 12;
|
||||
byte x_msb = 0;
|
||||
for( byte j : 0..6) {
|
||||
SPRITES_XPOS[j2] = sintab_x[xidx];
|
||||
word x = (word)$1e + sintab_x[xidx];
|
||||
x_msb = x_msb<<1 | >x;
|
||||
SPRITES_XPOS[j2] = (byte)x;
|
||||
SPRITES_YPOS[j2] = sintab_y[yidx];
|
||||
xidx = xidx+10;
|
||||
if(xidx>=sinlen_x) {
|
||||
@ -103,6 +106,7 @@ void anim() {
|
||||
j2--;
|
||||
j2--;
|
||||
}
|
||||
*SPRITES_XMSB = x_msb;
|
||||
|
||||
// Increment sin indices
|
||||
if(++sin_idx_x>=sinlen_x) {
|
||||
@ -152,17 +156,23 @@ void gen_chargen_sprite(byte ch, byte* sprite) {
|
||||
asm { sei }
|
||||
*PROCPORT = $32;
|
||||
for(byte y:0..7) {
|
||||
// current chargen line
|
||||
byte bits = chargen[y];
|
||||
// current sprite byte
|
||||
byte s_gen = 0;
|
||||
// #bits filled into current sprite byte
|
||||
byte s_gen_cnt = 0;
|
||||
for(byte x:0..7) {
|
||||
// Find the current chargen pixel (c)
|
||||
byte c = 0;
|
||||
if((bits & $80) != 0) {
|
||||
c = 1;
|
||||
}
|
||||
// generate 3 pixels in the sprite byte (s_gen)
|
||||
for(byte b : 0..2){
|
||||
s_gen = s_gen<<1 | c;
|
||||
if(++s_gen_cnt==8) {
|
||||
// sprite byte filled - store and move to next byte
|
||||
sprite[0] = s_gen;
|
||||
sprite[3] = s_gen;
|
||||
sprite[6] = s_gen;
|
||||
@ -171,8 +181,10 @@ void gen_chargen_sprite(byte ch, byte* sprite) {
|
||||
s_gen_cnt = 0;
|
||||
}
|
||||
}
|
||||
// move to next char pixel
|
||||
bits = bits<<1;
|
||||
}
|
||||
// move 3 lines down in the sprite (already moved 1 through ++)
|
||||
sprite = sprite + 6;
|
||||
}
|
||||
*PROCPORT = $37;
|
||||
|
Loading…
x
Reference in New Issue
Block a user