From eed3324a56944b564c5393a29b65911df685019c Mon Sep 17 00:00:00 2001 From: Lesserkuma Date: Fri, 23 Sep 2022 21:55:16 +0200 Subject: [PATCH] Display full ROM title for GB and GBA --- Cart_Reader/GB.ino | 12 +++++++++--- Cart_Reader/GBA.ino | 5 ++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Cart_Reader/GB.ino b/Cart_Reader/GB.ino index a4d3b8f..f88f4fa 100644 --- a/Cart_Reader/GB.ino +++ b/Cart_Reader/GB.ino @@ -787,11 +787,17 @@ void getCartInfo_GB() { // Get name byte myLength = 0; - - for (int addr = 0x0134; addr <= 0x13C; addr++) { - if (((char(sdBuffer[addr]) >= 48 && char(sdBuffer[addr]) <= 57) || (char(sdBuffer[addr]) >= 65 && char(sdBuffer[addr]) <= 122)) && myLength < 15) { + byte x = 0; + if (sdBuffer[0x143] == 0x80 || sdBuffer[0x143] == 0xC0) { + x++; + } + for (int addr = 0x0134; addr <= 0x0143-x; addr++) { + if (isprint(sdBuffer[addr]) && sdBuffer[addr] != '<' && sdBuffer[addr] != '>' && sdBuffer[addr] != ':' && sdBuffer[addr] != '"' && sdBuffer[addr] != '/' && sdBuffer[addr] != '\\' && sdBuffer[addr] != '|' && sdBuffer[addr] != '?' && sdBuffer[addr] != '*') { romName[myLength] = char(sdBuffer[addr]); myLength++; + } else if (char(sdBuffer[addr]) != 0) { + romName[myLength] = 0x5F; + myLength++; } } } diff --git a/Cart_Reader/GBA.ino b/Cart_Reader/GBA.ino index 6c00faa..2b95cd4 100644 --- a/Cart_Reader/GBA.ino +++ b/Cart_Reader/GBA.ino @@ -895,9 +895,12 @@ void getCartInfo_GBA() { byte myLength = 0; for (int addr = 0xA0; addr <= 0xAB; addr++) { myByte = sdBuffer[addr]; - if (((char(myByte) >= 48 && char(myByte) <= 57) || (char(myByte) >= 65 && char(myByte) <= 122)) && myLength < 15) { + if (isprint(myByte) && myByte != '<' && myByte != '>' && myByte != ':' && myByte != '"' && myByte != '/' && myByte != '\\' && myByte != '|' && myByte != '?' && myByte != '*') { romName[myLength] = char(myByte); myLength++; + } else if (char(sdBuffer[addr]) != 0) { + romName[myLength] = 0x5F; + myLength++; } }