Heeeeeey, so this isn't dead. I did fix the color correction several seeks ago but forgot to update this topic. In other news, I finally found the room pointers. I'm not super knowledgeable with assembly or anything so figuring this out took quite a long time. With this info it should be fairly easy to make all sorts of adjustments to rooms.Room Pointer Data:
Room pointer data starts at 0x18010 in the rom. The pointers are stored in two groups, the first byte for all rooms, in order, followed by the second byte for all rooms, also in order.
First bytes are 0x18010 - 0x1810C
Second bytes are 0x1810D - 0x18209
During a room transition, the room data is very briefly switched into memory. The room pointers are then stored at 0x0016 and 0x0017 in memory and used as an offset to lookup the room data.
So for example:
1st byte: 0x18012 = 03
2nd byte: 0x1810F = 84
This means the room data for Room 02 is currently loaded into memory address 0x8403. And sure enough, here is is:
Interestingly enough, this also explains why Room A2 does not exist. The pointer data for A2 just points to Room 00. With this information, you could easily adjust the pointer and add room A2 back in somewhere.
Room 00: 0x18010 = 88, 0x1810F = 83
Room A2: 0x180B2 = 88, 0x181AF = 83
Also, if you make room edits and need to update the pointers in the ROM your room data should start at 0x010010 + room offset. For example, room 2A:
2A offset byte 1 @ 0x1803A: D7
2A offset byte 2 @ 0x18137: 98
Room start should be located in ROM at byte 10010 + 98D7 = 0x0198E7 which is correct. This works for every single room in game and I have validated it accordingly. I already have an idea on how to reintroduce missing room A2 into my randomizer... so many ideas!
Regarding room data, there are three groups of bytes in the middle of room data that I don't believe are ever utilized. While I am not 100% sure yet, this appears to be left over partial room data or just garbage.
Unused Bytes #1: 0x183CB -> 0x183F9 (47 bytes)
Unused Bytes #2: 0x1A321 -> 0x1A3FE (222 bytes)
Unused Bytes #3: 0x1E57F -> 0x1E597 (25 bytes)
While this isn't tons of space, it does give us an additional 294 bytes of room data space for whatever adjustments we would like to make. 99% of rooms are < 300 bytes so this is fairly substation extra space.
One thing that still eludes me in exactly how the graphics are stored in the ROM. Currently, this is beyond my grasp but I hope to figure this out eventually because adding custom graphics would be great.