1
0
mirror of https://github.com/blawar/ooot.git synced 2024-07-04 18:13:37 +00:00
ooot/tools/asmsplitter/asmsplitter.py
Lucas Shaw 21750d5aee
Naming some functions in libultra_code, decompiling a decent amount. (#77)
* osgetactivequeue ok

* osspdevicebusy ok

* osGetCurrFaultedThread ok

* osSpRawStartDma OK

* __osSpSetPc and osViGetCurrentFramebuffer OK

* sinf, sins, and sptask OK

* coss OK

* cosf OK

* ran format.sh

* Updated PR to use ultratypes

* osContStartQuery OK

* ran format.sh

* Updated PR to fix issues

* Made suggested changes
2020-04-18 21:40:27 -04:00

70 lines
1.8 KiB
Python

import os
class FileEntry:
def __init__(self, nFuncName):
self.funcName = nFuncName
self.lines = list()
def ReadAllLines(filename):
with open(filename) as f:
lines = f.read().splitlines()
return lines;
def WriteAllLines(filename, lines):
with open(filename, 'w') as f:
for item in lines:
f.write("%s\n" % item)
return lines;
if not os.path.exists("asm"):
os.makedirs("asm")
if not os.path.exists("c"):
os.makedirs("c")
dirs = os.listdir("asm")
for directory in dirs:
if (os.path.isdir("asm//" + directory)):
continue
print("Processing asm//" + directory)
folderName = os.path.splitext(directory)[0]
lines = ReadAllLines("asm//" + directory)
functions = list()
currentFunction = None
for line in lines:
if (line.startswith("glabel")):
if (currentFunction != None):
functions.insert(len(functions), currentFunction)
currentFunction = FileEntry(line.split("glabel ")[1])
if (currentFunction != None):
currentFunction.lines.insert(len(currentFunction.lines), line)
if (currentFunction != None):
functions.insert(len(functions), currentFunction)
if not os.path.exists("asm//" + folderName):
os.makedirs("asm//" + folderName)
for func in functions:
WriteAllLines("asm//" + folderName + "//" + func.funcName + ".s", func.lines)
cLines = list()
cLines.insert(len(cLines), "#include <ultra64.h>")
cLines.insert(len(cLines), "#include <global.h>\n")
for func in functions:
cLines.insert(len(cLines), "#pragma GLOBAL_ASM(\"asm/non_matchings/code/" + folderName + "/" + func.funcName + ".s\")\n")
WriteAllLines("c//" + folderName + ".c", cLines)
print("Done!")