Ive been dabbling with Rainbow Islands for quite a while now and there are a couple of things that just didn’t feel right to me. They both involve the self check routines invoked at startup.
The first is the C-Chip check. In the original ROMs if the C-Chip fails its test you will be met with nothing but a blank screen as the palette has not yet been initialised. The second issue is with the ROM checks. The two MASKROMs are checked properly, in that they do a bitsum and compare to a value. The four EPROMs however do no such thing, the code simply checks for a WORD value of #$1987. This is poor IMO.
Today, as a Christmas present to myself (and maybe others) I have addressed both of these issues.
There is a catch however. The patch I did for the C-Chip is no problem but to do the patch for the ROM check I had to use free space in the ROM area, this free space is found at the end of the address space for the ROMs meaning that it would be contained in the 23C1000 MASKROMs. So if you want to use these you need to make an adapter of some sort.
Because of this I have included both sets of patches, one for just the C-Chip fix and the second for the whole lot.
I have not yet tested these on the real hardware but I think they should work.
C-Chip only
C-Chip & ROM check (requires pinout mod)
Merry Christmas!