From 5d72a2be9d5e7e74bc9fc94ac0130442ae91dc86 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 21 Oct 2017 17:24:51 -0700 Subject: [PATCH] Python: Add BIOS loading, fix up reference errors --- src/platform/python/mgba/core.py | 6 +++--- src/platform/python/mgba/gb.py | 3 +++ src/platform/python/mgba/gba.py | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/platform/python/mgba/core.py b/src/platform/python/mgba/core.py index 84dc80e05..fdd04c8d7 100644 --- a/src/platform/python/mgba/core.py +++ b/src/platform/python/mgba/core.py @@ -139,9 +139,6 @@ class Core(object): raise RuntimeError("Failed to initialize core") return cls._detect(core) - def _deinit(self): - self._core.deinit(self._core) - @classmethod def _detect(cls, core): if hasattr(cls, 'PLATFORM_GBA') and core.platform(core) == cls.PLATFORM_GBA: @@ -164,6 +161,9 @@ class Core(object): def loadROM(self, vf): return bool(self._core.loadROM(self._core, vf.handle)) + def loadBIOS(self, vf, id=0): + return bool(self._core.loadBIOS(self._core, vf.handle, id)) + def loadSave(self, vf): return bool(self._core.loadSave(self._core, vf.handle)) diff --git a/src/platform/python/mgba/gb.py b/src/platform/python/mgba/gb.py index 47b9e09ff..01baeb29d 100644 --- a/src/platform/python/mgba/gb.py +++ b/src/platform/python/mgba/gb.py @@ -43,6 +43,9 @@ class GB(Core): def attachSIO(self, link): lib.GBSIOSetDriver(ffi.addressof(self._native.sio), link._native) + def __del__(self): + lib.GBSIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL) + createCallback("GBSIOPythonDriver", "init") createCallback("GBSIOPythonDriver", "deinit") createCallback("GBSIOPythonDriver", "writeSB") diff --git a/src/platform/python/mgba/gba.py b/src/platform/python/mgba/gba.py index 29f233f99..75f402284 100644 --- a/src/platform/python/mgba/gba.py +++ b/src/platform/python/mgba/gba.py @@ -33,6 +33,7 @@ class GBA(Core): self._native = ffi.cast("struct GBA*", native.board) self.sprites = GBAObjs(self) self.cpu = ARMCore(self._core.cpu) + self._sio = set() @needsReset def _initCache(self, cache): @@ -49,8 +50,13 @@ class GBA(Core): self.memory = GBAMemory(self._core, self._native.memory.romSize) def attachSIO(self, link, mode=lib.SIO_MULTI): + self._sio.add(mode) lib.GBASIOSetDriver(ffi.addressof(self._native.sio), link._native, mode) + def __del__(self): + for mode in self._sio: + lib.GBASIOSetDriver(ffi.addressof(self._native.sio), ffi.NULL, mode) + createCallback("GBASIOPythonDriver", "init") createCallback("GBASIOPythonDriver", "deinit") createCallback("GBASIOPythonDriver", "load")