1 #ifndef __RC_VARS_H__ 2 #define __RC_VARS_H__ 3 4 // DGen/SDL v1.17+ 5 // RC-modified variables listed here 6 7 #include <stdint.h> 8 #include "pd-defs.h" // Keysyms are defined in here 9 #include "rc.h" 10 11 // main.cpp defines IS_MAIN_CPP, which means we actually define the variables. 12 // Otherwise, we just declare them as externs 13 14 struct rc_str { 15 const char *val; 16 char *alloc; 17 struct rc_str *next; 18 }; 19 20 #ifdef IS_MAIN_CPP 21 #define RCVAR(name, def) intptr_t name = def 22 #define RCSTR(name, def) struct rc_str name = { def, NULL, NULL } 23 #define RCCTL(name, defk, defj, defm) \ 24 intptr_t name[RCB_NUM] = { defk, defj, defm } 25 #else 26 #define RCVAR(name, def) extern intptr_t name 27 #define RCSTR(name, def) extern struct rc_str name 28 #define RCCTL(name, defk, defj, defm) \ 29 extern intptr_t name[RCB_NUM] 30 #endif 31 32 RCCTL(pad1_up, PDK_UP, JS_AXIS(0, 1, JS_AXIS_NEGATIVE), 0); 33 RCCTL(pad1_down, PDK_DOWN, JS_AXIS(0, 1, JS_AXIS_POSITIVE), 0); 34 RCCTL(pad1_left, PDK_LEFT, JS_AXIS(0, 0, JS_AXIS_NEGATIVE), 0); 35 RCCTL(pad1_right, PDK_RIGHT, JS_AXIS(0, 0, JS_AXIS_POSITIVE), 0); 36 RCCTL(pad1_a, 'a', JS_BUTTON(0, 0), 0); 37 RCCTL(pad1_b, 's', JS_BUTTON(0, 3), 0); 38 RCCTL(pad1_c, 'd', JS_BUTTON(0, 1), 0); 39 RCCTL(pad1_x, 'q', JS_BUTTON(0, 6), 0); 40 RCCTL(pad1_y, 'w', JS_BUTTON(0, 4), 0); 41 RCCTL(pad1_z, 'e', JS_BUTTON(0, 5), 0); 42 RCCTL(pad1_mode, PDK_BACKSPACE, JS_BUTTON(0, 9), 0); 43 RCCTL(pad1_start, PDK_RETURN, JS_BUTTON(0, 8), 0); 44 45 RCCTL(pad2_up, PDK_KP8, JS_AXIS(1, 1, JS_AXIS_NEGATIVE), 0); 46 RCCTL(pad2_down, PDK_KP2, JS_AXIS(1, 1, JS_AXIS_POSITIVE), 0); 47 RCCTL(pad2_left, PDK_KP4, JS_AXIS(1, 0, JS_AXIS_NEGATIVE), 0); 48 RCCTL(pad2_right, PDK_KP6, JS_AXIS(1, 0, JS_AXIS_POSITIVE), 0); 49 RCCTL(pad2_a, PDK_DELETE, JS_BUTTON(1, 0), 0); 50 RCCTL(pad2_b, PDK_END, JS_BUTTON(1, 3), 0); 51 RCCTL(pad2_c, PDK_PAGEDOWN, JS_BUTTON(1, 1), 0); 52 RCCTL(pad2_x, PDK_INSERT, JS_BUTTON(1, 6), 0); 53 RCCTL(pad2_y, PDK_HOME, JS_BUTTON(1, 4), 0); 54 RCCTL(pad2_z, PDK_PAGEUP, JS_BUTTON(1, 5), 0); 55 RCCTL(pad2_mode, PDK_KP_PLUS, JS_BUTTON(1, 9), 0); 56 RCCTL(pad2_start, PDK_KP_ENTER, JS_BUTTON(1, 8), 0); 57 58 RCCTL(pico_pen_up, 59 PDK_UP, 60 JS_AXIS(0, 1, JS_AXIS_NEGATIVE), 61 MO_MOTION(0, 'u')); 62 RCCTL(pico_pen_down, 63 PDK_DOWN, 64 JS_AXIS(0, 1, JS_AXIS_POSITIVE), 65 MO_MOTION(0, 'd')); 66 RCCTL(pico_pen_left, 67 PDK_LEFT, 68 JS_AXIS(0, 0, JS_AXIS_NEGATIVE), 69 MO_MOTION(0, 'l')); 70 RCCTL(pico_pen_right, 71 PDK_RIGHT, 72 JS_AXIS(0, 0, JS_AXIS_POSITIVE), 73 MO_MOTION(0, 'r')); 74 RCCTL(pico_pen_button, 75 PDK_RETURN, 76 JS_BUTTON(0, 0), 77 MO_BUTTON(0, 1)); 78 RCVAR(pico_pen_stride, 2); 79 RCVAR(pico_pen_delay, 2); 80 81 RCCTL(dgen_fix_checksum, PDK_F1, 0, 0); 82 RCCTL(dgen_quit, PDK_ESCAPE, 0, 0); 83 RCCTL(dgen_craptv_toggle, PDK_F5, 0, 0); 84 RCCTL(dgen_scaling_toggle, PDK_F6, 0, 0); 85 RCCTL(dgen_screenshot, PDK_F12, 0, 0); 86 RCCTL(dgen_reset, PDK_TAB, 0, 0); 87 RCCTL(dgen_z80_toggle, PDK_F10, 0, 0); 88 RCCTL(dgen_cpu_toggle, PDK_F11, 0, 0); 89 RCCTL(dgen_stop, 'z', 0, 0); 90 RCCTL(dgen_prompt, ':', 0, 0); 91 RCCTL(dgen_game_genie, PDK_F9, 0, 0); 92 RCCTL(dgen_fullscreen_toggle, (KEYSYM_MOD_ALT | PDK_RETURN), 0, 0); 93 RCCTL(dgen_debug_enter, '`', 0, 0); 94 RCCTL(dgen_volume_inc, '=', 0, 0); 95 RCCTL(dgen_volume_dec, '-', 0, 0); 96 97 RCCTL(dgen_slot_0, '0', 0, 0); 98 RCCTL(dgen_slot_1, '1', 0, 0); 99 RCCTL(dgen_slot_2, '2', 0, 0); 100 RCCTL(dgen_slot_3, '3', 0, 0); 101 RCCTL(dgen_slot_4, '4', 0, 0); 102 RCCTL(dgen_slot_5, '5', 0, 0); 103 RCCTL(dgen_slot_6, '6', 0, 0); 104 RCCTL(dgen_slot_7, '7', 0, 0); 105 RCCTL(dgen_slot_8, '8', 0, 0); 106 RCCTL(dgen_slot_9, '9', 0, 0); 107 RCCTL(dgen_slot_next, PDK_F8, 0, 0); 108 RCCTL(dgen_slot_prev, PDK_F7, 0, 0); 109 RCCTL(dgen_save, PDK_F2, 0, 0); 110 RCCTL(dgen_load, PDK_F3, 0, 0); 111 112 RCVAR(dgen_autoload, 0); 113 RCVAR(dgen_autosave, 0); 114 RCVAR(dgen_autoconf, 1); 115 RCVAR(dgen_frameskip, 1); 116 RCVAR(dgen_show_carthead, 0); 117 RCSTR(dgen_rom_path, "roms"); /* synchronize with romload.c */ 118 119 RCVAR(dgen_sound, 1); 120 RCVAR(dgen_soundrate, 44100); 121 RCVAR(dgen_soundsegs, 8); 122 RCVAR(dgen_soundsamples, 0); 123 RCVAR(dgen_volume, 100); 124 RCVAR(dgen_mjazz, 0); 125 126 RCVAR(dgen_hz, 60); 127 RCVAR(dgen_pal, 0); 128 RCVAR(dgen_region, 0); 129 RCSTR(dgen_region_order, "JUEX"); 130 131 RCVAR(dgen_raw_screenshots, 0); 132 RCVAR(dgen_craptv, 0); 133 RCVAR(dgen_scaling, 0); 134 RCVAR(dgen_nice, 0); 135 #ifdef WITH_JOYSTICK 136 RCVAR(dgen_joystick, 1); 137 #else 138 RCVAR(dgen_joystick, 0); 139 #endif 140 RCVAR(dgen_mouse_delay, 50); 141 142 RCVAR(dgen_fps, 0); 143 RCVAR(dgen_buttons, 0); 144 RCVAR(dgen_fullscreen, 0); 145 RCVAR(dgen_info_height, -1); 146 RCVAR(dgen_width, -1); 147 RCVAR(dgen_height, -1); 148 RCVAR(dgen_scale, -1); 149 RCVAR(dgen_x_scale, -1); 150 RCVAR(dgen_y_scale, -1); 151 RCVAR(dgen_aspect, 1); 152 RCVAR(dgen_depth, 0); 153 RCVAR(dgen_swab, 0); 154 RCVAR(dgen_opengl, 1); 155 RCVAR(dgen_opengl_stretch, 1); 156 RCVAR(dgen_opengl_linear, 1); 157 RCVAR(dgen_opengl_32bit, 1); 158 RCVAR(dgen_opengl_square, 0); 159 RCVAR(dgen_doublebuffer, 1); 160 RCVAR(dgen_screen_thread, 0); 161 RCVAR(dgen_vdp_hide_plane_a, 0); 162 RCVAR(dgen_vdp_hide_plane_b, 0); 163 RCVAR(dgen_vdp_hide_plane_w, 0); 164 RCVAR(dgen_vdp_hide_sprites, 0); 165 RCVAR(dgen_vdp_sprites_boxing, 0); 166 RCVAR(dgen_vdp_sprites_boxing_fg, 0xffff00); // yellow 167 RCVAR(dgen_vdp_sprites_boxing_bg, 0x00ff00); // green 168 169 // Keep values in sync with rc.cpp and enums in md.h 170 171 #if defined(WITH_DRZ80) 172 RCVAR(dgen_emu_z80, 3); 173 #elif defined(WITH_CZ80) 174 RCVAR(dgen_emu_z80, 2); 175 #elif defined(WITH_MZ80) 176 RCVAR(dgen_emu_z80, 1); 177 #else 178 RCVAR(dgen_emu_z80, 0); 179 #endif 180 181 #if defined(WITH_CYCLONE) 182 RCVAR(dgen_emu_m68k, 3); 183 #elif defined(WITH_MUSA) 184 RCVAR(dgen_emu_m68k, 2); 185 #elif defined(WITH_STAR) 186 RCVAR(dgen_emu_m68k, 1); 187 #else 188 RCVAR(dgen_emu_m68k, 0); 189 #endif 190 191 #endif // __RC_VARS_H__ 192