Previous 199869 Revisions Next

r20535 Sunday 27th January, 2013 at 15:55:07 UTC by Phil Bennett
Fully modernised the TLC34076 device [Phil Bennett]
[src/emu/video]tlc34076.c tlc34076.h
[src/mame/drivers]artmagic.c btoads.c coolpool.c itech8.c skeetsht.c tickee.c vcombat.c xtheball.c
[src/mame/includes]artmagic.h coolpool.h itech8.h
[src/mame/video]artmagic.c btoads.c itech8.c

trunk/src/emu/video/tlc34076.c
r20534r20535
1010#include "emu.h"
1111#include "tlc34076.h"
1212
13
14//**************************************************************************
15//  MACROS
16//**************************************************************************
17
1318#define PALETTE_WRITE_ADDR  0x00
1419#define PALETTE_DATA        0x01
1520#define PIXEL_READ_MASK     0x02
r20534r20535
2227#define TEST_REGISTER       0x0e
2328#define RESET_STATE         0x0f
2429
25struct tlc34076_state
26{
27   UINT8 local_paletteram[0x300];
28   UINT8 regs[0x10];
29   UINT8 palettedata[3];
30   UINT8 writeindex;
31   UINT8 readindex;
32   UINT8 dacbits;
3330
34   rgb_t pens[0x100];
35};
31//**************************************************************************
32//  LIVE DEVICE
33//**************************************************************************
3634
37const tlc34076_config tlc34076_6_bit_intf =
35// device type definition
36const device_type TLC34076 = &device_creator<tlc34076_device>;
37
38
39//-------------------------------------------------
40//  tlc34076_device - constructor
41//-------------------------------------------------
42tlc34076_device::tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
43   :   device_t(mconfig, TLC34076, "TLC34076", tag, owner, clock),
44      m_dacbits(6)
3845{
39   TLC34076_6_BIT
40};
46}
4147
4248
43/*************************************
44 *
45 *  Inline functions
46 *
47 *************************************/
49//-------------------------------------------------
50//  static_set_bits - set DAC resolution
51//-------------------------------------------------
52void tlc34076_device::static_set_bits(device_t &device, tlc34076_bits bits)
53{
54   tlc34076_device &tlc = downcast<tlc34076_device &>(device);
55   tlc.m_dacbits = bits;
56}
4857
49INLINE tlc34076_state *get_safe_token( device_t *device )
58
59//-------------------------------------------------
60//  device_start - device-specific startup
61//-------------------------------------------------
62void tlc34076_device::device_start()
5063{
51   assert(device != NULL);
52   assert(device->type() == TLC34076);
64   save_item(NAME(m_local_paletteram));
65   save_item(NAME(m_regs));
66   save_item(NAME(m_pens));
5367
54   return (tlc34076_state *)downcast<tlc34076_device *>(device)->token();
68   save_item(NAME(m_writeindex));
69   save_item(NAME(m_readindex));
5570}
5671
57/*************************************
58 *
59 *  Retrieve Current Palette
60 *
61 *************************************/
6272
63const pen_t *tlc34076_get_pens(device_t *device)
73//-------------------------------------------------
74//  device_reset - device-specific reset
75//-------------------------------------------------
76
77void tlc34076_device::device_reset()
6478{
65   tlc34076_state *state = get_safe_token(device);
79   m_regs[PIXEL_READ_MASK]    = 0xff;
80   m_regs[GENERAL_CONTROL]    = 0x03;
81   m_regs[INPUT_CLOCK_SEL]    = 0x00;
82   m_regs[OUTPUT_CLOCK_SEL]   = 0x3f;
83   m_regs[MUX_CONTROL]        = 0x2d;
84   m_regs[PALETTE_PAGE]       = 0x00;
85   m_regs[TEST_REGISTER]      = 0x00;
86   m_regs[RESET_STATE]        = 0x00;
87}
88
89
90//**************************************************************************
91//  PUBLIC INTERFACE
92//**************************************************************************
93
94//-------------------------------------------------
95//  get_pens - retrieve current palette
96//-------------------------------------------------
97
98const pen_t *tlc34076_device::get_pens()
99{
66100   offs_t i;
67101
68102   for (i = 0; i < 0x100; i++)
69103   {
70104      int r, g, b;
71105
72      if ((i & state->regs[PIXEL_READ_MASK]) == i)
106      if ((i & m_regs[PIXEL_READ_MASK]) == i)
73107      {
74         r = state->local_paletteram[3 * i + 0];
75         g = state->local_paletteram[3 * i + 1];
76         b = state->local_paletteram[3 * i + 2];
108         r = m_local_paletteram[3 * i + 0];
109         g = m_local_paletteram[3 * i + 1];
110         b = m_local_paletteram[3 * i + 2];
77111
78         if (state->dacbits == 6)
112         if (m_dacbits == 6)
79113         {
80114            r = pal6bit(r);
81115            g = pal6bit(g);
r20534r20535
89123         b = 0;
90124      }
91125
92      state->pens[i] = MAKE_RGB(r, g, b);
126      m_pens[i] = MAKE_RGB(r, g, b);
93127   }
94128
95   return state->pens;
129   return m_pens;
96130}
97131
98132
133//-------------------------------------------------
134//  read - read access
135//-------------------------------------------------
99136
100/*************************************
101 *
102 *  State reset
103 *
104 *************************************/
105
106static DEVICE_RESET( tlc34076 )
137READ8_MEMBER( tlc34076_device::read )
107138{
108   tlc34076_state *state = get_safe_token(device);
109
110   /* reset the registers */
111   state->regs[PIXEL_READ_MASK]    = 0xff;
112   state->regs[GENERAL_CONTROL]    = 0x03;
113   state->regs[INPUT_CLOCK_SEL]    = 0x00;
114   state->regs[OUTPUT_CLOCK_SEL]   = 0x3f;
115   state->regs[MUX_CONTROL]        = 0x2d;
116   state->regs[PALETTE_PAGE]       = 0x00;
117   state->regs[TEST_REGISTER]      = 0x00;
118   state->regs[RESET_STATE]        = 0x00;
119}
120
121
122/*************************************
123 *
124 *  Read access
125 *
126 *************************************/
127
128READ8_DEVICE_HANDLER( tlc34076_r )
129{
130   tlc34076_state *state = get_safe_token(device);
131139   UINT8 result;
132140
133141   /* keep in range */
134142   offset &= 0x0f;
135   result = state->regs[offset];
143   result = m_regs[offset];
136144
137145   /* switch off the offset */
138146   switch (offset)
139147   {
140148      case PALETTE_DATA:
141         if (state->readindex == 0)
149         if (m_readindex == 0)
142150         {
143            state->palettedata[0] = state->local_paletteram[3 * state->regs[PALETTE_READ_ADDR] + 0];
144            state->palettedata[1] = state->local_paletteram[3 * state->regs[PALETTE_READ_ADDR] + 1];
145            state->palettedata[2] = state->local_paletteram[3 * state->regs[PALETTE_READ_ADDR] + 2];
151            m_palettedata[0] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 0];
152            m_palettedata[1] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 1];
153            m_palettedata[2] = m_local_paletteram[3 * m_regs[PALETTE_READ_ADDR] + 2];
146154         }
147         result = state->palettedata[state->readindex++];
148         if (state->readindex == 3)
155         result = m_palettedata[m_readindex++];
156         if (m_readindex == 3)
149157         {
150            state->readindex = 0;
151            state->regs[PALETTE_READ_ADDR]++;
158            m_readindex = 0;
159            m_regs[PALETTE_READ_ADDR]++;
152160         }
153161         break;
154162   }
r20534r20535
157165}
158166
159167
168//-------------------------------------------------
169//  write - write access
170//-------------------------------------------------
160171
161/*************************************
162 *
163 *  Write access
164 *
165 *************************************/
166
167WRITE8_DEVICE_HANDLER( tlc34076_w )
172WRITE8_MEMBER( tlc34076_device::write )
168173{
169   tlc34076_state *state = get_safe_token(device);
170174//  UINT8 oldval;
171175
172176   /* keep in range */
173177   offset &= 0x0f;
174//  oldval = state->regs[offset];
175   state->regs[offset] = data;
178//  oldval = m_regs[offset];
179   m_regs[offset] = data;
176180
177181   /* switch off the offset */
178182   switch (offset)
179183   {
180184      case PALETTE_WRITE_ADDR:
181         state->writeindex = 0;
185         m_writeindex = 0;
182186         break;
183187
184188      case PALETTE_DATA:
185         state->palettedata[state->writeindex++] = data;
186         if (state->writeindex == 3)
189         m_palettedata[m_writeindex++] = data;
190         if (m_writeindex == 3)
187191         {
188            state->local_paletteram[3 * state->regs[PALETTE_WRITE_ADDR] + 0] = state->palettedata[0];
189            state->local_paletteram[3 * state->regs[PALETTE_WRITE_ADDR] + 1] = state->palettedata[1];
190            state->local_paletteram[3 * state->regs[PALETTE_WRITE_ADDR] + 2] = state->palettedata[2];
191            state->writeindex = 0;
192            state->regs[PALETTE_WRITE_ADDR]++;
192            m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 0] = m_palettedata[0];
193            m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 1] = m_palettedata[1];
194            m_local_paletteram[3 * m_regs[PALETTE_WRITE_ADDR] + 2] = m_palettedata[2];
195            m_writeindex = 0;
196            m_regs[PALETTE_WRITE_ADDR]++;
193197         }
194198         break;
195199
196200      case PALETTE_READ_ADDR:
197         state->readindex = 0;
201         m_readindex = 0;
198202         break;
199203
200204      case GENERAL_CONTROL:
r20534r20535
251255         break;
252256
253257      case RESET_STATE:
254         DEVICE_RESET_CALL(tlc34076);
258         device_reset();
255259         break;
256260   }
257261}
258
259
260
261/*************************************
262 *
263 *  Device interface
264 *
265 *************************************/
266
267static DEVICE_START( tlc34076 )
268{
269   tlc34076_config *config = (tlc34076_config *)device->static_config();
270   tlc34076_state *state = get_safe_token(device);
271
272   state->dacbits = config->res_sel ? 8 : 6;
273
274   state_save_register_global_array(device->machine(), state->local_paletteram);
275   state_save_register_global_array(device->machine(), state->regs);
276   state_save_register_global_array(device->machine(), state->pens);
277
278   state_save_register_global(device->machine(), state->writeindex);
279   state_save_register_global(device->machine(), state->readindex);
280   state_save_register_global(device->machine(), state->dacbits);
281}
282
283const device_type TLC34076 = &device_creator<tlc34076_device>;
284
285tlc34076_device::tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
286   : device_t(mconfig, TLC34076, "TLC34076", tag, owner, clock)
287{
288   m_token = global_alloc_clear(tlc34076_state);
289}
290
291//-------------------------------------------------
292//  device_config_complete - perform any
293//  operations now that the configuration is
294//  complete
295//-------------------------------------------------
296
297void tlc34076_device::device_config_complete()
298{
299}
300
301//-------------------------------------------------
302//  device_start - device-specific startup
303//-------------------------------------------------
304
305void tlc34076_device::device_start()
306{
307   DEVICE_START_NAME( tlc34076 )(this);
308}
309
310//-------------------------------------------------
311//  device_reset - device-specific reset
312//-------------------------------------------------
313
314void tlc34076_device::device_reset()
315{
316   DEVICE_RESET_NAME( tlc34076 )(this);
317}
trunk/src/emu/video/tlc34076.h
r20534r20535
77
88***************************************************************************/
99
10#define TLC34076_6_BIT      0
11#define TLC34076_8_BIT      1
10#pragma once
1211
13const pen_t *tlc34076_get_pens(device_t *device);
12#ifndef __TLC34076_H__
13#define __TLC34076_H__
1414
1515
1616/***************************************************************************
17    TYPE DEFINITIONS
17    CONSTANTS
1818***************************************************************************/
1919
20struct tlc34076_config
20enum tlc34076_bits
2121{
22   int res_sel;
22   TLC34076_6_BIT = 6,
23   TLC34076_8_BIT = 8
2324};
2425
25extern const tlc34076_config tlc34076_6_bit_intf;
2626
27/***************************************************************************
28    TYPE DEFINITIONS
29***************************************************************************/
30
2731class tlc34076_device : public device_t
2832{
2933public:
34   // construction/destruction
3035   tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
31   ~tlc34076_device() { global_free(m_token); }
3236
33   // access to legacy token
34   void *token() const { assert(m_token != NULL); return m_token; }
37   // static configuration helpers
38   static void static_set_bits(device_t &device, tlc34076_bits bits);
39
40   // public interface
41   const pen_t *get_pens();   
42   DECLARE_READ8_MEMBER(read);
43   DECLARE_WRITE8_MEMBER(write);
44
3545protected:
3646   // device-level overrides
37   virtual void device_config_complete();
3847   virtual void device_start();
3948   virtual void device_reset();
49
4050private:
4151   // internal state
42   void *m_token;
52   UINT8 m_local_paletteram[0x300];
53   UINT8 m_regs[0x10];
54   UINT8 m_palettedata[3];
55   UINT8 m_writeindex;
56   UINT8 m_readindex;
57   UINT8 m_dacbits;
58   rgb_t m_pens[0x100];
4359};
4460
45extern const device_type TLC34076;
4661
47
48
4962/***************************************************************************
5063    DEVICE CONFIGURATION MACROS
5164***************************************************************************/
5265
53#define MCFG_TLC34076_ADD(_tag, _config) \
66#define MCFG_TLC34076_ADD(_tag, _bits) \
5467   MCFG_DEVICE_ADD(_tag, TLC34076, 0) \
55   MCFG_DEVICE_CONFIG(_config)
68   tlc34076_device::static_set_bits(*device, _bits);
5669
5770
58/***************************************************************************
59    DEVICE I/O FUNCTIONS
60***************************************************************************/
71extern const device_type TLC34076;
6172
62DECLARE_WRITE8_DEVICE_HANDLER( tlc34076_w );
63DECLARE_READ8_DEVICE_HANDLER( tlc34076_r );
73
74#endif /* __TLC34076_H__ */
trunk/src/mame/drivers/btoads.c
r20534r20535
332332   MCFG_NVRAM_ADD_1FILL("nvram")
333333
334334   /* video hardware */
335   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
335   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
336336
337337   MCFG_SCREEN_ADD("screen", RASTER)
338338   MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 640, 0, 512, 257, 0, 224)
trunk/src/mame/drivers/vcombat.c
r20534r20535
9595public:
9696   vcombat_state(const machine_config &mconfig, device_type type, const char *tag)
9797      : driver_device(mconfig, type, tag) ,
98      m_tlc34076(*this, "tlc34076"),
9899      m_vid_0_shared_ram(*this, "vid_0_ram"),
99100      m_vid_1_shared_ram(*this, "vid_1_ram"),
100101      m_framebuffer_ctrl(*this, "fb_control"){ }
101102
102103   UINT16* m_m68k_framebuffer[2];
103104   UINT16* m_i860_framebuffer[2][2];
105   required_device<tlc34076_device> m_tlc34076;
104106   required_shared_ptr<UINT16> m_vid_0_shared_ram;
105107   required_shared_ptr<UINT16> m_vid_1_shared_ram;
106108   required_shared_ptr<UINT16> m_framebuffer_ctrl;
r20534r20535
132134{
133135   vcombat_state *state = screen.machine().driver_data<vcombat_state>();
134136   int y;
135   const rgb_t *const pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
137   const rgb_t *const pens = state->m_tlc34076->get_pens();
136138
137139   UINT16 *m68k_buf = state->m_m68k_framebuffer[(*state->m_framebuffer_ctrl & 0x20) ? 1 : 0];
138140   UINT16 *i860_buf = state->m_i860_framebuffer[index][0];
r20534r20535
368370   //AM_RANGE(0x703000, 0x703001)      /* Headset rotation axis? */
369371   //AM_RANGE(0x704000, 0x704001)      /* Headset rotation axis? */
370372
371   AM_RANGE(0x706000, 0x70601f) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
373   AM_RANGE(0x706000, 0x70601f) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
372374ADDRESS_MAP_END
373375
374376
r20534r20535
607609   MCFG_QUANTUM_PERFECT_CPU("maincpu")
608610#endif
609611
610   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
612   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
611613
612614   /* Disabled for now as it can't handle multiple screens */
613615//  MCFG_MC6845_ADD("crtc", MC6845, 6000000 / 16, mc6845_intf)
r20534r20535
644646   MCFG_NVRAM_ADD_0FILL("nvram")
645647   MCFG_MACHINE_RESET_OVERRIDE(vcombat_state,shadfgtr)
646648
647   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
649   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
648650
649651   MCFG_MC6845_ADD("crtc", MC6845, XTAL_20MHz / 4 / 16, mc6845_intf)
650652
trunk/src/mame/drivers/tickee.c
r20534r20535
3333public:
3434   tickee_state(const machine_config &mconfig, device_type type, const char *tag)
3535      : driver_device(mconfig, type, tag) ,
36      m_tlc34076(*this, "tlc34076"),
3637      m_vram(*this, "vram"),
3738      m_control(*this, "control"){ }
3839
40   required_device<tlc34076_device> m_tlc34076;
3941   required_shared_ptr<UINT16> m_vram;
4042   optional_shared_ptr<UINT16> m_control;
4143   emu_timer *m_setup_gun_timer;
r20534r20535
160162   tickee_state *state = screen.machine().driver_data<tickee_state>();
161163   UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
162164   UINT32 *dest = &bitmap.pix32(scanline);
163   const rgb_t *pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
165   const rgb_t *pens = state->m_tlc34076->get_pens();
164166   int coladdr = params->coladdr << 1;
165167   int x;
166168
r20534r20535
186188   tickee_state *state = screen.machine().driver_data<tickee_state>();
187189   UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00];
188190   UINT32 *dest = &bitmap.pix32(scanline);
189   const rgb_t *pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
191   const rgb_t *pens = state->m_tlc34076->get_pens();
190192   int coladdr = params->coladdr << 1;
191193   int x;
192194
r20534r20535
388390   AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
389391   AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
390392   AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
391   AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
393   AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
392394   AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8_LEGACY("ym1", ay8910_r, 0x00ff)
393395   AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff)
394396   AM_RANGE(0x04200100, 0x0420010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff)
r20534r20535
406408   AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
407409   AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
408410   AM_RANGE(0x04100000, 0x04103fff) AM_RAM AM_SHARE("nvram")
409   AM_RANGE(0x04200000, 0x042000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
411   AM_RANGE(0x04200000, 0x042000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
410412   AM_RANGE(0x04300000, 0x0430000f) AM_DEVREAD8_LEGACY("ym1", ay8910_r, 0x00ff)
411413   AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff)
412414   AM_RANGE(0x04300100, 0x0430010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff)
r20534r20535
422424   AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram")
423425   AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0)
424426   AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_SHARE("nvram")
425   AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
427   AM_RANGE(0x04100000, 0x041000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
426428   AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8_LEGACY("ym", ay8910_r, 0x00ff)
427429   AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8_LEGACY("ym", ay8910_address_data_w, 0x00ff)
428430   AM_RANGE(0x04200100, 0x0420010f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
r20534r20535
451453   AM_RANGE(0xfc000b00, 0xfc000b0f) AM_READ_PORT("DSW0")
452454   AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1")
453455   AM_RANGE(0xfc000e00, 0xfc000e1f) AM_READ(watchdog_reset16_r)
454   AM_RANGE(0xfc100000, 0xfc1000ff) AM_MIRROR(0x80000) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
456   AM_RANGE(0xfc100000, 0xfc1000ff) AM_MIRROR(0x80000) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
455457   AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram")
456458   AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
457459   AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE(ff7f_r, ff7f_w)
r20534r20535
775777   MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
776778
777779   /* video hardware */
778   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
780   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
779781
780782   MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
781783
r20534r20535
815817   MCFG_NVRAM_ADD_1FILL("nvram")
816818
817819   /* video hardware */
818   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
820   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
819821
820822   MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee)
821823
r20534r20535
845847   MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH)
846848
847849   /* video hardware */
848   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
850   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
849851
850852   MCFG_SCREEN_ADD("screen", RASTER)
851853   MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200)
trunk/src/mame/drivers/artmagic.c
r20534r20535
503503   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0")
504504   AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1")
505505   AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w)
506   AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
506   AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
507507   AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w)
508508   AM_RANGE(0xffe00000, 0xffffffff) AM_RAM
509509ADDRESS_MAP_END
r20534r20535
513513   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0")
514514   AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1")
515515   AM_RANGE(0x00800000, 0x0080007f) AM_READWRITE(artmagic_blitter_r, artmagic_blitter_w)
516   AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
516   AM_RANGE(0x00c00000, 0x00c000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
517517   AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w)
518518   AM_RANGE(0xffc00000, 0xffffffff) AM_RAM
519519ADDRESS_MAP_END
r20534r20535
844844   MCFG_NVRAM_ADD_1FILL("nvram")
845845
846846   /* video hardware */
847   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
847   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
848848
849849
850850   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/coolpool.c
r20534r20535
8989
9090   UINT16 *vram = &state->m_vram_base[(params->rowaddr << 8) & 0x1ff00];
9191   UINT32 *dest = &bitmap.pix32(scanline);
92   const rgb_t *pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
92   const rgb_t *pens = state->m_tlc34076->get_pens();
9393   int coladdr = params->coladdr;
9494   int x;
9595
r20534r20535
632632
633633static ADDRESS_MAP_START( coolpool_map, AS_PROGRAM, 16, coolpool_state )
634634   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base")
635   AM_RANGE(0x01000000, 0x010000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)    // IMSG176P-40
635   AM_RANGE(0x01000000, 0x010000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)    // IMSG176P-40
636636   AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
637637   AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
638638   AM_RANGE(0x03000000, 0x03ffffff) AM_ROM AM_REGION("gfx1", 0)
r20534r20535
646646   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base")
647647   AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w)
648648   AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w)
649   AM_RANGE(0x04000000, 0x040000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)    // IMSG176P-40
649   AM_RANGE(0x04000000, 0x040000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)    // IMSG176P-40
650650   AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram")
651651   AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w)
652652   AM_RANGE(0xff000000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0)
r20534r20535
879879   MCFG_TIMER_DRIVER_ADD("nvram_timer", coolpool_state, nvram_write_timeout)
880880
881881   /* video hardware */
882   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
882   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
883883
884884   MCFG_SCREEN_ADD("screen", RASTER)
885885   MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 424, 0, 320, 262, 0, 240)
trunk/src/mame/drivers/itech8.c
r20534r20535
16911691   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
16921692
16931693   /* video hardware */
1694   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
1694   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
16951695
16961696   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
16971697
trunk/src/mame/drivers/skeetsht.c
r20534r20535
22
33    Dynamo Skeet Shot
44
5Notes: Pop Shot is a prototype sequal (or upgrade) to Skeet Shot
5   Notes:
6      Pop Shot is a prototype sequal (or upgrade) to Skeet Shot
67
78***************************************************************************/
89
r20534r20535
2425public:
2526   skeetsht_state(const machine_config &mconfig, device_type type, const char *tag)
2627      : driver_device(mconfig, type, tag) ,
28      m_tlc34076(*this, "tlc34076"),
2729      m_tms_vram(*this, "tms_vram"){ }
2830
31   required_device<tlc34076_device> m_tlc34076;
2932   required_shared_ptr<UINT16> m_tms_vram;
3033   UINT8 m_porta_latch;
3134   UINT8 m_ay_sel;
r20534r20535
7174static void skeetsht_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
7275{
7376   skeetsht_state *state = screen.machine().driver_data<skeetsht_state>();
74   const rgb_t *const pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
77   const rgb_t *const pens = state->m_tlc34076->get_pens();
7578   UINT16 *vram = &state->m_tms_vram[(params->rowaddr << 8) & 0x3ff00];
7679   UINT32 *dest = &bitmap.pix32(scanline);
7780   int coladdr = params->coladdr;
r20534r20535
9295   if (offset & 8)
9396      offset = (offset & ~8) | 4;
9497
95   return tlc34076_r(machine().device("tlc34076"), space, offset);
98   return m_tlc34076->read(space, offset);
9699}
97100
98101WRITE16_MEMBER(skeetsht_state::ramdac_w)
r20534r20535
102105   if (offset & 8)
103106      offset = (offset & ~8) | 4;
104107
105   tlc34076_w(machine().device("tlc34076"), space, offset, data);
108   m_tlc34076->write(space, offset, data);
106109}
107110
108111
r20534r20535
259262   MCFG_CPU_PROGRAM_MAP(tms_program_map)
260263
261264
262   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
265   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
263266
264267   MCFG_SCREEN_ADD("screen", RASTER)
265268   MCFG_SCREEN_RAW_PARAMS(48000000 / 8, 156*4, 0, 100*4, 328, 0, 300) // FIXME
trunk/src/mame/drivers/xtheball.c
r20534r20535
1919public:
2020   xtheball_state(const machine_config &mconfig, device_type type, const char *tag)
2121      : driver_device(mconfig, type, tag) ,
22      m_vram_bg(*this, "vrabg"),
23      m_vram_fg(*this, "vrafg"){ }
22        m_tlc34076(*this, "tlc34076"),
23        m_vram_bg(*this, "vrabg"),
24        m_vram_fg(*this, "vrafg")
25      { }
2426
27   required_device<tlc34076_device> m_tlc34076;
2528   required_shared_ptr<UINT16> m_vram_bg;
2629   required_shared_ptr<UINT16> m_vram_fg;
2730   UINT8 m_bitvals[32];
r20534r20535
4447   xtheball_state *state = screen.machine().driver_data<xtheball_state>();
4548   UINT16 *srcbg = &state->m_vram_bg[(params->rowaddr << 8) & 0xff00];
4649   UINT32 *dest = &bitmap.pix32(scanline);
47   const rgb_t *pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
50   const rgb_t *pens = state->m_tlc34076->get_pens();
4851   int coladdr = params->coladdr;
4952   int x;
5053
r20534r20535
214217   AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("nvram")
215218   AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("vrabg")
216219   AM_RANGE(0x02000000, 0x020fffff) AM_RAM AM_SHARE("vrafg")
217   AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff)
220   AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
218221   AM_RANGE(0x03040000, 0x030401ff) AM_WRITE(bit_controls_w)
219222   AM_RANGE(0x03040080, 0x0304008f) AM_READ_PORT("DSW")
220223   AM_RANGE(0x03040100, 0x0304010f) AM_READ(analogx_r)
r20534r20535
345348   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH)
346349
347350   /* video hardware */
348   MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf)
351   MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT)
349352
350353   MCFG_SCREEN_ADD("screen", RASTER)
351354   MCFG_SCREEN_RAW_PARAMS(10000000, 640, 114, 626, 257, 24, 248)
trunk/src/mame/video/itech8.c
r20534r20535
188188
189189WRITE8_MEMBER(itech8_state::itech8_palette_w)
190190{
191   tlc34076_w(machine().device("tlc34076"), space, offset/2, data);
191   m_tlc34076->write(space, offset/2, data);
192192}
193193
194194
r20534r20535
605605   struct tms34061_display &tms_state = m_tms_state;
606606   UINT32 page_offset;
607607   int x, y;
608   const rgb_t *pens = tlc34076_get_pens(machine().device("tlc34076"));
608   const rgb_t *pens = m_tlc34076->get_pens();
609609
610610   /* first get the current display state */
611611   tms34061_get_display_state(&tms_state);
r20534r20535
690690   struct tms34061_display &tms_state = m_tms_state;
691691   UINT32 page_offset;
692692   int x, y;
693   const rgb_t *pens = tlc34076_get_pens(machine().device("tlc34076"));
693   const rgb_t *pens = m_tlc34076->get_pens();
694694
695695   /* first get the current display state */
696696   tms34061_get_display_state(&tms_state);
r20534r20535
722722   struct tms34061_display &tms_state = m_tms_state;
723723   UINT32 page_offset;
724724   int x, y;
725   const rgb_t *pens = tlc34076_get_pens(machine().device("tlc34076"));
725   const rgb_t *pens = m_tlc34076->get_pens();
726726
727727   /* first get the current display state */
728728   tms34061_get_display_state(&tms_state);
trunk/src/mame/video/artmagic.c
r20534r20535
341341   offs_t offset = (params->rowaddr << 12) & 0x7ff000;
342342   UINT16 *vram = address_to_vram(state, &offset);
343343   UINT32 *dest = &bitmap.pix32(scanline);
344   const rgb_t *pens = tlc34076_get_pens(screen.machine().device("tlc34076"));
344   const rgb_t *pens = state->m_tlc34076->get_pens();
345345   int coladdr = params->coladdr << 1;
346346   int x;
347347
trunk/src/mame/video/btoads.c
r20534r20535
123123
124124WRITE16_MEMBER( btoads_state::paletteram_w )
125125{
126   tlc34076_w(m_tlc34076, space, offset/2, data);
126   m_tlc34076->write(space, offset/2, data);
127127}
128128
129129
130130READ16_MEMBER( btoads_state::paletteram_r )
131131{
132   return tlc34076_r(m_tlc34076, space, offset/2);
132   return m_tlc34076->read(space, offset/2);
133133}
134134
135135
r20534r20535
323323   UINT16 *bg1_base = &m_vram_bg1[(fulladdr + (m_yscroll1 << 10)) & 0x3fc00];
324324   UINT8 *spr_base = &m_vram_fg_display[fulladdr & 0x3fc00];
325325   UINT32 *dst = &bitmap.pix32(scanline);
326   const rgb_t *pens = tlc34076_get_pens(m_tlc34076);
326   const rgb_t *pens = m_tlc34076->get_pens();
327327   int coladdr = fulladdr & 0x3ff;
328328   int x;
329329
trunk/src/mame/includes/artmagic.h
r20534r20535
88{
99public:
1010   artmagic_state(const machine_config &mconfig, device_type type, const char *tag)
11      : driver_device(mconfig, type, tag) ,
11      : driver_device(mconfig, type, tag),
12      m_tlc34076(*this, "tlc34076"),
1213      m_control(*this, "control"),
1314      m_vram0(*this, "vram0"),
1415      m_vram1(*this, "vram1"){ }
1516
17   required_device<tlc34076_device> m_tlc34076;
1618   required_shared_ptr<UINT16> m_control;
1719   UINT8 m_tms_irq;
1820   UINT8 m_hack_irq;
trunk/src/mame/includes/coolpool.h
r20534r20535
55public:
66   coolpool_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag) ,
8      m_tlc34076(*this, "tlc34076"),
89      m_vram_base(*this, "vram_base"),
910      m_nvram(*this, "nvram"){ }
1011
12   optional_device<tlc34076_device> m_tlc34076;
1113   required_shared_ptr<UINT16> m_vram_base;
1214   required_shared_ptr<UINT16> m_nvram;
1315
trunk/src/mame/includes/itech8.h
r20534r20535
55
66**************************************************************************/
77
8#include "video/tlc34076.h"
89#include "video/tms34061.h"
910
1011#define YBUFFER_COUNT   15
r20534r20535
1415public:
1516   itech8_state(const machine_config &mconfig, device_type type, const char *tag)
1617      : driver_device(mconfig, type, tag),
18         m_tlc34076(*this, "tlc34076"),
1719         m_visarea(0, 0, 0, 0){ }
1820
21   required_device<tlc34076_device> m_tlc34076;   
22
1923   rectangle m_visarea;
2024   UINT8 m_grom_bank;
2125

Previous 199869 Revisions Next


© 1997-2024 The MAME Team