C4: Do the sign extend manually.

This commit is contained in:
Brandon Wright 2019-02-12 22:27:36 -06:00
parent bd96a8ddc7
commit 35eb5e550b

View File

@ -1021,7 +1021,8 @@ void S9xSetC4 (uint8 byte, uint16 Address)
if (Memory.C4RAM[0x1f4d] != 0x0e) if (Memory.C4RAM[0x1f4d] != 0x0e)
printf("$7f4d=%02x, expected 0e for command 54 %02x\n", Memory.C4RAM[0x1f4d], Memory.C4RAM[0x1f4d]); printf("$7f4d=%02x, expected 0e for command 54 %02x\n", Memory.C4RAM[0x1f4d], Memory.C4RAM[0x1f4d]);
#endif #endif
int64 a = SAR((int64) READ_3WORD(Memory.C4RAM + 0x1f80) << 40, 40); int64 a = (int64)READ_3WORD(Memory.C4RAM + 0x1f80);
a |= 0xffffffffff000000 * ((a >> 23) & 1);
//printf("%08X%08X\n", (uint32) (a>>32), (uint32) (a&0xFFFFFFFF)); //printf("%08X%08X\n", (uint32) (a>>32), (uint32) (a&0xFFFFFFFF));
a *= a; a *= a;
//printf("%08X%08X\n", (uint32) (a>>32), (uint32) (a&0xFFFFFFFF)); //printf("%08X%08X\n", (uint32) (a>>32), (uint32) (a&0xFFFFFFFF));