OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
debug.h File Reference

Debug utilities for SNES development. More...

#include <snes/types.h>

Go to the source code of this file.

Macros

#define SNES_ASSERT(cond)
 Runtime assertion — breaks in emulator if condition is false.
#define SNES_BREAK()
 Breakpoint — WDM $00 (luna assert channel / Mesen2 debugger halt).
#define SNES_NOCASH(msg)
 Send a debug message to emulator console.

Functions

void consoleMesenBreakpoint (void)
 Trigger an emulator breakpoint (WDM $00).
void consoleNocashMessage (const char *msg)
 Send a debug message to the Nocash debug console.

Detailed Description

Debug utilities for SNES development.

Provides breakpoints, Nocash debug messages, and runtime assertions for use with emulators (luna, Mesen2, no$sns).

Usage

#include <snes.h>
#include <snes/debug.h>
void enemy_update(u16 idx) {
SNES_NOCASH("enemy_update called");
// ...
if (something_wrong) {
SNES_BREAK(); // WDM $00 — assert channel in luna, breakpoint in Mesen2
}
}
Debug utilities for SNES development.
#define SNES_NOCASH(msg)
Send a debug message to emulator console.
Definition debug.h:79
#define SNES_BREAK()
Breakpoint — WDM $00 (luna assert channel / Mesen2 debugger halt).
Definition debug.h:73
#define SNES_ASSERT(cond)
Runtime assertion — breaks in emulator if condition is false.
Definition debug.h:92
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:53
t_objs objWorkspace
Object workspace (Bank $00).
OpenSNES common-case master header.

Build

Add debug to LIB_MODULES:

LIB_MODULES := console sprite dma debug
Author
OpenSNES Team

Macro Definition Documentation

◆ SNES_ASSERT

#define SNES_ASSERT ( cond)
Value:
do { if (!(cond)) { SNES_BREAK(); } } while(0)

Runtime assertion — breaks in emulator if condition is false.

When NDEBUG is defined, assertions compile to nothing. Otherwise, a failed assertion triggers a Mesen2 breakpoint.

Parameters
condCondition that must be true

◆ SNES_BREAK

#define SNES_BREAK ( )
Value:
void consoleMesenBreakpoint(void)
Trigger an emulator breakpoint (WDM $00).

Breakpoint — WDM $00 (luna assert channel / Mesen2 debugger halt).

◆ SNES_NOCASH

#define SNES_NOCASH ( msg)
Value:
void consoleNocashMessage(const char *msg)
Send a debug message to the Nocash debug console.

Send a debug message to emulator console.

Parameters
msgConst string literal

Function Documentation

◆ consoleMesenBreakpoint()

void consoleMesenBreakpoint ( void )

Trigger an emulator breakpoint (WDM $00).

Emits a WDM $00 instruction — luna captures it as an assert/WDM event (fails the test harness run); Mesen2 recognizes it as a breakpoint. (Function name kept for source compatibility.) Has no effect on real hardware (WDM is a 2-byte NOP on 65816).

◆ consoleNocashMessage()

void consoleNocashMessage ( const char * msg)

Send a debug message to the Nocash debug console.

Writes a null-terminated string byte-by-byte to the debug register at $21FC. Visible in luna's nocash log, Mesen2's debug console and no$sns.

Parameters
msgNull-terminated string to display
Note
This is a simple const-string version. No format string support.