mirror of https://github.com/mgba-emu/mgba.git
Python: Remove SIO API pending revamp
This commit is contained in:
parent
4b0b6b5d37
commit
4cfa9c6545
|
@ -52,72 +52,6 @@ class GBA(Core):
|
|||
super(GBA, self)._load()
|
||||
self.memory = GBAMemory(self._core, self._native.memory.romSize)
|
||||
|
||||
def attach_sio(self, link, mode=lib.GBA_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)
|
||||
|
||||
|
||||
create_callback("GBASIOPythonDriver", "init")
|
||||
create_callback("GBASIOPythonDriver", "deinit")
|
||||
create_callback("GBASIOPythonDriver", "load")
|
||||
create_callback("GBASIOPythonDriver", "unload")
|
||||
create_callback("GBASIOPythonDriver", "writeRegister")
|
||||
|
||||
|
||||
class GBASIODriver(object):
|
||||
def __init__(self):
|
||||
super(GBASIODriver, self).__init__()
|
||||
|
||||
self._handle = ffi.new_handle(self)
|
||||
self._native = ffi.gc(lib.GBASIOPythonDriverCreate(self._handle), lib.free)
|
||||
|
||||
def init(self):
|
||||
return True
|
||||
|
||||
def deinit(self):
|
||||
pass
|
||||
|
||||
def load(self):
|
||||
return True
|
||||
|
||||
def unload(self):
|
||||
return True
|
||||
|
||||
def write_register(self, address, value):
|
||||
return value
|
||||
|
||||
|
||||
class GBASIOJOYDriver(GBASIODriver):
|
||||
RESET = lib.JOY_RESET
|
||||
POLL = lib.JOY_POLL
|
||||
TRANS = lib.JOY_TRANS
|
||||
RECV = lib.JOY_RECV
|
||||
|
||||
def __init__(self):
|
||||
super(GBASIOJOYDriver, self).__init__()
|
||||
|
||||
self._native = ffi.gc(lib.GBASIOJOYPythonDriverCreate(self._handle), lib.free)
|
||||
|
||||
def send_command(self, cmd, data):
|
||||
buffer = ffi.new('uint8_t[5]')
|
||||
try:
|
||||
buffer[0] = data[0]
|
||||
buffer[1] = data[1]
|
||||
buffer[2] = data[2]
|
||||
buffer[3] = data[3]
|
||||
buffer[4] = data[4]
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
outlen = lib.GBASIOJOYSendCommand(self._native, cmd, buffer)
|
||||
if outlen > 0 and outlen <= 5:
|
||||
return bytes(buffer[0:outlen])
|
||||
return None
|
||||
|
||||
|
||||
class GBAMemory(Memory):
|
||||
def __init__(self, core, romSize=lib.SIZE_CART0):
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
/* Copyright (c) 2013-2017 Jeffrey Pfau
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
#include <mgba/flags.h>
|
||||
|
||||
#define CREATE_SHIM(PLAT, NAME, RETURN) \
|
||||
RETURN _py ## PLAT ## SIOPythonDriver ## NAME (void* driver); \
|
||||
static RETURN _py ## PLAT ## SIOPythonDriver ## NAME ## Shim(struct PLAT ## SIODriver* driver) { \
|
||||
struct PLAT ## SIODriver* py = (struct PLAT ## SIODriver*) driver; \
|
||||
return _py ## PLAT ## SIOPythonDriver ## NAME(py); \
|
||||
}
|
||||
|
||||
#define CREATE_SHIM_ARGS(PLAT, NAME, RETURN, TYPES, ...) \
|
||||
RETURN _py ## PLAT ## SIOPythonDriver ## NAME TYPES; \
|
||||
static RETURN _py ## PLAT ## SIOPythonDriver ## NAME ## Shim TYPES { \
|
||||
struct PLAT ## SIODriver* py = (struct PLAT ## SIODriver*) driver; \
|
||||
return _py ## PLAT ## SIOPythonDriver ## NAME(py, __VA_ARGS__); \
|
||||
}
|
||||
|
||||
#ifdef M_CORE_GBA
|
||||
|
||||
#include <mgba/gba/interface.h>
|
||||
|
||||
struct GBASIOPythonDriver {
|
||||
struct GBASIODriver d;
|
||||
void* pyobj;
|
||||
};
|
||||
|
||||
CREATE_SHIM(GBA, Init, bool);
|
||||
CREATE_SHIM(GBA, Deinit, void);
|
||||
CREATE_SHIM(GBA, Load, bool);
|
||||
CREATE_SHIM(GBA, Unload, bool);
|
||||
CREATE_SHIM_ARGS(GBA, WriteRegister, uint16_t, (struct GBASIODriver* driver, uint32_t address, uint16_t value), address, value);
|
||||
|
||||
struct GBASIODriver* GBASIOPythonDriverCreate(void* pyobj) {
|
||||
struct GBASIOPythonDriver* driver = malloc(sizeof(*driver));
|
||||
driver->d.init = _pyGBASIOPythonDriverInitShim;
|
||||
driver->d.deinit = _pyGBASIOPythonDriverDeinitShim;
|
||||
driver->d.load = _pyGBASIOPythonDriverLoadShim;
|
||||
driver->d.unload = _pyGBASIOPythonDriverUnloadShim;
|
||||
driver->d.writeRegister = _pyGBASIOPythonDriverWriteRegisterShim;
|
||||
|
||||
driver->pyobj = pyobj;
|
||||
return &driver->d;
|
||||
}
|
||||
|
||||
struct GBASIODriver* GBASIOJOYPythonDriverCreate(void* pyobj) {
|
||||
struct GBASIOPythonDriver* driver = malloc(sizeof(*driver));
|
||||
GBASIOJOYCreate(&driver->d);
|
||||
driver->d.init = _pyGBASIOPythonDriverInitShim;
|
||||
driver->d.deinit = _pyGBASIOPythonDriverDeinitShim;
|
||||
driver->d.load = _pyGBASIOPythonDriverLoadShim;
|
||||
driver->d.unload = _pyGBASIOPythonDriverUnloadShim;
|
||||
|
||||
driver->pyobj = pyobj;
|
||||
return &driver->d;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef M_CORE_GB
|
||||
|
||||
#include <mgba/gb/interface.h>
|
||||
|
||||
struct GBSIOPythonDriver {
|
||||
struct GBSIODriver d;
|
||||
void* pyobj;
|
||||
};
|
||||
|
||||
CREATE_SHIM(GB, Init, bool);
|
||||
CREATE_SHIM(GB, Deinit, void);
|
||||
CREATE_SHIM_ARGS(GB, WriteSB, void, (struct GBSIODriver* driver, uint8_t value), value);
|
||||
CREATE_SHIM_ARGS(GB, WriteSC, uint8_t, (struct GBSIODriver* driver, uint8_t value), value);
|
||||
|
||||
struct GBSIODriver* GBSIOPythonDriverCreate(void* pyobj) {
|
||||
struct GBSIOPythonDriver* driver = malloc(sizeof(*driver));
|
||||
driver->d.init = _pyGBSIOPythonDriverInitShim;
|
||||
driver->d.deinit = _pyGBSIOPythonDriverDeinitShim;
|
||||
driver->d.writeSB = _pyGBSIOPythonDriverWriteSBShim;
|
||||
driver->d.writeSC = _pyGBSIOPythonDriverWriteSCShim;
|
||||
|
||||
driver->pyobj = pyobj;
|
||||
return &driver->d;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,42 +0,0 @@
|
|||
/* Copyright (c) 2013-2017 Jeffrey Pfau
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
#ifdef M_CORE_GBA
|
||||
|
||||
#include <mgba/gba/interface.h>
|
||||
|
||||
struct GBASIOPythonDriver {
|
||||
struct GBASIODriver d;
|
||||
void* pyobj;
|
||||
};
|
||||
|
||||
struct GBASIODriver* GBASIOPythonDriverCreate(void* pyobj);
|
||||
struct GBASIODriver* GBASIOJOYPythonDriverCreate(void* pyobj);
|
||||
|
||||
PYEXPORT bool _pyGBASIOPythonDriverInit(void* driver);
|
||||
PYEXPORT void _pyGBASIOPythonDriverDeinit(void* driver);
|
||||
PYEXPORT bool _pyGBASIOPythonDriverLoad(void* driver);
|
||||
PYEXPORT bool _pyGBASIOPythonDriverUnload(void* driver);
|
||||
PYEXPORT uint16_t _pyGBASIOPythonDriverWriteRegister(void* driver, uint32_t address, uint16_t value);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef M_CORE_GB
|
||||
|
||||
#include <mgba/gb/interface.h>
|
||||
|
||||
struct GBSIOPythonDriver {
|
||||
struct GBSIODriver d;
|
||||
void* pyobj;
|
||||
};
|
||||
|
||||
struct GBSIODriver* GBSIOPythonDriverCreate(void* pyobj);
|
||||
|
||||
PYEXPORT bool _pyGBSIOPythonDriverInit(void* driver);
|
||||
PYEXPORT void _pyGBSIOPythonDriverDeinit(void* driver);
|
||||
PYEXPORT void _pyGBSIOPythonDriverWriteSB(void* driver, uint8_t value);
|
||||
PYEXPORT uint8_t _pyGBSIOPythonDriverWriteSC(void* driver, uint8_t value);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue