]> Chaos Git - corbenik/corbenik.git/commitdiff
Improve logging, make patch versions lockstep to the current release
authorchaoskagami <chaos.kagami@gmail.com>
Sat, 11 Jun 2016 21:55:40 +0000 (17:55 -0400)
committerchaoskagami <chaos.kagami@gmail.com>
Sat, 11 Jun 2016 21:55:40 +0000 (17:55 -0400)
20 files changed:
patch/aadowngrade.pco
patch/agb_biosscreen.pco
patch/agb_sig.pco
patch/block_cart_update.pco
patch/block_eshop_update.pco
patch/block_nim_update.pco
patch/errdisp.pco
patch/friends_ver.pco
patch/memexec.pco
patch/mset_str.pco
patch/ns_force_menu.pco
patch/prot.pco
patch/regionfree.pco
patch/ro_sigs.pco
patch/secinfo_sigs.pco
patch/sig.pco
patch/twl_fix.pco
patch/unitinfo.pco
source/firm/firm.c
source/interp.c

index 6fb4f713f810c0bd451320982ea130af3968d587..5c163fe247a22cf5cf1454ad91a9b4b3497f89d4 100644 (file)
@@ -1,6 +1,6 @@
 # $name Title Downgrade Fix
 # $desc Removes added checks to prevent downgrade (in 11.0)
-# $ver  01
+# $ver  09
 # $uuid 00
 # $flags require
 
index 624902caff80daef476a3bae51c4362001da7685..a15b35452e812e9f5c5791de1d3c84fddb46b0fb 100644 (file)
@@ -1,6 +1,6 @@
 # $name  AGB Bootscreen
 # $desc  Force usage of GBA bios in AGB_FIRM.
-# $ver   01
+# $ver   09
 # $uuid  35
 
 # TODO - Make dynamic. Also broken on O3DS.
index 653406a898ae5b9b4c5bda2f47b71d04c87f44d6..1646020cd8908ca4676ed5363d07484dbdd08ad7 100644 (file)
@@ -1,6 +1,6 @@
 # $name  AGB Signature fix
 # $desc  Patches signatures in AGB_FIRM
-# $ver   01
+# $ver   09
 # $uuid  39
 
 # TODO - Use proper section.
index 657590a49d4f4484add28b63f44765ae30d264f7..210f3f0b82b4eaa43e2877ec964bd0a2f1900a68 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Block Cart Updates
 # $desc  Blocks update checks on cartridges (and also allows region free carts, as a byproduct.)
 # $title 0004013000008002
-# $ver   01
+# $ver   09
 # $uuid  01
 
 rel exe_text
index 426f319d3a501336d35e05f0765dadb1dade2e2d..b02f03fa68a5740321f9ca4babb977fa502e34f5 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Block eShop Updates
 # $desc  Prevents eShop from checking for system updates.
 # $title 0004013000002C02
-# $ver   01
+# $ver   09
 # $uuid  02
 
 rel exe_text
index 97c45e7154e88a71ef7a93377ef7616d854109b0..c162ccf2de7c4fe95f0c1256b0eba7dce60265e8 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Block NIM updates
 # $desc  Prevents NIM from downloading system updates.
 # $title 0004013000002C02
-# $ver   01
+# $ver   09
 # $uuid  03
 
 rel exe_text
index 812c688e7e961cd5614ef0a7d875d1649c6d29ea..07748b0cd6f707d06166421c63e09aa0a88588d3 100644 (file)
@@ -1,7 +1,7 @@
 # $name  ErrDisp devmode
 # $desc  Forces ErrDisp into displaying developer info without developer UNITINFO. Doesn't break eShop.
 # $title 0004003000008A02
-# $ver   01
+# $ver   09
 # $uuid  04
 # $flags devmode
 
index 1e99c4438d18b3b74aff84787151a4e5eea299e6..a8e16b9888a2499bf22658b611e3d46bdc2bd7b2 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Fake Friends module version
 # $desc  Allows going online without the latest firmware.
 # $title 0004013000003202
-# $ver   01
+# $ver   09
 # $uuid  05
 # $flags noabort
 
index 7fb5b61d43c4c13dae5e150699ccb3270c79a36d..566fd72e1e380a365a8228c94e96274719abd347 100644 (file)
@@ -1,6 +1,6 @@
 # $name ARM11 XN Disable
 # $desc Disables the XN bit on the ARM11 kernel to allow executing code from all memory. May be unsafe.
-# $ver  01
+# $ver  09
 # $uuid 06
 # $flags devmode
 
index 9c8ea043f90a12f76ac27207144220930fb9cd73..6ee3b4461db798582cf0b2f5d1c30c5fc88a39ce 100644 (file)
@@ -1,7 +1,7 @@
 # $name  MSET Version
 # $desc  Replaces 'Ver.' with CFW info.
 # $title 0004001000021000 0004001000020000 0004001000022000 0004001000026000 0004001000027000 0004001000028000
-# $ver   01
+# $ver   09
 # $uuid  07
 
 rel exe_text
index f463260d953e4f0686673da8fb1b70ed53f88913..f2aec0531fbad177a16324deaa3f50e2d2341cc5 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Force TestMenu
 # $desc  Force NS to boot TestMenu rather than HOME (TestMenu must be installed)
 # $title 0004013000008002
-# $ver   01
+# $ver   09
 # $uuid  1e
 
 rel exe_text
index 61b4ae01c220e960af806e2a82ebe6f623aa7e38..80e45a9552b46dffb6fa31627e86789bb1107cb7 100644 (file)
@@ -1,6 +1,6 @@
 # $name FIRM Protect
 # $desc Prevents writing FIRM to the NAND during updates.
-# $ver  01
+# $ver  09
 # $uuid 08
 # $flags require
 
index 67e62029b57410eb19275bf8e669829af559016b..d3614306af75478b13fb8f91c83c8a7e68fae651 100644 (file)
@@ -1,7 +1,7 @@
 # $name  Region free HOME
 # $desc  Allows launching installed software from any region.
 # $title 0004003000008F02 0004003000008202 0004003000009802 000400300000A102 000400300000A902 000400300000B102
-# $ver   01
+# $ver   09
 # $uuid  09
 
 rel exe_text
index e1ef8adfb628dd2670659c22916b4baef5068882..8f00b748103faf21c0ad729e1b0e49578e4203e1 100644 (file)
@@ -1,7 +1,7 @@
 # $name  RO signature fix
 # $desc  Allows usage of unsigned CRO files. This is useful for romhacks.
 # $title 0004013000003702
-# $ver   01
+# $ver   09
 # $uuid  0a
 
 rel exe_text
index 3adc642fbf4a0c7bdc128e12c3dbaa51df514ab6..ae439ae3ca98eaf87dfc42693a871c4958a0af95 100644 (file)
@@ -1,7 +1,7 @@
 # $name  SecureInfo_A Signature Fix
 # $desc  Allows using unsigned or improperly signed SecureInfo_A files. Useful for region changes.
 # $title 0004013000001702
-# $ver   01
+# $ver   09
 # $uuid  0b
 
 rel exe_text
index 0a8fc234822c56853774a3d53a3822137bb24233..47747156d2ecbf7aa15e4ad4341dcfdc8c786885 100644 (file)
@@ -1,6 +1,6 @@
 # $name Signature Fix
 # $desc Disables signature checks on content.
-# $ver  01
+# $ver  09
 # $uuid 0c
 # $flags require
 
index f556ee8a5ae3677014c7a163f458bfe7fa40a75e..a6f18a5b54d03621fc705f848e0d76627c339448 100644 (file)
@@ -1,6 +1,6 @@
 # $name TWL Patches
 # $desc 
-# $ver  01
+# $ver  09
 # $uuid 34
 
 # TODO - Use proper section
index 20e073ad8f3503de3a996a50859586bae178043c..f25807a0fb5d24228720133e4d4ed7590b1f9e7e 100644 (file)
@@ -1,6 +1,6 @@
 # $name Developer UNITINFO
 # $desc Imitates a panda's configuration. For the average user, loader ErrDisp is enough.
-# $ver  01
+# $ver  09
 # $uuid 0d
 # $flags devmode
 
index d275bdff7074a125ea005a2a934f6f6bb351f045..b46e50659fb885f1778867e4cc285f82af7a49f8 100644 (file)
@@ -395,14 +395,17 @@ load_firms()
         abort("]\n  Failed to load NATIVE_FIRM.\n");
     }
     find_proc9(firm_loc, &firm_proc9, &firm_p9_exefs);
+    fprintf(stderr, "]\n");
+    fprintf(stderr, "Ver: %x, %u\n", get_firm_info(firm_loc)->version, get_firm_info(firm_loc)->console );
 
-    fprintf(BOTTOM_SCREEN, "]\nTWL_FIRM\n  [");
+    fprintf(BOTTOM_SCREEN, "TWL_FIRM\n  [");
     if (load_firm(twl_firm_loc, PATH_TWL_F, PATH_TWL_FIRMKEY, PATH_TWL_CETK, &twl_firm_size, TWL_FIRM_TITLEID) != 0) {
         fprintf(BOTTOM_SCREEN, "]\n  TWL_FIRM failed to load.\n");
         state = 1;
     } else {
         find_proc9(twl_firm_loc, &twl_firm_proc9, &twl_firm_p9_exefs);
         fprintf(stderr, "]\n");
+        fprintf(stderr, "Ver: %x, %u\n", get_firm_info(twl_firm_loc)->version, get_firm_info(twl_firm_loc)->console );
     }
 
     fprintf(BOTTOM_SCREEN, "AGB_FIRM\n  [");
@@ -412,6 +415,7 @@ load_firms()
     } else {
         find_proc9(agb_firm_loc, &agb_firm_proc9, &agb_firm_p9_exefs);
         fprintf(stderr, "]\n");
+        fprintf(stderr, "Ver: %x, %u\n", get_firm_info(agb_firm_loc)->version, get_firm_info(agb_firm_loc)->console );
     }
 
     firm_loaded = 1; // Loaded.
index a4c600f1600c956c50f922648942062b19ed2bee..6971c12c34d87191f6b54ba0d46ef578751ad3e5 100644 (file)
@@ -149,21 +149,32 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
     while (code < end && code >= bytecode) {
         switch (*code) {
             case OP_NOP:
-                if (debug)
+                if (debug) {
                     log("nop\n");
+                }
                 code++;
                 break;
             case OP_REL: // Change relativity.
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("rel\n");
+#else
+                    fprintf(stderr, "rel %u\n", *(code+1));
+#endif
+                }
                 code++;
                 current_mode = &modes[*code];
                 set_mode = *code;
                 code++;
                 break;
             case OP_FIND: // Find pattern.
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("find\n");
+#else
+                    fprintf(stderr, "find %u ...\n", *(code+1));
+#endif
+                }
                 code += 2;
                 found = 0;
                 new_offset = (uint32_t)memfind(current_mode->memory + offset, current_mode->size - offset, code, *(code - 1));
@@ -175,34 +186,50 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += *(code - 1);
                 break;
             case OP_BACK:
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("back\n");
+#else
+                    fprintf(stderr, "back %u\n", *(code+1));
+#endif
+                }
                 code++;
                 offset -= *code;
                 code++;
                 break;
             case OP_FWD:
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("fwd\n");
+#else
+                    fprintf(stderr, "fwd %u\n", *(code+1));
+#endif
+                }
                 code++;
                 offset += *code;
-                if (offset >= current_mode->size) {
-                    // Went out of bounds. Error.
-                    abort("Fwd overflowed.\n");
-                }
                 code++;
                 break;
             case OP_SET: // Set data.
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("set\n");
+#else
+                    fprintf(stderr, "set %u, ...\n", *(code+1));
+#endif
+                }
                 code += 2;
                 memcpy(current_mode->memory + offset, code, *(code - 1));
                 offset += *(code - 1);
                 code += *(code - 1);
                 break;
             case OP_TEST: // Test data.
-                if (debug)
+                if (debug) {
+#ifdef LOADER
                     log("test\n");
+#else
+                    fprintf(stderr, "test %u, ...\n", *(code+1));
+#endif
+                }
                 code += 2;
                 eq = memcmp(current_mode->memory + offset, code, *(code - 1));
                 if (eq < 0)
@@ -213,77 +240,118 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += *(code - 1);
                 break;
             case OP_JMP: // Jump to offset.
-                if (debug)
-                    log("jmp\n");
                 code++;
                 code = bytecode + (code[0] + (code[1] << 8));
+                if (debug) {
+#ifdef LOADER
+                    log("jmp\n");
+#else
+                    fprintf(stderr, "jmp %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPEQ: // Jump to offset if equal
-                if (debug)
-                    log("jmpeq\n");
                 code++;
                 if (eq)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmpeq\n");
+#else
+                    fprintf(stderr, "jmpeq %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPNE: // Jump to offset if not equal
-                if (debug)
-                    log("jmpne\n");
                 code++;
                 if (!eq)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmpne\n");
+#else
+                    fprintf(stderr, "jmpeq %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPLT: // Jump to offset if less than
-                if (debug)
-                    log("jmplt\n");
                 code++;
                 if (lt)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmplt\n");
+#else
+                    fprintf(stderr, "jmplt %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPGT: // Jump to offset if greater than
-                if (debug)
-                    log("jmpgt\n");
                 code++;
                 if (gt)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmplt\n");
+#else
+                    fprintf(stderr, "jmplt %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPLE: // Jump to offset if less than or equal
-                if (debug)
-                    log("jmple\n");
                 code++;
                 if (lt || eq)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmplt\n");
+#else
+                    fprintf(stderr, "jmplt %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPF: // Jump to offset if pattern found
-                if (debug)
-                    log("jmpf\n");
                 code++;
                 if (found)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmplt\n");
+#else
+                    fprintf(stderr, "jmplt %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_JMPNF: // Jump to offset if pattern NOT found
-                if (debug)
-                    log("jmpnf\n");
                 code++;
                 if (!found)
                     code = bytecode + (code[0] + (code[1] << 8));
                 else
                     code += 2;
+                if (debug) {
+#ifdef LOADER
+                    log("jmplt\n");
+#else
+                    fprintf(stderr, "jmplt %u\n", code - bytecode);
+#endif
+                }
                 break;
             case OP_CLF: // Clear flags.
-                if (debug)
+                if (debug) {
                     log("clf\n");
+                }
                 code++;
                 found = gt = lt = eq = 0;
                 break;
@@ -294,8 +362,9 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 offset = 0;
                 break;
             case OP_AND:
-                if (debug)
+                if (debug) {
                     log("and\n");
+                }
                 code += 2;
                 for (i = 0; i < *(code - 1); i++) {
                     *(current_mode->memory + offset) &= code[i];
@@ -304,8 +373,9 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += *(code - 1);
                 break;
             case OP_OR:
-                if (debug)
+                if (debug) {
                     log("or\n");
+                }
                 code += 2;
                 for (i = 0; i < *(code - 1); i++) {
                     *(current_mode->memory + offset) |= code[i];
@@ -314,8 +384,9 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += *(code - 1);
                 break;
             case OP_XOR:
-                if (debug)
+                if (debug) {
                     log("xor\n");
+                }
                 code += 2;
                 for (i = 0; i < *(code - 1); i++) {
                     *(current_mode->memory + offset) ^= code[i];
@@ -324,8 +395,9 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += *(code - 1);
                 break;
             case OP_NOT:
-                if (debug)
+                if (debug) {
                     log("not\n");
+                }
                 for (i = 0; i < *(code + 1); i++) {
                     *(current_mode->memory + offset) = ~*(current_mode->memory + offset);
                 }
@@ -333,8 +405,9 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += 2;
                 break;
             case OP_VER:
-                if (debug)
+                if (debug) {
                     log("ver\n");
+                }
                 code++;
                 eq = memcmp(&ver, code, 2);
                 if (eq < 0)
@@ -345,22 +418,28 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
                 code += 2;
                 break;
             case OP_N3DS:
-                if (debug)
+                if (debug) {
                     log("n3ds\n");
+                }
                 code++;
                 eq = is_n3ds;
                 break;
             case OP_SEEK: // Jump to offset if greater than or equal
-                if (debug)
-                    log("seek\n");
                 code++;
                 offset = code[0] + (code[1] << 8) + (code[2] << 16) + (code[3] << 24);
-
+                if (debug) {
+#ifdef LOADER
+                    log("seek\n");
+#else
+                    fprintf(stderr, "seek %u\n", offset);
+#endif
+                }
                 code += 4;
                 break;
             case OP_NEXT:
-                if (debug)
+                if (debug) {
                     log("next\n");
+                }
                 found = gt = lt = eq = 0;
 
                 bytecode = code + 1;
@@ -399,8 +478,10 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug)
         }
 
 #ifndef LOADER
-        if (debug)
+        if (debug) {
+            fprintf(stderr, "  l:%u, g:%u, e:%u, f:%u", lt, gt, eq, found);
             wait();
+        }
 #endif
     }
 
@@ -514,7 +595,8 @@ execb(char *filename, int build_cache)
             // We should generate a cache for loader in a file intended for titleid.
             uint8_t *title_buf = (uint8_t *)patch + sizeof(struct system_patch);
 
-            fprintf(stderr, "patch: %s\n", patch->name);
+            fprintf(stderr, "patch:   %s\n", patch->name);
+            fprintf(stderr, "version: %u\n", patch->version);
 
             for (uint32_t i = 0; i < patch->titles; i++) {
                 char cache_path[] = PATH_LOADER_CACHE "/0000000000000000";