diff options
Diffstat (limited to 'trunk/src/mame/drivers/quakeat.c')
-rw-r--r-- | trunk/src/mame/drivers/quakeat.c | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/trunk/src/mame/drivers/quakeat.c b/trunk/src/mame/drivers/quakeat.c new file mode 100644 index 00000000000..41742c324d5 --- /dev/null +++ b/trunk/src/mame/drivers/quakeat.c @@ -0,0 +1,201 @@ +/* + + Quake Arcade Tournament + + This is unknown PC hardware, only the HDD is dumped. The HDD is stickered 'Release Beta 2' + + I've also seen CDs of this for sale, so maybe there should be a CD too, for the music? + + + + -- set info + +Quake Arcade Tournament by Lazer-Tron + +PC running Windows 95 with a Dongle on the parallel port + +Created .chd with version 0.125 + +It found the following disk paramaters... + +Input offset 511 +Cyclinders 263 +Heads 255 +Sectors 63 +Byte/Sector 512 +Sectors/Hunk 8 +Logical size 2,1163,248,864 + + +The "backup" directory on hard disk was created by the dumper. + + + -- Hardware info found in the following press release: +http://www.wave-report.com/archives/1998/98170702.htm + +QUANTUM3D'S HEAVY METAL SYSTEM - HM233G +NLX form factor system that is based on the Intel 440LX chipset +233MHz Intel Pentium II processor with 512KB of L2 cache +32MB of SDRAM +Microsoft Windows 95 OSR2.5 +shock-mounted 3.1GB Ultra DMA-33 hard drive +12-24x CD-ROM drive +1.44 MB floppy drive +16-bit per sample 3D audio +PCI-based 2D/VGA +built-in 10/100 Ethernet +Obsidian2 90-4440 AGP Voodoo2-based realtime 3D graphics accelerator +Quantum3D's GCI (Game Control Interface) - a unique, low-cost subsystem + designed to interface coin-op and industrial input/output control devices to a PC + +=============================================================================== +TODO: + * Add BIOS dump (custom 440LX motherboard or standard?) + * Hook up PC hardware + * Hook up the GCI (details? ROMs?) + * What's the dongle do? +=============================================================================== +*/ + +#include "emu.h" +#include "cpu/i386/i386.h" +#include "machine/pic8259.h" +/* Insert IBM PC includes here */ + + +class quakeat_state : public driver_device +{ +public: + quakeat_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) { } + + device_t *m_pic8259_1; + device_t *m_pic8259_2; +}; + + +static VIDEO_START(quake) +{ +} + +static SCREEN_UPDATE(quake) +{ + return 0; +} + +static ADDRESS_MAP_START( quake_map, AS_PROGRAM, 32 ) + AM_RANGE(0x00000000, 0x0000ffff) AM_ROM AM_REGION("pc_bios", 0) /* BIOS */ +ADDRESS_MAP_END + +static ADDRESS_MAP_START( quake_io, AS_IO, 32 ) +// AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", dma8237_r, dma8237_w, 0xffffffff) + AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_1", pic8259_r, pic8259_w, 0xffffffff) +// AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8253_r, pit8253_w, 0xffffffff) +// AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r, kbdc8042_32le_w) +// AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8_MODERN("rtc", mc146818_device, read, write, 0xffffffff) +// AM_RANGE(0x0080, 0x009f) AM_READWRITE(at_page32_r, at_page32_w) + AM_RANGE(0x00a0, 0x00bf) AM_DEVREADWRITE8("pic8259_2", pic8259_r, pic8259_w, 0xffffffff) +// AM_RANGE(0x00c0, 0x00df) AM_DEVREADWRITE("dma8237_2", at32_dma8237_2_r, at32_dma8237_2_w) + AM_RANGE(0x00e8, 0x00eb) AM_NOP +// AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_r, ide_w) + AM_RANGE(0x0300, 0x03af) AM_NOP + AM_RANGE(0x03b0, 0x03df) AM_NOP +// AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w) +// AM_RANGE(0x03f0, 0x03ff) AM_DEVREADWRITE("ide", fdc_r, fdc_w) +// AM_RANGE(0x0a78, 0x0a7b) AM_WRITE(pnp_data_w) +// AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_32le_r, pci_32le_w) +ADDRESS_MAP_END + +/************************************************************* + * + * pic8259 configuration + * + *************************************************************/ + +static WRITE_LINE_DEVICE_HANDLER( quakeat_pic8259_1_set_int_line ) +{ + cputag_set_input_line(device->machine(), "maincpu", 0, state ? HOLD_LINE : CLEAR_LINE); +} + +static READ8_DEVICE_HANDLER( get_slave_ack ) +{ + quakeat_state *state = device->machine().driver_data<quakeat_state>(); + if (offset==2) { // IRQ = 2 + return pic8259_acknowledge(state->m_pic8259_2); + } + return 0x00; +} + +static const struct pic8259_interface quakeat_pic8259_1_config = +{ + DEVCB_LINE(quakeat_pic8259_1_set_int_line), + DEVCB_LINE_VCC, + DEVCB_HANDLER(get_slave_ack) +}; + +static const struct pic8259_interface quakeat_pic8259_2_config = +{ + DEVCB_DEVICE_LINE("pic8259_1", pic8259_ir2_w), + DEVCB_LINE_GND, + DEVCB_NULL +}; + +/*************************************************************/ + +static INPUT_PORTS_START( quake ) +INPUT_PORTS_END + +/*************************************************************/ + +static IRQ_CALLBACK(irq_callback) +{ + quakeat_state *state = device->machine().driver_data<quakeat_state>(); + return pic8259_acknowledge( state->m_pic8259_1); +} + +static MACHINE_START(quakeat) +{ + quakeat_state *state = machine.driver_data<quakeat_state>(); + device_set_irq_callback(machine.device("maincpu"), irq_callback); + + state->m_pic8259_1 = machine.device( "pic8259_1" ); + state->m_pic8259_2 = machine.device( "pic8259_2" ); +} +/*************************************************************/ + +static MACHINE_CONFIG_START( quake, quakeat_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", PENTIUM, 233000000) /* Pentium II, 233MHz */ + MCFG_CPU_PROGRAM_MAP(quake_map) + MCFG_CPU_IO_MAP(quake_io) + + MCFG_MACHINE_START(quakeat) + + MCFG_PIC8259_ADD( "pic8259_1", quakeat_pic8259_1_config ) + MCFG_PIC8259_ADD( "pic8259_2", quakeat_pic8259_2_config ) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) + MCFG_SCREEN_UPDATE(quake) + + MCFG_PALETTE_LENGTH(0x100) + + MCFG_VIDEO_START(quake) +MACHINE_CONFIG_END + + +ROM_START(quake) + ROM_REGION32_LE(0x20000, "pc_bios", 0) /* motherboard bios */ + ROM_LOAD("quakearcadetournament.pcbios", 0x000000, 0x10000, NO_DUMP ) + + DISK_REGION( "disks" ) + DISK_IMAGE( "quakeat", 0, SHA1(c44695b9d521273c9d3c0e18c88f0dca0185bd7b) ) +ROM_END + + +GAME( 1998, quake, 0, quake, quake, 0, ROT0, "Lazer-Tron / iD Software", "Quake Arcade Tournament (Release Beta 2)", GAME_NOT_WORKING|GAME_NO_SOUND ) |