I was studding your code and I have anuy doubts.
In n64info, rdram's range is
0x0000 0000 to 0x001F FFFF RDRAM range 0
0x0020 0000 to 0x003F FFFF RDRAM range 1
so, its has 0x400000 bytes.
In memory.c is
unsigned long rdram[0x800000/4];
has it been superdimensioned?
You forgot about the expansion pack, which adds another 4MB for certain games. That's 8MB total, divide by 4 to store in a long array.
Anyone able to mod the Windows source for breakpoints on read/write/execute? I don't need a full blown debugger or anything, just breakpoints.