Previous 15994 Revisions Next

r7889 Friday 23rd April, 2010 at 12:31:52 UTC by Curt Coder
[CGC7900] Moved video stuff to own file.
[src/mess]mess.mak
[src/mess/drivers]cgc7900.c* chromati.c
[src/mess/includes]cgc7900.h
[src/mess/video]cgc7900.c*

src/mess/video/cgc7900.c
r0r7889
1#include "emu.h"
2#include "includes/cgc7900.h"
3
4static PALETTE_INIT( cgc7900 )
5{
6   palette_set_color_rgb(machine, 0, 0x00, 0x00, 0x00 );
7   palette_set_color_rgb(machine, 1, 0x00, 0x00, 0xff );
8   palette_set_color_rgb(machine, 2, 0x00, 0xff, 0x00 );
9   palette_set_color_rgb(machine, 3, 0x00, 0xff, 0xff );
10   palette_set_color_rgb(machine, 4, 0xff, 0x00, 0x00 );
11   palette_set_color_rgb(machine, 5, 0xff, 0x00, 0xff );
12   palette_set_color_rgb(machine, 6, 0xff, 0xff, 0x00 );
13   palette_set_color_rgb(machine, 7, 0xff, 0xff, 0xff );
14}
15
16static VIDEO_START( cgc7900 )
17{
18   cgc7900_state *state = (cgc7900_state *)machine->driver_data;
19
20   /* find memory regions */
21   state->char_rom = memory_region(machine, "gfx1");
22}
23
24static void update_clut(running_machine *machine)
25{
26   cgc7900_state *state = (cgc7900_state *)machine->driver_data;
27
28   for (int i = 0; i < 256; i++)
29   {
30      UINT16 addr = i * 4;
31      UINT32 data = (state->clut_ram[addr + 1] << 16) | state->clut_ram[addr];
32      UINT8 b = data & 0xff;
33      UINT8 g = (data >> 8) & 0xff;
34      UINT8 r = (data >> 16) & 0xff;
35
36      logerror("CLUT %u : %08x\n", i, data);
37     
38      palette_set_color_rgb(machine, i + 8, r, g, b);
39   }
40}
41
42#define OVERLAY_CUR      0x80000000   /* places a cursor in the cell if SET */
43#define OVERLAY_BLK      0x40000000   /* blinks the foreground character in the cell if SET */
44#define OVERLAY_VF      0x10000000   /* makes the foreground visible if SET (else transparent) */
45#define OVERLAY_VB      0x08000000   /* makes the background visible if SET (else transparent) */
46#define OVERLAY_PL      0x01000000   /* uses bits 0-7 as PLOT DOT descriptor if SET (else ASCII) */
47#define OVERLAY_BR      0x00040000   /* turns on Red in background if SET */
48#define OVERLAY_BG      0x00020000   /* turns on Green in background if SET */
49#define OVERLAY_BB      0x00010000   /* turns on Blue in background if SET */
50#define OVERLAY_FR      0x00000400   /* turns on Red in foreground if SET */
51#define OVERLAY_FG      0x00000200   /* turns on Green in foreground if SET */
52#define OVERLAY_FB      0x00000100   /* turns on Blue in background if SET */
53
54static void draw_overlay(running_device *screen, bitmap_t *bitmap)
55{
56   cgc7900_state *state = (cgc7900_state *)screen->machine->driver_data;
57
58   for (int y = 0; y < 768; y++)
59   {
60      int sy = y / 8;
61
62      for (int sx = 0; sx < 85; sx++)
63      {
64         UINT16 addr = (sy * 85) + sx;
65         UINT32 cell = (state->overlay_ram[addr + 1] << 16) | state->overlay_ram[addr];
66         UINT8 data = state->char_rom[(cell & 0xff) << 3];
67         int fg = (cell >> 8) & 0x07;
68         int bg = (cell >> 16) & 0x07;
69
70         for (int x = 0; x < 8; x++)
71         {
72            *BITMAP_ADDR16(bitmap, y, (sx * 8) + x) = BIT(data, 7) ? fg : bg;
73            data <<= 1;
74         }
75
76         addr += 2;
77      }
78   }
79}
80
81static VIDEO_UPDATE( cgc7900 )
82{
83//   cgc7900_state *state = (cgc7900_state *)screen->machine->driver_data;
84
85   update_clut(screen->machine);
86   draw_overlay(screen, bitmap);
87
88    return 0;
89}
90
91static const gfx_layout cgc7900_charlayout =
92{
93   8,8,
94   RGN_FRAC(1,1),
95   1,
96   { RGN_FRAC(0,1) },
97   { STEP8(7,-1) },
98   { STEP8(0,8) },
99   8*8
100};
101
102static GFXDECODE_START( cgc7900 )
103   GFXDECODE_ENTRY( "gfx1", 0x0000, cgc7900_charlayout, 0, 1 )
104GFXDECODE_END
105
106MACHINE_DRIVER_START( cgc7900_video )
107    MDRV_SCREEN_ADD(SCREEN_TAG, RASTER)
108    MDRV_SCREEN_REFRESH_RATE(60)
109    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
110    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
111    MDRV_SCREEN_SIZE(1024, 768)
112    MDRV_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
113   
114   MDRV_GFXDECODE(cgc7900)
115
116   MDRV_PALETTE_LENGTH(8+256) /* 8 overlay colors + 256 bitmap colors */
117   MDRV_PALETTE_INIT(cgc7900)
118
119   MDRV_VIDEO_START(cgc7900)
120    MDRV_VIDEO_UPDATE(cgc7900)
121MACHINE_DRIVER_END
src/mess/includes/cgc7900.h
r7888r7889
1#pragma once
2
13#ifndef __CGC7900__
24#define __CGC7900__
35
r7888r7889
2022   UINT16 *plane_ram;
2123   UINT16 *clut_ram;
2224   UINT16 *overlay_ram;
25   UINT8 *char_rom;
2326};
2427
28/*----------- defined in video/cgc7900.c -----------*/
29
30MACHINE_DRIVER_EXTERN(cgc7900_video);
31
2532#endif
src/mess/mess.mak
r7888r7889
276276   $(MESSOBJ)/cccp.a \
277277   $(MESSOBJ)/cce.a \
278278   $(MESSOBJ)/ccs.a \
279   $(MESSOBJ)/chromatics.a \
279280   $(MESSOBJ)/coleco.a \
280281   $(MESSOBJ)/comx.a \
281282   $(MESSOBJ)/concept.a \
r7888r7889
768769   $(MESS_DRIVERS)/ccs2422.o   \
769770   $(MESS_DRIVERS)/ccs2810.o   \
770771
772$(MESSOBJ)/chromatics.a:      \
773   $(MESS_DRIVERS)/cgc7900.o   \
774   $(MESS_VIDEO)/cgc7900.o      \
775
771776$(MESSOBJ)/coleco.a:         \
772777   $(MESS_DRIVERS)/coleco.o   \
773778   $(MESS_MACHINE)/adam.o      \
r7888r7889
16421647   $(MESS_DRIVERS)/fidelz80.o   \
16431648   $(MESS_DRIVERS)/pv9234.o    \
16441649   $(MESS_DRIVERS)/dm7000.o    \
1645   $(MESS_DRIVERS)/chromati.o    \
16461650   $(MESS_DRIVERS)/alesis.o    \
16471651   $(MESS_DRIVERS)/vidbrain.o    \
16481652   $(MESS_DRIVERS)/cd2650.o    \
src/mess/drivers/chromati.c
r7888r7889
1/***************************************************************************
2   
3        Chromatics CGC 7900
4
5        05/04/2010 Skeleton driver.
6
7****************************************************************************/
8
9#include "emu.h"
10#include "includes/cgc7900.h"
11#include "cpu/m68000/m68000.h"
12#include "formats/basicdsk.h"
13#include "devices/messram.h"
14#include "machine/msm8251.h"
15#include "sound/ay8910.h"
16
17static UINT16* chrom_ram;
18
19static ADDRESS_MAP_START(cgc7900_mem, ADDRESS_SPACE_PROGRAM, 16)
20   ADDRESS_MAP_UNMAP_HIGH
21   AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_BASE(&chrom_ram) // 16 * Buffer card memory
22   AM_RANGE(0x800000, 0x80ffff) AM_ROM AM_REGION(M68000_TAG, 0)   
23   AM_RANGE(0xa00000, 0xbfffff) AM_RAM AM_BASE_MEMBER(cgc7900_state, z_ram)
24   AM_RANGE(0xc00000, 0xdfffff) AM_RAM AM_BASE_MEMBER(cgc7900_state, plane_ram)
25//   AM_RANGE(0xe00000, 0xe1ffff) AM_WRITE(color_status_w)
26//   AM_RANGE(0xe20000, 0xe23fff) Raster Processor
27   AM_RANGE(0xe30000, 0xe303ff) AM_RAM AM_BASE_MEMBER(cgc7900_state, clut_ram)
28   AM_RANGE(0xe38000, 0xe3bfff) AM_RAM AM_BASE_MEMBER(cgc7900_state, overlay_ram)
29//   AM_RANGE(0xe40000, 0xe40001) Bitmap roll counter
30//   AM_RANGE(0xe40002, 0xe40003) X Pan
31//   AM_RANGE(0xe40004, 0xe40005) Y Pan
32//   AM_RANGE(0xe40006, 0xe40007) X Zoom
33//   AM_RANGE(0xe40008, 0xe40009) Y Zoom
34//   AM_RANGE(0xe4000a, 0xe4000f) Raster Processor
35//   AM_RANGE(0xe40010, 0xe40011) Blink Select
36//   AM_RANGE(0xe40012, 0xe40013) Plane Select
37//   AM_RANGE(0xe40014, 0xe40015) Plane Video Switch
38//   AM_RANGE(0xe40016, 0xe40017) AM_WRITE(color_status_fg_w)
39//   AM_RANGE(0xe40018, 0xe40019) AM_WRITE(color_status_bg_w)
40//   AM_RANGE(0xe4001a, 0xe4001b) Overlay Roll Counter
41//   AM_RANGE(0xefc440, 0xefc441) HVG Load X
42//   AM_RANGE(0xefc442, 0xefc443) HVG Load Y
43//   AM_RANGE(0xefc444, 0xefc445) HVG Load dX
44//   AM_RANGE(0xefc446, 0xefc447) HVG Load dY
45//   AM_RANGE(0xefc448, 0xefc449) HVG Load Pixel Color
46//   AM_RANGE(0xefc44a, 0xefc44b) HVG Load Trip
47   AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8(INS8251_0_TAG, msm8251_data_r, msm8251_data_w, 0x00ff)
48   AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8(INS8251_0_TAG, msm8251_status_r, msm8251_control_w, 0x00ff)
49   AM_RANGE(0xff8040, 0xff8041) AM_DEVREADWRITE8(INS8251_1_TAG, msm8251_data_r, msm8251_data_w, 0x00ff)
50   AM_RANGE(0xff8042, 0xff8043) AM_DEVREADWRITE8(INS8251_1_TAG, msm8251_status_r, msm8251_control_w, 0x00ff)
51//   AM_RANGE(0xff8080, 0xff8081) Keyboard
52//   AM_RANGE(0xff80c6, 0xff80c7) Joystick X axis
53//   AM_RANGE(0xff80ca, 0xff80cb) Joystick Y axis
54//   AM_RANGE(0xff80cc, 0xff80cd) Joystick Z axis
55//   AM_RANGE(0xff8100, 0xff8101) Disk data port
56//   AM_RANGE(0xff8120, 0xff8121) Disk control/status port
57//   AM_RANGE(0xff8141, 0xff8141) Bezel switches
58//   AM_RANGE(0xff8181, 0xff8181) Baud rate generator
59//   AM_RANGE(0xff81c0, 0xff81ff) AM_DEVREADWRITE8(MM58167_TAG, mm58167_r, mm58167_w, 0x00ff)
60//   AM_RANGE(0xff8200, 0xff8201) Interrupt Mask
61//   AM_RANGE(0xff8240, 0xff8241) Light Pen enable
62//   AM_RANGE(0xff8242, 0xff8243) Light Pen X value
63//   AM_RANGE(0xff8244, 0xff8245) Light Pen Y value
64//   AM_RANGE(0xff8246, 0xff8247) Buffer memory parity check
65//   AM_RANGE(0xff8248, 0xff8249) Buffer memory parity set/reset
66//   AM_RANGE(0xff824a, 0xff824b) Sync information
67   AM_RANGE(0xff83c0, 0xff83c1) AM_DEVWRITE8(AY8910_TAG, ay8910_address_w, 0x00ff)
68   AM_RANGE(0xff83c2, 0xff83c3) AM_DEVREAD8(AY8910_TAG, ay8910_r, 0x00ff)
69   AM_RANGE(0xff83c4, 0xff83c5) AM_DEVWRITE8(AY8910_TAG, ay8910_data_w, 0x00ff)
70ADDRESS_MAP_END
71
72/* Input ports */
73static INPUT_PORTS_START( cgc7900 )
74INPUT_PORTS_END
75
76
77static MACHINE_RESET(cgc7900)
78{
79   UINT8* user1 = memory_region(machine, M68000_TAG);
80
81   memcpy((UINT8*)chrom_ram,user1,0x10000);
82
83   devtag_get_device(machine, M68000_TAG)->reset();   
84}
85
86static VIDEO_START( cgc7900 )
87{
88}
89
90static VIDEO_UPDATE( cgc7900 )
91{
92    return 0;
93}
94
95/* F4 Character Displayer */
96static const gfx_layout cgc7900_charlayout =
97{
98   8, 8,               /* 8 x 8 characters */
99   256,               /* 256 characters */
100   1,               /* 1 bits per pixel */
101   { 0 },               /* no bitplanes */
102   /* x offsets */
103   { 7, 6, 5, 4, 3, 2, 1, 0 },
104   /* y offsets */
105   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
106   8*8               /* every char takes 8 bytes */
107};
108
109static GFXDECODE_START( cgc7900 )
110   GFXDECODE_ENTRY( "gfx1", 0x0000, cgc7900_charlayout, 0, 1 )
111GFXDECODE_END
112
113static msm8251_interface rs232_intf =
114{
115   NULL,
116   NULL,
117   NULL
118};
119
120static msm8251_interface rs449_intf =
121{
122   NULL,
123   NULL,
124   NULL
125};
126
127static const ay8910_interface ay8910_intf =
128{
129   AY8910_LEGACY_OUTPUT,
130   AY8910_DEFAULT_LOADS,
131   DEVCB_NULL,
132   DEVCB_NULL,
133   DEVCB_NULL,
134   DEVCB_NULL
135};
136
137static MACHINE_DRIVER_START( cgc7900 )
138   MDRV_DRIVER_DATA(cgc7900_state)
139
140   /* basic machine hardware */
141    MDRV_CPU_ADD(M68000_TAG, M68000, XTAL_8MHz)
142    MDRV_CPU_PROGRAM_MAP(cgc7900_mem)
143
144    MDRV_MACHINE_RESET(cgc7900)
145   
146    /* video hardware */
147    MDRV_SCREEN_ADD(SCREEN_TAG, RASTER)
148    MDRV_SCREEN_REFRESH_RATE(60)
149    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
150    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
151    MDRV_SCREEN_SIZE(1024, 768)
152    MDRV_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
153   MDRV_GFXDECODE(cgc7900)
154    MDRV_PALETTE_LENGTH(2)
155    MDRV_PALETTE_INIT(black_and_white)
156
157    MDRV_VIDEO_START(cgc7900)
158    MDRV_VIDEO_UPDATE(cgc7900)
159
160   /* sound hardware */
161   MDRV_SPEAKER_STANDARD_MONO("mono")
162   MDRV_SOUND_ADD(AY8910_TAG, AY8910, 3579545/2)
163   MDRV_SOUND_CONFIG(ay8910_intf)
164   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
165
166   /* devices */
167   MDRV_MSM8251_ADD(INS8251_0_TAG, rs232_intf)
168   MDRV_MSM8251_ADD(INS8251_1_TAG, rs449_intf)
169MACHINE_DRIVER_END
170
171/* ROM definition */
172ROM_START( cgc7900 )
173    ROM_REGION( 0x10000, M68000_TAG, 0 )
174   ROM_LOAD16_BYTE( "210274 800k even a3ee term 1.4.ue24", 0x0001, 0x1000, CRC(5fa8f368) SHA1(120dbcfedce0badd38bf5b23e1fbc99667eb286c) )
175   ROM_LOAD16_BYTE( "210275 800k odd bbb3 term 1.4.uf24", 0x0000, 0x1000, CRC(4d479457) SHA1(5fa96a1eadfd9ba493d28691286e2e001a489a19) )
176   ROM_LOAD16_BYTE( "210276 802k even 0c22 term 1.4.ue22", 0x2001, 0x1000, CRC(c88c44ec) SHA1(f39d8a3cf7aaefd815b4426348965b076c1f2265) )
177   ROM_LOAD16_BYTE( "210277 802k odd b58c term 1.4.uf22", 0x2000, 0x1000, CRC(52ffe01f) SHA1(683aa71c2eb17b7ad639b888487db73d7684901a) )
178   ROM_LOAD16_BYTE( "210278 804k even eaf4 term 1.4.ue21", 0x4001, 0x1000, CRC(7fe326db) SHA1(d39d05e008160fb8afa62e0d4cfb1d813f2296d4) )
179   ROM_LOAD16_BYTE( "210279 804k odd 3f6d term 1.4.uf21", 0x4000, 0x1000, CRC(6c12d81c) SHA1(efe7c20e567c02b9c5b66a2d18e035d5f5f56b28) )
180   ROM_LOAD16_BYTE( "210280 806k even 679d term 1.4.ue20", 0x6001, 0x1000, CRC(70930d74) SHA1(a5ab1c0bd8bd829408961107e01598cd71a97fec) )
181   ROM_LOAD16_BYTE( "210281 1.4 806k odd sum 611e.uf20", 0x6000, 0x1000, CRC(8080aa2a) SHA1(c018a23e6f2158e2d63723cade0a3ad737090921) )
182   ROM_LOAD16_BYTE( "su7700 210282 808k even opmod term 1.4 sum 2550.ue18", 0x8001, 0x1000, CRC(8f5834cd) SHA1(3cd03c82aa85c30cbc8e954f5a9fc4e9034f913b) )
183   ROM_LOAD16_BYTE( "su7700 210283 808k odd opmod term 1.4 sum faca.uf18", 0x8000, 0x1000, CRC(e593b133) SHA1(6c641df844706e0d990b5fd544e98594171080a1) )
184   ROM_LOAD16_BYTE( "210258 80ak even b2f6 mon 1.3.ue15", 0xa001, 0x1000, CRC(ec5a1250) SHA1(ffef73d35f172ac610b35bdf729d51eb6f9346ba) )
185   ROM_LOAD16_BYTE( "210259 80ak odd cd66 mon 1.3.uf15", 0xa000, 0x1000, CRC(61eb43c6) SHA1(baaae0b787798147da453aac1f815589ea4ed921) )
186   ROM_LOAD16_BYTE( "210244 80c even ce40 dos 1.6b.ue13", 0xc001, 0x1000, CRC(3b64e4cb) SHA1(71b28d160b101ea6165e602ff1c54272b7b30ece) )
187   ROM_LOAD16_BYTE( "210245 80c odd 1ac3 dos 1.6b.uf13", 0xc000, 0x1000, CRC(0b6539ca) SHA1(d49e6d3307e5d634a412fd80b59492f31e29f7e0) )     
188   ROM_LOAD16_BYTE( "210290 idris even rel3 sum 0cce.ue12", 0xe001, 0x1000, CRC(07065772) SHA1(620ea5d55021e5c38efc010722ddbd852cd49e39) )
189   ROM_LOAD16_BYTE( "210291 idris odd rel3 sum 5d11.uf12", 0xe000, 0x1000, CRC(d81b30da) SHA1(228f9b4e39d430ce4aaa81ea63f4516a51e6d001) )
190   
191   ROM_REGION( 0x800, "gfx1", 0 )
192   ROM_LOAD( "norm chrset 4b40.ua13", 0x0000, 0x0400, CRC(55eb7b87) SHA1(768cea80597e7396d9e26f8cd09e6b480a526fce) )
193   ROM_LOAD( "alt 46a7.ua14",  0x0400, 0x0400, CRC(be22b7e4) SHA1(83ef252c7fab33b4d3821a3049b89d044df35de8) )
194
195   ROM_REGION( 0x20, "proms", 0 )
196   ROM_LOAD( "rp0a.ub8", 0x0000, 0x0020, NO_DUMP )
197   ROM_LOAD( "rp1a.ub7", 0x0000, 0x0020, NO_DUMP )
198   ROM_LOAD( "rp2a.ub9", 0x0000, 0x0020, NO_DUMP )
199   ROM_LOAD( "ha-5.ub1", 0x0000, 0x0020, NO_DUMP )
200   ROM_LOAD( "03c0.ua16", 0x0000, 0x0020, NO_DUMP )
201   ROM_LOAD( "03c0.ua11", 0x0000, 0x0020, NO_DUMP )
202ROM_END
203
204/* Driver */
205
206/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
207COMP( 1980, cgc7900,  0,       0,    cgc7900,    cgc7900,     0,   "Chromatics",   "CGC 7900",      GAME_NOT_WORKING)
src/mess/drivers/cgc7900.c
r0r7889
1/***************************************************************************
2   
3        Chromatics CGC 7900
4
5        05/04/2010 Skeleton driver.
6
7****************************************************************************/
8
9#include "emu.h"
10#include "includes/cgc7900.h"
11#include "cpu/m68000/m68000.h"
12#include "formats/basicdsk.h"
13#include "devices/messram.h"
14#include "machine/msm8251.h"
15#include "sound/ay8910.h"
16
17static UINT16* chrom_ram;
18
19static ADDRESS_MAP_START( cgc7900_mem, ADDRESS_SPACE_PROGRAM, 16 )
20   ADDRESS_MAP_UNMAP_HIGH
21   AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_BASE(&chrom_ram) // 16 * Buffer card memory
22   AM_RANGE(0x800000, 0x80ffff) AM_ROM AM_REGION(M68000_TAG, 0)   
23   AM_RANGE(0xa00000, 0xbfffff) AM_RAM AM_BASE_MEMBER(cgc7900_state, z_ram)
24   AM_RANGE(0xc00000, 0xdfffff) AM_RAM AM_BASE_MEMBER(cgc7900_state, plane_ram)
25//   AM_RANGE(0xe00000, 0xe1ffff) AM_WRITE(color_status_w)
26//   AM_RANGE(0xe20000, 0xe23fff) Raster Processor
27   AM_RANGE(0xe30000, 0xe303ff) AM_RAM AM_BASE_MEMBER(cgc7900_state, clut_ram)
28   AM_RANGE(0xe38000, 0xe3bfff) AM_RAM AM_BASE_MEMBER(cgc7900_state, overlay_ram)
29//   AM_RANGE(0xe40000, 0xe40fff) AM_RAM
30//   AM_RANGE(0xe40000, 0xe40001) Bitmap roll counter
31//   AM_RANGE(0xe40002, 0xe40003) X Pan
32//   AM_RANGE(0xe40004, 0xe40005) Y Pan
33//   AM_RANGE(0xe40006, 0xe40007) X/Y Zoom
34//   AM_RANGE(0xe4000a, 0xe4000f) Raster Processor
35//   AM_RANGE(0xe40010, 0xe40011) Blink Select
36//   AM_RANGE(0xe40012, 0xe40013) Plane Select
37//   AM_RANGE(0xe40014, 0xe40015) Plane Video Switch
38//   AM_RANGE(0xe40016, 0xe40017) AM_WRITE(color_status_fg_w)
39//   AM_RANGE(0xe40018, 0xe40019) AM_WRITE(color_status_bg_w)
40//   AM_RANGE(0xe4001a, 0xe4001b) Overlay Roll Counter
41//   AM_RANGE(0xefc440, 0xefc441) HVG Load X
42//   AM_RANGE(0xefc442, 0xefc443) HVG Load Y
43//   AM_RANGE(0xefc444, 0xefc445) HVG Load dX
44//   AM_RANGE(0xefc446, 0xefc447) HVG Load dY
45//   AM_RANGE(0xefc448, 0xefc449) HVG Load Pixel Color
46//   AM_RANGE(0xefc44a, 0xefc44b) HVG Load Trip
47   AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8(INS8251_0_TAG, msm8251_data_r, msm8251_data_w, 0x00ff)
48   AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8(INS8251_0_TAG, msm8251_status_r, msm8251_control_w, 0x00ff)
49   AM_RANGE(0xff8040, 0xff8041) AM_DEVREADWRITE8(INS8251_1_TAG, msm8251_data_r, msm8251_data_w, 0x00ff)
50   AM_RANGE(0xff8042, 0xff8043) AM_DEVREADWRITE8(INS8251_1_TAG, msm8251_status_r, msm8251_control_w, 0x00ff)
51//   AM_RANGE(0xff8080, 0xff8081) Keyboard
52//   AM_RANGE(0xff80c6, 0xff80c7) Joystick X axis
53//   AM_RANGE(0xff80ca, 0xff80cb) Joystick Y axis
54//   AM_RANGE(0xff80cc, 0xff80cd) Joystick Z axis
55//   AM_RANGE(0xff8100, 0xff8101) Disk data port
56//   AM_RANGE(0xff8120, 0xff8121) Disk control/status port
57//   AM_RANGE(0xff8141, 0xff8141) Bezel switches
58//   AM_RANGE(0xff8181, 0xff8181) Baud rate generator
59//   AM_RANGE(0xff81c0, 0xff81ff) AM_DEVREADWRITE8(MM58167_TAG, mm58167_r, mm58167_w, 0x00ff)
60//   AM_RANGE(0xff8200, 0xff8201) Interrupt Mask
61//   AM_RANGE(0xff8240, 0xff8241) Light Pen enable
62//   AM_RANGE(0xff8242, 0xff8243) Light Pen X value
63//   AM_RANGE(0xff8244, 0xff8245) Light Pen Y value
64//   AM_RANGE(0xff8246, 0xff8247) Buffer memory parity check
65//   AM_RANGE(0xff8248, 0xff8249) Buffer memory parity set/reset
66//   AM_RANGE(0xff824a, 0xff824b) Sync information
67   AM_RANGE(0xff83c0, 0xff83c1) AM_DEVWRITE8(AY8910_TAG, ay8910_address_w, 0x00ff)
68   AM_RANGE(0xff83c2, 0xff83c3) AM_DEVREAD8(AY8910_TAG, ay8910_r, 0x00ff)
69   AM_RANGE(0xff83c4, 0xff83c5) AM_DEVWRITE8(AY8910_TAG, ay8910_data_w, 0x00ff)
70//   AM_RANGE(0xff8500, 0xff8501) Disk DMA Command Register
71//   AM_RANGE(0xff8502, 0xff8503) Disk DMA Address Register
72//   AM_RANGE(0xff8507, 0xff8507) Disk DMA Control/Status Register
73ADDRESS_MAP_END
74
75/* Input ports */
76static INPUT_PORTS_START( cgc7900 )
77INPUT_PORTS_END
78
79
80static MACHINE_RESET(cgc7900)
81{
82   UINT8* user1 = memory_region(machine, M68000_TAG);
83
84   memcpy((UINT8*)chrom_ram,user1,0x10000);
85
86   devtag_get_device(machine, M68000_TAG)->reset();   
87}
88
89
90static msm8251_interface rs232_intf =
91{
92   NULL,
93   NULL,
94   NULL
95};
96
97static msm8251_interface rs449_intf =
98{
99   NULL,
100   NULL,
101   NULL
102};
103
104static const ay8910_interface ay8910_intf =
105{
106   AY8910_LEGACY_OUTPUT,
107   AY8910_DEFAULT_LOADS,
108   DEVCB_NULL,
109   DEVCB_NULL,
110   DEVCB_NULL,
111   DEVCB_NULL
112};
113
114static MACHINE_DRIVER_START( cgc7900 )
115   MDRV_DRIVER_DATA(cgc7900_state)
116
117   /* basic machine hardware */
118    MDRV_CPU_ADD(M68000_TAG, M68000, XTAL_8MHz)
119    MDRV_CPU_PROGRAM_MAP(cgc7900_mem)
120
121    MDRV_MACHINE_RESET(cgc7900)
122   
123    /* video hardware */
124   MDRV_IMPORT_FROM(cgc7900_video)
125
126   /* sound hardware */
127   MDRV_SPEAKER_STANDARD_MONO("mono")
128   MDRV_SOUND_ADD(AY8910_TAG, AY8910, 3579545/2)
129   MDRV_SOUND_CONFIG(ay8910_intf)
130   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
131
132   /* devices */
133   MDRV_MSM8251_ADD(INS8251_0_TAG, rs232_intf)
134   MDRV_MSM8251_ADD(INS8251_1_TAG, rs449_intf)
135MACHINE_DRIVER_END
136
137/* ROM definition */
138ROM_START( cgc7900 )
139    ROM_REGION( 0x10000, M68000_TAG, 0 )
140   ROM_LOAD16_BYTE( "210274 800k even a3ee term 1.4.ue24", 0x0001, 0x1000, CRC(5fa8f368) SHA1(120dbcfedce0badd38bf5b23e1fbc99667eb286c) )
141   ROM_LOAD16_BYTE( "210275 800k odd bbb3 term 1.4.uf24", 0x0000, 0x1000, CRC(4d479457) SHA1(5fa96a1eadfd9ba493d28691286e2e001a489a19) )
142   ROM_LOAD16_BYTE( "210276 802k even 0c22 term 1.4.ue22", 0x2001, 0x1000, CRC(c88c44ec) SHA1(f39d8a3cf7aaefd815b4426348965b076c1f2265) )
143   ROM_LOAD16_BYTE( "210277 802k odd b58c term 1.4.uf22", 0x2000, 0x1000, CRC(52ffe01f) SHA1(683aa71c2eb17b7ad639b888487db73d7684901a) )
144   ROM_LOAD16_BYTE( "210278 804k even eaf4 term 1.4.ue21", 0x4001, 0x1000, CRC(7fe326db) SHA1(d39d05e008160fb8afa62e0d4cfb1d813f2296d4) )
145   ROM_LOAD16_BYTE( "210279 804k odd 3f6d term 1.4.uf21", 0x4000, 0x1000, CRC(6c12d81c) SHA1(efe7c20e567c02b9c5b66a2d18e035d5f5f56b28) )
146   ROM_LOAD16_BYTE( "210280 806k even 679d term 1.4.ue20", 0x6001, 0x1000, CRC(70930d74) SHA1(a5ab1c0bd8bd829408961107e01598cd71a97fec) )
147   ROM_LOAD16_BYTE( "210281 1.4 806k odd sum 611e.uf20", 0x6000, 0x1000, CRC(8080aa2a) SHA1(c018a23e6f2158e2d63723cade0a3ad737090921) )
148   ROM_LOAD16_BYTE( "su7700 210282 808k even opmod term 1.4 sum 2550.ue18", 0x8001, 0x1000, CRC(8f5834cd) SHA1(3cd03c82aa85c30cbc8e954f5a9fc4e9034f913b) )
149   ROM_LOAD16_BYTE( "su7700 210283 808k odd opmod term 1.4 sum faca.uf18", 0x8000, 0x1000, CRC(e593b133) SHA1(6c641df844706e0d990b5fd544e98594171080a1) )
150   ROM_LOAD16_BYTE( "210258 80ak even b2f6 mon 1.3.ue15", 0xa001, 0x1000, CRC(ec5a1250) SHA1(ffef73d35f172ac610b35bdf729d51eb6f9346ba) )
151   ROM_LOAD16_BYTE( "210259 80ak odd cd66 mon 1.3.uf15", 0xa000, 0x1000, CRC(61eb43c6) SHA1(baaae0b787798147da453aac1f815589ea4ed921) )
152   ROM_LOAD16_BYTE( "210244 80c even ce40 dos 1.6b.ue13", 0xc001, 0x1000, CRC(3b64e4cb) SHA1(71b28d160b101ea6165e602ff1c54272b7b30ece) )
153   ROM_LOAD16_BYTE( "210245 80c odd 1ac3 dos 1.6b.uf13", 0xc000, 0x1000, CRC(0b6539ca) SHA1(d49e6d3307e5d634a412fd80b59492f31e29f7e0) )     
154   ROM_LOAD16_BYTE( "210290 idris even rel3 sum 0cce.ue12", 0xe001, 0x1000, CRC(07065772) SHA1(620ea5d55021e5c38efc010722ddbd852cd49e39) )
155   ROM_LOAD16_BYTE( "210291 idris odd rel3 sum 5d11.uf12", 0xe000, 0x1000, CRC(d81b30da) SHA1(228f9b4e39d430ce4aaa81ea63f4516a51e6d001) )
156   
157   ROM_REGION( 0x800, "gfx1", 0 )
158   ROM_LOAD( "norm chrset 4b40.ua13", 0x0000, 0x0400, CRC(55eb7b87) SHA1(768cea80597e7396d9e26f8cd09e6b480a526fce) )
159   ROM_LOAD( "alt 46a7.ua14",  0x0400, 0x0400, CRC(be22b7e4) SHA1(83ef252c7fab33b4d3821a3049b89d044df35de8) )
160
161   ROM_REGION( 0x20, "proms", 0 )
162   ROM_LOAD( "rp0a.ub8", 0x0000, 0x0020, NO_DUMP )
163   ROM_LOAD( "rp1a.ub7", 0x0000, 0x0020, NO_DUMP )
164   ROM_LOAD( "rp2a.ub9", 0x0000, 0x0020, NO_DUMP )
165   ROM_LOAD( "ha-5.ub1", 0x0000, 0x0020, NO_DUMP )
166   ROM_LOAD( "03c0.ua16", 0x0000, 0x0020, NO_DUMP )
167   ROM_LOAD( "03c0.ua11", 0x0000, 0x0020, NO_DUMP )
168ROM_END
169
170/* Driver */
171
172/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
173COMP( 1980, cgc7900,  0,       0,    cgc7900,    cgc7900,     0,   "Chromatics",   "CGC 7900",      GAME_NOT_WORKING)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team