Hex viewer and nibble select working somewhat

This commit is contained in:
meepingsnesroms
2018-04-04 13:25:00 -07:00
parent def015289f
commit 77be71faf2
3 changed files with 26 additions and 17 deletions

View File

@@ -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(){

View File

@@ -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();
}

View File

@@ -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';
}
}
}