From 11e1435689dc0e207e24b9dd38ca887c362b9c67 Mon Sep 17 00:00:00 2001 From: Alessio Rosiello Date: Sat, 4 Feb 2023 13:58:01 +0100 Subject: [PATCH] Fix #799 --- sa1.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sa1.cpp b/sa1.cpp index e56bf6ad..a6634e50 100644 --- a/sa1.cpp +++ b/sa1.cpp @@ -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; }