This is a 16 frame improvement to the published TAS of this game. See the author's comments for that TAS for some details into the physics of the game.
  • Emulator used: FCEUX 2.20.20
  • Aims for fastest possible time

MESHUGGAH's comments

I watched Randil's previously published TAS to see if it's possible to improve either the end of level fights or reduce the position sacrifices in 2 levels. It was already perfect but I found you can reach the rocket launcher fairly earlier by jumping from proning.
The only place where this saves time is the final level's final rocket launcher because the spawn time of the enemies are timed and unmanipulatable.
I've asked Randil to submit this run and listing me as a co-author, this is the result.
See you until my next TAS =)

Randil's comments

I don't have that much to say here since I didn't really have a hand in this submission other than submitting it. I will say though than I'm glad that other TASers have the same taste in games that I have :) I think this submission goes to show that it's hard to squeeze out frames from this TAS. I hope you like it!
I'm also happily surprised by the amount of submissions with my name on we've had recently considering that I haven't lifted a finger in terms of TASing in at least a year. :)

turska: Replaced movie file.

Tompa: Claimed for judging!
Tompa: Not much has been said, not much to be said. Accepted as an improvement to the published run!
Guga: Processing...

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14884
Location: 127.0.0.1
This topic is for the purpose of discussing #4590: Randil, MESHUGGAH's NES Rush'n Attack in 09:35.64
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
A fair note, the TAS aims for shortest input time and doesn't tries to reduce the lag frames at the end of the final level (the sprite spam for the destroyed rocket), so the credits only starts 13 frames faster. Those lag frames appear ~10 seconds after last input.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Skilled player (1150)
Joined: 5/11/2011
Posts: 425
Location: China
Did you upload the wrong movie file? I only find the 1p's input.
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
You are right. Forgot to export P2. Please replace with User movie #20907392021731500 (feel free to rename the file)
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
PCachu
He/Him
Joined: 10/1/2009
Posts: 166
Otacon was right -- truly, love can bloom on the battlefield.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14884
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [2800] NES Rush'n Attack "2 players" by Randil, MESHUGGAH in 09:35.64
Arc
Editor, Experienced player (768)
Joined: 3/8/2004
Posts: 534
Location: Arizona
You didn't try the idea that I suggested five years ago to avoid climbing the ladder on the last level? http://tasvideos.org/forum/viewtopic.php?p=237992
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Even the fact that I can go game over is new to me. I will check it out. I only tried to minimalize the position sacrifices in the levels (as I stated in the submission text). edit: I know that if someone dies, the camera doesn't rolls forward. So you mean you somehow do game over fast enough to while keep it rolling by the time Red finishes climbing the ladder? edit2: ahaaa, so getting game over doesn't stops the camera. Yes, that would save 12 + blue sacrifices frames (my raw guess is ~50 frames total).
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
MESHUGGAH: See? People can miss things.
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.
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
feos wrote:
MESHUGGAH: See? People can miss things.
It took me nearly a day to realize this couldn't be more ironic. (judging you for something that's not even part of your role: fallin in to this mistake myself here by not looking for the informations (Arc's 2010 improvement post) of this game's thread; not taking this submission as seriously as I did with other TASes) I'm planning to make another stab on this game from the beginning probably soon. This will be a good reason for me to finally stop doing level 1 WIPs and also for finally making a newbie HUD template (which will probably use this game as an example). edit: like this. Unfortunately still requires some LUA scripting and programming knowledge but with some tweaking you should be able to use it.
Language: lua

--[[ MESHUGGAH's HUD Template This template features an example to NES Rush'n Attack v contains RAM addresses of position values (hexadecimal) p positon values stored here after reading memory from location v (memory.readbyte) pp previous position values stored here to compare with new positions on next frame --]] -- Variable array: P1 X, P1 Y, P2 X, P2 Y, Camera X local v = { 0x503, 0x505, 0x523, 0x525, 0x31 } -- data structure for rush'n attack, 32 bytes per object -- question mark notes boolean -- 0x500 alive?, state, 02, X, subX, Y, subY, 08, 09, 0A, 0B, 0C, 0D, palette, sprite -- 0x510 in jump?, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, sprite timer -- Position array local p = {} for i = 1, table.getn(v) do p[i] = 0 end -- Previous position array local pp = {} for k,v in pairs(p) do pp[k] = v end ----------------------------------------------------------------------- local function objects() -- display ID if alive for i = 0, 15 do if memory.readbyte(0x500+i*32) ~= 0 then gui.text(memory.readbyte(v[1]+i*32),memory.readbyte(v[2]+i*32)+40,i,"#FFFFFFFF","#FF000080") end end --gui.text(1,9, end local function hud() -- Display object's ID and a simple box around them (not actual hitbox positions) objects() -- Read new positions for i = 1, table.getn(v) do p[i] = memory.readbyte(v[i]) end -- Anything else you would like to display? gui.text(1,1,string.format("CamX %3d (%d)",p[5],pp[5]-p[5]),"#FFFFFFFF","#00000080") -- Display positions for players gui.text(p[1],p[2]+48,string.format("X %3d (%d)\nY %d (%d)",p[1],pp[1]-p[1],p[2],pp[2]-p[2]),"#FFFFFFFF","#00000080") gui.text(p[3],p[4]+48,string.format("X %3d (%d)\nY %d (%d)",p[3],pp[3]-p[3],p[4],pp[4]-p[4]),"#FFFFFFFF","#00000080") -- Store positions to compare them in next frame for k,v in pairs(p) do pp[k] = v end end emu.registerafter(hud)
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Experienced player (699)
Joined: 2/19/2006
Posts: 742
Location: Quincy, MA
I currently hold the real-time speedrun for this. I'm going to examine this a bit more as well. I'll let you know if I find anything. :) EDIT: Why was this downgraded to the vault? :(
Super Mario Bros. console speedrunner - Andrew Gardikis
Arc
Editor, Experienced player (768)
Joined: 3/8/2004
Posts: 534
Location: Arizona
I made a video for the idea that I described. Avoid climbing the mined ladder on level 6: Link to video