From c0177c679029e36ba60ce038a5cba97997daa503 Mon Sep 17 00:00:00 2001 From: arbee Date: Sun, 8 Feb 2015 20:50:19 -0500 Subject: Games added as GAME_NOT_WORKING ------------------------------- Vampire Night (VPN3 Ver. B) [Guru] --- src/mame/drivers/namcops2.c | 13 +++++++++++++ src/mame/mame.lst | 1 + 2 files changed, 14 insertions(+) diff --git a/src/mame/drivers/namcops2.c b/src/mame/drivers/namcops2.c index de37f27302c..c4d524b86b3 100644 --- a/src/mame/drivers/namcops2.c +++ b/src/mame/drivers/namcops2.c @@ -563,6 +563,18 @@ ROM_START( wanganmd ) DISK_IMAGE_READONLY( "wmn1", 0, SHA1(4254e987e71d0d4038a87f11dc1a304396b3dffc) ) ROM_END +ROM_START( vnight ) + ROM_REGION(0x200000, "bios", 0) + SYSTEM246_BIOS + + ROM_REGION(0x840000, "key", ROMREGION_ERASE00) + ROM_LOAD( "vpn3verb.ic002", 0x000000, 0x800000, CRC(d0011dc6) SHA1(d01a418b4b83057708e8f0ac4b271112b4a24d15) ) + ROM_LOAD( "vpn3verb_spr.ic002", 0x800000, 0x040000, CRC(41169c24) SHA1(40bffbe93da65fe5512be9f80254b034a071c38b) ) + + DISK_REGION("dvd") // actually single-track CD-ROM + DISK_IMAGE_READONLY( "vpn1cd0", 0, SHA1(714bd19eee3b31a060223003e4567e405ce04cd7) ) +ROM_END + ROM_START( bldyr3b ) ROM_REGION(0x200000, "bios", 0) SYSTEM246_BIOS @@ -658,6 +670,7 @@ ROM_END // System 246 GAME(2001, sys246, 0, system246, system246, driver_device, 0, ROT0, "Namco", "System 246 BIOS", GAME_IS_SKELETON|GAME_IS_BIOS_ROOT) +GAME(2001, vnight, sys246, system246, system246, driver_device, 0, ROT0, "Sega / Namco", "Vampire Night (VPN3 Ver. B)", GAME_IS_SKELETON) GAME(2001, bldyr3b, sys246, system246, system246, driver_device, 0, ROT0, "bootleg", "Bloody Roar 3 (bootleg)", GAME_IS_SKELETON) GAME(2001, rrvac, sys246, system246, system246, driver_device, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV3 Ver. A)", GAME_IS_SKELETON) GAME(2001, rrvac2, rrvac, system246, system246, driver_device, 0, ROT0, "Namco", "Ridge Racer V Arcade Battle (RRV2 Ver. A)", GAME_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 84f0d3eef91..9388cbe6d29 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -1097,6 +1097,7 @@ crszonev2a // Crisis Zone - December 1999 // Namco System 246 sys246 +vnight bldyr3b rrvac rrvac2 -- cgit v1.2.3 From 7c8cb9ef5aa505c5c547d15098c7def649385d6f Mon Sep 17 00:00:00 2001 From: cracyc Date: Sun, 8 Feb 2015 21:08:26 -0600 Subject: (mess) pcd: doesn't display anything yet but almost completes post (nw) --- src/emu/cpu/i86/i186.c | 15 ++++- src/emu/machine/mc2661.c | 4 ++ src/mess/drivers/pcd.c | 172 ++++++++++++++++++++++++++++++++++++++--------- src/mess/mess.mak | 1 + 4 files changed, 156 insertions(+), 36 deletions(-) diff --git a/src/emu/cpu/i86/i186.c b/src/emu/cpu/i86/i186.c index 98003014716..52f43567902 100644 --- a/src/emu/cpu/i86/i186.c +++ b/src/emu/cpu/i86/i186.c @@ -1035,11 +1035,14 @@ void i80186_cpu_device::device_timer(emu_timer &timer, device_timer_id id, int p count = count ? count : 0x10000; if(!(t->control & 4)) t->int_timer->adjust((attotime::from_hz(clock()/8) * count), which); - t->count = 0; if (LOG_TIMER) logerror(" Repriming interrupt\n"); } else + { t->int_timer->adjust(attotime::never, which); + t->control &= ~0x8000; + } + t->count = 0; break; } @@ -1245,8 +1248,8 @@ void i80186_cpu_device::drq_callback(int which) // Do the transfer, 80188 is incapable of word transfers if ((dma->control & BYTE_WORD) && (m_program->data_width() == 16)) { - dma_word = src_space->read_word(dma->source); - dest_space->write_word(dma->dest, dma_word); + dma_word = src_space->read_word_unaligned(dma->source); + dest_space->write_word_unaligned(dma->dest, dma_word); incdec_size = 2; } else @@ -1675,6 +1678,12 @@ WRITE16_MEMBER(i80186_cpu_device::internal_port_w) if (LOG_PORTS) logerror("%05X:80186 DMA%d control = %04X\n", pc(), (offset - 0x65) / 8, data); which = (offset - 0x65) / 8; update_dma_control(which, data); + if((m_dma[which].control & (SYNC_MASK | ST_STOP | TIMER_DRQ)) == ST_STOP) + { + // TODO: don't do this + while(m_dma[which].control & ST_STOP) + drq_callback(which); + } break; case 0x7f: diff --git a/src/emu/machine/mc2661.c b/src/emu/machine/mc2661.c index 18503452a3a..d13fe33c19f 100644 --- a/src/emu/machine/mc2661.c +++ b/src/emu/machine/mc2661.c @@ -278,7 +278,11 @@ WRITE8_MEMBER( mc2661_device::write ) m_write_txrdy(CLEAR_LINE); } if(COMMAND_MODE == 0x02) // loopback - the Wicat will set this after enabling the transmitter + { m_rhr = data; + m_sr |= STATUS_RXRDY; // pcd expects this + m_write_rxrdy(ASSERT_LINE); + } break; case REGISTER_SYNC: diff --git a/src/mess/drivers/pcd.c b/src/mess/drivers/pcd.c index 2ca91c48c20..c9d76c80962 100644 --- a/src/mess/drivers/pcd.c +++ b/src/mess/drivers/pcd.c @@ -19,7 +19,7 @@ #include "machine/wd_fdc.h" #include "machine/mc146818.h" #include "sound/speaker.h" - +#include "video/scn2674.h" //************************************************************************** // TYPE DEFINITIONS @@ -36,21 +36,32 @@ public: m_speaker(*this, "speaker"), m_sasi(*this, "sasi"), m_fdc(*this, "fdc"), - m_rtc(*this, "rtc") + m_rtc(*this, "rtc"), + m_crtc(*this, "crtc"), + m_vram(*this, "vram"), + m_charram(8*1024) { } - DECLARE_WRITE_LINE_MEMBER( pic1_irq ); - DECLARE_READ8_MEMBER( pic1_slave_ack_r ); + DECLARE_READ8_MEMBER( irq_callback ); TIMER_DEVICE_CALLBACK_MEMBER( timer0_tick ); DECLARE_WRITE_LINE_MEMBER( i186_timer1_w ); - DECLARE_READ8_MEMBER( crt_data_r ); - DECLARE_WRITE8_MEMBER( crt_data_w ); - DECLARE_READ8_MEMBER( crt_status_r ); + DECLARE_READ8_MEMBER( charram_r ); + DECLARE_WRITE8_MEMBER( charram_w ); + DECLARE_READ16_MEMBER( nmi_io_r ); + DECLARE_WRITE16_MEMBER( nmi_io_w ); + DECLARE_READ16_MEMBER( unk_r ); + DECLARE_WRITE16_MEMBER( unk_w ); + DECLARE_READ8_MEMBER( stat_r ); + DECLARE_WRITE8_MEMBER( stat_w ); + DECLARE_READ8_MEMBER( led_r ); + DECLARE_WRITE8_MEMBER( led_w ); + UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: // driver_device overrides virtual void machine_start(); + virtual void machine_reset(); private: required_device m_maincpu; @@ -60,6 +71,10 @@ private: required_device m_sasi; required_device m_fdc; required_device m_rtc; + required_device m_crtc; + required_shared_ptr m_vram; + dynamic_buffer m_charram; + UINT8 m_stat, m_led; }; @@ -67,22 +82,32 @@ private: // MACHINE EMULATION //************************************************************************** +static const gfx_layout pcd_charlayout = +{ + 8, 14, /* 8 x 14 characters */ + 512, /* 512 characters */ + 1, /* 1 bits per pixel */ + { 0 }, /* no bitplanes */ + /* x offsets */ + { 0, 1, 2, 3, 4, 5, 6, 7 }, + /* y offsets */ + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8 }, + 8*16 +}; void pcd_state::machine_start() { + machine().device("gfxdecode")->set_gfx(0, global_alloc(gfx_element(machine().device("palette"), pcd_charlayout, m_charram, 0, 2, 0))); } -WRITE_LINE_MEMBER( pcd_state::pic1_irq ) +void pcd_state::machine_reset() { - logerror("pic1 irq: %d\n", state); - m_maincpu->int0_w(state); // ? + m_stat = 0; + m_led = 0; } -READ8_MEMBER( pcd_state::pic1_slave_ack_r ) +READ8_MEMBER( pcd_state::irq_callback ) { - if (offset == 0) // irq 0 - return m_pic2->acknowledge(); - - return 0x00; + return (offset ? m_pic2 : m_pic1)->acknowledge(); } TIMER_DEVICE_CALLBACK_MEMBER( pcd_state::timer0_tick ) @@ -96,23 +121,73 @@ WRITE_LINE_MEMBER( pcd_state::i186_timer1_w ) m_speaker->level_w(state); } -READ8_MEMBER( pcd_state::crt_data_r ) +READ8_MEMBER( pcd_state::charram_r ) +{ + return m_charram[offset >> 1]; +} + +WRITE8_MEMBER( pcd_state::charram_w ) +{ + m_charram[offset >> 1] = data; +} + +READ16_MEMBER( pcd_state::nmi_io_r ) +{ + if(space.debugger_access()) + return 0; + logerror("%s: unmapped %s %04x\n", machine().describe_context(), space.name(), offset << 1); + m_stat |= 8; + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); + return 0; +} + +WRITE16_MEMBER( pcd_state::nmi_io_w ) +{ + if(space.debugger_access()) + return; + logerror("%s: unmapped %s %04x\n", machine().describe_context(), space.name(), offset << 1); + m_stat |= 8; + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); +} + +READ16_MEMBER( pcd_state::unk_r ) +{ + return 0; +} + +WRITE16_MEMBER( pcd_state::unk_w ) { - logerror("crt_data_r @ %02x\n", offset); - return 0xff; } -WRITE8_MEMBER( pcd_state::crt_data_w ) +READ8_MEMBER( pcd_state::stat_r ) { - logerror("crt_data_w %02x @ %02x\n", data, offset); + return m_stat; } -READ8_MEMBER( pcd_state::crt_status_r ) +WRITE8_MEMBER( pcd_state::stat_w ) { - logerror("crt_status_r @ %02x\n", offset); - return 0xff; + m_stat = data; } +READ8_MEMBER( pcd_state::led_r ) +{ + return m_led; +} + +WRITE8_MEMBER( pcd_state::led_w ) +{ + for(int i = 0; i < 6; i++) + logerror("%c", (data & (1 << i)) ? '-' : '*'); + logerror("\n"); + m_led = data; +} + +UINT32 pcd_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + //bitmap.fill(0, cliprect); + m_crtc->scn2574_draw(machine(), bitmap, cliprect, m_vram); + return 0; +} //************************************************************************** // ADDRESS MAPS @@ -120,17 +195,29 @@ READ8_MEMBER( pcd_state::crt_status_r ) static ADDRESS_MAP_START( pcd_map, AS_PROGRAM, 16, pcd_state ) AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now + AM_RANGE(0xf0000, 0xf7fff) AM_RAM AM_SHARE("vram") + //AM_RANGE(0xf7000, 0xfbfff) AM_READWRITE8(charram_r, charram_w, 0xffff) AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0) + AM_RANGE(0x00000, 0xfffff) AM_READWRITE(nmi_io_r, nmi_io_w) ADDRESS_MAP_END static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf840, 0xf841) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xff00) - AM_RANGE(0xf900, 0xf907) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0x00ff) -// AM_RANGE(0xf940, 0xf941) // sasi controller here? - AM_RANGE(0xf980, 0xf981) AM_READWRITE8(crt_data_r, crt_data_w, 0x00ff) AM_READ8(crt_status_r, 0xff00) -// AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) + AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff) + AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff) + AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff) + AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00) + AM_RANGE(0xf880, 0xf88f) AM_READWRITE(unk_r, unk_w) // mmu? + AM_RANGE(0xf900, 0xf907) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff) + //AM_RANGE(0xf940, 0xf943) scsi + AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs + AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff) + AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff) + AM_RANGE(0xf980, 0xf987) AM_DEVWRITE8("crtc", scn2674_device, mpu4_vid_scn2674_w, 0x00ff) + AM_RANGE(0xf980, 0xf987) AM_DEVREAD8("crtc", scn2674_device, mpu4_vid_scn2674_r, 0xff00) +// AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) + AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmi_io_r, nmi_io_w) ADDRESS_MAP_END @@ -144,15 +231,16 @@ static SLOT_INTERFACE_START( pcd_floppies ) SLOT_INTERFACE_END static MACHINE_CONFIG_START( pcd, pcd_state ) - MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2) + MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(pcd_map) MCFG_CPU_IO_MAP(pcd_io) MCFG_80186_TMROUT1_HANDLER(WRITELINE(pcd_state, i186_timer1_w)) + MCFG_80186_IRQ_SLAVE_ACK(READ8(pcd_state, irq_callback)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 2 / 16)) + MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 24)) // adjusted to pass post - MCFG_PIC8259_ADD("pic1", WRITELINE(pcd_state, pic1_irq), VCC, READ8(pcd_state, pic1_slave_ack_r)) - MCFG_PIC8259_ADD("pic2", DEVWRITELINE("pic1", pic8259_device, ir0_w), GND, NULL) + MCFG_PIC8259_ADD("pic1", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL) + MCFG_PIC8259_ADD("pic2", DEVWRITELINE("maincpu", i80186_cpu_device, int1_w), VCC, NULL) #if 0 MCFG_RAM_ADD(RAM_TAG) @@ -167,7 +255,7 @@ static MACHINE_CONFIG_START( pcd, pcd_state ) MCFG_OMTI5100_ADD("sasi") // floppy disk controller - MCFG_WD2793x_ADD("fdc", XTAL_16MHz/2/8) + MCFG_WD2793x_ADD("fdc", XTAL_16MHz/8) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("pic1", pic8259_device, ir6_w)) MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq1_w)) @@ -188,6 +276,20 @@ static MACHINE_CONFIG_START( pcd, pcd_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + // video hardware + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_SIZE(640, 350) + MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_UPDATE_DRIVER(pcd_state, screen_update) + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty) + MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") + + MCFG_SCN2674_VIDEO_ADD("crtc", 0, NULL); + MCFG_SCN2674_GFXDECODE("gfxdecode") + MCFG_SCN2674_PALETTE("palette") + // rtc MCFG_MC146818_ADD("rtc", XTAL_32_768kHz) MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic1", pic8259_device, ir7_w)) @@ -202,6 +304,10 @@ ROM_START( pcd ) ROM_REGION(0x4000, "bios", 0) ROM_LOAD16_BYTE("s26361-d359.d42", 0x0001, 0x2000, CRC(e20244dd) SHA1(0ebc5ddb93baacd9106f1917380de58aac64fe73)) ROM_LOAD16_BYTE("s26361-d359.d43", 0x0000, 0x2000, CRC(e03db2ec) SHA1(fcae8b0c9e7543706817b0a53872826633361fda)) + ROM_FILL(0xb64, 1, 0xe2) // post expects 0xd0 fdc command to be instant, give it a delay + ROM_FILL(0xb65, 1, 0xfe) + ROM_FILL(0x3ffe, 1, 0xb4) // fix csum + ROM_FILL(0x3fff, 1, 0x22) // gfx card (scn2674 with 8741), to be moved ROM_REGION(0x400, "graphics", 0) diff --git a/src/mess/mess.mak b/src/mess/mess.mak index 29944227106..0c25d473382 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -940,6 +940,7 @@ $(MESSOBJ)/mame.a: \ $(MAME_VIDEO)/vectrex.o \ $(MAME_DRIVERS)/cps1.o \ $(MAME_VIDEO)/cps1.o \ + $(MAME_VIDEO)/scn2674.o \ #------------------------------------------------- -- cgit v1.2.3 From 5a64c5f98b2ef52b74db615f31677c192cb6228b Mon Sep 17 00:00:00 2001 From: cracyc Date: Sun, 8 Feb 2015 21:48:37 -0600 Subject: (mess) pcd: hook up rtc, next error is video (nw) --- src/mess/drivers/pcd.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mess/drivers/pcd.c b/src/mess/drivers/pcd.c index c9d76c80962..e55843eb334 100644 --- a/src/mess/drivers/pcd.c +++ b/src/mess/drivers/pcd.c @@ -50,8 +50,8 @@ public: DECLARE_WRITE8_MEMBER( charram_w ); DECLARE_READ16_MEMBER( nmi_io_r ); DECLARE_WRITE16_MEMBER( nmi_io_w ); - DECLARE_READ16_MEMBER( unk_r ); - DECLARE_WRITE16_MEMBER( unk_w ); + DECLARE_READ8_MEMBER( rtc_r ); + DECLARE_WRITE8_MEMBER( rtc_w ); DECLARE_READ8_MEMBER( stat_r ); DECLARE_WRITE8_MEMBER( stat_w ); DECLARE_READ8_MEMBER( led_r ); @@ -150,13 +150,16 @@ WRITE16_MEMBER( pcd_state::nmi_io_w ) m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -READ16_MEMBER( pcd_state::unk_r ) +READ8_MEMBER( pcd_state::rtc_r ) { - return 0; + m_rtc->write(space, 0, offset); + return m_rtc->read(space, 1); } -WRITE16_MEMBER( pcd_state::unk_w ) +WRITE8_MEMBER( pcd_state::rtc_w ) { + m_rtc->write(space, 0, offset); + m_rtc->write(space, 1, data); } READ8_MEMBER( pcd_state::stat_r ) @@ -208,7 +211,7 @@ static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state ) AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff) AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff) AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00) - AM_RANGE(0xf880, 0xf88f) AM_READWRITE(unk_r, unk_w) // mmu? + AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff) AM_RANGE(0xf900, 0xf907) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff) //AM_RANGE(0xf940, 0xf943) scsi AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs -- cgit v1.2.3 From 51e529a4f9a04920b5770bb5e3c899268e24fe6c Mon Sep 17 00:00:00 2001 From: Stiletto Date: Sun, 8 Feb 2015 22:51:35 -0500 Subject: dd CED VideoVisc CHD placeholder Add CED VideoVisc CHD placeholder. --- src/mame/drivers/mcr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c index 667bd80399e..4bdf83fff61 100644 --- a/src/mame/drivers/mcr.c +++ b/src/mame/drivers/mcr.c @@ -2699,6 +2699,9 @@ ROM_START( nflfoot ) ROM_LOAD( "nflvidfg.cp7", 0x0a000, 0x2000, CRC(73f62392) SHA1(18f28be7264f8edff38f8a6aa067eeb1970f544c) ) ROM_LOAD( "nflvidfg.c10", 0x0c000, 0x2000, CRC(1766dcc7) SHA1(df499e3c66ae702d2d56e6cd095a754665569fcd) ) ROM_LOAD( "nflvidfg.cp9", 0x0e000, 0x2000, CRC(46558146) SHA1(4bedfae8cf0fcb9d837706ee13fbe3944ab47216) ) + + DISK_REGION( "ced_videodisc" ) + DISK_IMAGE_READONLY( "nflfoot", 0, NO_DUMP ) ROM_END -- cgit v1.2.3 From 3d4079dee2732118f82932ea9fb87648bf936686 Mon Sep 17 00:00:00 2001 From: Stiletto Date: Sun, 8 Feb 2015 23:12:02 -0500 Subject: Add Dragon's Lair 2: Time Warp / Space Ace '91 CHD placeholders. Add Dragon's Lair 2: Time Warp / Space Ace '91 CHD placeholders. --- src/mame/drivers/dlair2.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/mame/drivers/dlair2.c b/src/mame/drivers/dlair2.c index 865068c6a22..12a657416f8 100644 --- a/src/mame/drivers/dlair2.c +++ b/src/mame/drivers/dlair2.c @@ -205,61 +205,97 @@ MACHINE_CONFIG_END ROM_START( dlair2 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_319.bin", 0x00000, 0x10000, CRC(e9453a1b) SHA1(eb1201abd0124f6edbabd49bec81af827369cb2c) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_319e ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2euro3.19.bin", 0x00000, 0x10000, CRC(cc23ad9f) SHA1(24add8f03749dcc27b1b166dc2e5d346534a0088) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_319s ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2-span.bin", 0x00000, 0x10000, CRC(4b9a811d) SHA1(6fe580f541305422f89edbbf475f7c5f17153738) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "dlair2_span", 0, NO_DUMP ) ROM_END ROM_START( dlair2_318 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_318.bin", 0x00000, 0x10000, CRC(64706492) SHA1(99c92572c59ce1206847a5363d3791196fccd742) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_317e ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2euro3.17.bin", 0x00000, 0x10000, CRC(743f65a5) SHA1(45199983156c561b8e88c69bef454fd4042579bb) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_316e ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2euro.bin", 0x00000, 0x10000, CRC(d68f1b13) SHA1(cc9ee307b4d3caba049be6226163c810cf89ab44) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_315 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_315.rom", 0x00000, 0x10000, CRC(13ec0600) SHA1(9366dfac4508c4a723d688016b8cddb57aa6f5f1) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_315s ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "315pi.bin", 0x00000, 0x10000, CRC(75d8861a) SHA1(56ab31a760f43f98fa40396ee7d7af7ce982d28d) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "dlair2_span", 0, NO_DUMP ) ROM_END ROM_START( dlair2_314 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_314.bin", 0x00000, 0x10000, CRC(af92b612) SHA1(a0b986fa8a0f2206beedf1dcaed4d108599947ff) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_312 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "312.bin", 0x00000, 0x10000, CRC(c842be6b) SHA1(bf548ea3c6e98cd93f79408c3b9f0e1e22cc8bd1) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_300 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_300.bin", 0x00000, 0x10000, CRC(dec4f2e3) SHA1(fd96378c78df4aacd4b2190823ec5c1591199d44) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_211 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "dl2_211.bin", 0x00000, 0x10000, CRC(9f2660a3) SHA1(bf35356aab0138f86e6ea18c7bcf4f3f3c428d98) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "C-910-00001-00", 0, NO_DUMP ) ROM_END ROM_START( dlair2_200 ) @@ -269,16 +305,24 @@ ROM_START( dlair2_200 ) ROM_REGION( 0x2000, "bios", 0 ) /* BIOS for proto board */ ROM_LOAD( "dl2_amoa_proto_bios_mod_56ee.bin",0x00000, 0x2000, CRC(1fc21576) SHA1(dc5443f6a8d80ec8148314244f05ac0290e380ea) ) + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "dl2-sa91_proto", 0, NO_DUMP ) ROM_END ROM_START( spacea91 ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "ace.dat", 0x00000, 0x10000, CRC(de93a213) SHA1(1c95d5f45292f08149d749e1f7b5d9409d3a266e) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "spaceace91", 0, NO_DUMP ) ROM_END ROM_START( spacea91_13e ) ROM_REGION( 0x10000, "ipl", 0 ) ROM_LOAD( "sa91euro1.3.bin", 0x00000, 0x10000, CRC(27dd0486) SHA1(8a57510b466381d9962e5397d89a7a3e73d757b0) ) + + DISK_REGION( "laserdisc" ) + DISK_IMAGE_READONLY( "spaceace91", 0, NO_DUMP ) ROM_END -- cgit v1.2.3 From 3ce640c0dd0f893540334e208d83fd7557bdcb2f Mon Sep 17 00:00:00 2001 From: Stiletto Date: Sun, 8 Feb 2015 23:30:45 -0500 Subject: Add Casino Strip XI CHD placeholder. Add Casino Strip XI CHD placeholder. --- src/mame/drivers/statriv2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c index f5a6de15702..7b6e79af825 100644 --- a/src/mame/drivers/statriv2.c +++ b/src/mame/drivers/statriv2.c @@ -977,6 +977,9 @@ ROM_START( cstripxi ) ROM_LOAD( "prom.u17", 0x0000, 0x0020, NO_DUMP ) /* Socketted */ ROM_LOAD( "prom.u21", 0x0020, 0x0020, NO_DUMP ) /* Soldered in (Color?) */ ROM_LOAD( "prom.u22", 0x0040, 0x0100, NO_DUMP ) /* Soldered in */ + + DISK_REGION( "laserdisc") + DISK_IMAGE_READONLY("cstripxi") ROM_END -- cgit v1.2.3 From 4031171b8f530d4dfe6fab2b336e520ad9be5bf2 Mon Sep 17 00:00:00 2001 From: Stiletto Date: Sun, 8 Feb 2015 23:31:55 -0500 Subject: (nw) whoops (nw) whoops --- src/mame/drivers/statriv2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c index 7b6e79af825..c7e71c7cfb0 100644 --- a/src/mame/drivers/statriv2.c +++ b/src/mame/drivers/statriv2.c @@ -979,7 +979,7 @@ ROM_START( cstripxi ) ROM_LOAD( "prom.u22", 0x0040, 0x0100, NO_DUMP ) /* Soldered in */ DISK_REGION( "laserdisc") - DISK_IMAGE_READONLY("cstripxi") + DISK_IMAGE_READONLY("cstripxi", 0, NO_DUMP ) ROM_END -- cgit v1.2.3 From 9f0741590988c7e1a7526f2c0af15e3810d64cc6 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Sat, 7 Feb 2015 18:31:02 -0800 Subject: nbapbp: fix access to 93C46, game is playable [Osso] --- src/mame/drivers/hornet.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c index f507d8f49d9..1dfb507961d 100644 --- a/src/mame/drivers/hornet.c +++ b/src/mame/drivers/hornet.c @@ -534,7 +534,7 @@ READ8_MEMBER(hornet_state::sysreg_r) 0x02 = ADDOR (ADC DOR) 0x01 = ADDO (ADC DO) */ - r = 0xf0 | (m_eeprom->do_read() << 3); + r = 0xf0; m_eeprom->do_read(); r |= m_adc12138->do_r(space, 0) | (m_adc12138->eoc_r(space, 0) << 2); break; -- cgit v1.2.3 From 36247f2ffd013f05232f3280d346795eeac2fe7d Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 9 Feb 2015 17:58:40 +0100 Subject: Fixed MT05844 (nw) --- src/emu/bus/coco/coco_multi.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/emu/bus/coco/coco_multi.c b/src/emu/bus/coco/coco_multi.c index b492e6622c6..57d86d45ce6 100644 --- a/src/emu/bus/coco/coco_multi.c +++ b/src/emu/bus/coco/coco_multi.c @@ -103,21 +103,21 @@ WRITE_LINE_MEMBER(coco_multipak_device::multi_halt_w) static MACHINE_CONFIG_FRAGMENT(coco_multi) MCFG_COCO_CARTRIDGE_ADD(SLOT1_TAG, coco_cart_slot1_3, NULL) - MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) - MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) + MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) + MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) + MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) MCFG_COCO_CARTRIDGE_ADD(SLOT2_TAG, coco_cart_slot1_3, NULL) - MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) - MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) + MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) + MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) + MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) MCFG_COCO_CARTRIDGE_ADD(SLOT3_TAG, coco_cart_slot1_3, NULL) - MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) - MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) + MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) + MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) + MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) MCFG_COCO_CARTRIDGE_ADD(SLOT4_TAG, coco_cart_slot4, "fdcv11") - MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) - MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) + MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) + MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) + MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) MACHINE_CONFIG_END //************************************************************************** -- cgit v1.2.3 From 3387b04afad914d7333f07f871fcbcbbea40009f Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 9 Feb 2015 18:46:28 +0100 Subject: wrally.c: enabled save state support (nw) --- src/mame/drivers/wrally.c | 14 +++++++------- src/mame/includes/wrally.h | 33 +++++++++++++++++++-------------- src/mame/machine/wrally.c | 6 +++--- src/mame/video/wrally.c | 10 +++++----- 4 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/mame/drivers/wrally.c b/src/mame/drivers/wrally.c index 1820f8a6f82..01f4210f983 100644 --- a/src/mame/drivers/wrally.c +++ b/src/mame/drivers/wrally.c @@ -103,7 +103,7 @@ produces a high clock frequency, slow movements a low freq. static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wrally_vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ + AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */ AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */ AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */ @@ -112,12 +112,12 @@ static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state ) AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2") AM_RANGE(0x700004, 0x700005) AM_READ_PORT("WHEEL") AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */ + AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okim6295_bankswitch_w) /* OKI6295 bankswitch */ AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status/data register */ AM_RANGE(0x70000a, 0x70001b) AM_WRITE(wrally_coin_lockout_w) /* Coin lockouts */ AM_RANGE(0x70002a, 0x70003b) AM_WRITE(wrally_coin_counter_w) /* Coin counters */ AM_RANGE(0x70004a, 0x70004b) AM_WRITENOP /* Sound muting */ - AM_RANGE(0x70005a, 0x70005b) AM_WRITE(wrally_flipscreen_w) /* Flip screen */ + AM_RANGE(0x70005a, 0x70005b) AM_WRITE(flipscreen_w) /* Flip screen */ AM_RANGE(0x70006a, 0x70007b) AM_WRITENOP /* ??? */ AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with DS5002FP) */ ADDRESS_MAP_END @@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( wrally, wrally_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1) - MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update_wrally) + MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wrally) @@ -352,6 +352,6 @@ ROM_START( wrallyb ) /* Board Marked 930217, Atari License */ ROM_END -GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", 0 ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ -GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", 0 ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ -GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", 0 ) +GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ +GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ +GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/wrally.h b/src/mame/includes/wrally.h index 52e3a8daa57..23da251444f 100644 --- a/src/mame/includes/wrally.h +++ b/src/mame/includes/wrally.h @@ -3,33 +3,38 @@ class wrally_state : public driver_device public: wrally_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_videoram(*this, "videoram"), m_vregs(*this, "vregs"), m_spriteram(*this, "spriteram"), - m_shareram(*this, "shareram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_shareram(*this, "shareram") { } + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; - tilemap_t *m_pant[2]; required_shared_ptr m_videoram; required_shared_ptr m_vregs; required_shared_ptr m_spriteram; required_shared_ptr m_shareram; + + tilemap_t *m_pant[2]; DECLARE_READ8_MEMBER(dallas_share_r); DECLARE_WRITE8_MEMBER(dallas_share_w); - DECLARE_WRITE16_MEMBER(wrally_vram_w); - DECLARE_WRITE16_MEMBER(wrally_flipscreen_w); - DECLARE_WRITE16_MEMBER(OKIM6295_bankswitch_w); + DECLARE_WRITE16_MEMBER(vram_w); + DECLARE_WRITE16_MEMBER(flipscreen_w); + DECLARE_WRITE16_MEMBER(okim6295_bankswitch_w); DECLARE_WRITE16_MEMBER(wrally_coin_counter_w); DECLARE_WRITE16_MEMBER(wrally_coin_lockout_w); - TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen0); - TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen1); + + TILE_GET_INFO_MEMBER(get_tile_info_screen0); + TILE_GET_INFO_MEMBER(get_tile_info_screen1); + virtual void video_start(); - UINT32 screen_update_wrally(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/machine/wrally.c b/src/mame/machine/wrally.c index fe87d07aadf..50d39ed9e5b 100644 --- a/src/mame/machine/wrally.c +++ b/src/mame/machine/wrally.c @@ -18,7 +18,7 @@ ***************************************************************************/ -WRITE16_MEMBER(wrally_state::wrally_vram_w) +WRITE16_MEMBER(wrally_state::vram_w) { data = gaelco_decrypt(space, offset, data, 0x1f, 0x522a); COMBINE_DATA(&m_videoram[offset]); @@ -26,12 +26,12 @@ WRITE16_MEMBER(wrally_state::wrally_vram_w) m_pant[(offset & 0x1fff) >> 12]->mark_tile_dirty(((offset << 1) & 0x1fff) >> 2); } -WRITE16_MEMBER(wrally_state::wrally_flipscreen_w) +WRITE16_MEMBER(wrally_state::flipscreen_w) { flip_screen_set(data & 0x01); } -WRITE16_MEMBER(wrally_state::OKIM6295_bankswitch_w) +WRITE16_MEMBER(wrally_state::okim6295_bankswitch_w) { UINT8 *RAM = memregion("oki")->base(); diff --git a/src/mame/video/wrally.c b/src/mame/video/wrally.c index f156e0e6033..bd9e1437df9 100644 --- a/src/mame/video/wrally.c +++ b/src/mame/video/wrally.c @@ -34,7 +34,7 @@ 1 | xxx----- -------- | not used? */ -TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen0) +TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_screen0) { int data = m_videoram[tile_index << 1]; int data2 = m_videoram[(tile_index << 1) + 1]; @@ -45,7 +45,7 @@ TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen0) SET_TILE_INFO_MEMBER(0, code, data2 & 0x1f, TILE_FLIPYX((data2 >> 6) & 0x03)); } -TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen1) +TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_screen1) { int data = m_videoram[(0x2000/2) + (tile_index << 1)]; int data2 = m_videoram[(0x2000/2) + (tile_index << 1) + 1]; @@ -64,8 +64,8 @@ TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen1) void wrally_state::video_start() { - m_pant[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_wrally_screen0),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_pant[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_wrally_screen1),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_screen0),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_screen1),this),TILEMAP_SCAN_ROWS,16,16,64,32); m_pant[0]->set_transmask(0,0xff01,0x00ff); /* this layer is split in two (pens 1..7, pens 8-15) */ m_pant[1]->set_transparent_pen(0); @@ -172,7 +172,7 @@ void wrally_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, ***************************************************************************/ -UINT32 wrally_state::screen_update_wrally(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 wrally_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* set scroll registers */ if (!flip_screen()) { -- cgit v1.2.3 From c4aef2a747a8dd35ad1591e60add80adf587d5a5 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 9 Feb 2015 19:20:47 +0100 Subject: quizpani.c: added save state support (nw) --- src/mame/drivers/quizpani.c | 10 +++++----- src/mame/includes/quizpani.h | 20 +++++++++++++------- src/mame/video/quizpani.c | 11 +++++++---- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/mame/drivers/quizpani.c b/src/mame/drivers/quizpani.c index 5298afad75b..5b3a87a91c7 100644 --- a/src/mame/drivers/quizpani.c +++ b/src/mame/drivers/quizpani.c @@ -58,15 +58,15 @@ static ADDRESS_MAP_START( quizpani_map, AS_PROGRAM, 16, quizpani_state ) AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") AM_RANGE(0x100014, 0x100015) AM_WRITENOP /* screen flipping? */ AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */ - AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w) + AM_RANGE(0x100018, 0x100019) AM_WRITE(tilesbank_w) AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x104020, 0x104027) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) AM_RANGE(0x108000, 0x1083ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_SHARE("scrollreg") AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP - AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(quizpani_bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(quizpani_txt_videoram_w) AM_SHARE("txt_videoram") + AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") + AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram") AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_RANGE(0x200000, 0x33ffff) AM_ROM ADDRESS_MAP_END @@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( quizpani, quizpani_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update_quizpani) + MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update) MCFG_SCREEN_PALETTE("palette") @@ -242,4 +242,4 @@ ROM_START( quizpani ) ROM_LOAD( "qz8.121", 0x200, 0x100, CRC(b4c19741) SHA1(a6d3686bad6ef2336463b89bc2d249003d9b4bcc) ) /* unknown */ ROM_END -GAME( 1993, quizpani, 0, quizpani, quizpani, driver_device, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", 0 ) +GAME( 1993, quizpani, 0, quizpani, quizpani, driver_device, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/quizpani.h b/src/mame/includes/quizpani.h index d1c05355d7c..0aba284b38c 100644 --- a/src/mame/includes/quizpani.h +++ b/src/mame/includes/quizpani.h @@ -6,26 +6,32 @@ public: quizpani_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), m_scrollreg(*this, "scrollreg"), m_bg_videoram(*this, "bg_videoram"), - m_txt_videoram(*this, "txt_videoram"), - m_gfxdecode(*this, "gfxdecode") { } + m_txt_videoram(*this, "txt_videoram") { } required_device m_maincpu; + required_device m_gfxdecode; + required_shared_ptr m_scrollreg; required_shared_ptr m_bg_videoram; required_shared_ptr m_txt_videoram; - required_device m_gfxdecode; + tilemap_t *m_bg_tilemap; tilemap_t *m_txt_tilemap; int m_bgbank; int m_txtbank; - DECLARE_WRITE16_MEMBER(quizpani_bg_videoram_w); - DECLARE_WRITE16_MEMBER(quizpani_txt_videoram_w); - DECLARE_WRITE16_MEMBER(quizpani_tilesbank_w); + + DECLARE_WRITE16_MEMBER(bg_videoram_w); + DECLARE_WRITE16_MEMBER(txt_videoram_w); + DECLARE_WRITE16_MEMBER(tilesbank_w); + TILEMAP_MAPPER_MEMBER(bg_scan); TILE_GET_INFO_MEMBER(bg_tile_info); TILE_GET_INFO_MEMBER(txt_tile_info); + virtual void video_start(); - UINT32 screen_update_quizpani(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; diff --git a/src/mame/video/quizpani.c b/src/mame/video/quizpani.c index 29001b47da8..dad21bcb10d 100644 --- a/src/mame/video/quizpani.c +++ b/src/mame/video/quizpani.c @@ -34,19 +34,19 @@ TILE_GET_INFO_MEMBER(quizpani_state::txt_tile_info) 0); } -WRITE16_MEMBER(quizpani_state::quizpani_bg_videoram_w) +WRITE16_MEMBER(quizpani_state::bg_videoram_w) { m_bg_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(quizpani_state::quizpani_txt_videoram_w) +WRITE16_MEMBER(quizpani_state::txt_videoram_w) { m_txt_videoram[offset] = data; m_txt_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(quizpani_state::quizpani_tilesbank_w) +WRITE16_MEMBER(quizpani_state::tilesbank_w) { if (ACCESSING_BITS_0_7) { @@ -69,9 +69,12 @@ void quizpani_state::video_start() m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpani_state::bg_tile_info),this), tilemap_mapper_delegate(FUNC(quizpani_state::bg_scan),this),16,16,256,32); m_txt_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpani_state::txt_tile_info),this),tilemap_mapper_delegate(FUNC(quizpani_state::bg_scan),this),16,16,256,32); m_txt_tilemap->set_transparent_pen(15); + + save_item(NAME(m_bgbank)); + save_item(NAME(m_txtbank)); } -UINT32 quizpani_state::screen_update_quizpani(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 quizpani_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->set_scrollx(0, m_scrollreg[0] - 64); m_bg_tilemap->set_scrolly(0, m_scrollreg[1] + 16); -- cgit v1.2.3 From 83d8264cc4d42cac3e4bf10c84de9d2b91d8e983 Mon Sep 17 00:00:00 2001 From: etabeta78 Date: Mon, 9 Feb 2015 20:53:04 +0100 Subject: hornet.c: made the eeprom optional since it seems to be only on the LAN board. This is a better fix for the nbapbp issue. nw. --- src/mame/drivers/hornet.c | 57 +++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c index 1dfb507961d..05947090928 100644 --- a/src/mame/drivers/hornet.c +++ b/src/mame/drivers/hornet.c @@ -338,18 +338,19 @@ public: m_gn680(*this, "gn680"), m_dsp(*this, "dsp"), m_dsp2(*this, "dsp2"), - m_eeprom(*this, "eeprom"), m_k037122_1(*this, "k037122_1"), m_k037122_2(*this, "k037122_2" ), m_adc12138(*this, "adc12138"), + m_konppc(*this, "konppc"), + m_lan_eeprom(*this, "lan_eeprom"), m_in0(*this, "IN0"), m_in1(*this, "IN1"), m_in2(*this, "IN2"), m_dsw(*this, "DSW"), m_eepromout(*this, "EEPROMOUT"), m_analog1(*this, "ANALOG1"), - m_analog2(*this, "ANALOG2"), - m_konppc(*this, "konppc"){ } + m_analog2(*this, "ANALOG2") + { } // TODO: Needs verification on real hardware static const int m_sound_timer_usec = 2800; @@ -363,13 +364,13 @@ public: optional_device m_gn680; required_device m_dsp; optional_device m_dsp2; - required_device m_eeprom; optional_device m_k037122_1; optional_device m_k037122_2; required_device m_adc12138; - required_ioport m_in0, m_in1, m_in2, m_dsw, m_eepromout; - optional_ioport m_analog1, m_analog2; required_device m_konppc; + optional_device m_lan_eeprom; + required_ioport m_in0, m_in1, m_in2, m_dsw; + optional_ioport m_eepromout, m_analog1, m_analog2; emu_timer *m_sound_irq_timer; UINT8 m_led_reg0; @@ -534,7 +535,9 @@ READ8_MEMBER(hornet_state::sysreg_r) 0x02 = ADDOR (ADC DOR) 0x01 = ADDO (ADC DO) */ - r = 0xf0; m_eeprom->do_read(); + r = 0xf0; + if (m_lan_eeprom) + r |= m_lan_eeprom->do_read() << 3; r |= m_adc12138->do_r(space, 0) | (m_adc12138->eoc_r(space, 0) << 2); break; @@ -572,7 +575,8 @@ WRITE8_MEMBER(hornet_state::sysreg_w) 0x02 = LAMP1 0x01 = LAMP0 */ - m_eepromout->write(data, 0xff); + if (m_eepromout) + m_eepromout->write(data, 0xff); osd_printf_debug("System register 0 = %02X\n", data); break; @@ -877,11 +881,6 @@ static INPUT_PORTS_START( hornet ) PORT_DIPNAME( 0x01, 0x01, "Monitor Type" ) PORT_DIPLOCATION("SW:8") PORT_DIPSETTING( 0x01, "24KHz" ) PORT_DIPSETTING( 0x00, "15KHz" ) - - PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( sscope ) @@ -902,6 +901,16 @@ static INPUT_PORTS_START( sscope ) PORT_BIT( 0x7ff, 0x3ff, IPT_AD_STICK_Y ) PORT_MINMAX(0x000, 0x7ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) PORT_INVERT INPUT_PORTS_END +static INPUT_PORTS_START( sscope2 ) + PORT_INCLUDE( sscope ) + + // LAN board EEPROM + PORT_START( "EEPROMOUT" ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, cs_write) +INPUT_PORTS_END + /* PowerPC interrupts @@ -977,8 +986,8 @@ static MACHINE_CONFIG_START( hornet, hornet_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - - MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") +// PCB description at top doesn't mention any EEPROM on the base board... +// MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK) MCFG_VOODOO_FBMEM(2) @@ -1528,17 +1537,17 @@ ROM_END /*************************************************************************/ -GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) -GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) -GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) // The region comes from the Timekeeper NVRAM, without a valid default all sets except 'xxD, Ver 1.33' will init their NVRAM to UAx versions, the xxD set seems to incorrectly init it to JXD, which isn't a valid // version, and thus can't be booted. If you copy the NVRAM from another already initialized set, it will boot as UAD. // to get the actual game to boot you must calibrate the guns etc. -GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -GAMEL( 2000, sscope2, 0, sscope2, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) +GAMEL( 2000, sscope2, 0, sscope2, sscope2, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) -- cgit v1.2.3 From e2de05e3b257818a6d4cceca7d5ef2e00e009c17 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 9 Feb 2015 22:56:22 +0100 Subject: (MESS)New Working Game Added ---------------------- Bank Shot [hap, Sean Riddle] --- src/mess/drivers/amaztron.c | 2 +- src/mess/drivers/cnsector.c | 2 +- src/mess/drivers/merlin.c | 2 +- src/mess/drivers/simon.c | 2 +- src/mess/drivers/splitsec.c | 50 ++++++--- src/mess/drivers/stopthie.c | 2 +- src/mess/drivers/wildfire.c | 2 +- src/mess/layout/bankshot.lay | 241 +++++++++++++++++++++++++++++++++++++++++-- 8 files changed, 276 insertions(+), 27 deletions(-) diff --git a/src/mess/drivers/amaztron.c b/src/mess/drivers/amaztron.c index b5270bfe603..732bf33fe72 100644 --- a/src/mess/drivers/amaztron.c +++ b/src/mess/drivers/amaztron.c @@ -2,7 +2,7 @@ // copyright-holders:hap /*************************************************************************** - Coleco Amaze-A-Tron + Coleco Amaze-A-Tron, by Ralph Baer * TMS1100 MCU, labeled MP3405(die label too) This is an electronic board game with a selection of 8 maze games, diff --git a/src/mess/drivers/cnsector.c b/src/mess/drivers/cnsector.c index 34cedc94e20..3c6f3c6a31f 100644 --- a/src/mess/drivers/cnsector.c +++ b/src/mess/drivers/cnsector.c @@ -2,7 +2,7 @@ // copyright-holders:hap /*************************************************************************** - Parker Brothers Code Name: Sector + Parker Brothers Code Name: Sector, by Bob Doyle * MP0905BNL ZA0379 (die labeled 0970F-05B) This is a tabletop submarine pursuit game. A grid board and small toy diff --git a/src/mess/drivers/merlin.c b/src/mess/drivers/merlin.c index 6fb0919a86c..9ce4d0fe66b 100644 --- a/src/mess/drivers/merlin.c +++ b/src/mess/drivers/merlin.c @@ -2,7 +2,7 @@ // copyright-holders:Wilbert Pol, hap /*************************************************************************** - Parker Bros Merlin handheld computer game + Parker Bros Merlin handheld computer game, by Bob Doyle * TMS1100NLL MP3404A-N2 (has internal ROM) To start a game, press NEW GAME, followed by a number: diff --git a/src/mess/drivers/simon.c b/src/mess/drivers/simon.c index 0a7947d9a94..3a885b542c0 100644 --- a/src/mess/drivers/simon.c +++ b/src/mess/drivers/simon.c @@ -2,7 +2,7 @@ // copyright-holders:hap /*************************************************************************** - Milton Bradley Simon + Milton Bradley Simon, created by Ralph Baer Revision A hardware: * TMS1000 (has internal ROM), DS75494 lamp driver diff --git a/src/mess/drivers/splitsec.c b/src/mess/drivers/splitsec.c index a84b8b22132..aa7ae498962 100644 --- a/src/mess/drivers/splitsec.c +++ b/src/mess/drivers/splitsec.c @@ -16,13 +16,25 @@ *: higher number indicates higher difficulty -**************************************************************************** +---------------------------------------------------------------------------- - Parker Brothers Bank Shot (also released in other regions as Cue Ball) + Parker Brothers Bank Shot (known as Cue Ball in the UK), by Garry Kitchen * TMS1400NLL MP7313-N2 (die labeled MP7313) - - x + Bank Shot is an electronic pool game. To select a game, repeatedly press + the [SELECT] button, then press [CUE UP] to start. Refer to the official + manual for more information. The game selections are: + 1: Straight Pool (1 player) + 2: Straight Pool (2 players) + 3: Poison Pool + 4: Trick Shots + + + TODO: + - bankshot: the cue ball led is strobed more often than other leds, + making it look brighter. We need more accurate led decay simulation + for this to work. + - MCU clock is unknown ***************************************************************************/ @@ -106,9 +118,7 @@ public: 70 72 74 - Bank Shot: - -x + Bank Shot: pretty much linear, see bankshot.lay */ @@ -234,17 +244,29 @@ static INPUT_PORTS_START( splitsec ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END + +/* bankshot physical button layout and labels is like this: + + [SELECT [BALL UP] [BALL OVER] + SCORE] + + ------ led display ------ + + [ANGLE] [AIM] [CUE UP + SHOOT] +*/ + static INPUT_PORTS_START( bankshot ) PORT_START("IN.0") // R2 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Angle") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Aim") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Cue Up / Shoot") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // R3 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Select / Score") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Ball Up") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Ball Over") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -337,4 +359,4 @@ ROM_END CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE ) -CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) +CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE ) diff --git a/src/mess/drivers/stopthie.c b/src/mess/drivers/stopthie.c index 04f70f83a10..249046286f3 100644 --- a/src/mess/drivers/stopthie.c +++ b/src/mess/drivers/stopthie.c @@ -2,7 +2,7 @@ // copyright-holders:hap /*************************************************************************** - Parker Brothers Stop Thief + Parker Brothers Stop Thief, by Bob Doyle * TMS0980NLL MP6101B (die labeled 0980B-01A) Stop Thief is actually a board game, the electronic device emulated here diff --git a/src/mess/drivers/wildfire.c b/src/mess/drivers/wildfire.c index 9881cd28985..f2c8f518951 100644 --- a/src/mess/drivers/wildfire.c +++ b/src/mess/drivers/wildfire.c @@ -2,7 +2,7 @@ // copyright-holders:hap /*************************************************************************** - Parker Brothers Wildfire + Parker Brothers Wildfire, by Bob and Holly Doyle (prototype), and Garry Kitchen * AMI S2150, labeled C10641 diff --git a/src/mess/layout/bankshot.lay b/src/mess/layout/bankshot.lay index 53a25199e4e..8ddcf5c085b 100644 --- a/src/mess/layout/bankshot.lay +++ b/src/mess/layout/bankshot.lay @@ -3,21 +3,248 @@ - + + + + + - - + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From f07a7eaa784056e6ed1b1fbe7c414d77659981ec Mon Sep 17 00:00:00 2001 From: Stiletto Date: Mon, 9 Feb 2015 19:57:48 -0500 Subject: Going with Justin's translation for this one (nw) Going with Justin's translation for this one (nw) --- src/mame/drivers/vamphalf.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c index 6beaac62228..d8f61673686 100644 --- a/src/mame/drivers/vamphalf.c +++ b/src/mame/drivers/vamphalf.c @@ -163,9 +163,9 @@ public: DECLARE_WRITE32_MEMBER(wyvernwg_snd_w); DECLARE_WRITE16_MEMBER(misncrft_snd_w); - DECLARE_READ32_MEMBER(yorizori_1c_r); - DECLARE_WRITE32_MEMBER(yorizori_1c_w); - DECLARE_READ32_MEMBER(yorizori_10_r); + DECLARE_READ32_MEMBER(yolijoli_1c_r); + DECLARE_WRITE32_MEMBER(yolijoli_1c_w); + DECLARE_READ32_MEMBER(yolijoli_10_r); DECLARE_READ8_MEMBER(qs1000_p1_r); DECLARE_WRITE8_MEMBER(qs1000_p3_w); @@ -187,7 +187,7 @@ public: DECLARE_DRIVER_INIT(misncrft); DECLARE_DRIVER_INIT(boonggab); DECLARE_DRIVER_INIT(wyvernwg); - DECLARE_DRIVER_INIT(yorizori); + DECLARE_DRIVER_INIT(yolijoli); UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap); @@ -377,19 +377,19 @@ WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w) } } -READ32_MEMBER(vamphalf_state::yorizori_10_r) +READ32_MEMBER(vamphalf_state::yolijoli_10_r) { - printf("yorizori_10_r %08x\n", space.device().safe_pc()); + printf("yolijoli_10_r %08x\n", space.device().safe_pc()); return 0xffffffff; } -READ32_MEMBER(vamphalf_state::yorizori_1c_r) +READ32_MEMBER(vamphalf_state::yolijoli_1c_r) { -// printf("yorizori_1c_r %08x\n", space.device().safe_pc()); +// printf("yolijoli_1c_r %08x\n", space.device().safe_pc()); return 0x00;// 0xaa; } -WRITE32_MEMBER(vamphalf_state::yorizori_1c_w) +WRITE32_MEMBER(vamphalf_state::yolijoli_1c_w) { -// printf("yorizori_1c_w %08x %08x\n", space.device().safe_pc(), data); +// printf("yolijoli_1c_w %08x %08x\n", space.device().safe_pc(), data); } WRITE32_MEMBER( vamphalf_state::wyvernwg_snd_w ) @@ -434,7 +434,7 @@ static ADDRESS_MAP_START( common_32bit_map, AS_PROGRAM, 32, vamphalf_state ) AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) ADDRESS_MAP_END -static ADDRESS_MAP_START( yorizori_32bit_map, AS_PROGRAM, 32, vamphalf_state ) +static ADDRESS_MAP_START( yolijoli_32bit_map, AS_PROGRAM, 32, vamphalf_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32") AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -584,9 +584,9 @@ static ADDRESS_MAP_START( boonggab_io, AS_IO, 16, vamphalf_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( yorizori_io, AS_IO, 32, vamphalf_state ) - AM_RANGE(0x010, 0x013) AM_READ(yorizori_10_r) - AM_RANGE(0x01c, 0x01f) AM_READWRITE(yorizori_1c_r,yorizori_1c_w) +static ADDRESS_MAP_START( yolijoli_io, AS_IO, 32, vamphalf_state ) + AM_RANGE(0x010, 0x013) AM_READ(yolijoli_10_r) + AM_RANGE(0x01c, 0x01f) AM_READWRITE(yolijoli_1c_r,yolijoli_1c_w) ADDRESS_MAP_END /* @@ -1160,10 +1160,10 @@ static MACHINE_CONFIG_DERIVED( boonggab, common ) MCFG_FRAGMENT_ADD(sound_ym_oki) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( yorizori, common ) +static MACHINE_CONFIG_DERIVED( yolijoli, common ) MCFG_CPU_REPLACE("maincpu", E132T, XTAL_50MHz) /* 50 MHz */ - MCFG_CPU_PROGRAM_MAP(yorizori_32bit_map) - MCFG_CPU_IO_MAP(yorizori_io) + MCFG_CPU_PROGRAM_MAP(yolijoli_32bit_map) + MCFG_CPU_IO_MAP(yolijoli_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) MCFG_FRAGMENT_ADD(sound_qs1000) @@ -2001,7 +2001,7 @@ ROM_END /* -Yori Zori Kuk Kuk +Yoli Joli Kug Kug PCB Layout @@ -2073,7 +2073,7 @@ ROMs: */ -ROM_START( yorizori ) +ROM_START( yolijoli ) ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */ ROM_LOAD( "prg1", 0x000000, 0x200000, CRC(0e04eb40) SHA1(0cec9dc91aaf9cf7c459c7baac200cf0fcfddc18) ) @@ -2762,7 +2762,7 @@ DRIVER_INIT_MEMBER(vamphalf_state,wyvernwg) membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); } -DRIVER_INIT_MEMBER(vamphalf_state,yorizori) +DRIVER_INIT_MEMBER(vamphalf_state,yolijoli) { // seesm close to Final Godori in terms of port mappings, possibly a SemiCom game? @@ -2895,4 +2895,4 @@ GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, R GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND ) GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", 0 ) GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", 0 ) -GAME( 199?, yorizori, 0, yorizori, common, vamphalf_state, yorizori, ROT0, "", "Yori Zori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) +GAME( 199?, yolijoli, 0, yolijoli, common, vamphalf_state, yolijoli, ROT0, "Golden Bell Entertainment", "Yoli Joli Kug Kug", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) -- cgit v1.2.3 From ed7e5d28863dec052258f9dfb5e6d45f44616a1f Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 03:24:12 +0100 Subject: bugfix --- src/emu/cpu/amis2000/amis2000.c | 9 +++++---- src/emu/cpu/ucom4/ucom4.c | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/emu/cpu/amis2000/amis2000.c b/src/emu/cpu/amis2000/amis2000.c index ab35f44edc7..7a0ac5abe2b 100644 --- a/src/emu/cpu/amis2000/amis2000.c +++ b/src/emu/cpu/amis2000/amis2000.c @@ -207,8 +207,9 @@ void amis2000_device::device_start() void amis2000_device::device_reset() { m_pc = 0; - m_skip = false; m_op = 0; + m_prev_op = m_op; + m_skip = false; // clear i/o m_d_polarity = 0; @@ -230,9 +231,6 @@ void amis2000_device::execute_run() { m_icount--; - // remember previous opcode - m_prev_op = m_op; - debugger_instruction_hook(this, m_pc); m_op = m_program->read_byte(m_pc); m_pc = (m_pc + 1) & 0x1fff; @@ -316,5 +314,8 @@ void amis2000_device::execute_run() break; // 0xff } // big switch + + // remember previous opcode + m_prev_op = m_op; } } diff --git a/src/emu/cpu/ucom4/ucom4.c b/src/emu/cpu/ucom4/ucom4.c index 4e0475092b7..525b068e5a5 100644 --- a/src/emu/cpu/ucom4/ucom4.c +++ b/src/emu/cpu/ucom4/ucom4.c @@ -190,6 +190,7 @@ void ucom4_cpu_device::device_reset() m_inte_f = 1; m_pc = 0; m_op = 0; + m_prev_op = m_op; m_skip = false; // clear i/o @@ -226,9 +227,6 @@ void ucom4_cpu_device::execute_run() { m_icount--; - // remember previous opcode - m_prev_op = m_op; - debugger_instruction_hook(this, m_pc); m_op = m_program->read_byte(m_pc); m_bitmask = 1 << (m_op & 0x03); @@ -339,5 +337,8 @@ void ucom4_cpu_device::execute_run() break; // 0xff } // big switch + + // remember previous opcode + m_prev_op = m_op; } } -- cgit v1.2.3 From 04d0416887dc8bd8272f442ba90b9c6625bd66b5 Mon Sep 17 00:00:00 2001 From: Stiletto Date: Mon, 9 Feb 2015 22:48:15 -0500 Subject: Add another undumped game. (nw) Add another undumped game. (nw) --- src/mame/drivers/circus.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c index d745aeb7dbb..0cdf76d4b36 100644 --- a/src/mame/drivers/circus.c +++ b/src/mame/drivers/circus.c @@ -6,10 +6,11 @@ name year CPU board/rom numbers Robot Bowl 1977 6502 4020-4027, 4010-4013 Circus 1977 6502 9000-9003, 9004-9011 -Football Aug,1978 6502 unknown -Rip Cord May,1979 6502 RC30-0014 (cpu) 0015 (snd) +Trapeze Jun 1978 6502 unknown +Football Aug 1978 6502 unknown +Rip Cord May 1979 6502 RC30-0014 (cpu) 0015 (snd) 9023-9026, 9027-9034, 9035 -Crash July,1979 6502 CR30-3162 (cpu) 3161 (snd) 9036 (?) +Crash July 1979 6502 CR30-3162 (cpu) 3161 (snd) 9036 (?) *************************************************************************** -- cgit v1.2.3 From 733da4f63f9bbd634a9bcb9c7d956fba475871b7 Mon Sep 17 00:00:00 2001 From: Guru Date: Tue, 10 Feb 2015 17:53:42 +0800 Subject: nwk-tr.c: document the network board (nw) --- src/mame/drivers/nwk-tr.c | 53 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c index 633e02974df..b5562105c85 100644 --- a/src/mame/drivers/nwk-tr.c +++ b/src/mame/drivers/nwk-tr.c @@ -48,9 +48,12 @@ DIPSW are present on the main board (instead of on the filter board) and the SOIC8 chip (a secured PIC?) is not populated (the solder pads are there though). There's an extra sound IC AN7395S (it's not populated on Hornet). The PALs/PLDs are the same on NWK-TR and Hornet. +Both Racing JAM/Chapter 2 and Thrill Drive use two video boards. +The top video board is set to MASTER/TWIN, lower video board is set to SLAVE +They are otherwise identical. -Top Board +Top Board (CPU PCB) GN676 PWB(A)B Konami 1997 |--------------------------------------------------------------| @@ -88,7 +91,7 @@ Notes: DRM1M4SJ8 - Fujitsu 81C4256 256kx4 DRAM (SOJ24) SRAM256K - Cypress CY7C199 32kx8 SRAM (SOJ28) DRAM16X16 - Fujitsu 8118160A-60 16megx16 DRAM (SOJ42) - M48T58Y-70PC1 - ST Timekeeper RAM + M48T58Y-70PC1 - ST Timekeeper RAM RF5C400 - Ricoh RF5C400 PCM 32Ch, 44.1 kHz Stereo, 3D Effect Spatializer, clock input 16.9344MHz 056800 - Konami Custom (QFP80) 058232 - Konami Custom Ceramic Package (SIL14) @@ -127,14 +130,14 @@ Notes: CN6 - DIN96 joining connector to lower PCB CN7 - Multi-pin connector (pads only, not used) CN9 to CN13 - Power Connectors - CN14 to CN17 - RCA Stereo Audio OUT + CN14 to CN17 - RCA Stereo Audio OUT CN18 - RCA Mono Audio OUT CN19 - USB Connector ROM Usage --------- - |------------------------------- ROM Locations -------------------------------------| + |------------------------------- ROM Locations -------------------------------------| Game 27P 25P 22P 16P 14P 12P 9P 16T 14T 12T 9T 7S -------------------------------------------------------------------------------------------------- Racing Jam 676NC01 - - 676A09 676A10 - - 676A04 676A05 - - 676A08 @@ -142,7 +145,37 @@ Racing Jam 2 888A01 - - 888A09 888A10 - - 676A04 676A05 Thrill Drive 713BE01 - - 713A09 713A10 - - 713A04 713A05 - - 713A08 -Bottom Board +Network PCB +----------- +GN676-PWB(H)B +MADE IN JAPAN +(C)1998 KONAMI +sticker - GC713AC +|------------------------| +| CY7C199 N676H1 | +| 2G| +|CN3 | +| HYC2485S | +| XC5204 XC5210 | +|CN2 | +| CN1 | +|------------------------| +Notes: + CN1 - Connector joining to CPU board CN4 + CN2/3 - RCA jacks for network cable + 2G - Small SOIC8 chip with number 0038323 at location 2G. An identical chip is present on + *some* Hornet games on the GN715 CPU board at location 30C. It may be a PIC or EEPROM. + On Hornet, the chip seems to refresh the data in the Timekeeper RAM when the battery + dies and keeps the game working. It's purpose on the network board is unknown but it may + 'upgrade' the data in the NVRAM to the network version of the game for a twin cabinet set-up. + HYC2485S - Hybrid ceramic module for RS485 + CY7C199 - 32k x8 SRAM + XC5204 - Xilinx XC5204 FPGA + XC5210 - Xilink XC5210 FPGA + N676H1 - PALCE16V8Q-15 stamped 'N676H1' + + +Bottom Board (VIDEO PCB) GN676 PWB(B)B |-------------------------------------------------------------------------------------------| |CN4 CN2 CN8 CN6 CN5| @@ -182,16 +215,16 @@ Notes: TEXELFX - 3DFX 500-0004-02 BD0665.1 TMU (QFP208) PIXELFX - 3DFX 500-0003-03 F001701.1 FBI (QFP240) 001604 - Konami Custom (QFP208) - MC44200FT - Motorola MC44200FT 3 Channel Video D/A Converter (QFP44) + MC44200FT - Motorola MC44200FT 3 Channel Video D/A Converter (QFP44) MACH111 - AMD MACH111 CPLD (Stamped '03161A', PLCC44) -PLCC44_SOCKET- empty PLCC44 socket + PLCC44_SOCKET - empty PLCC44 socket AV9170 - Integrated Circuit Systems Inc. Clock Multiplier (SOIC8) AM7201 - AMD AM7201 FIFO (PLCC32) PAL1 - AMD PALCE16V8 (stamped 'N676B4', DIP20) PAL2 - AMD PALCE16V8 (stamped 'N676B5', DIP20) PAL3 - AMD PALCE16V8 (stamped 'N676B2', DIP20) - JP1 - SLV O O-O MST,TWN - JP2 - SLV O O-O MST + JP1 - SLV O O-O MST,TWN (sets board to MASTER TWIN or SLAVE) + JP2 - SLV O O-O MST (sets board to MASTER or SLAVE) CN1 - 96 Pin joining connector to upper PCB CN2 - 8-Pin 24kHz RGB OUT CN3 - 15-Pin DSUB VGA Video MAIN OUT @@ -203,7 +236,7 @@ PLCC44_SOCKET- empty PLCC44 socket ROM Usage --------- - |------ ROM Locations -------| + |------ ROM Locations -------| Game 8X 8Y 16X 16Y ------------------------------------------- Racing Jam 676A13 - 676A14 - -- cgit v1.2.3 From 5e03d1b427f19e4764bf0f873ebe48a5eb9c36de Mon Sep 17 00:00:00 2001 From: Robbbert Date: Tue, 10 Feb 2015 21:40:58 +1100 Subject: Fixed build (nw) --- src/mame/mame.lst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9388cbe6d29..9dd4eea15f1 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10430,7 +10430,7 @@ toyland // (c) 2001 Semicom misncrft // (c) 2000 Sun misncrfta // (c) 2000 Sun mrdig // (c) 2000 Sun -yorizori // (c) +yolijoli // (c) hidnctch // (c) 1998 Eolith linkypip // (c) 1998 Eolith -- cgit v1.2.3 From 8545cb2b4003349d4b5eb0b4149c70ecab75af20 Mon Sep 17 00:00:00 2001 From: Justin Kerk Date: Tue, 10 Feb 2015 07:27:31 -0800 Subject: Actually let's not (nw) --- src/mame/drivers/vamphalf.c | 42 +++++++++++++++++++++--------------------- src/mame/mame.lst | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c index d8f61673686..82096789b43 100644 --- a/src/mame/drivers/vamphalf.c +++ b/src/mame/drivers/vamphalf.c @@ -163,9 +163,9 @@ public: DECLARE_WRITE32_MEMBER(wyvernwg_snd_w); DECLARE_WRITE16_MEMBER(misncrft_snd_w); - DECLARE_READ32_MEMBER(yolijoli_1c_r); - DECLARE_WRITE32_MEMBER(yolijoli_1c_w); - DECLARE_READ32_MEMBER(yolijoli_10_r); + DECLARE_READ32_MEMBER(yorijori_1c_r); + DECLARE_WRITE32_MEMBER(yorijori_1c_w); + DECLARE_READ32_MEMBER(yorijori_10_r); DECLARE_READ8_MEMBER(qs1000_p1_r); DECLARE_WRITE8_MEMBER(qs1000_p3_w); @@ -187,7 +187,7 @@ public: DECLARE_DRIVER_INIT(misncrft); DECLARE_DRIVER_INIT(boonggab); DECLARE_DRIVER_INIT(wyvernwg); - DECLARE_DRIVER_INIT(yolijoli); + DECLARE_DRIVER_INIT(yorijori); UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap); @@ -377,19 +377,19 @@ WRITE16_MEMBER(vamphalf_state::boonggab_lamps_w) } } -READ32_MEMBER(vamphalf_state::yolijoli_10_r) +READ32_MEMBER(vamphalf_state::yorijori_10_r) { - printf("yolijoli_10_r %08x\n", space.device().safe_pc()); + printf("yorijori_10_r %08x\n", space.device().safe_pc()); return 0xffffffff; } -READ32_MEMBER(vamphalf_state::yolijoli_1c_r) +READ32_MEMBER(vamphalf_state::yorijori_1c_r) { -// printf("yolijoli_1c_r %08x\n", space.device().safe_pc()); +// printf("yorijori_1c_r %08x\n", space.device().safe_pc()); return 0x00;// 0xaa; } -WRITE32_MEMBER(vamphalf_state::yolijoli_1c_w) +WRITE32_MEMBER(vamphalf_state::yorijori_1c_w) { -// printf("yolijoli_1c_w %08x %08x\n", space.device().safe_pc(), data); +// printf("yorijori_1c_w %08x %08x\n", space.device().safe_pc(), data); } WRITE32_MEMBER( vamphalf_state::wyvernwg_snd_w ) @@ -434,7 +434,7 @@ static ADDRESS_MAP_START( common_32bit_map, AS_PROGRAM, 32, vamphalf_state ) AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) ADDRESS_MAP_END -static ADDRESS_MAP_START( yolijoli_32bit_map, AS_PROGRAM, 32, vamphalf_state ) +static ADDRESS_MAP_START( yorijori_32bit_map, AS_PROGRAM, 32, vamphalf_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32") AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") @@ -584,9 +584,9 @@ static ADDRESS_MAP_START( boonggab_io, AS_IO, 16, vamphalf_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( yolijoli_io, AS_IO, 32, vamphalf_state ) - AM_RANGE(0x010, 0x013) AM_READ(yolijoli_10_r) - AM_RANGE(0x01c, 0x01f) AM_READWRITE(yolijoli_1c_r,yolijoli_1c_w) +static ADDRESS_MAP_START( yorijori_io, AS_IO, 32, vamphalf_state ) + AM_RANGE(0x010, 0x013) AM_READ(yorijori_10_r) + AM_RANGE(0x01c, 0x01f) AM_READWRITE(yorijori_1c_r,yorijori_1c_w) ADDRESS_MAP_END /* @@ -1160,10 +1160,10 @@ static MACHINE_CONFIG_DERIVED( boonggab, common ) MCFG_FRAGMENT_ADD(sound_ym_oki) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( yolijoli, common ) +static MACHINE_CONFIG_DERIVED( yorijori, common ) MCFG_CPU_REPLACE("maincpu", E132T, XTAL_50MHz) /* 50 MHz */ - MCFG_CPU_PROGRAM_MAP(yolijoli_32bit_map) - MCFG_CPU_IO_MAP(yolijoli_io) + MCFG_CPU_PROGRAM_MAP(yorijori_32bit_map) + MCFG_CPU_IO_MAP(yorijori_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) MCFG_FRAGMENT_ADD(sound_qs1000) @@ -2001,7 +2001,7 @@ ROM_END /* -Yoli Joli Kug Kug +Yori Jori Kuk Kuk PCB Layout @@ -2073,7 +2073,7 @@ ROMs: */ -ROM_START( yolijoli ) +ROM_START( yorijori ) ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */ ROM_LOAD( "prg1", 0x000000, 0x200000, CRC(0e04eb40) SHA1(0cec9dc91aaf9cf7c459c7baac200cf0fcfddc18) ) @@ -2762,7 +2762,7 @@ DRIVER_INIT_MEMBER(vamphalf_state,wyvernwg) membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); } -DRIVER_INIT_MEMBER(vamphalf_state,yolijoli) +DRIVER_INIT_MEMBER(vamphalf_state,yorijori) { // seesm close to Final Godori in terms of port mappings, possibly a SemiCom game? @@ -2895,4 +2895,4 @@ GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, R GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND ) GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", 0 ) GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", 0 ) -GAME( 199?, yolijoli, 0, yolijoli, common, vamphalf_state, yolijoli, ROT0, "Golden Bell Entertainment", "Yoli Joli Kug Kug", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) +GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9dd4eea15f1..15903c0b512 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10430,7 +10430,7 @@ toyland // (c) 2001 Semicom misncrft // (c) 2000 Sun misncrfta // (c) 2000 Sun mrdig // (c) 2000 Sun -yolijoli // (c) +yorijori // (c) hidnctch // (c) 1998 Eolith linkypip // (c) 1998 Eolith -- cgit v1.2.3 From 18d3086febb0825d88cc3f60d55ce7bed1807519 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 10 Feb 2015 17:20:31 +0100 Subject: tait8741.c: added save state support (nw) cyclemb.c: added save state support (nw) --- src/mame/drivers/cyclemb.c | 36 ++++++++++++++++++++++++------------ src/mame/machine/tait8741.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 12 deletions(-) diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c index b0be3e5bc4d..ee0d4187f02 100644 --- a/src/mame/drivers/cyclemb.c +++ b/src/mame/drivers/cyclemb.c @@ -84,24 +84,25 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_vram(*this, "vram"), m_cram(*this, "cram"), m_obj1_ram(*this, "obj1_ram"), m_obj2_ram(*this, "obj2_ram"), - m_obj3_ram(*this, "obj3_ram"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + m_obj3_ram(*this, "obj3_ram") { } required_device m_maincpu; required_device m_audiocpu; + required_device m_gfxdecode; + required_device m_palette; + required_shared_ptr m_vram; required_shared_ptr m_cram; required_shared_ptr m_obj1_ram; required_shared_ptr m_obj2_ram; required_shared_ptr m_obj3_ram; - required_device m_gfxdecode; - required_device m_palette; struct { @@ -120,11 +121,13 @@ public: DECLARE_WRITE8_MEMBER(cyclemb_flip_w); DECLARE_READ8_MEMBER(skydest_i8741_0_r); DECLARE_WRITE8_MEMBER(skydest_i8741_0_w); + DECLARE_DRIVER_INIT(skydest); DECLARE_DRIVER_INIT(cyclemb); + virtual void machine_start(); virtual void machine_reset(); - virtual void video_start(); DECLARE_PALETTE_INIT(cyclemb); + UINT32 screen_update_cyclemb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_skydest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -164,10 +167,6 @@ PALETTE_INIT_MEMBER(cyclemb_state, cyclemb) } -void cyclemb_state::video_start() -{ -} - void cyclemb_state::cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { gfx_element *gfx = m_gfxdecode->gfx(0); @@ -593,6 +592,19 @@ static ADDRESS_MAP_START( cyclemb_sound_io, AS_IO, 8, cyclemb_state ) AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r) AM_WRITE(soundlatch2_byte_w) ADDRESS_MAP_END + +void cyclemb_state::machine_start() +{ + for (int i = 0; i < 2; i++) + { + save_item(NAME(m_mcu[i].rxd), i); + save_item(NAME(m_mcu[i].txd), i); + save_item(NAME(m_mcu[i].rst), i); + save_item(NAME(m_mcu[i].state), i); + save_item(NAME(m_mcu[i].packet_type), i); + } +} + void cyclemb_state::machine_reset() { skydest_i8741_reset(); @@ -1030,5 +1042,5 @@ DRIVER_INIT_MEMBER(cyclemb_state,skydest) m_dsw_pc_hack = 0x554; } -GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND ) -GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND ) +GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/machine/tait8741.c b/src/mame/machine/tait8741.c index 83b107acef5..297919317d7 100644 --- a/src/mame/machine/tait8741.c +++ b/src/mame/machine/tait8741.c @@ -250,6 +250,22 @@ void taito8741_4pack_device::device_start() m_port_handler_1_r.resolve_safe(0); m_port_handler_2_r.resolve_safe(0); m_port_handler_3_r.resolve_safe(0); + + for (int i = 0; i < 4; i++) + { + save_item(NAME(m_taito8741[i].toData), i); + save_item(NAME(m_taito8741[i].fromData), i); + save_item(NAME(m_taito8741[i].fromCmd), i); + save_item(NAME(m_taito8741[i].status), i); + save_item(NAME(m_taito8741[i].phase), i); + save_item(NAME(m_taito8741[i].txd), i); + save_item(NAME(m_taito8741[i].rxd), i); + save_item(NAME(m_taito8741[i].parallelselect), i); + save_item(NAME(m_taito8741[i].txpoint), i); + //save_item(NAME(m_taito8741[i].pending4a), i); //currently initialized to 0, never changes + save_item(NAME(m_taito8741[i].serial_out), i); + //save_item(NAME(m_taito8741[i].coins), i); // currently initialized but otherwise unused + }; } /* read status port */ @@ -344,6 +360,18 @@ void josvolly8741_4pack_device::device_start() m_port_handler_1_r.resolve_safe(0); m_port_handler_2_r.resolve_safe(0); m_port_handler_3_r.resolve_safe(0); + + for (int i = 0; i < 4; i++) + { + save_item(NAME(m_i8741[i].cmd), i); + save_item(NAME(m_i8741[i].sts), i); + save_item(NAME(m_i8741[i].txd), i); + //save_item(NAME(m_i8741[i].outport), i); //currently initialized to 0xff, never changed + save_item(NAME(m_i8741[i].rxd), i); + save_item(NAME(m_i8741[i].rst), i); + }; + + //save_item(NAME(m_nmi_enable)); //never changes from 0? } -- cgit v1.2.3 From 99516900ae378a262b02d8ea217e088fc0c20bfe Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 19:05:49 +0100 Subject: different implementation of prev bugfix --- src/emu/cpu/amis2000/amis2000.c | 9 ++++----- src/emu/cpu/ucom4/ucom4.c | 13 ++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/emu/cpu/amis2000/amis2000.c b/src/emu/cpu/amis2000/amis2000.c index 7a0ac5abe2b..0b0feef7110 100644 --- a/src/emu/cpu/amis2000/amis2000.c +++ b/src/emu/cpu/amis2000/amis2000.c @@ -208,7 +208,6 @@ void amis2000_device::device_reset() { m_pc = 0; m_op = 0; - m_prev_op = m_op; m_skip = false; // clear i/o @@ -231,6 +230,9 @@ void amis2000_device::execute_run() { m_icount--; + // remember previous opcode + m_prev_op = m_op; + debugger_instruction_hook(this, m_pc); m_op = m_program->read_byte(m_pc); m_pc = (m_pc + 1) & 0x1fff; @@ -239,7 +241,7 @@ void amis2000_device::execute_run() { // always skip over PP prefix m_skip = ((m_op & 0xf0) == 0x60); - continue; + m_op = 0; // nop } switch (m_op & 0xf0) @@ -314,8 +316,5 @@ void amis2000_device::execute_run() break; // 0xff } // big switch - - // remember previous opcode - m_prev_op = m_op; } } diff --git a/src/emu/cpu/ucom4/ucom4.c b/src/emu/cpu/ucom4/ucom4.c index 525b068e5a5..8c30de7de3f 100644 --- a/src/emu/cpu/ucom4/ucom4.c +++ b/src/emu/cpu/ucom4/ucom4.c @@ -190,7 +190,6 @@ void ucom4_cpu_device::device_reset() m_inte_f = 1; m_pc = 0; m_op = 0; - m_prev_op = m_op; m_skip = false; // clear i/o @@ -204,13 +203,13 @@ void ucom4_cpu_device::device_reset() // execute //------------------------------------------------- -void ucom4_cpu_device::increment_pc() +inline void ucom4_cpu_device::increment_pc() { // upper bits (field register) don't auto-increment m_pc = (m_pc & ~0xff) | ((m_pc + 1) & 0xff); } -void ucom4_cpu_device::fetch_arg() +inline void ucom4_cpu_device::fetch_arg() { // 2-byte opcodes: STM/LDI/CLI/CI, JMP/CAL, OCD if ((m_op & 0xfc) == 0x14 || (m_op & 0xf0) == 0xa0 || m_op == 0x1e) @@ -227,6 +226,9 @@ void ucom4_cpu_device::execute_run() { m_icount--; + // remember previous opcode + m_prev_op = m_op; + debugger_instruction_hook(this, m_pc); m_op = m_program->read_byte(m_pc); m_bitmask = 1 << (m_op & 0x03); @@ -236,7 +238,7 @@ void ucom4_cpu_device::execute_run() if (m_skip) { m_skip = false; - continue; + m_op = 0; // nop } switch (m_op & 0xf0) @@ -337,8 +339,5 @@ void ucom4_cpu_device::execute_run() break; // 0xff } // big switch - - // remember previous opcode - m_prev_op = m_op; } } -- cgit v1.2.3 From 1a52f39e3df8bed3e5ef95b9f24d3fb7fffd44d0 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 19:16:56 +0100 Subject: ucom4/amis2000 added clockdivider --- src/emu/cpu/amis2000/amis2000.h | 2 ++ src/emu/cpu/ucom4/ucom4.h | 2 ++ src/mess/drivers/wildfire.c | 10 +++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/emu/cpu/amis2000/amis2000.h b/src/emu/cpu/amis2000/amis2000.h index 4e0c9ff521c..e55248e809e 100644 --- a/src/emu/cpu/amis2000/amis2000.h +++ b/src/emu/cpu/amis2000/amis2000.h @@ -51,6 +51,8 @@ protected: virtual void device_reset(); // device_execute_interface overrides + virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 4 - 1) / 4; } // 4 cycles per machine cycle + virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 4); } // " virtual UINT32 execute_min_cycles() const { return 1; } virtual UINT32 execute_max_cycles() const { return 2; } virtual UINT32 execute_input_lines() const { return 1; } diff --git a/src/emu/cpu/ucom4/ucom4.h b/src/emu/cpu/ucom4/ucom4.h index f4d8c482c50..92b73e1e270 100644 --- a/src/emu/cpu/ucom4/ucom4.h +++ b/src/emu/cpu/ucom4/ucom4.h @@ -105,6 +105,8 @@ protected: virtual void device_reset(); // device_execute_interface overrides + virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 4 - 1) / 4; } // 4 cycles per machine cycle + virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 4); } // " virtual UINT32 execute_min_cycles() const { return 1; } virtual UINT32 execute_max_cycles() const { return 2; } virtual UINT32 execute_input_lines() const { return 1; } diff --git a/src/mess/drivers/wildfire.c b/src/mess/drivers/wildfire.c index f2c8f518951..fa74136c4a8 100644 --- a/src/mess/drivers/wildfire.c +++ b/src/mess/drivers/wildfire.c @@ -5,6 +5,14 @@ Parker Brothers Wildfire, by Bob and Holly Doyle (prototype), and Garry Kitchen * AMI S2150, labeled C10641 + x + + + TODO: + - no sound + - flipper buttons aren't working correctly + - some 7segs digits are wrong (mcu on-die decoder is customizable?) + - MCU clock is unknown ***************************************************************************/ @@ -16,7 +24,7 @@ // master clock is a single stage RC oscillator: R=?K, C=?pf, // S2150 default frequency is 850kHz -#define MASTER_CLOCK (850000/4) +#define MASTER_CLOCK (850000) class wildfire_state : public driver_device -- cgit v1.2.3 From eab6156360035ff3b50a2ab35904f60de447fb87 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 19:46:47 +0100 Subject: added straightforward ucom43 opcodes --- src/emu/cpu/ucom4/ucom4op.inc | 66 ++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/src/emu/cpu/ucom4/ucom4op.inc b/src/emu/cpu/ucom4/ucom4op.inc index 864e73fd862..ed989b427b0 100644 --- a/src/emu/cpu/ucom4/ucom4op.inc +++ b/src/emu/cpu/ucom4/ucom4op.inc @@ -516,7 +516,8 @@ void ucom4_cpu_device::op_taw() if (!check_op_43()) return; // TAW: Transfer ACC to W - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_W, m_acc); } void ucom4_cpu_device::op_taz() @@ -524,7 +525,8 @@ void ucom4_cpu_device::op_taz() if (!check_op_43()) return; // TAZ: Transfer ACC to Z - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_Z, m_acc); } void ucom4_cpu_device::op_thx() @@ -532,7 +534,8 @@ void ucom4_cpu_device::op_thx() if (!check_op_43()) return; // THX: Transfer DPh to X - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_X, m_dph); } void ucom4_cpu_device::op_tly() @@ -540,7 +543,8 @@ void ucom4_cpu_device::op_tly() if (!check_op_43()) return; // TLY: Transfer DPl to Y - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_Y, m_dpl); } @@ -551,7 +555,10 @@ void ucom4_cpu_device::op_xaw() if (!check_op_43()) return; // XAW: Exchange ACC with W - op_illegal(); + m_icount--; + UINT8 old_acc = m_acc; + m_acc = ucom43_reg_r(UCOM43_W); + ucom43_reg_w(UCOM43_W, old_acc); } void ucom4_cpu_device::op_xaz() @@ -559,7 +566,10 @@ void ucom4_cpu_device::op_xaz() if (!check_op_43()) return; // XAZ: Exchange ACC with Z - op_illegal(); + m_icount--; + UINT8 old_acc = m_acc; + m_acc = ucom43_reg_r(UCOM43_Z); + ucom43_reg_w(UCOM43_Z, old_acc); } void ucom4_cpu_device::op_xhr() @@ -567,7 +577,10 @@ void ucom4_cpu_device::op_xhr() if (!check_op_43()) return; // XHR: Exchange DPh with R - op_illegal(); + m_icount--; + UINT8 old_dph = m_dph; + m_dph = ucom43_reg_r(UCOM43_R); + ucom43_reg_w(UCOM43_R, old_dph); } void ucom4_cpu_device::op_xhx() @@ -575,7 +588,10 @@ void ucom4_cpu_device::op_xhx() if (!check_op_43()) return; // XHX: Exchange DPh with X - op_illegal(); + m_icount--; + UINT8 old_dph = m_dph; + m_dph = ucom43_reg_r(UCOM43_X); + ucom43_reg_w(UCOM43_X, old_dph); } void ucom4_cpu_device::op_xls() @@ -583,7 +599,10 @@ void ucom4_cpu_device::op_xls() if (!check_op_43()) return; // XLS: Exchange DPl with S - op_illegal(); + m_icount--; + UINT8 old_dpl = m_dpl; + m_dpl = ucom43_reg_r(UCOM43_S); + ucom43_reg_w(UCOM43_S, old_dpl); } void ucom4_cpu_device::op_xly() @@ -591,7 +610,10 @@ void ucom4_cpu_device::op_xly() if (!check_op_43()) return; // XLY: Exchange DPl with Y - op_illegal(); + m_icount--; + UINT8 old_dpl = m_dpl; + m_dpl = ucom43_reg_r(UCOM43_Y); + ucom43_reg_w(UCOM43_Y, old_dpl); } void ucom4_cpu_device::op_xc() @@ -599,7 +621,9 @@ void ucom4_cpu_device::op_xc() if (!check_op_43()) return; // XC: Exchange Carry F/F with Carry Save F/F - op_illegal(); + UINT8 c = m_carry_f; + m_carry_f = m_carry_s_f; + m_carry_s_f = c; } @@ -610,7 +634,8 @@ void ucom4_cpu_device::op_sfb() if (!check_op_43()) return; // SFB B: Set a single bit of FLAG - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_F, ucom43_reg_r(UCOM43_F) | m_bitmask); } void ucom4_cpu_device::op_rfb() @@ -618,7 +643,8 @@ void ucom4_cpu_device::op_rfb() if (!check_op_43()) return; // RFB B: Reset a single bit of FLAG - op_illegal(); + m_icount--; + ucom43_reg_w(UCOM43_F, ucom43_reg_r(UCOM43_F) & ~m_bitmask); } void ucom4_cpu_device::op_fbt() @@ -626,7 +652,8 @@ void ucom4_cpu_device::op_fbt() if (!check_op_43()) return; // FBT B: skip next on bit(FLAG) - op_illegal(); + m_icount--; + m_skip = ((ucom43_reg_r(UCOM43_F) & m_bitmask) != 0); } void ucom4_cpu_device::op_fbf() @@ -634,7 +661,8 @@ void ucom4_cpu_device::op_fbf() if (!check_op_43()) return; // FBF B: skip next on not bit(FLAG) - op_illegal(); + m_icount--; + m_skip = ((ucom43_reg_r(UCOM43_F) & m_bitmask) == 0); } @@ -656,7 +684,9 @@ void ucom4_cpu_device::op_inm() if (!check_op_43()) return; // INM: Increment RAM, skip next on carry - op_illegal(); + UINT8 val = (ram_r() + 1) & 0xf; + ram_w(val); + m_skip = (val == 0); } void ucom4_cpu_device::op_dem() @@ -664,7 +694,9 @@ void ucom4_cpu_device::op_dem() if (!check_op_43()) return; // DEM: Decrement RAM, skip next on carry - op_illegal(); + UINT8 val = (ram_r() - 1) & 0xf; + ram_w(val); + m_skip = (val == 0xf); } -- cgit v1.2.3 From dcf589f3042f8ab40868b2559ea6cbe0875a150b Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 19:56:10 +0100 Subject: added ADC, ADS, RAR --- src/emu/cpu/ucom4/ucom4op.inc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emu/cpu/ucom4/ucom4op.inc b/src/emu/cpu/ucom4/ucom4op.inc index ed989b427b0..05abd2f4a49 100644 --- a/src/emu/cpu/ucom4/ucom4op.inc +++ b/src/emu/cpu/ucom4/ucom4op.inc @@ -180,13 +180,16 @@ void ucom4_cpu_device::op_ad() void ucom4_cpu_device::op_adc() { // ADC: Add RAM and carry to ACC, store Carry F/F - op_illegal(); + m_acc += ram_r() + m_carry_f; + m_carry_f = m_acc >> 4 & 1; + m_acc &= 0xf; } void ucom4_cpu_device::op_ads() { // ADS: Add RAM and carry to ACC, store Carry F/F, skip next on carry - op_illegal(); + op_adc(); + m_skip = (m_carry_f != 0); } void ucom4_cpu_device::op_daa() @@ -673,7 +676,9 @@ void ucom4_cpu_device::op_rar() if (!check_op_43()) return; // RAR: Rotate ACC Right through Carry F/F - op_illegal(); + UINT8 c = m_acc & 1; + m_acc = m_acc >> 1 | m_carry_f << 3; + m_carry_f = c; } -- cgit v1.2.3 From 0be19aa42c81a161aa9e73cf4f859794a6dda421 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 10 Feb 2015 22:31:56 +0100 Subject: added the green color overlay --- src/mame/layout/superbug.lay | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mame/layout/superbug.lay b/src/mame/layout/superbug.lay index 360cfdd048a..80dd0549bad 100644 --- a/src/mame/layout/superbug.lay +++ b/src/mame/layout/superbug.lay @@ -3,18 +3,19 @@ - - - - - + + + - - - + + + + + + -- cgit v1.2.3 From e29a3aee4020163bff95ab4a556b6f874944ffc8 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 11 Feb 2015 14:43:12 +1100 Subject: (MESS) Kaypro 10 only has 1 floppy drive (nw) --- src/mess/drivers/kaypro.c | 22 ++++++++++++++++++++-- src/mess/includes/kaypro.h | 2 +- src/mess/machine/kaypro.c | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/mess/drivers/kaypro.c b/src/mess/drivers/kaypro.c index 33ecd30f948..f334fb512b9 100644 --- a/src/mess/drivers/kaypro.c +++ b/src/mess/drivers/kaypro.c @@ -9,13 +9,26 @@ telephone cord, complete with modular plug on each end. The keyboard carries its own Intel 87C51 processor and is an intelligent device. + Kaypro 10 notes: + - This machine comes with a 10MB hard drive, split into 2 5MB partitions. It also + has one floppy drive. The drive letters change depending on what drive it was booted + from. The boot drive is always A:. + If booted from floppy: + A: floppy + B: HD partition 1 + C: HD partition 2 + If booted from HD (presumably partition 1) + A: HD partition 1 + B: HD partition 2 + C: floppy + ToDo: - See about getting keyboard to work as a serial device. - Need dump of 87C51 cpu in the keyboard. - Kaypro 2x, 4a: floppy not working "No operating system present on this disk" - - Kaypro 10: Boots from floppy, but B drive not working "Bdos Err on B: Bad Sector" + - Kaypro 10: Boots from floppy, but needs hard drive added. - Kaypro 4p88: works as a normal Kaypro 4, extra hardware not done - Kaypro Robie: has twin 2.6MB 5.25 floppy drives which we don't support, no software available @@ -299,6 +312,11 @@ static MACHINE_CONFIG_START( kaypro2x, kaypro_state ) MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "drive1", kaypro_state::kaypro2x_floppy_formats) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( kaypro10, kaypro2x ) + MCFG_DEVICE_REMOVE("fdc:1") // only has 1 floppy drive + // need to add hard drive & controller +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( omni2, kaypro4 ) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_omni2) @@ -435,5 +453,5 @@ COMP( 198?, omni2, kayproii, 0, omni2, kay_kbd, kaypro_state, kaypro, COMP( 1984, kaypro2x, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 2x" , GAME_NOT_WORKING ) // model 81-025 COMP( 1984, kaypro4a, kaypro2x, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/84" , GAME_NOT_WORKING ) // model 81-015 // Kaypro 4/84 plus 88 goes here, model 81-015 with an added 8088 daughterboard and rom -COMP( 1983, kaypro10, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , GAME_NOT_WORKING ) // model 81-005 +COMP( 1983, kaypro10, 0, 0, kaypro10, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , GAME_NOT_WORKING ) // model 81-005 COMP( 1984, robie, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro Robie" , GAME_NOT_WORKING ) // model 81-005 diff --git a/src/mess/includes/kaypro.h b/src/mess/includes/kaypro.h index f2220650df8..0409ec782ed 100644 --- a/src/mess/includes/kaypro.h +++ b/src/mess/includes/kaypro.h @@ -96,7 +96,7 @@ private: required_device m_centronics; required_device m_fdc; required_device m_floppy0; - required_device m_floppy1; + optional_device m_floppy1; optional_device m_crtc; required_device m_beep; }; diff --git a/src/mess/machine/kaypro.c b/src/mess/machine/kaypro.c index e0672fda37c..778757b7860 100644 --- a/src/mess/machine/kaypro.c +++ b/src/mess/machine/kaypro.c @@ -110,7 +110,7 @@ WRITE8_MEMBER( kaypro_state::kaypro2x_system_port_w ) if (!BIT(data, 0)) m_floppy = m_floppy0->get_device(); else - if (!BIT(data, 1)) + if (m_floppy1 && (!BIT(data, 1))) m_floppy = m_floppy1->get_device(); m_fdc->set_floppy(m_floppy); -- cgit v1.2.3 From 034c980daf05c189b4df59529c53385ffb9cf5da Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 11 Feb 2015 15:19:14 +1100 Subject: (MESS) replaced mbee64 with mbee128p. Added various notes. (nw) --- src/mess/drivers/mbee.c | 83 +++++++++++++++++++--------------------- src/mess/includes/mbee.h | 26 ++----------- src/mess/machine/mbee.c | 98 ++++++++++++++++-------------------------------- src/mess/mess.lst | 4 +- src/mess/video/mbee.c | 4 +- 5 files changed, 79 insertions(+), 136 deletions(-) diff --git a/src/mess/drivers/mbee.c b/src/mess/drivers/mbee.c index 30ccd43fded..bb77aca048a 100644 --- a/src/mess/drivers/mbee.c +++ b/src/mess/drivers/mbee.c @@ -55,11 +55,21 @@ F000-F7FF Video RAM F800-FFFF PCG RAM (graphics), Colour RAM (banked) + Early machines have 'standard' video (128 hires characters). + Later machines had the option of 'premium' video which + provides thousands of hires characters, enough to simulate + bit-mapped graphics. + Commands to call up built-in roms (depends on the model): NET - Jump to E000, usually the Telcom communications program. This rom can be replaced with the Dreamdisk Chip-8 rom. Note that Telcom 3.21 is 8k, it uses a rombank switch (by reading port 0A) to swap between the two halves. + Most parts of NET can be called up from Basic, e.g. + NET CLOCK will turn on the clock, NET CLOCKD will remove + the resultant status bar, NET TIME hhmm to set the time, etc. + Further, after doing a NET command, the 80x24 mode becomes + available to Basic. OUT#7 to turn it on, OUT#0 for 64x16. EDASM - Jump to C000, usually the editor/Assembler package. @@ -100,10 +110,16 @@ crashes due to a bug in z80pio emulation. - 256tc: Keyboard ROM U60 needs to be dumped. - - 128k: PROM PAL needs to be dumped for the bankswitching. + - 128k: GOLD PAL needs to be dumped for the bankswitching. + - 64k: RED PAL needs to be dumped for the bankswitching. - - Teleterm: keyboard is problematic, and cursor doesn't show. + - Teleterm: keyboard is problematic, and cursor doesn't show. Also, the + schematic shows it using the old-style keyboard, however this + must be wrong since the computer has function keys, which are + only available on the new keyboard. + - Mouse: a few programs support the use of a serial mouse which interfaced + directly to the Z80PIO. However there's little info to be found. *************************************************************************** @@ -190,14 +206,6 @@ static ADDRESS_MAP_START(mbee56_mem, AS_PROGRAM, 8, mbee_state) AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w) ADDRESS_MAP_END -static ADDRESS_MAP_START(mbee64_mem, AS_PROGRAM, 8, mbee_state) - AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") - AM_RANGE(0x1000, 0x7fff) AM_RAMBANK("bankl") - AM_RANGE(0x8000, 0xefff) AM_RAMBANK("bankh") - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w) - AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w) -ADDRESS_MAP_END - static ADDRESS_MAP_START(mbee256_mem, AS_PROGRAM, 8, mbee_state) AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") @@ -295,19 +303,6 @@ static ADDRESS_MAP_START(mbee56_io, AS_IO, 8, mbee_state) AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) ADDRESS_MAP_END -static ADDRESS_MAP_START(mbee64_io, AS_IO, 8, mbee_state) - ADDRESS_MAP_GLOBAL_MASK(0xff) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) - AM_RANGE(0x08, 0x08) AM_MIRROR(0x10) AM_READWRITE(mbeeic_08_r, mbeeic_08_w) - AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_READWRITE(mbee_0b_r, mbee_0b_w) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_READWRITE(m6545_status_r, m6545_index_w) - AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_READWRITE(m6545_data_r, m6545_data_w) - AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) - AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) - AM_RANGE(0x50, 0x57) AM_WRITE(mbee64_50_w) -ADDRESS_MAP_END - static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state) ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_UNMAP_HIGH @@ -780,14 +775,7 @@ static MACHINE_CONFIG_DERIVED( mbee56, mbeeic ) MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( mbee64, mbee56 ) - MCFG_CPU_MODIFY( "maincpu" ) - MCFG_CPU_PROGRAM_MAP(mbee64_mem) - MCFG_CPU_IO_MAP(mbee64_io) - MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee64) -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc ) +static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(mbee256_mem) MCFG_CPU_IO_MAP(mbee128_io) @@ -799,7 +787,11 @@ static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc ) MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( mbee256, mbee128 ) +static MACHINE_CONFIG_DERIVED( mbee128, mbee128p ) + MCFG_VIDEO_START_OVERRIDE(mbee_state,mbeeic) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( mbee256, mbee128p ) MCFG_CPU_MODIFY( "maincpu" ) MCFG_CPU_PROGRAM_MAP(mbee256_mem) MCFG_CPU_IO_MAP(mbee256_io) @@ -1084,16 +1076,19 @@ ROM_START( mbee56 ) ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 ) ROM_END -ROM_START( mbee64 ) // CIAB (Computer-In-A-Book) - ROM_REGION(0x10000,"maincpu", ROMREGION_ERASEFF) +ROM_START( mbee128 ) // Standard 128k (CIAB is the same thing with half the ram) + ROM_REGION(0x10000, "rams", ROMREGION_ERASEFF) - ROM_REGION(0x7000,"bootrom", ROMREGION_ERASEFF) + ROM_REGION(0x7000, "roms", ROMREGION_ERASEFF) ROM_LOAD("bn54.bin", 0x0000, 0x2000, CRC(995c53db) SHA1(46e1a5cfd5795b8cf528bacf9dc79398ff7d64af) ) ROM_REGION(0x2000, "gfx", 0) ROM_LOAD("charrom.bin", 0x1000, 0x1000, CRC(1f9fcee4) SHA1(e57ac94e03638075dde68a0a8c834a4f84ba47b0) ) ROM_RELOAD( 0x0000, 0x1000 ) + ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now + ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) + ROM_REGION( 0x0040, "proms", 0 ) ROM_LOAD( "82s123.ic7", 0x0000, 0x0020, CRC(61b9c16c) SHA1(0ee72377831c21339360c376f7248861d476dc20) ) ROM_LOAD_OPTIONAL( "82s123.ic16", 0x0020, 0x0020, CRC(4e779985) SHA1(cd2579cf65032c30b3fe7d6d07b89d4633687481) ) /* video switching prom, not needed for emulation purposes */ @@ -1102,16 +1097,16 @@ ROM_START( mbee64 ) // CIAB (Computer-In-A-Book) ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 ) ROM_END -ROM_START( mbee128 ) // 128K +ROM_START( mbee128p ) // Premium 128K ROM_REGION(0x20000, "rams", ROMREGION_ERASEFF) ROM_REGION(0x8000, "roms", 0) // rom plus optional undumped roms plus dummy area - ROM_SYSTEM_BIOS( 0, "bn60", "Version 2.03" ) - ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(1) ) + ROM_SYSTEM_BIOS( 0, "bn56", "bn56" ) + ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(1) ) ROM_SYSTEM_BIOS( 1, "bn59", "Version 2.02" ) ROMX_LOAD("bn59.rom", 0x0000, 0x2000, CRC(97384116) SHA1(87f2c4ab1a1f2964ba4f2bb60e62dc9c163831ba), ROM_BIOS(2) ) - ROM_SYSTEM_BIOS( 2, "bn56", "bn56" ) - ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(3) ) + ROM_SYSTEM_BIOS( 2, "bn60", "Version 2.03" ) + ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(3) ) ROM_SYSTEM_BIOS( 3, "bn55", "bn55" ) ROMX_LOAD("bn55.rom", 0x0000, 0x2000, CRC(ca2c1073) SHA1(355d90d181de899cc7af892df96305fead9c81b4), ROM_BIOS(4) ) ROM_SYSTEM_BIOS( 4, "bn54", "bn54" ) @@ -1119,7 +1114,7 @@ ROM_START( mbee128 ) // 128K ROM_SYSTEM_BIOS( 5, "hd18", "Hard Disk System" ) ROMX_LOAD("hd18.rom", 0x0000, 0x2000, CRC(ed53ace7) SHA1(534e2e00cc527197c76b3c106b3c9ff7f1328487), ROM_BIOS(6) ) - ROM_REGION(0x4000, "proms", 0) // undumped; using prom from 256tc for now + ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) ROM_REGION(0x9800, "gfx", 0) @@ -1140,7 +1135,7 @@ ROM_START( mbee256 ) // 256tc ROM_SYSTEM_BIOS( 1, "1.15", "Version 1.15" ) ROMX_LOAD("256tc_boot_1.15.u38", 0x0000, 0x4000, CRC(1902062d) SHA1(e4a1c0b3f4996e313da0bac0edb6d34e3270723e), ROM_BIOS(2) ) - ROM_REGION(0x4000, "proms", 0) + ROM_REGION(0x4000, "pals", 0) ROM_LOAD( "silver.u39", 0x0000, 0x4000, CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) ROM_REGION(0x9800, "gfx", 0) @@ -1169,6 +1164,6 @@ COMP( 1985, mbeepc85s,mbee, 0, mbeepc85, mbee, mbee_state, mbeepc8 COMP( 1986, mbeeppc, mbee, 0, mbeeppc, mbee, mbee_state, mbeeppc, "Applied Technology", "Microbee Premium PC85" , 0 ) COMP( 1986, mbeett, mbee, 0, mbeett, mbee256, mbee_state, mbeett, "Applied Technology", "Microbee Teleterm" , GAME_NOT_WORKING ) COMP( 1986, mbee56, mbee, 0, mbee56, mbee, mbee_state, mbee56, "Applied Technology", "Microbee 56k" , GAME_NOT_WORKING ) -COMP( 1986, mbee64, mbee, 0, mbee64, mbee, mbee_state, mbee64, "Applied Technology", "Microbee 64k" , GAME_NOT_WORKING ) -COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k" , GAME_NOT_WORKING ) +COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Standard" , GAME_NOT_WORKING ) +COMP( 1986, mbee128p, mbee, 0, mbee128p, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Premium" , GAME_NOT_WORKING ) COMP( 1987, mbee256, mbee, 0, mbee256, mbee256, mbee_state, mbee256, "Applied Technology", "Microbee 256TC" , GAME_NOT_WORKING ) diff --git a/src/mess/includes/mbee.h b/src/mess/includes/mbee.h index 211412875c2..e2430a960dd 100644 --- a/src/mess/includes/mbee.h +++ b/src/mess/includes/mbee.h @@ -52,14 +52,6 @@ public: , m_pak(*this, "pak") , m_telcom(*this, "telcom") , m_basic(*this, "basic") - , m_bankl(*this, "bankl") - , m_bankh(*this, "bankh") - , m_bank1(*this, "bank1") - , m_bank8l(*this, "bank8l") - , m_bank8h(*this, "bank8h") - , m_bank9(*this, "bank9") - , m_bankfl(*this, "bankfl") - , m_bankfh(*this, "bankfh") , m_io_x0(*this, "X0") , m_io_x1(*this, "X1") , m_io_x2(*this, "X2") @@ -129,7 +121,6 @@ public: DECLARE_DRIVER_INIT(mbeepc); DECLARE_DRIVER_INIT(mbeeic); DECLARE_DRIVER_INIT(mbee128); - DECLARE_DRIVER_INIT(mbee64); DECLARE_MACHINE_RESET(mbee); DECLARE_VIDEO_START(mbee); DECLARE_VIDEO_START(mbeeic); @@ -138,7 +129,6 @@ public: DECLARE_VIDEO_START(mbeeppc); DECLARE_PALETTE_INIT(mbeeppc); DECLARE_MACHINE_RESET(mbee56); - DECLARE_MACHINE_RESET(mbee64); DECLARE_MACHINE_RESET(mbee128); DECLARE_MACHINE_RESET(mbee256); DECLARE_MACHINE_RESET(mbeett); @@ -147,8 +137,8 @@ public: TIMER_CALLBACK_MEMBER(mbee256_kbd); TIMER_CALLBACK_MEMBER(mbee_rtc_irq); TIMER_CALLBACK_MEMBER(mbee_reset); - DECLARE_QUICKLOAD_LOAD_MEMBER( mbee ); - DECLARE_QUICKLOAD_LOAD_MEMBER( mbee_z80bin ); + DECLARE_QUICKLOAD_LOAD_MEMBER(mbee); + DECLARE_QUICKLOAD_LOAD_MEMBER(mbee_z80bin); WRITE_LINE_MEMBER(fdc_intrq_w); WRITE_LINE_MEMBER(fdc_drq_w); UINT8 *m_p_videoram; @@ -169,6 +159,7 @@ public: required_device m_palette; private: + bool m_is_premium; size_t m_size; UINT8 m_clock_pulse; UINT8 m_mbee256_key_available; @@ -177,13 +168,12 @@ private: UINT8 m_mbee256_q_pos; UINT8 m_0a; UINT8 m_0b; - UINT8 m_is_premium; UINT8 m_sy6545_status; UINT8 m_sy6545_reg[32]; UINT8 m_sy6545_ind; UINT8 m_fdc_rq; UINT8 m_bank_array[33]; - void mbee256_setup_banks(UINT8 data, bool first_time); + void setup_banks(UINT8 data, bool first_time, UINT8 b_mask); void sy6545_cursor_configure(); void keyboard_matrix_r(int offs); void machine_reset_common_disk(); @@ -204,14 +194,6 @@ private: optional_memory_bank m_pak; optional_memory_bank m_telcom; optional_memory_bank m_basic; - optional_memory_bank m_bankl; - optional_memory_bank m_bankh; - optional_memory_bank m_bank1; - optional_memory_bank m_bank8l; - optional_memory_bank m_bank8h; - optional_memory_bank m_bank9; - optional_memory_bank m_bankfl; - optional_memory_bank m_bankfh; required_ioport m_io_x0; required_ioport m_io_x1; required_ioport m_io_x2; diff --git a/src/mess/machine/mbee.c b/src/mess/machine/mbee.c index 530bc27b788..5453a8ad634 100644 --- a/src/mess/machine/mbee.c +++ b/src/mess/machine/mbee.c @@ -272,13 +272,15 @@ TIMER_CALLBACK_MEMBER(mbee_state::mbee_rtc_irq) and (output = 22,21,20,19,18,17,16,15). The prom is also used to control the refresh required by the dynamic rams, however we ignore this function. + b_mask = total dynamic ram (1=64k; 3=128k; 7=256k) + ************************************************************/ -void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) +void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask) { - // (bits 0-5 are referred to as S0-S5) + data &= 0x3f; // (bits 0-5 are referred to as S0-S5) address_space &mem = m_maincpu->space(AS_PROGRAM); - UINT8 *prom = memregion("proms")->base(); + UINT8 *prom = memregion("pals")->base(); UINT8 b_data = BITSWAP8(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3 UINT8 b_bank, b_byte, b_byte_t, b_addr, p_bank = 1; UINT16 b_vid; @@ -309,8 +311,16 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) if (!BIT(b_byte, 4)) { // select video - mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this)); - mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this)); + if (m_is_premium) + { + mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this)); + mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this)); + } + else + { + mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbee_low_r), this)); + mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeic_high_r), this)); + } } else { @@ -320,7 +330,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) if (!BIT(b_byte, 3)) membank(banktag)->set_entry(64 + (b_bank & 3)); // read from rom else - membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram + membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram } } p_bank++; @@ -341,8 +351,16 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) if (!BIT(b_byte, 4)) { // select video - mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this)); - mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this)); + if (m_is_premium) + { + mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this)); + mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this)); + } + else + { + mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbee_low_w), this)); + mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeic_high_w), this)); + } } else { @@ -352,7 +370,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) if (!BIT(b_byte, 3)) membank(banktag)->set_entry(64); // write to rom dummy area else - membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram + membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram } } p_bank++; @@ -362,7 +380,7 @@ void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) WRITE8_MEMBER( mbee_state::mbee256_50_w ) { - mbee256_setup_banks(data & 0x3f, 0); + setup_banks(data, 0, 7); } /*********************************************************** @@ -380,37 +398,9 @@ WRITE8_MEMBER( mbee_state::mbee256_50_w ) WRITE8_MEMBER( mbee_state::mbee128_50_w ) { - mbee256_setup_banks(data & 0x1f, 0); // S5 not used + setup_banks(data, 0, 3); } - -/*********************************************************** - - 64k Memory Banking - - Bit 2 disables ROM, replacing it with RAM. - - Due to lack of documentation, it is not possible to know - if other bits are used. - -************************************************************/ - -WRITE8_MEMBER( mbee_state::mbee64_50_w ) -{ - if BIT(data, 2) - { - m_boot->set_entry(0); - m_bankl->set_entry(0); - m_bankh->set_entry(0); - } - else - { - m_bankl->set_entry(1); - m_bankh->set_entry(1); - } -} - - /*********************************************************** ROM Banking on older models @@ -489,18 +479,10 @@ MACHINE_RESET_MEMBER( mbee_state, mbee56 ) timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); } -MACHINE_RESET_MEMBER( mbee_state, mbee64 ) -{ - machine_reset_common_disk(); - m_boot->set_entry(1); - m_bankl->set_entry(1); - m_bankh->set_entry(1); -} - MACHINE_RESET_MEMBER( mbee_state, mbee128 ) { machine_reset_common_disk(); - mbee256_setup_banks(0, 1); // set banks to default + setup_banks(0, 1, 3); // set banks to default m_maincpu->set_pc(0x8000); } @@ -510,7 +492,7 @@ MACHINE_RESET_MEMBER( mbee_state, mbee256 ) for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0; m_mbee256_q_pos = 0; machine_reset_common_disk(); - mbee256_setup_banks(0, 1); // set banks to default + setup_banks(0, 1, 7); // set banks to default m_maincpu->set_pc(0x8000); } @@ -625,21 +607,6 @@ DRIVER_INIT_MEMBER( mbee_state, mbee56 ) m_size = 0xe000; } -DRIVER_INIT_MEMBER( mbee_state, mbee64 ) -{ - UINT8 *RAM = memregion("maincpu")->base(); - m_boot->configure_entry(0, &RAM[0x0000]); - m_bankl->configure_entry(0, &RAM[0x1000]); - m_bankl->configure_entry(1, &RAM[0x9000]); - m_bankh->configure_entry(0, &RAM[0x8000]); - - RAM = memregion("bootrom")->base(); - m_bankh->configure_entry(1, &RAM[0x0000]); - m_boot->configure_entry(1, &RAM[0x0000]); - - m_size = 0xf000; -} - DRIVER_INIT_MEMBER( mbee_state, mbee128 ) { UINT8 *RAM = memregion("rams")->base(); @@ -656,8 +623,7 @@ DRIVER_INIT_MEMBER( mbee_state, mbee128 ) membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom } - - m_size = 0x8000; + m_size = 0xf000; } DRIVER_INIT_MEMBER( mbee_state, mbee256 ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index c4e858dd1e5..f819210bc73 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -1216,8 +1216,8 @@ mbeepc85s // Microbee 32 PC85 (Swedish) mbeeppc // Microbee 32 PPC85 mbeett // Microbee Teleterm mbee56 // Microbee 56K (CP/M) -mbee64 // Microbee 64K (CP/M) -mbee128 // Microbee 128K (CP/M) +mbee128 // Microbee 128K standard (CP/M) +mbee128p // Microbee 128K premium (CP/M) mbee256 // Microbee 256TC (CP/M) // Tandy / Radio Shack diff --git a/src/mess/video/mbee.c b/src/mess/video/mbee.c index c1a46682a85..efc0bf4e58b 100644 --- a/src/mess/video/mbee.c +++ b/src/mess/video/mbee.c @@ -346,8 +346,8 @@ WRITE8_MEMBER ( mbee_state::m6545_data_w ) memcpy(m_p_gfxram, memregion("gfx")->base() + (((data & 0x30) == 0x20) << 11), 0x800); break; case 31: - /* This firstly pushes the contents of the transparent registers onto the MA lines, - then increments the address, then sets update strobe on. */ + /* This firstly pushes the contents of the transparent registers onto the MA lines, + then increments the address, then sets update strobe on. */ addr = (m_sy6545_reg[18] << 8) | m_sy6545_reg[19]; keyboard_matrix_r(addr); m_sy6545_reg[19]++; -- cgit v1.2.3 From bf76cf773fa82c8e71296a8ffce4b981b5cf7c7c Mon Sep 17 00:00:00 2001 From: Stiletto Date: Wed, 11 Feb 2015 00:52:44 -0500 Subject: Add undumped game note. (nw) Add undumped game note. (nw) --- src/mame/drivers/equites.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c index 13a8632f7df..46f50ae7035 100644 --- a/src/mame/drivers/equites.c +++ b/src/mame/drivers/equites.c @@ -3,6 +3,7 @@ Equites (c) 1984 Alpha Denshi Co./Sega 8303 Bull Fighter (c) 1984 Alpha Denshi Co./Sega 8303 Gekisou (c) 1985 Eastern Corp. 8304 +Violent Run (c) 1985 Eastern Corp. 8304? (probably on Equites HW) The Koukouyakyuh (c) 1985 Alpha Denshi Co. 8304 Splendor Blast (c) 1985 Alpha Denshi Co. 8303 High Voltage (c) 1985 Alpha Denshi Co. 8304 (POST says 8404) -- cgit v1.2.3 From a3244fbc201a1e700650fde4576fe9a4bfea5dbe Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Feb 2015 17:29:27 +0100 Subject: liberate.c: Fixed prosoccr save state problem as per Tafoid's -str 40 test (nw) --- src/mame/drivers/liberate.c | 14 ++++++-------- src/mame/includes/liberate.h | 3 ++- src/mame/video/liberate.c | 4 ++++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c index 69a61e7406c..62f83dd8c38 100644 --- a/src/mame/drivers/liberate.c +++ b/src/mame/drivers/liberate.c @@ -128,8 +128,6 @@ READ8_MEMBER(liberate_state::prosoccr_charram_r) WRITE8_MEMBER(liberate_state::prosoccr_charram_w) { - UINT8 *FG_GFX = memregion("fg_gfx")->base(); - if (m_bank) { prosoccr_io_w(space, offset & 0x0f, data); @@ -142,16 +140,16 @@ WRITE8_MEMBER(liberate_state::prosoccr_charram_w) switch (offset & 0x1800) { case 0x0000: - FG_GFX[(offset & 0x7ff) + (0x0000) + 0x0000] = data; - //FG_GFX[(offset & 0x7ff) + (0x1800) + 0x0000] = data; + m_fg_gfx[(offset & 0x7ff) + (0x0000) + 0x0000] = data; + //m_fg_gfx[(offset & 0x7ff) + (0x1800) + 0x0000] = data; break; case 0x0800: - FG_GFX[(offset & 0x7ff) + (0x0000) + 0x2000] = data; - //FG_GFX[(offset & 0x7ff) + (0x1800) + 0x2000] = data; + m_fg_gfx[(offset & 0x7ff) + (0x0000) + 0x2000] = data; + //m_fg_gfx[(offset & 0x7ff) + (0x1800) + 0x2000] = data; break; case 0x1000: - FG_GFX[(offset & 0x7ff) + (0x0000) + 0x4000] = data; - //FG_GFX[(offset & 0x7ff) + (0x1800) + 0x4000] = data; + m_fg_gfx[(offset & 0x7ff) + (0x0000) + 0x4000] = data; + //m_fg_gfx[(offset & 0x7ff) + (0x1800) + 0x4000] = data; break; } } diff --git a/src/mame/includes/liberate.h b/src/mame/includes/liberate.h index 1b8e0170b9a..a060e564585 100644 --- a/src/mame/includes/liberate.h +++ b/src/mame/includes/liberate.h @@ -20,8 +20,9 @@ public: required_shared_ptr m_videoram; required_shared_ptr m_spriteram; optional_shared_ptr m_scratchram; + + UINT8 *m_fg_gfx; /* prosoccr */ UINT8 *m_charram; /* prosoccr */ - UINT8 m_io_ram[16]; int m_bank; diff --git a/src/mame/video/liberate.c b/src/mame/video/liberate.c index 6d5050e6a27..7d449f4f572 100644 --- a/src/mame/video/liberate.c +++ b/src/mame/video/liberate.c @@ -207,7 +207,11 @@ VIDEO_START_MEMBER(liberate_state,prosoccr) m_fix_tilemap->set_transparent_pen(0); + m_fg_gfx = memregion("fg_gfx")->base(); m_charram = auto_alloc_array(machine(), UINT8, 0x1800 * 2); + + save_pointer(NAME(m_charram), 0x1800 * 2); + save_pointer(NAME(m_fg_gfx), 0x6000); } VIDEO_START_MEMBER(liberate_state,boomrang) -- cgit v1.2.3 From fc81db7feecfb5a117202e48b4ae5ddd19d901e3 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Feb 2015 17:40:07 +0100 Subject: igs011.c: worked around save state problem as per Tafoid -str 40 test (nw) --- src/mame/drivers/igs011.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c index 673ead7a7ff..c7f42ef3cb3 100644 --- a/src/mame/drivers/igs011.c +++ b/src/mame/drivers/igs011.c @@ -233,6 +233,7 @@ public: void ryukobou_decrypt(); void lhb2_decrypt_gfx(); void drgnwrld_gfx_decrypt(); + void prot_mem_range_set(); }; @@ -1102,7 +1103,14 @@ WRITE16_MEMBER(igs011_state::igs011_prot_addr_w) sp.install_rom(m_prot1_addr + 0, m_prot1_addr + 9, rom + m_prot1_addr); m_prot1_addr = (data << 4) ^ 0x8340; + + prot_mem_range_set(); +} +void igs011_state::prot_mem_range_set() +{ + address_space &sp = m_maincpu->space(AS_PROGRAM); + // Add protection memory range sp.install_write_handler(m_prot1_addr + 0, m_prot1_addr + 7, write16_delegate(FUNC(igs011_state::igs011_prot1_w), this)); sp.install_read_handler (m_prot1_addr + 8, m_prot1_addr + 9, read16_delegate(FUNC(igs011_state::igs011_prot1_r), this)); @@ -2284,6 +2292,7 @@ DRIVER_INIT_MEMBER(igs011_state,vbowl) rom[0x1e6e6/2] = 0x600c; // 01E6E6: 670C beq $1e6f4 rom[0x1f7ce/2] = 0x600c; // 01F7CE: 670C beq $1f7dc */ + machine().save().register_postload(save_prepost_delegate(FUNC(igs011_state::prot_mem_range_set), this)); } @@ -2307,6 +2316,7 @@ DRIVER_INIT_MEMBER(igs011_state,vbowlj) rom[0x1e6e6/2] = 0x600c; // 01E6E6: 670C beq $1e6f4 rom[0x1f7c8/2] = 0x600c; // 01F7C8: 670C beq 1f7d6 */ + machine().save().register_postload(save_prepost_delegate(FUNC(igs011_state::prot_mem_range_set), this)); } -- cgit v1.2.3 From cfc45de003aca14571e7c7df6b24a8f9de88e3d1 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Feb 2015 17:42:52 +0100 Subject: gsword.c: added save state support (nw) tait8741.c: fixed an oversight in yesterday's commit (nw) --- src/mame/drivers/gsword.c | 77 ++++++++++++++++++++++----------------------- src/mame/includes/gsword.h | 70 ++++++++++++++++++++++++----------------- src/mame/machine/tait8741.c | 2 +- src/mame/video/gsword.c | 22 ++++++------- 4 files changed, 91 insertions(+), 80 deletions(-) diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c index 791259be632..bcc33c10310 100644 --- a/src/mame/drivers/gsword.c +++ b/src/mame/drivers/gsword.c @@ -4,7 +4,7 @@ TODO: --joshi vollyball +-joshi volleyball -The incomplete graphic -The implementation of DAC sound ? -MCU code DUMP and emulation @@ -14,7 +14,7 @@ TODO: Credits: - Steve Ellenoff: Original emulation and Mame driver - Jarek Parchanski: Dip Switch Fixes, Color improvements, ADPCM Interface code -- Tatsuyuki Satoh: sound improvements, NEC 8741 emulation,adpcm improvements, +- Tatsuyuki Satoh: sound improvements, NEC 8741 emulation, adpcm improvements, josvollyvall 8741 emulation - Charlie Miltenberger: sprite colors improvements & precious hardware information and screenshots @@ -144,13 +144,12 @@ reg: 0->1 (main->2nd) / : (1->0) 2nd->main : #include "emu.h" #include "cpu/z80/z80.h" #include "machine/tait8741.h" -#include "sound/ay8910.h" #include "sound/msm5205.h" #include "includes/gsword.h" #if 0 -int gsword_state::gsword_coins_in(void) +int gsword_state::coins_in(void) { /* emulate 8741 coin slot */ if (ioport("IN4")->read() & 0xc0) @@ -165,6 +164,7 @@ int gsword_state::gsword_coins_in(void) #include "cpu/z80/z80.h" + /* CPU 2 memory hack */ /* (402E) timeout upcount must be under 0AH */ /* (4004,4005) clear down counter , if (4004,4005)==0 then (402E)=0 */ @@ -174,7 +174,7 @@ READ8_MEMBER(gsword_state::gsword_hack_r) /*if(offset==1)osd_printf_debug("CNT %02X%02X\n",m_cpu2_ram[5],m_cpu2_ram[4]); */ - /* speedup timeout cound down */ + /* speedup timeout count down */ if(m_protect_hack) { switch(offset) @@ -219,7 +219,15 @@ READ8_MEMBER(gsword_state::gsword_8741_3_r ) return 0; } -MACHINE_RESET_MEMBER(gsword_state,gsword) +void gsword_state::machine_start() +{ + save_item(NAME(m_fake8910_0)); + save_item(NAME(m_fake8910_1)); + save_item(NAME(m_nmi_enable)); + save_item(NAME(m_protect_hack)); +} + +void gsword_state::machine_reset() { m_coins = 0; @@ -228,17 +236,13 @@ MACHINE_RESET_MEMBER(gsword_state,gsword) m_protect_hack = 0; } -MACHINE_RESET_MEMBER(gsword_state,josvolly) -{ -} - INTERRUPT_GEN_MEMBER(gsword_state::gsword_snd_interrupt) { if(m_nmi_enable) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -WRITE8_MEMBER(gsword_state::gsword_nmi_set_w) +WRITE8_MEMBER(gsword_state::nmi_set_w) { /* osd_printf_debug("AY write %02X\n",data);*/ @@ -253,7 +257,7 @@ WRITE8_MEMBER(gsword_state::gsword_nmi_set_w) switch(data) { case 0xff: - m_nmi_enable = 0; /* NMI must be disable */ + m_nmi_enable = 0; /* NMI must be disabled */ break; case 0x02: m_nmi_enable = 0; /* ANY */ @@ -262,10 +266,10 @@ WRITE8_MEMBER(gsword_state::gsword_nmi_set_w) m_nmi_enable = 1; break; case 0x0f: - m_nmi_enable = 1; /* NMI must be enable */ + m_nmi_enable = 1; /* NMI must be enabled */ break; case 0xfe: - m_nmi_enable = 1; /* NMI must be enable */ + m_nmi_enable = 1; /* NMI must be enabled */ break; } /* bit1= nmi disable , for ram check */ @@ -273,24 +277,22 @@ WRITE8_MEMBER(gsword_state::gsword_nmi_set_w) #endif } -WRITE8_MEMBER(gsword_state::gsword_AY8910_control_port_0_w) +WRITE8_MEMBER(gsword_state::ay8910_control_port_0_w) { - ay8910_device *ay8910 = machine().device("ay1"); - ay8910->address_w(space,offset,data); + m_ay0->address_w(space,offset,data); m_fake8910_0 = data; } -WRITE8_MEMBER(gsword_state::gsword_AY8910_control_port_1_w) +WRITE8_MEMBER(gsword_state::ay8910_control_port_1_w) { - ay8910_device *ay8910 = machine().device("ay2"); - ay8910->address_w(space,offset,data); + m_ay1->address_w(space,offset,data); m_fake8910_1 = data; } -READ8_MEMBER(gsword_state::gsword_fake_0_r) +READ8_MEMBER(gsword_state::fake_0_r) { return m_fake8910_0+1; } -READ8_MEMBER(gsword_state::gsword_fake_1_r) +READ8_MEMBER(gsword_state::fake_1_r) { return m_fake8910_1+1; } @@ -308,6 +310,7 @@ WRITE8_MEMBER(gsword_state::adpcm_soundcommand_w) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } + static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM , 8, gsword_state ) AM_RANGE(0x0000, 0x8fff) AM_ROM AM_RANGE(0x9000, 0x9fff) AM_RAM @@ -315,11 +318,11 @@ static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM , 8, gsword_state ) AM_RANGE(0xa380, 0xa3ff) AM_RAM AM_SHARE("spritetile_ram") AM_RANGE(0xa400, 0xa77f) AM_RAM AM_RANGE(0xa780, 0xa7ff) AM_RAM AM_SHARE("spritexy_ram") - AM_RANGE(0xa980, 0xa980) AM_WRITE(gsword_charbank_w) - AM_RANGE(0xaa80, 0xaa80) AM_WRITE(gsword_videoctrl_w) /* flip screen, char palette bank */ - AM_RANGE(0xab00, 0xab00) AM_WRITE(gsword_scroll_w) + AM_RANGE(0xa980, 0xa980) AM_WRITE(charbank_w) + AM_RANGE(0xaa80, 0xaa80) AM_WRITE(videoctrl_w) /* flip screen, char palette bank */ + AM_RANGE(0xab00, 0xab00) AM_WRITE(scroll_w) AM_RANGE(0xab80, 0xabff) AM_WRITEONLY AM_SHARE("spriteattram") - AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(gsword_videoram_w) AM_SHARE("videoram") + AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( cpu1_io_map, AS_IO, 8, gsword_state ) @@ -344,9 +347,9 @@ static ADDRESS_MAP_START( cpu2_io_map, AS_IO, 8, gsword_state ) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_1, write_1) - AM_RANGE(0x60, 0x60) AM_READWRITE(gsword_fake_0_r, gsword_AY8910_control_port_0_w) + AM_RANGE(0x60, 0x60) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x80, 0x80) AM_READWRITE(gsword_fake_1_r, gsword_AY8910_control_port_1_w) + AM_RANGE(0x80, 0x80) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) // AM_RANGE(0xe0, 0xe0) AM_READNOP /* ?? */ @@ -378,9 +381,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( josvolly_cpu2_io_map, AS_IO, 8, gsword_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE(gsword_fake_0_r, gsword_AY8910_control_port_0_w) + AM_RANGE(0x00, 0x00) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) - AM_RANGE(0x40, 0x40) AM_READWRITE(gsword_fake_1_r, gsword_AY8910_control_port_1_w) + AM_RANGE(0x40, 0x40) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) AM_RANGE(0x81, 0x81) AM_DEVWRITE("josvolly_8741", josvolly8741_4pack_device, nmi_enable_w) @@ -638,8 +641,6 @@ static MACHINE_CONFIG_START( gsword, gsword_state ) MCFG_QUANTUM_TIME(attotime::from_hz(12000)) /* Allow time for 2nd cpu to interleave*/ - MCFG_MACHINE_RESET_OVERRIDE(gsword_state,gsword) - MCFG_TAITO8741_ADD("taito8741") MCFG_TAITO8741_MODES(TAITO8741_MASTER,TAITO8741_SLAVE,TAITO8741_PORT,TAITO8741_PORT) MCFG_TAITO8741_CONNECT(1,0,0,0) @@ -670,7 +671,7 @@ static MACHINE_CONFIG_START( gsword, gsword_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("ay2", AY8910, 1500000) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, gsword_nmi_set_w)) /* portA write */ + MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, nmi_set_w)) /* portA write */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb */ @@ -691,8 +692,6 @@ static MACHINE_CONFIG_START( josvolly, gsword_state ) MCFG_CPU_IO_MAP(josvolly_cpu2_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gsword_state, irq0_line_hold) - MCFG_MACHINE_RESET_OVERRIDE(gsword_state,josvolly) - MCFG_JOSVOLLY8741_ADD("josvolly_8741") MCFG_JOSVOLLY8741_CONNECT(1,0,0,0) MCFG_JOSVOLLY8741_PORT_HANDLERS(IOPORT("DSW1"),IOPORT("DSW2"),IOPORT("DSW1"),IOPORT("DSW2")) @@ -719,7 +718,7 @@ static MACHINE_CONFIG_START( josvolly, gsword_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ADD("ay2", AY8910, 1500000) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, gsword_nmi_set_w)) /* portA write */ + MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, nmi_set_w)) /* portA write */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) #if 0 @@ -901,6 +900,6 @@ DRIVER_INIT_MEMBER(gsword_state,gsword2) } -GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", 0 ) -GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", 0 ) +GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", GAME_SUPPORTS_SAVE ) +GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h index 95689d4d1ab..16ccd65abad 100644 --- a/src/mame/includes/gsword.h +++ b/src/mame/includes/gsword.h @@ -1,3 +1,4 @@ +#include "sound/ay8910.h" #include "sound/msm5205.h" class gsword_state : public driver_device @@ -5,17 +6,28 @@ class gsword_state : public driver_device public: gsword_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_spritetile_ram(*this, "spritetile_ram"), - m_spritexy_ram(*this, "spritexy_ram"), - m_spriteattrib_ram(*this, "spriteattram"), - m_videoram(*this, "videoram"), - m_cpu2_ram(*this, "cpu2_ram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_subcpu(*this, "sub"), + m_ay0(*this, "ay1"), + m_ay1(*this, "ay2"), m_msm(*this, "msm"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_spritetile_ram(*this, "spritetile_ram"), + m_spritexy_ram(*this, "spritexy_ram"), + m_spriteattrib_ram(*this, "spriteattram"), + m_videoram(*this, "videoram"), + m_cpu2_ram(*this, "cpu2_ram") { } + + required_device m_maincpu; + required_device m_audiocpu; + optional_device m_subcpu; + required_device m_ay0; + required_device m_ay1; + optional_device m_msm; + required_device m_gfxdecode; + required_device m_palette; required_shared_ptr m_spritetile_ram; required_shared_ptr m_spritexy_ram; @@ -23,7 +35,7 @@ public: required_shared_ptr m_videoram; required_shared_ptr m_cpu2_ram; - int m_coins; + int m_coins; //currently initialized but not used int m_fake8910_0; int m_fake8910_1; int m_nmi_enable; @@ -33,36 +45,36 @@ public: int m_flipscreen; tilemap_t *m_bg_tilemap; - DECLARE_WRITE8_MEMBER(gsword_videoram_w); - DECLARE_WRITE8_MEMBER(gsword_charbank_w); - DECLARE_WRITE8_MEMBER(gsword_videoctrl_w); - DECLARE_WRITE8_MEMBER(gsword_scroll_w); - DECLARE_READ8_MEMBER(gsword_hack_r); + // common + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(charbank_w); + DECLARE_WRITE8_MEMBER(videoctrl_w); + DECLARE_WRITE8_MEMBER(scroll_w); DECLARE_WRITE8_MEMBER(adpcm_soundcommand_w); - DECLARE_WRITE8_MEMBER(gsword_nmi_set_w); - DECLARE_WRITE8_MEMBER(gsword_AY8910_control_port_0_w); - DECLARE_WRITE8_MEMBER(gsword_AY8910_control_port_1_w); - DECLARE_READ8_MEMBER(gsword_fake_0_r); - DECLARE_READ8_MEMBER(gsword_fake_1_r); - DECLARE_READ8_MEMBER( gsword_8741_2_r ); - DECLARE_READ8_MEMBER( gsword_8741_3_r ); + DECLARE_WRITE8_MEMBER(nmi_set_w); + DECLARE_WRITE8_MEMBER(ay8910_control_port_0_w); + DECLARE_WRITE8_MEMBER(ay8910_control_port_1_w); + DECLARE_READ8_MEMBER(fake_0_r); + DECLARE_READ8_MEMBER(fake_1_r); + + // gsword specific + DECLARE_READ8_MEMBER(gsword_hack_r); DECLARE_WRITE8_MEMBER(gsword_adpcm_data_w); + DECLARE_READ8_MEMBER(gsword_8741_2_r); + DECLARE_READ8_MEMBER(gsword_8741_3_r); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + DECLARE_DRIVER_INIT(gsword); DECLARE_DRIVER_INIT(gsword2); - TILE_GET_INFO_MEMBER(get_bg_tile_info); + virtual void machine_start(); + virtual void machine_reset(); virtual void video_start(); - DECLARE_MACHINE_RESET(gsword); DECLARE_PALETTE_INIT(gsword); - DECLARE_MACHINE_RESET(josvolly); DECLARE_PALETTE_INIT(josvolly); + UINT32 screen_update_gsword(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(gsword_snd_interrupt); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - int gsword_coins_in(void); - required_device m_maincpu; - required_device m_audiocpu; - optional_device m_subcpu; - optional_device m_msm; - required_device m_gfxdecode; - required_device m_palette; + int coins_in(void); //if 0'd }; diff --git a/src/mame/machine/tait8741.c b/src/mame/machine/tait8741.c index 297919317d7..f1176589ad5 100644 --- a/src/mame/machine/tait8741.c +++ b/src/mame/machine/tait8741.c @@ -371,7 +371,7 @@ void josvolly8741_4pack_device::device_start() save_item(NAME(m_i8741[i].rst), i); }; - //save_item(NAME(m_nmi_enable)); //never changes from 0? + save_item(NAME(m_nmi_enable)); } diff --git a/src/mame/video/gsword.c b/src/mame/video/gsword.c index 3853d0566d8..979ba3420ac 100644 --- a/src/mame/video/gsword.c +++ b/src/mame/video/gsword.c @@ -87,14 +87,13 @@ PALETTE_INIT_MEMBER(gsword_state,gsword) } } -WRITE8_MEMBER(gsword_state::gsword_videoram_w) +WRITE8_MEMBER(gsword_state::videoram_w) { - UINT8 *videoram = m_videoram; - videoram[offset] = data; + m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(gsword_state::gsword_charbank_w) +WRITE8_MEMBER(gsword_state::charbank_w) { if (m_charbank != data) { @@ -103,7 +102,7 @@ WRITE8_MEMBER(gsword_state::gsword_charbank_w) } } -WRITE8_MEMBER(gsword_state::gsword_videoctrl_w) +WRITE8_MEMBER(gsword_state::videoctrl_w) { if (data & 0x8f) { @@ -131,15 +130,14 @@ WRITE8_MEMBER(gsword_state::gsword_videoctrl_w) /* other bits unused */ } -WRITE8_MEMBER(gsword_state::gsword_scroll_w) +WRITE8_MEMBER(gsword_state::scroll_w) { m_bg_tilemap->set_scrolly(0, data); } TILE_GET_INFO_MEMBER(gsword_state::get_bg_tile_info) { - UINT8 *videoram = m_videoram; - int code = videoram[tile_index] + ((m_charbank & 0x03) << 8); + int code = m_videoram[tile_index] + ((m_charbank & 0x03) << 8); int color = ((code & 0x3c0) >> 6) + 16 * m_charpalbank; int flags = m_flipscreen ? (TILE_FLIPX | TILE_FLIPY) : 0; @@ -150,13 +148,15 @@ void gsword_state::video_start() { m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gsword_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); + + save_item(NAME(m_charbank)); + save_item(NAME(m_charpalbank)); + save_item(NAME(m_flipscreen)); } void gsword_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { - int offs; - - for (offs = 0; offs < m_spritexy_ram.bytes() - 1; offs+=2) + for (int offs = 0; offs < m_spritexy_ram.bytes() - 1; offs+=2) { int sx,sy,flipx,flipy,spritebank,tile,color; -- cgit v1.2.3 From f9485757a8fceab1368c6901575d769f8e0cc87e Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Feb 2015 17:44:22 +0100 Subject: gladiatr.c: added save state support (nw) --- src/mame/drivers/gladiatr.c | 85 +++++++++++++++++++++++--------------------- src/mame/includes/gladiatr.h | 85 ++++++++++++++++++++++++-------------------- src/mame/video/gladiatr.c | 25 ++++++++++--- 3 files changed, 111 insertions(+), 84 deletions(-) diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c index 321f7037766..f571c5a6a77 100644 --- a/src/mame/drivers/gladiatr.c +++ b/src/mame/drivers/gladiatr.c @@ -9,7 +9,7 @@ Credits: input port patches, panning fix, sprite banking, Golden Castle Rom Set Support - Phil Stroffolino: palette, sprites, misc video driver fixes -- Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation,ADPCM with MC6809 +- Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation, ADPCM with MC6809 - Tomasz Slanina preliminary Ping Pong King driver - Nicola Salmoria clean up @@ -17,7 +17,7 @@ special thanks to: - Camilty for precious hardware information and screenshots - Jason Richmond for hardware information and misc. notes - Joe Rounceville for schematics -- and everyone else who'se offered support along the way! +- and everyone else who's offered support along the way! *************************************************************************** @@ -268,7 +268,7 @@ WRITE_LINE_MEMBER(gladiatr_state::gladiator_ym_irq) } /*Sound Functions*/ -WRITE8_MEMBER(gladiatr_state::glad_adpcm_w) +WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w) { UINT8 *rom = memregion("audiocpu")->base() + 0x10000; @@ -280,13 +280,13 @@ WRITE8_MEMBER(gladiatr_state::glad_adpcm_w) m_msm->vclk_w (BIT(data, 4)); /* bit4 */ } -WRITE8_MEMBER(gladiatr_state::glad_cpu_sound_command_w) +WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w) { soundlatch_byte_w(space,0,data); m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -READ8_MEMBER(gladiatr_state::glad_cpu_sound_command_r) +READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r) { m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return soundlatch_byte_r(space,0); @@ -299,7 +299,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_flipscreen_w) #if 1 -/* !!!!! patch to IRQ timming for 2nd CPU !!!!! */ +/* !!!!! patch to IRQ timing for 2nd CPU !!!!! */ WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w) { m_subcpu->set_input_line(0, HOLD_LINE); @@ -312,7 +312,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w) -WRITE8_MEMBER(gladiatr_state::qx0_w) +WRITE8_MEMBER(gladiatr_state::ppking_qx0_w) { if(!offset) { @@ -321,7 +321,7 @@ WRITE8_MEMBER(gladiatr_state::qx0_w) } } -WRITE8_MEMBER(gladiatr_state::qx1_w) +WRITE8_MEMBER(gladiatr_state::ppking_qx1_w) { if(!offset) { @@ -330,15 +330,15 @@ WRITE8_MEMBER(gladiatr_state::qx1_w) } } -WRITE8_MEMBER(gladiatr_state::qx2_w){ } +WRITE8_MEMBER(gladiatr_state::ppking_qx2_w){ } -WRITE8_MEMBER(gladiatr_state::qx3_w){ } +WRITE8_MEMBER(gladiatr_state::ppking_qx3_w){ } -READ8_MEMBER(gladiatr_state::qx2_r){ return machine().rand(); } +READ8_MEMBER(gladiatr_state::ppking_qx2_r){ return machine().rand(); } -READ8_MEMBER(gladiatr_state::qx3_r){ return machine().rand()&0xf; } +READ8_MEMBER(gladiatr_state::ppking_qx3_r){ return machine().rand()&0xf; } -READ8_MEMBER(gladiatr_state::qx0_r) +READ8_MEMBER(gladiatr_state::ppking_qx0_r) { if(!offset) return m_data1; @@ -346,7 +346,7 @@ READ8_MEMBER(gladiatr_state::qx0_r) return m_flag2; } -READ8_MEMBER(gladiatr_state::qx1_r) +READ8_MEMBER(gladiatr_state::ppking_qx1_r) { if(!offset) return m_data2; @@ -364,10 +364,10 @@ static ADDRESS_MAP_START( ppking_cpu1_map, AS_PROGRAM, 8, gladiatr_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram") + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") + AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ ADDRESS_MAP_END @@ -379,19 +379,19 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, gladiatr_state ) // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w) + AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) - AM_RANGE(0xc09e, 0xc09f) AM_READ(qx0_r) AM_WRITE(qx0_w) + AM_RANGE(0xc09e, 0xc09f) AM_READ(ppking_qx0_r) AM_WRITE(ppking_qx0_w) AM_RANGE(0xc0bf, 0xc0bf) AM_NOP ADDRESS_MAP_END static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, gladiatr_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x20, 0x21) AM_READ(qx1_r) AM_WRITE(qx1_w) + AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w) AM_RANGE(0x40, 0x40) AM_READNOP - AM_RANGE(0x60, 0x61) AM_READWRITE(qx2_r,qx2_w) - AM_RANGE(0x80, 0x81) AM_READWRITE(qx3_r,qx3_w) + AM_RANGE(0x60, 0x61) AM_READWRITE(ppking_qx2_r,ppking_qx2_w) + AM_RANGE(0x80, 0x81) AM_READWRITE(ppking_qx3_r,ppking_qx3_w) ADDRESS_MAP_END @@ -402,10 +402,10 @@ static ADDRESS_MAP_START( gladiatr_cpu1_map, AS_PROGRAM, 8, gladiatr_state ) AM_RANGE(0x6000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xcc00, 0xcfff) AM_WRITE(gladiatr_video_registers_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram") - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram") + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") + AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ ADDRESS_MAP_END @@ -415,15 +415,15 @@ static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, gladiatr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( gladiatr_cpu3_map, AS_PROGRAM, 8, gladiatr_state ) - AM_RANGE(0x1000, 0x1fff) AM_WRITE(glad_adpcm_w) - AM_RANGE(0x2000, 0x2fff) AM_READ(glad_cpu_sound_command_r) + AM_RANGE(0x1000, 0x1fff) AM_WRITE(gladiator_adpcm_w) + AM_RANGE(0x2000, 0x2fff) AM_READ(gladiator_cpu_sound_command_r) AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank2") ADDRESS_MAP_END static ADDRESS_MAP_START( gladiatr_cpu1_io, AS_IO, 8, gladiatr_state ) // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w) + AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) AM_RANGE(0xc001, 0xc001) AM_WRITE(gladiatr_spritebank_w) AM_RANGE(0xc002, 0xc002) AM_WRITE(gladiatr_bankswitch_w) AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */ @@ -440,7 +440,7 @@ static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state ) AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) AM_RANGE(0xa0, 0xa7) AM_NOP // filters on sound output - AM_RANGE(0xe0, 0xe0) AM_WRITE(glad_cpu_sound_command_w) + AM_RANGE(0xe0, 0xe0) AM_WRITE(gladiator_cpu_sound_command_w) ADDRESS_MAP_END @@ -611,7 +611,7 @@ GFXDECODE_END -READ8_MEMBER(gladiatr_state::f1_r) +READ8_MEMBER(gladiatr_state::ppking_f1_r) { return machine().rand(); } @@ -655,8 +655,8 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ - MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, f1_r)) - MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, f1_r)) + MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, ppking_f1_r)) + MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, ppking_f1_r)) MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(1, "mono", 0.60) MCFG_SOUND_ROUTE(2, "mono", 0.60) @@ -1001,7 +1001,7 @@ DRIVER_INIT_MEMBER(gladiatr_state,gladiatr) } -READ8_MEMBER(gladiatr_state::f6a3_r) +READ8_MEMBER(gladiatr_state::ppking_f6a3_r) { if(space.device().safe_pcbase()==0x8e) m_nvram[0x6a3]=1; @@ -1031,13 +1031,16 @@ DRIVER_INIT_MEMBER(gladiatr_state,ppking) rom[i+2*j*0x2000] = rom[i+j*0x2000]; } } - m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(gladiatr_state::f6a3_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(gladiatr_state::ppking_f6a3_r),this)); + + save_item(NAME(m_data1)); + save_item(NAME(m_data2)); } -GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", GAME_NOT_WORKING) -GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", 0 ) -GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", 0 ) -GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", 0 ) -GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", 0 ) // incomplete dump +GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) +GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", GAME_SUPPORTS_SAVE ) +GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", GAME_SUPPORTS_SAVE ) +GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", GAME_SUPPORTS_SAVE ) // incomplete dump diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h index ab430cce19d..e903800fc9f 100644 --- a/src/mame/includes/gladiatr.h +++ b/src/mame/includes/gladiatr.h @@ -5,24 +5,32 @@ class gladiatr_state : public driver_device public: gladiatr_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_nvram(*this, "nvram") , - m_spriteram(*this, "spriteram"), - m_videoram(*this, "videoram"), - m_colorram(*this, "colorram"), - m_textram(*this, "textram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_subcpu(*this, "sub"), m_msm(*this, "msm"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram") { } + m_nvram(*this, "nvram") , + m_spriteram(*this, "spriteram"), + m_videoram(*this, "videoram"), + m_colorram(*this, "colorram"), + m_textram(*this, "textram"), + m_generic_paletteram_8(*this, "paletteram") { } + + required_device m_maincpu; + required_device m_audiocpu; + required_device m_subcpu; + required_device m_msm; + required_device m_gfxdecode; + required_device m_palette; - required_shared_ptr m_nvram; + required_shared_ptr m_nvram; required_shared_ptr m_spriteram; required_shared_ptr m_videoram; required_shared_ptr m_colorram; required_shared_ptr m_textram; + required_shared_ptr m_generic_paletteram_8; int m_data1; int m_data2; @@ -40,54 +48,55 @@ public: int m_fg_tile_bank; int m_bg_tile_bank; + // common + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(colorram_w); + DECLARE_WRITE8_MEMBER(textram_w); + DECLARE_WRITE8_MEMBER(paletteram_w); + DECLARE_WRITE8_MEMBER(spritebuffer_w); - DECLARE_READ8_MEMBER( gladiator_dsw1_r ); - DECLARE_READ8_MEMBER( gladiator_dsw2_r ); - DECLARE_READ8_MEMBER( gladiator_controls_r ); - DECLARE_READ8_MEMBER( gladiator_button3_r ); - DECLARE_WRITE8_MEMBER(gladiatr_videoram_w); - DECLARE_WRITE8_MEMBER(gladiatr_colorram_w); - DECLARE_WRITE8_MEMBER(gladiatr_textram_w); - DECLARE_WRITE8_MEMBER(gladiatr_paletteram_w); - DECLARE_WRITE8_MEMBER(gladiatr_spritebuffer_w); + // gladiator specific + DECLARE_READ8_MEMBER(gladiator_dsw1_r); + DECLARE_READ8_MEMBER(gladiator_dsw2_r); + DECLARE_READ8_MEMBER(gladiator_controls_r); + DECLARE_READ8_MEMBER(gladiator_button3_r); DECLARE_WRITE8_MEMBER(gladiatr_spritebank_w); - DECLARE_WRITE8_MEMBER(ppking_video_registers_w); DECLARE_WRITE8_MEMBER(gladiatr_video_registers_w); DECLARE_WRITE8_MEMBER(gladiatr_bankswitch_w); - DECLARE_WRITE8_MEMBER(glad_cpu_sound_command_w); - DECLARE_READ8_MEMBER(glad_cpu_sound_command_r); + DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w); + DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r); DECLARE_WRITE8_MEMBER(gladiatr_flipscreen_w); DECLARE_WRITE8_MEMBER(gladiatr_irq_patch_w); - DECLARE_WRITE8_MEMBER(qx0_w); - DECLARE_WRITE8_MEMBER(qx1_w); - DECLARE_WRITE8_MEMBER(qx2_w); - DECLARE_WRITE8_MEMBER(qx3_w); - DECLARE_READ8_MEMBER(qx2_r); - DECLARE_READ8_MEMBER(qx3_r); - DECLARE_READ8_MEMBER(qx0_r); - DECLARE_READ8_MEMBER(qx1_r); - DECLARE_READ8_MEMBER(f6a3_r); DECLARE_WRITE8_MEMBER(gladiator_int_control_w); - DECLARE_WRITE8_MEMBER(glad_adpcm_w); - DECLARE_READ8_MEMBER(f1_r); + DECLARE_WRITE8_MEMBER(gladiator_adpcm_w); + DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); + + // ppking specific + DECLARE_READ8_MEMBER(ppking_f1_r); + DECLARE_READ8_MEMBER(ppking_f6a3_r); + DECLARE_WRITE8_MEMBER(ppking_qx0_w); + DECLARE_WRITE8_MEMBER(ppking_qx1_w); + DECLARE_WRITE8_MEMBER(ppking_qx2_w); + DECLARE_WRITE8_MEMBER(ppking_qx3_w); + DECLARE_READ8_MEMBER(ppking_qx2_r); + DECLARE_READ8_MEMBER(ppking_qx3_r); + DECLARE_READ8_MEMBER(ppking_qx0_r); + DECLARE_READ8_MEMBER(ppking_qx1_r); + DECLARE_WRITE8_MEMBER(ppking_video_registers_w); + DECLARE_DRIVER_INIT(gladiatr); DECLARE_DRIVER_INIT(ppking); + TILE_GET_INFO_MEMBER(bg_get_tile_info); TILE_GET_INFO_MEMBER(fg_get_tile_info); + DECLARE_MACHINE_RESET(ppking); DECLARE_VIDEO_START(ppking); DECLARE_MACHINE_RESET(gladiator); DECLARE_VIDEO_START(gladiatr); + UINT32 screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); void swap_block(UINT8 *src1,UINT8 *src2,int len); - DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); - required_device m_maincpu; - required_device m_audiocpu; - required_device m_subcpu; - required_device m_msm; - required_device m_gfxdecode; - required_device m_palette; - required_shared_ptr m_generic_paletteram_8; }; diff --git a/src/mame/video/gladiatr.c b/src/mame/video/gladiatr.c index a727cbd066b..34e6c2084b0 100644 --- a/src/mame/video/gladiatr.c +++ b/src/mame/video/gladiatr.c @@ -50,6 +50,11 @@ VIDEO_START_MEMBER(gladiatr_state,ppking) m_bg_tilemap->set_scroll_cols(0x10); m_sprite_bank = 1; + + save_item(NAME(m_video_attributes)); + save_item(NAME(m_fg_scrolly)); + save_item(NAME(m_sprite_buffer)); + save_item(NAME(m_fg_tile_bank)); } VIDEO_START_MEMBER(gladiatr_state,gladiatr) @@ -63,6 +68,16 @@ VIDEO_START_MEMBER(gladiatr_state,gladiatr) m_fg_tilemap->set_scrolldx(-0x30, 0x12f); m_sprite_bank = 2; + + save_item(NAME(m_video_attributes)); + save_item(NAME(m_fg_scrollx)); + save_item(NAME(m_fg_scrolly)); + save_item(NAME(m_bg_scrollx)); + save_item(NAME(m_bg_scrolly)); + save_item(NAME(m_sprite_bank)); + save_item(NAME(m_sprite_buffer)); + save_item(NAME(m_fg_tile_bank)); + save_item(NAME(m_bg_tile_bank)); } @@ -73,25 +88,25 @@ VIDEO_START_MEMBER(gladiatr_state,gladiatr) ***************************************************************************/ -WRITE8_MEMBER(gladiatr_state::gladiatr_videoram_w) +WRITE8_MEMBER(gladiatr_state::videoram_w) { m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(gladiatr_state::gladiatr_colorram_w) +WRITE8_MEMBER(gladiatr_state::colorram_w) { m_colorram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(gladiatr_state::gladiatr_textram_w) +WRITE8_MEMBER(gladiatr_state::textram_w) { m_textram[offset] = data; m_fg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(gladiatr_state::gladiatr_paletteram_w) +WRITE8_MEMBER(gladiatr_state::paletteram_w) { int r,g,b; @@ -110,7 +125,7 @@ WRITE8_MEMBER(gladiatr_state::gladiatr_paletteram_w) } -WRITE8_MEMBER(gladiatr_state::gladiatr_spritebuffer_w) +WRITE8_MEMBER(gladiatr_state::spritebuffer_w) { m_sprite_buffer = data & 1; } -- cgit v1.2.3 From 217c569fd26c655910587f6f64fee6d29d861954 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Feb 2015 17:45:32 +0100 Subject: mastboy.c, xorworld.c: added save state support (nw) saa1099.c: added save state support (nw) --- src/emu/bus/isa/gblaster.c | 8 +-- src/emu/bus/isa/sblaster.c | 8 +-- src/emu/sound/saa1099.c | 45 ++++++++++++--- src/emu/sound/saa1099.h | 6 +- src/mame/drivers/bingor.c | 4 +- src/mame/drivers/jpmsys5.c | 4 +- src/mame/drivers/manohman.c | 4 +- src/mame/drivers/mastboy.c | 131 ++++++++++++++++++++++++------------------- src/mame/drivers/mpu4vid.c | 16 +++--- src/mame/drivers/xorworld.c | 18 +++--- src/mame/includes/xorworld.h | 32 ++++++----- src/mame/video/xorworld.c | 23 +++----- src/mess/drivers/samcoupe.c | 4 +- 13 files changed, 176 insertions(+), 127 deletions(-) diff --git a/src/emu/bus/isa/gblaster.c b/src/emu/bus/isa/gblaster.c index 1f644c704e5..20b406391eb 100644 --- a/src/emu/bus/isa/gblaster.c +++ b/src/emu/bus/isa/gblaster.c @@ -33,8 +33,8 @@ WRITE8_MEMBER( isa8_gblaster_device::saa1099_1_16_w ) { switch(offset) { - case 0 : m_saa1099_1->saa1099_control_w( space, offset, data ); break; - case 1 : m_saa1099_1->saa1099_data_w( space, offset, data ); break; + case 0 : m_saa1099_1->control_w( space, offset, data ); break; + case 1 : m_saa1099_1->data_w( space, offset, data ); break; } } @@ -42,8 +42,8 @@ WRITE8_MEMBER( isa8_gblaster_device::saa1099_2_16_w ) { switch(offset) { - case 0 : m_saa1099_2->saa1099_control_w( space, offset, data ); break; - case 1 : m_saa1099_2->saa1099_data_w( space, offset, data ); break; + case 0 : m_saa1099_2->control_w( space, offset, data ); break; + case 1 : m_saa1099_2->data_w( space, offset, data ); break; } } diff --git a/src/emu/bus/isa/sblaster.c b/src/emu/bus/isa/sblaster.c index e6056a27e0a..398ff4615c6 100644 --- a/src/emu/bus/isa/sblaster.c +++ b/src/emu/bus/isa/sblaster.c @@ -148,8 +148,8 @@ WRITE8_MEMBER( isa8_sblaster1_0_device::saa1099_1_16_w ) { switch(offset) { - case 0 : m_saa1099_1->saa1099_control_w( space, offset, data ); break; - case 1 : m_saa1099_1->saa1099_data_w( space, offset, data ); break; + case 0 : m_saa1099_1->control_w( space, offset, data ); break; + case 1 : m_saa1099_1->data_w( space, offset, data ); break; } } @@ -157,8 +157,8 @@ WRITE8_MEMBER( isa8_sblaster1_0_device::saa1099_2_16_w ) { switch(offset) { - case 0 : m_saa1099_2->saa1099_control_w( space, offset, data ); break; - case 1 : m_saa1099_2->saa1099_data_w( space, offset, data ); break; + case 0 : m_saa1099_2->control_w( space, offset, data ); break; + case 1 : m_saa1099_2->data_w( space, offset, data ); break; } } diff --git a/src/emu/sound/saa1099.c b/src/emu/sound/saa1099.c index 23e924862e9..5fcd843915a 100644 --- a/src/emu/sound/saa1099.c +++ b/src/emu/sound/saa1099.c @@ -161,6 +161,37 @@ void saa1099_device::device_start() /* for each chip allocate one stream */ m_stream = stream_alloc(0, 2, m_sample_rate); + + save_item(NAME(m_noise_params)); + save_item(NAME(m_env_enable)); + save_item(NAME(m_env_reverse_right)); + save_item(NAME(m_env_mode)); + save_item(NAME(m_env_bits)); + save_item(NAME(m_env_clock)); + save_item(NAME(m_env_step)); + save_item(NAME(m_all_ch_enable)); + save_item(NAME(m_sync_state)); + save_item(NAME(m_selected_reg)); + + for (int i = 0; i < 6; i++) + { + save_item(NAME(m_channels[i].frequency), i); + save_item(NAME(m_channels[i].freq_enable), i); + save_item(NAME(m_channels[i].noise_enable), i); + save_item(NAME(m_channels[i].octave), i); + save_item(NAME(m_channels[i].amplitude), i); + save_item(NAME(m_channels[i].envelope), i); + save_item(NAME(m_channels[i].counter), i); + save_item(NAME(m_channels[i].freq), i); + save_item(NAME(m_channels[i].level), i); + } + + for (int i = 0; i < 2; i++) + { + save_item(NAME(m_noise[i].counter), i); + save_item(NAME(m_noise[i].freq), i); + save_item(NAME(m_noise[i].level), i); + } } @@ -217,9 +248,9 @@ void saa1099_device::sound_stream_update(sound_stream &stream, stream_sample_t * /* eventually clock the envelope counters */ if (ch == 1 && m_env_clock[0] == 0) - saa1099_envelope(0); + envelope_w(0); if (ch == 4 && m_env_clock[1] == 0) - saa1099_envelope(1); + envelope_w(1); } /* if the noise is enabled */ @@ -266,7 +297,7 @@ void saa1099_device::sound_stream_update(sound_stream &stream, stream_sample_t * } -void saa1099_device::saa1099_envelope(int ch) +void saa1099_device::envelope_w(int ch) { if (m_env_enable[ch]) { @@ -309,7 +340,7 @@ void saa1099_device::saa1099_envelope(int ch) } -WRITE8_MEMBER( saa1099_device::saa1099_control_w ) +WRITE8_MEMBER( saa1099_device::control_w ) { if ((data & 0xff) > 0x1c) { @@ -322,14 +353,14 @@ WRITE8_MEMBER( saa1099_device::saa1099_control_w ) { /* clock the envelope channels */ if (m_env_clock[0]) - saa1099_envelope(0); + envelope_w(0); if (m_env_clock[1]) - saa1099_envelope(1); + envelope_w(1); } } -WRITE8_MEMBER( saa1099_device::saa1099_data_w ) +WRITE8_MEMBER( saa1099_device::data_w ) { int reg = m_selected_reg; int ch; diff --git a/src/emu/sound/saa1099.h b/src/emu/sound/saa1099.h index 75452e2c0ce..b68626dee7a 100644 --- a/src/emu/sound/saa1099.h +++ b/src/emu/sound/saa1099.h @@ -80,11 +80,11 @@ protected: virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); public: - DECLARE_WRITE8_MEMBER( saa1099_control_w ); - DECLARE_WRITE8_MEMBER( saa1099_data_w ); + DECLARE_WRITE8_MEMBER( control_w ); + DECLARE_WRITE8_MEMBER( data_w ); private: - void saa1099_envelope(int ch); + void envelope_w(int ch); private: sound_stream *m_stream; /* our stream */ diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c index e4c6547c8b8..184f0cd9271 100644 --- a/src/mame/drivers/bingor.c +++ b/src/mame/drivers/bingor.c @@ -526,8 +526,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( bingor_io, AS_IO, 16, bingor_state ) // AM_RANGE(0x0000, 0x00ff) AM_READ(test_r ) - AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) // AM_RANGE(0x0200, 0x0201) AM_READ(test_r ) ADDRESS_MAP_END diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c index 60b28265a9a..bd335216230 100644 --- a/src/mame/drivers/jpmsys5.c +++ b/src/mame/drivers/jpmsys5.c @@ -295,8 +295,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( 68000_awp_map_saa, AS_PROGRAM, 16, jpmsys5_state ) JPM_SYS5_COMMON_MAP - AM_RANGE(0x0460a0, 0x0460a1) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x0460a2, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x0460a0, 0x0460a1) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x0460a2, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) // do the SAA boards have the UPD? ADDRESS_MAP_END diff --git a/src/mame/drivers/manohman.c b/src/mame/drivers/manohman.c index c57131d7e99..c4804d68e52 100644 --- a/src/mame/drivers/manohman.c +++ b/src/mame/drivers/manohman.c @@ -155,8 +155,8 @@ public: static ADDRESS_MAP_START( manohman_map, AS_PROGRAM, 16, _manohman_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x100000, 0x100001) AM_NOP // smell to MAX696 watchdog... - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0x500000, 0x503fff) AM_RAM AM_RANGE(0x600006, 0x600007) AM_RAM // write bitpatterns to compare with the 500000-503ff8 RAM testing. // AM_RANGE(0xYYYYYY, 0xYYYYYY) AM_RAM diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c index 3b0f56ce36e..b7388588265 100644 --- a/src/mame/drivers/mastboy.c +++ b/src/mame/drivers/mastboy.c @@ -445,19 +445,25 @@ class mastboy_state : public driver_device public: mastboy_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_nvram(*this, "nvram") , - m_workram(*this, "workram"), - m_tileram(*this, "tileram"), - m_colram(*this, "colram"), m_maincpu(*this, "maincpu"), m_msm(*this, "msm"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_nvram(*this, "nvram") , + m_workram(*this, "workram"), + m_tileram(*this, "tileram"), + m_colram(*this, "colram") { } - required_shared_ptr m_nvram; + required_device m_maincpu; + required_device m_msm; + required_device m_gfxdecode; + required_device m_palette; + + required_shared_ptr m_nvram; required_shared_ptr m_workram; required_shared_ptr m_tileram; required_shared_ptr m_colram; + UINT8* m_vram; UINT8 m_bank; int m_irq0_ack; @@ -466,29 +472,29 @@ public: int m_m5205_part; int m_m5205_sambit0; int m_m5205_sambit1; + DECLARE_READ8_MEMBER(banked_ram_r); DECLARE_WRITE8_MEMBER(banked_ram_w); - DECLARE_WRITE8_MEMBER(mastboy_bank_w); - DECLARE_READ8_MEMBER(mastboy_backupram_r); - DECLARE_WRITE8_MEMBER(mastboy_backupram_w); + DECLARE_WRITE8_MEMBER(bank_w); + DECLARE_READ8_MEMBER(backupram_r); + DECLARE_WRITE8_MEMBER(backupram_w); DECLARE_WRITE8_MEMBER(backupram_enable_w); - DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit0_w); - DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit1_w); - DECLARE_WRITE8_MEMBER(mastboy_msm5205_data_w); - DECLARE_WRITE8_MEMBER(mastboy_irq0_ack_w); - DECLARE_READ8_MEMBER(mastboy_port_38_read); - DECLARE_READ8_MEMBER(mastboy_nmi_read); - DECLARE_WRITE8_MEMBER(mastboy_msm5205_reset_w); - DECLARE_DRIVER_INIT(mastboy); + DECLARE_WRITE8_MEMBER(msm5205_sambit0_w); + DECLARE_WRITE8_MEMBER(msm5205_sambit1_w); + DECLARE_WRITE8_MEMBER(msm5205_data_w); + DECLARE_WRITE8_MEMBER(irq0_ack_w); + DECLARE_READ8_MEMBER(port_38_read); + DECLARE_READ8_MEMBER(nmi_read); + DECLARE_WRITE8_MEMBER(msm5205_reset_w); + DECLARE_WRITE_LINE_MEMBER(adpcm_int); + + virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); - UINT32 screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(mastboy_interrupt); - DECLARE_WRITE_LINE_MEMBER(mastboy_adpcm_int); - required_device m_maincpu; - required_device m_msm; - required_device m_gfxdecode; - required_device m_palette; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(interrupt); }; @@ -497,9 +503,11 @@ public: void mastboy_state::video_start() { m_gfxdecode->gfx(0)->set_source(m_vram); + + save_pointer(NAME(m_vram), 0x10000); } -UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 mastboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int y,x,i; int count = 0x000; @@ -609,7 +617,7 @@ WRITE8_MEMBER(mastboy_state::banked_ram_w) } } -WRITE8_MEMBER(mastboy_state::mastboy_bank_w) +WRITE8_MEMBER(mastboy_state::bank_w) { // controls access to banked ram / rom m_bank = data; @@ -617,12 +625,12 @@ WRITE8_MEMBER(mastboy_state::mastboy_bank_w) /* Backup RAM access */ -READ8_MEMBER(mastboy_state::mastboy_backupram_r) +READ8_MEMBER(mastboy_state::backupram_r) { return m_nvram[offset]; } -WRITE8_MEMBER(mastboy_state::mastboy_backupram_w) +WRITE8_MEMBER(mastboy_state::backupram_w) { // if (m_backupram_enabled) // { @@ -643,7 +651,7 @@ WRITE8_MEMBER(mastboy_state::backupram_enable_w) /* MSM5205 Related */ -WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w) +WRITE8_MEMBER(mastboy_state::msm5205_sambit0_w) { m_m5205_sambit0 = data & 1; m_msm->playmode_w((1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) ); @@ -651,7 +659,7 @@ WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w) logerror("msm5205 samplerate bit 0, set to %02x\n",data); } -WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w) +WRITE8_MEMBER(mastboy_state::msm5205_sambit1_w) { m_m5205_sambit1 = data & 1; @@ -660,18 +668,18 @@ WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w) logerror("msm5205 samplerate bit 0, set to %02x\n",data); } -WRITE8_MEMBER(mastboy_state::mastboy_msm5205_reset_w) +WRITE8_MEMBER(mastboy_state::msm5205_reset_w) { m_m5205_part = 0; m_msm->reset_w(data & 1); } -WRITE8_MEMBER(mastboy_state::mastboy_msm5205_data_w) +WRITE8_MEMBER(mastboy_state::msm5205_data_w) { m_m5205_next = data; } -WRITE_LINE_MEMBER(mastboy_state::mastboy_adpcm_int) +WRITE_LINE_MEMBER(mastboy_state::adpcm_int) { m_msm->data_w(m_m5205_next); m_m5205_next >>= 4; @@ -684,14 +692,14 @@ WRITE_LINE_MEMBER(mastboy_state::mastboy_adpcm_int) /* Interrupt Handling */ -WRITE8_MEMBER(mastboy_state::mastboy_irq0_ack_w) +WRITE8_MEMBER(mastboy_state::irq0_ack_w) { m_irq0_ack = data; if ((data & 1) == 1) m_maincpu->set_input_line(0, CLEAR_LINE); } -INTERRUPT_GEN_MEMBER(mastboy_state::mastboy_interrupt) +INTERRUPT_GEN_MEMBER(mastboy_state::interrupt) { if ((m_irq0_ack & 1) == 1) { @@ -711,21 +719,21 @@ static ADDRESS_MAP_START( mastboy_map, AS_PROGRAM, 8, mastboy_state ) AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write - AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram") + AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(backupram_r,backupram_w) AM_SHARE("nvram") AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1") AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2") AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1") AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2") - AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w) - AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, saa1099_data_w) - AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, saa1099_control_w) - AM_RANGE(0xff830, 0xff830) AM_WRITE(mastboy_msm5205_data_w) - AM_RANGE(0xff838, 0xff838) AM_WRITE(mastboy_irq0_ack_w) - AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_mastboy_m5205_sambit0_w) - AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w) - AM_RANGE(0xff83b, 0xff83b) AM_WRITE(mastboy_msm5205_reset_w) + AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w) + AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, data_w) + AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, control_w) + AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w) + AM_RANGE(0xff838, 0xff838) AM_WRITE(irq0_ack_w) + AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_sambit0_w) + AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_sambit1_w) + AM_RANGE(0xff83b, 0xff83b) AM_WRITE(msm5205_reset_w) AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w) AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM @@ -733,20 +741,20 @@ ADDRESS_MAP_END /* Ports */ -READ8_MEMBER(mastboy_state::mastboy_port_38_read) +READ8_MEMBER(mastboy_state::port_38_read) { return 0x00; } -READ8_MEMBER(mastboy_state::mastboy_nmi_read) +READ8_MEMBER(mastboy_state::nmi_read) { // this is read in the NMI, it's related to the Z180 MMU I think, must return right value or game jumps to 0000 return 0x00; } static ADDRESS_MAP_START( mastboy_io_map, AS_IO, 8, mastboy_state ) - AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read) - AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read) + AM_RANGE(0x38, 0x38) AM_READ(port_38_read) + AM_RANGE(0x39, 0x39) AM_READ(nmi_read) ADDRESS_MAP_END /* Input Ports */ @@ -866,6 +874,19 @@ GFXDECODE_END /* Machine Functions / Driver */ +void mastboy_state::machine_start() +{ + m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way + + save_item(NAME(m_bank)); + save_item(NAME(m_irq0_ack)); + save_item(NAME(m_backupram_enabled)); + save_item(NAME(m_m5205_next)); + save_item(NAME(m_m5205_part)); + save_item(NAME(m_m5205_sambit0)); + save_item(NAME(m_m5205_sambit1)); +} + void mastboy_state::machine_reset() { /* clear some ram */ @@ -885,7 +906,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state ) MCFG_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */ MCFG_CPU_PROGRAM_MAP(mastboy_map) MCFG_CPU_IO_MAP(mastboy_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, mastboy_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, interrupt) MCFG_NVRAM_ADD_1FILL("nvram") @@ -896,7 +917,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy) + MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastboy) @@ -909,7 +930,7 @@ static MACHINE_CONFIG_START( mastboy, mastboy_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, mastboy_adpcm_int)) /* interrupt function */ + MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, adpcm_int)) /* interrupt function */ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 4KHz 4-bit */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -993,10 +1014,6 @@ ROM_START( mastboyi ) /* 0x1c0000 to 0x1fffff EMPTY */ ROM_END -DRIVER_INIT_MEMBER(mastboy_state,mastboy) -{ - m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way -} -GAME( 1991, mastboy, 0, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", 0 ) -GAME( 1991, mastboyi, mastboy, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", 0 ) +GAME( 1991, mastboy, 0, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", GAME_SUPPORTS_SAVE ) +GAME( 1991, mastboyi, mastboy, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mpu4vid.c b/src/mame/drivers/mpu4vid.c index 44f63db7ca2..d8f214d4e1b 100644 --- a/src/mame/drivers/mpu4vid.c +++ b/src/mame/drivers/mpu4vid.c @@ -1283,8 +1283,8 @@ static ADDRESS_MAP_START( mpu4_68k_map, AS_PROGRAM, 16, mpu4vid_state ) AM_RANGE(0x000000, 0x7fffff) AM_ROM AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") // AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ @@ -1303,8 +1303,8 @@ static ADDRESS_MAP_START( mpu4oki_68k_map, AS_PROGRAM, 16, mpu4vid_state ) AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */ // AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */ AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, mpu4_vid_scn2674_r, mpu4_vid_scn2674_w,0x00ff) @@ -1325,8 +1325,8 @@ static ADDRESS_MAP_START( bwbvid_68k_map, AS_PROGRAM, 16, mpu4vid_state ) AM_RANGE(0x000000, 0x7fffff) AM_ROM AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) // AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ @@ -1343,8 +1343,8 @@ static ADDRESS_MAP_START( bwbvid5_68k_map, AS_PROGRAM, 16, mpu4vid_state ) AM_RANGE(0x000000, 0x7fffff) AM_ROM AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ - AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c index db292d82250..512a4cf47ee 100644 --- a/src/mame/drivers/xorworld.c +++ b/src/mame/drivers/xorworld.c @@ -62,12 +62,12 @@ WRITE16_MEMBER(xorworld_state::eeprom_data_w) m_eeprom->di_write(data & 0x01); } -WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w) +WRITE16_MEMBER(xorworld_state::irq2_ack_w) { m_maincpu->set_input_line(2, CLEAR_LINE); } -WRITE16_MEMBER(xorworld_state::xorworld_irq6_ack_w) +WRITE16_MEMBER(xorworld_state::irq6_ack_w) { m_maincpu->set_input_line(6, CLEAR_LINE); } @@ -77,15 +77,15 @@ static ADDRESS_MAP_START( xorworld_map, AS_PROGRAM, 16, xorworld_state ) AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1") AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2") AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW") - AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) - AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) + AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) + AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) AM_RANGE(0xa00008, 0xa00009) AM_WRITE(eeprom_chip_select_w) AM_RANGE(0xa0000a, 0xa0000b) AM_WRITE(eeprom_serial_clock_w) AM_RANGE(0xa0000c, 0xa0000d) AM_WRITE(eeprom_data_w) - AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_SHARE("videoram") + AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xffc880, 0xffc881) AM_WRITE(xorworld_irq2_ack_w) - AM_RANGE(0xffc882, 0xffc883) AM_WRITE(xorworld_irq6_ack_w) + AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w) + AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w) AM_RANGE(0xffc884, 0xffffff) AM_RAM ADDRESS_MAP_END @@ -182,7 +182,7 @@ static MACHINE_CONFIG_START( xorworld, xorworld_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld) + MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", xorworld) @@ -235,4 +235,4 @@ DRIVER_INIT_MEMBER(xorworld_state,xorworld) } -GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", 0 ) +GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/xorworld.h b/src/mame/includes/xorworld.h index 76413f3077e..fcbdb9afe35 100644 --- a/src/mame/includes/xorworld.h +++ b/src/mame/includes/xorworld.h @@ -5,30 +5,36 @@ class xorworld_state : public driver_device public: xorworld_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_eeprom(*this, "eeprom"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram"), + m_spriteram(*this, "spriteram") { } + required_device m_maincpu; + required_device m_eeprom; + required_device m_gfxdecode; + required_device m_palette; + required_shared_ptr m_videoram; - tilemap_t *m_bg_tilemap; required_shared_ptr m_spriteram; - DECLARE_WRITE16_MEMBER(xorworld_irq2_ack_w); - DECLARE_WRITE16_MEMBER(xorworld_irq6_ack_w); - DECLARE_WRITE16_MEMBER(xorworld_videoram16_w); + + tilemap_t *m_bg_tilemap; + + DECLARE_WRITE16_MEMBER(irq2_ack_w); + DECLARE_WRITE16_MEMBER(irq6_ack_w); + DECLARE_WRITE16_MEMBER(videoram_w); DECLARE_WRITE16_MEMBER(eeprom_chip_select_w); DECLARE_WRITE16_MEMBER(eeprom_serial_clock_w); DECLARE_WRITE16_MEMBER(eeprom_data_w); - DECLARE_DRIVER_INIT(xorworld); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + + DECLARE_DRIVER_INIT(xorworld); virtual void video_start(); DECLARE_PALETTE_INIT(xorworld); - UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); - required_device m_maincpu; - required_device m_eeprom; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/video/xorworld.c b/src/mame/video/xorworld.c index e51243b613f..8753a94684a 100644 --- a/src/mame/video/xorworld.c +++ b/src/mame/video/xorworld.c @@ -49,10 +49,9 @@ PALETTE_INIT_MEMBER(xorworld_state, xorworld) } } -WRITE16_MEMBER(xorworld_state::xorworld_videoram16_w) +WRITE16_MEMBER(xorworld_state::videoram_w) { - UINT16 *videoram = m_videoram; - COMBINE_DATA(&videoram[offset]); + COMBINE_DATA(&m_videoram[offset]); m_bg_tilemap->mark_tile_dirty(offset); } @@ -68,8 +67,7 @@ WRITE16_MEMBER(xorworld_state::xorworld_videoram16_w) TILE_GET_INFO_MEMBER(xorworld_state::get_bg_tile_info) { - UINT16 *videoram = m_videoram; - int data = videoram[tile_index]; + int data = m_videoram[tile_index]; int code = data & 0x0fff; SET_TILE_INFO_MEMBER(0, code, data >> 12, 0); @@ -96,21 +94,18 @@ void xorworld_state::video_start() void xorworld_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) { - UINT16 *spriteram16 = m_spriteram; - int i; - - for (i = 0; i < 0x40; i += 2) + for (int i = 0; i < 0x40; i += 2) { - int sx = spriteram16[i] & 0x00ff; - int sy = 240 - (((spriteram16[i] & 0xff00) >> 8) & 0xff); - int code = (spriteram16[i+1] & 0x0ffc) >> 2; - int color = (spriteram16[i+1] & 0xf000) >> 12; + int sx = m_spriteram[i] & 0x00ff; + int sy = 240 - (((m_spriteram[i] & 0xff00) >> 8) & 0xff); + int code = (m_spriteram[i+1] & 0x0ffc) >> 2; + int color = (m_spriteram[i+1] & 0xf000) >> 12; m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, 0, 0, sx, sy, 0); } } -UINT32 xorworld_state::screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 xorworld_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); draw_sprites(bitmap, cliprect); diff --git a/src/mess/drivers/samcoupe.c b/src/mess/drivers/samcoupe.c index 89b4fb29fde..512ed86cd10 100644 --- a/src/mess/drivers/samcoupe.c +++ b/src/mess/drivers/samcoupe.c @@ -334,8 +334,8 @@ static ADDRESS_MAP_START( samcoupe_io, AS_IO, 8, samcoupe_state ) AM_RANGE(0x00fd, 0x00fd) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(samcoupe_midi_r, samcoupe_midi_w) AM_RANGE(0x00fe, 0x00fe) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(samcoupe_keyboard_r, samcoupe_border_w) AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READ(samcoupe_attributes_r) - AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, saa1099_data_w) - AM_RANGE(0x01ff, 0x01ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, saa1099_control_w) + AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, data_w) + AM_RANGE(0x01ff, 0x01ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, control_w) ADDRESS_MAP_END -- cgit v1.2.3 From 022a6f5c087ca5cfc8321bce74886850e6b1e646 Mon Sep 17 00:00:00 2001 From: Sandro Ronco Date: Wed, 11 Feb 2015 18:52:41 +0100 Subject: (MESS) gl6600cx: documented CPU type. [TeamEurope] --- src/mess/drivers/prestige.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c index 64be3224490..42b2a1bf5c4 100644 --- a/src/mess/drivers/prestige.c +++ b/src/mess/drivers/prestige.c @@ -874,4 +874,8 @@ COMP( 1996, gjrstar, 0, 0, prestige, prestige, driver_device, 0, COMP( 1996, gjrstar2, gjrstar, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior Redstar 2 (Germany)", GAME_IS_SKELETON) COMP( 1998, gjrstar3, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior Redstar 3 (Germany)", GAME_IS_SKELETON) COMP( 1998, gj5000, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Junior 5000 (Germany)", GAME_IS_SKELETON) + + +// gl6600cx use a NSC1028 system-on-a-chip designed by National Semiconductor specifically for VTech +// http://web.archive.org/web/19991127134657/http://www.national.com/news/item/0,1735,425,00.html COMP( 1999, gl6600cx, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Leader 6600CX (Germany)", GAME_IS_SKELETON) -- cgit v1.2.3 From 0f1bf3d5e639f278708eb4b6437000867ac132a9 Mon Sep 17 00:00:00 2001 From: Sandro Ronco Date: Wed, 11 Feb 2015 19:01:00 +0100 Subject: (MESS) New NOT WORKING systems ---------------------------------------------- Alesis MMT-8 --- src/mess/drivers/alesis.c | 132 +++++++++++++++++++++++++++++++++++++++++++++ src/mess/includes/alesis.h | 6 +++ src/mess/mess.lst | 1 + 3 files changed, 139 insertions(+) diff --git a/src/mess/drivers/alesis.c b/src/mess/drivers/alesis.c index b13bc16708c..2859a19ae79 100644 --- a/src/mess/drivers/alesis.c +++ b/src/mess/drivers/alesis.c @@ -8,6 +8,7 @@ http://www.vintagesynth.com/misc/hr16.php http://www.vintagesynth.com/misc/sr16.php + http://www.vintagesynth.com/misc/mmt8.php ****************************************************************************/ @@ -73,6 +74,49 @@ WRITE8_MEMBER( alesis_state::sr16_lcd_w ) m_lcdc->write(space, BIT(m_kb_matrix,7), data); } +WRITE8_MEMBER( alesis_state::mmt8_led_w ) +{ + output_set_value("play_led", data & 0x01 ? 0 : 1); + output_set_value("record_led" , data & 0x02 ? 0 : 1); + output_set_value("part_led", data & 0x04 ? 0 : 1); + output_set_value("edit_led", data & 0x08 ? 0 : 1); + output_set_value("song_led", data & 0x10 ? 0 : 1); + output_set_value("echo_led", data & 0x20 ? 0 : 1); + output_set_value("loop_led", data & 0x40 ? 0 : 1); + + m_leds = data; +} + +READ8_MEMBER( alesis_state::mmt8_led_r ) +{ + return m_leds; +} + +WRITE8_MEMBER( alesis_state::track_led_w ) +{ + for (int i=0; i<8; i++) + output_set_indexed_value("track_led", i + 1, BIT(data, i)); +} + +READ8_MEMBER( alesis_state::mmt8_p3_r ) +{ + // ---- -x-- Tape in + // ---- x--- Start/Stop input + UINT8 data = 0xff; + + data &= ~(m_cassette->input() > 0.01 ? 0x00 : 0x04); + + return data; +} + +WRITE8_MEMBER( alesis_state::mmt8_p3_w ) +{ + // ---x ---- Tape out + // --x- ---- Click out + + m_cassette->output(data & 0x10 ? -1.0 : +1.0); +} + static ADDRESS_MAP_START(hr16_mem, AS_PROGRAM, 8, alesis_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x7fff) AM_MIRROR(0x8000) AM_ROM @@ -108,6 +152,19 @@ static ADDRESS_MAP_START(sr16_io, AS_IO, 8, alesis_state) AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed) ADDRESS_MAP_END +static ADDRESS_MAP_START(mmt8_io, AS_IO, 8, alesis_state) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0xff02, 0xff02) AM_WRITE(track_led_w) + AM_RANGE(0xff04, 0xff04) AM_READWRITE(mmt8_led_r, mmt8_led_w) + AM_RANGE(0xff06, 0xff06) AM_WRITE(kb_matrix_w) + AM_RANGE(0xff08, 0xff09) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) + AM_RANGE(0xff0e, 0xff0e) AM_READNOP + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READ(kb_r) + AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_WRITENOP + AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE(mmt8_p3_r, mmt8_p3_w) + AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("nvram") // 2x32Kx8 SRAM, (battery-backed) +ADDRESS_MAP_END + /* Input ports */ static INPUT_PORTS_START( hr16 ) PORT_START("COL1") @@ -169,6 +226,61 @@ static INPUT_PORTS_START( hr16 ) PORT_BIT(0xff, 0x00, IPT_DIAL) PORT_NAME("SELECT Slider") PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_DOWN) PORT_CODE_INC(KEYCODE_UP) INPUT_PORTS_END +static INPUT_PORTS_START( mmt8 ) + PORT_START("COL1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<<") PORT_CODE(KEYCODE_LEFT) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(">>") PORT_CODE(KEYCODE_RIGHT) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ERASE") PORT_CODE(KEYCODE_DEL) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRANS") PORT_CODE(KEYCODE_R) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("STOP/CONTINUE") PORT_CODE(KEYCODE_END) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_C) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RECORD") PORT_CODE(KEYCODE_HOME) + PORT_START("COL2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 1") PORT_CODE(KEYCODE_F1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 2") PORT_CODE(KEYCODE_F2) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 3") PORT_CODE(KEYCODE_F3) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 4") PORT_CODE(KEYCODE_F4) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 5") PORT_CODE(KEYCODE_F5) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 6") PORT_CODE(KEYCODE_F6) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 7") PORT_CODE(KEYCODE_F7) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 8") PORT_CODE(KEYCODE_F8) + PORT_START("COL3") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO") PORT_CODE(KEYCODE_T) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("+") PORT_CODE(KEYCODE_PLUS_PAD) + PORT_BIT(0x38, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PAGE DOWN") PORT_CODE(KEYCODE_DOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PAGE UP") PORT_CODE(KEYCODE_UP) + PORT_START("COL4") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLICK") PORT_CODE(KEYCODE_G) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI CHAN") PORT_CODE(KEYCODE_I) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAPE") PORT_CODE(KEYCODE_Y) + PORT_START("COL5") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLOCK") PORT_CODE(KEYCODE_K) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SONG") PORT_CODE(KEYCODE_S) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MERGE") PORT_CODE(KEYCODE_M) + PORT_START("COL6") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI FILTER") PORT_CODE(KEYCODE_F) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI ECHO") PORT_CODE(KEYCODE_H) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LOOP") PORT_CODE(KEYCODE_J) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("QUANT") PORT_CODE(KEYCODE_Q) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LENGTH") PORT_CODE(KEYCODE_L) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PART") PORT_CODE(KEYCODE_P) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("EDIT") PORT_CODE(KEYCODE_E) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("NAME") PORT_CODE(KEYCODE_N) +INPUT_PORTS_END + static INPUT_PORTS_START( sr16 ) PORT_START("COL1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRESET/USER") PORT_CODE(KEYCODE_U) @@ -229,6 +341,7 @@ PALETTE_INIT_MEMBER(alesis_state, alesis) void alesis_state::machine_reset() { m_kb_matrix = 0xff; + m_leds = 0; memset(m_lcd_digits, 0, sizeof(m_lcd_digits)); } @@ -292,6 +405,14 @@ static MACHINE_CONFIG_DERIVED( sr16, hr16 ) MCFG_HD44780_PIXEL_UPDATE_CB(sr16_pixel_update) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( mmt8, hr16 ) + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_IO_MAP(mmt8_io) + + MCFG_DEVICE_REMOVE("dm3ag") +MACHINE_CONFIG_END + /* ROM definition */ ROM_START( hr16 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) @@ -324,6 +445,16 @@ ROM_START( hr16b ) ROM_LOAD( "2-27-0007.u15", 0x80000, 0x80000, CRC(319746db) SHA1(46b32a3ab2fbad67fb4566f607f578a2e9defd63)) ROM_END +ROM_START( mmt8 ) + ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF ) + ROM_SYSTEM_BIOS(0, "v111", "ver 1.11") + ROMX_LOAD( "mt8v1-11.bin", 0x00000, 0x08000, CRC(c9951946) SHA1(149bc5ea46466537de4074820c66a2296ea43bc1), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "v109", "ver 1.09") + ROMX_LOAD( "mt8v1-09.bin", 0x00000, 0x08000, CRC(0ec41dec) SHA1(2c283965e510b586a08f0290df4dd357e6b19b62), ROM_BIOS(2)) + ROM_SYSTEM_BIOS(2, "v108", "ver 1.08") + ROMX_LOAD( "mt8v1-08.bin", 0x00000, 0x08000, CRC(a0615455) SHA1(77395c837b356b34d6b96f6f46eca8c89b57434e), ROM_BIOS(3)) +ROM_END + ROM_START( sr16 ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_SYSTEM_BIOS(0, "v104", "ver 1.04") @@ -349,5 +480,6 @@ DRIVER_INIT_MEMBER(alesis_state,hr16) /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", GAME_NOT_WORKING | GAME_NO_SOUND) +SYST( 1987, mmt8, 0, 0, mmt8, mmt8, driver_device, 0, "Alesis", "MMT-8", GAME_NOT_WORKING | GAME_NO_SOUND) SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", GAME_NOT_WORKING | GAME_NO_SOUND) SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16", GAME_NOT_WORKING | GAME_NO_SOUND) diff --git a/src/mess/includes/alesis.h b/src/mess/includes/alesis.h index 89a34257a12..4d0cafc95ac 100644 --- a/src/mess/includes/alesis.h +++ b/src/mess/includes/alesis.h @@ -76,14 +76,20 @@ public: void update_lcd_symbols(bitmap_ind16 &bitmap, UINT8 pos, UINT8 y, UINT8 x, int state); DECLARE_DRIVER_INIT(hr16); DECLARE_WRITE8_MEMBER( led_w ); + DECLARE_WRITE8_MEMBER( mmt8_led_w ); + DECLARE_READ8_MEMBER( mmt8_led_r ); + DECLARE_WRITE8_MEMBER( track_led_w ); DECLARE_WRITE8_MEMBER( kb_matrix_w ); DECLARE_READ8_MEMBER( kb_r ); DECLARE_READ8_MEMBER( p3_r ); DECLARE_WRITE8_MEMBER( p3_w ); + DECLARE_READ8_MEMBER( mmt8_p3_r ); + DECLARE_WRITE8_MEMBER( mmt8_p3_w ); DECLARE_WRITE8_MEMBER( sr16_lcd_w ); private: UINT8 m_kb_matrix; + UINT8 m_leds; UINT8 m_lcd_digits[5]; required_device m_maincpu; }; diff --git a/src/mess/mess.lst b/src/mess/mess.lst index f819210bc73..a24d3dee6b8 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2390,6 +2390,7 @@ dm500 cgc7900 hr16 hr16b +mmt8 sr16 vidbrain cd2650 -- cgit v1.2.3