GBA BIOS: Fix ArcTan2 sign in HLE BIOS (fixes #689)

This commit is contained in:
Vicki Pfau 2017-04-20 17:59:02 -07:00
parent c9d411a762
commit f4abdd6c4c
2 changed files with 4 additions and 3 deletions

View File

@ -39,6 +39,7 @@ Bugfixes:
- FFmpeg: Fix overflow and general issues with audio encoding - FFmpeg: Fix overflow and general issues with audio encoding
- Qt: Fix crash when changing audio settings after a game is closed - Qt: Fix crash when changing audio settings after a game is closed
- GBA BIOS: Fix ArcTan sign in HLE BIOS - GBA BIOS: Fix ArcTan sign in HLE BIOS
- GBA BIOS: Fix ArcTan2 sign in HLE BIOS
Misc: Misc:
- SDL: Remove scancode key input - SDL: Remove scancode key input
- GBA Video: Clean up unused timers - GBA Video: Clean up unused timers

View File

@ -283,7 +283,7 @@ static int16_t _ArcTan(int32_t i) {
return (i * b) >> 16; return (i * b) >> 16;
} }
static int16_t _ArcTan2(int16_t x, int16_t y) { static int16_t _ArcTan2(int32_t x, int32_t y) {
if (!y) { if (!y) {
if (x >= 0) { if (x >= 0) {
return 0; return 0;
@ -299,7 +299,7 @@ static int16_t _ArcTan2(int16_t x, int16_t y) {
if (y >= 0) { if (y >= 0) {
if (x >= 0) { if (x >= 0) {
if (x >= y) { if (x >= y) {
return _ArcTan((y << 14)/ x); return _ArcTan((y << 14) / x);
} }
} else if (-x >= y) { } else if (-x >= y) {
return _ArcTan((y << 14) / x) + 0x8000; return _ArcTan((y << 14) / x) + 0x8000;
@ -359,7 +359,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
cpu->gprs[0] = _ArcTan(cpu->gprs[0]); cpu->gprs[0] = _ArcTan(cpu->gprs[0]);
break; break;
case 0xA: case 0xA:
cpu->gprs[0] = (uint16_t) _ArcTan2(cpu->gprs[0], cpu->gprs[1]); cpu->gprs[0] = _ArcTan2(cpu->gprs[0], cpu->gprs[1]);
break; break;
case 0xB: case 0xB:
case 0xC: case 0xC: