mirror of
https://github.com/holub/mame
synced 2025-06-03 11:26:56 +03:00
kongambl: Support unpaged 056832 VRAM access [R. Belmont]
This commit is contained in:
parent
dbf67e6b00
commit
99117186d9
@ -20,20 +20,24 @@
|
||||
|
||||
static VIDEO_START(kongambl)
|
||||
{
|
||||
int i;
|
||||
running_device *k056832 = devtag_get_device(machine, "k056832");
|
||||
|
||||
for (i=0;i<256;i++)
|
||||
{
|
||||
palette_set_color(machine,i,MAKE_RGB(i,i,i));
|
||||
}
|
||||
k056832_set_layer_association(k056832, 0);
|
||||
k056832_set_layer_offs(k056832, 0, -2, 0);
|
||||
k056832_set_layer_offs(k056832, 1, 2, 0);
|
||||
k056832_set_layer_offs(k056832, 2, 4, 0);
|
||||
k056832_set_layer_offs(k056832, 3, 6, 0);
|
||||
}
|
||||
|
||||
static VIDEO_UPDATE(kongambl)
|
||||
{
|
||||
running_device *k056832 = devtag_get_device(screen->machine, "k056832");
|
||||
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 3, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 2, 0, 0);
|
||||
bitmap_fill(bitmap, cliprect, 0);
|
||||
bitmap_fill(screen->machine->priority_bitmap, cliprect, 0);
|
||||
|
||||
// k056832_tilemap_draw(k056832, bitmap, cliprect, 3, 0, 0);
|
||||
// k056832_tilemap_draw(k056832, bitmap, cliprect, 2, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 1, 0, 0);
|
||||
k056832_tilemap_draw(k056832, bitmap, cliprect, 0, 0, 0);
|
||||
return 0;
|
||||
@ -66,7 +70,8 @@ static ADDRESS_MAP_START( kongambl_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
|
||||
AM_RANGE(0x400000, 0x401fff) AM_DEVREADWRITE("k056832", k056832_ram_long_r, k056832_ram_long_w)
|
||||
|
||||
AM_RANGE(0x420000, 0x43ffff) AM_RAM
|
||||
AM_RANGE(0x420000, 0x43ffff) AM_DEVREADWRITE("k056832", k056832_unpaged_ram_long_r, k056832_unpaged_ram_long_w)
|
||||
|
||||
AM_RANGE(0x440000, 0x443fff) AM_RAM
|
||||
|
||||
AM_RANGE(0x460000, 0x47ffff) AM_RAM_WRITE(konamigx_palette_w) AM_BASE_GENERIC(paletteram)
|
||||
@ -196,5 +201,5 @@ ROM_START( moneybnk )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 199?, kingtut, 0, kongambl, kongambl, 0, ROT0, "Konami", "King Tut (Australia)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
GAME( 199?, moneybnk, 0, kongambl, kongambl, 0, ROT0, "Konami", "Money Bank (Australia)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
GAME( 199?, kingtut, 0, kongambl, kongambl, 0, ROT0, "Konami", "King Tut (NSW)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
GAME( 199?, moneybnk, 0, kongambl, kongambl, 0, ROT0, "Konami", "Money In The Bank (NSW)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||
|
@ -6644,6 +6644,17 @@ READ32_DEVICE_HANDLER( k056832_ram_long_r )
|
||||
return (pMem[0]<<16 | pMem[1]);
|
||||
}
|
||||
|
||||
READ32_DEVICE_HANDLER( k056832_unpaged_ram_long_r )
|
||||
{
|
||||
k056832_state *k056832 = k056832_get_safe_token(device);
|
||||
UINT16 *pMem = &k056832->videoram[offset * 2];
|
||||
|
||||
// reading from tile RAM resets the ROM readback "half" offset
|
||||
k056832->rom_half = 0;
|
||||
|
||||
return (pMem[0]<<16 | pMem[1]);
|
||||
}
|
||||
|
||||
/* special 8-bit handlers for Lethal Enforcers */
|
||||
READ8_DEVICE_HANDLER( k056832_ram_code_lo_r )
|
||||
{
|
||||
@ -6811,6 +6822,29 @@ WRITE32_DEVICE_HANDLER( k056832_ram_long_w )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE32_DEVICE_HANDLER( k056832_unpaged_ram_long_w )
|
||||
{
|
||||
k056832_state *k056832 = k056832_get_safe_token(device);
|
||||
UINT16 *tile_ptr;
|
||||
UINT32 old_mask, old_data;
|
||||
|
||||
tile_ptr = &k056832->videoram[offset * 2];
|
||||
old_mask = ~mem_mask;
|
||||
old_data = (UINT32)tile_ptr[0] << 16 | (UINT32)tile_ptr[1];
|
||||
data = (data & mem_mask) | (old_data & old_mask);
|
||||
|
||||
if (data != old_data)
|
||||
{
|
||||
tile_ptr[0] = data >> 16;
|
||||
tile_ptr[1] = data;
|
||||
|
||||
if (k056832->page_tile_mode[offset/0x800])
|
||||
tilemap_mark_tile_dirty(k056832->tilemap[offset/0x800], offset&0x7ff);
|
||||
else
|
||||
k056832_mark_line_dirty(offset/0x800, (offset&0x7ff));
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_DEVICE_HANDLER( k056832_word_w )
|
||||
{
|
||||
k056832_state *k056832 = k056832_get_safe_token(device);
|
||||
|
@ -662,6 +662,8 @@ void k056832_set_tile_bank(running_device *device, int bank); /* Asterix */
|
||||
READ32_DEVICE_HANDLER( k056832_ram_long_r );
|
||||
READ32_DEVICE_HANDLER( k056832_rom_long_r );
|
||||
WRITE32_DEVICE_HANDLER( k056832_ram_long_w );
|
||||
READ32_DEVICE_HANDLER( k056832_unpaged_ram_long_r );
|
||||
WRITE32_DEVICE_HANDLER( k056832_unpaged_ram_long_w );
|
||||
WRITE32_DEVICE_HANDLER( k056832_long_w );
|
||||
WRITE32_DEVICE_HANDLER( k056832_b_long_w );
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user