src/mess/drivers/dim68k.c
| r9901 | r9902 | |
| 16 | 16 | : driver_device(machine, config) { } |
| 17 | 17 | |
| 18 | 18 | UINT16* ram; |
| 19 | UINT8 *FNT; |
| 19 | 20 | }; |
| 20 | 21 | |
| 21 | 22 | static ADDRESS_MAP_START(dim68k_mem, ADDRESS_SPACE_PROGRAM, 16) |
| r9901 | r9902 | |
| 27 | 28 | ADDRESS_MAP_END |
| 28 | 29 | |
| 29 | 30 | /* Input ports */ |
| 30 | | INPUT_PORTS_START( dim68k ) |
| 31 | static INPUT_PORTS_START( dim68k ) |
| 31 | 32 | INPUT_PORTS_END |
| 32 | 33 | |
| 33 | 34 | |
| r9901 | r9902 | |
| 43 | 44 | |
| 44 | 45 | static VIDEO_START( dim68k ) |
| 45 | 46 | { |
| 47 | dim68k_state *state = machine->driver_data<dim68k_state>(); |
| 48 | state->FNT = machine->region("chargen")->base(); |
| 46 | 49 | } |
| 47 | 50 | |
| 51 | // Please note: This is NOT how the real video works. It is a sample, until the driver is rewritten. |
| 48 | 52 | static VIDEO_UPDATE( dim68k ) |
| 49 | 53 | { |
| 50 | | return 0; |
| 54 | dim68k_state *state = screen->machine->driver_data<dim68k_state>(); |
| 55 | UINT8 y,ra,chr,gfx; |
| 56 | UINT16 sy=0,ma=0x100,x,dchr; |
| 57 | |
| 58 | for (y = 0; y < 25; y++) |
| 59 | { |
| 60 | for (ra = 0; ra < 10; ra++) |
| 61 | { |
| 62 | UINT16 *p = BITMAP_ADDR16(bitmap, sy++, 0); |
| 63 | |
| 64 | for (x = ma; x < ma+40; x++) |
| 65 | { |
| 66 | dchr = state->ram[x]; // reads 2 characters |
| 67 | chr = dchr>>8; |
| 68 | |
| 69 | gfx = state->FNT[(chr<<4) | ra] ^ ((chr & 0x80) ? 0xff : 0); |
| 70 | |
| 71 | *p++ = ( gfx & 0x80 ) ? 1 : 0; |
| 72 | *p++ = ( gfx & 0x40 ) ? 1 : 0; |
| 73 | *p++ = ( gfx & 0x20 ) ? 1 : 0; |
| 74 | *p++ = ( gfx & 0x10 ) ? 1 : 0; |
| 75 | *p++ = ( gfx & 0x08 ) ? 1 : 0; |
| 76 | *p++ = ( gfx & 0x04 ) ? 1 : 0; |
| 77 | *p++ = ( gfx & 0x02 ) ? 1 : 0; |
| 78 | *p++ = ( gfx & 0x01 ) ? 1 : 0; |
| 79 | |
| 80 | chr = dchr; |
| 81 | |
| 82 | gfx = state->FNT[(chr<<4) | ra] ^ ((chr & 0x80) ? 0xff : 0); |
| 83 | |
| 84 | *p++ = ( gfx & 0x80 ) ? 1 : 0; |
| 85 | *p++ = ( gfx & 0x40 ) ? 1 : 0; |
| 86 | *p++ = ( gfx & 0x20 ) ? 1 : 0; |
| 87 | *p++ = ( gfx & 0x10 ) ? 1 : 0; |
| 88 | *p++ = ( gfx & 0x08 ) ? 1 : 0; |
| 89 | *p++ = ( gfx & 0x04 ) ? 1 : 0; |
| 90 | *p++ = ( gfx & 0x02 ) ? 1 : 0; |
| 91 | *p++ = ( gfx & 0x01 ) ? 1 : 0; |
| 92 | } |
| 93 | } |
| 94 | ma+=40; |
| 95 | } |
| 96 | return 0; |
| 51 | 97 | } |
| 52 | 98 | |
| 99 | /* F4 Character Displayer */ |
| 100 | static const gfx_layout dim68k_charlayout = |
| 101 | { |
| 102 | 8, 16, /* 8 x 16 characters */ |
| 103 | 256, /* 256 characters */ |
| 104 | 1, /* 1 bits per pixel */ |
| 105 | { 0 }, /* no bitplanes */ |
| 106 | /* x offsets */ |
| 107 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 108 | /* y offsets */ |
| 109 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 110 | 8*16 /* every char takes 16 bytes */ |
| 111 | }; |
| 112 | |
| 113 | static GFXDECODE_START( dim68k ) |
| 114 | GFXDECODE_ENTRY( "chargen", 0x0000, dim68k_charlayout, 0, 1 ) |
| 115 | GFXDECODE_END |
| 116 | |
| 53 | 117 | static MACHINE_CONFIG_START( dim68k, dim68k_state ) |
| 54 | | /* basic machine hardware */ |
| 55 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) |
| 56 | | MCFG_CPU_PROGRAM_MAP(dim68k_mem) |
| 118 | /* basic machine hardware */ |
| 119 | MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) |
| 120 | MCFG_CPU_PROGRAM_MAP(dim68k_mem) |
| 57 | 121 | |
| 58 | | MCFG_MACHINE_RESET(dim68k) |
| 59 | | |
| 60 | | /* video hardware */ |
| 61 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 62 | | MCFG_SCREEN_REFRESH_RATE(50) |
| 63 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 64 | | MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 65 | | MCFG_SCREEN_SIZE(640, 480) |
| 66 | | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) |
| 67 | | MCFG_PALETTE_LENGTH(2) |
| 68 | | MCFG_PALETTE_INIT(black_and_white) |
| 122 | MCFG_MACHINE_RESET(dim68k) |
| 69 | 123 | |
| 70 | | MCFG_VIDEO_START(dim68k) |
| 71 | | MCFG_VIDEO_UPDATE(dim68k) |
| 124 | /* video hardware */ |
| 125 | MCFG_SCREEN_ADD("screen", RASTER) |
| 126 | MCFG_SCREEN_REFRESH_RATE(50) |
| 127 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 128 | MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 129 | MCFG_SCREEN_SIZE(640, 480) |
| 130 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 250-1) |
| 131 | MCFG_PALETTE_LENGTH(2) |
| 132 | MCFG_PALETTE_INIT(black_and_white) |
| 133 | MCFG_GFXDECODE(dim68k) |
| 134 | |
| 135 | MCFG_VIDEO_START(dim68k) |
| 136 | MCFG_VIDEO_UPDATE(dim68k) |
| 72 | 137 | MACHINE_CONFIG_END |
| 73 | 138 | |
| 74 | 139 | /* |
| r9901 | r9902 | |
| 99 | 164 | */ |
| 100 | 165 | /* ROM definition */ |
| 101 | 166 | ROM_START( dim68k ) |
| 102 | | ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF ) |
| 167 | ROM_REGION( 0x10000, "user1", ROMREGION_ERASEFF ) |
| 103 | 168 | ROM_LOAD16_BYTE( "mc103e.bin", 0x0000, 0x1000, CRC(4730c902) SHA1(5c4bb79ad22def721a22eb63dd05e0391c8082be)) |
| 104 | 169 | ROM_LOAD16_BYTE( "mc104.bin", 0x0001, 0x1000, CRC(14b04575) SHA1(43e15d9ebe1c9c1bf1bcfc1be3899a49e6748200)) |
| 105 | 170 | |
| r9901 | r9902 | |
| 109 | 174 | ROM_LOAD( "mc108.bin", 0x0000, 0x0400, CRC(687f9b0a) SHA1(ed9f1265b25f89f6d3cf8cd0a7b0fb73cb129f9f)) |
| 110 | 175 | ROM_LOAD( "mc109.bin", 0x0000, 0x0200, CRC(4a857f98) SHA1(9f2bbc2171fc49f65aa798c9cd7799a26afd2ddf)) |
| 111 | 176 | ROM_LOAD( "mc110.bin", 0x0000, 0x0100, CRC(e207b457) SHA1(a8987ba3d1bbdb3d8b3b11cec90c532ff09e762e)) |
| 177 | |
| 112 | 178 | ROM_REGION( 0x10000, "copz80", ROMREGION_ERASEFF ) |
| 113 | | ROM_LOAD( "mc111.bin", 0x0000, 0x0020, CRC(6a380057) SHA1(6522a7b3e0af9db14a6ed04d4eec3ee6e44c2dab)) |
| 179 | ROM_LOAD( "mc111.bin", 0x0000, 0x0020, CRC(6a380057) SHA1(6522a7b3e0af9db14a6ed04d4eec3ee6e44c2dab)) |
| 180 | |
| 114 | 181 | ROM_REGION( 0x10000, "cop8086", ROMREGION_ERASEFF ) |
| 115 | 182 | ROM_LOAD( "mc112.bin", 0x0000, 0x0100, CRC(dfd4cdbb) SHA1(a7831d415943fa86c417066807038bccbabb2573)) |
| 116 | 183 | ROM_LOAD( "mc113.bin", 0x0000, 0x00ef, CRC(594bdf05) SHA1(36db911a27d930e023fa12683e86e9eecfffdba6)) |
| 117 | 184 | |
| 118 | | ROM_REGION( 0x1000, "gfx1", ROMREGION_ERASEFF ) |
| 119 | | ROM_LOAD( "mc105e.bin", 0x0000, 0x1000, CRC(7a09daa8) SHA1(844bfa579293d7c3442fcbfa21bda75fff930394)) |
| 120 | | ROM_REGION( 0x1000, "mb", ROMREGION_ERASEFF ) // mainboard unknown |
| 121 | | ROM_LOAD( "mc102.bin", 0x0000, 0x00fa, CRC(38e2abac) SHA1(0d7e730b46fc162764c69c51dea3bbe8337b1a7d)) |
| 122 | | ROM_LOAD( "mc101.bin", 0x0000, 0x00fa, CRC(caffb3a0) SHA1(36f5140b306565794c4d856e0c20589b8f2a37f4)) |
| 185 | ROM_REGION( 0x1000, "chargen", ROMREGION_ERASEFF ) |
| 186 | ROM_LOAD( "mc105e.bin", 0x0000, 0x1000, CRC(7a09daa8) SHA1(844bfa579293d7c3442fcbfa21bda75fff930394)) |
| 187 | |
| 188 | ROM_REGION( 0x1000, "mb", ROMREGION_ERASEFF ) // mainboard unknown |
| 189 | ROM_LOAD( "mc102.bin", 0x0000, 0x00fa, CRC(38e2abac) SHA1(0d7e730b46fc162764c69c51dea3bbe8337b1a7d)) |
| 190 | ROM_LOAD( "mc101.bin", 0x0000, 0x00fa, CRC(caffb3a0) SHA1(36f5140b306565794c4d856e0c20589b8f2a37f4)) |
| 123 | 191 | ROM_END |
| 124 | 192 | |
| 125 | 193 | /* Driver */ |