mirror of
https://github.com/a2-4am/4cade.git
synced 2024-12-26 04:33:10 +00:00
177 lines
6.3 KiB
Python
Executable File
177 lines
6.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import fileinput
|
|
import glob
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
def replace_string_in_file(filename, old_string, new_string):
|
|
for line in fileinput.input(glob.glob(filename), inplace=True):
|
|
print(line.replace(old_string, new_string), end='')
|
|
|
|
def rename_files_in_directory(dirname, old_filename, new_filename):
|
|
for filename in glob.glob(f'{dirname}/{old_filename}*'):
|
|
subprocess.run(['git', 'mv', filename, filename.replace(old_filename, new_filename)])
|
|
|
|
def rename_one_file_in_directory(dirname, old_filename, new_filename):
|
|
for filename in glob.glob(f'{dirname}/{old_filename}'):
|
|
subprocess.run(['git', 'mv', f'{dirname}/{old_filename}', f'{dirname}/{new_filename}'])
|
|
|
|
def rename_inside_disk_image(filename, old_name, new_name):
|
|
rt = subprocess.run(['cadius', 'CATALOG', filename], stdout=subprocess.PIPE, text=True)
|
|
if not rt:
|
|
print('cadius CATALOG command failed')
|
|
if not [line for line in rt.stdout.split('\n') if line == f'/{old_name}/']:
|
|
return
|
|
rt = subprocess.run(['cadius', 'RENAMEFILE', filename, f'/{old_name}/{old_name}', new_name], stdout=subprocess.PIPE, text=True)
|
|
if not rt:
|
|
print('cadius RENAMEFILE command failed')
|
|
rt = subprocess.run(['cadius', 'RENAMEVOLUME', filename, new_name], stdout=subprocess.PIPE, text=True)
|
|
if not rt:
|
|
print('cadius RENAMEVOLUME command failed')
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
rt = subprocess.run(['cadius', 'EXTRACTFILE', filename, f'/{new_name}/LOADER.SYSTEM', tmpdir], stdout=subprocess.PIPE, text=True)
|
|
if not rt:
|
|
print('cadius EXTRACTFILE command failed')
|
|
try:
|
|
loader_file = glob.glob(tmpdir + "/LOADER.SYSTEM*").pop()
|
|
except IndexError:
|
|
return
|
|
with open(loader_file, 'rb') as f:
|
|
loader = f.read()
|
|
loader_as_list = list(loader)
|
|
while loader_as_list.pop() >= 0x10:
|
|
pass
|
|
loader_as_list.append(len(new_name))
|
|
loader_as_list.extend([ord(x) for x in new_name])
|
|
new_loader = bytes(loader_as_list)
|
|
with open(loader_file, 'wb') as f:
|
|
f.write(new_loader)
|
|
rt = subprocess.run(['cadius', 'REPLACEFILE', filename, f'/{new_name}/', loader_file], stdout=subprocess.PIPE, text=True)
|
|
if not rt:
|
|
print('cadius REPLACEFILE command failed')
|
|
|
|
def rename(old_game_name, new_game_name):
|
|
print(old_game_name)
|
|
for filename in glob.glob('res/dsk/*'):
|
|
rename_inside_disk_image(filename, old_game_name, new_game_name)
|
|
|
|
for filename in ('res/GAMES.CONF',
|
|
f'res/ATTRACT/{old_game_name}',
|
|
'res/SS/*'):
|
|
replace_string_in_file(filename, old_game_name, new_game_name)
|
|
|
|
for dirname in ('res/DEMO',):
|
|
rename_one_file_in_directory(dirname, old_game_name, new_game_name)
|
|
|
|
replace_string_in_file('res/DEMO/_FileInformation.txt', f'{old_game_name}=', f'{new_game_name}=')
|
|
|
|
for filename in ('res/ATTRACT.CONF',):
|
|
replace_string_in_file(filename, f'{old_game_name}=0', f'{new_game_name}=0')
|
|
|
|
replace_string_in_file('src/prelaunch/*', f'build/PRELAUNCH/{old_game_name}', f'build/PRELAUNCH/{new_game_name}')
|
|
|
|
for dirname in ('res/ACTION.DHGR',
|
|
'res/ACTION.DHGR.UNCOMPRESSED',
|
|
'res/ACTION.GR',
|
|
'res/ACTION.HGR',
|
|
'res/ACTION.HGR.UNCOMPRESSED',
|
|
'res/ARTWORK.SHR',
|
|
'res/ARTWORK.SHR.UNCOMPRESSED',
|
|
'res/ATTRACT',
|
|
'res/GAMEHELP',
|
|
'res/TITLE.ANIMATED',
|
|
'res/TITLE.DHGR',
|
|
'res/TITLE.HGR'):
|
|
rename_files_in_directory(dirname, old_game_name, new_game_name)
|
|
|
|
def driver():
|
|
#rename("SLICKS", "S8")
|
|
rename("CIDER.SPIDER", "AC")
|
|
rename("ARCADE.BT.CAMP", "AB")
|
|
rename("ARDY.AARDVARK", "AA")
|
|
rename("ASTEROID.BLASTR", "AS")
|
|
rename("BCS.QUEST", "BQ")
|
|
rename("BEACH.HEAD.II", "B2")
|
|
rename("BEACH.HEAD", "B1")
|
|
rename("BEYOND.WOLFEN", "BW")
|
|
rename("BUDGETRILOGY", "BT")
|
|
rename("BLOCKCHAIN", "BC")
|
|
rename("BOUNCING.KMNGAS", "BK")
|
|
rename("BRAINTEASERBLVD", "BB")
|
|
rename("BUCK.ROGERS", "BR")
|
|
rename("BURGERTIME", "BU")
|
|
rename("CANNONBALL.BLTZ", "CB")
|
|
rename("CAPTN.GOODNIGHT", "CG")
|
|
rename("SMURFEN", "CS")
|
|
rename("WOLFEN84", "CW")
|
|
rename("CAVRNS.CALLISTO", "CC")
|
|
rename("CHAMP.LODERUN", "CL")
|
|
rename("COPTS.ROBBERS", "CR")
|
|
rename("D.GENERATION", "DG")
|
|
rename("DARKSTAR.UNHNGD", "DU")
|
|
rename("DAVIDS.MAGIC", "DM")
|
|
rename("EGGS.IT", "EI")
|
|
rename("IMPOSSIBLE.MISS", "I1")
|
|
rename("IMPOSSIBLE.M.II", "I2")
|
|
rename("EAGLES.NEST", "IE")
|
|
rename("I.O.SILVER", "IO")
|
|
rename("LITTLE.COMP.PPL", "LP")
|
|
rename("LOCK.N.CHASE", "LC")
|
|
rename("MARIO.BROS", "MB")
|
|
#rename("MATTERHORN", "MS")
|
|
rename("MINGS.CHALLENGE", "MI")
|
|
rename("THUNDERHEAD", "MT")
|
|
rename("MONTEZUMA", "MZ")
|
|
rename("MR.COOL", "MC")
|
|
rename("MR.DO", "MD")
|
|
rename("MR.ROBOT", "MR")
|
|
rename("MS.PACMAN", "MP")
|
|
rename("NIGHT.MISSION", "NM")
|
|
rename("NIGHTMARE", "NI")
|
|
rename("ORILEYS.MINE", "OM")
|
|
rename("OOTW", "OW")
|
|
rename("PANDORAS.BOX", "PB")
|
|
rename("PHARAOHS.REVNG", "PR")
|
|
rename("PIEMAN", "PM")
|
|
rename("PRINCEUNP", "PP")
|
|
rename("RAID.OVR.MOSCOW", "RM")
|
|
rename("REALM.IMPOSS", "RI")
|
|
rename("SITUATION.CRTCL", "SC")
|
|
rename("SOKO.BAN", "SO")
|
|
rename("SPYS.DEMISE", "SD")
|
|
rename("SUICIDE", "SU")
|
|
rename("TECHNOCOP", "TC")
|
|
rename("THAROLIAN.TUNLS", "TU")
|
|
rename("ASTEROID.FIELD", "AF")
|
|
rename("LAST.GLADIATOR", "LG")
|
|
rename("SPY.STRIKES.BAK", "S2")
|
|
rename("TUBEWAY", "TB")
|
|
rename("UP.N.DOWN", "UD")
|
|
rename("ROGER.RABBIT", "RR")
|
|
rename("WINGS.OF.FURY", "WF")
|
|
|
|
def driver_phase_2():
|
|
rename("CEST.LA.VIE", "CV")
|
|
rename("DEFEND.JH", "DJ")
|
|
rename("ESCAPE", "ES")
|
|
rename("ITS.THE.PITS", "IP")
|
|
rename("LAMB.CHOPS", "LA")
|
|
rename("MIRV", "M.I.R.V")
|
|
rename("NEUT.TOWER", "NT")
|
|
rename("SHUTTLE.INTRCPT", "SI")
|
|
rename("CAVERNS.FREITAG", "CF")
|
|
rename("MOVIE.MONSTER", "MM")
|
|
|
|
def driver_phase_3():
|
|
rename("CP", "CAPTAIN.POWER")
|
|
|
|
def driver_phase_4():
|
|
rename("MATTERHORN", "MS")
|
|
|
|
if __name__ == '__main__':
|
|
#rename("MR.DO", "MD")
|
|
#driver()
|
|
driver_phase_4()
|