diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 09c951ba828..38c845b3138 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -2107,13 +2107,14 @@ createMAMEProjects(_target, _subtarget, "ibmpc") files { MAME_DIR .. "src/mame/drivers/calchase.cpp", MAME_DIR .. "src/mame/drivers/fruitpc.cpp", + MAME_DIR .. "src/mame/drivers/igspc.cpp", MAME_DIR .. "src/mame/drivers/pangofun.cpp", + MAME_DIR .. "src/mame/drivers/paokaipc.cpp", MAME_DIR .. "src/mame/drivers/pcat_dyn.cpp", MAME_DIR .. "src/mame/drivers/pcat_nit.cpp", MAME_DIR .. "src/mame/drivers/pcxt.cpp", MAME_DIR .. "src/mame/drivers/quakeat.cpp", MAME_DIR .. "src/mame/drivers/queen.cpp", - MAME_DIR .. "src/mame/drivers/igspc.cpp", } createMAMEProjects(_target, _subtarget, "igs") diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index c55069cfd14..2aa7f6f866d 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -954,6 +954,7 @@ pacman.cpp pandoras.cpp pangofun.cpp panicr.cpp +paokaipc.cpp paradise.cpp paranoia.cpp parodius.cpp diff --git a/src/mame/drivers/fruitpc.cpp b/src/mame/drivers/fruitpc.cpp index 4bf57308c0f..1d0f514ec13 100644 --- a/src/mame/drivers/fruitpc.cpp +++ b/src/mame/drivers/fruitpc.cpp @@ -7,6 +7,12 @@ preliminary driver by R. Belmont and Carl + TODO: + - Can't find CF card, throws "No boot device available", culprit may be lack of + PCI shadow RAM handling (which causes BIOS to boot in legacy mode); + - Handle STPCD0166BTC3 SoC properly, including PCI devices connected and SVGA + mods (wrongly draws only top screen with 640x200 with at486 -isa1 svga_s3); + Hardware: - ST STPCD0166BTC3 486/66 + PC + VGA all on one chip - 4x AS4LC1M16E5-60TC 1M x 16 EDO DRAM @@ -15,7 +21,7 @@ #include "emu.h" #include "cpu/i386/i386.h" -#include "machine/lpci.h" +#include "bus/lpci/pci.h" #include "machine/pckeybrd.h" #include "machine/idectrl.h" #include "video/pc_vga.h" @@ -28,6 +34,7 @@ class fruitpc_state : public pcat_base_state public: fruitpc_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag) + , m_pcibus(*this, "pcibus") , m_isabus(*this, "isa") , m_inp(*this, "INP%u", 1U) { } @@ -35,6 +42,7 @@ public: void fruitpc(machine_config &config); private: + required_device m_pcibus; required_device m_isabus; required_ioport_array<4> m_inp; @@ -70,6 +78,7 @@ void fruitpc_state::fruitpc_io(address_map &map) map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::cs1_r), FUNC(ide_controller_device::cs1_w)); + map(0x0cf8, 0x0cff).rw(m_pcibus, FUNC(pci_bus_device::read), FUNC(pci_bus_device::write)); } static INPUT_PORTS_START( fruitpc ) @@ -131,6 +140,8 @@ void fruitpc_state::fruitpc(machine_config &config) m_dma8237_1->out_iow_callback<1>().set(FUNC(fruitpc_state::dma8237_1_dack_w)); + PCI_BUS(config, m_pcibus, 0).set_busnum(0); + ISA8(config, m_isabus, 0); m_isabus->set_memspace("maincpu", AS_PROGRAM); m_isabus->set_iospace("maincpu", AS_IO); @@ -159,15 +170,3 @@ ROM_START( fruitpc ) ROM_END GAME( 2006, fruitpc, 0, fruitpc, fruitpc, fruitpc_state, empty_init, ROT0, "", "Fruit Land", MACHINE_IMPERFECT_GRAPHICS ) - -// this doesn't really belong here, but is some kind of x86 pc-like hardware, exact CPU type etc. unknown -// hardware ia by Paokai, motherboard has logos, large chip with logo too, http://www.paokai.com.tw/ -ROM_START( gogostrk ) - ROM_REGION32_LE( 0x40000, "bios", 0 ) - ROM_LOAD( "39sf020a.rom1", 0x000000, 0x040000, CRC(236d4d95) SHA1(50579acddc93c05d5f8e17ad3669a29d2dc49965) ) - - DISK_REGION( "ide:0:hdd:image" ) // 128 MB CF Card - DISK_IMAGE( "ggs-5-2-07", 0,SHA1(f214fd39ec8ac02f008823f4b179ea6c6835e1b8) ) -ROM_END - -GAME( 2007, gogostrk, 0, fruitpc, fruitpc, fruitpc_state, empty_init, ROT0, "American Alpha / Paokai", "Go Go Strike", MACHINE_NOT_WORKING ) // motherboard is dated 2006, if the CF card string is a date it's 2007 diff --git a/src/mame/drivers/paokaipc.cpp b/src/mame/drivers/paokaipc.cpp new file mode 100644 index 00000000000..e7625b8fb4d --- /dev/null +++ b/src/mame/drivers/paokaipc.cpp @@ -0,0 +1,123 @@ +// license:BSD-3-Clause +// copyright-holders: +/************************************************************************************************** + + Go Go Strike (c) 2007? Paokai + + Originally in fruitpc.cpp, split because definitely doesn't belong + + Some kind of x86 pc-like hardware, exact CPU type etc. unknown hardware is by Paokai, + motherboard has logos, large chip with logo too, http://www.paokai.com.tw/ + + CF card has a Linux partition, partially bootable with m55hipl driver. + - starts with a "LILO boot", fails with a recoverable "undefined video mode" + (press RETURN or SPACE); + - Shows being a "gcc 3.2.2 (Red Hat Linux 3.2.2-5)" distro. + Notice that latter seems mislabeled, and RedHat is actually version 9 + http://rpm.pbone.net/info_idpl_19558085_distro_redhat9_com_gcc-3.2.2-5.i386.rpm.html + - Has pretty verbose terminal log, checks PnP, USB, Pentium f0 0f bug, + assumes "33 MHz system bus" for IDE PIO mode, returns PIIX only during PCI scan + (that's what m55hipl has as default); + - Eventually hangs at a "Setting the clock:" prompt; + +**************************************************************************************************/ + +#include "emu.h" +#include "cpu/i386/i386.h" +#include "bus/lpci/pci.h" +#include "machine/pckeybrd.h" +#include "machine/idectrl.h" +#include "video/pc_vga.h" +#include "machine/pcshare.h" +#include "bus/isa/isa.h" +#include "bus/isa/sblaster.h" + +class paokaipc_state : public pcat_base_state +{ +public: + paokaipc_state(const machine_config &mconfig, device_type type, const char *tag) + : pcat_base_state(mconfig, type, tag) + , m_pcibus(*this, "pcibus") + , m_isabus(*this, "isa") + { } + + void paokaipc(machine_config &config); + +private: + required_device m_pcibus; + required_device m_isabus; + + void main_io(address_map &map); + void main_map(address_map &map); +}; + +void paokaipc_state::main_map(address_map &map) +{ + map(0x00000000, 0x0009ffff).ram(); + map(0x000a0000, 0x000bffff).rw("vga", FUNC(vga_device::mem_r), FUNC(vga_device::mem_w)); // VGA VRAM + map(0x000e0000, 0x000fffff).rom().region("bios", 0x20000); + map(0x00100000, 0x008fffff).ram(); + map(0x02000000, 0x28ffffff).noprw(); + map(0xfffc0000, 0xffffffff).rom().region("bios", 0x00000); /* System BIOS */ +} + +void paokaipc_state::main_io(address_map &map) +{ + pcat32_io_common(map); + map(0x01f0, 0x01f7).rw("ide", FUNC(ide_controller_device::cs0_r), FUNC(ide_controller_device::cs0_w)); + map(0x03b0, 0x03bf).rw("vga", FUNC(vga_device::port_03b0_r), FUNC(vga_device::port_03b0_w)); + map(0x03c0, 0x03cf).rw("vga", FUNC(vga_device::port_03c0_r), FUNC(vga_device::port_03c0_w)); + map(0x03d0, 0x03df).rw("vga", FUNC(vga_device::port_03d0_r), FUNC(vga_device::port_03d0_w)); + map(0x03f0, 0x03f7).rw("ide", FUNC(ide_controller_device::cs1_r), FUNC(ide_controller_device::cs1_w)); +// map(0x0880, 0x0880) extensively accessed at POST, hangs if returns wrong values + map(0x0cf8, 0x0cff).rw(m_pcibus, FUNC(pci_bus_device::read), FUNC(pci_bus_device::write)); +} + +static INPUT_PORTS_START( gogostrk ) +INPUT_PORTS_END + +void paokaipc_state::paokaipc(machine_config &config) +{ + // TODO: everything inherited from fruitpc.cpp, needs proper identification of motherboard. + PENTIUM(config, m_maincpu, 66000000); // unknown CPU, at least Pentium according to logs + m_maincpu->set_addrmap(AS_PROGRAM, &paokaipc_state::main_map); + m_maincpu->set_addrmap(AS_IO, &paokaipc_state::main_io); + m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb)); + + pcat_common(config); + + ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); + ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); + + pcvideo_vga(config); + + PCI_BUS(config, m_pcibus, 0).set_busnum(0); + + ISA8(config, m_isabus, 0); + m_isabus->set_memspace("maincpu", AS_PROGRAM); + m_isabus->set_iospace("maincpu", AS_IO); + m_isabus->irq2_callback().set("pic8259_2", FUNC(pic8259_device::ir2_w)); + m_isabus->irq3_callback().set("pic8259_1", FUNC(pic8259_device::ir3_w)); + m_isabus->irq4_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w)); + m_isabus->irq5_callback().set("pic8259_1", FUNC(pic8259_device::ir5_w)); + m_isabus->irq6_callback().set("pic8259_1", FUNC(pic8259_device::ir6_w)); + m_isabus->irq7_callback().set("pic8259_1", FUNC(pic8259_device::ir7_w)); + m_isabus->drq1_callback().set("dma8237_1", FUNC(am9517a_device::dreq1_w)); + m_isabus->drq2_callback().set("dma8237_1", FUNC(am9517a_device::dreq2_w)); + m_isabus->drq3_callback().set("dma8237_1", FUNC(am9517a_device::dreq3_w)); + + // FIXME: determine ISA bus clock +// isa8_slot_device &isa1(ISA8_SLOT(config, "isa1", 0, "isa", fruitpc_isa8_cards, "sb15", true)); +// isa1.set_option_device_input_defaults("sb15", DEVICE_INPUT_DEFAULTS_NAME(fruitpc_sb_def)); +// isa1.set_option_machine_config("sb15", fruitpc_sb_conf); +} + +ROM_START( gogostrk ) + ROM_REGION32_LE( 0x40000, "bios", 0 ) + ROM_LOAD( "39sf020a.rom1", 0x000000, 0x040000, CRC(236d4d95) SHA1(50579acddc93c05d5f8e17ad3669a29d2dc49965) ) + + DISK_REGION( "ide:0:hdd:image" ) // 128 MB CF Card + DISK_IMAGE( "ggs-5-2-07", 0,SHA1(f214fd39ec8ac02f008823f4b179ea6c6835e1b8) ) +ROM_END + +GAME( 2007?, gogostrk, 0, paokaipc, gogostrk, paokaipc_state, empty_init, ROT0, "American Alpha / Paokai", "Go Go Strike", MACHINE_IS_SKELETON ) // motherboard is dated 2006, if the CF card string is a date it's 2007 diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 02e7127cf08..6a5fefe803a 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -14259,7 +14259,6 @@ nmsengen // (c) 1991 Video System (Japan) @source:fruitpc.cpp fruitpc // ??? -gogostrk // @source:fs3216.cpp fs3216 // @@ -34107,6 +34106,9 @@ pangofun // (c) 1995 InfoCube panicr // Seibu / Taito panicrg // Seibu / TV-Tuning (Germany) +@source:paokaipc.cpp +gogostrk // + @source:paradise.cpp madball // (c) 1998 Yun Sung madballn // (c) 1998 Yun Sung