diff options
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 |
commit | 550fc88480e6e580b17e10d72b435f34d828c51c (patch) | |
tree | 7923d02afc8f1132934d5bd23df58b36d4b1c5c5 | |
parent | ad1f309d08aafbe412ca42f8b8e3ef8ded119aa4 (diff) | |
parent | 761c3dfcbbdaa04a265193a05c133ee237e07c43 (diff) |
Merge branch 'master' of https://github.com/mamedev/mame
Conflicts:
src/mame/drivers/alinvade.c
-rw-r--r-- | src/emu/machine/pla.c | 6 | ||||
-rw-r--r-- | src/lib/util/plaparse.c | 2 | ||||
-rw-r--r-- | src/mame/drivers/alinvade.c | 8 | ||||
-rw-r--r-- | src/mame/drivers/goldngam.c | 12 | ||||
-rw-r--r-- | src/mame/drivers/lethal.c | 83 | ||||
-rw-r--r-- | src/mame/drivers/naomi.c | 148 | ||||
-rw-r--r-- | src/mame/drivers/popobear.c | 51 | ||||
-rw-r--r-- | src/mame/includes/lethal.h | 6 | ||||
-rw-r--r-- | src/mame/mame.lst | 13 | ||||
-rw-r--r-- | src/mame/video/lethal.c | 20 | ||||
-rw-r--r-- | src/mess/drivers/ngen.c | 65 | ||||
-rw-r--r-- | src/mess/includes/gamecom.h | 82 | ||||
-rw-r--r-- | src/mess/layout/gamecom.lay | 24 |
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" > |