All pastes #394518 Raw Edit

Miscellany

public text v1 · immutable
#394518 ·published 2007-03-14 12:07 UTC
rendered paste body
Index: tools/mi4.h
===================================================================
--- tools/mi4.h	(revision 12755)
+++ tools/mi4.h	(working copy)
@@ -23,6 +23,7 @@
 #define MI4_MAGIC_DEFAULT 0xec
 #define MI4_MAGIC_R       0xfc
 
-int mi4_encode(char *iname, char *oname, int version, int magic);
+int mi4_encode(char *iname, char *oname, int version, int magic,
+                int model, char *type);
 
 #endif
Index: tools/configure
===================================================================
--- tools/configure	(revision 12755)
+++ tools/configure	(working copy)
@@ -1164,16 +1164,16 @@
     target="-DIRIVER_H10"
     memory=32 # always
     arm7tdmicc
-    tool="$rootdir/tools/scramble -add=h10"
+    tool="$rootdir/tools/scramble -mi4v3 -model=13 -type=RBOS"
     bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
     bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
-    output="rockbox.h10"
+    output="rockbox.mi4"
     appextra="recorder:gui"
     archosrom=""
     flash=""
     plugins="yes"
     codecs="libmad liba52 libffmpegFLAC libTremor libwavpack libmusepack libalac libfaad libm4a  libspeex"
-    boottool="$rootdir/tools/scramble -mi4v3"
+    boottool="$rootdir/tools/scramble -mi4v3 -model=13 -type=RBBL"
     bootoutput="H10_20GC.mi4"
     # toolset is the tools within the tools directory that we build for
     # this particular target.
@@ -1184,22 +1184,48 @@
     t_model="h10"
     ;;
 
+   15|h10_5gb)
+    target_id=24
+    archos="h10_5gb"
+    target="-DIRIVER_H10_5GB"
+    memory=32 # always
+    arm7tdmicc
+    tool="$rootdir/tools/scramble -mi4v2 -model=14 -type=RBOS"
+    bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+    bmp2rb_native="$rootdir/tools/bmp2rb -f 5"
+    output="rockbox.mi4"
+    appextra="recorder:gui"
+    archosrom=""
+    flash=""
+    plugins="yes"
+    codecs="libmad liba52 libffmpegFLAC libTremor libwavpack libmusepack libalac libfaad libm4a  libspeex"
+    boottool="$rootdir/tools/scramble -mi4v2 -model=14 -type=RBBL"
+    bootoutput="H10.mi4"
+    # toolset is the tools within the tools directory that we build for
+    # this particular target.
+    toolset="$genericbitmaptools scramble"
+    # architecture, manufacturer and model for the target-tree build
+    t_cpu="arm"
+    t_manufacturer="iriver"
+    t_model="h10"
+    ;;
+
    50|e200)
     target_id=23
     archos="e200"
     target="-DSANSA_E200"
     memory=32 # supposedly
     arm7tdmicc
-    tool="$rootdir/tools/scramble -add=e200"
+    tool="$rootdir/tools/scramble -mi4v3 -model=16 -type=RBOS"
     bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
     bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
-    output="rockbox.e200"
+    output="rockbox.mi4"
     appextra="recorder:gui"
     archosrom=""
     flash=""
     plugins="yes"
     codecs="libmad liba52 libffmpegFLAC libTremor libwavpack libmusepack libalac libfaad libm4a  libspeex"
-    boottool="$rootdir/tools/scramble -mi4v3"
+    boottool="$rootdir/tools/scramble -mi4v3 -model=16 -type=RBBL"
     bootoutput="PP5022.mi4"
     # toolset is the tools within the tools directory that we build for
     # this particular target.
@@ -1219,16 +1245,16 @@
     target="-DSANSA_E200"
     memory=32 # supposedly
     arm7tdmicc
-    tool="$rootdir/tools/scramble -add=e200"
+    tool="$rootdir/tools/scramble -mi4v3 -model=16 -type=RBOS"
     bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
     bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
-    output="rockbox.e200"
+    output="rockbox.mi4"
     appextra="recorder:gui"
     archosrom=""
     flash=""
     plugins="yes"
     codecs="libmad liba52 libffmpegFLAC libTremor libwavpack libmusepack libalac libfaad libm4a  libspeex"
-    boottool="$rootdir/tools/scramble -mi4r"
+    boottool="$rootdir/tools/scramble -mi4r -model=16 -type=RBBL"
     bootoutput="pp5022.mi4"
     # toolset is the tools within the tools directory that we build for
     # this particular target.
@@ -1239,32 +1265,6 @@
     t_model="sansa-e200"
     ;;
 
-   15|h10_5gb)
-    target_id=24
-    archos="h10_5gb"
-    target="-DIRIVER_H10_5GB"
-    memory=32 # always
-    arm7tdmicc
-    tool="$rootdir/tools/scramble -add=h10_5gb"
-    bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
-    bmp2rb_native="$rootdir/tools/bmp2rb -f 5"
-    output="rockbox.h10"
-    appextra="recorder:gui"
-    archosrom=""
-    flash=""
-    plugins="yes"
-    codecs="libmad liba52 libffmpegFLAC libTremor libwavpack libmusepack libalac libfaad libm4a  libspeex"
-    boottool="$rootdir/tools/scramble -mi4v2"
-    bootoutput="H10.mi4"
-    # toolset is the tools within the tools directory that we build for
-    # this particular target.
-    toolset="$genericbitmaptools scramble"
-    # architecture, manufacturer and model for the target-tree build
-    t_cpu="arm"
-    t_manufacturer="iriver"
-    t_model="h10"
-    ;;
-
    60|tpj1022)
     target_id=25
     archos="tpj1022"
Index: tools/scramble.c
===================================================================
--- tools/scramble.c	(revision 12755)
+++ tools/scramble.c	(working copy)
@@ -89,6 +89,10 @@
            "\t-mi4v2  PortalPlayer .mi4 format (revision 010201)\n"
            "\t-mi4v3  PortalPlayer .mi4 format (revision 010301)\n"
            "\t-mi4r   Sandisk Rhapsody .mi4 format\n"
+           "\t        All mi4 options take two optional arguments:\n"
+           "\t        -model=XX     where XX is the model number\n"
+           "\t        -type=XXXX    where XXXX is a string indicating the \n"
+           "\t                      type of binary, eg. RBOS, RBBL\n"
            "\t-add=X  Rockbox generic \"add-up\" checksum format\n"
            "\t        (X values: h100, h120, h140, h300, ipco, nano, ipvd, mn2g\n"
            "\t                   ip3g, ip4g, mini, iax5, h10, h10_5gb, tpj2, e200)\n"
@@ -266,21 +270,46 @@
         oname = argv[3];
         return ipod_encode(iname, oname, 3, true);  /* Firmware image v3 */
     }
-    else if(!strcmp(argv[1], "-mi4v2")) {
+    else if(!strncmp(argv[1], "-mi4", 4)) {
+        int mi4magic;
+        int version;
+        int model = 0;
+        char type[4] = "";
+        
+        if(!strcmp(&argv[1][4], "v2")) {
+            mi4magic = MI4_MAGIC_DEFAULT;
+            version = 0x00010201;
+        }
+        else if(!strcmp(&argv[1][4], "v3")) {
+            mi4magic = MI4_MAGIC_DEFAULT;
+            version = 0x00010301;
+        }
+        else if(!strcmp(&argv[1][4], "r")) {
+            mi4magic = MI4_MAGIC_R;
+            version = 0x00010301;
+        }
+        else {
+            printf( "Invalid mi4 version: %s\n", &argv[1][4]);
+            return -1;
+        }
+
         iname = argv[2];
         oname = argv[3];
-        return mi4_encode(iname, oname, 0x00010201, MI4_MAGIC_DEFAULT);
+        
+        if(!strncmp(argv[2], "-model=", 7)) {
+            iname = argv[3];
+            oname = argv[4];
+            model = atoi(&argv[2][7]);
+            
+            if(!strncmp(argv[3], "-type=", 6)) {
+                iname = argv[4];
+                oname = argv[5];
+                strncpy(type, &argv[3][6], 4);
+            }
+        }
+
+        return mi4_encode(iname, oname, version, mi4magic, model, type);
     }
-    else if(!strcmp(argv[1], "-mi4v3")) {
-        iname = argv[2];
-        oname = argv[3];
-        return mi4_encode(iname, oname, 0x00010301, MI4_MAGIC_DEFAULT);
-    }
-    else if(!strcmp(argv[1], "-mi4r")) {
-        iname = argv[2];
-        oname = argv[3];
-        return mi4_encode(iname, oname, 0x00010301, MI4_MAGIC_R);
-    }
     
     /* open file */
     file = fopen(iname,"rb");
Index: tools/mi4.c
===================================================================
--- tools/mi4.c	(revision 12755)
+++ tools/mi4.c	(working copy)
@@ -102,7 +102,8 @@
     addr[3] = (val >> 24) & 0xff;
 }
 
-int mi4_encode(char *iname, char *oname, int version, int magic)
+int mi4_encode(char *iname, char *oname, int version, int magic,
+                char model, char *type)
 {
     size_t len;
     int length;
@@ -150,6 +151,9 @@
     int2le(length+4,     &outbuf[0x2e8]);   /* length plus 0xaa55aa55 */
 
     int2le(0xaa55aa55,   &outbuf[0x200+length]);  /* More Magic */
+    
+    strncpy((char *)outbuf+0x1f8, type, 4);    /* type of binary - RBBL, RBOS, ... */
+    outbuf[0x1fc] = model;              /* model - used by Rockbox */
 
     /* Calculate CRC32 checksum */
     chksum_crc32gentab ();