hmm.. looks like patch from attachment was scrubbed. here it is again: diff -rNU 2 e-uae-0.8.29-WIP3/src/gui-gtk/gtkui.c e-uae-0.8.29-WIP3-KotCzarny2/src/gui-gtk/gtkui.c --- e-uae-0.8.29-WIP3/src/gui-gtk/gtkui.c 2006-07-31 05:53:50.000000000 +0200 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/gui-gtk/gtkui.c 2007-03-09 11:35:16.000000000 +0100 @@ -2123,5 +2123,5 @@ savestate_state = read_comm_pipe_int_blocking (&from_gui_pipe); uae_sem_wait (&gui_sem); -// savestate_filename = gui_snapname; + savestate_filename = gui_snapname; uae_sem_post (&gui_sem); break; diff -rNU 2 e-uae-0.8.29-WIP3/src/include/keyboard.h e-uae-0.8.29-WIP3-KotCzarny2/src/include/keyboard.h --- e-uae-0.8.29-WIP3/src/include/keyboard.h 2005-09-12 08:00:35.000000000 +0200 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/include/keyboard.h 2007-03-09 11:35:16.000000000 +0100 @@ -137,5 +137,5 @@ AKS_VOLDOWN, AKS_VOLUP, AKS_VOLMUTE, AKS_QUIT, AKS_HARDRESET, AKS_SOFTRESET, - AKS_STATESAVEQUICK, AKS_STATERESTOREQUICK, + AKS_STATESAVEQUICK, AKS_STATECYCLESLOT, AKS_STATERESTOREQUICK, AKS_STATESAVEQUICK1, AKS_STATERESTOREQUICK1, AKS_STATESAVEQUICK2, AKS_STATERESTOREQUICK2, diff -rNU 2 e-uae-0.8.29-WIP3/src/include/savestate.h e-uae-0.8.29-WIP3-KotCzarny2/src/include/savestate.h --- e-uae-0.8.29-WIP3/src/include/savestate.h 2006-03-07 15:48:57.000000000 +0100 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/include/savestate.h 2007-03-09 11:35:16.000000000 +0100 @@ -115,7 +115,10 @@ extern int savestate_state; +extern int savestate_current_slot; extern char savestate_fname[MAX_DPATH]; extern struct zfile *savestate_file; +extern void savestate_cycle_slot (void); +extern int savestate_generate_fname (int slot); extern void savestate_quick (int slot, int save); diff -rNU 2 e-uae-0.8.29-WIP3/src/inputdevice.c e-uae-0.8.29-WIP3-KotCzarny2/src/inputdevice.c --- e-uae-0.8.29-WIP3/src/inputdevice.c 2006-07-26 22:14:45.000000000 +0200 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/inputdevice.c 2007-03-09 11:35:16.000000000 +0100 @@ -1132,4 +1132,12 @@ #ifdef SAVESTATE case AKS_STATESAVEQUICK: + savestate_quick (savestate_current_slot, 1); + break; + case AKS_STATERESTOREQUICK: + savestate_quick (savestate_current_slot, 0); + break; + case AKS_STATECYCLESLOT: + savestate_cycle_slot (); + break; case AKS_STATESAVEQUICK1: case AKS_STATESAVEQUICK2: @@ -1143,5 +1151,4 @@ savestate_quick ((code - AKS_STATESAVEQUICK) / 2, 1); break; - case AKS_STATERESTOREQUICK: case AKS_STATERESTOREQUICK1: case AKS_STATERESTOREQUICK2: diff -rNU 2 e-uae-0.8.29-WIP3/src/inputevents.def e-uae-0.8.29-WIP3-KotCzarny2/src/inputevents.def --- e-uae-0.8.29-WIP3/src/inputevents.def 2006-03-10 07:53:38.000000000 +0100 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/inputevents.def 2007-03-09 11:35:16.000000000 +0100 @@ -273,5 +273,7 @@ DEFEVENT(SPC_HARDRESET,"Hard reset emulation",AM_K,0,0,AKS_HARDRESET) DEFEVENT(SPC_ENTERDEBUGGER,"Activate the built-in debugger",AM_K,0,0,AKS_ENTERDEBUGGER) -DEFEVENT(SPC_STATESAVE, "Quick save state",AM_K,0,0,AKS_STATESAVEQUICK) +DEFEVENT(SPC_STATESAVE, "Quick save state (using current slot)",AM_K,0,0,AKS_STATESAVEQUICK) +DEFEVENT(SPC_STATECYCLESLOT, "Quick save state current slot cycle (1-5)",AM_K,0,0,AKS_STATECYCLESLOT) +DEFEVENT(SPC_STATERESTORE, "Quick restore state (using current slot)",AM_K,0,0,AKS_STATERESTOREQUICK) DEFEVENT(SPC_STATESAVE1,"Quick save state (slot 1)",AM_K,0,0,AKS_STATESAVEQUICK1) DEFEVENT(SPC_STATESAVE2,"Quick save state (slot 2)",AM_K,0,0,AKS_STATESAVEQUICK2) @@ -283,5 +285,4 @@ DEFEVENT(SPC_STATESAVE8,"Quick save state (slot 8)",AM_K,0,0,AKS_STATESAVEQUICK8) DEFEVENT(SPC_STATESAVE9,"Quick save state (slot 9)",AM_K,0,0,AKS_STATESAVEQUICK9) -DEFEVENT(SPC_STATERESTORE, "Quick restore state",AM_K,0,0,AKS_STATERESTOREQUICK) DEFEVENT(SPC_STATERESTORE1,"Quick restore state (slot 1)",AM_K,0,0,AKS_STATERESTOREQUICK1) DEFEVENT(SPC_STATERESTORE2,"Quick restore state (slot 2)",AM_K,0,0,AKS_STATERESTOREQUICK2) diff -rNU 2 e-uae-0.8.29-WIP3/src/keymap/hotkeys_common.h e-uae-0.8.29-WIP3-KotCzarny2/src/keymap/hotkeys_common.h --- e-uae-0.8.29-WIP3/src/keymap/hotkeys_common.h 2006-03-10 07:53:39.000000000 +0100 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/keymap/hotkeys_common.h 2007-03-09 11:35:16.000000000 +0100 @@ -50,5 +50,8 @@ {DEFAULT_HOTKEYSEQ3 (RAWKEY_LEFT_SHIFT, RAWKEY_F5, INPUTEVENT_SPC_STATESAVEDIALOG)}, \ \ - {DEFAULT_HOTKEYSEQ2 (RAWKEY_RIGHT_SHIFT, INPUTEVENT_SPC_STATERESTORE)}, \ + {DEFAULT_HOTKEYSEQ2 (RAWKEY_F9, INPUTEVENT_SPC_STATESAVE)}, \ + {DEFAULT_HOTKEYSEQ2 (RAWKEY_F10, INPUTEVENT_SPC_STATECYCLESLOT)}, \ + {DEFAULT_HOTKEYSEQ2 (RAWKEY_F11, INPUTEVENT_SPC_STATERESTORE)}, \ +\ {DEFAULT_HOTKEYSEQ2 (RAWKEY_RIGHT_SHIFT, INPUTEVENT_SPC_STATERESTORE1)}, \ {DEFAULT_HOTKEYSEQ2 (RAWKEY_RIGHT_SHIFT, INPUTEVENT_SPC_STATERESTORE2)}, \ @@ -61,5 +64,4 @@ {DEFAULT_HOTKEYSEQ2 (RAWKEY_RIGHT_SHIFT, INPUTEVENT_SPC_STATERESTORE9)}, \ \ - {DEFAULT_HOTKEYSEQ3 (RAWKEY_NUMPAD_0, RAWKEY_NUMPAD_0, INPUTEVENT_SPC_STATESAVE)}, \ {DEFAULT_HOTKEYSEQ3 (RAWKEY_NUMPAD_1, RAWKEY_NUMPAD_1, INPUTEVENT_SPC_STATESAVE1)}, \ {DEFAULT_HOTKEYSEQ3 (RAWKEY_NUMPAD_2, RAWKEY_NUMPAD_2, INPUTEVENT_SPC_STATESAVE2)}, \ diff -rNU 2 e-uae-0.8.29-WIP3/src/savestate.c e-uae-0.8.29-WIP3-KotCzarny2/src/savestate.c --- e-uae-0.8.29-WIP3/src/savestate.c 2006-07-26 22:15:14.000000000 +0200 +++ e-uae-0.8.29-WIP3-KotCzarny2/src/savestate.c 2007-03-09 11:35:39.000000000 +0100 @@ -85,4 +85,5 @@ static int replaybuffersize; +int savestate_current_slot=1; char savestate_fname[MAX_DPATH]; static struct staterecord staterecords[MAX_STATERECORDS]; @@ -685,11 +686,29 @@ } +// note by ariel/KotCzarny: +// quick save/load should be QUICK and unobtrusive +void savestate_cycle_slot (void) +{ + savestate_current_slot++; if(savestate_current_slot>5) savestate_current_slot=1; + write_log ("savestate_current_slot: %d\n", savestate_current_slot); +} + +int savestate_generate_fname (int slot) +{ int len; + if(strlen(strchr(currprefs.df[0],*"/"))>0) + { sprintf(savestate_fname, "%s_%d.uss", strrchr(currprefs.df[0],*"/")+1,slot); } + len = strlen (savestate_fname); + write_log ("sf: %s, len: %d, slot: %d\n", savestate_fname,len,slot); + return len; +} + void savestate_quick (int slot, int save) { - int i, len = strlen (savestate_fname); + int i, len = savestate_generate_fname(slot); +/* i = len - 1; while (i >= 0 && savestate_fname[i] != '_') i--; - if (i < len - 6 || i <= 0) { /* "_?.uss" */ + if (i < len - 6 || i <= 0) { // "_?.uss" i = len - 1; while (i >= 0 && savestate_fname[i] != '.') @@ -703,4 +722,5 @@ if (slot > 0) sprintf (savestate_fname + i, "_%d.uss", slot); +*/ if (save) { write_log ("saving '%s'\n", savestate_fname); ____________________________________________________________________________________ Sucker-punch spam with award-winning protection. Try the free Yahoo! Mail Beta. http://advision.webevents.yahoo.com/mailbeta/features_spam.html