kungfum2: use kidniki's tile addressing

This commit is contained in:
hap 2022-01-24 12:15:45 +01:00
parent 4971be80fb
commit e4736abaca
2 changed files with 45 additions and 22 deletions

View File

@ -31,9 +31,6 @@ private:
uint8_t kungfum2_blitter_r(offs_t offset);
void kungfum2_blitter_w(offs_t offset, uint8_t data);
void kungfum2_io83_w(uint8_t data);
void kungfum2_io84_w(uint8_t data);
TILE_GET_INFO_MEMBER(get_kungfum2_bg_tile_info);
DECLARE_VIDEO_START(kungfum2);
@ -44,12 +41,17 @@ private:
};
/*******************************************************************************
Video
*******************************************************************************/
TILE_GET_INFO_MEMBER(kungfum2_state::get_kungfum2_bg_tile_info)
{
int code = m_kungfum2_tileram[(tile_index << 1)];
int color = m_kungfum2_tileram[(tile_index << 1) | 1];
tileinfo.set(0, code | ((color & 0xc0)<< 2), color & 0x1f, 0);
tileinfo.set(0, code | ((color & 0xe0) << 3) | (m_kidniki_background_bank << 11), color & 0x1f, 0);
if ((tile_index / 64) < 6 || ((color & 0x1f) >> 1) > 0x0c)
tileinfo.category = 1;
@ -57,7 +59,6 @@ TILE_GET_INFO_MEMBER(kungfum2_state::get_kungfum2_bg_tile_info)
tileinfo.category = 0;
}
VIDEO_START_MEMBER(kungfum2_state,kungfum2)
{
// tileram is private to blitter
@ -67,6 +68,12 @@ VIDEO_START_MEMBER(kungfum2_state,kungfum2)
m62_start(tilemap_get_info_delegate(*this, FUNC(kungfum2_state::get_kungfum2_bg_tile_info)), 32, 0, 8, 8, 64, 32);
}
/*******************************************************************************
Blitter
*******************************************************************************/
uint8_t kungfum2_state::kungfum2_blitter_r(offs_t offset)
{
return 0xfe;
@ -157,7 +164,7 @@ void kungfum2_state::kungfum2_blitter_w(offs_t offset, uint8_t data)
{
//logerror("%s: blitter: coin up\n", machine().describe_context());
}
else if (data == 0xFE)
else if (data == 0xfe)
{
//logerror("%s: blitter: start up\n", machine().describe_context());
}
@ -172,16 +179,11 @@ void kungfum2_state::kungfum2_blitter_w(offs_t offset, uint8_t data)
}
}
void kungfum2_state::kungfum2_io83_w(uint8_t data)
{
// before blitter commands
//logerror("%s: kungfum2_io83_w: %02x\n",machine().describe_context(),data);
}
void kungfum2_state::kungfum2_io84_w(uint8_t data)
{
//logerror("%s: kungfum2_io84_w: %02x\n",machine().describe_context(),data);
}
/*******************************************************************************
Address Maps
*******************************************************************************/
void kungfum2_state::mem_map(address_map& map)
{
@ -199,15 +201,18 @@ void kungfum2_state::io_map(address_map &map)
map(0x02, 0x02).portr("P2");
map(0x03, 0x03).portr("DSW1");
map(0x04, 0x04).portr("DSW2");
map(0x81, 0x81).w(FUNC(kungfum2_state::m62_hscroll_high_w));
map(0x80, 0x80).w(FUNC(kungfum2_state::m62_hscroll_low_w));
map(0x83, 0x83).w(FUNC(kungfum2_state::kungfum2_io83_w));
map(0x84, 0x84).w(FUNC(kungfum2_state::kungfum2_io84_w));
map(0x83, 0x83).w(FUNC(kungfum2_state::kidniki_background_bank_w));
//map(0x84, 0x84).nopw();
}
/*******************************************************************************
Input Ports
*******************************************************************************/
static INPUT_PORTS_START( kungfum2 )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
@ -277,6 +282,10 @@ INPUT_PORTS_END
/*******************************************************************************
Machine Configs
*******************************************************************************/
void kungfum2_state::kungfum2(machine_config& config)
{
kungfum(config);
@ -289,6 +298,10 @@ void kungfum2_state::kungfum2(machine_config& config)
/*******************************************************************************
ROM Definitions
*******************************************************************************/
ROM_START( kungfum2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "km-a.4e", 0x00000, 0x4000, CRC(083632aa) SHA1(0a52c6162b2fb55057735a54c59f7cb88d870593) )
@ -298,7 +311,7 @@ ROM_START( kungfum2 )
ROM_REGION( 0x1000, "mcu", 0 )
ROM_LOAD( "mcu", 0x0000, 0x1000, NO_DUMP )
ROM_REGION( 0x8000, "blitterdat", 0 )
ROM_REGION( 0x10000, "blitterdat", ROMREGION_ERASEFF )
ROM_LOAD( "km-z.4h", 0x0000, 0x8000, CRC(252bb4a9) SHA1(2a69ee113950ea58895b42102bbb5263865ace9d) )
ROM_REGION( 0x10000, "irem_audio:iremsound", 0 )
@ -342,4 +355,11 @@ ROM_START( kungfum2 )
ROM_LOAD( "km-b.6f", 0x0000, 0x0100, CRC(82c20d12) SHA1(268903f7d9be58a70d030b02bf31a2d6b5b6e249) )
ROM_END
GAME( 1987, kungfum2, 0, kungfum2, kungfum2, kungfum2_state, empty_init, ROT0, "Irem", "Beyond Kung-Fu (location test)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/*******************************************************************************
Drivers
*******************************************************************************/
// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
GAME( 1987, kungfum2, 0, kungfum2, kungfum2, kungfum2_state, empty_init, ROT0, "Irem", "Beyond Kung-Fu (location test)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )

View File

@ -56,10 +56,15 @@ public:
protected:
required_device<cpu_device> m_maincpu;
required_device<irem_audio_device> m_audio;
tilemap_t* m_bg_tilemap;
uint8_t m_kidniki_background_bank;
void m62_flipscreen_w(uint8_t data);
void m62_hscroll_low_w(uint8_t data);
void m62_hscroll_high_w(uint8_t data);
void kidniki_background_bank_w(uint8_t data);
void m62_start(tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2);
private:
@ -79,7 +84,6 @@ private:
optional_region_ptr<uint8_t> m_fg_color_proms;
int32_t m_m62_background_hscroll;
int32_t m_m62_background_vscroll;
uint8_t m_kidniki_background_bank;
int32_t m_kidniki_text_vscroll;
int m_ldrun3_topbottom_mask;
int32_t m_spelunkr_palbank;
@ -104,7 +108,6 @@ private:
void ldrun3_topbottom_mask_w(uint8_t data);
void kidniki_text_vscroll_low_w(uint8_t data);
void kidniki_text_vscroll_high_w(uint8_t data);
void kidniki_background_bank_w(uint8_t data);
void spelunkr_palbank_w(uint8_t data);
void spelunk2_gfxport_w(uint8_t data);
void horizon_scrollram_w(offs_t offset, uint8_t data);