Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #include "std.h"
  2.  
  3. #include "emul.h"
  4. #include "vars.h"
  5. #include "gs.h"
  6. #include "gsz80.h"
  7. #include "vs1001.h"
  8.  
  9. #ifdef MOD_GS
  10.  
  11. unsigned gs_vfx[0x41];  // logarithmic + mixed with conf.sound.gs
  12. TGsLed gsleds[8];
  13.  
  14. void make_gs_volume(unsigned level)
  15. {
  16.    for (int i = 0; i <= 0x40; i++) {
  17.       //const double ln_0x40 = 4.15888308336;
  18.       //gs_vfx[i] = (unsigned)(conf.sound.gs*log((double)(i*level/0x3F+1))/ln_0x40);
  19.       gs_vfx[i] = unsigned(conf.sound.gs_vol*i*int(level)/(0x40*0x40));
  20.    }
  21. }
  22.  
  23. #if defined(MOD_GSZ80) || defined(MOD_GSBASS)
  24. //#include "snd_bass.cpp"
  25. #endif
  26.  
  27. #ifdef MOD_GSZ80
  28. //#include "gsz80.cpp"
  29. #endif
  30.  
  31. #ifdef MOD_GSBASS
  32. //#include "gshlbass.cpp"
  33. //#include "gshle.cpp"
  34. #endif
  35.  
  36. unsigned char in_gs(unsigned char port)
  37. {
  38.  
  39. #ifdef MOD_GSZ80
  40.    if (conf.gs_type == 1) return z80gs::in_gs(port);
  41. #endif
  42.  
  43. #ifdef MOD_GSBASS
  44.    if (conf.gs_type == 2) return gs.in(port);
  45. #endif
  46.  
  47.    return 0xFF;
  48. }
  49.  
  50. void out_gs(unsigned char port, unsigned char byte)
  51. {
  52. #ifdef MOD_GSZ80
  53.    if (conf.gs_type == 1) { z80gs::out_gs(port, byte); return; }
  54. #endif
  55.  
  56. #ifdef MOD_GSBASS
  57.    if (conf.gs_type == 2) { gs.out(port, byte); return; }
  58. #endif
  59. }
  60.  
  61. void reset_gs_sound()
  62. {
  63. #ifdef MOD_GSZ80
  64.    z80gs::sound.set_timings(z80gs::GSCPUFQ, conf.sound.fq);
  65. #endif
  66.  
  67. #ifdef MOD_GSBASS
  68.    gs.reset_sound();
  69. #endif
  70. }
  71.  
  72. void reset_gs()
  73. {
  74. #ifdef MOD_GSZ80
  75.    if (conf.gs_type == 1) { z80gs::reset(); return; }
  76. #endif
  77.  
  78. #ifdef MOD_GSBASS
  79.    if (conf.gs_type == 2) { gs.reset(); return; }
  80. #endif
  81. }
  82.  
  83. void apply_gs()
  84. {
  85. #ifdef MOD_GSZ80
  86.    if (conf.gs_type == 1) z80gs::apply_gs();
  87. #endif
  88.  
  89. #ifdef MOD_GSBASS
  90.    if (conf.gs_type == 2) gs.applyconfig();
  91. #endif
  92. }
  93.  
  94. void init_gs(bool Init)
  95. {
  96. #ifdef MOD_GS
  97.    if (conf.gs_type != 0)
  98.        BASS::Load();
  99. #endif
  100.  
  101.    if(Init)
  102.    {
  103.        reset_gs();
  104.    }
  105. }
  106.  
  107. void done_gs()
  108. {
  109. #ifdef MOD_GS
  110.    Vs1001.ShutDown();
  111.    if (conf.gs_type != 0)
  112.        BASS::Unload();
  113. #endif
  114. }
  115.  
  116. void init_gs_frame()
  117. {
  118. #ifdef MOD_GSZ80
  119.    if (conf.gs_type==1) z80gs::init_gs_frame();
  120. #endif
  121. }
  122.  
  123. void flush_gs_frame()
  124. {
  125. #ifdef MOD_GSZ80
  126.    if (conf.gs_type==1) { z80gs::flush_gs_frame(); return; }
  127. #endif
  128.  
  129. #ifdef MOD_GSBASS
  130.    if (conf.gs_type==2) { gs.flush_gs_frame(); return; }
  131. #endif
  132. }
  133.  
  134. #endif  // MOD_GS
  135.