aboutsummaryrefslogtreecommitdiff
path: root/examples/nesemu1/sdl.hff
diff options
context:
space:
mode:
Diffstat (limited to 'examples/nesemu1/sdl.hff')
-rw-r--r--examples/nesemu1/sdl.hff43
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/nesemu1/sdl.hff b/examples/nesemu1/sdl.hff
new file mode 100644
index 0000000..d001842
--- /dev/null
+++ b/examples/nesemu1/sdl.hff
@@ -0,0 +1,43 @@
+extern fn SDL_Init() int;
+extern fn SDL_Quit() void;
+extern fn SDL_GetError() *const u8;
+extern fn SDL_Delay(u32) void;
+
+struct SDL_Window;
+extern fn SDL_CreateWindow(title *const u8, x int, y int, w int, h int, flags u32) *SDL_Window;
+extern fn SDL_DestroyWindow(*SDL_Window) void;
+
+struct SDL_PixelFormat;
+struct SDL_BlitMap;
+
+struct SDL_Rect {
+ x int, y int, w int, h int
+}
+
+struct SDL_Surface {
+ _flags u32,
+ format *SDL_PixelFormat,
+ w int, h int,
+ pitch int,
+ pixels *void,
+ userdata *void,
+ _locked intbool,
+ _lock_data *void,
+ clip_rect SDL_Rect,
+ _map *SDL_BlitMap,
+ refcount int,
+}
+extern fn SDL_CreateRGBSurface(
+ flags u32, width int, height int, depth int, Rmask u32, Gmask u32, Bmask u32, Amask u32
+) *SDL_Surface;
+extern fn SDL_GetWindowSurface(*SDL_Window) *SDL_Surface;
+extern fn SDL_UpdateWindowSurface(*SDL_Window) int;
+extern fn SDL_UpperBlit(src *SDL_Surface, srcrect *SDL_Rect, dst *SDL_Surface, dstrect *SDL_Rect) int;
+
+union SDL_Event {
+ t enum { quit = 0x100 },
+ _pad [8]f64, // idc exactly how big this union is but this should suffice
+}
+extern fn SDL_PollEvent(evt *SDL_Event) intbool;
+
+extern fn SDL_QueueAudio(dev int, data *const void, len u32) int;