summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <salese_corp_ltd@email.it>2014-11-15 16:07:30 +0100
committer Angelo Salese <salese_corp_ltd@email.it>2014-11-15 16:07:30 +0100
commit550fc88480e6e580b17e10d72b435f34d828c51c (patch)
tree7923d02afc8f1132934d5bd23df58b36d4b1c5c5
parentad1f309d08aafbe412ca42f8b8e3ef8ded119aa4 (diff)
parent761c3dfcbbdaa04a265193a05c133ee237e07c43 (diff)
Merge branch 'master' of https://github.com/mamedev/mame
Conflicts: src/mame/drivers/alinvade.c
-rw-r--r--src/emu/machine/pla.c6
-rw-r--r--src/lib/util/plaparse.c2
-rw-r--r--src/mame/drivers/alinvade.c8
-rw-r--r--src/mame/drivers/goldngam.c12
-rw-r--r--src/mame/drivers/lethal.c83
-rw-r--r--src/mame/drivers/naomi.c148
-rw-r--r--src/mame/drivers/popobear.c51
-rw-r--r--src/mame/includes/lethal.h6
-rw-r--r--src/mame/mame.lst13
-rw-r--r--src/mame/video/lethal.c20
-rw-r--r--src/mess/drivers/ngen.c65
-rw-r--r--src/mess/includes/gamecom.h82
-rw-r--r--src/mess/layout/gamecom.lay24
13 files changed, 280 insertions, 240 deletions
diff --git a/src/emu/machine/pla.c b/src/emu/machine/pla.c
index 22b52ef61d6..1812d24ed1b 100644
--- a/src/emu/machine/pla.c
+++ b/src/emu/machine/pla.c
@@ -37,9 +37,9 @@ pla_device::pla_device(const machine_config &mconfig, const char *tag, device_t
void pla_device::device_start()
{
- assert(*region() != NULL);
+ assert(region() != NULL);
assert(m_terms < MAX_TERMS);
- assert(m_inputs <= 32 && m_outputs <= 32);
+ assert(m_inputs < 32 && m_outputs <= 32);
if (m_input_mask == 0)
m_input_mask = ((UINT64)1 << m_inputs) - 1;
@@ -51,7 +51,7 @@ void pla_device::device_start()
// initialize cache
m_cache2_ptr = 0;
for (int i = 0; i < CACHE2_SIZE; i++)
- m_cache2[i] = 0;
+ m_cache2[i] = 0x80000000;
m_cache_size = 0;
int csize = 1 << ((m_inputs > MAX_CACHE_BITS) ? MAX_CACHE_BITS : m_inputs);
diff --git a/src/lib/util/plaparse.c b/src/lib/util/plaparse.c
index 1582f29af81..65c84b04f09 100644
--- a/src/lib/util/plaparse.c
+++ b/src/lib/util/plaparse.c
@@ -183,7 +183,7 @@ static void process_field(jed_data *data, const UINT8 *cursrc, const UINT8 *srce
// end of file
case 'e':
- printf("End of file\n");
+ if (LOG_PARSE) printf("End of file\n");
break;
}
diff --git a/src/mame/drivers/alinvade.c b/src/mame/drivers/alinvade.c
index 2a47f44a7b6..2256df240b4 100644
--- a/src/mame/drivers/alinvade.c
+++ b/src/mame/drivers/alinvade.c
@@ -2,14 +2,14 @@
tiny bartop b&w Space Invaders type game with colour overlay
- does it use any off-the shelf chips in addition to the 6502?
+ Driver by David Haywood and Mariusz Wojcieszek
TODO:
- 16 bytes are protected in the c*** range. I'm guessing they used a PROM to protect a
simple sub-routine because just after that the program has a left-over located at 0xe000-0xe00f (yup, NOPs + a RTS)
It's unknown at current stage what it really protects tho ...
-*/
+ */
#include "emu.h"
#include "cpu/m6502/m6502.h"
@@ -54,7 +54,7 @@ WRITE8_MEMBER(alinvade_state::irqmask_w)
static ADDRESS_MAP_START( alinvade_map, AS_PROGRAM, 8, alinvade_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0400, 0x0bff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x0c00, 0x0fff) AM_RAM
+ AM_RANGE(0x0c00, 0x0dff) AM_RAM
AM_RANGE(0x2000, 0x2000) AM_WRITENOP //??
AM_RANGE(0x4000, 0x4000) AM_READ_PORT("COIN")
AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSW")
@@ -190,4 +190,4 @@ ROM_START( alinvade )
ROM_END
-GAME( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", GAME_UNEMULATED_PROTECTION )
+GAME( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND )
diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c
index c00a366c3cf..7e2a6a9d317 100644
--- a/src/mame/drivers/goldngam.c
+++ b/src/mame/drivers/goldngam.c
@@ -264,17 +264,15 @@ void goldngam_state::video_start()
UINT32 goldngam_state::screen_update_goldngam(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int x, y;
-
- // ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
- UINT8 *tmp = reinterpret_cast<UINT8 *>(m_videoram.target());
int index = 0;
- for(y = 0; y < 512; ++y)
+ for(int y = 0; y < 512; ++y)
{
- for(x = 0; x < 384; ++x)
+ for(int x = 0; x < 384; x += 2)
{
- bitmap.pix16(y, x) = tmp[index ^ 1]; /* swapped bytes in 16 bit word */
+ UINT16 word = m_videoram[index];
+ bitmap.pix16(y, x) = word >> 8;
+ bitmap.pix16(y, x+1) = word & 0xff;
++index;
}
}
diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c
index e3cf9f0db34..e53e7bcf7ee 100644
--- a/src/mame/drivers/lethal.c
+++ b/src/mame/drivers/lethal.c
@@ -109,8 +109,8 @@ Address Dir Data Name Description
---------------- --- -------- --------- -----------------------
000xxxxxxxxxxxxx R xxxxxxxx PROM program ROM (banked)
001xxxxxxxxxxxxx R/W xxxxxxxx WRAM work RAM
-010000--00xxxxxx W xxxxxxxx VREG 056832 control
-010000--01--xxxx W xxxxxxxx VSCG 056832 control
+010000--00xxxxxx W xxxxxxxx VREG 054156 control
+010000--01--xxxx W xxxxxxxx VSCG 054157 control
010000--1000---- R/W -------- AFR watchdog reset
010000--1001---- W SDON sound enable?
010000--1010 CCLR ?
@@ -121,7 +121,7 @@ Address Dir Data Name Description
010000--11-000-- W --x----- CRDB /
010000--11-001-- W -----xxx EEP EEPROM DI, CS, CLK
010000--11-001-- W ----x--- MUT sound mute?
-010000--11-001-- W ---x---- CBNK bank switch 4800-7FFF region between palette and 053245/056832
+010000--11-001-- W ---x---- CBNK bank switch 4400-7FFF region between palette and 053245/054156
010000--11-001-- W --x----- n.c.
010000--11-001-- W xx------ SHD0/1 shadow control
010000--11-010-- W -----xxx PCU1/XBA palette bank (tilemap A)
@@ -138,11 +138,11 @@ Address Dir Data Name Description
010000--11-11011 R -------x NCPU ?
010000--11-111-- W --xxxxxx BREG ROM bank select
010010--00------ n.c.
-010010--01---xxx R/W xxxxxxxx OREG 053244
+010010--01---xxx R/W xxxxxxxx OREG 053244/053245 control
010010--10-xxxxx R/W xxxxxxxx HIP 054000
010010--11 R/W xxxxxxxx PAR sound communication
-010100xxxxxxxxxx R/W xxxxxxxx OBJ 053245
-011xxxxxxxxxxxxx R/W xxxxxxxx VRAM 056832
+010100xxxxxxxxxx R/W xxxxxxxx OBJ 053245 sprite RAM
+011xxxxxxxxxxxxx R/W xxxxxxxx VRAM 054156 video RAM
1xxxxxxxxxxxxxxx R xxxxxxxx PROM program ROM
@@ -231,9 +231,12 @@ Notes:
note:
-lethal enforcers has 2 sprite rendering chips working in parallel mixing
-data together to give 6bpp.. we cheat by using a custom function in
-konamiic.c and a fixed 6bpp decode.
+Lethal Enforcers has two sprite rendering chips working in parallel with their
+output mixed to give 6bpp, and two tilemap rendering chips working in parallel
+to give 8bpp. We currently cheat, using just one of each device but using
+alternate gfx layouts. Emulating it accurately will require separating the
+"front end" chips (053245, 054156) from the "back end" chips (053244, 054157)
+as only the latter are doubled.
mirror not set up correctly
@@ -265,13 +268,13 @@ WRITE8_MEMBER(lethal_state::control2_w)
/* bit 1 is cs (active low) */
/* bit 2 is clock (active high) */
/* bit 3 is "MUT" on the schematics (audio mute?) */
- /* bit 4 bankswitches the 4800-7fff region: 0 = registers, 1 = RAM ("CBNK" on schematics) */
+ /* bit 4 bankswitches the 4400-7fff region: 0 = registers, 1 = palette RAM ("CBNK" on schematics) */
/* bit 6 is "SHD0" (some kind of shadow control) */
/* bit 7 is "SHD1" (ditto) */
m_cur_control2 = data;
- m_bank4800->set_bank((m_cur_control2 >> 4) & 1);
+ m_bank4000->set_bank(BIT(m_cur_control2, 4));
ioport("EEPROMOUT")->write(m_cur_control2, 0xff);
}
@@ -302,12 +305,6 @@ WRITE8_MEMBER(lethal_state::le_bankswitch_w)
membank("bank1")->set_entry(data);
}
-// use one more palette entry for the BG color
-WRITE8_MEMBER(lethal_state::le_bgcolor_w)
-{
- m_palette->write(space, 0x3800 + offset, data);
-}
-
READ8_MEMBER(lethal_state::guns_r)
{
switch (offset)
@@ -356,23 +353,31 @@ static ADDRESS_MAP_START( le_main, AS_PROGRAM, 8, lethal_state )
AM_RANGE(0x40d9, 0x40d9) AM_READ_PORT("INPUTS")
AM_RANGE(0x40db, 0x40db) AM_READ(gunsaux_r) // top X bit of guns
AM_RANGE(0x40dc, 0x40dc) AM_WRITE(le_bankswitch_w)
- AM_RANGE(0x47fe, 0x47ff) AM_WRITE(le_bgcolor_w) // BG color
- AM_RANGE(0x4800, 0x7fff) AM_DEVICE("bank4800", address_map_bank_device, amap8)
+ AM_RANGE(0x4000, 0x43ff) AM_UNMAP // first 0x400 bytes of palette RAM are inaccessible
+ AM_RANGE(0x4000, 0x7fff) AM_DEVICE("bank4000", address_map_bank_device, amap8)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x38000)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( bank4800_map, AS_PROGRAM, 8, lethal_state )
- AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
- AM_RANGE(0x0080, 0x009f) AM_DEVREADWRITE("k054000", k054000_device, read, write)
- AM_RANGE(0x00c6, 0x00c6) AM_WRITE(sound_cmd_w)
- AM_RANGE(0x00c7, 0x00c7) AM_WRITE(sound_irq_w)
- AM_RANGE(0x00ca, 0x00ca) AM_READ(sound_status_r)
- AM_RANGE(0x0800, 0x17ff) AM_MASK(0x07ff) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
- AM_RANGE(0x1800, 0x1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w)
- AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w)
- AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w)
- AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w)
- AM_RANGE(0x3800, 0x7001) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // 2 extra bytes for the BG color
+static ADDRESS_MAP_START( bank4000_map, AS_PROGRAM, 8, lethal_state )
+ // VRD = 0 or 1, CBNK = 0
+ AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w)
+ AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write)
+ AM_RANGE(0x08c6, 0x08c6) AM_MIRROR(0x8000) AM_WRITE(sound_cmd_w)
+ AM_RANGE(0x08c7, 0x08c7) AM_MIRROR(0x8000) AM_WRITE(sound_irq_w)
+ AM_RANGE(0x08ca, 0x08ca) AM_MIRROR(0x8000) AM_READ(sound_status_r)
+ AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w)
+
+ // VRD = 0, CBNK = 0
+ AM_RANGE(0x2000, 0x27ff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_lo_r, ram_code_lo_w)
+ AM_RANGE(0x2800, 0x2fff) AM_DEVREADWRITE("k056832", k056832_device, ram_code_hi_r, ram_code_hi_w)
+ AM_RANGE(0x3000, 0x37ff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_lo_r, ram_attr_lo_w)
+ AM_RANGE(0x3800, 0x3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_attr_hi_r, ram_attr_hi_w)
+
+ // VRD = 1, CBNK = 0 or 1
+ AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x4000) AM_UNMAP // AM_DEVREAD("k056832", k056832_device, rom_byte_r)
+
+ // CBNK = 1; partially overlaid when VRD = 1
+ AM_RANGE(0x4000, 0x7fff) AM_MIRROR(0x8000) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( le_sound, AS_PROGRAM, 8, lethal_state )
@@ -467,8 +472,9 @@ void lethal_state::machine_start()
membank("bank1")->set_entry(0);
save_item(NAME(m_cur_control2));
- save_item(NAME(m_sprite_colorbase));
save_item(NAME(m_layer_colorbase));
+ save_item(NAME(m_sprite_colorbase));
+ save_item(NAME(m_back_colorbase));
}
void lethal_state::machine_reset()
@@ -477,8 +483,9 @@ void lethal_state::machine_reset()
m_layer_colorbase[i] = 0;
m_sprite_colorbase = 0;
+ m_back_colorbase = 0;
m_cur_control2 = 0;
- m_bank4800->set_bank(0);
+ m_bank4000->set_bank(0);
}
static MACHINE_CONFIG_START( lethalen, lethal_state )
@@ -491,12 +498,12 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_CPU_ADD("soundcpu", Z80, MAIN_CLOCK/4) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(le_sound)
- MCFG_DEVICE_ADD("bank4800", ADDRESS_MAP_BANK, 0)
- MCFG_DEVICE_PROGRAM_MAP(bank4800_map)
+ MCFG_DEVICE_ADD("bank4000", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bank4000_map)
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
- MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(15)
- MCFG_ADDRESS_MAP_BANK_STRIDE(0x3800)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(16)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000)
MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
@@ -511,7 +518,7 @@ static MACHINE_CONFIG_START( lethalen, lethal_state )
MCFG_SCREEN_UPDATE_DRIVER(lethal_state, screen_update_lethalen)
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 7168+1)
+ MCFG_PALETTE_ADD("palette", 8192)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c
index 61cd130397a..d253d67428f 100644
--- a/src/mame/drivers/naomi.c
+++ b/src/mame/drivers/naomi.c
@@ -254,16 +254,19 @@ Games known to use this PCB include....
Sticker EPROM FLASHROMs X76F100 EPM7064S 315-5881
Game on cart IC22# # of SOP56 IC37# IC41# IC42# Notes
----------------------------------------------------------------------------------------------------------------------------------
-Club Kart: European Session (2003, prototype) no cart * 21 (64Mb) present 315-6206 not present *instead of EPROM have tiny PCB with 2 flashroms on it
-Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present 315-6206 317-0311-COM PCB have label 840-0068B-01 837-14124
+Club Kart: European Session (2003, prototype) no cart * 21 (64Mb) present 315-6206 not present * instead of EPROM have tiny PCB with 2 flashroms on it
+Crackin' DJ part 2 840-0068C 23674 20 (64Mb) present 315-6206 317-0311-COM PCB have label 840-0068B-01 837-14124, requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation
+Ferrari F355 Challenge (twin, prototype) no cart 22848P* 21 (64Mb) present 315-6206 317-0267-COM * flash-PCB have CRC 330B A417, the rest is the same as regular cart, not dumped but known to exist
Ferrari F355 Challenge 2 (twin) no cart 23399 21 (64Mb) present 315-6206 317-0287-COM content is the same as regular 171-7919A cart
House of the Dead 2 (prototype) no cart A1E2 21 (64Mb) present 315-6206 present no label on IC42
-Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present 315-6206 317-0316-JPN
-Samba de Amigo (prototype) no cart * 21 (64Mb) present 315-6206 317-0270-COM *instead of EPROM have tiny PCB with 2 flashroms on it
-Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present todo: verify if it's Rev A or Rev C
+Inu No Osanpo / Dog Walking (Rev A) 840-0073C 22294A 16 (64Mb) present 315-6206 317-0316-JPN requires 837-13844 JVS IO with special jumpers settings enabling rotary
+Maze of the Kings The (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist
+Samba de Amigo (prototype) no cart * 21 (64Mb) present 315-6206 317-0270-COM * instead of EPROM have tiny PCB with 2 flashroms on it
+Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present
Star Horse (server) 840-0055C 23626 17 (64Mb) present 315-6206 not present
The King of Route 66 (Rev A) 840-0087C 23819A 20 (64Mb) present 315-6206 not present content is the same as regular 171-8132A cart
-Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM *instead of EPROM have tiny PCB with 2 flashroms on it
+Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it
+Virtua Tennis / Power Smash (prototype) no cart * 21 (64Mb) present 315-6206 317-0263-COM * flash-PCB, title screen have label "SOFT R&D Dept.#3", not dumped but known to exist
837-13668 171-7919A (C) Sega 1998
@@ -301,7 +304,7 @@ Game on cart IC22# # of SOP44
18 Wheeler (deluxe) (Rev A) 840-0023C 22185A 20 (64Mb) present 315-6213 317-0273-COM
18 Wheeler (standard) 840-0036C 23298 20 (64Mb) present 315-6213 317-0273-COM
18 Wheeler (upright) 840-0037C 23299 20 (64Mb) present 315-6213 317-0273-COM
-Airline Pilots (deluxe) (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 know BIOS 21801 (USA), 21802 (EXP)
+Airline Pilots (deluxe) (Rev B) ? 21787B 11 (64Mb) present 315-6213 317-0251-COM 2 known BIOS 21801 (USA), 21802 (EXP)
Airline Pilots (Rev A) 840-0005C 21739A 11 (64Mb) present 315-6213 317-0251-COM
Cosmic Smash 840-0044C 23428 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
Cosmic Smash (Rev A) 840-0044C 23428A 8 (64Mb) ? 315-6213 317-0289-COM joystick + 2 buttons
@@ -314,32 +317,32 @@ Derby Owners Club (Rev B) 840-0016C 22099B 14 (64Mb)
Derby Owners Club 2000 Ver.2 (Rev A) 840-0052C 22284A 16 (64Mb) present 315-6213 not present
Dynamite Baseball '99 / World Series'99 (Rev B) 840-0019C 22141B 19 (64Mb) ? 315-6213 317-0269-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
Dynamite Baseball Naomi 840-0001C 21575 21 (64Mb) ? 315-6213 317-0246-JPN requires special panel (joystick + 2 buttons + bat controller for each player)
-Ferrari F355 Challenge 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM requires special BIOS not yet dumped
-Ferrari F355 Challenge (twin) 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 know BIOS 22850 (USA), 22851 (EXP)
-Ferrari F355 Challenge 2 (twin) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 know BIOS 22850 (USA), 22851 (EXP)
+Ferrari F355 Challenge (deluxe) 834-13842 21902 21 (64Mb) present 315-6213 317-0254-COM BIOS 21863 (USA), also known to exists Japanese BIOS, not dumped
+Ferrari F355 Challenge (twin) 834-13950 22848 21 (64Mb) present 315-6213 317-0267-COM 2 known BIOS 22850 (USA), 22851 (EXP)
+Ferrari F355 Challenge 2 (twin) 840-0042C 23399 21 (64Mb) present 315-6213 317-0287-COM 2 known BIOS 22850 (USA), 22851 (EXP)
Giant Gram: All Japan Pro Wrestling 2 840-0007C 21820 9 (64Mb) ? 315-6213 317-0253-JPN joystick + 3 buttons
Guilty Gear X 841-0013C 23356 14 (64Mb) ? 315-6213 317-5063-COM
Gun Spike / Cannon Spike 841-0012C 23210 12 (64Mb) present 315-6213 317-5060-COM
Heavy Metal Geomatrix (Rev A) HMG016007 23716A 11 (64Mb) present 315-6213 317-5071-COM joystick + 2 buttons
House of the Dead 2 (original) 834-13636 21385 20 (64Mb) not present 315-6213 not present
House of the Dead 2 834-13636-01 21585 20 (64Mb) not present 315-6213 not present
-Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires special I/O board and mahjong panel
+Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires mahjong panel
Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM
Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN
-OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires analog controllers/special panel
+OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and special panel
Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons
Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons
Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? 315-6213 ?
-Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM
+Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM requires 2 JVS boards
Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it
-Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires special I/O board and fishing controller
+Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires fishing controller
Sega Strike Fighter (Rev A) 840-0035C 23323A 20 (64Mb) present 315-6213 317-0281-COM
Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM
Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons
Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons
Super Major League '99 840-0012C 22059 21 (64Mb) ? 315-6213 ?
The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present
-Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN
+Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN requires special JVS board with touch input and printer
Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons
Virtua NBA 840-0021C-01 23073 21 (64Mb) present 315-6213 not present
Virtua NBA (original) 840-0021C 22949 21 (64Mb) present 315-6213 317-0271-COM
@@ -444,18 +447,18 @@ Games known to use this PCB include....
Sticker EPROM MASKROMs 25LC040 A54SX32
Game on cart IC11# # of SOP44 IC13S# IC1# Notes
-------------------------------------------------------------------------------------------------------------------------------
-Club Kart Prize (Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM A54SX32A
-Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM A54SX32A
+Club Kart Prize (Rev A) 840-0129C 24082A 16 (64Mb) present 317-0368-COM requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD")
+Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
-Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM A54SX32A
+Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
Marvel Vs. Capcom 2 New Age of Heroes (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb)
-MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM
+MushiKing The King of Beetles 2K3 2ND 840-0150C 24217 6 (64Mb) present 317-0394-COM requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
-Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM
-Shootout Pool - Shootout Pool Prize (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM
-Shootout Pool Medal 840-0136C 24148 4 (64Mb) present 317-0367-COM
+Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
+Shootout Pool Prize / The Medal (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller
+Shootout Pool Prize / The Medal Ver. B 840-0136C 24148 4 (64Mb) present 317-0367-COM requires Naomi-based or 837-14438 hopper controller
SWP Hopper Board 840-0130C 24083 20 (64Mb) present 317-0339-COM Maskroms are not really used, they are recycled from other games; there is an additional 837-14381 IO board
-Touch de UNO! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN
+Touch de UNO! 2 840-0022C 23071 6 (64Mb) present 317-0276-JPN requires special JVS board with touch input and printer
Virtua Fighter 4 Evolution 840-0106B 23934 20 (64Mb) present 317-0339-COM
Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM
@@ -502,15 +505,15 @@ Capcom Vs. SNK Millennium Fight 2000 (Rev C) 841-0011C 23511C 7 (128Mb) 3
Club Kart: European Session 840-0062C 23704 11 (128Mb) 315-6319A 315-6213 317-0313-COM
Club Kart: European Session (Rev C) 840-0062C * 11 (128Mb) 315-6319A 315-6213 317-0313-COM * EPR have handwritten Japanese label possibly readable as 'teteto 74 lcl'
Club Kart: European Session (Rev D) 840-0062C 23704D 11 (128Mb) 315-6319A 315-6213 317-0313-COM
-Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 315-6213 317-0288-COM
+Crackin' DJ 840-0043C 23450 10 (128Mb) 315-6319 315-6213 317-0288-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and turntable simulation
Derby Owners Club II (Rev B) 840-0083C 22306B 11 (128Mb) 315-6319A 315-6213 not present
Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A 315-6213 not present
Derby Owners Club World Edition (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A 315-6213 not present 2 MaskROM are different from Rev C
Giga Wing 2 841-0014C 22270 5 (128Mb) 315-6319A 315-6213 317-5064-COM
Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 ?
Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM
-MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present
-Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present
+MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present requires 610-0669 barcode reader
+Oinori-daimyoujin Matsuri 840-0126B 24053 5 (128Mb) 315-6319A 315-6213 not present requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip)
Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A 315-6213 317-0295-COM
Star Horse (big screens) 840-0054C 23625 4 (128Mb) 315-6319 315-6213 not present
Star Horse (client) 840-0056C 23627 6 (128Mb)* 315-6319 315-6213 not present * +1 (64Mb)
@@ -566,16 +569,16 @@ Game on cart IC7# # of
Dynamite Deka EX / Asian Dynamite 840-0175C not present 4 (512Mb) present 317-0495-COM present IC2# is labeled "VER.2"
Illmatic Envelope 841-0059C not present 4 (512Mb) present 317-5131-JPN present IC2# is labeled "VER.2" - IC#11 is empty
Mamoru-kun wa Norowarete Shimatta 841-0060C not present 4 (512Mb) present 317-5132-JPN present IC2# is labeled "VER.2"
-Manic Panic Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present
+Manic Panic Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
Melty Blood Actress Again 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
Melty Blood Actress Again (Rev A) 841-0061C 24455 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
-Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C not present 2 (512Mb) present 317-0437-COM present
+Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C not present 2 (512Mb) present 317-0437-COM present requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
Mushiking - The King Of Beetles II ENG (Ver. 2.001) 840-0164C 24357 2 (512Mb) present 317-0437-COM present IC4# is marked "18"
-Poka Suka Ghost 840-0170C not present 5 (512Mb) present 317-0461-COM present
+Poka Suka Ghost 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
Radirgy Noa 841-0062C not present 4 (512Mb) present 317-5138-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A"
Rythm Tengoku 841-0177C not present 4 (512Mb) present 317-0503-JPN present IC2# is labeled "VER.2" - IC4# is marked "8A"
Shooting Love 2007 841-0057C not present 4 (512Mb) present 317-5129-JPN present IC2# is labeled "VER.2"
-Touch De Zunou (Rev A) 840-0166C not present 2 (512Mb) present 317-0435-JPN present IC4# is marked "18"
+Touch De Zunou (Rev A) 840-0166C not present 2 (512Mb) present 317-0435-JPN present IC4# is marked "18", requires 837-14672 sensor board (SH4 based)
@@ -624,12 +627,12 @@ Notes:
Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 1H IC @ 2K IC @ 1M code (1) Notes
------------------------------------------------------------------------------------------------------------------------------------------------------
/Gun Survivor 2 Biohazard
-\Code: Veronica F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1
+\Code: Veronica F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF1 uses Namco FCA JVS I/O, will crash if COMM.BOARD not present
/Gun Survivor 2 Biohazard
\Code: Veronica (Ver. E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2
/Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB.
\Retsuden 4 Arcade Edition (Ver. A) F2X 25349801 2 (64Mb) 15 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM TRF1 \They are connected togheter and go to pin89 on 2K.
-World Kicks PCB (WKC1 Ver. A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1
+World Kicks PCB (WKC1 Ver. A) F2 25509801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1B 317-5040-COM WKC1 uses Namco V226 JVS I/O
World Kicks (WK2 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2
World Kicks (WK3 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3
@@ -677,9 +680,9 @@ Notes:
Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game
Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes
--------------------------------------------------------------------------------------------------------------------------------
-Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2
+Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ2 uses 2x Namco FCB JVS I/O
Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3
-Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1
+Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O
Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2
Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA3
Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA4
@@ -2776,6 +2779,7 @@ EPR-21330 & EPR-21331 differ by 7 bytes:
Ferrari F355 specific Naomi BIOS roms:
+EPR-21863 - NAOMI BOOT ROM 1999 07/02 1.34 (USA)
EPR-22850 - NAOMI BOOT ROM 1999 08/30 1.35 (USA)
EPR-22851 - NAOMI BOOT ROM 1999 08/30 1.35 (Export)
@@ -2864,6 +2868,11 @@ Scan ROM for the text string "LOADING TEST MODE NOW" back up four (4) bytes for
ROM_SYSTEM_BIOS( 2, "bios2", "HOTD2 (Proto)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 2, "hotd2biosproto.ic27", 0x000000, 0x200000, CRC(ea74e967) SHA1(e4d037480eb6555d335a8ab9cd6c56122335586d) )
+#define F355DLX_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
+ ROM_SYSTEM_BIOS( 0, "bios0", "Ferrari F355 Deluxe (USA)" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-21863.ic27", 0x000000, 0x200000, CRC(0615a4d1) SHA1(2c6986580b84278af75f396229fdd587bebc1768) )
+
#define F355_BIOS \
ROM_REGION( 0x200000, "maincpu", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "Ferrari F355 (Export)" ) \
@@ -3001,6 +3010,13 @@ ROM_START( hod2bios )
ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
ROM_END
+ROM_START( f355dlx )
+ F355DLX_BIOS
+ NAOMI_DEFAULT_EEPROM
+
+ ROM_REGION( 0x8400000, "rom_board", ROMREGION_ERASE)
+ROM_END
+
ROM_START( f355bios )
F355_BIOS
NAOMI_DEFAULT_EEPROM
@@ -3700,7 +3716,7 @@ EXP: F355 CHALLENGE EXPORT
*/
ROM_START( f355 )
- F355_BIOS /* note: require (undumped) special BIOS, game not compatible with EPR-22850/EPR-22851 from twin-versions */
+ F355DLX_BIOS
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0xb000000, "rom_board", ROMREGION_ERASEFF)
@@ -5165,51 +5181,43 @@ ROM_START( smarinef )
ROM_REGION( 4, "rom_key", ROMREGION_ERASE00 )
ROM_END
-/*
-
-SYSTEMID: NAOMI
-JAP: SHOOTOUT POOL
-USA: SHOOTOUT POOL
-EXP: SHOOTOUT POOL PRIZE
-
-*/
-
-ROM_START( shootpl )
+// Shootout Pool
+ROM_START( shootopl )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0x3000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD("epr-24065a.ic11",0x0000000, 0x0400000, CRC(622a9ba0) SHA1(2f4963b8447ecda78fea0107497c2811f075c07a) )
- ROM_LOAD32_WORD("opr-24060.ic17s", 0x1000000, 0x0800000, CRC(7f3d868c) SHA1(dc352981371c5479a69756bb1cbbbca43252216d) )
- ROM_LOAD32_WORD("opr-24061.ic18", 0x1000002, 0x0800000, CRC(e934267c) SHA1(fdbe2b80e309aa8d9fefd2634aef20153735019d) )
- ROM_LOAD32_WORD("opr-24062.ic19s", 0x2000000, 0x0800000, CRC(26e32af4) SHA1(49412a04198175240ef9adb4b7afb8a628eb127d) )
- ROM_LOAD32_WORD("opr-24063.ic20", 0x2000002, 0x0800000, CRC(683fdcff) SHA1(890816ef1b3e604e16289998cf66e221ef75a0fe) )
+ ROM_LOAD( "epr-23844.ic11", 0x000000, 0x400000, CRC(5c229638) SHA1(9185f9f2369bb2423faff4222419001ac9037d3f) )
+ ROM_LOAD32_WORD( "mtp-23840.ic17s", 0x1000000, 0x800000, CRC(985e5ff4) SHA1(a6f529b1855cc2aef3bed8503746c2e38061f944) )
+ ROM_LOAD32_WORD( "mtp-23841.ic18", 0x1000002, 0x800000, CRC(255fc335) SHA1(34ffec963880383bb9c02642f73ba3c852699831) )
+ ROM_LOAD32_WORD( "mtp-23842.ic19s", 0x2000000, 0x800000, CRC(80724895) SHA1(ed4fa1160b35b3987702c0178bd31c3c5db69e6e) )
+ ROM_LOAD32_WORD( "mtp-23843.ic20", 0x2000002, 0x800000, CRC(3574f616) SHA1(40130e8f98fb31c98428d444b79491f6a06ac208) )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
ROM_REGION( 4, "rom_key", 0 )
- ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
+ ROM_LOAD( "shootopl-key.bin", 0, 4, CRC(45547e02) SHA1(4f79f478ff1eea14bc939a67ff570143cb56a4bf) )
ROM_END
-// SHOOTOUT POOL (the original, the above set is a sequel)
-ROM_START( shootopl )
+// Shootout Pool Prize
+ROM_START( shootpl )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
ROM_REGION( 0x3000000, "rom_board", ROMREGION_ERASEFF)
- ROM_LOAD( "epr-23844.ic11", 0x000000, 0x400000, CRC(5c229638) SHA1(9185f9f2369bb2423faff4222419001ac9037d3f) )
- ROM_LOAD32_WORD( "mtp-23840.ic17s", 0x1000000, 0x800000, CRC(985e5ff4) SHA1(a6f529b1855cc2aef3bed8503746c2e38061f944) )
- ROM_LOAD32_WORD( "mtp-23841.ic18", 0x1000002, 0x800000, CRC(255fc335) SHA1(34ffec963880383bb9c02642f73ba3c852699831) )
- ROM_LOAD32_WORD( "mtp-23842.ic19s", 0x2000000, 0x800000, CRC(80724895) SHA1(ed4fa1160b35b3987702c0178bd31c3c5db69e6e) )
- ROM_LOAD32_WORD( "mtp-23843.ic20", 0x2000002, 0x800000, CRC(3574f616) SHA1(40130e8f98fb31c98428d444b79491f6a06ac208) )
+ ROM_LOAD("epr-24065a.ic11",0x0000000, 0x0400000, CRC(622a9ba0) SHA1(2f4963b8447ecda78fea0107497c2811f075c07a) )
+ ROM_LOAD32_WORD("opr-24060.ic17s", 0x1000000, 0x0800000, CRC(7f3d868c) SHA1(dc352981371c5479a69756bb1cbbbca43252216d) )
+ ROM_LOAD32_WORD("opr-24061.ic18", 0x1000002, 0x0800000, CRC(e934267c) SHA1(fdbe2b80e309aa8d9fefd2634aef20153735019d) )
+ ROM_LOAD32_WORD("opr-24062.ic19s", 0x2000000, 0x0800000, CRC(26e32af4) SHA1(49412a04198175240ef9adb4b7afb8a628eb127d) )
+ ROM_LOAD32_WORD("opr-24063.ic20", 0x2000002, 0x0800000, CRC(683fdcff) SHA1(890816ef1b3e604e16289998cf66e221ef75a0fe) )
ROM_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
ROM_REGION( 4, "rom_key", 0 )
- ROM_LOAD( "shootopl-key.bin", 0, 4, CRC(45547e02) SHA1(4f79f478ff1eea14bc939a67ff570143cb56a4bf) )
+ ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
ROM_END
-/* Shootout Pool Medal */
+// Shootout Pool Prize Ver. B
ROM_START( shootplm )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
@@ -8846,7 +8854,8 @@ ROM_END
/* Main board and game specific BIOS */
/* Naomi */ GAME( 1998, naomi, 0, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "Naomi Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
/* game */ GAME( 1998, hod2bios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi House of the Dead 2 Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
-/* game */ GAME( 1999, f355bios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
+/* game */ GAME( 1999, f355dlx, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (deluxe) Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
+/* game */ GAME( 1999, f355bios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Ferrari F355 Challenge (twin) Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
/* game */ GAME( 1999, airlbios, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi Airline Pilots (deluxe) Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
/* Naomi2*/ GAME( 2001, naomi2, 0, naomi, naomi, driver_device, 0, ROT0, "Sega", "Naomi 2 Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
/* GDROM */ GAME( 2001, naomigd, 0, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "Naomi GD-ROM Bios", GAME_FLAGS|GAME_IS_BIOS_ROOT )
@@ -8854,8 +8863,8 @@ ROM_END
/* 834-xxxxx (Sega Naomi cart with game specific BIOS sets) */
/* 13636-01 */ GAME( 1998, hotd2, hod2bios, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */
/* 13636 */ GAME( 1998, hotd2o, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (original)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */
-/* 13636? */ GAME( 1998, hotd2p, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (prototype)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */
-/* 13842 */ GAME( 1999, f355, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge", GAME_FLAGS ) /* specific BIOS "f355bios" needed */
+/* none */ GAME( 1998, hotd2p, hotd2, naomim2, hotd2, naomi_state, hotd2, ROT0, "Sega", "House of the Dead 2 (prototype)", GAME_FLAGS ) /* specific BIOS "hod2bios" needed */
+/* 13842 */ GAME( 1999, f355, f355dlx, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge (deluxe)", GAME_FLAGS ) /* specific BIOS "f355dlx" needed */
/* 13950 */ GAME( 1999, f355twin, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge (twin)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */
/* ????? */ GAME( 2001, f355twn2, f355bios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Ferrari F355 Challenge 2 (twin)", GAME_FLAGS ) /* specific BIOS "f355bios" needed */
/* ????? */ GAME( 1999, alpiltdx, airlbios, naomim2, naomi, driver_device, 0, ROT0, "Sega", "Airline Pilots (deluxe) (Rev B)", GAME_FLAGS ) /* specific BIOS "airlbios" needed */
@@ -8878,8 +8887,8 @@ ROM_END
/* 0018 */ GAME( 1999, sgtetris, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Sega Tetris", GAME_FLAGS )
/* 0019 */ GAME( 1999, dybb99, naomi, naomim2, dybbnao, naomi_state, naomi, ROT0, "Sega", "Dynamite Baseball '99 (JPN) / World Series '99 (USA, EXP, KOR, AUS) (Rev B)", GAME_FLAGS )
/* 0020 */ GAME( 1999, samba, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (JPN) (Rev B)", GAME_FLAGS )
-/* 0020? */GAME( 1999, sambap, samba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (prototype)", GAME_FLAGS )
-/* 0021 */ GAME( 2000, virnbap, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS )
+/* none */ GAME( 1999, sambap, samba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Samba De Amigo (prototype)", GAME_FLAGS )
+/* none */ GAME( 2000, virnbap, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (prototype)", GAME_FLAGS )
/* 0021 */ GAME( 2000, virnbao, virnba, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS) (original)", GAME_FLAGS )
/* 0021-01*/GAME( 2000,virnba, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Virtua NBA (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
/* 0022 */ GAME( 2000, tduno2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Touch de Uno! 2", GAME_FLAGS )
@@ -8914,11 +8923,11 @@ ROM_END
/* 0088 */ GAME( 2001, derbyocw, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev D)", GAME_FLAGS )
/* 0088 */ GAME( 2001, drbyocwc, derbyocw, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_FLAGS )
/* 0098 */ GAME( 2002, shootopl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool", GAME_FLAGS )
-/* 0123 */ GAME( 2001, starhrsp, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Star Horse Progress (Rev A)", GAME_FLAGS )
+/* 0123 */ GAME( 2003, starhrsp, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Star Horse Progress (Rev A)", GAME_FLAGS )
/* 0126 */ GAME( 2003, oinori, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Oinori-daimyoujin Matsuri", GAME_FLAGS )
-/* 0128 */ GAME( 2002, shootpl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool (JPN, USA, KOR, AUS) / Shootout Pool Prize (EXP) (Rev A)", GAME_FLAGS )
+/* 0128 */ GAME( 2003, shootpl, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool The Medal / Shootout Pool Prize (Rev A)", GAME_FLAGS )
/* 0130 */ GAME( 2002, hopper, naomi, naomi, naomi, naomi_state, naomi, ROT0, "Sega", "SWP Hopper Board", GAME_FLAGS )
-/* 0136 */ GAME( 2001, shootplm, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool Medal", GAME_FLAGS )
+/* 0136 */ GAME( 2004, shootplm, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B", GAME_FLAGS )
/* 0140 */ GAME( 2004, kick4csh, naomi, naomim1, naomi, naomi_state, kick4csh,ROT0, "Sega", "Kick '4' Cash", GAME_FLAGS )
/* 0150 */ GAME( 2003, mtkob2, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K3 2nd", GAME_FLAGS )
/* 0158 */ GAME( 2005, mushi2k5, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Sega", "Mushiking The King Of Beetle 2K5 1st", GAME_FLAGS )
@@ -8929,6 +8938,7 @@ ROM_END
/* 0170 */ GAME( 2007, pokasuka, manicpnc, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Pokasuka Ghost", GAME_FLAGS )
/* 0175 */ GAME( 2007, asndynmt, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega", "Asian Dynamite", GAME_FLAGS )
/* 0177 */ GAME( 2007, rhytngk, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Sega/Nintendo", "Rhythm Tengoku", GAME_FLAGS )
+// 01?? Star Horse Progress Returns
// 00xx Mayjinsen (Formation Battle in May) - prototype, never released
/* Cartridge prototypes of games released on GD-ROM */
@@ -8950,7 +8960,7 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
/* 0137 */ GAME( 2004, clubkpzb, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart Prize Ver. B", GAME_FLAGS )
// needs verification is this dump really from 840-0139C cart
/* 0139 */ GAME( 2003, clubk2k3, naomi2, naomi2m1, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003)", GAME_FLAGS )
-/* ??? */ GAME( 2003, clubk2kp, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS )
+/* none */ GAME( 2003, clubk2kp, clubk2k3,naomi2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (2003, prototype)", GAME_FLAGS )
/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
/* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
diff --git a/src/mame/drivers/popobear.c b/src/mame/drivers/popobear.c
index 380351115ee..e0801be11b4 100644
--- a/src/mame/drivers/popobear.c
+++ b/src/mame/drivers/popobear.c
@@ -89,6 +89,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_spr(*this, "spr"),
+ m_vram(*this, "vram"),
m_vregs(*this, "vregs"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
@@ -98,24 +99,18 @@ public:
tilemap_base[1] = 0xf4000;
tilemap_base[2] = 0xf8000;
tilemap_base[3] = 0xfc000;
-
- tilemap_size[0] = 0x04000;
- tilemap_size[1] = 0x04000;
- tilemap_size[2] = 0x04000;
- tilemap_size[3] = 0x04000;
}
required_device<cpu_device> m_maincpu;
required_shared_ptr<UINT16> m_spr;
+ required_shared_ptr<UINT16> m_vram;
required_shared_ptr<UINT16> m_vregs;
optional_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- UINT16* m_vram;
- UINT16* m_vram_rearranged;
+ dynamic_array<UINT16> m_vram_rearranged;
int tilemap_base[4];
- int tilemap_size[4];
DECLARE_READ8_MEMBER(popo_620000_r);
DECLARE_WRITE8_MEMBER(popobear_irq_ack_w);
@@ -124,7 +119,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(popobear_irq);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
- int m_gfx_index;
tilemap_t *m_bg_tilemap[4];
TILE_GET_INFO_MEMBER(get_popobear_bg0_tile_info);
TILE_GET_INFO_MEMBER(get_popobear_bg1_tile_info);
@@ -149,7 +143,7 @@ public:
COMBINE_DATA(&m_vram_rearranged[swapped_offset]);
- m_gfxdecode->gfx(m_gfx_index)->mark_dirty((swapped_offset)/32);
+ m_gfxdecode->gfx(0)->mark_dirty((swapped_offset)/32);
// unfortunately tilemaps and tilegfx share the same ram so we're always dirty if we write to RAM
m_bg_tilemap[0]->mark_all_dirty();
@@ -158,7 +152,6 @@ public:
m_bg_tilemap[3]->mark_all_dirty();
}
- DECLARE_READ16_MEMBER(popo_vram_r) { return m_vram[offset]; }
};
@@ -166,7 +159,7 @@ public:
static const gfx_layout popobear_char_layout =
{
8,8,
- 0x4000,
+ RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{ STEP8(0, 8) },
@@ -174,6 +167,9 @@ static const gfx_layout popobear_char_layout =
8*64
};
+GFXDECODE_START(popobear)
+ GFXDECODE_RAM( "vram", 0, popobear_char_layout, 0, 1 )
+GFXDECODE_END
TILE_GET_INFO_MEMBER(popobear_state::get_popobear_bg0_tile_info)
{
@@ -212,19 +208,9 @@ TILE_GET_INFO_MEMBER(popobear_state::get_popobear_bg3_tile_info)
void popobear_state::video_start()
{
- /* find first empty slot to decode gfx */
- for (m_gfx_index = 0; m_gfx_index < MAX_GFX_ELEMENTS; m_gfx_index++)
- if (m_gfxdecode->gfx(m_gfx_index) == 0)
- break;
-
- assert(m_gfx_index != MAX_GFX_ELEMENTS);
-
- m_vram = auto_alloc_array_clear(machine(), UINT16, 0x100000/2);
- m_vram_rearranged = auto_alloc_array_clear(machine(), UINT16, 0x100000/2);
+ m_vram_rearranged.resize(0x100000 / 2);
-
- /* create the char set (gfx will then be updated dynamically from RAM) */
- m_gfxdecode->set_gfx(m_gfx_index, global_alloc(gfx_element(m_palette, popobear_char_layout, (UINT8 *)m_vram_rearranged, NATIVE_ENDIAN_VALUE_LE_BE(8,0), m_palette->entries() / 16, 0)));
+ m_gfxdecode->gfx(0)->set_source(reinterpret_cast<UINT8 *>(&m_vram_rearranged[0]));
m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_popobear_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
@@ -243,7 +229,6 @@ void popobear_state::video_start()
void popobear_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
{
- // ERROR: This cast is NOT endian-safe without the use of BYTE/WORD/DWORD_XOR_* macros!
UINT8* vram = reinterpret_cast<UINT8 *>(m_spr.target());
int i;
@@ -264,17 +249,19 @@ void popobear_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
/* 0x*29 = 32 x 32 */
for(i = 0x800-8;i >= 0; i-=8)
{
- int y = vram[i+0x7f800+2]|(vram[i+0x7f800+3]<<8);
- int x = vram[i+0x7f800+4]|(vram[i+0x7f800+5]<<8);
- int spr_num = vram[i+0x7f800+6]|(vram[i+0x7f800+7]<<8);
- int param = vram[i+0x7f800+0]|(vram[i+0x7f800+1]<<8);
+ UINT16 *sprdata = &m_spr[(0x7f800 + i) / 2];
+ int param = sprdata[0];
int pri = (param & 0x0f00)>>8;
// we do this because it's sprite<->sprite priority,
if (pri!=drawpri)
continue;
+ int y = sprdata[1];
+ int x = sprdata[2];
+ int spr_num = sprdata[3];
+
int width = 8 << ((param & 0x30)>>4);
int height = width; // sprites are always square?
@@ -327,7 +314,7 @@ void popobear_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect
for(int xi=0;xi<width;xi++)
{
- UINT8 pix = (vram[spr_num^1] & 0xff);
+ UINT8 pix = vram[BYTE_XOR_BE(spr_num)];
int x_draw = (x_dir) ? x+((width-1) - xi) : x+xi;
if(cliprect.contains(x_draw, y_draw))
@@ -479,7 +466,7 @@ static ADDRESS_MAP_START( popobear_mem, AS_PROGRAM, 16, popobear_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x210000, 0x21ffff) AM_RAM
AM_RANGE(0x280000, 0x2fffff) AM_RAM AM_SHARE("spr") // unknown boundaries, 0x2ff800 contains a sprite list, lower area = sprite gfx
- AM_RANGE(0x300000, 0x3fffff) AM_READWRITE( popo_vram_r, popo_vram_w ) // tile definitions + tilemaps
+ AM_RANGE(0x300000, 0x3fffff) AM_RAM_WRITE( popo_vram_w ) AM_SHARE("vram") // tile definitions + tilemaps
/* Most if not all of these are vregs */
@@ -660,7 +647,7 @@ static MACHINE_CONFIG_START( popobear, popobear_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty)
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", popobear)
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_42MHz/16) // XTAL CORRECT, DIVISOR GUESSED
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
diff --git a/src/mame/includes/lethal.h b/src/mame/includes/lethal.h
index e041fe8f365..616bf0efcd4 100644
--- a/src/mame/includes/lethal.h
+++ b/src/mame/includes/lethal.h
@@ -18,7 +18,7 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
- m_bank4800(*this, "bank4800"),
+ m_bank4000(*this, "bank4000"),
m_k056832(*this, "k056832"),
m_k053244(*this, "k053244"),
m_palette(*this, "palette") { }
@@ -26,6 +26,7 @@ public:
/* video-related */
int m_layer_colorbase[4];
int m_sprite_colorbase;
+ int m_back_colorbase;
/* misc */
UINT8 m_cur_control2;
@@ -33,7 +34,7 @@ public:
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
- required_device<address_map_bank_device> m_bank4800;
+ required_device<address_map_bank_device> m_bank4000;
required_device<k056832_device> m_k056832;
required_device<k05324x_device> m_k053244;
required_device<palette_device> m_palette;
@@ -43,7 +44,6 @@ public:
DECLARE_WRITE8_MEMBER(sound_irq_w);
DECLARE_READ8_MEMBER(sound_status_r);
DECLARE_WRITE8_MEMBER(le_bankswitch_w);
- DECLARE_WRITE8_MEMBER(le_bgcolor_w);
DECLARE_READ8_MEMBER(guns_r);
DECLARE_READ8_MEMBER(gunsaux_r);
DECLARE_WRITE8_MEMBER(lethalen_palette_control);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index a2e0f2fe0b2..bb3bb5f8dce 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -5277,8 +5277,9 @@ alpilota // 1999.03 Airline Pilots (Rev A)
ggram2 // 1999.04 Giant Gram: All Japan Pro Wrestling 2
// 1999.05 Taisen Puzzle Kurutto Stone
ringout // 1999.06 Ring Out 4x4
-f355bios // 1999.07 F355 Challenge (BIOS)
-f355 // 1999.07 F355 Challenge
+f355dlx // 1999.07 F355 Challenge Deluxe (BIOS)
+f355bios // 1999.08 F355 Challenge Twin (BIOS)
+f355 // 1999.07 F355 Challenge Deluxe
f355twin // 1999.07 F355 Challenge Twin
shangril // 1999.08 Dengen Tenshi Taisen Janshi Shangri-la
tduno // 1999.08 Touch de UNO! / Unou Nouryoku Check Machine
@@ -5322,7 +5323,7 @@ toukon4 // 2000.04 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edit
qmegamis // 2000.05 Quiz Ah Megamisama
derbyo2k // 2000.06 Derby Owners Club 2000 Ver.2 (Rev A)
starhrse // 2000.?? Star Horse (big screens)
-starhrct // 2000.?? Star Horse (server)
+starhrct // 2000.12 Star Horse (server)
starhrcl // 2000.?? Star Horse (client)
vonot // 2000.06 Virtual-on Oratorio Tangram M.S.B.S. Ver.5.66 2000 Edition
ggx // 2000.07 Guilty Gear X
@@ -5356,7 +5357,6 @@ f355twn2 // 2001.01 F355 Challenge 2 Twin
sfz3ugd // 2001.02 Street Fighter ZERO3 Upper
gundmgd // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (GD-ROM)
gundmct // 2001.03 Mobile Suit Gundam: Federation Vs. Zeon (cartridge)
-starhrsp // 2001.03 Star Horse Progress (Rev A)
dygolf // 2001.04.27 Dynamic Golf / Virtua Golf (Rev A)
// 2001.04 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
shaktmsp // 2001.04.04 Shakatto Tambourine 2K1 SPR
@@ -5385,7 +5385,6 @@ ikaruga // 2001.12 Ikaruga
lupinsho // 2001.12 Lupin the Third: the Shooting
drbyocwc // 2001.?? Derby Owners Club World Edition (Rev. C)
derbyocw // 2001.?? Derby Owners Club World Edition (Rev. D)
-shootplm // 2001.?? Shootout Pool Medal
// 2001.?? Star Horse 2001
hopper // 2002.?? SWP Hopper Board
vathlete // 2002.03 Virtua Athletics / Virtua Athlete
@@ -5402,7 +5401,7 @@ moeru // 2002.12 Moeru Casinyo
// 2002.?? Pochinya
quizqgd // 2002.?? Quiz Keitai Q mode
shootopl // 2002.?? Shootout Pool
-shootpl // 2002.?? Shootout Pool / Shootout Pool Prize (Rev A)
+shootpl // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
mtkob2 // 2003.02 MushiKing The King Of Beetle
// 2003.03 Sega Network Taisen Mahjong MJ
ggxxrl // 2003.03 Guilty Gear XX # Reload (Rev A)
@@ -5413,6 +5412,7 @@ usagiym // 2003.06 Usagi Yamashiro Mahjong Hen
oinori // 2003.08 Oinori-daimyoujin Matsuri
psyvar2 // 2003.11 Psyvariar 2 - The Will To Fabricate
puyofev // 2003.11 Puyo Puyo Fever
+starhrsp // 2003.12 Star Horse Progress (Rev A)
puyofevp // 2003.?? Puyo Puyo Fever (prototype)
// 2003.?? Dragon Treasure
// 2003.?? Rabbit 2
@@ -5420,6 +5420,7 @@ cfield // 2004.06 Chaos Field
tetkiwam // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
trizeal // 2004.09 Trizeal
// 2004.?? Dragon Treasure 2
+shootplm // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
kick4csh // 2004.?? Kick '4' Cash
// 2004.?? The Quiz Show
// 2005.03 Melty Blood Act Cadenza
diff --git a/src/mame/video/lethal.c b/src/mame/video/lethal.c
index fbf16a1a440..73b7565c94c 100644
--- a/src/mame/video/lethal.c
+++ b/src/mame/video/lethal.c
@@ -14,7 +14,7 @@ K05324X_CB_MEMBER(lethal_state::sprite_callback)
{
int pri = (*color & 0xfff0);
*color = *color & 0x000f;
- *color += 0x400 / 64; // colourbase?
+ *color += m_sprite_colorbase;
/* this isn't ideal.. shouldn't need to hardcode it? not 100% sure about it anyway*/
if (pri == 0x10)
@@ -65,11 +65,6 @@ void lethal_state::video_start()
m_k056832->set_layer_offs(2, 192, 0);
m_k056832->set_layer_offs(3, 194, 0);
}
-
- m_layer_colorbase[0] = 0x00;
- m_layer_colorbase[1] = 0x40;
- m_layer_colorbase[2] = 0x80;
- m_layer_colorbase[3] = 0xc0;
}
WRITE8_MEMBER(lethal_state::lethalen_palette_control)
@@ -77,28 +72,29 @@ WRITE8_MEMBER(lethal_state::lethalen_palette_control)
switch (offset)
{
case 0: // 40c8 - PCU1 from schematics
- m_layer_colorbase[0] = ((data & 0x7) - 1) * 0x40;
- m_layer_colorbase[1] = (((data >> 4) & 0x7) - 1) * 0x40;
+ m_layer_colorbase[0] = (data & 0x7) * 1024 / 16;
+ m_layer_colorbase[1] = ((data >> 4) & 0x7) * 1024 / 16;
m_k056832->mark_plane_dirty( 0);
m_k056832->mark_plane_dirty( 1);
break;
case 4: // 40cc - PCU2 from schematics
- m_layer_colorbase[2] = ((data & 0x7) - 1) * 0x40;
- m_layer_colorbase[3] = (((data >> 4) & 0x7) - 1) * 0x40;
+ m_layer_colorbase[2] = (data & 0x7) * 1024 / 16;
+ m_layer_colorbase[3] = ((data >> 4) & 0x7) * 1024 / 16;
m_k056832->mark_plane_dirty( 2);
m_k056832->mark_plane_dirty( 3);
break;
case 8: // 40d0 - PCU3 from schematics
- m_sprite_colorbase = ((data & 0x7) - 1) * 0x40;
+ m_sprite_colorbase = (data & 0x7) * 1024 / 64;
+ m_back_colorbase = ((data >> 4) & 0x7) * 1024 + 1023;
break;
}
}
UINT32 lethal_state::screen_update_lethalen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- bitmap.fill(7168, cliprect);
+ bitmap.fill(m_back_colorbase, cliprect);
screen.priority().fill(0, cliprect);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, K056832_DRAW_FLAG_MIRROR, 1);
diff --git a/src/mess/drivers/ngen.c b/src/mess/drivers/ngen.c
index 373f96b7668..37fbe6c102b 100644
--- a/src/mess/drivers/ngen.c
+++ b/src/mess/drivers/ngen.c
@@ -14,6 +14,7 @@
#include "machine/am9517a.h"
#include "machine/pic8259.h"
#include "machine/pit8253.h"
+#include "machine/z80dart.h"
class ngen_state : public driver_device
{
@@ -23,9 +24,12 @@ public:
m_maincpu(*this,"maincpu"),
m_crtc(*this,"crtc"),
m_viduart(*this,"videouart"),
+ m_iouart(*this,"iouart"),
m_dmac(*this,"dmac"),
m_pic(*this,"pic"),
- m_pit(*this,"pit")
+ m_pit(*this,"pit"),
+ m_vram(*this,"vram"),
+ m_fontram(*this,"fontram")
{}
DECLARE_WRITE_LINE_MEMBER(pit_out0_w);
@@ -43,27 +47,34 @@ private:
required_device<cpu_device> m_maincpu;
required_device<mc6845_device> m_crtc;
required_device<i8251_device> m_viduart;
+ required_device<upd7201_device> m_iouart;
required_device<am9517a_device> m_dmac;
required_device<pic8259_device> m_pic;
required_device<pit8254_device> m_pit;
+ required_shared_ptr<UINT16> m_vram;
+ required_shared_ptr<UINT16> m_fontram;
UINT16 m_peripheral;
UINT16 m_upper;
UINT16 m_middle;
UINT16 m_port00;
+ UINT16 m_periph141;
};
WRITE_LINE_MEMBER(ngen_state::pit_out0_w)
{
- m_pic->ir0_w(state);
+ //m_pic->ir0_w(state);
+ logerror("80186 Timer 1 state %i\n",state);
}
WRITE_LINE_MEMBER(ngen_state::pit_out1_w)
{
+ logerror("PIT Timer 1 state %i\n",state);
}
WRITE_LINE_MEMBER(ngen_state::pit_out2_w)
{
+ logerror("PIT Timer 2 state %i\n",state);
}
WRITE16_MEMBER(ngen_state::cpu_peripheral_cb)
@@ -97,10 +108,15 @@ WRITE16_MEMBER(ngen_state::cpu_peripheral_cb)
}
// 80186 peripheral space
+// Largely guesswork at this stage
WRITE16_MEMBER(ngen_state::peripheral_w)
{
switch(offset)
{
+ case 0x141:
+ // bit 1 enables speaker?
+ COMBINE_DATA(&m_periph141);
+ break;
case 0x144:
if(mem_mask & 0x00ff)
m_crtc->address_w(space,0,data & 0xff);
@@ -111,21 +127,27 @@ WRITE16_MEMBER(ngen_state::peripheral_w)
break;
case 0x146:
if(mem_mask & 0x00ff)
- m_pic->write(space,0,data & 0xff);
+ m_iouart->ba_cd_w(space,0,data & 0xff);
+ logerror("Video write offset 0x146 data %04x mask %04x\n",data,mem_mask);
break;
case 0x147:
if(mem_mask & 0x00ff)
- m_pic->write(space,1,data & 0xff);
+ m_iouart->ba_cd_w(space,1,data & 0xff);
+ logerror("Video write offset 0x147 data %04x mask %04x\n",data,mem_mask);
break;
+ default:
+ logerror("(PC=%06x) Unknown 80186 peripheral write offset %04x data %04x mask %04x\n",m_maincpu->device_t::safe_pc(),offset,data,mem_mask);
}
- logerror("Peripheral write offset %04x data %04x mask %04x\n",offset,data,mem_mask);
}
READ16_MEMBER(ngen_state::peripheral_r)
{
- UINT16 ret = 0xff;
+ UINT16 ret = 0xffff;
switch(offset)
{
+ case 0x141:
+ ret = m_periph141;
+ break;
case 0x144:
if(mem_mask & 0x00ff)
ret = m_crtc->status_r(space,0);
@@ -136,14 +158,17 @@ READ16_MEMBER(ngen_state::peripheral_r)
break;
case 0x146:
if(mem_mask & 0x00ff)
- ret = m_pic->read(space,0);
+ ret = m_iouart->ba_cd_r(space,0);
break;
- case 0x147:
+ case 0x147: // definitely video related, likely UART sending data to the video board
if(mem_mask & 0x00ff)
- ret = m_pic->read(space,1);
+ ret = m_iouart->ba_cd_r(space,1);
+ // expects bit 0 to be set (Video ready signal?)
+ ret |= 1;
break;
+ default:
+ logerror("(PC=%06x) Unknown 80186 peripheral read offset %04x mask %04x returning %04x\n",m_maincpu->device_t::safe_pc(),offset,mem_mask,ret);
}
- logerror("Peripheral read offset %04x mask %04x\n",offset,mem_mask);
return ret;
}
@@ -165,10 +190,25 @@ READ16_MEMBER(ngen_state::port00_r)
MC6845_UPDATE_ROW( ngen_state::crtc_update_row )
{
+ UINT16 addr = ma;
+
+ for(int x=0;x<bitmap.width();x+=9)
+ {
+ UINT8 ch = m_vram[addr++];
+ for(int z=0;z<9;z++)
+ {
+ if(BIT(m_fontram[ch*16+ra],8-z))
+ bitmap.pix32(y,x+z) = rgb_t(0,0xff,0);
+ else
+ bitmap.pix32(y,x+z) = rgb_t(0,0,0);
+ }
+ }
}
static ADDRESS_MAP_START( ngen_mem, AS_PROGRAM, 16, ngen_state )
- AM_RANGE(0x00000, 0xfdfff) AM_RAM
+ AM_RANGE(0x00000, 0xf7fff) AM_RAM
+ AM_RANGE(0xf8000, 0xf9fff) AM_RAM AM_SHARE("vram")
+ AM_RANGE(0xfa000, 0xfbfff) AM_RAM AM_SHARE("fontram")
AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("bios",0)
ADDRESS_MAP_END
@@ -215,6 +255,9 @@ static MACHINE_CONFIG_START( ngen, ngen_state )
MCFG_DEVICE_ADD("dmac", AM9517A, XTAL_14_7456MHz / 3) // NEC D8237A, divisor unknown
+ // I/O board
+ MCFG_UPD7201_ADD("iouart",XTAL_14_7456MHz / 3, 0,0,0,0) // no clock visible on I/O board, guessing for now
+
// video board
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(720,348)
diff --git a/src/mess/includes/gamecom.h b/src/mess/includes/gamecom.h
index 33cae6fe78c..28f769ea617 100644
--- a/src/mess/includes/gamecom.h
+++ b/src/mess/includes/gamecom.h
@@ -211,37 +211,47 @@ class gamecom_state : public driver_device
{
public:
gamecom_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_dac(*this, "dac"),
- m_cart1(*this, "cartslot1"),
- m_cart2(*this, "cartslot2"),
- m_p_nvram(*this,"nvram"),
- m_p_videoram(*this,"videoram"),
- m_bank1(*this, "bank1"),
- m_bank2(*this, "bank2"),
- m_bank3(*this, "bank3"),
- m_bank4(*this, "bank4"),
- m_region_maincpu(*this, "maincpu"),
- m_region_kernel(*this, "kernel"),
- m_io_in0(*this, "IN0"),
- m_io_in1(*this, "IN1"),
- m_io_in2(*this, "IN2"),
- m_io_grid(*this, "GRID")
+ : driver_device(mconfig, type, tag)
+ , m_p_videoram(*this,"videoram")
+ , m_p_nvram(*this,"nvram")
+ , m_maincpu(*this, "maincpu")
+ , m_dac(*this, "dac")
+ , m_cart1(*this, "cartslot1")
+ , m_cart2(*this, "cartslot2")
+ , m_bank1(*this, "bank1")
+ , m_bank2(*this, "bank2")
+ , m_bank3(*this, "bank3")
+ , m_bank4(*this, "bank4")
+ , m_region_maincpu(*this, "maincpu")
+ , m_region_kernel(*this, "kernel")
+ , m_io_in0(*this, "IN0")
+ , m_io_in1(*this, "IN1")
+ , m_io_in2(*this, "IN2")
+ , m_io_grid(*this, "GRID")
{ }
- required_device<cpu_device> m_maincpu;
- required_device<dac_device> m_dac;
- required_device<generic_slot_device> m_cart1;
- required_device<generic_slot_device> m_cart2;
DECLARE_READ8_MEMBER( gamecom_internal_r );
DECLARE_READ8_MEMBER( gamecom_pio_r );
DECLARE_WRITE8_MEMBER( gamecom_internal_w );
DECLARE_WRITE8_MEMBER( gamecom_pio_w );
- required_shared_ptr<UINT8> m_p_nvram;
+ DECLARE_DRIVER_INIT(gamecom);
+ DECLARE_PALETTE_INIT(gamecom);
+ INTERRUPT_GEN_MEMBER(gamecom_interrupt);
+ TIMER_CALLBACK_MEMBER(gamecom_clock_timer_callback);
+ TIMER_CALLBACK_MEMBER(gamecom_scanline);
+ DECLARE_WRITE8_MEMBER( gamecom_handle_dma );
+ DECLARE_WRITE8_MEMBER( gamecom_update_timers );
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart1 );
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart2 );
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+private:
UINT8 *m_p_ram;
- required_shared_ptr<UINT8> m_p_videoram;
UINT8 *m_cart_ptr;
+ UINT8 m_lcdc_reg;
+ UINT8 m_lch_reg;
+ UINT8 m_lcv_reg;
+ UINT16 m_scanline;
+ UINT16 m_base_address;
memory_region *m_cart1_rom;
memory_region *m_cart2_rom;
emu_timer *m_clock_timer;
@@ -249,32 +259,20 @@ public:
GAMECOM_DMA m_dma;
GAMECOM_TIMER m_timer[2];
gamecom_sound_t m_sound;
- int m_scanline;
- unsigned int m_base_address;
bitmap_ind16 m_bitmap;
void gamecom_set_mmu(UINT8 mmu, UINT8 data);
void handle_stylus_press(int column);
- UINT8 m_lcdc_reg;
- UINT8 m_lch_reg;
- UINT8 m_lcv_reg;
void recompute_lcd_params();
void handle_input_press(UINT16 mux_data);
-
- UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_DRIVER_INIT(gamecom);
+ int common_load(device_image_interface &image, generic_slot_device *slot);
virtual void machine_reset();
virtual void video_start();
- DECLARE_PALETTE_INIT(gamecom);
- INTERRUPT_GEN_MEMBER(gamecom_interrupt);
- TIMER_CALLBACK_MEMBER(gamecom_clock_timer_callback);
- TIMER_CALLBACK_MEMBER(gamecom_scanline);
- DECLARE_WRITE8_MEMBER( gamecom_handle_dma );
- DECLARE_WRITE8_MEMBER( gamecom_update_timers );
- int common_load(device_image_interface &image, generic_slot_device *slot);
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart1 );
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( gamecom_cart2 );
-
-protected:
+ required_shared_ptr<UINT8> m_p_videoram;
+ required_shared_ptr<UINT8> m_p_nvram;
+ required_device<cpu_device> m_maincpu;
+ required_device<dac_device> m_dac;
+ required_device<generic_slot_device> m_cart1;
+ required_device<generic_slot_device> m_cart2;
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;
diff --git a/src/mess/layout/gamecom.lay b/src/mess/layout/gamecom.lay
index f254ea656cc..6cb50665d75 100644
--- a/src/mess/layout/gamecom.lay
+++ b/src/mess/layout/gamecom.lay
@@ -10,40 +10,40 @@
<bounds x="0" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.1" inputmask="0x01" >
- <bounds x="16" y="16" width="16" height="16" />
+ <bounds x="16" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.2" inputmask="0x01" >
- <bounds x="32" y="16" width="16" height="16" />
+ <bounds x="32" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.3" inputmask="0x01" >
- <bounds x="48" y="16" width="16" height="16" />
+ <bounds x="48" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.4" inputmask="0x01" >
- <bounds x="64" y="16" width="16" height="16" />
+ <bounds x="64" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.5" inputmask="0x01" >
- <bounds x="80" y="16" width="16" height="16" />
+ <bounds x="80" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.6" inputmask="0x01" >
- <bounds x="96" y="16" width="16" height="16" />
+ <bounds x="96" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.7" inputmask="0x01" >
- <bounds x="112" y="16" width="16" height="16" />
+ <bounds x="112" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.8" inputmask="0x01" >
- <bounds x="128" y="16" width="16" height="16" />
+ <bounds x="128" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.9" inputmask="0x01" >
- <bounds x="144" y="16" width="16" height="16" />
+ <bounds x="144" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.10" inputmask="0x01" >
- <bounds x="160" y="16" width="16" height="16" />
+ <bounds x="160" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.11" inputmask="0x01" >
- <bounds x="176" y="16" width="16" height="16" />
+ <bounds x="176" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.12" inputmask="0x01" >
- <bounds x="192" y="16" width="16" height="16" />
+ <bounds x="192" y="0" width="16" height="16" />
</backdrop>
<backdrop element="grid" inputtag="GRID.0" inputmask="0x02" >