mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
sinclair/atm.cpp: fix MT08472 heap overflow/crash (#13123)
* MT08472: heap overflow * fix palette range
This commit is contained in:
parent
dfe669f887
commit
cd29cc1578
@ -95,7 +95,7 @@ void atm_state::atm_port_ff_w(offs_t offset, u8 data)
|
||||
{
|
||||
// Must read current ULA value (which is doesn't work now) from the BUS.
|
||||
// Good enough as non-border case is too complicated and possibly no software uses it.
|
||||
u8 pen = get_border_color(m_screen->hpos(), m_screen->vpos());
|
||||
u8 pen = 0x0f & get_border_color(m_screen->hpos(), m_screen->vpos());
|
||||
m_palette_data[pen] = data;
|
||||
m_palette->set_pen_color(pen,
|
||||
(BIT(~data, 1) * 0xaa) | (BIT(~data, 6) * 0x55),
|
||||
@ -440,12 +440,12 @@ void atm_state::machine_reset()
|
||||
m_beta->enable();
|
||||
m_beta_drive_selected = 0;
|
||||
|
||||
m_port_fe_data = -1;
|
||||
m_port_7ffd_data = 0;
|
||||
m_port_1ffd_data = -1;
|
||||
m_port_77_data = 0;
|
||||
|
||||
m_br3 = 0;
|
||||
m_palette_data = { 0xff };
|
||||
atm_port_77_w(0x4000, 3); // m_port_77_data: CPM=0(on), PEN=0(off), PEN2=1(off); vmode: zx
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ protected:
|
||||
bool m_pen2; // palette selector
|
||||
u8 m_rg = 0b011; // 0:320x200lo, 2:640:200hi, 3:256x192zx, 6:80x25txt
|
||||
u8 m_br3;
|
||||
std::vector<u8> m_palette_data;
|
||||
u8 m_palette_data[16];
|
||||
u8 m_ata_data_latch;
|
||||
u8 m_beta_drive_selected;
|
||||
};
|
||||
|
@ -194,7 +194,7 @@ void pentevo_state::atm_port_ff_w(offs_t offset, u8 data)
|
||||
{
|
||||
if (BIT(m_port_bf_data, 5) && !m_pen2)
|
||||
{
|
||||
u8 pen = get_border_color(m_screen->hpos(), m_screen->vpos());
|
||||
u8 pen = 0x0f & get_border_color(m_screen->hpos(), m_screen->vpos());
|
||||
m_palette_data[pen] = data;
|
||||
m_palette->set_pen_color(pen,
|
||||
(BIT(~data, 1) * 0x88) | (BIT(~data, 6) * 0x44) | (BIT(~offset, 9) * 0x22) | (BIT(~offset, 14) * 0x11),
|
||||
|
Loading…
Reference in New Issue
Block a user