X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fjerry.cpp;h=cba9571c808a666326dc71e58dab7e7a383767ed;hb=19cb30261693d5c56c79d87030cfe8e1dc9ca033;hp=4b052366efab2adafbc937d6023c2e2f5b50816e;hpb=2e3a9a7467a1740dff9985203f10f7bae01c9d0d;p=virtualjaguar diff --git a/src/jerry.cpp b/src/jerry.cpp index 4b05236..cba9571 100644 --- a/src/jerry.cpp +++ b/src/jerry.cpp @@ -3,9 +3,9 @@ // // Originally by David Raingeard // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Carwin Jones (BeOS) -// Cleanups/rewrites/fixes by James L. Hammons +// Cleanups/rewrites/fixes by James Hammons // -// JLH = James L. Hammons +// JLH = James Hammons // // WHO WHEN WHAT // --- ---------- ----------------------------------------------------------- @@ -164,6 +164,7 @@ #include "joystick.h" #include "log.h" #include "m68k.h" +#include "settings.h" #include "tom.h" //#include "memory.h" #include "wavetable.h" @@ -455,13 +456,8 @@ void JERRYI2SCallback(void) void JERRYInit(void) { -// clock_init(); -// anajoy_init(); JoystickInit(); DACInit(); -//This should be handled with the cart initialization... -// eeprom_init(); -// memory_malloc_secure((void **)&jerry_ram_8, 0x10000, "JERRY RAM/ROM"); memcpy(&jerry_ram_8[0xD000], waveTableROM, 0x1000); JERRYPIT1Prescaler = 0xFFFF; @@ -474,8 +470,6 @@ void JERRYInit(void) void JERRYReset(void) { -// clock_reset(); -// anajoy_reset(); JoystickReset(); EepromReset(); JERRYResetI2S(); @@ -495,9 +489,6 @@ void JERRYReset(void) void JERRYDone(void) { WriteLog("JERRY: M68K Interrupt control ($F10020) = %04X\n", GET16(jerry_ram_8, 0x20)); -// memory_free(jerry_ram_8); -// clock_done(); -// anajoy_done(); JoystickDone(); DACDone(); EepromDone(); @@ -819,6 +810,10 @@ else if (offset == 0xF10012) WriteLog("JERRY: CLK2 word written by %s: %u\n", whoName[who], data); else if (offset == 0xF10014) WriteLog("JERRY: CLK3 word written by %s: %u\n", whoName[who], data); +//else if (offset == 0xF1A100) +// WriteLog("JERRY: D_FLAGS word written by %s: %u\n", whoName[who], data); +//else if (offset == 0xF1A102) +// WriteLog("JERRY: D_FLAGS+2 word written by %s: %u\n", whoName[who], data); //else if (offset == 0xF10020) // WriteLog("JERRY: JINTCTRL word written by %s: $%04X\n", whoName[who], data); #endif @@ -836,7 +831,7 @@ else if (offset == 0xF10014) //NOTE: This should be taken care of in DAC... else if (offset == 0xF1A152) // Bottom half of SCLK ($F1A150) { - WriteLog("JERRY: Writing %04X to SCLK (by %s)...\n", data, whoName[who]); + WriteLog("JERRY: Writing $%X to SCLK (by %s)...\n", data, whoName[who]); //This should *only* be enabled when SMODE has its INTERNAL bit set! !!! FIX !!! JERRYI2SInterruptDivide = (uint8)data; JERRYI2SInterruptTimer = -1; @@ -923,3 +918,15 @@ WriteLog("JERRY: Unhandled timer write %04X (WORD) at %08X by %s...\n", data, of jerry_ram_8[(offset+0) & 0xFFFF] = (data >> 8) & 0xFF; jerry_ram_8[(offset+1) & 0xFFFF] = data & 0xFF; } + +int JERRYGetPIT1Frequency(void) +{ + int systemClockFrequency = (vjs.hardwareTypeNTSC ? RISC_CLOCK_RATE_NTSC : RISC_CLOCK_RATE_PAL); + return systemClockFrequency / ((JERRYPIT1Prescaler + 1) * (JERRYPIT1Divider + 1)); +} + +int JERRYGetPIT2Frequency(void) +{ + int systemClockFrequency = (vjs.hardwareTypeNTSC ? RISC_CLOCK_RATE_NTSC : RISC_CLOCK_RATE_PAL); + return systemClockFrequency / ((JERRYPIT2Prescaler + 1) * (JERRYPIT2Divider + 1)); +}