Fix rtarea overflow in indirect mode after reset

This commit is contained in:
Toni Wilen 2023-08-04 19:13:17 +03:00
parent 1e2dd07588
commit 0e97986b06
2 changed files with 14 additions and 6 deletions

View File

@ -327,6 +327,11 @@ static void REGPARAM2 rtarea_lput (uaecptr addr, uae_u32 value)
}
}
static int rt_addr;
static int rt_straddr;
static int rt_addr_restart;
static bool rt_addr_reset;
void rtarea_reset(void)
{
uae_u8 *p = rtarea_bank.baseaddr;
@ -336,6 +341,11 @@ void rtarea_reset(void)
memset(p + RTAREA_HEARTBEAT, 0, 0x10000 - RTAREA_HEARTBEAT);
memset(p + RTAREA_VARIABLES, 0, RTAREA_VARIABLES_SIZE);
}
if (rt_addr_reset) {
rt_addr_reset = false;
rt_addr_restart = rt_addr;
}
rt_addr = rt_addr_restart;
trap_reset();
absolute_rom_address = 0;
}
@ -344,9 +354,6 @@ void rtarea_reset(void)
* scratch paper
*/
static int rt_addr;
static int rt_straddr;
uae_u32 addr (int ptr)
{
return (uae_u32)ptr + rtarea_base;
@ -586,6 +593,7 @@ void rtarea_init(void)
rt_straddr = 0xFF00 - 2;
rt_addr = 0;
rt_addr_reset = true;
rt_trampoline_ptr = rtarea_base + RTAREA_TRAMPOLINE;
trap_entry = 0;

View File

@ -183,6 +183,9 @@ void devices_reset(int hardreset)
init_eventtab();
init_shm();
memory_reset();
#ifdef AUTOCONFIG
rtarea_reset();
#endif
DISK_reset();
CIA_reset();
a1000_reset();
@ -226,9 +229,6 @@ void devices_reset(int hardreset)
dongle_reset();
sampler_init();
device_func_reset();
#ifdef AUTOCONFIG
rtarea_reset();
#endif
#ifdef RETROPLATFORM
rp_reset();
#endif