News:

The forum has been updated to SMF (2.1.3)!
Please be patient as we work to polish up the place and update features as we can.

Main Menu

OoB Mechanics

Started by Plexa, 22, May, 2013, 11:37:00 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Plexa

Hey guys! I'm a Golden Sun speedrunner and thus have quite an interest in the glitches in this game. Vanishmantle has been really helpful in confirming a lot of my theories for GS1 and GS2 and since me and the other guy who run Dark Dawn (khyron) are struggling to understand why this worked, we're hoping that the hacking community can again help us out in understanding what is going on here.

Basically at certain points in Dark Dawn the collision detection for matthew (or sveta) stops working and matthew can walk through walls/fall through objects. This is relatively common bug which has plagued many casual runs with the bug happening most often in Ayuthay and Kaocho. My hypothesis for why sometimes the collision turns off is that the game is storing so much information in the RAM that it 'forgets' that collisions should happen and will allow you to walk through stuff. This would be similar to the tweaking glitch in Gev IV pokemon which basically comes about because you ride around in a particular pattern with the bike which (if done right) will cause the edge of the map to not load properly and thus all hell breaks loose.

This would be quite difficult to test because in general it's hard to purposely turn on the glitch... except I happen to have a save state for DesMuMe 0.9.8 which is saved RIGHT before the collision gives way and has given me some useful insight as to the behavior of this glitch (i.e. not moving for even an instant will turn collision back on). The save state is at the apollos lens as depicted below:

The first screen is where the savestate is taken.

If anyone is willing to help investigate this I'll happily supply the necessary files to be able to set this up. I won't make them public for well, obvious legal reasons :)

Rolina

While that is a pretty nice find, sadly we can't do too much with Dark Dawn - it's hella encrypted.  Still, in the interest of not preforming a wholesale slaughter of the topic, are there any particularly notable spots where this can happen other than the ones you mentioned?  And do you know if the Endless Wall glitch is related to this one in how it's triggered?

Plexa

Yeah I absolutely appreciate that this site is more experienced with hacking/modding GS1/GS2, I was hesitant about posting it here but I reasoned that if there was anyone that was every going to look into DD in some way then they would probably end up here at least once ^^

With regard to notable spots, there isn't really anything of note beyond what I said in the OP. Ayuthay on the rafts seems to be a place where people have this happen often (I've never had it happen myself there though), Kaocho hopping on the lily pads has triggered it in the past (again, not for me), another user reported falling through the bridge in carver's camp, Khyron was able to get it to happen once or twice on staircases and of course theres the save state above at apollo lens.

It's probably worth pointing out that various jumps in the game make matthew go slightly into the 'wall'. There is a jump as you are leaving harapa ruins that does this, as well as jumping onto the 'planets' in the planet puzzle in Belinsk ruins. It could be tied up with this, but I don't think it's likely - rather a poor jump-range calculation is being done.

This also seems to be unrelated to the Endless wall glitch. My theory for the endless wall glitch is that upon loading the game there is some kind of position mis-match causing matthew to fall through the wall. My guess as to why the position mismatch occurs is that I think the endless wall is actually just an object painted onto the landscape and that at the 'joins' in the wall where the glitch works, save/reloading there will make the game think you are on neither half of the wall object causing it to think matthew is on the ground instead - hence the fall. I could be wrong though, but that's what my logic tells me :)

Rolina

Well, it's not like we haven't tried to get into DD.  It's just that we've not been too terribly successful, and the original creator of the hack has moved on so we've got one of our members trying to keep developing in their own time.  Still, if we manage to crack it open, we'd totally love to have you joining us in finding the source of the glitch in the code and maybe fixing it.

@Endless wall:  I see... So even though the effect seems similar, the source is likely quite different.  Good to know.

Daddy Poi's Oily Gorillas

The fact that Dark Dawn doesn't get pass the Boot screen in the No$GBA Debugger discouraged me from really doing much with it.  Thus, I'd have to pretty much rely on Desmume's RAM Search feature.

Not to mention how much a hassle it is to mess with the memory viewer in desmume. It slows down the emulator horribly.
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

And it's already horribly slow on DD as it is...

Aile~♥

Not to mention the graphical glitches when trying to run it on an emulator.

But yeah, you'd need to rely on a RAM Search to find out what's being accessed when and where it is, since from what Atrius said, the entire game other than the boot code and music midis is basically compressed into one giant blob. Not fun.
[sprite=16, 6, 0]:P[/sprite]

Lloyd: Easy as pie.
Genis: Sweet!
Presea: ...Sweetie pie...
Zelos: Let's not start on this again...

[spoiler=epic mindscrew][/spoiler]

Rolina

And good luck uncompressing it.

Daddy Poi's Oily Gorillas

Quotecompressed into one giant blob. Not fun.
Actually, I feel that not being able to use the No$GBA Debugger is a much bigger problem then having a large compression block.

The good news is that the Giant Blob stays in RAM for the entire game, right?  Speaking of, I wonder how Dark Dawn does their Map Code.


@Rolina: I haven't checked, but I honestly do not feel decompressing it will be a problem, especially since No$GBA Debugger decompresses it on boot before it 'crashes'.
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

Oh?  Well, in that case, why not decompress the living daylights out of the sucker?  I'd love to dive into its data!

Daddy Poi's Oily Gorillas

#10
Maybe because I'm too lazy?  Either way, there should be an exact copy of that file (in uncompressed format) at 02004000 in the memory viewer... (Unless I'm mistaken, I will have to double check this... but most DS games put the ARM9 boot file here.) ... Usually compression is where the work comes in, since you sort of would have to make it yourself instead of copying the decompression functions.


Edit: Doubled Check, and for Dark Dawn, it is 02000000, it seems. (Well, seeing the ARM9 Binary Start Address value.)
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Rolina

Well shoot, get in there and let's crack it open!  I'd love to see the mechanics behind the new unleash system, the specific ways that weapon proficiency work, and hell, stat growths I've been wanting for a while now!

Atrius (He/Him)

#12
It's been a couple years since I touched Dark Dawn so my memory of it is kind of fuzzy, but saying the entire game is compressed into one blob would be inaccurate.  If I remember correctly it was just the game code, item/stat data, and simple stuff that doesn't take (relatively) large amounts of space like that.  If you open up the game in the GS:TLA editor you can browse the file structure of everything that is NOT included in the compressed blob.  All of the data for the maps can be found in the file structure.

I'm not too familiar with the collision mechanics of Dark Dawn, but I can say it's unlikely to be an issue with the collision data being in RAM.  Excluding the world map, I doubt that any of the other maps are large enough that the DS would have problems holding them in RAM.

One possibility that comes to mind is that the collision data for GS1, and TLA had multiple layers to it (One for standard collisions, one for bridges that went over other terrain you could walk on, and one for pushable objects)  Editing the RAM to move the player to a different collision layer would result in being able to walk through walls, and fall through the terrain as I demonstrated in parts of this video.  I wouldn't be surprised to find that Dark Dawn's collision code was just an upgraded version of the older games, but still worked in basically the same way.  Even in the GBA games all player and NPC movement was already calculated in 3 dimensions, when you walked up a staircase/ramp your Z position increased to make you drawn higher on the screen, not your Y position.  Basically I believe the game is becoming confused about which collision layer you're on for some reason.  If the location of the variable for it were found it would be possible to create a cheat code to force yourself onto a different layer as well.


You can attach just the save state to your post if you want.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Rolina

Well, I wasn't quite able to make that stuff out, but if we can get a fully uncompressed version of DD, as well as an editor version that has full read-functionality for it (or at least enough to match its TLA functionality), then there's actually a lot of stuff I could do with the data.

Tea, if you or Atrius one decides to get to work on it, I'd be very much grateful.

Daddy Poi's Oily Gorillas

#14
Quotefully uncompressed version of DD
That might be pretty large. Not to mention we never got a fuly uncompressed version of GS1 and GS2. (Things that might be compressed in the GBA games are things like sprites, text, and the 7 map-related files for each map, etc.)

QuoteTea, if you or Atrius
Preferably Atrius? Not that I'm unable to or anything. Just..., he may be more familiar with Game Maker and C++ than I am. ;


So yeah, either way, might as well start adding more to the Dark Dawn Data List if possible... since it will need to be done in order to maximize progress... http://forum.goldensunhacking.net/index.php?topic=1961.0 ; Maybe a bit later.

P.S. = By the way, I forgot that I said "The format of its compression is one that Bowser's Inside Story also uses." in that post. So yay!
Golden Sun Docs: Broken Seal - The Lost Age - Dark Dawn | Mario Sports Docs: Mario Golf & Mario Tennis | Misc. Docs
Refer to Yoshi's Lighthouse for any M&L hacking needs...

Sometimes I like to compare apples to oranges. (Figuratively) ... They are both fruits, but which one would you eat more? (If taken literally, I'd probably choose apples.)
Maybe it is over-analyzing, but it doesn't mean the information is useless.


The only GS Discord servers with significance are:
Golden Sun Hacking Community
GS Speedrunning
/r/Golden Sun
GS United Nations
Temple of Kraden

Can you believe how small the Golden Sun Community is?

2+2=5 Don't believe me? Those are rounded decimal numbers. Take that, flat earth theorists! :)

Atrius (He/Him)

Probably not me, I don't have the time to devote to something like that any more.  Anyway this isn't really the topic for this discussion.  I believe Plexa is looking is looking for glitches that already exist in the game to take advantage of for speed runs without altering it.
[sprite=220,4,0]I'm shaking my head in general disapproval of everything[/sprite]

Rolina

Well, I wish I could help them, but I have a hard time going back to DD unless I'm looking something up in my inventory on my 100% file.  Furthest I've gotten on a second playthrough is meeting Sveta for the first time. :/

Sorry, wish I could help you some more...

Plexa

Hi again! (I thought I replied to this thread long ago, clearly I didn't :( my apologies) thank you for all the replies thus far - I've also attached the .dst file to this post. As the title says, hold right to walk through the wall.

With regard to this specific glitch nothing in particular has been discovered one way or another. But I recently saw this video; https://www.youtube.com/watch?v=WKWMzq_no1k where someone was using speed multiplier AR codes which allowed them to clip into various objects for seemingly no reason. After testing this myself the behavior is extremely similar to what I described in the OP. That suggests that the cause has nothing to do with memory overload, but to do with how the game handles collisions.

I don't know a lot about where stuff is stored in the memory, but if someone could point me in the right direction for where I could find the addresses for matthews XYZ position, speed, angle (and sveta's for the apollo sanctum section if that's different information) that would be greatly appreciated :)