Python: Improve GB SIO bindings

This commit is contained in:
Vicki Pfau 2017-06-29 17:49:43 -07:00
parent 7752bfe0db
commit 6b26384c12
1 changed files with 34 additions and 9 deletions

View File

@ -65,21 +65,46 @@ class GBSIODriver(object):
return value return value
class GBSIOSimpleDriver(GBSIODriver): class GBSIOSimpleDriver(GBSIODriver):
def __init__(self): def __init__(self, period=0x100):
super(GBSIOSimpleDriver, self).__init__() super(GBSIOSimpleDriver, self).__init__()
self.tx = 0xFF self.rx = 0x00
self.rx = 0xFF self._period = period
def init(self):
self._native.p.period = self._period
return True
def writeSB(self, value): def writeSB(self, value):
self.rx = value self.rx = value
def schedule(self, period=0x100, when=0): def writeSC(self, value):
self._native.p.period = self._period
if value & 0x80:
lib.mTimingDeschedule(ffi.addressof(self._native.p.p.timing), ffi.addressof(self._native.p.event))
lib.mTimingSchedule(ffi.addressof(self._native.p.p.timing), ffi.addressof(self._native.p.event), self._native.p.period)
return value
def isReady(self):
return not self._native.p.remainingBits
@property
def tx(self):
self._native.p.pendingSB
@property
def period(self):
return self._native.p.period
@tx.setter
def tx(self, newTx):
self._native.p.pendingSB = newTx
self._native.p.remainingBits = 8 self._native.p.remainingBits = 8
self._native.p.period = period
self._native.p.pendingSB = self.tx @period.setter
self.tx = 0xFF def period(self, newPeriod):
lib.mTimingDeschedule(ffi.addressof(self._native.p.p.timing), ffi.addressof(self._native.p.event)) self._period = newPeriod
lib.mTimingSchedule(ffi.addressof(self._native.p.p.timing), ffi.addressof(self._native.p.event), when) if self._native.p:
self._native.p.period = newPeriod
class GBMemory(Memory): class GBMemory(Memory):
def __init__(self, core): def __init__(self, core):