diff --git a/fast64_internal/oot/c_writer/__init__.py b/fast64_internal/oot/c_writer/__init__.py index ac12af2..d08e21b 100644 --- a/fast64_internal/oot/c_writer/__init__.py +++ b/fast64_internal/oot/c_writer/__init__.py @@ -1,8 +1,6 @@ from .oot_level_c import * -from .oot_dma_manager_c import * from .oot_scene_id_c import * from .oot_scene_table_c import * from .oot_segment_symbols_c import * -from .oot_dmadata_s import * from .oot_spec import * from .oot_scene_folder import * \ No newline at end of file diff --git a/fast64_internal/oot/c_writer/oot_dma_manager_c.py b/fast64_internal/oot/c_writer/oot_dma_manager_c.py deleted file mode 100644 index b05df92..0000000 --- a/fast64_internal/oot/c_writer/oot_dma_manager_c.py +++ /dev/null @@ -1,61 +0,0 @@ -import os, re -from ...utility import * - -def getDmaMgrFileNameEntriesBySceneName(dmaMgrFileNames, sceneName): - return [entry for entry in dmaMgrFileNames if \ - re.match(sceneName + "\_scene", entry) or re.match(sceneName + "\_room\_(\d)+", entry)] - -def readDmaMgrFileNames(exportPath): - fileData = readFile(os.path.join(exportPath, 'src/boot/z_std_dma.c')) - - matchResult = re.search('sDmaMgrFileNames\s*\[[^\]]*\]\s*=\s*{([^\}]*)\}', fileData, re.DOTALL) - if matchResult is None: - raise PluginError("z_std_dma.c does not have sDmaMgrFileNames in it.") - dmaMgrFileNames = parseDmaMgrFileNames(matchResult.group(1)) - - return dmaMgrFileNames, fileData, matchResult.start(0), matchResult.end(0) - -def parseDmaMgrFileNames(data): - dmaMgrFileNames = [] - for match in re.finditer('"([^"]*)",', data): - name = match.group(1).strip() - - dmaMgrFileNames.append(name) - - return dmaMgrFileNames - -def dmaMgrFileNamesToString(dmaMgrFileNames): - data = '' - for entry in dmaMgrFileNames: - data += '\t"' + entry + '",\n' - return data - -def writeDmaMgrFileNames(dmaMgrFileNames, fileData, start, end, exportPath): - dmaMgrFileNamesData = "sDmaMgrFileNames[" + format(len(dmaMgrFileNames), "#05x") + "] = {\n" +\ - dmaMgrFileNamesToString(dmaMgrFileNames) + '}' - newFileData = fileData[:start] + dmaMgrFileNamesData + fileData[end:] - - if newFileData != fileData: - writeFile(os.path.join(exportPath, 'src/boot/z_std_dma.c'), newFileData) - -def modifyDmaMgrFileNames(scene, exportInfo): - exportPath = exportInfo.exportPath - dmaMgrFileNames, fileData, start, end = readDmaMgrFileNames(exportPath) - entries = getDmaMgrFileNameEntriesBySceneName(dmaMgrFileNames, scene.name if scene is not None else exportInfo.name) - - if len(entries) > 0: - firstIndex = dmaMgrFileNames.index(entries[0]) - for entry in entries: - dmaMgrFileNames.remove(entry) - else: - firstIndex = len(dmaMgrFileNames) - - if scene is not None: - dmaMgrFileNames.insert(firstIndex, scene.name + "_scene") - firstIndex += 1 - - for i in range(len(scene.rooms)): - dmaMgrFileNames.insert(firstIndex, scene.name + "_room_" + str(i)) - firstIndex += 1 - - writeDmaMgrFileNames(dmaMgrFileNames, fileData, start, end, exportPath) \ No newline at end of file diff --git a/fast64_internal/oot/c_writer/oot_dmadata_s.py b/fast64_internal/oot/c_writer/oot_dmadata_s.py deleted file mode 100644 index 1a22acc..0000000 --- a/fast64_internal/oot/c_writer/oot_dmadata_s.py +++ /dev/null @@ -1,59 +0,0 @@ -import os, re -from ...utility import * - -def getDmaTableEntryEntriesBySceneName(dmaTableEntries, sceneName): - return [entry for entry in dmaTableEntries if \ - re.match(sceneName + "\_scene", entry) or re.match(sceneName + "\_room\_(\d)+", entry)] - -def readDmaTableEntries(exportPath): - fileData = readFile(os.path.join(exportPath, 'asm/dmadata.s')) - - matchResult = re.search('glabel\s*gDmaDataTable\s*(.*)\.space\s*0x100', fileData, re.DOTALL) - if matchResult is None: - raise PluginError("dmadata.s does not have gDmaDataTable in it.") - dmaTableEntries = parseDmaTableEntries(matchResult.group(1)) - - return dmaTableEntries, fileData, matchResult.start(1), matchResult.end(1) - -def parseDmaTableEntries(data): - dmaTableEntries = [] - for match in re.finditer('DMA_TABLE_ENTRY\s*([^\s]*)', data): - name = match.group(1).strip() - dmaTableEntries.append(name) - - return dmaTableEntries - -def dmaTableEntriesToString(dmaTableEntries): - data = '' - for entry in dmaTableEntries: - data += 'DMA_TABLE_ENTRY ' + entry + '\n' - return data - -def writeDmaTableEntries(dmaTableEntries, fileData, start, end, exportPath): - dmaTableEntriesData = dmaTableEntriesToString(dmaTableEntries) - newFileData = fileData[:start] + dmaTableEntriesData + fileData[end:] - - if newFileData != fileData: - writeFile(os.path.join(exportPath, 'asm/dmadata.s'), newFileData) - -def modifyDmaTableEntries(scene, exportInfo): - exportPath = exportInfo.exportPath - dmaTableEntries, fileData, start, end = readDmaTableEntries(exportPath) - entries = getDmaTableEntryEntriesBySceneName(dmaTableEntries, scene.name if scene is not None else exportInfo.name) - - if len(entries) > 0: - firstIndex = dmaTableEntries.index(entries[0]) - for entry in entries: - dmaTableEntries.remove(entry) - else: - firstIndex = len(dmaTableEntries) - - if scene is not None: - dmaTableEntries.insert(firstIndex, scene.name + "_scene") - firstIndex += 1 - - for i in range(len(scene.rooms)): - dmaTableEntries.insert(firstIndex, scene.name + "_room_" + str(i)) - firstIndex += 1 - - writeDmaTableEntries(dmaTableEntries, fileData, start, end, exportPath) \ No newline at end of file diff --git a/fast64_internal/oot/oot_level_writer.py b/fast64_internal/oot/oot_level_writer.py index 19fde84..2306a98 100644 --- a/fast64_internal/oot/oot_level_writer.py +++ b/fast64_internal/oot/oot_level_writer.py @@ -130,8 +130,6 @@ def writeOtherSceneProperties(scene, exportInfo): modifySceneTable(scene, exportInfo) modifySegmentSymbols(scene, exportInfo) modifySceneIDs(scene, exportInfo) - modifyDmaMgrFileNames(scene, exportInfo) - modifyDmaTableEntries(scene, exportInfo) modifySegmentDefinition(scene, exportInfo) modifySceneFiles(scene, exportInfo) @@ -581,8 +579,6 @@ def ootRemoveSceneC(exportInfo): modifySceneTable(None, exportInfo) modifySegmentSymbols(None, exportInfo) modifySceneIDs(None, exportInfo) - modifyDmaMgrFileNames(None, exportInfo) - modifyDmaTableEntries(None, exportInfo) modifySegmentDefinition(None, exportInfo) deleteSceneFiles(exportInfo)