mirror of
https://github.com/holub/mame
synced 2025-05-25 15:25:33 +03:00
further fixes to nemesis.c [Hau]
merged memory maps in hyprduel.c [Hau] New games added or promoted from NOT_WORKING status Magical Error wo Sagase [Hau]
This commit is contained in:
parent
c6116e9138
commit
caa85ce7a0
@ -12,7 +12,7 @@ Imagetek Inc 14220 071
|
|||||||
|
|
||||||
|
|
||||||
Magical Error wo Sagase
|
Magical Error wo Sagase
|
||||||
(c)1993? Technosoft / Jaleco
|
(c)1994 Technosoft / Jaleco
|
||||||
TEC5000(Japan)
|
TEC5000(Japan)
|
||||||
|
|
||||||
TMP68000N-10 x2
|
TMP68000N-10 x2
|
||||||
@ -22,13 +22,10 @@ OSC: 3.579545MHz, 4.0000MHz, 20.0000MHz, 26.6660MHz
|
|||||||
Imagetek Inc 14220 071
|
Imagetek Inc 14220 071
|
||||||
|
|
||||||
--
|
--
|
||||||
driver by Eisuke Watanabe
|
Written by Hau
|
||||||
|
03/27/2009
|
||||||
based on driver from drivers/metro.c by Luca Elia
|
based on driver from drivers/metro.c by Luca Elia
|
||||||
spthx to kikur,Cha,teioh,kokkyu,teruchu,aya,sgo
|
spthx to kikur,Cha,teioh,kokkyu,teruchu,aya,sgo
|
||||||
|
|
||||||
Note:
|
|
||||||
sub68k is performing not only processing of sound but assistance of main68k.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Magical Error
|
Magical Error
|
||||||
@ -43,67 +40,21 @@ fix comms so it boots, it's a bit of a hack for hyperduel at the moment ;-)
|
|||||||
#include "sound/2151intf.h"
|
#include "sound/2151intf.h"
|
||||||
#include "sound/okim6295.h"
|
#include "sound/okim6295.h"
|
||||||
#include "sound/2413intf.h"
|
#include "sound/2413intf.h"
|
||||||
|
#include "includes/hyprduel.h"
|
||||||
|
|
||||||
#define RASTER_LINES 262
|
|
||||||
#define FIRST_VISIBLE_LINE 0
|
|
||||||
#define LAST_VISIBLE_LINE 223
|
|
||||||
|
|
||||||
/* Variables defined in video: */
|
|
||||||
extern UINT16 *hyprduel_videoregs;
|
|
||||||
extern UINT16 *hyprduel_screenctrl;
|
|
||||||
extern UINT16 *hyprduel_tiletable;
|
|
||||||
extern size_t hyprduel_tiletable_size;
|
|
||||||
extern UINT16 *hyprduel_vram_0, *hyprduel_vram_1, *hyprduel_vram_2;
|
|
||||||
extern UINT16 *hyprduel_window;
|
|
||||||
extern UINT16 hyprduel_scrollx[3][RASTER_LINES+1];
|
|
||||||
extern UINT16 hyprduel_scrolly[3][RASTER_LINES+1];
|
|
||||||
|
|
||||||
/* Functions defined in video: */
|
|
||||||
WRITE16_HANDLER( hyprduel_paletteram_w );
|
|
||||||
WRITE16_HANDLER( hyprduel_window_w );
|
|
||||||
WRITE16_HANDLER( hyprduel_vram_0_w );
|
|
||||||
WRITE16_HANDLER( hyprduel_vram_1_w );
|
|
||||||
WRITE16_HANDLER( hyprduel_vram_2_w );
|
|
||||||
|
|
||||||
VIDEO_START( hyprduel_14220 );
|
|
||||||
VIDEO_UPDATE( hyprduel );
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
Interrupts
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
|
int rastersplit;
|
||||||
static int blitter_bit;
|
static int blitter_bit;
|
||||||
static int requested_int;
|
static int requested_int;
|
||||||
static UINT16 *hypr_irq_enable;
|
static UINT16 *hypr_irq_enable;
|
||||||
static int subcpu_resetline;
|
static int subcpu_resetline;
|
||||||
|
|
||||||
static int rastersplit;
|
|
||||||
|
|
||||||
static int int_num;
|
static int int_num;
|
||||||
|
|
||||||
static UINT16 *hypr_sharedram1;
|
static UINT16 *sharedram;
|
||||||
static UINT16 *hypr_sharedram2;
|
|
||||||
static UINT16 *hypr_sub_sharedram1_1;
|
|
||||||
static UINT16 *hypr_sub_sharedram1_2;
|
|
||||||
static UINT16 *hypr_sub_sharedram2_1;
|
|
||||||
static UINT16 *hypr_sub_sharedram2_2;
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
static WRITE16_HANDLER( hypr_sharedram1_w )
|
Interrupts
|
||||||
{
|
***************************************************************************/
|
||||||
COMBINE_DATA(&hypr_sharedram1[offset]);
|
|
||||||
COMBINE_DATA(&hypr_sub_sharedram1_1[offset]);
|
|
||||||
if (offset < 0x4000/2)
|
|
||||||
COMBINE_DATA(&hypr_sub_sharedram1_2[offset]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( hypr_sharedram2_w )
|
|
||||||
{
|
|
||||||
COMBINE_DATA(&hypr_sharedram2[offset]);
|
|
||||||
COMBINE_DATA(&hypr_sub_sharedram2_1[offset]);
|
|
||||||
if ((offset >= 0x4000/2) && (offset < 0x7fff/2))
|
|
||||||
COMBINE_DATA(&hypr_sub_sharedram2_2[offset-0x4000/2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void update_irq_state(running_machine *machine)
|
static void update_irq_state(running_machine *machine)
|
||||||
{
|
{
|
||||||
@ -112,86 +63,6 @@ static void update_irq_state(running_machine *machine)
|
|||||||
cpu_set_input_line(machine->cpu[0], 3, (irq & int_num) ? ASSERT_LINE : CLEAR_LINE);
|
cpu_set_input_line(machine->cpu[0], 3, (irq & int_num) ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ16_HANDLER( hyprduel_irq_cause_r )
|
|
||||||
{
|
|
||||||
return requested_int;
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( hyprduel_irq_cause_w )
|
|
||||||
{
|
|
||||||
if (ACCESSING_BITS_0_7)
|
|
||||||
{
|
|
||||||
if (data == int_num)
|
|
||||||
requested_int &= ~(int_num & ~*hypr_irq_enable);
|
|
||||||
else
|
|
||||||
requested_int &= ~(data & *hypr_irq_enable);
|
|
||||||
|
|
||||||
update_irq_state(space->machine);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( hypr_subcpu_control_w )
|
|
||||||
{
|
|
||||||
int pc = cpu_get_pc(space->cpu);
|
|
||||||
|
|
||||||
if (data & 0x01)
|
|
||||||
{
|
|
||||||
if (!subcpu_resetline)
|
|
||||||
{
|
|
||||||
if (pc != 0x95f2)
|
|
||||||
{
|
|
||||||
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
|
|
||||||
subcpu_resetline = 1;
|
|
||||||
} else {
|
|
||||||
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
|
|
||||||
subcpu_resetline = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (subcpu_resetline == 1 && (data != 0x0c))
|
|
||||||
{
|
|
||||||
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
|
|
||||||
subcpu_resetline = 0;
|
|
||||||
if (pc == 0xbb0 || pc == 0x9d30 || pc == 0xb19c)
|
|
||||||
cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(15000)); /* sync semaphore */
|
|
||||||
}
|
|
||||||
else if (subcpu_resetline == -1)
|
|
||||||
{
|
|
||||||
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
|
|
||||||
subcpu_resetline = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( hypr_scrollreg_w )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (offset & 0x01)
|
|
||||||
{
|
|
||||||
for (i = rastersplit; i < RASTER_LINES; i++)
|
|
||||||
hyprduel_scrollx[offset>>1][i] = data;
|
|
||||||
} else {
|
|
||||||
for (i = rastersplit; i < RASTER_LINES; i++)
|
|
||||||
hyprduel_scrolly[offset>>1][i] = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static WRITE16_HANDLER( hypr_scrollreg_init_w )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < RASTER_LINES; i++)
|
|
||||||
{
|
|
||||||
hyprduel_scrollx[0][i] = data;
|
|
||||||
hyprduel_scrollx[1][i] = data;
|
|
||||||
hyprduel_scrollx[2][i] = data;
|
|
||||||
hyprduel_scrolly[0][i] = data;
|
|
||||||
hyprduel_scrolly[1][i] = data;
|
|
||||||
hyprduel_scrolly[2][i] = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static TIMER_CALLBACK( vblank_end_callback )
|
static TIMER_CALLBACK( vblank_end_callback )
|
||||||
{
|
{
|
||||||
requested_int &= ~param;
|
requested_int &= ~param;
|
||||||
@ -219,13 +90,64 @@ static INTERRUPT_GEN( hyprduel_interrupt )
|
|||||||
update_irq_state(device->machine);
|
update_irq_state(device->machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_RESET( hyprduel )
|
static READ16_HANDLER( hyprduel_irq_cause_r )
|
||||||
{
|
{
|
||||||
/* start with cpu2 halted */
|
return requested_int;
|
||||||
cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
|
|
||||||
subcpu_resetline = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WRITE16_HANDLER( hyprduel_irq_cause_w )
|
||||||
|
{
|
||||||
|
if (ACCESSING_BITS_0_7)
|
||||||
|
{
|
||||||
|
if (data == int_num)
|
||||||
|
requested_int &= ~(int_num & ~*hypr_irq_enable);
|
||||||
|
else
|
||||||
|
requested_int &= ~(data & *hypr_irq_enable);
|
||||||
|
|
||||||
|
update_irq_state(space->machine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static WRITE16_HANDLER( hypr_subcpu_control_w )
|
||||||
|
{
|
||||||
|
if (data & 0x01)
|
||||||
|
{
|
||||||
|
if (!subcpu_resetline)
|
||||||
|
{
|
||||||
|
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
|
subcpu_resetline = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((subcpu_resetline == 1) && (data != 0x0c))
|
||||||
|
{
|
||||||
|
cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
|
||||||
|
subcpu_resetline = 0;
|
||||||
|
|
||||||
|
if ((int_num == 0x02) && (cpu_get_pc(space->cpu) == 0x000bb0))
|
||||||
|
cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(8000));
|
||||||
|
else
|
||||||
|
cpu_spinuntil_int(space->cpu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static READ16_HANDLER( hypr_cpusync_r )
|
||||||
|
{
|
||||||
|
cpu_spin(space->cpu);
|
||||||
|
|
||||||
|
return sharedram[0x408/2 + offset];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static emu_timer *magerror_irq_timer;
|
||||||
|
|
||||||
|
static TIMER_CALLBACK( magerror_irq_callback )
|
||||||
|
{
|
||||||
|
cpu_set_input_line(machine->cpu[1], 1, HOLD_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Banked ROM access
|
Banked ROM access
|
||||||
@ -461,139 +383,95 @@ static WRITE16_HANDLER( hyprduel_blitter_w )
|
|||||||
Memory Maps
|
Memory Maps
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static ADDRESS_MAP_START( hyprduel_readmem, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( hyprduel_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
|
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||||
AM_RANGE(0x400000, 0x41ffff) AM_READ(SMH_RAM ) // Layer 0
|
AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(hyprduel_vram_0_w) AM_BASE(&hyprduel_vram_0) /* Layer 0 */
|
||||||
AM_RANGE(0x420000, 0x43ffff) AM_READ(SMH_RAM ) // Layer 1
|
AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(hyprduel_vram_1_w) AM_BASE(&hyprduel_vram_1) /* Layer 1 */
|
||||||
AM_RANGE(0x440000, 0x45ffff) AM_READ(SMH_RAM ) // Layer 2
|
AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(hyprduel_vram_2_w) AM_BASE(&hyprduel_vram_2) /* Layer 2 */
|
||||||
AM_RANGE(0x460000, 0x46ffff) AM_READ(hyprduel_bankedrom_r ) // Banked ROM
|
AM_RANGE(0x460000, 0x46ffff) AM_READ(hyprduel_bankedrom_r) /* Banked ROM */
|
||||||
AM_RANGE(0x470000, 0x473fff) AM_READ(SMH_RAM ) // Palette
|
AM_RANGE(0x470000, 0x473fff) AM_RAM AM_WRITE(hyprduel_paletteram_w) AM_BASE(&paletteram16) /* Palette */
|
||||||
AM_RANGE(0x474000, 0x474fff) AM_READ(SMH_RAM ) // Sprites
|
AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* Sprites */
|
||||||
AM_RANGE(0x475000, 0x477fff) AM_READ(SMH_RAM ) // (only used memory test)
|
AM_RANGE(0x475000, 0x477fff) AM_RAM /* only used memory test */
|
||||||
AM_RANGE(0x478000, 0x4787ff) AM_READ(SMH_RAM ) // Tiles Set
|
AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&hyprduel_tiletable) AM_SIZE(&hyprduel_tiletable_size) /* Tiles Set */
|
||||||
AM_RANGE(0x4788a2, 0x4788a3) AM_READ(hyprduel_irq_cause_r ) // IRQ Cause
|
AM_RANGE(0x478840, 0x47884d) AM_WRITE(hyprduel_blitter_w) AM_BASE(&hyprduel_blitter_regs) /* Tiles Blitter */
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_READ(SMH_RAM ) // (sound driver controls)
|
AM_RANGE(0x478860, 0x47886b) AM_WRITE(hyprduel_window_w) AM_BASE(&hyprduel_window) /* Tilemap Window */
|
||||||
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE")
|
AM_RANGE(0x478870, 0x47887b) AM_WRITE(hypr_scrollreg_w) /* Scroll Regs */
|
||||||
|
AM_RANGE(0x47887c, 0x47887d) AM_WRITE(hypr_scrollreg_init_w)
|
||||||
|
AM_RANGE(0x478880, 0x478881) AM_WRITENOP
|
||||||
|
AM_RANGE(0x478890, 0x478891) AM_WRITENOP
|
||||||
|
AM_RANGE(0x4788a0, 0x4788a1) AM_WRITENOP
|
||||||
|
AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(hyprduel_irq_cause_r, hyprduel_irq_cause_w) /* IRQ Cause,Acknowledge */
|
||||||
|
AM_RANGE(0x4788a4, 0x4788a5) AM_RAM AM_BASE(&hypr_irq_enable) /* IRQ Enable */
|
||||||
|
AM_RANGE(0x4788aa, 0x4788ab) AM_RAM AM_BASE(&hyprduel_rombank) /* Rom Bank */
|
||||||
|
AM_RANGE(0x4788ac, 0x4788ad) AM_RAM AM_BASE(&hyprduel_screenctrl) /* Screen Control */
|
||||||
|
AM_RANGE(0x479700, 0x479713) AM_RAM AM_BASE(&hyprduel_videoregs) /* Video Registers */
|
||||||
|
AM_RANGE(0x800000, 0x800001) AM_WRITE(hypr_subcpu_control_w)
|
||||||
|
AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE(1) AM_BASE(&sharedram)
|
||||||
|
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP
|
||||||
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
|
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
|
||||||
AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
|
AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
|
||||||
AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
|
AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM )
|
AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2)
|
||||||
|
AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE(3)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( hyprduel_writemem, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( hyprduel_map2, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM )
|
AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1) /* shadow ($c00000 - $c03fff : vector) */
|
||||||
AM_RANGE(0x400000, 0x41ffff) AM_WRITE(hyprduel_vram_0_w) AM_BASE(&hyprduel_vram_0 ) // Layer 0
|
AM_RANGE(0x004000, 0x007fff) AM_RAM AM_WRITENOP AM_SHARE(3) /* shadow ($fe4000 - $fe7fff : read only) */
|
||||||
AM_RANGE(0x420000, 0x43ffff) AM_WRITE(hyprduel_vram_1_w) AM_BASE(&hyprduel_vram_1 ) // Layer 1
|
AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff )
|
||||||
AM_RANGE(0x440000, 0x45ffff) AM_WRITE(hyprduel_vram_2_w) AM_BASE(&hyprduel_vram_2 ) // Layer 2
|
AM_RANGE(0x400004, 0x400005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
|
||||||
AM_RANGE(0x470000, 0x473fff) AM_WRITE(hyprduel_paletteram_w) AM_BASE(&paletteram16 ) // Palette
|
AM_RANGE(0x800000, 0x800001) AM_NOP
|
||||||
AM_RANGE(0x474000, 0x474fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
|
AM_RANGE(0xc00000, 0xc07fff) AM_RAM AM_SHARE(1)
|
||||||
AM_RANGE(0x475000, 0x477fff) AM_WRITE(SMH_RAM )
|
AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2)
|
||||||
AM_RANGE(0x478000, 0x4787ff) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_tiletable) AM_SIZE(&hyprduel_tiletable_size ) // Tiles Set
|
AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE(3)
|
||||||
AM_RANGE(0x478840, 0x47884d) AM_WRITE(hyprduel_blitter_w) AM_BASE(&hyprduel_blitter_regs ) // Tiles Blitter
|
|
||||||
AM_RANGE(0x478860, 0x47886b) AM_WRITE(hyprduel_window_w) AM_BASE(&hyprduel_window ) // Tilemap Window
|
|
||||||
AM_RANGE(0x478870, 0x47887b) AM_WRITE(hypr_scrollreg_w ) // Scroll Regs
|
|
||||||
AM_RANGE(0x47887c, 0x47887d) AM_WRITE(hypr_scrollreg_init_w ) // scroll regs all sets
|
|
||||||
AM_RANGE(0x478880, 0x478881) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x478890, 0x478891) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x4788a0, 0x4788a1) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x4788a2, 0x4788a3) AM_WRITE(hyprduel_irq_cause_w ) // IRQ Acknowledge
|
|
||||||
AM_RANGE(0x4788a4, 0x4788a5) AM_WRITE(SMH_RAM) AM_BASE(&hypr_irq_enable ) // IRQ Enable
|
|
||||||
AM_RANGE(0x4788aa, 0x4788ab) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_rombank ) // Rom Bank
|
|
||||||
AM_RANGE(0x4788ac, 0x4788ad) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_screenctrl ) // Screen Control
|
|
||||||
AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_videoregs ) // Video Registers
|
|
||||||
AM_RANGE(0x800000, 0x800001) AM_WRITE(hypr_subcpu_control_w )
|
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sharedram1 )
|
|
||||||
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sharedram2 )
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( hyprduel_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
|
|
||||||
AM_RANGE(0x000000, 0x003fff) AM_READ(SMH_RAM )
|
|
||||||
AM_RANGE(0x004000, 0x007fff) AM_READ(SMH_RAM )
|
|
||||||
AM_RANGE(0x400000, 0x400003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
|
|
||||||
AM_RANGE(0x400004, 0x400005) AM_DEVREAD8("oki", okim6295_r, 0x00ff )
|
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_READ(SMH_RAM )
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM )
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( hyprduel_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
|
|
||||||
AM_RANGE(0x000000, 0x003fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram1_2 ) // shadow ($c00000 - $c03fff : vector, write ok)
|
|
||||||
AM_RANGE(0x004000, 0x007fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram2_2 ) // shadow ($fe4000 - $fe7fff : read only)
|
|
||||||
AM_RANGE(0x400000, 0x400003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff )
|
|
||||||
AM_RANGE(0x400004, 0x400005) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
|
|
||||||
AM_RANGE(0x800000, 0x800001) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram1_1 ) // (sound driver)
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram2_1 )
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
/* Magical Error - video is at 8x now */
|
/* Magical Error - video is at 8x now */
|
||||||
|
|
||||||
static ADDRESS_MAP_START( magerror_readmem, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( magerror_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
|
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||||
AM_RANGE(0x800000, 0x81ffff) AM_READ(SMH_RAM ) // Layer 0
|
AM_RANGE(0x400000, 0x400001) AM_WRITE(hypr_subcpu_control_w)
|
||||||
AM_RANGE(0x820000, 0x83ffff) AM_READ(SMH_RAM ) // Layer 1
|
AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(hyprduel_vram_0_w) AM_BASE(&hyprduel_vram_0) /* Layer 0 */
|
||||||
AM_RANGE(0x840000, 0x85ffff) AM_READ(SMH_RAM ) // Layer 2
|
AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(hyprduel_vram_1_w) AM_BASE(&hyprduel_vram_1) /* Layer 1 */
|
||||||
AM_RANGE(0x860000, 0x86ffff) AM_READ(hyprduel_bankedrom_r ) // Banked ROM
|
AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(hyprduel_vram_2_w) AM_BASE(&hyprduel_vram_2) /* Layer 2 */
|
||||||
AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM ) // Palette
|
AM_RANGE(0x860000, 0x86ffff) AM_READ(hyprduel_bankedrom_r) /* Banked ROM */
|
||||||
AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM ) // Sprites
|
AM_RANGE(0x870000, 0x873fff) AM_RAM AM_WRITE(hyprduel_paletteram_w) AM_BASE(&paletteram16) /* Palette */
|
||||||
AM_RANGE(0x875000, 0x877fff) AM_READ(SMH_RAM ) // (only used memory test)
|
AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) /* Sprites */
|
||||||
AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM ) // Tiles Set
|
AM_RANGE(0x875000, 0x877fff) AM_RAM /* only used memory test */
|
||||||
AM_RANGE(0x8788a2, 0x8788a3) AM_READ(hyprduel_irq_cause_r ) // IRQ Cause
|
AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&hyprduel_tiletable) AM_SIZE(&hyprduel_tiletable_size) /* Tiles Set */
|
||||||
AM_RANGE(0xc00000, 0xc1ffff) AM_READ(SMH_RAM ) // (sound driver controls) ?
|
AM_RANGE(0x878840, 0x87884d) AM_WRITE(hyprduel_blitter_w) AM_BASE(&hyprduel_blitter_regs) /* Tiles Blitter */
|
||||||
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE")
|
AM_RANGE(0x878860, 0x87886b) AM_WRITE(hyprduel_window_w) AM_BASE(&hyprduel_window) /* Tilemap Window */
|
||||||
|
AM_RANGE(0x878870, 0x87887b) AM_WRITE(hypr_scrollreg_w) /* Scroll Regs */
|
||||||
|
AM_RANGE(0x87887c, 0x87887d) AM_WRITE(hypr_scrollreg_init_w)
|
||||||
|
AM_RANGE(0x878880, 0x878881) AM_WRITENOP
|
||||||
|
AM_RANGE(0x878890, 0x878891) AM_WRITENOP
|
||||||
|
AM_RANGE(0x8788a0, 0x8788a1) AM_WRITENOP
|
||||||
|
AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(hyprduel_irq_cause_r, hyprduel_irq_cause_w) /* IRQ Cause, Acknowledge */
|
||||||
|
AM_RANGE(0x8788a4, 0x8788a5) AM_RAM AM_BASE(&hypr_irq_enable) /* IRQ Enable */
|
||||||
|
AM_RANGE(0x8788aa, 0x8788ab) AM_RAM AM_BASE(&hyprduel_rombank) /* Rom Bank */
|
||||||
|
AM_RANGE(0x8788ac, 0x8788ad) AM_RAM AM_BASE(&hyprduel_screenctrl) /* Screen Control */
|
||||||
|
AM_RANGE(0x879700, 0x879713) AM_RAM AM_BASE(&hyprduel_videoregs) /* Video Registers */
|
||||||
|
AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE(1) AM_BASE(&sharedram)
|
||||||
|
AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("SERVICE") AM_WRITENOP
|
||||||
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
|
AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW")
|
||||||
AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
|
AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("P1_P2")
|
||||||
AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
|
AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("SYSTEM")
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM )
|
AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2)
|
||||||
|
AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE(3)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( magerror_writemem, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( magerror_map2, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM )
|
AM_RANGE(0x000000, 0x003fff) AM_RAM AM_SHARE(1) /* shadow ($c00000 - $c03fff : vector) */
|
||||||
AM_RANGE(0x800000, 0x81ffff) AM_WRITE(hyprduel_vram_0_w) AM_BASE(&hyprduel_vram_0 ) // Layer 0
|
AM_RANGE(0x004000, 0x007fff) AM_RAM AM_WRITENOP AM_SHARE(3) /* shadow ($fe4000 - $fe7fff : read only) */
|
||||||
AM_RANGE(0x820000, 0x83ffff) AM_WRITE(hyprduel_vram_1_w) AM_BASE(&hyprduel_vram_1 ) // Layer 1
|
AM_RANGE(0x400000, 0x400003) AM_NOP
|
||||||
AM_RANGE(0x840000, 0x85ffff) AM_WRITE(hyprduel_vram_2_w) AM_BASE(&hyprduel_vram_2 ) // Layer 2
|
AM_RANGE(0x800000, 0x800003) AM_READNOP AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
|
||||||
AM_RANGE(0x870000, 0x873fff) AM_WRITE(hyprduel_paletteram_w) AM_BASE(&paletteram16 ) // Palette
|
AM_RANGE(0x800004, 0x800005) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
|
||||||
AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size ) // Sprites
|
AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE(1)
|
||||||
AM_RANGE(0x875000, 0x877fff) AM_WRITE(SMH_RAM )
|
AM_RANGE(0xfe0000, 0xfe3fff) AM_RAM AM_SHARE(2)
|
||||||
AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_tiletable) AM_SIZE(&hyprduel_tiletable_size ) // Tiles Set
|
AM_RANGE(0xfe4000, 0xffffff) AM_RAM AM_SHARE(3)
|
||||||
AM_RANGE(0x878840, 0x87884d) AM_WRITE(hyprduel_blitter_w) AM_BASE(&hyprduel_blitter_regs ) // Tiles Blitter
|
|
||||||
AM_RANGE(0x878860, 0x87886b) AM_WRITE(hyprduel_window_w) AM_BASE(&hyprduel_window ) // Tilemap Window
|
|
||||||
AM_RANGE(0x878870, 0x87887b) AM_WRITE(hypr_scrollreg_w ) // Scroll Regs
|
|
||||||
AM_RANGE(0x87887c, 0x87887d) AM_WRITE(hypr_scrollreg_init_w ) // scroll regs all sets
|
|
||||||
AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x8788a0, 0x8788a1) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(hyprduel_irq_cause_w ) // IRQ Acknowledge
|
|
||||||
AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&hypr_irq_enable ) // IRQ Enable
|
|
||||||
AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_rombank ) // Rom Bank
|
|
||||||
AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_screenctrl ) // Screen Control
|
|
||||||
AM_RANGE(0x879700, 0x879713) AM_WRITE(SMH_RAM) AM_BASE(&hyprduel_videoregs ) // Video Registers
|
|
||||||
AM_RANGE(0x400000, 0x400001) AM_WRITE(hypr_subcpu_control_w )
|
|
||||||
AM_RANGE(0xc00000, 0xc1ffff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sharedram1 ) //?
|
|
||||||
AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sharedram2 )
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( magerror_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
|
|
||||||
AM_RANGE(0x000000, 0x003fff) AM_READ(SMH_RAM )
|
|
||||||
AM_RANGE(0x004000, 0x007fff) AM_READ(SMH_RAM )
|
|
||||||
// AM_RANGE(0x400000, 0x400003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
|
|
||||||
AM_RANGE(0x400004, 0x400005) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
|
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_READ(SMH_RAM )
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM )
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( magerror_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
|
|
||||||
AM_RANGE(0x000000, 0x003fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram1_2 ) // shadow ($c00000 - $c03fff : vector, write ok)
|
|
||||||
AM_RANGE(0x004000, 0x007fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram2_2 ) // shadow ($fe4000 - $fe7fff : read only)
|
|
||||||
AM_RANGE(0x400000, 0x400003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
|
|
||||||
AM_RANGE(0x400004, 0x400005) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
|
|
||||||
AM_RANGE(0x800000, 0x800001) AM_WRITE(SMH_NOP )
|
|
||||||
AM_RANGE(0xc00000, 0xc07fff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram1_1 ) // (sound driver)
|
|
||||||
AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&hypr_sub_sharedram2_1 )
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Input Ports
|
Input Ports
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
@ -650,8 +528,8 @@ static INPUT_PORTS_START( hyprduel )
|
|||||||
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x0080, 0x0080, "Start Up Mode" )
|
PORT_DIPNAME( 0x0080, 0x0080, "Start Up Mode" )
|
||||||
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x0080, "Game Mode" )
|
||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, "Test Mode" )
|
||||||
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
|
||||||
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
@ -715,15 +593,27 @@ static const ym2151_interface ym2151_config =
|
|||||||
Machine Drivers
|
Machine Drivers
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
static MACHINE_RESET( hyprduel )
|
||||||
|
{
|
||||||
|
/* start with cpu2 halted */
|
||||||
|
cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
|
subcpu_resetline = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static MACHINE_START( magerror )
|
||||||
|
{
|
||||||
|
timer_adjust_periodic(magerror_irq_timer, attotime_zero, 0, ATTOTIME_IN_HZ(896)); /* ? */
|
||||||
|
}
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( hyprduel )
|
static MACHINE_DRIVER_START( hyprduel )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MDRV_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */
|
MDRV_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */
|
||||||
MDRV_CPU_PROGRAM_MAP(hyprduel_readmem,hyprduel_writemem)
|
MDRV_CPU_PROGRAM_MAP(hyprduel_map,0)
|
||||||
MDRV_CPU_VBLANK_INT_HACK(hyprduel_interrupt,RASTER_LINES)
|
MDRV_CPU_VBLANK_INT_HACK(hyprduel_interrupt,RASTER_LINES)
|
||||||
|
|
||||||
MDRV_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */
|
MDRV_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */
|
||||||
MDRV_CPU_PROGRAM_MAP(hyprduel_readmem2,hyprduel_writemem2)
|
MDRV_CPU_PROGRAM_MAP(hyprduel_map2,0)
|
||||||
|
|
||||||
MDRV_MACHINE_RESET(hyprduel)
|
MDRV_MACHINE_RESET(hyprduel)
|
||||||
|
|
||||||
@ -760,12 +650,13 @@ static MACHINE_DRIVER_START( magerror )
|
|||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MDRV_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */
|
MDRV_CPU_ADD("maincpu", M68000,20000000/2) /* 10MHz */
|
||||||
MDRV_CPU_PROGRAM_MAP(magerror_readmem,magerror_writemem)
|
MDRV_CPU_PROGRAM_MAP(magerror_map,0)
|
||||||
MDRV_CPU_VBLANK_INT_HACK(hyprduel_interrupt,RASTER_LINES)
|
MDRV_CPU_VBLANK_INT_HACK(hyprduel_interrupt,RASTER_LINES)
|
||||||
|
|
||||||
MDRV_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */
|
MDRV_CPU_ADD("sub", M68000,20000000/2) /* 10MHz */
|
||||||
MDRV_CPU_PROGRAM_MAP(magerror_readmem2,magerror_writemem2)
|
MDRV_CPU_PROGRAM_MAP(magerror_map2,0)
|
||||||
|
|
||||||
|
MDRV_MACHINE_START(magerror)
|
||||||
MDRV_MACHINE_RESET(hyprduel)
|
MDRV_MACHINE_RESET(hyprduel)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
@ -786,8 +677,8 @@ static MACHINE_DRIVER_START( magerror )
|
|||||||
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||||
|
|
||||||
MDRV_SOUND_ADD("ym", YM2413, 3579545)
|
MDRV_SOUND_ADD("ym", YM2413, 3579545)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.57)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.00)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.57)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.00)
|
||||||
|
|
||||||
MDRV_SOUND_ADD("oki", OKIM6295, 4000000/16/16*132)
|
MDRV_SOUND_ADD("oki", OKIM6295, 4000000/16/16*132)
|
||||||
MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
|
MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
|
||||||
@ -799,38 +690,6 @@ MACHINE_DRIVER_END
|
|||||||
ROMs Loading
|
ROMs Loading
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static DRIVER_INIT( hyprduel )
|
|
||||||
{
|
|
||||||
int i, len = memory_region_length(machine, "gfx1");
|
|
||||||
UINT8 *ROM = memory_region(machine, "gfx1");
|
|
||||||
|
|
||||||
/*
|
|
||||||
Tiles can be either 4-bit or 8-bit, and both depths can be used at the same
|
|
||||||
time. The transparent pen is the last one, that is 15 or 255. To make
|
|
||||||
tilemap.c handle that, we invert gfx data so the transparent pen becomes 0
|
|
||||||
for both tile depths.
|
|
||||||
*/
|
|
||||||
for (i = 0;i < len;i++)
|
|
||||||
ROM[i] ^= 0xff;
|
|
||||||
|
|
||||||
// ROM[(0x174b9*0x20)+0x1f] |= 0x0e; /* I */
|
|
||||||
// ROM[(0x174e9*0x20)+0x1f] |= 0x0e;
|
|
||||||
|
|
||||||
memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc07fff, 0, 0, hypr_sharedram1_w);
|
|
||||||
memory_install_write16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc07fff, 0, 0, hypr_sharedram1_w);
|
|
||||||
memory_install_write16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x000000, 0x003fff, 0, 0, hypr_sharedram1_w);
|
|
||||||
|
|
||||||
memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe0000, 0xffffff, 0, 0, hypr_sharedram2_w);
|
|
||||||
memory_install_write16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfe0000, 0xffffff, 0, 0, hypr_sharedram2_w);
|
|
||||||
|
|
||||||
requested_int = 0x00;
|
|
||||||
blitter_bit = 2;
|
|
||||||
*hypr_irq_enable = 0xff;
|
|
||||||
|
|
||||||
int_num = strcmp(machine->gamedrv->name, "magerror")?2:1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ROM_START( hyprduel )
|
ROM_START( hyprduel )
|
||||||
ROM_REGION( 0x80000, "maincpu", 0 )
|
ROM_REGION( 0x80000, "maincpu", 0 )
|
||||||
ROM_LOAD16_BYTE( "24.u24", 0x000000, 0x40000, CRC(c7402722) SHA1(e385676cdcee65a3ddf07791d82a1fe83ba1b3e2) ) /* Also silk screened as position 10 */
|
ROM_LOAD16_BYTE( "24.u24", 0x000000, 0x40000, CRC(c7402722) SHA1(e385676cdcee65a3ddf07791d82a1fe83ba1b3e2) ) /* Also silk screened as position 10 */
|
||||||
@ -876,7 +735,46 @@ ROM_START( magerror )
|
|||||||
ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(2e62bca8) SHA1(191fff11186dbbc1d9d9f3ba1b6e17c38a7d2d1d) ) /* Also silk screened as position 11 */
|
ROM_LOAD( "97.u97", 0x00000, 0x40000, CRC(2e62bca8) SHA1(191fff11186dbbc1d9d9f3ba1b6e17c38a7d2d1d) ) /* Also silk screened as position 11 */
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
GAME( 1993, hyprduel, 0, hyprduel, hyprduel, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 1)", 0 )
|
|
||||||
GAME( 1993, hyprdelj, hyprduel, hyprduel, hyprduel, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 2)", 0 )
|
|
||||||
|
|
||||||
GAME( 199?, magerror, 0, magerror, hyprduel, hyprduel, ROT0, "Technosoft / Jaleco", "Magical Error wo Sagase", GAME_NOT_WORKING )
|
static DRIVER_INIT( hyprduel )
|
||||||
|
{
|
||||||
|
int i, len = memory_region_length(machine, "gfx1");
|
||||||
|
UINT8 *ROM = memory_region(machine, "gfx1");
|
||||||
|
|
||||||
|
/*
|
||||||
|
Tiles can be either 4-bit or 8-bit, and both depths can be used at the same
|
||||||
|
time. The transparent pen is the last one, that is 15 or 255. To make
|
||||||
|
tilemap.c handle that, we invert gfx data so the transparent pen becomes 0
|
||||||
|
for both tile depths.
|
||||||
|
*/
|
||||||
|
for (i=0; i<len; i++)
|
||||||
|
ROM[i] ^= 0xff;
|
||||||
|
|
||||||
|
requested_int = 0x00;
|
||||||
|
blitter_bit = 2;
|
||||||
|
*hypr_irq_enable = 0xff;
|
||||||
|
|
||||||
|
int_num = 0x02;
|
||||||
|
|
||||||
|
memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00408, 0xc0040b, 0, 0, hypr_cpusync_r);
|
||||||
|
|
||||||
|
/* Set up save state */
|
||||||
|
state_save_register_global(machine, rastersplit);
|
||||||
|
state_save_register_global(machine, blitter_bit);
|
||||||
|
state_save_register_global(machine, requested_int);
|
||||||
|
state_save_register_global(machine, subcpu_resetline);
|
||||||
|
state_save_register_global(machine, int_num);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DRIVER_INIT( magerror )
|
||||||
|
{
|
||||||
|
DRIVER_INIT_CALL(hyprduel);
|
||||||
|
|
||||||
|
int_num = 0x01;
|
||||||
|
magerror_irq_timer = timer_alloc(machine, magerror_irq_callback, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GAME( 1993, hyprduel, 0, hyprduel, hyprduel, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 1)", GAME_SUPPORTS_SAVE )
|
||||||
|
GAME( 1993, hyprdelj, hyprduel, hyprduel, hyprduel, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 2)", GAME_SUPPORTS_SAVE )
|
||||||
|
GAME( 1994, magerror, 0, magerror, hyprduel, magerror, ROT0, "Technosoft / Jaleco", "Magical Error wo Sagase", GAME_SUPPORTS_SAVE )
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
driver by Bryan McPhail
|
driver by Bryan McPhail
|
||||||
|
|
||||||
modified by Hau
|
modified by Hau
|
||||||
03/26/2009
|
03/27/2009
|
||||||
spthx to Unagi,rassy,hina,nori,Tobikage,Tommy,Crimson,yasuken,cupmen,zoo
|
spthx to Unagi,rassy,hina,nori,Tobikage,Tommy,Crimson,yasuken,cupmen,zoo
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
@ -51,8 +51,6 @@ So this is the correct behavior of real hardware, not an emulation bug.
|
|||||||
#include "sound/k051649.h"
|
#include "sound/k051649.h"
|
||||||
#include "includes/nemesis.h"
|
#include "includes/nemesis.h"
|
||||||
|
|
||||||
static UINT16 *ram;
|
|
||||||
static UINT16 *ram2;
|
|
||||||
|
|
||||||
int nemesis_irq_on = 0;
|
int nemesis_irq_on = 0;
|
||||||
int nemesis_irq2_on = 0;
|
int nemesis_irq2_on = 0;
|
||||||
@ -286,12 +284,11 @@ static WRITE8_DEVICE_HANDLER( city_sound_bank_w )
|
|||||||
static ADDRESS_MAP_START( nemesis_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( nemesis_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x050000, 0x050fff) AM_RAM
|
AM_RANGE(0x050000, 0x051fff) AM_RAM
|
||||||
AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x050000, 0x0503ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x050400, 0x0507ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x050400, 0x0507ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x050f00, 0x050f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x050f00, 0x050f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x050f80, 0x050fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x050f80, 0x050fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x051000, 0x051fff) AM_WRITENOP /* used, but written to with 0's */
|
|
||||||
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
||||||
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
||||||
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
@ -312,20 +309,19 @@ static ADDRESS_MAP_START( nemesis_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
||||||
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* not used irq */
|
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* not used irq */
|
||||||
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITENOP /* not used irq */
|
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITENOP /* not used irq */
|
||||||
AM_RANGE(0x060000, 0x067fff) AM_RAM AM_BASE(&ram) /* WORK RAM */
|
AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
|
AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
|
||||||
AM_RANGE(0x010000, 0x01ffff) AM_RAM AM_BASE(&ram)
|
AM_RANGE(0x010000, 0x01ffff) AM_RAM
|
||||||
AM_RANGE(0x020000, 0x0287ff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
|
AM_RANGE(0x020000, 0x0287ff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
|
||||||
AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x050000, 0x050fff) AM_RAM
|
AM_RANGE(0x050000, 0x051fff) AM_RAM
|
||||||
AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x050000, 0x0503ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x050400, 0x0507ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x050400, 0x0507ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x050f00, 0x050f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x050f00, 0x050f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x050f80, 0x050fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x050f80, 0x050fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x051000, 0x051fff) AM_WRITENOP /* used, but written to with 0's */
|
|
||||||
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
||||||
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
||||||
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
@ -347,19 +343,18 @@ static ADDRESS_MAP_START( gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
||||||
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* IRQ acknowledge??? */
|
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* IRQ acknowledge??? */
|
||||||
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITE(&gx400_irq4_enable_word_w) /* ?? */
|
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITE(&gx400_irq4_enable_word_w) /* ?? */
|
||||||
AM_RANGE(0x060000, 0x07ffff) AM_RAM AM_BASE(&ram2)
|
AM_RANGE(0x060000, 0x07ffff) AM_RAM /* WORK RAM */
|
||||||
AM_RANGE(0x080000, 0x0bffff) AM_ROM
|
AM_RANGE(0x080000, 0x0bffff) AM_ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( konamigt_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( konamigt_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x050000, 0x050fff) AM_RAM
|
AM_RANGE(0x050000, 0x051fff) AM_RAM
|
||||||
AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x050000, 0x0503ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x050400, 0x0507ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x050400, 0x0507ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x050f00, 0x050f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x050f00, 0x050f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x050f80, 0x050fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x050f80, 0x050fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x051000, 0x051fff) AM_WRITENOP /* used, but written to with 0's */
|
|
||||||
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
||||||
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
||||||
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
@ -380,21 +375,20 @@ static ADDRESS_MAP_START( konamigt_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
||||||
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* not used irq */
|
AM_RANGE(0x05e008, 0x05e009) AM_WRITENOP /* not used irq */
|
||||||
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITENOP /* not used irq */
|
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITENOP /* not used irq */
|
||||||
AM_RANGE(0x060000, 0x067fff) AM_RAM AM_BASE(&ram) /* WORK RAM */
|
AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
|
||||||
AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
|
AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( rf2_gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( rf2_gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
|
AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
|
||||||
AM_RANGE(0x010000, 0x01ffff) AM_RAM AM_BASE(&ram2)
|
AM_RANGE(0x010000, 0x01ffff) AM_RAM
|
||||||
AM_RANGE(0x020000, 0x0287ff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
|
AM_RANGE(0x020000, 0x0287ff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
|
||||||
AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x050000, 0x050fff) AM_RAM
|
AM_RANGE(0x050000, 0x051fff) AM_RAM
|
||||||
AM_RANGE(0x050000, 0x0503ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x050000, 0x0503ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x050400, 0x0507ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x050400, 0x0507ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x050f00, 0x050f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x050f00, 0x050f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x050f80, 0x050fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x050f80, 0x050fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x051000, 0x051fff) AM_WRITENOP /* used, but written to with 0's */
|
|
||||||
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_BASE(&nemesis_videoram1) /* VRAM */
|
||||||
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
||||||
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
@ -415,7 +409,7 @@ static ADDRESS_MAP_START( rf2_gx400_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
AM_RANGE(0x05e006, 0x05e007) AM_WRITE(nemesis_gfx_flipy_word_w)
|
||||||
AM_RANGE(0x05e008, 0x05e009) AM_WRITE(SMH_NOP) /* IRQ acknowledge??? */
|
AM_RANGE(0x05e008, 0x05e009) AM_WRITE(SMH_NOP) /* IRQ acknowledge??? */
|
||||||
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITE(&gx400_irq4_enable_word_w) /* ?? */
|
AM_RANGE(0x05e00e, 0x05e00f) AM_WRITE(&gx400_irq4_enable_word_w) /* ?? */
|
||||||
AM_RANGE(0x060000, 0x067fff) AM_RAM AM_BASE(&ram) /* WORK RAM */
|
AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
|
||||||
AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
|
AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
|
||||||
AM_RANGE(0x080000, 0x0bffff) AM_ROM
|
AM_RANGE(0x080000, 0x0bffff) AM_ROM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -459,7 +453,7 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( salamand_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( salamand_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||||
AM_RANGE(0x080000, 0x087fff) AM_RAM AM_BASE(&ram)
|
AM_RANGE(0x080000, 0x087fff) AM_RAM
|
||||||
AM_RANGE(0x090000, 0x091fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
AM_RANGE(0x090000, 0x091fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
||||||
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
|
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
|
||||||
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(nemesis_soundlatch_word_w)
|
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(nemesis_soundlatch_word_w)
|
||||||
@ -476,16 +470,16 @@ static ADDRESS_MAP_START( salamand_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x180000, 0x180fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
AM_RANGE(0x180000, 0x180fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
||||||
AM_RANGE(0x190000, 0x191fff) AM_RAM
|
AM_RANGE(0x190000, 0x191fff) AM_RAM
|
||||||
AM_RANGE(0x190000, 0x1903ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x190000, 0x1903ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x190400, 0x1907ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x190400, 0x1907ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x190f00, 0x190f7f) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x190f00, 0x190f7f) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x190f80, 0x190fff) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x190f80, 0x190fff) AM_BASE(&nemesis_yscroll2)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( blkpnthr_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( blkpnthr_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||||
AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
||||||
AM_RANGE(0x090000, 0x097fff) AM_RAM AM_BASE(&ram)
|
AM_RANGE(0x090000, 0x097fff) AM_RAM
|
||||||
AM_RANGE(0x0a0000, 0x0a0001) AM_RAM AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
|
AM_RANGE(0x0a0000, 0x0a0001) AM_RAM AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
|
||||||
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(nemesis_soundlatch_word_w)
|
AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(nemesis_soundlatch_word_w)
|
||||||
AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
|
AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
|
||||||
@ -500,16 +494,16 @@ static ADDRESS_MAP_START( blkpnthr_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_BASE(&nemesis_videoram2)
|
||||||
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x180000, 0x181fff) AM_RAM
|
AM_RANGE(0x180000, 0x181fff) AM_RAM
|
||||||
AM_RANGE(0x180000, 0x1803ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x180000, 0x1803ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x180400, 0x1807ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x180400, 0x1807ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x180f00, 0x180f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x180f00, 0x180f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x180f80, 0x180fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x180f80, 0x180fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x190000, 0x190fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
AM_RANGE(0x190000, 0x190fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( citybomb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( citybomb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
||||||
AM_RANGE(0x080000, 0x087fff) AM_RAM AM_BASE(&ram)
|
AM_RANGE(0x080000, 0x087fff) AM_RAM
|
||||||
AM_RANGE(0x0e0000, 0x0e1fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
AM_RANGE(0x0e0000, 0x0e1fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
||||||
AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
|
AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
|
||||||
AM_RANGE(0x0f0002, 0x0f0003) AM_READ_PORT("IN2")
|
AM_RANGE(0x0f0002, 0x0f0003) AM_READ_PORT("IN2")
|
||||||
@ -527,16 +521,16 @@ static ADDRESS_MAP_START( citybomb_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x212000, 0x212fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x212000, 0x212fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
AM_RANGE(0x213000, 0x213fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_BASE(&nemesis_colorram2)
|
AM_RANGE(0x213000, 0x213fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_BASE(&nemesis_colorram2)
|
||||||
AM_RANGE(0x300000, 0x301fff) AM_RAM
|
AM_RANGE(0x300000, 0x301fff) AM_RAM
|
||||||
AM_RANGE(0x300000, 0x3003ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x300000, 0x3003ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x300400, 0x3007ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x300400, 0x3007ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x300f00, 0x300f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x300f00, 0x300f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x300f80, 0x300fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x300f80, 0x300fff) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x310000, 0x310fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
AM_RANGE(0x310000, 0x310fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( nyanpani_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( nyanpani_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
||||||
AM_RANGE(0x040000, 0x047fff) AM_RAM AM_BASE(&ram)
|
AM_RANGE(0x040000, 0x047fff) AM_RAM
|
||||||
AM_RANGE(0x060000, 0x061fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
AM_RANGE(0x060000, 0x061fff) AM_RAM_WRITE(salamander_palette_word_w) AM_BASE(&paletteram16)
|
||||||
AM_RANGE(0x100000, 0x13ffff) AM_ROM
|
AM_RANGE(0x100000, 0x13ffff) AM_ROM
|
||||||
AM_RANGE(0x070000, 0x070001) AM_READ_PORT("DSW1")
|
AM_RANGE(0x070000, 0x070001) AM_READ_PORT("DSW1")
|
||||||
@ -554,10 +548,10 @@ static ADDRESS_MAP_START( nyanpani_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x210000, 0x21ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x210000, 0x21ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x300000, 0x300fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
AM_RANGE(0x300000, 0x300fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* more sprite ram ??? */
|
||||||
AM_RANGE(0x310000, 0x311fff) AM_RAM
|
AM_RANGE(0x310000, 0x311fff) AM_RAM
|
||||||
AM_RANGE(0x310000, 0x3103ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x310000, 0x3103ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x310400, 0x3107ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x310400, 0x3107ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x310f00, 0x310f7f) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x310f00, 0x310f7f) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x310f80, 0x310fff) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x310f80, 0x310fff) AM_BASE(&nemesis_yscroll1)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static READ8_HANDLER( wd_r )
|
static READ8_HANDLER( wd_r )
|
||||||
@ -625,12 +619,11 @@ static ADDRESS_MAP_START( hcrash_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_BASE(&nemesis_colorram1)
|
||||||
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_characterram_word_w) AM_BASE(&nemesis_characterram) AM_SIZE(&nemesis_characterram_size)
|
||||||
AM_RANGE(0x180000, 0x180fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
|
AM_RANGE(0x180000, 0x180fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
|
||||||
AM_RANGE(0x190000, 0x1903ff) AM_RAM AM_BASE(&nemesis_xscroll2)
|
AM_RANGE(0x190000, 0x191fff) AM_RAM
|
||||||
AM_RANGE(0x190400, 0x1907ff) AM_RAM AM_BASE(&nemesis_xscroll1)
|
AM_RANGE(0x190000, 0x1903ff) AM_BASE(&nemesis_xscroll2)
|
||||||
AM_RANGE(0x190800, 0x190eff) AM_RAM /* not used */
|
AM_RANGE(0x190400, 0x1907ff) AM_BASE(&nemesis_xscroll1)
|
||||||
AM_RANGE(0x190f00, 0x190f7f) AM_RAM AM_BASE(&nemesis_yscroll2)
|
AM_RANGE(0x190f00, 0x190f7f) AM_BASE(&nemesis_yscroll1)
|
||||||
AM_RANGE(0x190f80, 0x190fff) AM_RAM AM_BASE(&nemesis_yscroll1)
|
AM_RANGE(0x190f80, 0x190fff) AM_BASE(&nemesis_yscroll2)
|
||||||
AM_RANGE(0x191000, 0x191fff) AM_RAM /* not used */
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
/* based on driver from video/metro.c by Luca Elia */
|
/* based on driver from video/metro.c by Luca Elia */
|
||||||
/* modified by Eisuke Watanabe */
|
/* modified by Hau */
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
@ -55,13 +55,10 @@ Note: if MAME_DEBUG is defined, pressing Z with:
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
|
#include "includes/hyprduel.h"
|
||||||
|
|
||||||
#define RASTER_LINES 262
|
|
||||||
#define FIRST_VISIBLE_LINE 0
|
|
||||||
#define LAST_VISIBLE_LINE 223
|
|
||||||
|
|
||||||
/* Variables that driver has access to: */
|
/* Variables that driver has access to: */
|
||||||
|
|
||||||
UINT16 *hyprduel_videoregs;
|
UINT16 *hyprduel_videoregs;
|
||||||
UINT16 *hyprduel_screenctrl;
|
UINT16 *hyprduel_screenctrl;
|
||||||
UINT16 *hyprduel_tiletable;
|
UINT16 *hyprduel_tiletable;
|
||||||
@ -69,12 +66,14 @@ size_t hyprduel_tiletable_size;
|
|||||||
UINT16 *hyprduel_vram_0,*hyprduel_vram_1,*hyprduel_vram_2;
|
UINT16 *hyprduel_vram_0,*hyprduel_vram_1,*hyprduel_vram_2;
|
||||||
UINT16 *hyprduel_window;
|
UINT16 *hyprduel_window;
|
||||||
|
|
||||||
UINT16 hyprduel_scrollx[3][RASTER_LINES+1];
|
static UINT16 hyprduel_scrollx[3][RASTER_LINES+1];
|
||||||
UINT16 hyprduel_scrolly[3][RASTER_LINES+1];
|
static UINT16 hyprduel_scrolly[3][RASTER_LINES+1];
|
||||||
|
|
||||||
static UINT16 *hypr_tiletable_old;
|
static UINT16 *hypr_tiletable_old;
|
||||||
static UINT8 *dirtyindex;
|
static UINT8 *dirtyindex;
|
||||||
|
|
||||||
|
static int hyprduel_sprite_xoffs;
|
||||||
|
static int hyprduel_sprite_yoffs;
|
||||||
|
static int hyprduel_sprite_yoffs_magerror;
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
Palette GGGGGRRRRRBBBBBx
|
Palette GGGGGRRRRRBBBBBx
|
||||||
@ -299,9 +298,6 @@ WRITE16_HANDLER( hyprduel_window_w )
|
|||||||
the tile's sizes to be known at startup - which we don't!
|
the tile's sizes to be known at startup - which we don't!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int hyprduel_sprite_xoffs, hyprduel_sprite_yoffs;
|
|
||||||
|
|
||||||
|
|
||||||
static void alloc_empty_tiles(void)
|
static void alloc_empty_tiles(void)
|
||||||
{
|
{
|
||||||
int code,i;
|
int code,i;
|
||||||
@ -330,6 +326,22 @@ VIDEO_START( hyprduel_14220 )
|
|||||||
tilemap_set_scrolldx(bg_tilemap[0], 0, 0);
|
tilemap_set_scrolldx(bg_tilemap[0], 0, 0);
|
||||||
tilemap_set_scrolldx(bg_tilemap[1], 0, 0);
|
tilemap_set_scrolldx(bg_tilemap[1], 0, 0);
|
||||||
tilemap_set_scrolldx(bg_tilemap[2], 0, 0);
|
tilemap_set_scrolldx(bg_tilemap[2], 0, 0);
|
||||||
|
|
||||||
|
if (!strcmp(machine->gamedrv->name, "magerror"))
|
||||||
|
hyprduel_sprite_yoffs_magerror = 2;
|
||||||
|
else
|
||||||
|
hyprduel_sprite_yoffs_magerror = 0;
|
||||||
|
|
||||||
|
/* Set up save state */
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrollx[0]);
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrollx[1]);
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrollx[2]);
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrolly[0]);
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrolly[1]);
|
||||||
|
state_save_register_global_array(machine, hyprduel_scrolly[2]);
|
||||||
|
state_save_register_global(machine, hyprduel_sprite_xoffs);
|
||||||
|
state_save_register_global(machine, hyprduel_sprite_yoffs);
|
||||||
|
state_save_register_global(machine, hyprduel_sprite_yoffs_magerror);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
@ -361,7 +373,34 @@ VIDEO_START( hyprduel_14220 )
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
WRITE16_HANDLER( hypr_scrollreg_w )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (offset & 0x01)
|
||||||
|
{
|
||||||
|
for (i = rastersplit; i < RASTER_LINES; i++)
|
||||||
|
hyprduel_scrollx[offset>>1][i] = data;
|
||||||
|
} else {
|
||||||
|
for (i = rastersplit; i < RASTER_LINES; i++)
|
||||||
|
hyprduel_scrolly[offset>>1][i] = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_HANDLER( hypr_scrollreg_init_w )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < RASTER_LINES; i++)
|
||||||
|
{
|
||||||
|
hyprduel_scrollx[0][i] = data;
|
||||||
|
hyprduel_scrollx[1][i] = data;
|
||||||
|
hyprduel_scrollx[2][i] = data;
|
||||||
|
hyprduel_scrolly[0][i] = data;
|
||||||
|
hyprduel_scrolly[1][i] = data;
|
||||||
|
hyprduel_scrolly[2][i] = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
@ -607,7 +646,7 @@ VIDEO_UPDATE( hyprduel )
|
|||||||
}
|
}
|
||||||
|
|
||||||
hyprduel_sprite_xoffs = hyprduel_videoregs[0x06/2] - video_screen_get_width(screen) / 2;
|
hyprduel_sprite_xoffs = hyprduel_videoregs[0x06/2] - video_screen_get_width(screen) / 2;
|
||||||
hyprduel_sprite_yoffs = hyprduel_videoregs[0x04/2] - video_screen_get_height(screen) / 2;
|
hyprduel_sprite_yoffs = hyprduel_videoregs[0x04/2] - video_screen_get_height(screen) / 2 + hyprduel_sprite_yoffs_magerror;
|
||||||
|
|
||||||
/* The background color is selected by a register */
|
/* The background color is selected by a register */
|
||||||
bitmap_fill(priority_bitmap,cliprect,0);
|
bitmap_fill(priority_bitmap,cliprect,0);
|
||||||
|
@ -435,8 +435,8 @@ VIDEO_UPDATE( nemesis )
|
|||||||
if (flipscreen)
|
if (flipscreen)
|
||||||
offset_x = (offs + 0x20) & 0x3f;
|
offset_x = (offs + 0x20) & 0x3f;
|
||||||
|
|
||||||
tilemap_set_scrolly( background, offs, nemesis_yscroll1[offset_x] );
|
tilemap_set_scrolly( background, offs, nemesis_yscroll2[offset_x] );
|
||||||
tilemap_set_scrolly( foreground, offs, nemesis_yscroll2[offset_x] );
|
tilemap_set_scrolly( foreground, offs, nemesis_yscroll1[offset_x] );
|
||||||
}
|
}
|
||||||
|
|
||||||
for (offs = cliprect->min_y; offs <= cliprect->max_y; offs++)
|
for (offs = cliprect->min_y; offs <= cliprect->max_y; offs++)
|
||||||
|
Loading…
Reference in New Issue
Block a user