Swanium::Platform::Sdl
SDL stays behind this small, checked interface. The emulator core never depends on the C API directly.
Constants
AUDIO_ALLOW_RATE_CHANGE = 1
AUDIO_ALLOW_SAMPLES_CHANGE = 8
AUDIO_FRAMES_PER_BUFFER = 256_u16
AUDIO_MAX_QUEUE_BYTES = 9600_u32
AUDIO_PREROLL_FRAMES = 3
EVENT_CONTROLLER_ADDED = 1619_u32
EVENT_CONTROLLER_REMOVED = 1620_u32
EVENT_JOYSTICK_ADDED = 1541_u32
EVENT_JOYSTICK_REMOVED = 1542_u32
EVENT_KEYDOWN = 768_u32
EVENT_QUIT = 256_u32
FRAME_RATE = Core::Apu::MASTER_CLOCK.to_f64 / Core::Machine::CYCLES_PER_FRAME.to_f64
HAT_DOWN = 4_u8
HAT_LEFT = 8_u8
HAT_RIGHT = 2_u8
HAT_UP = 1_u8
INIT_AUDIO = 16_u32
INIT_GAMECONTROLLER = 8192_u32
INIT_VIDEO = 32_u32
PAD_A = 0
PAD_B = 1
PAD_DEAD_ZONE = 16000_i16
PAD_DPAD_DOWN = 12
PAD_DPAD_LEFT = 13
PAD_DPAD_RIGHT = 14
PAD_DPAD_UP = 11
PAD_LEFT_X = 0
PAD_LEFT_Y = 1
PAD_RIGHT_X = 2
PAD_RIGHT_Y = 3
PAD_START = 6
PIXELFORMAT_RGBA32 = 376840196_u32
RENDERER_ACCELERATED = 2_u32
SC_1 = 30
SC_2 = 31
SC_3 = 32
SC_A = 4
SDL scancodes are layout-independent and therefore stable for games.
SC_D = 7
SC_DOWN = 81
SC_ESCAPE = 41
SC_F1 = 58
SC_F5 = 62
SC_F9 = 66
SC_LEFT = 80
SC_N = 17
SC_PAGEDOWN = 78
SC_PAGEUP = 75
SC_RETURN = 40
SC_RIGHT = 79
SC_S = 22
SC_SPACE = 44
SC_UP = 82
SC_W = 26
SC_X = 27
SC_Z = 29
TEXTUREACCESS_STREAMING = 1
WINDOW_FULLSCREEN_DESKTOP = 4097_u32
WINDOW_SHOWN = 4_u32
WINDOWPOS_CENTERED = 805240832
Class methods
play(cartridge : Core::CartridgeImage, title : String) : String | Nil
Run one explicitly selected local cartridge. File loading and filename handling stay in the application layer; this method receives only validated bytes and a display/save label. Returns a newly selected ROM path when the native File > Open ROM… action asks the application layer to replace the current cartridge.
smoke_test
Sourcevideo_demo
Interactive, copyright-free display/input verification program. It stays open until the window close button is pressed. Escape leaves fullscreen mode when it is active.