]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/dsp.cpp
Added logfile logging, ZIP file fishing
[virtualjaguar] / src / dsp.cpp
index f21fa692a65bf647000288776f52313f4bd2d400..604584ccae623021680f9506d817a1dc5c4cbcff 100644 (file)
@@ -4,11 +4,27 @@
 // Originally by David Raingeard
 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS)
 // Extensive cleanups/rewrites by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -------------------------------------------------------------
+// JLH  01/16/2010  Created this log ;-)
 //
 
-#include <SDL.h>       // Used only for SDL_GetTicks...
 #include "dsp.h"
 
+#include <SDL.h>                                                               // Used only for SDL_GetTicks...
+#include <stdlib.h>
+#include "gpu.h"
+#include "jagdasm.h"
+#include "jaguar.h"
+#include "jerry.h"
+#include "log.h"
+#include "m68k.h"
+//#include "memory.h"
+
 //#define DSP_DEBUG
 //#define DSP_DEBUG_IRQ
 //#define DSP_DEBUG_PL2
@@ -222,7 +238,7 @@ static void dsp_opcode_abs(void);
 static void dsp_opcode_add(void);
 static void dsp_opcode_addc(void);
 static void dsp_opcode_addq(void);
-static void dsp_opcode_addqmod(void);  
+static void dsp_opcode_addqmod(void);
 static void dsp_opcode_addqt(void);
 static void dsp_opcode_and(void);
 static void dsp_opcode_bclr(void);
@@ -243,7 +259,7 @@ static void dsp_opcode_load_r14_indexed(void);
 static void dsp_opcode_load_r14_ri(void);
 static void dsp_opcode_load_r15_indexed(void);
 static void dsp_opcode_load_r15_ri(void);
-static void dsp_opcode_mirror(void);   
+static void dsp_opcode_mirror(void);
 static void dsp_opcode_mmult(void);
 static void dsp_opcode_move(void);
 static void dsp_opcode_movei(void);
@@ -262,8 +278,8 @@ static void dsp_opcode_resmac(void);
 static void dsp_opcode_ror(void);
 static void dsp_opcode_rorq(void);
 static void dsp_opcode_xor(void);
-static void dsp_opcode_sat16s(void);   
-static void dsp_opcode_sat32s(void);   
+static void dsp_opcode_sat16s(void);
+static void dsp_opcode_sat32s(void);
 static void dsp_opcode_sh(void);
 static void dsp_opcode_sha(void);
 static void dsp_opcode_sharq(void);
@@ -279,25 +295,25 @@ static void dsp_opcode_store_r15_ri(void);
 static void dsp_opcode_sub(void);
 static void dsp_opcode_subc(void);
 static void dsp_opcode_subq(void);
-static void dsp_opcode_subqmod(void);  
+static void dsp_opcode_subqmod(void);
 static void dsp_opcode_subqt(void);
 
 uint8 dsp_opcode_cycles[64] =
 {
-       3,  3,  3,  3,  3,  3,  3,  3,  
        3,  3,  3,  3,  3,  3,  3,  3,
-       3,  3,  1,  3,  1, 18,  3,  3,  
        3,  3,  3,  3,  3,  3,  3,  3,
-       3,  3,  2,  2,  2,  2,  3,  4,  
+       3,  3,  1,  3,  1, 18,  3,  3,
+       3,  3,  3,  3,  3,  3,  3,  3,
+       3,  3,  2,  2,  2,  2,  3,  4,
        5,  4,  5,  6,  6,  1,  1,  1,
-       1,  2,  2,  2,  1,  1,  9,  3,  
+       1,  2,  2,  2,  1,  1,  9,  3,
        3,  1,  6,  6,  2,  2,  3,  3
 };//*/
 //Here's a QnD kludge...
 //This is wrong, wrong, WRONG, but it seems to work for the time being...
 //(That is, it fixes Flip Out which relies on GPU timing rather than semaphores. Bad developers! Bad!)
 //What's needed here is a way to take pipeline effects into account (including pipeline stalls!)...
-/*uint8 dsp_opcode_cycles[64] = 
+/*uint8 dsp_opcode_cycles[64] =
 {
        1,  1,  1,  1,  1,  1,  1,  1,
        1,  1,  1,  1,  1,  1,  1,  1,
@@ -310,7 +326,7 @@ uint8 dsp_opcode_cycles[64] =
 };//*/
 
 void (* dsp_opcode[64])() =
-{      
+{
        dsp_opcode_add,                                 dsp_opcode_addc,                                dsp_opcode_addq,                                dsp_opcode_addqt,
        dsp_opcode_sub,                                 dsp_opcode_subc,                                dsp_opcode_subq,                                dsp_opcode_subqt,
        dsp_opcode_neg,                                 dsp_opcode_and,                                 dsp_opcode_or,                                  dsp_opcode_xor,
@@ -331,8 +347,8 @@ void (* dsp_opcode[64])() =
 
 uint32 dsp_opcode_use[65];
 
-char * dsp_opcode_str[65]=
-{      
+const char * dsp_opcode_str[65]=
+{
        "add",                          "addc",                         "addq",                         "addqt",
        "sub",                          "subc",                         "subq",                         "subqt",
        "neg",                          "and",                          "or",                           "xor",
@@ -362,9 +378,9 @@ static uint32 dsp_pointer_to_matrix;
 static uint32 dsp_data_organization;
 uint32 dsp_control;
 static uint32 dsp_div_control;
-static uint8 dsp_flag_z, dsp_flag_n, dsp_flag_c;    
-static uint32 * dsp_reg, * dsp_alternate_reg;
-static uint32 * dsp_reg_bank_0, * dsp_reg_bank_1;
+static uint8 dsp_flag_z, dsp_flag_n, dsp_flag_c;
+static uint32 * dsp_reg = NULL, * dsp_alternate_reg = NULL;
+static uint32 dsp_reg_bank_0[32], dsp_reg_bank_1[32];
 
 static uint32 dsp_opcode_first_parameter;
 static uint32 dsp_opcode_second_parameter;
@@ -382,9 +398,9 @@ static uint32 dsp_opcode_second_parameter;
 #define CLR_ZN                         (dsp_flag_z = dsp_flag_n = 0)
 #define CLR_ZNC                                (dsp_flag_z = dsp_flag_n = dsp_flag_c = 0)
 #define SET_Z(r)                       (dsp_flag_z = ((r) == 0))
-#define SET_N(r)                       (dsp_flag_n = (((UINT32)(r) >> 31) & 0x01))
-#define SET_C_ADD(a,b)         (dsp_flag_c = ((UINT32)(b) > (UINT32)(~(a))))
-#define SET_C_SUB(a,b)         (dsp_flag_c = ((UINT32)(b) > (UINT32)(a)))
+#define SET_N(r)                       (dsp_flag_n = (((uint32)(r) >> 31) & 0x01))
+#define SET_C_ADD(a,b)         (dsp_flag_c = ((uint32)(b) > (uint32)(~(a))))
+#define SET_C_SUB(a,b)         (dsp_flag_c = ((uint32)(b) > (uint32)(a)))
 #define SET_ZN(r)                      SET_N(r); SET_Z(r)
 #define SET_ZNC_ADD(a,b,r)     SET_N(r); SET_Z(r); SET_C_ADD(a,b)
 #define SET_ZNC_SUB(a,b,r)     SET_N(r); SET_Z(r); SET_C_SUB(a,b)
@@ -392,7 +408,7 @@ static uint32 dsp_opcode_second_parameter;
 uint32 dsp_convert_zero[32] = { 32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 };
 uint8 * dsp_branch_condition_table = NULL;
 static uint16 * mirror_table = NULL;
-static uint8 * dsp_ram_8 = NULL;
+static uint8 dsp_ram_8[0x2000];
 
 #define BRANCH_CONDITION(x)            dsp_branch_condition_table[(x) + ((jaguar_flags & 7) << 5)]
 
@@ -422,7 +438,7 @@ void dsp_reset_stats(void)
                dsp_opcode_use[i] = 0;
 }
 
-void dsp_releaseTimeslice(void)
+void DSPReleaseTimeslice(void)
 {
 //This does absolutely nothing!!! !!! FIX !!!
        dsp_releaseTimeSlice_flag = 1;
@@ -432,7 +448,7 @@ void dsp_build_branch_condition_table(void)
 {
        // Allocate the mirror table
        if (!mirror_table)
-               mirror_table = (uint16 *)malloc(65536 * sizeof(mirror_table[0]));
+               mirror_table = (uint16 *)malloc(65536 * sizeof(uint16));
 
        // Fill in the mirror table
        if (mirror_table)
@@ -448,7 +464,7 @@ void dsp_build_branch_condition_table(void)
 
        if (!dsp_branch_condition_table)
        {
-               dsp_branch_condition_table = (uint8 *)malloc(32 * 8 * sizeof(dsp_branch_condition_table[0]));
+               dsp_branch_condition_table = (uint8 *)malloc(32 * 8 * sizeof(uint8));
 
                // Fill in the condition table
                if (dsp_branch_condition_table)
@@ -511,7 +527,7 @@ uint8 DSPReadByte(uint32 offset, uint32 who/*=UNKNOWN*/)
        }
 
        return JaguarReadByte(offset, who);
-} 
+}
 
 uint16 DSPReadWord(uint32 offset, uint32 who/*=UNKNOWN*/)
 {
@@ -536,12 +552,12 @@ uint16 DSPReadWord(uint32 offset, uint32 who/*=UNKNOWN*/)
                if (offset==0xF1B2C2) return(0x0000);
        }
 */
-       // pour permettre à wolfenstein 3d de tourner sans le dsp
+       // pour permettre  wolfenstein 3d de tourner sans le dsp
 /*     if ((offset==0xF1B0D0)||(offset==0xF1B0D2))
                return(0);
 */
 
-               // pour permettre à nba jam de tourner sans le dsp
+               // pour permettre  nba jam de tourner sans le dsp
 /*     if (jaguar_mainRom_crc32==0x4faddb18)
        {
                if (offset==0xf1b2c0) return(0);
@@ -650,7 +666,7 @@ void DSPWriteByte(uint32 offset, uint8 data, uint32 who/*=UNKNOWN*/)
        {
                uint32 reg = offset & 0x1C;
                int bytenum = offset & 0x03;
-               
+
                if ((reg >= 0x1C) && (reg <= 0x1F))
                        dsp_div_control = (dsp_div_control & (~(0xFF << (bytenum << 3)))) | (data << (bytenum << 3));
                else
@@ -658,7 +674,7 @@ void DSPWriteByte(uint32 offset, uint8 data, uint32 who/*=UNKNOWN*/)
 //This looks funky. !!! FIX !!!
                        uint32 old_data = DSPReadLong(offset&0xFFFFFFC, who);
                        bytenum = 3 - bytenum; // convention motorola !!!
-                       old_data = (old_data & (~(0xFF << (bytenum << 3)))) | (data << (bytenum << 3)); 
+                       old_data = (old_data & (~(0xFF << (bytenum << 3)))) | (data << (bytenum << 3));
                        DSPWriteLong(offset & 0xFFFFFFC, old_data, who);
                }
                return;
@@ -831,7 +847,7 @@ if (who != DSP)
 //!!!!!!!!
                        break;
                case 0x14:
-               {       
+               {
 //#ifdef DSP_DEBUG
 WriteLog("Write to DSP CTRL by %s: %08X\n", whoName[who], data);
 //#endif
@@ -848,7 +864,7 @@ WriteLog("Write to DSP CTRL by %s: %08X\n", whoName[who], data);
                                if (JERRYIRQEnabled(IRQ2_DSP))// && jaguar_interrupt_handler_is_valid(64))
                                {
                                        JERRYSetPendingIRQ(IRQ2_DSP);
-                                       dsp_releaseTimeslice();
+                                       DSPReleaseTimeslice();
                                        m68k_set_irq(7);                        // Set 68000 NMI...
                                }
                                data &= ~CPUINT;
@@ -860,7 +876,7 @@ WriteLog("Write to DSP CTRL by %s: %08X\n", whoName[who], data);
                                WriteLog("DSP: CPU -> DSP interrupt\n");
 #endif
                                m68k_end_timeslice();
-                               gpu_releaseTimeslice();
+                               GPUReleaseTimeslice();
                                DSPSetIRQLine(DSPIRQ_CPU, ASSERT_LINE);
                                data &= ~DSPINT0;
                        }
@@ -907,7 +923,7 @@ WriteLog("\n");
                                if (who == M68K)
                                        m68k_end_timeslice();
                                else if (who == GPU)
-                                       gpu_releaseTimeslice();
+                                       GPUReleaseTimeslice();
 
                                if (!wasRunning)
                                        FlushDSPPipeline();
@@ -969,7 +985,7 @@ void DSPHandleIRQs(void)
        if (!bits)                                                                              // Bail if nothing is enabled
                return;
 
-       int which = 0;                                                                  // Determine which interrupt 
+       int which = 0;                                                                  // Determine which interrupt
        if (bits & 0x01)
                which = 0;
        if (bits & 0x02)
@@ -1051,8 +1067,8 @@ ctrl2[4] = dsp_flags;
        WriteLog(" [PC will return to %08X, R31 = %08X]\n", dsp_pc - (pipeline[plPtrExec].opcode == 38 ? 6 : (pipeline[plPtrExec].opcode == PIPELINE_STALL ? 0 : 2)), dsp_reg[31]);
 #endif
 
-       // subqt  #4,r31                ; pre-decrement stack pointer 
-       // move   pc,r30                ; address of interrupted code 
+       // subqt  #4,r31                ; pre-decrement stack pointer
+       // move   pc,r30                ; address of interrupted code
        // store  r30,(r31)     ; store return address
        dsp_reg[31] -= 4;
 //CC only!
@@ -1083,8 +1099,8 @@ SET32(ram2, regs2[31] - 0xF1B000, dsp_pc - 2 - (pipeline[plPtrExec].opcode == 38
 #endif
 //!!!!!!!!
 
-       // movei  #service_address,r30  ; pointer to ISR entry 
-       // jump  (r30)                                  ; jump to ISR 
+       // movei  #service_address,r30  ; pointer to ISR entry
+       // jump  (r30)                                  ; jump to ISR
        // nop
        dsp_pc = dsp_reg[30] = DSP_WORK_RAM_BASE + (which * 0x10);
 //CC only!
@@ -1135,7 +1151,7 @@ DSPUpdateRegisterBanks();
        if (!bits)                                                                              // Bail if nothing is enabled
                return;
 
-       int which = 0;                                                                  // Determine which interrupt 
+       int which = 0;                                                                  // Determine which interrupt
        if (bits & 0x01)
                which = 0;
        if (bits & 0x02)
@@ -1164,8 +1180,8 @@ ctrl1[4] = dsp_flags;
        WriteLog(" [PC will return to %08X, R31 = %08X]\n", dsp_pc, dsp_reg[31]);
 #endif
 
-       // subqt  #4,r31                ; pre-decrement stack pointer 
-       // move   pc,r30                ; address of interrupted code 
+       // subqt  #4,r31                ; pre-decrement stack pointer
+       // move   pc,r30                ; address of interrupted code
        // store  r30,(r31)     ; store return address
        dsp_reg[31] -= 4;
 //CC only!
@@ -1180,8 +1196,8 @@ SET32(ram1, regs1[31] - 0xF1B000, dsp_pc - 2);
 #endif
 //!!!!!!!!
 
-       // movei  #service_address,r30  ; pointer to ISR entry 
-       // jump  (r30)                                  ; jump to ISR 
+       // movei  #service_address,r30  ; pointer to ISR entry
+       // jump  (r30)                                  ; jump to ISR
        // nop
        dsp_pc = dsp_reg[30] = DSP_WORK_RAM_BASE + (which * 0x10);
 //CC only!
@@ -1225,9 +1241,9 @@ DSPHandleIRQsNP();
 
 void DSPInit(void)
 {
-       memory_malloc_secure((void **)&dsp_ram_8, 0x2000, "DSP work RAM");
-       memory_malloc_secure((void **)&dsp_reg_bank_0, 32 * sizeof(int32), "DSP bank 0 regs");
-       memory_malloc_secure((void **)&dsp_reg_bank_1, 32 * sizeof(int32), "DSP bank 1 regs");
+//     memory_malloc_secure((void **)&dsp_ram_8, 0x2000, "DSP work RAM");
+//     memory_malloc_secure((void **)&dsp_reg_bank_0, 32 * sizeof(int32), "DSP bank 0 regs");
+//     memory_malloc_secure((void **)&dsp_reg_bank_1, 32 * sizeof(int32), "DSP bank 1 regs");
 
        dsp_build_branch_condition_table();
        DSPReset();
@@ -1304,9 +1320,9 @@ void DSPDone(void)
        WriteLog("DSP: Stopped at PC=%08X dsp_modulo=%08X (dsp %s running)\n", dsp_pc, dsp_modulo, (DSP_RUNNING ? "was" : "wasn't"));
        WriteLog("DSP: %sin interrupt handler\n", (dsp_flags & IMASK ? "" : "not "));
 
-       // get the active interrupt bits 
+       // get the active interrupt bits
        int bits = ((dsp_control >> 10) & 0x20) | ((dsp_control >> 6) & 0x1F);
-       // get the interrupt mask 
+       // get the interrupt mask
        int mask = ((dsp_flags >> 11) & 0x20) | ((dsp_flags >> 4) & 0x1F);
 
        WriteLog("DSP: pending=%08X enabled=%08X\n", bits, mask);
@@ -1346,9 +1362,14 @@ void DSPDone(void)
                        WriteLog("\t%s %i\n", dsp_opcode_str[i], dsp_opcode_use[i]);
        }//*/
 
-       memory_free(dsp_ram_8);
-       memory_free(dsp_reg_bank_0);
-       memory_free(dsp_reg_bank_1);
+//     memory_free(dsp_ram_8);
+//     memory_free(dsp_reg_bank_0);
+//     memory_free(dsp_reg_bank_1);
+       if (dsp_branch_condition_table)
+               free(dsp_branch_condition_table);
+
+       if (mirror_table)
+               free(mirror_table);
 }
 
 
@@ -1665,7 +1686,7 @@ if ((dsp_pc < 0xF1B000 || dsp_pc > 0xF1CFFE) && !tripwire)
 static void dsp_opcode_jump(void)
 {
 #ifdef DSP_DIS_JUMP
-char * condition[32] =
+const char * condition[32] =
 {      "T", "nz", "z", "???", "nc", "nc nz", "nc z", "???", "c", "c nz",
        "c z", "???", "???", "???", "???", "???", "???", "???", "???",
        "???", "nn", "nn nz", "nn z", "???", "n", "n nz", "n z", "???",
@@ -1700,7 +1721,7 @@ char * condition[32] =
 static void dsp_opcode_jr(void)
 {
 #ifdef DSP_DIS_JR
-char * condition[32] =
+const char * condition[32] =
 {      "T", "nz", "z", "???", "nc", "nc nz", "nc z", "???", "c", "c nz",
        "c z", "???", "???", "???", "???", "???", "???", "???", "???",
        "???", "nn", "nn nz", "nn z", "???", "n", "n nz", "n z", "???",
@@ -1739,7 +1760,7 @@ static void dsp_opcode_add(void)
        if (doDSPDis)
                WriteLog("%06X: ADD    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 res = RN + RM;
+       uint32 res = RN + RM;
        SET_ZNC_ADD(RN, RM, res);
        RN = res;
 #ifdef DSP_DIS_ADD
@@ -1754,8 +1775,8 @@ static void dsp_opcode_addc(void)
        if (doDSPDis)
                WriteLog("%06X: ADDC   R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 res = RN + RM + dsp_flag_c;
-       UINT32 carry = dsp_flag_c;
+       uint32 res = RN + RM + dsp_flag_c;
+       uint32 carry = dsp_flag_c;
 //     SET_ZNC_ADD(RN, RM, res); //???BUG??? Yes!
        SET_ZNC_ADD(RN + carry, RM, res);
 //     SET_ZNC_ADD(RN, RM + carry, res);
@@ -1772,8 +1793,8 @@ static void dsp_opcode_addq(void)
        if (doDSPDis)
                WriteLog("%06X: ADDQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 r1 = dsp_convert_zero[IMM_1];
-       UINT32 res = RN + r1;
+       uint32 r1 = dsp_convert_zero[IMM_1];
+       uint32 res = RN + r1;
        CLR_ZNC; SET_ZNC_ADD(RN, r1, res);
        RN = res;
 #ifdef DSP_DIS_ADDQ
@@ -1788,7 +1809,7 @@ static void dsp_opcode_sub(void)
        if (doDSPDis)
                WriteLog("%06X: SUB    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 res = RN - RM;
+       uint32 res = RN - RM;
        SET_ZNC_SUB(RN, RM, res);
        RN = res;
 #ifdef DSP_DIS_SUB
@@ -1803,8 +1824,8 @@ static void dsp_opcode_subc(void)
        if (doDSPDis)
                WriteLog("%06X: SUBC   R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 res = RN - RM - dsp_flag_c;
-       UINT32 borrow = dsp_flag_c;
+       uint32 res = RN - RM - dsp_flag_c;
+       uint32 borrow = dsp_flag_c;
        SET_ZNC_SUB(RN - borrow, RM, res);
        RN = res;
 #ifdef DSP_DIS_SUBC
@@ -1819,8 +1840,8 @@ static void dsp_opcode_subq(void)
        if (doDSPDis)
                WriteLog("%06X: SUBQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 r1 = dsp_convert_zero[IMM_1];
-       UINT32 res = RN - r1;
+       uint32 r1 = dsp_convert_zero[IMM_1];
+       uint32 res = RN - r1;
        SET_ZNC_SUB(RN, r1, res);
        RN = res;
 #ifdef DSP_DIS_SUBQ
@@ -1835,7 +1856,7 @@ static void dsp_opcode_cmp(void)
        if (doDSPDis)
                WriteLog("%06X: CMP    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 res = RN - RM;
+       uint32 res = RN - RM;
        SET_ZNC_SUB(RN, RM, res);
 #ifdef DSP_DIS_CMP
        if (doDSPDis)
@@ -1851,8 +1872,8 @@ static void dsp_opcode_cmpq(void)
        if (doDSPDis)
                WriteLog("%06X: CMPQ   #%d, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, sqtable[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 r1 = sqtable[IMM_1 & 0x1F]; // I like this better -> (INT8)(jaguar.op >> 2) >> 3;
-       UINT32 res = RN - r1;
+       uint32 r1 = sqtable[IMM_1 & 0x1F]; // I like this better -> (INT8)(jaguar.op >> 2) >> 3;
+       uint32 res = RN - r1;
        SET_ZNC_SUB(RN, r1, res);
 #ifdef DSP_DIS_CMPQ
        if (doDSPDis)
@@ -2201,7 +2222,7 @@ static void dsp_opcode_bclr(void)
        if (doDSPDis)
                WriteLog("%06X: BCLR   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 res = RN & ~(1 << IMM_1);
+       uint32 res = RN & ~(1 << IMM_1);
        RN = res;
        SET_ZN(res);
 #ifdef DSP_DIS_BCLR
@@ -2229,7 +2250,7 @@ static void dsp_opcode_bset(void)
        if (doDSPDis)
                WriteLog("%06X: BSET   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 res = RN | (1 << IMM_1);
+       uint32 res = RN | (1 << IMM_1);
        RN = res;
        SET_ZN(res);
 #ifdef DSP_DIS_BSET
@@ -2277,11 +2298,11 @@ static void dsp_opcode_imacn(void)
        if (doDSPDis)
                WriteLog("[NCZ:%u%u%u, DSP_ACC=%02X%08X]\n", dsp_flag_n, dsp_flag_c, dsp_flag_z, (uint8)(dsp_acc >> 32), (uint32)(dsp_acc & 0xFFFFFFFF));
 #endif
-} 
+}
 
 static void dsp_opcode_mtoi(void)
 {
-       RN = (((INT32)RM >> 8) & 0xFF800000) | (RM & 0x007FFFFF);
+       RN = (((int32)RM >> 8) & 0xFF800000) | (RM & 0x007FFFFF);
        SET_ZN(RN);
 }
 
@@ -2317,7 +2338,7 @@ static void dsp_opcode_mmult(void)
        if (!(dsp_matrix_control & 0x10))
        {
                for (int i = 0; i < count; i++)
-               { 
+               {
                        int16 a;
                        if (i&0x01)
                                a=(int16)((dsp_alternate_reg[dsp_opcode_first_parameter + (i>>1)]>>16)&0xffff);
@@ -2356,7 +2377,7 @@ static void dsp_opcode_abs(void)
 #endif
        uint32 _Rn = RN;
        uint32 res;
-       
+
        if (_Rn == 0x80000000)
                dsp_flag_n = 1;
        else
@@ -2419,7 +2440,7 @@ static void dsp_opcode_neg(void)
        if (doDSPDis)
                WriteLog("%06X: NEG    R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 res = -RN;
+       uint32 res = -RN;
        SET_ZNC_SUB(0, RN, res);
        RN = res;
 #ifdef DSP_DIS_NEG
@@ -2434,8 +2455,8 @@ static void dsp_opcode_shlq(void)
        if (doDSPDis)
                WriteLog("%06X: SHLQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, 32 - IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       INT32 r1 = 32 - IMM_1;
-       UINT32 res = RN << r1;
+       int32 r1 = 32 - IMM_1;
+       uint32 res = RN << r1;
        SET_ZN(res); dsp_flag_c = (RN >> 31) & 1;
        RN = res;
 #ifdef DSP_DIS_SHLQ
@@ -2450,8 +2471,8 @@ static void dsp_opcode_shrq(void)
        if (doDSPDis)
                WriteLog("%06X: SHRQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       INT32 r1 = dsp_convert_zero[IMM_1];
-       UINT32 res = RN >> r1;
+       int32 r1 = dsp_convert_zero[IMM_1];
+       uint32 res = RN >> r1;
        SET_ZN(res); dsp_flag_c = RN & 1;
        RN = res;
 #ifdef DSP_DIS_SHRQ
@@ -2466,8 +2487,8 @@ static void dsp_opcode_ror(void)
        if (doDSPDis)
                WriteLog("%06X: ROR    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", dsp_pc-2, IMM_1, IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_1, RM, IMM_2, RN);
 #endif
-       UINT32 r1 = RM & 0x1F;
-       UINT32 res = (RN >> r1) | (RN << (32 - r1));
+       uint32 r1 = RM & 0x1F;
+       uint32 res = (RN >> r1) | (RN << (32 - r1));
        SET_ZN(res); dsp_flag_c = (RN >> 31) & 1;
        RN = res;
 #ifdef DSP_DIS_ROR
@@ -2482,9 +2503,9 @@ static void dsp_opcode_rorq(void)
        if (doDSPDis)
                WriteLog("%06X: RORQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 r1 = dsp_convert_zero[IMM_1 & 0x1F];
-       UINT32 r2 = RN;
-       UINT32 res = (r2 >> r1) | (r2 << (32 - r1));
+       uint32 r1 = dsp_convert_zero[IMM_1 & 0x1F];
+       uint32 r2 = RN;
+       uint32 res = (r2 >> r1) | (r2 << (32 - r1));
        RN = res;
        SET_ZN(res); dsp_flag_c = (r2 >> 31) & 0x01;
 #ifdef DSP_DIS_RORQ
@@ -2530,7 +2551,7 @@ static void dsp_opcode_sharq(void)
        if (doDSPDis)
                WriteLog("%06X: SHARQ  #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN);
 #endif
-       UINT32 res = (INT32)RN >> dsp_convert_zero[IMM_1];
+       uint32 res = (int32)RN >> dsp_convert_zero[IMM_1];
        SET_ZN(res); dsp_flag_c = RN & 0x01;
        RN = res;
 #ifdef DSP_DIS_SHARQ
@@ -2576,9 +2597,9 @@ void dsp_opcode_addqmod(void)
        if (doDSPDis)
                WriteLog("%06X: ADDQMOD #%u, R%02u [NCZ:%u%u%u, R%02u=%08X, DSP_MOD=%08X] -> ", dsp_pc-2, dsp_convert_zero[IMM_1], IMM_2, dsp_flag_n, dsp_flag_c, dsp_flag_z, IMM_2, RN, dsp_modulo);
 #endif
-       UINT32 r1 = dsp_convert_zero[IMM_1];
-       UINT32 r2 = RN;
-       UINT32 res = r2 + r1;
+       uint32 r1 = dsp_convert_zero[IMM_1];
+       uint32 r2 = RN;
+       uint32 res = r2 + r1;
        res = (res & (~dsp_modulo)) | (r2 & dsp_modulo);
        RN = res;
        SET_ZNC_ADD(r2, r1, res);
@@ -2588,37 +2609,37 @@ void dsp_opcode_addqmod(void)
 #endif
 }
 
-void dsp_opcode_subqmod(void)  
+void dsp_opcode_subqmod(void)
 {
-       UINT32 r1 = dsp_convert_zero[IMM_1];
-       UINT32 r2 = RN;
-       UINT32 res = r2 - r1;
+       uint32 r1 = dsp_convert_zero[IMM_1];
+       uint32 r2 = RN;
+       uint32 res = r2 - r1;
        res = (res & (~dsp_modulo)) | (r2 & dsp_modulo);
        RN = res;
-       
+
        SET_ZNC_SUB(r2, r1, res);
 }
 
-void dsp_opcode_mirror(void)   
+void dsp_opcode_mirror(void)
 {
-       UINT32 r1 = RN;
+       uint32 r1 = RN;
        RN = (mirror_table[r1 & 0xFFFF] << 16) | mirror_table[r1 >> 16];
        SET_ZN(RN);
 }
 
-void dsp_opcode_sat32s(void)           
+void dsp_opcode_sat32s(void)
 {
-       INT32 r2 = (UINT32)RN;
-       INT32 temp = dsp_acc >> 32;
-       UINT32 res = (temp < -1) ? (INT32)0x80000000 : (temp > 0) ? (INT32)0x7FFFFFFF : r2;
+       int32 r2 = (uint32)RN;
+       int32 temp = dsp_acc >> 32;
+       uint32 res = (temp < -1) ? (int32)0x80000000 : (temp > 0) ? (int32)0x7FFFFFFF : r2;
        RN = res;
        SET_ZN(res);
 }
 
-void dsp_opcode_sat16s(void)           
+void dsp_opcode_sat16s(void)
 {
-       INT32 r2 = RN;
-       UINT32 res = (r2 < -32768) ? -32768 : (r2 > 32767) ? 32767 : r2;
+       int32 r2 = RN;
+       uint32 res = (r2 < -32768) ? -32768 : (r2 > 32767) ? 32767 : r2;
        RN = res;
        SET_ZN(res);
 }
@@ -2631,7 +2652,7 @@ static void DSP_abs(void);
 static void DSP_add(void);
 static void DSP_addc(void);
 static void DSP_addq(void);
-static void DSP_addqmod(void); 
+static void DSP_addqmod(void);
 static void DSP_addqt(void);
 static void DSP_and(void);
 static void DSP_bclr(void);
@@ -2653,7 +2674,7 @@ static void DSP_load_r14_i(void);
 static void DSP_load_r14_r(void);
 static void DSP_load_r15_i(void);
 static void DSP_load_r15_r(void);
-static void DSP_mirror(void);  
+static void DSP_mirror(void);
 static void DSP_mmult(void);
 static void DSP_move(void);
 static void DSP_movefa(void);
@@ -2671,8 +2692,8 @@ static void DSP_or(void);
 static void DSP_resmac(void);
 static void DSP_ror(void);
 static void DSP_rorq(void);
-static void DSP_sat16s(void);  
-static void DSP_sat32s(void);  
+static void DSP_sat16s(void);
+static void DSP_sat32s(void);
 static void DSP_sh(void);
 static void DSP_sha(void);
 static void DSP_sharq(void);
@@ -2688,7 +2709,7 @@ static void DSP_store_r15_r(void);
 static void DSP_sub(void);
 static void DSP_subc(void);
 static void DSP_subq(void);
-static void DSP_subqmod(void); 
+static void DSP_subqmod(void);
 static void DSP_subqt(void);
 static void DSP_xor(void);
 
@@ -3409,7 +3430,7 @@ static void DSP_abs(void)
                WriteLog("%06X: ABS    R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
        uint32 _Rn = PRN;
-       
+
        if (_Rn == 0x80000000)
                dsp_flag_n = 1;
        else
@@ -3430,7 +3451,7 @@ static void DSP_add(void)
        if (doDSPDis)
                WriteLog("%06X: ADD    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 res = PRN + PRM;
+       uint32 res = PRN + PRM;
        SET_ZNC_ADD(PRN, PRM, res);
        PRES = res;
 #ifdef DSP_DIS_ADD
@@ -3445,8 +3466,8 @@ static void DSP_addc(void)
        if (doDSPDis)
                WriteLog("%06X: ADDC   R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 res = PRN + PRM + dsp_flag_c;
-       UINT32 carry = dsp_flag_c;
+       uint32 res = PRN + PRM + dsp_flag_c;
+       uint32 carry = dsp_flag_c;
 //     SET_ZNC_ADD(PRN, PRM, res); //???BUG??? Yes!
        SET_ZNC_ADD(PRN + carry, PRM, res);
 //     SET_ZNC_ADD(PRN, PRM + carry, res);
@@ -3463,8 +3484,8 @@ static void DSP_addq(void)
        if (doDSPDis)
                WriteLog("%06X: ADDQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 r1 = dsp_convert_zero[PIMM1];
-       UINT32 res = PRN + r1;
+       uint32 r1 = dsp_convert_zero[PIMM1];
+       uint32 res = PRN + r1;
        CLR_ZNC; SET_ZNC_ADD(PRN, r1, res);
        PRES = res;
 #ifdef DSP_DIS_ADDQ
@@ -3479,9 +3500,9 @@ static void DSP_addqmod(void)
        if (doDSPDis)
                WriteLog("%06X: ADDQMOD #%u, R%02u [NCZ:%u%u%u, R%02u=%08X, DSP_MOD=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN, dsp_modulo);
 #endif
-       UINT32 r1 = dsp_convert_zero[PIMM1];
-       UINT32 r2 = PRN;
-       UINT32 res = r2 + r1;
+       uint32 r1 = dsp_convert_zero[PIMM1];
+       uint32 r2 = PRN;
+       uint32 res = r2 + r1;
        res = (res & (~dsp_modulo)) | (r2 & dsp_modulo);
        PRES = res;
        SET_ZNC_ADD(r2, r1, res);
@@ -3566,7 +3587,7 @@ static void DSP_cmp(void)
        if (doDSPDis)
                WriteLog("%06X: CMP    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 res = PRN - PRM;
+       uint32 res = PRN - PRM;
        SET_ZNC_SUB(PRN, PRM, res);
        NO_WRITEBACK;
 #ifdef DSP_DIS_CMP
@@ -3583,8 +3604,8 @@ static void DSP_cmpq(void)
        if (doDSPDis)
                WriteLog("%06X: CMPQ   #%d, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, sqtable[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 r1 = sqtable[PIMM1 & 0x1F]; // I like this better -> (INT8)(jaguar.op >> 2) >> 3;
-       UINT32 res = PRN - r1;
+       uint32 r1 = sqtable[PIMM1 & 0x1F]; // I like this better -> (INT8)(jaguar.op >> 2) >> 3;
+       uint32 res = PRN - r1;
        SET_ZNC_SUB(PRN, r1, res);
        NO_WRITEBACK;
 #ifdef DSP_DIS_CMPQ
@@ -3632,7 +3653,7 @@ static void DSP_imacn(void)
        if (doDSPDis)
                WriteLog("[NCZ:%u%u%u, DSP_ACC=%02X%08X]\n", dsp_flag_n, dsp_flag_c, dsp_flag_z, (uint8)(dsp_acc >> 32), (uint32)(dsp_acc & 0xFFFFFFFF));
 #endif
-} 
+}
 
 static void DSP_imult(void)
 {
@@ -3682,7 +3703,7 @@ static void DSP_illegal(void)
 static void DSP_jr(void)
 {
 #ifdef DSP_DIS_JR
-char * condition[32] =
+const char * condition[32] =
 {      "T", "nz", "z", "???", "nc", "nc nz", "nc z", "???", "c", "c nz",
        "c z", "???", "???", "???", "???", "???", "???", "???", "???",
        "???", "nn", "nn nz", "nn z", "???", "n", "n nz", "n z", "???",
@@ -3708,7 +3729,7 @@ char * condition[32] =
                // Now that we've branched, we have to make sure that the following instruction
                // is executed atomically with this one and then flush the pipeline before setting
                // the new PC.
-               
+
                // Step 1: Handle writebacks at stage 3 of pipeline
 /*             if (pipeline[plPtrWrite].opcode != PIPELINE_STALL)
                {
@@ -3792,7 +3813,7 @@ char * condition[32] =
 static void DSP_jump(void)
 {
 #ifdef DSP_DIS_JUMP
-char * condition[32] =
+const char * condition[32] =
 {      "T", "nz", "z", "???", "nc", "nc nz", "nc z", "???", "c", "c nz",
        "c z", "???", "???", "???", "???", "???", "???", "???", "???",
        "???", "nn", "nn nz", "nn z", "???", "n", "n nz", "n z", "???",
@@ -3813,7 +3834,7 @@ char * condition[32] =
                // Now that we've branched, we have to make sure that the following instruction
                // is executed atomically with this one and then flush the pipeline before setting
                // the new PC.
-               
+
                // Step 1: Handle writebacks at stage 3 of pipeline
 /*             if (pipeline[plPtrWrite].opcode != PIPELINE_STALL)
                {
@@ -3991,9 +4012,9 @@ static void DSP_load_r15_r(void)
 #endif
 }
 
-static void DSP_mirror(void)   
+static void DSP_mirror(void)
 {
-       UINT32 r1 = PRN;
+       uint32 r1 = PRN;
        PRES = (mirror_table[r1 & 0xFFFF] << 16) | mirror_table[r1 >> 16];
        SET_ZN(PRES);
 }
@@ -4008,7 +4029,7 @@ static void DSP_mmult(void)
        if (!(dsp_matrix_control & 0x10))
        {
                for (int i = 0; i < count; i++)
-               { 
+               {
                        int16 a;
                        if (i&0x01)
                                a=(int16)((dsp_alternate_reg[dsp_opcode_first_parameter + (i>>1)]>>16)&0xffff);
@@ -4132,7 +4153,7 @@ static void DSP_moveta(void)
 
 static void DSP_mtoi(void)
 {
-       PRES = (((INT32)PRM >> 8) & 0xFF800000) | (PRM & 0x007FFFFF);
+       PRES = (((int32)PRM >> 8) & 0xFF800000) | (PRM & 0x007FFFFF);
        SET_ZN(PRES);
 }
 
@@ -4156,7 +4177,7 @@ static void DSP_neg(void)
        if (doDSPDis)
                WriteLog("%06X: NEG    R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 res = -PRN;
+       uint32 res = -PRN;
        SET_ZNC_SUB(0, PRN, res);
        PRES = res;
 #ifdef DSP_DIS_NEG
@@ -4243,8 +4264,8 @@ static void DSP_ror(void)
        if (doDSPDis)
                WriteLog("%06X: ROR    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 r1 = PRM & 0x1F;
-       UINT32 res = (PRN >> r1) | (PRN << (32 - r1));
+       uint32 r1 = PRM & 0x1F;
+       uint32 res = (PRN >> r1) | (PRN << (32 - r1));
        SET_ZN(res); dsp_flag_c = (PRN >> 31) & 1;
        PRES = res;
 #ifdef DSP_DIS_ROR
@@ -4259,9 +4280,9 @@ static void DSP_rorq(void)
        if (doDSPDis)
                WriteLog("%06X: RORQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 r1 = dsp_convert_zero[PIMM1 & 0x1F];
-       UINT32 r2 = PRN;
-       UINT32 res = (r2 >> r1) | (r2 << (32 - r1));
+       uint32 r1 = dsp_convert_zero[PIMM1 & 0x1F];
+       uint32 r2 = PRN;
+       uint32 res = (r2 >> r1) | (r2 << (32 - r1));
        PRES = res;
        SET_ZN(res); dsp_flag_c = (r2 >> 31) & 0x01;
 #ifdef DSP_DIS_RORQ
@@ -4270,19 +4291,19 @@ static void DSP_rorq(void)
 #endif
 }
 
-static void DSP_sat16s(void)           
+static void DSP_sat16s(void)
 {
-       INT32 r2 = PRN;
-       UINT32 res = (r2 < -32768) ? -32768 : (r2 > 32767) ? 32767 : r2;
+       int32 r2 = PRN;
+       uint32 res = (r2 < -32768) ? -32768 : (r2 > 32767) ? 32767 : r2;
        PRES = res;
        SET_ZN(res);
 }
 
-static void DSP_sat32s(void)           
+static void DSP_sat32s(void)
 {
-       INT32 r2 = (UINT32)PRN;
-       INT32 temp = dsp_acc >> 32;
-       UINT32 res = (temp < -1) ? (INT32)0x80000000 : (temp > 0) ? (INT32)0x7FFFFFFF : r2;
+       int32 r2 = (uint32)PRN;
+       int32 temp = dsp_acc >> 32;
+       uint32 res = (temp < -1) ? (int32)0x80000000 : (temp > 0) ? (int32)0x7FFFFFFF : r2;
        PRES = res;
        SET_ZN(res);
 }
@@ -4373,7 +4394,7 @@ static void DSP_sharq(void)
        if (doDSPDis)
                WriteLog("%06X: SHARQ  #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 res = (INT32)PRN >> dsp_convert_zero[PIMM1];
+       uint32 res = (int32)PRN >> dsp_convert_zero[PIMM1];
        SET_ZN(res); dsp_flag_c = PRN & 0x01;
        PRES = res;
 #ifdef DSP_DIS_SHARQ
@@ -4388,8 +4409,8 @@ static void DSP_shlq(void)
        if (doDSPDis)
                WriteLog("%06X: SHLQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, 32 - PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       INT32 r1 = 32 - PIMM1;
-       UINT32 res = PRN << r1;
+       int32 r1 = 32 - PIMM1;
+       uint32 res = PRN << r1;
        SET_ZN(res); dsp_flag_c = (PRN >> 31) & 1;
        PRES = res;
 #ifdef DSP_DIS_SHLQ
@@ -4404,8 +4425,8 @@ static void DSP_shrq(void)
        if (doDSPDis)
                WriteLog("%06X: SHRQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       INT32 r1 = dsp_convert_zero[PIMM1];
-       UINT32 res = PRN >> r1;
+       int32 r1 = dsp_convert_zero[PIMM1];
+       uint32 res = PRN >> r1;
        SET_ZN(res); dsp_flag_c = PRN & 1;
        PRES = res;
 #ifdef DSP_DIS_SHRQ
@@ -4537,7 +4558,7 @@ static void DSP_sub(void)
        if (doDSPDis)
                WriteLog("%06X: SUB    R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 res = PRN - PRM;
+       uint32 res = PRN - PRM;
        SET_ZNC_SUB(PRN, PRM, res);
        PRES = res;
 #ifdef DSP_DIS_SUB
@@ -4552,8 +4573,8 @@ static void DSP_subc(void)
        if (doDSPDis)
                WriteLog("%06X: SUBC   R%02u, R%02u [NCZ:%u%u%u, R%02u=%08X, R%02u=%08X] -> ", DSP_PPC, PIMM1, PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM1, PRM, PIMM2, PRN);
 #endif
-       UINT32 res = PRN - PRM - dsp_flag_c;
-       UINT32 borrow = dsp_flag_c;
+       uint32 res = PRN - PRM - dsp_flag_c;
+       uint32 borrow = dsp_flag_c;
        SET_ZNC_SUB(PRN - borrow, PRM, res);
        PRES = res;
 #ifdef DSP_DIS_SUBC
@@ -4568,8 +4589,8 @@ static void DSP_subq(void)
        if (doDSPDis)
                WriteLog("%06X: SUBQ   #%u, R%02u [NCZ:%u%u%u, R%02u=%08X] -> ", DSP_PPC, dsp_convert_zero[PIMM1], PIMM2, dsp_flag_n, dsp_flag_c, dsp_flag_z, PIMM2, PRN);
 #endif
-       UINT32 r1 = dsp_convert_zero[PIMM1];
-       UINT32 res = PRN - r1;
+       uint32 r1 = dsp_convert_zero[PIMM1];
+       uint32 res = PRN - r1;
        SET_ZNC_SUB(PRN, r1, res);
        PRES = res;
 #ifdef DSP_DIS_SUBQ
@@ -4578,11 +4599,11 @@ static void DSP_subq(void)
 #endif
 }
 
-static void DSP_subqmod(void)  
+static void DSP_subqmod(void)
 {
-       UINT32 r1 = dsp_convert_zero[PIMM1];
-       UINT32 r2 = PRN;
-       UINT32 res = r2 - r1;
+       uint32 r1 = dsp_convert_zero[PIMM1];
+       uint32 r2 = PRN;
+       uint32 res = r2 - r1;
        res = (res & (~dsp_modulo)) | (r2 & dsp_modulo);
        PRES = res;
        SET_ZNC_SUB(r2, r1, res);