summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/Makefile7
-rw-r--r--tools/iaudio_bl_flash.bmpbin0 -> 5240 bytes
-rw-r--r--tools/scramble.c12
3 files changed, 17 insertions, 2 deletions
diff --git a/tools/Makefile b/tools/Makefile
index 17887b2..6351e5b 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -18,16 +18,19 @@ CLEANALL := scramble descramble iriver sh2d bmp2rb rdf2binary convbdf \
all:
@echo "Run make in your build directory!"
-scramble: scramble.o iriver.o mi4.o gigabeat.o gigabeats.o telechips.o
+scramble: scramble.o iriver.o mi4.o gigabeat.o gigabeats.o telechips.o iaudio_bl_flash.o
descramble: descramble.o iriver.o gigabeat.o
-scramble.o: scramble.c iriver.h mi4.h gigabeat.h telechips.h
+scramble.o: scramble.c iriver.h mi4.h gigabeat.h telechips.h iaudio_bl_flash.h
descramble.o: descramble.c iriver.h gigabeat.h
iriver.o: iriver.c iriver.h
gigabeat.o: gigabeat.c gigabeat.h
gigabeats.o: gigabeats.c gigabeats.h
mi4.o: mi4.c mi4.h
telechips.o: telechips.c telechips.h
+iaudio_bl_flash.o: iaudio_bl_flash.c iaudio_bl_flash.h
+iaudio_bl_flash.c iaudio_bl_flash.h: iaudio_bl_flash.bmp bmp2rb
+ $(SILENT)./bmp2rb -f 7 -h . $< >iaudio_bl_flash.c
sh2d: sh2d.c
diff --git a/tools/iaudio_bl_flash.bmp b/tools/iaudio_bl_flash.bmp
new file mode 100644
index 0000000..093fe14
--- /dev/null
+++ b/tools/iaudio_bl_flash.bmp
Binary files differ
diff --git a/tools/scramble.c b/tools/scramble.c
index 0a52300..b49bde1 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -26,6 +26,7 @@
#include "gigabeats.h"
#include "mi4.h"
#include "telechips.h"
+#include "iaudio_bl_flash.h"
int iaudio_encode(char *iname, char *oname, char *idstring);
int ipod_encode(char *iname, char *oname, int fw_ver, bool fake_rsrc);
@@ -77,6 +78,12 @@ void int2be(unsigned int val, unsigned char* addr)
addr[3] = val & 0xFF;
}
+void short2be(unsigned short val, unsigned char* addr)
+{
+ addr[0] = (val >> 8) & 0xff;
+ addr[1] = val & 0xFF;
+}
+
void usage(void)
{
printf("usage: scramble [options] <input file> <output file> [xor string]\n");
@@ -586,6 +593,11 @@ int iaudio_encode(char *iname, char *oname, char *idstring)
memset(outbuf, 0, 0x1030);
strcpy((char *)outbuf, idstring);
+ memcpy(outbuf+0x20, iaudio_bl_flash,
+ BMPWIDTH_iaudio_bl_flash * (BMPHEIGHT_iaudio_bl_flash/8) * 2);
+ short2be(BMPWIDTH_iaudio_bl_flash, &outbuf[0x10]);
+ short2be((BMPHEIGHT_iaudio_bl_flash/8), &outbuf[0x12]);
+ outbuf[0x19] = 2;
for(i = 0; i < length;i++)
sum += outbuf[0x1030 + i];