12 #define DIR_SEP_BAD "/"
13 #define SYSTEM_DIR "\\SD Card\\DrPocketSnes"
20 #define DIR_SEP_BAD "\\"
21 #define SYSTEM_DIR "/mnt/sd/DrPocketSnes"
27 #define SNES_OPTIONS_DIR "options"
28 #define SNES_SRAM_DIR "sram"
29 #define SNES_SAVESTATE_DIR "savestate"
31 #define ROM_LIST_FILENAME "romlist.bin"
32 #define SRAM_FILE_EXT "srm"
33 #define SAVESTATE_EXT "sv"
34 #define MENU_OPTIONS_FILENAME "menu"
35 #define MENU_OPTIONS_EXT "opt"
36 #define DEFAULT_ROM_DIR_FILENAME "romdir"
37 #define DEFAULT_ROM_DIR_EXT "opt"
40 //define emulation modes
41 #define EMU_MODE_NONE 0
42 #define EMU_MODE_SNES 1
44 #define SAVESTATE_MODE_SAVE 0
45 #define SAVESTATE_MODE_LOAD 1
46 #define SAVESTATE_MODE_DELETE 2
48 #define SNES_OPTIONS_VER 1
49 #define DRSNES_VERSION "version 6.4.4"
51 #define ROM_SIZE 0x500000 //ssf2(40mbits)
52 #define MENU_RGB(r,g,b) ((r) << 11 | (g) << 6 | (b) << 0 )
59 #define MENU_CPU_SPEED 100
60 #define MENU_FAST_CPU_SPEED 200
72 MAIN_MENU_MANAGE_SAVE_STATE,
74 MAIN_MENU_SNES_OPTIONS,
82 LOAD_ROM_MENU_SNES = 0,
95 SNES_MENU_TRANSPARENCY,
98 SNES_MENU_RENDER_MODE,
100 SNES_MENU_RAM_SETTINGS,
102 SNES_MENU_ACTION_BUTTONS,
104 SNES_MENU_ADVANCED_HACKS,
105 SNES_MENU_AUTO_SAVE_SRAM,
106 SNES_MENU_LOAD_GLOBAL,
107 SNES_MENU_SAVE_GLOBAL,
108 SNES_MENU_DELETE_GLOBAL,
109 SNES_MENU_LOAD_CURRENT,
110 SNES_MENU_SAVE_CURRENT,
111 SNES_MENU_DELETE_CURRENT,
112 SNES_MENU_SET_ROMDIR,
113 SNES_MENU_CLEAR_ROMDIR,
118 enum SAVESTATE_MENU_ENUM
120 SAVESTATE_MENU_LOAD = 0,
122 SAVESTATE_MENU_DELETE,
123 SAVESTATE_MENU_RETURN,
129 HACKS_MENU_AUDIO = 0,
161 enum RENDER_MODE_ENUM
163 RENDER_MODE_UNSCALED = 0,
167 #define MENU_TILE_WIDTH 64
168 #define MENU_TILE_HEIGHT 64
173 #define INP_BUTTON_MENU_SELECT INP_BUTTON_PLAY
174 #define INP_BUTTON_MENU_CANCEL INP_BUTTON_STOP
175 #define INP_BUTTON_MENU_ENTER INP_BUTTON_BRIGHT
176 #define INP_BUTTON_MENU_DELETE INP_BUTTON_REWIND
177 #define INP_BUTTON_MENU_QUICKSAVE1 INP_BUTTON_R
178 #define INP_BUTTON_MENU_QUICKSAVE2 INP_BUTTON_BRIGHT
179 #define INP_BUTTON_MENU_QUICKLOAD1 INP_BUTTON_L
180 #define INP_BUTTON_MENU_QUICKLOAD2 INP_BUTTON_BRIGHT
183 #define MENU_TEXT_LOAD_SAVESTATE "Press Play to load"
184 #define MENU_TEXT_OVERWRITE_SAVESTATE "Press Play to overwrite"
185 #define MENU_TEXT_DELETE_SAVESTATE "Press Play to delete"
186 #define MENU_TEXT_PREVIEW_SAVESTATE "Press R to preview"
190 #define INP_BUTTON_MENU_SELECT INP_BUTTON_B
191 #define INP_BUTTON_MENU_CANCEL INP_BUTTON_X
192 #define INP_BUTTON_MENU_ENTER INP_BUTTON_SELECT
193 #define INP_BUTTON_MENU_DELETE INP_BUTTON_SELECT
194 #define INP_BUTTON_MENU_QUICKSAVE1 INP_BUTTON_R
195 #define INP_BUTTON_MENU_QUICKSAVE2 INP_BUTTON_SELECT
196 #define INP_BUTTON_MENU_QUICKLOAD1 INP_BUTTON_L
197 #define INP_BUTTON_MENU_QUICKLOAD2 INP_BUTTON_SELECT
201 #define MENU_TEXT_LOAD_SAVESTATE "Press B to load"
202 #define MENU_TEXT_OVERWRITE_SAVESTATE "Press B to overwrite"
203 #define MENU_TEXT_DELETE_SAVESTATE "Press B to delete"
204 #define MENU_TEXT_PREVIEW_SAVESTATE "Press Y to preview"
208 char name[MAX_ROMS][MAX_PATH]; // 128 entrys,16 Bytes long
212 //Graphics - moved to objects because they get updated with current gamma setting
213 extern unsigned short menuHeader[];
214 extern unsigned short menuHeaderOrig[];
215 extern unsigned short highLightBar[];
216 extern unsigned short highLightBarOrig[];
217 extern unsigned short menuTile[];
218 extern unsigned short menuTileOrig[];
220 extern unsigned char padConfig[];
221 extern float soundRates[];
222 extern char currentWorkingDir[];
223 extern char snesOptionsDir[];
224 extern char snesSramDir[];
225 extern char snesSaveStateDir[];
226 extern unsigned char gammaConv[];
227 extern char lastSaveName[];
228 extern short *soundBuffer;
229 extern unsigned char *RomData;
230 extern int currentEmuMode;
231 extern int lastStage;
234 extern int saveStateSize;
235 extern int romLoaded;
236 extern int frames,taken; // Frames and 60hz ticks
238 extern char soundRate;
241 void UpdateMenuGraphicsGamma(void);
242 int RoundDouble(double val);
243 void ClearScreen(unsigned int *buffer,unsigned int data);
244 void LoadSram(char *path,char *romname,char *ext,char *srammem);
245 void SaveSram(char *path,char *romname,char *ext,char *srammem);
246 void DeleteSram(char *path,char *romname,char *ext);
247 int SaveMenuOptions(char *path, char *filename, char *ext, char *optionsmem, int maxsize, int showMessage);
248 int LoadMenuOptions(char *path, char *filename, char *ext, char *optionsmem, int maxsize, int showMessage);
249 int DeleteMenuOptions(char *path, char *filename, char *ext, int showMessage);
250 void SnesDefaultMenuOptions(void);
255 void MenuPause(void);
257 void SplitFilename(char *wholeFilename, char *filename, char *ext);
258 void CheckDirSep(char *path);
259 int FileSelect(int mode);
260 int MainMenu(int prevAction);
261 void PrintTitle(int flip);
262 void PrintTile(int flip);
263 void PrintBar(int flip, unsigned int givenY);
266 extern void loadStateFile(char *filename);
267 extern int quickSavePresent;
268 extern unsigned short cpuSpeedLookup[];
269 extern float gammaLookup[];
271 extern char currentRomFilename[];
272 extern char romDir[];
273 extern char snesRomDir[];
275 struct SNES_MENU_OPTIONS
277 unsigned char menuVer;
278 unsigned char frameSkip;
279 unsigned char soundOn;
280 unsigned char cpuSpeed;
281 unsigned char padConfig[32];
282 unsigned char tripleBuffer;
283 unsigned char forceRegion;
284 unsigned char showFps;
286 unsigned char lcdver;
287 unsigned char stereo;
288 unsigned char soundRate;
289 unsigned char autoSram;
290 unsigned char renderMode;
291 unsigned char volume;
292 unsigned char actionButtons;
293 unsigned char transparency;
294 unsigned char ramSettings;
295 unsigned char mmuHack;
296 unsigned char region;
297 unsigned char soundHack;
298 unsigned short graphHacks;
299 unsigned char spare16;
300 unsigned char spare17;
301 unsigned char spare18;
302 unsigned char spare19;
303 unsigned char spare1A;
304 unsigned char spare1B;
305 unsigned char spare1C;
306 unsigned char spare1D;
307 unsigned char spare1E;
310 extern struct SNES_MENU_OPTIONS snesMenuOptions;
314 char filename[MAX_PATH+1];
315 char fullFilename[MAX_PATH+1];
320 extern struct SAVE_STATE saveState[]; // holds the filenames for the savestate and "inuse" flags
321 extern char saveStateName[];
326 unsigned int held[32];
327 unsigned int repeat[32];
329 extern struct INPUT Inp;
332 int InputUpdate(int EnableDiagnals);
338 #endif /* _MENU_H_ */