the cutting room mirror

Unused Copy Ability Moves

This article has a talk page!This article has a talk page!
view on tcrf.net

This is a sub-page of Kirby: Triple Deluxe.

Many Copy Abilities that appeared in Kirby's Return to Dream Land have been nerfed in Kirby: Triple Deluxe via the removal of some of their moves. A lot of these moves, however, have all of their Mint coding still present in their archive, located in RomFS/mint/Step.bin.cmp under Scn.Step.Hero.

(Source: Vyroz, Firubii (original previous restorations))

Archer#

DebugSquatWait#

While Archer is an ability original to this game, it does have one unused move. The only state it has is called StateDebugSquatWait, but it appears to be empty. This move, however, is fully functional within the Mint file for Kirby Fighters, and it would've been able to cycle through the designs of the cardboard cutouts for the Camouflage move. Future games, such as Kirby Fighters Deluxe and Kirby Fighters 2 also have this move.

Beam#

Revolution Beam#

The attack "Revolution Beam" from Kirby's Return to Dream Land, activated by repeatedly pressing 1/B in mid-air, has fully coded Mint animation scripts, states, and even all of its animations from Kirby's Return to Dream Land are back. It in theory has everything it needs to work, except the checks for actually transitioning the Beam Whip to Revolution Beam in the air, and the check for the button inputs. Due to this, only the regular Beam Whip will be activated. It has two animation scripts called AnimScriptRevolution and AnimScriptRevolutionEnd, and one state called StateRevolution.

Circus#

DebugBalloon#

Circus is another ability original to this game that has an unused move. It has an animation script called AnimScriptDebugBalloon and a state titled StateDebugBalloon. Only AnimScriptDebugBalloon has actual code, while the state module and its class are completely stubbed-out. Due to this, it is unknown how this move would've worked, but one can assume that it involved the attack "Balloon Pop Art" in a way similar to Archer's DebugSquat, with the Balloons cycling through their multiple forms when pressing the B button.

If the code from AnimScriptDebugBalloon is made to load instead of the code in AnimScriptBalloon, it results in the following behavior: Kirby_Triple_Deluxe_DebugBalloon.gif

Notably, the balloon inflates faster than the regular variant, but unfortunately, without the rest of the code, this is all that we have of this move.

Fire#

Spinning Fire Breath#

Fire's "Spinning Fire Breath" attack from Kirby's Return to Dream Land, done by pressing 1/B in mid-air, has an animation script titled AnimScriptSpiral and a state called StateSpiral. It also has both of its animations from Kirby's Return to Dream Land in its motion archive. It cannot be used in-game, as only the regular Fire Breath comes out. The reason it cannot be triggered is because the TryToChangeState function for it has a "jmp" instruction set for it to immediately return, making it completely unusable.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

Removing this instruction completely restores the move in-game. Compared to Return to Dream Land, Kirby seems to fall somewhat slowly when using the move before accelerating to his usual fall speed.

Hammer#

Triple Hammer#

Similarly, Hammer's "Triple Hammer" attack from Kirby's Return to Dream Land activated by holding 1/B and then releasing it has animations, two animation scripts called AnimScriptTripleHammer and AnimScriptCharge, and two states called StateCharge and StateTripleHammer. In-game, Kirby will never begin charging his hammer, and will only do a regular Hammer Attack. Like Fire, it cannot be triggered in-game due to the "TryToChangeState" function in StateCharge is set to immediately return with a "jmp" instruction. This didn't stop Hammer from being the best ability in the game, though.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

Removing this instruction makes the charge accessible, followed by the rest of the move. However, due to the Triple Hammer lacking all of its particle effects from Return to Dream Land, the move will crash the game on real hardware. This can be fixed by removing the calls to the particles or by setting new ones.

Ice#

Ice Ball#

Ice's "Ice Ball", performed by pressing down + 1/B while running in Kirby's Return to Dream Land is still here. It has every animation required for it, as well as two animation scripts called AnimScriptTackle and AnimScriptTackleEnd and two states called StateTackle and StateTackleEnd. It even has the model for the ball of ice Kirby is encased in while doing the attack, complete with an animation. This move would later see the light of day once more in Kirby: Planet Robobot and Kirby Star Allies, with the former directly reusing the unused assets. Like Fire and Ice, the TryToChangeState for the ball is set to return with a "jmp" instruction.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

Removing it lets you access the Ice Ball, though it presents some changes compared to Return to Dream Land. The move itself ends faster, making it snappier and more spammable. Additionally, when crashing into a wall, the mist that is ejected out of the ball is bound to Kirby, meaning that it will follow his model until it disappears.

Ninja#

Aerial Quad Shock#

The aerial variant of the "Quad Shock" attack from Kirby's Return to Dream Land that is activated by pressing and holding 1/B in the air near an enemy can still be found in the ability's Mint. It has the state script state StateSlashReverse working just fine while Kirby is grounded, but its "TryToChangeState" function disables any aerial use via the Mint instruction "isGround", effectively forcing a grounded-only use with this check.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldfrsr 15, r1
callnt Scn.Step.Hero.Obj.footState()
ldsrfz r3
ldfrsr 15, r3
callnt GObj.FootState.isGround()const

Removing the last line documented above restores its ability to execute the move in mid-air. It has an unused animation for executing the move while airborne, and the game actually performs it if the move is restored. Said animation, found in Ninja’s motion archive, is completely new to Kirby: Triple Deluxe, but it cannot be seen in a vanilla game under any circumstance.

(Source: JC Players)

Spark#

Spark doesn't have one, not two, but three unused attacks.

Thunderbolt#

The attack "Thunderbolt" from Kirby's Return to Dream Land that was activated by pushing up + 1/B has its animation and state scripts, as well as the animations from the previous game, those being the animation script AnimScriptOver and the state StateOver. Like all the moves we've covered so far, it is disabled via the same method of setting a "jmp" instruction to immediately return.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

By removing the last line, the move is completely usable in-game. Compared to Return to Dream Land, the move was given multi-hit properties. However, its damage is poor compared to any other attack in its kit. This attack eventually reappeared in Kirby: Planet Robobot as well, but with significantly reduced range.

Lightning Strike#

"Lightning Strike" the sister move to "Thunderbolt", is also here. It has the animation script AnimScriptUnder and state StateUnder. Like the previous move, it is disabled in the same way. Say hello to the "jmp return" instruction once again. Unlike "Thunderbolt", it has no unique animations. Instead, it reuses the animations for "Spark Attack".

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

Removing the last line from its scripting makes the game usable again. Like the previous move, it was also given multi-hit properties while also having reduced damage. It also reappeared in Robobot, with the same change in range reduction.

Light Speed Dash#

Surprisingly, "Light Speed Dash", a move that wouldn't debut until Kirby Star Allies, is also present here. In that game, that move can be used by Plasma Kirby by pressing L/R and pushing to any desired direction after charging up energy. This version of the move used by Spark is similar, but it doesn't require any charge to be used. However, it still consumes all of it when used, and it seems to be unfinished, as it's somewhat clunky and it locks the camera in the last place where Kirby used it. It has the animation scripts AnimScriptLightning, the camera scripts CameraFilterLightning and CameraFilterLightningEnd, and the state StateLightning. Like "Lightning Strike", it has no unique animations, opting to use the animations for "Spark Attack".

The reason why this move can't be accessed is, you guessed it, another "jmp" instruction set to return immediately in its TryToChangeState functions.

bool TryToChangeState(Scn.Step.Hero.Obj)

fenter 5, 1, 2
ldsrzr r0
jmp    return

Removing that last line makes it accessible fully accessible.

Spear#

Triple Throw#

The "Triple Throw" attack from Kirby's Return to Dream Land has the animation script AnimScriptTripleThrow and the state StateTripleThrow and three unused animations. However, in this case, the charging and walking animations for Triple Throw are actually used, as the player can hold their regular Spear Throw and walk while holding it. This move can't be accessible due to the "ProcAnim" function under StateThrowCharge (which IS used) lacking some crucial code that would make the charge advance every frame. Re-adding the code is fairly simple, as adding the following instructions after "fenter" makes it work again.

ldaddr r2, r0, this.mChargeFrame
ldfrsr 15, r2
callnt Hel.Util.FrameCounter.advance()

Compared to Return to Dream Land, it lacks its charging sound effects and flashing indicator. This attack would finally return once again in Kirby Star Allies, since, internally, Bandana Waddle Dee is just the Spear Ability using a Waddle Dee model, and the hat is the bandana.

Stone#

DebugChange#

Stone didn't have any attacks from the previous game cut, but it does have a Mint module called StateDebugChange. Like Archer and Circus, this state is completely empty, but it would've presumably helped the developers by checking if the transformations displayed correctly by switching them.