removed the neo-specific scramble-tool and made it an option to scramble
instead, and made the makefile use this


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4140 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/Makefile b/apps/Makefile
index bb7625b..2fc9d97 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -31,6 +31,9 @@
 # Check if this is a kind of Recorder
 ANYREC = $(findstring RECORDER, $(TARGET))
 
+# scramble tool
+TOOL = scramble
+
 ifndef MEM
     # if MEM is not set, assume 2MB
     MEM=2
@@ -56,19 +59,17 @@
    SRC += $(wildcard recorder/*.c)
    CFLAGS += -Irecorder
    OUTNAME = ajbrec.ajz
-   TOOL = scramble
 else
 ifeq ($(TARGET), -DARCHOS_PLAYER)
    SRC += $(wildcard player/*.c)
    CFLAGS += -Iplayer
    OUTNAME = archos.mod
-   TOOL = scramble
 else
 # some kind of Neo 
    SRC += $(wildcard neo/*.c)
    CFLAGS += -Ineo
    OUTNAME = Rockbox.bin
-   TOOL = mkneofile
+   TOOL_OPT = -neo
 endif
 endif
 
diff --git a/tools/mkneofile.c b/tools/mkneofile.c
deleted file mode 100644
index 93e0d45..0000000
--- a/tools/mkneofile.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- *             __________               __   ___.
- *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
- *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
- *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
- *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
- *                     \/            \/     \/    \/            \/
- * $Id$
- *
- * Copyright (C) 2003 by Open Neo
- *
- * All files in this archive are subject to the GNU General Public License.
- * See the file COPYING in the source tree root for full license agreement.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
-
-#define MY_FIRMWARE_TYPE "Rockbox"
-#define MY_HEADER_VERSION 1
-
-int main (int argc, char** argv)
-{
-    unsigned long length,i,slen;
-    unsigned char *inbuf;
-    unsigned short checksum=0;
-    unsigned char *iname = argv[1];
-    unsigned char *oname = argv[2];
-    unsigned char header[17];
-    FILE* file;
-
-    if (argc < 3) {
-       printf("usage: %s <input file> <output file>\n",argv[0]);
-       return -1;
-    }
-
-    /* open file */
-    file = fopen(iname,"rb");
-    if (!file) {
-       perror(iname);
-       return -1;
-    }
-    fseek(file,0,SEEK_END);
-    length = ftell(file);
-    length = (length + 3) & ~3; /* Round up to nearest 4 byte boundary */
-    
-    if (length >= 0x32000) {
-        printf("error: max firmware size is 200KB!\n");
-        fclose(file);
-        return -1;
-    }
-    
-    fseek(file,0,SEEK_SET); 
-    inbuf = malloc(length);
-    if ( !inbuf ) {
-       printf("out of memory!\n");
-       return -1;
-    }
-
-    /* read file */
-    i=fread(inbuf,1,length,file);
-    if ( !i ) {
-       perror(iname);
-       return -1;
-    }
-    fclose(file);
-
-    /* calculate checksum */
-    for (i=0;i<length;i++)
-       checksum+=inbuf[i];
-
-    /* make header */
-    memset(header, 0, sizeof(header));
-    strncpy(header,MY_FIRMWARE_TYPE,9);
-    header[9]='\0'; /*shouldn't have to, but to be SURE */
-    header[10]=MY_HEADER_VERSION&0xFF;
-    header[11]=(checksum>>8)&0xFF;
-    header[12]=checksum&0xFF;
-    header[13]=(sizeof(header)>>24)&0xFF;
-    header[14]=(sizeof(header)>>16)&0xFF;
-    header[15]=(sizeof(header)>>8)&0xFF;
-    header[16]=sizeof(header)&0xFF;
-
-    /* write file */
-    file = fopen(oname,"wb");
-    if ( !file ) {
-       perror(oname);
-       return -1;
-    }
-    if ( !fwrite(header,sizeof(header),1,file) ) {
-       perror(oname);
-       return -1;
-    }
-    if ( !fwrite(inbuf,length,1,file) ) {
-       perror(oname);
-       return -1;
-    }
-    fclose(file);
-    
-    free(inbuf);
-
-    printf("\r\nHeader Info:\r\n\t"
-           "Header Type:\t\t%s\r\n\t"
-           "Header Version:\t\t%d\r\n\t"
-           "Header Checksum:\t0x%x\r\n\t"
-           "Data Start:\t\t0x%x\r\n\r\n",
-           header,header[10],checksum,sizeof(header));
-    return 0;
-}
diff --git a/tools/scramble.c b/tools/scramble.c
index 95709c0..0021bca 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -31,9 +31,10 @@
     int headerlen = 6;
     FILE* file;
     int version;
+    int scramble=1;
 
     if (argc < 3) {
-       printf("usage: %s [-fm] [-v2] <input file> <output file>\n",argv[0]);
+       printf("usage: %s [-fm] [-v2] [-neo]<input file> <output file>\n",argv[0]);
        return -1;
     }
 
@@ -44,12 +45,20 @@
         version = 4;
     }
     
-    if(!strcmp(argv[1], "-v2")) {
+    else if(!strcmp(argv[1], "-v2")) {
         headerlen = 24;
         iname = argv[2];
         oname = argv[3];
         version = 2;
     }
+
+    else if(!strcmp(argv[1], "-neo")) {
+        headerlen = 17;
+        iname = argv[2];
+        oname = argv[3];
+        scramble = 0;
+    }
+
     
     /* open file */
     file = fopen(iname,"rb");
@@ -83,46 +92,63 @@
     }
     fclose(file);
 
-    /* scramble */
-    slen = length/4;
-    for (i = 0; i < length; i++) {
-       unsigned long addr = (i >> 2) + ((i % 4) * slen);
-       unsigned char data = inbuf[i];
-       data = ~((data << 1) | ((data >> 7) & 1)); /* poor man's ROL */
-       outbuf[addr] = data;
+    if(scramble) {
+        /* scramble */
+        slen = length/4;
+        for (i = 0; i < length; i++) {
+            unsigned long addr = (i >> 2) + ((i % 4) * slen);
+            unsigned char data = inbuf[i];
+            data = ~((data << 1) | ((data >> 7) & 1)); /* poor man's ROL */
+            outbuf[addr] = data;
+        }
     }
     
     /* calculate checksum */
     for (i=0;i<length;i++)
        crc += inbuf[i];
 
-    /* make header */
     memset(header, 0, sizeof header);
-    if (headerlen == 6) {
-        header[0] = (length >> 24) & 0xff;
-        header[1] = (length >> 16) & 0xff;
-        header[2] = (length >> 8) & 0xff;
-        header[3] = length & 0xff;
-        header[4] = (crc >> 8) & 0xff;
-        header[5] = crc & 0xff;
+    if(scramble) {
+        if (headerlen == 6) {
+            header[0] = (length >> 24) & 0xff;
+            header[1] = (length >> 16) & 0xff;
+            header[2] = (length >> 8) & 0xff;
+            header[3] = length & 0xff;
+            header[4] = (crc >> 8) & 0xff;
+            header[5] = crc & 0xff;
+        }
+        else {
+            header[0] =
+                header[1] =
+                header[2] =
+                header[3] = 0xff; /* ??? */
+            
+            header[6] = (crc >> 8) & 0xff;
+            header[7] = crc & 0xff;
+
+            header[11] = version;
+
+            header[15] = headerlen; /* really? */
+
+            header[20] = (length >> 24) & 0xff;
+            header[21] = (length >> 16) & 0xff;
+            header[22] = (length >> 8) & 0xff;
+            header[23] = length & 0xff;
+        }
     }
     else {
-        header[0] =
-            header[1] =
-            header[2] =
-            header[3] = 0xff; /* ??? */
-            
-        header[6] = (crc >> 8) & 0xff;
-        header[7] = crc & 0xff;
+#define MY_FIRMWARE_TYPE "Rockbox"
+#define MY_HEADER_VERSION 1
 
-        header[11] = version;
-
-        header[15] = headerlen; /* really? */
-
-        header[20] = (length >> 24) & 0xff;
-        header[21] = (length >> 16) & 0xff;
-        header[22] = (length >> 8) & 0xff;
-        header[23] = length & 0xff;
+        strncpy(header,MY_FIRMWARE_TYPE,9);
+        header[9]='\0'; /*shouldn't have to, but to be SURE */
+        header[10]=MY_HEADER_VERSION&0xFF;
+        header[11]=(crc>>8)&0xFF;
+        header[12]=crc&0xFF;
+        header[13]=(sizeof(header)>>24)&0xFF;
+        header[14]=(sizeof(header)>>16)&0xFF;
+        header[15]=(sizeof(header)>>8)&0xFF;
+        header[16]=sizeof(header)&0xFF;
     }
 
     /* write file */