]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/jaguar.cpp
Initial gamepad support.
[virtualjaguar] / src / jaguar.cpp
index de5b5a888f8714e74effa72a11fad457844aaad0..f930c9a31e5b2a6965457b7dacc3d4956dd10758 100644 (file)
@@ -28,7 +28,7 @@
 #include "jerry.h"
 #include "joystick.h"
 #include "log.h"
-#include "m68k.h"
+#include "m68000/m68kinterface.h"
 //#include "memory.h"
 #include "mmu.h"
 #include "settings.h"
@@ -133,7 +133,7 @@ if (inRoutine)
                static char buffer[2048];
                for(int i=0; i<0x400; i++)
                {
-                       m68k_disassemble(buffer, pcQueue[(pcQPtr + i) & 0x3FF], M68K_CPU_TYPE_68000);
+                       m68k_disassemble(buffer, pcQueue[(pcQPtr + i) & 0x3FF], 0);//M68K_CPU_TYPE_68000);
                        WriteLog("\t%08X: %s\n", pcQueue[(pcQPtr + i) & 0x3FF], buffer);
                }
                WriteLog("\n");
@@ -273,7 +273,7 @@ if (m68kPC == 0x802058) start = true;
        if (m68kPC == 0x82E1A)
        {
                static char buffer[2048];
-               m68k_disassemble(buffer, m68kPC, M68K_CPU_TYPE_68000);
+               m68k_disassemble(buffer, m68kPC, 0);//M68K_CPU_TYPE_68000);
                WriteLog("--> [Routine start] %08X: %s", m68kPC, buffer);
                WriteLog("\t\tA0=%08X, A1=%08X, D0=%08X(cmd), D1=%08X(# bytes), D2=%08X\n",
                        m68k_get_reg(NULL, M68K_REG_A0), m68k_get_reg(NULL, M68K_REG_A1),
@@ -356,7 +356,7 @@ CD_switch:: -> $306C
 #endif
 
 #ifdef ABORT_ON_ILLEGAL_INSTRUCTIONS
-       if (!m68k_is_valid_instruction(m68k_read_memory_16(m68kPC), M68K_CPU_TYPE_68000))
+       if (!m68k_is_valid_instruction(m68k_read_memory_16(m68kPC), 0))//M68K_CPU_TYPE_68000))
        {
 #ifndef ABORT_ON_OFFICIAL_ILLEGAL_INSTRUCTION
                if (m68k_read_memory_16(m68kPC) == 0x4AFC)
@@ -376,8 +376,21 @@ CD_switch::        -> $306C
                WriteLog("\nM68K encountered an illegal instruction at %08X!!!\n\nAborting!\n", m68kPC);
                uint32 topOfStack = m68k_get_reg(NULL, M68K_REG_A7);
                WriteLog("M68K: Top of stack: %08X. Stack trace:\n", JaguarReadLong(topOfStack));
+               uint32 address = topOfStack - (4 * 4 * 3);
+
                for(int i=0; i<10; i++)
-                       WriteLog("%06X: %08X\n", topOfStack - (i * 4), JaguarReadLong(topOfStack - (i * 4)));
+               {
+                       WriteLog("%06X:", address);
+
+                       for(int j=0; j<4; j++)
+                       {
+                               WriteLog(" %08X", JaguarReadLong(address));
+                               address += 4;
+                       }
+
+                       WriteLog("\n");
+               }
+
                WriteLog("Jaguar: VBL interrupt is %s\n", ((TOMIRQEnabled(IRQ_VIDEO)) && (JaguarInterruptHandlerIsValid(64))) ? "enabled" : "disabled");
                M68K_show_context();
 
@@ -1454,7 +1467,7 @@ void JaguarDasm(uint32 offset, uint32 qt)
                pc += Dasm68000((char *)mem, buffer, 0);
                WriteLog("%08X: %s\n", oldpc, buffer);//*/
                oldpc = pc;
-               pc += m68k_disassemble(buffer, pc, M68K_CPU_TYPE_68000);
+               pc += m68k_disassemble(buffer, pc, 0);//M68K_CPU_TYPE_68000);
                WriteLog("%08X: %s\n", oldpc, buffer);//*/
        }
 #endif
@@ -1736,7 +1749,7 @@ void JaguarInit(void)
 //temp, for crappy crap that sux
 memset(jaguarMainRAM + 0x804, 0xFF, 4);
 
-       m68k_set_cpu_type(M68K_CPU_TYPE_68000);
+//     m68k_set_cpu_type(M68K_CPU_TYPE_68000);
        m68k_pulse_reset();                                                     // Need to do this so UAE disasm doesn't segfault on exit
        GPUInit();
        DSPInit();
@@ -1817,9 +1830,26 @@ void JaguarDone(void)
 //     for(int i=M68K_REG_A0; i<=M68K_REG_A7; i++)
 //             WriteLog("\tA%i = 0x%.8x\n", i-M68K_REG_A0, m68k_get_reg(NULL, (m68k_register_t)i));
        int32 topOfStack = m68k_get_reg(NULL, M68K_REG_A7);
-       WriteLog("M68K: Top of stack: %08X. Stack trace:\n", JaguarReadLong(topOfStack));
+       WriteLog("M68K: Top of stack: %08X -> (%08X). Stack trace:\n", topOfStack, JaguarReadLong(topOfStack));
+#if 0
        for(int i=-2; i<9; i++)
                WriteLog("%06X: %08X\n", topOfStack + (i * 4), JaguarReadLong(topOfStack + (i * 4)));
+#else
+       uint32 address = topOfStack - (4 * 4 * 3);
+
+       for(int i=0; i<10; i++)
+       {
+               WriteLog("%06X:", address);
+
+               for(int j=0; j<4; j++)
+               {
+                       WriteLog(" %08X", JaguarReadLong(address));
+                       address += 4;
+               }
+
+               WriteLog("\n");
+       }
+#endif
 
 /*     WriteLog("\nM68000 disassembly at $802288...\n");
        jaguar_dasm(0x802288, 3);
@@ -1977,7 +2007,7 @@ void JaguarExecuteNew(void)
 // it will be half this number for a half frame. BUT, since we're counting
 // HALF lines, we double this number and we're back at 525 for NTSC, 625 for PAL.
 //
-// Scanline times are 63.5555... µs in NTSC and 64 µs in PAL
+// Scanline times are 63.5555... μs in NTSC and 64 μs in PAL
 // Half line times are, naturally, half of this. :-P
 void HalflineCallback(void)
 {