SameBoy | Accurate GB/GBC emulator |
| download: https://git.y1.nz/archives/sameboy.tar.gz | |
| README | Files | Log | Refs | LICENSE |
SDL/gui.h
1 #pragma once
2
3 #include <SDL.h>
4 #include <Core/gb.h>
5 #include <stdbool.h>
6 #include "shader.h"
7 #include "configuration.h"
8
9 #define JOYSTICK_HIGH 0x4000
10 #define JOYSTICK_LOW 0x3800
11
12 #ifdef __APPLE__
13 #define MODIFIER KMOD_GUI
14 #else
15 #define MODIFIER KMOD_CTRL
16 #endif
17
18 extern GB_gameboy_t gb;
19
20 extern SDL_Window *window;
21 extern SDL_Renderer *renderer;
22 extern SDL_Texture *texture;
23 extern SDL_PixelFormat *pixel_format;
24 extern SDL_Joystick *joystick;
25 extern SDL_Haptic *haptic;
26 extern shader_t shader;
27
28 enum pending_command {
29 GB_SDL_NO_COMMAND,
30 GB_SDL_SAVE_STATE_COMMAND,
31 GB_SDL_LOAD_STATE_COMMAND,
32 GB_SDL_RESET_COMMAND,
33 GB_SDL_NEW_FILE_COMMAND,
34 GB_SDL_QUIT_COMMAND,
35 GB_SDL_LOAD_STATE_FROM_FILE_COMMAND,
36 GB_SDL_CART_SWAP_COMMAND,
37 GB_SDL_DEBUGGER_INTERRUPT_COMMAND,
38 #ifdef _WIN32
39 GB_SDL_HIDE_DEBUGGER_COMMAND,
40 #endif
41 };
42
43 #define GB_SDL_DEFAULT_SCALE_MAX 8
44
45 extern enum pending_command pending_command;
46 extern unsigned command_parameter;
47 extern char *dropped_state_file;
48 extern bool screen_manually_resized;
49
50 void update_viewport(void);
51 void run_gui(bool is_running);
52 void render_texture(void *pixels, void *previous);
53 void connect_joypad(void);
54
55 joypad_button_t get_joypad_button(uint8_t physical_button);
56 joypad_axis_t get_joypad_axis(uint8_t physical_axis);
57
58 static SDL_Scancode event_hotkey_code(SDL_Event *event)
59 {
60 if (event->key.keysym.sym >= SDLK_a && event->key.keysym.sym < SDLK_z) {
61 return SDL_SCANCODE_A + event->key.keysym.sym - SDLK_a;
62 }
63
64 return event->key.keysym.scancode;
65 }
66
67 void draw_text(uint32_t *buffer, unsigned width, unsigned height, unsigned x, signed y, const char *string, uint32_t color, uint32_t border, bool is_osd);
68 void show_osd_text(const char *text);
69 extern const char *osd_text;
70 extern unsigned osd_countdown;
71 extern unsigned osd_text_lines;
72 void convert_mouse_coordinates(signed *x, signed *y);
73 const GB_palette_t *current_dmg_palette(void);
74 void update_swap_interval(void);
75
76 #ifdef _WIN32
77 void configure_window_corners(void);
78 #endif
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.