Conflicts:
	src/mame/drivers/alinvade.c
This commit is contained in:
Angelo Salese 2014-11-15 16:07:30 +01:00
commit 550fc88480
13 changed files with 283 additions and 243 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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 )

View File

@ -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;
}
}

View File

@ -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)

View File

@ -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,33 +5181,7 @@ 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 )
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_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
ROM_END
// SHOOTOUT POOL (the original, the above set is a sequel)
// Shootout Pool
ROM_START( shootopl )
NAOMI_BIOS
NAOMI_DEFAULT_EEPROM
@ -5209,7 +5199,25 @@ ROM_START( shootopl )
ROM_LOAD( "shootopl-key.bin", 0, 4, CRC(45547e02) SHA1(4f79f478ff1eea14bc939a67ff570143cb56a4bf) )
ROM_END
/* Shootout Pool Medal */
// Shootout Pool Prize
ROM_START( shootpl )
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_COPY( "rom_board", 0x1000000, 0x400000, 0xc00000 )
ROM_REGION( 4, "rom_key", 0 )
ROM_LOAD( "shootpl-key.bin", 0, 4, CRC(03c30b17) SHA1(e8e8659aa27b3d1cac2268850d3973d9afeaeba9) )
ROM_END
// 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 )

View File

@ -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;
m_vram_rearranged.resize(0x100000 / 2);
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);
/* 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)

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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;

View File

@ -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" >