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:
158
assets/agent/oracle_of_secrets_labels.yaml
Normal file
158
assets/agent/oracle_of_secrets_labels.yaml
Normal 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."
|
||||
67
assets/agent/oracle_of_secrets_system_prompt.txt
Normal file
67
assets/agent/oracle_of_secrets_system_prompt.txt
Normal 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.
|
||||
Reference in New Issue
Block a user