;****************************************************************************
; InitFmReg
; Sets up all YM2612 registers that need to be set up.
;----------------------------------------------------------------------------
; breaks ... all
;----------------------------------------------------------------------------
; to-do maybe? see if it can be optimized
;****************************************************************************
InitFmReg:
ld hl, FmInitList ; Pointer to list of register values
ld b, 4 ; Number of registers to set up
InitFmRegLoop:
ld a, (hl) ; Read register number
ld (ix+0), a ; Write it
inc hl
push hl ; Wait a bit
pop hl
ld a, (hl) ; Read register value
ld (ix+1), a ; Write it
inc hl
push hl ; Wait a bit
pop hl
push hl
pop hl
djnz InitFmRegLoop ; Onto next register
ret ; End of subroutine
;----------------------------------------------------------------------------
FmInitList:
db YMREG_TIMERA_HI, TIMERA_DEFAULT>>2 ; Timer A rate (~10650Hz)
db YMREG_TIMERA_LO, TIMERA_DEFAULT&3 ; " " "
db YMREG_TIMERB, TIMERB_DEFAULT ; Timer B rate (~120Hz)
db YMREG_MODE, YMACK_TIMERAB ; Make the timers run