trunk/src/emu/video/tlc34076.c
| r20534 | r20535 | |
| 10 | 10 | #include "emu.h" |
| 11 | 11 | #include "tlc34076.h" |
| 12 | 12 | |
| 13 | |
| 14 | //************************************************************************** |
| 15 | // MACROS |
| 16 | //************************************************************************** |
| 17 | |
| 13 | 18 | #define PALETTE_WRITE_ADDR 0x00 |
| 14 | 19 | #define PALETTE_DATA 0x01 |
| 15 | 20 | #define PIXEL_READ_MASK 0x02 |
| r20534 | r20535 | |
| 22 | 27 | #define TEST_REGISTER 0x0e |
| 23 | 28 | #define RESET_STATE 0x0f |
| 24 | 29 | |
| 25 | | struct 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; |
| 33 | 30 | |
| 34 | | rgb_t pens[0x100]; |
| 35 | | }; |
| 31 | //************************************************************************** |
| 32 | // LIVE DEVICE |
| 33 | //************************************************************************** |
| 36 | 34 | |
| 37 | | const tlc34076_config tlc34076_6_bit_intf = |
| 35 | // device type definition |
| 36 | const device_type TLC34076 = &device_creator<tlc34076_device>; |
| 37 | |
| 38 | |
| 39 | //------------------------------------------------- |
| 40 | // tlc34076_device - constructor |
| 41 | //------------------------------------------------- |
| 42 | tlc34076_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) |
| 38 | 45 | { |
| 39 | | TLC34076_6_BIT |
| 40 | | }; |
| 46 | } |
| 41 | 47 | |
| 42 | 48 | |
| 43 | | /************************************* |
| 44 | | * |
| 45 | | * Inline functions |
| 46 | | * |
| 47 | | *************************************/ |
| 49 | //------------------------------------------------- |
| 50 | // static_set_bits - set DAC resolution |
| 51 | //------------------------------------------------- |
| 52 | void 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 | } |
| 48 | 57 | |
| 49 | | INLINE tlc34076_state *get_safe_token( device_t *device ) |
| 58 | |
| 59 | //------------------------------------------------- |
| 60 | // device_start - device-specific startup |
| 61 | //------------------------------------------------- |
| 62 | void tlc34076_device::device_start() |
| 50 | 63 | { |
| 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)); |
| 53 | 67 | |
| 54 | | return (tlc34076_state *)downcast<tlc34076_device *>(device)->token(); |
| 68 | save_item(NAME(m_writeindex)); |
| 69 | save_item(NAME(m_readindex)); |
| 55 | 70 | } |
| 56 | 71 | |
| 57 | | /************************************* |
| 58 | | * |
| 59 | | * Retrieve Current Palette |
| 60 | | * |
| 61 | | *************************************/ |
| 62 | 72 | |
| 63 | | const pen_t *tlc34076_get_pens(device_t *device) |
| 73 | //------------------------------------------------- |
| 74 | // device_reset - device-specific reset |
| 75 | //------------------------------------------------- |
| 76 | |
| 77 | void tlc34076_device::device_reset() |
| 64 | 78 | { |
| 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 | |
| 98 | const pen_t *tlc34076_device::get_pens() |
| 99 | { |
| 66 | 100 | offs_t i; |
| 67 | 101 | |
| 68 | 102 | for (i = 0; i < 0x100; i++) |
| 69 | 103 | { |
| 70 | 104 | int r, g, b; |
| 71 | 105 | |
| 72 | | if ((i & state->regs[PIXEL_READ_MASK]) == i) |
| 106 | if ((i & m_regs[PIXEL_READ_MASK]) == i) |
| 73 | 107 | { |
| 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]; |
| 77 | 111 | |
| 78 | | if (state->dacbits == 6) |
| 112 | if (m_dacbits == 6) |
| 79 | 113 | { |
| 80 | 114 | r = pal6bit(r); |
| 81 | 115 | g = pal6bit(g); |
| r20534 | r20535 | |
| 89 | 123 | b = 0; |
| 90 | 124 | } |
| 91 | 125 | |
| 92 | | state->pens[i] = MAKE_RGB(r, g, b); |
| 126 | m_pens[i] = MAKE_RGB(r, g, b); |
| 93 | 127 | } |
| 94 | 128 | |
| 95 | | return state->pens; |
| 129 | return m_pens; |
| 96 | 130 | } |
| 97 | 131 | |
| 98 | 132 | |
| 133 | //------------------------------------------------- |
| 134 | // read - read access |
| 135 | //------------------------------------------------- |
| 99 | 136 | |
| 100 | | /************************************* |
| 101 | | * |
| 102 | | * State reset |
| 103 | | * |
| 104 | | *************************************/ |
| 105 | | |
| 106 | | static DEVICE_RESET( tlc34076 ) |
| 137 | READ8_MEMBER( tlc34076_device::read ) |
| 107 | 138 | { |
| 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 | | |
| 128 | | READ8_DEVICE_HANDLER( tlc34076_r ) |
| 129 | | { |
| 130 | | tlc34076_state *state = get_safe_token(device); |
| 131 | 139 | UINT8 result; |
| 132 | 140 | |
| 133 | 141 | /* keep in range */ |
| 134 | 142 | offset &= 0x0f; |
| 135 | | result = state->regs[offset]; |
| 143 | result = m_regs[offset]; |
| 136 | 144 | |
| 137 | 145 | /* switch off the offset */ |
| 138 | 146 | switch (offset) |
| 139 | 147 | { |
| 140 | 148 | case PALETTE_DATA: |
| 141 | | if (state->readindex == 0) |
| 149 | if (m_readindex == 0) |
| 142 | 150 | { |
| 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]; |
| 146 | 154 | } |
| 147 | | result = state->palettedata[state->readindex++]; |
| 148 | | if (state->readindex == 3) |
| 155 | result = m_palettedata[m_readindex++]; |
| 156 | if (m_readindex == 3) |
| 149 | 157 | { |
| 150 | | state->readindex = 0; |
| 151 | | state->regs[PALETTE_READ_ADDR]++; |
| 158 | m_readindex = 0; |
| 159 | m_regs[PALETTE_READ_ADDR]++; |
| 152 | 160 | } |
| 153 | 161 | break; |
| 154 | 162 | } |
| r20534 | r20535 | |
| 157 | 165 | } |
| 158 | 166 | |
| 159 | 167 | |
| 168 | //------------------------------------------------- |
| 169 | // write - write access |
| 170 | //------------------------------------------------- |
| 160 | 171 | |
| 161 | | /************************************* |
| 162 | | * |
| 163 | | * Write access |
| 164 | | * |
| 165 | | *************************************/ |
| 166 | | |
| 167 | | WRITE8_DEVICE_HANDLER( tlc34076_w ) |
| 172 | WRITE8_MEMBER( tlc34076_device::write ) |
| 168 | 173 | { |
| 169 | | tlc34076_state *state = get_safe_token(device); |
| 170 | 174 | // UINT8 oldval; |
| 171 | 175 | |
| 172 | 176 | /* keep in range */ |
| 173 | 177 | offset &= 0x0f; |
| 174 | | // oldval = state->regs[offset]; |
| 175 | | state->regs[offset] = data; |
| 178 | // oldval = m_regs[offset]; |
| 179 | m_regs[offset] = data; |
| 176 | 180 | |
| 177 | 181 | /* switch off the offset */ |
| 178 | 182 | switch (offset) |
| 179 | 183 | { |
| 180 | 184 | case PALETTE_WRITE_ADDR: |
| 181 | | state->writeindex = 0; |
| 185 | m_writeindex = 0; |
| 182 | 186 | break; |
| 183 | 187 | |
| 184 | 188 | 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) |
| 187 | 191 | { |
| 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]++; |
| 193 | 197 | } |
| 194 | 198 | break; |
| 195 | 199 | |
| 196 | 200 | case PALETTE_READ_ADDR: |
| 197 | | state->readindex = 0; |
| 201 | m_readindex = 0; |
| 198 | 202 | break; |
| 199 | 203 | |
| 200 | 204 | case GENERAL_CONTROL: |
| r20534 | r20535 | |
| 251 | 255 | break; |
| 252 | 256 | |
| 253 | 257 | case RESET_STATE: |
| 254 | | DEVICE_RESET_CALL(tlc34076); |
| 258 | device_reset(); |
| 255 | 259 | break; |
| 256 | 260 | } |
| 257 | 261 | } |
| 258 | | |
| 259 | | |
| 260 | | |
| 261 | | /************************************* |
| 262 | | * |
| 263 | | * Device interface |
| 264 | | * |
| 265 | | *************************************/ |
| 266 | | |
| 267 | | static 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 | | |
| 283 | | const device_type TLC34076 = &device_creator<tlc34076_device>; |
| 284 | | |
| 285 | | tlc34076_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 | | |
| 297 | | void tlc34076_device::device_config_complete() |
| 298 | | { |
| 299 | | } |
| 300 | | |
| 301 | | //------------------------------------------------- |
| 302 | | // device_start - device-specific startup |
| 303 | | //------------------------------------------------- |
| 304 | | |
| 305 | | void tlc34076_device::device_start() |
| 306 | | { |
| 307 | | DEVICE_START_NAME( tlc34076 )(this); |
| 308 | | } |
| 309 | | |
| 310 | | //------------------------------------------------- |
| 311 | | // device_reset - device-specific reset |
| 312 | | //------------------------------------------------- |
| 313 | | |
| 314 | | void tlc34076_device::device_reset() |
| 315 | | { |
| 316 | | DEVICE_RESET_NAME( tlc34076 )(this); |
| 317 | | } |
trunk/src/emu/video/tlc34076.h
| r20534 | r20535 | |
| 7 | 7 | |
| 8 | 8 | ***************************************************************************/ |
| 9 | 9 | |
| 10 | | #define TLC34076_6_BIT 0 |
| 11 | | #define TLC34076_8_BIT 1 |
| 10 | #pragma once |
| 12 | 11 | |
| 13 | | const pen_t *tlc34076_get_pens(device_t *device); |
| 12 | #ifndef __TLC34076_H__ |
| 13 | #define __TLC34076_H__ |
| 14 | 14 | |
| 15 | 15 | |
| 16 | 16 | /*************************************************************************** |
| 17 | | TYPE DEFINITIONS |
| 17 | CONSTANTS |
| 18 | 18 | ***************************************************************************/ |
| 19 | 19 | |
| 20 | | struct tlc34076_config |
| 20 | enum tlc34076_bits |
| 21 | 21 | { |
| 22 | | int res_sel; |
| 22 | TLC34076_6_BIT = 6, |
| 23 | TLC34076_8_BIT = 8 |
| 23 | 24 | }; |
| 24 | 25 | |
| 25 | | extern const tlc34076_config tlc34076_6_bit_intf; |
| 26 | 26 | |
| 27 | /*************************************************************************** |
| 28 | TYPE DEFINITIONS |
| 29 | ***************************************************************************/ |
| 30 | |
| 27 | 31 | class tlc34076_device : public device_t |
| 28 | 32 | { |
| 29 | 33 | public: |
| 34 | // construction/destruction |
| 30 | 35 | tlc34076_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 31 | | ~tlc34076_device() { global_free(m_token); } |
| 32 | 36 | |
| 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 | |
| 35 | 45 | protected: |
| 36 | 46 | // device-level overrides |
| 37 | | virtual void device_config_complete(); |
| 38 | 47 | virtual void device_start(); |
| 39 | 48 | virtual void device_reset(); |
| 49 | |
| 40 | 50 | private: |
| 41 | 51 | // 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]; |
| 43 | 59 | }; |
| 44 | 60 | |
| 45 | | extern const device_type TLC34076; |
| 46 | 61 | |
| 47 | | |
| 48 | | |
| 49 | 62 | /*************************************************************************** |
| 50 | 63 | DEVICE CONFIGURATION MACROS |
| 51 | 64 | ***************************************************************************/ |
| 52 | 65 | |
| 53 | | #define MCFG_TLC34076_ADD(_tag, _config) \ |
| 66 | #define MCFG_TLC34076_ADD(_tag, _bits) \ |
| 54 | 67 | MCFG_DEVICE_ADD(_tag, TLC34076, 0) \ |
| 55 | | MCFG_DEVICE_CONFIG(_config) |
| 68 | tlc34076_device::static_set_bits(*device, _bits); |
| 56 | 69 | |
| 57 | 70 | |
| 58 | | /*************************************************************************** |
| 59 | | DEVICE I/O FUNCTIONS |
| 60 | | ***************************************************************************/ |
| 71 | extern const device_type TLC34076; |
| 61 | 72 | |
| 62 | | DECLARE_WRITE8_DEVICE_HANDLER( tlc34076_w ); |
| 63 | | DECLARE_READ8_DEVICE_HANDLER( tlc34076_r ); |
| 73 | |
| 74 | #endif /* __TLC34076_H__ */ |
trunk/src/mame/drivers/vcombat.c
| r20534 | r20535 | |
| 95 | 95 | public: |
| 96 | 96 | vcombat_state(const machine_config &mconfig, device_type type, const char *tag) |
| 97 | 97 | : driver_device(mconfig, type, tag) , |
| 98 | m_tlc34076(*this, "tlc34076"), |
| 98 | 99 | m_vid_0_shared_ram(*this, "vid_0_ram"), |
| 99 | 100 | m_vid_1_shared_ram(*this, "vid_1_ram"), |
| 100 | 101 | m_framebuffer_ctrl(*this, "fb_control"){ } |
| 101 | 102 | |
| 102 | 103 | UINT16* m_m68k_framebuffer[2]; |
| 103 | 104 | UINT16* m_i860_framebuffer[2][2]; |
| 105 | required_device<tlc34076_device> m_tlc34076; |
| 104 | 106 | required_shared_ptr<UINT16> m_vid_0_shared_ram; |
| 105 | 107 | required_shared_ptr<UINT16> m_vid_1_shared_ram; |
| 106 | 108 | required_shared_ptr<UINT16> m_framebuffer_ctrl; |
| r20534 | r20535 | |
| 132 | 134 | { |
| 133 | 135 | vcombat_state *state = screen.machine().driver_data<vcombat_state>(); |
| 134 | 136 | 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(); |
| 136 | 138 | |
| 137 | 139 | UINT16 *m68k_buf = state->m_m68k_framebuffer[(*state->m_framebuffer_ctrl & 0x20) ? 1 : 0]; |
| 138 | 140 | UINT16 *i860_buf = state->m_i860_framebuffer[index][0]; |
| r20534 | r20535 | |
| 368 | 370 | //AM_RANGE(0x703000, 0x703001) /* Headset rotation axis? */ |
| 369 | 371 | //AM_RANGE(0x704000, 0x704001) /* Headset rotation axis? */ |
| 370 | 372 | |
| 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) |
| 372 | 374 | ADDRESS_MAP_END |
| 373 | 375 | |
| 374 | 376 | |
| r20534 | r20535 | |
| 607 | 609 | MCFG_QUANTUM_PERFECT_CPU("maincpu") |
| 608 | 610 | #endif |
| 609 | 611 | |
| 610 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 612 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 611 | 613 | |
| 612 | 614 | /* Disabled for now as it can't handle multiple screens */ |
| 613 | 615 | // MCFG_MC6845_ADD("crtc", MC6845, 6000000 / 16, mc6845_intf) |
| r20534 | r20535 | |
| 644 | 646 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 645 | 647 | MCFG_MACHINE_RESET_OVERRIDE(vcombat_state,shadfgtr) |
| 646 | 648 | |
| 647 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 649 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 648 | 650 | |
| 649 | 651 | MCFG_MC6845_ADD("crtc", MC6845, XTAL_20MHz / 4 / 16, mc6845_intf) |
| 650 | 652 | |
trunk/src/mame/drivers/tickee.c
| r20534 | r20535 | |
| 33 | 33 | public: |
| 34 | 34 | tickee_state(const machine_config &mconfig, device_type type, const char *tag) |
| 35 | 35 | : driver_device(mconfig, type, tag) , |
| 36 | m_tlc34076(*this, "tlc34076"), |
| 36 | 37 | m_vram(*this, "vram"), |
| 37 | 38 | m_control(*this, "control"){ } |
| 38 | 39 | |
| 40 | required_device<tlc34076_device> m_tlc34076; |
| 39 | 41 | required_shared_ptr<UINT16> m_vram; |
| 40 | 42 | optional_shared_ptr<UINT16> m_control; |
| 41 | 43 | emu_timer *m_setup_gun_timer; |
| r20534 | r20535 | |
| 160 | 162 | tickee_state *state = screen.machine().driver_data<tickee_state>(); |
| 161 | 163 | UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00]; |
| 162 | 164 | 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(); |
| 164 | 166 | int coladdr = params->coladdr << 1; |
| 165 | 167 | int x; |
| 166 | 168 | |
| r20534 | r20535 | |
| 186 | 188 | tickee_state *state = screen.machine().driver_data<tickee_state>(); |
| 187 | 189 | UINT16 *src = &state->m_vram[(params->rowaddr << 8) & 0x3ff00]; |
| 188 | 190 | 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(); |
| 190 | 192 | int coladdr = params->coladdr << 1; |
| 191 | 193 | int x; |
| 192 | 194 | |
| r20534 | r20535 | |
| 388 | 390 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") |
| 389 | 391 | AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) |
| 390 | 392 | 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) |
| 392 | 394 | AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8_LEGACY("ym1", ay8910_r, 0x00ff) |
| 393 | 395 | AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff) |
| 394 | 396 | AM_RANGE(0x04200100, 0x0420010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff) |
| r20534 | r20535 | |
| 406 | 408 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") |
| 407 | 409 | AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) |
| 408 | 410 | 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) |
| 410 | 412 | AM_RANGE(0x04300000, 0x0430000f) AM_DEVREAD8_LEGACY("ym1", ay8910_r, 0x00ff) |
| 411 | 413 | AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff) |
| 412 | 414 | AM_RANGE(0x04300100, 0x0430010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff) |
| r20534 | r20535 | |
| 422 | 424 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("vram") |
| 423 | 425 | AM_RANGE(0x02000000, 0x02ffffff) AM_ROM AM_REGION("user1", 0) |
| 424 | 426 | 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) |
| 426 | 428 | AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8_LEGACY("ym", ay8910_r, 0x00ff) |
| 427 | 429 | AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8_LEGACY("ym", ay8910_address_data_w, 0x00ff) |
| 428 | 430 | AM_RANGE(0x04200100, 0x0420010f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| r20534 | r20535 | |
| 451 | 453 | AM_RANGE(0xfc000b00, 0xfc000b0f) AM_READ_PORT("DSW0") |
| 452 | 454 | AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1") |
| 453 | 455 | 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) |
| 455 | 457 | AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram") |
| 456 | 458 | AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 457 | 459 | AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE(ff7f_r, ff7f_w) |
| r20534 | r20535 | |
| 775 | 777 | MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) |
| 776 | 778 | |
| 777 | 779 | /* video hardware */ |
| 778 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 780 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 779 | 781 | |
| 780 | 782 | MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee) |
| 781 | 783 | |
| r20534 | r20535 | |
| 815 | 817 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 816 | 818 | |
| 817 | 819 | /* video hardware */ |
| 818 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 820 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 819 | 821 | |
| 820 | 822 | MCFG_VIDEO_START_OVERRIDE(tickee_state,tickee) |
| 821 | 823 | |
| r20534 | r20535 | |
| 845 | 847 | MCFG_TICKET_DISPENSER_ADD("ticket2", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) |
| 846 | 848 | |
| 847 | 849 | /* video hardware */ |
| 848 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 850 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 849 | 851 | |
| 850 | 852 | MCFG_SCREEN_ADD("screen", RASTER) |
| 851 | 853 | MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200) |
trunk/src/mame/drivers/artmagic.c
| r20534 | r20535 | |
| 503 | 503 | AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0") |
| 504 | 504 | AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1") |
| 505 | 505 | 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) |
| 507 | 507 | AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) |
| 508 | 508 | AM_RANGE(0xffe00000, 0xffffffff) AM_RAM |
| 509 | 509 | ADDRESS_MAP_END |
| r20534 | r20535 | |
| 513 | 513 | AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram0") |
| 514 | 514 | AM_RANGE(0x00400000, 0x005fffff) AM_RAM AM_SHARE("vram1") |
| 515 | 515 | 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) |
| 517 | 517 | AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) |
| 518 | 518 | AM_RANGE(0xffc00000, 0xffffffff) AM_RAM |
| 519 | 519 | ADDRESS_MAP_END |
| r20534 | r20535 | |
| 844 | 844 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 845 | 845 | |
| 846 | 846 | /* video hardware */ |
| 847 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 847 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 848 | 848 | |
| 849 | 849 | |
| 850 | 850 | MCFG_SCREEN_ADD("screen", RASTER) |
trunk/src/mame/drivers/coolpool.c
| r20534 | r20535 | |
| 89 | 89 | |
| 90 | 90 | UINT16 *vram = &state->m_vram_base[(params->rowaddr << 8) & 0x1ff00]; |
| 91 | 91 | 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(); |
| 93 | 93 | int coladdr = params->coladdr; |
| 94 | 94 | int x; |
| 95 | 95 | |
| r20534 | r20535 | |
| 632 | 632 | |
| 633 | 633 | static ADDRESS_MAP_START( coolpool_map, AS_PROGRAM, 16, coolpool_state ) |
| 634 | 634 | 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 |
| 636 | 636 | AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w) |
| 637 | 637 | AM_RANGE(0x03000000, 0x0300000f) AM_WRITE(coolpool_misc_w) |
| 638 | 638 | AM_RANGE(0x03000000, 0x03ffffff) AM_ROM AM_REGION("gfx1", 0) |
| r20534 | r20535 | |
| 646 | 646 | AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("vram_base") |
| 647 | 647 | AM_RANGE(0x02000000, 0x020000ff) AM_READWRITE(coolpool_iop_r, coolpool_iop_w) |
| 648 | 648 | 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 |
| 650 | 650 | AM_RANGE(0x06000000, 0x0601ffff) AM_MIRROR(0x00020000) AM_RAM_WRITE(nvram_thrash_data_w) AM_SHARE("nvram") |
| 651 | 651 | AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) |
| 652 | 652 | AM_RANGE(0xff000000, 0xff7fffff) AM_ROM AM_REGION("gfx1", 0) |
| r20534 | r20535 | |
| 879 | 879 | MCFG_TIMER_DRIVER_ADD("nvram_timer", coolpool_state, nvram_write_timeout) |
| 880 | 880 | |
| 881 | 881 | /* video hardware */ |
| 882 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 882 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 883 | 883 | |
| 884 | 884 | MCFG_SCREEN_ADD("screen", RASTER) |
| 885 | 885 | MCFG_SCREEN_RAW_PARAMS(XTAL_40MHz/6, 424, 0, 320, 262, 0, 240) |
trunk/src/mame/drivers/skeetsht.c
| r20534 | r20535 | |
| 2 | 2 | |
| 3 | 3 | Dynamo Skeet Shot |
| 4 | 4 | |
| 5 | | Notes: 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 |
| 6 | 7 | |
| 7 | 8 | ***************************************************************************/ |
| 8 | 9 | |
| r20534 | r20535 | |
| 24 | 25 | public: |
| 25 | 26 | skeetsht_state(const machine_config &mconfig, device_type type, const char *tag) |
| 26 | 27 | : driver_device(mconfig, type, tag) , |
| 28 | m_tlc34076(*this, "tlc34076"), |
| 27 | 29 | m_tms_vram(*this, "tms_vram"){ } |
| 28 | 30 | |
| 31 | required_device<tlc34076_device> m_tlc34076; |
| 29 | 32 | required_shared_ptr<UINT16> m_tms_vram; |
| 30 | 33 | UINT8 m_porta_latch; |
| 31 | 34 | UINT8 m_ay_sel; |
| r20534 | r20535 | |
| 71 | 74 | static void skeetsht_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params) |
| 72 | 75 | { |
| 73 | 76 | 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(); |
| 75 | 78 | UINT16 *vram = &state->m_tms_vram[(params->rowaddr << 8) & 0x3ff00]; |
| 76 | 79 | UINT32 *dest = &bitmap.pix32(scanline); |
| 77 | 80 | int coladdr = params->coladdr; |
| r20534 | r20535 | |
| 92 | 95 | if (offset & 8) |
| 93 | 96 | offset = (offset & ~8) | 4; |
| 94 | 97 | |
| 95 | | return tlc34076_r(machine().device("tlc34076"), space, offset); |
| 98 | return m_tlc34076->read(space, offset); |
| 96 | 99 | } |
| 97 | 100 | |
| 98 | 101 | WRITE16_MEMBER(skeetsht_state::ramdac_w) |
| r20534 | r20535 | |
| 102 | 105 | if (offset & 8) |
| 103 | 106 | offset = (offset & ~8) | 4; |
| 104 | 107 | |
| 105 | | tlc34076_w(machine().device("tlc34076"), space, offset, data); |
| 108 | m_tlc34076->write(space, offset, data); |
| 106 | 109 | } |
| 107 | 110 | |
| 108 | 111 | |
| r20534 | r20535 | |
| 259 | 262 | MCFG_CPU_PROGRAM_MAP(tms_program_map) |
| 260 | 263 | |
| 261 | 264 | |
| 262 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 265 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 263 | 266 | |
| 264 | 267 | MCFG_SCREEN_ADD("screen", RASTER) |
| 265 | 268 | MCFG_SCREEN_RAW_PARAMS(48000000 / 8, 156*4, 0, 100*4, 328, 0, 300) // FIXME |
trunk/src/mame/drivers/xtheball.c
| r20534 | r20535 | |
| 19 | 19 | public: |
| 20 | 20 | xtheball_state(const machine_config &mconfig, device_type type, const char *tag) |
| 21 | 21 | : 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 | { } |
| 24 | 26 | |
| 27 | required_device<tlc34076_device> m_tlc34076; |
| 25 | 28 | required_shared_ptr<UINT16> m_vram_bg; |
| 26 | 29 | required_shared_ptr<UINT16> m_vram_fg; |
| 27 | 30 | UINT8 m_bitvals[32]; |
| r20534 | r20535 | |
| 44 | 47 | xtheball_state *state = screen.machine().driver_data<xtheball_state>(); |
| 45 | 48 | UINT16 *srcbg = &state->m_vram_bg[(params->rowaddr << 8) & 0xff00]; |
| 46 | 49 | 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(); |
| 48 | 51 | int coladdr = params->coladdr; |
| 49 | 52 | int x; |
| 50 | 53 | |
| r20534 | r20535 | |
| 214 | 217 | AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_SHARE("nvram") |
| 215 | 218 | AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_SHARE("vrabg") |
| 216 | 219 | 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) |
| 218 | 221 | AM_RANGE(0x03040000, 0x030401ff) AM_WRITE(bit_controls_w) |
| 219 | 222 | AM_RANGE(0x03040080, 0x0304008f) AM_READ_PORT("DSW") |
| 220 | 223 | AM_RANGE(0x03040100, 0x0304010f) AM_READ(analogx_r) |
| r20534 | r20535 | |
| 345 | 348 | MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) |
| 346 | 349 | |
| 347 | 350 | /* video hardware */ |
| 348 | | MCFG_TLC34076_ADD("tlc34076", tlc34076_6_bit_intf) |
| 351 | MCFG_TLC34076_ADD("tlc34076", TLC34076_6_BIT) |
| 349 | 352 | |
| 350 | 353 | MCFG_SCREEN_ADD("screen", RASTER) |
| 351 | 354 | MCFG_SCREEN_RAW_PARAMS(10000000, 640, 114, 626, 257, 24, 248) |