diff --git a/bin/driver7M5.bin b/bin/driver7M5.bin index b03ac94..29218ab 100755 Binary files a/bin/driver7M5.bin and b/bin/driver7M5.bin differ diff --git a/bin/rom8M.bin b/bin/rom8M.bin index 7faafab..a83ed6f 100755 Binary files a/bin/rom8M.bin and b/bin/rom8M.bin differ diff --git a/rdisk.c b/rdisk.c index 3c5b729..8bde1d1 100644 --- a/rdisk.c +++ b/rdisk.c @@ -53,12 +53,11 @@ void C24(Ptr sourcePtr, Ptr destPtr, unsigned long byteCount) { } // Switch to 32-bit mode and patch -#pragma parameter P24(__A0, __A1) -void __attribute__ ((noinline)) P24(Ptr ptr, Ptr patch) { +#pragma parameter P24(__A2, __D3) +void __attribute__ ((noinline)) P24(Ptr ptr, char patch) { signed char mode = true32b; SwapMMUMode(&mode); - if (*patch == 0x44) { Debugger(); } - //*ptr = *patch; // Patch byte + *ptr = patch; // Patch byte SwapMMUMode(&mode); } @@ -165,8 +164,8 @@ static void RDInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) { // Patch debug and CD-ROM enable bytes if (c->ramdisk) { - if (!dbgEN /*&& *RDiskDBGDisPos >= 0*/) { patch24(c->ramdisk + 0x00000031UL, RDiskDBGDisByte); } - if (!cdrEN /*&& *RDiskCDRDisPos >= 0*/) { patch24(c->ramdisk + 0x00012CAFUL, RDiskCDRDisByte); } + if (!dbgEN /*&& *RDiskDBGDisPos >= 0*/) { patch24(c->ramdisk + 0x00000031UL, 0x44); } + if (!cdrEN /*&& *RDiskCDRDisPos >= 0*/) { patch24(c->ramdisk + 0x00012CAFUL, 0x44); } } // Unmount if not booting from ROM disk diff --git a/rdisk.h b/rdisk.h index 0812bda..7267cff 100644 --- a/rdisk.h +++ b/rdisk.h @@ -37,8 +37,8 @@ typedef struct RDiskStorage_s { typedef void (*RDiskCopy_t)(Ptr, Ptr, unsigned long); #define copy24(s, d, b) { RDiskCopy_t f = C24; f(s, d, b); } -typedef void (*RDiskPatch_t)(Ptr, Ptr); -#define patch24(d, s) { RDiskPatch_t f = P24; f(d, s); } +typedef void (*RDiskPatch_t)(Ptr, char); +#define patch24(a, d) { RDiskPatch_t f = P24; f(a, d); } #define PackBits_Repeat(count) (-1 * (count - 1)) #define PackBits_Literal(count) (count - 1)