mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-14 00:45:07 +01:00
All: Factorise code seeking a file back N lines
This saves 890 bytes of program space.
This commit is contained in:
parent
0a627e5bd4
commit
27baa2b164
@ -394,20 +394,7 @@ void setCart_COL() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rewind one line
|
// Rewind one line
|
||||||
for (byte count_newline = 0; count_newline < 2; count_newline++) {
|
rewind_line(myFile);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
@ -485,20 +472,7 @@ void setCart_COL() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,6 +616,20 @@ void get_line(char* str_buf, FsFile* readfile, uint8_t maxi) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rewind_line(FsFile &readfile, byte count=1) {
|
||||||
|
uint32_t position = readfile.curPosition();
|
||||||
|
count++;
|
||||||
|
for (byte count_newline = 0; count_newline < count; count_newline++) {
|
||||||
|
while (position--) {
|
||||||
|
readfile.seekCur(-1);
|
||||||
|
if (readfile.peek() == '\n')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (position)
|
||||||
|
readfile.seekCur(1);
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate CRC32 if needed and compare it to CRC read from database
|
// Calculate CRC32 if needed and compare it to CRC read from database
|
||||||
boolean compareCRC(const char* database, char* crcString, boolean renamerom, int offset) {
|
boolean compareCRC(const char* database, char* crcString, boolean renamerom, int offset) {
|
||||||
#ifdef nointro
|
#ifdef nointro
|
||||||
|
@ -885,20 +885,7 @@ void getCartInfo_GBA() {
|
|||||||
// Check if string is a match
|
// Check if string is a match
|
||||||
if (strcmp(tempStr, cartID) == 0) {
|
if (strcmp(tempStr, cartID) == 0) {
|
||||||
// Rewind to start of entry
|
// Rewind to start of entry
|
||||||
for (byte count_newline = 0; count_newline < 2; count_newline++) {
|
rewind_line(myFile);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
while (myFile.available()) {
|
while (myFile.available()) {
|
||||||
@ -975,20 +962,7 @@ void getCartInfo_GBA() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -807,20 +807,7 @@ void setCart_INTV() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rewind one line
|
// Rewind one line
|
||||||
for (byte count_newline = 0; count_newline < 2; count_newline++) {
|
rewind_line(myFile);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
@ -911,20 +898,7 @@ void setCart_INTV() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,20 +581,7 @@ boolean getMapping() {
|
|||||||
if (((strcmp(crc_search, crcStr) == 0) || (strcmp(crc_search, crcStrMMC3) == 0)) && (strcmp(crc_search, "BD7BC39F") != 0)) {
|
if (((strcmp(crc_search, crcStr) == 0) || (strcmp(crc_search, crcStrMMC3) == 0)) && (strcmp(crc_search, "BD7BC39F") != 0)) {
|
||||||
|
|
||||||
// Rewind to start of entry
|
// Rewind to start of entry
|
||||||
for (byte count_newline = 0; count_newline < 4; count_newline++) {
|
rewind_line(myFile, 3);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
|
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
@ -751,20 +738,7 @@ boolean getMapping() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -874,20 +848,7 @@ void selectMapping() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rewind one line
|
// Rewind one line
|
||||||
for (byte count_newline = 0; count_newline < 2; count_newline++) {
|
rewind_line(myFile);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
@ -1035,20 +996,7 @@ void selectMapping() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,20 +408,7 @@ void setCart_WSV() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rewind one line
|
// Rewind one line
|
||||||
for (byte count_newline = 0; count_newline < 2; count_newline++) {
|
rewind_line(myFile);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Display database
|
// Display database
|
||||||
@ -502,20 +489,7 @@ void setCart_WSV() {
|
|||||||
|
|
||||||
// Previous
|
// Previous
|
||||||
else if (b == 2) {
|
else if (b == 2) {
|
||||||
for (byte count_newline = 0; count_newline < 7; count_newline++) {
|
rewind_line(myFile, 6);
|
||||||
while (1) {
|
|
||||||
if (myFile.curPosition() == 0) {
|
|
||||||
break;
|
|
||||||
} else if (myFile.peek() == '\n') {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
myFile.seekCur(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (myFile.curPosition() != 0)
|
|
||||||
myFile.seekCur(2);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user