ref: f0767fb15a2c6364b81f864d8e6c4319da8e2f33
parent: caa1dc10dded1e4dfea148be11ca1d37172c623a
author: Bryan Bishop <[email protected]>
date: Fri Mar 1 07:36:17 EST 2013
vba - example unit testing of roms
--- a/extras/vba.py
+++ b/extras/vba.py
@@ -74,6 +74,7 @@
from array import array
import string
from copy import copy
+import unittest
# for converting bytes to readable text
from chars import chars
@@ -558,21 +559,13 @@
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
+ if bank != 1:
+ registers["af"] = (bank << 8) | (registers["af"] & 0xFF)
+ registers["hl"] = address
+ registers["pc"] = 0x2d63 # FarJump
+ else:
+ registers["pc"] = address
- #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)
-
class crystal:
"""
Just a simple namespace to store a bunch of functions for Pokémon Crystal.
@@ -815,4 +808,32 @@
memory[0xdd34] = 0x40
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()