This post is outdated.
Please refer to the new OmniPatcher tool for a MUCH better (and much safer) way to do things.
Well, it’s actually fairly easy… BUT… if you don’t know what you’re doing or are not comfortable with a hex editor, it might not be a good idea… on the other hand, nothing too bad can happen. In the worst case, the firmware will just be bad and crash the drive, in which case, you’ll use MtkFlash to recover.
Anyway, proceed at your own risk!
1/ Open a .BIN version of the firmware with a Hex editor.
2/ Jump to the 13th bank (starting at address 0xC0000), as there is where the +R information are stored. On the 1S and 2S drives, -R is buried deep within the 14th bank (which starts at address 0xD0000). On the 3S drives, -R is located near the top of the 10th bank (starting at address 0x90000).
For the sake of clarity, I will now make up some terminology… Now, if you want to try a Prodisc R02@R03, where you have the R02 disc use a R03 strategy, then the R02 strat is the “guest” strat and R03 is the “host” strat.
3/ Find the guest strat and make a note of its ID. For +R, this is 24 bytes long (8 bytes for MID, 3 bytes for TID, 1 byte for revision, and then doubled because everything is then buffered by 0x00 bytes). For -R, this is 13 bytes (12 bytes for the media code, and 1 byte, usually 0x50 or 0x52, which is kind of a type ID, I think). You may find it helpful to copy this. But it’s usually not necessary, as oftentimes, the guest code is identical to the host code except for just 1 or 2 bytes, in which case, it’d be easier to just remember what those different bytes are.
4/ Now, find the host code. And replace it with the guest code. In many cases, this is really easy. In the case of Prodisc R02@R03, this involves flipping just one byte (changing the “3” to a “2”). In the case of Ricoh R01@R02, this involves flipping only two bytes (one byte to change “R02” to “R01” and one byte to flip the revision code from 0x03 to 0x02… the Prodiscs have the same revision code, which is why the 1-byte TID change was all that was needed). Of course, if you decide to do something crazy like PRODISCR02@Philips081, that could require quite a few more bytes to be changed, which is when copy-and-paste might be nice.
5/ Now, go back to the guest code and disable it. Do this by renaming it to something else. You could change it to something like ZZZZZZZZZZZ. Or more commonly, you can just rename it to the (now-vacated) host code, which is easier and requires fewer changed bytes.
6/ Basically, all that has been done was just swap the locations of the host and guest codes in the media table, which will result in their write strats being swapped. The downside is that now that the host code’s strat is being used for the guest code, this messes up your ability to burn real discs of the host code.
7/ One thing to watch out for: a handful of the codes have multiple entries! For example, there are two copies of RICOHJPN/R00/01. If this is the case, all instances of that code must be changed.
So as you can see, it’s actually a pretty simple task, as long as long as you’re comfortable with playing around with your hex editor.
(and much thanks to ala42 for first posting the media code/strat information in the forums long ago… I learned much for those posts!)