mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
New working clones
------------------ Tekken 2 (US, TES3/VER.A) [Guru]
This commit is contained in:
parent
c056522aab
commit
28fce32e87
@ -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.
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
@ -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) )
|
||||
|
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user