mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-04-10 19:15:14 +00:00
- Added a C fallback for inline assembly code when the compiler is not MSVC.
This commit is contained in:
parent
cbf28944a5
commit
357536ea5a
|
@ -1001,14 +1001,22 @@ void SCSP_w32(unsigned int addr,unsigned int val)
|
||||||
addr&=0x1f;
|
addr&=0x1f;
|
||||||
DebugLog("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
|
DebugLog("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
|
||||||
//printf("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
|
//printf("Slot %02X Reg %02X write dword %08X\n",slot,addr,val);
|
||||||
|
#ifdef _MSC_VER // MS VisualC++
|
||||||
_asm rol val,16
|
_asm rol val,16
|
||||||
|
#else
|
||||||
|
val = (val>>16)|(val<<16);
|
||||||
|
#endif
|
||||||
*((unsigned int *) (SCSP->Slots[slot].datab+(addr))) = val;
|
*((unsigned int *) (SCSP->Slots[slot].datab+(addr))) = val;
|
||||||
SCSP_UpdateSlotReg(slot,addr&0x1f);
|
SCSP_UpdateSlotReg(slot,addr&0x1f);
|
||||||
SCSP_UpdateSlotReg(slot,(addr&0x1f)+2);
|
SCSP_UpdateSlotReg(slot,(addr&0x1f)+2);
|
||||||
}
|
}
|
||||||
else if(addr<0x600)
|
else if(addr<0x600)
|
||||||
{
|
{
|
||||||
|
#ifdef _MSC_VER // MS VisualC++
|
||||||
_asm rol val,16
|
_asm rol val,16
|
||||||
|
#else
|
||||||
|
val = (val>>16)|(val<<16);
|
||||||
|
#endif
|
||||||
*((unsigned int *) (SCSP->datab+((addr&0xff)))) = val;
|
*((unsigned int *) (SCSP->datab+((addr&0xff)))) = val;
|
||||||
SCSP_UpdateReg(addr&0xff);
|
SCSP_UpdateReg(addr&0xff);
|
||||||
SCSP_UpdateReg((addr&0xff)+2);
|
SCSP_UpdateReg((addr&0xff)+2);
|
||||||
|
@ -1019,7 +1027,11 @@ void SCSP_w32(unsigned int addr,unsigned int val)
|
||||||
{
|
{
|
||||||
#ifdef USEDSP
|
#ifdef USEDSP
|
||||||
//DSP
|
//DSP
|
||||||
|
#ifdef _MSC_VER // MS VisualC++
|
||||||
_asm rol val,16
|
_asm rol val,16
|
||||||
|
#else
|
||||||
|
val = (val>>16)|(val<<16);
|
||||||
|
#endif
|
||||||
if(addr<0x780) //COEF
|
if(addr<0x780) //COEF
|
||||||
*((unsigned int *) (SCSP->DSP.COEF+(addr-0x700)/2))=val;
|
*((unsigned int *) (SCSP->DSP.COEF+(addr-0x700)/2))=val;
|
||||||
else if(addr<0x800)
|
else if(addr<0x800)
|
||||||
|
|
Loading…
Reference in a new issue