What feos and Koh1fds have done to the xipo's run. Watch alternate encode and see yourself.
Improvement over xipo's run, thanks to the glitch used in the last level.

Game objectives

  • 1 player
  • Heavy glitch abuse
  • Uses death to save time

Comments

Our wise glitch stalker Koh1fds granted us yet another glitch leading to a serious submission.
All the input is xipo's, except for the end of the last level.

Glitch

Enemy with ID=$22 needs to spawn in slot 5, this results in writing of $80 to address taken from the value of RNG ($23, 2 bytes). If that value is $005C (or $085C/$105C/$185C, all of which are mirrors of $5C), level end routine will almost certainly be executed ($3E becomes 1 after $5C becomes $80).

RNG

$07:FB5C: INC RNG1
$07:FB5E: LDA RNG1
$07:FB60: ADC GlobalTimer
$07:FB62: STA RNG1
This routine is rolled infinitely during all the spare CPU time. Player actions affect RNG, but there's no way you could predict it.

feos's comments

Koh1fds found the glitch that corrupts memory and managed to end the level using it, avoiding the boss fight. I reimplemented it from scratch, after basic optimization of the route that's different from the previous 1p run.
Also, this is yet another game I played as a kid. I only TAS games that I played back then (for whatever reason), if you ignore Ninja Gaiden.

Helpers

  • TheAlmightyGuru
  • FCEUX debugger & tracer
  • This script (only works in that last level):
rb = memory.readbyte
function objects()
	camx = memory.readwordsigned(0xFD,0x92)
	camy = memory.readwordsigned(0xFC,0x82)
	px   = rb(0x54C) + camx
	py   = rb(0x532) + camy
	a11  = rb(0x11)
	if a11==8 or a11==0xF8 then
		color = "green"
		if a11==8
		then sp = "left"
		else sp = "right"
		end
	else sp = "-"; color = "white"
	end
	gui.text(0,40,string.format("pX: %d\npY: %d",px,py) )
	gui.text(0,60,string.format("%X: %s",a11,sp),color)
--	gui.text(0,60,string.format("cX: %d\ncY: %d",camx,camy) )
	for i=0,13 do
		id = rb(0x6D8+i)
		y  = rb(0x522+i)
		x  = rb(0x53C+i)
		hp = rb(0x676+i)
		st = rb(0x668+i)
		if st > 0 then
		--	gui.text(x,y,string.format("%d",i) )
		end
		gui.text(0,0,"slot:\nid:")
		if id ~= 0x7F and st > 0 and x~=0 then
			gui.text(i*17+20,0,string.format("%d\n%X",i,id) )
			gui.line(i*17+22,16,x,y,0xffffff80)
		end
	end
end
gui.register(objects)

Tompa: Judging time.
Tompa: Replaced the run with a 373 frames faster version.
Tompa: Nice, surprising and weird ending of the run! Good improvement. Accepting.
feos: Pub.


Player (98)
Joined: 12/12/2013
Posts: 379
Location: Russia
feos wrote:
r57shell wrote:
Need to describe more detailed?
Submission #5251 wrote:
What feos and Koh1fds have done to the xipo's run.
If you think it's alright... Okay.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Are you sure you watched the real encode of the movie? That's exactly how it looks like.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Banned User
Joined: 10/29/2016
Posts: 14
This movie is too slow. I have a method to promote 15 second in Stage 4 elevator, see the detail BUG http://v.youku.com/v_show/id_XMTU3OTM4OTQxMg==.html
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Haha, awesome trick! Xipo, have you seen this?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Banned User
Joined: 10/29/2016
Posts: 14
feos wrote:
Haha, awesome trick! Xipo, have you see this?
yes twice elevator bug means can promote about 30 seconds total
Player (172)
Joined: 7/1/2016
Posts: 263
NESexpert wrote:
This movie is too slow. I have a method to promote 15 second in Stage 4 elevator, see the detail BUG http://v.youku.com/v_show/id_XMTU3OTM4OTQxMg==.html
How to do it? I try to recreate this, but I can't do it
Banned User
Joined: 10/29/2016
Posts: 14
Koh1fds wrote:
NESexpert wrote:
This movie is too slow. I have a method to promote 15 second in Stage 4 elevator, see the detail BUG http://v.youku.com/v_show/id_XMTU3OTM4OTQxMg==.html
How to do it? I try to recreate this, but I can't do it
Xipo is redoing this movie and will improve to 11:20 according to this trip
Player (172)
Joined: 7/1/2016
Posts: 263
NESexpert wrote:
Xipo is redoing this movie and will improve to 11:20 according to this trip
But this doesn't explain how to do it.
Banned User
Joined: 10/29/2016
Posts: 14
Why Xipo not renew this movie, because he donnot know this skill. He always think his movie is fastest, and think my suggestion is useless. But now, he donnot know how to improve such as 30 seconds, and I don't want to tell him the skill. If he isn't proud, I will tell him some trick :)