shithub: pokecrystal

Download patch

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()