Diablo Music fix for PCSX Rearmed. (optional hack)
authorgameblabla <gameblabla@openmailbox.org>
Thu, 7 Mar 2019 19:47:17 +0000 (20:47 +0100)
committergameblabla <gameblabla@openmailbox.org>
Thu, 7 Mar 2019 19:54:58 +0000 (20:54 +0100)
Let's also allow it to be changed from the menu.
Set to off by default as it could cause issues in some other games.

frontend/main.c
frontend/menu.c
maemo/main.c
plugins/dfsound/registers.c
plugins/dfsound/spu_config.h

index a824fdc..43a5548 100644 (file)
@@ -138,6 +138,7 @@ void emu_set_default_config(void)
        pl_rearmed_cbs.gpu_peopsgl.iTexGarbageCollection = 1;
 
        spu_config.iUseReverb = 1;
        pl_rearmed_cbs.gpu_peopsgl.iTexGarbageCollection = 1;
 
        spu_config.iUseReverb = 1;
+       spu_config.idiablofix = 0;
        spu_config.iUseInterpolation = 1;
        spu_config.iXAPitch = 0;
        spu_config.iVolume = 768;
        spu_config.iUseInterpolation = 1;
        spu_config.iXAPitch = 0;
        spu_config.iVolume = 768;
index cf9382a..0b3f553 100644 (file)
@@ -443,6 +443,7 @@ static const struct {
        CE_INTVAL_P(gpu_peopsgl.iTexGarbageCollection),
        CE_INTVAL_P(gpu_peopsgl.dwActFixes),
        CE_INTVAL(spu_config.iUseReverb),
        CE_INTVAL_P(gpu_peopsgl.iTexGarbageCollection),
        CE_INTVAL_P(gpu_peopsgl.dwActFixes),
        CE_INTVAL(spu_config.iUseReverb),
+       CE_INTVAL(spu_config.idiablofix),
        CE_INTVAL(spu_config.iXAPitch),
        CE_INTVAL(spu_config.iUseInterpolation),
        CE_INTVAL(spu_config.iTempo),
        CE_INTVAL(spu_config.iXAPitch),
        CE_INTVAL(spu_config.iUseInterpolation),
        CE_INTVAL(spu_config.iTempo),
@@ -1454,6 +1455,7 @@ static menu_entry e_menu_plugin_spu[] =
        mee_range_h   ("Volume boost",              0, volume_boost, -5, 30, h_spu_volboost),
        mee_onoff     ("Reverb",                    0, spu_config.iUseReverb, 1),
        mee_enum      ("Interpolation",             0, spu_config.iUseInterpolation, men_spu_interp),
        mee_range_h   ("Volume boost",              0, volume_boost, -5, 30, h_spu_volboost),
        mee_onoff     ("Reverb",                    0, spu_config.iUseReverb, 1),
        mee_enum      ("Interpolation",             0, spu_config.iUseInterpolation, men_spu_interp),
+       mee_onoff     ("Diablo Music fix",          0, spu_config.idiablofix, 1),
        mee_onoff     ("Adjust XA pitch",           0, spu_config.iXAPitch, 1),
        mee_onoff_h   ("Adjust tempo",              0, spu_config.iTempo, 1, h_spu_tempo),
        mee_end,
        mee_onoff     ("Adjust XA pitch",           0, spu_config.iXAPitch, 1),
        mee_onoff_h   ("Adjust tempo",              0, spu_config.iTempo, 1, h_spu_tempo),
        mee_end,
index 85db400..c382c51 100644 (file)
@@ -197,7 +197,7 @@ int main(int argc, char **argv)
        strcpy(Config.Bios, "HLE");
        spu_config.iUseReverb = 1;
        spu_config.iUseInterpolation = 1;
        strcpy(Config.Bios, "HLE");
        spu_config.iUseReverb = 1;
        spu_config.iUseInterpolation = 1;
-
+       spu_config.idiablofix = 0;
        in_type1 = PSE_PAD_TYPE_STANDARD;
        in_type2 = PSE_PAD_TYPE_STANDARD;
 
        in_type1 = PSE_PAD_TYPE_STANDARD;
        in_type2 = PSE_PAD_TYPE_STANDARD;
 
index 91bcaf8..bb64658 100644 (file)
@@ -352,7 +352,7 @@ static void SoundOn(int start,int end,unsigned short val)
    if((val&1) && regAreaGet(ch,6))                     // mmm... start has to be set before key on !?!\r
     {\r
      spu.s_chan[ch].pCurr=spu.spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned\r
    if((val&1) && regAreaGet(ch,6))                     // mmm... start has to be set before key on !?!\r
     {\r
      spu.s_chan[ch].pCurr=spu.spuMemC+((regAreaGet(ch,6)&~1)<<3); // must be block aligned\r
-     spu.s_chan[ch].pLoop=spu.spuMemC+((regAreaGet(ch,14)&~1)<<3);\r
+     if (spu_config.idiablofix == 0) spu.s_chan[ch].pLoop=spu.spuMemC+((regAreaGet(ch,14)&~1)<<3);\r
      spu.dwNewChannel|=(1<<ch);\r
     }\r
   }\r
      spu.dwNewChannel|=(1<<ch);\r
     }\r
   }\r
index 3e88a2c..6b46bf3 100644 (file)
@@ -7,6 +7,7 @@ typedef struct
  int        iUseReverb;
  int        iUseInterpolation;
  int        iTempo;
  int        iUseReverb;
  int        iUseInterpolation;
  int        iTempo;
+ int        idiablofix;
  int        iUseThread;
  int        iUseFixedUpdates;  // output fixed number of samples/frame
 
  int        iUseThread;
  int        iUseFixedUpdates;  // output fixed number of samples/frame