[pypy-svn] r54162 - pypy/branch/gameboy-emulator/pypy/lang/gameboy
cami at codespeak.net
cami at codespeak.net
Sun Apr 27 12:42:23 CEST 2008
Author: cami
Date: Sun Apr 27 12:42:21 2008
New Revision: 54162
Modified:
pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py
pypy/branch/gameboy-emulator/pypy/lang/gameboy/joypad.py
pypy/branch/gameboy-emulator/pypy/lang/gameboy/sound.py
Log:
added driverclasses to gameboy
startes soudn cleanup
Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py (original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py Sun Apr 27 12:42:21 2008
@@ -5,49 +5,61 @@
"""
from pypy.lang.gameboy import constants
+from pyp.lang.gameboy.cpu import *
+from pyp.lang.gameboy.cartridge import *
+from pyp.lang.gameboy.joypad import *
+from pyp.lang.gameboy.ram import *
+from pyp.lang.gameboy.serial import *
+from pyp.lang.gameboy.sound import *
+from pyp.lang.gameboy.video import *
+from pyp.lang.gameboy.cartridge import *
+
class GameBoy(object):
- def __init__(self, videoDriver, soundDriver, joypadDriver, storeDriver, clockDriver):
+ def __init__(self):
+ sel.createDriver()
+ self.createGamboyPieces()
+
+ def createDrivers(self):
+ self.createDrivers()
+ self.clock = Clock()
+ self.videoDriver = VideoDriver()
+ self.soundDriver = SoundDriver()
+ self.joypadDriver = JoypadDriver()
+
+ def createGameboyPieces(self):
self.ram = RAM()
- self.cartridge = Cartridge(storeDriver, clockDriver)
+ self.cartridge = Cartridge(storeDriver, self.clock)
self.interrupt = Interrupt()
self.cpu = CPU(self.interrupt, self)
self.serial = Serial(self.interrupt)
self.timer = Timer(self.interrupt)
- self.joypad = Joypad(joypadDriver, self.interrupt)
- self.video = Video(videoDriver, self.interrupt, self)
- self.sound = Sound(soundDriver)
-
+ self.joypad = Joypad(self.joypadDriver, self.interrupt)
+ self.video = Video(self.videoDriver, self.interrupt, self)
+ self.sound = Sound(self.soundDriver)
def getCartridge(self):
return self.cartridge
-
def getFrameSkip(self):
return self.video.getFrameSkip()
-
def setFrameSkip(self, frameSkip):
self.video.setFrameSkip(frameSkip)
-
def load(self, cartridgeName):
self.cartridge.load(cartridgeName)
-
def save(self, cartridgeName):
self.cartridge.save(cartridgeName)
-
def start(self):
self.sound.start()
-
def stop(self):
self.sound.stop()
-
def reset(self):
self.ram.reset()
self.cartridge.reset()
@@ -61,26 +73,21 @@
self.cpu.setROM(self.cartridge.getROM())
self.drawLogo()
-
def cycles(self):
return min( self.video.cycles(), self.serial.cycles(),
self.timer.cycles(), self.sound.cycles(),
self.joypad.cycles())
-
def emulate(self, ticks):
while (ticks > 0):
count = self.cycles()
-
self.cpu.emulate(count)
self.serial.emulate(count)
self.timer.emulate(count)
self.video.emulate(count)
self.sound.emulate(count)
self.joypad.emulate(count)
-
ticks -= count
-
def write(self, address, data):
self.getreceiver(address).write(address, data)
Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/joypad.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/joypad.py (original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/joypad.py Sun Apr 27 12:42:21 2008
@@ -51,6 +51,8 @@
self.interrupt.raiseInterrupt(constants.JOYPAD)
+# ------------------------------------------------------------------------------
+
class JoypadDriver(object):
"""
@@ -158,7 +160,8 @@
self.b.toggleButton(pressed)
self.raised = True
-
+
+# ------------------------------------------------------------------------------
class Button(object):
Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/sound.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/sound.py (original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/sound.py Sun Apr 27 12:42:21 2008
@@ -9,28 +9,56 @@
class Channel(object):
# Audio Channel 1 int
- nr10=0
- nr11=0
- nr12=0
- nr13=0
- nr14=0
- audio1Index=0
- audio1Length=0
- audio1Frequency=0
+ nr0 = 0
+ nr1 = 0
+ nr2 = 0
+ nr3 = 0
+ nr4 = 0
+ audioIndex = 0
+ audioLength = 0
+ audioFrequency = 0
def __init__(self):
pass
+ def reset(self):
+ self.audioIndex = 0
+
+
+# ------------------------------------------------------------------------------
+
+
class SquareWaveGenerator(Channel):
pass
+
+
+# ------------------------------------------------------------------------------
+
class VoluntaryWaveGenerator(Channel):
pass
+
+# ------------------------------------------------------------------------------
+
+
class NoiseGenerator(Channel):
pass
+
+# ------------------------------------------------------------------------------
+
+class Sound(object):
+
+ def __init__(self, soundDriver):
+ self.soundDriver = soundDriver
+ self.createAudioChannels()
+ def createAudioChannels(self):
+ self.channel1 = SquareWaveGenerator(self.sampleRate)
+ self.channel2 = SquareWaveGenerator(self.sampleRate)
+ self.channel3 = VoluntaryWaveGenerator(self.sampleRate)
+ self.channel4 = NoiseGenerator(self.sampleRate)
class Sound(object):
More information about the Pypy-commit
mailing list