- Introduced detailed analysis for the Minecart system, highlighting its state machine, track system, and areas for improvement. - Created an NPCs analysis document, summarizing various NPC sprites and their functionalities. - Added an Objects analysis document, covering interactive elements like collectibles, ice blocks, and minecarts. - Documented the Overlord sprite system, detailing its role in spawning other sprites and managing events. - Compiled a Dungeons & Indoor Areas document, outlining custom room tags, enhanced mechanics, and advanced collision systems. - Developed an Overworld Systems Analysis, focusing on the ZSCustomOverworld architecture and its core features. - Added a Time System document, explaining the in-game clock and day/night cycle management. - Documented the ZScream Custom Overworld, detailing its data-driven approach and key features.
5.5 KiB
5.5 KiB
Custom Items System
This document details the functionality of new and modified items in Oracle of Secrets, based on analysis of the Items/ directory.
1. Overview
The item roster has been significantly expanded with new mechanics, and many vanilla items have been reworked to provide new functionality. The system is managed through a combination of hooks into the main player state machine and custom routines for each item.
2. Vanilla Item Modifications
Several items from the original game have been altered.
Hookshot / Goldstar
- Files:
goldstar.asm - Functionality: The Hookshot can be upgraded to the Goldstar, a powerful morning star weapon. The two items share an inventory slot.
- Switching: When the Goldstar is obtained, the player can switch between the Hookshot and Goldstar by pressing the L/R shoulder buttons while it is selected in the menu. The current mode is tracked by the
GoldstarOrHookshotWRAM variable. - Goldstar Mechanics: When active, the item functions as a short-range, powerful melee weapon with its own collision and damage properties, distinct from the Hookshot's grappling mechanic.
Ice Rod
- File:
ice_rod.asm - Functionality: The Ice Rod's projectile now freezes water tiles it hits, creating temporary 16x16 ice platforms. This allows the player to cross water gaps.
- Implementation: The
LinkItem_IceRodroutine hooks into the ancilla tile collision logic. When the projectile hits a water tile, it dynamically modifies the tilemap properties in RAM and DMAs new ice graphics to VRAM.
Bug-Catching Net -> Roc's Feather
- File:
jump_feather.asm - Functionality: The vanilla Bug-Catching Net has been completely replaced by Roc's Feather. This item allows Link to perform a short hop.
- Implementation:
LinkItem_JumpFeatherinitiates the jump by setting Link's state to a recoil/ledge hop state and applying a burst of vertical velocity.
Bottles
- File:
bottle_net.asm - Functionality: The Bug-Catching Net is no longer required to catch bees, fairies, etc. The Bottle item now has a dual function:
- If the bottle is empty, using it initiates the
LinkItem_CatchBottleroutine, which performs a net-catching swing. - If the bottle is full, using it calls
LinkItem_Bottles, which consumes the contents (e.g., drinks a potion, releases a fairy).
- If the bottle is empty, using it initiates the
Book of Mudora -> Book of Secrets
- File:
book_of_secrets.asm - Functionality: The Book of Mudora is now the Book of Secrets. While its vanilla function of translating Hylian text remains, it has a new secret-revealing capability.
- Implementation: The
Dungeon_RevealSecretsroutine checks if the L button is held while inside a building. If it is, it disables theBG2layer, which can be used to hide secret passages or objects behind walls that are part of that background layer.
3. New Active Items
Ocarina
- File:
ocarina.asm - Functionality: A multi-song instrument. When selected, the player can cycle through learned songs using the L/R shoulder buttons. Pressing 'Y' plays the selected song, triggering its unique effect.
- Songs & Effects:
- Song of Healing: Heals certain NPCs or triggers quest events.
- Song of Storms: Toggles a rain overlay on the overworld, which can affect the environment (e.g., watering the Magic Bean).
- Song of Soaring: Warps the player to pre-defined locations (the vanilla flute's bird travel).
- Song of Time: Toggles the in-game time between day and night.
Shared Slot: Portal Rod & Fishing Rod
- Files:
portal_rod.asm,fishing_rod.asm - Functionality: These two distinct items share a single inventory slot. If the player has the upgrade (
$7EF351 >= 2), they can swap between the two by pressing L/R in the menu. - Portal Rod: Fires a projectile that creates a portal sprite (blue or orange). The
Ancilla_HandlePortalCollisionlogic detects when another projectile (like an arrow) hits a portal and teleports it to the other portal's location. - Fishing Rod: Initiates a fishing minigame.
LinkItem_FishingRodspawns a "floater" sprite, and the player can reel it in to catch fish or other items from a prize table.
4. New Passive Items
Magic Rings
- File:
magic_rings.asm - Functionality: Passive items that grant buffs when equipped in one of the three ring slots in the Quest Status menu. The effects are applied by hooking into various game logic routines.
- Implemented Rings:
- Power Ring: Increases sword damage.
- Armor Ring: Reduces damage taken by half.
- Heart Ring: Slowly regenerates health over time.
- Light Ring: Allows the sword to shoot beams even when Link is not at full health (down to -2 hearts from max).
- Blast Ring: Increases the damage of bombs.
- Steadfast Ring: Prevents or reduces knockback from enemy hits.
5. Consumable Items (Magic Bag)
- File:
all_items.asm - Functionality: The Magic Bag is a sub-menu that holds new consumable items. The
Link_ConsumeMagicBagItemroutine is a jump table that executes the effect for the selected item. - Consumables:
- Banana: Implemented. Restores a small amount of health (
#$10). - Pineapple, Rock Meat, Seashells, Honeycombs, Deku Sticks: Placeholder entries exist in the jump table, but their effects are not yet implemented (the routines just contain
RTS).
- Banana: Implemented. Restores a small amount of health (