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)   do { if (!(cond)) { SNES_BREAK(); } } while(0)
 Runtime assertion — breaks in emulator if condition is false.
 
#define SNES_BREAK()   consoleMesenBreakpoint()
 Breakpoint — halts execution in Mesen2 debugger.
 
#define SNES_NOCASH(msg)   consoleNocashMessage(msg)
 Send a debug message to emulator console.
 

Functions

void consoleMesenBreakpoint (void)
 Trigger a Mesen2 debugger breakpoint.
 
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 (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(); // Halts in Mesen2 debugger
}
}
Debug utilities for SNES development.
#define SNES_NOCASH(msg)
Send a debug message to emulator console.
Definition debug.h:77
#define SNES_BREAK()
Breakpoint — halts execution in Mesen2 debugger.
Definition debug.h:71
#define SNES_ASSERT(cond)
Runtime assertion — breaks in emulator if condition is false.
Definition debug.h:90
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:52
t_objs objWorkspace
Object workspace (Bank $00)
OpenSNES Master Header.
u8 type
Definition object.h:80

Build

Add debug to LIB_MODULES:

LIB_MODULES := console sprite dma debug
Author
OpenSNES Team

Macro Definition Documentation

◆ SNES_ASSERT

#define SNES_ASSERT (   cond)    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 ( )    consoleMesenBreakpoint()

Breakpoint — halts execution in Mesen2 debugger.

◆ SNES_NOCASH

#define SNES_NOCASH (   msg)    consoleNocashMessage(msg)

Send a debug message to emulator console.

Parameters
msgConst string literal

Function Documentation

◆ consoleMesenBreakpoint()

void consoleMesenBreakpoint ( void  )

Trigger a Mesen2 debugger breakpoint.

Emits a WDM $00 instruction which Mesen2 recognizes as a breakpoint. 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 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.