mirror of
https://github.com/holub/mame
synced 2025-05-23 06:08:48 +03:00
Spark Man: Refactored the protection, implemented thrash protection that's used after the title screen
This commit is contained in:
parent
5719b6c623
commit
656c6e1f2e
@ -828,11 +828,44 @@ ADDRESS_MAP_END
|
|||||||
Spark Man
|
Spark Man
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
/* This is protection, there appears to be a tight correlation with the NMI. */
|
/*
|
||||||
static WRITE8_HANDLER( sparkman_nmi_w )
|
Thrash protection code snippet:
|
||||||
|
|
||||||
|
0B48: 3E 81 ld a,$81
|
||||||
|
0B4A: 32 BF C3 ld ($C3BF),a
|
||||||
|
0B4D: 21 10 D0 ld hl,$C808
|
||||||
|
0B50: 11 11 D0 ld de,$C809
|
||||||
|
0B53: ED 5F ld a,r ;check this, pretty pointless
|
||||||
|
0B55: 77 ld (hl),a
|
||||||
|
0B56: 01 80 00 ld bc,$0080
|
||||||
|
0B59: ED B0 ldir
|
||||||
|
0B5B: 3E 18 ld a,$18
|
||||||
|
0B5D: 32 C4 C3 ld ($C3C4),a
|
||||||
|
0B60: 21 67 13 ld hl,$0B67
|
||||||
|
0B63: 22 00 D0 ld ($C800),hl
|
||||||
|
0B66: C9 ret
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
static UINT8 suna8_trash_prot, *suna8_wram;
|
||||||
|
|
||||||
|
/* This is a command-based protection. */
|
||||||
|
static WRITE8_HANDLER( sparkman_cmd_prot_w )
|
||||||
{
|
{
|
||||||
suna8_nmi_enable = data & 0xff;
|
switch(data)
|
||||||
//if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown nmi bits: %02X\n",cpu_get_pc(space->cpu),data);
|
{
|
||||||
|
case 0xa6: suna8_nmi_enable = 1; break;
|
||||||
|
case 0x00: suna8_nmi_enable = 0; break;
|
||||||
|
case 0x18: suna8_trash_prot = 0; break;
|
||||||
|
case 0x81: suna8_trash_prot = 1; break;
|
||||||
|
default: logerror("CPU #0 - PC %04X: unknown protection command: %02X\n",cpu_get_pc(space->cpu),data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static WRITE8_HANDLER( suna8_wram_w )
|
||||||
|
{
|
||||||
|
if(!suna8_trash_prot)
|
||||||
|
suna8_wram[offset] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -898,11 +931,11 @@ static ADDRESS_MAP_START( sparkman_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0xc200, 0xc200) AM_WRITE(sparkman_spritebank_w ) // Sprite RAM Bank
|
AM_RANGE(0xc200, 0xc200) AM_WRITE(sparkman_spritebank_w ) // Sprite RAM Bank
|
||||||
AM_RANGE(0xc280, 0xc280) AM_WRITE(sparkman_rombank_w ) // ROM Bank (?mirrored up to c2ff?)
|
AM_RANGE(0xc280, 0xc280) AM_WRITE(sparkman_rombank_w ) // ROM Bank (?mirrored up to c2ff?)
|
||||||
AM_RANGE(0xc300, 0xc300) AM_WRITE(sparkman_flipscreen_w ) // Flip Screen
|
AM_RANGE(0xc300, 0xc300) AM_WRITE(sparkman_flipscreen_w ) // Flip Screen
|
||||||
AM_RANGE(0xc380, 0xc3bf) AM_WRITE(sparkman_nmi_w ) // ? NMI related ?
|
AM_RANGE(0xc380, 0xc3ff) AM_WRITE(sparkman_cmd_prot_w ) // Protection
|
||||||
AM_RANGE(0xc400, 0xc400) AM_WRITE(sparkman_leds_w ) // Leds + Coin Counter
|
AM_RANGE(0xc400, 0xc400) AM_WRITE(sparkman_leds_w ) // Leds + Coin Counter
|
||||||
AM_RANGE(0xc500, 0xc500) AM_WRITE(soundlatch_w ) // To Sound CPU
|
AM_RANGE(0xc500, 0xc500) AM_WRITE(soundlatch_w ) // To Sound CPU
|
||||||
AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram ) // Palette (Banked??)
|
AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram ) // Palette (Banked??)
|
||||||
AM_RANGE(0xc800, 0xdfff) AM_RAM // RAM
|
AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE(suna8_wram_w) AM_BASE(&suna8_wram) // RAM
|
||||||
AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w ) // Sprites (Banked)
|
AM_RANGE(0xe000, 0xffff) AM_READWRITE(suna8_banked_spriteram_r, suna8_banked_spriteram_w ) // Sprites (Banked)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user