From 5382d193371c8db303d056b87b8ffd51316bf2e0 Mon Sep 17 00:00:00 2001 From: aliaspider Date: Wed, 29 Oct 2014 11:23:21 +0100 Subject: (PSP) build fix --- source/c4emu.c | 18 +++++++++--------- source/sar.h | 5 ++++- 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'source') diff --git a/source/c4emu.c b/source/c4emu.c index 0eb3237..ef37e9c 100644 --- a/source/c4emu.c +++ b/source/c4emu.c @@ -604,7 +604,7 @@ void S9xSetC4 (uint8 byte, uint16 Address) { int32 tmp=0x10000; if(READ_WORD(Memory.C4RAM+0x1f83)){ - tmp=SAR((tmp/READ_WORD(Memory.C4RAM+0x1f83))*READ_WORD(Memory.C4RAM+0x1f81), 8); + tmp=SAR32((tmp/READ_WORD(Memory.C4RAM+0x1f83))*READ_WORD(Memory.C4RAM+0x1f81), 8); } WRITE_WORD(Memory.C4RAM+0x1f80, (uint16)tmp); } @@ -621,18 +621,18 @@ void S9xSetC4 (uint8 byte, uint16 Address) case 0x10: // Polar to rectangluar { - int32 tmp=SAR((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4CosTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 16); + int32 tmp=SAR32((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4CosTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 16); WRITE_3WORD(Memory.C4RAM+0x1f86, tmp); - tmp=SAR((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4SinTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 16); - WRITE_3WORD(Memory.C4RAM+0x1f89, (tmp-SAR(tmp, 6))); + tmp=SAR32((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4SinTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 16); + WRITE_3WORD(Memory.C4RAM+0x1f89, (tmp-SAR32(tmp, 6))); } break; case 0x13: // Polar to rectangluar { - int32 tmp=SAR((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4CosTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 8); + int32 tmp=SAR32((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4CosTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 8); WRITE_3WORD(Memory.C4RAM+0x1f86, tmp); - tmp=SAR((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4SinTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 8); + tmp=SAR32((int32)READ_WORD(Memory.C4RAM+0x1f83)*C4SinTable[READ_WORD(Memory.C4RAM+0x1f80)&0x1ff]*2, 8); WRITE_3WORD(Memory.C4RAM+0x1f89, tmp); } break; @@ -664,10 +664,10 @@ void S9xSetC4 (uint8 byte, uint16 Address) { if(y>=0) { - left = SAR((int32)tan1*y, 16) - + left = SAR32((int32)tan1*y, 16) - READ_WORD(Memory.C4RAM+0x1f80) + READ_WORD(Memory.C4RAM+0x1f86); - right = SAR((int32)tan2*y, 16) - + right = SAR32((int32)tan2*y, 16) - READ_WORD(Memory.C4RAM+0x1f80) + READ_WORD(Memory.C4RAM+0x1f86) + READ_WORD(Memory.C4RAM+0x1f93); @@ -734,7 +734,7 @@ void S9xSetC4 (uint8 byte, uint16 Address) case 0x54: // Square { - int64 a=SAR((int64)READ_3WORD(Memory.C4RAM+0x1f80)<<40, 40); + int64 a=SAR64((int64)READ_3WORD(Memory.C4RAM+0x1f80)<<40, 40); // printf("%08X%08X\n", (uint32)(a>>32), (uint32)(a&0xFFFFFFFF)); a*=a; // printf("%08X%08X\n", (uint32)(a>>32), (uint32)(a&0xFFFFFFFF)); diff --git a/source/sar.h b/source/sar.h index 7f6e847..119c5b8 100644 --- a/source/sar.h +++ b/source/sar.h @@ -101,7 +101,10 @@ #endif #ifdef RIGHTSHIFT_IS_SAR -#define SAR(b, n) ((b)>>(n)) +#define SAR8(b, n) ((b)>>(n)) +#define SAR16(b, n) ((b)>>(n)) +#define SAR32(b, n) ((b)>>(n)) +#define SAR64(b, n) ((b)>>(n)) #else static inline int8 SAR8(const int8 b, const int n){ -- cgit v1.2.3