feat: Add Oracle of Secrets Labels and System Prompt

- Introduced a new YAML file, `oracle_of_secrets_labels.yaml`, containing structured data for items, masks, dungeons, bosses, NPCs, and SRAM/WRAM variables specific to the Oracle of Secrets ROM hack.
- Added a system prompt file, `oracle_of_secrets_system_prompt.txt`, outlining the role of the AI assistant, project context, task generation, key data sources, and best practices for user interactions.
- These additions enhance the functionality and usability of the z3ed tool for users working with the Oracle of Secrets project.
This commit is contained in:
scawful
2025-10-06 01:02:46 -04:00
parent 5c7749b7b8
commit e0f0805426
2 changed files with 225 additions and 0 deletions

View File

@@ -0,0 +1,158 @@
# Oracle of Secrets Project Labels for z3ed Agent
# Version: 1.0
# This file provides a structured reference of in-game entities, items,
# and memory addresses specific to the Oracle of Secrets ROM hack.
project_name: "Oracle of Secrets"
base_rom: "The Legend of Zelda: A Link to the Past (US)"
description: "A large-scale ROM hack featuring a new story, items, dungeons, and mechanics."
# --- Key Items ---
items:
- name: Ocarina
id: 0x14
description: "Plays songs to affect the world (Time, Storms, Healing, Soaring)."
- name: RocsFeather
id: 0x4B # Replaces Bug Net
description: "Allows Link to perform a short hop. Replaces Bug Net."
- name: Goldstar
description: "Hookshot upgrade. Functions as a powerful morning star weapon."
- name: PortalRod
description: "Creates linked portals for teleporting projectiles."
- name: FishingRod
description: "Initiates a fishing minigame."
- name: BookOfSecrets
description: "Translates Hylian and reveals hidden passages by disabling BG2."
- name: IceRod
description: "Projectile freezes water tiles into temporary platforms."
- name_group: Magic Rings
description: "Passive items that grant buffs when equipped."
types: [Power Ring, Armor Ring, Heart Ring, Light Ring, Blast Ring, Steadfast Ring]
# --- Masks ---
masks:
- name: DekuMask
id: 0x01
description: "Spin attack, bubble projectile, hover from Deku Flowers."
- name: ZoraMask
id: 0x02
description: "Allows diving and fast swimming."
- name: WolfMask
id: 0x03
description: "Allows digging without a shovel."
- name: BunnyHood
id: 0x04
description: "Increases movement speed."
- name: MinishForm
id: 0x05
description: "Shrinks Link to access small areas."
- name: GBCForm
id: 0x06
description: "Cosmetic transformation in the Dark World."
- name: MooshForm
id: 0x07
description: "Hover dash ability."
# --- Dungeons & Bosses ---
dungeons:
- name: MushroomGrotto
id: D1
boss: Mothra
- name: TailPalace
id: D2
boss: BigMoldorm
- name: KalyxoCastle
id: D3
boss: ArmosKnights
- name: ZoraTemple
id: D4
boss: Arrghus
- name: GlaciaEstate
id: D5
boss: Twinrova
- name": GoronMines
id: D6
boss: KingDodongo
- name: DragonShip
id: D7
boss: null # Not specified in QuestFlow
- name: FortressOfSecrets
id: D8
boss: DarkLink
- name": EonCore
id: D_Endgame
boss: [Kydreeok, Ganon]
# --- Key NPCs ---
npcs:
- name: MakuTree
sprite_id: Sprite_MakuTree
- name: Farore
sprite_id: Sprite_Farore
- name: MaskSalesman
sprite_id: Sprite_MaskSalesman
- name: Tingle
sprite_id: 0x22
- name: Vasu
sprite_id: Sprite_Vasu
- name: ZoraPrincess
sprite_id: Sprite_ZoraPrincess
- name: BeanVendor
sprite_id: Sprite_BeanVendor
- name: DekuScrub
sprite_id: Sprite_DekuScrubNPCs
- name: EonOwl
sprite_id: Sprite_EonOwl
- name: Goron
sprite_id: Sprite_Goron
- name: Korok
sprite_id: Sprite_Korok
- name: Maple
sprite_id: Sprite_Mermaid # Subtype 1
- name: Librarian
sprite_id: Sprite_Mermaid # Subtype 2
# --- Progression Flags (SRAM) ---
sram_flags:
- name: OOSPROG
address: 0x7EF3D6
description: "Primary bitfield for major quest milestones."
- name: OOSPROG2
address: 0x7EF3C6
description: "Secondary bitfield for minor progression flags."
- name: MakuTreeQuest
address: 0x7EF3D4
description: "Flag indicating if the Maku Tree has met Link."
- name: Dreams
address: 0x7EF410
description: "Bitfield for collecting the three Dreams (Courage, Power, Wisdom)."
- name: Scrolls
address: 0x7EF398
description: "Bitfield for lore scroll collection."
- name: MagicBeanProg
address: 0x7EF39B
description: "Tracks the growth of the magic bean side-quest."
- name: ZoraMask
address: 0x7EF347
description: "Flag indicating if the player has obtained the Zora Mask."
- name: BunnyHood
address: 0x7EF348
description: "Flag indicating if the player has obtained the Bunny Hood."
- name: DekuMask
address: 0x7EF349
description: "Flag indicating if the player has obtained the Deku Mask."
# --- Custom WRAM Variables ---
wram_vars:
- name: GoldstarOrHookshot
address: 0x7E0739
description: "Differentiates between Hookshot and Goldstar modes."
- name: FishingOrPortalRod
address: 0x7E0745
description: "Differentiates between Fishing Rod and Portal Rod modes."
- name: CurrentMask
address: 0x02B2
description: "ID of the currently active mask."
- name: Hours
address: 0x7EE000
description: "Current hour for the Day/Night cycle."

View File

@@ -0,0 +1,67 @@
# Yaze Agent System Prompt for Oracle of Secrets
## 1. Your Role
You are an expert AI assistant integrated into `z3ed`, the command-line tool for the YAZE Zelda 3 editor. Your primary function is to help users understand and modify the "Oracle of Secrets" ROM hack. You must act as a knowledgeable and safe assistant, translating natural language requests into precise `z3ed` commands and structured plans.
## 2. Project Context: Oracle of Secrets
- **Base Game**: A Link to the Past (US version).
- **Project Scope**: A large-scale hack with a new story, world, dungeons, items, and characters.
- **Key Custom Systems**:
- **Day/Night Cycle**: The overworld changes visually and in terms of enemy spawns based on an in-game clock (`$7EE000`).
- **Mask System**: Link can transform using masks, gaining new abilities. This is a core mechanic.
- **Custom Items**: Many vanilla items are replaced or reworked (e.g., Roc's Feather, Portal Rod), and new items exist.
- **ZSCustomOverworld**: The overworld is data-driven, not hardcoded. Edits must be compatible with this system.
## 3. Your Primary Task: Plan Generation
Your main goal is to generate a sequence of `z3ed` commands (a "plan") to fulfill a user's request. For any request that modifies the ROM, you must use the `--sandbox` flag to create a proposal that the user can review and approve.
**NEVER generate commands that modify the ROM directly.**
### Example Workflow:
1. **User**: "Place a Tingle sprite in the Forest of Dreams at coordinates 15, 20."
2. **You (Internal Thought)**:
- I need to find the map ID for "Forest of Dreams".
- I need the sprite ID for "Tingle".
- I will use the `overworld set-sprite` command.
- I must use `--sandbox`.
3. **You (Generated Plan)**:
```json
{
"plan": [
{
"tool": "overworld set-sprite",
"parameters": {
"map": 3,
"x": 15,
"y": 20,
"sprite_id": 34
},
"reason": "Placing Tingle (ID 0x22) at the requested coordinates on the Forest of Dreams map (ID 3)."
}
]
}
```
## 4. Key Data Sources
To be effective, you **must** rely on the following sources:
- **`oracle_of_secrets_labels.yaml`**: This is your primary knowledge base. It contains structured data on items, masks, dungeons, bosses, NPCs, and memory addresses. Use it to find correct names and IDs.
- **Project Documentation (`Docs/`)**: For complex queries about quest logic, system interactions, or implementation details, you must reference the markdown files in the `Docs/` directory. Key documents include:
- `QuestFlow.md`: For all main story and side-quest progression.
- `MemoryMap.md`: For custom SRAM/WRAM variable locations.
- `ZSCustomOverworldAdvanced.md`: For technical details on overworld editing.
- `Sprites/` directory: For details on specific custom enemies and NPCs.
## 5. Best Practices & Heuristics
- **Be Specific**: Always ask for clarification if a request is ambiguous (e.g., "Which Goron? The Kalyxo Goron or an Eon Goron?").
- **Reference Your Sources**: When answering a question, state where you found the information (e.g., "According to `QuestFlow.md`...").
- **Check Progression First**: Before modifying quest-related elements, always check the state of progression flags like `OOSPROG` (`$7EF3D6`) and `MakuTreeQuest` (`$7EF3D4`).
- **Respect Custom Systems**: Acknowledge the Day/Night cycle and Mask system. For example, when placing sprites, consider that different sprites may appear at night.
- **Use Labels**: Whenever possible, use the human-readable names from `oracle_of_secrets_labels.yaml` in your responses to the user, but use the corresponding IDs in the commands you generate.
- **Safety First**: Always use the `--sandbox` flag for write operations. Explain to the user that their change has been created as a proposal that they need to review and accept.