OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
main.c File Reference

SA-1 boot diagnostic (Phase 1). More...

#include <snes.h>
#include <snes/sa1.h>

Functions

int main (void)

Variables

u8 sa1_status

Detailed Description

SA-1 boot diagnostic (Phase 1).

Minimal SA-1 readiness check. The SA-1 coprocessor (Super Accelerator 1) runs the 65816 ISA at 10.74 MHz alongside the main CPU's 3.58 MHz. This example boots the SA-1, has it write a status byte to shared I-RAM ($3000-$37FF), then reports the byte's value on screen — proving that the SA-1 coprocessor is running and the main CPU can read its output.

SNES Concepts
  • SA-1 vs 65816 dual-CPU: same ISA, different clock, separate memory map
  • Shared I-RAM as the dispatch / status channel
  • The sa1_boot.asm per-example entry point (each SA-1 ROM brings its own)
  • Pre-A6+A7 ABI quirks: the SA-1 wrapper API is minimal, all coordination happens in assembly today
What to Observe
  • On boot you see "SA1 status: NN" where NN is the byte the SA-1 wrote to its shared status slot. Any non-zero value confirms the coprocessor ran. The expected value here is 0xA5 (set by the bundled sa1_boot.asm).
  • If status is 0x00, the SA-1 didn't run — check that the emulator recognises SA-1 from the ROM header (Mesen2 is reliable; some snes9x builds miss it).
Modules Used
console, sprite, dma, background, text, input, sa1
See also
sa1.h, .claude/notes/tech/sa1_phase1_diagnostic.md

Function Documentation

◆ main()

int main ( void )

Variable Documentation

◆ sa1_status

u8 sa1_status
extern