trunk/src/mame/video/k051316.c
| r30806 | r30807 | |
| 36 | 36 | |
| 37 | 37 | #include "emu.h" |
| 38 | 38 | #include "k051316.h" |
| 39 | | #include "konami_helper.h" |
| 40 | 39 | |
| 40 | |
| 41 | 41 | #define VERBOSE 0 |
| 42 | 42 | #define LOG(x) do { if (VERBOSE) logerror x; } while (0) |
| 43 | 43 | |
| 44 | | #define XOR(a) WORD_XOR_BE(a) |
| 45 | | |
| 46 | 44 | const device_type K051316 = &device_creator<k051316_device>; |
| 47 | 45 | |
| 48 | | k051316_device::k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 49 | | : device_t(mconfig, K051316, "K051316 Video Controller", tag, owner, clock, "k051316", __FILE__), |
| 50 | | m_ram(NULL), |
| 51 | | //m_tmap, |
| 52 | | //m_ctrlram[16], |
| 53 | | m_gfxdecode(*this), |
| 54 | | m_palette(*this) |
| 46 | |
| 47 | const gfx_layout k051316_device::charlayout4 = |
| 55 | 48 | { |
| 56 | | } |
| 49 | 16,16, |
| 50 | RGN_FRAC(1,1), |
| 51 | 4, |
| 52 | { 0, 1, 2, 3 }, |
| 53 | { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, |
| 54 | 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 }, |
| 55 | { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, |
| 56 | 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, |
| 57 | 128*8 |
| 58 | }; |
| 57 | 59 | |
| 58 | | //------------------------------------------------- |
| 59 | | // static_set_gfxdecode_tag: Set the tag of the |
| 60 | | // gfx decoder |
| 61 | | //------------------------------------------------- |
| 60 | const gfx_layout k051316_device::charlayout7 = |
| 61 | { |
| 62 | 16,16, |
| 63 | RGN_FRAC(1,1), |
| 64 | 7, |
| 65 | { 1,2,3,4,5,6,7 }, |
| 66 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, |
| 67 | 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 68 | { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, |
| 69 | 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 }, |
| 70 | 256*8 |
| 71 | }; |
| 62 | 72 | |
| 63 | | void k051316_device::static_set_gfxdecode_tag(device_t &device, const char *tag) |
| 73 | const gfx_layout k051316_device::charlayout8 = |
| 64 | 74 | { |
| 65 | | downcast<k051316_device &>(device).m_gfxdecode.set_tag(tag); |
| 66 | | } |
| 75 | 16,16, |
| 76 | RGN_FRAC(1,1), |
| 77 | 8, |
| 78 | { 0,1,2,3,4,5,6,7 }, |
| 79 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, |
| 80 | 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 81 | { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, |
| 82 | 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 }, |
| 83 | 256*8 |
| 84 | }; |
| 67 | 85 | |
| 86 | const gfx_layout k051316_device::charlayout_tail2nos = |
| 87 | { |
| 88 | 16,16, |
| 89 | RGN_FRAC(1,1), |
| 90 | 4, |
| 91 | { 0, 1, 2, 3 }, |
| 92 | { WORD_XOR_BE(0)*4, WORD_XOR_BE(1)*4, WORD_XOR_BE(2)*4, WORD_XOR_BE(3)*4, |
| 93 | WORD_XOR_BE(4)*4, WORD_XOR_BE(5)*4, WORD_XOR_BE(6)*4, WORD_XOR_BE(7)*4, |
| 94 | WORD_XOR_BE(8)*4, WORD_XOR_BE(9)*4, WORD_XOR_BE(10)*4, WORD_XOR_BE(11)*4, |
| 95 | WORD_XOR_BE(12)*4, WORD_XOR_BE(13)*4, WORD_XOR_BE(14)*4, WORD_XOR_BE(15)*4 }, |
| 96 | { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, |
| 97 | 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, |
| 98 | 128*8 |
| 99 | }; |
| 68 | 100 | |
| 69 | | //------------------------------------------------- |
| 70 | | // static_set_palette_tag: Set the tag of the |
| 71 | | // palette device |
| 72 | | //------------------------------------------------- |
| 73 | 101 | |
| 74 | | void k051316_device::static_set_palette_tag(device_t &device, const char *tag) |
| 102 | GFXDECODE_MEMBER( k051316_device::gfxinfo ) |
| 103 | GFXDECODE_DEVICE(DEVICE_SELF, 0, charlayout4, 0, 1) |
| 104 | GFXDECODE_END |
| 105 | |
| 106 | GFXDECODE_MEMBER( k051316_device::gfxinfo7 ) |
| 107 | GFXDECODE_DEVICE(DEVICE_SELF, 0, charlayout7, 0, 1) |
| 108 | GFXDECODE_END |
| 109 | |
| 110 | GFXDECODE_MEMBER( k051316_device::gfxinfo8 ) |
| 111 | GFXDECODE_DEVICE(DEVICE_SELF, 0, charlayout8, 0, 1) |
| 112 | GFXDECODE_END |
| 113 | |
| 114 | GFXDECODE_MEMBER( k051316_device::gfxinfo4_tail2nos ) |
| 115 | GFXDECODE_DEVICE(DEVICE_SELF, 0, charlayout_tail2nos, 0, 1) |
| 116 | GFXDECODE_END |
| 117 | |
| 118 | |
| 119 | k051316_device::k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 120 | : device_t(mconfig, K051316, "K051316 Video Controller", tag, owner, clock, "k051316", __FILE__), |
| 121 | device_gfx_interface(mconfig, *this, gfxinfo), |
| 122 | m_ram(NULL), |
| 123 | m_zoom_rom(NULL), |
| 124 | m_zoom_size(0), |
| 125 | m_dx(0), |
| 126 | m_dy(0), |
| 127 | m_wrap(0), |
| 128 | m_pen_is_mask(false), |
| 129 | m_bpp(0), |
| 130 | m_transparent_pen(0) |
| 75 | 131 | { |
| 76 | | downcast<k051316_device &>(device).m_palette.set_tag(tag); |
| 77 | 132 | } |
| 78 | 133 | |
| 79 | | //------------------------------------------------- |
| 80 | | // device_config_complete - perform any |
| 81 | | // operations now that the configuration is |
| 82 | | // complete |
| 83 | | //------------------------------------------------- |
| 84 | | |
| 85 | | void k051316_device::device_config_complete() |
| 134 | void k051316_device::set_bpp(device_t &device, int bpp) |
| 86 | 135 | { |
| 87 | | // inherit a copy of the static data |
| 88 | | const k051316_interface *intf = reinterpret_cast<const k051316_interface *>(static_config()); |
| 89 | | if (intf != NULL) |
| 90 | | *static_cast<k051316_interface *>(this) = *intf; |
| 136 | k051316_device &dev = downcast<k051316_device &>(device); |
| 137 | dev.m_bpp = bpp; |
| 91 | 138 | |
| 92 | | // or initialize to defaults if none provided |
| 93 | | else |
| 139 | switch(bpp) |
| 94 | 140 | { |
| 95 | | m_gfx_memory_region_tag = ""; |
| 96 | | m_gfx_num = 0; |
| 97 | | m_bpp = 0; |
| 98 | | m_pen_is_mask = 0; |
| 99 | | m_transparent_pen = 0; |
| 100 | | m_wrap = 0; |
| 101 | | m_xoffs = 0; |
| 102 | | m_yoffs = 0; |
| 103 | | m_callback = NULL; |
| 141 | case 4: |
| 142 | device_gfx_interface::static_set_info(dev, gfxinfo); |
| 143 | break; |
| 144 | case 7: |
| 145 | device_gfx_interface::static_set_info(dev, gfxinfo7); |
| 146 | break; |
| 147 | case 8: |
| 148 | device_gfx_interface::static_set_info(dev, gfxinfo8); |
| 149 | break; |
| 150 | case -4: |
| 151 | device_gfx_interface::static_set_info(dev, gfxinfo4_tail2nos); |
| 152 | dev.m_bpp = 4; |
| 153 | break; |
| 154 | default: |
| 155 | fatalerror("Unsupported bpp\n"); |
| 104 | 156 | } |
| 105 | 157 | } |
| 106 | 158 | |
| 159 | |
| 160 | |
| 107 | 161 | //------------------------------------------------- |
| 108 | 162 | // device_start - device-specific startup |
| 109 | 163 | //------------------------------------------------- |
| 110 | 164 | |
| 111 | 165 | void k051316_device::device_start() |
| 112 | 166 | { |
| 113 | | if(!m_gfxdecode->started()) |
| 114 | | throw device_missing_dependencies(); |
| 167 | m_zoom_rom = region()->base(); |
| 168 | m_zoom_size = region()->bytes(); |
| 115 | 169 | |
| 116 | | int is_tail2nos = 0; |
| 117 | | UINT32 total; |
| 170 | decode_gfx(); |
| 171 | gfx(0)->set_colors(palette()->entries() / gfx(0)->depth()); |
| 172 | if (m_bpp == 4) |
| 173 | gfx(0)->set_source_and_total(m_zoom_rom, m_zoom_size / 128); |
| 174 | else |
| 175 | gfx(0)->set_source_and_total(m_zoom_rom, m_zoom_size / 256); |
| 118 | 176 | |
| 119 | | static const gfx_layout charlayout4 = |
| 120 | | { |
| 121 | | 16,16, |
| 122 | | 0, |
| 123 | | 4, |
| 124 | | { 0, 1, 2, 3 }, |
| 125 | | { 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4, |
| 126 | | 8*4, 9*4, 10*4, 11*4, 12*4, 13*4, 14*4, 15*4 }, |
| 127 | | { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, |
| 128 | | 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, |
| 129 | | 128*8 |
| 130 | | }; |
| 131 | | |
| 132 | | static const gfx_layout charlayout7 = |
| 133 | | { |
| 134 | | 16,16, |
| 135 | | 0, |
| 136 | | 7, |
| 137 | | { 1,2,3,4,5,6,7 }, |
| 138 | | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, |
| 139 | | 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 140 | | { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, |
| 141 | | 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 }, |
| 142 | | 256*8 |
| 143 | | }; |
| 144 | | |
| 145 | | static const gfx_layout charlayout8 = |
| 146 | | { |
| 147 | | 16,16, |
| 148 | | 0, |
| 149 | | 8, |
| 150 | | { 0,1,2,3,4,5,6,7 }, |
| 151 | | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, |
| 152 | | 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, |
| 153 | | { 0*128, 1*128, 2*128, 3*128, 4*128, 5*128, 6*128, 7*128, |
| 154 | | 8*128, 9*128, 10*128, 11*128, 12*128, 13*128, 14*128, 15*128 }, |
| 155 | | 256*8 |
| 156 | | }; |
| 157 | | |
| 158 | | static const gfx_layout charlayout_tail2nos = |
| 159 | | { |
| 160 | | 16,16, |
| 161 | | 0, |
| 162 | | 4, |
| 163 | | { 0, 1, 2, 3 }, |
| 164 | | { XOR(0)*4, XOR(1)*4, XOR(2)*4, XOR(3)*4, XOR(4)*4, XOR(5)*4, XOR(6)*4, XOR(7)*4, |
| 165 | | XOR(8)*4, XOR(9)*4, XOR(10)*4, XOR(11)*4, XOR(12)*4, XOR(13)*4, XOR(14)*4, XOR(15)*4 }, |
| 166 | | { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, |
| 167 | | 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, |
| 168 | | 128*8 |
| 169 | | }; |
| 170 | | |
| 171 | | /* decode the graphics */ |
| 172 | | switch (m_bpp) |
| 173 | | { |
| 174 | | case -4: |
| 175 | | total = 0x400; |
| 176 | | is_tail2nos = 1; |
| 177 | | konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout_tail2nos, 4); |
| 178 | | break; |
| 179 | | |
| 180 | | case 4: |
| 181 | | total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 128; |
| 182 | | konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout4, 4); |
| 183 | | break; |
| 184 | | |
| 185 | | case 7: |
| 186 | | total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 256; |
| 187 | | konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout7, 7); |
| 188 | | break; |
| 189 | | |
| 190 | | case 8: |
| 191 | | total = machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() / 256; |
| 192 | | konami_decode_gfx(machine(), m_gfxdecode, m_palette, m_gfx_num, machine().root_device().memregion(m_gfx_memory_region_tag)->base(), total, &charlayout8, 8); |
| 193 | | break; |
| 194 | | |
| 195 | | default: |
| 196 | | fatalerror("Unsupported bpp\n"); |
| 197 | | } |
| 198 | | |
| 199 | | m_bpp = is_tail2nos ? 4 : m_bpp; // tail2nos is passed with bpp = -4 to setup the custom charlayout! |
| 200 | | |
| 201 | | m_tmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(k051316_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); |
| 202 | | |
| 177 | m_tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k051316_device::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); |
| 203 | 178 | m_ram = auto_alloc_array_clear(machine(), UINT8, 0x800); |
| 204 | 179 | |
| 205 | 180 | if (!m_pen_is_mask) |
| r30806 | r30807 | |
| 210 | 185 | m_tmap->map_pens_to_layer(0, m_transparent_pen, m_transparent_pen, TILEMAP_PIXEL_LAYER0); |
| 211 | 186 | } |
| 212 | 187 | |
| 188 | // bind callbacks |
| 189 | m_k051316_cb.bind_relative_to(*owner()); |
| 190 | |
| 213 | 191 | save_pointer(NAME(m_ram), 0x800); |
| 214 | 192 | save_item(NAME(m_ctrlram)); |
| 215 | 193 | save_item(NAME(m_wrap)); |
| r30806 | r30807 | |
| 222 | 200 | |
| 223 | 201 | void k051316_device::device_reset() |
| 224 | 202 | { |
| 225 | | memset(m_ctrlram, 0, 0x10); |
| 203 | memset(m_ctrlram, 0, 0x10); |
| 226 | 204 | } |
| 227 | 205 | |
| 228 | 206 | /***************************************************************************** |
| r30806 | r30807 | |
| 248 | 226 | int addr = offset + (m_ctrlram[0x0c] << 11) + (m_ctrlram[0x0d] << 19); |
| 249 | 227 | if (m_bpp <= 4) |
| 250 | 228 | addr /= 2; |
| 251 | | addr &= space.machine().root_device().memregion(m_gfx_memory_region_tag)->bytes() - 1; |
| 229 | addr &= m_zoom_size - 1; |
| 252 | 230 | |
| 253 | 231 | // popmessage("%s: offset %04x addr %04x", space.machine().describe_context(), offset, addr); |
| 254 | 232 | |
| 255 | | return space.machine().root_device().memregion(m_gfx_memory_region_tag)->base()[addr]; |
| 233 | return m_zoom_rom[addr]; |
| 256 | 234 | } |
| 257 | 235 | else |
| 258 | 236 | { |
| r30806 | r30807 | |
| 279 | 257 | |
| 280 | 258 | ***************************************************************************/ |
| 281 | 259 | |
| 282 | | void k051316_device::get_tile_info( tile_data &tileinfo, int tile_index ) |
| 283 | | { |
| 260 | TILE_GET_INFO_MEMBER(k051316_device::get_tile_info) |
| 261 | { |
| 284 | 262 | int code = m_ram[tile_index]; |
| 285 | 263 | int color = m_ram[tile_index + 0x400]; |
| 286 | 264 | int flags = 0; |
| 287 | | |
| 288 | | m_callback(machine(), &code, &color, &flags); |
| 289 | | |
| 290 | | SET_TILE_INFO_MEMBER(m_gfx_num, |
| 291 | | code, |
| 292 | | color, |
| 293 | | flags); |
| 265 | |
| 266 | m_k051316_cb(&code, &color, &flags); |
| 267 | |
| 268 | SET_TILE_INFO_MEMBER(0, |
| 269 | code, |
| 270 | color, |
| 271 | flags); |
| 294 | 272 | } |
| 295 | 273 | |
| 296 | 274 | |
| 297 | | TILE_GET_INFO_MEMBER(k051316_device::get_tile_info0) { get_tile_info(tileinfo, tile_index); } |
| 298 | | |
| 299 | | |
| 300 | 275 | void k051316_device::zoom_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int flags, UINT32 priority ) |
| 301 | 276 | { |
| 302 | 277 | UINT32 startx, starty; |
| r30806 | r30807 | |
| 309 | 284 | incxy = (INT16)(256 * m_ctrlram[0x08] + m_ctrlram[0x09]); |
| 310 | 285 | incyy = (INT16)(256 * m_ctrlram[0x0a] + m_ctrlram[0x0b]); |
| 311 | 286 | |
| 312 | | startx -= (16 + m_yoffs) * incyx; |
| 313 | | starty -= (16 + m_yoffs) * incyy; |
| 287 | startx -= (16 + m_dy) * incyx; |
| 288 | starty -= (16 + m_dy) * incyy; |
| 314 | 289 | |
| 315 | | startx -= (89 + m_xoffs) * incxx; |
| 316 | | starty -= (89 + m_xoffs) * incxy; |
| 290 | startx -= (89 + m_dx) * incxx; |
| 291 | starty -= (89 + m_dx) * incxy; |
| 317 | 292 | |
| 318 | | m_tmap->draw_roz(screen, bitmap, cliprect, startx << 5,starty << 5, |
| 319 | | incxx << 5,incxy << 5,incyx << 5,incyy << 5, |
| 293 | m_tmap->draw_roz(screen, bitmap, cliprect, startx << 5, starty << 5, |
| 294 | incxx << 5, incxy << 5, incyx << 5, incyy << 5, |
| 320 | 295 | m_wrap, |
| 321 | | flags,priority); |
| 296 | flags, priority); |
| 322 | 297 | |
| 323 | 298 | #if 0 |
| 324 | 299 | popmessage("%02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x %02x%02x%02x%02x", |
trunk/src/mame/video/k051316.h
| r30806 | r30807 | |
| 2 | 2 | #ifndef __K051316_H__ |
| 3 | 3 | #define __K051316_H__ |
| 4 | 4 | |
| 5 | | typedef void (*k051316_callback)(running_machine &machine, int *code, int *color, int *flags); |
| 5 | typedef device_delegate<void (int *code, int *color, int *flags)> k051316_cb_delegate; |
| 6 | #define K051316_CB_MEMBER(_name) void _name(int *code, int *color, int *flags) |
| 6 | 7 | |
| 7 | | struct k051316_interface |
| 8 | | { |
| 9 | | const char *m_gfx_memory_region_tag; |
| 10 | | int m_gfx_num; |
| 11 | | int m_bpp, m_pen_is_mask, m_transparent_pen; |
| 12 | | int m_wrap, m_xoffs, m_yoffs; |
| 13 | | k051316_callback m_callback; |
| 14 | | }; |
| 15 | 8 | |
| 9 | #define MCFG_K051316_CB(_class, _method) \ |
| 10 | k051316_device::set_k051316_callback(*device, k051316_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); |
| 11 | |
| 12 | #define MCFG_K051316_OFFSETS(_xoffs, _yoffs) \ |
| 13 | k051316_device::set_offsets(*device, _xoffs, _yoffs); |
| 14 | |
| 15 | #define MCFG_K051316_BPP(_bpp) \ |
| 16 | k051316_device::set_bpp(*device, _bpp); |
| 17 | |
| 18 | #define MCFG_K051316_SETUP_PENS(_mask, _pen) \ |
| 19 | k051316_device::set_pens(*device, _mask, _pen); |
| 20 | |
| 21 | #define MCFG_K051316_WRAP(_wrap) \ |
| 22 | k051316_device::set_wrap(*device, _wrap); |
| 23 | |
| 24 | |
| 16 | 25 | class k051316_device : public device_t, |
| 17 | | public k051316_interface |
| 26 | public device_gfx_interface |
| 18 | 27 | { |
| 19 | 28 | public: |
| 20 | 29 | k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 21 | 30 | ~k051316_device() {} |
| 22 | 31 | |
| 32 | static const gfx_layout charlayout4; |
| 33 | static const gfx_layout charlayout7; |
| 34 | static const gfx_layout charlayout8; |
| 35 | static const gfx_layout charlayout_tail2nos; |
| 36 | DECLARE_GFXDECODE_MEMBER(gfxinfo); |
| 37 | DECLARE_GFXDECODE_MEMBER(gfxinfo7); |
| 38 | DECLARE_GFXDECODE_MEMBER(gfxinfo8); |
| 39 | DECLARE_GFXDECODE_MEMBER(gfxinfo4_tail2nos); |
| 40 | |
| 23 | 41 | // static configuration |
| 24 | | static void static_set_gfxdecode_tag(device_t &device, const char *tag); |
| 25 | | static void static_set_palette_tag(device_t &device, const char *tag); |
| 42 | static void set_k051316_callback(device_t &device, k051316_cb_delegate callback) { downcast<k051316_device &>(device).m_k051316_cb = callback; } |
| 43 | static void set_wrap(device_t &device, int wrap) { downcast<k051316_device &>(device).m_wrap = wrap; } |
| 44 | static void set_bpp(device_t &device, int bpp); |
| 45 | static void set_pens(device_t &device, bool mask, int transp) |
| 46 | { |
| 47 | k051316_device &dev = downcast<k051316_device &>(device); |
| 48 | dev.m_pen_is_mask = mask; |
| 49 | dev.m_transparent_pen = transp; |
| 50 | } |
| 51 | static void set_offsets(device_t &device, int x_offset, int y_offset) |
| 52 | { |
| 53 | k051316_device &dev = downcast<k051316_device &>(device); |
| 54 | dev.m_dx = x_offset; |
| 55 | dev.m_dy = y_offset; |
| 56 | } |
| 26 | 57 | |
| 27 | 58 | /* |
| 28 | 59 | The callback is passed: |
| r30806 | r30807 | |
| 43 | 74 | void zoom_draw(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect,int flags,UINT32 priority); |
| 44 | 75 | void wraparound_enable(int status); |
| 45 | 76 | |
| 77 | void zoomram_updated(UINT32 offs) { gfx(0)->mark_dirty(offs); } |
| 78 | |
| 46 | 79 | protected: |
| 47 | 80 | // device-level overrides |
| 48 | | virtual void device_config_complete(); |
| 49 | 81 | virtual void device_start(); |
| 50 | 82 | virtual void device_reset(); |
| 83 | |
| 51 | 84 | private: |
| 52 | 85 | // internal state |
| 53 | | UINT8 *m_ram; |
| 54 | | tilemap_t *m_tmap; |
| 55 | | UINT8 m_ctrlram[16]; |
| 56 | | required_device<gfxdecode_device> m_gfxdecode; |
| 57 | | required_device<palette_device> m_palette; |
| 86 | UINT8 *m_ram; |
| 87 | UINT8 m_ctrlram[16]; |
| 88 | tilemap_t *m_tmap; |
| 58 | 89 | |
| 59 | | TILE_GET_INFO_MEMBER(get_tile_info0); |
| 60 | | void get_tile_info( tile_data &tileinfo, int tile_index ); |
| 90 | UINT8 *m_zoom_rom; |
| 91 | UINT32 m_zoom_size; |
| 92 | |
| 93 | int m_dx, m_dy; |
| 94 | int m_wrap; |
| 95 | bool m_pen_is_mask; |
| 96 | int m_bpp, m_transparent_pen; |
| 97 | k051316_cb_delegate m_k051316_cb; |
| 98 | |
| 99 | TILE_GET_INFO_MEMBER(get_tile_info); |
| 61 | 100 | }; |
| 62 | 101 | |
| 63 | 102 | extern const device_type K051316; |
| 64 | 103 | |
| 65 | | #define MCFG_K051316_ADD(_tag, _interface) \ |
| 66 | | MCFG_DEVICE_ADD(_tag, K051316, 0) \ |
| 67 | | MCFG_DEVICE_CONFIG(_interface) |
| 68 | | |
| 69 | | #define MCFG_K051316_GFXDECODE(_gfxtag) \ |
| 70 | | k051316_device::static_set_gfxdecode_tag(*device, "^" _gfxtag); |
| 71 | | |
| 72 | | #define MCFG_K051316_PALETTE(_palette_tag) \ |
| 73 | | k051316_device::static_set_palette_tag(*device, "^" _palette_tag); |
| 74 | 104 | #endif |
trunk/src/mame/drivers/rollerg.c
| r30806 | r30807 | |
| 217 | 217 | |
| 218 | 218 | ***************************************************************************/ |
| 219 | 219 | |
| 220 | | static const k051316_interface rollerg_k051316_intf = |
| 221 | | { |
| 222 | | "gfx2", 1, |
| 223 | | 4, FALSE, 0, |
| 224 | | 0, 22, 1, |
| 225 | | rollerg_zoom_callback |
| 226 | | }; |
| 227 | | |
| 228 | 220 | WRITE_LINE_MEMBER(rollerg_state::rollerg_irq_ack_w) |
| 229 | 221 | { |
| 230 | 222 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| r30806 | r30807 | |
| 272 | 264 | MCFG_PALETTE_ENABLE_SHADOWS() |
| 273 | 265 | MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR) |
| 274 | 266 | |
| 275 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty) |
| 276 | | |
| 277 | 267 | MCFG_DEVICE_ADD("k053244", K053244, 0) |
| 278 | 268 | MCFG_GFX_PALETTE("palette") |
| 279 | 269 | MCFG_K05324X_OFFSETS(-3, -1) |
| 280 | 270 | MCFG_K05324X_CB(rollerg_state, sprite_callback) |
| 281 | 271 | |
| 282 | | MCFG_K051316_ADD("k051316", rollerg_k051316_intf) |
| 283 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 284 | | MCFG_K051316_PALETTE("palette") |
| 272 | MCFG_DEVICE_ADD("k051316", K051316, 0) |
| 273 | MCFG_GFX_PALETTE("palette") |
| 274 | MCFG_K051316_BPP(4) |
| 275 | MCFG_K051316_OFFSETS(22, 1) |
| 276 | MCFG_K051316_CB(rollerg_state, zoom_callback) |
| 285 | 277 | |
| 286 | 278 | MCFG_DEVICE_ADD("k053252", K053252, 3000000*2) |
| 287 | 279 | MCFG_K053252_INT1_ACK_CB(WRITELINE(rollerg_state,rollerg_irq_ack_w)) |
| r30806 | r30807 | |
| 313 | 305 | ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */ |
| 314 | 306 | ROM_LOAD( "999m01.e11", 0x0000, 0x8000, CRC(1fcfb22f) SHA1(ef058a7de6ba7cf310b91975345113acc6078f8a) ) |
| 315 | 307 | |
| 316 | | ROM_REGION( 0x200000, "k053244", 0 ) /* graphics ( don't dispose as the program can read them, 0 ) */ |
| 308 | ROM_REGION( 0x200000, "k053244", 0 ) |
| 317 | 309 | ROM_LOAD32_WORD( "999h06.k2", 0x000000, 0x100000, CRC(eda05130) SHA1(b52073a4a4651035d5f1e112601ceb2d004b2143) ) /* sprites */ |
| 318 | 310 | ROM_LOAD32_WORD( "999h05.k8", 0x000002, 0x100000, CRC(5f321c7d) SHA1(d60a3480891b83ac109f2fecfe2b958bac310c15) ) |
| 319 | 311 | |
| 320 | | ROM_REGION( 0x080000, "gfx2", 0 ) /* graphics ( don't dispose as the program can read them, 0 ) */ |
| 312 | ROM_REGION( 0x080000, "k051316", 0 ) |
| 321 | 313 | ROM_LOAD( "999h03.d23", 0x000000, 0x040000, CRC(ea1edbd2) SHA1(a17d19f873384287e1e47222d46274e7408b40d4) ) /* zoom */ |
| 322 | 314 | ROM_LOAD( "999h04.f23", 0x040000, 0x040000, CRC(c1a35355) SHA1(615606d30500a8f2be19171893e985b085fff2fc) ) |
| 323 | 315 | |
| r30806 | r30807 | |
| 333 | 325 | ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */ |
| 334 | 326 | ROM_LOAD( "999m01.e11", 0x0000, 0x8000, CRC(1fcfb22f) SHA1(ef058a7de6ba7cf310b91975345113acc6078f8a) ) |
| 335 | 327 | |
| 336 | | ROM_REGION( 0x200000, "k053244", 0 ) /* graphics ( don't dispose as the program can read them, 0 ) */ |
| 328 | ROM_REGION( 0x200000, "k053244", 0 ) |
| 337 | 329 | ROM_LOAD32_WORD( "999h06.k2", 0x000000, 0x100000, CRC(eda05130) SHA1(b52073a4a4651035d5f1e112601ceb2d004b2143) ) /* sprites */ |
| 338 | 330 | ROM_LOAD32_WORD( "999h05.k8", 0x000002, 0x100000, CRC(5f321c7d) SHA1(d60a3480891b83ac109f2fecfe2b958bac310c15) ) |
| 339 | 331 | |
| 340 | | ROM_REGION( 0x080000, "gfx2", 0 ) /* graphics ( don't dispose as the program can read them, 0 ) */ |
| 332 | ROM_REGION( 0x080000, "k051316", 0 ) |
| 341 | 333 | ROM_LOAD( "999h03.d23", 0x000000, 0x040000, CRC(ea1edbd2) SHA1(a17d19f873384287e1e47222d46274e7408b40d4) ) /* zoom */ |
| 342 | 334 | ROM_LOAD( "999h04.f23", 0x040000, 0x040000, CRC(c1a35355) SHA1(615606d30500a8f2be19171893e985b085fff2fc) ) |
| 343 | 335 | |
trunk/src/mame/drivers/88games.c
| r30806 | r30807 | |
| 324 | 324 | _88games_sprite_callback |
| 325 | 325 | }; |
| 326 | 326 | |
| 327 | | static const k051316_interface _88games_k051316_intf = |
| 328 | | { |
| 329 | | "gfx3", 2, |
| 330 | | 4, FALSE, 0, |
| 331 | | 0, 0, 0, |
| 332 | | _88games_zoom_callback |
| 333 | | }; |
| 334 | | |
| 335 | 327 | static MACHINE_CONFIG_START( 88games, _88games_state ) |
| 336 | 328 | |
| 337 | 329 | /* basic machine hardware */ |
| r30806 | r30807 | |
| 366 | 358 | MCFG_K051960_ADD("k051960", _88games_k051960_intf) |
| 367 | 359 | MCFG_K051960_GFXDECODE("gfxdecode") |
| 368 | 360 | MCFG_K051960_PALETTE("palette") |
| 369 | | MCFG_K051316_ADD("k051316", _88games_k051316_intf) |
| 370 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 371 | | MCFG_K051316_PALETTE("palette") |
| 372 | 361 | |
| 362 | MCFG_DEVICE_ADD("k051316", K051316, 0) |
| 363 | MCFG_GFX_PALETTE("palette") |
| 364 | MCFG_K051316_BPP(4) |
| 365 | MCFG_K051316_CB(_88games_state, zoom_callback) |
| 366 | |
| 373 | 367 | /* sound hardware */ |
| 374 | 368 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 375 | 369 | |
| r30806 | r30807 | |
| 428 | 422 | ROM_LOAD16_BYTE( "861a06.d", 0x0e0000, 0x10000, CRC(bc70ab39) SHA1(a6fa0502ceb6862e7b1e4815326e268fd6511881) ) |
| 429 | 423 | ROM_LOAD16_BYTE( "861a06.h", 0x0e0001, 0x10000, CRC(d906b79b) SHA1(905814ce708d80fd4d1a398f60faa0bc680fccaf) ) |
| 430 | 424 | |
| 431 | | ROM_REGION( 0x040000, "gfx3", 0 ) /* graphics */ |
| 425 | ROM_REGION( 0x040000, "k051316", 0 ) |
| 432 | 426 | ROM_LOAD( "861a04.a", 0x000000, 0x10000, CRC(092a8b15) SHA1(d98a81bfa4bba73805f0236f8a80da130fcb378d) ) /* zoom/rotate */ |
| 433 | 427 | ROM_LOAD( "861a04.b", 0x010000, 0x10000, CRC(75744b56) SHA1(5133d8f6622796ed6b9e6a0d0f1df28f00331fc7) ) |
| 434 | 428 | ROM_LOAD( "861a04.c", 0x020000, 0x10000, CRC(a00021c5) SHA1(f73f88af33387d73b4262e8652507e699926fabe) ) |
| r30806 | r30807 | |
| 482 | 476 | ROM_LOAD16_BYTE( "861a06.d", 0x0e0000, 0x10000, CRC(bc70ab39) SHA1(a6fa0502ceb6862e7b1e4815326e268fd6511881) ) |
| 483 | 477 | ROM_LOAD16_BYTE( "861a06.h", 0x0e0001, 0x10000, CRC(d906b79b) SHA1(905814ce708d80fd4d1a398f60faa0bc680fccaf) ) |
| 484 | 478 | |
| 485 | | ROM_REGION( 0x040000, "gfx3", 0 ) /* graphics */ |
| 479 | ROM_REGION( 0x040000, "k051316", 0 ) |
| 486 | 480 | ROM_LOAD( "861a04.a", 0x000000, 0x10000, CRC(092a8b15) SHA1(d98a81bfa4bba73805f0236f8a80da130fcb378d) ) /* zoom/rotate */ |
| 487 | 481 | ROM_LOAD( "861a04.b", 0x010000, 0x10000, CRC(75744b56) SHA1(5133d8f6622796ed6b9e6a0d0f1df28f00331fc7) ) |
| 488 | 482 | ROM_LOAD( "861a04.c", 0x020000, 0x10000, CRC(a00021c5) SHA1(f73f88af33387d73b4262e8652507e699926fabe) ) |
| r30806 | r30807 | |
| 536 | 530 | ROM_LOAD16_BYTE( "861a06.d", 0x0e0000, 0x10000, CRC(bc70ab39) SHA1(a6fa0502ceb6862e7b1e4815326e268fd6511881) ) |
| 537 | 531 | ROM_LOAD16_BYTE( "861a06.h", 0x0e0001, 0x10000, CRC(d906b79b) SHA1(905814ce708d80fd4d1a398f60faa0bc680fccaf) ) |
| 538 | 532 | |
| 539 | | ROM_REGION( 0x040000, "gfx3", 0 ) /* graphics */ |
| 533 | ROM_REGION( 0x040000, "k051316", 0 ) |
| 540 | 534 | ROM_LOAD( "861a04.a", 0x000000, 0x10000, CRC(092a8b15) SHA1(d98a81bfa4bba73805f0236f8a80da130fcb378d) ) /* zoom/rotate */ |
| 541 | 535 | ROM_LOAD( "861a04.b", 0x010000, 0x10000, CRC(75744b56) SHA1(5133d8f6622796ed6b9e6a0d0f1df28f00331fc7) ) |
| 542 | 536 | ROM_LOAD( "861a04.c", 0x020000, 0x10000, CRC(a00021c5) SHA1(f73f88af33387d73b4262e8652507e699926fabe) ) |
trunk/src/mame/drivers/overdriv.c
| r30806 | r30807 | |
| 269 | 269 | overdriv_sprite_callback |
| 270 | 270 | }; |
| 271 | 271 | |
| 272 | | static const k051316_interface overdriv_k051316_intf_1 = |
| 273 | | { |
| 274 | | "gfx2", 1, |
| 275 | | 4, TRUE, 0, |
| 276 | | 1, 14, -1, |
| 277 | | overdriv_zoom_callback_0 |
| 278 | | }; |
| 279 | | |
| 280 | | static const k051316_interface overdriv_k051316_intf_2 = |
| 281 | | { |
| 282 | | "gfx3", 2, |
| 283 | | 4, FALSE, 0, |
| 284 | | 0, 15, 1, |
| 285 | | overdriv_zoom_callback_1 |
| 286 | | }; |
| 287 | | |
| 288 | | |
| 289 | 272 | void overdriv_state::machine_start() |
| 290 | 273 | { |
| 291 | 274 | save_item(NAME(m_cpuB_ctrl)); |
| r30806 | r30807 | |
| 349 | 332 | MCFG_K053246_ADD("k053246", overdriv_k053246_intf) |
| 350 | 333 | MCFG_K053246_GFXDECODE("gfxdecode") |
| 351 | 334 | MCFG_K053246_PALETTE("palette") |
| 352 | | MCFG_K051316_ADD("k051316_1", overdriv_k051316_intf_1) |
| 353 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 354 | | MCFG_K051316_PALETTE("palette") |
| 355 | | MCFG_K051316_ADD("k051316_2", overdriv_k051316_intf_2) |
| 356 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 357 | | MCFG_K051316_PALETTE("palette") |
| 335 | |
| 336 | MCFG_DEVICE_ADD("k051316_1", K051316, 0) |
| 337 | MCFG_GFX_PALETTE("palette") |
| 338 | MCFG_K051316_BPP(4) |
| 339 | MCFG_K051316_OFFSETS(14, -1) |
| 340 | MCFG_K051316_WRAP(1) |
| 341 | MCFG_K051316_SETUP_PENS(true, 0) |
| 342 | MCFG_K051316_CB(overdriv_state, zoom_callback_1) |
| 343 | |
| 344 | MCFG_DEVICE_ADD("k051316_2", K051316, 0) |
| 345 | MCFG_GFX_PALETTE("palette") |
| 346 | MCFG_K051316_BPP(4) |
| 347 | MCFG_K051316_OFFSETS(15, 1) |
| 348 | MCFG_K051316_CB(overdriv_state, zoom_callback_2) |
| 349 | |
| 358 | 350 | MCFG_K053251_ADD("k053251") |
| 359 | 351 | MCFG_K053250_ADD("k053250_1", "palette", "screen", 0, 0) |
| 360 | 352 | MCFG_K053250_ADD("k053250_2", "palette", "screen", 0, 0) |
| r30806 | r30807 | |
| 406 | 398 | ROM_LOAD64_WORD( "e14.r10", 0x000004, 0x100000, CRC(b5eca14b) SHA1(a1c5f5e9cd8bbcfc875e2acb33be024724da63aa) ) |
| 407 | 399 | ROM_LOAD64_WORD( "e15.r15", 0x000006, 0x100000, CRC(5d93e0c3) SHA1(d5cb7666c0c28fd465c860c7f9dbb18a7f739a93) ) |
| 408 | 400 | |
| 409 | | ROM_REGION( 0x020000, "gfx2", 0 ) /* graphics (addressable by the CPU) */ |
| 401 | ROM_REGION( 0x020000, "k051316_1", 0 ) |
| 410 | 402 | ROM_LOAD( "e06.a21", 0x000000, 0x020000, CRC(14a085e6) SHA1(86dad6f223e13ff8af7075c3d99bb0a83784c384) ) /* zoom/rotate */ |
| 411 | 403 | |
| 412 | | ROM_REGION( 0x020000, "gfx3", 0 ) /* graphics (addressable by the CPU) */ |
| 404 | ROM_REGION( 0x020000, "k051316_2", 0 ) |
| 413 | 405 | ROM_LOAD( "e07.c23", 0x000000, 0x020000, CRC(8a6ceab9) SHA1(1a52b7361f71a6126cd648a76af00223d5b25c7a) ) /* zoom/rotate */ |
| 414 | 406 | |
| 415 | | ROM_REGION( 0x0c0000, "k053250_1", 0 ) /* graphics (addressable by the CPU) */ |
| 407 | ROM_REGION( 0x0c0000, "k053250_1", 0 ) |
| 416 | 408 | ROM_LOAD( "e18.p22", 0x000000, 0x040000, CRC(985a4a75) SHA1(b726166c295be6fbec38a9d11098cc4a4a5de456) ) |
| 417 | 409 | ROM_LOAD( "e19.r22", 0x040000, 0x040000, CRC(15c54ea2) SHA1(5b10bd28e48e51613359820ba8c75d4a91c2d322) ) |
| 418 | 410 | ROM_LOAD( "e20.s22", 0x080000, 0x040000, CRC(ea204acd) SHA1(52b8c30234eaefcba1074496028a4ac2bca48e95) ) |
| 419 | 411 | |
| 420 | | ROM_REGION( 0x080000, "k053250_2", 0 ) /* graphics (addressable by the CPU) */ |
| 412 | ROM_REGION( 0x080000, "k053250_2", 0 ) |
| 421 | 413 | ROM_LOAD( "e17.p17", 0x000000, 0x040000, CRC(04c07248) SHA1(873445002cbf90c9fc5a35bf4a8f6c43193ee342) ) |
| 422 | 414 | ROM_LOAD( "e16.p12", 0x040000, 0x040000, CRC(9348dee1) SHA1(367193373e28962b5b0e54cc15d68ed88ab83f12) ) |
| 423 | 415 | |
trunk/src/mame/drivers/chqflag.c
| r30806 | r30807 | |
| 276 | 276 | chqflag_sprite_callback |
| 277 | 277 | }; |
| 278 | 278 | |
| 279 | | static const k051316_interface chqflag_k051316_intf_1 = |
| 280 | | { |
| 281 | | "gfx2", 1, |
| 282 | | 4, FALSE, 0, |
| 283 | | 0, 7, 0, |
| 284 | | chqflag_zoom_callback_0 |
| 285 | | }; |
| 286 | | |
| 287 | | static const k051316_interface chqflag_k051316_intf_2 = |
| 288 | | { |
| 289 | | "gfx3", 2, |
| 290 | | 8, TRUE, 0xc0, |
| 291 | | 1, 0, 0, |
| 292 | | chqflag_zoom_callback_1 |
| 293 | | }; |
| 294 | | |
| 295 | 279 | void chqflag_state::machine_start() |
| 296 | 280 | { |
| 297 | 281 | UINT8 *ROM = memregion("maincpu")->base(); |
| r30806 | r30807 | |
| 349 | 333 | MCFG_K051960_ADD("k051960", chqflag_k051960_intf) |
| 350 | 334 | MCFG_K051960_GFXDECODE("gfxdecode") |
| 351 | 335 | MCFG_K051960_PALETTE("palette") |
| 352 | | MCFG_K051316_ADD("k051316_1", chqflag_k051316_intf_1) |
| 353 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 354 | | MCFG_K051316_PALETTE("palette") |
| 355 | | MCFG_K051316_ADD("k051316_2", chqflag_k051316_intf_2) |
| 356 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 357 | | MCFG_K051316_PALETTE("palette") |
| 336 | |
| 337 | MCFG_DEVICE_ADD("k051316_1", K051316, 0) |
| 338 | MCFG_GFX_PALETTE("palette") |
| 339 | MCFG_K051316_BPP(4) |
| 340 | MCFG_K051316_OFFSETS(7, 0) |
| 341 | MCFG_K051316_CB(chqflag_state, zoom_callback_1) |
| 342 | |
| 343 | MCFG_DEVICE_ADD("k051316_2", K051316, 0) |
| 344 | MCFG_GFX_PALETTE("palette") |
| 345 | MCFG_K051316_BPP(8) |
| 346 | MCFG_K051316_SETUP_PENS(true, 0xc0) |
| 347 | MCFG_K051316_WRAP(1) |
| 348 | MCFG_K051316_CB(chqflag_state, zoom_callback_2) |
| 349 | |
| 358 | 350 | MCFG_K051733_ADD("k051733") |
| 359 | 351 | |
| 360 | 352 | /* sound hardware */ |
| r30806 | r30807 | |
| 392 | 384 | ROM_LOAD( "717e04", 0x000000, 0x080000, CRC(1a50a1cc) SHA1(bc16fab84c637ed124e37b115ddc0149560b727d) ) /* sprites */ |
| 393 | 385 | ROM_LOAD( "717e05", 0x080000, 0x080000, CRC(46ccb506) SHA1(3ed1f54744fc5cdc0f48e42f250c366267a8199a) ) /* sprites */ |
| 394 | 386 | |
| 395 | | ROM_REGION( 0x020000, "gfx2", 0 ) /* graphics (addressable by the main CPU) */ |
| 387 | ROM_REGION( 0x020000, "k051316_1", 0 ) |
| 396 | 388 | ROM_LOAD( "717e06", 0x000000, 0x020000, CRC(1ec26c7a) SHA1(05b5b522c5ebf5d0a71a7fc39ec9382008ef33c8) ) /* zoom/rotate (N16) */ |
| 397 | 389 | |
| 398 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* graphics (addressable by the main CPU) */ |
| 390 | ROM_REGION( 0x100000, "k051316_2", 0 ) |
| 399 | 391 | ROM_LOAD( "717e07", 0x000000, 0x040000, CRC(b9a565a8) SHA1(a11782f7336e5ad58a4c6ea81f2eeac35d5e7d0a) ) /* zoom/rotate (L20) */ |
| 400 | 392 | ROM_LOAD( "717e08", 0x040000, 0x040000, CRC(b68a212e) SHA1(b2bd121a43552c3ade528ac763a0df40c3e648e0) ) /* zoom/rotate (L22) */ |
| 401 | 393 | ROM_LOAD( "717e11", 0x080000, 0x040000, CRC(ebb171ec) SHA1(d65d4a6b169ce03e4427b2a397484634f938236b) ) /* zoom/rotate (N20) */ |
| r30806 | r30807 | |
| 422 | 414 | ROM_LOAD( "717e04", 0x000000, 0x080000, CRC(1a50a1cc) SHA1(bc16fab84c637ed124e37b115ddc0149560b727d) ) /* sprites */ |
| 423 | 415 | ROM_LOAD( "717e05", 0x080000, 0x080000, CRC(46ccb506) SHA1(3ed1f54744fc5cdc0f48e42f250c366267a8199a) ) /* sprites */ |
| 424 | 416 | |
| 425 | | ROM_REGION( 0x020000, "gfx2", 0 ) /* graphics (addressable by the main CPU) */ |
| 417 | ROM_REGION( 0x020000, "k051316_1", 0 ) |
| 426 | 418 | ROM_LOAD( "717e06", 0x000000, 0x020000, CRC(1ec26c7a) SHA1(05b5b522c5ebf5d0a71a7fc39ec9382008ef33c8) ) /* zoom/rotate (N16) */ |
| 427 | 419 | |
| 428 | | ROM_REGION( 0x100000, "gfx3", 0 ) /* graphics (addressable by the main CPU) */ |
| 420 | ROM_REGION( 0x100000, "k051316_2", 0 ) |
| 429 | 421 | ROM_LOAD( "717e07", 0x000000, 0x040000, CRC(b9a565a8) SHA1(a11782f7336e5ad58a4c6ea81f2eeac35d5e7d0a) ) /* zoom/rotate (L20) */ |
| 430 | 422 | ROM_LOAD( "717e08", 0x040000, 0x040000, CRC(b68a212e) SHA1(b2bd121a43552c3ade528ac763a0df40c3e648e0) ) /* zoom/rotate (L22) */ |
| 431 | 423 | ROM_LOAD( "717e11", 0x080000, 0x040000, CRC(ebb171ec) SHA1(d65d4a6b169ce03e4427b2a397484634f938236b) ) /* zoom/rotate (N20) */ |
trunk/src/mame/drivers/ultraman.c
| r30806 | r30807 | |
| 164 | 164 | ultraman_sprite_callback |
| 165 | 165 | }; |
| 166 | 166 | |
| 167 | | static const k051316_interface ultraman_k051316_intf_0 = |
| 168 | | { |
| 169 | | "gfx2", 1, |
| 170 | | 4, FALSE, 0, |
| 171 | | 0, 8, 0, |
| 172 | | ultraman_zoom_callback_0 |
| 173 | | }; |
| 174 | | |
| 175 | | static const k051316_interface ultraman_k051316_intf_1 = |
| 176 | | { |
| 177 | | "gfx3", 2, |
| 178 | | 4, FALSE, 0, |
| 179 | | 0, 8, 0, |
| 180 | | ultraman_zoom_callback_1 |
| 181 | | }; |
| 182 | | |
| 183 | | static const k051316_interface ultraman_k051316_intf_2 = |
| 184 | | { |
| 185 | | "gfx4", 3, |
| 186 | | 4, TRUE, 0, |
| 187 | | 0, 8, 0, |
| 188 | | ultraman_zoom_callback_2 |
| 189 | | }; |
| 190 | | |
| 191 | 167 | void ultraman_state::machine_start() |
| 192 | 168 | { |
| 193 | 169 | save_item(NAME(m_bank0)); |
| r30806 | r30807 | |
| 235 | 211 | MCFG_K051960_GFXDECODE("gfxdecode") |
| 236 | 212 | MCFG_K051960_PALETTE("palette") |
| 237 | 213 | |
| 238 | | MCFG_K051316_ADD("k051316_1", ultraman_k051316_intf_0) |
| 239 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 240 | | MCFG_K051316_PALETTE("palette") |
| 214 | MCFG_DEVICE_ADD("k051316_1", K051316, 0) |
| 215 | MCFG_GFX_PALETTE("palette") |
| 216 | MCFG_K051316_BPP(4) |
| 217 | MCFG_K051316_OFFSETS(8, 0) |
| 218 | MCFG_K051316_CB(ultraman_state, zoom_callback_1) |
| 241 | 219 | |
| 242 | | MCFG_K051316_ADD("k051316_2", ultraman_k051316_intf_1) |
| 243 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 244 | | MCFG_K051316_PALETTE("palette") |
| 220 | MCFG_DEVICE_ADD("k051316_2", K051316, 0) |
| 221 | MCFG_GFX_PALETTE("palette") |
| 222 | MCFG_K051316_BPP(4) |
| 223 | MCFG_K051316_OFFSETS(8, 0) |
| 224 | MCFG_K051316_CB(ultraman_state, zoom_callback_2) |
| 245 | 225 | |
| 246 | | MCFG_K051316_ADD("k051316_3", ultraman_k051316_intf_2) |
| 247 | | MCFG_K051316_GFXDECODE("gfxdecode") |
| 248 | | MCFG_K051316_PALETTE("palette") |
| 226 | MCFG_DEVICE_ADD("k051316_3", K051316, 0) |
| 227 | MCFG_GFX_PALETTE("palette") |
| 228 | MCFG_K051316_BPP(4) |
| 229 | MCFG_K051316_SETUP_PENS(true, 0) |
| 230 | MCFG_K051316_OFFSETS(8, 0) |
| 231 | MCFG_K051316_CB(ultraman_state, zoom_callback_3) |
| 249 | 232 | |
| 250 | 233 | /* sound hardware */ |
| 251 | 234 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| r30806 | r30807 | |
| 273 | 256 | ROM_LOAD( "910-a19.l04", 0x000000, 0x080000, CRC(2dc9ffdc) SHA1(aa34247c82d48c8d13f5209be292127938a4a682) ) |
| 274 | 257 | ROM_LOAD( "910-a20.l01", 0x080000, 0x080000, CRC(a4298dce) SHA1(62faf8f0c0490a9562b75ce27909fbee6e84b22a) ) |
| 275 | 258 | |
| 276 | | ROM_REGION( 0x080000, "gfx2", 0 ) /* BG 1 */ |
| 259 | ROM_REGION( 0x080000, "k051316_1", 0 ) |
| 277 | 260 | ROM_LOAD( "910-a07.j15", 0x000000, 0x020000, CRC(8b43a64e) SHA1(e373d0fd88b59fb01782dfaeccb1e13673a35766) ) |
| 278 | 261 | ROM_LOAD( "910-a08.j16", 0x020000, 0x020000, CRC(c3829826) SHA1(0d383a7afac2a3b5da692375a2b2cd675848861a) ) |
| 279 | 262 | ROM_LOAD( "910-a09.j18", 0x040000, 0x020000, CRC(ee10b519) SHA1(a34bd7d89bb8a19af7252ed96ffce212788c586b) ) |
| 280 | 263 | ROM_LOAD( "910-a10.j19", 0x060000, 0x020000, CRC(cffbb0c3) SHA1(e9ebe350289f0436de10a6289b04eed3b6a9f98e) ) |
| 281 | 264 | |
| 282 | | ROM_REGION( 0x080000, "gfx3", 0 ) /* BG 2 */ |
| 265 | ROM_REGION( 0x080000, "k051316_2", 0 ) |
| 283 | 266 | ROM_LOAD( "910-a11.l15", 0x000000, 0x020000, CRC(17a5581d) SHA1(aca5d465a0e181a266a165aeb0112a4696b0cd18) ) |
| 284 | 267 | ROM_LOAD( "910-a12.l16", 0x020000, 0x020000, CRC(39763fb5) SHA1(0e1795af4bae545a0a2be265398837fb2d623232) ) |
| 285 | 268 | ROM_LOAD( "910-a13.l18", 0x040000, 0x020000, CRC(66b25a4f) SHA1(954552b005582c90d570ae32c715108ec4b088f1) ) |
| 286 | 269 | ROM_LOAD( "910-a14.l19", 0x060000, 0x020000, CRC(09fbd412) SHA1(d11587db7b03f3a75ad8964523bb34f4453bbaca) ) |
| 287 | 270 | |
| 288 | | ROM_REGION( 0x080000, "gfx4", 0 ) /* BG 3 */ |
| 271 | ROM_REGION( 0x080000, "k051316_3", 0 ) |
| 289 | 272 | ROM_LOAD( "910-a15.m15", 0x000000, 0x020000, CRC(6d5bfbb7) SHA1(e98c594446b506cb32cc5cc958d2f0de22ebed5e) ) |
| 290 | 273 | ROM_LOAD( "910-a16.m16", 0x020000, 0x020000, CRC(5f6f8c3d) SHA1(e365836d2263f36aa4602f0618bf7ce693d2e106) ) |
| 291 | 274 | ROM_LOAD( "910-a17.m18", 0x040000, 0x020000, CRC(1f3ec4ff) SHA1(875f53516f47decc4ce31154cf4694c8429ee4ea) ) |