summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/namco/namcos12.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/namco/namcos12.cpp')
-rw-r--r--src/mame/namco/namcos12.cpp826
1 files changed, 520 insertions, 306 deletions
diff --git a/src/mame/namco/namcos12.cpp b/src/mame/namco/namcos12.cpp
index ab9aa1146e1..f8c3698e570 100644
--- a/src/mame/namco/namcos12.cpp
+++ b/src/mame/namco/namcos12.cpp
@@ -15,13 +15,14 @@
Issues:
- not all games work due to either banking, dma or protection issues.
- graphics are glitchy in some games.
- - kartduel does a "BSOD" crash when you start the game in race mode, or after finishing a race in time trial mode
- kartduel frame rate is choppy, it freezes every half second
- - truckk doesn't boot: the H8/3002 never enters InitJVSBoards @ 1DE2. 1DE2 is referenced in a table of commands at 4032,
- which is called by the routine at 3FEA. It is not clear how execution is intended to get to 3FEA - there are no direct
- branches to that location, and the bytes 3F EA don't appear at all in the program.
+ memo: this is due to the link PCB not being implemented, it keeps trying to communicate over the network causing hitching.
+ Forcing 0x1f781701 (which is within the shared RAM between the PCBs) to 0xff will stop the hitching.
- technodr: printer not emulated. To play the game, press F2 to enter the test menu, navigate to GAME OPTIONS and disable
the printer by setting "PRINTER" to OFF.
+ - sws2001 crashes at random times in-game, and always after the opening video. You can spam insert coin and start to get in-game.
+ - sws2000 also crashes after opening video
+ - toukon3 has garbage graphics
Namco System 12 - Arcade Playstation-based Hardware
===================================================
@@ -68,6 +69,7 @@ Tekken 3 (TET1/VER.A) (C) Namco, 1996 COH-700 SYS
Tekken 3 (TET2/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
Tekken 3 (TET3/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
Tekken 3 (TET3/VER.B) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
+Tekken 3 (TET2/VER.C) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006
Tekken 3 (TET2/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
Tekken 3 (TET3/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
Tekken 3 (TET1/VER.E1) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006
@@ -82,19 +84,19 @@ Wanted Games
Aerosmith - Quest for Fame (C) Namco, 2001
http://www.bandainamcogames.co.jp/am/vg/questforfame/
-Soul Calibur Ver.B (C) Namco, 199?
+Soul Calibur Ver.B (C) Namco, 1998 (flyer date)
+https://flyers.arcade-museum.com/?page=flyer&db=videodb&id=1009&image=1
+https://flyers.arcade-museum.com/?page=flyer&db=videodb&id=4766&image=1
Probably doesn't exist
-Submarines (C) Namco, 199?
-http://www.arcadeflyers.com/?page=thumbs&db=videodb&id=5531
+Submarines (C) Namco, 1999 (flyer date)
+https://flyers.arcade-museum.com/?page=flyer&db=videodb&id=5531&image=1
This was cancelled, only the flyer exists.
It was shown only at an amusement show. Possibly a prototype still exists. Possibly not.
Tekno Werk (C) Namco, 1999
-Some kind of music game similar to Konami's Keyboard Mania series
-
-Um Jammer Lammy (C) Namco, 1999
-http://www.wailee.com/sys/lpic/UM_Jammer_Lammy.jpg
+A music game with two 17-key Yamaha keyboards side by side for 2 players
+Video: https://www.youtube.com/watch?v=uGlt0HM67l8
The Namco System 12 system comprises 3 mandatory PCB's....
MOTHER PCB - This is the main PCB. It holds all sound circuitry, sound ROMs, program ROMs, shared RAM, bank-switching
@@ -1047,9 +1049,11 @@ Notes:
MB87078 : Fujitsu MB87078 6-bit, 4-channel Electronic Volume Controller (SOIC24)
J2 : Custom Namco connector for plug-in CPU PCB
J3 : 40 pin connector for IDE CDROM data cable
- J4 : 6 pin connector (possibly to re-program the CPLD)
- J8 : 4 pin connector (left/right audio output)
- J9 : 3 pin connector (possibly mono audio output or another audio output)
+ J4 : 6 pin connector (serial)
+ For Um Jammer Lammy Now this goes to J205 on the M148 EMI DRIVE PCB.
+ According to the manual schematics, only GND and TX are connected going to RxD0 on EMI DRIVE PCB side.
+ J8 : 4 pin connector (left/right audio output, RGND/R/LGND/L pinout)
+ J9 : 3 pin connector (left/right audio output, L/GND/R pinout)
This PCB was found on the following games (so far)....
@@ -1093,18 +1097,28 @@ The lever must be wired to analog port 0 (pin B22 parts side) of the Namco 48-wa
*/
#include "emu.h"
-#include "cpu/psx/psx.h"
+
+#include "bus/ata/ataintf.h"
#include "cpu/h8/h83002.h"
#include "cpu/h8/h83337.h"
-#include "video/psx.h"
+#include "cpu/sh/sh7014.h"
+#include "cpu/psx/psx.h"
#include "machine/at28c16.h"
#include "machine/ram.h"
-#include "sound/c352.h"
#include "machine/rtc4543.h"
+#include "sound/c352.h"
+#include "video/psx.h"
+
#include "namco_settings.h"
+#include "namcos12_cdxa.h"
+
#include "screen.h"
#include "speaker.h"
+#include <cstdarg>
+
+
+namespace {
#define VERBOSE_LEVEL ( 0 )
@@ -1125,6 +1139,8 @@ public:
, m_mainbank(*this, "mainbank")
, m_lightgun_io(*this, {"LIGHT0_X", "LIGHT0_Y", "LIGHT1_X", "LIGHT1_Y"})
, m_service_io(*this, "SERVICE")
+ , m_start_lamp(*this, "P%u_Start_lamp", 1U)
+ , m_gun_recoil(*this, "Player%u_Gun_Recoil", 1U)
{
}
@@ -1135,28 +1151,34 @@ public:
void init_namcos12();
void init_ptblank2();
void init_technodr();
- void init_golgo13();
+ void init_alt_bank1();
protected:
+ virtual void machine_start() override;
virtual void machine_reset() override;
- void golgo13_h8iomap(address_map &map);
- void kartduel_h8iomap(address_map &map);
- void jvsiomap(address_map &map);
void jvsmap(address_map &map);
void namcos12_map(address_map &map);
- void plarailjvsiomap(address_map &map);
void plarailjvsmap(address_map &map);
void ptblank2_map(address_map &map);
- void s12h8iomap(address_map &map);
- void s12h8jvsiomap(address_map &map);
- void s12h8railiomap(address_map &map);
void s12h8rwjvsmap(address_map &map);
void s12h8rwmap(address_map &map);
- void tdjvsiomap(address_map &map);
void tdjvsmap(address_map &map);
void tektagt_map(address_map &map);
+ uint16_t s12_mcu_gun_h_r();
+ uint16_t s12_mcu_gun_v_r();
+ uint8_t s12_mcu_p8_r();
+ uint8_t s12_mcu_jvs_p8_r();
+ uint8_t s12_mcu_pa_r();
+ void s12_mcu_pa_w(uint8_t data);
+ uint8_t s12_mcu_portB_r();
+ void s12_mcu_portB_w(uint8_t data);
+ uint8_t s12_mcu_p6_r();
+ uint8_t iob_p4_r();
+ uint8_t iob_p6_r();
+ void iob_p4_w(uint8_t data);
+
required_device<psxcpu_device> m_maincpu;
required_device<ram_device> m_ram;
required_device<h83002_device> m_sub;
@@ -1174,6 +1196,9 @@ private:
optional_ioport_array<4> m_lightgun_io;
optional_ioport m_service_io;
+ output_finder<2> m_start_lamp;
+ output_finder<2> m_gun_recoil;
+
uint16_t m_n_bankoffset;
uint32_t m_n_dmaoffset;
uint32_t m_n_tektagdmaoffset;
@@ -1184,14 +1209,7 @@ private:
uint32_t m_ttt_val[2];
uint8_t m_sub_porta;
uint8_t m_sub_portb;
-
uint8_t m_jvssense;
- uint8_t m_tssio_port_4;
-
- uint16_t s12_mcu_p6_r();
- uint16_t iob_p4_r();
- uint16_t iob_p6_r();
- void iob_p4_w(uint16_t data);
void sharedram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint16_t sharedram_r(offs_t offset, uint16_t mem_mask = ~0);
@@ -1204,18 +1222,10 @@ private:
void tektagt_protection_2_w(offs_t offset, uint16_t data);
uint16_t tektagt_protection_2_r(offs_t offset);
uint16_t tektagt_protection_3_r();
- uint16_t s12_mcu_p8_r();
- uint16_t s12_mcu_jvs_p8_r();
- uint16_t s12_mcu_pa_r();
- void s12_mcu_pa_w(uint16_t data);
- uint16_t s12_mcu_portB_r();
- void s12_mcu_portB_w(uint16_t data);
- uint16_t s12_mcu_gun_h_r();
- uint16_t s12_mcu_gun_v_r();
inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... );
void namcos12_rom_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size );
- DECLARE_WRITE_LINE_MEMBER(namcos12_sub_irq);
+ void namcos12_sub_irq(int state);
};
@@ -1227,7 +1237,6 @@ public:
void technodr(machine_config &config);
void golgo13(machine_config &config);
void aplarail(machine_config &config);
- void truckk(machine_config &config);
void tektagt(machine_config &config);
void ptblank2(machine_config &config);
void kartduel(machine_config &config);
@@ -1237,6 +1246,28 @@ private:
};
+class namcos12_cdxa_state : public namcos12_boothack_state
+{
+public:
+ namcos12_cdxa_state(const machine_config &mconfig, device_type type, const char *tag)
+ : namcos12_boothack_state(mconfig, type, tag)
+ , m_cdxa_pcb(*this, "cdxa_pcb")
+ {
+ }
+
+ void cdxa_pcb(machine_config &config);
+
+ void truckk(machine_config &config);
+
+ void init_truckk();
+
+private:
+ void cdxa_psx_map(address_map &map);
+
+ required_device<namcos12_cdxa_device> m_cdxa_pcb;
+};
+
+
inline void ATTR_PRINTF(3,4) namcos12_state::verboselog( int n_level, const char *s_fmt, ... )
{
if( VERBOSE_LEVEL >= n_level )
@@ -1264,12 +1295,40 @@ uint16_t namcos12_state::sharedram_r(offs_t offset, uint16_t mem_mask)
void namcos12_state::bankoffset_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- // Golgo 13 has different banking (maybe the keycus controls it?)
- if(m_alt_bank)
+ /*
+ Banking notes for various alt bank games:
+ mdhorse, kaiunqz:
+ *0x1f000000 = ((val >> 0x17) & 0xe) | 8;
+
+ golgo13, g13knd:
+ *0x1f000000 = ((val >> 0x17) & 0x6) + 8;
+ followed by
+ *0x1f000000 = (val >> 0x15) & 0x7;
+
+ truckk:
+ *0x1f000000 = ((val >> 0x17) & 0x1e) + 8;
+ followed by
+ *0x1f000000 = (val >> 0x15) & 0x7ff; (lower bits only set for manual transfers, mask is implicit)
+
+ sws2001:
+ The upper bits are set using fixed range checks:
+ if (val <= 0x0ffffff)
+ *0x1f000000 = 0x08;
+ else if (val >= 0x1000000 && val <= 0x1ffffff)
+ *0x1f000000 = 0x0a;
+ else if (val >= 0x2000000 && val <= 0x2ffffff)
+ *0x1f000000 = 0x0c;
+ else if (val >= 0x3000000)
+ *0x1f000000 = 0x0e;
+
+ The function at 8004d01c is the same logic as above + logic for the lower 3 bits:
+ *0x1f000000 = (val >> 0x15) & 0x7;
+ */
+ if( m_alt_bank == 1 )
{
if( ( data & 8 ) != 0 )
{
- m_n_bankoffset = ( data & 0x6 ) << 2;
+ m_n_bankoffset = ( data - 8 ) << 2;
}
else
{
@@ -1307,28 +1366,33 @@ void namcos12_state::namcos12_rom_read( uint32_t *p_n_psxram, uint32_t n_address
// TODO: the check for going past the end of ram should be in dma.c
uint32_t m_n_psxramsize = m_ram->size();
- if(m_has_tektagt_dma && !m_n_dmaoffset)
- {
- n_region = m_bankedroms;
- n_offset = m_n_tektagdmaoffset & 0x7fffffff;
- verboselog(1, "namcos12_rom_read( %08x, %08x ) tektagt %08x\n", n_address, n_size, n_offset );
- }
- else if( m_n_dmaoffset >= 0x80000000 || m_maincpu->exp_base() == 0x1f300000 )
+ n_offset = m_has_tektagt_dma ? m_n_tektagdmaoffset : m_n_dmaoffset;
+
+ // Depending on the game, the method of specifying the main ROM region is different.
+ // Some games set exp_base to 0x1f300000 (toukon3, tenkomor) and others set the msb of the DMA offset to 1 (tekken3, sws2000 for example).
+ const bool is_mainrom = BIT( n_offset, 31 ) || m_maincpu->exp_base() == 0x1f300000;
+
+ if ( is_mainrom )
{
- /// HACK: it's unclear how exp_cfg & exp_base really play a part in this, tenkomor needs the test here and not in dmaoffset_w().
n_region = m_mainrom;
- n_offset = m_n_dmaoffset & 0x003fffff;
- verboselog(1, "namcos12_rom_read( %08x, %08x ) boot %08x\n", n_address, n_size, n_offset );
+ n_offset &= 0xffffff; // although the area should really be masked with 0x3fffff, the bootloader used by sws2000, sws2001, kaiunqz intentionally go over by a small amount when copying the program code into memory
}
else
{
n_region = m_bankedroms;
- n_offset = m_n_dmaoffset & 0x7fffffff;
- verboselog(1, "namcos12_rom_read( %08x, %08x ) game %08x\n", n_address, n_size, n_offset );
+ n_offset &= 0x7fffffff;
+
+ if( !m_has_tektagt_dma && m_alt_bank ) // alt bank method stores the upper bits of the bank into m_n_bankoffset
+ n_offset += m_n_bankoffset * 0x200000;
}
+ m_has_tektagt_dma = 0;
+
+ verboselog(1, "namcos12_rom_read( %08x, %08x ) %s %08x %08x\n", n_address, n_size, is_mainrom ? "mainrom" : "game", m_n_dmaoffset, n_offset );
+
source = (uint16_t *) n_region->base();
- n_romleft = ( n_region->bytes() - n_offset ) / 4;
+ n_romleft = int32_t( n_region->bytes() - n_offset ) / 4; // without the cast this math never becomes negative so the truncation logic never happens (needed by sws2000, sws2001, kaiunqz)
+
if( n_size > n_romleft )
{
verboselog(1, "namcos12_rom_read dma truncated %d to %d passed end of rom\n", n_size, n_romleft );
@@ -1337,7 +1401,7 @@ void namcos12_state::namcos12_rom_read( uint32_t *p_n_psxram, uint32_t n_address
destination = (uint16_t *)p_n_psxram;
- n_ramleft = ( m_n_psxramsize - n_address ) / 4;
+ n_ramleft = int32_t( m_n_psxramsize - n_address ) / 4;
if( n_size > n_ramleft )
{
verboselog(1, "namcos12_rom_read dma truncated %d to %d passed end of ram\n", n_size, n_ramleft );
@@ -1357,7 +1421,7 @@ void namcos12_state::namcos12_rom_read( uint32_t *p_n_psxram, uint32_t n_address
}
}
-WRITE_LINE_MEMBER(namcos12_state::namcos12_sub_irq)
+void namcos12_state::namcos12_sub_irq(int state)
{
m_sub->set_input_line(1, state ? ASSERT_LINE : CLEAR_LINE);
m_adc->adtrg_w(state);
@@ -1368,8 +1432,10 @@ void namcos12_state::namcos12_map(address_map &map)
{
map(0x1f000000, 0x1f000003).nopr();
map(0x1f000000, 0x1f000001).w(FUNC(namcos12_state::bankoffset_w)); /* banking */
+ map(0x1f010000, 0x1f010003).nopw(); // very spammy
map(0x1f080000, 0x1f083fff).rw(FUNC(namcos12_state::sharedram_r), FUNC(namcos12_state::sharedram_w)); /* shared ram?? */
map(0x1f140000, 0x1f140fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* EEPROM */
+ map(0x1f018000, 0x1f018003).nopw(); // very spammy
map(0x1f1bff08, 0x1f1bff0f).nopw(); /* ?? */
map(0x1f700000, 0x1f70ffff).w(FUNC(namcos12_state::dmaoffset_w)); /* dma */
/* Network area */
@@ -1405,13 +1471,13 @@ void namcos12_state::system11gun_w(offs_t offset, uint16_t data, uint16_t mem_ma
/* blowback 1 */
/* blowback 2 */
/* Note: output label has been changed for the Engrish Impaired ;-) */
- output().set_value("Player1_Gun_Recoil", (~data & 0x02)>>1);
- output().set_value("Player2_Gun_Recoil", (~data & 0x01));
+ m_gun_recoil[0] = BIT(~data, 1);
+ m_gun_recoil[1] = BIT(~data, 0);
/* start 1 */
- output().set_value("P2_Start_lamp", (~data & 0x08)>>3);
+ m_start_lamp[0] = BIT(~data, 3);
/* start 2 */
- output().set_value("P2_Start_lamp", (~data & 0x04)>>2);
+ m_start_lamp[1] = BIT(~data, 2);
verboselog(1, "system11gun_w: outputs (%08x %08x)\n", data, mem_mask );
break;
@@ -1545,13 +1611,17 @@ uint16_t namcos12_state::tektagt_protection_3_r()
return 0;
}
+void namcos12_state::machine_start()
+{
+ m_start_lamp.resolve();
+ m_gun_recoil.resolve();
+}
+
void namcos12_state::machine_reset()
{
bankoffset_w(0,0,0xffff);
m_jvssense = 1;
- m_tssio_port_4 = 0;
-
m_has_tektagt_dma = 0;
}
@@ -1590,7 +1660,7 @@ void namcos12_state::s12h8rwjvsmap(address_map &map)
map(0x300030, 0x300031).noprw(); // most S12 bioses write here simply to generate a wait state. there is no deeper meaning.
}
-uint16_t namcos12_state::s12_mcu_p8_r()
+uint8_t namcos12_state::s12_mcu_p8_r()
{
return 0x02;
}
@@ -1599,88 +1669,41 @@ uint16_t namcos12_state::s12_mcu_p8_r()
// in System 12, bit 0 of H8/3002 port A is connected to its chip enable
// the actual I/O takes place through the H8/3002's serial port B.
-uint16_t namcos12_state::s12_mcu_pa_r()
+uint8_t namcos12_state::s12_mcu_pa_r()
{
return m_sub_porta;
}
-void namcos12_state::s12_mcu_pa_w(uint16_t data)
+void namcos12_state::s12_mcu_pa_w(uint8_t data)
{
m_sub_porta = data;
m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
}
-uint16_t namcos12_state::s12_mcu_portB_r()
+uint8_t namcos12_state::s12_mcu_portB_r()
{
return m_sub_portb;
}
-void namcos12_state::s12_mcu_portB_w(uint16_t data)
+void namcos12_state::s12_mcu_portB_w(uint8_t data)
{
m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
}
-uint16_t namcos12_state::s12_mcu_p6_r()
+uint8_t namcos12_state::s12_mcu_p6_r()
{
// bit 1 = JVS cable present sense (1 = I/O board plugged in)
return (m_jvssense << 1) | 0xfd;
}
-uint16_t namcos12_state::s12_mcu_jvs_p8_r()
+uint8_t namcos12_state::s12_mcu_jvs_p8_r()
{
return 0x12; // bit 4 = JVS enable. aplarail requires it to be on, soulclbr & others will require JVS I/O if it's on
}
-void namcos12_state::s12h8iomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).r(FUNC(namcos12_state::s12_mcu_p6_r));
- map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
- map(h8_device::PORT_8, h8_device::PORT_8).r(FUNC(namcos12_state::s12_mcu_p8_r)).nopw();
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
- map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
- map(h8_device::ADC_0, h8_device::ADC_0).noprw();
- map(h8_device::ADC_1, h8_device::ADC_1).noprw();
- map(h8_device::ADC_2, h8_device::ADC_2).noprw();
- map(h8_device::ADC_3, h8_device::ADC_3).noprw();
-}
-
-void namcos12_state::s12h8jvsiomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).r(FUNC(namcos12_state::s12_mcu_p6_r));
- map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
- map(h8_device::PORT_8, h8_device::PORT_8).r(FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw();
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
- map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
- map(h8_device::ADC_0, h8_device::ADC_0).noprw();
- map(h8_device::ADC_1, h8_device::ADC_1).noprw();
- map(h8_device::ADC_2, h8_device::ADC_2).noprw();
- map(h8_device::ADC_3, h8_device::ADC_3).noprw();
-}
-
-void namcos12_state::s12h8railiomap(address_map &map)
-{
- map(h8_device::PORT_6, h8_device::PORT_6).r(FUNC(namcos12_state::s12_mcu_p6_r));
- map(h8_device::PORT_7, h8_device::PORT_7).portr("DSW");
- map(h8_device::PORT_8, h8_device::PORT_8).r(FUNC(namcos12_state::s12_mcu_jvs_p8_r)).nopw();
- map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(namcos12_state::s12_mcu_pa_r), FUNC(namcos12_state::s12_mcu_pa_w));
- map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(namcos12_state::s12_mcu_portB_r), FUNC(namcos12_state::s12_mcu_portB_w));
- map(h8_device::ADC_0, h8_device::ADC_0).portr("LEVER");
- map(h8_device::ADC_1, h8_device::ADC_1).noprw();
- map(h8_device::ADC_2, h8_device::ADC_2).noprw();
- map(h8_device::ADC_3, h8_device::ADC_3).noprw();
-}
-
-void namcos12_state::kartduel_h8iomap(address_map &map)
-{
- s12h8iomap(map);
- map(h8_device::ADC_0, h8_device::ADC_0).portr("BRAKE");
- map(h8_device::ADC_1, h8_device::ADC_1).portr("GAS");
- map(h8_device::ADC_2, h8_device::ADC_2).portr("STEER");
-}
-
// Golgo 13 lightgun inputs
uint16_t namcos12_state::s12_mcu_gun_h_r()
@@ -1693,14 +1716,6 @@ uint16_t namcos12_state::s12_mcu_gun_v_r()
return m_lightgun_io[1]->read();
}
-void namcos12_state::golgo13_h8iomap(address_map &map)
-{
- s12h8iomap(map);
-
- map(h8_device::ADC_1, h8_device::ADC_1).r(FUNC(namcos12_state::s12_mcu_gun_h_r));
- map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(namcos12_state::s12_mcu_gun_v_r));
-}
-
void namcos12_state::init_namcos12()
{
m_mainbank->configure_entries(0, memregion( "bankedroms" )->bytes() / 0x200000, memregion( "bankedroms" )->base(), 0x200000 );
@@ -1734,7 +1749,7 @@ void namcos12_state::init_technodr()
*( (uint32_t *)( memregion( "sub" )->base() + 0x14b6 ) ) = 0;
}
-void namcos12_state::init_golgo13()
+void namcos12_state::init_alt_bank1()
{
init_namcos12();
m_alt_bank = 1;
@@ -1746,18 +1761,27 @@ void namcos12_state::namcos12_mobo(machine_config &config)
/* basic machine hardware */
H83002(config, m_sub, 16934400); // frequency based on research (superctr)
m_sub->set_addrmap(AS_PROGRAM, &namcos12_state::s12h8rwmap);
- m_sub->set_addrmap(AS_IO, &namcos12_state::s12h8iomap);
+ m_sub->read_adc<0>().set_constant(0);
+ m_sub->read_adc<1>().set_constant(0);
+ m_sub->read_adc<2>().set_constant(0);
+ m_sub->read_adc<3>().set_constant(0);
+ m_sub->read_port6().set(FUNC(namcos12_state::s12_mcu_p6_r));
+ m_sub->read_port7().set_ioport("DSW");
+ m_sub->read_port8().set(FUNC(namcos12_state::s12_mcu_p8_r));
+ m_sub->write_port8().set_nop();
+ m_sub->read_porta().set(FUNC(namcos12_state::s12_mcu_pa_r));
+ m_sub->write_porta().set(FUNC(namcos12_state::s12_mcu_pa_w));
+ m_sub->read_portb().set(FUNC(namcos12_state::s12_mcu_portB_r));
+ m_sub->write_portb().set(FUNC(namcos12_state::s12_mcu_portB_w));
NAMCO_SETTINGS(config, m_settings, 0);
RTC4543(config, m_rtc, XTAL(32'768));
- m_rtc->data_cb().set("sub:sci1", FUNC(h8_sci_device::rx_w));
+ m_rtc->data_cb().set(m_sub, FUNC(h8_device::sci_rx_w<1>));
- // FIXME: need better syntax for configuring H8 onboard devices
- h8_sci_device &sub_sci1(*m_sub->subdevice<h8_sci_device>("sci1"));
- sub_sci1.tx_handler().set(m_settings, FUNC(namco_settings_device::data_w));
- sub_sci1.clk_handler().set(m_rtc, FUNC(rtc4543_device::clk_w)).invert();
- sub_sci1.clk_handler().append(m_settings, FUNC(namco_settings_device::clk_w));
+ m_sub->write_sci_tx<1>().set(m_settings, FUNC(namco_settings_device::data_w));
+ m_sub->write_sci_clk<1>().set(m_rtc, FUNC(rtc4543_device::clk_w)).invert();
+ m_sub->write_sci_clk<1>().append(m_settings, FUNC(namco_settings_device::clk_w));
AT28C16(config, "at28c16", 0);
@@ -1825,7 +1849,8 @@ void namcos12_boothack_state::golgo13(machine_config &config)
coh700(config);
/* basic machine hardware */
- m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::golgo13_h8iomap);
+ m_sub->read_adc<1>().set(FUNC(namcos12_boothack_state::s12_mcu_gun_h_r));
+ m_sub->read_adc<2>().set(FUNC(namcos12_boothack_state::s12_mcu_gun_v_r));
}
void namcos12_boothack_state::kartduel(machine_config &config)
@@ -1833,7 +1858,9 @@ void namcos12_boothack_state::kartduel(machine_config &config)
coh700(config);
/* basic machine hardware */
- m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::kartduel_h8iomap);
+ m_sub->read_adc<0>().set_ioport("BRAKE");
+ m_sub->read_adc<1>().set_ioport("GAS");
+ m_sub->read_adc<2>().set_ioport("STEER");
}
#define JVSCLOCK (XTAL(14'745'600))
@@ -1843,41 +1870,18 @@ void namcos12_state::jvsmap(address_map &map)
map(0xc000, 0xfb7f).ram();
}
-void namcos12_state::jvsiomap(address_map &map)
-{
-}
-
-
-void namcos12_boothack_state::truckk(machine_config &config)
-{
- coh700(config);
- // Timer at 115200*16 for the jvs serial clock
- subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
-
- h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK));
- iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::jvsmap);
- iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::jvsiomap);
-
- subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w));
- subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
-
- config.set_maximum_quantum(attotime::from_hz(2*115200));
-}
-
-uint16_t namcos12_state::iob_p4_r()
+uint8_t namcos12_state::iob_p4_r()
{
- return m_tssio_port_4;
+ return 0;
}
-void namcos12_state::iob_p4_w(uint16_t data)
+void namcos12_state::iob_p4_w(uint8_t data)
{
- m_tssio_port_4 = data;
-
// bit 2 = SENSE line back to main (0 = asserted, 1 = dropped)
m_jvssense = (data & 0x04) ? 0 : 1;
}
-uint16_t namcos12_state::iob_p6_r()
+uint8_t namcos12_state::iob_p6_r()
{
// d4 is service button
uint8_t sb = (m_service_io->read() & 1) << 4;
@@ -1894,15 +1898,6 @@ void namcos12_state::tdjvsmap(address_map &map)
map(0xc000, 0xfb7f).ram();
}
-void namcos12_state::tdjvsiomap(address_map &map)
-{
- map(h8_device::PORT_4, h8_device::PORT_4).rw(FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w));
- map(h8_device::PORT_6, h8_device::PORT_6).r(FUNC(namcos12_state::iob_p6_r));
- map(h8_device::ADC_0, h8_device::ADC_0).portr("STEER");
- map(h8_device::ADC_1, h8_device::ADC_1).portr("BRAKE");
- map(h8_device::ADC_2, h8_device::ADC_2).portr("GAS");
-}
-
void namcos12_state::plarailjvsmap(address_map &map)
{
map(0x0000, 0x3fff).rom().region("iocpu", 0);
@@ -1911,31 +1906,27 @@ void namcos12_state::plarailjvsmap(address_map &map)
map(0xc000, 0xfb7f).ram();
}
-void namcos12_state::plarailjvsiomap(address_map &map)
-{
- map(h8_device::PORT_4, h8_device::PORT_4).rw(FUNC(namcos12_state::iob_p4_r), FUNC(namcos12_state::iob_p4_w));
- map(h8_device::PORT_6, h8_device::PORT_6).portr("SERVICE");
- map(h8_device::ADC_0, h8_device::ADC_0).noprw();
- map(h8_device::ADC_1, h8_device::ADC_1).noprw();
- map(h8_device::ADC_2, h8_device::ADC_2).noprw();
-}
-
void namcos12_boothack_state::technodr(machine_config &config)
{
coh700(config);
// Timer at 115200*16 for the jvs serial clock
- subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
+ m_sub->sci_set_external_clock_period(0, attotime::from_hz(JVSCLOCK/8));
// modify H8/3002 map to omit direct-connected controls
m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap);
- m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8jvsiomap);
+ m_sub->read_port8().set(FUNC(namcos12_boothack_state::s12_mcu_jvs_p8_r));
h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK));
iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::tdjvsmap);
- iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::tdjvsiomap);
+ iocpu.read_adc<0>().set_ioport("STEER");
+ iocpu.read_adc<1>().set_ioport("BRAKE");
+ iocpu.read_adc<2>().set_ioport("GAS");
+ iocpu.read_port4().set(FUNC(namcos12_boothack_state::iob_p4_r));
+ iocpu.write_port4().set(FUNC(namcos12_boothack_state::iob_p4_w));
+ iocpu.read_port6().set(FUNC(namcos12_boothack_state::iob_p6_r));
- subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w));
- subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
+ iocpu.write_sci_tx<0>().set(m_sub, FUNC(h8_device::sci_rx_w<0>));
+ m_sub->write_sci_tx<0>().set(iocpu, FUNC(h8_device::sci_rx_w<0>));
config.set_maximum_quantum(attotime::from_hz(2*115200));
}
@@ -1944,22 +1935,115 @@ void namcos12_boothack_state::aplarail(machine_config &config)
{
coh700(config);
// Timer at 115200*16 for the jvs serial clock
- subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8));
+ m_sub->sci_set_external_clock_period(0, attotime::from_hz(JVSCLOCK/8));
// modify H8/3002 map to omit direct-connected controls
m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap);
- m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8railiomap);
+ m_sub->read_adc<0>().set_ioport("LEVER");
+ m_sub->read_adc<1>().set_constant(0);
+ m_sub->read_adc<2>().set_constant(0);
+ m_sub->read_adc<3>().set_constant(0);
+ m_sub->read_port6().set(FUNC(namcos12_boothack_state::s12_mcu_p6_r));
+ m_sub->read_port7().set_ioport("DSW");
+ m_sub->read_port8().set(FUNC(namcos12_boothack_state::s12_mcu_jvs_p8_r));
+ m_sub->write_port8().set_nop();
+ m_sub->read_porta().set(FUNC(namcos12_boothack_state::s12_mcu_pa_r));
+ m_sub->write_porta().set(FUNC(namcos12_boothack_state::s12_mcu_pa_w));
+ m_sub->read_portb().set(FUNC(namcos12_boothack_state::s12_mcu_portB_r));
+ m_sub->write_portb().set(FUNC(namcos12_boothack_state::s12_mcu_portB_w));
h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK));
iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::plarailjvsmap);
- iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::plarailjvsiomap);
+ iocpu.read_adc<0>().set_constant(0);
+ iocpu.read_adc<1>().set_constant(0);
+ iocpu.read_adc<2>().set_constant(0);
+ iocpu.read_adc<3>().set_constant(0);
+ iocpu.read_port4().set(FUNC(namcos12_boothack_state::iob_p4_r));
+ iocpu.write_port4().set(FUNC(namcos12_boothack_state::iob_p4_w));
+ iocpu.read_port6().set_ioport("SERVICE");
- subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w));
- subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
+ iocpu.write_sci_tx<0>().set(m_sub, FUNC(h8_device::sci_rx_w<0>));
+ m_sub->write_sci_tx<0>().set(iocpu, FUNC(h8_device::sci_rx_w<0>));
config.set_maximum_quantum(attotime::from_hz(2*115200));
}
+///
+
+void namcos12_cdxa_state::cdxa_pcb(machine_config &config)
+{
+ coh700(config);
+
+ NAMCOS12_CDXA(config, m_cdxa_pcb, XTAL(14'745'600));
+ m_cdxa_pcb->add_route(0, "lspeaker", 0.30); // roughly matched the volume of speaking lines between the CDXA audio vs non-CDXA audio
+ m_cdxa_pcb->add_route(1, "rspeaker", 0.30);
+ m_cdxa_pcb->psx_int10_callback().set("maincpu:irq", FUNC(psxirq_device::intin10));
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_cdxa_state::cdxa_psx_map);
+}
+
+void namcos12_cdxa_state::cdxa_psx_map(address_map &map)
+{
+ namcos12_map(map);
+
+ map(0x1f7c0000, 0x1f7cffff).rw(m_cdxa_pcb, FUNC(namcos12_cdxa_device::sh2_ram_r), FUNC(namcos12_cdxa_device::sh2_ram_w));
+
+ map(0x1f7d6002, 0x1f7d6003).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::reset_sh2_w));
+ map(0x1f7d6004, 0x1f7d600b).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::clockgen_w));
+ map(0x1f7d6010, 0x1f7d6011).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::ide_sh2_enabled_w));
+ map(0x1f7d6012, 0x1f7d6013).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::ide_ps1_enabled_w));
+ // 1f7d6018 unknown, only set once to 1 between the "SH2 Reset" and "SH2 Pll Clock Set" steps during boot
+ map(0x1f7d601a, 0x1f7d601b).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::sram_enabled_w));
+ map(0x1f7d601e, 0x1f7d601f).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::ps1_int10_finished_w));
+
+ map(0x1f7d800a, 0x1f7d800b).lr16(NAME([] () {
+ // Might be for the M148 PCB instead of CDXA PCB
+ // Code loops until this returns 0x20 before it starts writing to 0x1f7d8000
+ // Writes "55 x y z" to 0x1f7d8000 where x, y, z are related to the current I/O state
+ // Maybe used for lights?
+ return 0x20;
+ }));
+
+ map(0x1f7e0000, 0x1f7e000f).rw(m_cdxa_pcb, FUNC(namcos12_cdxa_device::cdrom_cs0_r), FUNC(namcos12_cdxa_device::cdrom_cs0_w));
+ // map(0x1f7e8000, 0x1f7e800f).rw(m_cdxa_pcb, FUNC(namcos12_cdxa_device::cdrom_cs1_r), FUNC(namcos12_cdxa_device::cdrom_cs1_w));
+ // 1f7d7000 volume enabled/set? gets set to 6 between the "SH2 Volume Set" and "SH2 Trf Program" steps, after setting 4 volumes registers to 0x7e
+ map(0x1f7f8000, 0x1f7f80ff).w(m_cdxa_pcb, FUNC(namcos12_cdxa_device::volume_w));
+}
+
+void namcos12_cdxa_state::truckk(machine_config &config)
+{
+ cdxa_pcb(config);
+
+ m_sub->read_adc<0>().set_ioport("STEER");
+ m_sub->read_adc<1>().set_ioport("BRAKE");
+ m_sub->read_adc<2>().set_ioport("GAS");
+
+ // Timer at 115200*16 for the jvs serial clock
+ m_sub->sci_set_external_clock_period(0, attotime::from_hz(JVSCLOCK/8));
+
+ h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK));
+ iocpu.set_addrmap(AS_PROGRAM, &namcos12_cdxa_state::jvsmap);
+
+ iocpu.write_sci_tx<0>().set(m_sub, FUNC(h8_device::sci_rx_w<0>));
+ m_sub->write_sci_tx<0>().set(iocpu, FUNC(h8_device::sci_rx_w<0>));
+
+ config.set_maximum_quantum(attotime::from_hz(2*115200));
+}
+
+void namcos12_cdxa_state::init_truckk()
+{
+ init_alt_bank1();
+
+ /*
+ HACK: Change order of code so that the status flags are set before DMA 5 is started
+ Can be checked at 0x8001f6e4
+ */
+ uint8_t temp[5 * 4];
+ memcpy(temp, memregion( "maincpu:rom" )->base() + 0x376ec, sizeof(temp)); // copy the 5 instructions that initialize statuses before DMA 5 finishes
+ memcpy(memregion( "maincpu:rom" )->base() + 0x376e4 + sizeof(temp), memregion( "maincpu:rom" )->base() + 0x376e4, 2 * 4); // move the 2 DMA start call instructions below where the initialization code will go
+ memcpy(memregion( "maincpu:rom" )->base() + 0x376e4, temp, sizeof(temp)); // write initialization code in new spot
+}
+
static INPUT_PORTS_START( namcos12 )
PORT_START("DSW")
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR(Service_Mode) ) PORT_DIPLOCATION( "DIP SW2:1" )
@@ -2180,6 +2264,66 @@ static INPUT_PORTS_START( aplarail )
PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNKNOWN)
INPUT_PORTS_END
+static INPUT_PORTS_START( truckk )
+ PORT_START("DSW")
+ PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN0")
+ PORT_BIT( 0xfc23, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Select Up")
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("Select Down")
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Horn")
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("View Change")
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Music Next")
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Music Back")
+
+ PORT_START("IN1")
+ PORT_BIT( 0x1fff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_SERVICE( 0x4000, IP_ACTIVE_LOW )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START("GAS")
+ PORT_BIT( 0x3ff, 0x0200, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_NAME("Gas Pedal") PORT_REVERSE
+
+ PORT_START("BRAKE")
+ PORT_BIT( 0x3ff, 0x0200, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_NAME("Brake Pedal") PORT_REVERSE
+
+ PORT_START("STEER")
+ PORT_BIT( 0x3ff, 0x0200, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20) PORT_NAME("Steering Wheel")
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( ujlnow )
+ PORT_START("DSW")
+ PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN0")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Chin Switch (C)")
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Joe Switch (J)")
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Select Down")
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("Select Up")
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Circle / Enter") // The cabinet enter switch is linked to the P1 circle input as per the manual (bottom of pg 33)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Cross")
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Triangle")
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Chin Switch (C)")
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Joe Switch (J)")
+ PORT_BIT( 0x0c00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Must be high to get rid of I/O errors
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Circle")
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Cross")
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Triangle")
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x13ff, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Square")
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Square")
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_SERVICE( 0x4000, IP_ACTIVE_LOW )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
+INPUT_PORTS_END
+
ROM_START( aquarush )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "aq1vera.2l", 0x0000000, 0x200000, CRC(91eb9258) SHA1(30e225eb551bfe1bed6b342dd6d597345d64b677) )
@@ -2264,7 +2408,7 @@ ROM_END
ROM_START( fgtlayer )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD16_BYTE( "ftl3vera.2e", 0x0000000, 0x200000, CRC(90e33126) SHA1(81caedd72d7634810d6f7093d4ad437aca83fbf2) )
+ ROM_LOAD16_BYTE( "ftl3vera.2e", 0x0000000, 0x200000, CRC(17c23471) SHA1(22b5a25569c085f059c1c846cf628a1f140035e9) )
ROM_LOAD16_BYTE( "ftl3vera.2j", 0x0000001, 0x200000, CRC(1626465d) SHA1(941e7f8fbbaa232aab10a52aba1c462b4c91bb71) )
ROM_REGION32_LE( 0x2000000, "bankedroms", 0 ) /* main data */
@@ -2414,11 +2558,27 @@ ROM_END
ROM_START( kartduel )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
+ ROM_LOAD16_BYTE( "ktd2vera.2l", 0x0000000, 0x200000, CRC(7e7d8454) SHA1(4e0db56e433015cf1b9fd4cad35df99f1730e567) )
+ ROM_LOAD16_BYTE( "ktd2vera.2p", 0x0000001, 0x200000, CRC(6c8af7e7) SHA1(602975500180de98a0a7e22c079344e7a3ece25e) )
+
+ ROM_REGION32_LE( 0x01000000, "bankedroms", 0 ) /* main data */
+ ROM_LOAD16_BYTE( "kdt1rom0l.ic12", 0x000000, 0x800000, CRC(f8a79aef) SHA1(8c2a6aef5cc0ffe4b5e9f2a98ef5a29edd59eb4d) )
+ ROM_LOAD16_BYTE( "kdt1rom0u.ic11", 0x000001, 0x800000, CRC(bab0d328) SHA1(9a15bfb38c63b0012f29755b2be071e9c82d1c20) )
+
+ ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
+ ROM_LOAD16_WORD_SWAP( "ktd1vera.11s", 0x000000, 0x080000, CRC(c2ff1971) SHA1(32ee2afe08e92049d8139c9324a0ea1a3b7ee5a1) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
+ ROM_LOAD( "ktd1wave0.ic2", 0x0000000, 0x800000, CRC(c54d5539) SHA1(17518dc76bb3627ca42bac665938bb11ea926396) )
+ROM_END
+
+ROM_START( kartduelj )
+ ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "ktd1vera.2l", 0x0000000, 0x200000, CRC(0c207249) SHA1(6c57de25d452226a25f658638d89b81257960741) )
ROM_LOAD16_BYTE( "ktd1vera.2p", 0x0000001, 0x200000, CRC(f6e2581f) SHA1(06eb108c2775290590dba75f964f26443a585d70) )
ROM_REGION32_LE( 0x01000000, "bankedroms", 0 ) /* main data */
- ROM_LOAD16_BYTE( "kdt1rom0l.ic12", 0x000000, 0x800000, CRC(4a3bac12) SHA1(7758d97049d30a00b7bede3688d451fbf4eddbfb) )
+ ROM_LOAD16_BYTE( "kdt1rom0l.ic12", 0x000000, 0x800000, CRC(f8a79aef) SHA1(8c2a6aef5cc0ffe4b5e9f2a98ef5a29edd59eb4d) )
ROM_LOAD16_BYTE( "kdt1rom0u.ic11", 0x000001, 0x800000, CRC(bab0d328) SHA1(9a15bfb38c63b0012f29755b2be071e9c82d1c20) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
@@ -2608,7 +2768,7 @@ ROM_START( soulclbr )
ROM_LOAD( "soc1wave0.2", 0x0000000, 0x800000, CRC(c100618d) SHA1(b87f88ee42ad9c5affa674e5f816d902143fed99) )
ROM_END
-ROM_START( soulclbrwb )
+ROM_START( soulclbrab )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "soc14verb.2l", 0x000000, 0x200000, CRC(6af5c5f6) SHA1(51d1e7d78d95cfc765cd219ed07b405cd920044b) )
ROM_LOAD16_BYTE( "soc14verb.2p", 0x000001, 0x200000, CRC(23e7a4c4) SHA1(a97f36cafdeff9e26fbd24e54ab8ac8080763761) )
@@ -2703,7 +2863,7 @@ ROM_START( soulclbrjb )
ROM_LOAD( "soc1wave0.2", 0x0000000, 0x800000, CRC(c100618d) SHA1(b87f88ee42ad9c5affa674e5f816d902143fed99) )
ROM_END
-ROM_START( soulclbraa )
+ROM_START( soulclbra )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "soc12vera.2l", 0x0000000, 0x200000, CRC(ceadcc9a) SHA1(68cd3d15f28178fcea8aada6067b7060edfb2913) )
ROM_LOAD16_BYTE( "soc12vera.2p", 0x0000001, 0x200000, CRC(65a74cf0) SHA1(1129c078925bd02f4e9cef64cd7761968be53537) )
@@ -2746,7 +2906,7 @@ ROM_START( sws98 )
ROM_LOAD16_BYTE( "ss81vera.2l", 0x0000000, 0x200000, CRC(94b1f34c) SHA1(0c8491fda366b5b2874e5f49959dccd11d372e46) )
ROM_LOAD16_BYTE( "ss81vera.2p", 0x0000001, 0x200000, CRC(7d0ed33d) SHA1(34342ce57b29ee15c6279c099bb145ac7ad262f3) )
- ROM_REGION32_LE( 0x2000000, "bankedroms", 0 ) /* main data */
+ ROM_REGION32_LE( 0x1c00000, "bankedroms", 0 ) /* main data */
ROM_LOAD16_BYTE( "ss81fl1l.9", 0x1000000, 0x200000, CRC(b0b5dc77) SHA1(abce4e6ae60858b7c7408d10975b7a1e0d183115) )
ROM_LOAD16_BYTE( "ss81fl1u.10", 0x1000001, 0x200000, CRC(e526dba5) SHA1(889fdfba17282eb05a3e254af81ee15c3e16acc4) )
ROM_LOAD16_BYTE( "ss81fl2l.7", 0x1400000, 0x200000, CRC(2dc6f6b5) SHA1(e6c7bb804d7d027acca5adb15b0bb95321905ff3) )
@@ -2809,12 +2969,12 @@ ROM_START( sws2001 )
ROM_LOAD16_BYTE( "ss11vera.2l", 0x000000, 0x200000, CRC(a7b4dbe5) SHA1(1bcb8d127388e2ead9ca04b527779896c69daf7f) )
ROM_LOAD16_BYTE( "ss11vera.2p", 0x000001, 0x200000, CRC(3ef76b4e) SHA1(34c21b6002d3f88aa3f4b4606c8aace24be92920) )
- ROM_REGION32_LE( 0x2800000, "bankedroms", 0 ) /* main data */
+ ROM_REGION32_LE( 0x4000000, "bankedroms", 0 ) /* main data */
ROM_LOAD( "ss01rom0.9", 0x0000000, 0x800000, CRC(c08cc59c) SHA1(f2d8064491c98acbb40260d7f13d0f9b394c1383) )
- ROM_LOAD( "ss01rom1.10", 0x0800000, 0x800000, CRC(d4aa1dc6) SHA1(68fcb60aadf35668d7d746da1e29d5d985e40aec) )
- ROM_LOAD( "ss01rom2.11", 0x1000000, 0x800000, CRC(3371904a) SHA1(58bbf98a44560bc021bac4bc513fe89deea85b50) )
- ROM_LOAD16_BYTE( "ss11fl1l.5", 0x1800000, 0x800000, CRC(0546a2b4) SHA1(b61457c9c5136f94ace48e83de8043ce20ca4d99) )
- ROM_LOAD16_BYTE( "ss11fl1u.6", 0x1800001, 0x800000, CRC(b3de0b2c) SHA1(a89d3a2eb0952a98cc4765af2897b94136ca58ad) )
+ ROM_LOAD( "ss01rom1.10", 0x1000000, 0x800000, CRC(d4aa1dc6) SHA1(68fcb60aadf35668d7d746da1e29d5d985e40aec) )
+ ROM_LOAD( "ss01rom2.11", 0x2000000, 0x800000, CRC(3371904a) SHA1(58bbf98a44560bc021bac4bc513fe89deea85b50) )
+ ROM_LOAD( "ss11fl1l.5", 0x3000000, 0x800000, CRC(0546a2b4) SHA1(b61457c9c5136f94ace48e83de8043ce20ca4d99) )
+ ROM_LOAD( "ss11fl1u.6", 0x3800000, 0x800000, CRC(b3de0b2c) SHA1(a89d3a2eb0952a98cc4765af2897b94136ca58ad) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
ROM_LOAD16_WORD_SWAP( "ss01vera.11s", 0x000000, 0x080000, CRC(641e6584) SHA1(dfc0ac21bea5b19dbce5d50fb681854889d756dc) )
@@ -2927,6 +3087,29 @@ ROM_START( tekken3ud )
ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) )
ROM_END
+ROM_START( tekken3c )
+ ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
+ ROM_LOAD16_BYTE( "tet2verc.2e", 0x0000000, 0x200000, CRC(4483d76e) SHA1(c43b7e445acb77ddeb8a647bef1fc509ced0412e) )
+ ROM_LOAD16_BYTE( "tet2verc.2j", 0x0000001, 0x200000, CRC(3b4fee42) SHA1(b71b2969b0416e6fd348297876fc55d44e14ebef) )
+
+ ROM_REGION32_LE( 0x1c00000, "bankedroms", 0 ) /* main data */
+ ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) )
+ ROM_LOAD16_BYTE( "tet1rom0u.9", 0x0000001, 0x400000, CRC(c5705b92) SHA1(20df20c8d18eb4712d565a3df9a8d9270dee6aaa) )
+ ROM_LOAD16_BYTE( "tet1rom1l.7", 0x0800000, 0x400000, CRC(0397d283) SHA1(ebafcd14cdb2601214129a84fc6830846f5cd274) )
+ ROM_LOAD16_BYTE( "tet1rom1u.10", 0x0800001, 0x400000, CRC(502ba5cd) SHA1(19c1282245c6dbfc945c0bd0f3918968c3e5c3ed) )
+ ROM_LOAD16_BYTE( "tet1rom2l.8", 0x1000000, 0x400000, CRC(e03b1c24) SHA1(8579b95a8fd06b7d2893ff88b228fd794162dff1) )
+ ROM_LOAD16_BYTE( "tet1rom2u.11", 0x1000001, 0x400000, CRC(75eb2ab3) SHA1(dee43884e542391903f6aaae2c166e7921a86fb4) )
+ ROM_LOAD16_BYTE( "tet1fl3l.12", 0x1800000, 0x200000, CRC(45513073) SHA1(8a36f58ee2d292b50e00c6bf275f9def358032d8) )
+ ROM_LOAD16_BYTE( "tet1fl3u.13", 0x1800001, 0x200000, CRC(1917d993) SHA1(cabc44514a3e62a18a7f8f883603241447d6948b) )
+
+ ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
+ ROM_LOAD16_WORD_SWAP( "tet1verb.11s", 0x0000000, 0x080000, CRC(c92b98d1) SHA1(8ae6fba8c5b6b9a2ab9541eac8553b282f35750d) ) /* No label but different than tet1vera.11s */
+
+ ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
+ ROM_LOAD( "tet1wave0.5", 0x0000000, 0x400000, CRC(77ba7975) SHA1(fe9434dcf0fb232c85efaaae1b4b13d36099620a) )
+ ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) )
+ROM_END
+
ROM_START( tekken3b )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
ROM_LOAD16_BYTE( "tet2verb.2e", 0x0000000, 0x200000, CRC(a6cbc434) SHA1(859d84e6e9a52c2cdd54a2a0bb8104169eb19c07) )
@@ -3025,24 +3208,24 @@ ROM_START( tektagt )
ROM_LOAD16_BYTE( "teg2verc1.2j", 0x0000001, 0x200000, CRC(25a1d2ff) SHA1(529a11a1bbb8655534d7ec371f1c09e9e387ed11) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
- ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
- ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
- ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
- ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
- ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
-
- ROM_LOAD32_BYTE( "teg_flel.4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
- ROM_LOAD32_BYTE( "teg_fleu.5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
- ROM_LOAD32_BYTE( "teg_flol.6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
- ROM_LOAD32_BYTE( "teg_flou.7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
+ ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
+ ROM_LOAD32_BYTE( "flol.ic6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
+ ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tektagtc1 )
@@ -3082,24 +3265,24 @@ ROM_START( tektagtuc1 )
ROM_LOAD16_BYTE( "teg3verc1.2p", 0x0000001, 0x200000, CRC(7caef9b2) SHA1(5c56d69ba2f723d0a4fbe4902196efc6ba9d5094) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
- ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
- ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
- ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
- ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
- ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
-
- ROM_LOAD32_BYTE( "teg_flel.4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
- ROM_LOAD32_BYTE( "teg_fleu.5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
- ROM_LOAD32_BYTE( "teg_flol.6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
- ROM_LOAD32_BYTE( "teg_flou.7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
+ ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
+ ROM_LOAD32_BYTE( "flol.ic6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
+ ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tektagtub )
@@ -3108,102 +3291,102 @@ ROM_START( tektagtub )
ROM_LOAD16_BYTE( "teg3verb.2p", 0x0000001, 0x200000, CRC(1dbe7591) SHA1(af464caa03fdd12024ad482e9c853a36510bfba7) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
- ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
- ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
- ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
- ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
- ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
-
- ROM_LOAD32_BYTE( "teg_flel.4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
- ROM_LOAD32_BYTE( "teg_fleu.5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
- ROM_LOAD32_BYTE( "teg_flol.6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
- ROM_LOAD32_BYTE( "teg_flou.7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
+ ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
+ ROM_LOAD32_BYTE( "flol.ic6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
+ ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tektagtjc1 )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD16_BYTE( "teg1verc1.2e", 0x0000000, 0x200000, CRC(1d631391) SHA1(325d211237461af6e105374ddb74441e68b470af) )
- ROM_LOAD16_BYTE( "teg1verc1.2j", 0x0000001, 0x200000, CRC(4ece9b9a) SHA1(7091dadfe3a2954e684fcc9e5a3337ecd26609f6) )
+ ROM_LOAD16_BYTE( "teg1verc1.2e", 0x0000000, 0x200000, CRC(adbdfc2e) SHA1(e18458efb0f9b341970132b512d2e5104a942c6e) )
+ ROM_LOAD16_BYTE( "teg1verc1.2j", 0x0000001, 0x200000, CRC(2fa33418) SHA1(e15f4c8cc4309ebb90d8d015b1f17f75ce5c8879) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, BAD_DUMP CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) ) // These ROMs were dumped half size,
- ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, BAD_DUMP CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) ) // it's possible the second half of
- ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, BAD_DUMP CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) ) // the japanese ROMs contain
- ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, BAD_DUMP CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) ) // different graphics.
- ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, BAD_DUMP CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) ) //
- ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, BAD_DUMP CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) ) //
-
- ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(daa240f8) SHA1(ead16b4686c6a4abfc30022f5c1aa3969907d4cc) ) // tektagt will boot with these
- ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(a8786812) SHA1(40c80db0066f9a1f4e0eb06708344b0485c5e734) ) // but crashes after the
- ROM_LOAD32_BYTE( "flou.ic6", 0x3000002, 0x200000, CRC(e5b52780) SHA1(ff81278bed4e571f9ed4ee4f7d8aa810f56f9676) ) // character selection
- ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(75894a07) SHA1(ee36dded4c78b0bddd4904eceabc0f0f2ca5cf07) ) //
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
+ ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
+ ROM_LOAD32_BYTE( "flol.ic6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
+ ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
- ROM_LOAD16_WORD_SWAP( "teg1verb.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) )
+ ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) )
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tektagtjb )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD16_BYTE( "teg1verb.2e", 0x0000000, 0x200000, CRC(ca6c305f) SHA1(264a85566b74f544fe63a01332d92c65d23b6608) )
- ROM_LOAD16_BYTE( "teg1verb.2j", 0x0000001, 0x200000, CRC(5413e2ed) SHA1(d453f7932654d8258c67eb7fe3639d71db7e414c) )
+ ROM_LOAD16_BYTE( "teg1verb.2e", 0x0000000, 0x200000, BAD_DUMP CRC(ca6c305f) SHA1(264a85566b74f544fe63a01332d92c65d23b6608) )
+ ROM_LOAD16_BYTE( "teg1verb.2j", 0x0000001, 0x200000, BAD_DUMP CRC(5413e2ed) SHA1(d453f7932654d8258c67eb7fe3639d71db7e414c) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
- ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
- ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
- ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
- ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
- ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
-
- ROM_LOAD32_BYTE( "teg1flel.4", 0x3000000, 0x200000, NO_DUMP ) /* Requires different data or other issue ? */
- ROM_LOAD32_BYTE( "teg1fleu.5", 0x3000001, 0x200000, NO_DUMP )
- ROM_LOAD32_BYTE( "teg1flol.6", 0x3000002, 0x200000, NO_DUMP )
- ROM_LOAD32_BYTE( "teg1flou.7", 0x3000003, 0x200000, NO_DUMP )
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "flel.ic4", 0x3000000, 0x200000, CRC(88b3823c) SHA1(6f31acb642c57daccbfdb87b790037e261c8c73c) ) /* Flash ROMs with no labels */
+ ROM_LOAD32_BYTE( "fleu.ic5", 0x3000001, 0x200000, CRC(36df0867) SHA1(6bec8560ad4c122dc909daa83aa9089ba5b281f7) )
+ ROM_LOAD32_BYTE( "flol.ic6", 0x3000002, 0x200000, CRC(03a76765) SHA1(ae35ae28375f2a3e52d72b77ec09750c326cc269) )
+ ROM_LOAD32_BYTE( "flou.ic7", 0x3000003, 0x200000, CRC(6d6947d1) SHA1(2f307bc4070fadb510c0473bc91d917b2d845ca5) )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
- ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */
+ ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) )
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tektagtja )
ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD16_BYTE( "teg1vera.2e", 0x0000000, 0x200000, CRC(17c4bf36) SHA1(abf2dfb3e35344cf4449ade6e63b36c590d9c131) )
- ROM_LOAD16_BYTE( "teg1vera.2j", 0x0000001, 0x200000, CRC(97cd9524) SHA1(8031cb465db378a6d9db9b132cf1169b94cba7dc) )
+ ROM_LOAD16_BYTE( "teg1vera.2e", 0x0000000, 0x200000, BAD_DUMP CRC(17c4bf36) SHA1(abf2dfb3e35344cf4449ade6e63b36c590d9c131) )
+ ROM_LOAD16_BYTE( "teg1vera.2j", 0x0000001, 0x200000, BAD_DUMP CRC(97cd9524) SHA1(8031cb465db378a6d9db9b132cf1169b94cba7dc) )
ROM_REGION32_LE( 0x3800000, "bankedroms", 0 ) /* main data */
- ROM_LOAD32_WORD( "teg1rom0e.9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
- ROM_LOAD32_WORD( "teg1rom0o.13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
- ROM_LOAD32_WORD( "teg1rom1e.10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
- ROM_LOAD32_WORD( "teg1rom1o.14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
- ROM_LOAD32_WORD( "teg1rom2e.11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
- ROM_LOAD32_WORD( "teg1rom2o.15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
-
- ROM_LOAD32_BYTE( "teg1flel.4", 0x3000000, 0x200000, NO_DUMP ) /* Requires different data or other issue ? */
- ROM_LOAD32_BYTE( "teg1fleu.5", 0x3000001, 0x200000, NO_DUMP )
+ ROM_LOAD32_WORD( "teg1_rom0e.ic9", 0x0000000, 0x800000, CRC(c962a373) SHA1(d662dbd89ef62c5ac3150a018fc2d35ef2ee94ac) )
+ ROM_LOAD32_WORD( "teg1_rom0o.ic13", 0x0000002, 0x800000, CRC(badb7dcf) SHA1(8c0bf7f6351c5a2a0996df371a901cf90c68cd8c) )
+ ROM_LOAD32_WORD( "teg1_rom1e.ic10", 0x1000000, 0x800000, CRC(b3d56124) SHA1(4df20c74ba63f7362caf15e9b8949fab655704fb) )
+ ROM_LOAD32_WORD( "teg1_rom1o.ic14", 0x1000002, 0x800000, CRC(2434ceb6) SHA1(f19f1599acbd6fd48793a2ee5a500ca817d9df56) )
+ ROM_LOAD32_WORD( "teg1_rom2e.ic11", 0x2000000, 0x800000, CRC(6e5c3428) SHA1(e3cdb60a4445406877b2e273385f34bfb0974220) )
+ ROM_LOAD32_WORD( "teg1_rom2o.ic15", 0x2000002, 0x800000, CRC(21ce9dfa) SHA1(f27e8210ee236c327aa3e1ce4dd408abc6580a1b) )
+
+ ROM_LOAD32_BYTE( "teg1flel.4", 0x3000000, 0x200000, NO_DUMP ) /* It's NOT been verified these should be the same, like the Tekken 3 Ver A */
+ ROM_LOAD32_BYTE( "teg1fleu.5", 0x3000001, 0x200000, NO_DUMP ) /* sets above, these Ver A set(s) might require a specific set of flash ROMs */
ROM_LOAD32_BYTE( "teg1flol.6", 0x3000002, 0x200000, NO_DUMP )
ROM_LOAD32_BYTE( "teg1flou.7", 0x3000003, 0x200000, NO_DUMP )
ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
- ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) ) /* No label for this one */
+ ROM_LOAD16_WORD_SWAP( "teg1.11s", 0x0000000, 0x080000, CRC(67d0c469) SHA1(da164702fc21b9f46a9e32c89e7b1d36070ddf79) )
ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
- ROM_LOAD( "teg1wave0.1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
- ROM_LOAD( "teg1wave1.12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
+ ROM_LOAD( "teg1_wave0.ic1", 0x0000000, 0x800000, CRC(4bd99104) SHA1(f76b0576cc28fe49d3c1c402988b933933e52e15) )
+ ROM_LOAD( "teg1_wave1.ic12", 0x0800000, 0x800000, CRC(dbc74fff) SHA1(601b7e7361ea744b34e3fa1fc39d88641de7f4c6) )
ROM_END
ROM_START( tenkomor )
@@ -3257,7 +3440,7 @@ ROM_START( toukon3 )
ROM_LOAD16_BYTE( "tr1vera.2e", 0x000000, 0x200000, CRC(126ebb73) SHA1(de429e335e03f2b5116fc50f556a5507475a0535) )
ROM_LOAD16_BYTE( "tr1vera.2j", 0x000001, 0x200000, CRC(2edb3ad2) SHA1(d1d2d78b781c7f6fb5a201785295daa825ad057e) )
- ROM_REGION32_LE( 0x1c00000, "bankedroms", 0 ) /* main data */
+ ROM_REGION32_LE( 0x00800000, "bankedroms", 0 ) /* main data */
ROM_LOAD16_BYTE( "tr1rom0l.6", 0x0000000, 0x400000, CRC(42946d26) SHA1(dc7944cb6daceda41ecee7a4e3f549cba916ab87) )
ROM_LOAD16_BYTE( "tr1rom0u.9", 0x0000001, 0x400000, CRC(e3cd0be0) SHA1(f27d14cd086b5961be33e635662aca89a5e8c857) )
@@ -3293,8 +3476,8 @@ ROM_START( truckk )
ROM_REGION( 0x20000, "iocpu", 0) /* Truck K. I/O board */
ROM_LOAD( "tkk1prg0.ic7", 0x000000, 0x020000, CRC(11fd9c31) SHA1(068b8364ec0eb1e88f9f85f40b8b322876f6f3e2) )
- DISK_REGION( "cdrom" )
- DISK_IMAGE( "tkk2-a", 0, SHA1(6b7c3686b22a508c44f67295b188504b757dd482) )
+ DISK_REGION( "cdxa_pcb:ata:0:cdrom" )
+ DISK_IMAGE_READONLY( "tkk2-a", 0, SHA1(6b7c3686b22a508c44f67295b188504b757dd482) )
ROM_END
ROM_START( technodr )
@@ -3351,45 +3534,74 @@ ROM_START( aplarail )
ROM_LOAD( "at28c16", 0x000000, 0x000800, CRC(db1b63c5) SHA1(01fc3386a2d1cb1bed1b7fd9bd2fd59e503832d3) )
ROM_END
+ROM_START( ujlnow )
+ ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */
+ ROM_LOAD16_BYTE( "ul1vera.2l", 0x000000, 0x200000, CRC(40251bc3) SHA1(377a156d738b29d8f19d9696a261cc6e3470ee3e) )
+ ROM_LOAD16_BYTE( "ul1vera.2p", 0x000001, 0x200000, CRC(98181955) SHA1(febd73361d0de10282a850611b5f966a99eecdec) )
+
+ ROM_REGION32_LE( 0x2000000, "bankedroms", 0 ) /* main data */
+ ROM_LOAD16_BYTE( "ul1rom0l.ic12", 0x0000000, 0x800000, CRC(7a77cffd) SHA1(6bd18837f475615061be73ee6d1bc09726e96fb5) )
+ ROM_LOAD16_BYTE( "ul1rom0u.ic11", 0x0000001, 0x800000, CRC(1fdb34b3) SHA1(3773b3fb1574a0b4acebfaf510c75fa117394ae4) )
+ ROM_LOAD16_BYTE( "ul1rom1l.ic10", 0x1000000, 0x800000, CRC(2d300d8c) SHA1(eabd0b4525530e5b33a6d85fa4d959e88c6fbd42) )
+ ROM_LOAD16_BYTE( "ul1rom1u.ic9", 0x1000001, 0x800000, CRC(a4762002) SHA1(0faadc04bcc32e4f805069af8e635765a0b77ca9) )
+
+ ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */
+ ROM_LOAD16_WORD_SWAP( "ul1vera.11s", 0x000000, 0x080000, CRC(2f466df3) SHA1(6468089c6cf3e056a30fa04274056ff2c9a01d5b) )
+
+ ROM_REGION( 0x1000000, "c352", 0 ) /* samples */
+ ROM_LOAD( "ul1wave0.ic2", 0x0000000, 0x800000, CRC(4efbff5d) SHA1(add4caf9aa9443707bcb6cf9ebad0a5a59900ca9) )
+ ROM_LOAD( "ul1wave1.ic1", 0x0800000, 0x800000, CRC(ad512f4c) SHA1(cfbecaad13a2239be0e697f3f9856401f11a1bc5) )
+
+ ROM_REGION( 0x80000, "m148", 0) /* M148 EMI DRIVE PCB */
+ ROM_LOAD( "ul1spro.10c", 0x000000, 0x080000, CRC(1bd0e763) SHA1(07e9ad77bb983fcb4e4e6f66fbe55808b5a27d2e) )
+
+ DISK_REGION( "cdxa_pcb:ata:0:cdrom" )
+ DISK_IMAGE_READONLY( "ul1-a", 0, SHA1(676f2c530f8d422ab9895ea04a43b2e9272fb8f8) )
+ROM_END
+
+} // anonymous namespace
+
+
// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME, FLAGS
GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.E1)", 0 ) /* KC006 */
GAME( 1996, tekken3d, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.D)", 0 ) /* KC006 */
GAME( 1996, tekken3b, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", 0 ) /* KC006 */
+GAME( 1996, tekken3c, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.C)", 0 ) /* KC006 */
GAME( 1996, tekken3a, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.A)", 0 ) /* KC006 */
GAME( 1996, tekken3ud, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", 0 ) /* KC006 */
GAME( 1996, tekken3ua, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", 0 ) /* KC006 */
GAME( 1996, tekken3je1,tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.E1)", 0 ) /* KC006 */
GAME( 1996, tekken3ja, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (Japan, TET1/VER.A)", 0 ) /* KC006 */
GAME( 1997, lbgrande, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Libero Grande (World, LG2/VER.A)", 0 ) /* KC014 */
-GAME( 1997, toukon3, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", 0 ) /* KC019 */
-GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.C)", 0 )
-GAME( 1998, soulclbrwb,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (World, SOC14/VER.B)", 0 )
+GAME( 1997, toukon3, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco / Tomy", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", MACHINE_IMPERFECT_GRAPHICS ) /* KC019 */
+GAME( 1998, soulclbr, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Asia, SOC14/VER.C)", 0 )
+GAME( 1998, soulclbrab,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Asia, SOC14/VER.B)", 0 )
+GAME( 1998, soulclbra, soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (World, SOC12/VER.A2)", 0 ) /* KC020 */
GAME( 1998, soulclbruc,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.C)", 0 )
GAME( 1998, soulclbrub,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (US, SOC13/VER.B)", 0 ) /* KC020 */
-GAME( 1998, soulclbraa,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Asia, SOC12/VER.A2)", 0 ) /* KC020 */
GAME( 1998, soulclbrjc,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.C)", 0 ) /* KC020 */
GAME( 1998, soulclbrjb,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.B)", 0 ) /* KC020 */
GAME( 1998, soulclbrja,soulclbr, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Soul Calibur (Japan, SOC11/VER.A2)", 0 ) /* KC020 */
GAME( 1998, ehrgeiz, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Square / Namco", "Ehrgeiz (World, EG2/VER.A)", 0 ) /* KC021 */
GAME( 1998, ehrgeizua, ehrgeiz, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Square / Namco", "Ehrgeiz (US, EG3/VER.A)", 0 ) /* KC021 */
GAME( 1998, ehrgeizja, ehrgeiz, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Square / Namco", "Ehrgeiz (Japan, EG1/VER.A)", 0 ) /* KC021 */
-GAME( 1998, mdhorse, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "MOSS / Namco", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", MACHINE_NOT_WORKING ) /* KC035 */
+GAME( 1998, mdhorse, 0, coh700, namcos12, namcos12_state, init_alt_bank1,ROT0, "MOSS / Namco", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", 0 ) /* KC035 */
GAME( 1998, aplarail, 0, aplarail, aplarail, namcos12_boothack_state, init_namcos12, ROT0, "Namco / Tomy", "Attack Pla Rail (Japan, AP1/VER.A)", 0 ) /* KC032 */
GAME( 1998, sws98, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Super World Stadium '98 (Japan, SS81/VER.A)", 0 ) /* KC0?? */
GAME( 1998, technodr, 0, technodr, technodr, namcos12_boothack_state, init_technodr, ROT0, "Namco", "Techno Drive (Japan, TH1/VER.B)", MACHINE_NODEVICE_PRINTER ) /* KC056 */
GAME( 1998, tenkomor, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT90,"Namco", "Tenkomori Shooting (World, TKM2/VER.A1)", 0 ) /* KC036 */
GAME( 1998, tenkomorja,tenkomor, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT90,"Namco", "Tenkomori Shooting (Japan, TKM1/VER.A1)", 0 ) /* KC036 */
-GAME( 1998, fgtlayer, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Arika / Namco", "Fighting Layer (FTL3/VER.A)", 0 ) /* KC037 */ // supposedly US region but doesn't show the usual warning / WDUD screens
+GAME( 1998, fgtlayer, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Arika / Namco", "Fighting Layer (Asia, FTL3/VER.A)", 0 ) /* KC037 */
GAME( 1998, fgtlayerj, fgtlayer, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Arika / Namco", "Fighting Layer (Japan, FTL0/VER.A)", 0 ) /* KC037 */
GAME( 1998, pacapp, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Produce / Namco", "Paca Paca Passion (Japan, PPP1/VER.A2)", 0 ) /* KC038 */
-GAME( 1999, ptblank2, 0, ptblank2, ptblank2, namcos12_boothack_state, init_ptblank2, ROT0, "Namco", "Point Blank 2 (GNB5/VER.A)", 0 ) /* KC042 */
+GAME( 1999, ptblank2, 0, ptblank2, ptblank2, namcos12_boothack_state, init_ptblank2, ROT0, "Namco", "Point Blank 2 (World, GNB5/VER.A)", 0 ) /* KC042 */
GAME( 1999, gunbarl, ptblank2, ptblank2, ptblank2, namcos12_boothack_state, init_ptblank2, ROT0, "Namco", "Gunbarl (Japan, GNB4/VER.A)", 0 ) /* KC042 */
GAME( 1999, sws99, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Super World Stadium '99 (Japan, SS91/VER.A3)", 0 ) /* KC043 */
GAME( 1999, tektagt, 0, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (World, TEG2/VER.C1, set 1)", 0 ) /* KC044 */
GAME( 1999, tektagtc1, tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (World, TEG2/VER.C1, set 2)", 0 ) /* KC044 */
GAME( 1999, tektagtuc1,tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.C1)", 0 ) /* KC044 */
GAME( 1999, tektagtub, tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (US, TEG3/VER.B)", 0 ) /* KC044 */
-GAME( 1999, tektagtjc1,tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", MACHINE_NOT_WORKING ) /* KC044 */
+GAME( 1999, tektagtjc1,tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", 0 ) /* KC044 */
GAME( 1999, tektagtjb, tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.B)", MACHINE_NOT_WORKING ) /* KC044 */
GAME( 1999, tektagtja, tektagt, tektagt, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Tekken Tag Tournament (Japan, TEG1/VER.A3)", MACHINE_NOT_WORKING ) /* KC044 */
GAME( 1999, ghlpanic, 0, ptblank2, ghlpanic, namcos12_boothack_state, init_namcos12, ROT0, "Eighting / Raizing / Namco", "Ghoul Panic (World, OB2/VER.A)", 0 ) /* KC045 */
@@ -3397,12 +3609,14 @@ GAME( 1999, ohbakyuun, ghlpanic, ptblank2, ghlpanic, namcos12_boothack_state, i
GAME( 1999, pacapp2, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Produce / Namco", "Paca Paca Passion 2 (Japan, PKS1/VER.A)", 0 ) /* KC046 */
GAME( 1999, mrdrillr, 0, coh700, namcos124w,namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Mr. Driller (US, DRI3/VER.A2)", 0 ) /* KC048 */
GAME( 1999, mrdrillrj, mrdrillr, coh700, namcos124w,namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Mr. Driller (Japan, DRI1/VER.A2)", 0 ) /* KC048 */
-GAME( 1999, kaiunqz, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Kaiun Quiz (Japan, KW1/VER.A)", MACHINE_NOT_WORKING ) /* KC050 */
+GAME( 1999, ujlnow, 0, cdxa_pcb, ujlnow, namcos12_cdxa_state, init_alt_bank1,ROT0, "Namco", "Um Jammer Lammy NOW! (Japan, UL1/VER.A)", 0 ) /* KC049 */
+GAME( 1999, kaiunqz, 0, coh700, namcos12, namcos12_state, init_alt_bank1,ROT0, "Namco", "Kaiun Quiz (Japan, KW1/VER.A)", 0 ) /* KC050 */
GAME( 1999, pacappsp, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Produce / Namco", "Paca Paca Passion Special (Japan, PSP1/VER.A)", 0 ) /* KC052 */
GAME( 1999, aquarush, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Aqua Rush (Japan, AQ1/VER.A1)", 0 ) /* KC053 */
-GAME( 1999, golgo13, 0, golgo13, golgo13, namcos12_boothack_state, init_golgo13, ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", 0 ) /* KC054 */
-GAME( 2000, g13knd, 0, golgo13, golgo13, namcos12_boothack_state, init_golgo13, ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", 0 ) /* KC059 */
+GAME( 1999, golgo13, 0, golgo13, golgo13, namcos12_boothack_state, init_alt_bank1,ROT0, "Eighting / Raizing / Namco", "Golgo 13 (Japan, GLG1/VER.A)", 0 ) /* KC054 */
+GAME( 2000, g13knd, 0, golgo13, golgo13, namcos12_boothack_state, init_alt_bank1,ROT0, "Eighting / Raizing / Namco", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", 0 ) /* KC059 */
GAME( 2000, sws2000, 0, coh700, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Super World Stadium 2000 (Japan, SS01/VER.A)", MACHINE_NOT_WORKING ) /* KC055 */
-GAME( 2000, truckk, 0, truckk, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Metro / Namco", "Truck Kyosokyoku (Japan, TKK2/VER.A)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* KC056 */
-GAME( 2000, kartduel, 0, kartduel, kartduel, namcos12_boothack_state, init_namcos12, ROT0, "Gaps / Namco", "Kart Duel (Japan, KTD1/VER.A)", MACHINE_NOT_WORKING ) /* KC057 */
-GAME( 2001, sws2001, sws2000, coh716, namcos12, namcos12_boothack_state, init_namcos12, ROT0, "Namco", "Super World Stadium 2001 (Japan, SS11/VER.A)", MACHINE_NOT_WORKING ) /* KC061 */
+GAME( 2000, truckk, 0, truckk, truckk, namcos12_cdxa_state, init_truckk, ROT0, "Metro / Namco", "Truck Kyosokyoku (Japan, TKK2/VER.A)", MACHINE_IMPERFECT_SOUND ) /* KC056 */
+GAME( 2000, kartduel, 0, kartduel, kartduel, namcos12_boothack_state, init_namcos12, ROT0, "Gaps / Namco", "Kart Duel (World, KTD2/VER.A)", MACHINE_NOT_WORKING ) /* KC057 */
+GAME( 2000, kartduelj, kartduel, kartduel, kartduel, namcos12_boothack_state, init_namcos12, ROT0, "Gaps / Namco", "Kart Duel (Japan, KTD1/VER.A)", MACHINE_NOT_WORKING ) /* KC057 */
+GAME( 2001, sws2001, sws2000, coh716, namcos12, namcos12_boothack_state, init_alt_bank1,ROT0, "Namco", "Super World Stadium 2001 (Japan, SS11/VER.A)", MACHINE_NOT_WORKING ) /* KC061 */