1 2
12 13 14
20 21
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
Feos: Yes I improved. For latest syncing version check my the movie I linked. I gained improvements by doing actions faster, some actions later, very good positioning and shortening jumps. This is a result of tasing the game multiple times (it's the 25th time now) frame by frame using TASeditor. The rerecord count for this project is..... god.... I have a 3438 frames long version (13 frames improvement) but couldn't manipulate the game end. I soon upload it if I've made it. edit: WIP unfinished (will be manipulated later) http://tasvideos.org/userfiles/info/2275432265444753 - music not changed http://tasvideos.org/userfiles/info/2275234369181302 - music changed
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
MESHUGGAH
Other
Skilled player (1889)
Joined: 11/14/2009
Posts: 1349
Location: 𝔐𝔞𝔤𝑦𝔞𝔯
So back to battletoads glitched... for whatever reason, I'm able to get better (closer to the right edge of the screen) by using P1 intead of P2 for that goal. Current improvements are: -1 frame improvement at level 1 for using P1 to go to warp -2 frame improvement at level 3 for using only P2 to hit the last enemy (with big kick) -2 frame improvement at level 3 for using P1 to get the jet. I hope all these improvements will fit together and let me to manipulate no game over easily... More info and wips as soon as I compile all the improvements and finish optimizing every section again. Side note: had absolutely no luck for ending the game without inputting at control frames (every 2nd frame after respawn chained up with ABSTUDRL). edit 1: Good news is that I already have a 5 frames improvement (look above) that successfully plays the game, however I found a lot of improvements (all comes from the fact that Zit (the green one) is faster than Pimple) that WOULD save frames but makes a ridiculously bad disadvantage for situations when the camera locks earlier which gives me an unimprovable situation for example at Level 3 3rd enemy (after the 3 invaders). All I can say is "coming soon". I hope I can get enough frames to be able to get 1 cycle earlier of the Rat spawn timer. Next WIP will be uploaded after I get something good enough. edit 2: Had no luck to implement every improvement, but it's 3411 frames long (11 frames improvement) thanks to using Zit in 1st level and different last rat fight (mostly). It seems its truly impossible to improve the rat timers. So now I'm investigating is it possible to reduce the ending input (which I'm pretty sure but had not enough luck). I nearly saw every possible outcomes, I think I will make some nice gif animations when I'm done.
PhD in TASing 🎓 speedrun enthusiast ❤🚷🔥 white hat hacker ▓ black box tester ░ censorships and rules...
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/28953286712756335 I tired to make a youtube upload but it just wasn't working out, sorry. Alright! Finally we can present WIP 1 of Battletoads one player warpless. This run plays up through the turbo tunnel skip. The skip itself can probbly be improved a bit, but I wanted to make sure to give time for people to comment on everything up to that point before I finalize it, just in case some funny sync stuff happens. Anyway the main improvements over the current published run are: -Reduce lag as much as possible in level 1 by using the sword. The boss in this level fires when a time at $0B rolls over from FF to 00. So basically, you can play the level slower using the sword to save on super move lag while still beating the boss at the same time. -Remove super move lag from killing first 4 chompers in stage 2. I found this trick by accident, somehow it removes the animation of actually hitting the enemy since you hit the wall simultaneously. - Turbo Tunnel Skip: As demonstrated by feos in the GIF above as well as by real time runners. A lot of optimization work has already gone into this so far and i am happy with the results the team has achieved so far, I do expect level 4 to take a while and we are simultaneously working on the 2 player warpless as well, so there is lot's of time if anyone has any input, do post it!
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
^ thank you feos! Should save us some time in working on that one part. Well I guess it's time to move on to level 4. We'll try to post a WIP every few levels.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Try to post a WIP more frequently so no idea appears too late.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Link to video Here is a somewhat optimized level 4. I tried different tricks to change the route and / or avoid checkpoints but it seems you ultimately have to hit all the checkpoints to beat the level. I don't have any new ides how to change the route and this follows the same route from the 2 player warps run. If anyone has any ideas I would like to hear them! Here is the file: http://tasvideos.org/userfiles/info/29170580927508065
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
This doesn't spawn the snowman, but now we know there's a spike-invincibility period after getting hit.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
^ oh that is a clever trick I didn't think of that, thanks feos : ) yeah I tried something similar on that neighboring slope but once I noticed the snowman didn't spawn it proved too slow to be useful. I think the clear point is pretty far away.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2122)
Joined: 11/13/2006
Posts: 2793
Location: Northern California
Brainstorming here so I don't forget later when I have time to work: Is that spawn based on a trigger? If so, do we know where it is? Could it still be faster to skip ahead then work backward to activate it?
TASvideos Admin and acting Senior Judge 💙 | Cohost
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
To make it work you have to spawn that lonely snowball that flies to the right as you go left (with a snowman right after it). It's really far to the right, so we lose time by getting hit and then backtracking. But I haven't actually compared. Except for that fact that you can also get hit on the moving platform and then run off through the spikes. It also hasn't been proven that skipping checkpoints you can spawn the later checkpoints. Might need testing.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Samsara wrote:
Brainstorming here so I don't forget later when I have time to work: Is that spawn based on a trigger? If so, do we know where it is? Could it still be faster to skip ahead then work backward to activate it?
The snowball looks like it just spawns at a particular screen scroll point. The snowman looks like it spawns somewhere around where the first snowman is after the big icicle falls down. It looks like the time it takes for the snowball to hit you plus the agonizingly long time it takes to get up again is too long to save time, so I don't currently think this trick is a time saver.
feos wrote:
It also hasn't been proven that skipping checkpoints you can spawn the later checkpoints. Might need testing.
I have spawned the level end checkpoint while skipping other checkpoints, but it doesn't matter because the level still won't end.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
It counts how many checkpoints you've activated, so to do that trick you most likely need to spawn and activate 2 checkpoints twice.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Well the easiest checkpoints to respawn are 2 and 6. 2 doesn't help that much since skipping 1 doesn't save enough time. But, Respawning 6 multiple times may be a time saver. My thought is that instead of doing checkpoints 1-2-3-4-5-6, we might be able to do 1-2-6-6-6-6. It takes ~400 frames to loop around repeatedly to respawn-reactivate. Currently it takes 1850 frames to go the current route to the point of the first loop. Skipping 3 checkpoints means we would use 1200 frames multi spawning checkpoint 6, leaving us only 650 frames to do all the clipping, which doesn't seem possible at the moment. But the loop can still be improved, in my testing so far I have gotten around 380 frames instead of 400, giving a whole extra second for the clipping. 6-6-6-6-6-6 may even be possible, it all depends how easy it is to clip down there. All of this needs testing.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Can you draw, so that I could help with planning? http://www.vgmaps.com/Atlas/NES/Battletoads-Level04-ArcticCaverns.png
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
^it wasn't hard to do so I just quickly TASed the route, it's easier to show: http://tasvideos.org/userfiles/info/29191056658029890 You can see that not only is it too slow but it also doesn't spawn the ice block or checkpoint. I think this is because we also need to pass through the hidden clear points in order too. The game spawns the snowmen from one level above. To pass that point I would need to go backwards which would make it even slower, so looks like this idea is a bust for now. But that second clip should be faster then that snowball clip in your GIF, so might still be a time saver in that one part.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Hey I tried that! I was zipped right and spiked! So I started the damage skip attempts. I'm going to look at the checkpoint code tonight or tomorrow anyway.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
@feos: do you know if the surf city skip is possible for one player? I am testing it out but can't seem to clip down and die.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Send the the movie of that level, I've never been there actually.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
http://tasvideos.org/userfiles/info/29239365814639538 here it is, it is also my most optimized level 4 at this moment. Videos I see seem to be pretty easy to do with 2 players, but I haven't seen a one player version and I wonder if it is possible since the screen scrolls a bit differently with only 1 player.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Regarding spawns, it seems everything depends not on checkpoints you activate, but simply on level config pointer incrementing. Whenever camera reaches some place (direction won't matter), it spawns what config pointer tells it, and if it can't get to there, config pointer won't change. It knows that it should stop spawning if the pointed value is $FF. Download objects.lua
Language: lua

function objects() CamX = memory.readwordsigned(0x87) CamY = memory.readwordsigned(0x89) LevelCheckpointVal = memory.readbyte(0x585) newVal = memory.readword(0xB7) PointedAddr = memory.readbyte(newVal) gui.text(200,1, "ChP: "..string.format("%02X",LevelCheckpointVal), "#00ff00ff") gui.text( 95,1, string.format("$%04X:%02X",newVal,PointedAddr), "#00ff00ff") for i = 0, 14 do id = memory.readbyte(0x3c1+i) x = memory.readword(0x3FD+i,0x3EE+i) - CamX z = memory.readword(0x439+i,0x42A+i) y = memory.readword(0x41B+i,0x40C+i) - z - CamY xSh = memory.readbyte(0x484+i) ySh = memory.readbyte(0x493+i) zFl = memory.readbyte(0x475+i) move = memory.readbyte(0x4A2+i) state = memory.readbyte(0x4B1+i) ZspdSub = memory.readbyte(0x4CF+i) hp = memory.readbyte(0x51a+i) linked = memory.readbyte(0x529+i) linker = memory.readbyte(0x538+i) dthTmr = memory.readbyte(0x574+i) follow = memory.readbyte(0x592+i) lives = memory.readbyte(0x11+i) invis = SHIFT(move,7) if x< 1 then x= 1 elseif x>242 then x=242 end if y<10 then y=10 elseif y>232 then y=232 end if id>0 then gui.text(x, y, string.format("%X",id)) end --gui.text(1+i*16+18, 1, i) end end gui.register(objects);
EDIT: 1 player clipping depends on positioning very heavily. The lowest I can get is Z=240.248. EDIT:
Language: asm6502

surfcity_obj_Y_limits: $B3CA:A9 A8 LDA #$A8 $B3CC:DD 1B 04 CMP Objects_Ypos_L,X @ Objects_Ypos_L = #$F0 $B3CF:90 03 BCC loc_5000_B3D4 loc_5000_B3D4: $B3D4:A9 E6 LDA #$E6 $B3D6:DD 1B 04 CMP Objects_Ypos_L,X @ Objects_Ypos_L = #$F0 $B3D9:B0 03 BCS locret_5000_B3DE $B3DB:9D 1B 04 STA Objects_Ypos_L,X @ Objects_Ypos_L = #$F0 locret_5000_B3DE: $B3DE:60 RTS (from surfcity_obj_Y_limits) -----------
And then this happens
Language: asm6502

$BCE0:B1 19 LDA ($19),Y @ $C14F = #$36 A:00 X:00 Y:01 $BCE2:85 15 STA tmp_var_15 = #$F0 A:36 $BE04:06 15 ASL tmp_var_15 = #$36 A:00 $BE06:2A ROL A:00 $BE07:06 15 ASL tmp_var_15 = #$6C A:00 $BE1A:BD FD 03 LDA Objects_Xpos_L,X @ Objects_Xpos_L = #$88 A:02 $BE1D:49 1F EOR #$1F A:88 $BE25:29 1F AND #$1F A:97 $BE27:85 8B STA tmp_var_8b = #$00 A:17 $BE31:A5 8B LDA tmp_var_8b = #$17 A:0C $BE33:18 CLC A:17 $BE34:65 15 ADC tmp_var_15 = #$D8 A:17 $BE36:85 15 STA tmp_var_15 = #$D8 A:EF $BD32:A5 15 LDA tmp_var_15 = #$EF A:F7 $BD34:85 17 STA tmp_var_17 = #$F0 A:EF $BD7A:A5 17 LDA tmp_var_17 = #$EF A:0C $BD7C:9D 1B 04 STA Objects_Ypos_L,X @ Objects_Ypos_L = #$E6 A:EF
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.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Function to simulate the above algorithm.
Language: lua

rb = memory.readbyte memory.registerexecute(0xBCE0, function() yr = memory.getregister("y") if yr==2 then local a = rb(memory.readword(0x19)+yr) local xp = rb(0x3fd) local v8b = AND(XOR(xp,0x1f),0x1f) v15 = AND(SHIFT(a,-2)+v8b,0xff) end end)
Print v15 elsewhere. Note that it is directly written to your Z position once you're out of bounds. The game forces you in bounds every frame (see the first code snippet), but then that weird routine occurs and it gets rewritten (second snippet). Wrong input finally gets you in bounds forever, right input might help clip lower. Will see what affects what and why that second routine happens. EDIT: Once you've clipped down, you will remain there as long as you keep your height less than 88 (by mashing D at right times). Note that it counts upwards. And you will be clipping lower as long as your X pos is decreasing (every extra pixel to the left gives you extra pixel downwards). Which is the hardest past :D Next step: find out why it even clips.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
Thanks for your research efforts feos, it seems like the difficulty then is keeping going to the left while the scrolling is pushing you to the right, which I guess is why it seems so much easier in 2 player. For the time being I am doing a rough draft of level 5 assuming the clip will not be possible, but I do hope it will be!
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
http://tasvideos.org/userfiles/info/29304411521138824 There you go (it's NOT what you think). Also see branch 1.
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.
Alyosha
He/Him
Editor, Expert player (3532)
Joined: 11/30/2014
Posts: 2728
Location: US
wow nice find! I had actually tried something similar but failed, glad you got it working. EDIT: seems like if you are on the left side of the wall you go down and when you are on the right side you go up. I haven't found a real use for the downward scrolling yet, but maybe it could come in handy who knows, this trick might have some more potential. http://tasvideos.org/userfiles/info/29332821195644672 Here is my most up to date file. It contains feos' new trick as well as other level 4 improvements. It also completes the first half of level 5, but so far there is nothing really new there.
1 2
12 13 14
20 21