Hello. I wanted to share two Lua functions I wrote for Sonic 3 and Knuckles. It can be used with the Emulator Gens Re-Record They find and return the first available address in Dynamic Object Ram. They are similar to Create_New_Sprite and Create_New_Sprite3. Create_New_Sprite finds the first slot after FFFFBODE and returns if it finds it. Create_New_Sprite3 find the first slot after the slot your provide as a parameter. I use it for some testing When Exodus isn’t adequate. Here is the code: Code (Text): -- similar to s3k Create_New_Sprite -- searches for the first available slot in dynamic object ram -- if it finds one it will return its address. -- it cannot find one it will return -1 function Create_New_Sprite() local object_size = 0x4A local Dynamic_object_RAM = 0xFFFFB0DE local Dynamic_object_RAM_end = 0xFFFFCAE2 local a1temp = Dynamic_object_RAM local d0temp = ( (Dynamic_object_RAM_end - Dynamic_object_RAM) / object_size )-1 i = d0temp while i > 0 do a1temp = a1temp + object_size if memory.readlong(a1temp) == 0 then return a1temp end i = i - 1 end return -1 end -- similar to s3k Create_New_Sprite3 -- searches for the first available slot in dynamic object ram -- after the address given in the parameter. -- parameter adr - adr is the adress of the slot -- in dynamic object ram, that is before the slot -- where we begin checking for the first -- available slot. -- if addr is not in the range of dynamic object ram -- then it will return -1. This will also be the case -- if addr is not a long word type ( ie BODE OR FFBODE IS INVALID ) -- if find one return its address function Create_New_Sprite3(adr) if adr < 0xFFFFB0DE or adr >= 0xFFFFCA98 then return -1 end local object_size = 0x4A local a1temp = adr local d0temp = (( 0xFFFFCAE2 - adr ) / object_size ) -1 i = d0temp while i > 0 do a1temp = a1temp + object_size if memory.readlong(a1temp) == 0 then return a1temp end i = i - 1 end return -1 end An example of writing object pointer code Obj_SOZ_Ghosts to the first available slot in Dynamic Object RAM: Obj_SOZ_Ghosts = 0x8EFC8 Address = Create_New_Sprite() memory.writelong(Address,Obj_SOZ_Ghosts) An example of writing object pointer code Obj_FBZEggPrison to the first available that is after slot 0xFFFFB7CE in Dynamic Object RAM: Slot = 0x0xFFFFB7CE Obj_FBZEggPrison = 0x89AEC Address = Create_New_Sprite(Slot ) memory.writelong(Address,Obj_FBZEggPrison)