summaryrefslogtreecommitdiff
path: root/tools/splat/disassembler/disassembler_instance.py
blob: 988fe3ceeea74ba7815d80bfcd928f8e88a33e93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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