New systems marked not working

------------------------------
Honoo no Invader [hammy]
Hot Body (set 1) [f205v, Brian Troha, Sean Sutton, Smitdogg, The Dumping Union]

New clones marked not working
-----------------------------
Hot Body (set 2) [Guru]
This commit is contained in:
Ivan Vangelista 2023-02-24 18:22:43 +01:00
parent d38bf903f5
commit 247e1e1fbb
4 changed files with 304 additions and 4 deletions

View File

@ -728,6 +728,7 @@ misc/fungames.cpp
misc/funkball.cpp
misc/galaxi.cpp
misc/galgame.cpp
misc/gameace.cpp
misc/gambl186.cpp
misc/gamemasters.cpp
misc/gammagic.cpp

View File

@ -29353,6 +29353,10 @@ magjoker // (c) 2000 BRL S.R.L. Bologna
@source:misc/galgame.cpp
galgame // (c) 1971 Computer Recreations, Inc
@source:misc/gameace.cpp
hotbody
hotbodya
@source:misc/gambl186.cpp
gambl186 // EGD
gambl186a // EGD
@ -42324,7 +42328,8 @@ rollace // (c) 1983 Williams
rollace2 // (c) 1983 Williams
@source:taito/sbmjb.cpp
sbmjb // E41 (c) 1998 Taito
honooinv // E41 (c) 1997 Taito
sbmjb // ??? (c) 1998 Taito
@source:taito/sbowling.cpp
sbowling // KB (c) 1982 Taito Corporation

243
src/mame/misc/gameace.cpp Normal file
View File

@ -0,0 +1,243 @@
// license:BSD-3-Clause
// copyright-holders:
/*
PCB Layout
----------
ACE9412
DM941204
|------------------------------------------|
|UPC1241 YM3012 YM2151 3.BIN |
|TL084 TL084 6116 15MHz 4.BIN |
|9.BIN 1.BIN |
|M6295 Z80B(2) |
| 4MHz |
| 6116|
|J 6116 6116|
|A 6116 |
|M |
|M 2018 |
|A |
| DSW(8) |-----| 6264 |
| 62256 |ACTEL| 5.BIN |
| 2.BIN |A1020| 6.BIN |
| Z80B(1)|-----| 7.BIN |
|12MHz 8.BIN |
|------------------------------------------|
Notes:
Z80B(1) - clock 6.000MHz [12/2]
Z80B(2) - clock 4.000MHz
YM2151 - clock 4.000MHz
M6295 - clock 1.000MHz [4/4]
6116/2018 - 2k x8 SRAM
6264 - 8k x8 SRAM
62256 - 32k x8 SRAM
The 15 MHz XTAL has also been seen as 30MHz on a second PCB
*/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/okim6295.h"
#include "sound/ymopm.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "tilemap.h"
namespace {
class gameace_state : public driver_device
{
public:
gameace_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
{
}
void gameace(machine_config &config);
void init_hotbody();
private:
required_device<cpu_device> m_maincpu;
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void main_program_map(address_map &map);
void sound_program_map(address_map &map);
};
uint32_t gameace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
return 0;
}
void gameace_state::main_program_map(address_map &map)
{
map(0x0000, 0x8000).rom().region("maincpu", 0);
}
void gameace_state::sound_program_map(address_map &map) // TODO: banking and everything else
{
map(0x0000, 0xc000).rom().region("audiocpu", 0);
map(0xd000, 0xd7ff).ram();
}
static INPUT_PORTS_START( hotbody )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4")
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5")
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6")
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8")
INPUT_PORTS_END
static GFXDECODE_START( gfx )
//GFXDECODE_ENTRY( "sprites", gfx_8x8x4_planar, , 0, 16 ) // TODO
GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_planar, 0, 16 ) // just enough to see the tiles
GFXDECODE_END
void gameace_state::gameace(machine_config &config)
{
Z80(config, m_maincpu, 12_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &gameace_state::main_program_map);
z80_device &audiocpu(Z80(config, "audiocpu", 4_MHz_XTAL));
audiocpu.set_addrmap(AS_PROGRAM, &gameace_state::sound_program_map);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: all wrong
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 1*8-1, 31*8-2);
screen.set_screen_update(FUNC(gameace_state::screen_update));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 1024); // TODO: wrong
SPEAKER(config, "mono").front_center();
YM2151(config, "ym2151", 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.0);
OKIM6295(config, "oki", 4_MHz_XTAL / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( hotbody )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "2.14b", 0x00000, 0x40000, CRC(4eff1b0c) SHA1(d2b443b59f50fa9013f528c18b0d38da7c938d22) )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "1.4b", 0x00000, 0x20000, CRC(87e15d1d) SHA1(648d29dbf35638639bbf2ffbcd594e455cecaed2) )
ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "3.1f", 0x00000, 0x20000, CRC(680ad651) SHA1(c1e53e7ab0b39d1ab4b6769f64323759ebb976c2) )
ROM_LOAD( "4.2f", 0x20000, 0x20000, CRC(33d7cf7b) SHA1(8ed80382e727bee8ccfa7c24aac8b3058264c398) )
ROM_REGION( 0x100000, "tiles", 0 ) // contain both Hot Body and Same Same titles GFX
ROM_LOAD( "5.13g", 0x00000, 0x40000, CRC(70341256) SHA1(5763351b0c6cb83b4fddd93a2b6a95b96adac148) )
ROM_LOAD( "6.14g", 0x40000, 0x40000, CRC(c5f744b1) SHA1(0e979f41d7e0a66b45a789384e6a6008e539798a) )
ROM_LOAD( "7.16g", 0x80000, 0x40000, CRC(bce62a37) SHA1(8f340af1dd74f2a1b7b13c903abb2806a6a5c6dc) )
ROM_LOAD( "8.17g", 0xc0000, 0x40000, CRC(4328f371) SHA1(3a5d1c0afb671943234120a0758077f76712f624) )
ROM_REGION( 0x40000, "oki", ROMREGION_ERASE00 )
ROM_LOAD( "5a", 0x00000, 0x20000, CRC(2404da21) SHA1(1333634112eef8664b5d72af5fc57c4c800ce00d) )
ROM_REGION( 0x800, "plds", ROMREGION_ERASE00 ) // all read protected
ROM_LOAD( "pal1.4d", 0x000, 0x117, NO_DUMP ) // GAL16V8B-25LP
ROM_LOAD( "pal2.10c", 0x200, 0x157, NO_DUMP ) // PALCE20V8H-25PC/4
ROM_LOAD( "pal3.17e", 0x400, 0x117, NO_DUMP ) // GAL16V8B-25LP
ROM_LOAD( "pal4.1d", 0x600, 0x157, NO_DUMP ) // PALCE20V8H-25PC/4
ROM_END
ROM_START( hotbodya ) // sprites and sound section ROMs match the above, tilemap ROMs differ (maybe censored / uncensored images?)
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD( "2.14b", 0x00000, 0x40000, NO_DUMP ) // EPROM damaged and micro-fine wires broken
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "1.4b", 0x00000, 0x20000, CRC(87e15d1d) SHA1(648d29dbf35638639bbf2ffbcd594e455cecaed2) )
ROM_REGION( 0x40000, "sprites", 0 )
ROM_LOAD( "3.1f", 0x00000, 0x20000, CRC(680ad651) SHA1(c1e53e7ab0b39d1ab4b6769f64323759ebb976c2) )
ROM_LOAD( "4.2f", 0x20000, 0x20000, CRC(33d7cf7b) SHA1(8ed80382e727bee8ccfa7c24aac8b3058264c398) )
ROM_REGION( 0x100000, "tiles", 0 ) // seem to contain less than the other set, but still have both Hot Body and Same Same titles GFX
ROM_LOAD( "5.13g", 0x00000, 0x40000, CRC(7251a305) SHA1(4a6e2ae65d909a973178f6b817f3fcc3552b9563) )
ROM_LOAD( "6.14g", 0x40000, 0x40000, CRC(e922503f) SHA1(78e64af3a5dd57a96c4a74a143e4c1f4ff917036) )
ROM_LOAD( "7.16g", 0x80000, 0x40000, CRC(02ae2c99) SHA1(2852d1f825d4de9f12a1a46f6bdebf4fac9a955b) )
ROM_LOAD( "8.17g", 0xc0000, 0x40000, CRC(909bd6c4) SHA1(14d2c8bb4c7ec8b375c353b0f55026db5c815986) )
ROM_REGION( 0x40000, "oki", ROMREGION_ERASE00 )
ROM_LOAD( "5a", 0x00000, 0x20000, CRC(2404da21) SHA1(1333634112eef8664b5d72af5fc57c4c800ce00d) )
ROM_REGION( 0x800, "plds", ROMREGION_ERASE00 ) // all read protected
ROM_LOAD( "pal1.4d", 0x000, 0x117, NO_DUMP ) // GAL16V8B-25LP
ROM_LOAD( "pal2.10c", 0x200, 0x157, NO_DUMP ) // PALCE20V8H-25PC/4
ROM_LOAD( "pal3.17e", 0x400, 0x117, NO_DUMP ) // GAL16V8B-25LP
ROM_LOAD( "pal4.1d", 0x600, 0x157, NO_DUMP ) // PALCE20V8H-25PC/4
ROM_END
void gameace_state::init_hotbody()
{
// TODO: enough for data but opcodes appear to have different scrambling
uint8_t *rom = memregion("maincpu")->base();
std::vector<uint8_t> buffer(0x40000);
memcpy(&buffer[0], rom, 0x40000);
for (int i = 0x00000; i < 0x40000; i += 0x10) // TODO: simplify this
{
std::swap(rom[i], rom[i + 0x02]);
std::swap(rom[i + 0x03], rom[i + 0x05]);
std::swap(rom[i + 0x07], rom[i + 0x09]);
std::swap(rom[i + 0x05], rom[i + 0x09]);
std::swap(rom[i + 0x08], rom[i + 0x0c]);
std::swap(rom[i + 0x0a], rom[i + 0x0e]);
std::swap(rom[i + 0x0b], rom[i + 0x0d]);
std::swap(rom[i + 0x07], rom[i + 0x0b]);
std::swap(rom[i + 0x09], rom[i + 0x0f]);
}
for (int i = 0x00000; i < 0x40000; i += 0x10)
std::swap(rom[i + 0x0f], rom[i - 0x01]);
}
} // anonymous namespace
GAME( 1995, hotbody, 0, gameace, hotbody, gameace_state, init_hotbody, ROT0, "Gameace", "Hot Body (set 1)", MACHINE_IS_SKELETON ) // both 1994 and 1995 strings in ROM
GAME( 1995, hotbodya, hotbody, gameace, hotbody, gameace_state, init_hotbody, ROT0, "Gameace", "Hot Body (set 2)", MACHINE_IS_SKELETON )

View File

@ -26,14 +26,19 @@
no dips
TODO:
general:
- everything is guesswork and should be taken with a grain of salt, especially the M66220FP hook up;
- are the correct sounds played at the right times?
- hopper / medal (main roadblock before it can be considered playable);
sbmjb:
- at boot the game zero-fills the 0x020000-0x020fff range in the tc0091lvc VRAM space, which is currently unmapped in tc009xlvc.cpp.
Doesn't seem to use it afterwards, though.
- hopper / medal (main roadblock before it can be considered playable);
honooinv:
- almost immediately stops with 'coin in time out error'
*/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/tc009xlvc.h"
#include "machine/te7750.h"
@ -41,6 +46,7 @@
#include "machine/timer.h"
#include "sound/okim6295.h"
#include "sound/ymopn.h"
#include "screen.h"
#include "speaker.h"
@ -134,6 +140,28 @@ static INPUT_PORTS_START( sbmjb ) // no dips on PCB, game options selectable in
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // No effect in test mode
INPUT_PORTS_END
static INPUT_PORTS_START( honooinv ) // no dips on PCB, game options selectable in test mode
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
TIMER_DEVICE_CALLBACK_MEMBER(sbmjb_state::scanline_callback) // TODO: copy-pasted from other drivers using same chip, to be verified
{
@ -213,7 +241,30 @@ ROM_START( sbmjb ) // all labels were peeled off / unreadable
ROM_LOAD( "e41-03.ic24", 0x200, 0x117, CRC(d906c8ea) SHA1(eae9c9c25b4affe4baf7ba034c61670d24f5c4d1) )
ROM_END
} // Anonymous namespace
ROM_START( honooinv )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "e41-08.ic12", 0x00000, 0x10000, CRC(71fc6a58) SHA1(8e95f42fa227e7bbf80dc7690a016f5e43a8125d) ) // 1xxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "e41-07.ic5", 0x00000, 0x10000, CRC(0f1faa0b) SHA1(ff8a242507207be3ced2a77705b24a5b6dd1189c) ) // 1xxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x80000, "vdpcpu", 0 )
ROM_LOAD( "e41-04.ic52", 0x00000, 0x80000, CRC(2e236b65) SHA1(4c5dda35d083742ad708d575e1d8cd158fa89210) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x100000, "vdpcpu:gfx", 0 )
ROM_LOAD16_BYTE( "e41-05.ic49", 0x00000, 0x80000, CRC(493ddfac) SHA1(b37ac65c08dda284e15446bdc545cca889e03ba7) )
ROM_LOAD16_BYTE( "e41-06.ic48", 0x00001, 0x80000, CRC(edb38f82) SHA1(d94f05f96a7acdb9e3c98646cbdd797fdc3b92b7) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "e41-09.ic3", 0x00000, 0x40000, CRC(5d25fb77) SHA1(b474be05cdb2e57632595caee7f8c27572db8935) )
ROM_REGION( 0x400, "plds", 0 )
ROM_LOAD( "e41-02.ic51", 0x000, 0x117, CRC(67fd54e0) SHA1(f64fb33b9a4a935af5662b5103709131727c8411) )
ROM_LOAD( "e41-03.ic24", 0x200, 0x117, CRC(d906c8ea) SHA1(eae9c9c25b4affe4baf7ba034c61670d24f5c4d1) )
ROM_END
} // anonymous namespace
GAME( 1998, sbmjb, 0, sbmjb, sbmjb, sbmjb_state, empty_init, ROT0, "Taito Corporation", "Sonic Blast Man's Janken Battle (main ver. 1.1, video ver. 1.0)", MACHINE_NOT_WORKING )
GAME( 1998, sbmjb, 0, sbmjb, sbmjb, sbmjb_state, empty_init, ROT0, "Taito Corporation", "Sonic Blast Man's Janken Battle (main ver. 1.1, video ver. 1.0)", MACHINE_NOT_WORKING )
GAME( 1997, honooinv, 0, sbmjb, honooinv, sbmjb_state, empty_init, ROT0, "Taito Corporation", "Honoo no Invader", MACHINE_NOT_WORKING )