The '510 has a 128x176 ROM array, and I figured the '511 ROM layout would be the same but with the full 64 pages instead of just 44. And the '511 ROM *is* 128x256, but the rows and columns are transposed, so it's really 256x128. It turns out that they put two 128x128 arrays side by side, and switch sides every 8 pages.

Here's pseudocode:
Code
	blockorder[]={4,5,7,6,3,2,0,1,11,10,8,9,12,13,15,14};
	numpages=64;
	bytesperpage=64;
	bytesperrow=32;
	bitsperrow=bytesperrow*8;
	rowsperpage=bytesperpage/bytesperrow;

	FOR(pg2=0;pg2<(numpages/16);pg++) {
		FOR(pg1=0;pg1<2;pg1++) { // every eight pages, change ROM array halves
			FOR(Pg0=0;pg0<8;pg++) {
				FOR(i=0;i<(bytesperrow/2);i++) {
					FOR(j=0; j<(rowsperpage*2);j++) {
						rom[rx]=0;
						FOR(b=0;b<8;b++) {	// bits
							ix=((pg0*4+pg2)*4+j)*bitsperrow+b*bytesperrow+blockorder[i]+16*pg1;
							rom[rx]=rom[rx]*2+rawbits[ix];
						}
						rx++;
					}
				}
			}
		}
	}

I also uploaded a top metal pic with smudges in different areas: www.seanriddle.com/tmntrom.jpg