Merge pull request #292 from pcercuei/dfsound-big-endian
authornotaz <notasas@gmail.com>
Sun, 9 Jul 2023 15:57:54 +0000 (18:57 +0300)
committerGitHub <noreply@github.com>
Sun, 9 Jul 2023 15:57:54 +0000 (18:57 +0300)
dfsound: Fix issues on big-endian systems

1  2 
plugins/dfsound/registers.c

@@@ -22,6 -22,7 +22,7 @@@
  #include "externals.h"\r
  #include "registers.h"\r
  #include "spu_config.h"\r
+ #include "spu.h"\r
  \r
  static void SoundOn(int start,int end,unsigned short val);\r
  static void SoundOff(int start,int end,unsigned short val);\r
@@@ -127,7 -128,7 +128,7 @@@ void CALLBACK SPUwriteRegister(unsigne
        break;\r
      //-------------------------------------------------//\r
      case H_SPUdata:\r
-       *(unsigned short *)(spu.spuMemC + spu.spuAddr) = val;\r
+       *(unsigned short *)(spu.spuMemC + spu.spuAddr) = HTOLE16(val);\r
        spu.spuAddr += 2;\r
        spu.spuAddr &= 0x7fffe;\r
        break;\r
        goto rvbd;\r
      //-------------------------------------------------//\r
      case H_SPUirqAddr:\r
 +      //if (val & 1)\r
 +      //  log_unhandled("w irq with lsb: %08lx %04x\n", reg, val);\r
        spu.pSpuIrq=spu.spuMemC+(((unsigned long) val<<3)&~0xf);\r
        goto upd_irq;\r
      //-------------------------------------------------//\r
@@@ -336,7 -335,7 +337,7 @@@ unsigned short CALLBACK SPUreadRegister
  \r
      case H_SPUdata:\r
       {\r
-       unsigned short s = *(unsigned short *)(spu.spuMemC + spu.spuAddr);\r
+       unsigned short s = LE16TOH(*(unsigned short *)(spu.spuMemC + spu.spuAddr));\r
        spu.spuAddr += 2;\r
        spu.spuAddr &= 0x7fffe;\r
        return s;\r
@@@ -506,7 -505,7 +507,7 @@@ static void SetPitch(int ch,unsigned sh
   spu.s_chan[ch].iRawPitch = NP;\r
   spu.s_chan[ch].sinc = NP << 4;\r
   spu.s_chan[ch].sinc_inv = 0;\r
 - spu.SB[ch * SB_SIZE + 32] = 1; // -> freq change in simple interpolation mode: set flag\r
 + spu.s_chan[ch].bNewPitch = 1;\r
  \r
   // don't mess spu.dwChannelsAudible as adsr runs independently\r
  }\r