0dbfb8c
Index: alex4src/src/control.c
0dbfb8c
===================================================================
0dbfb8c
--- alex4src.orig/src/control.c	2008-01-17 00:20:33.000000000 +0100
0dbfb8c
+++ alex4src/src/control.c	2008-01-17 00:29:35.000000000 +0100
0dbfb8c
@@ -93,10 +93,24 @@
0dbfb8c
 
0dbfb8c
 // saves the control config to disk using FP
0dbfb8c
 void save_control(Tcontrol *c, PACKFILE *fp) {
0dbfb8c
-	pack_fwrite(c, sizeof(Tcontrol), fp);
0dbfb8c
+	pack_iputl(c->use_joy, fp);
0dbfb8c
+	pack_iputl(c->key_left, fp);
0dbfb8c
+	pack_iputl(c->key_right, fp);
0dbfb8c
+	pack_iputl(c->key_up, fp);
0dbfb8c
+	pack_iputl(c->key_down, fp);
0dbfb8c
+	pack_iputl(c->key_fire, fp);
0dbfb8c
+	pack_iputl(c->key_jump, fp);
0dbfb8c
+	pack_putc(c->flags, fp);
0dbfb8c
 }
0dbfb8c
 
0dbfb8c
 // loads the control config from disk using FP
0dbfb8c
 void load_control(Tcontrol *c, PACKFILE *fp) {
0dbfb8c
-	pack_fread(c, sizeof(Tcontrol), fp);
0dbfb8c
+	c->use_joy = pack_igetl(fp);
0dbfb8c
+	c->key_left = pack_igetl(fp);
0dbfb8c
+	c->key_right = pack_igetl(fp);
0dbfb8c
+	c->key_up = pack_igetl(fp);
0dbfb8c
+	c->key_down = pack_igetl(fp);
0dbfb8c
+	c->key_fire = pack_igetl(fp);
0dbfb8c
+	c->key_jump = pack_igetl(fp);
0dbfb8c
+	c->flags = pack_getc(fp);
0dbfb8c
 }
0dbfb8c
Index: alex4src/src/hisc.c
0dbfb8c
===================================================================
0dbfb8c
--- alex4src.orig/src/hisc.c	2008-01-17 00:29:45.000000000 +0100
0dbfb8c
+++ alex4src/src/hisc.c	2008-01-17 00:42:13.000000000 +0100
0dbfb8c
@@ -117,9 +117,12 @@
0dbfb8c
 	for(i=0; i
0dbfb8c
 		int c_disk, c_real;
0dbfb8c
 		// load entry
0dbfb8c
-		pack_fread(&table[i], sizeof(Thisc), fp);
0dbfb8c
+                pack_fread(&table[i].name, sizeof(table[i].name), fp);
0dbfb8c
+                pack_getc(fp); pack_getc(fp); // 2 bytes padding
0dbfb8c
+                table[i].score = pack_igetl(fp);
0dbfb8c
+                table[i].level = pack_igetl(fp);
0dbfb8c
 		// load checksum
0dbfb8c
-		pack_fread(&c_disk, sizeof(int), fp);
0dbfb8c
+                c_disk = pack_igetl(fp);
0dbfb8c
 		// generate check sum
0dbfb8c
 		c_real = generate_checksum(&table[i]);
0dbfb8c
 		// compare checksums
0dbfb8c
@@ -137,11 +140,14 @@
0dbfb8c
 	for(i=0; i
0dbfb8c
 		int checksum;
0dbfb8c
 		// save entry
0dbfb8c
-		pack_fwrite(&table[i], sizeof(Thisc), fp);
0dbfb8c
+		pack_fwrite(&table[i].name, sizeof(table[i].name), fp);
0dbfb8c
+                pack_putc(0, fp); pack_putc(0, fp); // 2 bytes padding
0dbfb8c
+                pack_iputl(table[i].score, fp);
0dbfb8c
+                pack_iputl(table[i].level, fp);
0dbfb8c
 		// generate check sum
0dbfb8c
 		checksum = generate_checksum(&table[i]);
0dbfb8c
 		// save checksum
0dbfb8c
-		pack_fwrite(&checksum, sizeof(int), fp);
0dbfb8c
+                pack_iputl(checksum, fp);
0dbfb8c
 	}
0dbfb8c
 }
0dbfb8c
 
0dbfb8c
Index: alex4src/src/options.c
0dbfb8c
===================================================================
0dbfb8c
--- alex4src.orig/src/options.c	2008-01-17 00:24:31.000000000 +0100
0dbfb8c
+++ alex4src/src/options.c	2008-01-17 00:36:56.000000000 +0100
0dbfb8c
@@ -26,12 +26,26 @@
0dbfb8c
 
0dbfb8c
 // saves the data structure to disk
0dbfb8c
 void save_options(Toptions *o, PACKFILE *fp) {
0dbfb8c
-	pack_fwrite(o, sizeof(Toptions), fp);
0dbfb8c
+        int i;
0dbfb8c
+        pack_iputl(o->max_levels, fp);
0dbfb8c
+        for (i = 0; i < MAX_LEVELS; ++i)
0dbfb8c
+                pack_iputl(o->cherries[i], fp);
0dbfb8c
+        for (i = 0; i < MAX_LEVELS; ++i)
0dbfb8c
+                pack_iputl(o->stars[i], fp);
0dbfb8c
+        pack_iputl(o->use_vsync, fp);
0dbfb8c
+        pack_iputl(o->one_hundred, fp);
0dbfb8c
 }
0dbfb8c
 
0dbfb8c
 // loads the data structure from disk
0dbfb8c
 void load_options(Toptions *o, PACKFILE *fp) {
0dbfb8c
-	pack_fread(o, sizeof(Toptions), fp);
0dbfb8c
+        int i;
0dbfb8c
+        o->max_levels = pack_igetl(fp);
0dbfb8c
+        for (i = 0; i < MAX_LEVELS; ++i)
0dbfb8c
+                o->cherries[i] = pack_igetl(fp);
0dbfb8c
+        for (i = 0; i < MAX_LEVELS; ++i)
0dbfb8c
+                o->stars[i] = pack_igetl(fp);
0dbfb8c
+        o->use_vsync = pack_igetl(fp);
0dbfb8c
+        o->one_hundred = pack_igetl(fp);
0dbfb8c
 }
0dbfb8c
 
c538221
 // resets all data