381 lines... I copied the code too many times.

This commit is contained in:
Ian Skinner 2023-06-08 16:04:08 -04:00 committed by GitHub
parent 1486bad7d3
commit 9648433995
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -152,206 +152,6 @@ end
set PREVIEW_MODE "Build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
if chk $[FW_FULL_STRING] 0711051004FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 5109261104FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 5108280205FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 4814060605FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 152109060543
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 161630110520
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 4514071205FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 192026010601
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 332105020620
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 191108030620
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 351506260463
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 302106091135
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 000000000000
echo "Already dumped... :(\nBetter luck next time?"
elif chk 1 1
echo "NEW FIRMWARE: Please send the firmware dump to:\n'ianskinner519@gmail.com'.\n(0:/USG-FIRM-WRITER/$[MAC]_FIRMWARE.bin)"
goto Menu
end
if ask "No new firmwares found.\nInsert new board and try again?"
goto sub_Dump_Firmware
else
goto Menu
end
###################################################################################################################################
# For flashing firmware dumps
###################################################################################################################################
@sub_Flash_Firmware
set PREVIEW_MODE "Flash firmware backup."
# Backup FW/config here
if ask "Proceed with fla###################################################################################################################################
# GodMode9 script to work with the USG-FIRM-WRITER cart for managing firmwares.
# Created: 2023/06/05
# Last updated: 2023/06/08
# Written by rmc
#
# _______
# | ===== |
# | <|
# |> |
# |_______|
# | ** **** |
# | \ / |
# | X |
# | / \ |
# | _____ |
# |_|| ||||_|
# \ \|||
# \|||/
# \||
# |||
# Why do people |||
# put ASCII art |||
# in source code? |||
# |||
# /|\
# |||||
# /|/ \\
# /// \\
# ____ _________|||___||__________ ____
# |____|___________________________|__*_|
# | |
# | _____________________ |
# | | USG-FIRM-WRITER v2 | |
# | |_____________________| |
# | |
# | |
# | O O . |
# |_____________________________________|
#
###################################################################################################################################
# Create work directory
mkdir $[GM9OUT]/USG-FIRM-WRITER
# Dump files individually, can be set as 'FW', 'ALL', or 'NONE'. The 'ALL' flag will dump the WiFi configuration as a seperate file.
set DUMP_ALL ALL
###################################################################################################################################
# Main menu for all your menuing needs.
###################################################################################################################################
@Menu
set PREVIEW_MODE "USG-FIRM-WRITER Script v0.5\ngithub.com/IanSkinner1982/USG-FIRM-WRITER\nWritten by rmc"
labelsel -o -s "Select an option." sub_*
goto Menu
###################################################################################################################################
# Dump firmware and compare to known dumps.
###################################################################################################################################
@sub_Dump_Firmware
set PREVIEW_MODE "Dumping firmware..."
if ask "Proceed with checker?\nThis will overwrite any old dumps, unless 'DUMP_ALL'\nwas set as 'NONE'."
else
goto Menu
end
find C:/*.sav SAVEPATH
# Get MAC
fget $[SAVEPATH]@3C:06 MAC
if chk $[DUMP_ALL] FW
cp -w $[SAVEPATH] 0:/USG-FIRM-WRITER/FW_$[MAC].bin
elif chk $[DUMP_ALL] ALL
cp -w $[SAVEPATH] 0:/USG-FIRM-WRITER/$[MAC]_FIRMWARE.bin
# Backup WiFi configuration and save to dummy file
fdummy 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin 1D6
cp -w 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin
rm 0:/USG-FIRM-WRITER/temp_WIFI_CONFIG.bin # Sadly need to create temp -> copy temp to permanent -> delete temp
#
# Why? Creating the permanent file directly if it already exits will cause a
# crash, and we can't tell if it already exists.
# Have to write the data in 100 byte blocks to due fget size error
fget $[SAVEPATH]@2A:64 WIFI_CONFIG # Backup data (100b)
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@00 $[WIFI_CONFIG] # Store data (100b)
fget $[SAVEPATH]@8E:64 WIFI_CONFIG # Backup data (100b)
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@64 $[WIFI_CONFIG] # Store data (100b)
fget $[SAVEPATH]@F2:64 WIFI_CONFIG # Backup data (100b)
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@C8 $[WIFI_CONFIG] # Store data (100b)
fget $[SAVEPATH]@156:64 WIFI_CONFIG # Backup data (100b)
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@12C $[WIFI_CONFIG] # Store data (100b)
fget $[SAVEPATH]@1BA:46 WIFI_CONFIG # Backup data (70b)
fset 0:/USG-FIRM-WRITER/$[MAC]_WIFI_CONFIG.bin@190 $[WIFI_CONFIG] # Store data (70b)
end # Total size is 470b (0x1D6 hex).
set PREVIEW_MODE "Getting build info..."
fget $[SAVEPATH]@18:01 FW_HH_STRING
fget $[SAVEPATH]@19:01 FW_MM_STRING
fget $[SAVEPATH]@1A:01 FW_DD_STRING
fget $[SAVEPATH]@1B:01 FW_MO_STRING
fget $[SAVEPATH]@1C:01 FW_YY_STRING
fget $[SAVEPATH]@1D:01 FW_REGION_STRING
fget $[SAVEPATH]@18:06 FW_FULL_STRING
set PREVIEW_MODE "Englishifying build info..."
if chk $[FW_REGION_STRING] FF
set FW_BUILD_REGION "NTR/Worldwide"
elif chk $[FW_REGION_STRING] 20
set FW_BUILD_REGION "USG/Worldwide"
elif chk $[FW_REGION_STRING] 35
set FW_BUILD_REGION "USG/Korea"
elif chk $[FW_REGION_STRING] 43
set FW_BUILD_REGION "NTR/China"
elif chk $[FW_REGION_STRING] 63
set FW_BUILD_REGION "USG/China"
elif chk $[FW_REGION_STRING] 01
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
elif chk $[FW_REGION_STRING] 00
set FW_BUILD_REGION "NTR/Prototype"
end
if chk $[FW_MO_STRING] 01
set FW_BUILD_MONTH "January"
elif chk $[FW_MO_STRING] 02
set FW_BUILD_MONTH "February"
elif chk $[FW_MO_STRING] 03
set FW_BUILD_MONTH "March"
elif chk $[FW_MO_STRING] 040x1D6
set FW_BUILD_MONTH "April"
elif chk $[FW_MO_STRING] 05
set FW_BUILD_MONTH "May"
elif chk $[FW_MO_STRING] 06
set FW_BUILD_MONTH "June"
elif chk $[FW_MO_STRING] 07
set FW_BUILD_MONTH "July"
elif chk $[FW_MO_STRING] 08
set FW_BUILD_MONTH "August"
elif chk $[FW_MO_STRING] 09
set FW_BUILD_MONTH "September"
elif chk $[FW_MO_STRING] 10
set FW_BUILD_MONTH "October"
elif chk $[FW_MO_STRING] 11
set FW_BUILD_MONTH "November"
elif chk $[FW_MO_STRING] 12
set FW_BUILD_MONTH "December"
elif set FW_BUILD_MONTH "UNKNOWN"
end
# Display build info
set PREVIEW_MODE "Build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
if chk $[FW_FULL_STRING] 0711051004FF
echo "Already dumped... :(\nBetter luck next time?"
elif chk $[FW_FULL_STRING] 5109261104FF
@ -573,187 +373,6 @@ echo "NOW MAKING"
goto Menu
###################################################################################################################################
# End script... but why would you want to do that?
###################################################################################################################################
@sub_Exit_Script
echo "Exiting script, have a nice day!"
sher?\nThis will overwrite the current firmware."
find C:/*.sav SAVEPATH # Find WiFi board firmware
# Display current firmware info
set PREVIEW_MODE "Getting build info..."
fget $[SAVEPATH]@18:01 FW_HH_STRING
fget $[SAVEPATH]@19:01 FW_MM_STRING
fget $[SAVEPATH]@1A:01 FW_DD_STRING
fget $[SAVEPATH]@1B:01 FW_MO_STRING
fget $[SAVEPATH]@1C:01 FW_YY_STRING
fget $[SAVEPATH]@1D:01 FW_REGION_STRING
fget $[SAVEPATH]@18:06 FW_FULL_STRING
set PREVIEW_MODE "Englishifying build info..."
if chk $[FW_REGION_STRING] FF
set FW_BUILD_REGION "NTR/Worldwide"
elif chk $[FW_REGION_STRING] 20
set FW_BUILD_REGION "USG/Worldwide"
elif chk $[FW_REGION_STRING] 35
set FW_BUILD_REGION "USG/Korea"
elif chk $[FW_REGION_STRING] 43
set FW_BUILD_REGION "NTR/China"
elif chk $[FW_REGION_STRING] 63
set FW_BUILD_REGION "USG/China"
elif chk $[FW_REGION_STRING] 01
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
elif chk $[FW_REGION_STRING] 00
set FW_BUILD_REGION "NTR/Prototype"
end
if chk $[FW_MO_STRING] 01
set FW_BUILD_MONTH "January"
elif chk $[FW_MO_STRING] 02
set FW_BUILD_MONTH "February"
elif chk $[FW_MO_STRING] 03
set FW_BUILD_MONTH "March"
elif chk $[FW_MO_STRING] 04
set FW_BUILD_MONTH "April"
elif chk $[FW_MO_STRING] 05
set FW_BUILD_MONTH "May"
elif chk $[FW_MO_STRING] 06
set FW_BUILD_MONTH "June"
elif chk $[FW_MO_STRING] 07
set FW_BUILD_MONTH "July"
elif chk $[FW_MO_STRING] 08
set FW_BUILD_MONTH "August"
elif chk $[FW_MO_STRING] 09
set FW_BUILD_MONTH "September"
elif chk $[FW_MO_STRING] 10
set FW_BUILD_MONTH "October"
elif chk $[FW_MO_STRING] 11
set FW_BUILD_MONTH "November"
elif chk $[FW_MO_STRING] 12
set FW_BUILD_MONTH "December"
elif set FW_BUILD_MONTH "UNKNOWN"
end
# Display build info
set PREVIEW_MODE "Current firmware build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
if ask "Use external dumps? If no then your own dumps from\nthis script will be used.\nNote: for external dumps, place firmware backups in:\n0:/USG-FIRM-WRITER/External/"
if filesel "Select firmware backup" 0:/USG-FIRM-WRITER/External/* FIRMWARE_FLASH
else
echo "No file selected, cancelling."
goto sub_Flash_Firmware
end
else
if filesel "Select firmware backup" 0:/USG-FIRM-WRITER/*FIRMWARE.bin FIRMWARE_FLASH
else
echo "No file selected, cancelling."
goto sub_Flash_Firmware
end
end
# Display current firmware info
set PREVIEW_MODE "Getting build info..."
fget $[FIRMWARE_FLASH]@18:01 FW_HH_STRING
fget $[FIRMWARE_FLASH]@19:01 FW_MM_STRING
fget $[FIRMWARE_FLASH]@1A:01 FW_DD_STRING
fget $[FIRMWARE_FLASH]@1B:01 FW_MO_STRING
fget $[FIRMWARE_FLASH]@1C:01 FW_YY_STRING
fget $[FIRMWARE_FLASH]@1D:01 FW_REGION_STRING
fget $[FIRMWARE_FLASH]@18:06 FW_FULL_STRING
set PREVIEW_MODE "Englishifying build info..."
if chk $[FW_REGION_STRING] FF
set FW_BUILD_REGION "NTR/Worldwide"
elif chk $[FW_REGION_STRING] 20
set FW_BUILD_REGION "USG/Worldwide"
elif chk $[FW_REGION_STRING] 35
set FW_BUILD_REGION "USG/Korea"
elif chk $[FW_REGION_STRING] 43
set FW_BUILD_REGION "NTR/China"
elif chk $[FW_REGION_STRING] 63
set FW_BUILD_REGION "USG/China"
elif chk $[FW_REGION_STRING] 01
set FW_BUILD_REGION "NIS/Worldwide (Nintendo Zone Box)"
elif chk $[FW_REGION_STRING] 00
set FW_BUILD_REGION "NTR/Prototype"
end
if chk $[FW_MO_STRING] 01
set FW_BUILD_MONTH "January"
elif chk $[FW_MO_STRING] 02
set FW_BUILD_MONTH "February"
elif chk $[FW_MO_STRING] 03
set FW_BUILD_MONTH "March"
elif chk $[FW_MO_STRING] 04
set FW_BUILD_MONTH "April"
elif chk $[FW_MO_STRING] 05
set FW_BUILD_MONTH "May"
elif chk $[FW_MO_STRING] 06
set FW_BUILD_MONTH "June"
elif chk $[FW_MO_STRING] 07
set FW_BUILD_MONTH "July"
elif chk $[FW_MO_STRING] 08
set FW_BUILD_MONTH "August"
elif chk $[FW_MO_STRING] 09
set FW_BUILD_MONTH "September"
elif chk $[FW_MO_STRING] 10
set FW_BUILD_MONTH "October"
elif chk $[FW_MO_STRING] 11
set FW_BUILD_MONTH "November"
elif chk $[FW_MO_STRING] 12
set FW_BUILD_MONTH "December"
elif set FW_BUILD_MONTH "UNKNOWN"
end
# Display build info
set PREVIEW_MODE "New firmware build info:\n\nTime: $[FW_MM_STRING]:$[FW_HH_STRING]\nDate: 20$[FW_YY_STRING], $[FW_BUILD_MONTH] $[FW_DD_STRING]\nRegion: $[FW_REGION_STRING] - $[FW_BUILD_REGION]\nHex: $[FW_HH_STRING] $[FW_MM_STRING] $[FW_DD_STRING] $[FW_MO_STRING] $[FW_YY_STRING] $[FW_REGION_STRING] (0x18-0x1D)"
if not ask "Are you sure you want to flash the new firmware?"
echo "Operation cancelled."
goto Menu
end
# Build info for user to check and confirm
# Create temporary copy of firmware and import config to that before flashing.
cp -w $[FIRMWARE_FLASH] 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin
# Have to write the data in 100 byte blocks to due fget size error
fget $[SAVEPATH]@2A:64 WIFI_CONFIG0 # Backup data
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@2A $[WIFI_CONFIG0] # Store data
fget $[SAVEPATH]@8E:64 WIFI_CONFIG1 # Backup data
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@8E $[WIFI_CONFIG1] # Store data
fget $[SAVEPATH]@F2:64 WIFI_CONFIG2 # Backup data
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@F2 $[WIFI_CONFIG2] # Store data
fget $[SAVEPATH]@156:64 WIFI_CONFIG3 # Backup data
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@156 $[WIFI_CONFIG3] # Store data
fget $[SAVEPATH]@1BA:46 WIFI_CONFIG4 # Backup data
fset 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin@1BA $[WIFI_CONFIG4] # Store data
# Add user config here later on
find C:/*.sav SAVEPATH
cp -w 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin $[SAVEPATH] # Flash wireless fixed firmware
rm 0:/USG-FIRM-WRITER/temp_FIRMWARE.bin # Delete temp edited file
echo "Firmware flashed okay!"
else
echo "Operation cancelled."
goto Menu
end
goto Menu
###################################################################################################################################
# Inject WiFi configuration from one backup to another
###################################################################################################################################
@sub_Inject_WiFi_Config
echo "NOW MAKING"
goto Menu
###################################################################################################################################
# End script... but why would you want to do that?
###################################################################################################################################