; master library - BGM ; ; Description: ; 効果音を出力する ; ; Function/Procedures: ; int bgm_sound(int num); ; ; Parameters: ; num 効果音番号 ; ; Returns: ; BGM_COMPLETE 正常終了 ; BGM_NO_MUSIC 無効な効果音番号 ; ; Binding Target: ; Microsoft-C / Turbo-C / Turbo Pascal ; ; Running Target: ; PC-9801V ; ; Requiring Resources: ; CPU: V30 ; ; Notes: ; ; ; Assembly Language Note: ; ; ; Compiler/Assembler: ; TASM 3.0 ; OPTASM 1.6 ; ; Author: ; femy(淀 文武) : オリジナル・C言語版 ; steelman(千野 裕司) : アセンブリ言語版 ; ; Revision History: ; 93/12/19 Initial: b_sound.asm / master.lib 0.22 <- bgmlibs.lib 1.12 func BGM_SOUND mov BX,SP push SI num = (RETSIZE+0)*2 mov SI,SS:[BX+num] ;効果音番号チェック cmp SI,1 jl short @@ILLEGAL cmp SI,glb.snum jle short @@OK @@ILLEGAL: mov AX,BGM_NO_MUSIC pop SI ret 2 @@OK: cmp glb.sound,ON jne short @@NOSOUND nopcall _BGM_BELL_ORG mov glb.scnt,SI ;esound[glb.scnt - 1].sptr = esound[glb.scnt - 1].sbuf; mov BX,SI shl BX,3 mov AX,offset esound-8 add BX,AX mov AX,word ptr [BX].sbuf+2 mov word ptr [BX].sptr+2,AX ; mov AX,word ptr [BX].sbuf ; mov word ptr [BX].sptr,AX mov word ptr [BX].sptr,0 ;sbufのoffsetは0のはず mov glb.effect,ON @@NOSOUND: xor AX,AX ;AX = BGM_COMPLETE pop SI ret 2 endfunc