Submission #9366: jlun2's GBC Dragon Warrior Monsters 2: Tara's Adventure "save glitch" in 20:47.23

Game Boy Color
(Submitted: Dragon Warrior Monsters 2: Tara's Adventure)
save glitch
(Submitted: save glitch)
(Submitted: Dragon Quest Monsters 2 - Maruta no Fushigi na Kagi - Iru no Bouken (J) [C][!].gbc JPN)
BizHawk 2.9.1
74562 (cycle count 2615627042)
59.78216500791171
43166
PowerOn
Synced on BizHawk 2.9.1 with Gambatte core.
			
Submitted by jlun2 on 10/29/2024 4:59 AM
Submission Comments
Dragon Warrior Monsters 2 is a monster capture and breeding game that involves a farm boy/girl on a quest to obtain a spare plug to stop their home from sinking. With the use of save bugs, our hero retrieves the plug in half an hour. This is an improvement of 2075 frames, or 00:34.71 over the previous run.

Game objectives

  • Emulator used: BizHawk 2.9.1
  • Plays on gameboy player mode in hopes of console verification of the bug
  • Any%

Comments

I was investigating the use of save/reset to get npcs to appear in different places.
On the U version, I found out that Darck's overworld ID at CB9E happened to be 1. This value appears for a a npc in Oasis village 1 (Kalka), as well as an npc in Water village 1 (Yold). None of the npcs in GreatLog appear to have this id. By saving at Yold, then save/reset at Limbo Shrine, I can talk to an invisible NPC to trigger the fight with Darck. I took the existing run, changed the input from Pirate World to use this, then submitted it.

Criticals

The important thing to figure out first is how to get critical damage during the first 8 fights. To be exact, both CactiBall and SpotSlime need 1 critical to OHKO them.
To find out how criticals were determined, first I just simply got 1 to appear. Specifically, the critical hit message box. Then I searched on RAM on an address that changes if I get a critical. I got C5E8, D80E, D820.
C5E8 seems to be a timer that goes from 0 to 127, forever. On specific values that vary by the monster fighting, it seems to always give a critical or a miss. If you get a critical, D80E or D820 will be 128. So I recorded every single instance of getting a critical and displayed it using a lua script to make testing and resyncing events much easier. This also means that criticals (or miss) will be guaranteed to appear every 128 frames, or ~2 seconds.

Version choice

In this particular case, I chose Tara because the 58 minute long run was using Tara. In that run, she does not need the Change Rod in the Sky World to obtain a treasure, unlike Cobi. In this run however, she completely skips the Sky World, so I'm not sure if there's any difference using Cobi. Both Cobi and Tara versions have the same monsters in Oasis except for TailEater which I don't recruit, and I recruit nothing in Pirate, so there shouldn't be a difference.
Japanese has an exclusive glitch regarding the storage room where you could talk to an npc the frame before you enter the room, allowing you to obtain the pie slightly earlier. It also seems to allow a follower index of 117 when depositing a duplicate follower, something that I couldn't get to happen in (U).

Monster choice

The current run uses follower index of 117. It is possible to get a follower index of 65, which corresponds to C9E5-CA89. Index 61 is C751-C7F5, which had the address C753 be Key 20 Type correspond to Name 2nd character. However, it's ID was determined by Key 22 Prefix/Suffix, which was FFFF, causing the game to crash due to it's sprite. If 61 did not crash, I could've changed my name to have the 2nd character be 6, allowing me to skip the Pirate key entirely.
The ID for follower index 117 is EB74, EB75. This seems to be related to the overworld NPC. It cycles from 0 to ~28,000, jumping several hundred values every frame. Valid IDs that didn't immediately crashed the game were:
  • 12384
  • 15712
  • 15968
  • 16224
  • 18272 (very fast)
  • 18528
  • 18784
  • 19552 (very fast)
  • 19808
  • 22368 (very fast)
  • 22624
  • 22880
I chosed monster ID 19552, since it appeared to be 4 frames faster than 18272. The other ID's cause the game to lag a lot before letting me continue.

Save/Reset

Saving and reseting is used 10 times in the run:
  1. To make my 2nd follower ID 0
  2. To duplicate my monster 7 times
  3. To remove the guard blocking the tournament hall
  4. To get a villager to appear in Limbo shrine
The game seems to save follower index first, before the monster data. So if I had say, 1 monster, saved, then get another mosnter before save/reset, the game would save the fact I now have 2 monsters, but only data for 1. This explains 00000.
Similarly, by saving at the farm when I had 2 monsters, the next time I save/reset after releasing one, the game reduces my follower index by 1, but fails to save the fact I released a monster. So I can now release the same monster 7 times in a row.
Regarding recruiting monsters, SpotSlime is the only monster that can be recruited more than once in the starting screen, at a 1% chance after the 1st. Cacitball is apparently impossible to do without treats. The time it takes to manipulate a 20 encounter step SpotSlime, plus the fighting, then subsequent delay to recruit it meant save/reset dupe was faster by 2000 frames.

Stage by stage comments

GreatLog

The cloakroom bug allows you to get the pie a bit faster by pressing A as soon as you walk on the door tile to the storage room.
Pressing Up/Down when you return to your house saves you around 2 seconds. This was missed from the previous run, so I added back here.
Using the same cloakroom bug, it is possible to enter the egg shrine area early before you get a monster. Talking to the old man that breeds monsters would've resulted in every subsequent dialogue be empty, and automatically closed. This would've saved time, if not for the fact it goes away after save/reset. Since I save/reset at the first village before most of the talking gets skipped, it ends up losing time.
Talking to the old man twice would've also allowed the game to jump to WRAM, but due to being so early in the game, there wasn't anything I was able to exploit.

Oasis

The layout of items is determined when you leave the shrine. The address CC47 (U), CC24 (J) determines how much items appear in the overworld. The items uses 1 byte for ID, 1 byte for Map X/Y, and 1 byte for Tile X/Y. For instance, 01 00 00 30 45 would mean item id is 1 (Herb), at Map screen 3, 0, at tiles 4,5 within that screen.
It is possible to manipulate both Warp Wand, and Warp Wing to appear on the map. The Warp Wand warps you to the front of the shrine, while the Warp Wing warps you to GreatLog directly. For this run, I need a Warp Wand for use later at the Water World. Since no store stocks it, and I literally visit 4 screens in Water World, I needed to get a Warp Wand in the Oasis.
It took me over 187 frames to get a Warp Wand to spawn at the very first screen of the map, right outside the shrine. I recruited a monster, made it to 00000 by save/reset, then went back out to pick up the wand and get a duplicate monster. Then I went back to GreatLog.

GreatLog

I saved at the farm to set up the glitch, then went to the entrance of the tournament to save/reset. This made the woman there act as my brother, allowing me to deposit monsters, while also moving her away from the tournament entrance. I deposited both Slime and Cacitball to get a glitch follower index. The game tracks your follows by 3 indices: C6FE, C6FF, C700. Normally, this points to the follower's data structure in A000-BFFF. When you deposit the duplicate follower, the index gets bugged, and becomes a high value. It was discovered by others (I do not know who; it was already a thing since 2015 at least with https://www.speedrun.com/dqm2/runs/7ylko7xz.) Depositing a duplicate NPC after restarting the game in the Japanese version of the game results in an index of 117. This treats the region from EB69-EC0D as part of the follower's data structure, which still isn't useful. However, when you release monsters from your farm, the game decrements your index to reflect CartRAM being cleared. Since I was at index 117, the game decrements to 116, which is still in WRAM. By releasing 7 monsters, I can get the game to treat E6E6-E78A as their data. The save/reset is to allow me to release the same exact monster 7 times in a row, instead of needing to get 7 different monsters.
Bytes 0x58, 0x59, 0x5A in the monster's data structure is their experience gained. E6E6 + 0x58, 0x59, 0x5A is the address for Key 14 NPC Level, Key 15 Type, and Key 15 Prefix. The ID for the Limbo key is 6. To get Key 15 Type to be 6, I need to get experience. Experience is 3 bytes little endian, so I need 0x600, or 1536 experience to obtain the Limbo key.

Tournament

I need to beat 3 monster tamers in the tournament for the Pirate Key.
My monster is now dead, but I can revive them by either going to the tournament and dying, or use a key to go to GreatLog. I cannot go back to the shrine without the woman blocking the tournament again, so I decided to die at the tournament. The NPC uses heal on their first turn, before I immediately die.
The first fight consist of 2 Babbles, and 1 PearlGel. Their stats do not matter, because I deal thousands of damage every turn. My high agility means their attacks misses often. I manipulate all 3 monsters to miss me, since it is faster, while avoid using their skills. I did test using the fastest text speed in game, but all it does is auto press A at the earliest time in battle. I decided to keep with text speed of 8 to control RNG events. I noticed that I get pumped up more often than when using Slime/MadCandle. That had to be avoided as well due to an extra dialogue box.
The 2nd fight has a SpikyBoy, Pixy, and Eggplaton. The 3rd fight is 2 MadRaven, and a SkullRoo. Their fights are identical to the first. The only thing to note is that on the 3rd fight, I manipulate the encounter steps to 70, so that I can get to the Pirate World village, buy a Journal, then go back to the ocean before an encounter.

Pirate World

I searched up what NPCs appear in the 1st screen of Pirate World. I found out the water gives much higher experience than on land. On water:
IDNameXP
316Petiteel148
322Merman155
323Octokid93
325Octoreach102
332RougeWave111
On land:
IDNameXP
10Slime9
80Anteater27
147Toadstool28
However, since I have not beaten the Oasis, I could not swim. The land monsters were low experience, so I had to find an alternative way. I found out I can get to the screen to the right of the shrine, which gave the following:
IDNameXP
36DragonKid108
38Pteranod301
101CatMage288
Since I needed 1536 XP, I tested a bunch of fights. I found out it is possible to obtain over 900 XP per encounter in the area. That means it is possible to get Limbo Key in 2 fights. However, I must not get too high experience, or it would get me other keys.
I enter the village to save, then immediately left. No bookmark was bought this time.
The last encounter doesn't need a step count of 20, so it was far easier to obtain.
During the fights, normally, you would have 3 npcs attack you on the first turn, followed by 2, then 1. By delaying the screen where it says monsters have arrived, you can sometimes get them to be stunned for a turn. This allowed me to skip 2 of them from attacking me, saving 115 frames per fight. I used the warp wand I got from Oasis after the 2nd fight to return to the shrine.

Limbo

This time, I have no use for Limbo. I immediately save/reset to get the villager from Yold to appear at the right of the shrine, then talked to them to trigger the final fight.
I OHKO Darck, and warp back to GreatLog. The chest behind them is not interactable outside of the cutscene. Even if I saved/reset away Darck, I still won't get the spare plug. I am unsure why the dam looks bugged.
I did one final Up/Down move to get to the tree top 32 frames faster than walking normally. Then the next 9 minutes of the run is the credits, before I'm allowed 1 more dialogue and the ability to save.

Other comments

Last time the run was not able to sync on console due to timing. I hope this time it can.
I actually want to make an improvement to a somewhat glitchless run, but I have no idea if a save glitch minus glitch npc run would be allowed. I need to investigate more about the route however.

Possible Improvements

You can get a jump to WRAM when you deposit the duplicate monster when the id of follower 117 is the following:
  • 608
  • 11104
  • 21600
  • 21856
  • 22112
  • 23136
The list is not exhaustive. This gives a similar result as the cloakroom bug to an invalid screen mentioned in the thread. If you could corrupt game state (C5DB) to be 0 and survive, you end up in the debug menu. While the credits option there doesn't trigger the ending, you can use it's warp feature to warp directly to the last boss, skipping the Pirate key entirely.
This game doesn't check for save corruption, so there's probably some subframe reset improvement possible.

nymx: Claiming for judging.
nymx: Replacing movie to ensure proper cycle count.
nymx: Well, congratulations on furthering your previous effort. Now that I have done two "Save Glitches" in a row, I'm beginning to see how these categories work. When I read that you were experimenting with npcs placements, I finally realized that it is like a form of RNG...which I thought was "eye opening". This might get me to investigate some games to see if i can finally get a submission for one as well.
fsvgm777: Processing. McBobX is handling the encodes for this one.
Last Edited by fsvgm777 on 11/16/2024 9:34 AM
Page History Latest diff List referrers