Spy Kids 3D: Game over was a movie based platformer game for the Gameboy Advance. It covers a few genres like straight platforming, fighting and racing. This TAS beats the game as fast as possible with no restrictions.
All of the tech in this game will be discussed below, but I’ve also put together a video discussing the game and explaining the speedrun/TAS here: https://youtu.be/YDIrvsmqL_Q

Music and SFX

Turning music off saves several frames on entering each level, plus it reduces lag within levels.
Having SFX on can cause lag, but only when the game is very laggy and playing sound effects already. Given it takes 2 frames to turn off SFX, I had to check whether I was getting 2+ frames of SFX lag. I originally TASed up to level 5 with SFX on, but found 5 lag frames in level 5 that could have been avoided with SFX on. So I went back, turned it off and resynced everything. I’m sure there would be more SFX lag in later levels of the TAS, but given I definitely know of at least 5 frames in level 5, I know it was worth turning off SFX.
I really don’t like having a silent TAS, but I opted to go for the optimal speed rather than having the music and SFX.

Useful RAM addresses

AddressDomainDescription
0x0146F0EWRAMBoss HP
0x0146F4EWRAMBoss Vulnerability
0x000392CombinedRobot drop RNG
0x00038CEWRAMSFX On/Off
0x0003E0EWRAMMusic On/Off
0x0146F4EWRAMBoss Stuff
0x0146F0EWRAMBoss Stuff
0x02000811-0x02000817System BusX and Y Pos
0x02000A61-0x02000A66System BusX and Y Vel

Optimising game styles

Platformer levels

Jumping is faster than walking (200 speed rather than 1E0 speed). When you land, you lose some speed but this can be reduced by kicking at some point in the air. Kicking also locks your movement direction in. Since it doesn’t matter when you kick, this doesn’t cause too many issues.
You can press down + B to stomp. If you hit an enemy, you will get less of a slowdown from landing than a normal jump. That makes the best strategy to do big jumps and avoid landing where possible, and if you do land, try to stomp on an enemy and bounce off it to reduce the speed loss.
After level 1, I get the super jump ability, which makes platforming height control easier. I am often using the super jump because it allows me to be in the air for longer, which lets me keep more speed.
You can climb up ledges by jumping at them then pressing up when Juni grabs on. This is often skipped where possible, usually by bouncing on enemies to get height.

Jump types

Low A – Jump when super jump is not selected. Pretty low High A – High jump by pressing A when super jump is selected High R – You can high jump by pressing r when super jump is selected as r generally lets you use whatever ability you have selected. This is a bit slower in your horizontal speed, as you get delayed a frame before starting. It also results in a lower jump.

Upgrades

At the end of most platforming levels, you will unlock an upgrade: Super Jump – Let you jump higher when active. The jump from r is slightly different but slower than the jump from A.
Power Staff – Projectile attack that does 2 damage. Often the best possible damage output on bosses.
Triple Punch – Bad. You can only use this grounded and most bosses hitbox it in the air.
Energy Stealer – Damage enemies and steal their health
Super Stomp – Like a normal stomp but does 2 damage and you do not bounce back up off the enemy after. Used a bit to kill grounded enemies just before the final boss.

Racing levels

In these levels you hold B to go, A to jump and r to boost if you have one. Boosting puts your speed at 600, compared to your normal speed of 400. Given the boost snaps you up to 600 instantly, this is often good for any sections where you need to accelerate quickly from a stop up to speed.
You collect boosts throughout the race and the boosts carry across the races. For that reason, I bring the last boost from the second racer into the third racer.
B makes you go, A jumps and r boosts. Boosts are scattered along the track and you collect them as you go.
Your normal speed is 400 (hex) and you lose speed when you land from a jump proportional to your y-velocity going into the ground. For this reason, jumping usually is slow.
Ramps will fling you into the air with a speed proportional to your y-velocity. This can be good for skipping sections, but in general it’s bad since you’ll hit the ground with a higher y velocity resulting in more speed loss. I found that if you jump, then you don’t get flung because you’re not touching the ramp. Usually this means you get flung anyway later on in the ramp, but you can chain these jumps to avoid flinging at all.
Boosts put you up to 6F0 then you lose 10 speed units per frame. There are two main places boosts are used (sometimes a combination of these two) - After a landing speed drop. If your speed has dropped to 2xx then you can speed up to 600 instantly with a boost with good timing. - Just before a ramp, if you boost, you get flung much higher, usually skipping some more jumping and landing sections.

Robot Levels

Jumping does not exist, rather you use your rocket boosters to fly up. This is slow as it has a large charge up window plus it only lets you go at 100 rather than 1A0 speed.
When falling off a ledge, your charge boost charges up and delays your walking by many frames. You then fly down slowly at 100 speed. I found an exploit to semi skip this, by doing an intentional charge up jump action for a frame, you can hit the edge of the ledge and walk off it normally. This doesn’t skip the charge up animation but it does skip the slow walking off the edge. This saves a few frames on every ledge. Sometimes I need to adjust and slow down beforehand to make my subpixels line up

Robot Power up drops

The gimmick of levels 2-x is that you gain the abilities from the enemies you defeat. Each enemy has a random chance of dropping their weapon. Once you have it, you can equip it with L and use it with R. The below table summarises the damage done to the boss of 2-x and the damage done to individual enemies is similar.
WeaponDamage to boss
Normal Punch1
Missile3
Razor1x2
Hammer1
Shield0
Based on the table above, I opted for the missile upgrade since it’s the strongest available and also the earliest one available. The only downside is that it shoots too high to kill the blue enemies. Although it takes time to get the upgrade, it’s worth it since it allows you to get through the levels quicker and deal damage to the boss much quicker. The missile locks you out of your movement for slightly longer than a punch, so most 4 health enemies are killed with 1 missile + 1 punch.
The value at 000392 (EWRAM) holds the RNG for the boss drops (whether you will get one or not). This can only be incremented in the 2-x levels by killing enemies, so this would be very slow to manipulate. Conveniently, punching in the 1-x levels increments the RNG for each punch. So I do 3 punches in the end of the 1-3 boss to manipulate a drop from the first robot enemy I see. This doesn’t lose any time to manipulate since I’m waiting for the fadeout anyway.

Score Screens

If you try to use a single A press to skip through the score screens, it will take a long time. Alternatively, use 2 presses and you can get it in 4 frames. Similarly, the bonus skills screens can be skipped in the same way but using 6 A presses. Apart from that, most menus can be skipped through with a simple A press on the first green frame.

Maps

Given the obscurity of this game, I couldn’t find any maps online. To ensure I took the optimal path through levels, I wrote a lua script to scroll through the map and take incremental screenshots which I stitched together to make full level maps.

Individual Level Comments

Level 1-1

I don’t have super jump yet, so my movement options are limited. Bonking off the top from enemies often helped me skip having to grab up ledges.
There’s a small section with a grassy step like structure. For some of these jumps it was better to stomp the ground to allow the next jump to be sooner. Stomp has a cool down after you land, so this is only occasionally worth it.

Level 1-2

There’s a little skip towards the end where I can jump up and grab a ledge earlier than intended.

Level 1-3

You have to collect a key in this level to spawn in the bridge. Luckily the key is right in the way leading up to the bridge.
This level has the first boss fight. The boss goes invincible shortly after taking 2 damage in each cycle, meaning it would take a lot of cycles to complete. This can be extended to more than 2 damage by giving him 1 damage, then doing a 2 damage attack or by kicking in the air, damaging him a few times in succession.
I found a glitch where I can get stuck in the bosses hitbox, allowing the kicks to connect for way longer than usual and let me beat the boss in 3 cycles rather than the usual of about 10.

Racer 1

I did some careful speed management to reduce any speed lost from landing.
I used a boost to get a lot of height off a ramp near the end of the level. This also doubled up as restoring my speed after losing it. I stayed towards the top of the level so that I could avoid any slowing down with the bottom route.

Robot 1

This level is pretty linear. I kill a robot early on to get the missile weapon which will stay for the next 3 levels. I could have gotten over the robot I killed, but that wasn’t much faster and the missile saves enough time to make it worth slowing down for.
This level had 1 robot in a small corridor that I had to kill as the roof was too low to jump over it.

2-1

I tried a few different routes which all had similar walking distances, but this one was the best as it avoided having to fly over too many robots.

2-2

This level is where health management plays a large factor. I can sometimes step on the blue circle containers to restore health.

2-3

Again, health management is a big issue here. This level has some flames that come up from the floor, which are slow to jump over, so I often take damage on them instead.
The boss for this section is someone in a mech suit. Missiles do the quickest damage to this boss, but the boss usually comes up and deals damage to Juni during this fight. To combat this, I moved right to lure the boss into doing the hammer on the floor attack. This froze the boss in place and slowed me to get in some free hits.

Racer 2

This one has a section where you have to use the boost. If you miss it then you can’t complete the race. I keep one boost at the end to save for the next race level.

3-1

The first part of this level seems limited by the moving platform cycle. The surfboard in the lava moves at your normal walking speed unless going downhill where it’s a bit quicker. So you can’t really speed the surfboard section up. If you fall off then another board comes along soon, but this would be slower and luckily I avoid it.

3-2

This was one of the most time consuming levels to TAS. I just barely miss the moving platform cycle towards the end of the leve4l and no matter what I did I couldn’t catch it. I would have been able to but the falling rocks from the roof hit me if I tried to make it any quicker.

3-3

This level has an unintended skip where you can skip grabbing the key to make the bridge. You have to lure a bat and jump on it to get across. Luring this bat is pretty slow, so doing this skip only saved about 20 frames over going out of the way to get the key.

Racer 3

This level has a pretty big skip. By doing two big boosts in the air, I skip a section of track where you gradually weave upwards.

Final Boss

This starts with a section where you have to kill 40 enemies. The fastest way I found was to do the super slam, killing them in one hit.
The boss fight strategy is similar to the lava boss, where you have to wait around for the i-frames. You are supposed to destroy this bosses hand and use it as a platform to get up, but by swapping between super jump and the pole throw ability, you can get enough height to reach the boss. I didn’t have to do any early input shenanigans, since the last input is on a screen a bit later on.

feos: Claiming for judging.
feos: I tried adding back the sound effects but then I was unable to resync the robot level. If such an movie is made, we can add it to the publication as an extra file. All the rest already looked good, accepting.

despoa: Processing...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15610
Location: 127.0.0.1
This topic is for the purpose of discussing #8013: The8bitbeast's GBA Spy Kids 3-D: Game Over in 19:59.03
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4037
Pretty cool platforming action. It's a shame about the sound, but maybe a second encode could be made with SFX on, since it's a few frames here and there. I will say that watching Juni move around silently gave me a sense of flow, only interrupted by the end-level score tally. Though most viewers might prefer to play music while watching it.
The8bitbeast
He/Him
Expert player (2642)
Joined: 11/26/2015
Posts: 183
Location: Australia
CoolKirby wrote:
Pretty cool platforming action. It's a shame about the sound, but maybe a second encode could be made with SFX on, since it's a few frames here and there. I will say that watching Juni move around silently gave me a sense of flow, only interrupted by the end-level score tally. Though most viewers might prefer to play music while watching it.
Yeah I was pretty torn on the sound situation. It is pretty easily resyncable by just inserting a blank frame each lag frame, so definitely a possibility.
Darkman425
He/They
Editor, Judge, Skilled player (1292)
Joined: 9/19/2021
Posts: 263
Location: Texas
An alternate input file that has sound would be nice for alternate encodes but not necessary. There have been publications that forego sound and/or music to save time, most notably the Mortal Kombat 3 speed TAS: [4733] SNES Mortal Kombat 3 by KusogeMan in 04:51.27
Switch friend code: SW-2632-3851-3712
Editor, Experienced player (942)
Joined: 7/20/2011
Posts: 345
Unless the music or sound effects are obnoxiously bad, I dont think 5 frames are worth eliminating the sound from the ENTIRE movie. I realize you theorized there could be more frames from later levels but it seems like the amount saved is very minimal. If an alternate file like some suggested is deemed okay, then it's not as much of a problem I suppose. The optimization seems okay without having played the game and having no knowledge of it, but sitting in silence was pretty weird to me. Those racing levels gave be bad flashbacks of clinger winger from battletoads.
Current thoughts: Hachiemon (J) for GBA.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15610
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [5120] GBA Spy Kids 3-D: Game Over by The8bitbeast in 19:59.03