git.y1.nz

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.