Previous 199869 Revisions Next

r36175 Sunday 1st March, 2015 at 22:03:39 UTC by Luca Elia
Emulate sound latch protection in brickzn [Luca Elia, system11]
[src/mame/drivers]suna8.c
[src/mame/includes]suna8.h

trunk/src/mame/drivers/suna8.c
r244686r244687
678678         ---- ---0   Palette RAM Bank
679679
680680
681  C0A0:  Sound Latch
681  C0A0:  Sound Latch (optionally scrambled)
682682
683683
684684  C0A0:  7654 3---
r244686r244687
699699   }
700700   else if ((m_protection_val & 0xfc) == 0x90)
701701   {
702      soundlatch_byte_w(space, 0, data);
702      /*
703         0d   brick hit      NO!      25?
704         2c   side wall hit   OK
705         3b   paddle hit      OK
706         44   death         OK?
707         53   death         OK?
708         56   coin in         OK?
709         70   monster hit      NO?      58?
710      */
711      UINT8 remap = (m_remap_sound ? BITSWAP8(data, 7,6,3,4,5,2,1,0) : data);
703712
704      logerror("CPU #0 - PC %04X: soundlatch = %02X\n",space.device().safe_pc(),data);
713      soundlatch_byte_w(space, 0, remap);
714
715      logerror("CPU #0 - PC %04X: soundlatch = %02X (->%02X)\n",space.device().safe_pc(),data,remap);
705716   }
706717   else if (protselect == 0x04)
707718   {
r244686r244687
774785   else
775786      space.install_ram(0xc800, 0xdfff, m_wram);
776787
788   m_remap_sound = ((m_prot2 ^ data) == 0xf8) ? 1 : 0;
789
777790   // Select alternate data decryption, see code at 787e:
778791   membank("bank1")->set_entry((membank("bank1")->entry() & 0x0f) + ((m_prot2 == (data | 0xdc)) ? 0x10 : 0));
779792
r244686r244687
15271540
15281541INPUT_PORTS_END
15291542
1543static INPUT_PORTS_START( brickznv6 )
1544   PORT_INCLUDE(brickzn)
15301545
1546   PORT_MODIFY("DSW2") // DSW 2 - $c103
1547   PORT_DIPNAME( 0x18, 0x10, DEF_STR( Bonus_Life ) )   PORT_DIPLOCATION("SW2:4,5")
1548   PORT_DIPSETTING(    0x18, "None" )
1549   PORT_DIPSETTING(    0x10, "10K" )
1550   PORT_DIPSETTING(    0x08, "30K" )
1551   PORT_DIPSETTING(    0x00, "50K" )
1552   PORT_DIPNAME( 0x20, 0x20, "Display" )   PORT_DIPLOCATION("SW2:6")
1553   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1554   PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
1555INPUT_PORTS_END
1556
15311557/***************************************************************************
15321558                                Hard Head 2
15331559***************************************************************************/
r244686r244687
19171943MACHINE_RESET_MEMBER(suna8_state,brickzn)
19181944{
19191945   m_protection_val = m_prot2 = m_prot2_prev = 0xff;
1946   m_remap_sound = 0;
19201947   membank("bank1")->set_entry(0);
19211948}
19221949
r244686r244687
19281955   MCFG_CPU_IO_MAP(brickzn_io_map)
19291956   MCFG_CPU_VBLANK_INT_DRIVER("screen", suna8_state,  irq0_line_hold)  // nmi breaks ramtest but is needed!
19301957
1931   MCFG_CPU_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 4)   /* Z0840006PSC */
1958   MCFG_CPU_ADD("audiocpu", Z80, SUNA8_MASTER_CLOCK / 8)   /* Z0840006PSC - 3MHz better matches the tempo in the video */
19321959   MCFG_CPU_PROGRAM_MAP(brickzn_sound_map)
19331960
19341961   MCFG_CPU_ADD("pcm", Z80, SUNA8_MASTER_CLOCK / 4)    /* Z0840006PSC */
r244686r244687
28822909GAME( 1991, hardhea2,  0,        hardhea2, hardhea2, suna8_state, hardhea2,  ROT0,  "SunA",                       "Hard Head 2 (v2.0)",          0 )
28832910
28842911// is meant to sound like this https://www.youtube.com/watch?v=yfU1C7A3iZI (recorded from v6.0, Joystick version)
2885GAME( 1992, brickzn,   0,        brickzn,  brickzn,  suna8_state, brickzn,   ROT90, "SunA",                       "Brick Zone (v6.0, Joystick)", GAME_IMPERFECT_SOUND )
2886GAME( 1992, brickznv5, brickzn,  brickzn,  brickzn,  suna8_state, brickznv5, ROT90, "SunA",                       "Brick Zone (v5.0, Joystick)", GAME_IMPERFECT_SOUND )
2887GAME( 1992, brickznv4, brickzn,  brickzn,  brickzn,  suna8_state, brickznv4, ROT90, "SunA",                       "Brick Zone (v4.0, Spinner)",  GAME_IMPERFECT_SOUND )
2888GAME( 1992, brickzn11, brickzn,  brickzn,  brickzn,  suna8_state, brickzn11, ROT90, "SunA",                       "Brick Zone (v1.1)",  GAME_NOT_WORKING )
2912GAME( 1992, brickzn,   0,        brickzn,  brickznv6,suna8_state, brickzn,   ROT90, "SunA",                       "Brick Zone (v6.0, Joystick)", 0 )
2913GAME( 1992, brickznv5, brickzn,  brickzn,  brickzn,  suna8_state, brickznv5, ROT90, "SunA",                       "Brick Zone (v5.0, Joystick)", 0 )
2914GAME( 1992, brickznv4, brickzn,  brickzn,  brickzn,  suna8_state, brickznv4, ROT90, "SunA",                       "Brick Zone (v4.0, Spinner)",  0 )
2915GAME( 1992, brickzn11, brickzn,  brickzn,  brickzn,  suna8_state, brickzn11, ROT90, "SunA",                       "Brick Zone (v1.1)",           GAME_NOT_WORKING )
trunk/src/mame/includes/suna8.h
r244686r244687
1818      m_screen(*this, "screen"),
1919      m_palette(*this, "palette"),
2020
21      m_prot_opcode_toggle(0)
21      m_prot_opcode_toggle(0),
22      m_remap_sound(0)
2223      { }
2324
2425   required_device<cpu_device> m_maincpu;
r244686r244687
4546   UINT8 m_spritebank_latch;
4647   UINT8 m_write_disable;
4748   UINT8 m_prot_opcode_toggle;
49   UINT8 m_remap_sound;
4850   UINT8* m_decrypt;
4951
5052   enum GFXBANK_TYPE_T


Previous 199869 Revisions Next


© 1997-2024 The MAME Team