User File #43915863041101784

Upload All User Files

#43915863041101784 - George foreman's RNG watcher lua

George Foreman's KO Boxing (E)rng.lua
902 downloads
Uploaded 12/21/2017 5:54 PM by zoboner (see all 35)
When you play the lua, it open an box to watch on the down side on screen, to have all informations.
On left you watch, all the buttons that are currently pressed by the user.
At right side of inputs watcher, you have "enemy fall", to know if enemy fall before your hit are finish.
"N° time enemy fall", to know how time the enemy are fallen (1,2 or 3)
"get up", to know how many time you wait for that enemy get up after an K.O (on K.O screen).
"X-hit", to know the damages value of combos or simple hit.
At right side you can watch RNG indicator. To use correctly this information you should know that :
It have 2 conditions to obtain a technical knock out, enemy must be 2 times K.O before the T.K.O and at the 3rd K.O he must have 0 HP.
When he is K.O the script advance and make the emulator in pause some frames before that the RNG take decision, at this moment you must past some lag frames and when you have the first blank frame you must watch the RNG indicator, if it is green you can continue because you have a perfect condition for that enemy get up at 5 (it's the minimum time to get up and the only faster solution).
It have not other solution to counter the RNG and you can won 5,33 sec by than the actual run, because in this run it have 4 times where enemy get up slower (1 K.O at 7 and 3 K.O at 6), 1 sec in game time (K.O) is equal to 64 frames, you can save 320 frames.
If you have a question to use send me a PM.

c1 = 'down'

local function watch_all()
local RNG_numRam = mainmemory.read_u8
local enemy_fall = mainmemory.read_u8
local number_enemy_fall = mainmemory.read_u8
local know_timeTOgetUP = mainmemory.read_u8
local HP_nmi = mainmemory.read_u8
local HP_player = mainmemory.read_u8
local timer_min = mainmemory.read_u8
local combo_value = mainmemory.read_u8
local rng = RNG_numRam(0x010E)
local nmif = enemy_fall(0x062D) 
local nnmif = number_enemy_fall(0x0138)
local kttu = know_timeTOgetUP(0x0423)
local hp = HP_nmi(0x0129) 
local hpp = HP_player(0x0128) 
local tim = timer_min(0x0135) 
local comb = combo_value(0x012B) 
local black = 0xFF000000
local blue = 0xFF0000AA  
local no = 0x00FFFFFF
local orange = 0xFFFF9900
local white = 0xFFEEEEEE
local grey = 0xFFBBBBBB
local grey2 = 0xFF999999
local red = 0xFFFF66666
local green = 0xFF00CC00 
local green2 = 0xFF00AA00 
local green3 = 0xFF00EE00 
local ipt = movie.getinput(emu.framecount())

if tim > 0 then
gui.drawRectangle(10,167,234,27,white,white)	
gui.drawRectangle(11,168,232,26,grey,grey)	
gui.drawRectangle(12,169,230,25,black,black)
gui.drawRectangle(25,165,204,27,white,white)	
gui.drawRectangle(26,166,202,26,grey,grey)	
gui.drawRectangle(27,167,200,25,black,black)
gui.drawText(32,167,'enemy fall:',grey2,no,10)  
gui.drawText(33,168,'enemy fall:',white,no,10)          
gui.drawText(32,168,'enemy fall:',blue,no,10) 
gui.drawText(32,177,'n time enemy fall:',grey2,no,10)
gui.drawText(33,178,'n time enemy fall:',white,no,10)     
gui.drawText(32,178,'n time enemy fall:',blue,no,10)
gui.drawText(144,178,nnmif,red,no,10)
gui.drawText(143,178,nnmif,orange,no,10)
gui.drawText(168,167,'get up:',grey2,no,10)
gui.drawText(169,168,'get up:',white,no,10)
gui.drawText(168,168,'get up:',blue,no,10)
gui.drawText(159,17,hp,grey2,no,9)
gui.drawText(160,18,hp,white,no,9)
gui.drawText(159,18,hp,blue,no,9)
gui.drawText(15,17,hpp,grey2,no,9)
gui.drawText(16,18,hpp,white,no,9)
gui.drawText(15,18,hpp,blue,no,9)
gui.drawText(168,177,'X-hit:',grey,no,10)
gui.drawText(169,178,'X-hit:',white,no,10)
gui.drawText(168,178,'X-hit:',blue,no,10)
gui.drawText(204,178,comb,red,no,10)
gui.drawText(203,178,comb,orange,no,10)
gui.drawText(228,171,'RNG',grey2,no,8)
gui.drawText(229,170,'RNG',white,no,8)
gui.drawText(228,170,'RNG',blue,no,8)
gui.drawEllipse(231,180,10,10,grey,black)
gui.drawRectangle(13,173,10,4,grey2,black)
gui.drawRectangle(16,170,4,10,grey2,black)
gui.drawRectangle(14,174,8,2,black,black)
gui.drawText(13,182,'1',grey2,black,8)
gui.drawText(18,182,'2',grey2,black,8)



if nmif > 0 then 
gui.drawText(99,168,c1,red,no,10)
gui.drawText(98,168,c1,orange,no,10)
elseif nmif == 0 then
gui.drawText(99,168,c1,no,no,10)
gui.drawText(98,168,c1,no,no,10)
end

if kttu > 0 then
gui.drawText(212,168,kttu-1,red,no,10)
gui.drawText(211,168,kttu-1,orange,no,10)
elseif kttu == 0 then
gui.drawText(212,168,kttu-1,black,black,10)
gui.drawText(211,168,kttu-1,black,black,10)
end

if rng == 0
  or rng == 8 
    or rng == 16
	  or rng == 24
	    or rng == 32
		  or rng == 40
		    or rng == 48
			  or rng == 56
			    or rng == 64
				  or rng == 72
				    or rng == 80
					  or rng == 88
					    or rng == 96
						  or rng == 104
						    or rng == 112
							  or rng == 120
							    or rng == 128
								  or rng == 136
								    or rng == 144
									  or rng == 152
									    or rng == 160
										  or rng == 168
										    or rng == 176
											  or rng == 184
											    or rng == 192
												  or rng == 200
												    or rng == 208
													  or rng == 216
													    or rng == 224
														  or rng == 232
														    or rng == 240
															  or rng == 248 then
															    gui.drawEllipse(232,181,8,8,green,green3)
                                                                gui.drawPixel(234,181,green2)
																gui.drawPixel(232,183,green2)
																gui.drawPixel(240,183,green2)
																gui.drawPixel(238,181,green2)
															    gui.drawPixel(234,189,green2)
																gui.drawPixel(232,187,green2)
																gui.drawPixel(240,187,green2)
																gui.drawPixel(238,189,green2)
end

if ipt["P1 Up"] then
gui.drawRectangle(17,171,2,2,orange,red)
end
if ipt["P1 Down"] then
gui.drawRectangle(17,177,2,2,orange,red)
end
if ipt["P1 Left"] then
gui.drawRectangle(14,174,2,2,orange,red)
end
if ipt["P1 Right"] then
gui.drawRectangle(20,174,2,2,orange,red)
end
if ipt["P1 B1"] then
gui.drawText(13,182,'1',red,no,8)
end
if ipt["P1 B2"] then
gui.drawText(18,182,'2',red,no,8) 																
																																
end
   end
      end
	  
local function speed_pause()
local number_enemy_fall = mainmemory.read_u8
local timer_min = mainmemory.read_u8
local enemy_fall = mainmemory.read_u8
local nnmif = number_enemy_fall(0x0138)
local tim = timer_min(0x0135) 	      
local nmif = enemy_fall(0x062D)



if nmif > 0 and tim > 0 and nnmif > 0 and nnmif < 3 then 
client.speedmode(100)
client.unpause()
end
if nmif == 0 and emu.islagged() and tim > 0 and nnmif > 0 and nnmif < 3 then
client.pause()
end

end
   



while true do
speed_pause()
watch_all()
	emu.frameadvance();
end