diff --git a/demos/lovebyte2024/plasma/gr_gbascalc.s b/demos/lovebyte2024/plasma/gr_gbascalc.s new file mode 100644 index 00000000..316394aa --- /dev/null +++ b/demos/lovebyte2024/plasma/gr_gbascalc.s @@ -0,0 +1,80 @@ + +; 11+48 = 59 bytes + +gr_setup_line: + lda gr_lookup_low,X ; 4 + sta GBASL ; 3 + lda gr_lookup_high,X ; 4 + sta GBASH ; 3 + rts + +gr_lookup_low: + .byte $00,$80,$00,$80,$00,$80,$00,$80 + .byte $28,$A8,$28,$A8,$28,$A8,$28,$A8 + .byte $50,$D0,$50,$D0,$50,$D0,$50,$D0 + +gr_lookup_high: + .byte $08,$08,$09,$09,$0A,$0A,$0B,$0B + .byte $08,$08,$09,$09,$0A,$0A,$0B,$0B + .byte $08,$08,$09,$09,$0A,$0A,$0B,$0B + + ; 28+10 = 38 + +gr_setup_line2: + txa + pha + and #7 + lsr + tax + lda gr_lookup_high2,X + sta GBASH + + pla + pha + lsr + php + lsr + lsr + plp + rol + tax + lda gr_lookup_low2,X + sta GBASL + pla + tax + rts + +; high= gr_lookup_high[(line&3)>>1] +; low = gr_lookup_low[abc defgh -> 0 1 0 1 0 1 2 3 2 3 2 3 2 3 4 5 4 5 4 5 4 5 +; deh + +gr_lookup_low2: + .byte $00,$80,$28,$A8,$50,$D0 +gr_lookup_high2: + .byte $08,$09,$0A,$0B + + + ; 24 bytes + ; based on GBASCALC from monitor firmware +gr_setup_line3: + txa ; 2 + lsr ; 2 + and #$03 ; 2 + ora #$08 ; 2 + sta GBASH ; 3 + + txa + and #$18 + bcc gbcalc + adc #$7f +gbcalc: + sta GBASL + asl + asl + ora GBASL + sta GBASL + rts + +gr_setup_line4: + txa + jmp GBASCALC diff --git a/demos/lovebyte2024/plasma/hardware.inc b/demos/lovebyte2024/plasma/hardware.inc new file mode 100644 index 00000000..a5f45e0a --- /dev/null +++ b/demos/lovebyte2024/plasma/hardware.inc @@ -0,0 +1,103 @@ +;; HARDWARE LOCATIONS + +KEYPRESS = $C000 +KEYRESET = $C010 + +;; SOFT SWITCHES +CLR80COL = $C000 ; PAGE0/PAGE1 normal +SET80COL = $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead +EIGHTYCOLOFF = $C00C +EIGHTYCOLON = $C00D +TBCOLOR = $C022 ; IIgs text foreground / background colors +NEWVIDEO = $C029 ; IIgs graphics modes +SPEAKER = $C030 +CLOCKCTL = $C034 ; bits 0-3 are IIgs border color +SET_GR = $C050 +SET_TEXT = $C051 +FULLGR = $C052 +TEXTGR = $C053 +PAGE1 = $C054 +PAGE2 = $C055 +LORES = $C056 ; Enable LORES graphics +HIRES = $C057 ; Enable HIRES graphics +AN3 = $C05E ; Annunciator 3 + + + + + + + +PADDLE_BUTTON0 = $C061 +PADDLE_BUTTON1 = $C062 +PADDL0 = $C064 +PTRIG = $C070 + +;; BASIC ROUTINES + +NORMAL = $F273 + +;; MONITOR ROUTINES + +PLOT = $F800 ;; PLOT AT Y,A +PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0) +HLINE = $F819 ;; HLINE Y,$2C at A +VLINE = $F828 ;; VLINE A,$2D at Y +CLRSCR = $F832 ;; Clear low-res screen +CLRTOP = $F836 ;; clear only top of low-res screen +GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) +SETCOL = $F864 ;; COLOR=A +ROM_TEXT2COPY = $F962 ;; iigs +SETTXT = $FB36 +SETGR = $FB40 +TABV = $FB5B ;; VTAB to A +ROM_MACHINEID = $FBB3 ;; iigs +BELL = $FBDD ;; ring the bell +BASCALC = $FBC1 ;; +VTAB = $FC22 ;; VTAB to CV +HOME = $FC58 ;; Clear the text screen +WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us +CROUT1 = $FD8B +SETINV = $FE80 ;; INVERSE +SETNORM = $FE84 ;; NORMAL +COUT = $FDED ;; output A to screen +COUT1 = $FDF0 ;; output A to screen + + + + + + + +COLOR_BLACK = 0 +COLOR_RED = 1 +COLOR_DARKBLUE = 2 +COLOR_PURPLE = 3 +COLOR_DARKGREEN = 4 +COLOR_GREY = 5 +COLOR_MEDIUMBLUE = 6 +COLOR_LIGHTBLUE = 7 +COLOR_BROWN = 8 +COLOR_ORANGE = 9 +COLOR_GREY2 = 10 +COLOR_PINK = 11 +COLOR_LIGHTGREEN = 12 +COLOR_YELLOW = 13 +COLOR_AQUA = 14 +COLOR_WHITE = 15 + +COLOR_BOTH_BLACK = $00 +COLOR_BOTH_RED = $11 +COLOR_BOTH_DARKBLUE = $22 +COLOR_BOTH_DARKGREEN = $44 +COLOR_BOTH_GREY = $55 +COLOR_BOTH_MEDIUMBLUE = $66 +COLOR_BOTH_LIGHTBLUE = $77 +COLOR_BOTH_BROWN = $88 +COLOR_BOTH_ORANGE = $99 +COLOR_BOTH_PINK = $BB +COLOR_BOTH_LIGHTGREEN = $CC +COLOR_BOTH_YELLOW = $DD +COLOR_BOTH_AQUA = $EE +COLOR_BOTH_WHITE = $FF + diff --git a/demos/lovebyte2024/plasma/hgr_table.s b/demos/lovebyte2024/plasma/hgr_table.s new file mode 100644 index 00000000..3462059b --- /dev/null +++ b/demos/lovebyte2024/plasma/hgr_table.s @@ -0,0 +1,37 @@ +; hposn_low, hposn_high will each be filled with $C0 bytes +; based on routine by John Brooks +; posted on comp.sys.apple2 on 2018-07-11 +; https://groups.google.com/d/msg/comp.sys.apple2/v2HOfHOmeNQ/zD76fJg_BAAJ +; clobbers A,X +; preserves Y + +; vmw note: version I was using based on applesoft HPOSN was ~64 bytes +; this one is 37 bytes + +build_tables: + ldx #0 +btmi: + txa + and #$F8 + bpl btpl1 + ora #5 +btpl1: + asl + bpl btpl2 + ora #5 +btpl2: + asl + asl + sta hposn_low, X + txa + and #7 + rol + asl hposn_low, X + rol + ora #$20 + sta hposn_high, X + inx + cpx #$C0 + bne btmi + + rts diff --git a/demos/lovebyte2024/plasma/make_tables.s b/demos/lovebyte2024/plasma/make_tables.s new file mode 100644 index 00000000..1046904e --- /dev/null +++ b/demos/lovebyte2024/plasma/make_tables.s @@ -0,0 +1,224 @@ +; code to use the FAC (floating point accumulator) +; to generate plasmagoria sine tables + +; 232 bytes = initial implementation +; 218 bytes = increment high byte of destination instead of loading +; 208 bytes = modify 1->4 on the fly +; 205 bytes = make page increment common code +; 198 bytes = convert thirty-two to twenty-four on fly +; 188 bytes = convert forty-seven to thirty-eight with one byte +; 173 bytes = assume constants on same page +; 171 bytes = optimize save/load of loop index +; 169 bytes = optimize multiply by 8 +; 166 bytes = separate common sin code +; 164 bytes = move more to common sin code +; 162 bytes = move more to common sin code +; 159 bytes = fallthrough at end + +qint = $EBF2 ; convert FAC to 32-bit int? +fadd = $E7BE ; FAC = (Y:A)+FAC +movmf = $EB2B ; move fac to mem: round FAC and store at Y:X +fmult = $E97F ; FAC = (Y:A) * FAC +float = $EB93 ; signed value in A to FAC +sin = $EFF1 + +ARG = $A5 ; A5-AA +FAC = $9D ; 9D-A2 + +; code uses: 5E/5F "index" in load arg from Y:A +; uses ARG (A5-AA) for argument +; uses FAC (9D-A2) + +TEMP1 = $FE +OURX = $FF + +sin1 = $2000 +sin2 = $2100 +sin3 = $2200 +save = $2300 + +HGR = $F3E2 + +make_tables: + + ;==================================================== + ; sin1[i]=round(47.0+ + ; 32.0*sin(i*(PI*2.0/256.0))+ + ; 16.0*sin(2.0*i*(PI*2.0/256.0))); + + ; sin1[i]=round(47.0+ + ; 16*(2.0*sin(i*(PI*2.0/256.0))+ + ; sin(2.0*i*(PI*2.0/256.0))); + + + ; already set up for this one + + jsr make_sin_table + + ;=================================================== + ; sin2[i]=round(47.0+ + ; 32.0*sin(4.0*i*(PI*2.0/256.0))+ + ; 16.0*sin(3.0*i*(PI*2.0/256.0))); + + ; 47 is same, 32 is same, 16 is same + + ; convert one to four + lda #$7d ; only one byte different + sta one_input + + ; load 3 instead of 2 (assume on same page) + lda #input3 + ; load 3 input (assume on same page) + lda #forty_seven + jsr fadd ; FAC=FAC+constant + + jsr qint ; convert to integer + + lda FAC+4 ; get bottom byte + + ldx OURX + +sin_table_dest_smc: + sta sin1,X ; save to memory + + inx ; move to next + + bne sin_loop ; loop until done + + inc sin_table_dest_smc+2 ; point to next location + + rts + + + ;============================== + ; sin_common + ;============================== + ; A = low byte for input multiplier + ; X = low byte for result multiplier +sin_common: + stx TEMP1 + pha + lda OURX + jsr float ; FAC = float(OURX) (again) + pla + + ldy #>one_input ; high byte, assume always same + + jsr fmult ; FAC=FAC*(constant from RAM) + + jsr sin ; FAC=sin(FAC) + + ldy #>thirty_two ; high byte, assume always same + lda TEMP1 + + jsr fmult ; FAC=constant*FAC + + ldy #>save + ldx #MaskP + STA OFF2MASK+1 + LDA #$10 + STA count +; boucle +s4_BP4: + JSR PRECALC2 + JSR AFFICH_MASK + JSR VBLANK + JSR DUMP + DEC count + BNE s4_s4 + LDA #$10 + STA count + DEC count2 + BMI STEP5 +s5_s5: + LDX count2 + LDA TableIndexMaskB,X + STA OFF1MASK+1 + LDA TableIndexMaskH,X + STA OFF2MASK+1 +s4_s4: + INC COMPT1 + BNE s4_BP4 + DEC COMPT2 + BNE s4_BP4 + +; ------------------------------------- +STEP5: +; init + LDA #00 + STA COMPT1 + LDA #01 + STA COMPT2 + LDA #>TLORES2 + STA OFFNOR2+2 +; boucle +s5_BP5: + JSR PRECALC2 + JSR AFFICH_NOR2 + JSR VBLANK + JSR DUMP + INC COMPT1 + BNE s5_BP5 + DEC COMPT2 + BNE s5_BP5 + +; ------------------------------------- +STEP6: +; init + LDA #00 + STA Mark + LDA #04 + STA count +; boucle +s6_BP6: + JSR PRECALC2 + JSR AFFICH_OUT_HM + JSR VBLANK + JSR DUMP + LDA Mark + BEQ s6_BP6 + +; ------------------------------------- +STEP7: + BIT $C057 ; HGR + LDX #00 + LDA #$A0 +bCleanTXT: + STA $800,X + STA $900,X + STA $A00,X + STA $B00,X + DEX + BNE bCleanTXT + + BIT $C051 ; TXT + +BP7: + INC COMPT1 + BNE BP7 + +; ------------------------------------- +STEP8: + LDA #100 + STA COMPT1 + LDA #01 + STA COMPT2 + LDA #00 + STA PARAM1 + STA PARAM2 + STA PARAM3 + STA PARAM4 + + LDX #11 +s8_baffcred1: + LDA Text1,X + STA $A50+11,X + LDA Text2,X + STA $B50+11,X + DEX + BPL s8_baffcred1 + +BP8: + JSR PRECALC1 + JSR AFFICH_MASK1 + JSR VBLANK + JSR DUMP + + INC COMPT1 + BNE BP8 + DEC COMPT2 + BNE BP8 +; ------------------------------------- +STEP9: + LDA #100 + STA COMPT1 + LDA #01 + STA COMPT2 + + LDX #11 +s9_baffcred2: + LDA Text3,X + STA $A50+11,X + LDA Text4,X + STA $B50+11,X + DEX + BPL s9_baffcred2 + +BP9: + JSR PRECALC1 + JSR AFFICH_MASK1 + JSR VBLANK + JSR DUMP + + INC COMPT1 + BNE BP9 + DEC COMPT2 + BNE BP9 +; ------------------------------------- +STEP10: +; init + LDA #24 + STA COMPT1 + LDA #01 + STA COMPT2 + + LDX #11 + LDA #$A0 +s10_baffcred3: + STA $A50+11,X + STA $B50+11,X + DEX + BPL s10_baffcred3 +; boucle +BP10: + JSR PRECALC1 + JSR FADE_OUT + JSR AFFICH_MASK1 + JSR VBLANK + JSR DUMP + + INC COMPT1 + BNE BP10 + DEC COMPT2 + BNE BP10 + + LDA $C082 ; ROM utilisable entre $D000/$FFFF + JMP $FA62 + +; ============================================================================ +; ROUTINES PRE CALCUL +; ============================================================================ +PRECALC1: + LDA PARAM1 + STA pc_off1+1 + LDA PARAM2 + STA pc_off2+1 + LDA PARAM3 + STA pc_off3+1 + LDA PARAM4 + STA pc_off4+1 + + LDX #$28 +pc_b1: +pc_off1: + LDA SIN1 +pc_off2: + ADC SIN2 + STA Table1,X +pc_off3: + LDA SIN3 +pc_off4: + ADC SIN1 + STA Table2,X + INC pc_off1+1 + INC pc_off2+1 + INC pc_off3+1 + INC pc_off4+1 + dex + bpl pc_b1 + + INC PARAM1 + INC PARAM1 + DEC PARAM2 + INC PARAM3 + DEC PARAM4 + + RTS + ; ============================================================================ +PRECALC2: + LDY PARAM1 + LDX PARAM2 + LDA #00 + STA pc2_off1+1 + +pc2_b1: + LDA SIN4,X + ADC SIN4,Y +pc2_off1: + STA Table1 + TXA +OFF1PR2: + ADC #$05 + TAX + INY + INC pc2_off1+1 + LDA pc2_off1+1 + BPL pc2_b1 + + CLC + LDA PARAM1 +OFF2PR2: + ADC #$07 + STA PARAM1 + LDA PARAM2 +OFF3PR2: + ADC #$FD + STA PARAM2 + RTS +; ============================================================================ +PRECALC2_BEAT: + + LDY PARAM1 + LDX PARAM2 + LDA #00 + STA pb_off1+1 + +pb_b1: LDA SIN4,X + ADC SIN4,Y +pb_off1: + STA Table1 + TXA +pb_off2: + ADC #$F8 ; ZOOM ?! (essayer $FE, $F8) + TAX + INY + INC pb_off1+1 + LDA pb_off1+1 + BPL pb_b1 + + CLC + LDA PARAM1 + ADC #07 + STA PARAM1 + LDA PARAM2 + ADC #$FD + STA PARAM2 + LDA Beat + BEQ pb_norm + LDA #%01111111 + STA OFF1+1 + DEC Beat + JMP pb_end + +pb_norm: + LDA #%11111111 + STA OFF1+1 +pb_end: + RTS +; ============================================================================ +FADE_OUT: ; FADE OUT (60HZ) + +fo_off1: + LDX #00 + LDA #$20 + STA TCAR1,X + INX + STX fo_off1+1 + RTS +; ============================================================================ +FADE_OUT2: ; FADE OUT (50HZ) + +fo2_off1: + LDX #00 + LDA #$20 + STA TCAR1,X + INX + STA TCAR1,X + INX + STX fo2_off1+1 + RTS + +; ============================================================================ +; ROUTINES AFFICHAGES +; ============================================================================ +AFFICH_OUT_HM: ; affichage disparaissant VERTICALEMENT + ; ATTENTION de bien réinitialiser .offv1+1 et cie si réutilisation + +ao_offv1: + LDX #00 + +ao_b1b: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 + LDA #$00 + +ao_b1: + STA (Page1),Y + DEY + BPL ao_b1 + DEX + BPL ao_b1b + +ao_offv2: LDX #01 ; lignes 0-23 + CPX #12 + BEQ ao_end + +ao_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 ; col 0-39 + LDA Table2,X + STA ao_off1+1 +ao_bABS: + LDA Table1,Y +ao_off1: + ADC #00 + STA ao_off2+1 +ao_off2: + LDA TLORES2 ; attention doit être alignée + STA (Page1),Y + DEY + BPL ao_bABS + INX +ao_offv4: + CPX #23 + BNE ao_bORD + + +ao_offv3: + LDX #23 + +ao_b2b: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 + LDA #$00 +ao_b2: + STA (Page1),Y + DEY + BPL ao_b2 + INX + CPX #24 + BNE ao_b2b + + DEC count + BMI ao_next + RTS + +ao_next: INC ao_offv1+1 + DEC ao_offv3+1 + + INC ao_offv2+1 + DEC ao_offv4+1 + LDA #04 + STA count + + RTS +ao_end: INC Mark + JMP ao_offv3 + +; ============================================================================ +AFFICH_IN_MH: ; affichage apparaissant VERTICALEMENT (milieu vers haut) + ; ATTENTION de bien réinitialiser .offv1+1 et cie si réutilisation + +am_offv1: LDX #11 ; lignes 0-23 + +am_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 ; col 0-39 + LDA Table2,X + STA am_off1+1 +am_bABS: + LDA Table1,Y +am_off1: + ADC #00 + STA am_off2+1 +am_off2: + LDA TCAR2 ; attention doit être alignée + STA (Page1),Y + DEY + BPL am_bABS + INX +am_offv2: + CPX #13 + BNE am_bORD + + DEC count + BMI am_next + RTS + +am_next: + DEC am_offv1+1 + BMI am_end + INC am_offv2+1 + LDA #$3 + STA count + RTS + +am_end: + INC Mark + LDA #00 + STA am_offv1+1 + RTS + +; ============================================================================ +AFFICH_NOR: ; AFFICHAGE "NORMAL" + + + LDX #23 ; lignes 0-23 +afn_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 ; col 0-39 + LDA Table2,X + STA afn_off1+1 +afn_bABS: + LDA Table1,Y +afn_off1: + ADC #00 + STA afn_off2+1 +afn_off2: + LDA TCAR2 ; attention doit être alignée + STA (Page1),Y + DEY + BPL afn_bABS + DEX + BPL afn_bORD + + RTS +; ============================================================================ +AFFICH_NOR2: ; AFFICHAGE "NORMAL" + BIT $C050 ; gfx (lores) + LDX #23 ; lignes 0-23 +afn2_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 ; col 0-39 + LDA Table2,X + STA afn2_off1+1 +afn2_bABS: + LDA Table1,Y +afn2_off1: ADC #00 + STA afn2_off2+1 +OFFNOR2: +afn2_off2: LDA TLORES ; attention doit être alignée + STA (Page1),Y + DEY + BPL afn2_bABS + DEX + BPL afn2_bORD + + RTS +; ============================================================================ +AFFICH_BEAT: ; AFFICHAGE BEAT + + LDX #23 ; lignes 0-23 +afb_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #39 ; col 0-39 + LDA Table2,X + STA afb_off1+1 +afb_bABS: + LDA Table1,Y +afb_off1: + ADC #00 + STA afb_off2+1 +afb_off2: + LDA TCAR3 ; attention doit être alignée + CMP #$AE + BNE afb_s1 +OFF1: + AND #%11111111 +afb_s1: STA (Page1),Y + DEY + BPL afb_bABS + DEX + BPL afb_bORD + + RTS + ; ============================================================================ +AFFICH_MASK: ; AFFICHAGE avec MASK + + LDA #08 + STA IndexMask +OFF1MASK: + LDA #MaskP + STA afm_off3+2 + STA afm_off4+2 +afm_off4: + LDA MaskP + STA Mask + + LDX #00 ; lignes 0-23 + +afm_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #00 ; col 0-39 + LDA Table2,X + STA afm_off1+1 +afm_bABS: + LDA Table1,Y +afm_off1: + ADC #00 + STA afm_off2+1 + ASL Mask + BCS afm_off2 ; si 1 on affiche + LDA #$00 ; sinon, espace (vide) + JMP afm_s1 +afm_off2: + LDA TLORES2 ; attention doit être alignée +afm_s1: + STA (Page1),Y + DEC IndexMask + BEQ afm_s2 +afm_s3: + INY + CPY #40 + BNE afm_bABS + INX + CPX #24 + BNE afm_bORD + RTS + +afm_s2: LDA #08 + STA IndexMask + INC afm_off3+1 + BNE afm_off3 + INC afm_off3+2 +afm_off3: + LDA MaskP + STA Mask + JMP afm_s3 +; ============================================================================ + +AFFICH_MASK1: ; AFFICHAGE avec MASK + LDA #08 + STA IndexMask + LDA #MaskCred + STA afm1_off3+2 + LDA MaskCred + STA Mask + + LDX #00 ; lignes 0-23 +afm1_bORD: + LDA TTB,X + STA Page1 + LDA TTH,X + STA Page1+1 + + LDY #00 ; col 0-39 + LDA Table2,X + STA afm1_off1+1 +afm1_bABS: + LDA Table1,Y +afm1_off1: + ADC #00 + STA afm1_off2+1 + ASL Mask + BCC afm1_s1 ; si 0 on affiche pas +afm1_off2: + LDA TCAR1 ; attention doit être alignée + STA (Page1),Y +afm1_s1: + DEC IndexMask + BEQ afm1_s2 +afm1_s3: + INY + CPY #40 + BNE afm1_bABS + INX + CPX #24 + BNE afm1_bORD + RTS + +afm1_s2: + LDA #08 + STA IndexMask + INC afm1_off3+1 + BNE afm1_off3 + INC afm1_off3+2 +afm1_off3: + LDA MaskCred + STA Mask + JMP afm1_s3 +; ============================================================================ + +;!align 255,0 ; 64*2 + 24*3 + 12*4= 248 +.align 256 + +Table1: ; !fill 64,0 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 +Table2: ; !fill 64,0 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + +TTB: .byte $00,$80,$00,$80,$00,$80,$00,$80,$28,$A8,$28,$A8,$28,$A8,$28,$A8,$50,$D0,$50,$D0,$50,$D0,$50,$D0 +TTH: .byte $08,$08,$09,$09,$0A,$0A,$0B,$0B,$08,$08,$09,$09,$0A,$0A,$0B,$0B,$08,$08,$09,$09,$0A,$0A,$0B,$0B + +Text1: .byte "CODE & GFX " +Text2: .byte " GROUIK" + +Text3: .byte " MUSIC" +Text4: .byte "CRAWDADDY " + +.align 256 +;1align 255,0 + +SIN1: ; 256 +.byte $2E,$30,$32,$34,$35,$36,$38,$3A,$3C,$3C,$3E,$40,$41,$42,$44,$45,$47,$47,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$53,$53,$54,$54 +.byte $55,$55,$56,$57,$57,$58,$58,$57,$58,$58,$58,$58,$58,$58,$58,$58,$58,$57,$57,$57,$56,$56,$55,$54,$55,$54,$53,$52,$52,$51,$50,$4F +.byte $4E,$4E,$4D,$4C,$4B,$4B,$4A,$49,$48,$47,$46,$45,$45,$44,$42,$42,$41,$41,$3F,$3F,$3D,$3D,$3C,$3B,$3B,$39,$39,$39,$38,$38,$37,$36 +.byte $36,$35,$35,$34,$34,$33,$32,$32,$32,$31,$31,$31,$30,$31,$30,$30,$30,$30,$2F,$2F,$30,$2F,$2F,$2F,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F +.byte $2E,$2F,$2F,$2F,$2F,$2E,$2F,$2F,$2F,$2E,$2F,$2F,$2E,$2E,$2F,$2E,$2E,$2D,$2E,$2D,$2D,$2D,$2C,$2C,$2C,$2B,$2B,$2B,$2A,$2A,$29,$28 +.byte $28,$27,$27,$26,$26,$25,$25,$23,$23,$22,$21,$21,$20,$1F,$1F,$1D,$1D,$1C,$1B,$1A,$19,$19,$17,$16,$16,$15,$14,$13,$13,$12,$11,$10 +.byte $0F,$0F,$0E,$0D,$0C,$0C,$0B,$0A,$09,$09,$08,$08,$08,$07,$06,$07,$06,$06,$06,$06,$05,$06,$05,$05,$06,$05,$06,$06,$07,$07,$08,$08 +.byte $09,$09,$0A,$0B,$0B,$0C,$0C,$0D,$0F,$0F,$10,$12,$12,$14,$15,$16,$17,$19,$1A,$1B,$1D,$1E,$20,$21,$22,$24,$26,$27,$28,$2A,$2C,$2E + +SIN2: ; 256 +.byte $2E,$33,$38,$3C,$40,$43,$47,$4B,$4E,$51,$54,$56,$59,$5A,$5C,$5D,$5D,$5E,$5E,$5D,$5C,$5A,$59,$57,$55,$53,$4F,$4C,$49,$46,$42,$3E +.byte $3A,$36,$32,$2E,$2A,$26,$23,$1F,$1C,$18,$15,$12,$10,$0E,$0C,$0A,$09,$08,$07,$07,$07,$07,$09,$0A,$0B,$0D,$0F,$11,$13,$16,$19,$1C +.byte $1F,$22,$26,$29,$2C,$2F,$32,$36,$38,$3B,$3E,$3F,$42,$44,$46,$47,$48,$49,$4B,$4B,$4B,$4A,$4A,$49,$49,$48,$46,$44,$43,$41,$3F,$3C +.byte $3A,$38,$35,$33,$30,$2E,$2C,$2A,$28,$26,$24,$22,$21,$20,$1F,$1F,$1E,$1E,$1D,$1D,$1E,$1E,$1F,$20,$21,$22,$24,$25,$27,$29,$2B,$2D +.byte $2E,$30,$33,$35,$37,$38,$3A,$3C,$3D,$3E,$3F,$3F,$40,$40,$41,$40,$40,$3F,$3F,$3E,$3D,$3B,$3A,$38,$36,$34,$31,$2F,$2D,$2B,$29,$25 +.byte $23,$21,$1F,$1D,$1B,$19,$18,$16,$15,$14,$14,$13,$13,$13,$13,$14,$16,$17,$18,$1A,$1C,$1D,$20,$23,$26,$28,$2C,$2E,$32,$35,$38,$3B +.byte $3E,$41,$45,$48,$4B,$4C,$4F,$51,$53,$54,$55,$55,$57,$57,$57,$56,$55,$53,$52,$50,$4E,$4B,$49,$45,$42,$3F,$3B,$37,$34,$30,$2C,$27 +.byte $23,$1F,$1C,$18,$14,$11,$0E,$0B,$09,$07,$05,$03,$02,$01,$00,$00,$01,$01,$02,$03,$05,$07,$0A,$0D,$10,$13,$17,$1A,$1E,$22,$26,$2A + +SIN3: ; 256 +.byte $26,$2C,$31,$35,$39,$3D,$40,$42,$44,$45,$45,$46,$45,$43,$42,$40,$3C,$3A,$38,$36,$33,$31,$30,$2F,$2F,$2E,$2F,$2F,$30,$33,$33,$36 +.byte $37,$3A,$3C,$3C,$3E,$3E,$3D,$3D,$3B,$39,$36,$34,$30,$2B,$28,$23,$1D,$19,$14,$11,$0C,$09,$07,$04,$03,$03,$03,$03,$04,$07,$09,$0C +.byte $0F,$13,$16,$18,$1B,$1E,$20,$22,$22,$23,$24,$24,$23,$22,$21,$20,$1D,$1C,$1B,$1A,$19,$19,$19,$1A,$1C,$1E,$20,$23,$27,$2B,$2F,$33 +.byte $37,$3D,$40,$44,$47,$4A,$4C,$4D,$4E,$4E,$4D,$4C,$4A,$47,$45,$41,$3C,$39,$35,$32,$2E,$2B,$28,$26,$25,$23,$23,$22,$22,$24,$24,$25 +.byte $26,$29,$2A,$2A,$2B,$2C,$2B,$2B,$29,$28,$25,$23,$20,$1C,$19,$15,$10,$0D,$09,$07,$04,$02,$01,$00,$00,$00,$02,$03,$06,$0A,$0D,$11 +.byte $15,$1B,$1F,$23,$27,$2B,$2D,$30,$32,$33,$34,$35,$35,$33,$33,$32,$30,$2E,$2D,$2C,$2B,$2A,$2A,$2A,$2B,$2C,$2E,$30,$32,$36,$38,$3B +.byte $3E,$42,$45,$47,$49,$4B,$4B,$4B,$4A,$49,$47,$45,$42,$3D,$3A,$35,$30,$2B,$26,$22,$1E,$1A,$17,$14,$13,$11,$10,$10,$10,$12,$12,$14 +.byte $15,$18,$1A,$1B,$1D,$1E,$1F,$1F,$1F,$1F,$1E,$1D,$1B,$18,$16,$14,$10,$0E,$0C,$0B,$09,$08,$08,$09,$0A,$0C,$0E,$11,$14,$19,$1D,$22 + +SIN4: ; 256 +.byte $40,$41,$43,$44,$46,$47,$49,$4A,$4C,$4D,$4F,$50,$52,$53,$55,$56,$58,$59,$5B,$5C,$5D,$5F,$60,$61,$63,$64,$65,$67,$68,$69,$6A,$6B +.byte $6C,$6D,$6F,$70,$71,$72,$73,$73,$74,$75,$76,$77,$78,$78,$79,$7A,$7A,$7B,$7B,$7C,$7C,$7D,$7D,$7D,$7E,$7E,$7E,$7F,$7F,$7F,$7F,$7F +.byte $7F,$7F,$7F,$7F,$7F,$7F,$7E,$7E,$7E,$7D,$7D,$7D,$7C,$7C,$7B,$7B,$7A,$7A,$79,$78,$78,$77,$76,$75,$74,$73,$73,$72,$71,$70,$6F,$6D +.byte $6C,$6B,$6A,$69,$68,$67,$65,$64,$63,$61,$60,$5F,$5D,$5C,$5B,$59,$58,$56,$55,$53,$52,$50,$4F,$4D,$4C,$4A,$49,$47,$46,$44,$43,$41 +.byte $3F,$3E,$3C,$3B,$39,$38,$36,$35,$33,$32,$30,$2F,$2D,$2C,$2A,$29,$27,$26,$24,$23,$22,$20,$1F,$1E,$1C,$1B,$1A,$18,$17,$16,$15,$14 +.byte $13,$12,$10,$0F,$0E,$0D,$0C,$0C,$0B,$0A,$09,$08,$07,$07,$06,$05,$05,$04,$04,$03,$03,$02,$02,$02,$01,$01,$01,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$01,$01,$01,$02,$02,$02,$03,$03,$04,$04,$05,$05,$06,$07,$07,$08,$09,$0A,$0B,$0C,$0C,$0D,$0E,$0F,$10,$12 +.byte $13,$14,$15,$16,$17,$18,$1A,$1B,$1C,$1E,$1F,$20,$22,$23,$24,$26,$27,$29,$2A,$2C,$2D,$2F,$30,$32,$33,$35,$36,$38,$39,$3B,$3C,$3E + +TCAR1: ; 256 +.byte $c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$cD,$cD,$cD,$cD,$cD,$cD,$cD,$cD +.byte $a3,$a3,$a3,$a3,$a3,$a3,$a3,$a3,$aA,$aA,$aA,$aA,$aA,$aA,$aA,$aA +.byte $c7,$c7,$c7,$c7,$c7,$c7,$c7,$c7,$cF,$cF,$cF,$cF,$cF,$cF,$cF,$cF +.byte $aB,$aB,$aB,$aB,$aB,$aB,$ab,$aB,$a9,$a9,$a9,$a9,$a9,$a9,$a9,$a9 +.byte $a8,$a8,$a8,$a8,$a8,$a8,$a8,$a8,$a1,$a1,$a1,$a1,$a1,$a1,$a1,$a1 +.byte $bD,$bD,$bD,$bD,$bD,$bd,$bD,$bD,$aD,$aD,$aD,$aD,$aD,$aD,$aD,$aD +.byte $bB,$bB,$bB,$bB,$bB,$bB,$bB,$bB,$bA,$bA,$bA,$bA,$bA,$bA,$bA,$bA +.byte $aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0 + +.byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE +.byte $bA,$bA,$bA,$bA,$bA,$bA,$bA,$bA,$bB,$bB,$bB,$bB,$bB,$bB,$bB,$bB +.byte $aD,$aD,$aD,$aD,$aD,$aD,$aD,$aD,$bD,$bD,$bD,$bD,$bD,$bd,$bD,$bD +.byte $a1,$a1,$a1,$a1,$a1,$a1,$a1,$a1,$a8,$a8,$a8,$a8,$a8,$a8,$a8,$a8 +.byte $a9,$a9,$a9,$a9,$a9,$a9,$a9,$a9,$aB,$aB,$aB,$aB,$aB,$aB,$ab,$aB +.byte $cF,$cF,$cF,$cF,$cF,$cF,$cF,$cF,$c7,$c7,$c7,$c7,$c7,$c7,$c7,$c7 +.byte $aA,$aA,$aA,$aA,$aA,$aA,$aA,$aA,$a3,$a3,$a3,$a3,$a3,$a3,$a3,$a3 +.byte $cD,$cD,$cD,$cD,$cD,$cD,$cD,$cD,$c0,$c0,$c0,$c0,$c0,$c0,$c0,$c0 + + +TCAR2: ; 256 +.byte $d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4 +.byte $c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6 +.byte $af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af +.byte $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB +.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb +.byte $ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba +.byte $aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE +.byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0 +.byte $d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4,$d4 +.byte $c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6,$c6 +.byte $af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af,$af +.byte $AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB,$AB +.byte $bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb +.byte $ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba +.byte $aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE +.byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0 + +TLORES: ; 256 +.byte $00,$00,$00,$00,$88,$88,$88,$88 +.byte $55,$55,$55,$55,$99,$99,$99,$99 +.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb +.byte $33,$33,$33,$33,$22,$22,$22,$22 +.byte $66,$66,$66,$66,$77,$77,$77,$77 +.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc +.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd +.byte $99,$99,$99,$99,$11,$11,$11,$11 +.byte $00,$00,$00,$00,$88,$88,$88,$88 +.byte $55,$55,$55,$55,$99,$99,$99,$99 +.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb +.byte $33,$33,$33,$33,$22,$22,$22,$22 +.byte $66,$66,$66,$66,$77,$77,$77,$77 +.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc +.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd +.byte $99,$99,$99,$99,$11,$11,$11,$11 +.byte $00,$00,$00,$00,$88,$88,$88,$88 +.byte $55,$55,$55,$55,$99,$99,$99,$99 +.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb +.byte $33,$33,$33,$33,$22,$22,$22,$22 +.byte $66,$66,$66,$66,$77,$77,$77,$77 +.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc +.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd +.byte $99,$99,$99,$99,$11,$11,$11,$11 +.byte $00,$00,$00,$00,$88,$88,$88,$88 +.byte $55,$55,$55,$55,$99,$99,$99,$99 +.byte $ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb +.byte $33,$33,$33,$33,$22,$22,$22,$22 +.byte $66,$66,$66,$66,$77,$77,$77,$77 +.byte $44,$44,$44,$44,$cc,$cc,$cc,$cc +.byte $ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd +.byte $99,$99,$99,$99,$11,$11,$11,$11 + +TLORES2: ; 256 +.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88,$88 +.byte $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22 +.byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb,$bb +.byte $33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$33,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22 +.byte $66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$66,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77,$77 +.byte $44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc,$cc +.byte $ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$ee,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd,$dd +.byte $99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$99,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11 + +TCAR3: ; 256 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7 +.byte $CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF +.byte $EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF +.byte $BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB +.byte $ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba +.byte $aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE +.byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0 +.byte $C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0,$C0 +.byte $C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7,$C7 +.byte $CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF,$CF +.byte $EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF,$EF +.byte $BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB,$BB +.byte $ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba,$ba +.byte $aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE,$aE +.byte $a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0,$a0 + +; (5*24) = 120 +MaskP: +.byte $ff, $ff, $ff, $ff, $e0, $ff, $ff, $ff, $ff, $f8, $ff, $ff, $ff, $ff, $fc, $ff, $ff, $ff, $ff, $fe, $ff, $ff, $ff, $ff, $fe, $ff, $ff, $ff, $ff, $ff, $7, $ff, $80, $3f, $ff, $7, $ff, $80, $3f, $fe, $7, $ff, $ff, $ff, $fe, $7, $ff, $ff, $ff, $fc, $7, $ff, $ff, $ff, $fc, $7, $ff, $ff, $ff, $f8, $7, $ff, $ff, $ff, $e0, $7, $ff, $ff, $ff, $c0, $7, $ff, $ff, $ff, $0, $7, $ff, $80, $0, $0, $7, $ff, $80, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0 +MaskL: +.byte $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $ff, $ff, $fe, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $0, $0, $7, $ff, $c0, $3, $ff, $7, $ff, $c0, $3, $ff, $7, $ff, $c0, $3, $ff, $7, $ff, $c0, $3, $ff, $7, $ff, $c0, $3, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff + + +;!align 255,0 +.align 256 +MaskA: +.byte $ff,$ff,$ff,$ff,$ff,$ff,$f8,$0 +.byte $3f,$ff,$ff,$f8,$00,$3f,$ff,$ff +.byte $f0,$00,$1f,$ff,$ff,$f0,$00,$1f +.byte $ff,$ff,$e0,$00,$0f,$ff,$ff,$e0 +.byte $00,$0f,$ff,$ff,$c0,$80,$07,$ff +.byte $ff,$c1,$80,$07,$ff,$ff,$81,$c0 +.byte $03,$ff,$ff,$83,$c0,$03,$ff,$ff +.byte $03,$e0,$01,$ff,$ff,$00,$00,$01 +.byte $ff,$fe,$00,$00,$00,$ff,$fe,$07 +.byte $f8,$00,$ff,$fc,$0f,$f8,$00,$7f +.byte $fc,$0f,$fc,$00,$7f,$f8,$1f,$fc +.byte $00,$3f,$80,$00,$c0,$00,$01,$80 +.byte $00,$c0,$00,$01,$80,$00,$c0,$00 +.byte $01,$80,$00,$c0,$00,$01,$80,$00 +.byte $c0,$00,$01,$ff,$ff,$ff,$ff,$ff +MaskS: +.byte $0, $1f, $ff, $87, $fc, $7, $ff +.byte $ff, $cf, $fc, $f, $ff, $ff, $ff +.byte $fc, $3f, $ff, $ff, $ff, $fc, $7f +.byte $ff, $ff, $ff, $fc, $ff, $ff, $ff +.byte $ff, $fc, $ff, $fc, $0, $f, $fc +.byte $ff, $ff, $ff, $e0, $7c, $ff, $ff +.byte $ff, $ff, $0, $ff, $ff, $ff, $ff +.byte $f8, $ff, $ff, $ff, $ff, $fc, $7f +.byte $ff, $ff, $ff, $fe, $1f, $ff, $ff +.byte $ff, $fe, $7, $ff, $ff, $ff, $fe +.byte $0, $1f, $ff, $ff, $ff, $7f, $c3 +.byte $ff, $ff, $ff, $ff, $e0, $0, $3f +.byte $fe, $ff, $f0, $0, $3f, $fe, $ff +.byte $ff, $ff, $ff, $fc, $ff, $ff, $ff +.byte $ff, $fc, $ff, $ff, $ff, $ff, $f0 +.byte $ff, $ff, $ff, $ff, $c0, $ff, $cf +.byte $ff, $fe, $0, $7f, $c0, $ff, $e0, $0 + +;!align 255,0 + +.align 256 +MaskM: +.byte $ff, $ff, $c1, $ff, $ff, $ff, $ff, $e3, $ff, $ff, $ff, $ff, $f7, $ff, $ff +.byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff +.byte $f, $ff, $ff, $ff, $f0, $f, $ff, $ff, $ff, $f0, $f, $ff, $ff, $ff, $f0 +.byte $f, $df, $ff, $bf, $f0, $f, $df, $ff, $bf, $f0, $f, $df, $ff, $3f, $f0 +.byte $f, $cf, $ff, $3f, $f0, $f, $cf, $fe, $3f, $f0, $f, $c7, $fe, $3f, $f0 +.byte $f, $c7, $fc, $3f, $f0, $f, $c3, $fc, $3f, $f0, $ff, $ff, $fb, $ff, $ff +.byte $ff, $ff, $fb, $ff, $ff, $ff, $fd, $f3, $ff, $ff, $ff, $fd, $f3, $ff +.byte $ff, $ff, $fc, $e3, $ff, $ff, $ff, $fc, $e3, $ff, $ff, $ff, $fc, $e3 +.byte $ff, $ff +MaskG: +.byte $0, $3f, $fc, $3f, $e0, $0, $ff, $ff, $bf, $e0, $7, $ff, $ff, $ff, $e0 +.byte $1f, $ff, $ff, $ff, $e0, $3f, $ff, $ff, $ff, $e0, $7f, $ff, $ff, $ff +.byte $e0, $7f, $ff, $ff, $ff, $e0, $ff, $ff, $0, $ff, $e0, $ff, $fc, $0, $7f +.byte $e0, $ff, $f8, $0, $0, $0, $ff, $f8, $7f, $ff, $ff, $ff, $f8, $7f, $ff +.byte $ff, $ff, $f8, $7f, $ff, $ff, $ff, $f8, $7f, $ff, $ff, $ff, $f8, $7f +.byte $ff, $ff, $ff, $fc, $7f, $ff, $ff, $ff, $ff, $7, $ff, $e0, $7f, $ff +.byte $ff, $ff, $e0, $7f, $ff, $ff, $ff, $e0, $3f, $ff, $ff, $ff, $e0, $f +.byte $ff, $ff, $ff, $e0, $3, $ff, $ff, $ff, $e0, $0, $7f, $ff, $3f, $e0 +.byte $0, $1f, $fc, $1f, $e0 + +;!align 255,0 +.align 256 +MaskO: +.byte $0, $3f, $ff, $fe, $0, $3, $ff, $ff, $ff, $c0, $f, $ff, $ff, $ff, $f0 +.byte $1f, $ff, $ff, $ff, $f8, $3f, $ff, $ff, $ff, $fc, $7f, $ff, $ff, $ff +.byte $fc, $7f, $ff, $1, $ff, $fe, $ff, $fe, $0, $ff, $fe, $ff, $fe, $0, $7f +.byte $ff, $ff, $fc, $0, $7f, $ff, $ff, $fc, $0, $3f, $ff, $ff, $fc, $0, $3f +.byte $ff, $ff, $fc, $0, $3f, $ff, $ff, $fe, $0, $7f, $fe, $ff, $fe, $0, $ff, $fe, $7f, $ff, $81, $ff, $fc, $7f, $ff, $e3, $ff, $fc, $3f, $ff, $ff, $ff, $f8, $1f, $ff, $ff, $ff, $f0, $f, $ff, $ff, $ff, $e0, $3, $ff, $ff, $ff, $c0, $0, $ff, $ff, $ff, $0, $0, $1f, $ff, $f8, $0, $0, $0, $ff, $80, $0 +MaskR: +.byte $ff, $ff, $ff, $ff, $0, $ff, $ff, $ff, $ff, $80, $ff, $ff, $ff, $ff +.byte $c0, $ff, $ff, $ff, $ff, $c0, $ff, $ff, $ff, $ff, $e0, $ff, $ff, $ff +.byte $ff, $e0, $f, $fe, $1, $ff, $e0, $f, $fe, $1, $ff, $e0, $f, $fe, $1 +.byte $ff, $c0, $f, $ff, $ff, $ff, $c0, $f, $ff, $ff, $ff, $80, $f, $ff +.byte $ff, $fe, $0, $f, $ff, $ff, $ff, $0, $f, $ff, $ff, $ff, $8f, $f, $ff, $ff, $ff, $cf, $f, $fe, $3, $ff, $cf, $f, $fe, $3, $ff, $ff, $ff, $ff, $f3, $ff, $ff, $ff, $ff, $f1, $ff, $fe, $ff, $ff, $f1, $ff, $fe, $ff, $ff, $f1, $ff, $fc, $ff, $ff, $f1, $ff, $fc, $ff, $ff, $f0, $ff, $f8, $ff, $ff, $f0, $3f, $e0 + +;!align 255,0 +.align 256 +MaskI: +.byte $0, $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0 +.byte $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0, $3, $ff, $c0, $0, $0, $3 +.byte $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff +.byte $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0 +.byte $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0 +.byte $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0, $3, $ff, $c0, $0, $0 +.byte $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0, $0, $7f, $ff, $fe, $0 +MaskCred: +.byte $ff, $ff, $ef, $ff, $ff, $ff, $ff, $ef, $ff, $ff, $ff, $ff, $ef, $ff +.byte $ff, $ff, $ff, $ef, $ff, $ff, $ff, $ff, $ef, $ff, $ff, $ff, $ff, $ef +.byte $ff, $ff, $ff, $ff, $ef, $ff, $ff, $ff, $ff, $ef, $ff, $ff, $ff, $ff +.byte $ef, $ff, $ff, $ff, $80, $0, $ff, $f0, $ff, $ff, $e0, $ff, $f0, $ff +.byte $ff, $e0, $ff, $f0, $ff, $ff, $e0, $ff, $f0, $ff, $ff, $e0, $ff, $f0 +.byte $ff, $ff, $e0, $ff, $f0, $ff, $ff, $e0, $ff, $f0, $ff, $ff, $e0, $ff +.byte $f0, $ff, $ff, $e0, $ff, $f0, $ff, $c0, $0, $ff, $f0, $ff, $c0, $0 +.byte $ff, $f0, $ff, $c0, $0, $ff, $f0, $ff, $c0, $0, $ff, $f0, $ff, $c0 +.byte $0, $ff, $f0, $ff, $c0, $0, $ff, $f0 + +;!align 255,0 +.align 256 +TableIndexMaskB: +.byte MaskA,>MaskI,>MaskR,>MaskO,>MaskG,>MaskA,>MaskM,>MaskS,>MaskA,>MaskL,>MaskP + + +; ============================================================================= + +DUMP: + + ; $800->$400 + + LDA $800 + sta $400 + LDA $801 + sta $401 + LDA $802 + sta $402 + LDA $803 + sta $403 + LDA $804 + sta $404 + LDA $805 + sta $405 + LDA $806 + sta $406 + LDA $807 + sta $407 + LDA $808 + sta $408 + LDA $809 + sta $409 + LDA $80a + sta $40a + LDA $80b + sta $40b + LDA $80c + sta $40c + LDA $80d + sta $40d + LDA $80e + sta $40e + LDA $80f + sta $40f + LDA $810 + sta $410 + LDA $811 + sta $411 + LDA $812 + sta $412 + LDA $813 + sta $413 + LDA $814 + sta $414 + LDA $815 + sta $415 + LDA $816 + sta $416 + LDA $817 + sta $417 + LDA $818 + sta $418 + LDA $819 + sta $419 + LDA $81a + sta $41a + LDA $81b + sta $41b + LDA $81c + sta $41c + LDA $81d + sta $41d + LDA $81e + sta $41e + LDA $81f + sta $41f + LDA $820 + sta $420 + LDA $821 + sta $421 + LDA $822 + sta $422 + LDA $823 + sta $423 + LDA $824 + sta $424 + LDA $825 + sta $425 + LDA $826 + sta $426 + LDA $827 + sta $427 + LDA $880 + sta $480 + LDA $881 + sta $481 + LDA $882 + sta $482 + LDA $883 + sta $483 + LDA $884 + sta $484 + LDA $885 + sta $485 + LDA $886 + sta $486 + LDA $887 + sta $487 + LDA $888 + sta $488 + LDA $889 + sta $489 + LDA $88a + sta $48a + LDA $88b + sta $48b + LDA $88c + sta $48c + LDA $88d + sta $48d + LDA $88e + sta $48e + LDA $88f + sta $48f + LDA $890 + sta $490 + LDA $891 + sta $491 + LDA $892 + sta $492 + LDA $893 + sta $493 + LDA $894 + sta $494 + LDA $895 + sta $495 + LDA $896 + sta $496 + LDA $897 + sta $497 + LDA $898 + sta $498 + LDA $899 + sta $499 + LDA $89a + sta $49a + LDA $89b + sta $49b + LDA $89c + sta $49c + LDA $89d + sta $49d + LDA $89e + sta $49e + LDA $89f + sta $49f + LDA $8a0 + sta $4a0 + LDA $8a1 + sta $4a1 + LDA $8a2 + sta $4a2 + LDA $8a3 + sta $4a3 + LDA $8a4 + sta $4a4 + LDA $8a5 + sta $4a5 + LDA $8a6 + sta $4a6 + LDA $8a7 + sta $4a7 + LDA $900 + sta $500 + LDA $901 + sta $501 + LDA $902 + sta $502 + LDA $903 + sta $503 + LDA $904 + sta $504 + LDA $905 + sta $505 + LDA $906 + sta $506 + LDA $907 + sta $507 + LDA $908 + sta $508 + LDA $909 + sta $509 + LDA $90a + sta $50a + LDA $90b + sta $50b + LDA $90c + sta $50c + LDA $90d + sta $50d + LDA $90e + sta $50e + LDA $90f + sta $50f + LDA $910 + sta $510 + LDA $911 + sta $511 + LDA $912 + sta $512 + LDA $913 + sta $513 + LDA $914 + sta $514 + LDA $915 + sta $515 + LDA $916 + sta $516 + LDA $917 + sta $517 + LDA $918 + sta $518 + LDA $919 + sta $519 + LDA $91a + sta $51a + LDA $91b + sta $51b + LDA $91c + sta $51c + LDA $91d + sta $51d + LDA $91e + sta $51e + LDA $91f + sta $51f + LDA $920 + sta $520 + LDA $921 + sta $521 + LDA $922 + sta $522 + LDA $923 + sta $523 + LDA $924 + sta $524 + LDA $925 + sta $525 + LDA $926 + sta $526 + LDA $927 + sta $527 + LDA $980 + sta $580 + LDA $981 + sta $581 + LDA $982 + sta $582 + LDA $983 + sta $583 + LDA $984 + sta $584 + LDA $985 + sta $585 + LDA $986 + sta $586 + LDA $987 + sta $587 + LDA $988 + sta $588 + LDA $989 + sta $589 + LDA $98a + sta $58a + LDA $98b + sta $58b + LDA $98c + sta $58c + LDA $98d + sta $58d + LDA $98e + sta $58e + LDA $98f + sta $58f + LDA $990 + sta $590 + LDA $991 + sta $591 + LDA $992 + sta $592 + LDA $993 + sta $593 + LDA $994 + sta $594 + LDA $995 + sta $595 + LDA $996 + sta $596 + LDA $997 + sta $597 + LDA $998 + sta $598 + LDA $999 + sta $599 + LDA $99a + sta $59a + LDA $99b + sta $59b + LDA $99c + sta $59c + LDA $99d + sta $59d + LDA $99e + sta $59e + LDA $99f + sta $59f + LDA $9a0 + sta $5a0 + LDA $9a1 + sta $5a1 + LDA $9a2 + sta $5a2 + LDA $9a3 + sta $5a3 + LDA $9a4 + sta $5a4 + LDA $9a5 + sta $5a5 + LDA $9a6 + sta $5a6 + LDA $9a7 + sta $5a7 + LDA $a00 + sta $600 + LDA $a01 + sta $601 + LDA $a02 + sta $602 + LDA $a03 + sta $603 + LDA $a04 + sta $604 + LDA $a05 + sta $605 + LDA $a06 + sta $606 + LDA $a07 + sta $607 + LDA $a08 + sta $608 + LDA $a09 + sta $609 + LDA $a0a + sta $60a + LDA $a0b + sta $60b + LDA $a0c + sta $60c + LDA $a0d + sta $60d + LDA $a0e + sta $60e + LDA $a0f + sta $60f + LDA $a10 + sta $610 + LDA $a11 + sta $611 + LDA $a12 + sta $612 + LDA $a13 + sta $613 + LDA $a14 + sta $614 + LDA $a15 + sta $615 + LDA $a16 + sta $616 + LDA $a17 + sta $617 + LDA $a18 + sta $618 + LDA $a19 + sta $619 + LDA $a1a + sta $61a + LDA $a1b + sta $61b + LDA $a1c + sta $61c + LDA $a1d + sta $61d + LDA $a1e + sta $61e + LDA $a1f + sta $61f + LDA $a20 + sta $620 + LDA $a21 + sta $621 + LDA $a22 + sta $622 + LDA $a23 + sta $623 + LDA $a24 + sta $624 + LDA $a25 + sta $625 + LDA $a26 + sta $626 + LDA $a27 + sta $627 + LDA $a80 + sta $680 + LDA $a81 + sta $681 + LDA $a82 + sta $682 + LDA $a83 + sta $683 + LDA $a84 + sta $684 + LDA $a85 + sta $685 + LDA $a86 + sta $686 + LDA $a87 + sta $687 + LDA $a88 + sta $688 + LDA $a89 + sta $689 + LDA $a8a + sta $68a + LDA $a8b + sta $68b + LDA $a8c + sta $68c + LDA $a8d + sta $68d + LDA $a8e + sta $68e + LDA $a8f + sta $68f + LDA $a90 + sta $690 + LDA $a91 + sta $691 + LDA $a92 + sta $692 + LDA $a93 + sta $693 + LDA $a94 + sta $694 + LDA $a95 + sta $695 + LDA $a96 + sta $696 + LDA $a97 + sta $697 + LDA $a98 + sta $698 + LDA $a99 + sta $699 + LDA $a9a + sta $69a + LDA $a9b + sta $69b + LDA $a9c + sta $69c + LDA $a9d + sta $69d + LDA $a9e + sta $69e + LDA $a9f + sta $69f + LDA $aa0 + sta $6a0 + LDA $aa1 + sta $6a1 + LDA $aa2 + sta $6a2 + LDA $aa3 + sta $6a3 + LDA $aa4 + sta $6a4 + LDA $aa5 + sta $6a5 + LDA $aa6 + sta $6a6 + LDA $aa7 + sta $6a7 + LDA $b00 + sta $700 + LDA $b01 + sta $701 + LDA $b02 + sta $702 + LDA $b03 + sta $703 + LDA $b04 + sta $704 + LDA $b05 + sta $705 + LDA $b06 + sta $706 + LDA $b07 + sta $707 + LDA $b08 + sta $708 + LDA $b09 + sta $709 + LDA $b0a + sta $70a + LDA $b0b + sta $70b + LDA $b0c + sta $70c + LDA $b0d + sta $70d + LDA $b0e + sta $70e + LDA $b0f + sta $70f + LDA $b10 + sta $710 + LDA $b11 + sta $711 + LDA $b12 + sta $712 + LDA $b13 + sta $713 + LDA $b14 + sta $714 + LDA $b15 + sta $715 + LDA $b16 + sta $716 + LDA $b17 + sta $717 + LDA $b18 + sta $718 + LDA $b19 + sta $719 + LDA $b1a + sta $71a + LDA $b1b + sta $71b + LDA $b1c + sta $71c + LDA $b1d + sta $71d + LDA $b1e + sta $71e + LDA $b1f + sta $71f + LDA $b20 + sta $720 + LDA $b21 + sta $721 + LDA $b22 + sta $722 + LDA $b23 + sta $723 + LDA $b24 + sta $724 + LDA $b25 + sta $725 + LDA $b26 + sta $726 + LDA $b27 + sta $727 + LDA $b80 + sta $780 + LDA $b81 + sta $781 + LDA $b82 + sta $782 + LDA $b83 + sta $783 + LDA $b84 + sta $784 + LDA $b85 + sta $785 + LDA $b86 + sta $786 + LDA $b87 + sta $787 + LDA $b88 + sta $788 + LDA $b89 + sta $789 + LDA $b8a + sta $78a + LDA $b8b + sta $78b + LDA $b8c + sta $78c + LDA $b8d + sta $78d + LDA $b8e + sta $78e + LDA $b8f + sta $78f + LDA $b90 + sta $790 + LDA $b91 + sta $791 + LDA $b92 + sta $792 + LDA $b93 + sta $793 + LDA $b94 + sta $794 + LDA $b95 + sta $795 + LDA $b96 + sta $796 + LDA $b97 + sta $797 + LDA $b98 + sta $798 + LDA $b99 + sta $799 + LDA $b9a + sta $79a + LDA $b9b + sta $79b + LDA $b9c + sta $79c + LDA $b9d + sta $79d + LDA $b9e + sta $79e + LDA $b9f + sta $79f + LDA $ba0 + sta $7a0 + LDA $ba1 + sta $7a1 + LDA $ba2 + sta $7a2 + LDA $ba3 + sta $7a3 + LDA $ba4 + sta $7a4 + LDA $ba5 + sta $7a5 + LDA $ba6 + sta $7a6 + LDA $ba7 + sta $7a7 + LDA $828 + sta $428 + LDA $829 + sta $429 + LDA $82a + sta $42a + LDA $82b + sta $42b + LDA $82c + sta $42c + LDA $82d + sta $42d + LDA $82e + sta $42e + LDA $82f + sta $42f + LDA $830 + sta $430 + LDA $831 + sta $431 + LDA $832 + sta $432 + LDA $833 + sta $433 + LDA $834 + sta $434 + LDA $835 + sta $435 + LDA $836 + sta $436 + LDA $837 + sta $437 + LDA $838 + sta $438 + LDA $839 + sta $439 + LDA $83a + sta $43a + LDA $83b + sta $43b + LDA $83c + sta $43c + LDA $83d + sta $43d + LDA $83e + sta $43e + LDA $83f + sta $43f + LDA $840 + sta $440 + LDA $841 + sta $441 + LDA $842 + sta $442 + LDA $843 + sta $443 + LDA $844 + sta $444 + LDA $845 + sta $445 + LDA $846 + sta $446 + LDA $847 + sta $447 + LDA $848 + sta $448 + LDA $849 + sta $449 + LDA $84a + sta $44a + LDA $84b + sta $44b + LDA $84c + sta $44c + LDA $84d + sta $44d + LDA $84e + sta $44e + LDA $84f + sta $44f + LDA $8a8 + sta $4a8 + LDA $8a9 + sta $4a9 + LDA $8aa + sta $4aa + LDA $8ab + sta $4ab + LDA $8ac + sta $4ac + LDA $8ad + sta $4ad + LDA $8ae + sta $4ae + LDA $8af + sta $4af + LDA $8b0 + sta $4b0 + LDA $8b1 + sta $4b1 + LDA $8b2 + sta $4b2 + LDA $8b3 + sta $4b3 + LDA $8b4 + sta $4b4 + LDA $8b5 + sta $4b5 + LDA $8b6 + sta $4b6 + LDA $8b7 + sta $4b7 + LDA $8b8 + sta $4b8 + LDA $8b9 + sta $4b9 + LDA $8ba + sta $4ba + LDA $8bb + sta $4bb + LDA $8bc + sta $4bc + LDA $8bd + sta $4bd + LDA $8be + sta $4be + LDA $8bf + sta $4bf + LDA $8c0 + sta $4c0 + LDA $8c1 + sta $4c1 + LDA $8c2 + sta $4c2 + LDA $8c3 + sta $4c3 + LDA $8c4 + sta $4c4 + LDA $8c5 + sta $4c5 + LDA $8c6 + sta $4c6 + LDA $8c7 + sta $4c7 + LDA $8c8 + sta $4c8 + LDA $8c9 + sta $4c9 + LDA $8ca + sta $4ca + LDA $8cb + sta $4cb + LDA $8cc + sta $4cc + LDA $8cd + sta $4cd + LDA $8ce + sta $4ce + LDA $8cf + sta $4cf + LDA $928 + sta $528 + LDA $929 + sta $529 + LDA $92a + sta $52a + LDA $92b + sta $52b + LDA $92c + sta $52c + LDA $92d + sta $52d + LDA $92e + sta $52e + LDA $92f + sta $52f + LDA $930 + sta $530 + LDA $931 + sta $531 + LDA $932 + sta $532 + LDA $933 + sta $533 + LDA $934 + sta $534 + LDA $935 + sta $535 + LDA $936 + sta $536 + LDA $937 + sta $537 + LDA $938 + sta $538 + LDA $939 + sta $539 + LDA $93a + sta $53a + LDA $93b + sta $53b + LDA $93c + sta $53c + LDA $93d + sta $53d + LDA $93e + sta $53e + LDA $93f + sta $53f + LDA $940 + sta $540 + LDA $941 + sta $541 + LDA $942 + sta $542 + LDA $943 + sta $543 + LDA $944 + sta $544 + LDA $945 + sta $545 + LDA $946 + sta $546 + LDA $947 + sta $547 + LDA $948 + sta $548 + LDA $949 + sta $549 + LDA $94a + sta $54a + LDA $94b + sta $54b + LDA $94c + sta $54c + LDA $94d + sta $54d + LDA $94e + sta $54e + LDA $94f + sta $54f + LDA $9a8 + sta $5a8 + LDA $9a9 + sta $5a9 + LDA $9aa + sta $5aa + LDA $9ab + sta $5ab + LDA $9ac + sta $5ac + LDA $9ad + sta $5ad + LDA $9ae + sta $5ae + LDA $9af + sta $5af + LDA $9b0 + sta $5b0 + LDA $9b1 + sta $5b1 + LDA $9b2 + sta $5b2 + LDA $9b3 + sta $5b3 + LDA $9b4 + sta $5b4 + LDA $9b5 + sta $5b5 + LDA $9b6 + sta $5b6 + LDA $9b7 + sta $5b7 + LDA $9b8 + sta $5b8 + LDA $9b9 + sta $5b9 + LDA $9ba + sta $5ba + LDA $9bb + sta $5bb + LDA $9bc + sta $5bc + LDA $9bd + sta $5bd + LDA $9be + sta $5be + LDA $9bf + sta $5bf + LDA $9c0 + sta $5c0 + LDA $9c1 + sta $5c1 + LDA $9c2 + sta $5c2 + LDA $9c3 + sta $5c3 + LDA $9c4 + sta $5c4 + LDA $9c5 + sta $5c5 + LDA $9c6 + sta $5c6 + LDA $9c7 + sta $5c7 + LDA $9c8 + sta $5c8 + LDA $9c9 + sta $5c9 + LDA $9ca + sta $5ca + LDA $9cb + sta $5cb + LDA $9cc + sta $5cc + LDA $9cd + sta $5cd + LDA $9ce + sta $5ce + LDA $9cf + sta $5cf + LDA $a28 + sta $628 + LDA $a29 + sta $629 + LDA $a2a + sta $62a + LDA $a2b + sta $62b + LDA $a2c + sta $62c + LDA $a2d + sta $62d + LDA $a2e + sta $62e + LDA $a2f + sta $62f + LDA $a30 + sta $630 + LDA $a31 + sta $631 + LDA $a32 + sta $632 + LDA $a33 + sta $633 + LDA $a34 + sta $634 + LDA $a35 + sta $635 + LDA $a36 + sta $636 + LDA $a37 + sta $637 + LDA $a38 + sta $638 + LDA $a39 + sta $639 + LDA $a3a + sta $63a + LDA $a3b + sta $63b + LDA $a3c + sta $63c + LDA $a3d + sta $63d + LDA $a3e + sta $63e + LDA $a3f + sta $63f + LDA $a40 + sta $640 + LDA $a41 + sta $641 + LDA $a42 + sta $642 + LDA $a43 + sta $643 + LDA $a44 + sta $644 + LDA $a45 + sta $645 + LDA $a46 + sta $646 + LDA $a47 + sta $647 + LDA $a48 + sta $648 + LDA $a49 + sta $649 + LDA $a4a + sta $64a + LDA $a4b + sta $64b + LDA $a4c + sta $64c + LDA $a4d + sta $64d + LDA $a4e + sta $64e + LDA $a4f + sta $64f + LDA $aa8 + sta $6a8 + LDA $aa9 + sta $6a9 + LDA $aaa + sta $6aa + LDA $aab + sta $6ab + LDA $aac + sta $6ac + LDA $aad + sta $6ad + LDA $aae + sta $6ae + LDA $aaf + sta $6af + LDA $ab0 + sta $6b0 + LDA $ab1 + sta $6b1 + LDA $ab2 + sta $6b2 + LDA $ab3 + sta $6b3 + LDA $ab4 + sta $6b4 + LDA $ab5 + sta $6b5 + LDA $ab6 + sta $6b6 + LDA $ab7 + sta $6b7 + LDA $ab8 + sta $6b8 + LDA $ab9 + sta $6b9 + LDA $aba + sta $6ba + LDA $abb + sta $6bb + LDA $abc + sta $6bc + LDA $abd + sta $6bd + LDA $abe + sta $6be + LDA $abf + sta $6bf + LDA $ac0 + sta $6c0 + LDA $ac1 + sta $6c1 + LDA $ac2 + sta $6c2 + LDA $ac3 + sta $6c3 + LDA $ac4 + sta $6c4 + LDA $ac5 + sta $6c5 + LDA $ac6 + sta $6c6 + LDA $ac7 + sta $6c7 + LDA $ac8 + sta $6c8 + LDA $ac9 + sta $6c9 + LDA $aca + sta $6ca + LDA $acb + sta $6cb + LDA $acc + sta $6cc + LDA $acd + sta $6cd + LDA $ace + sta $6ce + LDA $acf + sta $6cf + LDA $b28 + sta $728 + LDA $b29 + sta $729 + LDA $b2a + sta $72a + LDA $b2b + sta $72b + LDA $b2c + sta $72c + LDA $b2d + sta $72d + LDA $b2e + sta $72e + LDA $b2f + sta $72f + LDA $b30 + sta $730 + LDA $b31 + sta $731 + LDA $b32 + sta $732 + LDA $b33 + sta $733 + LDA $b34 + sta $734 + LDA $b35 + sta $735 + LDA $b36 + sta $736 + LDA $b37 + sta $737 + LDA $b38 + sta $738 + LDA $b39 + sta $739 + LDA $b3a + sta $73a + LDA $b3b + sta $73b + LDA $b3c + sta $73c + LDA $b3d + sta $73d + LDA $b3e + sta $73e + LDA $b3f + sta $73f + LDA $b40 + sta $740 + LDA $b41 + sta $741 + LDA $b42 + sta $742 + LDA $b43 + sta $743 + LDA $b44 + sta $744 + LDA $b45 + sta $745 + LDA $b46 + sta $746 + LDA $b47 + sta $747 + LDA $b48 + sta $748 + LDA $b49 + sta $749 + LDA $b4a + sta $74a + LDA $b4b + sta $74b + LDA $b4c + sta $74c + LDA $b4d + sta $74d + LDA $b4e + sta $74e + LDA $b4f + sta $74f + LDA $ba8 + sta $7a8 + LDA $ba9 + sta $7a9 + LDA $baa + sta $7aa + LDA $bab + sta $7ab + LDA $bac + sta $7ac + LDA $bad + sta $7ad + LDA $bae + sta $7ae + LDA $baf + sta $7af + LDA $bb0 + sta $7b0 + LDA $bb1 + sta $7b1 + LDA $bb2 + sta $7b2 + LDA $bb3 + sta $7b3 + LDA $bb4 + sta $7b4 + LDA $bb5 + sta $7b5 + LDA $bb6 + sta $7b6 + LDA $bb7 + sta $7b7 + LDA $bb8 + sta $7b8 + LDA $bb9 + sta $7b9 + LDA $bba + sta $7ba + LDA $bbb + sta $7bb + LDA $bbc + sta $7bc + LDA $bbd + sta $7bd + LDA $bbe + sta $7be + LDA $bbf + sta $7bf + LDA $bc0 + sta $7c0 + LDA $bc1 + sta $7c1 + LDA $bc2 + sta $7c2 + LDA $bc3 + sta $7c3 + LDA $bc4 + sta $7c4 + LDA $bc5 + sta $7c5 + LDA $bc6 + sta $7c6 + LDA $bc7 + sta $7c7 + LDA $bc8 + sta $7c8 + LDA $bc9 + sta $7c9 + LDA $bca + sta $7ca + LDA $bcb + sta $7cb + LDA $bcc + sta $7cc + LDA $bcd + sta $7cd + LDA $bce + sta $7ce + LDA $bcf + sta $7cf + LDA $850 + sta $450 + LDA $851 + sta $451 + LDA $852 + sta $452 + LDA $853 + sta $453 + LDA $854 + sta $454 + LDA $855 + sta $455 + LDA $856 + sta $456 + LDA $857 + sta $457 + LDA $858 + sta $458 + LDA $859 + sta $459 + LDA $85a + sta $45a + LDA $85b + sta $45b + LDA $85c + sta $45c + LDA $85d + sta $45d + LDA $85e + sta $45e + LDA $85f + sta $45f + LDA $860 + sta $460 + LDA $861 + sta $461 + LDA $862 + sta $462 + LDA $863 + sta $463 + LDA $864 + sta $464 + LDA $865 + sta $465 + LDA $866 + sta $466 + LDA $867 + sta $467 + LDA $868 + sta $468 + LDA $869 + sta $469 + LDA $86a + sta $46a + LDA $86b + sta $46b + LDA $86c + sta $46c + LDA $86d + sta $46d + LDA $86e + sta $46e + LDA $86f + sta $46f + LDA $870 + sta $470 + LDA $871 + sta $471 + LDA $872 + sta $472 + LDA $873 + sta $473 + LDA $874 + sta $474 + LDA $875 + sta $475 + LDA $876 + sta $476 + LDA $877 + sta $477 + LDA $8d0 + sta $4d0 + LDA $8d1 + sta $4d1 + LDA $8d2 + sta $4d2 + LDA $8d3 + sta $4d3 + LDA $8d4 + sta $4d4 + LDA $8d5 + sta $4d5 + LDA $8d6 + sta $4d6 + LDA $8d7 + sta $4d7 + LDA $8d8 + sta $4d8 + LDA $8d9 + sta $4d9 + LDA $8da + sta $4da + LDA $8db + sta $4db + LDA $8dc + sta $4dc + LDA $8dd + sta $4dd + LDA $8de + sta $4de + LDA $8df + sta $4df + LDA $8e0 + sta $4e0 + LDA $8e1 + sta $4e1 + LDA $8e2 + sta $4e2 + LDA $8e3 + sta $4e3 + LDA $8e4 + sta $4e4 + LDA $8e5 + sta $4e5 + LDA $8e6 + sta $4e6 + LDA $8e7 + sta $4e7 + LDA $8e8 + sta $4e8 + LDA $8e9 + sta $4e9 + LDA $8ea + sta $4ea + LDA $8eb + sta $4eb + LDA $8ec + sta $4ec + LDA $8ed + sta $4ed + LDA $8ee + sta $4ee + LDA $8ef + sta $4ef + LDA $8f0 + sta $4f0 + LDA $8f1 + sta $4f1 + LDA $8f2 + sta $4f2 + LDA $8f3 + sta $4f3 + LDA $8f4 + sta $4f4 + LDA $8f5 + sta $4f5 + LDA $8f6 + sta $4f6 + LDA $8f7 + sta $4f7 + LDA $950 + sta $550 + LDA $951 + sta $551 + LDA $952 + sta $552 + LDA $953 + sta $553 + LDA $954 + sta $554 + LDA $955 + sta $555 + LDA $956 + sta $556 + LDA $957 + sta $557 + LDA $958 + sta $558 + LDA $959 + sta $559 + LDA $95a + sta $55a + LDA $95b + sta $55b + LDA $95c + sta $55c + LDA $95d + sta $55d + LDA $95e + sta $55e + LDA $95f + sta $55f + LDA $960 + sta $560 + LDA $961 + sta $561 + LDA $962 + sta $562 + LDA $963 + sta $563 + LDA $964 + sta $564 + LDA $965 + sta $565 + LDA $966 + sta $566 + LDA $967 + sta $567 + LDA $968 + sta $568 + LDA $969 + sta $569 + LDA $96a + sta $56a + LDA $96b + sta $56b + LDA $96c + sta $56c + LDA $96d + sta $56d + LDA $96e + sta $56e + LDA $96f + sta $56f + LDA $970 + sta $570 + LDA $971 + sta $571 + LDA $972 + sta $572 + LDA $973 + sta $573 + LDA $974 + sta $574 + LDA $975 + sta $575 + LDA $976 + sta $576 + LDA $977 + sta $577 + LDA $9d0 + sta $5d0 + LDA $9d1 + sta $5d1 + LDA $9d2 + sta $5d2 + LDA $9d3 + sta $5d3 + LDA $9d4 + sta $5d4 + LDA $9d5 + sta $5d5 + LDA $9d6 + sta $5d6 + LDA $9d7 + sta $5d7 + LDA $9d8 + sta $5d8 + LDA $9d9 + sta $5d9 + LDA $9da + sta $5da + LDA $9db + sta $5db + LDA $9dc + sta $5dc + LDA $9dd + sta $5dd + LDA $9de + sta $5de + LDA $9df + sta $5df + LDA $9e0 + sta $5e0 + LDA $9e1 + sta $5e1 + LDA $9e2 + sta $5e2 + LDA $9e3 + sta $5e3 + LDA $9e4 + sta $5e4 + LDA $9e5 + sta $5e5 + LDA $9e6 + sta $5e6 + LDA $9e7 + sta $5e7 + LDA $9e8 + sta $5e8 + LDA $9e9 + sta $5e9 + LDA $9ea + sta $5ea + LDA $9eb + sta $5eb + LDA $9ec + sta $5ec + LDA $9ed + sta $5ed + LDA $9ee + sta $5ee + LDA $9ef + sta $5ef + LDA $9f0 + sta $5f0 + LDA $9f1 + sta $5f1 + LDA $9f2 + sta $5f2 + LDA $9f3 + sta $5f3 + LDA $9f4 + sta $5f4 + LDA $9f5 + sta $5f5 + LDA $9f6 + sta $5f6 + LDA $9f7 + sta $5f7 + LDA $a50 + sta $650 + LDA $a51 + sta $651 + LDA $a52 + sta $652 + LDA $a53 + sta $653 + LDA $a54 + sta $654 + LDA $a55 + sta $655 + LDA $a56 + sta $656 + LDA $a57 + sta $657 + LDA $a58 + sta $658 + LDA $a59 + sta $659 + LDA $a5a + sta $65a + LDA $a5b + sta $65b + LDA $a5c + sta $65c + LDA $a5d + sta $65d + LDA $a5e + sta $65e + LDA $a5f + sta $65f + LDA $a60 + sta $660 + LDA $a61 + sta $661 + LDA $a62 + sta $662 + LDA $a63 + sta $663 + LDA $a64 + sta $664 + LDA $a65 + sta $665 + LDA $a66 + sta $666 + LDA $a67 + sta $667 + LDA $a68 + sta $668 + LDA $a69 + sta $669 + LDA $a6a + sta $66a + LDA $a6b + sta $66b + LDA $a6c + sta $66c + LDA $a6d + sta $66d + LDA $a6e + sta $66e + LDA $a6f + sta $66f + LDA $a70 + sta $670 + LDA $a71 + sta $671 + LDA $a72 + sta $672 + LDA $a73 + sta $673 + LDA $a74 + sta $674 + LDA $a75 + sta $675 + LDA $a76 + sta $676 + LDA $a77 + sta $677 + LDA $ad0 + sta $6d0 + LDA $ad1 + sta $6d1 + LDA $ad2 + sta $6d2 + LDA $ad3 + sta $6d3 + LDA $ad4 + sta $6d4 + LDA $ad5 + sta $6d5 + LDA $ad6 + sta $6d6 + LDA $ad7 + sta $6d7 + LDA $ad8 + sta $6d8 + LDA $ad9 + sta $6d9 + LDA $ada + sta $6da + LDA $adb + sta $6db + LDA $adc + sta $6dc + LDA $add + sta $6dd + LDA $ade + sta $6de + LDA $adf + sta $6df + LDA $ae0 + sta $6e0 + LDA $ae1 + sta $6e1 + LDA $ae2 + sta $6e2 + LDA $ae3 + sta $6e3 + LDA $ae4 + sta $6e4 + LDA $ae5 + sta $6e5 + LDA $ae6 + sta $6e6 + LDA $ae7 + sta $6e7 + LDA $ae8 + sta $6e8 + LDA $ae9 + sta $6e9 + LDA $aea + sta $6ea + LDA $aeb + sta $6eb + LDA $aec + sta $6ec + LDA $aed + sta $6ed + LDA $aee + sta $6ee + LDA $aef + sta $6ef + LDA $af0 + sta $6f0 + LDA $af1 + sta $6f1 + LDA $af2 + sta $6f2 + LDA $af3 + sta $6f3 + LDA $af4 + sta $6f4 + LDA $af5 + sta $6f5 + LDA $af6 + sta $6f6 + LDA $af7 + sta $6f7 + LDA $b50 + sta $750 + LDA $b51 + sta $751 + LDA $b52 + sta $752 + LDA $b53 + sta $753 + LDA $b54 + sta $754 + LDA $b55 + sta $755 + LDA $b56 + sta $756 + LDA $b57 + sta $757 + LDA $b58 + sta $758 + LDA $b59 + sta $759 + LDA $b5a + sta $75a + LDA $b5b + sta $75b + LDA $b5c + sta $75c + LDA $b5d + sta $75d + LDA $b5e + sta $75e + LDA $b5f + sta $75f + LDA $b60 + sta $760 + LDA $b61 + sta $761 + LDA $b62 + sta $762 + LDA $b63 + sta $763 + LDA $b64 + sta $764 + LDA $b65 + sta $765 + LDA $b66 + sta $766 + LDA $b67 + sta $767 + LDA $b68 + sta $768 + LDA $b69 + sta $769 + LDA $b6a + sta $76a + LDA $b6b + sta $76b + LDA $b6c + sta $76c + LDA $b6d + sta $76d + LDA $b6e + sta $76e + LDA $b6f + sta $76f + LDA $b70 + sta $770 + LDA $b71 + sta $771 + LDA $b72 + sta $772 + LDA $b73 + sta $773 + LDA $b74 + sta $774 + LDA $b75 + sta $775 + LDA $b76 + sta $776 + LDA $b77 + sta $777 + LDA $bd0 + sta $7d0 + LDA $bd1 + sta $7d1 + LDA $bd2 + sta $7d2 + LDA $bd3 + sta $7d3 + LDA $bd4 + sta $7d4 + LDA $bd5 + sta $7d5 + LDA $bd6 + sta $7d6 + LDA $bd7 + sta $7d7 + LDA $bd8 + sta $7d8 + LDA $bd9 + sta $7d9 + LDA $bda + sta $7da + LDA $bdb + sta $7db + LDA $bdc + sta $7dc + LDA $bdd + sta $7dd + LDA $bde + sta $7de + LDA $bdf + sta $7df + LDA $be0 + sta $7e0 + LDA $be1 + sta $7e1 + LDA $be2 + sta $7e2 + LDA $be3 + sta $7e3 + LDA $be4 + sta $7e4 + LDA $be5 + sta $7e5 + LDA $be6 + sta $7e6 + LDA $be7 + sta $7e7 + LDA $be8 + sta $7e8 + LDA $be9 + sta $7e9 + LDA $bea + sta $7ea + LDA $beb + sta $7eb + LDA $bec + sta $7ec + LDA $bed + sta $7ed + LDA $bee + sta $7ee + LDA $bef + sta $7ef + LDA $bf0 + sta $7f0 + LDA $bf1 + sta $7f1 + LDA $bf2 + sta $7f2 + LDA $bf3 + sta $7f3 + LDA $bf4 + sta $7f4 + LDA $bf5 + sta $7f5 + LDA $bf6 + sta $7f6 + LDA $bf7 + sta $7f7 + RTS +; ============================================================================= + +VBLANK: + inc Mark + rts diff --git a/demos/lovebyte2024/plasma/plasmag_hgr.s b/demos/lovebyte2024/plasma/plasmag_hgr.s new file mode 100644 index 00000000..91de7388 --- /dev/null +++ b/demos/lovebyte2024/plasma/plasmag_hgr.s @@ -0,0 +1,462 @@ +; PLASMAGORIA, hi-res version + +; original code by French Touch + + +.include "hardware.inc" + +hposn_high=$6000 +hposn_low =$6100 +hposn_high_div8=$6200 +hposn_low_div8 =$6300 + +hires_colors_even_l0=$8000 +hires_colors_odd_l0 =$8100 +hires_colors_even_l1=$8200 +hires_colors_odd_l1 =$8300 + +;Table1 = $8000 +;Table2 = $8000+64 + +HGR = $F3E2 +HGR2 = $F3D8 + +; Page Zero + +GBASL = $26 +GBASH = $27 + +COMPT1 = $30 +COMPT2 = $31 + +PARAM1 = $60 +PARAM2 = $61 +PARAM3 = $62 +PARAM4 = $63 + +Table1 = $A0 ; 40 bytes +Table2 = $D0 ; 40 bytes + +PAGE = $FC +COUNT = $FD +GBASH_SAVE = $FE + +; ============================================================================= +; ROUTINE MAIN +; ============================================================================= + +plasma_debut: + jsr HGR2 + jsr HGR ; have table gen appear on hgr page1 + bit FULLGR + + jsr build_tables + + ldx #23 + ldy #184 +div8_loop: + lda hposn_low,Y + sta hposn_low_div8,X + lda hposn_high,Y + sta hposn_high_div8,X + dey + dey + dey + dey + dey + dey + dey + dey + dex + bpl div8_loop + + lda #0 + sta PAGE + + + +; ============================================================================ +; init lores colors (inline) +; ============================================================================ + +init_hires_colors: + +;============================================== + +init_hires_colors_even_l0: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_even_l0_loop: + lda hires_colors_even_lookup_l0,X + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + beq done_init_hires_colors_even_l0 + + inx + txa + and #$f + tax + jmp init_hires_colors_even_l0_loop + +done_init_hires_colors_even_l0: + +;============================ + +init_hires_colors_odd_l0: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_odd_l0_loop: + lda hires_colors_odd_lookup_l0,X + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + beq done_init_hires_colors_odd_l0 + + inx + txa + and #$f + tax + jmp init_hires_colors_odd_l0_loop + +done_init_hires_colors_odd_l0: + +;============================================== + +init_hires_colors_even_l1: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_even_l1_loop: + lda hires_colors_even_lookup_l1,X + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + beq done_init_hires_colors_even_l1 + + inx + txa + and #$f + tax + jmp init_hires_colors_even_l1_loop + +done_init_hires_colors_even_l1: + +;============================ + +init_hires_colors_odd_l1: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_odd_l1_loop: + lda hires_colors_odd_lookup_l1,X + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + beq done_init_hires_colors_odd_l1 + + inx + txa + and #$f + tax + jmp init_hires_colors_odd_l1_loop + +done_init_hires_colors_odd_l1: + + + +; ============================================================================ + +; 26+( 24*(11+(40*(39+(38*2))) = 110,690 +2174 = 112,864 = 9fps +; 26+( 24*(11+(40*(39+(38*4))) = 183,650 +2174 = 185,824 = 5.5fps +; 26+( 24*(11+(40*(39+(38*8))) = 329,570 +2174 = = 3fps + +do_plasma: + ; init + + + +; lda #02 +; ldx #5 +;init_loop: +; sta COMPT1,X +; dex +; bne init_loop + +BP3: + +; ============================================================================ +; Precalculate some values (inlined) +; ROUTINES PRE CALCUL +; ============================================================================ +; +; cycles = 30 + (40*53) -1 + 25 = 2174 cycles + +precalc: +; 0 + lda PARAM1 ; self modify various parts ; 3 + sta pc_off1+1 ; 4 + lda PARAM2 ; 3 + sta pc_off2+1 ; 4 + lda PARAM3 ; 3 + sta pc_off3+1 ; 4 + lda PARAM4 ; 3 + sta pc_off4+1 ; 4 + +; 28 + + ; Table1(X) = sin1(PARAM1+X)+sin2(PARAM1+X) + ; Table2(X) = sin3(PARAM3+X)+sin1(PARAM4+X) + + ldx #$28 ; 40 ; 2 +; 30 + +precalc_loop: + +pc_off1: + lda sin1 ; 4 +pc_off2: + adc sin2 ; 4 + sta Table1,X ; 4 +; 12 + +pc_off3: + lda sin3 ; 4 +pc_off4: + adc sin1 ; 4 + sta Table2,X ; 4 +; 24 + + inc pc_off1+1 ; 6 + inc pc_off2+1 ; 6 + inc pc_off3+1 ; 6 + inc pc_off4+1 ; 6 +; 48 + dex ; 2 + bpl precalc_loop ; 2/3 +; 53 + + inc PARAM1 ; 5 + inc PARAM1 ; 5 + dec PARAM2 ; 5 + inc PARAM3 ; 5 + dec PARAM4 ; 5 +; 25 + +; ============================================================================ +; Display Routines +; ROUTINES AFFICHAGES +; ============================================================================ +; 26+( 24*(11+(40*(39+(38*2))) = 110,690 +; 26+( 24*(11+(40*(39+(38*4))) = 183,650 +; 26+( 24*(11+(40*(39+(38*8))) = 329,570 + +; Display "Normal" +; AFFICHAGE "NORMAL" + +display_normal: + + ldx #23 ; lines 0-23 lignes 0-23 ; 2 + +display_line_loop: +; 0 + lda hposn_low_div8,X ; setup line pointer ; 4 + sta GBASL ; 3 +; 7 + ldy #39 ; col 0-39 ; 2 + + lda Table2,X ; setup base sine value for row ; 4 + sta display_row_sin_smc+1 ; 4 +; 17 + +display_col_loop: + + lda Table1,Y ; load in column sine value ; 4 +display_row_sin_smc: + adc #00 ; add in row value ; 2 + sta display_lookup_smc+1 ; patch in low byte of lookup ; 4 +; 8 + ; pick 0/1 for odd even + lda display_lookup_smc+2 ; 4 + eor #$01 ; 2 + sta display_lookup_smc+2 ; 4 + +; 18 + +; lda hires_colors_even_l0 ; attention: must be aligned +; sta color_smc+1 + + lda hposn_high_div8,X ; 4 + clc ; 2 + adc PAGE ; 3 + sta GBASH ; 3 +; 30 + lda #1 ; 2 + sta COUNT ; 3 +; 35 +store_loop: +color_smc: + + lda display_lookup_smc+2 ; 4 + eor #$02 ; 2 + sta display_lookup_smc+2 ; 4 +; 10 + +display_lookup_smc: + lda hires_colors_even_l0 ; attention: must be aligned ; 4 +; lda #$fe + sta (GBASL),Y ; 6 + clc ; 2 + lda #$10 ; 2 + adc GBASH ; 3 + sta GBASH ; 3 + dec COUNT ; 5 + bpl store_loop ; 2/3 +; 38 + + dey ; 2 + bpl display_col_loop ; 2/3 + + dex ; 2 + bpl display_line_loop ; 2/3 + +; ============================================================================ + + lda PAGE ; 3 + beq was_page1 ; 2/3 +was_page2: + bit PAGE2 ; 4 + lda #0 ; 2 + beq done_pageflip ; 2/3 +was_page1: + bit PAGE1 ; 4 + lda #$20 ; 2 +done_pageflip: + sta PAGE ; 3 +; 15? + inc COMPT1 ; 6 + beq display_done2 ; 2/3 + +; bne BP3 + jmp BP3 ; 3 + +display_done2: + + dec COMPT2 ; 6 + beq display_done ; 2/3 +; bne BP3 + jmp BP3 ; 3 +display_done: + + jmp do_plasma +; beq do_plasma ; bra + + +hires_colors_even_lookup_l0: +.byte $00 ; black +.byte $A2 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; dark orange +.byte $A2 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; med orange +.byte $88 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; light orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; solid orange +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; white orange +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; med white/o +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; wwo +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; white/blue +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; med white/blue +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; blue/white +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; black/blue +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; med +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; med/dark + +hires_colors_odd_lookup_l0: +.byte $00 ; black +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; dark orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; med orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; light orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; solid orange +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; white orange +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; med white/o +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; wwo +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; white/blue +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; med white/blue +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; blue/white +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; black/blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med/dark + +hires_colors_even_lookup_l1: +.byte $00 ; black +.byte $00 ; dark orange +.byte $88 ; 00 01 00 0 -> 1 00 01 00 0 = $88 ; med orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; light orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; solid orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; white orange +.byte $BB ; 11 01 11 0 -> 1 01 11 01 1 = $BB ; med white/o +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; wwo +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white/blue +.byte $F7 ; 11 10 11 1 -> 1 11 10 11 1 = $F7 ; med white/blue +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue/white +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; black/blue +.byte $C4 ; 00 10 00 1 -> 1 10 00 10 0 = $C4 ; med +.byte $00 ; med/dark + +hires_colors_odd_lookup_l1: +.byte $00 ; black +.byte $00 ; dark orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; med orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; light orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; solid orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; white orange +.byte $F7 ; 1 11 01 11 -> 1 11 10 11 1 = $F7 ; med white/o +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; wwo +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white/blue +.byte $EE ; 0 11 10 11 -> 1 11 01 11 0 = $EE ; med white/blue +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue/white +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; black/blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med +.byte $00 ; med/dark + + + + +.include "hgr_table.s" + +.align 256 +sin1: +.incbin "tables" +sin2=sin1+256 +sin3=sin2+256 diff --git a/demos/lovebyte2024/plasma/plasmag_hgr_full.s b/demos/lovebyte2024/plasma/plasmag_hgr_full.s new file mode 100644 index 00000000..b6aef036 --- /dev/null +++ b/demos/lovebyte2024/plasma/plasmag_hgr_full.s @@ -0,0 +1,433 @@ +; PLASMAGORIA, hi-res version + +; original code by French Touch + + +.include "hardware.inc" + +hposn_high=$6000 +hposn_low =$6100 +hposn_high_div8=$6200 +hposn_low_div8 =$6300 + +hires_colors_even_l0=$8000 +hires_colors_odd_l0 =$8100 +hires_colors_even_l1=$8200 +hires_colors_odd_l1 =$8300 + +;Table1 = $8000 +;Table2 = $8000+64 + +HGR = $F3E2 + +; Page Zero + +GBASL = $26 +GBASH = $27 + +COMPT1 = $30 +COMPT2 = $31 + +PARAM1 = $60 +PARAM2 = $61 +PARAM3 = $62 +PARAM4 = $63 + +Table1 = $A0 ; 40 bytes +Table2 = $D0 ; 40 bytes + +PAGE = $FC +COUNT = $FD +GBASH_SAVE = $FE + +; ============================================================================= +; ROUTINE MAIN +; ============================================================================= + +plasma_debut: + jsr HGR ; have table gen appear on hgr page1 + bit FULLGR + + jsr build_tables + + ldx #23 + ldy #184 +div8_loop: + lda hposn_low,Y + sta hposn_low_div8,X + lda hposn_high,Y + sta hposn_high_div8,X + dey + dey + dey + dey + dey + dey + dey + dey + dex + bpl div8_loop + + lda #0 + sta PAGE + + + +; ============================================================================ +; init lores colors (inline) +; ============================================================================ + +init_hires_colors: + +;============================================== + +init_hires_colors_even_l0: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_even_l0_loop: + lda hires_colors_even_lookup_l0,X + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + sta hires_colors_even_l0,Y + iny + beq done_init_hires_colors_even_l0 + + inx + txa + and #$f + tax + jmp init_hires_colors_even_l0_loop + +done_init_hires_colors_even_l0: + +;============================ + +init_hires_colors_odd_l0: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_odd_l0_loop: + lda hires_colors_odd_lookup_l0,X + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + sta hires_colors_odd_l0,Y + iny + beq done_init_hires_colors_odd_l0 + + inx + txa + and #$f + tax + jmp init_hires_colors_odd_l0_loop + +done_init_hires_colors_odd_l0: + +;============================================== + +init_hires_colors_even_l1: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_even_l1_loop: + lda hires_colors_even_lookup_l1,X + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + sta hires_colors_even_l1,Y + iny + beq done_init_hires_colors_even_l1 + + inx + txa + and #$f + tax + jmp init_hires_colors_even_l1_loop + +done_init_hires_colors_even_l1: + +;============================ + +init_hires_colors_odd_l1: + ldx #0 + ldy #0 +; 347 + +init_hires_colors_odd_l1_loop: + lda hires_colors_odd_lookup_l1,X + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + sta hires_colors_odd_l1,Y + iny + beq done_init_hires_colors_odd_l1 + + inx + txa + and #$f + tax + jmp init_hires_colors_odd_l1_loop + +done_init_hires_colors_odd_l1: + + + +; ============================================================================ + +do_plasma: + ; init + +; lda #02 +; ldx #5 +;init_loop: +; sta COMPT1,X +; dex +; bne init_loop + +BP3: + +; ============================================================================ +; Precalculate some values (inlined) +; ROUTINES PRE CALCUL +; ============================================================================ +precalc: + lda PARAM1 ; self modify various parts + sta pc_off1+1 + lda PARAM2 + sta pc_off2+1 + lda PARAM3 + sta pc_off3+1 + lda PARAM4 + sta pc_off4+1 + + ; Table1(X) = sin1(PARAM1+X)+sin2(PARAM1+X) + ; Table2(X) = sin3(PARAM3+X)+sin1(PARAM4+X) + + ldx #$28 ; 40 +pc_b1: +pc_off1: + lda sin1 +pc_off2: + adc sin2 + sta Table1,X +pc_off3: + lda sin3 +pc_off4: + adc sin1 + sta Table2,X + + inc pc_off1+1 + inc pc_off2+1 + inc pc_off3+1 + inc pc_off4+1 + + dex + bpl pc_b1 + + inc PARAM1 + inc PARAM1 + dec PARAM2 + inc PARAM3 + dec PARAM4 + +; ============================================================================ +; Display Routines +; ROUTINES AFFICHAGES +; ============================================================================ + +; Display "Normal" +; AFFICHAGE "NORMAL" + +display_normal: + + ldx #23 ; lines 0-23 lignes 0-23 + +display_line_loop: + + lda hposn_low_div8,X + sta GBASL + + ldy #39 ; col 0-39 + + lda Table2,X ; setup base sine value for row + sta display_row_sin_smc+1 +display_col_loop: + lda Table1,Y ; load in column sine value +display_row_sin_smc: + adc #00 ; add in row value + sta display_lookup_smc+1 ; patch in low byte of lookup + + ; pick 0/1 for odd even + lda display_lookup_smc+2 + eor #$01 + sta display_lookup_smc+2 + + + + + + + +; lda hires_colors_even_l0 ; attention: must be aligned +; sta color_smc+1 + + lda hposn_high_div8,X + clc + adc PAGE + sta GBASH + + lda #7 + sta COUNT +store_loop: +color_smc: + + lda display_lookup_smc+2 + eor #$02 + sta display_lookup_smc+2 + +display_lookup_smc: + lda hires_colors_even_l0 ; attention: must be aligned +; lda #$fe + sta (GBASL),Y + clc + lda #$4 + adc GBASH + sta GBASH + dec COUNT + bpl store_loop + dey + bpl display_col_loop + + dex + bpl display_line_loop + +; ============================================================================ + + lda PAGE + beq was_page1 +was_page2: + bit PAGE2 + lda #0 + beq done_pageflip +was_page1: + bit PAGE1 + lda #$20 +done_pageflip: + sta PAGE + + inc COMPT1 + beq display_done2 +; bne BP3 + jmp BP3 + +display_done2: + + dec COMPT2 + beq display_done +; bne BP3 + jmp BP3 +display_done: + + jmp do_plasma +; beq do_plasma ; bra + + +hires_colors_even_lookup_l0: +.byte $00 ; black +.byte $A2 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; dark orange +.byte $A2 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; med orange +.byte $88 ; 01 00 01 0 -> 1 01 00 01 0 = $A2 ; light orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; solid orange +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; white orange +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; med white/o +.byte $EE ; 01 11 01 1 -> 1 11 01 11 0 = $EE ; wwo +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; white/blue +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; med white/blue +.byte $DD ; 10 11 10 1 -> 1 10 11 10 1 = $DD ; blue/white +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; black/blue +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; med +.byte $91 ; 10 00 10 0 -> 1 00 10 00 1 = $91 ; med/dark + +hires_colors_odd_lookup_l0: +.byte $00 ; black +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; dark orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; med orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; light orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; solid orange +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; white orange +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; med white/o +.byte $DD ; 1 01 11 01 -> 1 10 11 10 1 = $DD ; wwo +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; white/blue +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; med white/blue +.byte $BB ; 1 10 11 10 -> 1 01 11 01 1 = $BB ; blue/white +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; black/blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med/dark + +hires_colors_even_lookup_l1: +.byte $00 ; black +.byte $00 ; dark orange +.byte $88 ; 00 01 00 0 -> 1 00 01 00 0 = $88 ; med orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; light orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; solid orange +.byte $AA ; 01 01 01 0 -> 1 01 01 01 0 = $AA ; white orange +.byte $BB ; 11 01 11 0 -> 1 01 11 01 1 = $BB ; med white/o +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; wwo +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white +.byte $FF ; 11 11 11 1 -> 1 11 11 11 1 = $FF ; white/blue +.byte $F7 ; 11 10 11 1 -> 1 11 10 11 1 = $F7 ; med white/blue +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue/white +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; blue +.byte $D5 ; 10 10 10 1 -> 1 10 10 10 1 = $D5 ; black/blue +.byte $C4 ; 00 10 00 1 -> 1 10 00 10 0 = $C4 ; med +.byte $00 ; med/dark + +hires_colors_odd_lookup_l1: +.byte $00 ; black +.byte $00 ; dark orange +.byte $91 ; 1 00 01 00 -> 1 00 10 00 1 = $91 ; med orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; light orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; solid orange +.byte $D5 ; 1 01 01 01 -> 1 10 10 10 1 = $D5 ; white orange +.byte $F7 ; 1 11 01 11 -> 1 11 10 11 1 = $F7 ; med white/o +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; wwo +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white +.byte $FF ; 1 11 11 11 -> 1 11 11 11 1 = $FF ; white/blue +.byte $EE ; 0 11 10 11 -> 1 11 01 11 0 = $EE ; med white/blue +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue/white +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; blue +.byte $AA ; 0 10 10 10 -> 1 01 01 01 0 = $AA ; black/blue +.byte $A2 ; 0 10 00 10 -> 1 01 00 01 0 = $A2 ; med +.byte $00 ; med/dark + + + + +.include "hgr_table.s" + +.align 256 +sin1: +.incbin "tables" +sin2=sin1+256 +sin3=sin2+256 diff --git a/demos/lovebyte2024/plasma/plasmag_outline.s b/demos/lovebyte2024/plasma/plasmag_outline.s new file mode 100644 index 00000000..c4ef5144 --- /dev/null +++ b/demos/lovebyte2024/plasma/plasmag_outline.s @@ -0,0 +1,202 @@ +; PLASMAGORIA, hi-res version + +; original code by French Touch + + +.include "hardware.inc" + +hposn_high=$6000 +hposn_low =$6100 + +;Table1 = $8000 +;Table2 = $8000+64 + +HGR = $F3E2 + +; Page Zero + +GBASL = $26 +GBASH = $27 + +COMPT1 = $30 +COMPT2 = $31 + +PARAM1 = $60 +PARAM2 = $61 +PARAM3 = $62 +PARAM4 = $63 + +Table1 = $A0 ; 40 bytes +Table2 = $D0 ; 40 bytes + + +; ============================================================================= +; ROUTINE MAIN +; ============================================================================= + +plasma_debut: + jsr HGR ; have table gen appear on hgr page1 + bit FULLGR + + jsr build_tables + +lores_colors_fine=$8100 + +; ============================================================================ +; init lores colors (inline) +; ============================================================================ + +init_lores_colors: + ldx #0 + ldy #0 +; 347 + +init_lores_colors_loop: + lda lores_colors_lookup,X + sta lores_colors_fine,Y + iny + sta lores_colors_fine,Y + iny + sta lores_colors_fine,Y + iny + sta lores_colors_fine,Y + iny + beq done_init_lores_colors + + inx + txa + and #$f + tax + jmp init_lores_colors_loop + +done_init_lores_colors: + +; ============================================================================ + +do_plasma: + ; init + +; lda #02 +; ldx #5 +;init_loop: +; sta COMPT1,X +; dex +; bne init_loop + +BP3: + +; ============================================================================ +; Precalculate some values (inlined) +; ROUTINES PRE CALCUL +; ============================================================================ +precalc: + lda PARAM1 ; self modify various parts + sta pc_off1+1 + lda PARAM2 + sta pc_off2+1 + lda PARAM3 + sta pc_off3+1 + lda PARAM4 + sta pc_off4+1 + + ; Table1(X) = sin1(PARAM1+X)+sin2(PARAM1+X) + ; Table2(X) = sin3(PARAM3+X)+sin1(PARAM4+X) + + ldx #$28 ; 40 +pc_b1: +pc_off1: + lda sin1 +pc_off2: + adc sin2 + sta Table1,X +pc_off3: + lda sin3 +pc_off4: + adc sin1 + sta Table2,X + + inc pc_off1+1 + inc pc_off2+1 + inc pc_off3+1 + inc pc_off4+1 + + dex + bpl pc_b1 + + inc PARAM1 + inc PARAM1 + dec PARAM2 + inc PARAM3 + dec PARAM4 + +; ============================================================================ +; Display Routines +; ROUTINES AFFICHAGES +; ============================================================================ + +; Display "Normal" +; AFFICHAGE "NORMAL" + +display_normal: + + ldx #23 ; lines 0-23 lignes 0-23 + +display_line_loop: + + txa + pha + asl + asl + asl + tax + lda hposn_high,X + sta output_smc+2 + lda hposn_low,X + sta output_smc+1 + pla + tax + + ldy #39 ; col 0-39 + + lda Table2,X ; setup base sine value for row + sta display_row_sin_smc+1 +display_col_loop: + lda Table1,Y ; load in column sine value +display_row_sin_smc: + adc #00 ; add in row value + sta display_lookup_smc+1 ; patch in low byte of lookup +display_lookup_smc: + lda lores_colors_fine ; attention: must be aligned + +output_smc: + sta $2000,Y + + dey + bpl display_col_loop + dex + bpl display_line_loop + +; ============================================================================ + + inc COMPT1 + bne BP3 + + dec COMPT2 + bne BP3 + + beq do_plasma ; bra + + + + + +lores_colors_lookup: +.byte $00,$88,$55,$99,$ff,$bb,$33,$22,$66,$77,$44,$cc,$ee,$dd,$99,$11 + +.include "hgr_table.s" + +.align 256 +sin1: +.incbin "tables" +sin2=sin1+256 +sin3=sin2+256