diff --git a/qtBuildSystem/Mu/emuwrapper.cpp b/qtBuildSystem/Mu/emuwrapper.cpp index 9cd70e0..a0d116d 100644 --- a/qtBuildSystem/Mu/emuwrapper.cpp +++ b/qtBuildSystem/Mu/emuwrapper.cpp @@ -395,7 +395,7 @@ uint32_t EmuWrapper::installApplication(const QString& path){ appFile.close(); appData.data = (uint8_t*)appDataBuffer.data(); appData.size = appDataBuffer.size(); - error = sandboxCommand(SANDBOX_INSTALL_APP, &appData); + error = sandboxCommand(SANDBOX_DEBUG_INSTALL_APP, &appData); } if(!wasPaused) diff --git a/qtBuildSystem/Mu/mainwindow.cpp b/qtBuildSystem/Mu/mainwindow.cpp index 222600c..c23f257 100644 --- a/qtBuildSystem/Mu/mainwindow.cpp +++ b/qtBuildSystem/Mu/mainwindow.cpp @@ -184,10 +184,6 @@ uint32_t MainWindow::getEmuFeatureList(){ features |= settings->value("featureExtraKeys", false).toBool() ? FEATURE_EXT_KEYS : 0; features |= settings->value("featureSoundStreams", false).toBool() ? FEATURE_SND_STRMS : 0; -#if defined(EMU_DEBUG) - features |= FEATURE_DEBUG; -#endif - //lazy debug overrides //features = FEATURE_EXT_KEYS | FEATURE_EMU_HONEST | FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_DEBUG | FEATURE_SND_STRMS; //features = FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_DEBUG; diff --git a/src/armv5.c b/src/armv5.c index 0c6d32d..13f07d0 100755 --- a/src/armv5.c +++ b/src/armv5.c @@ -85,10 +85,10 @@ uint32_t armv5StateSize(void){ //armv5Cpu size += sizeof(uint32_t) * 16;//armv5Cpu.regs - size += sizeof(uint32_t) * 2;//armv5Cpu.CPSR/SPSR - size += sizeof(uint32_t) * 3 * 6;//armv5Cpu.bank_usr/bank_svc/bank_abt/bank_und/bank_irq/bank_fiq + size += sizeof(uint32_t) * 2;//armv5Cpu.CPSR / armv5Cpu.SPSR + size += sizeof(uint32_t) * 3 * 6;//armv5Cpu.bank_(usr/svc/abt/und/irq/fiq) size += sizeof(uint32_t) * 5;//armv5Cpu.extra_regs - size += sizeof(uint16_t) * 3;//armv5Cpu.waitingIrqs/waitingFiqs/CPAR + size += sizeof(uint16_t) * 3;//armv5Cpu.waiting(Irqs/Fiqs) / armv5Cpu.CPAR size += sizeof(uint32_t);//armv5Cpu.vectorBase //variables diff --git a/src/debug/sandbox.c b/src/debug/sandbox.c index 32d42bf..f23fbeb 100644 --- a/src/debug/sandbox.c +++ b/src/debug/sandbox.c @@ -50,6 +50,7 @@ static local_cpu_state_t sandboxOldFunctionCpuState; static mem_region_t sandboxWatchRegions[SANDBOX_MAX_WATCH_REGIONS];//code locations in m68k address space to be sandboxed static uint16_t sandboxWatchRegionsActive;//number of used sandboxWatchRegions entrys + static uint32_t sandboxCallGuestFunction(bool fallthrough, uint32_t address, uint16_t trap, const char* prototype, ...); #include "sandboxTrapNumToName.c.h" @@ -150,12 +151,11 @@ static void logApiCalls(void){ uint32_t programCounter = m68k_get_reg(NULL, M68K_REG_PPC); uint16_t instruction = m68k_get_reg(NULL, M68K_REG_IR); - if(instruction == 0x4E4F){ - //Trap F/API call + if(instruction == 0x4E4F/*Trap F/API call opcode*/){ uint16_t trap = m68k_read_memory_16(programCounter + 2); - if(!ignoreTrap(trap)){ + + if(!ignoreTrap(trap)) debugLog("Trap F API:%s, API number:0x%04X, PC:0x%08X\n", lookupTrap(trap), trap, programCounter); - } } } @@ -167,7 +167,6 @@ static bool isAlphanumeric(char chr){ static bool readable6CharsBack(uint32_t address){ uint8_t count; - for(count = 0; count < 6; count++) if(!isAlphanumeric(m68k_read_memory_8(address - count))) return false; @@ -588,6 +587,12 @@ void sandboxReset(void){ uint32_t sandboxStateSize(void){ uint32_t size = 0; + size += sizeof(uint8_t) * 2;//sandboxActive / sandboxControlHandoff + size += sizeof(uint32_t) * 4;//sandboxOldFunctionCpuState.(sp/pc/a0/d0) + size += sizeof(uint16_t);//sandboxOldFunctionCpuState.sr + size += sizeof(uint32_t) * 2;//sandboxWatchRegions.(address/size) + size += sizeof(uint16_t);//sandboxWatchRegionsActive + return size; } @@ -846,9 +851,10 @@ void sandboxOnMemoryAccess(uint32_t address, uint8_t size, bool write, uint32_t bool sandboxRunning(void){ uint32_t pc = m68k_get_reg(NULL, M68K_REG_PC); + uint16_t memRegion; //this is used to capture full logs when running from specific locations - for(uint16_t memRegion = 0; memRegion < sandboxWatchRegionsActive; memRegion++){ + for(memRegion = 0; memRegion < sandboxWatchRegionsActive; memRegion++){ if(pc >= sandboxWatchRegions[memRegion].address && pc < sandboxWatchRegions[memRegion].address + sandboxWatchRegions[memRegion].size) return true; } @@ -869,7 +875,7 @@ void sandboxReturn(void){ uint16_t sandboxSetWatchRegion(uint32_t address, uint32_t size){ uint16_t index; - //cant get 0 sized memory area + //cant watch 0 sized memory area if(size < 1) return 0xFFFF; diff --git a/src/emulator.c b/src/emulator.c index cbaf16c..db60a65 100644 --- a/src/emulator.c +++ b/src/emulator.c @@ -53,6 +53,14 @@ double palmClk32Sysclks;//how many SYSCLKs have happened in the current CLK32 uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t enabledEmuFeatures){ + //only accept valid non debug features from the user + enabledEmuFeatures &= FEATURE_RAM_HUGE | FEATURE_FAST_CPU | FEATURE_HYBRID_CPU | FEATURE_CUSTOM_FB | FEATURE_SYNCED_RTC | FEATURE_HLE_APIS | FEATURE_EMU_HONEST | FEATURE_EXT_KEYS | FEATURE_SND_STRMS; + +#if defined(EMU_DEBUG) + //enable debug features if compiled in debug mode + enabledEmuFeatures |= FEATURE_DEBUG; +#endif + if(emulatorInitialized) return EMU_ERROR_RESOURCE_LOCKED; @@ -189,10 +197,10 @@ uint32_t emulatorGetStateSize(void){ 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 / palmEmuFeatures.dst / palmEmuFeatures.size / palmEmuFeatures.value + size += sizeof(uint32_t) * 4;//palmEmuFeatures.(src/dst/size/value) size += sizeof(uint64_t);//palmSdCard.command - size += sizeof(uint8_t) * 8;//palmSdCard.commandBitsRemaining / palmSdCard.runningCommand / palmSdCard.commandIsAcmd /palmSdCard.allowInvalidCrc / palmSdCard.chipSelect / palmSdCard.receivingCommand / palmSdCard.inIdleState / palmSdCard.writeProtectSwitch - size += sizeof(uint16_t) * 2;//palmSdCard.responseReadPosition / palmSdCard.responseWritePosition + size += sizeof(uint8_t) * 8;//palmSdCard.(commandBitsRemaining/runningCommand/commandIsAcmd/allowInvalidCrc/chipSelect/receivingCommand/inIdleState/writeProtectSwitch) + size += sizeof(uint16_t) * 2;//palmSdCard.response(Read/Write)Position size += sizeof(int8_t);//palmSdCard.responseReadPositionBit size += sizeof(uint32_t) * 3;//palmSdCard.runningCommandVars size += SD_CARD_BLOCK_DATA_PACKET_SIZE;//palmSdCard.runningCommandPacket diff --git a/src/pdiUsbD12.c b/src/pdiUsbD12.c index 8323df1..0492898 100644 --- a/src/pdiUsbD12.c +++ b/src/pdiUsbD12.c @@ -70,10 +70,10 @@ void pdiUsbD12Reset(void){ uint32_t pdiUsbD12StateSize(void){ uint32_t size = 0; - size += sizeof(uint8_t); - size += sizeof(uint64_t); - size += PDIUSBD12_TRANSFER_BUFFER_SIZE * PDIUSBD12_FIFO_TOTAL_FIFOS; - size += sizeof(uint16_t) * PDIUSBD12_FIFO_TOTAL_FIFOS * 2; + size += sizeof(uint8_t);//pdiUsbD12Command + size += sizeof(uint64_t);//pdiUsbD12CommandState + size += PDIUSBD12_TRANSFER_BUFFER_SIZE * PDIUSBD12_FIFO_TOTAL_FIFOS;//pdiUsbD12FifoBuffer + size += sizeof(uint16_t) * PDIUSBD12_FIFO_TOTAL_FIFOS * 2;//pdiUsbD12(Read/Write)Position return size; }