mirror of
https://github.com/libretro/Mu.git
synced 2026-09-23 15:15:43 +00:00
Hex viewer and nibble select working somewhat
This commit is contained in:
@@ -35,6 +35,7 @@ var makeVar(uint8_t length, uint8_t type, uint64_t value){
|
||||
var newVar;
|
||||
newVar.type = (length & 0xF0) | (type & 0x0F);
|
||||
newVar.value = value;
|
||||
return newVar;
|
||||
}
|
||||
Boolean varsEqual(var var1, var var2){
|
||||
if(var1.type == var2.type && var1.value == var2.value)
|
||||
@@ -195,6 +196,7 @@ var getSubprogramArgs(){
|
||||
|
||||
void setSubprogramArgs(var args){
|
||||
subprogramArgs = args;
|
||||
subprogramArgsSet = true;
|
||||
}
|
||||
|
||||
var subprogramGetData(){
|
||||
|
||||
@@ -6,38 +6,40 @@
|
||||
|
||||
var hexRamBrowser(){
|
||||
static Boolean clearScreen = true;
|
||||
static uint32_t nibble = 0;/*what column to change with up/down keys*/
|
||||
static uint32_t nibble = 0x10000000;
|
||||
static uint32_t pointerValue = UINT32_C(0x77777777);/*in the middle of the address space*/
|
||||
static char hexString[100];
|
||||
|
||||
if(getButtonPressed(buttonUp)){
|
||||
pointerValue += 0x1 << (4 * (7 - nibble));
|
||||
pointerValue += nibble;
|
||||
setDebugTag("Nibble Up");
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonDown)){
|
||||
pointerValue -= 0x1 << (4 * (7 - nibble));
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonLeft)){
|
||||
if(nibble > 0)
|
||||
nibble--;
|
||||
pointerValue -= nibble;
|
||||
setDebugTag("Nibble Down");
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonRight)){
|
||||
if(nibble < 7)
|
||||
nibble++;
|
||||
if(nibble > 0x00000001)
|
||||
nibble >>= 4;
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonLeft)){
|
||||
if(nibble < 0x10000000)
|
||||
nibble <<= 4;
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonSelect)){
|
||||
/*open hex viewer*/
|
||||
nibble = 0;
|
||||
nibble = 0x10000000;
|
||||
clearScreen = true;
|
||||
setSubprogramArgs(makeVar(LENGTH_ANY, TYPE_PTR, pointerValue));/*length doesnt matter*/
|
||||
setSubprogramArgs(makeVar(LENGTH_ANY, TYPE_PTR, (uint64_t)pointerValue));/*length doesnt matter*/
|
||||
execSubprogram(hexViewer);
|
||||
}
|
||||
|
||||
if(getButtonPressed(buttonBack)){
|
||||
nibble = 0;
|
||||
nibble = 0x10000000;
|
||||
clearScreen = true;
|
||||
exitSubprogram();
|
||||
}
|
||||
|
||||
@@ -79,9 +79,14 @@ static void hexHandler(uint32_t command){
|
||||
/*fill strings*/
|
||||
for(i = 0; i < ITEM_LIST_ENTRYS; i++){
|
||||
uint32_t displayAddress = hexViewOffset - bufferAddress;
|
||||
/*Palm OS sprintf only supports 16 bit ints*/
|
||||
StrPrintF(itemStrings[i], "0x%04X%04X:0x%02X", (uint16_t)(displayAddress >> 16), (uint16_t)displayAddress , readArbitraryMemory8(hexViewOffset));
|
||||
hexViewOffset++;
|
||||
if(displayAddress + i < listLength){
|
||||
/*Palm OS sprintf only supports 16 bit ints*/
|
||||
StrPrintF(itemStrings[i], "0x%04X%04X:0x%02X", (uint16_t)(displayAddress >> 16), (uint16_t)displayAddress , readArbitraryMemory8(hexViewOffset));
|
||||
hexViewOffset++;
|
||||
}
|
||||
else{
|
||||
itemStrings[i][0] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -98,7 +103,7 @@ static void testPickerHandler(uint32_t command){
|
||||
StrNCopy(itemStrings[i], hwTests[i].name, ITEM_STRING_SIZE);
|
||||
}
|
||||
else{
|
||||
StrNCopy(itemStrings[i], "Test List Overflow", ITEM_STRING_SIZE);
|
||||
itemStrings[i][0] = '\0';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user