The Centris/Quadra 610, 650, and 800 machines all share the same memory controller, the djMEMC. These machines are limited to 32MB/bank which essentially means 32MB SIMMs. Some 128MB SIMMs show up as 64MB, spanning 2 contiguous banks in 1 SIMM slot.
However, the Q605 uses a djMEMC derivative and can support 128MB SIMMs.
It turns out, the djMEMC in these machines is also capable of supporting 128MB SIMMs, but the SizeMemory routine for this memory controller in ROM only looks for 32MB/bank.
A 1 bit change to ROM fixes this and these machines can use 128MB SIMMs!
However, the small change causes only large SIMMs to be probed, so if you use this change, make sure you only use large (tested with 128MB, 64MB should work as well) SIMMs. WIth a more robust change, support for all sizes <= 128MB should work, but I'm not sure such a change is worth the effort. If anyone really cares, let me know and I'll look into it.
For testing, I got a Centris 610 that came stock with a ROM SIMM slot populated with a ROM SIMM. This seems at least somewhat unusual. From pictures on google images, it looks like most of the 610/650/800 machines come with solder pads for a ROM SIMM, but that's it. It would be interesting if someone with one of these machines could install a SIMM slot, and try it out. The 610 comes with only 2 SIMM slots, limiting to 260MB (256MB SIMMS + 4MB onboard), but the other machines have 4 SIMM slots, which would yield pretty sizeable amounts of memory for a 68k mac.
Anyway, here's what my 610 says about having 2x128MB SIMMs installed:
And here's the ROM. This image has the ROM checksum disabled, and the RAM test disabled. 260MB RAM takes a while to test in this machine. c610+bigmem+nocrc+noramtest.bin
I got a Centris 650, and soldered a ROM SIMM socket to it (thanks dougg3!). It works, woo.
The Centris 610 and Centris 650 use the same ROM (checksums match), so I was able to use the exact same image as above.
However, an interesting thing happens. The patch to enable 128MB SIMMs works. I can put a 128MB SIMM in any of the 4 SIMM slots, and it is recognized as a full 128MB. This 650 has 8MB of onboard RAM. However, putting in more than 2 causes the system to do the good boot chime, then a short time later, the bad chimes. I can put 2x128MB in, and then smaller SIMMs (I only had 1x32MB and 1x8MB laying around), so all 4 are populated, and it works normally.
There seems to be a maximum amount of physical memory that the system knows how to deal with. I'm still trying to figure out what that limit is specifically...
More cursory observations, I haven't started getting too deep into the disassembly yet.
2x128MB, 1x64MB, and 1x32MB SIMMs work fine for a total of 360MB, although the A/ROSE extension crashes on boot. Other than that, it's completely usable.
2x128MB, 2x64MB fails to boot, as expected. Same with 3x128MB.
When using 4x128MB and using a RAM disk to reduce memory size and allow booting, the RAM disk size needs to be dramatically larger than just the 160MB of 520-360 above. The usable memory needs to be reduced well into the 100MB range, so nearly a 400MB RAM disk in order for the system to boot with 4x128MB.
I updated the wiki page with some more information about the 610 that I learned while testing the netbsd changes on a 4MB Centris 610.
I had previously assumed that the two SIMMs would be wired to adjacent banks. That is, bank 2 would be one SIMM, and bank 3 would be the other, and so forth. This would allow interleaving the two SIMMs.
It looks like that is not the case. The odd numbered banks are all empty, and the two SIMMs occupy only even numbered banks. That means the 610 is incapable of interleaving, except for the first 2 banks if you have an 8MB model.