[pypy-svn] r52368 - pypy/branch/gameboy-emulator/pypy/lang/gameboy

cami at codespeak.net cami at codespeak.net
Tue Mar 11 09:25:09 CET 2008


Author: cami
Date: Tue Mar 11 09:25:07 2008
New Revision: 52368

Added:
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py
Modified:
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/cartridge.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/cpu.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/interrupt.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/joypad.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/ram.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/serial.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/sound.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/timer.py
   pypy/branch/gameboy-emulator/pypy/lang/gameboy/video.py
Log:
fixed some compiler errors, ported gameboy.py


Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/cartridge.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/cartridge.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/cartridge.py	Tue Mar 11 09:25:07 2008
@@ -29,25 +29,25 @@
 TYPE_HUC1_RAM_BATTERY = 0xFF
 
 CATRIDGE_TYPE_MAPPING = {
-						TYPE_ROM_ONLY: MBC1,
-						TYPE_MBC1:  MBC1,
-						TYPE_MBC1_RAM: MBC1,
-						TYPE_MBC1_RAM_BATTERY: MBC1,
-						TYPE_MBC2: MBC2,
-						TYPE_MBC2_BATTERY: MBC2,
-						TYPE_MBC3_RTC_BATTERY: MBC3,
-						TYPE_MBC3_RTC_RAM_BATTERY: MBC3,
-						TYPE_MBC3: MBC3,
-						TYPE_MBC3_RAM: MBC3,
-						TYPE_MBC3_RAM_BATTERY: MBC3,
-						TYPE_MBC5: MBC5,
-						TYPE_MBC5_RAM: MBC5,
-						TYPE_MBC5_RAM_BATTERY: MBC5,
-						TYPE_MBC5_RUMBLE: MBC5,
-						TYPE_MBC5_RUMBLE_RAM: MBC5,
-						TYPE_MBC5_RUMBLE_RAM_BATTERY: MBC5,
-						TYPE_HUC3_RTC_RAM: HuC3,
-						TYPE_HUC1_RAM_BATTERY: HuC1
+						TYPE_ROM_ONLY: 			"MBC1",
+						TYPE_MBC1:  			"MBC1",
+						TYPE_MBC1_RAM: 			"MBC1",
+						TYPE_MBC1_RAM_BATTERY:	"MBC1",
+						TYPE_MBC2: 				"MBC2",
+						TYPE_MBC2_BATTERY: 		"MBC2",
+						TYPE_MBC3_RTC_BATTERY: 	"MBC3",
+						TYPE_MBC3_RTC_RAM_BATTERY: "MBC3",
+						TYPE_MBC3: 				"MBC3",
+						TYPE_MBC3_RAM: 			"MBC3",
+						TYPE_MBC3_RAM_BATTERY: 	"MBC3",
+						TYPE_MBC5: 				"MBC5",
+						TYPE_MBC5_RAM: 			"MBC5",
+						TYPE_MBC5_RAM_BATTERY: 	"MBC5",
+						TYPE_MBC5_RUMBLE: 		"MBC5",
+						TYPE_MBC5_RUMBLE_RAM: 	"MBC5",
+						TYPE_MBC5_RUMBLE_RAM_BATTERY: "MBC5",
+						TYPE_HUC3_RTC_RAM: 		"HuC3",
+						TYPE_HUC1_RAM_BATTERY: 	"HuC1"
 						};
 
 
@@ -220,9 +220,9 @@
  """
 class MBC1(MBC):
 	
-	rom
-	ram
-	ramEnable
+	rom = []
+	ram = []
+	ramEnable = False
 	
 	def __init__(self, rom, ram):
 		self.setRom(rom)
@@ -309,12 +309,12 @@
 class MBC2(MBC):
 	RAM_BANK_SIZE = 512;
 
-	rom
-	ram
+	rom = []
+	ram = []
 
-	romSize
-	romBank
-	ramEnable
+	romSize = 0
+	romBank  =0
+	ramEnable = False
 
 	def __init__(self, rom, ram):
 		self.setROM(rom);
@@ -322,7 +322,7 @@
 
 	def reset(self):
 		self.romBank = ROM_BANK_SIZE;
-		self.ramEnable = false;
+		self.ramEnable = False;
 
 	def read(self, address):
 		if (address <= 0x3FFF):
@@ -380,32 +380,32 @@
 
 class MBC3(MBC):
 	#ClockDriver 
-	clock;
+	clock = None;
 
-	rom;
-	ram;
+	rom = [];
+	ram = [];
 
-	romSize;
-	ramSize;
+	romSize = 0;
+	ramSize = 0;
 
-	romBank;
-	ramBank;
-
-	ramEnable;
-
-	clockRegister;
-	clockLatch;
-	clockTime;
-
-	clockSeconds
-	clockMinutes
-	clockHours
-	clockDays,
-	clockControl;
-	clockLSeconds
-	clockLMinutes
-	clockLHours
-	clockLDaysclockLControl;
+	romBank = 0;
+	ramBank = 0;
+
+	ramEnable = False;
+
+	clockRegister = 0;
+	clockLatch = 0;
+	clockTime = 0;
+
+	clockSeconds = 0
+	clockMinutes = 0
+	clockHours = 0
+	clockDays = 0
+	clockControl = None
+	clockLSeconds  = 0
+	clockLMinutes = 0
+	clockLHours = 0
+	clockLDaysclockLControl = None
 
 	def __init__(self, rom, ram, clock):
 		self.clock = clock;
@@ -571,17 +571,17 @@
 """
 
 class MBC5(MBC):
-	rom;
-	ram;
+	rom = [];
+	ram = [];
 
-	romSize;
-	ramSize;
+	romSize = 0;
+	ramSize = 0;
 
-	romBank;
-	ramBank;
+	romBank = 0;
+	ramBank = 0;
 
-	ramEnable;
-	rumble;
+	ramEnable = False;
+	rumble = False;
 
 	def __init__(self, rom, ram, rumble):
 		self.rumble = rumble;
@@ -589,12 +589,14 @@
 		self.setROM(rom);
 		self.setRAM(ram);
 
+
 	def reset():
 		self.romBank = ROM_BANK_SIZE;
 		self.ramBank = 0;
 
 		self.ramEnable = false;
 
+
 	def read(self, address):
 		if (address <= 0x3FFF):
 			# 0000-3FFF
@@ -607,6 +609,7 @@
 			return self.ram[self.ramBank + (address & 0x1FFF)] & 0xFF;
 		return 0xFF;
 
+
 	def write(self, address, data):
 		if (address <= 0x1FFF):
 			# 0000-1FFF
@@ -630,6 +633,7 @@
 				#TODO byte conversion
 				self.ram[self.ramBank + (address & 0x1FFF)] = data;
 
+
 	def setROM(self, buffer):
 		banks = buffer.length / ROM_BANK_SIZE;
 
@@ -639,6 +643,7 @@
 		self.rom = buffer;
 		self.romSize = ROM_BANK_SIZE * banks - 1;
 
+
 	def setRAM(self, buffer):
 		banks = buffer.length / RAM_BANK_SIZE;
 
@@ -664,18 +669,18 @@
 A000-BFFF	RAM Bank 0-15 (8KB)
 """
 class HuC3(MBC):
-	clock;
-	rom;
-	ram;
-	romBank;
-	ramBank;
-	romSize;
-	ramSize;
-	ramFlag;
-	ramValue;
-	clockRegister;
-	clockShift;
-	clockTime;
+	clock = None;
+	rom = [];
+	ram = [];
+	romBank = 0;
+	ramBank = 0;
+	romSize = 0;
+	ramSize = 0;
+	ramFlag = 0;
+	ramValue = 0;
+	clockRegister = 0;
+	clockShift = 0;
+	clockTime = 0;
 
 	def __init__(self, rom, ram, clock):
 		self.clock = clock;
@@ -683,6 +688,7 @@
 		self.setROM(rom);
 		self.setRAM(ram);
 
+
 	def reset():
 		self.romBank = ROM_BANK_SIZE;
 		self.ramBank = 0;
@@ -695,6 +701,7 @@
 
 		self.clockTime = self.clock.getTime();
 
+
 	def read(self, address):
 		if (address <= 0x3FFF):
 			# 0000-3FFF
@@ -713,6 +720,7 @@
 					return self.ram[self.ramBank + (address & 0x1FFF)] & 0xFF;
 		return 0xFF;
 
+
 	def write(self, address,  data):
 		if (address <= 0x1FFF):
 			# 0000-1FFF
@@ -757,6 +765,7 @@
 					#TODO byte conversion
 					self.ram[self.ramBank + (address & 0x1FFF)] = data;
 
+
 	def updateClock(self):
 		now = self.clock.getTime();
 
@@ -785,6 +794,7 @@
 
 		self.clockTime = now - elapsed;
 
+
 	def setROM(self, buffer):
 		banks = buffer.length / ROM_BANK_SIZE;
 
@@ -794,6 +804,7 @@
 		self.rom = buffer;
 		self.romSize = ROM_BANK_SIZE*banks - 1;
 
+
 	def setRAM(self, buffer):
 		banks = buffer.length / RAM_BANK_SIZE;
 

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/cpu.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/cpu.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/cpu.py	Tue Mar 11 09:25:07 2008
@@ -1,56 +1,47 @@
 """
-Mario GameBoy (TM) Emulator
+Mario GameBoy (TM) EmulatOR
 
-Central Unit Processor (Sharp LR35902 CPU)
+Central Unit ProcessOR (Sharp LR35902 CPU)
 """
 
 class CPU(object):
-
 	 # Flags
-
 	Z_FLAG = 0x80
 	N_FLAG = 0x40
 	H_FLAG = 0x20
 	C_FLAG = 0x10
 
-
 	# Registers
-	a
-	b
-	c
-	d
-	f
-	d
-	l
-	sp;
-	pc;
-
+	a = 0
+	b = 0
+	c = 0
+	d = 0
+	f = 0
+	d = 0
+	l = 0
+	sp = 0;
+	pc = 0;
 
 	# Interrupt Flags
-
-	ime;
-	halted;
-	cycles;
-
+	ime = False;
+	halted  = False;
+	cycles  = 0;
 
 	# Interrupt Controller
-
 	#Interrupt 
-	interrupt;
-
+	interrupt = None;
 
-	 # Memory Access
-	#Memory
-	memory;
+	 # memory Access
+	#memory
+	memory = None;
 
 
 	# ROM Access
-	rom;
+	rom = [];
 
 	def __init__(self, interrupt, memory):
 		self.interrupt = interrupt;
 		self.memory = memory;
-
 		self.reset();
 
 
@@ -88,7 +79,6 @@
 		return val
 			
 
-
 	def setROM(self, banks):
 		self.rom = banks;
 
@@ -120,9 +110,7 @@
 			self.execute();
 
 
-
 	 # Interrupts
-
 	def interrupt():
 		if (self.halted):
 			if (self.interrupt.isPending()):
@@ -131,7 +119,6 @@
 				self.cycles -= 4;
 			elif (self.cycles > 0):
 				self.cycles = 0;
-
 		if (self.ime):
 			if (self.interrupt.isPending()):
 				if (self.interrupt.isPending(Interrupt.VBLANK)):
@@ -151,16 +138,12 @@
 					self.interrupt.lower(Interrupt.JOYPAD);
 			
 
-
 	def interrupt(self, address):
 		self.ime = false;
-
 		self.call(address);
 
 
-
 	 # Execution
-
 	def execute():
 		self.execute(self.fetch());
 
@@ -400,34 +383,34 @@
 			0x9F:self.sbc_A_A(),
 	
 			# AND A,r
-			0xA0:self.and_A_B(),
-			0xA1:self.and_A_C(),
-			0xA2:self.and_A_D(),
-			0xA3:self.and_A_E(),
-			0xA4:self.and_A_H(),
-			0xA5:self.and_A_L(),
-			0xA6:self.and_A_HLi(),
-			0xA7:self.and_A_A(),
+			0xA0:self.AND_A_B(),
+			0xA1:self.AND_A_C(),
+			0xA2:self.AND_A_D(),
+			0xA3:self.AND_A_E(),
+			0xA4:self.AND_A_H(),
+			0xA5:self.AND_A_L(),
+			0xA6:self.AND_A_HLi(),
+			0xA7:self.AND_A_A(),
 	
 			# XOR A,r
-			0xA8:self.xor_A_B(),
-			0xA9:self.xor_A_C(),
-			0xAA:self.xor_A_D(),
-			0xAB:self.xor_A_E(),
-			0xAC:self.xor_A_H(),
-			0xAD:self.xor_A_L(),
-			0xAE:self.xor_A_HLi(),
-			0xAF:self.xor_A_A(),
+			0xA8:self.xOR_A_B(),
+			0xA9:self.xOR_A_C(),
+			0xAA:self.xOR_A_D(),
+			0xAB:self.xOR_A_E(),
+			0xAC:self.xOR_A_H(),
+			0xAD:self.xOR_A_L(),
+			0xAE:self.xOR_A_HLi(),
+			0xAF:self.xOR_A_A(),
 	
 			# OR A,r
-			0xB0:self.or_A_B(),
-			0xB1:self.or_A_C(),
-			0xB2:self.or_A_D(),
-			0xB3:self.or_A_E(),
-			0xB4:self.or_A_H(),
-			0xB5:self.or_A_L(),
-			0xB6:self.or_A_HLi(),
-			0xB7:self.or_A_A(),
+			0xB0:self.OR_A_B(),
+			0xB1:self.OR_A_C(),
+			0xB2:self.OR_A_D(),
+			0xB3:self.OR_A_E(),
+			0xB4:self.OR_A_H(),
+			0xB5:self.OR_A_L(),
+			0xB6:self.OR_A_HLi(),
+			0xB7:self.OR_A_A(),
 	
 			# CP A,r
 			0xB8:self.cp_A_B(),
@@ -532,13 +515,13 @@
 		0xDE:self.sbc_A_nn(),
 
 		# AND A,nn
-		0xE6:self.and_A_nn(),
+		0xE6:self.AND_A_nn(),
 
 		# XOR A,nn
-		0xEE:self.xor_A_nn(),
+		0xEE:self.xOR_A_nn(),
 
 		# OR A,nn
-		0xF6:self.or_A_nn(),
+		0xF6:self.OR_A_nn(),
 
 		# CP A,nn
 		0xFE:self.cp_A_nn(),
@@ -554,7 +537,6 @@
 		0xFF:self.rst(0x38)
 		}[opcode]()
 	
-
 		def fetchExecute(self):
 			result = {
 			# RLC r
@@ -879,8 +861,7 @@
 			}[self.fetch()]()
 
 
-	 # Memory Access
-
+	 # memory Access
 	def read(self, address):
 		return self.memory.read(address);
 
@@ -897,9 +878,7 @@
 		self.write((hi << 8) + lo, data);
 
 
-
 	 # Fetching
-
 	def fetch():
 		if (self.pc <= 0x3FFF):
 			self.pc+=1
@@ -910,9 +889,7 @@
 		return data;
 
 
-
 	 # Stack
-
 	def push(self, data):
 		self.sp = (self.sp - 1) & 0xFFFF;
 		self.memory.write(self.sp, data);
@@ -930,9 +907,7 @@
 		self.pc = address;
 
 
-
 	 # ALU
-
 	def add(self, data):
 		s = (self.a + data) & 0xFF;
 		self.f = 0
@@ -982,21 +957,21 @@
 		self.a = s & 0xFF;
 
 
-	def and(self, data):
+	def AND(self, data):
 		self.a &= data;
 		self.f = 0
 		if self.a == 0:
 			self.f = Z_FLAG
 
 
-	def xor(self, data):
+	def xOR(self, data):
 		self.a ^= data;
 		self.f = 0 		
 		if self.a == 0:
 			self.f = Z_FLAG
 
 
-	def or(self, data):
+	def cpuOR(self, data):
 		self.a |= data;
 		self.f = 0
 		if self.a == 0: 	
@@ -1134,9 +1109,7 @@
 		self.h = s >> 8;
 
 
-
 	 # LD r,r
-
 	def ld_B_B():
 		# b = b;
 		self.cycles -= 1;
@@ -1382,9 +1355,7 @@
 		self.cycles -= 1;
 
 
-
 	 # LD r,nn
-
 	def ld_B_nn():
 		self.b = self.fetch();
 		self.cycles -= 2;
@@ -1420,9 +1391,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LD r,(HL)
-
 	def ld_B_HLi():
 		self.b = self.read(self.h, self.l);
 		self.cycles -= 2;
@@ -1458,9 +1427,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LD (HL),r
-
 	def ld_HLi_B():
 		self.write(self.h, self.l, self.b);
 		self.cycles -= 2;
@@ -1496,17 +1463,13 @@
 		self.cycles -= 2;
 
 
-
 	 # LD (HL),nn
-
 	def ld_HLi_nn():
 		self.write(self.h, self.l, self.fetch());
 		self.cycles -= 3;
 
 
-
 	 # LD A,(rr)
-
 	def ld_A_BCi():
 		self.a = self.read(self.b, self.c);
 		self.cycles -= 2;
@@ -1517,9 +1480,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LD A,(nnnn)
-
 	def ld_A_mem():
 		lo = self.fetch();
 		hi = self.fetch();
@@ -1527,9 +1488,7 @@
 		self.cycles -= 4;
 
 
-
 	 # LD (rr),A
-
 	def ld_BCi_A():
 		self.write(self.b, self.c, self.a);
 		self.cycles -= 2;
@@ -1540,9 +1499,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LD (nnnn),SP
-
 	def load_mem_SP():
 		lo = self.fetch();
 		hi = self.fetch();
@@ -1554,9 +1511,7 @@
 		self.cycles -= 5;
 
 
-
 	 # LD (nnnn),A
-
 	def ld_mem_A():
 		lo = self.fetch();
 		hi = self.fetch();
@@ -1564,41 +1519,31 @@
 		self.cycles -= 4;
 
 
-
 	 # LDH A,(nn)
-
 	def ldh_A_mem():
 		self.a = self.read(0xFF00 + self.fetch());
 		self.cycles -= 3;
 
 
-
 	 # LDH (nn),A
-
 	def ldh_mem_A():
 		self.write(0xFF00 + self.fetch(), self.a);
 		self.cycles -= 3;
 
 
-
 	 # LDH A,(C)
-
 	def ldh_A_Ci():
 		self.a = self.read(0xFF00 + self.c);
 		self.cycles -= 2;
 
 
-
 	 # LDH (C),A
-
 	def ldh_Ci_A():
 		self.write(0xFF00 + self.c, self.a);
 		self.cycles -= 2;
 
 
-
 	 # LDI (HL),A
-
 	def ldi_HLi_A():
 		self.write(self.h, self.l, self.a);
 		self.l = (self.l + 1) & 0xFF;
@@ -1607,9 +1552,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LDI A,(HL)
-
 	def ldi_A_HLi():
 		self.a = self.read(self.h, self.l);
 		self.l = (self.l + 1) & 0xFF;
@@ -1618,9 +1561,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LDD (HL),A
-
 	def ldd_HLi_A():
 		self.write(self.h, self.l, self.a);
 		self.l = (self.l - 1) & 0xFF;
@@ -1629,9 +1570,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LDD A,(HL)
-
 	def ldd_A_HLi():
 		self.a = self.read(self.h, self.l);
 		self.l = (self.l - 1) & 0xFF;
@@ -1640,9 +1579,7 @@
 		self.cycles -= 2;
 
 
-
 	 # LD rr,nnnn
-
 	def ld_BC_nnnn():
 		self.c = self.fetch();
 		self.b = self.fetch();
@@ -1668,17 +1605,13 @@
 		self.cycles -= 3;
 
 
-
 	 # LD SP,HL
-
 	def ld_SP_HL():
 		self.sp = (self.h << 8) + self.l;
 		self.cycles -= 2;
 
 
-
 	 # PUSH rr
-
 	def push_BC():
 		self.push(self.b);
 		self.push(self.c);
@@ -1703,9 +1636,7 @@
 		self.cycles -= 4;
 
 
-
 	 # POP rr
-
 	def pop_BC():
 		self.c = self.pop();
 		self.b = self.pop();
@@ -1730,9 +1661,7 @@
 		self.cycles -= 3;
 
 
-
 	 # ADD A,r
-
 	def add_A_B():
 		self.add(self.b);
 		self.cycles -= 1;
@@ -1768,25 +1697,19 @@
 		self.cycles -= 1;
 
 
-
 	 # ADD A,nn
-
 	def add_A_nn():
 		self.add(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # ADD A,(HL)
-
 	def add_A_HLi():
 		self.add(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # ADC A,r
-
 	def adc_A_B():
 		self.adc(self.b);
 		self.cycles -= 1;
@@ -1822,25 +1745,19 @@
 		self.cycles -= 1;
 
 
-
 	 # ADC A,nn
-
 	def adc_A_nn():
 		self.adc(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # ADC A,(HL)
-
 	def adc_A_HLi():
 		self.adc(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # SUB A,r
-
 	def sub_A_B():
 		self.sub(self.b);
 		self.cycles -= 1;
@@ -1876,25 +1793,19 @@
 		self.cycles -= 1;
 
 
-
 	 # SUB A,nn
-
 	def sub_A_nn():
 		self.sub(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # SUB A,(HL)
-
 	def sub_A_HLi():
 		self.sub(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # SBC A,r
-
 	def sbc_A_B():
 		self.sbc(self.b);
 		self.cycles -= 1;
@@ -1930,187 +1841,163 @@
 		self.cycles -= 1;
 
 
-
 	 # SBC A,nn
-
 	def sbc_A_nn():
 		self.sbc(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # SBC A,(HL)
-
 	def sbc_A_HLi():
 		self.sbc(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # AND A,r
-
-	def and_A_B():
-		self.and(self.b);
+	def AND_A_B():
+		self.AND(self.b);
 		self.cycles -= 1;
 
 
-	def and_A_C():
-		self.and(self.c);
+	def AND_A_C():
+		self.AND(self.c);
 		self.cycles -= 1;
 
 
-	def and_A_D():
-		self.and(self.d);
+	def AND_A_D():
+		self.AND(self.d);
 		self.cycles -= 1;
 
 
-	def and_A_E():
-		self.and(self.e);
+	def AND_A_E():
+		self.AND(self.e);
 		self.cycles -= 1;
 
 
-	def and_A_H():
-		self.and(self.h);
+	def AND_A_H():
+		self.AND(self.h);
 		self.cycles -= 1;
 
 
-	def and_A_L():
-		self.and(self.l);
+	def AND_A_L():
+		self.AND(self.l);
 		self.cycles -= 1;
 
 
-	def and_A_A():
-		self.and(self.a);
+	def AND_A_A():
+		self.AND(self.a);
 		self.cycles -= 1;
 
 
-
 	 # AND A,nn
-
-	def and_A_nn():
-		self.and(self.fetch());
+	def AND_A_nn():
+		self.AND(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # AND A,(HL)
-
-	def and_A_HLi():
-		self.and(self.read(self.h, self.l));
+	def AND_A_HLi():
+		self.AND(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # XOR A,r
-
-	def xor_A_B():
-		self.xor(self.b);
+	def xOR_A_B():
+		self.xOR(self.b);
 		self.cycles -= 1;
 
 
-	def xor_A_C():
-		self.xor(self.c);
+	def xOR_A_C():
+		self.xOR(self.c);
 		self.cycles -= 1;
 
 
-	def xor_A_D():
-		self.xor(self.d);
+	def xOR_A_D():
+		self.xOR(self.d);
 		self.cycles -= 1;
 
 
-	def xor_A_E():
-		self.xor(self.e);
+	def xOR_A_E():
+		self.xOR(self.e);
 		self.cycles -= 1;
 
 
-	def xor_A_H():
-		self.xor(self.h);
+	def xOR_A_H():
+		self.xOR(self.h);
 		self.cycles -= 1;
 
 
-	def xor_A_L():
-		self.xor(self.l);
+	def xOR_A_L():
+		self.xOR(self.l);
 		self.cycles -= 1;
 
 
-	def xor_A_A():
-		self.xor(self.a);
+	def xOR_A_A():
+		self.xOR(self.a);
 		self.cycles -= 1;
 
 
-
 	 # XOR A,nn
-
-	def xor_A_nn():
-		self.xor(self.fetch());
+	def xOR_A_nn():
+		self.xOR(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # XOR A,(HL)
-
-	def xor_A_HLi():
-		self.xor(self.read(self.h, self.l));
+	def xOR_A_HLi():
+		self.xOR(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # OR A,r
-
-	def or_A_B():
-		self.or(self.b);
+	def OR_A_B():
+		self.OR(self.b);
 		self.cycles -= 1;
 
 
-	def or_A_C():
-		self.or(self.c);
+	def OR_A_C():
+		self.OR(self.c);
 		self.cycles -= 1;
 
 
-	def or_A_D():
-		self.or(self.d);
+	def OR_A_D():
+		self.OR(self.d);
 		self.cycles -= 1;
 
 
-	def or_A_E():
-		self.or(self.e);
+	def OR_A_E():
+		self.OR(self.e);
 		self.cycles -= 1;
 
 
-	def or_A_H():
-		self.or(self.h);
+	def OR_A_H():
+		self.OR(self.h);
 		self.cycles -= 1;
 
 
-	def or_A_L():
-		self.or(self.l);
+	def OR_A_L():
+		self.OR(self.l);
 		self.cycles -= 1;
 
 
-	def or_A_A():
-		self.or(self.a);
+	def OR_A_A():
+		self.OR(self.a);
 		self.cycles -= 1;
 
 
-
 	 # OR A,nn
-
-	def or_A_nn():
-		self.or(self.fetch());
+	def OR_A_nn():
+		self.OR(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # OR A,(HL)
-
-	def or_A_HLi():
-		self.or(self.read(self.h, self.l));
+	def OR_A_HLi():
+		self.OR(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # CP A,r
-
 	def cp_A_B():
 		self.cp(self.b);
 		self.cycles -= 1;
@@ -2146,25 +2033,19 @@
 		self.cycles -= 1;
 
 
-
 	 # CP A,nn
-
 	def cp_A_nn():
 		self.cp(self.fetch());
 		self.cycles -= 2;
 
 
-
 	 # CP A,(HL)
-
 	def cp_A_HLi():
 		self.cp(self.read(self.h, self.l));
 		self.cycles -= 2;
 
 
-
 	 # INC r
-
 	def inc_B():
 		self.b = self.inc(self.b);
 		self.cycles -= 1;
@@ -2200,17 +2081,13 @@
 		self.cycles -= 1;
 
 
-
 	 # INC (HL)
-
 	def inc_HLi():
 		self.write(self.h, self.l, self.inc(self.read(self.h, self.l)));
 		self.cycles -= 3;
 
 
-
 	 # DEC r
-
 	def dec_B():
 		self.b = self.dec(self.b);
 		self.cycles -= 1;
@@ -2246,37 +2123,27 @@
 		self.cycles -= 1;
 
 
-
 	 # DEC (HL)
-
 	def dec_HLi():
 		self.write(self.h, self.l, self.dec(self.read(self.h, self.l)));
 		self.cycles -= 3;
 
 
-
 	 # CPL
-
 	def cpl():
 		self.a ^= 0xFF;
 		self.f |= N_FLAG + H_FLAG;
 
 
-
 	 # DAA
-
 	def daa():
 		delta = 0;
-
 		if ((self.f & H_FLAG) != 0 or (self.a & 0x0F) > 0x09):
 			delta |= 0x06;
-
 		if ((self.f & C_FLAG) != 0 or (self.a & 0xF0) > 0x90):
 			delta |= 0x60;
-
 		if ((self.a & 0xF0) > 0x80 and (self.a & 0x0F) > 0x09):
 			delta |= 0x60;
-
 		if ((self.f & N_FLAG) == 0):
 			self.a = (self.a + delta) & 0xFF;
 		else:
@@ -2291,9 +2158,7 @@
 		self.cycles -= 1;
 
 
-
 	 # ADD HL,rr
-
 	def add_HL_BC():
 		self.add(self.b, self.c);
 		self.cycles -= 2;
@@ -2314,9 +2179,7 @@
 		self.cycles -= 2;
 
 
-
 	 # INC rr
-
 	def inc_BC():
 		self.c = (self.c + 1) & 0xFF;
 		if (self.c == 0x00):
@@ -2343,9 +2206,7 @@
 		self.cycles -= 2;
 
 
-
 	 # DEC rr
-
 	def dec_BC():
 		self.c = (self.c - 1) & 0xFF;
 		if (self.c == 0xFF):
@@ -2372,27 +2233,21 @@
 		self.cycles -= 2;
 
 
-
 	 # ADD SP,nn
-
 	def add_SP_nn():
 		# TODO convert to byte
 		offset = self.fetch();
-
 		s = (self.sp + offset) & 0xFFFF;
 		self.updateFRegisterAfterSP_nn(offset, s)
 
-
 		self.sp = s;
 		self.cycles -= 4;
 
 
 
 	 # LD HL,SP+nn
-
 	def ld_HP_SP_nn():
 		#TODO convert to byte
-
 		s = (self.sp + offset) & 0xFFFF;
 		self.updateFRegisterAfterSP_nn(offset, s)
 
@@ -2415,8 +2270,8 @@
 				self.f += C_FLAG
 			if (s & 0x0F00) > (self.sp & 0x0F00):
 				self.f += H_FLAG
-	 # RLCA
 
+	 # RLCA
 	def rlca():
 		self.f = 0
 		if (self.a & 0x80) != 0:
@@ -2425,9 +2280,7 @@
 		self.cycles -= 1;
 
 
-
 	 # RLA
-
 	def rla():
 		s = ((self.a & 0x7F) << 1)
 		if (self.f & C_FLAG) != 0:
@@ -2439,9 +2292,7 @@
 		self.cycles -= 1;
 
 
-
 	 # RRCA
-
 	def rrca():
 		self.f = 0
 		if (self.a & 0x01) != 0:
@@ -2450,9 +2301,7 @@
 		self.cycles -= 1;
 
 
-
 	 # RRA
-
 	def rra():
 		s = ((self.a >> 1) & 0x7F)
 		if (self.f & C_FLAG) != 0:
@@ -2464,9 +2313,7 @@
 		self.cycles -= 1;
 
 
-
 	 # RLC r
-
 	def rlc_B():
 		self.b = self.rlc(self.b);
 		self.cycles -= 2;
@@ -2502,17 +2349,13 @@
 		self.cycles -= 2;
 
 
-
 	 # RLC (HL)
-
 	def rlc_HLi():
 		self.write(self.h, self.l, self.rlc(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # RL r
-
 	def rl_B():
 		self.b = self.rl(self.b);
 		self.cycles -= 2;
@@ -2548,17 +2391,13 @@
 		self.cycles -= 2;
 
 
-
 	 # RL (HL)
-
 	def rl_HLi():
 		self.write(self.h, self.l, self.rl(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # RRC r
-
 	def rrc_B():
 		self.b = self.rrc(self.b);
 		self.cycles -= 2;
@@ -2594,17 +2433,13 @@
 		self.cycles -= 2;
 
 
-
 	 # RRC (HL)
-
 	def rrc_HLi():
 		self.write(self.h, self.l, self.rrc(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # RR r
-
 	def rr_B():
 		self.b = self.rr(self.b);
 		self.cycles -= 2;
@@ -2640,17 +2475,13 @@
 		self.cycles -= 2;
 
 
-
 	 # RR (HL)
-
 	def rr_HLi():
 		self.write(self.h, self.l, self.rr(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # SLA r
-
 	def sla_B():
 		self.b = self.sla(self.b);
 		self.cycles -= 2;
@@ -2686,17 +2517,13 @@
 		self.cycles -= 2;
 
 
-
 	 # SLA (HL)
-
 	def sla_HLi():
 		self.write(self.h, self.l, self.sla(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # SWAP r
-
 	def swap_B():
 		self.b = self.swap(self.b);
 		self.cycles -= 2;
@@ -2732,17 +2559,13 @@
 		self.cycles -= 2;
 
 
-
 	 # SWAP (HL)
-
 	def swap_HLi():
 		self.write(self.h, self.l, self.swap(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # SRA r
-
 	def sra_B():
 		self.b = self.sra(self.b);
 		self.cycles -= 2;
@@ -2778,17 +2601,13 @@
 		self.cycles -= 2;
 
 
-
 	 # SRA (HL)
-
 	def sra_HLi():
 		self.write(self.h, self.l, self.sra(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # SRL r
-
 	def srl_B():
 		self.b = self.srl(self.b);
 		self.cycles -= 2;
@@ -2824,17 +2643,13 @@
 		self.cycles -= 2;
 
 
-
 	 # SRL (HL)
-
 	def srl_HLi():
 		self.write(self.h, self.l, self.srl(self.read(self.h, self.l)));
 		self.cycles -= 4;
 
 
-
 	 # BIT n,r
-
 	def bit_B(self, n):
 		self.bit(n, self.b);
 		self.cycles -= 2;
@@ -2870,17 +2685,13 @@
 		self.cycles -= 2;
 
 
-
 	 # BIT n,(HL)
-
 	def bit_HLi(self, n):
 		self.bit(n, self.read(self.h, self.l));
 		self.cycles -= 3;
 
 
-
 	 # SET n,r
-
 	def set_B(self, n):
 		self.b |= 1 << n;
 		self.cycles -= 2;
@@ -2916,17 +2727,13 @@
 		self.cycles -= 2;
 
 
-
 	 # SET n,(HL)
-
 	def set_HLi(self, n):
 		self.write(self.h, self.l, self.read(self.h, self.l) | (1 << n));
 		self.cycles -= 4;
 
 
-
 	 # RES n,r
-
 	def res_B(self, n):
 		self.b &= ~(1 << n);
 		self.cycles -= 2;
@@ -2962,17 +2769,13 @@
 		self.cycles -= 2;
 
 
-
 	 # RES n,(HL)
-
 	def res_HLi(self, n):
 		self.write(self.h, self.l, self.read(self.h, self.l) & ~(1 << n));
 		self.cycles -= 4;
 
 
-
 	 # CCF/SCF
-
 	def ccf():
 		self.f = (self.f & (Z_FLAG | C_FLAG)) ^ C_FLAG;
 
@@ -2981,16 +2784,12 @@
 		self.f = (self.f & Z_FLAG) | C_FLAG;
 
 
-
 	 # NOP
-
 	def nop():
 		self.cycles -= 1;
 
 
-
 	 # JP nnnn
-
 	def jp_nnnn():
 		lo = self.fetch();
 		hi = self.fetch();
@@ -2998,17 +2797,13 @@
 		self.cycles -= 4;
 
 
-
 	 # LD PC,HL
-
 	def ld_PC_HL():
 		self.pc = (self.h << 8) + self.l;
 		self.cycles -= 1;
 
 
-
 	 # JP cc,nnnn
-
 	def jp_cc_nnnn(cc):
 		if (cc):
 			lo = self.fetch();
@@ -3020,7 +2815,6 @@
 			self.cycles -= 3;
 	
 
-
 	def jp_NZ_nnnn():
 		self.jp_cc_nnnn((self.f & Z_FLAG) == 0);
 
@@ -3037,9 +2831,7 @@
 		self.jp_cc_nnnn((self.f & C_FLAG) != 0);
 
 
-
 	 # JR +nn
-
 	def jr_nn():
 		# TODO convert to byte
 		offset = self.fetch();
@@ -3047,9 +2839,7 @@
 		self.cycles -= 3;
 
 
-
 	 # JR cc,+nn
-
 	def jr_cc_nn(cc):
 		if (cc):
 			# TODO convert to byte
@@ -3062,7 +2852,6 @@
 			self.cycles -= 2;
 	
 
-
 	def jr_NZ_nn():
 		self.jr_cc_nn((self.f & Z_FLAG) == 0);
 
@@ -3079,9 +2868,7 @@
 		self.jr_cc_nn((self.f & C_FLAG) != 0);
 
 
-
 	 # CALL nnnn
-
 	def call_nnnn():
 		lo = self.fetch();
 		hi = self.fetch();
@@ -3089,9 +2876,7 @@
 		self.cycles -= 6;
 
 
-
 	 # CALL cc,nnnn
-
 	def call_cc_nnnn(cc):
 		if (cc):
 			lo = self.fetch();
@@ -3120,9 +2905,7 @@
 		self.call_cc_nnnn((self.f & C_FLAG) != 0);
 
 
-
 	 # RET
-
 	def ret():
 		lo = self.pop();
 		hi = self.pop();
@@ -3130,9 +2913,7 @@
 		self.cycles -= 4;
 
 
-
 	 # RET cc
-
 	def ret_cc(cc):
 		if (cc):
 			lo = self.pop();
@@ -3159,36 +2940,27 @@
 		self.ret_cc((self.f & C_FLAG) != 0);
 
 
-
 	 # RST nn
-
 	def rst(self, nn):
 		self.call(nn);
 		self.cycles -= 4;
 
 
-
 	 # RETI
-
 	def reti():
 		lo = self.pop();
 		hi = self.pop();
 		self.pc = (hi << 8) + lo;
-
 		# enable interrupts
 		self.ime = true;
 		self.cycles -= 4;
-
 		# execute next instruction
 		self.execute();
-
 		# check pending interrupts
 		self.interrupt();
 
 
-
 	 # DI/EI
-
 	def di():
 		# disable interrupts
 		self.ime = false;
@@ -3199,24 +2971,18 @@
 		# enable interrupts
 		self.ime = true;
 		self.cycles -= 1;
-
 		# execute next instruction
 		self.execute();
-
 		# check pending interrupts
 		self.interrupt();
 
 
-
 	 # HALT/STOP
-
 	def halt():
 		self.halted = true;
-
 		# emulate bug when interrupts are pending
 		if (not self.ime and self.interrupt.isPending()):
 			self.execute(self.memory.read(self.pc));
-
 		# check pending interrupts
 		self.interrupt();
 

Added: pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py
==============================================================================
--- (empty file)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/gameboy.py	Tue Mar 11 09:25:07 2008
@@ -0,0 +1,216 @@
+"""
+Mario GameBoy (TM) Emulator
+ 
+Gameboy Scheduler and Memory Mapper
+
+"""
+
+class GameBoy(object):
+
+	 # Registered Symbol, convert to byte
+	REGISTERED_BITMAP = [0x3C, 0x42, 0xB9, 0xA5, 0xB9, 0xA5, 0x42, 0x3C ];
+
+	# RAM
+	ram = None;
+	cartridge = None;
+	interrupt = None;
+	cpu = None;
+	serial = None;
+	timer = None;
+	joypad = None;
+	video = None;
+	sound = None;
+
+	def __init__(self, videoDriver, soundDriver, joypadDriver, storeDriver, clockDriver):
+		self.ram = RAM();
+		self.cartridge = Cartridge(storeDriver, clockDriver);
+		self.interrupt = Interrupt();
+		self.cpu = CPU(self.interrupt, this);
+		self.serial = Serial(self.interrupt);
+		self.timer = Timer(self.interrupt);
+		self.joypad = Joypad(joypadDriver, self.interrupt);
+		self.video = Video(videoDriver, self.interrupt, this);
+		self.sound = Sound(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();
+		self.interrupt.reset();
+		self.cpu.reset();
+		self.serial.reset();
+		self.timer.reset();
+		self.joypad.reset();
+		self.video.reset();
+		self.sound.reset();
+		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):
+		if (address <= 0x7FFF):
+			# 0000-7FFF ROM Bank
+			self.cartridge.write(address, data);
+		elif (address <= 0x9FFF):
+			# 8000-9FFF Video RAM
+			self.video.write(address, data);
+		elif (address <= 0xBFFF):
+			# A000-BFFF External RAM
+			self.cartridge.write(address, data);
+		elif (address <= 0xFDFF):
+			# C000-FDFF Work RAM
+			self.ram.write(address, data);
+		elif (address <= 0xFEFF):
+			# FE00-FEFF OAM
+			self.video.write(address, data);
+		elif (address == 0xFF00):
+			# FF00-FF00 Joypad
+			self.joypad.write(address, data);
+		elif (address >= 0xFF01 and address <= 0xFF02):
+			# FF01-FF02 Serial
+			self.serial.write(address, data);
+		elif (address >= 0xFF04 and address <= 0xFF07):
+			# FF04-FF07 Timer
+			self.timer.write(address, data);
+		elif (address == 0xFF0F):
+			# FF0F-FF0F Interrupt
+			self.interrupt.write(address, data);
+			# check pending interrupts when IF is changed
+			self.cpu.interrupt();
+	 	elif (address >= 0xFF10 and address <= 0xFF3F):
+			# FF10-FF3F Sound
+			self.sound.write(address, data);
+		elif (address >= 0xFF40 and address <= 0xFF4B):
+			# FF40-FF4B Video
+			self.video.write(address, data);
+			# check pending interrupts when STAT is changed
+			if (address == Video.STAT):
+				self.cpu.interrupt();
+	 	elif (address >= 0xFF80 and address <= 0xFFFE):
+			# FF80-FFFE High RAM
+			self.ram.write(address, data);
+		elif (address == 0xFFFF):
+			# FFFF-FFFF Interrupt
+			self.interrupt.write(address, data);
+			# check pending interrupts when IE is changed
+			self.cpu.interrupt();
+	
+
+
+	def read(self, address):
+		if (address <= 0x7FFF):
+			# 0000-7FFF ROM Bank
+			return self.cartridge.read(address);
+		elif (address <= 0x9FFF):
+			# 8000-9FFF Video RAM
+			return self.video.read(address);
+		elif (address <= 0xBFFF):
+			# A000-BFFF External RAM
+			return self.cartridge.read(address);
+		elif (address <= 0xFDFF):
+			# C000-FDFF Work RAM
+			return self.ram.read(address);
+		elif (address <= 0xFEFF):
+			# FE00-FEFF OAM
+			return self.video.read(address);
+		elif (address == 0xFF00):
+			# FF00-FF00 Joypad
+			return self.joypad.read(address);
+		elif (address >= 0xFF01 and address <= 0xFF02):
+			# FF01-FF02 Serial
+			return self.serial.read(address);
+		elif (address >= 0xFF04 and address <= 0xFF07):
+			# FF04-FF07 Timer
+			return self.timer.read(address);
+		elif (address == 0xFF0F):
+			# FF0F-FF0F Interrupt
+			return self.interrupt.read(address);
+		elif (address >= 0xFF10 and address <= 0xFF3F):
+			# FF10-FF3F Sound
+			return self.sound.read(address);
+		elif (address >= 0xFF40 and address <= 0xFF4B):
+			# FF40-FF4B Video
+			return self.video.read(address);
+		elif (address >= 0xFF80 and address <= 0xFFFE):
+			# FF80-FFFE High RAM
+			return self.ram.read(address);
+		elif (address == 0xFFFF):
+			# FFFF-FFFF Interrupt
+			return self.interrupt.read(address);
+		else:
+			return 0xFF;
+
+
+	def drawLogo(self):
+		for index in range(0, 48):
+			bits = self.cartridge.read(0x0104 + index);
+			pattern0 = ((bits >> 0) & 0x80) + ((bits >> 1) & 0x60)\
+					+ ((bits >> 2) & 0x18) + ((bits >> 3) & 0x06)\
+					+ ((bits >> 4) & 0x01);
+
+			pattern1 = ((bits << 4) & 0x80) + ((bits << 3) & 0x60)\
+					+ ((bits << 2) & 0x18) + ((bits << 1) & 0x06)\
+					+ ((bits << 0) & 0x01);
+
+			self.video.write(0x8010 + (index << 3), pattern0);
+			self.video.write(0x8012 + (index << 3), pattern0);
+
+			self.video.write(0x8014 + (index << 3), pattern1);
+			self.video.write(0x8016 + (index << 3), pattern1);
+
+		for index in range(0, 8):
+			self.video.write(0x8190 + (index << 1), REGISTERED_BITMAP[index]);
+
+		for tile in range(0, 12):
+			self.video.write(0x9904 + tile, tile + 1);
+			self.video.write(0x9924 + tile, tile + 13);
+
+		self.video.write(0x9904 + 12, 25);

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/interrupt.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/interrupt.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/interrupt.py	Tue Mar 11 09:25:07 2008
@@ -10,7 +10,6 @@
 	IE = 0xFFFF # Interrupt Enable */
 	IF = 0xFF0F # Interrupt Flag */
 
-
 	 # Interrupt Flags
 	VBLANK = 0x01 # V-Blank Interrupt (INT 40h) */
 	LCD = 0x02 # LCD STAT Interrupt (INT 48h) */
@@ -18,10 +17,9 @@
 	SERIAL = 0x08 # Serial Interrupt (INT 58h) */
 	JOYPAD = 0x10 # Joypad Interrupt (INT 60h) */
 
-
 	 # Registers
-	enable;
-	flag;
+	enable = 0;
+	flag = 0;
 
 	def __init__(self):
 		self.reset();
@@ -36,7 +34,7 @@
 	def isPending(self, mask):
 		return (self.enable & self.flag & mask) != 0;
 
-	def raise(self, mask):
+	def raiseInterrupt(self, mask):
 		self.flag |= mask;
 
 	def lower(self, mask):

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	Tue Mar 11 09:25:07 2008
@@ -15,19 +15,18 @@
 	JOYPAD_CLOCK = GAMEBOY_CLOCK >> 6;
 
 	# Registers
-	joyp;
-	cycles;
+	joyp = 0;
+	cycles = 0;
 
 	# Interrupt Controller
-	interrupt;
+	interrupt = None;
 
 	# Driver JoypadDriver
-	driver;
+	driver = None;
 
 	def __init__(self, joypadDriver, interrupt):
 		self.driver = joypadDriver;
 		self.interrupt = interrupt;
-
 		self.reset();
 
 	def  reset(self):
@@ -67,7 +66,7 @@
 			data |= 0x0F;
 
 		if ((self.joyp & ~data & 0x0F) != 0):
-			self.interrupt.raise(Interrupt.JOYPAD);
+			self.interrupt.raiseInterrupt(Interrupt.JOYPAD);
 
 		self.joyp = data;
 

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/ram.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/ram.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/ram.py	Tue Mar 11 09:25:07 2008
@@ -9,10 +9,10 @@
 	HIGH_SIZE = 128
 	
 	# Work RAM
-	wram
+	wram = []
 
 	# High RAM
-	hram
+	hram = []
 
 	def __init__(self):
 		self.reset();

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/serial.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/serial.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/serial.py	Tue Mar 11 09:25:07 2008
@@ -18,12 +18,12 @@
 	SC = 0xFF02; # Serial Transfer Control */
 
 	 # Registers
-	sb;
-	sc;
-	cycles;
+	sb = 0;
+	sc = 0;
+	cycles = 0;
 
 	 # Interrupt Controller #Interrupt
-	interrupt;
+	interrupt = None;
 
 	def __init__(self, interrupt):
 		self.interrupt = interrupt;
@@ -46,7 +46,7 @@
 				self.sc &= 0x7F;
 				self.cycles = SERIAL_IDLE_CLOCK;
 
-				self.interrupt.raise(Interrupt.SERIAL);
+				self.interrupt.raiseInterrupt(Interrupt.SERIAL);
 
 
 	def setSerialData(self, data):

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	Tue Mar 11 09:25:07 2008
@@ -49,72 +49,72 @@
 
 
 	# Audio Channel 1 int
-	nr10;
-	nr11;
-	nr12;
-	nr13;
-	nr14;
-	audio1Index;
-	audio1Length;
-	audio1Volume;
-	audio1EnvelopeLength;
-	audio1SweepLength;
-	audio1Frequency;
+	nr10=0;
+	nr11=0;
+	nr12=0;
+	nr13=0;
+	nr14=0;
+	audio1Index=0;
+	audio1Length=0;
+	audio1Volume=0;
+	audio1EnvelopeLength=0;
+	audio1SweepLength=0;
+	audio1Frequency=0;
 
 
 	# Audio Channel 2 int
-	nr21;
-	nr22;
-	nr23;
-	nr24;
-	audio2Index;
-	audio2Length;
-	audio2Volume;
-	audio2EnvelopeLength;
-	audio2Frequency;
+	nr21=0;
+	nr22=0;
+	nr23=0;
+	nr24=0;
+	audio2Index=0;
+	audio2Length=0;
+	audio2Volume=0;
+	audio2EnvelopeLength=0;
+	audio2Frequency=0;
 
 
 	# Audio Channel 3 int
-	nr30;
-	nr31;
-	nr32;
-	nr33;
-	nr34;
-	audio3Index;
-	audio3Length;
-	audio3Frequency;
-	audio3WavePattern# = new byte[16];
+	nr30=0;
+	nr31=0;
+	nr32=0;
+	nr33=0;
+	nr34=0;
+	audio3Index=0;
+	audio3Length=0;
+	audio3Frequency=0;
+	audio3WavePattern = []# = new byte[16];
 
 	# Audio Channel 4 int
-	nr41;
-	nr42;
-	nr43;
-	nr44;
-	audio4Index;
-	audio4Length;
-	audio4Volume;
-	audio4EnvelopeLength;
-	audio4Frequency;
+	nr41=0;
+	nr42=0;
+	nr43=0;
+	nr44=0;
+	audio4Index=0;
+	audio4Length=0;
+	audio4Volume=0;
+	audio4EnvelopeLength=0;
+	audio4Frequency=0;
 
 	# Output Control int
-	nr50;
-	nr51;
-	nr52;
+	nr50=0;
+	nr51=0;
+	nr52=0;
 
 	 # Sound DriverSoundDriver
-	driver;
-	buffer# = new byte[512];
+	#driver;
+	buffer  = []# = new byte[512];
 	#int
-	frames;
-	cycles;
+	#frames;
+	#cycles;
 
 	 # Frequency Table
-	frequencyTable #= new int[2048];
-	noiseFreqRatioTable #= new int[8];
+	frequencyTable = []#= new int[2048];
+	noiseFreqRatioTable = [] #= new int[8];
 
 	 # Noise Tables
-	noiseStep7Table #= new int[128 / 32];
-	noiseStep15Table #= new int[32768 / 32];
+	noiseStep7Table = [] #= new int[128 / 32];
+	noiseStep15Table = [] #= new int[32768 / 32];
 
 	def __init__(self, soundDriver):
 		self.driver = soundDriver;
@@ -293,8 +293,6 @@
 		else:
 			if (address >= AUD3WAVERAM and address <= AUD3WAVERAM + 0x3F):
 				self.setAudio3WavePattern(address, data);
-			break;
-	
 
 
 	def updateAudio(self):
@@ -310,7 +308,6 @@
 
 			if ((self.nr52 & 0x08) != 0):
 				self.updateAudio4();
-	
 
 
 	def mixAudio(self,buffer, length):
@@ -329,12 +326,9 @@
 
 			if ((self.nr52 & 0x08) != 0):
 				self.mixAudio4(buffer, length);
-	
-
 
 
 	 # Audio Channel 1
-
 	def getAudio1Sweep(self):
 		return self.nr10;
 
@@ -401,19 +395,14 @@
 			self.audio1EnvelopeLength = (SOUND_CLOCK / 64) * (self.nr12 & 0x07);
 	
 
-
 	def updateAudio1(self):
 		if ((self.nr14 & 0x40) != 0):
 			if (self.audio1Length > 0):
 				self.audio1Length-=1;
-
 				if (self.audio1Length <= 0):
 					self.nr52 &= ~0x01;
-		
-
 		if (self.audio1EnvelopeLength > 0):
 			self.audio1EnvelopeLength-=1;
-
 			if (self.audio1EnvelopeLength <= 0):
 				if ((self.nr12 & 0x08) != 0):
 					if (self.audio1Volume < 15):
@@ -421,23 +410,16 @@
 				elif (self.audio1Volume > 0):
 					self.audio1Volume-=1;
 				self.audio1EnvelopeLength += (SOUND_CLOCK / 64) * (self.nr12 & 0x07);
-		
-	
-
 		if (self.audio1SweepLength > 0):
 			self.audio1SweepLength-=1;
-
 			if (self.audio1SweepLength <= 0):
 				sweepSteps = (self.nr10 & 0x07);
-
 				if (sweepSteps != 0):
 					frequency = ((self.nr14 & 0x07) << 8) + self.nr13;
-
 					if ((self.nr10 & 0x08) != 0):
 						frequency -= frequency >> sweepSteps;
 					else:
 						frequency += frequency >> sweepSteps;
-
 					if (frequency < 2048):
 						self.audio1Frequency = self.frequencyTable[frequency];
 						self.nr13 = frequency & 0xFF;
@@ -448,8 +430,6 @@
 			
 				self.audio1SweepLength += (SOUND_CLOCK / 128) * ((self.nr10 >> 4) & 0x07);
 		
-	
-
 
 	def mixAudio1(self, buffer, length):
 		wavePattern = 0x18
@@ -475,11 +455,7 @@
 					buffer[index + 1] += self.audio1Volume;
 		
 	
-
-
-
 	 # Audio Channel 2
-
 	def getAudio2Length(self):
 		return self.nr21;
 
@@ -498,13 +474,11 @@
 
 	def setAudio2Length(self, data):
 		self.nr21 = data;
-
 		self.audio2Length = (SOUND_CLOCK / 256) * (64 - (self.nr21 & 0x3F));
 
 
 	def setAudio2Envelope(self, data):
 		self.nr22 = data;
-
 		if ((self.nr24 & 0x40) == 0):
 			if ((self.nr22 >> 4) == 0):
 				self.audio2Volume = 0;
@@ -516,15 +490,14 @@
 
 	def setAudio2Frequency(self, data):
 		self.nr23 = data;
-
-		self.audio2Frequency = self.frequencyTable[self.nr23
+		self.audio2Frequency = self.frequencyTable[self.nr23\
 				+ ((self.nr24 & 0x07) << 8)];
 
 
 	def setAudio2Playback(self, data):
 		self.nr24 = data;
 
-		self.audio2Frequency = self.frequencyTable[self.nr23
+		self.audio2Frequency = self.frequencyTable[self.nr23\
 				+ ((self.nr24 & 0x07) << 8)];
 
 		if ((self.nr24 & 0x80) != 0):
@@ -556,8 +529,6 @@
 					self.audio2Volume-=1;
 				self.audio2EnvelopeLength += (SOUND_CLOCK / 64) * (self.nr22 & 0x07);
 		
-	
-
 
 	def mixAudio2(self, buffer, length):
 		wavePattern = 0x18
@@ -582,13 +553,9 @@
 					buffer[index + 0] += self.audio2Volume;
 				if ((self.nr51 & 0x02) != 0):
 					buffer[index + 1] += self.audio2Volume;
-		
-	
-
 
 
 	 # Audio Channel 3
-
 	def getAudio3Enable(self):
 		return self.nr30;
 
@@ -656,7 +623,6 @@
 				self.audio3Length-=1;
 				if (self.audio3Length <= 0):
 					self.nr52 &= ~0x04;
-		
 
 
 	def mixAudio3(self, buffer, length):
@@ -684,10 +650,7 @@
 				buffer[index + 1] += sample;
 	
 
-
-
 	 # Audio Channel 4
-
 	def getAudio4Length(self):
 		return self.nr41;
 
@@ -706,7 +669,6 @@
 
 	def setAudio4Length(self, data):
 		self.nr41 = data;
-
 		self.audio4Length = (SOUND_CLOCK / 256) * (64 - (self.nr41 & 0x3F));
 
 
@@ -765,8 +727,6 @@
 				self.audio4EnvelopeLength += (SOUND_CLOCK / 64) * (self.nr42 & 0x07);
 		
 	
-
-
 	def mixAudio4(self, buffer, length):
 		for index in range(0, length, 2):
 			self.audio4Index += self.audio4Frequency;
@@ -781,7 +741,6 @@
 				self.audio4Index &= 0x7FFFFFFF;
 				polynomial = self.noiseStep15Table[self.audio4Index >> 21] >> ((self.audio4Index >> 16) & 31);
 		
-
 			if ((polynomial & 1) != 0):
 				if ((self.nr51 & 0x80) != 0):
 					buffer[index + 0] -= self.audio4Volume;
@@ -792,13 +751,9 @@
 					buffer[index + 0] += self.audio4Volume;
 				if ((self.nr51 & 0x08) != 0):
 					buffer[index + 1] += self.audio4Volume;
-		
-	
-
 
 
 	 # Output Control
-
 	def getOutputLevel(self):
 		return self.nr50;
 
@@ -825,9 +780,7 @@
 			self.nr52 &= 0xF0;
 
 
-
 	 # Frequency Table Generation
-
 	def generateFrequencyTables(self):
 		sampleRate = self.driver.getSampleRate();
 	
@@ -838,8 +791,6 @@
 				self.frequencyTable[period] = 0;
 			else:
 				self.frequencyTable[period] = skip;
-
-	
 		 # Polynomial Noise Frequency Ratios
 		 # 
 		 # 4194304 Hz * 1/2^3 * 2 4194304 Hz * 1/2^3 * 1 4194304 Hz * 1/2^3 *
@@ -862,7 +813,6 @@
 			if ((index & 31) == 0):
 				self.noiseStep7Table[index >> 5] = 0;
 			self.noiseStep7Table[index >> 5] |= (polynomial & 1) << (index & 31);
-	
 		#  15 steps&
 		polynomial = 0x7FFF
 		for index in range(0, 0x7FFF):

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/timer.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/timer.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/timer.py	Tue Mar 11 09:25:07 2008
@@ -34,22 +34,21 @@
 
 	 # Registers
 	 #int
-	div;
-	tima;
-	tma;
-	tac;
-
-	dividerCycles;
-	timerCycles;
-	timerClock;
+	div = 0;
+	tima = 0;
+	tma = 0;
+	tac = 0;
+
+	dividerCycles = 0;
+	timerCycles = 0;
+	timerClock = 0;
 
 
 	 # Interrupt Controller Interrupt
-	interrupt;
+	interrupt = None;
 
 	def __init__(self, interrupt):
 		self.interrupt = interrupt;
-
 		self.reset();
 
 
@@ -149,5 +148,5 @@
 
 				if (self.tima == 0x00):
 					self.tima = self.tma;
-					self.interrupt.raise(Interrupt.TIMER);
+					self.interrupt.raiseInterrupt(Interrupt.TIMER);
 	

Modified: pypy/branch/gameboy-emulator/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/branch/gameboy-emulator/pypy/lang/gameboy/video.py	(original)
+++ pypy/branch/gameboy-emulator/pypy/lang/gameboy/video.py	Tue Mar 11 09:25:07 2008
@@ -71,51 +71,51 @@
 	];
 
 	# OAM Registers
-	oam #= new byte[OAM_SIZE];
+	oam = [] #= new byte[OAM_SIZE];
 
 	 # Video RAM
-	vram #= new byte[VRAM_SIZE];
+	vram = []#= new byte[VRAM_SIZE];
 
 
 	 # LCD Registers int
-	lcdc;
-	stat;
-	scy;
-	scx;
-	ly;
-	lyc;
-	dma;
-	bgp;
-	obp0;
-	obp1;
-	wy;
-	wx;
-	wly;
+	lcdc = 0;
+	stat = 0;
+	scy = 0;
+	scx = 0;
+	ly = 0;
+	lyc = 0;
+	dma = 0;
+	bgp = 0;
+	obp0 = 0;
+	obp1 = 0;
+	wy = 0;
+	wx = 0;
+	wly = 0;
 
-	cycles;
+	cycles = 0;
 
-	frames;
-	frameSkip;
+	frames = 0;
+	frameSkip = 0;
 
 	#boolean
-	transfer;
-	display;
-	vblank;
-	dirty;
+	transfer = False;
+	display = False;
+	vblank = False;
+	dirty = False;
 
 	 # Line Buffer, OAM Cache and Color Palette
-	line #= new int[8 + 160 + 8];
-	objects #= new int[OBJECTS_PER_LINE];
-	palette #= new int[1024];
+	line = []#= new int[8 + 160 + 8];
+	objects = []#= new int[OBJECTS_PER_LINE];
+	palette = []#= new int[1024];
 
 	 # Video Driver VideoDriver
-	driver;
+	driver = None;
 
 	 # Interrupt Controller Interrupt
-	interrupt;
+	interrupt = None;
 
 	 # Memory Interface Memory
-	memory;
+	memory = None;
 
 	def __init__(self, videDriver, interrupt, memory):
 		self.driver = videoDriver;
@@ -194,8 +194,6 @@
 			elif (address >= VRAM_ADDR and address < VRAM_ADDR + VRAM_SIZE):
 				#TODO convert to byte
 				self.vram[address - VRAM_ADDR] =data;
-			break;
-	
 
 
 	def read(self, address):
@@ -325,7 +323,7 @@
 
 		# Gameboy Bug
 		if ((self.lcdc & 0x80) != 0 and (self.stat & 0x03) == 0x01 and (self.stat & 0x44) != 0x44):
-			self.interrupt.raise(Interrupt.LCD);
+			self.interrupt.raiseInterrupt(Interrupt.LCD);
 
 
 	def setScrollY(self, data):
@@ -347,7 +345,7 @@
 					self.stat |= 0x04;
 
 					if ((self.stat & 0x40) != 0):
-						self.interrupt.raise(Interrupt.LCD);
+						self.interrupt.raiseInterrupt(Interrupt.LCD);
 			else:
 				self.stat &= 0xFB;
 
@@ -404,7 +402,7 @@
 			self.cycles += MODE_0_TICKS;
 			# H-Blank interrupt
 			if ((self.stat & 0x08) != 0 and (self.stat & 0x44) != 0x44):
-				self.interrupt.raise(Interrupt.LCD);
+				self.interrupt.raiseInterrupt(Interrupt.LCD);
 
 
 	def emulateHBlank(self):
@@ -414,7 +412,7 @@
 			# LYC=LY interrupt
 			self.stat |= 0x04;
 			if ((self.stat & 0x40) != 0):
-				self.interrupt.raise(Interrupt.LCD);
+				self.interrupt.raiseInterrupt(Interrupt.LCD);
 		else:
 			self.stat &= 0xFB;
 		if (self.ly < 144):
@@ -422,7 +420,7 @@
 			self.cycles += MODE_2_TICKS;
 			# OAM interrupt
 			if ((self.stat & 0x20) != 0 and (self.stat & 0x44) != 0x44):
-				self.interrupt.raise(Interrupt.LCD);
+				self.interrupt.raiseInterrupt(Interrupt.LCD);
 		else:
 			if (self.display):
 				self.drawFrame();
@@ -444,42 +442,34 @@
 
 			self.stat = (self.stat & 0xFC) | 0x01;
 			self.cycles += MODE_1_TICKS - MODE_1_BEGIN_TICKS;
-
 			# V-Blank interrupt
 			if ((self.stat & 0x10) != 0):
-				self.interrupt.raise(Interrupt.LCD);
-
+				self.interrupt.raiseInterrupt(Interrupt.LCD);
 			# V-Blank interrupt
-			self.interrupt.raise(Interrupt.VBLANK);
+			self.interrupt.raiseInterrupt(Interrupt.VBLANK);
 		elif (self.ly == 0):
 			self.stat = (self.stat & 0xFC) | 0x02;
 			self.cycles += MODE_2_TICKS;
-
 			# OAM interrupt
 			if ((self.stat & 0x20) != 0 and (self.stat & 0x44) != 0x44):
-				self.interrupt.raise(Interrupt.LCD);
+				self.interrupt.raiseInterrupt(Interrupt.LCD);
 		else:
 			if (self.ly < 153):
 				self.ly+=1;
-
 				self.stat = (self.stat & 0xFC) | 0x01;
-
 				if (self.ly == 153):
 					self.cycles += MODE_1_END_TICKS;
 				else:
 					self.cycles += MODE_1_TICKS;
 			else:
 				self.ly = self.wly = 0;
-
 				self.stat = (self.stat & 0xFC) | 0x01;
 				self.cycles += MODE_1_TICKS - MODE_1_END_TICKS;
-
 			if (self.ly == self.lyc):
 				# LYC=LY interrupt
 				self.stat |= 0x04;
-
 				if ((self.stat & 0x40) != 0):
-					self.interrupt.raise(Interrupt.LCD);
+					self.interrupt.raiseInterrupt(Interrupt.LCD);
 			else:
 				self.stat &= 0xFB;
 
@@ -642,38 +632,54 @@
 			mask |= 0x0004;
 		# X flip
 		if (flags & 0x20) != 0:
-			if (color = (pattern << 1) & 0x0202) != 0:
+			color = (pattern << 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 0] |= color | mask;
-			if ((color = (pattern >> 0) & 0x0202) != 0):
+			color = (pattern >> 0)
+			if ((color & 0x0202) != 0):
 				self.line[x + 1] |= color | mask;
-			if ((color = (pattern >> 1) & 0x0202) != 0):
+			color = (pattern >> 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 2] |= color | mask;
-			if ((color = (pattern >> 2) & 0x0202) != 0):
+			color = (pattern >> 2)
+			if ((color & 0x0202) != 0):
 				self.line[x + 3] |= color | mask;
-			if ((color = (pattern >> 3) & 0x0202) != 0):
+			color = (pattern >> 3)
+			if ((color & 0x0202) != 0):
 				self.line[x + 4] |= color | mask;
-			if ((color = (pattern >> 4) & 0x0202) != 0):
+			color = (pattern >> 4)
+			if ((color & 0x0202) != 0):
 				self.line[x + 5] |= color | mask;
-			if ((color = (pattern >> 5) & 0x0202) != 0):
+			color = (pattern >> 5)
+			if ((color & 0x0202) != 0):
 				self.line[x + 6] |= color | mask;
-			if ((color = (pattern >> 6) & 0x0202) != 0):
+			color = (pattern >> 6)
+			if ((color & 0x0202) != 0):
 				self.line[x + 7] |= color | mask;
 		else:
-			if ((color = (pattern >> 6) & 0x0202) != 0):
+			color = (pattern >> 6)
+			if ((color & 0x0202) != 0):
 				self.line[x + 0] |= color | mask;
-			if ((color = (pattern >> 5) & 0x0202) != 0):
+			color = (pattern >> 5)
+			if ((color & 0x0202) != 0):
 				self.line[x + 1] |= color | mask;
-			if ((color = (pattern >> 4) & 0x0202) != 0):
+			color = (pattern >> 4)
+			if ((color & 0x0202) != 0):
 				self.line[x + 2] |= color | mask;
-			if ((color = (pattern >> 3) & 0x0202) != 0):
+			color = (pattern >> 3)
+			if ((color & 0x0202) != 0):
 				self.line[x + 3] |= color | mask;
-			if ((color = (pattern >> 2) & 0x0202) != 0):
+			color = (pattern >> 2)
+			if ((color & 0x0202) != 0):
 				self.line[x + 4] |= color | mask;
-			if ((color = (pattern >> 1) & 0x0202) != 0):
+			color = (pattern >> 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 5] |= color | mask;
-			if ((color = (pattern >> 0) & 0x0202) != 0):
+			color = (pattern >> 0)
+			if ((color & 0x0202) != 0):
 				self.line[x + 6] |= color | mask;
-			if ((color = (pattern << 1) & 0x0202) != 0):
+			color = (pattern << 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 7] |= color | mask;
 
 
@@ -681,45 +687,61 @@
 		pattern = (self.vram[address] & 0xFF) + ((self.vram[address + 1] & 0xFF) << 8);
 		mask = 0;
 		# priority
-		if ((flags & 0x80) != 0)
+		if ((flags & 0x80) != 0):
 			mask |= 0x0008;
 		# palette
-		if ((flags & 0x10) != 0)
+		if ((flags & 0x10) != 0):
 			mask |= 0x0004;
 		# X flip
 		if ((flags & 0x20) != 0):
-			if ((color = (pattern << 1) & 0x0202) != 0):
+			color = (pattern << 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 0] = (self.line[x + 0] & 0x0101) | color | mask;
-			if ((color = (pattern >> 0) & 0x0202) != 0):
+			color = (pattern >> 0)
+			if ((color & 0x0202) != 0):
 				self.line[x + 1] = (self.line[x + 1] & 0x0101) | color | mask;
-			if ((color = (pattern >> 1) & 0x0202) != 0):
+			color = (pattern >> 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 2] = (self.line[x + 2] & 0x0101) | color | mask;
-			if ((color = (pattern >> 2) & 0x0202) != 0):
+			color = (pattern >> 2)
+			if ((color & 0x0202) != 0):
 				self.line[x + 3] = (self.line[x + 3] & 0x0101) | color | mask;
-			if ((color = (pattern >> 3) & 0x0202) != 0):
+			color = (pattern >> 3)
+			if ((color & 0x0202) != 0):
 				self.line[x + 4] = (self.line[x + 4] & 0x0101) | color | mask;
-			if ((color = (pattern >> 4) & 0x0202) != 0):
+			color = (pattern >> 4)
+			if ((color & 0x0202) != 0):
 				self.line[x + 5] = (self.line[x + 5] & 0x0101) | color | mask;
-			if ((color = (pattern >> 6) & 0x0202) != 0):
+			color = (pattern >> 6)
+			if ((color & 0x0202) != 0):
 				self.line[x + 7] = (self.line[x + 7] & 0x0101) | color | mask;
-			if ((color = (pattern >> 5) & 0x0202) != 0):
+			color = (pattern >> 5)
+			if ((color & 0x0202) != 0):
 				self.line[x + 6] = (self.line[x + 6] & 0x0101) | color | mask;
 		else:
-			if ((color = (pattern >> 6) & 0x0202) != 0):
+			color = (pattern >> 6)
+			if ((color & 0x0202) != 0):
 				self.line[x + 0] = (self.line[x + 0] & 0x0101) | color | mask;
-			if ((color = (pattern >> 5) & 0x0202) != 0):
+			color = (pattern >> 5)
+			if ((color & 0x0202) != 0):
 				self.line[x + 1] = (self.line[x + 1] & 0x0101) | color | mask;
-			if ((color = (pattern >> 4) & 0x0202) != 0):
+			color = (pattern >> 4)
+			if ((color & 0x0202) != 0):
 				self.line[x + 2] = (self.line[x + 2] & 0x0101) | color | mask;
-			if ((color = (pattern >> 3) & 0x0202) != 0):
+			color = (pattern >> 3)
+			if ((color & 0x0202) != 0):
 				self.line[x + 3] = (self.line[x + 3] & 0x0101) | color | mask;
-			if ((color = (pattern >> 2) & 0x0202) != 0):
+			color = (pattern >> 2)
+			if ((color & 0x0202) != 0):
 				self.line[x + 4] = (self.line[x + 4] & 0x0101) | color | mask;
-			if ((color = (pattern >> 1) & 0x0202) != 0)
+			color = (pattern >> 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 5] = (self.line[x + 5] & 0x0101) | color | mask;
-			if ((color = (pattern >> 0) & 0x0202) != 0):
+			color = (pattern >> 0)
+			if ((color & 0x0202) != 0):
 				self.line[x + 6] = (self.line[x + 6] & 0x0101) | color | mask;
-			if ((color = (pattern << 1) & 0x0202) != 0):
+			color = (pattern << 1)
+			if ((color & 0x0202) != 0):
 				self.line[x + 7] = (self.line[x + 7] & 0x0101) | color | mask;
 
 
@@ -727,11 +749,11 @@
 		self.updatePalette();
 		pixels = self.driver.getPixels();
 		offset = self.ly * self.driver.getWidth();
-		for x in range(8, 168, 4)
-			int pattern0 = self.line[x + 0];
-			int pattern1 = self.line[x + 1];
-			int pattern2 = self.line[x + 2];
-			int pattern3 = self.line[x + 3];
+		for x in range(8, 168, 4):
+			pattern0 = self.line[x + 0];
+			pattern1 = self.line[x + 1];
+			pattern2 = self.line[x + 2];
+			pattern3 = self.line[x + 3];
 
 			pixels[offset + 0] = self.palette[pattern0];
 			pixels[offset + 1] = self.palette[pattern1];
@@ -744,7 +766,7 @@
 	def clearPixels(self):
 		pixels = self.driver.getPixels();
 		length = self.driver.getWidth() * self.driver.getHeight();
-		for offset in range(0, length)
+		for offset in range(0, length):
 			pixels[offset] = COLOR_MAP[0];
 
 
@@ -752,10 +774,10 @@
 		if (self.dirty):
 			# bit 4/0 = BG color, bit 5/1 = OBJ color, bit 2 = OBJ palette, bit
 			# 3 = OBJ priority
-			for pattern in range(0, 64)
-				int color;
+			for pattern in range(0, 64):
+				#color;
 
-				if ((pattern & 0x22) == 0 or ((pattern & 0x08) != 0 and (pattern & 0x11) != 0))
+				if ((pattern & 0x22) == 0 or ((pattern & 0x08) != 0 and (pattern & 0x11) != 0)):
 					# OBJ behind BG color 1-3
 					color = (self.bgp >> ((((pattern >> 3) & 0x02) + (pattern & 0x01)) << 1)) & 0x03;
 				 # OBJ above BG



More information about the Pypy-commit mailing list