mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-13 03:29:32 +00:00
lovebyte: finally 1020 bytes
This commit is contained in:
parent
b2be06be8d
commit
096f0a70c0
|
@ -8,7 +8,7 @@ ZX02 = ~/research/6502_compression/zx02.git/build/zx02
|
|||
|
||||
all: plasma_mask.dsk
|
||||
|
||||
plasma_mask.dsk: HELLO PLASMA_MASK PLASMA_NEW
|
||||
plasma_mask.dsk: HELLO PLASMA_NEW
|
||||
cp $(EMPTYDISK) plasma_mask.dsk
|
||||
$(DOS33) -y plasma_mask.dsk SAVE A HELLO
|
||||
$(DOS33) -y plasma_mask.dsk BSAVE -a 0x1000 PLASMA_NEW
|
||||
|
|
|
@ -199,6 +199,9 @@ sin_common:
|
|||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sixteen:
|
||||
.byte $85,$00,$00,$00,$00
|
||||
|
||||
|
@ -238,4 +241,11 @@ three_input:
|
|||
|
||||
precalc_string:
|
||||
.byte 'P'|$80,'R'|$80,'E'|$80,'C'|$80,'A'|$80,'L'|$80,'C'|$80,':'|$80,' '|$80,'4'
|
||||
.byte ' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,' '|$80,'d'|$80,'S'|$80,'r'|$80,0
|
||||
.byte ' '|$80,' '|$80;,' '|$80,' '|$80
|
||||
.byte 'D'|$80,'E'|$80,'A'|$80,'T'|$80,'E'|$80,'R'|$80
|
||||
.byte '<'|$80,'d'|$80,'S'|$80,'r'|$80,'>'|$80
|
||||
.byte 'M'|$80,'A'|$80,'2'|$80,'E'|$80
|
||||
.byte ' '|$80
|
||||
.byte 'G'|$80,'R'|$80,'O'|$80,'U'|$80,'I'|$80,'K'|$80
|
||||
.byte 0
|
||||
|
||||
|
|
|
@ -11,6 +11,15 @@
|
|||
; 997 -- minor optimization
|
||||
; 984 -- inline zx02 compress
|
||||
; 988 -- fix fullscreen
|
||||
; 1020 -- add precalc countdown
|
||||
; 1015 -- optimize music (track_h always same)
|
||||
; 1012 -- optimize next track (4 is a nice power of 2)
|
||||
; 1011 -- overlap constants
|
||||
; 1023 -- add credits to precalc
|
||||
; 1018 -- optimize initializations
|
||||
; 1025 -- add one more credit
|
||||
; 1024 -- shrink main loop enough to use bne
|
||||
; 1020 -- re-arrange functions until smaller, remove a few spaces
|
||||
|
||||
.include "hardware.inc"
|
||||
.include "zp.inc"
|
||||
|
@ -32,9 +41,10 @@ plasma_mask:
|
|||
; init music
|
||||
|
||||
; A and Y=0 from HGR
|
||||
; lda #0
|
||||
sta FRAME
|
||||
sta WHICH_TRACK
|
||||
|
||||
; we set these when we init the rest of the ZP vars
|
||||
; sta FRAME
|
||||
; sta WHICH_TRACK
|
||||
|
||||
;===================
|
||||
; music Player Setup
|
||||
|
@ -44,9 +54,11 @@ plasma_mask:
|
|||
|
||||
; inline mockingboard_init
|
||||
|
||||
.include "tracker_init.s"
|
||||
|
||||
.include "mockingboard_init.s"
|
||||
|
||||
.include "tracker_init.s"
|
||||
|
||||
|
||||
jsr make_tables
|
||||
|
||||
|
@ -111,11 +123,12 @@ do_plasma:
|
|||
|
||||
|
||||
BP3:
|
||||
; adjust color
|
||||
lda WHICH_TRACK
|
||||
clc
|
||||
adc #$80
|
||||
sta display_lookup_smc+2
|
||||
;=============================
|
||||
; adjust color palette
|
||||
; lda WHICH_TRACK
|
||||
; clc
|
||||
; adc #$80
|
||||
; sta display_lookup_smc+2
|
||||
|
||||
; ============================================================================
|
||||
; Precalculate some values (inlined)
|
||||
|
@ -185,8 +198,6 @@ display_line_loop:
|
|||
|
||||
clc
|
||||
adc graphics_loc,Y
|
||||
; sec ; blurgh
|
||||
; sbc #4 ;
|
||||
sta INH
|
||||
|
||||
ldy #39 ; col 0-39
|
||||
|
@ -218,8 +229,8 @@ display_lookup_smc:
|
|||
dec COMPT2
|
||||
bne BP3
|
||||
|
||||
; beq do_plasma ; bra
|
||||
jmp do_plasma ; bra
|
||||
beq do_plasma ; bra
|
||||
; jmp do_plasma ; bra
|
||||
|
||||
|
||||
|
||||
|
@ -236,11 +247,13 @@ lores_colors_lookup:
|
|||
; green
|
||||
.byte $00,$44,$CC,$DD,$FF,$DD,$CC,$44,$00,$44,$CC,$DD,$FF,$DD,$CC,$44
|
||||
|
||||
|
||||
.include "make_tables.s"
|
||||
|
||||
.include "interrupt_handler.s"
|
||||
.include "mockingboard_constants.s"
|
||||
|
||||
.include "interrupt_handler.s"
|
||||
|
||||
.include "mockingboard_constants.s"
|
||||
|
||||
graphics_loc:
|
||||
.byte >dsr_empty-4,>dsr_small-4,>dsr_big-4,>dsr_big2-4
|
||||
|
@ -258,3 +271,6 @@ dsr_big2:
|
|||
|
||||
; music
|
||||
.include "mA2E_2.s"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -65,6 +65,9 @@ set_notes_loop:
|
|||
; load next byte
|
||||
|
||||
ldy SONG_OFFSET
|
||||
|
||||
; could move SONG_OFFSET to this bottom byte but wouldn't
|
||||
; save any space
|
||||
track_smc:
|
||||
lda track0,Y
|
||||
|
||||
|
@ -78,16 +81,27 @@ track_smc:
|
|||
; if at end, loop back to beginning
|
||||
|
||||
inc WHICH_TRACK
|
||||
ldy WHICH_TRACK
|
||||
cpy #4 ; looping, hard coded
|
||||
bne no_wrap
|
||||
ldy #0
|
||||
sty WHICH_TRACK
|
||||
lda WHICH_TRACK
|
||||
and #$3
|
||||
sta WHICH_TRACK
|
||||
tay
|
||||
|
||||
clc
|
||||
adc #$80
|
||||
sta display_lookup_smc+2
|
||||
|
||||
; ldy WHICH_TRACK
|
||||
; cpy #4 ; looping, hard coded
|
||||
; bne no_wrap
|
||||
; ldy #0
|
||||
; sty WHICH_TRACK
|
||||
no_wrap:
|
||||
lda tracks_l,Y
|
||||
sta track_smc+1
|
||||
lda tracks_h,Y
|
||||
sta track_smc+2
|
||||
; lda ]tracks_h,Y
|
||||
; sta track_smc+2
|
||||
|
||||
lda #>track0 ; always on same page
|
||||
|
||||
lda #0
|
||||
sta SONG_OFFSET
|
||||
|
@ -150,11 +164,6 @@ done_start_note:
|
|||
lda frequencies_low,Y
|
||||
sta AY_REGS,X ; set proper register value
|
||||
|
||||
; visualization
|
||||
;blah_urgh:
|
||||
; sta $400,Y
|
||||
; inc blah_urgh+1
|
||||
|
||||
|
||||
;============================
|
||||
; point to next
|
||||
|
@ -165,10 +174,10 @@ done_start_note:
|
|||
done_update_song:
|
||||
dec SONG_COUNTDOWN
|
||||
bmi set_notes_loop
|
||||
bpl skip_data
|
||||
bpl skip_data ; bra
|
||||
|
||||
channel_a_volume:
|
||||
.byte $D,$C,$A,$9
|
||||
.byte $D,$C,$A;,$9
|
||||
channel_b0_volume:
|
||||
.byte $9,$5,$4,$3
|
||||
channel_b1_volume:
|
||||
|
@ -176,8 +185,8 @@ channel_b1_volume:
|
|||
|
||||
tracks_l:
|
||||
.byte <track0,<track0,<track1,<track1
|
||||
tracks_h:
|
||||
.byte >track0,>track0,>track1,>track1
|
||||
; tracks_h:
|
||||
; .byte >track0,>track0,>track1,>track1
|
||||
|
||||
|
||||
skip_data:
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
tracker_init:
|
||||
|
||||
; A must be 0 when calling this!
|
||||
|
||||
; setup initial ay-3-8910 values (this depends on song)
|
||||
|
||||
init_registers_to_zero:
|
||||
ldx #$13 ; zero $70--$83
|
||||
lda #0
|
||||
; sta SONG_OFFSET ; also init song stuff
|
||||
; sta SONG_COUNTDOWN
|
||||
ldx #$15 ; zero $70--$85
|
||||
; lda #0
|
||||
init_loop:
|
||||
sta AY_REGS,X
|
||||
dex
|
||||
|
|
|
@ -32,10 +32,13 @@ SONG_L = $80
|
|||
SONG_H = $81
|
||||
SONG_OFFSET = $82
|
||||
SONG_COUNTDOWN = $83
|
||||
OCTAVE = $84
|
||||
REGISTER = $85
|
||||
A_COUNTDOWN = $86
|
||||
B_COUNTDOWN = $87
|
||||
FRAME = $84
|
||||
WHICH_TRACK = $85
|
||||
|
||||
OCTAVE = $86
|
||||
REGISTER = $87
|
||||
A_COUNTDOWN = $88
|
||||
B_COUNTDOWN = $89
|
||||
|
||||
Table1 = $A0 ; 40 bytes ($28) A0-C7
|
||||
Table2 = $C8 ; 40 bytes ($28) C8-EF
|
||||
|
@ -50,7 +53,5 @@ Table2 = $C8 ; 40 bytes ($28) C8-EF
|
|||
|
||||
XSAVE = $FA
|
||||
COUNT = $FB
|
||||
FRAME = $FC
|
||||
WHICH_TRACK = $FD
|
||||
INL = $FE
|
||||
INH = $FF
|
||||
|
|
Loading…
Reference in New Issue
Block a user