Curt, the graphic modes aren't working fine. I found there's a problem in this section of code:
277 static const UINT8 *mc1000_get_video_ram(running_machine *machine, int scanline)
278 {
279 mc1000_state *state = machine->driver_data;
280
281 return state->mc6847_video_ram + (scanline / 12) * 0x20;
282 }
If I understand this correctly, this causes MC6847 to get the same 32 bytes (one screen row) from the VRAM during 12 scanlines. While this is correct for the text and semigraphic modes (where each character/box is composed of 12 lines), it's not true for the graphic modes.
If the MC6847 works the way I guess it works, these return values should do:
12 AG AS INTEXT INV GM2 GM1 GM0
13 -- -- ------ --- --- --- ---
14 0 0 0 0 X X X Internal Alphanumerics
15 0 0 0 1 X X X Internal Alphanumerics Inverted
16 0 0 1 0 X X X External Alphanumerics
17 0 0 1 1 X X X External Alphanumerics Inverted
18 0 1 0 X X X X Semigraphics 4
19 0 1 1 X X X X Semigraphics 6
For these: return state->mc6847_video_ram + (scanline / 12) * 0x20;
20 1 X X X 0 0 0 Graphics CG1 (64x64x4) (16 bpr)
21 1 X X X 0 0 1 Graphics RG1 (128x64x2) (16 bpr)
For these: return state->mc6847_video_ram + (scanline / 3) * 0x10;
22 1 X X X 0 1 0 Graphics CG2 (128x64x4) (32 bpr)
For this: return state->mc6847_video_ram + (scanline / 3) * 0x20;
23 1 X X X 0 1 1 Graphics RG2 (128x96x2) (16 bpr)
For this: return state->mc6847_video_ram + (scanline / 2) * 0x10;
24 1 X X X 1 0 0 Graphics CG3 (128x96x4) (32 bpr)
For this: return state->mc6847_video_ram + (scanline / 2) * 0x20;
25 1 X X X 1 0 1 Graphics RG3 (128x192x2) (16 bpr)
For this: return state->mc6847_video_ram + (scanline / 2) * 0x10;
26 1 X X X 1 1 0 Graphics CG6 (128x192x4) (32 bpr)
27 1 X X X 1 1 1 Graphics RG6 (256x192x2) (32 bpr)
For these: return state->mc6847_video_ram + scanline * 0x20;