Posts for Omnigamer


1 2
10 11 12
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Necro'ing this thread because I believe this game deserves a good look. I've been discussing some of the routing in the SDA thread but there's still a long way to go. Routing for a TAS would be probably a little easier since all weapon experiences and otherwise are readily available, as well as not having to worry about health as much. There are still a ton of considerations, such as damage vs levelling tradeoffs and weapon choices, but there's also a useful ammo glitch to help keep shop visits to a minimum. The NicoNico RTA Wiki has two times listed: 4:11 and 4:3x. I'm anticipating a well-planned real-time run for this being in the 3:00-3:30 range, and a TAS possibly being as low as 2:30. There's also a pilot-only Japanese TAS, but that's more of a showoff thing than being speed-optimized. That said, I'm more than willing to help with the routing and mechanics analysis, but my abilities to actually create a TAS leave a bit to be desired. If nothing else, I hope to build up some discussions for this SFC gem.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Wow, great work Pasky! This helped to find a safe(r) spot for Pirate rd 2 and the last boss. The massive hitbox on the club certainly helps plan out other things too.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I think the main thing is that TAS Studio only has some very basic features implemented right now and it can't be used for a number of tasks. I'm still waiting on a trace logger as well... Good luck when you start a new run! I enjoyed the last WIP a lot, especially with the new zips and things you put in. I will be continuing my real-time attempts as well, but I don't feel like there are too many more areas for improvement besides luck.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Just a quick heads up, I asked Pasky to look into hitboxes for us so there might be a script for it sometime soon. Major thanks to him for working on it between his current fighting game projects.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I'm sorry if the improvements can't be re-synced :-/ I think that's nearly everything as far as improvements go, however. I've gone through each of the stages looking for new shortcuts or ways to force rolls, but I think it's coming to a close. I did a 21:21 in real-time last night; I think it can come down another 15 seconds with better boss luck, but otherwise I'm nearing the limit. That said, if you have a WIP from the one you were about to submit, I'm happy to take a look :)
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I was able to improve your stage 1-2 by 30 frames. Instead of jumping up the cliffs in the midway point, you can keep rolling and jump on top of the rocks at the end. There's a hidden passage there that you can (briefly) roll in. On the other side, use a high jump at the opening to land on a platform, then normal jump to the solid ground. Finally, do another high jump and complete the level as normal. I think what I did can be optimized slightly more, but I saw the first start animation at frame 3423 whereas it appears at 3453 in your movie. I can make a movie if you'd like, but hopefully the description is enough.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Yes, that's what I meant by set patterns. Teleporting to lower right or left will start him on a 4-pattern shuriken cycle where he does the small jumps and fires a shuriken until he gets to the opposite corner. If he appears in the upper sides, he will always fire off 3 boomerangs before disappearing and going into another pattern. Bone sword is the only pattern where he will appear somewhere else on the screen. This is what I was trying to say before; sorry if it wasn't clear. I just watched the WIP, it looks great! I'm glad you found all sorts of new ways to (ab)use the roll, and also some new clipping tricks! Keep it up :D EDIT: As you get to some of the other parts of the run, some things to remember: -Dracula Guy has only 2 initial patterns: one where he spawns in the center and another where he spawns in the upper-right. I don't know which of the two is faster (probably center) but an important thing is to take out all the bats with as few hits as possible. Ideally you can take out all 8 of the bats with a single swing (which is definitely possible). This is because hitting the bats freezes them momentarily and delays the spawn, so you want to minimize the overall time. Entering his loading zone at different frames is enough to change the pattern. -Pirate Guy is fixed, so no problems there. Tech Guy always enters from the same spot and has different patterns, but for a TAS it should not be difficult to finish any of the patterns as fast as possible. -The last boss is still a huge pain. Again, probably not as much of an issue for TAS, but his hurtbox prevents a lot of hits that should otherwise work fine, especially when he's at the middle height. His patterns are definitely based on the frames he starts them on, and some can be more advantageous than others. I always look for the low fire-wheel pattern to get in a massive number of safe hits. Again, not sure it will apply for you.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
The Ninja has only 3 patterns, and he varies them between which side he appears on. He appears much more random than that, but I spent some time just watching him to confirm his movements. The patterns are: -Shuriken -Boomerang -Bone Sword Each cycle completes in a set order each time, ie he always fires 4 shurikens in a row, and always 4 boomerangs. Shuriken pattern is the most desireable since he spends a long period of time vulnerable and nothing special is required to dodge the attacks. Bone Sword is the worst since he's only vulnerable for a short time and then teleports again. He seems to like doing Bone Sword between every Shuriken or Boomerang pattern. To manipulate him I would suggest altering your position (ie left/right of him) and seeing if that changes his next pattern. If not, it may give a better frame result by not hitting him once even when you can and seeing if that changes it to another pattern. EDIT: It looks like some bosses' patterns are seeded from a frame counter at 7E00AB. The ninja is definitely based on this value, at least. If you can't get a good pattern, consider waiting a frame or two before delivering the last hit before an invulnerability period. This should be enough to change his next pattern.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Very nice, I'm excited to see what you can pull off :D I've worked the instant rolling into my real-time route, but I have to do it a little differently for it to be consistent, starting with back, rolling through down to forward and then back to down. It works pretty well, although I'm still only about 70% consistent with it. I managed to get a 22:11 in real-time recently with a few missed tricks. I'm really interested to see what you pull off in your new WIP! One thing that I'm still really curious about is the hitboxes for several of the enemies and the bosses. They are really huge and disjointed at times, particularly for the final boss and the pirate boss. I don't have any experience looking for them, however :-/ I will investigate the seeds for the boss patterns though. So far it seems like they use a combination of your position, their current health, and something else that remains somewhat static during battle. At the very least, waiting around outside the boss door did not affect the pattern but going off and killing some enemies did. I will report back what I find, but I will need to switch off of BizHawk since I need the Trace Logger.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
In stage 1-5 (inside the dino) I found out by accident that if you put the fuzzy in a roll and jump on top of him the water physics won't apply after you enter the water (until you jump off the fuzzy). I don't know if it's faster, but it seemed pretty quick. I don't think there's anywhere else you can use this since the amount of water in the game is limited, but it was neat when I tried it.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Did the backwards roll make it into the final movie or is it lost? Sounds interesting; I wonder if it's something that would be usable elsewhere. I plan to start work on real-time strats this weekend. I'll let you know if I find anything interesting, or any more of the alternate exits. EDIT: I did some investigating today and I think I found your "roll backwards" bug. I also found a way to quick roll, so you can roll immediately when you reach a slope. I'm working on ironing out the specifics right now, but I saw that you can occasionally force yourself to immediately start a roll by turning around with run and then going into a roll again. I'll see if I can make a very short movie demonstrating it after I find out. EDIT2: Figured it out, input-wise at least. There's still some uncertainty to it, probably having to do with either some subpixels or Congo's position relative to the slope. In any case, in order to instant roll just press down for one frame followed by holding R and one frame of down-forward, and then back to holding down. If the positioning is right, you will instantly start into a roll at full speed. For the "backwards" rolling, just do the same thing except go to down-back, and don't hold R. Congo will slide the wrong direction before slowing, stopping, and then rolling the other direction. http://tasvideos.org/userfiles/info/2915636136225330
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
The registers for the slots are at 7E0043, 44, and 45. Unfortunately, the "bonus stage" it sends you to does not actually allow you to skip the current stage, so it's a waste. It will let you off at a checkpoint further ahead though, depending on when you get it. The time spent is only worth it if you're skipping an autoscroller though, and I can't think of any levels where that would apply. Also, the rolling trick works because the game does not unset the flag at 7E0033 (set to 0x80 for wallclimbing, 0 otherwise) after you start a roll. You don't even have to get into the full roll animation, just have to start it for at least one frame. After that, the "climb walls" flag is set until you stop moving; everything else is fair game. The reason why it works the way it does is because the high jump also puts you into the same animation as the ground roll, so all the special properties still apply.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
You always seem to work on the games that I want to run Dooty! I haven't looked through the WIPs beyond the initial rejected one, but this was probably going to be one of the next games I was going to route for real-time. I'll let you know if I find anything special. Also, something that seems to be lesser known is that you can float when in the Super form by just rapidly pressing jump (sparkles at your feet if you do it right). I did a whole playthrough without realizing it, and to my knowledge it's not stated anywhere in-game or otherwise.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I'm aware this game had a canceled TAS a while back (now accepted to the vault), but I feel it deserves some revisiting. I worked on the real-time runs for this game (w/deaths and deathless) and I used this TAS as the basis for my strategy in some rooms. However, the TAS itself is pretty unoptimized in places, particularly boss fights. I've also completed several of the rooms faster in real-time than the TAS, so I know there can be some routing optimizations as well. The main issue is this: fire spawn triggers are extremely complex and picky. I haven't been able to investigate the exact mechanism that determines what/when flames can spawn, but it's likely a combination of player position, number of currently-spawned flames, and a bit of RNG. Even finding the mechanism may not help since manipulation would be difficult while maintaining good speed. I have a longer list of notes and addresses saved to a file at home, so I'll edit those in when I get back. The main things to know are the damages and HPs. The game runs at 30 fps, and damage is calculated per frame. You can stack damage (ie hitting with spray + bomb + axe) and this works in your favor for several bosses. Also, water bomb management is critical to a successful run since it drastically reduces the amount of time spent fighting bosses (1 WB is equivalent to about 6.5 seconds of constant spray over only 1 second). As far as time savings, better boss strategies exist for at least bosses 1, 3, 4, and 6. My real-time runs lost time relative to the TAS due to not having perfect movement/triggers and some slight route changes, but my average time saved on bosses was 5-7 seconds per boss. I plan to work on this after I dig into it a bit more, but any help is appreciated. EDIT: Small data dump below. These are verbatim from my notes, so probably some unimportant stuff in there.
HP:
Enemy values are set up on the fly, and aren't "dead" until it goes to -1 HP.

Small flames - 7
Trail Flames lvl1 - 0
Blue Big Robo - 40
Crosswork flames - ?
Big Flames - 40
Air Flames - 0
Ground Wheels - ?
Line Flame - ?
Blue Small Robo - ?

Bosses
Boss 1 - 350
Boss 2 - 500
Boss 3.1 - 200
Boss 3.2 - 200
Boss 3.3 - 200
Boss 3.4 - 200
Boss 4 - 600
Boss 5 - 700
Boss 6 - 999


Enemy Attack Power:
Based on 48 HP starting health; rescues restore 30 HP
k=knockdown
h=heavy knockdown


Small flames - 4
Trail Flames lvl1 - 8
Blue Big Robo - 8k
Flame spouts - 8k
Crosswork flames - 8
Big Flames - 8h
Air Flames - 4
Falling pipes - 8k
Ground Wheels - 8
Exploding Barrels - 8k
Line Flame - 4
Blue Small Robo - 4
Tracker flames (from big) - 4
Robo arm - 8k
Low crosswork - 8
Slow Seekers - 8
Green Big Robo - 8h
Falling lights - 8k
Trail flames lvl2 - 8
Air Robo - 4
Air Robo explode - 8h
Heat Wave - 8h
Door/Window Explosion - 16h
Green Small Robo - 4
Zigzag - 8
Zip flame - 8
Obstacle - 8
Sploder - 4 normal; 8h explosion

Boss 1 - ?
Boss 2 - ?
Boss 3 - 16h
Boss 4 - ?
Boss 5 - 16
Boss 6 - 16
--Low crosswork is 4

Damages:
Damages can be stacked. So stream + bomb is effective

stream - 1/2
Spray - 1/2
Danny - 4/15
Bomb - 5/2x33 (165)

Super water - 1 and 2 on alternating attack frames; 1.5x damage

Addresses:

7E15C3 - Pete actual HP
7E15C7 - Pete actual HP for E/Expert mode
7E1930 - Pete displayed HP
7E0C7B - Boss 1 HP
7E0BFB - Boss 2 HP
7E0BFB - Boss 3 HP
7E0BFB - Boss 4 HP
7E0C1B - Boss 5 HP
7E0BFB - Boss 6 HP
7E1E6C - Final Points
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Below is a copypasta of my post on SDA. The mentions of real-time stuff probably don't apply, but the addresses and behaviors can probably help to some extent. ========================================= I did some digging to come up with exactly what seeds Phantoon's actions and the various probabilities that come out of it. There are some very math-y sidenotes I have about the RNG that's used in this game (a specialized class of LCG), but the important thing to know is that it alternates odd/even, and that it has a complete cycle at each bit threshold leading up to 2^16. Another thing to note is that the RNG can be advanced multiple times per frame, so 1 frame != 1 RNG call. So Phantoon. His first round activity is seeded separately from the second round and beyond. His pattern is determined a couple frames before he starts to move. The first thing to note is that his direction (left and down vs right and up) is seeded from the game's always-running RNG (7E05E5). If the number is even (LSB = 0) then he goes down and left. If odd, he goes up and right. Simple as that. The duration before he opens his eye, however, is seeded from a frame counter at 7E05B6. This first round has 4 possibilities, but 2 of them result in the longest pattern of 4 rotations (720 frames). The other possibilities are split between the medium (360 frames or 2 rotations) and best (60 frames) pattern. The pattern changes every 2 frames. Since it works off of a frame counter, each possibility is equally likely. The countdown timer for his eye to open is stored in 7E0FE8 (2 bytes) as soon as it is determined. The movement direction is stored in 7E0FEC as simply 1 or 0. Suffice to say, his direction does not matter at all for a real run since he'll open his eye at the same time regardless of direction, although some positions may be easier to hit than others. For second round and beyond, his entire pattern becomes seeded by the game's RNG. There are instead 8 possibilities for these rounds, with 3 possibilities resulting in the worst pattern, 3 resulting in the medium pattern, and 2 causing the best. The actual numbers and outcomes are described below. This means that it is slightly more lenient than the first round, but getting the best pattern is still only 25%. Again, because of the properties of the game's RNG, each possibility is equally likely.
7E0FEC: Initial Direction
1: Towards
0: away

7E0FE8: counter until eye opens.

Round 1
Loads from 7E05B6, lsr, ands with 0x3

0: 4 loops, 02D0, 720 
1: 0 loops, 003C, 60
2: 2 loops, 0168, 360
3: 4 loops, 02D0, 720

Rounds 2+
Pulls from RNG instead, does and with 0x7

0: 4 loops, 02D0, 720 
1: 0 loops, 003C, 60
2: 2 loops, 0168, 360
3: 4 loops, 02D0, 720
4: 2 loops, 0168, 360
5: 0 loops, 003C, 60
6: 2 loops, 0168, 360
7: 4 loops, 02D0, 720
In any case, it seems highly unlikely to find a way to manipulate Phantoon in real time, and the odds are stacked against the runner. Getting perfect luck is no better than 1/16, and getting even one perfect pattern will only happen once in every 4 runs or so. There may also be a phase I'm missing yet (RNG between the rounds?) so this may not even be a complete view of the chances. In any case, good luck guys. I plan to look at Draygon in a little bit, although I don't imagine that will be as complex.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Just watched it Dooty, great job! A couple things I noticed though, is there any reason you didn't try to use the cutscene buffer bug? In my testing it seemed like it didn't add any additional time (you can still hit start at any time before the cutscene actually plays and trigger it). It should be useable in 3-1, 4-1, 5-1, 6-1 and 7-1 to gain some extra distance before you can normally gain control.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Just watched it Dooty, great job! One thing I noticed though, is there any reason you didn't try to use the cutscene buffer bug? In my testing it seemed like it didn't add any additional time (you can still hit start at any time before the cutscene actually plays and trigger it). It should be useable in 3-1, 4-1, 5-1, 6-1 and 7-1 to gain some extra distance before you can normally gain control. Also, in 7-1 you can force the last elevator to spawn earlier by jumping from under the one immediately below it (screen should move up slightly) and it will give you a quicker cycle that way. I'm not sure if that would affect the quick-jump on the elevator right before it though.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Wow, nice work! I was afraid 1-3 and 2-1 would be boring watches, but you made them quite enjoyable despite their length and repetition. The strategy on 3-1 is also really impressive; I figured something like that was possible, but there's no practical way to deal with the low building guys in real time. You should be able to do an easier version of the same thing on 3-2 since there are less enemies and all but one of them are the high versions, so any bullets will push you forward. I'm sure you've noticed that you can manipulate the driver to try and fire upward by jumping as well. I'l be curious to see how quickly you are able to dispatch the coming bosses with the rapid fire :)
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
The assembly code for the RNG is below.
828011 jsl $8084a8   [8084a8] A:0004 X:0000 Y:bcfc S:1ff1 D:0899 DB:8c nvmxdizC V: 90
8084a8 rep #$20               A:0004 X:0000 Y:bcfc S:1fee D:0899 DB:8c nvmxdizC V: 90
8084aa lda $066e     [8c066e] A:0004 X:0000 Y:bcfc S:1fee D:0899 DB:8c nvmxdizC V: 90
8084ad pha                    A:1443 X:0000 Y:bcfc S:1fee D:0899 DB:8c nvmxdizC V: 90
8084ae lda $066c     [8c066c] A:1443 X:0000 Y:bcfc S:1fec D:0899 DB:8c nvmxdizC V: 90
8084b1 sep #$20               A:95c5 X:0000 Y:bcfc S:1fec D:0899 DB:8c NvmxdizC V: 90
8084b3 clc                    A:95c5 X:0000 Y:bcfc S:1fec D:0899 DB:8c NvMxdizC V: 90
8084b4 adc $066f     [8c066f] A:95c5 X:0000 Y:bcfc S:1fec D:0899 DB:8c NvMxdizc V: 90
8084b7 eor $066e     [8c066e] A:95d9 X:0000 Y:bcfc S:1fec D:0899 DB:8c NvMxdizc V: 90
8084ba rep #$20               A:959a X:0000 Y:bcfc S:1fec D:0899 DB:8c NvMxdizc V: 90
8084bc clc                    A:959a X:0000 Y:bcfc S:1fec D:0899 DB:8c Nvmxdizc V: 90
8084bd adc $066e     [8c066e] A:959a X:0000 Y:bcfc S:1fec D:0899 DB:8c Nvmxdizc V: 90
8084c0 sta $066e     [8c066e] A:a9dd X:0000 Y:bcfc S:1fec D:0899 DB:8c Nvmxdizc V: 90
8084c3 pla                    A:a9dd X:0000 Y:bcfc S:1fec D:0899 DB:8c Nvmxdizc V: 90
8084c4 sta $066c     [8c066c] A:1443 X:0000 Y:bcfc S:1fee D:0899 DB:8c nvmxdizc V: 90
8084c7 rtl                    A:1443 X:0000 Y:bcfc S:1fee D:0899 DB:8c nvmxdizc V: 90
I have reproduced the functionality in a MATLAB script for my own intellectual curiosity. I was surprised to find that it was more robust than I thought. There is no cycle within 1 million iterations and it does not seem to favor certain numbers too much. All possible values in the 16-bit space appear in about 750k iterations on average. That said, it's easy to predict upcoming numbers, but difficult to force to be a desired number. I can program the RNG into the lua script so it spits out the next ~10 numbers that will appear, but a more robust external program might be more useful for planning some things. I'll try to get it into the lua script this weekend, but I also haven't ever used lua so it might take a little bit.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I can definitely handle the RNG side of things. When I was initially investigating it seemed that it didn't change often, but when I play through now it looks like it's being called constantly. There's no entropy with it beyond the number of times that it's called, so being able to predict the next sequence of numbers is easy. I'll work on putting it into the lua script soon. Some other minor stuff: -Bombs are useful for lag reduction in some areas. Using them doesn't introduce lag as far as I know, but being able to kill out-of-reach enemies goes a long way to reduce lag in some areas. -You have a faster fire rate while running than standing. -No damage is pretty unrealistic even for a TAS, and honestly there are several times when taking damage would be preferred for time. -You can jump up the elevators in 7-1 as they're coming down, but it's a tight window (~2 frames).
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
Dooty, that is fantastic news :) I will be running this game up until I do it at AGDQ, so I'll continue testing when I can. I can also program up a quick sequence generator for the RNG since it's pretty simple. I've experimented briefly with left+right but I wasn't able to find anything special. I wasn't able to set up clipping anywhere, although I had one occasion where I was able to fire a bullet in midair that I haven't been able to reproduce. Something else to try might involve usuing enemy collision boxes to force you into places, but it wouldn't be easy or quick to set up. EDIT: Here's some other misc information: Damages: Gun: 2 Kick: 2 Punch: 1 Jumpkick: 4 Lowkick: 1 Bomb: 4 Every normal enemy besides octopus has 4 HP. Robo Boss: 32 HP Octo Boss: 64 HP Tank Boss: 64 HP Punk Car: 32 HP Missile Man: 64 HP Final: 64 HP
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I've recently finished a real-time speedrun for this game, and during my routing and testing I've accumulated a good chunk of information. I don't think I quite have the skills/patience to make a TAS for it myself, but keeping this information to myself serves no purpose. If anybody feels like tackling it I can support on testing and suggestions. So yeah. Timecop. Not a whole lot to be said about coming up with routes or otherwise, but I have noticed some technical tricks. -Landing on enemies/objects will shift you one direction or the other. This is important because the effect is instant, and the camera scrolls at a constant rate. This is most important because... -Overscrolling past the screen boundaries preserves the stage layout, but most enemies and platforms/elevators do not spawn. This is especially useful in 6-1, where you can easily use the conveyor belts to get this effect. I have not tested it, but I'm fairly certain that you can abuse the enemy shifting described above to get the same effect on other stages. You can also abuse the roof of the car in 3-1 and 3-2 to gain this effect by just walking off it. Collision boxes for some enemies still spawn, but that shouldn't be a major concern. -The full amount of time that a story cutscene is being played directional inputs and other persistent inputs (gun) can be buffered just by holding them. These buffered inputs will be executed on the first possible frame your character spawns, which is before the stage text. You can also buffer non-persistent inputs (jumping) by pressing them on the last frame before the game stops accepting inputs. The addresses to watch for this are listed below. This is important in 7-1 since you can jump up an extra flight right at the beginning. There's a brief period of time where inputs are accepted before any stage, but the window is too small to buffer anything without the cutscenes. -The drop system works as follows: Every other enemy killed will drop a health pickup. There's a 1/8 chance for the drop to be a big (full) health. The RNG is proprietary, but is likely to have a very small and highly predictable cycle. -Jumping into a pit while attacking causes you to warp to the very top of the current screen. Only stages with pits are 6-1 and 7-1, and 7-1 is the only stage that can use it in a meaningful way. Unfortunately there's no way to clip back in bounds at this point, so neither helps. There is one frame where you are returned to a neutral position at the very top of the screen, and you can jump during it. Somewhat related, if you fall too far after a jump-kick you will also return to a neutral position and attacking will cause you to stop in midair until you move again. -Conveyor belts in 6-1 switch every time a 0 occurs in the RNG sequence. I do not know what seeds the elevator positions at the start of 1-2, but the best pattern is almost 4 seconds better than the "average" pattern. Some useful addresses: 7E06F3 - HP (Note: stored misaligned in 2 bytes) 7E0760 - Boss HPs (See above) 7E0674 - 2 bytes, all 0s if inputs ignored, all Fs if inputs accepted 7E0671 - Buffered input; occurs on next frame that movement is possible 7E0673 - Stores current inputs; equivalent to 7E0671 if actions are possible during that frame 7E06E1/FB/FD - current and incoming character states 7E0666 - if 01, next enemy will give drop 7E066E - RNG value. RNG sequence starts at 80/84A8. EDIT: A very rudimentary demonstration for a few of the glitches is available below: Link to video
Experienced Forum User, Published Author, Player (33)
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.
Experienced Forum User, Published Author, Player (33)
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.
Experienced Forum User, Published Author, Player (33)
Joined: 2/16/2012
Posts: 282
I had doubts about it being a good TAS project as well, since it mainly comes down to the route rather than special movement techniques or other glitches. You could put it in the same category as Toki, which has very limited movement options but was accepted due to the humorous abuse of poor hitboxes. That was a very old submission though, so standards have probably changed.
1 2
10 11 12