New working clones

------------------
Tekken 2 (US, TES3/VER.A) [Guru]
This commit is contained in:
hap 2023-02-02 23:13:27 +01:00
parent c056522aab
commit 28fce32e87
7 changed files with 58 additions and 27 deletions

View File

@ -42,7 +42,7 @@
* I know there must be at least one other ROM set for Astro Fighter
I have played one that stoped between waves to show the next enemy
* Saturn: Space Fighter 3D is Space Fighter Mark II with extra game modes.
* Saturn: Space Fighter 3D is basically Space Fighter with extra game modes.
It's not 3-dimensional. The game modes are: Storm, Sweeper, Scramble.
Known issues/to-do's:
@ -57,7 +57,7 @@
emulates an unmodified PCB, you can enable the hacks in the DRIVER
CONFIGURATION menu.
B&W cabinet versions also exist.
B&W cabinet versions of the Space Fighter games also exist.
Versions of Tomahawk using the Astro Fighter PROM have been seen,
see notes in ROM loading.

View File

@ -14,8 +14,8 @@
class astrof_state : public driver_device
{
public:
astrof_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
astrof_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_astrof_color(*this, "astrof_color"),
m_tomahawk_protection(*this, "tomahawk_prot"),
@ -23,7 +23,8 @@ public:
m_maincpu(*this, "maincpu"),
m_samples(*this, "samples"),
m_sn(*this, "snsnd"),
m_screen(*this, "screen") { }
m_screen(*this, "screen")
{ }
void init_afire();
void init_abattle();

View File

@ -210,7 +210,7 @@ ROM_END
ROM_START( nshort ) // 2.00
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("nshort.bin", 0x0000, 0x10000, CRC(4bd51e23) SHA1(3f55cc1c55dae8818b7e9384b6b8d43dc4f0a1af) )
ROM_LOAD("milano_3c59_nigel_short_21-sep-93", 0x0000, 0x10000, CRC(4bd51e23) SHA1(3f55cc1c55dae8818b7e9384b6b8d43dc4f0a1af) )
ROM_END
} // anonymous namespace

View File

@ -32424,6 +32424,7 @@ tekken2a // 1995.08 Tekken 2 (World, TES2/VER.A)
tekken2b // 1995.09 Tekken 2 Ver.B (World, TES2/VER.B)
tekken2jb // 1995.09 Tekken 2 Ver.B (Japan, TES1/VER.B)
tekken2jc // 1995.11 Tekken 2 Ver.B (Japan, TES1/VER.C)
tekken2ua // 1995.08 Tekken 2 (US, TES3/VER.A)
tekken2ub // 1995.09 Tekken 2 Ver.B (US, TES3/VER.B)
tekkenac // 1995.01 Tekken (Asia, TE4/VER.C)
tekkenb // 1994.12 Tekken (World, TE2/VER.B)

View File

@ -34,6 +34,7 @@ tekken2ub Tekken 2 Ver.B (TES3/VER.B) COH-100 SYSTEM11
tekken2b Tekken 2 Ver.B (TES2/VER.B) COH-100 " " " "
tekken2jc Tekken 2 Ver.B (TES1/VER.C) COH-100 " " " "
tekken2a Tekken 2 (TES2/VER.A) COH-100 " " " "
tekken2ua Tekken 2 (TES3/VER.A) COH-100 " " " "
souledge Soul Edge Ver. II (SO4/VER.C) COH-100 / COH-110 SYSTEM11 MOTHER PCB SYSTEM11 ROM8 PCB C409 6
souledgeuc Soul Edge Ver. II (SO3/VER.C) COH-100 / COH-110 " " " "
souledgeua Soul Edge (SO3/VER.A) COH-100 / COH-110 " " " "
@ -1660,6 +1661,30 @@ ROM_START( tekken2ub )
ROM_LOAD( "tes1wave.8k", 0x800000, 0x400000, CRC(34a34eab) SHA1(8e83a579abdcd419dc5cff8aa4c1d7e6c3add773) )
ROM_END
ROM_START( tekken2ua )
ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "tes3vera.2l", 0x0000000, 0x100000, CRC(0276680b) SHA1(508bb1c8a0ce929181508108ad3797e67ddd3df8) )
ROM_LOAD16_BYTE( "tes3vera.2j", 0x0000001, 0x100000, CRC(80e9b5ec) SHA1(2f6313492f0d78b9745303418cd77347d14acc8c) )
ROM_LOAD16_BYTE( "tes3vera.2k", 0x0200000, 0x100000, CRC(78e2ce1a) SHA1(fb242725dc72fa234bd7df81cec57fe010cf58f3) )
ROM_LOAD16_BYTE( "tes3vera.2f", 0x0200001, 0x100000, CRC(fbb0b146) SHA1(08b11ac0fbfeed62910c5cb5ff7b5939ecbca142) )
ROM_REGION32_LE( 0x1000000, "bankedroms", 0 ) /* main data */
ROM_LOAD16_BYTE( "tes1rom0l.ic6", 0x0000000, 0x200000, CRC(fc904ede) SHA1(cea378ba86f94beadb3d67685f1b8c141f478abe) )
ROM_LOAD16_BYTE( "tes1rom0u.ic5", 0x0000001, 0x200000, CRC(57b38f5d) SHA1(edb4beab47b1339a5b1bc8071086abfcba57722e) )
ROM_LOAD16_BYTE( "tes1rom1l.ic8", 0x0400000, 0x200000, CRC(aa48f04b) SHA1(f7383d2b3a84c4e649a27c0ad1e6af4702ec0a17) )
ROM_LOAD16_BYTE( "tes1rom1u.ic3", 0x0400001, 0x200000, CRC(b147c543) SHA1(c4b18c218999ec73d04c92e06fb3e6165ceebf2b) )
ROM_LOAD16_BYTE( "tes1rom2l.ic7", 0x0800000, 0x200000, CRC(b08da52c) SHA1(31fe2021d0fe37c16555650dd10d26ed80d9b493) )
ROM_LOAD16_BYTE( "tes1rom2u.ic4", 0x0800001, 0x200000, CRC(8a1561b8) SHA1(ebc02c9e7033d54aefb5034c97a3c8cd749b5600) )
ROM_LOAD16_BYTE( "tes1rom3l.ic9", 0x0c00000, 0x200000, CRC(d5ac0f18) SHA1(342d063f7974bd1f90b5ca4832dfa4fbc9605453) )
ROM_LOAD16_BYTE( "tes1rom3u.ic1", 0x0c00001, 0x200000, CRC(44ed509d) SHA1(27e26aaf5ce72ab686f3f05743b1d91b5334b4e0) )
ROM_REGION16_LE( 0x80000, "c76", 0 ) /* sound data */
ROM_LOAD( "tes1sprog.6d", 0x0000000, 0x040000, CRC(af18759f) SHA1(aabd7d1384925781d37f860605a5d4622e0fc2e4) )
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
ROM_LOAD( "tes1wave.8k", 0x800000, 0x400000, CRC(34a34eab) SHA1(8e83a579abdcd419dc5cff8aa4c1d7e6c3add773) )
ROM_END
ROM_START( tekken2b )
ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "tes2verb.2l", 0x0000000, 0x100000, CRC(aa9a4503) SHA1(e6fdd34216591510593bbda0232ddc0fcd80e80b) )
@ -1825,6 +1850,9 @@ ROM_START( xevi3dgj )
ROM_RELOAD( 0x800000, 0x400000 )
ROM_END
} // anonymous namespace
/*
1 = Japan
2 = World
@ -1833,9 +1861,6 @@ ROM_END
9 = Location Test
*/
} // anonymous namespace
GAME( 1994, tekken, 0, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (World, TE2/VER.C)", 0 )
GAME( 1994, tekkenac, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (Asia, TE4/VER.C)", 0 )
GAME( 1994, tekkenb, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (World, TE2/VER.B)", 0 )
@ -1846,6 +1871,7 @@ GAME( 1995, tekken2b, tekken2, tekken2o, tekken, namcos11_state, empty_
GAME( 1995, tekken2jc, tekken2, tekken2o, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.C)", 0 )
GAME( 1995, tekken2jb, tekken2, tekken2o, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 Ver.B (Japan, TES1/VER.B)", 0 )
GAME( 1995, tekken2a, tekken2, tekken2o, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 (World, TES2/VER.A)", 0 )
GAME( 1995, tekken2ua, tekken2, tekken2o, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 (US, TES3/VER.A)", 0 )
GAME( 1996, souledge, 0, souledge, souledge, namcos11_state, empty_init, ROT0, "Namco", "Soul Edge Ver. II (Asia, SO4/VER.C)", 0 )
GAME( 1995, souledgeuc, souledge, souledge, souledge, namcos11_state, empty_init, ROT0, "Namco", "Soul Edge Ver. II (US, SO3/VER.C)", 0 )
GAME( 1995, souledgea, souledge, souledge, souledge, namcos11_state, empty_init, ROT0, "Namco", "Soul Edge (World, SO2/VER.A)", 0 )

View File

@ -5425,7 +5425,7 @@ ROM_START( alpines )
ROM_LOAD( "af1wavea.2l", 0x000000, 0x400000, CRC(28cca494) SHA1(4ff87ab85fd17bf8dbee5b03d99cc5c31dd6349a) )
ROM_END
ROM_START( alpinesa ) // only 4 different DWORDs at 0x700, watchpoint does not trigger there
ROM_START( alpinesa ) // only 4 different DWORDs at 0x700, pretty certain it's the serial number
ROM_REGION( 0x800000, "maincpu", 0 ) /* main program */
ROM_LOAD32_BYTE( "af2ver-a_ll.ic2", 0x000003, 0x200000, CRC(d8025e98) SHA1(e1c08557e70d632bf1e99356d6c6f76b5f407b8f) )
ROM_LOAD32_BYTE( "af2ver-a_lm.ic3", 0x000002, 0x200000, CRC(5f805d51) SHA1(b7fa9028deeaf1c549e9c2d6099925a0d0ad1598) )

View File

@ -2,7 +2,7 @@
// copyright-holders:hap
/*******************************************************************************
Nintendo Computer Othello
Nintendo Computer Othello ( )
This is Nintendo's 1st microprocessor-based arcade game.
It's a cocktail cabinet, P1 side has 10 buttons, and P2 side has 4.
@ -14,7 +14,8 @@ Hardware notes:
- PCB label: COG CPU
- M58710S (8080A), 3.579545MHz XTAL
- 3*1KB M58732S 2708 ROM, 4th socket is empty
- 256 bytes RAM (2*M58722P 2111A), 0.5KB DRAM (M58755S)
- 256 bytes RAM (2*M58722P 2111A)
- 0.5KB DRAM (M58755S) for framebuffer
- M58741P Color TV Interface, 64*64 1bpp video
- 7seg time counter (not software controlled)
- beeper
@ -27,7 +28,7 @@ TODO:
due to the M58741P HOLD pin halting the 8080, which is not emulated.
- Is there a button select somewhere? I really can't find any. Or is current
input emulation correct where for example P1 can move P2 cursor? (the only
unique P2 button is the Set button)
unique P2 button is the Set button).
- It's not known if the screen is color or B&W + overlay, but since the video
chip is meant for a color tv, let's assume the green tint is from the screen
itself. Photos of the home version also show a green tint.
@ -73,7 +74,7 @@ private:
required_shared_ptr<u8> m_vram;
required_device<beep_device> m_beeper;
required_ioport_array<4> m_inputs;
output_finder<4> m_digits;
output_finder<3> m_digits;
void main_map(address_map &map);
@ -87,6 +88,7 @@ private:
TIMER_CALLBACK_MEMBER(beeper_off) { m_beeper->set_state(0); }
u16 m_counter = 0;
u8 m_sound_data = 0;
emu_timer *m_counter_timer;
emu_timer *m_beeper_off;
};
@ -99,6 +101,7 @@ void cothello_state::machine_start()
m_beeper_off = timer_alloc(FUNC(cothello_state::beeper_off), this);
save_item(NAME(m_counter));
save_item(NAME(m_sound_data));
}
@ -145,13 +148,10 @@ TIMER_CALLBACK_MEMBER(cothello_state::counter_tick)
u8 max = std::clamp(int(m_inputs[3]->read()), 1, 9);
u8 high = (m_counter / 100) % 10;
if (high == 0 || high == max)
m_maincpu->set_input_line(0, HOLD_LINE);
if (high != max)
m_counter_timer->adjust(attotime::from_seconds(1));
// output counter to 7segs
// output counter to 7segs (don't know which decoder chip, but 6/9 has roof/tail)
static const u8 led_map[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
m_digits[0] = led_map[m_counter % 10];
@ -182,17 +182,19 @@ void cothello_state::sound_w(u8 data)
if (data & 0x80)
{
// d3: beeper start
if (data & 8)
if (~m_sound_data & data & 8)
{
m_beeper->set_state(1);
m_beeper_off->adjust(attotime::from_msec(80));
m_beeper_off->adjust(attotime::from_msec(80)); // approximation
}
// d0-d2: beeper frequency
u8 freq = (data & 0x7) + 1;
const u32 base = 3500;
const u32 base = 3500; // approximation
m_beeper->set_clock(base / freq);
}
m_sound_data = data;
}
@ -209,7 +211,7 @@ void cothello_state::main_map(address_map &map)
map(0x8000, 0x8000).w(FUNC(cothello_state::sound_w));
map(0xa000, 0xa000).r(FUNC(cothello_state::coin_r));
map(0xc000, 0xffff).writeonly().share("vram");
map(0xc040, 0xc07f).mirror(0x3f00).nopw();
map(0xc040, 0xc0ff).mirror(0x3f00).nopw();
}
@ -225,9 +227,9 @@ static INPUT_PORTS_START( cothello )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) PORT_NAME("2 Players Start Sente") // 2
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START4 ) PORT_NAME("2 Players Start Gote") // 1
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Reset")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Abort")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Reset")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Abort")
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_START("IN.1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_16WAY
@ -269,7 +271,8 @@ INPUT_PORTS_END
void cothello_state::cothello(machine_config &config)
{
// basic machine hardware
I8080A(config, m_maincpu, 750000);
I8080A(config, m_maincpu, 750000); // wrong, see TODO
m_maincpu->set_vblank_int("screen", FUNC(cothello_state::irq0_line_hold));
m_maincpu->set_addrmap(AS_PROGRAM, &cothello_state::main_map);
// video hardware
@ -307,4 +310,4 @@ ROM_END
******************************************************************************/
// YEAR NAME PARENT MACHINE INPUT CLASS INIT SCREEN COMPANY, FULLNAME, FLAGS
GAMEL(1978, cothello, 0, cothello, cothello, cothello_state, empty_init, ROT0, "Nintendo", "Computer Othello", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_cothello )
GAMEL(1978, cothello, 0, cothello, cothello, cothello_state, empty_init, ROT0, "Nintendo", "Computer Othello", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_TIMING, layout_cothello )