diff --git a/desmume/src/frontend/interface/interface.cpp b/desmume/src/frontend/interface/interface.cpp index fc730f1ce..bb731db2c 100644 --- a/desmume/src/frontend/interface/interface.cpp +++ b/desmume/src/frontend/interface/interface.cpp @@ -481,6 +481,18 @@ EXPORTED void desmume_memory_write_register(char* register_name, u32 value) } } +EXPORTED u32 desmume_memory_get_next_instruction() +{ + return CommonSettings.use_jit ? 0 : NDS_ARM9.next_instruction; +} + +EXPORTED void desmume_memory_set_next_instruction(u32 value) +{ + if (!CommonSettings.use_jit) { + NDS_ARM9.next_instruction = value; + } +} + INLINE void memory_register_hook(int addr, MemHookType hook_type, int size, memory_cb_fnc cb) { for(unsigned int i = addr; i != addr+size; i++) diff --git a/desmume/src/frontend/interface/interface.h b/desmume/src/frontend/interface/interface.h index 9b868e8a9..d595423c4 100755 --- a/desmume/src/frontend/interface/interface.h +++ b/desmume/src/frontend/interface/interface.h @@ -129,6 +129,12 @@ EXPORTED void desmume_memory_write_long(int address, unsigned long value); EXPORTED u32 desmume_memory_read_register(char* register_name); EXPORTED void desmume_memory_write_register(char* register_name, u32 value); +// Get the next instruction address that the ARM9 processor will execute. +// NOTE: This will NOT work with JIT enabled. NULL will be returned. +EXPORTED u32 desmume_memory_get_next_instruction(); +// Get the next instruction address that the ARM9 processor will execute. Should be combined with setting the PC register (r15). +// NOTE: This is a no-op with JIT enabled. +EXPORTED void desmume_memory_set_next_instruction(u32 value); EXPORTED void desmume_memory_register_write(int address, int size, memory_cb_fnc cb); EXPORTED void desmume_memory_register_read(int address, int size, memory_cb_fnc cb);