mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-11 01:30:53 +00:00
lovebyte: more work on plasma_mask
This commit is contained in:
parent
8a504fb5c8
commit
c9d1c05d86
@ -27,7 +27,7 @@ interrupt_handler:
|
|||||||
tya
|
tya
|
||||||
pha ; save Y
|
pha ; save Y
|
||||||
|
|
||||||
inc $0404 ; debug (flashes char onscreen)
|
; inc $0404 ; debug (flashes char onscreen)
|
||||||
|
|
||||||
|
|
||||||
ay3_irq_handler:
|
ay3_irq_handler:
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
.include "hardware.inc"
|
.include "hardware.inc"
|
||||||
.include "zp.inc"
|
.include "zp.inc"
|
||||||
|
|
||||||
lores_colors_fine=$8100
|
lores_colors_fine=$8000
|
||||||
|
tracker_song = peasant_song
|
||||||
|
|
||||||
;======================================
|
;======================================
|
||||||
; start of code
|
; start of code
|
||||||
@ -21,20 +22,23 @@ plasma_mask:
|
|||||||
jsr HGR ; have table gen appear on hgr page1
|
jsr HGR ; have table gen appear on hgr page1
|
||||||
bit FULLGR
|
bit FULLGR
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; decompress graphics masks
|
||||||
|
|
||||||
ldx #0
|
ldx #3
|
||||||
load_graphics_loop:
|
load_graphics_loop:
|
||||||
lda graphics_src_l,X
|
lda graphics_src_l,X
|
||||||
sta zx_src_l+1
|
sta zx_src_l+1
|
||||||
lda graphics_src_h,X
|
lda graphics_src_h,X
|
||||||
sta zx_src_h+1
|
sta zx_src_h+1
|
||||||
lda graphics_loc,X
|
lda graphics_loc,X
|
||||||
|
clc
|
||||||
|
adc #4
|
||||||
stx XSAVE
|
stx XSAVE
|
||||||
jsr zx02_full_decomp
|
jsr zx02_full_decomp
|
||||||
ldx XSAVE
|
ldx XSAVE
|
||||||
inx
|
dex
|
||||||
cpx #4
|
bpl load_graphics_loop
|
||||||
bne load_graphics_loop
|
|
||||||
|
|
||||||
;=================
|
;=================
|
||||||
; init music
|
; init music
|
||||||
@ -46,7 +50,6 @@ load_graphics_loop:
|
|||||||
;===================
|
;===================
|
||||||
; music Player Setup
|
; music Player Setup
|
||||||
|
|
||||||
tracker_song = peasant_song
|
|
||||||
|
|
||||||
; assume mockingboard in slot#4
|
; assume mockingboard in slot#4
|
||||||
|
|
||||||
@ -66,19 +69,28 @@ tracker_song = peasant_song
|
|||||||
; init lores colors (inline)
|
; init lores colors (inline)
|
||||||
; ============================================================================
|
; ============================================================================
|
||||||
|
|
||||||
|
lda #<lores_colors_fine
|
||||||
|
sta INL
|
||||||
|
lda #>lores_colors_fine
|
||||||
|
sta INH
|
||||||
|
multiple_init_lores_colors:
|
||||||
|
|
||||||
|
|
||||||
init_lores_colors:
|
init_lores_colors:
|
||||||
ldx #0
|
ldx #0
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
init_lores_colors_loop:
|
init_lores_colors_loop:
|
||||||
|
|
||||||
|
lcl_smc1:
|
||||||
lda lores_colors_lookup,X
|
lda lores_colors_lookup,X
|
||||||
sta lores_colors_fine,Y
|
sta (INL),Y
|
||||||
iny
|
iny
|
||||||
sta lores_colors_fine,Y
|
sta (INL),Y
|
||||||
iny
|
iny
|
||||||
sta lores_colors_fine,Y
|
sta (INL),Y
|
||||||
iny
|
iny
|
||||||
sta lores_colors_fine,Y
|
sta (INL),Y
|
||||||
iny
|
iny
|
||||||
beq done_init_lores_colors
|
beq done_init_lores_colors
|
||||||
|
|
||||||
@ -89,6 +101,15 @@ init_lores_colors_loop:
|
|||||||
jmp init_lores_colors_loop
|
jmp init_lores_colors_loop
|
||||||
|
|
||||||
done_init_lores_colors:
|
done_init_lores_colors:
|
||||||
|
lda lcl_smc1+1
|
||||||
|
clc
|
||||||
|
adc #$10
|
||||||
|
sta lcl_smc1+1
|
||||||
|
|
||||||
|
inc INH
|
||||||
|
lda INH
|
||||||
|
cmp #$84
|
||||||
|
bne multiple_init_lores_colors
|
||||||
|
|
||||||
;====================================
|
;====================================
|
||||||
; do plasma
|
; do plasma
|
||||||
@ -98,7 +119,13 @@ do_plasma:
|
|||||||
; init
|
; init
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BP3:
|
BP3:
|
||||||
|
; adjust color
|
||||||
|
lda WHICH_TRACK
|
||||||
|
clc
|
||||||
|
adc #$80
|
||||||
|
sta display_lookup_smc+2
|
||||||
|
|
||||||
; ============================================================================
|
; ============================================================================
|
||||||
; Precalculate some values (inlined)
|
; Precalculate some values (inlined)
|
||||||
@ -168,8 +195,8 @@ display_line_loop:
|
|||||||
|
|
||||||
clc
|
clc
|
||||||
adc graphics_loc,Y
|
adc graphics_loc,Y
|
||||||
sec ; blurgh
|
; sec ; blurgh
|
||||||
sbc #4 ;
|
; sbc #4 ;
|
||||||
sta INH
|
sta INH
|
||||||
|
|
||||||
ldy #39 ; col 0-39
|
ldy #39 ; col 0-39
|
||||||
@ -201,17 +228,23 @@ display_lookup_smc:
|
|||||||
dec COMPT2
|
dec COMPT2
|
||||||
bne BP3
|
bne BP3
|
||||||
|
|
||||||
beq do_plasma ; bra
|
; beq do_plasma ; bra
|
||||||
|
jmp do_plasma ; bra
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;lores_colors_lookup = $F000
|
|
||||||
|
|
||||||
lores_colors_lookup:
|
lores_colors_lookup:
|
||||||
.byte $00,$88,$55,$99,$ff,$bb,$33,$22,$66,$77,$44,$cc,$ee,$dd,$99,$11
|
|
||||||
|
|
||||||
|
; dark
|
||||||
|
.byte $00,$88,$55,$99,$ff,$bb,$33,$22,$66,$77,$44,$cc,$ee,$dd,$99,$11
|
||||||
|
; pink
|
||||||
|
.byte $00,$11,$33,$BB,$FF,$BB,$33,$11,$00,$11,$33,$BB,$FF,$BB,$33,$11
|
||||||
|
; blue
|
||||||
|
.byte $00,$22,$66,$77,$FF,$77,$66,$22,$00,$22,$66,$77,$FF,$77,$66,$22
|
||||||
|
; green
|
||||||
|
.byte $00,$44,$CC,$DD,$FF,$DD,$CC,$44,$00,$44,$CC,$DD,$FF,$DD,$CC,$44
|
||||||
|
|
||||||
;.include "make_tables.s"
|
;.include "make_tables.s"
|
||||||
|
|
||||||
@ -228,7 +261,7 @@ graphics_src_h:
|
|||||||
.byte >dsr_empty,>dsr_small,>dsr_big,>dsr_big2
|
.byte >dsr_empty,>dsr_small,>dsr_big,>dsr_big2
|
||||||
|
|
||||||
graphics_loc:
|
graphics_loc:
|
||||||
.byte $A0,$A4,$A8,$AC
|
.byte $A0-4,$A4-4,$A8-4,$AC-4
|
||||||
|
|
||||||
; graphics
|
; graphics
|
||||||
dsr_big:
|
dsr_big:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,462 +0,0 @@
|
|||||||
; 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
|
|
@ -1,433 +0,0 @@
|
|||||||
; 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
|
|
@ -1,202 +0,0 @@
|
|||||||
; 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
|
|
@ -150,9 +150,9 @@ done_start_note:
|
|||||||
sta AY_REGS,X ; set proper register value
|
sta AY_REGS,X ; set proper register value
|
||||||
|
|
||||||
; visualization
|
; visualization
|
||||||
blah_urgh:
|
;blah_urgh:
|
||||||
sta $400,Y
|
; sta $400,Y
|
||||||
inc blah_urgh+1
|
; inc blah_urgh+1
|
||||||
|
|
||||||
|
|
||||||
;============================
|
;============================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user