IST
Joined: 8/26/2008
Posts: 103
adelikat wrote:
Are you familiar with this?
he posted in that submission's topic, dude.
Former player
Joined: 7/14/2006
Posts: 51
Location: Mexico
I found a very nice glitch, really similar to the Megaman games wall zipping, it'll force me to redo 1-2, 1-3 and 2-2 and seriously consider my strategies for any kind of vertical sections. All thanks to the awesome properties of the UP chain attack, if you face away from the wall, jump and chain UPwards you can force Hagane into the wall for about ~10 frames, afterwards the game ejects you from it. If you do a flamming kick (down while jumping) when halfway inside the wall, the game will think you reached the ground, allowing you to jump again and repeating the same glitch for insanely fast wall climbing. If you reach a corner while glitching Hagane can zip through the floor, but unfortunately the game kills you if you reach the side of the screen. Very awesome and will have to do some more testing. I'll post the movie so you guys can compare betwen regular walljump(2-2) and glitched walljump (2-3). Starts in frame 15329. http://dehacked.2y.net/microstorage.php/info/340951554/HaganeGlitch.smv
Active player (407)
Joined: 3/22/2006
Posts: 708
Great work. I think if you're going to redo stuff anyway, some of the automatic parts could be a little flashier. I personally don't like overusing the downward attack and bouncing around a lot. It looks great when you're rushing through the level, but when everything stops and you can do anything, it seems like just an easy out. Would you object to working together on this? Your innovations are really great and I wonder if I might be able to help some of the auto-scrolling parts and boss battles.
Former player
Joined: 7/14/2006
Posts: 51
Location: Mexico
I don't see any problems, I would be delighted to have a joint TAS. Especially since I wasn't looking forward to redoing the boss of 3-4. :P I'm always on MSN, and I lurk the TASVideos IRC channel on weekends. MSN: lisandrog@hotmail.com
Active player (407)
Joined: 3/22/2006
Posts: 708
Great. :D I love doing boss battles. Just sent an MSN invite.
Active player (407)
Joined: 3/22/2006
Posts: 708
Good news. Tiger- and I have officially joined forces to TAS Hagane. We've already found a way to improve 1-1 by 2 frames and because of the cool glitch Tiger- has discovered, there'll probably be a huge improvement to the subsequent stages as well.
Active player (407)
Joined: 3/22/2006
Posts: 708
Update: We're done world 2 and starting on 3. We're currently 3248 frames ahead of GTimekiller's submission.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
You guys are made of awesome. I'm very much anticipating this TAS!
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Active player (407)
Joined: 3/22/2006
Posts: 708
Minor update: We're done world 3. 3740 frames faster than GTimeKiller. Not as dramatic a difference from the last world, but world 3 contains two autoscrolling levels, where the only way to save frames is to touch the boundary of the right screen at the end of 3-4 as quickly as possible. Lag is not a factor in these levels as even with sprites all over the screen, they still end on exactly the same frame as if I kill everything right away. Keeping that in mind, I made sure to put on a show for you guys. Can't wait to show everyone our finished version.
Active player (407)
Joined: 3/22/2006
Posts: 708
World 4 is officially done. That leaves 5. Just one left. Are you guys as excited as I am? Edit: If you're curious, we're now ahead by 5240 frames.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Can't wait. :)
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Active player (407)
Joined: 3/22/2006
Posts: 708
The last two bosses are super annoying. We actually finished and then I realize a bad choice on my part for the second last boss, and fix it to save 109 frames. Then I find another improvement to make. (Edit: Which turns out not to be an improvement. Heh.) That's just that boss. The last boss is an absolute nightmare to optimize. Eight targets, each with their own HP address and each with their own invincibility frames, on a level that scrolls with or without you. It's hard enough optimizing movement through a stage, and optimizing a boss. Doing both at the same time is ridiculous. Every move you make either allows you to stay in pace with the boss or allows you to deal damage with it, so you're constantly having to figure out which sacrifice is the best one to make. Tiger and I have been passing it back and forth like crazy, trying to work out the best way to do it and then I find out we have to do it over again because of a trick to use against the boss right before. Argh! :p
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Dayum! :O [EDIT]
Heisanevilgenius wrote:
(Edit: Which turns out not to be an improvement. Heh.)
Ok, does this mean you're ready to submit?
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Active player (407)
Joined: 3/22/2006
Posts: 708
moozooh wrote:
Ok, does this mean you're ready to submit?
The 109 frame improvement is still an improvement. The other one that I thought might be faster wasn't. Tiger's working on the last boss now. He did a better job with it than I did. He's very talented at exploiting wall glitches.
Active player (407)
Joined: 3/22/2006
Posts: 708
Guess what?
Former player
Joined: 7/14/2006
Posts: 51
Location: Mexico
2006-07-23 08:32:47 2009-08-30 06:52:44 3 years, 1 month, 6 days and 22 hours. (And some hours, minutes and seconds) Such a long time since the first WIP. Thanks to all the community of tasvideos.org, you guys are made of awesome. Special thanks to moozooh, your encouragement helped us inmensely. And HUGE thanks to Heisanevilgenius, without him i would have never finished this game. We will post this TAS as soon as we finish the final write up. Thank you and see you soon.
Active player (407)
Joined: 3/22/2006
Posts: 708
And submitted. Enjoy. :D
Player (37)
Joined: 2/16/2012
Posts: 282
Hello everybody, I don't mean to Necro this thread but I've been working on a real-time speedrun for Hagane and I've found some potential improvements for the TAS. Most of the improvements I've found have to do with some creative uses of bombs. Since I'm working on a real-time run, bombs are valuable because it allows me to still do damage while I'm tumbling, or allow me to get some of the quick kills that would otherwise require perfect execution (Stage 2 Boss). I understand in general it costs 26-30 frames of lag simply to use a bomb, but considering that they're full screen and can be used at any moment they have advantages in a couple other areas as well. The biggest example of this is Shura-Oh (Stage 5 Boss). By delaying the tumble and timing a bomb right, I can get a 1-cycle kill fairly consistently in real time. It saves about 1000 frames compared to a 2-cycle kill. I posted a video of it in action: Link to video Another example is Amano-Ikazuchi, where there are times when I can get a single bomb to hit both the top and bottom heads. Again, these are real-time strats, but I don't think the frame count would be too far off between the two, and it might open some other potential routes for dealing with him. ------------ Now for some other issues. Most of these would be somewhat helpful for a TAS, but are questions mainly for my interest in figuring out real-time routes :p First thing is determining how drops are determined in this game. I've done a lot of searching and checking, but I can't seem to find addresses that will force certain drops. The only thing that always changes when you kill an enemy is your score (both sets of values, in 7E051D-F and 7E0520-2) and a "kill counter" of sorts in 7EAB0C. The kill counter is on a very short cycle, with only 10 or so values. As best as I can tell it isn't used for anything related to the drops. It is related to the order you kill enemies though: I can get consistent drops in stage 1-1 by killing the same enemies each time. At worst I can try to brute-force a proper route to get blue flames/bombs in 1-1, but I'm trying to avoid that if at all possible. The second thing is also related to the RNG: I need to find ways to manipulate the position of the 4-2 miniboss and a consistent manipulation for Shura-Oh. I haven't investigated the 4-2 miniboss yet, but it seems like the position for Shura-Oh's core spawn (and his attacks, to an extent) is not entirely manipulated by your relative position. Going through 5-5 in different ways will result in different core patterns, and occasionally different attack choices. The problem is that even with the same route through the stage and killing the same enemies, his pattern is not guaranteed to be the same. This is really frustrating since I have consistent quick kill strats, but they rely entirely on a correct core spawn point. I haven't fully investigated it yet, but the address determining his attacks and core spawn point are stored in 7E1044. So yeah. Any insight you guys have for these issues would be greatly appreciated :D EDIT: I've found the RNG. Drops and some boss patterns are sourced from 7E00AA-B. The code for the process is below. I haven't looked into exactly what it uses to determine which drops come from what values, but it's useful to set up at least.
c101e1 jsl $c0c434   [c0c434] A:0007 X:0002 Y:0000 S:01e4 D:1180 DB:83 nvmxdiZC V:  2
c0c434 php                    A:0007 X:0002 Y:0000 S:01e1 D:1180 DB:83 nvmxdiZC V:  2
c0c435 phd                    A:0007 X:0002 Y:0000 S:01e0 D:1180 DB:83 nvmxdiZC V:  2
c0c436 sep #$20               A:0007 X:0002 Y:0000 S:01de D:1180 DB:83 nvmxdiZC V:  2
c0c438 lda #$00               A:0007 X:0002 Y:0000 S:01de D:1180 DB:83 nvMxdiZC V:  2
c0c43a xba                    A:0000 X:0002 Y:0000 S:01de D:1180 DB:83 nvMxdiZC V:  2
c0c43b lda #$00               A:0000 X:0002 Y:0000 S:01de D:1180 DB:83 nvMxdiZC V:  2
c0c43d tcd                    A:0000 X:0002 Y:0000 S:01de D:1180 DB:83 nvMxdiZC V:  2
c0c43e lda $aa       [0000aa] A:0000 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdiZC V:  2
c0c440 lsr a                  A:00b0 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizC V:  2
c0c441 lsr a                  A:0058 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  2
c0c442 lsr a                  A:002c X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  2
c0c443 lsr a                  A:0016 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  2
c0c444 sta $28       [000028] A:000b X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  2
c0c446 lda $ab       [0000ab] A:000b X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  3
c0c448 asl a                  A:0067 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  3
c0c449 asl a                  A:00ce X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c44a asl a                  A:009c X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizC V:  3
c0c44b asl a                  A:0038 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizC V:  3
c0c44c ora $28       [000028] A:0070 X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  3
c0c44e eor #$ff               A:007b X:0002 Y:0000 S:01de D:0000 DB:83 nvMxdizc V:  3
c0c450 sta $28       [000028] A:0084 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c452 lda $aa       [0000aa] A:0084 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c454 ora $ab       [0000ab] A:00b0 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c456 bne $c45e     [c0c45e] A:00f7 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c45e lda $aa       [0000aa] A:00f7 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c460 sta $ab       [0000ab] A:00b0 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c462 clc                    A:00b0 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c463 adc $28       [000028] A:00b0 X:0002 Y:0000 S:01de D:0000 DB:83 NvMxdizc V:  3
c0c465 sta $aa       [0000aa] A:0034 X:0002 Y:0000 S:01de D:0000 DB:83 nVMxdizC V:  3
c0c467 lda $28       [000028] A:0034 X:0002 Y:0000 S:01de D:0000 DB:83 nVMxdizC V:  3
c0c469 pld                    A:0084 X:0002 Y:0000 S:01de D:0000 DB:83 NVMxdizC V:  3
c0c46a plp                    A:0084 X:0002 Y:0000 S:01e0 D:1180 DB:83 nVMxdizC V:  3
c0c46b rtl                    A:0084 X:0002 Y:0000 S:01e1 D:1180 DB:83 nvmxdiZC V:  3
Joined: 4/30/2008
Posts: 39
Omnigamer wrote:
Hello everybody, I don't mean to Necro this thread but
Necroing threads is strongly encouraged. Things are much, much easier if all the information is in one place.
Player (37)
Joined: 2/16/2012
Posts: 282
Reposting this from the thread on SDA: ======================== Alright, I've found the relative odds for each of the drops: 1UP: 1.56% Blue Flame: 1.56% Red Flame: 9.38% Kunai: 56.25% Grenade: 26.56% Bomb: 4.69% These are all stored in a 64-byte table at $83/A48E, and are indexed by the 6 most significant bits of the RNG function. RNG function is the process listed a couple posts above, and is the value left in the accumulator after all that. Some other interesting findings tonight: -The RNG proceeds in an entirely predictable manner. Every time it is called, it uses that same process to alter itself. I can check tomorrow to actually verify that it gives a normal distribution, and see how long its period is, but that's just extra stuff. -Some enemies have hard-coded drops, and killing them does not advance the RNG (their explosions still do, however). Axe guys, the bomb bays on the ships in 1-1, and the little floating bombers all fall into this category. -Unfortunately it will not be possible to come up with a route that is able to guarantee drops/boss luck beyond 1-1. I went through the stage pacifist several times in a row, and not once was I able to keep the RNG consistent by the end. -Other things that advance the RNG a ton: bird feathers (after killing them), the hover bombers shooting steam to move left and right, each action an axe guy does, and any time a ship turret fires. I imagine turtle movements and otherwise advance it as well. -I can use all of this information along with the drop table to calculate which numbers will give what drops for the first ~100 iterations of the RNG. I can use that to devise a route that will hopefully guarantee me a blue flame and a couple of bombs. ========================= Most of it doesn't really matter for a TAS, but it is important to know how to affect the RNG for boss manipulations. In particular, Bosses 2, 5, and to some extent 4 can all be manipulated into quicker patterns by messing with the RNG a bit. In particular, Boss 5 can be made even quicker by manipulating three arm pumps (his quickest attack) and then finishing him off with a 1-cycle kill by spawning the core on one of the sides. Setting it up may be difficult, but all the tools are available to you throughout the different levels. Boss 4 can be manipulated into releasing the tiles faster and otherwise giving better positioning for kicks. Boss 2 is already in pretty good shape, but for manipulating it in the future this process will be good to know.
Joined: 7/2/2007
Posts: 3960
I just want to say that I think it's awesome how realtime speedrunners like you are making use of tools to do their research into how the game works. It's a neat bit of crossover between the two communities. Thanks for sharing your results, and good luck with your runs!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Player (37)
Joined: 2/16/2012
Posts: 282
I finsihed up my real-time run, so that's all done with :) 15:31 total; 15:33 done by TAS timing. Now about the currently published TAS, I believe ~20 seconds can be saved with some optimization of the RNG and some small other things. Main points where this will come in: -Stage 2-1 miniboss. He has one pattern where he will rise up and then get very close to the ground, which saves time after you kill him since it's less time until he's off the screen. In my experience it can save close to 60 frames. -The train miniboss in 5-1 can be killed early, but you have to wait for Hagane to walk back to the starting location before you can advance. I think killing it further to the left can save some frames. -Some frames can be saved in 5-3 with a different miniboss pattern. -Shura-Oh. Other than the 1-cycle kill pattern, it saves a bunch of frames if you can manipulate him to do his arm-pump attack 3 times in a row instead of the energy orbs. This is the largest time-saver; probably 1000 or more frames to be saved here. -Amano-Ikazuchi. I think there's at least a couple seconds to be saved here by incorporating bombs into it. I can't say for certain without some experimenting, but there's plenty of time where Hagane cannot hit the faces normally where a bomb can get the job done. Just pointing those out. I don't have enough experience to create a TAS myself, but those are some focal points if anybody else wants to pick up the project at a later time. Also, the game loads from uninitialized addresses at the start of the game for many things. For the most part this doesn't matter, and the most important stuff gets overwritten with proper values. A few very important values don't follow this, though, and it causes some very odd behavior in-game. I've had a few isolated incidents on a real cart that have been very odd. For example, see this video. This is the second time this glitch occurred for me, and as you can see resetting the cart still keeps the same effect. I noticed more subtle effects of this during normal playthroughs, where the RNG would not initialize to 0 and mess up my manipulation. I fix this by swapping out the cart with another game., or just waiting long enough with the power off. For the behavior in the video though, it could possibly be used to go OOB enough to cause some other odd behavior... it's worth an investigation if anybody is up to it. Another effect that I've seen slightly more often causes the game to run at approximately 1/10 speed. I'm not even sure if this is something that can be reproduced in emulator, but it could be fun.
Former player
Joined: 7/14/2006
Posts: 51
Location: Mexico
Thanks to Omnigamer I got in the mood to play this again, and I've been toying with this On and Off through the last month. Found some nice improvements for the first levels, specially the boss fight in 1-2, so much faster using the bomb while tumbling. The big problem is that using Snes9x 1.51 adds lag. Between levels and when a Boss appears most notably. A small scale effort gave me a 43 frame improvement thanks to the better boss strategy and better camera manipulation. Is it no possible to remake the run on Snes9x1.43 to avoid the lag problems? Or should I look for some way to minimize them? Heres the WIP: http://dehacked.2y.net/microstorage.php/info/1794068491/Hagane%20%28U%29.smv
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
Movies made on Snes9x 1.43 is no longer allowed to be submitted due to the emulator version being too inaccurate. However, if the lags are a result of more accurate emulation (which sounds like the case), the difference in lag will not be considered during judging.
Player (37)
Joined: 2/16/2012
Posts: 282
If possible, I would advise using BizHawk. The variety of extra tools would help substantially, and you won't have to worry as much about lag inaccuracies.