Browse Source

Update audio.inc

Commentry
pull/134/head
b1ackmai1er 6 years ago
parent
commit
ae76ba82e1
  1. 33
      Source/HBIOS/audio.inc

33
Source/HBIOS/audio.inc

@ -41,25 +41,25 @@ AUD_NOTE:
AUDTRACE_CR
AUDTRACE_DE
AUDTRACE_CR
;
PUSH DE ; ON ENTRY HL IS THE NOTE TO PLAY
LD DE, 48 ; AND DE IS THE START OF NOTE TABLE
CALL DIV16 ; LOAD DE WITH NOTE TABLE SIZE
; AND CALCULATE OCTAVE COUNT IN BC
push de
LD DE, 48
CALL DIV16
; BC IS OCTAVE COUNT
; HL is NOTE WITIN OCTAVE
ADD HL, HL
pop de
ADD HL, DE
ADD HL, HL ; HL IS THE REMAINDER FROM ABOVE DIVISION (0-47) AND THE NOTE
POP DE ; TO PLAY IN THE OCTAVE. ADD IT TO THE START OF THE NOTE TABLE
ADD HL, DE ; TO POINT TO THE PERIOD FOR THE NOTE WE WANT TO PLAY.
LD A, (HL) ; RETRIEVE PERIOD COUNT FROM SN7NOTETBL
INC HL
LD H, (HL)
LD A, (HL) ; HL POINT TO CURRENT PERIOD COUNT WE WANT TO PLAY
INC HL ; SO LOAD PERIOD COUNT FROM NOTE TABLE INTO HL
LD H, (HL) ; SO WE CAN UPDATE IT FOR THE REQUIRED OCTAVE
LD L, A
INC C
AUD_NOTE1:
DEC C
JR Z, AUD_NOTE2
AUD_NOTE1: ; DIVIDE THE PERIOD
DEC C ; BY TWO
JR Z, AUD_NOTE2 ; FOR EACH OCTAVE
SRL H
RR L
JR AUD_NOTE1
@ -69,7 +69,8 @@ AUD_NOTE2:
OR H
RET NZ ; RETURN THE CALCULATED PERIOD
LD H, $FF ; OTHERWISE RETURN -1 PERIOD (ERROR)
LD L, $FF
CPL
LD H, A ; OTHERWISE RETURN -1 PERIOD (ERROR)
LD L, A
RET
#ENDIF

Loading…
Cancel
Save