mirror of
https://github.com/holub/mame
synced 2025-05-21 05:08:54 +03:00
Kaneko changes part 2
- some improvements to Jackie Chan video
This commit is contained in:
parent
9d48421e71
commit
61a50d7642
@ -214,6 +214,11 @@ static UINT32* jchan_sprite_regs32_2;
|
|||||||
|
|
||||||
static int jchan_irq_sub_enable;
|
static int jchan_irq_sub_enable;
|
||||||
|
|
||||||
|
static UINT16 *jchan_spriteram_1;
|
||||||
|
static UINT16* jchan_sprregs_1;
|
||||||
|
static UINT16 *jchan_spriteram_2;
|
||||||
|
static UINT16* jchan_sprregs_2;
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
MCU Code Simulation
|
MCU Code Simulation
|
||||||
@ -350,7 +355,6 @@ static READ16_HANDLER( jchan_mcu_status_r )
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static UINT16 *jchan_spriteram;
|
|
||||||
|
|
||||||
|
|
||||||
// interrupt generation is NOT understood
|
// interrupt generation is NOT understood
|
||||||
@ -417,11 +421,43 @@ static UINT16 *mainsub_shared_ram;
|
|||||||
|
|
||||||
static VIDEO_UPDATE(jchan)
|
static VIDEO_UPDATE(jchan)
|
||||||
{
|
{
|
||||||
|
int x,y;
|
||||||
|
UINT16* src1;
|
||||||
|
UINT16* src2;
|
||||||
|
UINT16* dst;
|
||||||
|
UINT16 pixdata1;
|
||||||
|
UINT16 pixdata2;
|
||||||
|
|
||||||
fillbitmap(bitmap, get_black_pen(screen->machine), cliprect);
|
fillbitmap(bitmap, get_black_pen(screen->machine), cliprect);
|
||||||
//skns_draw_sprites(screen->machine,bitmap,cliprect);
|
//skns_draw_sprites(screen->machine,bitmap,cliprect);
|
||||||
//fillbitmap(sprite_bitmap, 0x0000, cliprect);
|
fillbitmap(sprite_bitmap_1, 0x0000, cliprect);
|
||||||
skns_draw_sprites(screen->machine, bitmap, cliprect, jchan_sprite_ram32_1, 0x4000, memory_region(screen->machine,"gfx1"), memory_region_length (screen->machine, "gfx1"), jchan_sprite_regs32_1 );
|
fillbitmap(sprite_bitmap_2, 0x0000, cliprect);
|
||||||
|
|
||||||
|
skns_draw_sprites(screen->machine, sprite_bitmap_1, cliprect, jchan_sprite_ram32_1, 0x4000, memory_region(screen->machine,"gfx1"), memory_region_length (screen->machine, "gfx1"), jchan_sprite_regs32_1 );
|
||||||
|
skns_draw_sprites(screen->machine, sprite_bitmap_2, cliprect, jchan_sprite_ram32_2, 0x4000, memory_region(screen->machine,"gfx2"), memory_region_length (screen->machine, "gfx2"), jchan_sprite_regs32_2 );
|
||||||
|
|
||||||
|
for (y=0;y<240;y++)
|
||||||
|
{
|
||||||
|
src1 = BITMAP_ADDR16(sprite_bitmap_1, y, 0);
|
||||||
|
src2 = BITMAP_ADDR16(sprite_bitmap_2, y, 0);
|
||||||
|
dst = BITMAP_ADDR16(bitmap, y, 0);
|
||||||
|
|
||||||
|
for (x=0;x<320;x++)
|
||||||
|
{
|
||||||
|
pixdata1 = src1[x];
|
||||||
|
pixdata2 = src2[x];
|
||||||
|
|
||||||
|
if (pixdata2 & 0x3fff)
|
||||||
|
{
|
||||||
|
dst[x] = (pixdata2 & 0x3fff)|0x4000;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pixdata1 & 0x3fff)
|
||||||
|
{
|
||||||
|
dst[x] = (pixdata1 & 0x3fff)|0x4000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -490,22 +526,35 @@ static WRITE16_HANDLER( sub2main_cmd_w )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ram convert for suprnova (requires 32-bit stuff) */
|
/* ram convert for suprnova (requires 32-bit stuff) */
|
||||||
static WRITE16_HANDLER( jchan_suprnova_sprite32_w )
|
static WRITE16_HANDLER( jchan_suprnova_sprite32_1_w )
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&jchan_spriteram[offset]);
|
COMBINE_DATA(&jchan_spriteram_1[offset]);
|
||||||
offset>>=1;
|
offset>>=1;
|
||||||
jchan_sprite_ram32_1[offset]=(jchan_spriteram[offset*2+1]<<16) | (jchan_spriteram[offset*2]);
|
jchan_sprite_ram32_1[offset]=(jchan_spriteram_1[offset*2+1]<<16) | (jchan_spriteram_1[offset*2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT16* jchan_sprregs;
|
static WRITE16_HANDLER( jchan_suprnova_sprite32regs_1_w )
|
||||||
|
|
||||||
static WRITE16_HANDLER( jchan_suprnova_sprite32regs_w )
|
|
||||||
{
|
{
|
||||||
COMBINE_DATA(&jchan_sprregs[offset]);
|
COMBINE_DATA(&jchan_sprregs_1[offset]);
|
||||||
offset>>=1;
|
offset>>=1;
|
||||||
jchan_sprite_regs32_1[offset]=(jchan_sprregs[offset*2+1]<<16) | (jchan_sprregs[offset*2]);
|
jchan_sprite_regs32_1[offset]=(jchan_sprregs_1[offset*2+1]<<16) | (jchan_sprregs_1[offset*2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WRITE16_HANDLER( jchan_suprnova_sprite32_2_w )
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&jchan_spriteram_2[offset]);
|
||||||
|
offset>>=1;
|
||||||
|
jchan_sprite_ram32_2[offset]=(jchan_spriteram_2[offset*2+1]<<16) | (jchan_spriteram_2[offset*2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static WRITE16_HANDLER( jchan_suprnova_sprite32regs_2_w )
|
||||||
|
{
|
||||||
|
COMBINE_DATA(&jchan_sprregs_2[offset]);
|
||||||
|
offset>>=1;
|
||||||
|
jchan_sprite_regs32_2[offset]=(jchan_sprregs_2[offset*2+1]<<16) | (jchan_sprregs_2[offset*2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( jchan_main, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( jchan_main, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
AM_RANGE(0x000000, 0x1fffff) AM_ROM
|
||||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - [A] grid tested, cleared ($9d6-$a54)
|
AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - [A] grid tested, cleared ($9d6-$a54)
|
||||||
@ -520,17 +569,10 @@ static ADDRESS_MAP_START( jchan_main, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x400000, 0x403fff) AM_RAM AM_BASE(&mainsub_shared_ram) AM_SHARE(1)
|
AM_RANGE(0x400000, 0x403fff) AM_RAM AM_BASE(&mainsub_shared_ram) AM_SHARE(1)
|
||||||
|
|
||||||
/* 1st sprite layer */
|
/* 1st sprite layer */
|
||||||
// AM_RANGE(0x500000, 0x5005ff) AM_RAM // grid tested ($924-$97c), cleared ($982-$9a4) until $503fff
|
AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(jchan_suprnova_sprite32_1_w) AM_BASE(&jchan_spriteram_1)
|
||||||
// AM_RANGE(0x500600, 0x503fff) AM_RAM // [B] grid tested, cleared ($b68-$be6)
|
AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(jchan_suprnova_sprite32regs_1_w) AM_BASE(&jchan_sprregs_1)
|
||||||
AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(jchan_suprnova_sprite32_w) AM_BASE(&jchan_spriteram)
|
|
||||||
AM_RANGE(0x600000, 0x60003f) AM_RAM_WRITE(jchan_suprnova_sprite32regs_w) AM_BASE(&jchan_sprregs)
|
|
||||||
|
|
||||||
/* (0x700000, 0x707fff) = palette zone - but there seems to be 'sub-zones' used differently */
|
AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16) // palette for sprites?
|
||||||
// AM_RANGE(0x700000, 0x707fff) AM_RAM // grid tested, cleared ($dbc-$e3a), $2000 bytes (8Kb) copied from $aae40 ($e40-$e56)
|
|
||||||
// AM_RANGE(0x708000, 0x70ffff) AM_RAM // [E] grid tested, cleared ($d1c-$d9a), $8000 bytes (32Kb) copied from $a2e40 ($da0-$db6)
|
|
||||||
AM_RANGE(0x700000, 0x707fff) AM_RAM // palette for tilemaps?
|
|
||||||
AM_RANGE(0x708000, 0x70ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16) // palette for sprites?
|
|
||||||
// AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16) // palette for sprites?
|
|
||||||
|
|
||||||
AM_RANGE(0xf00000, 0xf00003) AM_READWRITE(jchan_ctrl_r, jchan_ctrl_w) AM_BASE(&jchan_ctrl)
|
AM_RANGE(0xf00000, 0xf00003) AM_READWRITE(jchan_ctrl_r, jchan_ctrl_w) AM_BASE(&jchan_ctrl)
|
||||||
AM_RANGE(0xf00004, 0xf00005) AM_READ_PORT("SYSTEM")
|
AM_RANGE(0xf00004, 0xf00005) AM_READ_PORT("SYSTEM")
|
||||||
@ -554,8 +596,8 @@ static ADDRESS_MAP_START( jchan_sub, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x600000, 0x60001f) AM_RAM // AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE(&kaneko16_layers_0_regs) // Layers 0 Regs
|
AM_RANGE(0x600000, 0x60001f) AM_RAM // AM_RAM_WRITE(kaneko16_layers_0_regs_w) AM_BASE(&kaneko16_layers_0_regs) // Layers 0 Regs
|
||||||
|
|
||||||
/* 2nd sprite layer? - [C] grid tested, cleared ($1e2a), also cleared at startup ($7dc-$80a) */
|
/* 2nd sprite layer? - [C] grid tested, cleared ($1e2a), also cleared at startup ($7dc-$80a) */
|
||||||
AM_RANGE(0x700000, 0x703fff) AM_RAM // AM_BASE(&jchan_spriteram) AM_WRITE(jchan_suprnova_sprite32_w)
|
AM_RANGE(0x700000, 0x703fff) AM_RAM AM_BASE(&jchan_spriteram_2) AM_WRITE(jchan_suprnova_sprite32_2_w)
|
||||||
AM_RANGE(0x780000, 0x78003f) AM_RAM // AM_BASE(&jchan_sprregs) AM_WRITE(jchan_suprnova_sprite32regs_w)
|
AM_RANGE(0x780000, 0x78003f) AM_RAM AM_BASE(&jchan_sprregs_2) AM_WRITE(jchan_suprnova_sprite32regs_2_w)
|
||||||
|
|
||||||
AM_RANGE(0x800000, 0x800001) AM_WRITE(ymz280b_register_0_lsb_w) // sound
|
AM_RANGE(0x800000, 0x800001) AM_WRITE(ymz280b_register_0_lsb_w) // sound
|
||||||
AM_RANGE(0x800002, 0x800003) AM_WRITE(ymz280b_data_0_lsb_w) //
|
AM_RANGE(0x800002, 0x800003) AM_WRITE(ymz280b_data_0_lsb_w) //
|
||||||
|
Loading…
Reference in New Issue
Block a user