Sprinter-Core/src/bios/rom/SETUP/startup_sound.asm

164 lines
3.3 KiB
NASM

; CODE BY €«¥ªá ­¤à -=TmK deMarche=-
; play frame
; use: af,hl,de,bc 251
STARTUP_SOUND: LD HL,.BYTE_POS
LD A,(HL)
LD C,SP_SND.AY
;
AND A
JR NZ,.no_init
;
LD DE,7*256 + %0011'1011
LD B,high SP_SND.AY.CTRL
OUT (C),D
LD B,high SP_SND.AY.DATA
OUT (C),E
;
.no_init: CP .volDataSize
JR C,.play
;-- mus off
.mute: XOR A
LD E,A
.offLp: CALL .set_regs
CP 14
JR NZ,.offLp
;
LD A,7
DEC E
CALL .set_regs
RET
;
.play: ;
;--- set tone
LD HL,(.WORD_TONE)
;A=0
LD A,4 ;REG C
.playToneLp: LD B,high SP_SND.AY.CTRL
OUT (C),A
LD B,high SP_SND.AY.DATA + 1
OUTI
INC A
CP 6
JR NZ,.playToneLp
;
LD (.WORD_TONE),HL
;--- set volume
.playVol: LD HL,(.WORD_VOL)
LD A,10
LD E,(HL)
INC HL
.playVolLp: CALL .set_regs
;
LD (.WORD_VOL),HL
LD HL,.BYTE_POS
INC (HL)
RET
; ;
.set_regs: LD B,high SP_SND.AY.CTRL
OUT (C),A
LD B,high SP_SND.AY.DATA
OUT (C),E
INC A
RET
;-----------------------------------------------------------------------
.BYTE_POS: DB 0
.WORD_VOL: DW .volData
.WORD_TONE: DW .toneData
;-----------------------------------------------------------------------
.toneData: DW #022, #044, #088, #110, #220, #440
DW #880, #440, #220, #110, #088, #044
DW #022, #044, #088, #110, #220, #440
DW #880, #440, #220, #110, #088, #044
DW #022
.volData: DB #02, #04, #06, #08, #0A, #0C
DB #0E, #0D, #0C, #0B, #0A, #09
DB #08, #07, #06, #05, #04, #03
DB #02, #06, #08, #0A, #0C, #0E
DB #0F
.volDataSize EQU $ - .volData
.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND
/*
; CODE BY €«¥ªá ­¤à -=TmK deMarche=-
; play frame
; use: af,hl,de,bc 251
STARTUP_SOUND: LD HL,.BYTE_POS
LD A,(HL)
LD C,SP_SND.AY
;
AND A
JR NZ,.no_init
;
LD DE,7*256 + %0011'1011
LD B,high SP_SND.AY.CTRL
OUT (C),D
LD B,high SP_SND.AY.DATA
OUT (C),E
;
.no_init: CP .volDataSize
JR C,.play
;-- mus off
.mute: XOR A
LD E,A
.offLp: CALL .set_regs
CP 14
JR NZ,.offLp
;
LD A,7
DEC E
CALL .set_regs
RET
;
.play: ;
;--- set tone
LD HL,(.WORD_TONE)
;A=0
LD A,4 ;REG C
.playToneLp: LD B,high SP_SND.AY.CTRL
OUT (C),A
LD B,high SP_SND.AY.DATA + 1
OUTI
INC A
CP 6
JR NZ,.playToneLp
;
LD (.WORD_TONE),HL
;--- set volume
.playVol: LD HL,(.WORD_VOL)
LD A,10
LD E,(HL)
INC HL
.playVolLp: CALL .set_regs
;
LD (.WORD_VOL),HL
LD HL,.BYTE_POS
INC (HL)
RET
; ;
.set_regs: LD B,high SP_SND.AY.CTRL
OUT (C),A
LD B,high SP_SND.AY.DATA
OUT (C),E
INC A
RET
;-----------------------------------------------------------------------
.BYTE_POS: DB 0
.WORD_VOL: DW .volData
.WORD_TONE: DW .toneData
;-----------------------------------------------------------------------
.toneData: DW #022, #044, #088, #110, #220, #440
DW #880, #440, #220, #110, #088, #044
DW #022, #044, #088, #110, #220, #440
DW #880, #440, #220, #110, #088, #044
DW #022
.volData: DB #02, #04, #06, #08, #0A, #0C
DB #0E, #0D, #0C, #0B, #0A, #09
DB #08, #07, #06, #05, #04, #03
DB #02, #06, #08, #0A, #0C, #0E
DB #0F
.volDataSize EQU $ - .volData
.codeEnd: DISPLAY "StartUp Sound size: ",/A,.codeEnd - STARTUP_SOUND
*/