mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-13 12:56:30 +00:00
pt3: more cleanups
This commit is contained in:
parent
535c873214
commit
13d9cd95b3
@ -536,6 +536,7 @@ note_not_too_high:
|
|||||||
|
|
||||||
lda note_a+NOTE_TONE_SLIDE_COUNT,X
|
lda note_a+NOTE_TONE_SLIDE_COUNT,X
|
||||||
bmi no_tone_sliding ; if (a->tone_slide_count > 0) {
|
bmi no_tone_sliding ; if (a->tone_slide_count > 0) {
|
||||||
|
beq no_tone_sliding
|
||||||
|
|
||||||
dec note_a+NOTE_TONE_SLIDE_COUNT,X ; a->tone_slide_count--;
|
dec note_a+NOTE_TONE_SLIDE_COUNT,X ; a->tone_slide_count--;
|
||||||
bne no_tone_sliding ; if (a->tone_slide_count==0) {
|
bne no_tone_sliding ; if (a->tone_slide_count==0) {
|
||||||
@ -563,6 +564,8 @@ check1:
|
|||||||
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
bpl check2 ; if ( ((a->tone_slide_step < 0) &&
|
bpl check2 ; if ( ((a->tone_slide_step < 0) &&
|
||||||
|
|
||||||
|
; (a->tone_sliding <= a->tone_delta) ||
|
||||||
|
|
||||||
lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes
|
lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes
|
||||||
cmp note_a+NOTE_TONE_DELTA_H,X
|
cmp note_a+NOTE_TONE_DELTA_H,X
|
||||||
bcc slide_to_note ; if NUM1H < NUM2H then NUM1 < NUM2
|
bcc slide_to_note ; if NUM1H < NUM2H then NUM1 < NUM2
|
||||||
@ -576,6 +579,7 @@ check2:
|
|||||||
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
lda note_a+NOTE_TONE_SLIDE_STEP_H,X
|
||||||
bmi no_tone_sliding ; ((a->tone_slide_step >= 0) &&
|
bmi no_tone_sliding ; ((a->tone_slide_step >= 0) &&
|
||||||
|
|
||||||
|
; (a->tone_sliding >= a->tone_delta)
|
||||||
lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes
|
lda note_a+NOTE_TONE_SLIDING_H,X ; compare high bytes
|
||||||
cmp note_a+NOTE_TONE_DELTA_H,X
|
cmp note_a+NOTE_TONE_DELTA_H,X
|
||||||
bcc no_tone_sliding ; if NUM1H < NUM2H then NUM1 < NUM2
|
bcc no_tone_sliding ; if NUM1H < NUM2H then NUM1 < NUM2
|
||||||
@ -594,22 +598,34 @@ slide_to_note:
|
|||||||
|
|
||||||
|
|
||||||
no_tone_sliding:
|
no_tone_sliding:
|
||||||
;====================
|
|
||||||
; set amplitude
|
;=========================
|
||||||
|
; Calculate the amplitude
|
||||||
|
;=========================
|
||||||
|
|
||||||
|
; get base value from the sample (bottom 4 bits of sample_b1)
|
||||||
|
|
||||||
lda sample_b1 ; a->amplitude= (b1 & 0xf);
|
lda sample_b1 ; a->amplitude= (b1 & 0xf);
|
||||||
and #$f
|
and #$f
|
||||||
sta note_a+NOTE_AMPLITUDE,X
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
|
|
||||||
|
;========================================
|
||||||
|
; if b1 top bit is set, it means sliding
|
||||||
|
|
||||||
; adjust amplitude sliding
|
; adjust amplitude sliding
|
||||||
|
|
||||||
lda sample_b0 ; if ((b0 & 0x80)!=0) {
|
lda sample_b0 ; if ((b0 & 0x80)!=0) {
|
||||||
and #$80
|
and #$80
|
||||||
beq done_amp_sliding
|
beq done_amp_sliding
|
||||||
|
|
||||||
|
;================================
|
||||||
|
; if top bits 0b11 then slide up
|
||||||
|
; if top buts 0b10 then slide down
|
||||||
|
|
||||||
lda sample_b0 ; if ((b0&0x40)!=0) {
|
lda sample_b0 ; if ((b0&0x40)!=0) {
|
||||||
and #$40
|
and #$40
|
||||||
beq amp_slide_down
|
beq 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
|
||||||
@ -622,6 +638,7 @@ 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++;
|
||||||
jmp done_amp_sliding
|
jmp 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
|
||||||
@ -657,15 +674,19 @@ check_amp_hi:
|
|||||||
lda #15
|
lda #15
|
||||||
write_clamp_amplitude:
|
write_clamp_amplitude:
|
||||||
sta note_a+NOTE_AMPLITUDE,X
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
|
|
||||||
done_clamp_amplitude:
|
done_clamp_amplitude:
|
||||||
|
|
||||||
|
;=======================
|
||||||
|
; get actual output from table
|
||||||
|
|
||||||
|
; if (PlParams.PT3.PT3_Version <= 4)
|
||||||
|
|
||||||
lda pt3_version
|
lda pt3_version
|
||||||
cmp #5
|
cmp #5
|
||||||
bcs other_table ; bge
|
bcs other_table ; bge
|
||||||
|
|
||||||
; if (PlParams.PT3.PT3_Version <= 4)
|
; a->amplitude = PT3VolumeTable_33_34[a->volume][a->amplitude];
|
||||||
; a->amplitude = PT3VolumeTable_33_34[a->volume][a->amplitude];
|
|
||||||
; }
|
|
||||||
|
|
||||||
lda note_a+NOTE_VOLUME,X
|
lda note_a+NOTE_VOLUME,X
|
||||||
asl
|
asl
|
||||||
@ -696,13 +717,24 @@ other_table:
|
|||||||
; }
|
; }
|
||||||
done_table:
|
done_table:
|
||||||
|
|
||||||
lda sample_b0 ; if (((b0 & 0x1) == 0) && ( a->envelope_enabled)) {
|
|
||||||
|
check_envelope_enable:
|
||||||
|
; Bottom bit of b0 indicates our sample has envelope
|
||||||
|
; Also make sure envelopes are enabled
|
||||||
|
|
||||||
|
|
||||||
|
; if (((b0 & 0x1) == 0) && ( a->envelope_enabled)) {
|
||||||
|
lda sample_b0
|
||||||
and #$1
|
and #$1
|
||||||
bne envelope_slide
|
bne envelope_slide
|
||||||
|
|
||||||
lda note_a+NOTE_ENVELOPE_ENABLED,X
|
lda note_a+NOTE_ENVELOPE_ENABLED,X
|
||||||
beq envelope_slide
|
beq envelope_slide
|
||||||
|
|
||||||
|
|
||||||
|
; Bit 4 of the per-channel AY-3-8910 amplitude specifies
|
||||||
|
; envelope enabled
|
||||||
|
|
||||||
lda note_a+NOTE_AMPLITUDE,X ; a->amplitude |= 16;
|
lda note_a+NOTE_AMPLITUDE,X ; a->amplitude |= 16;
|
||||||
ora #$10
|
ora #$10
|
||||||
sta note_a+NOTE_AMPLITUDE,X
|
sta note_a+NOTE_AMPLITUDE,X
|
||||||
|
Loading…
Reference in New Issue
Block a user