X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fjerry.cpp;h=eef8d0152af60c3f9bfd6469c41007917f5771f3;hb=f3e5bb2807319c210d124d6150e019130c54867b;hp=bc1541f835c7bdf6a9b669e040b2a1df6d80bcd9;hpb=dfa7e9feefa4cdf3e0e36172138397aa8b94b72c;p=virtualjaguar diff --git a/src/jerry.cpp b/src/jerry.cpp index bc1541f..eef8d01 100644 --- a/src/jerry.cpp +++ b/src/jerry.cpp @@ -144,17 +144,25 @@ // F1DE00 R xxxxxxxx xxxxxxxx ROM_NOISE - white noise // ------------------------------------------------------------ +#include "jerry.h" + +#include // For memcpy //#include #include "jaguar.h" #include "wavetable.h" -#include "jerry.h" #include "clock.h" +#include "dsp.h" +#include "dac.h" +#include "joystick.h" +#include "eeprom.h" +#include "log.h" +#include "cdrom.h" //Note that 44100 Hz requires samples every 22.675737 usec. #define NEW_TIMER_SYSTEM //#define JERRY_DEBUG -/*static*/ uint8 * jerry_ram_8; +/*static*/ uint8 jerry_ram_8[0x10000]; //#define JERRY_CONFIG 0x4002 // ??? What's this ??? @@ -348,6 +356,7 @@ void JERRYI2SCallback(void) { // Why is it called this? Instead of SCLK? Shouldn't this be read from DAC.CPP??? //Yes, it should. !!! FIX !!! +#warning Yes, it should. !!! FIX !!! jerry_i2s_interrupt_divide &= 0xFF; // We don't have to divide the RISC clock rate by this--the reason is a bit // convoluted. Will put explanation here later... @@ -406,11 +415,11 @@ void jerry_init(void) { // clock_init(); // anajoy_init(); - joystick_init(); + JoystickInit(); DACInit(); //This should be handled with the cart initialization... // eeprom_init(); - memory_malloc_secure((void **)&jerry_ram_8, 0x10000, "JERRY RAM/ROM"); +// memory_malloc_secure((void **)&jerry_ram_8, 0x10000, "JERRY RAM/ROM"); memcpy(&jerry_ram_8[0xD000], wave_table, 0x1000); JERRYPIT1Prescaler = 0xFFFF; @@ -423,7 +432,7 @@ void jerry_reset(void) { // clock_reset(); // anajoy_reset(); - joystick_reset(); + JoystickReset(); eeprom_reset(); JERRYResetI2S(); DACReset(); @@ -440,17 +449,17 @@ void jerry_reset(void) void jerry_done(void) { WriteLog("JERRY: M68K Interrupt control ($F10020) = %04X\n", GET16(jerry_ram_8, 0x20)); - memory_free(jerry_ram_8); +// memory_free(jerry_ram_8); // clock_done(); // anajoy_done(); - joystick_done(); + JoystickDone(); DACDone(); eeprom_done(); } bool JERRYIRQEnabled(int irq) { - // Read the word @ $F10020 + // Read the word @ $F10020 return jerry_ram_8[0x21] & (1 << irq); } @@ -531,10 +540,10 @@ WriteLog("JERRY: Unhandled timer read (BYTE) at %08X...\n", offset); // else if (offset >= 0xF17C00 && offset <= 0xF17C01) // return anajoy_byte_read(offset); else if (offset >= 0xF14000 && offset <= 0xF14003) - return joystick_byte_read(offset) | eeprom_byte_read(offset); + return JoystickReadByte(offset) | eeprom_byte_read(offset); else if (offset >= 0xF14000 && offset <= 0xF1A0FF) return eeprom_byte_read(offset); - + return jerry_ram_8[offset & 0xFFFF]; } @@ -598,9 +607,9 @@ WriteLog("JERRY: Unhandled timer read (WORD) at %08X...\n", offset); // else if ((offset >= 0xF17C00) && (offset <= 0xF17C01)) // return anajoy_word_read(offset); else if (offset == 0xF14000) - return (joystick_word_read(offset) & 0xFFFE) | eeprom_word_read(offset); + return (JoystickReadWord(offset) & 0xFFFE) | eeprom_word_read(offset); else if ((offset >= 0xF14002) && (offset < 0xF14003)) - return joystick_word_read(offset); + return JoystickReadWord(offset); else if ((offset >= 0xF14000) && (offset <= 0xF1A0FF)) return eeprom_word_read(offset); @@ -650,9 +659,9 @@ void JERRYWriteByte(uint32 offset, uint8 data, uint32 who/*=UNKNOWN*/) } // LTXD/RTXD/SCLK/SMODE $F1A148/4C/50/54 (really 16-bit registers...) else if (offset >= 0xF1A148 && offset <= 0xF1A157) - { + { DACWriteByte(offset, data, who); - return; + return; } else if (offset >= 0xF10000 && offset <= 0xF10007) { @@ -713,7 +722,7 @@ WriteLog("JERRY: (68K int en/lat - Unhandled!) Tried to write $%02X to $%08X!\n" }*/ else if ((offset >= 0xF14000) && (offset <= 0xF14003)) { - joystick_byte_write(offset, data); + JoystickWriteByte(offset, data); eeprom_byte_write(offset, data); return; } @@ -764,13 +773,13 @@ void JERRYWriteWord(uint32 offset, uint16 data, uint32 who/*=UNKNOWN*/) #endif DACWriteWord(offset, data, who); - return; + return; } // LTXD/RTXD/SCLK/SMODE $F1A148/4C/50/54 (really 16-bit registers...) else if (offset >= 0xF1A148 && offset <= 0xF1A156) - { + { DACWriteWord(offset, data, who); - return; + return; } else if (offset >= 0xF10000 && offset <= 0xF10007) { @@ -818,7 +827,7 @@ WriteLog("JERRY: (68K int en/lat - Unhandled!) Tried to write $%04X to $%08X!\n" }*/ else if (offset >= 0xF14000 && offset < 0xF14003) { - joystick_word_write(offset, data); + JoystickWriteWord(offset, data); eeprom_word_write(offset, data); return; }