mirror of
https://github.com/LIV2/WinUAE.git
synced 2025-12-06 00:12:52 +00:00
Fix rtarea overflow in indirect mode after reset
This commit is contained in:
parent
1e2dd07588
commit
0e97986b06
14
autoconf.cpp
14
autoconf.cpp
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user