mirror of
https://github.com/libretro/Mu.git
synced 2026-02-04 05:35:13 +00:00
Update ARM debug functions, allow QT port to compile without OS 5 support
This commit is contained in:
@@ -149,6 +149,10 @@ void EmuWrapper::writeOutSaves(){
|
||||
}
|
||||
|
||||
uint32_t EmuWrapper::init(const QString& assetPath, bool useOs5, uint32_t features, bool fastBoot){
|
||||
#if !defined(EMU_SUPPORT_PALM_OS5)
|
||||
useOs5 = false;
|
||||
#endif
|
||||
|
||||
if(!emuRunning && !emuInited){
|
||||
//start emu
|
||||
uint32_t error;
|
||||
@@ -435,6 +439,7 @@ void EmuWrapper::setKeyValue(uint8_t key, bool pressed){
|
||||
emuInput.buttonDown = pressed;
|
||||
break;
|
||||
|
||||
#if defined(EMU_SUPPORT_PALM_OS5)
|
||||
case BUTTON_LEFT:
|
||||
emuInput.buttonLeft = pressed;
|
||||
break;
|
||||
@@ -446,6 +451,7 @@ void EmuWrapper::setKeyValue(uint8_t key, bool pressed){
|
||||
case BUTTON_CENTER:
|
||||
emuInput.buttonCenter = pressed;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case BUTTON_CALENDAR:
|
||||
emuInput.buttonCalendar = pressed;
|
||||
@@ -483,12 +489,14 @@ QVector<uint64_t>& EmuWrapper::debugGetDuplicateLogEntryCount(){
|
||||
QString EmuWrapper::debugGetCpuRegisterString(){
|
||||
QString regString = "";
|
||||
|
||||
#if defined(EMU_SUPPORT_PALM_OS5)
|
||||
if(palmEmulatingTungstenT3){
|
||||
for(uint8_t regs = 0; regs < 16; regs++)
|
||||
regString += QString::asprintf("R%d:0x%08X\n", regs, pxa255GetRegister(regs));
|
||||
regString.resize(regString.size() - 1);//remove extra '\n'
|
||||
}
|
||||
else{
|
||||
#endif
|
||||
for(uint8_t dRegs = 0; dRegs < 8; dRegs++)
|
||||
regString += QString::asprintf("D%d:0x%08X\n", dRegs, flx68000GetRegister(dRegs));
|
||||
for(uint8_t aRegs = 0; aRegs < 8; aRegs++)
|
||||
@@ -496,11 +504,17 @@ QString EmuWrapper::debugGetCpuRegisterString(){
|
||||
regString += QString::asprintf("SP:0x%08X\n", flx68000GetRegister(15));
|
||||
regString += QString::asprintf("PC:0x%08X\n", flx68000GetRegister(16));
|
||||
regString += QString::asprintf("SR:0x%04X", flx68000GetRegister(17));
|
||||
#if defined(EMU_SUPPORT_PALM_OS5)
|
||||
}
|
||||
#endif
|
||||
|
||||
return regString;
|
||||
}
|
||||
|
||||
uint64_t EmuWrapper::debugGetEmulatorMemory(uint32_t address, uint8_t size){
|
||||
#if defined(EMU_SUPPORT_PALM_OS5)
|
||||
if(palmEmulatingTungstenT3)
|
||||
return pxa255ReadArbitraryMemory(address, size);
|
||||
#endif
|
||||
return flx68000ReadArbitraryMemory(address, size);
|
||||
}
|
||||
|
||||
@@ -31,6 +31,13 @@ SettingsManager::SettingsManager(QWidget* parent) :
|
||||
ui->featureHleApis->setChecked(settings->value("featureHleApis", false).toBool());
|
||||
ui->featureDurable->setChecked(settings->value("featureDurable", false).toBool());
|
||||
|
||||
#if !defined(EMU_SUPPORT_PALM_OS5)
|
||||
ui->useOs5->hide();
|
||||
ui->selectLeftKey->hide();
|
||||
ui->selectRightKey->hide();
|
||||
ui->selectCenterKey->hide();
|
||||
#endif
|
||||
|
||||
setKeySelectorState(-1);
|
||||
updateButtonKeys();
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ v1.1.0 to v3.2.0(*** ** 2020 - *** ** 2020)
|
||||
RetroArch GUI:
|
||||
//TODO: allow adding more content after boot
|
||||
//TODO: get EMU_MANAGE_HOST_CPU_PIPELINE working on other platforms then the main 4
|
||||
//TODO: get OpenMP working with RetroArch
|
||||
//TODO: get OpenMP working with RetroArch(already works but breaks the no external libs rule)
|
||||
//FIXED: when compiling with "make platform=windows_x86_64" the dll wont load(theres a really good chance its because "libgomp-1.dll"(the OpenMP handler library) is missing from the RetroArch folder)(fixed by disableing OpenMP :( )
|
||||
|
||||
Qt GUI:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
#include "pxa255.h"
|
||||
#include "pxa255_DMA.h"
|
||||
#include "pxa255_DSP.h"
|
||||
#include "pxa255_GPIO.h"
|
||||
@@ -64,7 +65,7 @@ bool pxa255Init(uint8_t** returnRom, uint8_t** returnRam){
|
||||
mem_offset += TUNGSTEN_T3_RAM_SIZE;
|
||||
|
||||
//memory regions that are not directly mapped to a buffer are not added to mem_areas
|
||||
//adding them will cause SIGSEGVs
|
||||
//adding them causes SIGSEGVs
|
||||
|
||||
//accessors
|
||||
//default
|
||||
@@ -247,3 +248,29 @@ void pxa255Execute(bool wantVideo){
|
||||
uint32_t pxa255GetRegister(uint8_t reg){
|
||||
return reg_pc(reg);
|
||||
}
|
||||
|
||||
uint64_t pxa255ReadArbitraryMemory(uint32_t address, uint8_t size){
|
||||
uint64_t data = UINT64_MAX;//invalid access
|
||||
|
||||
switch(size){
|
||||
case 8:
|
||||
if(read_byte_map[address >> 26] != bad_read_byte){
|
||||
data = read_byte_map[address >> 26](address);
|
||||
}
|
||||
break;
|
||||
|
||||
case 16:
|
||||
if(read_half_map[address >> 26] != bad_read_half){
|
||||
data = read_half_map[address >> 26](address);
|
||||
}
|
||||
break;
|
||||
|
||||
case 32:
|
||||
if(read_word_map[address >> 26] != bad_read_word){
|
||||
data = read_word_map[address >> 26](address);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -23,5 +23,7 @@ void pxa255LoadState(uint8_t* data);
|
||||
void pxa255Execute(bool wantVideo);//runs the CPU for 1 frame
|
||||
|
||||
uint32_t pxa255GetRegister(uint8_t reg);//only for debugging
|
||||
#define pxa255GetPc() pxa255GetRegister(15)
|
||||
uint64_t pxa255ReadArbitraryMemory(uint32_t address, uint8_t size);//only for debugging
|
||||
|
||||
#endif
|
||||
|
||||
@@ -26,12 +26,12 @@ static uint32_t pxa255_io_read_word(uint32_t addr){
|
||||
case PXA255_BTUART_BASE >> 16:
|
||||
case PXA255_STUART_BASE >> 16:
|
||||
//need to implement these
|
||||
debugLog("Unimplemented 32 bit PXA255 register read:0x%08X\n", addr);
|
||||
debugLog("Unimplemented 32 bit PXA255 register read:0x%08X, PC:0x%08X\n", addr, pxa255GetPc());
|
||||
out = 0x00000000;
|
||||
break;
|
||||
|
||||
default:
|
||||
debugLog("Invalid 32 bit PXA255 register read:0x%08X\n", addr);
|
||||
debugLog("Invalid 32 bit PXA255 register read:0x%08X, PC:0x%08X\n", addr, pxa255GetPc());
|
||||
out = 0x00000000;
|
||||
break;
|
||||
}
|
||||
@@ -65,11 +65,11 @@ static void pxa255_io_write_word(uint32_t addr, uint32_t value){
|
||||
case PXA255_BTUART_BASE >> 16:
|
||||
case PXA255_STUART_BASE >> 16:
|
||||
//need to implement these
|
||||
debugLog("Unimplemented 32 bit PXA255 register write:0x%08X, value:0x%08X\n", addr, value);
|
||||
debugLog("Unimplemented 32 bit PXA255 register write:0x%08X, value:0x%08X, PC:0x%08X\n", addr, value, pxa255GetPc());
|
||||
break;
|
||||
|
||||
default:
|
||||
debugLog("Invalid 32 bit PXA255 register write:0x%08X, value:0x%08X\n", addr, value);
|
||||
debugLog("Invalid 32 bit PXA255 register write:0x%08X, value:0x%08X, PC:0x%08X\n", addr, value, pxa255GetPc());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -87,11 +87,13 @@ static void pxa255_lcd_write_word(uint32_t addr, uint32_t value){
|
||||
}
|
||||
|
||||
static uint32_t pxa255_memctrl_read_word(uint32_t addr){
|
||||
//MEMCTRL only governs timing, refresh and protocol configs, not mapping, should be safe to ignore
|
||||
debugLog("32 bit PXA255 MEMCTRL register read:0x%08X\n", addr);
|
||||
return 0x00000000;
|
||||
}
|
||||
|
||||
static void pxa255_memctrl_write_word(uint32_t addr, uint32_t value){
|
||||
//MEMCTRL only governs timing, refresh and protocol configs, not mapping, should be safe to ignore
|
||||
debugLog("32 bit PXA255 MEMCTRL register write:0x%08X, value:0x%08X\n", addr, value);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#define REG_SAR 1
|
||||
#define REG_TAR 2
|
||||
#define REG_CR 3
|
||||
#define REG_CSR 4
|
||||
#define REG_CSR 4
|
||||
|
||||
|
||||
static void pxa255dmaPrvChannelRegWrite(_UNUSED_ Pxa255dma* dma, UInt8 channel, UInt8 reg, UInt32 val){
|
||||
|
||||
Reference in New Issue
Block a user