[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