From 4d803c6fc0d9dda75efa8c15f5b277a4afe0deec Mon Sep 17 00:00:00 2001 From: meepingsnesroms Date: Wed, 1 May 2019 11:06:39 -0700 Subject: [PATCH] Clean up emulator*State* functions --- .../Screenshot_20190426-220702.png | Bin 0 -> 126204 bytes bugs/shadowTheifBug/text.txt | 4 + qtBuildSystem/Mu/Mu.pro | 6 +- src/ads7846.c | 2 +- src/{dbvzRegisters.c => dbvz.c} | 268 ++++++++++++- src/{dbvzRegisters.h => dbvz.h} | 15 +- src/dbvzRegisterAccessors.c.h | 12 +- src/debug/sandbox.c | 2 +- src/emulator.c | 360 +++++------------- src/emulator.h | 7 +- src/expansionHardware.c | 2 +- src/flx68000.c | 8 +- src/flx68000.h | 1 - src/m515Bus.c | 2 +- src/makefile.all | 2 +- src/sed1376.c | 2 +- 16 files changed, 404 insertions(+), 289 deletions(-) create mode 100644 bugs/shadowTheifBug/Screenshot_20190426-220702.png create mode 100644 bugs/shadowTheifBug/text.txt rename src/{dbvzRegisters.c => dbvz.c} (77%) rename src/{dbvzRegisters.h => dbvz.h} (93%) diff --git a/bugs/shadowTheifBug/Screenshot_20190426-220702.png b/bugs/shadowTheifBug/Screenshot_20190426-220702.png new file mode 100644 index 0000000000000000000000000000000000000000..71c53313588b446e9a02849b2682e14a77d4a74a GIT binary patch literal 126204 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

I^8Krsam3CYnAra=o2FL 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 #include @@ -64,6 +64,7 @@ typedef struct{ }dbvz_chip_t; //variables +extern uint8_t dbvzReg[]; extern dbvz_chip_t dbvzChipSelects[]; extern double dbvzSysclksPerClk32; extern uint32_t dbvzFrameClk32s; @@ -116,7 +117,15 @@ void dbvzSetRegister16(uint32_t address, uint16_t value); void dbvzSetRegister32(uint32_t address, uint32_t value); //config -void dbvzResetRegisters(void); +void dbvzReset(void); +uint32_t dbvzStateSize(void); +void dbvzSaveState(uint8_t* data); +void dbvzLoadState(uint8_t* data); +void dbvzLoadStateFinished(void); + +void dbvzLoadBootloader(uint8_t* data, uint32_t size); void dbvzSetRtc(uint16_t days, uint8_t hours, uint8_t minutes, uint8_t seconds); +void dbvzExecute(void); + #endif diff --git a/src/dbvzRegisterAccessors.c.h b/src/dbvzRegisterAccessors.c.h index b09a8ba..3919b6e 100644 --- a/src/dbvzRegisterAccessors.c.h +++ b/src/dbvzRegisterAccessors.c.h @@ -11,12 +11,12 @@ static uint8_t getPortKValue(void); static uint8_t getPortMValue(void); //basic accessors -static uint8_t registerArrayRead8(uint32_t address){return M68K_BUFFER_READ_8(palmReg, address, 0xFFF);} -static uint16_t registerArrayRead16(uint32_t address){return M68K_BUFFER_READ_16(palmReg, address, 0xFFF);} -static uint32_t registerArrayRead32(uint32_t address){return M68K_BUFFER_READ_32(palmReg, address, 0xFFF);} -static void registerArrayWrite8(uint32_t address, uint8_t value){M68K_BUFFER_WRITE_8(palmReg, address, 0xFFF, value);} -static void registerArrayWrite16(uint32_t address, uint16_t value){M68K_BUFFER_WRITE_16(palmReg, address, 0xFFF, value);} -static void registerArrayWrite32(uint32_t address, uint32_t value){M68K_BUFFER_WRITE_32(palmReg, address, 0xFFF, value);} +static uint8_t registerArrayRead8(uint32_t address){return M68K_BUFFER_READ_8(dbvzReg, address, 0xFFF);} +static uint16_t registerArrayRead16(uint32_t address){return M68K_BUFFER_READ_16(dbvzReg, address, 0xFFF);} +static uint32_t registerArrayRead32(uint32_t address){return M68K_BUFFER_READ_32(dbvzReg, address, 0xFFF);} +static void registerArrayWrite8(uint32_t address, uint8_t value){M68K_BUFFER_WRITE_8(dbvzReg, address, 0xFFF, value);} +static void registerArrayWrite16(uint32_t address, uint16_t value){M68K_BUFFER_WRITE_16(dbvzReg, address, 0xFFF, value);} +static void registerArrayWrite32(uint32_t address, uint32_t value){M68K_BUFFER_WRITE_32(dbvzReg, address, 0xFFF, value);} //interrupt setters, used for setting an interrupt with masking by IMR and logging in IPR static void setIprIsrBit(uint32_t interruptBit){ diff --git a/src/debug/sandbox.c b/src/debug/sandbox.c index 2a4192b..d037747 100644 --- a/src/debug/sandbox.c +++ b/src/debug/sandbox.c @@ -14,7 +14,7 @@ #include "../m68k/m68kcpu.h" #include "../emulator.h" #include "../ads7846.h" -#include "../dbvzRegisters.h" +#include "../dbvz.h" #include "../portability.h" #include "../specs/emuFeatureRegisterSpec.h" #include "sandbox.h" diff --git a/src/emulator.c b/src/emulator.c index cfa83bb..17d0122 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -4,9 +4,8 @@ #include #include "audio/blip_buf.h" -#include "flx68000.h" #include "emulator.h" -#include "dbvzRegisters.h" +#include "dbvz.h" #include "expansionHardware.h" #include "m515Bus.h" #include "sed1376.h" @@ -50,7 +49,6 @@ bool palmEmulatingTungstenC; #endif uint8_t* palmRam; uint8_t* palmRom; -uint8_t* palmReg; input_t palmInput; sd_card_t palmSdCard; misc_hw_t palmMisc; @@ -66,31 +64,16 @@ double palmClockMultiplier;//used by the emulator to overclock the emulated P #if defined(EMU_SUPPORT_PALM_OS5) static void emulatorTungstenCFrame(void){ + //CPU pxa255Execute(); } #endif static void emulatorM515Frame(void){ - uint32_t samples; - - //I/O - m515RefreshInputState(); - //CPU - dbvzFrameClk32s = 0; - for(; palmCycleCounter < (double)M515_CRYSTAL_FREQUENCY / EMU_FPS; palmCycleCounter += 1.0){ - flx68000Execute(); - dbvzFrameClk32s++; - } - palmCycleCounter -= (double)M515_CRYSTAL_FREQUENCY / EMU_FPS; + dbvzExecute(); - //audio - blip_end_frame(palmAudioResampler, blip_clocks_needed(palmAudioResampler, AUDIO_SAMPLES_PER_FRAME)); - blip_read_samples(palmAudioResampler, palmAudio, AUDIO_SAMPLES_PER_FRAME, true); - MULTITHREAD_LOOP(samples) for(samples = 0; samples < AUDIO_SAMPLES_PER_FRAME * 2; samples += 2) - palmAudio[samples + 1] = palmAudio[samples]; - - //video + //LCD controller sed1376Render(); } @@ -159,14 +142,12 @@ uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t enab //allocate buffers, add 4 to memory regions to prevent SIGSEGV from accessing off the end palmRom = malloc(M515_ROM_SIZE + 4); palmRam = malloc(M515_RAM_SIZE + 4); - palmReg = malloc(DBVZ_REG_SIZE + 4); palmFramebuffer = malloc(160 * 220 * sizeof(uint16_t)); palmAudio = malloc(AUDIO_SAMPLES_PER_FRAME * 2 * sizeof(int16_t)); palmAudioResampler = blip_new(AUDIO_SAMPLE_RATE);//have 1 second of samples - if(!palmRom || !palmRam || !palmReg || !palmFramebuffer || !palmAudio || !palmAudioResampler){ + if(!palmRom || !palmRam || !palmFramebuffer || !palmAudio || !palmAudioResampler){ free(palmRom); free(palmRam); - free(palmReg); free(palmFramebuffer); free(palmAudio); blip_delete(palmAudioResampler); @@ -179,15 +160,7 @@ uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t enab memset(palmRom + palmRomDump.size, 0x00, M515_ROM_SIZE - palmRomDump.size); swap16BufferIfLittle(palmRom, M515_ROM_SIZE / sizeof(uint16_t)); memset(palmRam, 0x00, M515_RAM_SIZE); - if(palmBootDump.data){ - memcpy(palmReg + DBVZ_REG_SIZE - 1 - DBVZ_BOOTLOADER_SIZE, palmBootDump.data, u32Min(palmBootDump.size, DBVZ_BOOTLOADER_SIZE)); - if(palmBootDump.size < DBVZ_BOOTLOADER_SIZE) - memset(palmReg + DBVZ_REG_SIZE - 1 - DBVZ_BOOTLOADER_SIZE + palmBootDump.size, 0x00, DBVZ_BOOTLOADER_SIZE - palmBootDump.size); - swap16BufferIfLittle(palmReg + DBVZ_REG_SIZE - 1 - DBVZ_BOOTLOADER_SIZE, DBVZ_BOOTLOADER_SIZE / sizeof(uint16_t)); - } - else{ - memset(palmReg + DBVZ_REG_SIZE - 1 - DBVZ_BOOTLOADER_SIZE, 0x00, DBVZ_BOOTLOADER_SIZE); - } + dbvzLoadBootloader(palmBootDump.data, palmBootDump.size); memcpy(palmFramebuffer + 160 * 160, silkscreen160x60, 160 * 60 * sizeof(uint16_t)); memset(palmAudio, 0x00, AUDIO_SAMPLES_PER_FRAME * 2/*channels*/ * sizeof(int16_t)); memset(&palmInput, 0x00, sizeof(palmInput)); @@ -203,7 +176,6 @@ uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t enab //initialize components blip_set_rates(palmAudioResampler, AUDIO_CLOCK_RATE, AUDIO_SAMPLE_RATE); - flx68000Init(); sandboxInit(); //reset everything @@ -225,7 +197,6 @@ void emulatorExit(void){ #endif free(palmRom); free(palmRam); - free(palmReg); #if defined(EMU_SUPPORT_PALM_OS5) } #endif @@ -278,7 +249,7 @@ void emulatorSoftReset(void){ ads7846Reset(); pdiUsbD12Reset(); expansionHardwareReset(); - flx68000Reset(); + dbvzReset(); sandboxReset(); //sdCardReset() should not be called here, the SD card does not have a reset line and should only be reset by a power cycle #if defined(EMU_SUPPORT_PALM_OS5) @@ -302,30 +273,24 @@ uint32_t emulatorGetStateSize(void){ size += sizeof(uint32_t);//palmEmuFeatures.info size += sizeof(uint64_t);//palmSdCard.flashChip.size, needs to be done first to verify the malloc worked size += sizeof(uint16_t) * 2;//palmFramebuffer(Width/Height) - size += flx68000StateSize(); - size += sed1376StateSize(); - size += ads7846StateSize(); - size += pdiUsbD12StateSize(); - size += expansionHardwareStateSize(); +#if defined(EMU_SUPPORT_PALM_OS5) + if(palmEmulatingTungstenC){ + size += pxa255StateSize(); + size += expansionHardwareStateSize(); + size += TUNGSTEN_C_RAM_SIZE;//system RAM buffer + } + else{ +#endif + size += dbvzStateSize(); + size += sed1376StateSize(); + size += ads7846StateSize(); + size += pdiUsbD12StateSize(); + size += expansionHardwareStateSize(); + size += M515_RAM_SIZE;//system RAM buffer +#if defined(EMU_SUPPORT_PALM_OS5) + } +#endif size += sandboxStateSize(); - size += M515_RAM_SIZE;//system RAM buffer - size += DBVZ_REG_SIZE;//hardware registers - size += DBVZ_TOTAL_MEMORY_BANKS;//bank handlers - size += sizeof(uint32_t) * 4 * DBVZ_CHIP_END;//chip select states - size += sizeof(uint8_t) * 5 * DBVZ_CHIP_END;//chip select states - size += sizeof(uint64_t) * 5;//32.32 fixed point double, timerXCycleCounter and CPU cycle timers - size += sizeof(int8_t);//pllSleepWait - size += sizeof(int8_t);//pllWakeWait - size += sizeof(uint32_t);//clk32Counter - size += sizeof(uint64_t);//pctlrCpuClockDivider - size += sizeof(uint16_t) * 2;//timerStatusReadAcknowledge - size += sizeof(uint8_t);//portDInterruptLastValue - size += sizeof(uint16_t) * 9;//RX 8 * 16 SPI1 FIFO, 1 index is for FIFO full - size += sizeof(uint16_t) * 9;//TX 8 * 16 SPI1 FIFO, 1 index is for FIFO full - size += sizeof(uint8_t) * 5;//spi1(R/T)x(Read/Write)Position / spi1RxOverflowed - size += sizeof(int32_t);//pwm1ClocksToNextSample - size += sizeof(uint8_t) * 6;//pwm1Fifo[6] - size += sizeof(uint8_t) * 2;//pwm1(Read/Write) size += sizeof(uint8_t) * 7;//palmMisc size += sizeof(uint32_t) * 4;//palmEmuFeatures.(src/dst/size/value) size += sizeof(uint64_t);//palmSdCard.command @@ -352,7 +317,11 @@ bool emulatorSaveState(buffer_t buffer){ return false;//state cant fit //state validation, wont load states that are not from the same state version +#if defined(EMU_SUPPORT_PALM_OS5) + writeStateValue32(buffer.data + offset, SAVE_STATE_VERSION | (palmEmulatingTungstenC ? SAVE_STATE_FOR_TUNGSTEN_C : 0)); +#else writeStateValue32(buffer.data + offset, SAVE_STATE_VERSION); +#endif offset += sizeof(uint32_t); //features, hotpluging emulated hardware is not supported @@ -369,110 +338,45 @@ bool emulatorSaveState(buffer_t buffer){ writeStateValue16(buffer.data + offset, palmFramebufferHeight); offset += sizeof(uint16_t); - //chips - flx68000SaveState(buffer.data + offset); - offset += flx68000StateSize(); - sed1376SaveState(buffer.data + offset); - offset += sed1376StateSize(); - ads7846SaveState(buffer.data + offset); - offset += ads7846StateSize(); - pdiUsbD12SaveState(buffer.data + offset); - offset += pdiUsbD12StateSize(); - expansionHardwareSaveState(buffer.data + offset); - offset += expansionHardwareStateSize(); +#if defined(EMU_SUPPORT_PALM_OS5) + if(palmEmulatingTungstenC){ + //chips + pxa255SaveState(buffer.data + offset); + offset += pxa255StateSize(); + expansionHardwareSaveState(buffer.data + offset); + offset += expansionHardwareStateSize(); + + //memory + memcpy(buffer.data + offset, palmRam, TUNGSTEN_C_RAM_SIZE); + swap16BufferIfLittle(buffer.data + offset, TUNGSTEN_C_RAM_SIZE / sizeof(uint16_t)); + offset += TUNGSTEN_C_RAM_SIZE; + } + else{ +#endif + //chips + dbvzSaveState(buffer.data + offset); + offset += dbvzStateSize(); + sed1376SaveState(buffer.data + offset); + offset += sed1376StateSize(); + ads7846SaveState(buffer.data + offset); + offset += ads7846StateSize(); + pdiUsbD12SaveState(buffer.data + offset); + offset += pdiUsbD12StateSize(); + expansionHardwareSaveState(buffer.data + offset); + offset += expansionHardwareStateSize(); + + //memory + memcpy(buffer.data + offset, palmRam, M515_RAM_SIZE); + swap16BufferIfLittle(buffer.data + offset, M515_RAM_SIZE / sizeof(uint16_t)); + offset += M515_RAM_SIZE; +#if defined(EMU_SUPPORT_PALM_OS5) + } +#endif //sandbox, does nothing when disabled sandboxSaveState(buffer.data + offset); offset += sandboxStateSize(); - //memory - memcpy(buffer.data + offset, palmRam, M515_RAM_SIZE); - swap16BufferIfLittle(buffer.data + offset, M515_RAM_SIZE / sizeof(uint16_t)); - offset += M515_RAM_SIZE; - memcpy(buffer.data + offset, palmReg, DBVZ_REG_SIZE); - swap16BufferIfLittle(buffer.data + offset, DBVZ_REG_SIZE / sizeof(uint16_t)); - offset += DBVZ_REG_SIZE; - memcpy(buffer.data + offset, dbvzBankType, DBVZ_TOTAL_MEMORY_BANKS); - offset += DBVZ_TOTAL_MEMORY_BANKS; - for(index = DBVZ_CHIP_BEGIN; index < DBVZ_CHIP_END; index++){ - writeStateValue8(buffer.data + offset, dbvzChipSelects[index].enable); - offset += sizeof(uint8_t); - writeStateValue32(buffer.data + offset, dbvzChipSelects[index].start); - offset += sizeof(uint32_t); - writeStateValue32(buffer.data + offset, dbvzChipSelects[index].lineSize); - offset += sizeof(uint32_t); - writeStateValue32(buffer.data + offset, dbvzChipSelects[index].mask); - offset += sizeof(uint32_t); - writeStateValue8(buffer.data + offset, dbvzChipSelects[index].inBootMode); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, dbvzChipSelects[index].readOnly); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, dbvzChipSelects[index].readOnlyForProtectedMemory); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, dbvzChipSelects[index].supervisorOnlyProtectedMemory); - offset += sizeof(uint8_t); - writeStateValue32(buffer.data + offset, dbvzChipSelects[index].unprotectedSize); - offset += sizeof(uint32_t); - } - - //timing - writeStateValueDouble(buffer.data + offset, dbvzSysclksPerClk32); - offset += sizeof(uint64_t); - writeStateValueDouble(buffer.data + offset, palmCycleCounter); - offset += sizeof(uint64_t); - writeStateValueDouble(buffer.data + offset, palmClockMultiplier); - offset += sizeof(uint64_t); - writeStateValue8(buffer.data + offset, pllSleepWait); - offset += sizeof(int8_t); - writeStateValue8(buffer.data + offset, pllWakeWait); - offset += sizeof(int8_t); - writeStateValue32(buffer.data + offset, clk32Counter); - offset += sizeof(uint32_t); - writeStateValueDouble(buffer.data + offset, pctlrCpuClockDivider); - offset += sizeof(uint64_t); - writeStateValueDouble(buffer.data + offset, timerCycleCounter[0]); - offset += sizeof(uint64_t); - writeStateValueDouble(buffer.data + offset, timerCycleCounter[1]); - offset += sizeof(uint64_t); - writeStateValue16(buffer.data + offset, timerStatusReadAcknowledge[0]); - offset += sizeof(uint16_t); - writeStateValue16(buffer.data + offset, timerStatusReadAcknowledge[1]); - offset += sizeof(uint16_t); - writeStateValue8(buffer.data + offset, portDInterruptLastValue); - offset += sizeof(uint8_t); - - //SPI1 - for(index = 0; index < 9; index++){ - writeStateValue16(buffer.data + offset, spi1RxFifo[index]); - offset += sizeof(uint16_t); - } - for(index = 0; index < 9; index++){ - writeStateValue16(buffer.data + offset, spi1TxFifo[index]); - offset += sizeof(uint16_t); - } - writeStateValue8(buffer.data + offset, spi1RxReadPosition); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, spi1RxWritePosition); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, spi1RxOverflowed); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, spi1TxReadPosition); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, spi1TxWritePosition); - offset += sizeof(uint8_t); - - //PWM1, audio - writeStateValue32(buffer.data + offset, pwm1ClocksToNextSample); - offset += sizeof(int32_t); - for(index = 0; index < 6; index++){ - writeStateValue8(buffer.data + offset, pwm1Fifo[index]); - offset += sizeof(uint8_t); - } - writeStateValue8(buffer.data + offset, pwm1ReadPosition); - offset += sizeof(uint8_t); - writeStateValue8(buffer.data + offset, pwm1WritePosition); - offset += sizeof(uint8_t); - //misc writeStateValue8(buffer.data + offset, palmMisc.powerButtonLed); offset += sizeof(uint8_t); @@ -553,8 +457,13 @@ bool emulatorLoadState(buffer_t buffer){ uint8_t* stateSdCardBuffer; //state validation, wont load states that are not from the same state version +#if defined(EMU_SUPPORT_PALM_OS5) + if(readStateValue32(buffer.data + offset) != (SAVE_STATE_VERSION | (palmEmulatingTungstenC ? SAVE_STATE_FOR_TUNGSTEN_C : 0))) + return false; +#else if(readStateValue32(buffer.data + offset) != SAVE_STATE_VERSION) return false; +#endif offset += sizeof(uint32_t); //features, hotpluging emulated hardware is not supported @@ -575,110 +484,45 @@ bool emulatorLoadState(buffer_t buffer){ palmFramebufferHeight = readStateValue16(buffer.data + offset); offset += sizeof(uint16_t); - //chips - flx68000LoadState(buffer.data + offset); - offset += flx68000StateSize(); - sed1376LoadState(buffer.data + offset); - offset += sed1376StateSize(); - ads7846LoadState(buffer.data + offset); - offset += ads7846StateSize(); - pdiUsbD12LoadState(buffer.data + offset); - offset += pdiUsbD12StateSize(); - expansionHardwareLoadState(buffer.data + offset); - offset += expansionHardwareStateSize(); +#if defined(EMU_SUPPORT_PALM_OS5) + if(palmEmulatingTungstenC){ + //chips + pxa255LoadState(buffer.data + offset); + offset += pxa255StateSize(); + expansionHardwareLoadState(buffer.data + offset); + offset += expansionHardwareStateSize(); + + //memory + memcpy(palmRam, buffer.data + offset, TUNGSTEN_C_RAM_SIZE); + swap16BufferIfLittle(palmRam, TUNGSTEN_C_RAM_SIZE / sizeof(uint16_t)); + offset += TUNGSTEN_C_RAM_SIZE; + } + else{ +#endif + //chips + dbvzLoadState(buffer.data + offset); + offset += dbvzStateSize(); + sed1376LoadState(buffer.data + offset); + offset += sed1376StateSize(); + ads7846LoadState(buffer.data + offset); + offset += ads7846StateSize(); + pdiUsbD12LoadState(buffer.data + offset); + offset += pdiUsbD12StateSize(); + expansionHardwareLoadState(buffer.data + offset); + offset += expansionHardwareStateSize(); + + //memory + memcpy(palmRam, buffer.data + offset, M515_RAM_SIZE); + swap16BufferIfLittle(palmRam, M515_RAM_SIZE / sizeof(uint16_t)); + offset += M515_RAM_SIZE; +#if defined(EMU_SUPPORT_PALM_OS5) + } +#endif //sandbox, does nothing when disabled sandboxLoadState(buffer.data + offset); offset += sandboxStateSize(); - //memory - memcpy(palmRam, buffer.data + offset, M515_RAM_SIZE); - swap16BufferIfLittle(palmRam, M515_RAM_SIZE / sizeof(uint16_t)); - offset += M515_RAM_SIZE; - memcpy(palmReg, buffer.data + offset, DBVZ_REG_SIZE); - swap16BufferIfLittle(palmReg, DBVZ_REG_SIZE / sizeof(uint16_t)); - offset += DBVZ_REG_SIZE; - memcpy(dbvzBankType, buffer.data + offset, DBVZ_TOTAL_MEMORY_BANKS); - offset += DBVZ_TOTAL_MEMORY_BANKS; - for(index = DBVZ_CHIP_BEGIN; index < DBVZ_CHIP_END; index++){ - dbvzChipSelects[index].enable = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - dbvzChipSelects[index].start = readStateValue32(buffer.data + offset); - offset += sizeof(uint32_t); - dbvzChipSelects[index].lineSize = readStateValue32(buffer.data + offset); - offset += sizeof(uint32_t); - dbvzChipSelects[index].mask = readStateValue32(buffer.data + offset); - offset += sizeof(uint32_t); - dbvzChipSelects[index].inBootMode = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - dbvzChipSelects[index].readOnly = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - dbvzChipSelects[index].readOnlyForProtectedMemory = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - dbvzChipSelects[index].supervisorOnlyProtectedMemory = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - dbvzChipSelects[index].unprotectedSize = readStateValue32(buffer.data + offset); - offset += sizeof(uint32_t); - } - - //timing - dbvzSysclksPerClk32 = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - palmCycleCounter = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - palmClockMultiplier = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - pllSleepWait = readStateValue8(buffer.data + offset); - offset += sizeof(int8_t); - pllWakeWait = readStateValue8(buffer.data + offset); - offset += sizeof(int8_t); - clk32Counter = readStateValue32(buffer.data + offset); - offset += sizeof(uint32_t); - pctlrCpuClockDivider = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - timerCycleCounter[0] = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - timerCycleCounter[1] = readStateValueDouble(buffer.data + offset); - offset += sizeof(uint64_t); - timerStatusReadAcknowledge[0] = readStateValue16(buffer.data + offset); - offset += sizeof(uint16_t); - timerStatusReadAcknowledge[1] = readStateValue16(buffer.data + offset); - offset += sizeof(uint16_t); - portDInterruptLastValue = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - - //SPI1 - for(index = 0; index < 9; index++){ - spi1RxFifo[index] = readStateValue16(buffer.data + offset); - offset += sizeof(uint16_t); - } - for(index = 0; index < 9; index++){ - spi1TxFifo[index] = readStateValue16(buffer.data + offset); - offset += sizeof(uint16_t); - } - spi1RxReadPosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - spi1RxWritePosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - spi1RxOverflowed = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - spi1TxReadPosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - spi1TxWritePosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - - //PWM1, audio - pwm1ClocksToNextSample = readStateValue32(buffer.data + offset); - offset += sizeof(int32_t); - for(index = 0; index < 6; index++){ - pwm1Fifo[index] = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - } - pwm1ReadPosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - pwm1WritePosition = readStateValue8(buffer.data + offset); - offset += sizeof(uint8_t); - //misc palmMisc.powerButtonLed = readStateValue8(buffer.data + offset); offset += sizeof(uint8_t); @@ -754,7 +598,7 @@ bool emulatorLoadState(buffer_t buffer){ offset += stateSdCardSize; //some modules depend on all the state memory being loaded before certian required actions can occur(refreshing cached data, freeing memory blocks) - flx68000LoadStateFinished(); + dbvzLoadStateFinished(); return true; } diff --git a/src/emulator.h b/src/emulator.h index 1271cb6..96fb9b5 100644 --- a/src/emulator.h +++ b/src/emulator.h @@ -53,7 +53,11 @@ static void debugLog(char* str, ...){}; #define SD_CARD_BLOCK_DATA_PACKET_SIZE (1 + SD_CARD_BLOCK_SIZE + 2) #define SD_CARD_RESPONSE_FIFO_SIZE (SD_CARD_BLOCK_DATA_PACKET_SIZE * 3) #define SD_CARD_NCR_BYTES 1//how many 0xFF bytes come before the R1 response -#define SAVE_STATE_VERSION 0 +#define SAVE_STATE_VERSION 0x00000001 +#if defined(EMU_SUPPORT_PALM_OS5) +#define SAVE_STATE_FOR_TUNGSTEN_C 0x80000000 +#endif + //system constants #define M515_CRYSTAL_FREQUENCY 32768 @@ -155,7 +159,6 @@ extern bool palmEmulatingTungstenC;//read allowed, but not advised #endif extern uint8_t* palmRom;//dont touch extern uint8_t* palmRam;//access allowed to read save RAM without allocating a giant buffer, but endianness must be taken into account -extern uint8_t* palmReg;//dont touch extern input_t palmInput;//write allowed extern sd_card_t palmSdCard;//dont touch extern misc_hw_t palmMisc;//read/write allowed diff --git a/src/expansionHardware.c b/src/expansionHardware.c index d632362..e278be8 100644 --- a/src/expansionHardware.c +++ b/src/expansionHardware.c @@ -6,7 +6,7 @@ #include "portability.h" #include "specs/emuFeatureRegisterSpec.h" #include "m515Bus.h" -#include "dbvzRegisters.h" +#include "dbvz.h" #include "silkscreen.h" #include "sed1376.h" #include "flx68000.h" diff --git a/src/flx68000.c b/src/flx68000.c index 38656e3..2a9d1ce 100755 --- a/src/flx68000.c +++ b/src/flx68000.c @@ -3,7 +3,7 @@ #include "emulator.h" #include "portability.h" -#include "dbvzRegisters.h" +#include "dbvz.h" #include "m515Bus.h" #include "m68k/m68kcpu.h" @@ -79,7 +79,7 @@ uint32_t m68k_read_pcrelative_32(uint32_t address){ #endif #endif -void flx68000Init(void){ +void flx68000Reset(void){ static bool inited = false; if(!inited){ @@ -90,11 +90,7 @@ void flx68000Init(void){ inited = true; } -} -void flx68000Reset(void){ - dbvzResetRegisters(); - dbvzResetAddressSpace();//address space must be reset after hardware registers because it is dependent on them m68k_pulse_reset(); } diff --git a/src/flx68000.h b/src/flx68000.h index 21bea00..73a9a1b 100755 --- a/src/flx68000.h +++ b/src/flx68000.h @@ -4,7 +4,6 @@ #include #include -void flx68000Init(void); void flx68000Reset(void); uint32_t flx68000StateSize(void); void flx68000SaveState(uint8_t* data); diff --git a/src/m515Bus.c b/src/m515Bus.c index 256a70e..2a67124 100644 --- a/src/m515Bus.c +++ b/src/m515Bus.c @@ -2,7 +2,7 @@ #include #include "emulator.h" -#include "dbvzRegisters.h" +#include "dbvz.h" #include "expansionHardware.h" #include "m515Bus.h" #include "portability.h" diff --git a/src/makefile.all b/src/makefile.all index 34746f9..b25b225 100644 --- a/src/makefile.all +++ b/src/makefile.all @@ -1,7 +1,7 @@ EMU_DEFINES := EMU_SOURCES_C := $(EMU_PATH)/emulator.c \ $(EMU_PATH)/m515Bus.c \ - $(EMU_PATH)/dbvzRegisters.c \ + $(EMU_PATH)/dbvz.c \ $(EMU_PATH)/flx68000.c \ $(EMU_PATH)/sed1376.c \ $(EMU_PATH)/ads7846.c \ diff --git a/src/sed1376.c b/src/sed1376.c index 3a82565..dea1cdc 100644 --- a/src/sed1376.c +++ b/src/sed1376.c @@ -3,7 +3,7 @@ #include "emulator.h" #include "portability.h" -#include "dbvzRegisters.h" +#include "dbvz.h" #include "flx68000.h"//for flx68000GetPc() #include "specs/sed1376RegisterSpec.h"