mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
tiamc1: tilemap bit layers disable control (used in test mode only)
This commit is contained in:
parent
b48ada64c5
commit
0e6a1a5d75
@ -113,7 +113,6 @@
|
||||
- Use machine/pit8253.c in sound
|
||||
- Check sprites priorities on the real hardware
|
||||
- Check vertical background scrolling on the real hardware
|
||||
- What charset control is used for?
|
||||
- Kot Rybolov viewable area size likely controlled by pit8253 timers 0 and 1, used in test mode only
|
||||
|
||||
*/
|
||||
@ -168,7 +167,7 @@ static ADDRESS_MAP_START( tiamc1_io_map, AS_IO, 8, tiamc1_state )
|
||||
AM_RANGE(0xbc, 0xbc) AM_WRITE(tiamc1_bg_vshift_w)/* background V scroll */
|
||||
AM_RANGE(0xbd, 0xbd) AM_WRITE(tiamc1_bg_hshift_w)/* background H scroll */
|
||||
AM_RANGE(0xbe, 0xbe) AM_WRITE(tiamc1_bankswitch_w) /* VRAM selector */
|
||||
AM_RANGE(0xbf, 0xbf) AM_WRITENOP /* charset control */
|
||||
AM_RANGE(0xbf, 0xbf) AM_WRITE(tiamc1_bg_bplctrl_w) /* charset control */
|
||||
AM_RANGE(0xc0, 0xc3) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer0_w) /* timer 0 */
|
||||
AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("kr580vv55a", i8255_device, read, write) /* input ports + coin counters & lockout */
|
||||
AM_RANGE(0xd4, 0xd7) AM_DEVWRITE("2x8253", tiamc1_sound_device, tiamc1_timer1_w) /* timer 1 */
|
||||
@ -236,8 +235,8 @@ static INPUT_PORTS_START( gorodki )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* OUT:game counter */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* RAZR ??? */
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // right button
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // left button
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // right button
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // left button
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -337,7 +336,7 @@ static MACHINE_CONFIG_START( tiamc1, tiamc1_state )
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tiamc1)
|
||||
MCFG_PALETTE_ADD("palette", 16)
|
||||
MCFG_PALETTE_ADD("palette", 32)
|
||||
MCFG_PALETTE_INIT_OWNER(tiamc1_state, tiamc1)
|
||||
|
||||
/* sound hardware */
|
||||
|
@ -22,9 +22,11 @@ public:
|
||||
UINT8 *m_spriteram_y;
|
||||
UINT8 *m_spriteram_a;
|
||||
UINT8 *m_spriteram_n;
|
||||
UINT8 *m_paletteram;
|
||||
UINT8 m_layers_ctrl;
|
||||
UINT8 m_bg_vshift;
|
||||
UINT8 m_bg_hshift;
|
||||
UINT8 m_bg_bplctrl;
|
||||
tilemap_t *m_bg_tilemap1;
|
||||
tilemap_t *m_bg_tilemap2;
|
||||
std::unique_ptr<rgb_t[]> m_palette_ptr;
|
||||
@ -37,6 +39,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(tiamc1_sprite_n_w);
|
||||
DECLARE_WRITE8_MEMBER(tiamc1_bg_vshift_w);
|
||||
DECLARE_WRITE8_MEMBER(tiamc1_bg_hshift_w);
|
||||
DECLARE_WRITE8_MEMBER(tiamc1_bg_bplctrl_w);
|
||||
DECLARE_WRITE8_MEMBER(tiamc1_palette_w);
|
||||
DECLARE_WRITE8_MEMBER(kot_bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(kot_videoram_w);
|
||||
@ -56,6 +59,7 @@ public:
|
||||
required_device<palette_device> m_palette;
|
||||
private:
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
void update_bg_palette();
|
||||
};
|
||||
|
||||
|
||||
|
@ -89,9 +89,24 @@ WRITE8_MEMBER(tiamc1_state::tiamc1_bg_hshift_w)
|
||||
m_bg_hshift = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tiamc1_state::tiamc1_bg_bplctrl_w)
|
||||
{
|
||||
m_bg_bplctrl = data;
|
||||
update_bg_palette();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tiamc1_state::tiamc1_palette_w)
|
||||
{
|
||||
m_paletteram[offset] = data;
|
||||
m_palette->set_pen_color(offset, m_palette_ptr[data]);
|
||||
update_bg_palette();
|
||||
}
|
||||
|
||||
void tiamc1_state::update_bg_palette()
|
||||
{
|
||||
UINT8 bplmask = ((m_bg_bplctrl >> 0) & 1) | ((m_bg_bplctrl >> 1) & 2) | ((m_bg_bplctrl >> 2) & 4) | ((m_bg_bplctrl >> 3) & 8);
|
||||
for (int i = 0; i < 16; i++)
|
||||
m_palette->set_pen_color(i + 16, m_palette_ptr[m_paletteram[i | bplmask]]);
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(tiamc1_state, tiamc1)
|
||||
@ -139,7 +154,7 @@ TILE_GET_INFO_MEMBER(tiamc1_state::get_bg2_tile_info)
|
||||
|
||||
void tiamc1_state::video_start()
|
||||
{
|
||||
m_videoram = make_unique_clear<UINT8[]>(0x3040);
|
||||
m_videoram = make_unique_clear<UINT8[]>(0x3050);
|
||||
|
||||
m_charram = m_videoram.get() + 0x0800; /* Ram is banked */
|
||||
m_tileram = m_videoram.get() + 0x0000;
|
||||
@ -148,8 +163,9 @@ void tiamc1_state::video_start()
|
||||
m_spriteram_x = m_videoram.get() + 0x3010;
|
||||
m_spriteram_n = m_videoram.get() + 0x3020;
|
||||
m_spriteram_a = m_videoram.get() + 0x3030;
|
||||
m_paletteram = m_videoram.get() + 0x3040;
|
||||
|
||||
save_pointer(NAME(m_videoram.get()), 0x3040);
|
||||
save_pointer(NAME(m_videoram.get()), 0x3050);
|
||||
|
||||
m_bg_tilemap1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS,
|
||||
8, 8, 32, 32);
|
||||
@ -158,9 +174,12 @@ void tiamc1_state::video_start()
|
||||
8, 8, 32, 32);
|
||||
m_bg_tilemap1->set_scrolldx(4, 4);
|
||||
m_bg_tilemap2->set_scrolldx(4, 4);
|
||||
m_bg_tilemap1->set_palette_offset(16);
|
||||
m_bg_tilemap2->set_palette_offset(16);
|
||||
|
||||
m_bg_vshift = 0;
|
||||
m_bg_hshift = 0;
|
||||
m_bg_bplctrl = 0;
|
||||
|
||||
save_item(NAME(m_layers_ctrl));
|
||||
save_item(NAME(m_bg_vshift));
|
||||
@ -173,14 +192,15 @@ VIDEO_START_MEMBER(tiamc1_state, kot)
|
||||
{
|
||||
m_charram = memregion("gfx2")->base();
|
||||
|
||||
m_videoram = make_unique_clear<UINT8[]>(0x440);
|
||||
m_videoram = make_unique_clear<UINT8[]>(0x450);
|
||||
m_tileram = m_videoram.get() + 0x000;
|
||||
m_spriteram_y = m_videoram.get() + 0x400;
|
||||
m_spriteram_x = m_videoram.get() + 0x410;
|
||||
m_spriteram_n = m_videoram.get() + 0x420;
|
||||
m_spriteram_a = m_videoram.get() + 0x430;
|
||||
m_paletteram = m_videoram.get() + 0x440;
|
||||
|
||||
save_pointer(NAME(m_videoram.get()), 0x440);
|
||||
save_pointer(NAME(m_videoram.get()), 0x450);
|
||||
|
||||
m_bg_tilemap1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg1_tile_info), this), TILEMAP_SCAN_ROWS,
|
||||
8, 8, 32, 32);
|
||||
|
Loading…
Reference in New Issue
Block a user