From 12cd35b12dde4c5aa1c422521c539e7e220e35e5 Mon Sep 17 00:00:00 2001 From: JCog Date: Sun, 29 May 2022 00:02:47 -0400 Subject: [PATCH 1/2] update manual for v2 release --- USAGE.md | 176 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 119 insertions(+), 57 deletions(-) diff --git a/USAGE.md b/USAGE.md index 055c9f5..5af36e6 100644 --- a/USAGE.md +++ b/USAGE.md @@ -6,7 +6,6 @@ - [2.1 Warps](#21-warps) - [2.1.1 Locations](#211-locations) - [2.1.2 Bosses](#212-Bosses) - - [2.1.3 Favorite Rooms](#213-favorite-rooms) - [2.2 Cheats](#22-cheats) - [2.3 Player](#23-player) - [2.3.1 Status](#231-status) @@ -17,15 +16,18 @@ - [2.3.6 Merlee](#236-merlee) - [2.4 File](#24-file) - [2.5 Practice](#25-practice) - - [2.5.1 Tricks](#251-tricks) - - [2.5.2 Trainers](#252-trainers) - - [2.5.3 Timer](#253-timer) - - [2.6 Debug](#26-debug) - - [2.7 Settings](#27-settings) + - [2.5.1 Trainers](#251-trainers) + - [2.5.2 Timer](#252-timer) + - [2.6 Camera](#26-camera) + - [2.7 Watches](#27-watches) + - [2.8 Debug](#28-debug) + - [2.9 Settings](#29-settings) - [3 Known Issues](#3-known-issues) ## 1 Introduction -The main interface for interacting with fp is the utility menu, which can be accessed by pressing `R + D-Up`. This menu can be navigated with the D-pad, and L is used to make a selection. To quickly go back a menu, press `R + D-Left`. To close the menu, press `R + D-Up` again. These button combos can also be configured (see [2.7 Settings](#27-settings)). +The main interface for interacting with fp is the utility menu, which can be accessed by pressing `R + D-Up`. This menu can be navigated with the D-pad, and L is used to make a selection. To quickly go back a menu, press `R + D-Left`. To close the menu, press `R + D-Up` again. These button combos can also be configured (see [2.9 Settings](#29-settings)). + +If starting from a new file, it's advisable to play mostly normally until at least obtaining Goombario. Until that point, the game isn't quite in a state that expects you to be able to go anywhere but the starting areas, and you'll likely run into crashing issues. ## 2 Menus @@ -34,22 +36,17 @@ The main interface for interacting with fp is the utility menu, which can be acc #### 2.1.1 Locations The **locations** menu provides a list of every room in the game and allows you to warp directly to them. There are three different values for this: -- **group**: Rooms grouped together by location, such as Toad Town, Dry Dry Desert, Flower Fields, etc. -- **room**: The specific map in the selected group, typically accessed by a loading zone -- **entrance**: Where the room will be accessed from. This is mostly for selecting a loading zone, but certain entrances are also used to start cutscenes. The general rule of thumb is that earlier entrances are for loading zones and later entrances are for cutscenes. +- **area**: Rooms grouped together by location, such as Toad Town, Dry Dry Desert, Flower Fields, etc. +- **map**: The specific map in the selected area, typically accessed by a loading zone. +- **entrance**: Where the map will be accessed from. This is mostly for selecting a loading zone, but certain entrances are also used to start cutscenes. The general rule of thumb is that earlier entrances are for loading zones and later entrances are for cutscenes. -After selecting a group, room, and entrance, selecting `warp` will immediately warp you to your selected destination. This works even if you are in battle. Do note though that there are certain states where attempting to warp would cause a crash, such as when a menu is open, so generally fp will disallow you from doing this with a warning message. +After selecting an area, map, and entrance, selecting `warp` will immediately warp you to your selected destination. This works even if you are in battle. Do note though that there are certain states where attempting to warp would cause a crash, such as when a battle menu is open, so generally fp will disallow you from doing this with a warning message. #### 2.1.2 Bosses The **bosses** menu provides a list of every major, minor, and optional boss in the game. By selecting a boss, you will warp to the room that the boss is located in, and your story progress and any necessary flags will be set to allow you to fight the boss, regardless of your current state. Also note that when warping directly to Bowser's second phase, because the game normally carries Bowser's HP over from the first phase, a menu to select his starting HP is provided. -#### 2.1.3 Favorite Rooms -Since there are hundreds of rooms, and you'll likely want to go to many of the same rooms more often than others, the **favorite rooms** menu allows you to save up to 10 rooms for easy access. These can be saved along with the rest of your settings to persist across multiple play sessions (see [2.7 Settings](#27-settings)). - -Each row is a different room, defined by a group, room, and entrance. These can either be set manually, or by selecting `current` to populate the selected row with your current location. Selecting `warp` will warp you to the selected row. Selecting `save settings` will save all your settings to the current profile, including the displayed favorite locations. - ### 2.2 Cheats This menu allows toggling the builtin cheats on and off. The following cheats are available: @@ -61,10 +58,12 @@ This menu allows toggling the builtin cheats on and off. The following cheats ar - **hp**: Freezes your HP at its max value. - **fp**: Freezes your FP at its max value. - **coins**: Freezes your coins at 999. +- **star power**: Freezes your star power at the current maximum value. - **star pieces**: Freezes your star pieces at 160. - **peril**: Freezes your HP at 1 (note that this overrides the **hp** cheat). -- **break free**: Allows you to move during cutscenes. -- **auto mash**: Instantly fills all bars that require you to mash A. +- **auto mash**: Instantly fills all bars that require you to mash A or Analog Left. +- **auto action command**: Mario's action commands will be successful automatically. +- **brighten room**: Dark rooms will be fully lit without needing Watt's ability. - **quizmo spawns**: Forces Chuck Quizmo to always spawn at every location he can. ### 2.3 Player @@ -92,7 +91,7 @@ The **star power** menu allows you to edit how many Star Spirits have been saved #### 2.3.5 Princess Peach The **princess peach** menu allows you to control whether you're controlling Peach instead of Mario, if Peach is transformed into a disguise, whether she can use the Sneaky Parasol, and what enemy her disguise is of. -*Warning*: Swapping to Peach or Mario in instances where they're not typically able to be can cause buggy behavior. +*Warning*: Swapping to Peach or Mario in locations they can't typically get to can cause buggy behavior. #### 2.3.6 Merlee The **merlee** menu allows you to set what Merlee's next spell will be, how many more times she can cast a spell, and how many more battle turns are left until she casts her next spell. @@ -100,26 +99,26 @@ The **merlee** menu allows you to set what Merlee's next spell will be, how many ### 2.4 File The **save slot** option lets you change which of the four save slots the game will save and load from. This includes the in-game save blocks and save menus. Selecting `save` will save your current game state to the selected slot as though you had used a save block. Selecting `load` will load the save file saved to the selected slot in a very similar manner to loading a file from file select. -Your `story progress` is the main byte that determines how far you've progressed in the story. See [this](https://pastebin.com/tYtE2xbm) for a list of what each value corresponds to. +Save files can be saved to and loaded from an SD card with the `export` and `import` options if playing on console. Pressing either one will bring up the file browser. Importing a file will immediately load a save, but none of the current in-game save slots will be overwritten unless done manually afterward. Exporting will save the file selected by *save slot*, not the current state of the game. The file extension used for save files on disk is **.pmsave**, and the default filename is **file**. The filename can be changed by pressing the name field. Pressing clear will set the name field to be empty. When the name field is empty, the default filename is untitled. When saving, pressing the name of a save file in the file browser will copy that name to the name field. Pressing accept will save the file to the current folder in the file browser with the specified file name. If the file exists, you will be prompted to overwrite it. + +Your `story progress` is the main byte that determines how far you've progressed in the story. See [this](https://docs.google.com/document/d/1wrIhXo5cQjnUC_RcW8gETNvN2LJHpeuriV2NhhSUBwc/edit) for a list of what each value corresponds to. Disabling `music` disables all in-game music. `quizzes answered` determines how many of Chuck Quizmo's questions have been answered successfully. This byte determines which question Quimo will ask you next, and it's used in conjunction with your story progress to determine whether Quizmo can spawn. The three `peach item` options determine what Kammy Koopa will spawn in Shy Guy's Toybox. Pressing `restore enemies` sets all overworld enemies to an undefeated state. Pressing `restore letters` resets all flags related to collecting letters in the overworld. ### 2.5 Practice -#### 2.5.1 Tricks -The **tricks** menu allows easy access for practicing every speedrun trick in the game. By selecting a trick, all necessary setup required will be executed, followed by a warp to the location of the trick. For Record Skip, for instance, Story Progress is set to before the Weight is obtained, your active partner is set to Bombette for NPC pushing the Boo, any instances of the Weight are removed from your Key Item inventory, and you're warped to the room in Boo's Mansion with the Weight chest. - -To reload the most recently loaded trick, press `R + Z`. This button combo can also be configured (see [2.7 Settings](#27-settings)). - -#### 2.5.2 Trainers +#### 2.5.1 Trainers The **trainers** menu contains various different helpful menus and information screens to help with practicing and learning the game. The following trainers are available: +- **action commands**: Used to help learn action command timings. Displays log messages with information on the frame data for action commands, including attacks and blocks. - **bowser blocks**: When enabled, causes Bowser to only attack using the specified move. Works with both Hallway and Final Bowser, though note that setting lightning will make Hallway Bowser wave since he doesn't have a lightning attack. +- **clippy**: When attempting to obtain the *clippy* state by opening the partner menu while encountering an enemy and riding Lakilester, displays a log telling when you're early or late on the timing. - **ice staircase skip**: Used to help line up in the proper position to perform the Ice Staircase Skip trick. `position` can be either **good**, **inconsistent**, or **bad**, depending on whether using Lakilester's ability will always, sometimes, or never clip properly. -- **oot ace**: Helps with performing arbitrary code execution aided by The Legend of Zelda: Ocarina of Time. `effects` shows the number of active particle effects. `flags` displays whether the animation flags located before the idle timer in Mario's player struct will cause a premature crash. `frame window` displays how big the frame window for stopping the idle timer and getting a successful jump to code stored on the expansion pak is. It will most likely always be 1 unless Ocarina of Time is used to zero out the expansion pak beforehand. Pressing `practice payload` will make it so that upon a successful jump to the expansion pak, the value of the idle timer will be displayed in the bottom-left of the screen. Pressing `oot instruction` will place the same ASM instruction on the expansion pak that doing the proper OoT setup would. +- **lzs jumps**: Used to practice *Loading Zone Storage* jumps. Displays logs with information on why LZS jumps are failed and keeps track of the most consecutive jumps in the current session. +- **oot ace**: JP-exclusive. Helps with performing arbitrary code execution aided by The Legend of Zelda: Ocarina of Time. `effects` shows the number of active particle effects. `flags` displays whether the animation flags located before the idle timer in Mario's player struct will cause a premature crash. `frame window` displays how big the frame window for stopping the idle timer and getting a successful jump to code stored on the expansion pak is. It will most likely always be 1 unless Ocarina of Time is used to zero out the expansion pak beforehand. Pressing `practice payload` will make it so that upon a successful jump to the expansion pak, the value of the idle timer will be displayed in the bottom-left of the screen. Pressing `oot instruction` will place the same ASM instruction on the expansion pak that doing the proper OoT setup would. -#### 2.5.3 Timer -The **timer** menu provides a real-time timer that is unaffected by lag. Separately, it also displays 30 fps lag frames by taking half of the game's vertical interrupt counter and subtracting the number of game frames that have passed. Note that lag frames can decrease due to the game speeding up to account for lag. +#### 2.5.2 Timer +The **timer** menu provides a real-time timer that is unaffected by lag. Separately, it also displays 30 fps lag frames by taking half of the game's vertical interrupt counter and subtracting the number of game frames that have passed. Note that lag frames can decrease due to the game speeding up to account for lag. Additionally, the timer is only guaranteed to be accurate on console. The timer has two modes, **automatic** and **manual**. @@ -128,9 +127,60 @@ The timer has two modes, **automatic** and **manual**. The timer will continue to function even if the utility menu is closed, but by default it will not be displayed when running due to lag concerns. Additionally, no log messages related to the timer will be displayed when the timer is running. These can be changed by toggling the `show timer` and `timer logging` options. -Note that button combinations can be configured for the `start/stop` and `reset` functions, and the position of the timer can be configured in settings (see [2.7 Settings](#27-settings)). - -### 2.6 Debug +Note that button combinations can be configured for the `start/stop` and `reset` functions, and the position of the timer can be configured in settings (see [2.9 Settings](#29-settings)). + +### 2.6 Camera +The free camera function provides full control of the game's camera. When enabled, the camera can be controlled with the joystick, C buttons, and Z trigger. These controls are disabled in-game when controlling the free camera. Press **lock** to disable the manual camera controls and restore the normal game controls. Note that changing the camera from its default will not affect how Mario controls. As far as the rest of the game knows, the camera is still where it normally would be. + +The **behavior** setting decides how the camera moves and how the controls +work; + +- **manual:** The camera does not move by itself. Use the joystick to look + around, and the C buttons to move. Hold Z to move with the joystick, look + with C-left and right, and move vertically with C-up and down. The + **distance min** and **distance max** settings do nothing. +- **birdseye follow:** The camera automatically looks at Mario and moves + forward and backward to stay within the specified *distance*. Controls + are the same as for *manual*. +- **radial follow:** The camera follows Mario from a fixed viewing angle. It + will move up, down, and sideways to keep Mario in focus, and forward and + backward to stay within the specified *distance*. Use the joystick, + C-left, and C-right to rotate the viewing angle, and C-up and down to move + towards and away from the focus point. Hold Z to swap the function of C-up + and down with the vertical joystick axis. + +### 2.7 Watches +This menu lets you add custom RAM watches to observe arbitrary parts of game's +memory in real-time. Pressing the plus icon will add a new watch, and pressing +the cross next to a watch will remove that watch. After adding a watch, enter a +memory address and value type to display the value at that address. These watch +types are available: + +- **u8:** one-byte value, unsigned. +- **s8:** one-byte value, signed. +- **x8:** one-byte value, hexadecimal. +- **u16:** two-byte value, unsigned. +- **s16:** two-byte value, signed. +- **x16:** two-byte value, hexadecimal. +- **u32:** four-byte value, unsigned. +- **s32:** four-byte value, signed. +- **x32:** four-byte value, hexadecimal. +- **f32:** four-byte value, IEEE 754 single-precision floating-point. + +Pressing the wrench button next to a watch will show that address in the memory editor (see [2.8 Debug](#28-debug)). Pressing the anchor button will release the watch from the +watches menu so that it's always visible, even when the menu is closed. When a +watch is released, a positioning button will appear which lets you change the +position of the watch on the screen. Holding Z when positioning the watch will +move it faster. Pressing the wrench icon next to a watch will open the memory +editor at the address of that watch. The **visible** option can be unchecked to +hide all watches globally. + +Watches can be imported from text files on an SD card by pressing the folder +icon. Press a watch file to bring up a list of all watches contained in that +file. Press a watch to import it to your watch list. When you've imported all +the watches you need, press **return** to go back to the watches menu. + +### 2.8 Debug _Note: These features are for advanced users. Be careful._ This menu contains various debug features to use for testing; @@ -152,37 +202,50 @@ This menu contains various debug features to use for testing; an address manually in the address field. To edit memory, select the desired data type and press a memory cell to modify it. -### 2.7 Settings -This is where most of the functionality of fp is configured. The **profile** option selects which profile to save and load settings to and from. When the game starts, the settings saved to profile zero are automatically loaded, if any. The appearance of the menu can be configured with the **font** and **drop shadow** options. Disabling drop shadow can reduce the graphical computation impact of the menu, but may also reduce readability. The visibility of the on-screen display elements can be configured with the **input display** and **log** options. The screen position of the utility menu, input display, log, and timer can be configured by their respective positioning buttons. Holding Z when positioning an element will move it faster. **save settings** and **load settings** will save and load the current settings to the currently selected profile. **restore defaults** will restore all saved settings to their default values (Does not affect saved profiles). If the saved settings were to become corrupted in such a way that they prevent the game from starting, holding the Start button when the game is starting will load the default settings instead of loading profile zero. The following settings are saved: - -- Menu and on-screen displays appearances and settings. -- Saved positions and the currently selected position slot number. -- Command button binds. -- Activated cheats. -- Favorite rooms. +### 2.9 Settings +This is where most of the functionality of fp is configured. +- **profile**: Selects which profile to save and load settings to and from. When the game starts, the settings saved to profile zero are automatically loaded, if any. +- **font**: Selects the font of the menu. +- **drop shadow**: Enables/disables the menu drop shadow. Disabling drop shadow can reduce the graphical computation impact of the menu, but may also reduce readability. +- **menu position**: Moves the on-screen position of the entire menu. +- **timer position**: Moves the on-screen position of the timer display. +- **input display**: Enables/disables and moves the position of the input display. The analog mode can be set with **control stick** to `numerical`, `graphical`, and `both`. To account for different control stick ranges, **graphical range** can be adjusted to scale the maximum analog value for the *graphical* and *both* displays up to a maximum value of 127. +- **log**: Enables/disables and moves the position of all log messages. +- **commands**: See below. +- **save settings**: Saves the current settings to the currently selected profile. +- **load settings**: Loads the settings from the currently selected profile. +- **restore defaults** Restores all saved settings to their default values (Does not affect saved profiles). If the saved settings were to become corrupted in such a way that they prevent the game from starting, holding the Start button when the game is starting will load the default settings instead of loading profile zero. + +The following settings are saved: + +- Menu and on-screen displays appearances and settings. +- Watches. +- Command button binds. +- Activated cheats. The **commands** menu lets you bind commands to custom button combinations and/or activate them manually. Pressing the name of a command will activate that command, and pressing the button combo in the right column will bind a button combo to the corresponding command. If you want to unbind a command, press and keep holding L when starting the binding. A button combo for any given command can contain at most four buttons. When activating a command with a button combo, the button combo must explicitly be input the way it appears in the commands menu. For example, a command with the button combo `R + A` will only be activated if you press R first and then A, or R and A at the same time. `A + R`, or `R + B + A` will not activate the corresponding command. If the set of buttons in one button combo is a subset of those in another button combo, the former will be overridden by the latter when both are active simultaneously. The following commands are available: -- **show/hide menu:** Opens the utility menu if it's closed, closes it if +- **show/hide menu:** Opens the utility menu if it's closed, closes it if it's opened. *Default: `R + L`* -- **return from menu:** Returns to the previous menu, as if the *return* +- **return from menu:** Returns to the previous menu, as if the *return* button was pressed. *Default: `R + D-Left`* -- **levitate**: Makes Mario fly into the air. *Default: `D-Up`* -- **turbo**: Increases Mario's running speed. *Default: `D-Down`* -- **save position**: Saves Mario's current position and orientation. *Default: `D-Left`* -- **load position**: Loads Mario's saved position and orientation. *Default: `D-Right`* -- **lzs**: Allows Mario to walk into loading zones and store them without taking them. If a menu is then opened and closed after moving somewhere else, Mario will then take the loading zone as though Loading Zone Storage jumps had been performed. *Default: `R + D-Left`* -- **reload room**: Reloads the current room with the last known entrance value. Also works when in battle. *Default: `R + D-Down`* -- **reload last warp**: Reloads the last room warped to through the **locations** or **favorite rooms** menus. *Default: `unbound`* -- **toggle watches**: Toggles whether or not to display the watches you have set. *Default: `R + D-Right`* -- **load trick**: Reloads the last trick selected from the **tricks** menu. *Default: `R + Z`* -- **save game**: Saves the game to the current save slot as though a save block had been used. *Default: `L + D-Left`* -- **load game**: Loads the save file from the selected save slot, similar to loading a file from the file select screen. *Default: `L + D-Right`* -- **start/stop timer**: Sets the timer to start after the next cutscene or starts/stops the timer, depending on the timer mode. *Default: `unbound`* -- **reset timer**: Sets the timer back to 0 and reverts it to an inactive state. *Default: `unbound`* -- **show/hide timer**: Toggles whether the timer is showing when it's active. *Default: `unbound`* +- **levitate**: Makes Mario fly into the air. *Default: `D-Up`* +- **turbo**: Increases Mario's running speed. *Default: `D-Down`* +- **save position**: Saves Mario's current position and orientation. *Default: `D-Left`* +- **load position**: Loads Mario's saved position and orientation. *Default: `D-Right`* +- **lzs**: Allows Mario to walk into loading zones and store them without taking them. If a menu is then opened and closed after moving somewhere else, Mario will then take the loading zone as though Loading Zone Storage jumps had been performed. *Default: `R + D-Left`* +- **reload map**: Reloads the current map with the last known entrance value. Also works when in battle. *Default: `R + D-Down`* +- **reload last warp**: Reloads the last room warped to through the **locations** or **favorite rooms** menus. *Default: `unbound`* +- **toggle watches**: Toggles whether to display the watches you have set. *Default: `R + D-Right`* +- **reimport save**: Re-imports the last save file imported from the SD card. *Default: `R + Z`* +- **save game**: Saves the game to the current save slot as though a save block had been used. *Default: `L + D-Left`* +- **load game**: Loads the save file from the selected save slot, similar to loading a file from the file select screen. *Default: `L + D-Right`* +- **start/stop timer**: Sets the timer to start after the next cutscene or starts/stops the timer, depending on the timer mode. *Default: `unbound`* +- **reset timer**: Sets the timer back to 0 and reverts it to an inactive state. *Default: `unbound`* +- **show/hide timer**: Toggles whether the timer is showing when it's active. *Default: `unbound`* +- **break free**: Attempts to break any effect that removes control of Mario. **_Warning:_** Unbinding the *show/hide menu* or *return from menu* commands, @@ -197,6 +260,5 @@ aren't related to menuing are disabled while the utility menu is active. ## 3 Known Issues There are a few known issues with fp without an easy fix: -- Attempting to warp when a Super Block menu is open will cause a crash. All known ways to prevent this also prevent warping in other valid states. - At least one save file (even an empty one) must exist for profile saving/loading to work. - When using the automatic timer, riding Laki or Sushie counts as one long cutscene. This means things that would normally increment the cutscene counter, such as going through a loading zone, no longer will. \ No newline at end of file From 858b0e70d67758de8909286e09f89d6e01724b1f Mon Sep 17 00:00:00 2001 From: JCog Date: Sun, 29 May 2022 00:24:17 -0400 Subject: [PATCH 2/2] add free cam crash issue to known issues --- USAGE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/USAGE.md b/USAGE.md index 5af36e6..af32be3 100644 --- a/USAGE.md +++ b/USAGE.md @@ -260,5 +260,6 @@ aren't related to menuing are disabled while the utility menu is active. ## 3 Known Issues There are a few known issues with fp without an easy fix: -- At least one save file (even an empty one) must exist for profile saving/loading to work. -- When using the automatic timer, riding Laki or Sushie counts as one long cutscene. This means things that would normally increment the cutscene counter, such as going through a loading zone, no longer will. \ No newline at end of file +- At least one save file (even an empty one) must exist for profile saving/loading to work. +- When using the automatic timer, riding Laki or Sushie counts as one long cutscene. This means things that would normally increment the cutscene counter, such as going through a loading zone, no longer will. +- In rare circumstances when using the free camera, the game may crash. \ No newline at end of file