From f0767fb15a2c6364b81f864d8e6c4319da8e2f33 Mon Sep 17 00:00:00 2001 From: Bryan Bishop Date: Fri, 1 Mar 2013 12:36:17 -0600 Subject: [PATCH] vba - example unit testing of roms --- extras/vba.py | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/extras/vba.py b/extras/vba.py index 832a74ef1..8d20a6edb 100644 --- a/extras/vba.py +++ b/extras/vba.py @@ -74,6 +74,7 @@ import re from array import array import string from copy import copy +import unittest # for converting bytes to readable text from chars import chars @@ -558,20 +559,12 @@ def call(bank, address): print "actual memory values: " + str(get_memory_range(registers.sp , 2)) print "wrong value at " + hex(registers.sp) + " expected " + hex(value) + " but got " + hex(get_memory_at(registers.sp)) - #registers.af = (bank << 8) | (registers.af & 0xff) - #registers.hl = address - #registers.pc = 0x2d63 # FarJump - - #registers2 = get_registers() - #registers2[5] = 0xc4a0 - #registers2[4] = 0x1276 - #registers2[0] = address - #set_registers(registers2) - - registers["hl"] = 0xc4a0 - registers["de"] = 0x1276 - registers["pc"] = address - #print "registers.pc is: " + hex(registers.pc) + if bank != 1: + registers["af"] = (bank << 8) | (registers["af"] & 0xFF) + registers["hl"] = address + registers["pc"] = 0x2d63 # FarJump + else: + registers["pc"] = address class crystal: """ @@ -816,3 +809,31 @@ class crystal: set_memory(memory) +class TestEmulator(unittest.TestCase): + state = load_state("cheating-12") + + def setUp(self): + load_rom() + set_state(self.state) + + def tearDown(self): + shutdown() + + def test_PlaceString(self): + call(1, 0x1078) + + # where to draw the text + registers["hl"] = 0xc4a0 + + # what text to read from + registers["de"] = 0x1276 + + nstep(10) + + text = crystal.get_text() + + self.assertTrue("TRAINER" in text) + +if __name__ == "__main__": + unittest.main() +