fruitpc.cpp: split gogostrk into own driver (paokaipc.cpp), remove legacy PCI header defined. (#9562)

This commit is contained in:
Angelo Salese 2022-04-15 00:34:51 +02:00 committed by GitHub
parent eeec90b527
commit 444a6c6144
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 141 additions and 15 deletions

View File

@ -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")

View File

@ -954,6 +954,7 @@ pacman.cpp
pandoras.cpp
pangofun.cpp
panicr.cpp
paokaipc.cpp
paradise.cpp
paranoia.cpp
parodius.cpp

View File

@ -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<pci_bus_device> m_pcibus;
required_device<isa8_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, "<unknown>", "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

View File

@ -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<pci_bus_device> m_pcibus;
required_device<isa8_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

View File

@ -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