summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2006-08-30 23:47:09 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2006-08-30 23:47:09 +0000
commitae8d47574d01e1aae45b905d17c912e235230f9b (patch)
treea674afd45830563aa84f897a684d1dfed3c77640
parent530f31dbe9fe404d41fd21867c8ed9cec1addd96 (diff)
downloadrockbox-ae8d47574d01e1aae45b905d17c912e235230f9b.tar.gz
rockbox-ae8d47574d01e1aae45b905d17c912e235230f9b.zip
add Gigabeat support to the scramble tools
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10817 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--tools/Makefile11
-rwxr-xr-xtools/configure5
-rw-r--r--tools/descramble.c8
-rw-r--r--tools/gigabeat.c76
-rw-r--r--tools/gigabeat.h20
-rw-r--r--tools/scramble.c9
6 files changed, 122 insertions, 7 deletions
diff --git a/tools/Makefile b/tools/Makefile
index 53b1200fce..26cdcab230 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -10,17 +10,18 @@ CFLAGS := -O -ansi -g
10LDFLAGS := -g 10LDFLAGS := -g
11 11
12CLEANALL := scramble descramble iriver sh2d bmp2rb rdf2binary convbdf \ 12CLEANALL := scramble descramble iriver sh2d bmp2rb rdf2binary convbdf \
13 generate_rocklatin mkboot ipod_fw codepages uclpack mi4 13 generate_rocklatin mkboot ipod_fw codepages uclpack mi4 gigabeat
14 14
15all: 15all:
16 @echo "Run make in your build directory!" 16 @echo "Run make in your build directory!"
17 17
18scramble: scramble.o iriver.o mi4.o 18scramble: scramble.o iriver.o mi4.o gigabeat.o
19descramble: descramble.o iriver.o 19descramble: descramble.o iriver.o gigabeat.o
20 20
21scramble.o: scramble.c iriver.h 21scramble.o: scramble.c iriver.h mi4.h gigabeat.h
22descramble.o: descramble.c iriver.h 22descramble.o: descramble.c iriver.h gigabeat.h
23iriver.o: iriver.c iriver.h 23iriver.o: iriver.c iriver.h
24gigabeat.o: gigabeat.c gigabeat.h
24mi4.o: mi4.c mi4.h 25mi4.o: mi4.c mi4.h
25 26
26sh2d: sh2d.c 27sh2d: sh2d.c
diff --git a/tools/configure b/tools/configure
index 2f766d80e4..2c7443b59d 100755
--- a/tools/configure
+++ b/tools/configure
@@ -454,7 +454,8 @@ EOF
454 iriverbitmaptools="$toolset scramble descramble mkboot bmp2rb codepages" 454 iriverbitmaptools="$toolset scramble descramble mkboot bmp2rb codepages"
455 iaudiobitmaptools="$toolset scramble descramble mkboot bmp2rb codepages" 455 iaudiobitmaptools="$toolset scramble descramble mkboot bmp2rb codepages"
456 ipodbitmaptools="$toolset scramble ipod_fw bmp2rb codepages" 456 ipodbitmaptools="$toolset scramble ipod_fw bmp2rb codepages"
457 # generic is used by Gigabeat, IFP, H10, Sansa-e200 457 gigabeatbitmaptools="$toolset scramble descramble bmp2rb codepages"
458 # generic is used by IFP, H10, Sansa-e200
458 genericbitmaptools="$toolset bmp2rb codepages" 459 genericbitmaptools="$toolset bmp2rb codepages"
459 460
460 461
@@ -892,7 +893,7 @@ EOF
892 flash="" 893 flash=""
893 plugins="yes" 894 plugins="yes"
894 codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a" 895 codecs="libmad liba52 libffmpegFLAC libTremor libwavpack dumb libmusepack libalac libfaad libm4a"
895 toolset=$genericbitmaptools 896 toolset=$gigabeatbitmaptools
896 # architecture, manufacturer and model for the target-tree build 897 # architecture, manufacturer and model for the target-tree build
897 t_cpu="arm" 898 t_cpu="arm"
898 t_manufacturer="gigabeat" 899 t_manufacturer="gigabeat"
diff --git a/tools/descramble.c b/tools/descramble.c
index 9b76eaa0d9..bfcf7062f7 100644
--- a/tools/descramble.c
+++ b/tools/descramble.c
@@ -22,6 +22,7 @@
22#include <string.h> 22#include <string.h>
23 23
24#include "iriver.h" 24#include "iriver.h"
25#include "gigabeat.h"
25 26
26int iaudio_decode(char *iname, char *oname); 27int iaudio_decode(char *iname, char *oname);
27 28
@@ -33,6 +34,7 @@ void usage(void)
33 "\t-v2 Archos V2 recorder format\n" 34 "\t-v2 Archos V2 recorder format\n"
34 "\t-mm=X Archos Multimedia format (X values: A=JBMM, B=AV1xx, C=AV3xx)\n" 35 "\t-mm=X Archos Multimedia format (X values: A=JBMM, B=AV1xx, C=AV3xx)\n"
35 "\t-iriver iRiver format\n" 36 "\t-iriver iRiver format\n"
37 "\t-gigabeat Toshiba Gigabeat format\n"
36 "\t-iaudio iAudio format\n" 38 "\t-iaudio iAudio format\n"
37 "\nNo option assumes Archos standard player/recorder format.\n"); 39 "\nNo option assumes Archos standard player/recorder format.\n");
38 exit(1); 40 exit(1);
@@ -73,6 +75,12 @@ int main (int argc, char** argv)
73 iriver_decode(iname, oname, FALSE, STRIP_NONE); 75 iriver_decode(iname, oname, FALSE, STRIP_NONE);
74 return 0; 76 return 0;
75 } 77 }
78 if(!strcmp(argv[1], "-gigabeat")) {
79 iname = argv[2];
80 oname = argv[3];
81 gigabeat_code(iname, oname);
82 return 0;
83 }
76 84
77 if(!strcmp(argv[1], "-iaudio")) { 85 if(!strcmp(argv[1], "-iaudio")) {
78 iname = argv[2]; 86 iname = argv[2];
diff --git a/tools/gigabeat.c b/tools/gigabeat.c
new file mode 100644
index 0000000000..863d0741f2
--- /dev/null
+++ b/tools/gigabeat.c
@@ -0,0 +1,76 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 by Christian Hack
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#include <stdio.h>
21#include <stdlib.h>
22
23static FILE * openinfile( const char * filename )
24{
25 FILE * F = fopen( filename, "rb" );
26 if( F == NULL )
27 {
28 fprintf( stderr, "Couldn't open input file %s\n", filename );
29 perror( "Error was " );
30 exit( -1 );
31 };
32 return F;
33};
34
35static FILE * openoutfile( const char * filename )
36{
37 FILE * F = fopen( filename, "wb" );
38 if( F == NULL )
39 {
40 fprintf( stderr, "Couldn't open output file %s\n", filename );
41 perror( "Error was " );
42 exit( -1 );
43 };
44 return F;
45};
46
47int gigabeat_code(char *infile, char *outfile)
48{
49 FILE *in, *out;
50 unsigned long size = 0;
51 unsigned long bytes_read;
52 unsigned long data;
53 unsigned long key = 0x19751217;
54
55 in = openinfile(infile);
56 out = openoutfile(outfile);
57
58 while (!feof(in)) {
59 bytes_read = fread(&data, 1, 4, in);
60
61 data = data ^ key;
62
63 key = key + (key << 1);
64 key = key + 0x19751217;
65
66 size += bytes_read;
67
68 fwrite(&data, 1, bytes_read, out);
69 }
70
71 fprintf(stderr, "File processed successfully\n" );
72
73 fclose(in);
74 fclose(out);
75 return(0);
76}
diff --git a/tools/gigabeat.h b/tools/gigabeat.h
new file mode 100644
index 0000000000..c292014f5f
--- /dev/null
+++ b/tools/gigabeat.h
@@ -0,0 +1,20 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 by Marcoen Hirschberg
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20int gigabeat_code(char *infile, char *outfile);
diff --git a/tools/scramble.c b/tools/scramble.c
index d1e3d1d341..7d7465a932 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -22,6 +22,7 @@
22#include <stdbool.h> 22#include <stdbool.h>
23#include <string.h> 23#include <string.h>
24#include "iriver.h" 24#include "iriver.h"
25#include "gigabeat.h"
25#include "mi4.h" 26#include "mi4.h"
26 27
27int iaudio_encode(char *iname, char *oname, char *idstring); 28int iaudio_encode(char *iname, char *oname, char *idstring);
@@ -83,6 +84,7 @@ void usage(void)
83 "\t-ipod3g ipod firmware partition format (3rd Gen)\n" 84 "\t-ipod3g ipod firmware partition format (3rd Gen)\n"
84 "\t-ipod4g ipod firmware partition format (4th Gen, Mini, Nano, Photo/Color)\n" 85 "\t-ipod4g ipod firmware partition format (4th Gen, Mini, Nano, Photo/Color)\n"
85 "\t-ipod5g ipod firmware partition format (5th Gen - aka Video)\n" 86 "\t-ipod5g ipod firmware partition format (5th Gen - aka Video)\n"
87 "\t-gigabeat Toshiba Gigabeat format\n"
86 "\t-mi4v2 PortalPlayer .mi4 format (revision 010201)\n" 88 "\t-mi4v2 PortalPlayer .mi4 format (revision 010201)\n"
87 "\t-mi4v3 PortalPlayer .mi4 format (revision 010301)\n" 89 "\t-mi4v3 PortalPlayer .mi4 format (revision 010301)\n"
88 "\t-add=X Rockbox generic \"add-up\" checksum format\n" 90 "\t-add=X Rockbox generic \"add-up\" checksum format\n"
@@ -219,6 +221,13 @@ int main (int argc, char** argv)
219 iriver_encode(iname, oname, FALSE); 221 iriver_encode(iname, oname, FALSE);
220 return 0; 222 return 0;
221 } 223 }
224 else if(!strcmp(argv[1], "-gigabeat")) {
225 /* iRiver code dealt with in the iriver.c code */
226 iname = argv[2];
227 oname = argv[3];
228 gigabeat_code(iname, oname);
229 return 0;
230 }
222 else if(!strcmp(argv[1], "-iaudiox5")) { 231 else if(!strcmp(argv[1], "-iaudiox5")) {
223 iname = argv[2]; 232 iname = argv[2];
224 oname = argv[3]; 233 oname = argv[3];