Banking support

This commit is contained in:
logicog
2025-06-24 06:06:49 +02:00
parent 178e3d2550
commit 797ae23865
+14 -1
View File
@@ -1,6 +1,6 @@
/*
* injector <input.bin> <patch.hex> <output.bin>
* e.g.: ./injector kp-9000-6hx-x.bin RTLPlayground/rwintercept.hex kp-9000-6hx-x_patched.bin
* e.g.: ./injector image.bin patch.hex image_patched.bin
*/
#include <stdio.h>
#include <stdlib.h>
@@ -12,6 +12,8 @@
unsigned char buffer[BUFFER_SIZE];
FILE *inptr, *outptr, *patchptr;
int bank = 0;
int main(int argc, char **argv)
{
char * line = NULL;
@@ -60,9 +62,20 @@ int main(int argc, char **argv)
sscanf(line, "%x: %x", &addr, &value);
if (addr < 0x4000)
addr += OFFSET;
if (addr >= 0xff00) { // A bank change
bank = value % 64;
bank = bank == 1 ? 0 : bank;
printf("Switching to bank: %d\n", bank);
continue;
}
if (addr < filesize) {
patches++;
if (bank) {
buffer[addr + (bank-1) * 0xc000] = value;
printf("%s gives %x <- %x\n", line, addr + (bank-1) * 0xc000, value);
} else {
buffer[addr] = value;
}
// printf("%s gives %x <- %x\n", line, addr, value);
} else {
printf("Cannot patch: %s\n", line);