seta2.cpp: correct CPU type for ablastb, preliminary sound (nw)

This commit is contained in:
Ivan Vangelista 2017-12-21 18:06:21 +01:00
parent 5a8bdc6cd5
commit a3bcad51b0
2 changed files with 40 additions and 33 deletions

View File

@ -375,35 +375,36 @@ ADDRESS_MAP_END
***************************************************************************/
static ADDRESS_MAP_START( penbros_base_map, AS_PROGRAM, 16, seta2_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
AM_RANGE(0x210000, 0x23ffff) AM_RAM // RAM
AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1") // P1
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2") // P2
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins
AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w) // Coins Counter
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM
AM_RANGE(0x210000, 0x21ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg
AM_RANGE(0x220000, 0x22ffff) AM_RAM // zeroed at startup, then never written again
AM_RANGE(0x230000, 0x23ffff) AM_RAM // zeroed at startup, then never written again on originals, used on the bootleg
AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1")
AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2")
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM")
AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w)
AM_RANGE(0x600006, 0x600007) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r)
//AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs")
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w)
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
ADDRESS_MAP_END
static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16, seta2_state )
AM_IMPORT_FROM(penbros_base_map)
AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2") // DSW 2
AM_RANGE(0x500300, 0x50030f) AM_WRITE(sound_bank_w) // Samples Banks
AM_RANGE(0x300000, 0x30ffff) AM_RAM
AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1")
AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2")
AM_RANGE(0x500300, 0x50030f) AM_WRITE(sound_bank_w)
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(vregs_w) AM_SHARE("vregs")
AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( penbrosk_map, AS_PROGRAM, 16, seta2_state )
static ADDRESS_MAP_START( ablastb_map, AS_PROGRAM, 16, seta2_state )
AM_IMPORT_FROM(penbros_base_map)
AM_RANGE(0x508300, 0x508301) AM_READ_PORT("DSW1") // DSW 1
AM_RANGE(0x508302, 0x508303) AM_READ_PORT("DSW2") // DSW 2
// TODO: Where are the samples banks?
AM_RANGE(0x508300, 0x508301) AM_READ_PORT("DSW1")
AM_RANGE(0x508302, 0x508303) AM_READ_PORT("DSW2")
// TODO: Is there samples banking like in the original?
ADDRESS_MAP_END
@ -2609,12 +2610,12 @@ static MACHINE_CONFIG_DERIVED( penbros, seta2 )
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0x80, 0x160-1)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( penbrosk, penbros )
MCFG_CPU_MODIFY("maincpu") // actually TMP68HC000P-16
MCFG_CPU_PROGRAM_MAP(penbrosk_map)
static MACHINE_CONFIG_DERIVED( ablastb, penbros )
MCFG_CPU_REPLACE("maincpu", M68000, XTAL_16MHz) // TMP68HC000P-16
MCFG_CPU_PROGRAM_MAP(ablastb_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, irq2_line_hold)
//TODO:
//MCFG_DEVICE_REMOVE("tmp68301")
MCFG_DEVICE_REMOVE("tmp68301")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( reelquak, seta2 )
@ -3522,9 +3523,8 @@ ROM_START( ablastb ) // bootleg PCB with standard 68000 instead of TMP68301 and
ROM_LOAD( "4.bin", 0x800000, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
ROM_FILL( 0xc00000, 0x400000, 0x00 ) // 6bpp instead of 8bpp
ROM_REGION( 0x300000, "x1snd", 0 ) // Samples
// Leave 1MB empty (addressable by the chip)
ROM_LOAD( "29F1610.bin", 0x100000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
ROM_REGION( 0x200000, "x1snd", 0 ) // Samples. ROM content matches the penbros' one, but there's no proper X1-010 on the PCB. Possibly one of the FPGAs acts as a substitute?
ROM_LOAD( "29F1610.bin", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
ROM_END
/***************************************************************************
@ -4108,7 +4108,7 @@ ROM_END
CPU: Toshiba TMP68301AF-16 (100 Pin PQFP @ U1)
Video: Allumer X1-020 9426HK003 (@ U9 - Same as DX-101?)
NEC DX-102 (52 Pin PQFP @ U8)
NEC DX-102 (52 Pin PQFP @ U8)
Allumer X1-007 505100 (SDIP42 @ U110 - Feeds RGB DACs)
Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
Inputs: Allumer X1-004 546100 (SDIP52)
@ -4157,7 +4157,7 @@ GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, 0, ROT0
GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, 0, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, penbros, 0, penbros, penbros, seta2_state, 0, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, 0, ROT0, "Subsino", "A-Blast (Japan)", MACHINE_NO_COCKTAIL )
GAME( 2000, ablastb, penbros, penbrosk, penbros, seta2_state, 0, ROT0, "bootleg", "A-Blast (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, 0, ROT0, "bootleg", "A-Blast (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, 0, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )

View File

@ -70,7 +70,7 @@
---- ---8 7654 3210 "Tilemap" scroll Y
Shadows (same principle as ssv.c):
Shadows (same principle as ssv.cpp):
The low bits of the pens from a "shadowing" tile (regardless of color code)
substitute the top bits of the color index (0-7fff) in the frame buffer.
@ -483,8 +483,15 @@ uint32_t seta2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
// Black or pen 0?
bitmap.fill(m_palette->pen(0), cliprect);
if ( (m_vregs[0x30/2] & 1) == 0 ) // 1 = BLANK SCREEN
if (m_vregs.found())
{
if ( (m_vregs[0x30/2] & 1) == 0 ) // 1 = BLANK SCREEN
draw_sprites(bitmap, cliprect);
}
else // ablastb doesn't seem to have the same vregs
{
draw_sprites(bitmap, cliprect);
}
return 0;
}