trunk/src/emu/cpu/m6809/konami.c
| r31115 | r31116 | |
| 85 | 85 | //------------------------------------------------- |
| 86 | 86 | |
| 87 | 87 | konami_cpu_device::konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 88 | | : m6809_base_device(mconfig, "KONAMI CPU", tag, owner, clock, KONAMI, 1, "konami_cpu", __FILE__) |
| 88 | : m6809_base_device(mconfig, "KONAMI CPU", tag, owner, clock, KONAMI, 1, "konami_cpu", __FILE__), |
| 89 | m_set_lines(*this) |
| 89 | 90 | { |
| 90 | 91 | } |
| 91 | 92 | |
| r31115 | r31116 | |
| 98 | 99 | { |
| 99 | 100 | super::device_start(); |
| 100 | 101 | |
| 101 | | // bind callbacks |
| 102 | | m_set_lines.bind_relative_to(*owner()); |
| 102 | // resolve callbacks |
| 103 | m_set_lines.resolve(); |
| 103 | 104 | } |
| 104 | 105 | |
| 105 | 106 | |
| r31115 | r31116 | |
| 347 | 348 | void konami_cpu_device::set_lines(UINT8 data) |
| 348 | 349 | { |
| 349 | 350 | if (!m_set_lines.isnull()) |
| 350 | | m_set_lines(data); |
| 351 | m_set_lines((offs_t)0, data); |
| 351 | 352 | } |
| 352 | 353 | |
| 353 | 354 | |
trunk/src/emu/cpu/m6809/konami.h
| r31115 | r31116 | |
| 18 | 18 | // TYPE DEFINITIONS |
| 19 | 19 | //************************************************************************** |
| 20 | 20 | |
| 21 | | typedef device_delegate<void (int lines)> konami_line_cb_delegate; |
| 22 | | #define KONAMICPU_LINE_CB_MEMBER(_name) void _name(int lines) |
| 21 | #define MCFG_KONAMICPU_LINE_CB(_devcb) \ |
| 22 | devcb = &konami_cpu_device::set_line_callback(*device, DEVCB_##_devcb); |
| 23 | 23 | |
| 24 | | #define MCFG_KONAMICPU_LINE_CB(_class, _method) \ |
| 25 | | konami_cpu_device::set_line_callback(*device, konami_line_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner))); |
| 26 | 24 | |
| 27 | | |
| 28 | 25 | // device type definition |
| 29 | 26 | extern const device_type KONAMI; |
| 30 | 27 | |
| r31115 | r31116 | |
| 37 | 34 | konami_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 38 | 35 | |
| 39 | 36 | // configuration |
| 40 | | static void set_line_callback(device_t &device, konami_line_cb_delegate callback) { downcast<konami_cpu_device &>(device).m_set_lines = callback; } |
| 37 | template<class _Object> static devcb_base &set_line_callback(device_t &device, _Object object) { return downcast<konami_cpu_device &>(device).m_set_lines.set_callback(object); } |
| 41 | 38 | |
| 42 | 39 | protected: |
| 43 | 40 | // device-level overrides |
| r31115 | r31116 | |
| 53 | 50 | typedef m6809_base_device super; |
| 54 | 51 | |
| 55 | 52 | // incidentals |
| 56 | | konami_line_cb_delegate m_set_lines; |
| 53 | devcb_write8 m_set_lines; |
| 57 | 54 | |
| 58 | 55 | // konami-specific addressing modes |
| 59 | 56 | UINT16 &ireg(); |
trunk/src/mame/includes/rollerg.h
| r31115 | r31116 | |
| 57 | 57 | UINT32 screen_update_rollerg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 58 | 58 | K05324X_CB_MEMBER(sprite_callback); |
| 59 | 59 | K051316_CB_MEMBER(zoom_callback); |
| 60 | | KONAMICPU_LINE_CB_MEMBER(banking_callback); |
| 60 | DECLARE_WRITE8_MEMBER(banking_callback); |
| 61 | 61 | |
| 62 | 62 | protected: |
| 63 | 63 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
trunk/src/mame/drivers/simpsons.c
| r31115 | r31116 | |
| 327 | 327 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 053248, the clock input is 12MHz, and internal CPU divider of 4 */ |
| 328 | 328 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 329 | 329 | MCFG_CPU_VBLANK_INT_DRIVER("screen", simpsons_state, simpsons_irq) /* IRQ triggered by the 052109, FIRQ by the sprite hardware */ |
| 330 | | MCFG_KONAMICPU_LINE_CB(simpsons_state, banking_callback) |
| 330 | MCFG_KONAMICPU_LINE_CB(WRITE8(simpsons_state, banking_callback)) |
| 331 | 331 | |
| 332 | 332 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ |
| 333 | 333 | MCFG_CPU_PROGRAM_MAP(z80_map) |
trunk/src/mame/drivers/aliens.c
| r31115 | r31116 | |
| 186 | 186 | m_bank0000->set_bank(0); |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | | KONAMICPU_LINE_CB_MEMBER( aliens_state::banking_callback ) |
| 189 | WRITE8_MEMBER( aliens_state::banking_callback ) |
| 190 | 190 | { |
| 191 | | membank("bank1")->set_entry(lines & 0x1f); |
| 191 | membank("bank1")->set_entry(data & 0x1f); |
| 192 | 192 | } |
| 193 | 193 | |
| 194 | 194 | static MACHINE_CONFIG_START( aliens, aliens_state ) |
| r31115 | r31116 | |
| 197 | 197 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */ |
| 198 | 198 | MCFG_CPU_PROGRAM_MAP(aliens_map) |
| 199 | 199 | MCFG_CPU_VBLANK_INT_DRIVER("screen", aliens_state, aliens_interrupt) |
| 200 | | MCFG_KONAMICPU_LINE_CB(aliens_state, banking_callback) |
| 200 | MCFG_KONAMICPU_LINE_CB(WRITE8(aliens_state, banking_callback)) |
| 201 | 201 | |
| 202 | 202 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ |
| 203 | 203 | MCFG_CPU_PROGRAM_MAP(aliens_sound_map) |
trunk/src/mame/drivers/parodius.c
| r31115 | r31116 | |
| 217 | 217 | m_bank2000->set_bank(0); |
| 218 | 218 | } |
| 219 | 219 | |
| 220 | | KONAMICPU_LINE_CB_MEMBER( parodius_state::banking_callback ) |
| 220 | WRITE8_MEMBER( parodius_state::banking_callback ) |
| 221 | 221 | { |
| 222 | | if (lines & 0xf0) |
| 223 | | logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 222 | if (data & 0xf0) |
| 223 | logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 224 | 224 | |
| 225 | | membank("bank1")->set_entry((lines & 0x0f) ^ 0x0f); |
| 225 | membank("bank1")->set_entry((data & 0x0f) ^ 0x0f); |
| 226 | 226 | } |
| 227 | 227 | |
| 228 | 228 | static MACHINE_CONFIG_START( parodius, parodius_state ) |
| r31115 | r31116 | |
| 231 | 231 | MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* 053248 */ |
| 232 | 232 | MCFG_CPU_PROGRAM_MAP(parodius_map) |
| 233 | 233 | MCFG_CPU_VBLANK_INT_DRIVER("screen", parodius_state, parodius_interrupt) |
| 234 | | MCFG_KONAMICPU_LINE_CB(parodius_state, banking_callback) |
| 234 | MCFG_KONAMICPU_LINE_CB(WRITE8(parodius_state, banking_callback)) |
| 235 | 235 | |
| 236 | 236 | MCFG_CPU_ADD("audiocpu", Z80, 3579545) |
| 237 | | MCFG_CPU_PROGRAM_MAP(parodius_sound_map) |
| 238 | | /* NMIs are triggered by the 053260 */ |
| 237 | MCFG_CPU_PROGRAM_MAP(parodius_sound_map) /* NMIs are triggered by the 053260 */ |
| 239 | 238 | |
| 240 | 239 | MCFG_DEVICE_ADD("bank0000", ADDRESS_MAP_BANK, 0) |
| 241 | 240 | MCFG_DEVICE_PROGRAM_MAP(bank0000_map) |
trunk/src/mame/drivers/vendetta.c
| r31115 | r31116 | |
| 445 | 445 | vendetta_video_banking(0); |
| 446 | 446 | } |
| 447 | 447 | |
| 448 | | KONAMICPU_LINE_CB_MEMBER( vendetta_state::banking_callback ) |
| 448 | WRITE8_MEMBER( vendetta_state::banking_callback ) |
| 449 | 449 | { |
| 450 | | if (lines >= 0x1c) |
| 451 | | logerror("PC = %04x : Unknown bank selected %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 450 | if (data >= 0x1c) |
| 451 | logerror("PC = %04x : Unknown bank selected %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 452 | 452 | else |
| 453 | | membank("bank1")->set_entry(lines); |
| 453 | membank("bank1")->set_entry(data); |
| 454 | 454 | } |
| 455 | 455 | |
| 456 | 456 | static MACHINE_CONFIG_START( vendetta, vendetta_state ) |
| r31115 | r31116 | |
| 459 | 459 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */ |
| 460 | 460 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 461 | 461 | MCFG_CPU_VBLANK_INT_DRIVER("screen", vendetta_state, vendetta_irq) |
| 462 | | MCFG_KONAMICPU_LINE_CB(vendetta_state, banking_callback) |
| 462 | MCFG_KONAMICPU_LINE_CB(WRITE8(vendetta_state, banking_callback)) |
| 463 | 463 | |
| 464 | 464 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified with PCB */ |
| 465 | 465 | MCFG_CPU_PROGRAM_MAP(sound_map) |
trunk/src/mame/drivers/crimfght.c
| r31115 | r31116 | |
| 230 | 230 | membank("bank2")->set_entry(0); |
| 231 | 231 | } |
| 232 | 232 | |
| 233 | | KONAMICPU_LINE_CB_MEMBER( crimfght_state::banking_callback ) |
| 233 | WRITE8_MEMBER( crimfght_state::banking_callback ) |
| 234 | 234 | { |
| 235 | 235 | /* bit 5 = select work RAM or palette */ |
| 236 | | if (lines & 0x20) |
| 236 | if (data & 0x20) |
| 237 | 237 | { |
| 238 | 238 | m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank3"); |
| 239 | 239 | m_maincpu->space(AS_PROGRAM).install_write_handler(0x0000, 0x03ff, write8_delegate(FUNC(palette_device::write), m_palette.target())); |
| r31115 | r31116 | |
| 243 | 243 | m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x0000, 0x03ff, "bank1"); /* RAM */ |
| 244 | 244 | |
| 245 | 245 | /* bit 6 = enable char ROM reading through the video RAM */ |
| 246 | | m_k052109->set_rmrd_line((lines & 0x40) ? ASSERT_LINE : CLEAR_LINE); |
| 246 | m_k052109->set_rmrd_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); |
| 247 | 247 | |
| 248 | | membank("bank2")->set_entry(lines & 0x0f); |
| 248 | membank("bank2")->set_entry(data & 0x0f); |
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | static MACHINE_CONFIG_START( crimfght, crimfght_state ) |
| r31115 | r31116 | |
| 254 | 254 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */ |
| 255 | 255 | MCFG_CPU_PROGRAM_MAP(crimfght_map) |
| 256 | 256 | MCFG_CPU_VBLANK_INT_DRIVER("screen", crimfght_state, crimfght_interrupt) |
| 257 | | MCFG_KONAMICPU_LINE_CB(crimfght_state, banking_callback) |
| 257 | MCFG_KONAMICPU_LINE_CB(WRITE8(crimfght_state, banking_callback)) |
| 258 | 258 | |
| 259 | 259 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ |
| 260 | 260 | MCFG_CPU_PROGRAM_MAP(crimfght_sound_map) |
trunk/src/mame/drivers/blockhl.c
| r31115 | r31116 | |
| 181 | 181 | m_rombank = 0; |
| 182 | 182 | } |
| 183 | 183 | |
| 184 | | KONAMICPU_LINE_CB_MEMBER( blockhl_state::banking_callback ) |
| 184 | WRITE8_MEMBER( blockhl_state::banking_callback ) |
| 185 | 185 | { |
| 186 | 186 | /* bits 0-1 = ROM bank */ |
| 187 | | m_rombank = lines & 0x03; |
| 187 | m_rombank = data & 0x03; |
| 188 | 188 | membank("bank1")->set_entry(m_rombank); |
| 189 | 189 | |
| 190 | 190 | /* bits 3/4 = coin counters */ |
| 191 | | coin_counter_w(machine(), 0, lines & 0x08); |
| 192 | | coin_counter_w(machine(), 1, lines & 0x10); |
| 191 | coin_counter_w(machine(), 0, data & 0x08); |
| 192 | coin_counter_w(machine(), 1, data & 0x10); |
| 193 | 193 | |
| 194 | 194 | /* bit 5 = select palette RAM or work RAM at 5800-5fff */ |
| 195 | | m_palette_selected = ~lines & 0x20; |
| 195 | m_palette_selected = ~data & 0x20; |
| 196 | 196 | |
| 197 | 197 | /* bit 6 = enable char ROM reading through the video RAM */ |
| 198 | | m_k052109->set_rmrd_line((lines & 0x40) ? ASSERT_LINE : CLEAR_LINE); |
| 198 | m_k052109->set_rmrd_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); |
| 199 | 199 | |
| 200 | 200 | /* bit 7 used but unknown */ |
| 201 | 201 | |
| 202 | 202 | /* other bits unknown */ |
| 203 | 203 | |
| 204 | | if ((lines & 0x84) != 0x80) |
| 205 | | logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 204 | if ((data & 0x84) != 0x80) |
| 205 | logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 206 | 206 | } |
| 207 | 207 | |
| 208 | 208 | static MACHINE_CONFIG_START( blockhl, blockhl_state ) |
| r31115 | r31116 | |
| 211 | 211 | MCFG_CPU_ADD("maincpu", KONAMI,3000000) /* Konami custom 052526 */ |
| 212 | 212 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 213 | 213 | MCFG_CPU_VBLANK_INT_DRIVER("screen", blockhl_state, blockhl_interrupt) |
| 214 | | MCFG_KONAMICPU_LINE_CB(blockhl_state, banking_callback) |
| 214 | MCFG_KONAMICPU_LINE_CB(WRITE8(blockhl_state, banking_callback)) |
| 215 | 215 | |
| 216 | 216 | MCFG_CPU_ADD("audiocpu", Z80, 3579545) |
| 217 | 217 | MCFG_CPU_PROGRAM_MAP(audio_map) |
trunk/src/mame/drivers/surpratk.c
| r31115 | r31116 | |
| 154 | 154 | m_sprite_colorbase = 0; |
| 155 | 155 | } |
| 156 | 156 | |
| 157 | | KONAMICPU_LINE_CB_MEMBER( surpratk_state::banking_callback ) |
| 157 | WRITE8_MEMBER( surpratk_state::banking_callback ) |
| 158 | 158 | { |
| 159 | | // logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 160 | | membank("bank1")->set_entry(lines & 0x1f); |
| 159 | // logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 160 | membank("bank1")->set_entry(data & 0x1f); |
| 161 | 161 | } |
| 162 | 162 | |
| 163 | 163 | static MACHINE_CONFIG_START( surpratk, surpratk_state ) |
| r31115 | r31116 | |
| 166 | 166 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 053248, the clock input is 12MHz, and internal CPU divider of 4 */ |
| 167 | 167 | MCFG_CPU_PROGRAM_MAP(surpratk_map) |
| 168 | 168 | MCFG_CPU_VBLANK_INT_DRIVER("screen", surpratk_state, surpratk_interrupt) |
| 169 | | MCFG_KONAMICPU_LINE_CB(surpratk_state, banking_callback) |
| 169 | MCFG_KONAMICPU_LINE_CB(WRITE8(surpratk_state, banking_callback)) |
| 170 | 170 | |
| 171 | 171 | MCFG_DEVICE_ADD("bank0000", ADDRESS_MAP_BANK, 0) |
| 172 | 172 | MCFG_DEVICE_PROGRAM_MAP(bank0000_map) |
trunk/src/mame/drivers/rollerg.c
| r31115 | r31116 | |
| 235 | 235 | m_readzoomroms = 0; |
| 236 | 236 | } |
| 237 | 237 | |
| 238 | | KONAMICPU_LINE_CB_MEMBER( rollerg_state::banking_callback ) |
| 238 | WRITE8_MEMBER( rollerg_state::banking_callback ) |
| 239 | 239 | { |
| 240 | | membank("bank1")->set_entry(lines & 0x07); |
| 240 | membank("bank1")->set_entry(data & 0x07); |
| 241 | 241 | } |
| 242 | 242 | |
| 243 | 243 | |
| r31115 | r31116 | |
| 247 | 247 | MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */ |
| 248 | 248 | MCFG_CPU_PROGRAM_MAP(rollerg_map) |
| 249 | 249 | MCFG_CPU_VBLANK_INT_DRIVER("screen", rollerg_state, irq0_line_assert) |
| 250 | | MCFG_KONAMICPU_LINE_CB(rollerg_state, banking_callback) |
| 250 | MCFG_KONAMICPU_LINE_CB(WRITE8(rollerg_state, banking_callback)) |
| 251 | 251 | |
| 252 | 252 | MCFG_CPU_ADD("audiocpu", Z80, 3579545) |
| 253 | | MCFG_CPU_PROGRAM_MAP(rollerg_sound_map) |
| 254 | | /* NMIs are generated by the 053260 */ |
| 253 | MCFG_CPU_PROGRAM_MAP(rollerg_sound_map) /* NMIs are generated by the 053260 */ |
| 255 | 254 | |
| 256 | 255 | /* video hardware */ |
| 257 | 256 | MCFG_SCREEN_ADD("screen", RASTER) |
trunk/src/mame/drivers/gbusters.c
| r31115 | r31116 | |
| 258 | 258 | m_priority = 0; |
| 259 | 259 | } |
| 260 | 260 | |
| 261 | | KONAMICPU_LINE_CB_MEMBER( gbusters_state::banking_callback ) |
| 261 | WRITE8_MEMBER( gbusters_state::banking_callback ) |
| 262 | 262 | { |
| 263 | 263 | /* bits 0-3 ROM bank */ |
| 264 | | membank("bank1")->set_entry(lines & 0x0f); |
| 264 | membank("bank1")->set_entry(data & 0x0f); |
| 265 | 265 | |
| 266 | | if (lines & 0xf0) |
| 266 | if (data & 0xf0) |
| 267 | 267 | { |
| 268 | | //logerror("%04x: (lines) write %02x\n",device->safe_pc(), lines); |
| 269 | | //popmessage("lines = %02x", lines); |
| 268 | //logerror("%04x: (lines) write %02x\n",device->safe_pc(), data); |
| 269 | //popmessage("lines = %02x", data); |
| 270 | 270 | } |
| 271 | 271 | |
| 272 | 272 | /* other bits unknown */ |
| r31115 | r31116 | |
| 278 | 278 | MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* Konami custom 052526 */ |
| 279 | 279 | MCFG_CPU_PROGRAM_MAP(gbusters_map) |
| 280 | 280 | MCFG_CPU_VBLANK_INT_DRIVER("screen", gbusters_state, gbusters_interrupt) |
| 281 | | MCFG_KONAMICPU_LINE_CB(gbusters_state, banking_callback) |
| 281 | MCFG_KONAMICPU_LINE_CB(WRITE8(gbusters_state, banking_callback)) |
| 282 | 282 | |
| 283 | 283 | MCFG_CPU_ADD("audiocpu", Z80, 3579545) /* ? */ |
| 284 | 284 | MCFG_CPU_PROGRAM_MAP(gbusters_sound_map) |
trunk/src/mame/drivers/thunderx.c
| r31115 | r31116 | |
| 659 | 659 | MACHINE_CONFIG_END |
| 660 | 660 | |
| 661 | 661 | |
| 662 | | KONAMICPU_LINE_CB_MEMBER( thunderx_state::thunderx_banking_callback ) |
| 662 | WRITE8_MEMBER( thunderx_state::thunderx_banking_callback ) |
| 663 | 663 | { |
| 664 | | //logerror("thunderx %04x: bank select %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 665 | | membank("bank1")->set_entry(((lines & 0x0f) ^ 0x08)); |
| 664 | //logerror("thunderx %04x: bank select %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 665 | membank("bank1")->set_entry(((data & 0x0f) ^ 0x08)); |
| 666 | 666 | } |
| 667 | 667 | |
| 668 | 668 | static MACHINE_CONFIG_START( thunderx, thunderx_state ) |
| r31115 | r31116 | |
| 671 | 671 | MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */ |
| 672 | 672 | MCFG_CPU_PROGRAM_MAP(thunderx_map) |
| 673 | 673 | MCFG_CPU_VBLANK_INT_DRIVER("screen", thunderx_state, scontra_interrupt) |
| 674 | | MCFG_KONAMICPU_LINE_CB(thunderx_state, thunderx_banking_callback) |
| 674 | MCFG_KONAMICPU_LINE_CB(WRITE8(thunderx_state, thunderx_banking_callback)) |
| 675 | 675 | |
| 676 | 676 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ |
| 677 | 677 | MCFG_CPU_PROGRAM_MAP(thunderx_sound_map) |
trunk/src/mame/drivers/88games.c
| r31115 | r31116 | |
| 251 | 251 | * |
| 252 | 252 | *************************************/ |
| 253 | 253 | |
| 254 | | KONAMICPU_LINE_CB_MEMBER( _88games_state::banking_callback ) |
| 254 | WRITE8_MEMBER( _88games_state::banking_callback ) |
| 255 | 255 | { |
| 256 | | logerror("%04x: bank select %02x\n", machine().device("maincpu")->safe_pc(), lines); |
| 256 | logerror("%04x: bank select %02x\n", machine().device("maincpu")->safe_pc(), data); |
| 257 | 257 | |
| 258 | 258 | /* bits 0-2 select ROM bank for 0000-1fff */ |
| 259 | 259 | /* bit 3: when 1, palette RAM at 1000-1fff */ |
| 260 | 260 | /* bit 4: when 0, 051316 RAM at 3800-3fff; when 1, work RAM at 2000-3fff (NVRAM 3700-37ff) */ |
| 261 | | int rombank = lines & 0x07; |
| 261 | int rombank = data & 0x07; |
| 262 | 262 | m_bank0000->set_entry(rombank); |
| 263 | | m_bank1000->set_entry((lines & 0x08) ? 8 : rombank); |
| 264 | | m_videobank = lines & 0x10; |
| 263 | m_bank1000->set_entry((data & 0x08) ? 8 : rombank); |
| 264 | m_videobank = data & 0x10; |
| 265 | 265 | |
| 266 | 266 | /* bit 5 = enable char ROM reading through the video RAM */ |
| 267 | | m_k052109->set_rmrd_line((lines & 0x20) ? ASSERT_LINE : CLEAR_LINE); |
| 267 | m_k052109->set_rmrd_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); |
| 268 | 268 | |
| 269 | 269 | /* bit 6 is unknown, 1 most of the time */ |
| 270 | 270 | |
| 271 | 271 | /* bit 7 controls layer priority */ |
| 272 | | m_k88games_priority = lines & 0x80; |
| 272 | m_k88games_priority = data & 0x80; |
| 273 | 273 | } |
| 274 | 274 | |
| 275 | 275 | void _88games_state::machine_start() |
| r31115 | r31116 | |
| 308 | 308 | MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* ? */ |
| 309 | 309 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 310 | 310 | MCFG_CPU_VBLANK_INT_DRIVER("screen", _88games_state, k88games_interrupt) |
| 311 | | MCFG_KONAMICPU_LINE_CB(_88games_state, banking_callback) |
| 311 | MCFG_KONAMICPU_LINE_CB(WRITE8(_88games_state, banking_callback)) |
| 312 | 312 | |
| 313 | 313 | MCFG_CPU_ADD("audiocpu", Z80, 3579545) |
| 314 | 314 | MCFG_CPU_PROGRAM_MAP(sound_map) |