summaryrefslogtreecommitdiff
path: root/tools/splat/disassembler/disassembler_instance.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/splat/disassembler/disassembler_instance.py')
-rw-r--r--tools/splat/disassembler/disassembler_instance.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/splat/disassembler/disassembler_instance.py b/tools/splat/disassembler/disassembler_instance.py
new file mode 100644
index 0000000..988fe3c
--- /dev/null
+++ b/tools/splat/disassembler/disassembler_instance.py
@@ -0,0 +1,26 @@
+from .disassembler import Disassembler
+from .spimdisasm_disassembler import SpimdisasmDisassembler
+from .null_disassembler import NullDisassembler
+
+__instance: Disassembler = NullDisassembler()
+__initialized = False
+
+
+def create_disassembler_instance(platform: str):
+ global __instance
+ global __initialized
+ if platform in ["n64", "psx", "ps2"]:
+ __instance = SpimdisasmDisassembler()
+ __initialized = True
+ return
+
+ raise NotImplementedError("No disassembler for requested platform")
+
+
+def get_instance() -> Disassembler:
+ global __instance
+ global __initialized
+ if not __initialized:
+ raise Exception("Disassembler instance not initialized")
+ return None
+ return __instance