1 2
14 15
Joined: 6/29/2011
Posts: 16
Location: Parkdale, Victoria
Aha, yes, I intend to. I'm also hoping to see if anyone else has anything that might be interesting to add, so feel free to discuss ideas.
Former player
Joined: 8/31/2009
Posts: 236
Well the thing is each weapon only does 1 damage (so requiring 28 hits), and I'm not sure if it would be boring. But maybe you're creative and can make it amazing! :D The only exceptions to the weakness rule in Mega Man 6 is Flame hits Plant for 2 damage each, and Power on full charge does 2 damage to everyone. It can also be used for additional stun and knockback like in this video. Plant Man also reacts oddly when hit by full powered charges, but the rest, I couldn't find anything neat with them. Again though, maybe you'll find some awesome stuff! Definitely take Feos's suggestion and post WIPs!
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
This might be quite interesting. If you do it though, I think you should aim for 100% item collection. The same if you decide to do MM5 as well. What I'd look for in these runs is funny and bizarre things you can do with each weapon.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
I would like to see an Mega Man hex-run playaround. Just being funny, dancing with six Mega Man´s at the same time and more crazy stuff.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Editor, Skilled player (1439)
Joined: 3/31/2010
Posts: 2108
TASeditor wrote:
I would like to see an Mega Man hex-run playaround. Just being funny, dancing with six Mega Man´s at the same time and more crazy stuff.
You may perhaps find this (rejected) submission interesting, then.
Joined: 6/29/2011
Posts: 16
Location: Parkdale, Victoria
Nach wrote:
This might be quite interesting. If you do it though, I think you should aim for 100% item collection. The same if you decide to do MM5 as well.
Well, that was another thing I was considering, because not only is beat an absolute tank in this game but most speedruns disregard him. It would be interesting because several bosses from experience act odd with his attack... I'm considering beginning with either plantman or flameman because they give you adaptors which means I can actually GET the beat parts...
Editor, Skilled player (1439)
Joined: 3/31/2010
Posts: 2108
totodiletrainer01 wrote:
Nach wrote:
This might be quite interesting. If you do it though, I think you should aim for 100% item collection. The same if you decide to do MM5 as well.
Well, that was another thing I was considering, because not only is beat an absolute tank in this game but most speedruns disregard him. It would be interesting because several bosses from experience act odd with his attack... I'm considering beginning with either plantman or flameman because they give you adaptors which means I can actually GET the beat parts...
I think you should make sure to deliberately show off those routes that the published TAS avoids then, for the sake of showing more of the game.
Joined: 6/29/2011
Posts: 16
Location: Parkdale, Victoria
scrimpeh wrote:
I think you should make sure to deliberately show off those routes that the published TAS avoids then, for the sake of showing more of the game.
Yes, that was the plan, because simply redoing the fastest route isn't showing any more of what the game has to offer. As I said, there are several neat little tricks in this game and while not glitches can still be entertaining while wasting time in a regular TAS.
Experienced player (766)
Joined: 12/20/2009
Posts: 120
Does anyone know how to search sub-pixel address for the game?
Experienced player (544)
Joined: 5/12/2005
Posts: 707
I can't seem to remember where did I put those values I used with my run. I'm writing (mostly copying etc.) a script to output subpixel values in the screen and other stuff I can find. Guess I'll try to hunt them tomorrow and go to sleep instead.
Joined: 1/25/2016
Posts: 1
Hey everyone. Mega Man 6 as far as we know is 95% glitchless in real time (and mostly TAS too). However while I was learning a romhack for the game called Rockman 6: RE I had this happen https://youtu.be/aP_eKtA4nrY?t=1m24s in Flame Man's stage. Basically I went back on a certain pixel and it despawns the boss gate actually being there, which saves a lot of time in screen transition and gate animation not being there. (for fun you can enter the boss using the left gate at that point and fight him without the stage being completely there. If you enter more than once you softlock upon the kill. You also softlock if you die) Currently we think this is only doable in this romhack on this stage, however you never know. I was wondering if anybody would be willing to look into it for both the romhack and especially (or at the very least) the actual game. If it works it could likely work on the stages of Flame, Plant, Tomahawk, Yamato, Knight, X2, X3, X4, and Wily 2 in the real game as their stages don't lock when the boss door is on screen, you can go backward still while in the same room. Thanks for your time in reading this!
Experienced player (766)
Joined: 12/20/2009
Posts: 120
very nice discovering
Former player
Joined: 8/31/2009
Posts: 236
Energy Balancer Glitches When you have the Energy Balancer and no weapons to refill, you can get some strange glitches when you pick up Energy Refills. The effects seem to be widely varying, and are particular to where exactly you pick them up. I'm not sure what specifically decides what effects you get, but they seem to consistently occur. In the video, I demonstrate that by using the glitch in Wind Man's stage, I finish the level with all the weapons from Wind, Centaur, and Knight, also getting Beat Part A, and having Centaur's stage completed. In this particular case, Knight would still have to be defeated normally, but Centaur can indeed be skipped. The obvious roadblock is that there's no known way to get the Energy Balancer without other weapons because it requires Rush Power, which you get with Flame Man's weapon. The only way currently is to use passwords. If there were a way to clip into the room and grab the Energy Balancer, there could potentially be some serious game-breaking results. I haven't explored very much with this glitch, so there could be a lot more interesting effects. It might be wise to study it with memory watches or a deeper understanding of the game's code and try to figure out what exactly is going on.
Post subject: Broke down one ASM function.
Editor, Skilled player (1199)
Joined: 9/27/2008
Posts: 1085
I'll bite. I've been in a disassemble crud mood. It's Mega Man. I've poked about one game's RNG, I guess I may as well look at this Energy Balancer. For now, until I start crunching on code, my wild guess is that the game gets a count of weapons, then starts iterating through them until there are no more weapons. It would assume there's at least one weapon, so it would loop once, do a decrement, then see if it hit zero. If it was already zero, it would decrement the zero to 255, and find out it's not zero after all. Presumably, unintended memory is used after that. But that's just a wild guess. EDIT:
;Location 1D:949C
        LDA $0699       ;Weapon selection?
        STA $05C8,X     ;Target weapon
        BNE _94C9       ;If it isn't zero, then escape function
        LDA $0696       ;Energy Balancer
        BEQ _94C9
        LDA #$FF
        STA $0000       ;Set temp with 255 -- Lowest ammo we found so far
        LDY #$09        ;Set up loop for weapons
_94AF   LDA $0688,Y     ;Weapon
        CMP #$80
        BEQ _94C1
        CLC             ;If we're here, we have the weapon.
        ADC #$01        ;Take weapon's ammo + 1. For some reason.
        CMP $0000       ;See if this weapon's the lowest one so far.
        BCS _94C1
        STA $0000       ;If so, this is our new ammo count
        STY $0001       ;And this is our new target weapon
_94C1   DEY             ;Continue weapon loop
        BNE _94AF
        LDA $0001       ;Weapon with lowest ammo
        STA $05C8,X     ;Target weapon
_94C9   RTS
I did a breakpoint check for 0696, which apparently is the Energy Balancer. The above function is called from location 1D:9486, and I didn't look through there as yet. I also haven't analyzed what X is coming into this function. Anyway, I can already tell there's a problem with detection here. Address $0001 is used to identify the weapon, but if we have none of the eight weapons or Beat, then $0001 was never updated with a weapon ID. Therefore, the function returns a stale value, whatever the last thing the game was doing with that address. And that will be tricky to analyze. And most likely, stuff after 0688 appears to be at great risk of being modified by this glitch. Anyway, that's what I found so far. My wild guess wasn't on point.
Former player
Joined: 8/31/2009
Posts: 236
Very interesting, I'm excited to see someone looking into it. As said, different enemies would give different effects, but the same specific enemy would in most cases give the same specific effect. My wild guess would be it involves something with the values of what screen you're on. In the same rooms, I could get each enemy to give the same result each time, and the longer, scrolling rooms are where multiple effects can happen. Similarly, I haven't found any cases where this glitch can be triggered in rooms near the beginning of the level, perhaps when the address is 00? I'm also assuming based on that piece of code that there's no other way to trigger the glitch other than having no weapons, which is also good information. Would this mean that there are a total of 256 possible effects from this glitch? 9 would be from weapons under normal circumstances, and I would guess the majority of the rest would cause odd effects. Perhaps it would also be possible to skip the other 7 Robot Masters by refilling their energies. I'm guessing that the game just checks what weapons have ammo for determining which you should have, and has some other flag for empty weapons. I'm assuming a lot here since I don't have the assembly code handy, but I think a lot of it could turn out correct. Edit: I was messing around with this some more and managed to get a softlock on the password screen. When I initially experimented with the glitch, I did notice getting multiple passwords for the same settings, but didn't think much of it. It's likely that the game gets stuck when it fails creating a password, which could actually hinder a lot of the possibilities. I believe that I got this from playing out Wind Man's stage as seen in my TAS, dying, and then killing the second panda robot twice for two small energy capsules.
Jigwally
He/Him
Active player (427)
Joined: 3/11/2012
Posts: 119
That's the general function for weapon energy pickup. X is the object slot that the energy is in and $05C8,X tracks misc values for each object. In this case it uses it to keep track of which weapon was selected to add energy to afterward (@ 9500)
Editor, Skilled player (1199)
Joined: 9/27/2008
Posts: 1085
If I remember my asm right, $0688,Y would mean we can affect values from $0688 to $0787. At least, we can go past the page boundary, right? A brief look at the RAM has given me the impression that sound related stuff is over in $0700 and above. Messing with that doesn't sound like it'll be helpful, unless glitching the sound engine gives us useful glitchy execution? I've also seen things like screen position not that far after the weapon energy/status, which explains the strange screen scrolling in one part of the video. Got any RAM maps before I try to work one up? Actually, ROM maps might be nice, too. Since weapon refills respect the maximums, we're not modifying any addresses which already have a large enough value. I suppose the last thing to figure out is what process the game goes through prior to the refill functions. The trace logger showed that the game's probably doing some bank swapping (STA to $8000?), so I'm guessing it's running a handler that gets the tasks going.
Jigwally
He/Him
Active player (427)
Joined: 3/11/2012
Posts: 119
There's this one, I will try to add a little bit to it: https://datacrystal.romhacking.net/wiki/Mega_Man_6:RAM_map I did a lot of work on Little Mermaid & Gargoyle's Quest 2 so I'm familiar with some of this engine Since $0699 (Weapon selection) is one of the values in that range, you can modify it to glitch the game. Every frame the game runs a function from a jump table based on your weapon selection (1C: $8556,Y = low byte, $8560, Y = high byte). If your weapon selection is greater than 09 the game glitches because it calls a function built from values outside the table. Edit1: This is a little different than I'm used to, some object attributes don't have a strict definition. For example, $05C8,X seems to usually track the high byte of y-velocity but when the weapon energy object is at rest it's used as a timer for the blinking animation before it disappears and when it's picked up it's used to track which weapon to refill (since once it's fallen to the ground it no longer needs to track y-velocity which frees it up for other values) Also, usually x/y speed is an unsigned value and the direction(s) of movement are determined by bitflags in another attribute value. In this game they seem to have abandoned that and the pixel/frame speeds are signed to indicate direction. Edit2: I don't know how viable this is because we don't know the actual range of values we can have in $0001 yet but this could be a method for setting up arbitrary code. e.g. if it equals E7 it will run $049E which is in the range of objects' x subpixels. Edit3: When I wrote that I forgot that since you're adding the value of the pickup (2 or 10) up to the normal max (0x1B) that limits how many addresses you can index from the jump table.
Editor, Skilled player (1199)
Joined: 9/27/2008
Posts: 1085
I decided to run the Trace Logger again, and on some instance of a pick-up, $0001 is whatever $0057 is, after a potential carry from an addition involving $0056. The two addresses looks distinctly like some type of screen position tracker. Mind, I'm still blindly stumbling around code, having yet to create a context on what it all means, but if this calculation is always done before the refill function, then we have some consistency on the effect. Except we did have something happen to the visual screen position at $06A7, which is 0x1F away from $0688, and $0057 is 0x14 at the time. ... Actually, what is $069C or $069D, anyway? "Position of Left Table objects," the RAM Map says... okay? The biggest problem with stale values is that it's hard to know exactly what was the last thing to affect it. I'm seeing $0001 match up with $0057 in the few times I've seen it, and it would make sense if it's trying to ask for position before deciding the refill is yours to take. In any case, setting a breakpoint for reads on the Energy Balancer at $0696, then watching for how $0000 and $0001 lines up with $0056 and $0057 would be a good way to see if this has any consistency. And if... if that really is all there is to it, then we'll know the range we've got, and distance into the stage is all we'll need to know.
Former player
Joined: 8/31/2009
Posts: 236
On the matter of hypothetical ideas, it is possible to slide over the cracked block into the Energy Balancer room if you can do so in mid-air somehow. The ladder trick where you have an invisible platform after climbing down doesn't quite work in this case, but it could suggest that some other method may exist. If you could get in there, you can get the Energy Balancer, slide out of the room into the cracked block, which would kill you, and you would start in the room with those jumpy skull robots. If the glitch is indeed affected by Energy Refill coordinates, this would be the perfect place for setting up any desired result. Essentially, if there is a way to get the Energy Balancer without passwords, Tomahawk Man's stage could potentially be the only level you would need to enter. That's a big if though.
Editor, Skilled player (1199)
Joined: 9/27/2008
Posts: 1085
I'm guessing there's no crazy pause tricks or Super Mario World style pixel-perfect wall landings. Just thought I'd bring up these ideas and see if these random ones have any impact. Assuming we do get the Energy Balancer, what parts of the stage do we have access to where we can get an energy refill? That would limit which addresses we can corrupt. Then again, those addresses still need to be analyzed anyway. And I suppose leaving the stage without fighting Tomahawkman is also a possibility? There's definitely a lot of questions to resolve before it becomes feasible to try. Starting to think some analysis on Mega Man's state may be desirable.
Former player
Joined: 8/31/2009
Posts: 236
I tried a bunch of ideas at the block, but nothing seems too hopeful. I think most realistically there will be no way to do it. I'm not the expert though. After you die, you're placed back into the room with the sunset in the background. It has the skull robots who are very mobile and can probably give any desired coordinates for you to kill it and have it drop an Energy Refill. If not, you can go pretty far both back and forth in the level, and many of the other rooms have enemies that move around a lot. I'm thinking that this will pan out to be a cool exhibition which will just have to require using a password. On the positive, depending on the potency of the glitch, it could still be faster to complete the game than using the password to skip straight to Mr. X. That's the most optimistic result though.
Jigwally
He/Him
Active player (427)
Joined: 3/11/2012
Posts: 119
The main loop for objects' behavior is around 1F:E434. The address of each object's AI script is at $42A,X (low byte) & $413,X (high byte). I'm guessing this is like Gargoyle's Quest 2, where when an object advances to a different phase of its AI script this address gets overwritten w/ a new address. Object slot #0 is Mega Man, Object slots #1-3 are his shots Any new object spawns appear in the highest available spot.
     LDA #$16
     STA $008F ; current slot
     LDX $008F
     LDA $03A0,X ; ID of object 
     BEQ $E47A ; if slot if empty
     LDA $0441,X
     TAY
     JSR $CBC0
     LDA $042A,X
     STA $0008
     LDA $0413,X
     STA $0009 
     JSR $E482 ; runs function @ $0008
The aforementioned function seems to be called from within the script for the weapon energy object(s). If there are any other object/enemy scripts that make use of $0001, and they're in the object slot 1 above the one containing the weapon energy, it should carry over if we collect the energy on the same frame. Edit: This is where the game gets the initial function address for each object:
1D:81F0 - Create object type (Y) in slot (X)

TYA
STA $03A0,X - Object ID
LDA $82C9,Y - Use ID to load address from table
STA $042A,X - Set as initial address
LDA $83C9,X
STA $0413,X
LDA $84C9,X
STA $0441,X - ?
Starting address for a small weapon energy (ID 49) is 1D:944B
1 2
14 15