diff options
Diffstat (limited to 'tools/scramble.c')
-rw-r--r-- | tools/scramble.c | 53 |
1 files changed, 41 insertions, 12 deletions
diff --git a/tools/scramble.c b/tools/scramble.c index ccd6712297..7e6ca1f51c 100644 --- a/tools/scramble.c +++ b/tools/scramble.c | |||
@@ -89,6 +89,10 @@ void usage(void) | |||
89 | "\t-mi4v2 PortalPlayer .mi4 format (revision 010201)\n" | 89 | "\t-mi4v2 PortalPlayer .mi4 format (revision 010201)\n" |
90 | "\t-mi4v3 PortalPlayer .mi4 format (revision 010301)\n" | 90 | "\t-mi4v3 PortalPlayer .mi4 format (revision 010301)\n" |
91 | "\t-mi4r Sandisk Rhapsody .mi4 format\n" | 91 | "\t-mi4r Sandisk Rhapsody .mi4 format\n" |
92 | "\t All mi4 options take two optional arguments:\n" | ||
93 | "\t -model=XXXX where XXXX is the model id string\n" | ||
94 | "\t -type=XXXX where XXXX is a string indicating the \n" | ||
95 | "\t type of binary, eg. RBOS, RBBL\n" | ||
92 | "\t-add=X Rockbox generic \"add-up\" checksum format\n" | 96 | "\t-add=X Rockbox generic \"add-up\" checksum format\n" |
93 | "\t (X values: h100, h120, h140, h300, ipco, nano, ipvd, mn2g\n" | 97 | "\t (X values: h100, h120, h140, h300, ipco, nano, ipvd, mn2g\n" |
94 | "\t ip3g, ip4g, mini, iax5, h10, h10_5gb, tpj2, e200)\n" | 98 | "\t ip3g, ip4g, mini, iax5, h10, h10_5gb, tpj2, e200)\n" |
@@ -266,20 +270,45 @@ int main (int argc, char** argv) | |||
266 | oname = argv[3]; | 270 | oname = argv[3]; |
267 | return ipod_encode(iname, oname, 3, true); /* Firmware image v3 */ | 271 | return ipod_encode(iname, oname, 3, true); /* Firmware image v3 */ |
268 | } | 272 | } |
269 | else if(!strcmp(argv[1], "-mi4v2")) { | 273 | else if(!strncmp(argv[1], "-mi4", 4)) { |
270 | iname = argv[2]; | 274 | int mi4magic; |
271 | oname = argv[3]; | 275 | int version; |
272 | return mi4_encode(iname, oname, 0x00010201, MI4_MAGIC_DEFAULT); | 276 | char model[4] = ""; |
273 | } | 277 | char type[4] = ""; |
274 | else if(!strcmp(argv[1], "-mi4v3")) { | 278 | |
275 | iname = argv[2]; | 279 | if(!strcmp(&argv[1][4], "v2")) { |
276 | oname = argv[3]; | 280 | mi4magic = MI4_MAGIC_DEFAULT; |
277 | return mi4_encode(iname, oname, 0x00010301, MI4_MAGIC_DEFAULT); | 281 | version = 0x00010201; |
278 | } | 282 | } |
279 | else if(!strcmp(argv[1], "-mi4r")) { | 283 | else if(!strcmp(&argv[1][4], "v3")) { |
284 | mi4magic = MI4_MAGIC_DEFAULT; | ||
285 | version = 0x00010301; | ||
286 | } | ||
287 | else if(!strcmp(&argv[1][4], "r")) { | ||
288 | mi4magic = MI4_MAGIC_R; | ||
289 | version = 0x00010301; | ||
290 | } | ||
291 | else { | ||
292 | printf( "Invalid mi4 version: %s\n", &argv[1][4]); | ||
293 | return -1; | ||
294 | } | ||
295 | |||
280 | iname = argv[2]; | 296 | iname = argv[2]; |
281 | oname = argv[3]; | 297 | oname = argv[3]; |
282 | return mi4_encode(iname, oname, 0x00010301, MI4_MAGIC_R); | 298 | |
299 | if(!strncmp(argv[2], "-model=", 7)) { | ||
300 | iname = argv[3]; | ||
301 | oname = argv[4]; | ||
302 | strncpy(model, &argv[2][7], 4); | ||
303 | |||
304 | if(!strncmp(argv[3], "-type=", 6)) { | ||
305 | iname = argv[4]; | ||
306 | oname = argv[5]; | ||
307 | strncpy(type, &argv[3][6], 4); | ||
308 | } | ||
309 | } | ||
310 | |||
311 | return mi4_encode(iname, oname, version, mi4magic, model, type); | ||
283 | } | 312 | } |
284 | 313 | ||
285 | /* open file */ | 314 | /* open file */ |