mirror of
https://github.com/zeldaret/st
synced 2026-06-17 15:16:49 -04:00
5e934a8c9b
* name func_01ffd3d8 and func_01ffd400 * name func_01ffd3b0 * match func_ov024_020cf9d4 + improve the Random struct * UnkStruct_027e0cf8_00_0C_024 45% * match PassengerManager::GetRandomIndex * UnkStruct_027e0cf8_00_0C_024 OK * UnkStruct_027e0cf8_00_0C_024: do other sections * UnkStruct_027e0cf8_08_024 55% * cleanup: remplace delete into null by the delete macro * UnkStruct_027e0cf8_08_024 OK * fix build issues * UnkStruct_ov024_020d86a0_024 OK * PlayerActor_A0_38_024 .text OK, CreditsEndingType OK * tools: create courselist.py to convert .CLB data to yaml * UnkDataStruct4_14 OK * UnkDataStruct4 17% * UnkDataStruct4 OK * MiscAdvManager OK * PassengerManager OK * fix build issues * ZeldaTrainBinary OK * mark PassengerManager as complete and adjust delinks * UnkStruct_027e0cf8_08_00_024 OK * document more of UnkStruct_027e0ce0 * savefile hotfixes * UnkStruct_027e0ce0_34_024 OK * code_020d46b4_024 OK * UnkStruct_027e0d00 & UnkStruct_027e0d00_20 OK * code_020d51dc_024 OK * fix weird formatting * UnkTrainSystem1 OK * fix jp broken match * UnkTrainSystem2 OK * UnkStruct_027e0d08_024 31% * fix build issues * UnkStruct_027e0d08 OK!!! * remove useless parenthesis * ActorUnk_ov000_020a8bb0_EC OK * move ActorUnk_ov000_020a8bb0_EC to MainGame/Actor/ * ActorUnkOBPC OK * add sjiswrap support * solve remaining gaps and fix build issues * reorganise files + counter docs * tools: remove format command execution from defaults
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
import argparse
|
|
from pathlib import Path
|
|
from get_platform import get_platform
|
|
import zipfile
|
|
import io
|
|
import requests
|
|
import stat
|
|
|
|
root_path = Path(__file__).parent.parent
|
|
|
|
|
|
platform = get_platform()
|
|
if platform is None:
|
|
exit(1)
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("tool")
|
|
parser.add_argument("tag")
|
|
parser.add_argument("--path", type=Path, required=True)
|
|
args = parser.parse_args()
|
|
|
|
|
|
def dsd_url(tag: str) -> str:
|
|
return f'https://github.com/AetiasHax/ds-decomp/releases/download/{tag}/dsd-{platform.system}-{platform.machine}{platform.exe}'
|
|
|
|
def mwccarm_url(tag: str) -> str:
|
|
return 'http://decomp.aetias.com/files/mwccarm.zip'
|
|
|
|
def wibo_url(tag: str) -> str:
|
|
return f'https://github.com/decompals/wibo/releases/download/{tag}/wibo-{platform.machine}'
|
|
|
|
def objdiff_url(tag: str) -> str:
|
|
return f'https://github.com/encounter/objdiff/releases/download/{tag}/objdiff-cli-{platform.system}-{platform.machine}{platform.exe}'
|
|
|
|
def sjiswrap_url(tag: str) -> str:
|
|
return f'https://github.com/encounter/sjiswrap/releases/download/{tag}/sjiswrap-windows-x86.exe'
|
|
|
|
TOOLS = {
|
|
"dsd": dsd_url,
|
|
"mwccarm": mwccarm_url,
|
|
"wibo": wibo_url,
|
|
"objdiff": objdiff_url,
|
|
"sjiswrap": sjiswrap_url,
|
|
}
|
|
|
|
|
|
download_url = TOOLS[args.tool](args.tag)
|
|
print(f'\nDownloading {args.tool} {args.tag}...')
|
|
response = requests.get(download_url)
|
|
if download_url.endswith('.zip'):
|
|
zip_file = zipfile.ZipFile(io.BytesIO(response.content))
|
|
zip_file.extractall(args.path)
|
|
else:
|
|
out_path: Path = args.path
|
|
with out_path.open('wb') as f:
|
|
f.write(response.content)
|
|
out_path.chmod(out_path.stat().st_mode | stat.S_IEXEC)
|