mirror of https://github.com/nmlgc/ReC98.git
68 lines
1.1 KiB
NASM
68 lines
1.1 KiB
NASM
; void snd_se_reset(void)
|
|
func snd_se_reset
|
|
mov _snd_se_frame, 0
|
|
mov _snd_se_playing, -1
|
|
ret
|
|
endfunc
|
|
|
|
|
|
; void DEFCONV snd_se_play(unsigned char se)
|
|
func SND_SE_PLAY
|
|
mov bx, sp
|
|
mov dx, ss:[bx+4]
|
|
cmp _snd_se_mode, SND_SE_OFF
|
|
jz short @@ret
|
|
cmp _snd_se_playing, -1
|
|
jnz short @@priority?
|
|
mov _snd_se_playing, dl
|
|
ret 2
|
|
|
|
@@priority?:
|
|
mov bl, _snd_se_playing
|
|
xor bh, bh
|
|
mov al, _snd_se_priorities[bx]
|
|
mov bx, dx
|
|
cmp al, _snd_se_priorities[bx]
|
|
ja short @@ret
|
|
mov _snd_se_playing, dl
|
|
mov _snd_se_frame, 0
|
|
|
|
@@ret:
|
|
ret 2
|
|
endfunc
|
|
|
|
|
|
; void snd_se_update(void)
|
|
func snd_se_update
|
|
cmp _snd_se_mode, SND_SE_OFF
|
|
jz short @@ret
|
|
cmp _snd_se_playing, -1
|
|
jz short @@ret
|
|
cmp _snd_se_frame, 0
|
|
jnz short @@unlock?
|
|
mov al, _snd_se_playing
|
|
cmp _snd_se_mode, SND_SE_BEEP
|
|
jz short @@beep
|
|
mov ah, PMD_SE_PLAY
|
|
int 60h
|
|
jmp short @@unlock?
|
|
|
|
@@beep:
|
|
xor ah, ah
|
|
push ax
|
|
call bgm_sound
|
|
|
|
@@unlock?:
|
|
inc _snd_se_frame
|
|
mov bl, _snd_se_playing
|
|
xor bh, bh
|
|
mov al, _snd_se_priority_frames[bx]
|
|
cmp al, _snd_se_frame
|
|
jnb short @@ret
|
|
mov _snd_se_frame, 0
|
|
mov _snd_se_playing, -1
|
|
|
|
@@ret:
|
|
ret
|
|
endfunc
|