79 lines
3.2 KiB
Markdown
79 lines
3.2 KiB
Markdown
# Oracle of Secrets & YAZE Integration Plan
|
|
|
|
## Overview
|
|
This document outlines the roadmap for enhancing `yaze` to better support the `Oracle of Secrets` ROM hack development workflow, specifically focusing on Assembly editing, version control, and AI integration.
|
|
|
|
## 1. Enhanced Assembly Editor
|
|
|
|
### A. Symbol Navigation & Autocomplete
|
|
* **Goal:** Enable "Go to Definition" and autocomplete for labels and constants.
|
|
* **Implementation:**
|
|
* Parse `asar` symbol files (e.g., `*.sym` or `*.symbols` generated via `--symbols=wla`).
|
|
* Index labels, defines, and macros from the source code (`.asm` files).
|
|
* Integrate with the editor's text view to provide clickable links or hover information.
|
|
|
|
### B. Error Highlighting
|
|
* **Goal:** Map `asar` build errors directly to lines in the code editor.
|
|
* **Implementation:**
|
|
* Capture `stdout` and `stderr` from the `asar` build process.
|
|
* Parse standard `asar` error formats (e.g., `error: (file.asm:123) ...`).
|
|
* Visualize errors using squiggly lines or markers in the gutter.
|
|
* Populate a "Problems" or "Build Output" panel with clickable error entries.
|
|
|
|
### C. Macro & Snippet Library
|
|
* **Goal:** Speed up coding with common OOS/ASM patterns.
|
|
* **Implementation:**
|
|
* Add a snippet system to `AssemblyEditor`.
|
|
* Include built-in snippets for:
|
|
* `pushpc` / `pullpc` hooks.
|
|
* `%Set_Sprite_Properties` macros.
|
|
* Standard routine headers (preserve registers, `PHP`/`PLP`).
|
|
* Allow user-defined snippets in `Oracle-of-Secrets.yaze` project settings.
|
|
|
|
## 2. Lightweight Version Management
|
|
|
|
### A. Snapshot Feature
|
|
* **Goal:** Quick local commits without leaving the editor.
|
|
* **Implementation:**
|
|
* Add a "Snapshot" button to the main toolbar.
|
|
* Command: `git add . && git commit -m "Snapshot: <Timestamp>"`
|
|
* Display a success/failure notification.
|
|
|
|
### B. Diff View
|
|
* **Goal:** See what changed since the last commit.
|
|
* **Implementation:**
|
|
* Add "Compare with HEAD" context menu option for files.
|
|
* Render a side-by-side or inline diff using `git diff`.
|
|
|
|
## 3. AI-Driven Idea Management
|
|
|
|
### A. Context Injection
|
|
* **Goal:** Keep the AI aligned with the current task.
|
|
* **Implementation:**
|
|
* Utilize `.gemini/yaze_agent_prompt.md` (already created).
|
|
* Allow the agent to read `oracle.org` (ToDo list) to understand current priorities.
|
|
|
|
### B. Memory Map Awareness
|
|
* **Goal:** Prevent memory conflicts.
|
|
* **Implementation:**
|
|
* Grant the agent specific tool access to query `Docs/Core/MemoryMap.md`.
|
|
* Implement a "Check Free RAM" tool that parses the memory map.
|
|
|
|
## 4. Proposed Script Changes (Oracle of Secrets)
|
|
|
|
To support the features above, the `run.sh` script in `Oracle-of-Secrets` needs to be updated to generate symbols.
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
cp "Roms/oos168_test2.sfc" "Roms/oos91x.sfc"
|
|
# Generate WLA symbols for yaze integration
|
|
asar --symbols=wla Oracle_main.asm Roms/oos91x.sfc
|
|
# Rename to .symbols if yaze expects that, or configure yaze to read .sym
|
|
mv Roms/oos91x.sym Roms/oos91x.symbols
|
|
```
|
|
|
|
## Next Steps
|
|
1. **Assembly Editor:** Begin implementing Error Highlighting (Parsers & UI).
|
|
2. **Build System:** Update `run.sh` and test symbol generation.
|
|
3. **UI:** Prototype the "Snapshot" button.
|