User File #638532977675725167

Upload All User Files

#638532977675725167 - Shinobi 3 - Test for Special Glitched Jump State For Continuous Mid Air Jumping

shin3_special_jump_state.lua
32 downloads
Uploaded 6/6/2024 7:09 PM by CoolHandMike (see all 27)
BaconOmelette found this bug that allows continuous jumping in mid air and we have been testing it out. This lua script will test for when it is possible to continually jump in mid air. It seems to occur when you go onto an elevator or when Joe Musashi somehow ends up being pushed down inside a moving platform. Then jumping and attacking is possible in a loop among other actions like running.
If someone else wants tackle this to find improvements to the current routes or alternative spots to activate this go ahead. You could join us in the Shinobi discord linked below if you wish.
The current tas features several spots where this state is active. with the script running it should be obvious in the section with the sludge area in the BioWeapon level in particular. Shorter example on the long elevator section in 2-1.
Original Posts
Shinobi 3 Discord https://discord.gg/GA3Y4jz
Shinobi 3 speedrun page https://www.speedrun.com/shinobi3
Current Tas (state is active in certain spots in this) https://tasvideos.org/3949M
 local success, migration_helpers = pcall(require, "migration_helpers");
    if success and migration_helpers.EmuHawk_pre_2_9_bit then bit = migration_helpers.EmuHawk_pre_2_9_bit(); end
	
local ninja_state = 0x00;
local is_special_jump_state;
while true do
	
	--console.log( mainmemory.getname());
	memory.usememorydomain("68K RAM");
	 ninja_state = memory.readbyte(0x4158);
	 	--console.log(  client.getversion());			
				
	  if client.getversion() == "2.3.1" then
		is_special_jump_state = bit.band(ninja_state , 0x01);
	  end
	   if client.getversion() == "2.4.2" then
		is_special_jump_state = bit.band(ninja_state , 0x01);
	  end
	  if client.getversion() == "2.9.1" then
	  is_special_jump_state = bit.band(ninja_state , 0x01);
	 --is_special_jump_state = ninja_state & 0x01;	
	  end
	  
	--console.log("state: " .. bizstring.binary(ninja_state));
	 if  is_special_jump_state == 0x01 then  
		console.log("is_special_jump_state: " .. is_special_jump_state);
		console.log("frame: " .. emu.framecount());
		--console.log("state: " .. ninja_state);
		console.log("state: " .. bizstring.binary(ninja_state));
	end	 	 	 
	emu.frameadvance();
end