Post subject: Spider-Man: Return of the Sinister Six
Active player (406)
Joined: 3/22/2006
Posts: 708
Hi. I'm redoing my Spider-Man TAS and so far, it's pretty tight. However, I'm having a lot of trouble optimizing the battle with Sandman. The main trouble with this is that it's nearly impossible to tell when I'm actually doing damage. (The energy bar readout only shows four "blips" when most bosses can take more than twice that many hits.) How would I go about finding the memory address where the boss health is stored?
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
fortunately hp values are easy to find - get FCEU version .16 - get to a spot a few frames before a shot hits the boss and savestate - open the cheats menu and click "reset search" all ram addresses should appear in the left column. Close window - frame advance until you know for sure the shot did damage. Open the cheats window and click "value decreased" then hit "do search" The left column should be limited down to only values that decreased in that time. - hit "set oringal to current" and close window - advance until you have for sure hit the boss a 2nd time - open cheats window and hit do search. The addresses should have gotten smaller since it is now only values that decreased both times. -repeat this procedure until there are a manageable number of addresses left. - open memory watch and plug those values in - play the game with the memory watch open and visible. It should be pretty clear which one is the boss hp at that point.
It's hard to look this good. My TAS projects
Active player (406)
Joined: 3/22/2006
Posts: 708
Cool. Thanks. I can now see that web pellets are less powerful than punches and jumpkicks (which can register multiple hits at once for some reason)
SXL
Joined: 2/7/2005
Posts: 571
that's a very nice tutorial. nice work adelikat. it should be added on the "how to use the emulators" FAQ, I think.
I never sleep, 'cause sleep is the cousin of death - NAS
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
In additon to what adelikat said, it helps a lot to throw in a few searches where you are sure the value didn't change, such as when you attack and completely miss. That way you'll eliminate a bunch of values that are always decreasing even when you don't hit the boss. In FCEU, the option for "value didn't change" is "|O-C|==V2" (with V2 left at its default value).
Active player (406)
Joined: 3/22/2006
Posts: 708
This advice also really helped for the dark area in Mysterio's level. I managed to figure out what memory address the "goggles" flag was in, and poked it while recording. I was able to see where I was going perfectly, but in the playback, it's pitch black. Very helpful advice. Thanks. :D
Active player (406)
Joined: 3/22/2006
Posts: 708
For those that are interested (I think a handful of you might be) I've beaten Mysterio now, meaning I'm half done. Having some trouble optimizing Vulture's level (lots of bombs dropping and it's hard to tell whether avoiding them or flying right into them is faster) but I'm well on my way. From the point in which I've defeated Mysterio in the old one to the new one, I've saved 2812 frames, which is about 46 seconds. I think by the end, I'll easily shave a whole minute off my previous run.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Glad to hear that you are making good progress. I am also glad my ram address info helped you with those boss fight :D Good luck.
It's hard to look this good. My TAS projects
Player (206)
Joined: 5/29/2004
Posts: 5712
Hooray! Keep going!
put yourself in my rocketpack if that poochie is one outrageous dude
Active player (406)
Joined: 3/22/2006
Posts: 708
Quick update: Level 4 really frustrated me and I ended up stopping work on it for a while. I've come back to it now. I don't really like the way I had to run through the level, but it's as close to optimal as I could figure out. Took me tons of retries because I kept trying to undo what *seemed* to be less than optimal but found no better way to do it. It's probably not as visible at normal speed, anyway. It should appear pretty fast. I'm on Vulture now and I'm sure that it will be much easier to optimize the battle with him than the rest of the level. I know the last two levels will be a piece of cake in comparrison. So, although I'm only barely half done level-wise, I'd say I'm pretty much 80% done.
Active player (406)
Joined: 3/22/2006
Posts: 708
FINALLY killed Vulture. So annoying. Hopefully this means the worst is over.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Good job. I look forward to the finished product :)
It's hard to look this good. My TAS projects
Active player (406)
Joined: 3/22/2006
Posts: 708
Update: Hobgoblin is toast. On to the last level. :D
Active player (406)
Joined: 3/22/2006
Posts: 708
DONE! Thanks for the encouragement. Those interested can now download and enjoy. :D
Player (172)
Joined: 7/1/2016
Posts: 263
Hey! I'm trying to understand how level 3 boss works in this game. I'm relatively new to FCEUX's Debugger. I can't understand how execution gets to A1E4 or A1EB. Is there any easy way to find from where execution jumps to A1E4 or A1EB? https://i.imgur.com/z2p4Saw.png
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
Koh1fds wrote:
Hey! I'm trying to understand how level 3 boss works in this game. I'm relatively new to FCEUX's Debugger. I can't understand how execution gets to A1E4 or A1EB. Is there any easy way to find from where execution jumps to A1E4 or A1EB? https://i.imgur.com/z2p4Saw.png
That's easy, but could you make a trace log of that part? Will be easier to explain what happens and why. BTW creating a namelist file with all the addresses you know helps with this immensely too.
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.