mirror of
https://github.com/dborth/snes9xgx.git
synced 2025-01-12 03:09:07 +01:00
Snes9x - Fix dvision routine on SA-1 returns the wrong reminder (and quotient) on negative dividends (#1050)
This commit is contained in:
parent
c74bfa27a0
commit
7fd6bf7f85
@ -563,8 +563,9 @@ void S9xSetSA1 (uint8 byte, uint32 address)
|
||||
{
|
||||
int16 dividend = (int16) SA1.op1;
|
||||
uint16 divisor = (uint16) SA1.op2;
|
||||
uint16 remainder = (dividend >= 0) ? dividend % divisor : (dividend % divisor) + divisor;
|
||||
uint16 quotient = (dividend - remainder) / divisor;
|
||||
uint32 dividend_ext = dividend + (uint32)divisor * 65536;
|
||||
uint16 remainder = dividend_ext % divisor;
|
||||
uint16 quotient = dividend_ext / divisor;
|
||||
SA1.sum = (remainder << 16) | quotient;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user