ref: 464f06ced7a68a676a6d4efbdfc202c2bb7970e5
parent: 1d97a39583c6634d22113b1c2134395f161289b4
parent: 76dc9b8170ad6653f5436cad3246e5a0ebd2f267
author: Bryan Bishop <kanzure@gmail.com>
date: Tue Jan 10 08:47:00 EST 2012
Merge. hg-commit-id: 5d78a23cd0c7
--- a/extras/gbz80disasm.py
+++ b/extras/gbz80disasm.py
@@ -169,6 +169,7 @@
[ "LD A, L", 0x7d, 0 ],
[ "LD A, [$FF00+C]", 0xf2, 0 ],
[ "LD A, [$FF00+x]", 0xf0, 1 ],
+ #[ "LDH A, [x]", 0xf0, 1 ], #rgbds has trouble with this one?
[ "LD A, [BC]", 0xa, 0 ],
[ "LD A, [DE]", 0x1a, 0 ],
[ "LD A, [HL+]", 0x2a, 0 ],
@@ -221,7 +222,6 @@
[ "LD [$FF00+C], A", 0xe2, 0 ],
[ "LD [$FF00+x], A", 0xe0, 1 ],
[ "LD H, A", 0x67, 0 ],
- [ "LDH A, [x]", 0xf0, 1 ],
[ "LD H, B", 0x60, 0 ],
[ "LD H, C", 0x61, 0 ],
[ "LD H, D", 0x62, 0 ],
@@ -549,6 +549,7 @@
"3e48": "GivePokemon",
"3dd7": "Delay3",
"3e2e": "GiveItem",
+ "2f9e": "GetMonName",
}
def random_asm_label():
@@ -597,12 +598,36 @@
temp_maybe += ( ord(rom[offset+1]) << 8)
if temp_maybe in opt_table.keys():
opstr = copy(opt_table[temp_maybe][0])
-
- output += spacing + opstr.lower() #+ " ; " + hex(offset)
+
+ if "x" in opstr:
+ for x in range(0, opstr.count("x")):
+ insertion = ord(rom[offset + 1])
+ insertion = "$" + hex(insertion)[2:]
+
+ opstr = opstr[:opstr.find("x")].lower() + insertion + opstr[opstr.find("x")+1:].lower()
+
+ current_byte += 1
+ offset += 1
+ if "?" in opstr:
+ for y in range(0, opstr.count("?")):
+ byte1 = ord(rom[offset + 1])
+ byte2 = ord(rom[offset + 2])
+
+ number = byte1
+ number += byte2 << 8;
+
+ insertion = "$%.4x" % (number)
+
+ opstr = opstr[:opstr.find("?")].lower() + insertion + opstr[opstr.find("?")+1:].lower()
+
+ current_byte_number += 2
+ offset += 2
+
+ output += spacing + opstr #+ " ; " + hex(offset)
output += "\n"
- current_byte_number += 2
- offset += 2
+ current_byte_number += 1
+ offset += 1
elif maybe_byte in opt_table.keys():
op_code = opt_table[maybe_byte]
op_code_type = op_code[1]
@@ -611,6 +636,8 @@
#type = -1 when it's the E op
#if op_code_type != -1:
if op_code_type == 0 and ord(rom[offset]) == op_code_byte:
+ op_str = op_code[0].lower()
+
output += spacing + op_code[0].lower() #+ " ; " + hex(offset)
output += "\n"
--- a/extras/insert_texts.py
+++ b/extras/insert_texts.py
@@ -424,7 +424,8 @@
#insert_08_asm(83, 1)
#insert_all_08s()
- insert_asm(0x31cc, "LoadTrainerHeader")
+ insert_asm(0x2f9e, "GetMonName")
- print "-- FAILED ATTEMPTS --"
- print str(failed_attempts)
+ if len(failed_attempts) > 0:
+ print "-- FAILED ATTEMPTS --"
+ print str(failed_attempts)
--- a/pokered.asm
+++ b/pokered.asm
@@ -1055,8 +1055,34 @@
call $3e6d
jp $24d7
-INCBIN "baserom.gbc",$24fd,$ad2
+INCBIN "baserom.gbc",$24fd,$2f9e - $24fd
+GetMonName: ; 0x2f9e
+ push hl
+ ld a, [$ff00+$b8]
+ push af
+ ld a, $7
+ ldh [$b8], a
+ ld [$2000], a
+ ld a, [$d11e]
+ dec a
+ ld hl, $421e
+ ld c, $a
+ ld b, $0
+ call $3a87
+ ld de, $cd6d
+ push de
+ ld bc, $000a
+ call $00b5
+ ld hl, $cd77
+ ld [hl], $50
+ pop de
+ pop af
+ ldh [$b8], a
+ ld [$2000], a
+ pop hl
+ ret
+
GetItemName: ; 2FCF
; given an item ID at [$D11E], store the name of the item into a string
; starting at $CD6D
@@ -1360,7 +1386,7 @@
dec a
jr nz,.otherEntries\@
;1 = MON_NAMES
- call $2f9e; GetMonName
+ call GetMonName
ld hl,11
add hl,de
ld e,l