diff --git a/TODO.txt b/TODO.txt index 69c3962..e75aeeb 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,20 +1,12 @@ Big stuff ---------- -timer trigger on ganon sword up - -Room tab: - room ID selector - "Set to current room" - show flags - "Load room" - new menu chars for improved flag viewing? - options for: - Peg state: current, red, blue - Kill sprites - Open shutter doors - Keep world state - Plaid world? +fix mushroom gfx for lost woods + +Get good entrance caching for every EG 2 room in a table +replace eg caching in presets with a routine call/preset command +update preset script +use bit 7 to indicate left/right half for double entrance rooms aga 2 rng lui: agah2 submenu -> set positions for each of the agahs for cycles 1, 2, 3 and 4+ @@ -24,12 +16,8 @@ Other stuff - deadrock rng control? -- Preset for double reddies - - Show cycle counter for Agahnim 2 -- Better frame advance mode. Perhaps only pause while holding L in, and if you press R while holding L it advances the game one frame. Would be good for clip learning. Maybe stop timer during this. - - Frame counter for actions, like swinging your sword, throwing boomerang, enemy movement startup times. Startup/active/recovery. - Room frame counts that show frame-pixel movement tallies. Would basically be to contrast how many nudge/slowdown/movement frames were lost that is pulled away from room overall time count and lag frames. diff --git a/build.bat b/build.bat index 023a743..0d33d5e 100644 --- a/build.bat +++ b/build.bat @@ -1,4 +1,4 @@ -set version="14.0.0" +set version="14.1.0" cd target diff --git a/docs/ancillawatch.xcf b/docs/ancillawatch.xcf deleted file mode 100644 index 2e75230..0000000 Binary files a/docs/ancillawatch.xcf and /dev/null differ diff --git a/docs/doorwatch.xcf b/docs/doorwatch.xcf deleted file mode 100644 index 9796db8..0000000 Binary files a/docs/doorwatch.xcf and /dev/null differ diff --git a/docs/doorwatchicons.png b/docs/doorwatchicons.png deleted file mode 100644 index 3bda4aa..0000000 Binary files a/docs/doorwatchicons.png and /dev/null differ diff --git a/docs/hack.css b/docs/hack.css index 4c90c49..2e1a5c6 100644 --- a/docs/hack.css +++ b/docs/hack.css @@ -75,6 +75,7 @@ span.dgIcon { display: inline-block; margin-right: .3em; margin-left: .5px; + image-rendering: crisp-edges; image-rendering: pixelated; } @@ -216,6 +217,7 @@ span.menuIcon { height: 16px; display: inline-block; margin: .3em 0 .1em; + image-rendering: crisp-edges; image-rendering: pixelated; } @@ -257,9 +259,10 @@ ul.fontList > li > span.fontPreview { background-image: url("fontpreviews.png"); background-color: #489848; outline: 2px solid #489848; - width: 256; + width: 256px; height: 16px; vertical-align: sub; + image-rendering: crisp-edges; image-rendering: pixelated; } diff --git a/docs/hudfeatures.xcf b/docs/hudfeatures.xcf deleted file mode 100644 index 5d25706..0000000 Binary files a/docs/hudfeatures.xcf and /dev/null differ diff --git a/docs/index.html b/docs/index.html index 718cd44..348ac6c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,9 +11,9 @@

Download

FULL SA-1 REFACTOR

-

Version fourteen point zero point zero if finally here. This represents the biggest and most dramatic update since the inclusion of presets. From here on, the accessibility of the practice hack has been tightened a bit, now requiring decent SA-1 emulation. Fortunately, support is fairly widespread. Anyone without access to a supported system will be able to download v13.6.0 from this page; however, support for these non-SA-1 versions has been officially discontinued.

+

Version fourteen point zero point zero is finally here. This represents the biggest and most dramatic update since the inclusion of presets. From here on, the accessibility of the practice hack has been tightened a bit, now requiring decent SA-1 emulation. Fortunately, support is fairly widespread. Anyone without access to a supported system will be able to download v13.6.0 from this page; however, support for these non-SA-1 versions has been officially discontinued.

The SA-1's on-board RAM allows every system to include large save files, so fully fledged savestates are now available to everyone, eliminating the need for a separate SDSNES version. And while we're at it, the vanilla HUD variants are being nixed too (the option still exists, but it is no longer a separate ROM).

-

Anyone without access to a supported system will be unable to use this version or any future version. Sorry. I know not everyone who plays on console can afford the more powerful flash carts, and that there are various other reasons people may stick with their current set up. Regardless, this hack is intended for vanilla practice, making accuracy for lag very important. Without a coprocessor, I have to put an aggressive filter on what features I add and count cycles meticulously everywhere. This inhibits improvement while still being too laggy. With the SA-1, I have so much more leeway. And with other cool features of the chip, I've vastly improved the backend of the practice menu to the point where it doesn't interfere with vanilla memory whatsoever. At the very least, I'm confident that this doesn't affect a majority audience. Many people who run on original hardware own an FXPak, and I can't name anyone who plays on the unsupported emulator cores. And, again, for those who can't or won't upgrade, v13.6 will always be available.

+

Anyone without access to a supported system will be unable to use this version or any future version. I know not everyone who plays on console can afford the more powerful flash carts, and that there are various other reasons people may stick with their current set up. Regardless, this hack is intended for vanilla practice, making accuracy for lag very important. Without a coprocessor, I have to put an aggressive filter on what features I add and count cycles meticulously everywhere. This inhibits improvement while still being too laggy. With the SA-1, I have so much more leeway. And with other cool features of the chip, I've vastly improved the backend of the practice menu to the point where it doesn't interfere with vanilla memory whatsoever. At the very least, I'm confident that this doesn't affect a majority audience. Many people who run on original hardware own an FXPak, and I can't name anyone who plays on the unsupported emulator cores. And, again, for those who can't or won't upgrade, v13.6 will always be available.

Latest (SA-1)

This version should be used by any system that can properly emulate SA-1 with 256kb of BWRAM.

@@ -216,7 +216,6 @@

Implementation

My system isn't supported! Update the older hacks!

No.

-

Sorry.

The change to SA-1 included a complete overhaul of the backend code. Adding new features to both versions would require maintaining two completely separate codebases and writing almost every feature twice. I simply cannot allow my ability to improve this project be inhibited by inferior applications or devices that do not properly emulate expansion chips. You may think it's not fair that I'm ignoring your system, but what's actually not fair is holding everyone else back from a better practice hack.

Known issues (link)

@@ -253,6 +252,8 @@
Fix specific RNG calls to specific values
HUD extras
Toggle features that appear on the HUD
+
Room master
+
Load rooms and view/edit room flags
Shortcuts
Modify shortcuts for quick feature access
Preset config
@@ -466,6 +467,8 @@
Smiths currently have your sword for tempering
+
Drops
+
Submenu for controller drop luck, rupee pulls, and prize packs.
Follower
    @@ -543,15 +546,6 @@
    3; falling state obtained after a death hole in the underworld
-
Activate superbunny
-
Sets Link's general state handler to default ($00). For safety, this will only run when Link's handler is currently set to bunny ($17). If successful, you should hear a poof; otherwise, you will hear a beep.
-
Activate lonk
-
-

Sets Link's general state handler to bunny ($17). For safety, this will only run when Link's handler is at its default value ($00). If successful, you should hear OOF; otherwise, you will hear a beep.

-

Despite the labels, the Superbunny and Lonk menu options can be used to return to normal Link and normal bunny, respectively.

-
-
Finish mirrordoor
-
Sets the mirror door wait timer to finish after 11 frames. For safety reasons, this will only run when the Triforce door submodule is in effect. If successful, you should hear a VOOMP; otherwise, you will hear a beep.
Statue drag
Toggles the fake statue address.
Anc Index
@@ -566,6 +560,15 @@
  • Weak
  • +
    Activate superbunny
    +
    Sets Link's general state handler to default ($00). For safety, this will only run when Link's handler is currently set to bunny ($17). If successful, you should hear a poof; otherwise, you will hear a beep.
    +
    Activate lonk
    +
    +

    Sets Link's general state handler to bunny ($17). For safety, this will only run when Link's handler is at its default value ($00). If successful, you should hear OOF; otherwise, you will hear a beep.

    +

    Despite the labels, the Superbunny and Lonk menu options can be used to return to normal Link and normal bunny, respectively.

    +
    +
    Finish mirrordoor
    +
    Sets the mirror door wait timer to finish after 11 frames. For safety reasons, this will only run when the Triforce door submodule is in effect. If successful, you should hear a VOOMP; otherwise, you will hear a beep.
    @@ -579,8 +582,6 @@
    Speeds up the moving wall cutscenes.
    Visible probesLAG
    Search probes used by guards, beamos, etc. will display a graphic.
    -
    See bonk itemsLAG
    -
    Shows bonk items on the overworld as stationary sprites.
    Disable BG1
    Disables SNES background 1 via PPU registers. Has no effect on lag.
    Disable BG2
    @@ -672,7 +673,7 @@
    Random, 32 fixed RNGs
    Lanmola exit
    Random, fixed {X,Y} for 0≤X≤7; 0≤Y≤7
    -
    Conveyor belt
    +
    Moth conveyor
    1. Random
    2. @@ -708,7 +709,7 @@
      How to show Link's current and max health:
      Numerical
      -
      Classic practice hack display under rupee counter
      +
      Classic practice hack display under rupee count
      Vanilla
      Vanilla graphical display NOTICE: vanilla hearts will be drawn to the HUD first, and additional HUD features may be drawn over them.
      @@ -726,12 +727,12 @@
      Classic with unpressed buttons in gray.
    -
    Counter #SA1
    -
    5 counter slots displayed on the HUD. +
    Sentry #SA1
    +
    5 sentry slots displayed on the HUD.
    Room time
    Time spent on the current screen, starting from the beginning of the last transition.
    -
    Lag counter
    +
    Lag
    Count of lag frames on the current screen, starting from the beginning of the last transition.
    Idle frames
    Count of frames with no relevant input, starting from the beginning of the last transition.
    @@ -740,7 +741,7 @@
    Coordinates
    Absolute position of Link (X,Y)
    Subpixels
    -
    Current subpixel (Hexadecimal). Includes door marker for icebreaker, etc.; address: $7E002A
    +
    Current subpixel (Hexadecimal); address: $7E002A
    Room ID
    Current room ID, corrected room ID (based on coordinates), and sync. Sync not displayed on overworld; address: $7E00A0
    Quadrant
    @@ -748,19 +749,19 @@
    Screen ID
    Current overworld screen ID, corrected screen ID (based on coordinates), and sync. Not displayed in underworld; address: $7E008A
    Tile (UW)
    -
    Tile type Link is standing on (only works in underworld); address: $7E0114
    +
    Tile type Link is standing on (bottom right; only works in underworld); address: $7E0114
    Spooky
    Ancilla height for slot 4; address: $7E02A2
    Arc variable
    Overlord value used by Armos Knights and Ganon for circles; address: $7E0B08
    WEST SOMARIA
    West somaria door timer; address: $7E0690
    -
    Anc index
    -
    Ancilla overload starting index; address: $7E03C4
    +
    Ancilla index
    +
    Ancilla search index; address: $7E03C4
    Pits
    Current pit destination/damage flag. Not displayed on overworld; address: $7EC000
    Hookslot
    -
    Hookshot slot index; address: $7E039D
    +
    Hookshot slot index, layer, and activeness; address: $7E039D
    Boss HP
    Health of enemy in slot 0; address: $7E0E50
    Hovering
    @@ -768,8 +769,8 @@
    -
    Line counter #EX
    -
    3 larger lines of info displayed on the HUD. +
    Line #EX
    +
    3 larger sentry lines of info displayed on the HUD.
    Room flags
    Boss heart, key, chest, and door floogs for current room.
    @@ -782,23 +783,23 @@
    OW Trans Y
    Transition triggers and target screen IDs for vertical overworld transitions.
    Ancilla 0-4
    -
    Custom ancilla property for slots 0–4 (property # corresponds to counter #)
    +
    Custom ancilla property for slots 0–4 (property # corresponds to sentry #). This set of slots is indicated by a yellow triangle pointing down.
    Ancilla 5-9
    -
    Custom ancilla property for slots 5–9
    -
    Ancilla IXd
    -
    Custom ancilla property for the 5 slots preceding the current search index ($03C4)
    +
    Custom ancilla property for slots 5–9. This set of slots is indicated by a green triangle pointing up.
    +
    Ancilla MSX
    +
    Custom ancilla property for the 5 slots preceding the current search index ($03C4). This set of slots is indicated by a blue magnifying glass.
    Ancilla Prop #
    -
    Custom property 1–3 for ancillae corresponding to line counter 1–3 +
    Custom property 1–3 for ancilla sets corresponding to line sentries 1–3
    ID
    Ancilla ID from $03C4,X (includes coloring for 00 and replacable particles).
    -
    Y coord
    -
    Ancilla Y-Coordinate; address: $7E0BFA,X
    X coord
    Ancilla X-Coordinate; address: $7E0C04,X
    -
    Altotude
    +
    Y coord
    +
    Ancilla Y-Coordinate; address: $7E0BFA,X
    +
    Altitude
    Ancilla Z-Coordinate; address: $7E029E,X
    Layer
    Ancilla layer; address: $7E0C7C,X
    @@ -815,12 +816,42 @@
    Difference between Link's coordinates and the ancillae's.
    -
    Heart lagSA1
    -
    Animated spinning square that indicates there is heart lag present.
    -
    QW indicatorSA1
    +
    HUD lagSA1
    +
    Animated spinning icon that indicates there is potential for HUD-related lag present.
    +
    State iconsSA1
    +
    Displays icons along the left side of the HUD for the following properties (top to bottom): superspeed, waterwalk, door state, stair drag.
    +
    Quick warpSA1
    Displays an icon on the HUD when the current camera will effect a quickwarp.
    Boss cyclesSA1
    -
    Displays a counter for the cycle count of bosses.
    +
    Displays the cycle count of bosses.
    + + + +
    +
    Set room
    +
    Change the current room loaded and viewed.
    +
    Load selected room
    +
    Loads the currently selected room based on the configurable settings. Tries to be systematic and intelligent about positioning, camera, etc.
    +
    Config
    +
    Configure settings that control what state rooms are loaded in. +
    +
    Equipment
    +
    Select between current equipment, the custom preset loadout, or full equipment.
    +
    Open shutters
    +
    Opens all shutter doors in the loaded room.
    +
    Kill sprites
    +
    Kills all sprites in the loaded room.
    +
    Peg state
    +
    Choose the peg state when loading rooms, or leave them in the current value.
    +
    World state
    +
    Choose the world ID, let it take on the expected value of the room, or leave it as is.
    +
    Dungeon ID
    +
    Choose the dungeon ID, let it take on the expected value of the room, or leave it as is.
    + +
    +
    +
    Door 0...
    +
    View and change the various flags saved per room.
    @@ -846,7 +877,7 @@
    Fill everything
    Maxes out equipment, rupees, items, and health.
    VRAM repair
    -
    Attempts to fix important graphics registers and VRAM data that have been corrupted by door glitches.WARNING: If this shortcut is triggered during a text box, the text box will disappear, but the game will remain in text mode.WARNING: this feature only repairs registers and VRAM; other areas of RAM may result in game crashes unrelated to this feature, but which are never normally encountered in vanilla.
    +
    Attempts to fix important graphics registers and VRAM data that have been corrupted by door glitches.WARNING: If this shortcut is triggered during a text box, the text box will disappear, but the game will remain in text mode.NOTE: this feature only repairs registers and VRAM; other areas of RAM may result in game crashes unrelated to this feature, but which are never normally encountered in vanilla runs.
    Show somaria pits
    Modifies the upper layer tilemap to mark pits.NOTE: this feature is intended for finding pits created by overlay corruption, but it will mark all standard pit tiles the same way.
    @@ -878,7 +909,7 @@
    HUD font
    Change the font used by HUD extras. This will not change the font for the vanilla HUD or for the HP display. Hover over options for larger preview.
    diff --git a/docs/menuicons.png b/docs/menuicons.png index c81a66c..d57495c 100644 Binary files a/docs/menuicons.png and b/docs/menuicons.png differ diff --git a/docs/patcher/files/sa1.bps b/docs/patcher/files/sa1.bps index 0ef189b..a7b057a 100644 Binary files a/docs/patcher/files/sa1.bps and b/docs/patcher/files/sa1.bps differ diff --git a/docs/patcher/files/sa1rando.bps b/docs/patcher/files/sa1rando.bps index 678bf35..0aa1098 100644 Binary files a/docs/patcher/files/sa1rando.bps and b/docs/patcher/files/sa1rando.bps differ diff --git a/docs/patcher/manifest.json b/docs/patcher/manifest.json index 2d9fd92..875c210 100644 --- a/docs/patcher/manifest.json +++ b/docs/patcher/manifest.json @@ -1,6 +1,6 @@ { "name": "LTTPHack", - "version": "14.0.0", + "version": "14.1.0", "base": { "name": "A Link to the Past (J) 1.0", "crc": "3322EFFC" diff --git a/docs/presetbuilding.html b/docs/presetbuilding.html index c7017be..c939567 100644 --- a/docs/presetbuilding.html +++ b/docs/presetbuilding.html @@ -4,6 +4,9 @@ ---
    +

    Expectations

    +

    For examples of preset definitions in the desired format, look at the repository's existing files. The preset_scraper.lua script used to create preset data files can also be found here. To run this script, navigate to the Lua console under the Tools menu, then open the script from there. The script should not be run until a movie is playing. All files should be in the same directory, and within that directory should be a folder named states.

    +

    Recording

    Create an emulator playback file in BizHawk 2.3+ using the vanilla JP1.0 ROM. You don't need to play perfectly, but play well enough that any preset built from the movie is useful for practice. Sloppy movement is fine, as long as Link's position for defined presets is useful. However, movies should still be reasonably good execution. Avoid taking unintended damage unless a trick is hard enough that every runner expects to take damage more often than not.

    @@ -49,12 +52,13 @@

    Defining presets

  • Choose frames that precede the next scene of action. For example, if the preset is for a kill room, define the frame as one where Link is in the door in the room before it. Don't pick frames that are in the middle of combat, performing a transition, or using an interface. The gamer should have control of Link once the preset is loaded, so the preset should be defined as a frame with control.
  • If you have specific concerns for what data gets scraped or presets you are unsure will be created properly, put a comment by adding a pound sign (#) followed by the comment at the end of the line. Everything that follows the pound sign will be ignored.
  • After the last segment, create a segment named "End"; i.e. put a new line containing = End.
  • +
  • After you have defined the end, put one more new line. This is required due to a bug I don't feel like fixing.
  • Submitting

    Ideally, you will run the scraping script yourself. If you do that, be sure to include a folder in the same directory as the script named states. The script will automatically create a save state 60 frames before every preset. The script will also create a file named cm_presets_>category<.asm. Ideally, you package this file along with the preset definitions and every save state in a single .zip folder.

    -

    After submission and some initial clean up, I will send you a .bps file for you to patch yourself and test the presets. +

    After submission and some initial clean up, I will send you a .bps file for you to patch yourself and test the presets.

    Styling