Fix in213, kinda. The screen can be anywhere in ram, which is probably incorrect

This commit is contained in:
Olivier Galibert 2020-11-27 22:43:09 +01:00
parent 9f741826dc
commit ecb3bd1d01

View File

@ -97,6 +97,8 @@ private:
uint16_t m_cursor_addr;
uint8_t m_screen_ctrl;
uint8_t m_firq_vector;
memory_access<16, 0, 0, ENDIANNESS_BIG>::specific m_program;
};
@ -162,8 +164,10 @@ uint32_t informer_213_state::screen_update(screen_device &screen, bitmap_rgb32 &
else
addr = m_vram_start_addr2 + y * 80 + x;
uint8_t code = m_vram[addr - 0x6000];
uint8_t attr = m_aram[addr - 0x6000];
uint8_t code = m_program.read_byte(addr);
uint8_t attr = m_program.read_byte(addr+0x1000);
logerror("%02d.%02d %04x %02x %02x\n", x, y, addr, code, attr);
if (code == 0xc0 || code == 0xe8)
line_attr = attr;
@ -359,6 +363,8 @@ void informer_213_state::machine_start()
m_nvram[1]->set_base(m_banked_ram.get(), 0x800);
m_maincpu->space(AS_PROGRAM).specific(m_program);
// register for save states
save_item(NAME(m_vram_start_addr));
save_item(NAME(m_vram_start_addr2));
@ -366,11 +372,20 @@ void informer_213_state::machine_start()
save_item(NAME(m_cursor_addr));
save_item(NAME(m_screen_ctrl));
save_item(NAME(m_firq_vector));
save_item(NAME(m_cursor_start));
save_item(NAME(m_cursor_end));
}
void informer_213_state::machine_reset()
{
m_firq_vector = 0x00;
m_vram_start_addr = 0x0084;
m_vram_start_addr2 = 0x0084;
m_vram_end_addr = 0xffff;
m_cursor_start = 0x20;
m_cursor_end = 0x09;
m_cursor_addr = 0xffff;
m_screen_ctrl = 0x18;
}