TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #5102: The8bitbeast's SMS Wonder Boy III: The Dragon's Trap in 21:44.16

Console: Sega MasterSystem
Game name: Wonder Boy III: The Dragon's Trap
Game version: USA
ROM filename: Wonder Boy III - The Dragon's Trap (UE) [!]
Branch:
Emulator: Bizhawk 1.11.6
Movie length: 21:44.16
FrameCount: 78149
Re-record count: 31625
Author's real name: Jake M
Author's nickname: The8bitbeast
Submitter: The8bitbeast
Submitted at: 2016-04-27 08:51:24
Text last edited at: 2018-02-20 05:57:01
Text last edited by: The8bitbeast
Download: Download (23726 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
Wonder Boy III is an action-adventure platforming game for the Sega Master System. Wonder Boy has been cursed by the MEKA Dragon and must locate the Salamander Cross to lift his curse. Upon defeating bosses, new character transformations each with unique abilities are unlocked, allowing the player to explore new areas, buying Sword, Shield, and Armor upgrades along the way.


(Link to video)

Goal Choice

This TAS completes the game as fast as possible with the only restriction being no password use.

Instead of beating the game normally by fighting all the dragons and unlocking all of the character transformations, I skip directly to the last boss fight and finish the game as Lizard man. This is possible with the use of Charm Stone doors. Upon collecting 99 Charm Stones, an item that has a 1/16 chance of dropping from some enemies, several doors appear in the middle of town. These doors will take you to any main boss in the game, including the final boss. This allows the game to be completed almost 10 minutes faster than the previous TAS!

This run is entirely dependent on luck manipulation to get the 99 Charm Stones required in reasonable time. This route would be difficult to perform in real time, surprisingly not because of the luck manipulation, which is certainly possible in real time, but rather because of being so under-equipped for the last dragon fight. With the extra time taken ensuring correct RNG, and the added difficulty to the last fight, this route probably wouldn't save much time over the Tasmanian Sword exploit route for RTA.

I wouldn't consider this run to be in the same category as the previous TAS since the two routes completely diverge at about 3 minutes in. My opinion of the categories for this game is as follows:

Any%: The category of this TAS, the only restriction is no password use. This is the only category allowing Charm Stone doors.

Any% (No Charm Stone doors): No Charm Stone doors are allowed, but the Tasmanian Sword exploit can be used to skip dungeons. This is generally the category of choice for RTA Speedruns.

Any% (No Charm Stone doors, No Tasmanian Sword exploit): This is the category of the previous TAS which restricts both the use of Charm Stone doors and the Tasmanian Sword exploit for a more natural route through the game.

100%: Finish the game with every Sword, Shield, and Armor upgrade purchased/collected. Not very entertaining but it might be interesting to route with proper RNG manipulation.

Any% (Goldenblocks): An interesting route variation that involves using a specific combination of gear to allow placing blocks anywhere. Tasmanian sword and Charm Stone doors are not allowed.

RNG Explanation

Wonder Boy III uses randomness in many situations, including but not limited to: dealing & taking damage (critical hit calculation), deciding which item a defeated enemy should drop, and loading some types of enemy (used at 4:40). When randomness is desired, the game reads from an RNG table consisting of 385 bytes which are exactly the same each time you play.

The randomness comes from a pointer to the current location in the table, which advances by one each time a random event occurs. Once the end of the table is reached the pointer is reset to 0. Using this knowledge, I can manipulate for critical hits, and most importantly specific item drops from enemies. RNG manipulation is possible in real time, but it can be difficult to tell where you are in the table without a RAM watch.

The RNG table is stored in RAM from 0x10A5 - 0x10DB and the pointer to the current location in the table is at 0x10DC (16 bit). The table is actually 55 bytes long and updates, but considering it as a static repeating 385 bytes is a simplification.

When the game reads a byte from the RNG table it interprets the value as 1 of 16 outcomes. For example, the bytes 0x03 and 0x13 result in the same outcome. As a result, each enemy has 16 possible item slots and there are 16 possible values corresponding to each item slot.

The only enemies in the first part of the game that drop Charm Stones are clouds, blue crabs, and a far off underwater crab. Each of these enemies have a 1/16 chance of dropping a Charm Stone. But luckily, clouds and crabs have the Charm Stone on different slots. So it is more like a 1/8 chance of a Charm Stone between them, but only if you know which one to kill.

I was able to plan out exactly which enemies to kill before beginning the TAS.

Since I have to advance the RNG roughly 7 times between each Charm Stone, I use this time to get arrows to kill the clouds. Charm Stones from clouds are difficult to route in since the ratio of clouds to crabs in the first area is quite low. So getting several Charm Stones in a row from clouds would be quite slow since many extra map reloads would be required.

I've uploaded a recording of this TAS with the RNG values displayed linked in the YouTube description.

Optimizations

This run is quite different to the original TAS but they both complete the first boss normally. I was able to make a few optimizations throughout the first castle.

Attacking while jumping will slow down the player. There are a few frames when falling after a jump that slow the player less than normal when attacking. Some enemies on the way out of the first castle are too short for a fireball shot on these frames to hit. Instead, I attack on the optimal frame and then jump again to manipulate the enemies jumping into the fireball. This allows me to travel 1 extra unit per enemy. I save some time over the original TAS using these optimizations. Each enemy requiring this took 30-60 minutes to TAS since manipulating them was so difficult.

During the first dragon fight, I wait for the dragon to come closer to the center of the screen resulting in him only leaving the screen once during the fight. This saves significant time over the original TAS which had the dragon leave the screen twice.

Another small optimization is walking as far as possible when entering doors. If you only input right or left for long enough to touch the door, you will slow down before the game recognizes that you’re in front of it and lose some time.

The last optimization in the castle was using an earlier falling block for the damage boost to get outside. Overall I was able to save 2-3 seconds in the castle over the original TAS.

I lose 4 frames passing the skeletons at the end of the castle, but this is essential for RNG manipulation.

Optimizing the Charm Stone grind is fairly straightforward. There are a few tricks such as shooting 2 crabs with one fireball, and changing map before the item spawns. The latter can be used if I don’t want to advance the RNG too much. The game only allows two items on screen at once, so even though I don’t need gold, I grab some to clear the screen for Charm Stones. Gold is useful for advancing the RNG since it advances two bytes instead of the usual one.

Jumping doesn’t usually lose speed, but jumping from standing still does. Figuring out the best time to turn around to grab Charm Stones while jumping was very difficult. Having a RAM watch with position and velocity was absolutely essential.

In the last fight, I am able to hit the dragon towards me by shooting a fireball quickly enough that it reaches the other side of the dragon before they become vulnerable again, stun-locking them on screen for much longer than attacking only from one side. The boomerang is used when the fireballs can’t be used quickly enough to keep this going.

This TAS was made using TAStudio on Bizhawk 1.11.6


GoddessMaria15: Judging.

GoddessMaria15: Hmm... this submission does indeed succeed in optimization, but there's the matter of entertainment, specifically the majority of the movie spent grinding... Sadly the lengthy grinding got repetitive enough to the point that it no longer qualifies for Moons. Still... it does complete the game as fast as possible and optimally, beating the current movie in record time.

Accepting for Vault to obsolete the current movie.

fsvgm777: Processing.


Similar submissions (by title and categories where applicable):