pt3: fix issue with freq sliding

This commit is contained in:
Vince Weaver
2019-05-14 01:02:41 -04:00
parent 325074678a
commit e475e43218

View File

@@ -533,7 +533,6 @@ note_not_negative:
note_not_too_high: note_not_too_high:
; w = GetNoteFreq(j,pt3->frequency_table); ; w = GetNoteFreq(j,pt3->frequency_table);
jsr GetNoteFreq jsr GetNoteFreq
@@ -601,16 +600,14 @@ check1:
eor #$80 eor #$80
sc_loser1: sc_loser1:
bmi slide_to_note ; then A (signed) < NUM (signed) and BMI will branch bmi slide_to_note ; then A (signed) < NUM (signed) and BMI will branch
beq slide_to_note
; lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes ; equals case
; cmp note_a+NOTE_TONE_DELTA_H,X lda note_a+NOTE_TONE_SLIDING_L,X
; bcc slide_to_note ; if NUM1H < NUM2H then NUM1 < NUM2 cmp note_a+NOTE_TONE_DELTA_L,X
; bne check2 ; if NUM1H <> NUM2H then NUM1 > NUM2 (so NUM1 >= NUM2) bne check2
; lda note_a+NOTE_TONE_SLIDING_L,X ; compare low bytes lda note_a+NOTE_TONE_SLIDING_H,X
; cmp note_a+NOTE_TONE_DELTA_L,X cmp note_a+NOTE_TONE_DELTA_H,X
; bcc slide_to_note beq slide_to_note
; beq slide_to_note
check2: check2:
lda note_a+NOTE_TONE_SLIDE_STEP_H,X lda note_a+NOTE_TONE_SLIDE_STEP_H,X
@@ -628,18 +625,10 @@ check2:
sc_loser2: sc_loser2:
bmi no_tone_sliding ; then A (signed) < NUM (signed) and BMI will branch bmi no_tone_sliding ; then A (signed) < NUM (signed) and BMI will branch
; lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes
; cmp note_a+NOTE_TONE_DELTA_H,X
; bcc no_tone_sliding ; if NUM1H < NUM2H then NUM1 < NUM2
; bne slide_to_note ; if NUM1H <> NUM2H then NUM1 > NUM2 (so NUM1 >= NUM2)
; lda note_a+NOTE_TONE_SLIDING_L,X ; compare low bytes
; cmp note_a+NOTE_TONE_DELTA_L,X
; bcc no_tone_sliding ; if NUM1L < NUM2L then NUM1 < NUM2
slide_to_note: slide_to_note:
; a->note = a->slide_to_note;
lda note_a+NOTE_SLIDE_TO_NOTE,X lda note_a+NOTE_SLIDE_TO_NOTE,X
sta note_a+NOTE_NOTE,X ; a->note = a->slide_to_note; sta note_a+NOTE_NOTE,X
lda #0 lda #0
sta note_a+NOTE_TONE_SLIDE_COUNT,X sta note_a+NOTE_TONE_SLIDE_COUNT,X
sta note_a+NOTE_TONE_SLIDING_L,X sta note_a+NOTE_TONE_SLIDING_L,X
@@ -1380,7 +1369,6 @@ effect_2_small: ; FIXME: make smaller
sta note_a+NOTE_TONE_SLIDE_STEP_L,X 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
iny
sta note_a+NOTE_TONE_SLIDE_STEP_H,X sta note_a+NOTE_TONE_SLIDE_STEP_H,X
; 16-bit absolute value ; 16-bit absolute value
@@ -1399,6 +1387,9 @@ effect_2_small: ; FIXME: make smaller
slide_step_positive: slide_step_positive:
iny ; moved here as it messed with flags
; a->tone_delta=GetNoteFreq(a->note,pt3)- ; a->tone_delta=GetNoteFreq(a->note,pt3)-
; GetNoteFreq(prev_note,pt3); ; GetNoteFreq(prev_note,pt3);