Diff for /np2/sound/beepc.c between versions 1.5 and 1.8

version 1.5, 2003/10/20 12:08:01 version 1.8, 2004/03/19 00:30:01
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "i286.h"  #include        "cpucore.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "sound.h"  #include        "sound.h"
Line 28  void beep_changeclock(void) { Line 28  void beep_changeclock(void) {
         UINT32  hz;          UINT32  hz;
         UINT    rate;          UINT    rate;
   
         hz = pc.realclock / 25;          hz = pccore.realclock / 25;
         rate = beepcfg.rate / 25;          rate = beepcfg.rate / 25;
         beepcfg.samplebase = (1 << 16) * rate / hz;          beepcfg.samplebase = (1 << 16) * rate / hz;
 }  }
Line 47  void beep_hzset(UINT16 cnt) { Line 47  void beep_hzset(UINT16 cnt) {
         sound_sync();          sound_sync();
         beep.hz = 0;          beep.hz = 0;
         if ((cnt & 0xff80) && (beepcfg.rate)) {          if ((cnt & 0xff80) && (beepcfg.rate)) {
                 hz = 65536.0 / 4.0 * pc.baseclock / beepcfg.rate / cnt;                  hz = 65536.0 / 4.0 * pccore.baseclock / beepcfg.rate / cnt;
                 if (hz < 0x8000) {                  if (hz < 0x8000) {
                         beep.hz = (UINT16)hz;                          beep.hz = (UINT16)hz;
                         return;                          return;
Line 60  void beep_modeset(void) { Line 60  void beep_modeset(void) {
   
         BYTE    newmode;          BYTE    newmode;
   
         newmode = (pit.mode[1] >> 2) & 3;          newmode = (pit.ch[1].ctrl >> 2) & 3;
         beep.puchi = beepcfg.puchibase;          beep.puchi = beepcfg.puchibase;
         if (beep.mode != newmode) {          if (beep.mode != newmode) {
                 sound_sync();                  sound_sync();
Line 81  static void beep_eventset(void) { Line 81  static void beep_eventset(void) {
         if (beep.enable != enable) {          if (beep.enable != enable) {
                 beep.enable = enable;                  beep.enable = enable;
                 if (beep.events < BEEPEVENT_MAX) {                  if (beep.events < BEEPEVENT_MAX) {
                         clock = I286_CLOCK + I286_BASECLOCK - I286_REMCLOCK;                          clock = CPU_CLOCK + CPU_BASECLOCK - CPU_REMCLOCK;
                         evt = beep.event + beep.events;                          evt = beep.event + beep.events;
                         beep.events++;                          beep.events++;
                         evt->clock = (clock - beep.clock) * beepcfg.samplebase;                          evt->clock = (clock - beep.clock) * beepcfg.samplebase;
Line 143  void beep_oneventset(void) { Line 143  void beep_oneventset(void) {
         }          }
 }  }
   
   
 // ----  
   
 #if 0  
 LABEL void __fastcall beep_update(void *buf, int buflength) {  
   
                 __asm {  
                                 cmp             edx, 0  
                                 je              beep_end  
   
                                 cmp             beep.mode, 1  
                                 jc              beep_onshot  
                                 jne             beep_end  
   
                                 cmp             beep.buz, 0  
                                 je              beep_puchichk  
                                 mov             ax, beep.hz  
                                 test    ax, ax  
                                 je              beep_puchichk  
   
                                 pushad  
                                 mov             edi, beeptbl.vol  
                                 test    edi, edi  
                                 je              beep_mkend  
                                 shl             edi, 8  
   
 beep_lp1:               mov             esi, 4  
 beep_lp2:               add             beep.cnt, ax  
                                 js              short beep_mina  
                                         add             [ecx], edi  
                                         add             [ecx+4], edi  
                                 jmp             short beep_lped  
 beep_mina:                      sub             [ecx], edi  
                                         sub             [ecx+4], edi  
 beep_lped:              dec             esi  
                                 jne             beep_lp2  
                                 add             ecx, 8  
                                 dec             edx  
                                 jne             beep_lp1  
                                 mov             beep.puchi, edx  
   
 beep_mkend:             popad  
 beep_end:               ret  
   
                                 align   4  
 beep_puchichk:  cmp             beep.puchi, 0  
                                 jne             short beep_puchiout  
                                 ret  
                                 align   4  
 beep_puchiout:  pushad  
                                 mov             edi, beeptbl.vol  
                                 shl             edi, 10  
 beep_puchilp:   add             [ecx], edi  
                                 add             [ecx+4], edi  
                                 add             ecx, 8  
                                 dec             beep.puchi  
                                 je              beep_puchiend  
                                 dec             edx  
                                 jne             beep_puchilp  
 beep_puchiend:  popad  
                                 ret  
   
                                 align   4  
 beep_onshot:    cmp             beepevent.events, 0  
                                 je              beep_end  
                                 cmp             pc.sampleclock, 0  
                                 je              beep_end  
   
                                 pushad  
                                 mov             esi, offset beepevent.event  
                                 movzx   edi, np2cfg.BEEP_VOL  
                                 test    edi, edi  
                                 je              beep1s_mkend  
                                 shl             edi, 11  
   
 beep1shot_lp:   mov             ebp, pc.sampleclock  
                                 xor             eax, eax  
   
 beep1shot_lp1:  mov             ebx, [esi]BEEP1EVENT.clock  
                                 cmp             ebp, ebx  
                                 jc              beep1s_envof  
   
                                 cmp             beepevent.lastenable, 0  
                                 je              beep1s_rmnchk  
                                 add             eax, ebx  
 beep1s_rmnchk:  mov             edx, [esi]BEEP1EVENT.enable  
                                 mov             beepevent.lastenable, edx  
                                 add             esi, type BEEP1EVENT  
                                 dec             beepevent.events  
                                 je              beep_nonevents  
                                 sub             ebp, ebx  
                                 jne             beep1shot_lp1  
                                 jmp             short beep1s_calcvol  
   
 beep1s_envof:   sub             [esi]BEEP1EVENT.clock, ebp  
                                 cmp             beepevent.lastenable, 0  
                                 je              beep1s_calcvol  
                                 add             eax, ebp  
 beep1s_calcvol: mul             edi  
                                 div             pc.sampleclock  
                                 add             [ecx], eax  
                                 add             [ecx+4], eax  
                                 add             ecx, 8  
                                 dec             dword ptr [esp + 20]                    ; pushad¤Îedx  
                                 jne             beep1shot_lp  
                                 jmp             beep1s_mkend  
   
 beep_nonevents: cmp             beepevent.lastenable, 0  
                                 je              beep1s_calc2  
                                 sub             ebp, ebx  
 ;                               shr             ebp, 1  
                                 add             eax, ebp  
 beep1s_calc2:   mul             edi  
                                 div             pc.sampleclock  
                                 add             [ecx], eax  
                                 add             [ecx+4], eax  
                                 add             ecx, 8  
                                 dec             dword ptr [esp + 20]                    ; pushad¤Îedx  
                                 je              beep1s_mkend  
                                 cmp             beepevent.lastenable, 0  
                                 je              beep1s_mkend  
 beep1shot_lp2:  add             [ecx], edi  
                                 add             [ecx+4], edi  
                                 add             ecx, 8  
                                 dec             dword ptr [esp + 20]                    ; pushad¤Îedx  
                                 jne             beep1shot_lp2  
   
 beep1s_mkend:  
                                 popad  
                                 ret  
                 }  
 }  
 #endif  
   

Removed from v.1.5  
changed lines
  Added in v.1.8


RetroPC.NET-CVS <cvs@retropc.net>