164 lines
3.3 KiB
NASM
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
|
|
*/ |