mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
spg2xx: Fixed tilemap wallpaper mode. Fixes V.Smile intro background. [Ryan Holtz]
This commit is contained in:
parent
8143ab0dc0
commit
aeae501a76
@ -349,7 +349,7 @@ void spg2xx_device::blit_page(const rectangle &cliprect, int depth, uint32_t bit
|
|||||||
{
|
{
|
||||||
for (uint32_t x0 = 0; x0 < wn; x0++)
|
for (uint32_t x0 = 0; x0 < wn; x0++)
|
||||||
{
|
{
|
||||||
uint16_t tile = (ctrl & PAGE_BLANK_MASK) ? 0 : space.read_word(tilemap + x0 + wn * y0);
|
uint16_t tile = (ctrl & PAGE_WALLPAPER_MASK) ? space.read_word(tilemap) : space.read_word(tilemap + x0 + wn * y0);
|
||||||
uint16_t palette = 0;
|
uint16_t palette = 0;
|
||||||
uint32_t xx, yy;
|
uint32_t xx, yy;
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ protected:
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
PAGE_ENABLE_MASK = 0x0008,
|
PAGE_ENABLE_MASK = 0x0008,
|
||||||
PAGE_BLANK_MASK = 0x0004,
|
PAGE_WALLPAPER_MASK = 0x0004,
|
||||||
|
|
||||||
SPRITE_ENABLE_MASK = 0x0001,
|
SPRITE_ENABLE_MASK = 0x0001,
|
||||||
SPRITE_COORD_TL_MASK = 0x0002,
|
SPRITE_COORD_TL_MASK = 0x0002,
|
||||||
|
@ -393,7 +393,7 @@ READ16_MEMBER(vsmile_state::portb_r)
|
|||||||
//const uint8_t inputs = m_io_p2->read();
|
//const uint8_t inputs = m_io_p2->read();
|
||||||
//const uint16_t input_bits = BIT(inputs, 0) ? VSMILE_PORTB_ON_SW : 0;
|
//const uint16_t input_bits = BIT(inputs, 0) ? VSMILE_PORTB_ON_SW : 0;
|
||||||
const uint16_t data = VSMILE_PORTB_ON_SW | (m_cart && m_cart->exists() ? VSMILE_PORTB_CART : 0);
|
const uint16_t data = VSMILE_PORTB_ON_SW | (m_cart && m_cart->exists() ? VSMILE_PORTB_CART : 0);
|
||||||
logerror("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
|
//logerror("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
|
||||||
//printf("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
|
//printf("V.Smile Port B read %04x, mask %04x\n", data, mem_mask);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -401,47 +401,47 @@ READ16_MEMBER(vsmile_state::portb_r)
|
|||||||
READ16_MEMBER(vsmile_state::portc_r)
|
READ16_MEMBER(vsmile_state::portc_r)
|
||||||
{
|
{
|
||||||
const uint16_t data = VSMILE_PORTC_LOGO | 0x0004;
|
const uint16_t data = VSMILE_PORTC_LOGO | 0x0004;
|
||||||
logerror("V.Smile Port C read %04x, mask %04x\n", data, mem_mask);
|
//logerror("V.Smile Port C read %04x, mask %04x\n", data, mem_mask);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(vsmile_state::portb_w)
|
WRITE16_MEMBER(vsmile_state::portb_w)
|
||||||
{
|
{
|
||||||
m_portb_data = data & mem_mask;
|
m_portb_data = data & mem_mask;
|
||||||
logerror("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
|
//logerror("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
|
||||||
//printf("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
|
//printf("V.Smile Port B write %04x, mask %04x\n", m_portb_data, mem_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(vsmile_state::portc_w)
|
WRITE16_MEMBER(vsmile_state::portc_w)
|
||||||
{
|
{
|
||||||
m_portc_data = data & mem_mask;
|
m_portc_data = data & mem_mask;
|
||||||
logerror("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
|
//logerror("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
|
||||||
//printf("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
|
//printf("V.Smile Port C write %04x, mask %04x\n", m_portc_data, mem_mask);
|
||||||
//printf("%02x ", data >> 8);
|
//printf("%02x ", data >> 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(vsmile_state::uart_tx)
|
WRITE8_MEMBER(vsmile_state::uart_tx)
|
||||||
{
|
{
|
||||||
logerror("UART Tx: %02x\n", data);
|
//logerror("UART Tx: %02x\n", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(vsmile_state::chip_sel_w)
|
WRITE8_MEMBER(vsmile_state::chip_sel_w)
|
||||||
{
|
{
|
||||||
logerror("Chip select mode: %d\n", data);
|
//logerror("Chip select mode: %d\n", data);
|
||||||
const uint16_t cart_offset = m_cart && m_cart->exists() ? 4 : 0;
|
const uint16_t cart_offset = m_cart && m_cart->exists() ? 4 : 0;
|
||||||
switch (data)
|
switch (data)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
logerror("Setting bank %d\n", cart_offset);
|
//logerror("Setting bank %d\n", cart_offset);
|
||||||
m_bankdev->set_bank(cart_offset);
|
m_bankdev->set_bank(cart_offset);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
logerror("Setting bank %d\n", 1 + cart_offset);
|
//logerror("Setting bank %d\n", 1 + cart_offset);
|
||||||
m_bankdev->set_bank(1 + cart_offset);
|
m_bankdev->set_bank(1 + cart_offset);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
logerror("Setting bank %d\n", 2 + cart_offset);
|
//logerror("Setting bank %d\n", 2 + cart_offset);
|
||||||
m_bankdev->set_bank(2 + cart_offset);
|
m_bankdev->set_bank(2 + cart_offset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -449,28 +449,11 @@ WRITE8_MEMBER(vsmile_state::chip_sel_w)
|
|||||||
|
|
||||||
READ16_MEMBER(spg2xx_game_state::walle_portc_r)
|
READ16_MEMBER(spg2xx_game_state::walle_portc_r)
|
||||||
{
|
{
|
||||||
char mask_buf[17];
|
|
||||||
mask_buf[16] = 0;
|
|
||||||
for (uint32_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
mask_buf[i] = BIT(mem_mask, 15 - i) ? '1' : '0';
|
|
||||||
}
|
|
||||||
logerror("Wall-E Port C read 0000, pull mask %s\n", mask_buf);
|
|
||||||
return m_i2cmem->read_sda();
|
return m_i2cmem->read_sda();
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_MEMBER(spg2xx_game_state::walle_portc_w)
|
WRITE16_MEMBER(spg2xx_game_state::walle_portc_w)
|
||||||
{
|
{
|
||||||
char data_buf[17];
|
|
||||||
char mask_buf[17];
|
|
||||||
data_buf[16] = 0;
|
|
||||||
mask_buf[16] = 0;
|
|
||||||
for (uint32_t i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
data_buf[i] = BIT(data, 15 - i) ? '1' : '0';
|
|
||||||
mask_buf[i] = BIT(mem_mask, 15 - i) ? '1' : '0';
|
|
||||||
}
|
|
||||||
logerror("Wall-E Port C write %s, push mask %s\n", data_buf, mask_buf);
|
|
||||||
m_walle_portc_data = data & mem_mask;
|
m_walle_portc_data = data & mem_mask;
|
||||||
if (BIT(mem_mask, 1))
|
if (BIT(mem_mask, 1))
|
||||||
m_i2cmem->write_scl(BIT(data, 1));
|
m_i2cmem->write_scl(BIT(data, 1));
|
||||||
|
Loading…
Reference in New Issue
Block a user