diff options
Diffstat (limited to 'apps/plugins/rockboy/rockboy.c')
-rw-r--r-- | apps/plugins/rockboy/rockboy.c | 78 |
1 files changed, 75 insertions, 3 deletions
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c index a7e9bfb8f1..f6dea0eeea 100644 --- a/apps/plugins/rockboy/rockboy.c +++ b/apps/plugins/rockboy/rockboy.c | |||
@@ -39,6 +39,8 @@ char *errormsg; | |||
39 | int gnuboy_main(char *rom); | 39 | int gnuboy_main(char *rom); |
40 | void pcm_close(void); | 40 | void pcm_close(void); |
41 | 41 | ||
42 | #define optionname "options" | ||
43 | |||
42 | void die(char *message, ...) | 44 | void die(char *message, ...) |
43 | { | 45 | { |
44 | shut=1; | 46 | shut=1; |
@@ -74,6 +76,74 @@ void setmallocpos(void *pointer) | |||
74 | audio_buffer_free = audio_bufferpointer - audio_bufferbase; | 76 | audio_buffer_free = audio_bufferpointer - audio_bufferbase; |
75 | } | 77 | } |
76 | 78 | ||
79 | void setoptions (void) { | ||
80 | int fd; | ||
81 | DIR* dir; | ||
82 | char optionsave[sizeof(savedir)+sizeof(optionname)]; | ||
83 | |||
84 | dir=opendir(savedir); | ||
85 | if(!dir) | ||
86 | mkdir(savedir,0); | ||
87 | else | ||
88 | closedir(dir); | ||
89 | |||
90 | snprintf(optionsave, sizeof(optionsave), "%s/%s", savedir, optionname); | ||
91 | |||
92 | fd = open(optionsave, O_RDONLY); | ||
93 | if(fd < 0) // no options to read, set defaults | ||
94 | { | ||
95 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) | ||
96 | options.A=BUTTON_ON; | ||
97 | options.B=BUTTON_OFF; | ||
98 | options.START=BUTTON_REC; | ||
99 | options.SELECT=BUTTON_SELECT; | ||
100 | options.MENU=BUTTON_MODE; | ||
101 | |||
102 | #elif (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
103 | options.A=BUTTON_REC; | ||
104 | options.B=BUTTON_MODE; | ||
105 | options.START=BUTTON_ON; | ||
106 | options.SELECT=BUTTON_SELECT; | ||
107 | options.MENU=BUTTON_OFF; | ||
108 | |||
109 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
110 | options.A=BUTTON_F1; | ||
111 | options.B=BUTTON_F2; | ||
112 | options.START=BUTTON_F3; | ||
113 | options.SELECT=BUTTON_PLAY; | ||
114 | options.MENU=BUTTON_OFF; | ||
115 | |||
116 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | ||
117 | options.A=BUTTON_PLAY; | ||
118 | options.B=BUTTON_EQ; | ||
119 | options.START=BUTTON_MODE; | ||
120 | options.SELECT=(BUTTON_SELECT | BUTTON_REL); | ||
121 | options.MENU=(BUTTON_SELECT | BUTTON_REPEAT); | ||
122 | #endif | ||
123 | |||
124 | options.maxskip=4; | ||
125 | options.fps=0; | ||
126 | options.showstats=0; | ||
127 | options.fullscreen=1; | ||
128 | options.sound=1; | ||
129 | } | ||
130 | else | ||
131 | read(fd,&options, sizeof(options)); | ||
132 | |||
133 | close(fd); | ||
134 | } | ||
135 | |||
136 | void savesettings(void) | ||
137 | { | ||
138 | int fd; | ||
139 | char optionsave[sizeof(savedir)+sizeof(optionname)]; | ||
140 | |||
141 | snprintf(optionsave, sizeof(optionsave), "%s/%s", savedir, optionname); | ||
142 | fd = open(optionsave, O_WRONLY|O_CREAT|O_TRUNC); | ||
143 | write(fd,&options, sizeof(options)); | ||
144 | close(fd); | ||
145 | } | ||
146 | |||
77 | /* this is the plugin entry point */ | 147 | /* this is the plugin entry point */ |
78 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | 148 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) |
79 | { | 149 | { |
@@ -96,7 +166,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
96 | < audio_buffer_free) | 166 | < audio_buffer_free) |
97 | audio_buffer_free = plugin_start_addr - (unsigned char *)audio_bufferbase; | 167 | audio_buffer_free = plugin_start_addr - (unsigned char *)audio_bufferbase; |
98 | #endif | 168 | #endif |
99 | 169 | setoptions(); | |
100 | #ifdef USE_IRAM | 170 | #ifdef USE_IRAM |
101 | memcpy(iramstart, iramcopy, iramend-iramstart); | 171 | memcpy(iramstart, iramcopy, iramend-iramstart); |
102 | memset(iedata, 0, iend - iedata); | 172 | memset(iedata, 0, iend - iedata); |
@@ -110,11 +180,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
110 | gnuboy_main(parameter); | 180 | gnuboy_main(parameter); |
111 | 181 | ||
112 | if(shut&&!cleanshut) { | 182 | if(shut&&!cleanshut) { |
113 | rb->splash(HZ*2, true, errormsg); | 183 | rb->splash(HZ/2, true, errormsg); |
114 | return PLUGIN_ERROR; | 184 | return PLUGIN_ERROR; |
115 | } | 185 | } |
116 | pcm_close(); | 186 | pcm_close(); |
117 | rb->splash(HZ*2, true, "Shutting down.. byebye ^^"); | 187 | rb->splash(HZ/2, true, "Shutting down"); |
188 | |||
189 | savesettings(); | ||
118 | 190 | ||
119 | cleanup(); | 191 | cleanup(); |
120 | 192 | ||