Star Fox Adventures: Amethyst Edition

This is a mod for Star Fox Adventures which makes a number of small improvements to the game.

Main Features

New PDA Menu

The PDA in Fox's inventory has been expanded into a more useful item. Selecting it will now open a menu.

Controls:

  • C Left/Right: Switch pages
  • Stick Up/Down: Select item
  • Stick Left/Right: Adjust selected item
  • L/R: Adjust selected item quickly
  • A: Activate selected item
  • B: Close menu

You can also open this menu at any time by holding L+Z and pressing B. This allows pausing during cutscenes, though it won't pause their audio.

See below for an explanation of the menu's contents.

Play as Krystal

This patch replaces Fox with Krystal in most scenes. Since this is only a visual/voice change, it can be awkward at times.

  • Krystal is slightly taller than Fox, so her animations don't line up perfectly. For example, when Fox would stick the staff into a hole, Krystal will stick it a few inches above; when the camera zooms in on Fox's face, it may end up focused on Krystal's neck instead.
  • The loincloth doesn't animate properly. (This is because Krystal lacks animations for some actions, so Fox's animations are used instead.)
  • During cutscenes, Fox's dialogue still uses his voice. Krystal introduces herself as Fox McCloud; characters refer to her as Fox and ask about Krystal, etc.
  • Krystal in cutscenes is not swapped with Fox, so there can be two Krystals during those scenes.
  • Krystal lacks voice clips for some actions, so she won't say anything.
  • When the staff is on Krystal's back, it appears to be stabbed through her. This actually happens to Fox as well, but is usually hidden by his backpack. (This is not easily fixed by moving the staff, because it's also broken in two in this state.)
  • In the Arwing flying sections, Fox can still be seen inside the cockpit.
  • At the beginning of the game, Krystal has access to the staff and PDA, which normally aren't available. This allows for some sequence breaking, and seeing some placeholder "not displayed"/blank help texts.

Autosave

From the PDA menu, you can turn on an auto-save function. This will save the game whenever you cross a map loading boundary. This setting is saved to the save file.

This patch also removes the confirmation prompts from the Save button in the pause menu. Just select the Save option and press A, and the game will be saved immediately.

New Camera Controls

The camera can be panned, tilted, and rolled using the C stick or another controller. Movement can be inverted on each axis. See below for details.

Gameplay Tweaks

Several minor improvements have been made:

  • Climbing is now much faster.
  • You can jump down from a wall while climbing.
  • Several voices are removed from the pause menu.
  • The map box now closes itself when no map is available.
  • Fuel Cells are removed from the inventory menu, since they're not a usable item.
  • Restoring a save state in Dolphin after saving the game will no longer cause a "not the same memory card" error.
  • Holding Z on controller 3 will fast-forward the game. (Tip: bind this to a spare button on your gamepad in Dolphin.)

Debug Mode

From the PDA menu, you can access several debug functions (most of which are added by the patch). Be warned that playing with these can crash the game or make it impossible to complete.

You can also enable debug text by holding Z as the game starts.

If you find an issue, please turn debug text on and take a screenshot, so that I can pinpoint exactly where and when it happens.

Screenshots

Krystal standing in ThornTail Hollow, holding her staff Playing as Krystal.
Krystal in ThornTail Hollow, fighting a SharpClaw Krystal in combat, with some debug displays.
Game Settings: Player (set to Fox), FOV, Game Speed, Autosave Can swap characters any time.
Krystal climbing a wall, with A button reading Jump Quickly jump down from walls instead of climbing down.
Krystal jumping down from the wall Krystal jumping down from the wall.
Closeup of map, showing No Map Data message, shrinking down to nothing Map box is hidden when no map is available.
Autosave in progress Autosave during play.
Audio: Music Volume, SFX Volume, CutScene Volume, Sound Test, Music Test, Stream Test Change audio settings during play.
PDA Menu: PDA HUD, Map Size, Map Opacity Map size and opacity options.
Game Settings: Player, FOV (set to 120), Game Speed, Autosave FOV at 120 (double).
Game Settings: Player, FOV (set to 30), Game Speed, Autosave FOV at 30 (half).
Debug: Debug Text, Tricky Debug Text, Free Move, Reload Map, Warp, Objects, GameBits, SaveGame Data, Heap, Show Text, Advance Frame Debug functions available on demand.
Debug: list of loaded objects Debug mode showing loaded objects.
Debug: lots of Tricky state info Debug text including Tricky state info.
Tricky perched atop a normally unreachable pillar. Krystal/Fox nowhere to be seen. Free Move function works on objects too.

Download

Download patch and follow the instructions below.

Source code here, as well as various notes and tools I used.

If the download link doesn't work, just keep trying. There's a glitch with the web server.

How to Apply the Patch

  1. Get a copy of Star Fox Adventures, US version 1.0. (That means not the European or Japanese versions, and not the Player's Choice edition.)
  2. Copy the disc to your PC using CleanRip.
  3. Add the resulting ISO file to Dolphin's game list.
  4. Right-click the game in Dolphin's game list and select Properties.
    Location of Properties menu
  5. Click Verify, then Verify Integrity. (This will take a few minutes.)
    Location of Verify tab
  6. Ensure that the MD5 field reads: afb0306454b581e37a62170fdfd1de09 . If it says anything else, you have the wrong version (or a damaged copy) and the patch most likely will not work.
    Location of Verify button
  7. Use xdelta to apply the included patch file to a copy of the ISO file.
    If you receive the error message:
    Unknown secondary compressor ID: XD3_INVALID_INPUT
    you are using an old version of xdelta and should upgrade.
  8. You should now have a patched ISO file which can be played like any other.
    The patched ISO file is about 800 megabytes, which is less than the original. This is normal. (A lot of padding is removed.)

Bugs and Notes

  • When climbing down a wall, pressing A near the very top may cause the player to warp to the top rather than jumping down.
  • Jumping down while climbing a wall may cause a brief animation glitch.
  • Switching between Fox and Krystal can cause animation glitches until the character moves.
  • In some areas, the staff's swipe effect doesn't actually follow the staff.
  • Some attack techniques such as the sweeping kick may not actually connect with enemies. This usually doesn't interfere with anything other than making it take slightly longer to fight them off.
  • Krystal's eyes look toward the wrong object during some cutscenes.
  • When playing on a modified console with debug text enabled, you may occasionally see the message SUSPECTED GRAPHICS HANG OR INFINITE LOOP during map transitions. This can be ignored as long as it goes away after a few seconds.

Bugs that are in the original game

  • Reflections aren't positioned correctly.
  • Some cutscenes are missing audio.
  • With clever movement, it's possible to swim off the top of a waterfall and continue swimming in midair.
  • It's possible to hop to an out-of-bounds area in the Walled City and find gaps in the level geometry.
  • When playing on a modified console, cutscene audio might not play. This is due to the modchip/loader not supporting audio streaming. The only way to fix this is to use a loader that supports streaming.

I hope to fix the reflection and audio bugs, but have no plans to fix the waterfall/out-of-bounds bugs, since they don't harm normal gameplay and are fun to mess around with.

PDA

The PDA item in the inventory now opens a menu with 4 pages:

PDA Menu

  • PDA Hud: Switches the HUD between Map, Fuel Cell Compass, Information, and Off.
  • Map Size: Switches the map size between normal, small, and huge.
  • Map Opacity: Lets you turn the map transparent.
  • Subtitles: Whether to display subtitles during dialogue.
  • Rumble: Whether to vibrate the controller.

Game Settings

  • Player: Lets you switch player character.
  • FOV: Lets you adjust the field of view from 5 to 175 degrees. (Settings above 130 might have graphical glitches.)
  • Widescreen: Whether to use 16:9 or 4:3 aspect ratio.
  • Game Speed: Lets you speed up or slow down the entire game, from 25% to 400%.
    Cutscene audio is not affected, so it will get out of sync if you change the speed.
  • Autosave: Turns the auto-save feature on/off.
  • Camera Control: Select camera control mode (see below).
  • Camera X: Whether to invert camera pan movement.
  • Camera Y: Whether to invert camera tilt movement.

Audio

  • Music Volume: Adjust music volume, from 0% to 200%.
  • SFX Volume: Adjust sound effect volume, from 0% to 200%.
  • CutScene Volume: Adjust cutscene dialogue volume, from 0% to 200%.
    These are the same settings as in the options menu, but can be adjusted during play and set beyond 100%.
  • Sound Mode: Switch between Stereo, Mono, Headphones, and Surround.
  • Sound Test: Lets you play any sonud effect.
    Sound effects do not have names, so only the ID is shown. Some sound effects never end.
  • Music Test: Lets you change the music.
  • Stream Test: Lets you play cutscene dialogue.

Pressing Z will stop all streams and the currently selected sound effect.

See below for explanations of the Debug page.

Camera Controls

New camera control functions are added, configurable from the PDA menu.

Two control options are available: Controller 3 (default) and Controller 1.

Using Controller 3

In this mode, use the C stick on controller 3 to pan and tilt, and L/R to roll.

Using Controller 1

In this mode, use the C stick on controller 1 to pan and tilt.

  • Controller 3 L/R are still used for roll.
  • Use the D-Pad to select items.
  • Use the menu to change the map mode. (Zoom is not available.)
  • Use the L and R triggers to control zoom with the viewfinder.
  • Some menus that would use the C-stick now use the D-pad instead.

Camera Behaviour

Depending on the situation, the camera moves differently:

  • Normal: The camera turns on its own axis. Roll reverts to normal when you release the triggers.
  • While holding L: The camera orbits around the player. Roll does not revert when you release the triggers (until you also release L).
  • In first-person View: The camera behaves as usual. The C stick will turn it very fast. Roll does not revert.
  • While aiming: The camera behaves as usual. If holding the C stick, shots may not fire from the tip of the staff. (They will always fire toward the crosshair, even if the character isn't actually pointing at it.)

Invert

The X and Y axes can be inverted (moving the opposite direction of the stick) for a more natural feel. This applies to camera movements, aiming, and first person view.

Debug Mode

Several debug functions are available from the PDA menu:

  • Debug Text: Display some information on the screen.
    • P: Player coordinates, and RAM address of player object.
    • M: Current map cell coordinates and map ID.
    • S: Current map state, flags, and internal name.
    • C: Camera coordinates.
    • Obj: Number of objects on the map.
    • Target: Object the player is currently interacting with.
    • Text: Current text ID.
    • Seq: Current sequence ID.

    In the bottom left corner, 5 bars are drawn:

    1. Previous frame render time
    2. Heap 0 free space
    3. Heap 1 free space
    4. Heap 2 free space
    5. Heap 3 free space
    The heap bars are not percentages; each pixel represents 16 KBytes.

    This setting also enables messages generated by the game, including a GPU hang report (which can appear erroneously during load times).

  • Tricky Debug Text: Display lots of information about Tricky.
  • Free Move: Lets you move your character anywhere.

    Controls:

    • Analog stick: Move forward, backward, left, right.
    • L/R: Move up/down.
    • C stick: Turn.
    • Z: Hold to move faster.
    • B: Exit free move.

    Notes:

    • In this state, the player is immune to damage and gravity.
    • Although you can move through solid objects, you'll snap back where you would have been stopped by them when exiting free movement.
    • The camera can be uncooperative. This should be fixed in the future.
    • This function affects the object that the camera is focused on, which may not necessarily be the player. Some objects will stop working or even crash the game when moved this way.
    • This feature can also be toggled by pressing X on controller 3.

  • Reload Map: Resets the map as if you'd just loaded the game.
  • Warp: Warp to various maps.
    • Warping to a map this way may not set it up correctly. Usually this can be fixed by entering another room.
    • Warping to some unused/cutscene maps will crash the game.
    WARNING: You should turn off auto-save before using this, or else risk getting saved in a broken scene.
  • Objects: Displays list of loaded objects.
    • Up/Down: Scroll.
    • C Up/Down: Scroll fast.
    • Z: Set the current object as the camera focus. (Some objects can't be set.)
    • X: Delete the current object.
    • Y: Move the player to the current object.
    • Start: Select the player object.
    You can use this along with free move mode to move objects around.
  • GameBits: View and edit game state information. See here for a list of bits.
  • SaveGame Data: View some information about the current save file.
  • Heap: View memory allocation data.
  • Show Text: Display any GameText.
  • Advance Frame: Advance one frame while paused.

Revision History

v1.3 ()

  • Most settings are now saved.
  • Most items from options menus can be adjusted from PDA menu.
  • When using controller 1 to move the camera, the L/R triggers are used to zoom the viewfinder, rather than the D-pad.
  • Fixed: Krystal after-image is Fox in Drakor scene.
  • Corrected Krystal's ledge grab height.
  • Volume settings can be adjusted more precisely.

v1.2 ()

  • Add camera control functions.
  • Add option to invert camera movement.
  • Map size can be set to Small.
  • Debug menu improvements:
    • Use fixed-width text.
    • More info in object list.
    • "GoTo" in object list ignores hit detection.
    • Improved warping method.
    • Improved warp list.
    • Add missing songs to sound test.
    • Add stop button to sound test.
  • Free Move improvements:
    • Camera mostly stays behind target. (Sometimes still gets stuck.)
    • Can move through most geometry.
    • Rotation is faster.
    • Swap B and Z buttons.
    • Should be more stable when moving other objects.

v1.1 ()

  • Fixed: Krystal after-image in WarpStone scene is no longer Fox.
  • Replace some empty entries in WARPTAB.bin with more useful/interesting ones. (Not all of them work, though.)
  • Crash screen should now show up even when debug mode is off.

v1.0 ()

  • First release.

Future Plans

  • Make fireball hitbox bigger.
  • Add some warps around the map for fast travel.
  • HUD improvements:
    • Be able to move items to the very edges of the screen
    • Banjo-Kazooie style HUD, where items are only displayed when needed
  • Better inventory menu, to move rarely-used items out of the main inventory.
  • Save Y button equip to save file.
  • Move some objects around to be less annoying.
  • Make Tricky less chatty and more helpful.
  • Restore language select menu.
  • Allow backtracking to previous areas after completing them.
  • Repack and trim assets to improve load time.
  • Allow displaying debug objects.

Special Thanks and Acknowledgements

  • Folks in the Krystal Archive Discord for testing, support, ideas, a high-resolution logo vector file, and this trailer video
  • Ninji, Neko May, Elery, for help and support with coding and life in general
  • Developers of the Wind Waker Randomizer (from which I borrowed texture codecs), Dolphin Emulator, and Ghidra
  • RavenWorks for some textures
  • My cats, for "reminding" me to take breaks
  • Lots of people I've forgotten
  • UsedPizza's LP provided several ideas for improving the game.
  • retroben999 for some bug fixes.
  • Obviously, the creators of the original game; not just for creating it, but also for publishing lots of footage and information about Dinosaur Planet.

Rant

This project would go much faster if certain people who've worked on this game (and other Rare games - they all share a lot of code) would publish their findings instead of only closed-source tools and videos, instead of me having to redo their work.