Permalink
Browse files

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

  • Loading branch information...
endrift committed Apr 21, 2017
1 parent e370915 commit 16023b2994b052aa5a75fe9721742cbc891f329c
Showing with 4 additions and 3 deletions.
  1. +1 −0 CHANGES
  2. +3 −3 src/gba/bios.c
View
@@ -20,6 +20,7 @@ Bugfixes:
- FFmpeg: Fix overflow and general issues with audio encoding
- Qt: Fix crash when changing audio settings after a game is closed
- GBA BIOS: Fix ArcTan sign in HLE BIOS
- GBA BIOS: Fix ArcTan2 sign in HLE BIOS
Misc:
- Qt: Improved HiDPI support
- Feature: Support ImageMagick 7
View
@@ -282,7 +282,7 @@ static int16_t _ArcTan(int32_t i) {
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 (x >= 0) {
return 0;
@@ -298,7 +298,7 @@ static int16_t _ArcTan2(int16_t x, int16_t y) {
if (y >= 0) {
if (x >= 0) {
if (x >= y) {
return _ArcTan((y << 14)/ x);
return _ArcTan((y << 14) / x);
}
} else if (-x >= y) {
return _ArcTan((y << 14) / x) + 0x8000;
@@ -358,7 +358,7 @@ void GBASwi16(struct ARMCore* cpu, int immediate) {
cpu->gprs[0] = _ArcTan(cpu->gprs[0]);
break;
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;
case 0xB:
case 0xC:

0 comments on commit 16023b2

Please sign in to comment.