#REQUIRE KEYS is=["8000000000000120","8000000000000053","8000000000000000"] p=println pr=print pe={pause() exit()} p("System wiper\n") op=["Exit","Wipe sysmmc"].copy() if (emu()){op+"Wipe emummc"} r=menu(op,0)clear() if(r==0){exit()} if(r==1){ mount=mountsys selected_target = "sysmmc" } if(r==2){ mount=mountemu selected_target = "emummc" } if(mount("SYSTEM")){p("Mount failed!")pe()} clear() border = { setpixels(0,0,1279,19,border_color) setpixels(0,700,1279,719,border_color) setpixels(0,20,19,699,border_color) setpixels(1260,20,1279,699,border_color) } i = 20 x_pos = 10 y_pos = 8 ["WARNING!!!", "", "Do you really want to wipe your system?", "This will remove:", "- Your Save Data", "- Your Game Data", "- Your User Data", "- (Some) System Calibration Data" "", "This script includes wiping some calibration data.", "Among other uses, this data is used for battery calibration.", "This is especially problematic for lite systems,", " as it makes the system initialize with unsafe", " battery calibration values!", "", "Restoring an emmc backup is always preferable over wiping.", "Please only use this as a last resort.", "This script is intended to be used in aid of unbricking.", "", "Pull requests to fix the calibration issue are welcome", "https://github.com/suchmememanyskill/TegraExplorer"].foreach("line") { printpos(x_pos, y_pos) y_pos = y_pos + 1 print(line) } time = 10000 y_pos = y_pos + 4 while (i > 0) { i = i - 1 if (i % 2 == 0){ border_color = 0xFF0000 }.else() { border_color = 0x000000 } border() sleep(500) time = time - 500 printpos(x_pos, y_pos) print("Waiting for", time / 1000, "seconds") } printpos(x_pos, y_pos) print("Ready to wipe", selected_target, " ") y_pos = y_pos + 1 printpos(x_pos, y_pos) print("Press the power button to wipe, any other key to exit") result = pause(0x70F000F) if (!result.power) { exit() } clear() color(0xFF0000) pr("Deleting system saves... ") f=readdir("bis:/save") if(f.folders.len()!=0){p("Folders in save dir???")pe()} f.files.foreach("x"){if(!is.contains(x)){if(delfile("bis:/save/"+x)){p("File deletion failed: ", x)pe()}}} pr("Done!\nSetting up indexer save...") if(fsexists("bis:/save/"+is[0])) { ba0=["BYTE[]",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00] ba120=["BYTE[]",0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x80] ba53=["BYTE[]",0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x80] imen=["BYTE[]",0x49,0x4D,0x45,0x4E,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00] idb=["BYTE[]",0x49,0x4D,0x4B,0x56,0x00,0x00,0x00,0x00].copy() # imkv skip53 = !fsexists("bis:/save/"+is[1]) if(skip53) { idb.add(0x01) # 0x01 imen pr("053 save not found!!! Skip indexing it...") }.else() { idb.add(0x02) # 0x02 imens } idb.add(0x00) idb.add(0x00) idb.add(0x00) # 120 save s=getfilesize("bis:/save/"+is[0]) s1=s&0xFF s2=(s>>8)&0xFF s3=(s>>16)&0xFF s4=(s>>24)&0xFF idb.addrange(imen) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba120) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba120) idb.add(s1) idb.add(s2) idb.add(s3) idb.add(s4) idb.add(0x00) idb.add(0x00) idb.add(0x00) idb.add(0x00) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) if(!skip53) { # 53 save s=getfilesize("bis:/save/"+is[1]) s1=s&0xFF s2=(s>>8)&0xFF s3=(s>>16)&0xFF s4=(s>>24)&0xFF idb.addrange(imen) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba53) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba53) idb.add(s1) idb.add(s2) idb.add(s3) idb.add(s4) idb.add(0x00) idb.add(0x00) idb.add(0x00) idb.add(0x00) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) idb.addrange(ba0) } idxs=readsave("bis:/save/"+is[2]) if(idxs.resize("/imkvdb.arc",idb.len())){p("imkvdb resize failed")pe()} if(idxs.write("/imkvdb.arc",idb)){p("imkvdb write failed")pe()} if(idxs.resize("/lastPublishedId",ba0.len())){p("lastPublishedId resize failed")pe()} if(idxs.write("/lastPublishedId",ba0)){p("lastPublishedId write failed")pe()} if(idxs.commit()){p("Indexer save commit failed")pe()} idxs=0 pr("Done!") }.else() { pr("120 save not found!!! Skip editing indexer save!!!") } pr("\nDeleting user dirs...")ud=["Album","Contents","save","saveMeta","temp"] if(mount("USER")){p("Mount failed!")pe()} ud.foreach("x"){pr("\n"+x,"")if(deldir("bis:/"+x)){p("Dir deletion failed")pe()}mkdir("bis:/"+x)} mkdir("bis:/Contents/placehld")mkdir("bis:/Contents/registered") color(0x00FF00)p("\n\nDone!")pause()