mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-24 23:25:28 +00:00
Revert "[PATCH] cut some bytes and cycles"
This reverts commit d5ca73dc14
.
This commit is contained in:
parent
0b98d803e8
commit
33615c215f
@ -45,8 +45,7 @@ pt3_play_music:
|
|||||||
lda LOOP ; see if looping
|
lda LOOP ; see if looping
|
||||||
beq move_to_next
|
beq move_to_next
|
||||||
|
|
||||||
pt3_loop_smc:
|
lda pt3_loop ; looping, move to loop location
|
||||||
lda #0 ; looping, move to loop location
|
|
||||||
sta current_pattern
|
sta current_pattern
|
||||||
lda #$0
|
lda #$0
|
||||||
sta current_line
|
sta current_line
|
||||||
@ -213,14 +212,9 @@ key_M:
|
|||||||
bne key_L ; set carry if true
|
bne key_L ; set carry if true
|
||||||
|
|
||||||
ldx #'0'+$80
|
ldx #'0'+$80
|
||||||
lda convert_177_smc1
|
lda convert_177
|
||||||
eor #$20
|
eor #$1
|
||||||
sta convert_177_smc1
|
sta convert_177
|
||||||
sta convert_177_smc2
|
|
||||||
sta convert_177_smc3
|
|
||||||
sta convert_177_smc4
|
|
||||||
sta convert_177_smc5
|
|
||||||
cmp #$18
|
|
||||||
beq at_MHz
|
beq at_MHz
|
||||||
|
|
||||||
; update text on screen
|
; update text on screen
|
||||||
|
@ -30,12 +30,7 @@ pt3_setup:
|
|||||||
sta WHICH_FILE
|
sta WHICH_FILE
|
||||||
|
|
||||||
; Set to 1MHz mode (no translate) for validation purposes
|
; Set to 1MHz mode (no translate) for validation purposes
|
||||||
lda #$18
|
sta convert_177
|
||||||
sta convert_177_smc1
|
|
||||||
sta convert_177_smc2
|
|
||||||
sta convert_177_smc3
|
|
||||||
sta convert_177_smc4
|
|
||||||
sta convert_177_smc5
|
|
||||||
|
|
||||||
|
|
||||||
;==================
|
;==================
|
||||||
@ -431,7 +426,4 @@ song_list:
|
|||||||
.include "pt3_lib.s"
|
.include "pt3_lib.s"
|
||||||
|
|
||||||
|
|
||||||
;=============
|
|
||||||
; dummy var
|
|
||||||
|
|
||||||
pt3_loop_smc:
|
|
||||||
|
@ -195,6 +195,8 @@ note_c:
|
|||||||
|
|
||||||
pt3_version: .byte $0
|
pt3_version: .byte $0
|
||||||
pt3_frequency_table: .byte $0
|
pt3_frequency_table: .byte $0
|
||||||
|
pt3_speed: .byte $0
|
||||||
|
pt3_loop: .byte $0
|
||||||
|
|
||||||
pt3_noise_period: .byte $0
|
pt3_noise_period: .byte $0
|
||||||
pt3_noise_add: .byte $0
|
pt3_noise_add: .byte $0
|
||||||
@ -222,6 +224,8 @@ note_command: ; shared space with sample_b0
|
|||||||
sample_b0: .byte $0
|
sample_b0: .byte $0
|
||||||
sample_b1: .byte $0
|
sample_b1: .byte $0
|
||||||
|
|
||||||
|
convert_177: .byte $1
|
||||||
|
|
||||||
; Header offsets
|
; Header offsets
|
||||||
|
|
||||||
PT3_VERSION = $0D
|
PT3_VERSION = $0D
|
||||||
@ -236,6 +240,7 @@ PT3_ORNAMENT_LOC_L = $A9
|
|||||||
PT3_ORNAMENT_LOC_H = $AA
|
PT3_ORNAMENT_LOC_H = $AA
|
||||||
PT3_PATTERN_TABLE = $C9
|
PT3_PATTERN_TABLE = $C9
|
||||||
|
|
||||||
|
ysave: .byte $00
|
||||||
freq_l: .byte $00
|
freq_l: .byte $00
|
||||||
freq_h: .byte $00
|
freq_h: .byte $00
|
||||||
|
|
||||||
@ -267,12 +272,9 @@ current_val: .byte $0
|
|||||||
; easy. Can't self modify as channels A/B/C have own copies
|
; easy. Can't self modify as channels A/B/C have own copies
|
||||||
; of the var.
|
; of the var.
|
||||||
|
|
||||||
load_ornament0:
|
|
||||||
lda #0 ; 2
|
|
||||||
|
|
||||||
load_ornament:
|
load_ornament:
|
||||||
|
|
||||||
sty TEMP ; save Y value ; 3
|
sty ysave ; save Y value ; 3
|
||||||
|
|
||||||
;pt3->ornament_patterns[i]=
|
;pt3->ornament_patterns[i]=
|
||||||
; (pt3->data[0xaa+(i*2)]<<8)|pt3->data[0xa9+(i*2)];
|
; (pt3->data[0xaa+(i*2)]<<8)|pt3->data[0xa9+(i*2)];
|
||||||
@ -317,7 +319,7 @@ load_ornament:
|
|||||||
adc #$0 ; 2
|
adc #$0 ; 2
|
||||||
sta note_a+NOTE_ORNAMENT_POINTER_H,X ; 5
|
sta note_a+NOTE_ORNAMENT_POINTER_H,X ; 5
|
||||||
|
|
||||||
ldy TEMP ; restore Y value ; 3
|
ldy ysave ; restore Y value ; 3
|
||||||
|
|
||||||
rts ; 6
|
rts ; 6
|
||||||
|
|
||||||
@ -341,12 +343,9 @@ load_ornament:
|
|||||||
; Optimization:
|
; Optimization:
|
||||||
; see comments on ornament setting
|
; see comments on ornament setting
|
||||||
|
|
||||||
load_sample1:
|
|
||||||
lda #1 ; 2
|
|
||||||
|
|
||||||
load_sample:
|
load_sample:
|
||||||
|
|
||||||
sty TEMP ; 3
|
sty ysave ; 3
|
||||||
|
|
||||||
;pt3->ornament_patterns[i]=
|
;pt3->ornament_patterns[i]=
|
||||||
; (pt3->data[0x6a+(i*2)]<<8)|pt3->data[0x69+(i*2)];
|
; (pt3->data[0x6a+(i*2)]<<8)|pt3->data[0x69+(i*2)];
|
||||||
@ -389,7 +388,7 @@ load_sample:
|
|||||||
adc #$0 ; 2
|
adc #$0 ; 2
|
||||||
sta note_a+NOTE_SAMPLE_POINTER_H,X ; 5
|
sta note_a+NOTE_SAMPLE_POINTER_H,X ; 5
|
||||||
|
|
||||||
ldy TEMP ; 3
|
ldy ysave ; 3
|
||||||
|
|
||||||
rts ; 6
|
rts ; 6
|
||||||
;============
|
;============
|
||||||
@ -432,29 +431,36 @@ pt3_init_song:
|
|||||||
; default ornament/sample in A
|
; default ornament/sample in A
|
||||||
ldx #(NOTE_STRUCT_SIZE*0) ; 2
|
ldx #(NOTE_STRUCT_SIZE*0) ; 2
|
||||||
jsr load_ornament ; 6+93
|
jsr load_ornament ; 6+93
|
||||||
jsr load_sample1 ; 6+86
|
lda #1 ; 2
|
||||||
|
jsr load_sample ; 6+86
|
||||||
|
|
||||||
; default ornament/sample in B
|
; default ornament/sample in B
|
||||||
|
lda #0 ; 2
|
||||||
ldx #(NOTE_STRUCT_SIZE*1) ; 2
|
ldx #(NOTE_STRUCT_SIZE*1) ; 2
|
||||||
jsr load_ornament0 ; 6+93
|
jsr load_ornament ; 6+93
|
||||||
jsr load_sample1 ; 6+86
|
lda #1 ; 2
|
||||||
|
jsr load_sample ; 6+86
|
||||||
|
|
||||||
; default ornament/sample in C
|
; default ornament/sample in C
|
||||||
|
lda #0 ; 2
|
||||||
ldx #(NOTE_STRUCT_SIZE*2) ; 2
|
ldx #(NOTE_STRUCT_SIZE*2) ; 2
|
||||||
jsr load_ornament0 ; 6+93
|
jsr load_ornament ; 6+93
|
||||||
jsr load_sample1 ; 6+86
|
lda #1 ; 2
|
||||||
|
jsr load_sample ; 6+86
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
; load default speed
|
; load default speed
|
||||||
|
; FIXME: change to self-modifying code
|
||||||
|
|
||||||
lda PT3_LOC+PT3_SPEED ; 4
|
lda PT3_LOC+PT3_SPEED ; 4
|
||||||
sta pt3_speed_smc+1 ; 4
|
sta pt3_speed ; 4
|
||||||
|
|
||||||
;=======================
|
;=======================
|
||||||
; load loop
|
; load loop
|
||||||
|
; FIXME: change to self-modifying code
|
||||||
|
|
||||||
lda PT3_LOC+PT3_LOOP ; 4
|
lda PT3_LOC+PT3_LOOP ; 4
|
||||||
sta pt3_loop_smc+1 ; 4
|
sta pt3_loop ; 4
|
||||||
|
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
@ -536,10 +542,12 @@ vol_outer:
|
|||||||
sta z80_d ; carry is important
|
sta z80_d ; carry is important
|
||||||
|
|
||||||
; sbc hl,hl
|
; sbc hl,hl
|
||||||
|
lda #$ff
|
||||||
|
bcs vol_ffs
|
||||||
|
vol_zeros:
|
||||||
lda #0
|
lda #0
|
||||||
adc #$ff
|
|
||||||
eor #$ff
|
|
||||||
|
|
||||||
|
vol_ffs:
|
||||||
vol_write:
|
vol_write:
|
||||||
sta z80_h
|
sta z80_h
|
||||||
pha
|
pha
|
||||||
@ -796,6 +804,7 @@ calc_amplitude:
|
|||||||
|
|
||||||
lda sample_b1 ; a->amplitude= (b1 & 0xf);
|
lda sample_b1 ; a->amplitude= (b1 & 0xf);
|
||||||
and #$f
|
and #$f
|
||||||
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
|
|
||||||
;========================================
|
;========================================
|
||||||
; if b0 top bit is set, it means sliding
|
; if b0 top bit is set, it means sliding
|
||||||
@ -804,31 +813,32 @@ calc_amplitude:
|
|||||||
|
|
||||||
bit sample_b0 ; if ((b0 & 0x80)!=0) {
|
bit sample_b0 ; if ((b0 & 0x80)!=0) {
|
||||||
bpl done_amp_sliding ; so if top bit not set, skip
|
bpl done_amp_sliding ; so if top bit not set, skip
|
||||||
tay
|
|
||||||
|
|
||||||
;================================
|
;================================
|
||||||
; if top bits 0b11 then slide up
|
; if top bits 0b11 then slide up
|
||||||
; if top buts 0b10 then slide down
|
; if top buts 0b10 then slide down
|
||||||
|
|
||||||
; if ((b0 & 0x40)!=0) {
|
; if ((b0 & 0x40)!=0) {
|
||||||
lda note_a+NOTE_AMPLITUDE_SLIDING,X
|
|
||||||
sec
|
|
||||||
bvc amp_slide_down
|
bvc amp_slide_down
|
||||||
|
|
||||||
amp_slide_up:
|
amp_slide_up:
|
||||||
; if (a->amplitude_sliding < 15) {
|
; if (a->amplitude_sliding < 15) {
|
||||||
; a pain to do signed compares
|
; a pain to do signed compares
|
||||||
|
lda note_a+NOTE_AMPLITUDE_SLIDING,X
|
||||||
|
sec
|
||||||
sbc #15
|
sbc #15
|
||||||
bvc asu_signed
|
bvc asu_signed
|
||||||
eor #$80
|
eor #$80
|
||||||
asu_signed:
|
asu_signed:
|
||||||
bpl done_amp_sliding ; skip if A>=15
|
bpl done_amp_sliding ; skip if A>=15
|
||||||
inc note_a+NOTE_AMPLITUDE_SLIDING,X ; a->amplitude_sliding++;
|
inc note_a+NOTE_AMPLITUDE_SLIDING,X ; a->amplitude_sliding++;
|
||||||
bne done_amp_sliding_y
|
bne done_amp_sliding
|
||||||
|
|
||||||
amp_slide_down:
|
amp_slide_down:
|
||||||
; if (a->amplitude_sliding > -15) {
|
; if (a->amplitude_sliding > -15) {
|
||||||
; a pain to do signed compares
|
; a pain to do signed compares
|
||||||
|
lda note_a+NOTE_AMPLITUDE_SLIDING,X
|
||||||
|
sec
|
||||||
sbc #$f1 ; -15
|
sbc #$f1 ; -15
|
||||||
bvc asd_signed
|
bvc asd_signed
|
||||||
eor #$80
|
eor #$80
|
||||||
@ -837,29 +847,28 @@ asd_signed:
|
|||||||
|
|
||||||
dec note_a+NOTE_AMPLITUDE_SLIDING,X ; a->amplitude_sliding--;
|
dec note_a+NOTE_AMPLITUDE_SLIDING,X ; a->amplitude_sliding--;
|
||||||
|
|
||||||
done_amp_sliding_y:
|
|
||||||
tya
|
|
||||||
|
|
||||||
done_amp_sliding:
|
done_amp_sliding:
|
||||||
|
|
||||||
; a->amplitude+=a->amplitude_sliding;
|
; a->amplitude+=a->amplitude_sliding;
|
||||||
clc
|
clc
|
||||||
|
lda note_a+NOTE_AMPLITUDE,X
|
||||||
adc note_a+NOTE_AMPLITUDE_SLIDING,X
|
adc note_a+NOTE_AMPLITUDE_SLIDING,X
|
||||||
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
|
|
||||||
; clamp amplitude to 0 - 15
|
; clamp amplitude to 0 - 15
|
||||||
|
|
||||||
|
lda note_a+NOTE_AMPLITUDE,X
|
||||||
check_amp_lo:
|
check_amp_lo:
|
||||||
bmi write_clamp_amplitude
|
bpl check_amp_hi
|
||||||
|
lda #0
|
||||||
|
beq write_clamp_amplitude
|
||||||
|
|
||||||
check_amp_hi:
|
check_amp_hi:
|
||||||
cmp #16
|
cmp #16
|
||||||
bcc write_amplitude ; blt
|
bcc done_clamp_amplitude ; blt
|
||||||
lda #15
|
lda #15
|
||||||
.byte $2C
|
|
||||||
write_clamp_amplitude:
|
write_clamp_amplitude:
|
||||||
lda #0
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
write_amplitude:
|
|
||||||
sta note_amp_smc+1
|
|
||||||
|
|
||||||
done_clamp_amplitude:
|
done_clamp_amplitude:
|
||||||
|
|
||||||
@ -873,8 +882,7 @@ done_clamp_amplitude:
|
|||||||
asl ; 2
|
asl ; 2
|
||||||
asl ; 2
|
asl ; 2
|
||||||
asl ; 2
|
asl ; 2
|
||||||
note_amp_smc:
|
ora note_a+NOTE_AMPLITUDE,X ; 4+
|
||||||
ora #0 ; 4+
|
|
||||||
|
|
||||||
tay ; 2
|
tay ; 2
|
||||||
lda VolumeTable,Y ; 4+
|
lda VolumeTable,Y ; 4+
|
||||||
@ -911,26 +919,35 @@ envelope_slide:
|
|||||||
; Envelope slide
|
; Envelope slide
|
||||||
; If b1 top bits are 10 or 11
|
; If b1 top bits are 10 or 11
|
||||||
|
|
||||||
lda sample_b0
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl ; b0 bit 5 to carry flag
|
|
||||||
lda #$20
|
lda #$20
|
||||||
bit sample_b1 ; b1 bit 7 to sign flag, bit 5 to zero flag
|
bit sample_b0
|
||||||
php
|
php
|
||||||
bpl else_noise_slide ; if ((b1 & 0x80) != 0) {
|
|
||||||
tya
|
|
||||||
ora #$f0
|
|
||||||
bcs envelope_slide_down ; if ((b0 & 0x20) == 0) {
|
|
||||||
|
|
||||||
envelope_slide_up:
|
bit sample_b1
|
||||||
; j = ((b0>>1)&0xF) + a->envelope_sliding;
|
bpl else_noise_slide ; if ((b1 & 0x80) != 0) {
|
||||||
and #$0f
|
|
||||||
clc
|
plp
|
||||||
|
php
|
||||||
|
;;bug? always falls through
|
||||||
|
beq envelope_slide_down ; if ((b0 & 0x20) != 0) {
|
||||||
|
|
||||||
|
; FIXME: this can be optimized
|
||||||
|
|
||||||
envelope_slide_down:
|
envelope_slide_down:
|
||||||
|
|
||||||
; j = ((b0>>1)|0xF0) + a->envelope_sliding
|
; j = ((b0>>1)|0xF0) + a->envelope_sliding
|
||||||
|
tya
|
||||||
|
ora #$f0
|
||||||
|
clc
|
||||||
|
adc note_a+NOTE_ENVELOPE_SLIDING,X
|
||||||
|
sta e_slide_amount ; j
|
||||||
|
;;+jmp envelope_slide_done?
|
||||||
|
|
||||||
|
envelope_slide_up:
|
||||||
|
; j = ((b0>>1)&0xF) + a->envelope_sliding;
|
||||||
|
tya
|
||||||
|
and #$0f
|
||||||
|
clc
|
||||||
adc note_a+NOTE_ENVELOPE_SLIDING,X
|
adc note_a+NOTE_ENVELOPE_SLIDING,X
|
||||||
sta e_slide_amount ; j
|
sta e_slide_amount ; j
|
||||||
|
|
||||||
@ -941,7 +958,6 @@ envelope_slide_done:
|
|||||||
|
|
||||||
; a->envelope_sliding = j;
|
; a->envelope_sliding = j;
|
||||||
sta note_a+NOTE_ENVELOPE_SLIDING,X
|
sta note_a+NOTE_ENVELOPE_SLIDING,X
|
||||||
clc
|
|
||||||
|
|
||||||
last_envelope:
|
last_envelope:
|
||||||
|
|
||||||
@ -1027,7 +1043,7 @@ handle_onoff:
|
|||||||
eor #$1 ; toggle
|
eor #$1 ; toggle
|
||||||
sta note_a+NOTE_ENABLED,X
|
sta note_a+NOTE_ENABLED,X
|
||||||
|
|
||||||
.byte $a9 ;mask do_onoff
|
bne do_offon
|
||||||
do_onoff:
|
do_onoff:
|
||||||
dex ; select ONOFF
|
dex ; select ONOFF
|
||||||
;lda note_a+NOTE_ONOFF_DELAY,X ; if (a->enabled) a->onoff=a->onoff_delay;
|
;lda note_a+NOTE_ONOFF_DELAY,X ; if (a->enabled) a->onoff=a->onoff_delay;
|
||||||
@ -1449,33 +1465,30 @@ effect_2_small: ; FIXME: make smaller
|
|||||||
|
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
|
|
||||||
|
lda (PATTERN_L),Y ; load byte, set as slide_step low
|
||||||
iny
|
iny
|
||||||
|
sta note_a+NOTE_TONE_SLIDE_STEP_L,X
|
||||||
|
|
||||||
lda (PATTERN_L),Y ; load byte, set as slide_step high
|
lda (PATTERN_L),Y ; load byte, set as slide_step high
|
||||||
php
|
sta note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
|
|
||||||
; 16-bit absolute value
|
; 16-bit absolute value
|
||||||
bpl slide_step_positive1
|
bpl slide_step_positive
|
||||||
eor #$ff
|
|
||||||
|
|
||||||
slide_step_positive1:
|
eor #$ff
|
||||||
sta note_a+NOTE_TONE_SLIDE_STEP_H,X
|
sta note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
dey
|
lda note_a+NOTE_TONE_SLIDE_STEP_L,X
|
||||||
lda (PATTERN_L),Y ; load byte, set as slide_step low
|
|
||||||
plp
|
|
||||||
bpl slide_step_positive2
|
|
||||||
eor #$ff
|
eor #$ff
|
||||||
adc #$0 ;+carry set by earlier CMP
|
adc #$0 ;+carry set by earlier CMP
|
||||||
|
|
||||||
slide_step_positive2:
|
|
||||||
sta note_a+NOTE_TONE_SLIDE_STEP_L,X
|
sta note_a+NOTE_TONE_SLIDE_STEP_L,X
|
||||||
bcc skip_step_inc1
|
bcc skip_step_inc1
|
||||||
inc note_a+NOTE_TONE_SLIDE_STEP_H,X
|
inc note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
skip_step_inc1:
|
skip_step_inc1:
|
||||||
|
|
||||||
|
slide_step_positive:
|
||||||
|
|
||||||
iny ; moved here as it messed with flags
|
iny ; moved here as it messed with flags
|
||||||
iny
|
|
||||||
|
|
||||||
|
|
||||||
; a->tone_delta=GetNoteFreq(a->note,pt3)-
|
; a->tone_delta=GetNoteFreq(a->note,pt3)-
|
||||||
@ -1484,18 +1497,18 @@ skip_step_inc1:
|
|||||||
lda note_a+NOTE_NOTE,X
|
lda note_a+NOTE_NOTE,X
|
||||||
jsr GetNoteFreq
|
jsr GetNoteFreq
|
||||||
lda freq_l
|
lda freq_l
|
||||||
sta temp_word_l
|
sta note_a+NOTE_TONE_DELTA_L,X
|
||||||
lda freq_h
|
lda freq_h
|
||||||
sta temp_word_h
|
sta note_a+NOTE_TONE_DELTA_H,X
|
||||||
|
|
||||||
lda prev_note
|
lda prev_note
|
||||||
jsr GetNoteFreq
|
jsr GetNoteFreq
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda temp_word_l
|
lda note_a+NOTE_TONE_DELTA_L,X
|
||||||
sbc freq_l
|
sbc freq_l
|
||||||
sta note_a+NOTE_TONE_DELTA_L,X
|
sta note_a+NOTE_TONE_DELTA_L,X
|
||||||
lda temp_word_h
|
lda note_a+NOTE_TONE_DELTA_H,X
|
||||||
sbc freq_h
|
sbc freq_h
|
||||||
sta note_a+NOTE_TONE_DELTA_H,X
|
sta note_a+NOTE_TONE_DELTA_H,X
|
||||||
|
|
||||||
@ -1531,13 +1544,15 @@ weird_version:
|
|||||||
|
|
||||||
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
eor #$ff
|
eor #$ff
|
||||||
|
sta note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
|
lda note_a+NOTE_TONE_SLIDE_STEP_L,X
|
||||||
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #$1
|
adc #$1
|
||||||
sta note_a+NOTE_TONE_SLIDE_STEP_L,X
|
sta note_a+NOTE_TONE_SLIDE_STEP_L,X
|
||||||
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
bcc skip_step_inc2
|
||||||
eor #$ff
|
inc note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
adc #$0
|
skip_step_inc2:
|
||||||
sta note_a+NOTE_TONE_SLIDE_STEP_H,X
|
|
||||||
|
|
||||||
no_need:
|
no_need:
|
||||||
|
|
||||||
@ -1626,7 +1641,7 @@ effect_9:
|
|||||||
|
|
||||||
lda (PATTERN_L),Y ; load byte, set as speed
|
lda (PATTERN_L),Y ; load byte, set as speed
|
||||||
iny
|
iny
|
||||||
sta pt3_speed_smc+1
|
sta pt3_speed
|
||||||
|
|
||||||
no_effect:
|
no_effect:
|
||||||
|
|
||||||
@ -1850,8 +1865,7 @@ line_good:
|
|||||||
lda current_subframe ; 4
|
lda current_subframe ; 4
|
||||||
|
|
||||||
; if we hit pt3_speed, move to next
|
; if we hit pt3_speed, move to next
|
||||||
pt3_speed_smc:
|
eor pt3_speed ; 4
|
||||||
eor #0 ; 2
|
|
||||||
bne do_frame ; 2/3
|
bne do_frame ; 2/3
|
||||||
|
|
||||||
next_line:
|
next_line:
|
||||||
@ -1892,8 +1906,10 @@ do_frame:
|
|||||||
ldx #(NOTE_STRUCT_SIZE*2) ; Note C ; 2
|
ldx #(NOTE_STRUCT_SIZE*2) ; Note C ; 2
|
||||||
jsr calculate_note ; 6+?
|
jsr calculate_note ; 6+?
|
||||||
|
|
||||||
convert_177_smc1:
|
; FIXME: make this self-modifying?
|
||||||
sec ; 2
|
|
||||||
|
lda convert_177 ; 4
|
||||||
|
cmp #1 ; 2
|
||||||
|
|
||||||
; Load up the Frequency Registers
|
; Load up the Frequency Registers
|
||||||
|
|
||||||
@ -1938,8 +1954,8 @@ convert_177_smc1:
|
|||||||
|
|
||||||
no_scale_a:
|
no_scale_a:
|
||||||
|
|
||||||
convert_177_smc2:
|
lda convert_177 ; 4
|
||||||
sec ; 2
|
cmp #1 ; 2
|
||||||
|
|
||||||
lda note_b+NOTE_TONE_L ; Note B Period L ; 4
|
lda note_b+NOTE_TONE_L ; Note B Period L ; 4
|
||||||
sta AY_REGISTERS+2 ; into R2 ; 3
|
sta AY_REGISTERS+2 ; into R2 ; 3
|
||||||
@ -1980,8 +1996,8 @@ convert_177_smc2:
|
|||||||
|
|
||||||
no_scale_b:
|
no_scale_b:
|
||||||
|
|
||||||
convert_177_smc3:
|
lda convert_177 ; 4
|
||||||
sec ; 2
|
cmp #1 ; 2
|
||||||
|
|
||||||
lda note_c+NOTE_TONE_L ; Note C Period L ; 4
|
lda note_c+NOTE_TONE_L ; Note C Period L ; 4
|
||||||
sta AY_REGISTERS+4 ; into R4 ; 3
|
sta AY_REGISTERS+4 ; into R4 ; 3
|
||||||
@ -2030,9 +2046,8 @@ no_scale_c:
|
|||||||
and #$1f ; 2
|
and #$1f ; 2
|
||||||
sta AY_REGISTERS+6 ; 3
|
sta AY_REGISTERS+6 ; 3
|
||||||
|
|
||||||
convert_177_smc4:
|
ldx convert_177 ; 3
|
||||||
sec ; 2
|
beq no_scale_n ; 2/3
|
||||||
bcc no_scale_n ; 2/3
|
|
||||||
|
|
||||||
; Convert from 1.77MHz to 1MHz by multiplying by 9/16
|
; Convert from 1.77MHz to 1MHz by multiplying by 9/16
|
||||||
|
|
||||||
@ -2042,7 +2057,8 @@ convert_177_smc4:
|
|||||||
asl ; 2
|
asl ; 2
|
||||||
|
|
||||||
; add in original to get 9
|
; add in original to get 9
|
||||||
adc AY_REGISTERS+6 ; 3
|
clc ; 2
|
||||||
|
adc temp_word_l ; 4
|
||||||
|
|
||||||
; divide by 16 to get proper value
|
; divide by 16 to get proper value
|
||||||
ror ; 2
|
ror ; 2
|
||||||
@ -2076,26 +2092,25 @@ no_scale_n:
|
|||||||
clc ; 2
|
clc ; 2
|
||||||
lda pt3_envelope_period_l ; 4
|
lda pt3_envelope_period_l ; 4
|
||||||
adc pt3_envelope_add ; 4
|
adc pt3_envelope_add ; 4
|
||||||
tay ; 2
|
sta temp_word_l ; 4
|
||||||
lda pt3_envelope_period_h ; 4
|
lda pt3_envelope_period_h ; 4
|
||||||
adc #0 ; 2
|
adc #0 ; 2
|
||||||
sta temp_word_h ; 4
|
sta temp_word_h ; 4
|
||||||
|
|
||||||
clc ; 2
|
clc ; 2
|
||||||
tya ; 2
|
lda pt3_envelope_slide_l ; 4
|
||||||
adc pt3_envelope_slide_l ; 4
|
adc temp_word_l ; 4
|
||||||
sta AY_REGISTERS+11 ; 3
|
sta AY_REGISTERS+11 ; 3
|
||||||
lda temp_word_h ; 4
|
lda temp_word_h ; 4
|
||||||
adc pt3_envelope_slide_h ; 4
|
adc pt3_envelope_slide_h ; 4
|
||||||
|
sta temp_word_h ; 4
|
||||||
sta AY_REGISTERS+12 ; 3
|
sta AY_REGISTERS+12 ; 3
|
||||||
|
|
||||||
convert_177_smc5:
|
lda convert_177 ; 4
|
||||||
sec
|
beq no_scale_e ; 2/3
|
||||||
bcc no_scale_e ; 2/3
|
|
||||||
|
|
||||||
; Convert from 1.77MHz to 1MHz by multiplying by 9/16
|
; Convert from 1.77MHz to 1MHz by multiplying by 9/16
|
||||||
|
|
||||||
tay ; 2
|
|
||||||
; first multiply by 8
|
; first multiply by 8
|
||||||
lda AY_REGISTERS+11 ; 3
|
lda AY_REGISTERS+11 ; 3
|
||||||
asl ; 2
|
asl ; 2
|
||||||
@ -2109,7 +2124,7 @@ convert_177_smc5:
|
|||||||
clc ; 2
|
clc ; 2
|
||||||
adc AY_REGISTERS+11 ; 3
|
adc AY_REGISTERS+11 ; 3
|
||||||
sta AY_REGISTERS+11 ; 3
|
sta AY_REGISTERS+11 ; 3
|
||||||
tya ; 2
|
lda temp_word_h ; 4
|
||||||
adc AY_REGISTERS+12 ; 3
|
adc AY_REGISTERS+12 ; 3
|
||||||
|
|
||||||
; divide by 16 to get proper value
|
; divide by 16 to get proper value
|
||||||
@ -2175,7 +2190,7 @@ done_do_frame:
|
|||||||
; FIXME: self modify code
|
; FIXME: self modify code
|
||||||
GetNoteFreq:
|
GetNoteFreq:
|
||||||
|
|
||||||
sty TEMP ; 3
|
sty ysave ; 4
|
||||||
|
|
||||||
tay ; 2
|
tay ; 2
|
||||||
lda PT3_LOC+PT3_HEADER_FREQUENCY ; 4
|
lda PT3_LOC+PT3_HEADER_FREQUENCY ; 4
|
||||||
@ -2187,7 +2202,7 @@ GetNoteFreq:
|
|||||||
lda PT3NoteTable_ST_low,Y ; 4+
|
lda PT3NoteTable_ST_low,Y ; 4+
|
||||||
sta freq_l ; 4
|
sta freq_l ; 4
|
||||||
|
|
||||||
ldy TEMP ;
|
ldy ysave ; 4
|
||||||
rts ; 6
|
rts ; 6
|
||||||
;===========
|
;===========
|
||||||
; 40
|
; 40
|
||||||
@ -2199,7 +2214,7 @@ freq_table_2:
|
|||||||
lda PT3NoteTable_ASM_34_35_low,Y ; 4+
|
lda PT3NoteTable_ASM_34_35_low,Y ; 4+
|
||||||
sta freq_l ; 4
|
sta freq_l ; 4
|
||||||
|
|
||||||
ldy TEMP ; 3
|
ldy ysave ; 4
|
||||||
rts ; 6
|
rts ; 6
|
||||||
;===========
|
;===========
|
||||||
; 41
|
; 41
|
||||||
|
@ -422,8 +422,7 @@ no_uppercase:
|
|||||||
; update the MHz indicator with current state
|
; update the MHz indicator with current state
|
||||||
|
|
||||||
ldx #'0'+$80
|
ldx #'0'+$80
|
||||||
lda convert_177_smc1
|
lda convert_177
|
||||||
cmp #$18
|
|
||||||
beq done_MHz
|
beq done_MHz
|
||||||
|
|
||||||
ldx #'7'+$80
|
ldx #'7'+$80
|
||||||
@ -507,7 +506,7 @@ fc_pattern_good:
|
|||||||
fc_line_good:
|
fc_line_good:
|
||||||
inc current_subframe ; subframe++
|
inc current_subframe ; subframe++
|
||||||
lda current_subframe
|
lda current_subframe
|
||||||
eor pt3_speed_smc+1 ; if we hit pt3_speed, move to next
|
eor pt3_speed ; if we hit pt3_speed, move to next
|
||||||
bne fc_do_frame
|
bne fc_do_frame
|
||||||
|
|
||||||
fc_next_line:
|
fc_next_line:
|
||||||
|
@ -237,6 +237,3 @@ Test_PT3VolumeTable_35:
|
|||||||
.byte $0,$1,$2,$3,$4,$5,$6,$7,$7,$8,$9,$A,$B,$C,$D,$E
|
.byte $0,$1,$2,$3,$4,$5,$6,$7,$7,$8,$9,$A,$B,$C,$D,$E
|
||||||
.byte $0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$A,$B,$C,$D,$E,$F
|
.byte $0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$A,$B,$C,$D,$E,$F
|
||||||
|
|
||||||
;=============
|
|
||||||
; dummy var
|
|
||||||
pt3_loop_smc:
|
|
||||||
|
@ -467,8 +467,5 @@ exit_interrupt:
|
|||||||
rts ; return from interrupt ; 6
|
rts ; return from interrupt ; 6
|
||||||
|
|
||||||
|
|
||||||
;============
|
|
||||||
; dummy var
|
|
||||||
|
|
||||||
pt3_loop_smc:
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user