patcher.nopout((0x8034ab8 + 0x2)) patcher.nopout((0x8034ace)) patcher.nopout((0x8034ace + 0x2)) patcher.nopout((0x8049f9a)) patcher.nopout((0x8049f9a + 0x2)) patcher.nopout((0x804a820)) patcher.nopout((0x804a820 + 0x2)) patcher.nopout((0x804aae4)) patcher.nopout((0x804aae4 + 0x2)) patcher.nopout((0x804af70)) patcher.nopout((0x804af70 + 0x2)) patcher.nopout((0x804b9fc)) patcher.nopout((0x804b9fc + 0x2)) #Marks the version as "md380tools" patcher.setwstring(0x080d0b6c, "MD380Tools Ver.") #Fix some bad grammar patcher.setwstring(0x080f9a94, "No Fix") #Change the manufacturer string. *Never Worked...* # patcher.setstring(0x080f9588, # "Travis Goodspeed KK4VCZ"); #Change the device name. patcher.setstring(0x080d0eb4, "Patched MD-380/390G") # freeing ~200k for code patches patcher.ffrange(0x0809bda8, 0x80d0614) #This mirrors the RESET vector to 0x080C020, for use in booting. patcher.setword(0x0800C020, patcher.getword(0x0800C004), 0x00000000)
patcher.nopout((0x8034ab8 + 0x2)) patcher.nopout((0x8034ace)) patcher.nopout((0x8034ace + 0x2)) patcher.nopout((0x8049f9a)) patcher.nopout((0x8049f9a + 0x2)) patcher.nopout((0x804a820)) patcher.nopout((0x804a820 + 0x2)) patcher.nopout((0x804aae4)) patcher.nopout((0x804aae4 + 0x2)) patcher.nopout((0x804af70)) patcher.nopout((0x804af70 + 0x2)) patcher.nopout((0x804b9fc)) patcher.nopout((0x804b9fc + 0x2)) # Marks the version as "md380tools" patcher.setwstring(0x080d0b6c, "MD380Tools Ver.") # Fix some bad grammar patcher.setwstring(0x080f9a94, "No Fix") # Change the manufacturer string. *Never Worked...* # patcher.setstring(0x080f9588, # "Travis Goodspeed KK4VCZ"); # Change the device name. patcher.setstring(0x080d0eb4, "Patched MD-380/390G") # freeing ~200k for code patches patcher.ffrange(0x0809bda8, 0x80d0614)
patcher.ffrange(0x0809aee8, 0x080cf754) # This mirrors the RESET vector to 0x080C020, for use in booting. patcher.setword(0x0800C020, patcher.getword(0x0800C004), 0x00000000) # This makes RESET point to our stub below. patcher.setword(0x0800C004, 0x0809af00 + 1) # This stub calls the target RESET vector, # if it's not FFFFFFFF. patcher.sethword(0x0809af00, 0x4840) patcher.sethword(0x0809af02, 0x2100) patcher.sethword(0x0809af04, 0x3901) patcher.sethword(0x0809af06, 0x4508) patcher.sethword(0x0809af08, 0xd100) patcher.sethword(0x0809af0a, 0x483c) patcher.sethword(0x0809af0c, 0x4700) # Stores the RESET handler for our stub. patcher.setword(0x0809affc, patcher.getword(0x0800C020), 0xFFFFFFFF) # Marks the version as "md380tools" patcher.setwstring(0x080cfcac, "MD380Tools Ver.") # Change the manufacturer string. patcher.setstring(0x080f86c8, "Travis Goodspeed KK4VCZ") # Change the device name. patcher.setstring(0x080cfff4, "Patched MD380") patcher.export("patched.img")
patcher.setword(0x0800C004, 0x0809af00 + 1) # This stub calls the target RESET vector, # if it's not FFFFFFFF. patcher.sethword(0x0809af00, 0x4840) patcher.sethword(0x0809af02, 0x2100) patcher.sethword(0x0809af04, 0x3901) patcher.sethword(0x0809af06, 0x4508) patcher.sethword(0x0809af08, 0xd100) patcher.sethword(0x0809af0a, 0x483c) patcher.sethword(0x0809af0c, 0x4700) # Stores the RESET handler for our stub. patcher.setword(0x0809affc, patcher.getword(0x0800C020), 0xFFFFFFFF) # Marks the version as "md380tools" patcher.setwstring(0x080cfcac, "MD380Tools Ver.") # Change the manufacturer string. patcher.setstring(0x080f86c8, "Travis Goodspeed KK4VCZ") # Change the device name. patcher.setstring(0x080cfff4, "Patched MD380") patcher.export("patched.img")
# 0x0809cf04 0139 subs r1, 1 # 0x0809cf06 0845 cmp r0, r1 # ,=< 0x0809cf08 00d1 bne 0x809cf0c # | 0x0809cf0a 3c48 ldr r0, [pc, 0xf0] ; [0x809cffc:4]=0x80fa969 # `-> 0x0809cf0c 0047 bx r0 # [0x0809cf00]> #Stores the RESET handler for our stub. patcher.setword(0x809cffc, patcher.getword(0x0800C020), 0xFFFFFFFF); #Marks the version as "md380tools" patcher.setwstring(0x080d14d8, "MD380Tools Ver."); #Change the manufacturer string. patcher.setstring(0x080f9e4c, "Travis Goodspeed KK4VCZ"); #Change the device name. patcher.setstring(0x080d1820, "Patched MD380"); #Fixes a typo in 2.032. Unneeded in 2.034. patcher.setwstring(0x080d17e8, "Repeater Slot"); #was 'Repeatar Slot' patcher.export("patched.img");
patcher.sethword(0x0809cf06, 0x4508) patcher.sethword(0x0809cf08, 0xd100) patcher.sethword(0x0809cf0a, 0x483c) patcher.sethword(0x0809cf0c, 0x4700) # [0x0809cf00]> pd 7 # 0x0809cf00 4048 ldr r0, [pc, 0x100] ; [0x809d004:4]=-1 # 0x0809cf02 0021 movs r1, 0 # 0x0809cf04 0139 subs r1, 1 # 0x0809cf06 0845 cmp r0, r1 # ,=< 0x0809cf08 00d1 bne 0x809cf0c # | 0x0809cf0a 3c48 ldr r0, [pc, 0xf0] ; [0x809cffc:4]=0x80fa969 # `-> 0x0809cf0c 0047 bx r0 # [0x0809cf00]> #Stores the RESET handler for our stub. patcher.setword(0x809cffc, patcher.getword(0x0800C020), 0xFFFFFFFF) #Marks the version as "md380tools" patcher.setwstring(0x080d14d8, "MD380Tools Ver.") #Change the manufacturer string. patcher.setstring(0x080f9e4c, "Travis Goodspeed KK4VCZ") #Change the device name. patcher.setstring(0x080d1820, "Patched MD380") #Fixes a typo in 2.032. Unneeded in 2.034. patcher.setwstring(0x080d17e8, "Repeater Slot") #was 'Repeatar Slot' patcher.export("experiment.img")
patcher.nopout((0x8034ab8 + 0x2)) patcher.nopout((0x8034ace)) patcher.nopout((0x8034ace + 0x2)) patcher.nopout((0x8049f9a)) patcher.nopout((0x8049f9a + 0x2)) patcher.nopout((0x804a820)) patcher.nopout((0x804a820 + 0x2)) patcher.nopout((0x804aae4)) patcher.nopout((0x804aae4 + 0x2)) patcher.nopout((0x804af70)) patcher.nopout((0x804af70 + 0x2)) patcher.nopout((0x804b9fc)) patcher.nopout((0x804b9fc + 0x2)) # Marks the version as "md380tools" patcher.setwstring(0x080d0b6c, "MD380Tools 2.0") # Fix some bad grammar patcher.setwstring(0x080f9a94, "No SatFix") # Change the manufacturer string. *Never Worked...* # patcher.setstring(0x080f9588, # "Travis Goodspeed KK4VCZ"); # Change the device name. patcher.setstring(0x080d0eb4, "Patched MD-380/390G") # remove volume screen (S13.020 using different address, keep offset in mind!) # patcher.nopout((0x08020D92)) # patcher.nopout((0x08020D92 + 0x2))
patcher.nopout((0x8034a8c)) patcher.nopout((0x8034a8c + 0x2)) patcher.nopout((0x8034aa2)) patcher.nopout((0x8034aa2 + 0x2)) patcher.nopout((0x8034ab8)) patcher.nopout((0x8034ab8 + 0x2)) patcher.nopout((0x8034ace)) patcher.nopout((0x8034ace + 0x2)) patcher.nopout((0x8049f9a)) patcher.nopout((0x8049f9a + 0x2)) patcher.nopout((0x804a820)) patcher.nopout((0x804a820 + 0x2)) patcher.nopout((0x804aae4)) patcher.nopout((0x804aae4 + 0x2)) patcher.nopout((0x804af70)) patcher.nopout((0x804af70 + 0x2)) patcher.nopout((0x804b9fc)) patcher.nopout((0x804b9fc + 0x2)) #Marks the version as "md380tools" patcher.setwstring(0x080d0b6c, "MD380Tools Ver.") # #Change the manufacturer string. # patcher.setstring(0x080f86c8, # "Travis Goodspeed KK4VCZ"); # #Change the device name. # patcher.setstring(0x080cfff4, # "Patched MD380"); patcher.export("patched.img")
patcher.nopout((0x8034a8c+0x2)) patcher.nopout((0x8034aa2)) patcher.nopout((0x8034aa2+0x2)) patcher.nopout((0x8034ab8)) patcher.nopout((0x8034ab8+0x2)) patcher.nopout((0x8034ace)) patcher.nopout((0x8034ace+0x2)) patcher.nopout((0x8049f9a)) patcher.nopout((0x8049f9a+0x2)) patcher.nopout((0x804a820)) patcher.nopout((0x804a820+0x2)) patcher.nopout((0x804aae4)) patcher.nopout((0x804aae4+0x2)) patcher.nopout((0x804af70)) patcher.nopout((0x804af70+0x2)) patcher.nopout((0x804b9fc)) patcher.nopout((0x804b9fc+0x2)) #Marks the version as "md380tools" patcher.setwstring(0x080d0b6c, "MD380Tools Ver."); # #Change the manufacturer string. # patcher.setstring(0x080f86c8, # "Travis Goodspeed KK4VCZ"); # #Change the device name. # patcher.setstring(0x080cfff4, # "Patched MD380"); patcher.export("patched.img")