diff options
| author | YamaArashi <shadow962@live.com> | 2012-01-24 04:55:50 -0800 | 
|---|---|---|
| committer | YamaArashi <shadow962@live.com> | 2012-01-24 04:55:50 -0800 | 
| commit | e7a1d887d9dddcba2d5679c27198952851271f0a (patch) | |
| tree | 702226d65822838e9448cc1e8fb191b2462c5fd8 | |
| parent | 3eda472a22bc0ca68e56884d7a63020b68b7bcad (diff) | |
| parent | 3333728b61817b0fe2b8d912eac32ae36cdd50a8 (diff) | |
Merge
hg-commit-id: d509fe34f171
| -rw-r--r-- | common.asm | 70 | ||||
| -rw-r--r-- | extras/pretty_map_headers.py | 6 | ||||
| -rw-r--r-- | extras/pretty_trainer_headers.py | 117 | 
3 files changed, 177 insertions, 16 deletions
| @@ -4150,7 +4150,7 @@ GetName: ; 376B  	ld e,l  	ld d,h  	jr .gotPtr\@ -.otherEntries\@ ;$378d +.otherEntries\@ ; $378d  	;2-7 = OTHER ENTRIES  	ld a,[$d0b7]  	ld [$ffb8],a @@ -4162,7 +4162,7 @@ GetName: ; 376B  	ld e,a  	jr nc,.skip\@  	inc d -.skip\@ ;$37a0 +.skip\@ ; $37a0  	ld hl,NamePointers  	add hl,de  	ld a,[hli] @@ -4192,7 +4192,7 @@ GetName: ; 376B  	ld de,$cd6d  	ld bc,$0014  	call CopyData -.gotPtr\@       ;$37cd +.gotPtr\@ ; $37cd  	ld a,e  	ld [$cf8d],a  	ld a,d @@ -4406,7 +4406,7 @@ Delay3: ; 3DD7  INCBIN "baserom.gbc",$3DDC,$3DED - $3DDC -GoPAL_SET_CF1C:	; 3ded +GoPAL_SET_CF1C: ; 3ded  	ld b,$ff  GoPAL_SET: 	; 3def  	ld a,[$cf1b] @@ -10833,7 +10833,7 @@ CaveMons:  ENDC -GetItemUse: ;$D5C7 +GetItemUse: ; $D5C7  	ld a,1  	ld [$cd6a],a  	ld a,[$cf91]	;contains item_ID @@ -10850,7 +10850,7 @@ GetItemUse: ;$D5C7  	ld l,a  	jp [hl] -ItemUsePtrTable:	;$D5E1 +ItemUsePtrTable: ; $D5E1  	dw ItemUseBall      ;$5687 masterball  	dw ItemUseBall      ;$5687 ultraball  	dw ItemUseBall      ;$5687 greatball @@ -11396,7 +11396,7 @@ UnnamedText_e247: ; 0xe247  	db $50  ; 0xe247 + 5 bytes -OldRodCode: +OldRodCode: ; 0xe24c  	call $62b4 ; probably sets carry if not in battle or not by water  	jp c, ItemUseNotTime  	ld bc, (5 << 8) | MAGIKARP @@ -14407,7 +14407,32 @@ INCBIN "baserom.gbc",$19d21,$7f  SilphCo4Texts: ; 0x19da0  	dw SilphCo4Text1, SilphCo4Text2, SilphCo4Text3, SilphCo4Text4, SilphCo4Text5, SilphCo4Text6, SilphCo4Text7 -INCBIN "baserom.gbc",$19dae,$25 +TrainerHeader_19dae: ; 0x19dae +	db $2 ; flag's bit +	db ($4 << 4) ; trainer's view range +	dw $d829 ; flag's byte +	dw UnnamedText_19df4 ; 0x5df4 TextBeforeBattle +	dw UnnamedText_19dfe ; 0x5dfe TextAfterBattle +	dw UnnamedText_19df9 ; 0x5df9 TextEndBattle +; 0x19db8 + +INCBIN "baserom.gbc",$19db8,$19dba - $19db8 + +TrainerHeader_19dba: ; 0x19dba +INCBIN "baserom.gbc",$19dba,$19dc2 - $19dba + +INCBIN "baserom.gbc",$19dc2,4 + +TrainerHeader_19dc6: ; 0x19dc6 +	db $4 ; flag's bit +	db ($4 << 4) ; trainer's view range +	dw $d829 ; flag's byte +	dw UnnamedText_19e26 ; 0x5e26 TextBeforeBattle +	dw UnnamedText_19e30 ; 0x5e30 TextAfterBattle +	dw UnnamedText_19e2b ; 0x5e2b TextEndBattle +; 0x19dd0 + +INCBIN "baserom.gbc",$19dd0,$19dd3 - $19dd0  SilphCo4Text1: ; 0x19dd3  	db $08 ; asm @@ -14428,7 +14453,7 @@ UnnamedText_19de5: ; 0x19de5  SilphCo4Text2: ; 0x19dea  	db $08 ; asm -	ld hl, $5dae +	ld hl, TrainerHeader_19dae  	call LoadTrainerHeader  	jp TextScriptEnd @@ -14470,7 +14495,7 @@ UnnamedText_19e17: ; 0x19e17  SilphCo4Text4: ; 0x19e1c  	db $08 ; asm -	ld hl, $5dc6 +	ld hl, TrainerHeader_19dc6  	call LoadTrainerHeader  	jp TextScriptEnd @@ -14548,7 +14573,26 @@ INCBIN "baserom.gbc",$19f4d,$6f  SilphCo5Texts: ; 0x19fbc  	dw SilphCo5Text1, SilphCo5Text2, SilphCo5Text3, SilphCo5Text4, SilphCo5Text5, SilphCo5Text6, SilphCo5Text7, SilphCo5Text8, SilphCo5Text9, SilphCo5Text10, SilphCo5Text11 -INCBIN "baserom.gbc",$19fd2,$31 +TrainerHeader_19fd2: ; 0x19fd2 +	db $2 ; flag's bit +	db ($1 << 4) ; trainer's view range +	dw $d82b ; flag's byte +	dw UnnamedText_1a024 ; 0x6024 TextBeforeBattle +	dw UnnamedText_1a02e ; 0x602e TextAfterBattle +	dw UnnamedText_1a029 ; 0x6029 TextEndBattle +	dw UnnamedText_1a029 ; 0x6029 TextEndBattle +; 0x19fde + +TrainerHeader_19fde: ; 0x19fde +	db $3 ; flag's bit +	db ($2 << 4) ; trainer's view range +	dw $d82b ; flag's byte +	dw UnnamedText_1a03d ; 0x603d TextBeforeBattle +	dw UnnamedText_1a047 ; 0x6047 TextAfterBattle +	dw UnnamedText_1a042 ; 0x6042 TextEndBattle +; 0x19fe8 + +INCBIN "baserom.gbc",$19fe8,$1a003 - $19fe8  SilphCo5Text1: ; 0x1a003  	db $08 ; asm @@ -14569,7 +14613,7 @@ UnnamedText_1a015: ; 0x1a015  SilphCo5Text2: ; 0x1a01a  	db $08 ; asm -	ld hl, $5fd2 +	ld hl, TrainerHeader_19fd2  	call LoadTrainerHeader  	jp TextScriptEnd @@ -14590,7 +14634,7 @@ UnnamedText_1a02e: ; 0x1a02e  SilphCo5Text3: ; 0x1a033  	db $08 ; asm -	ld hl, $5fde +	ld hl, TrainerHeader_19fde  	call LoadTrainerHeader  	jp TextScriptEnd diff --git a/extras/pretty_map_headers.py b/extras/pretty_map_headers.py index b76e6cf4..729209ff 100644 --- a/extras/pretty_map_headers.py +++ b/extras/pretty_map_headers.py @@ -751,6 +751,6 @@ if __name__ == "__main__":      #prepare to pretty print tx_fars      #first you must load all_texts -    tx_fars = find_all_tx_fars() -    for entry in tx_fars: -        print tx_far_pretty_printer(entry) +    #tx_fars = find_all_tx_fars() +    #for entry in tx_fars: +    #    print tx_far_pretty_printer(entry) diff --git a/extras/pretty_trainer_headers.py b/extras/pretty_trainer_headers.py new file mode 100644 index 00000000..5d0f56a9 --- /dev/null +++ b/extras/pretty_trainer_headers.py @@ -0,0 +1,117 @@ +#!/usr/bin/python +#author: Bryan Bishop <kanzure@gmail.com> +#date: 2012-01-24 +from optparse import OptionParser +from gbz80disasm import load_labels, find_label +from extract_maps import calculate_pointer +import sys +spacing = "\t" + +def pretty_print_trainer_header(address, label=None): +    """make pretty text for a trainer header""" +    output = "" +    bank_id = 0 +    if address > 0x4000: +        bank_id = address / 0x4000 +     +    rom = open("../baserom.gbc", "r").read() +     +    #convert address to an integer if necessary +    if type(address) == str: +        if "$" in address: address = address.replace("$", "0x") +        address = int(address, 16) + +    #label this section of asm +    if label == None: +        output += "TrainerHeader_" + hex(address)[2:] + ": ; 0x" + hex(address)[2:] + "\n" +    else: +        output += label + ": ; 0x" + hex(address)[2:] + "\n" +     +    #flag's bit +    output += spacing + "db $" + hex(ord(rom[address]))[2:] + " ; flag's bit\n" +     +    #trainer's view range +    view_range = ord(rom[address+1]) >> 4 +    output += spacing + "db ($" + hex(view_range)[2:] + " << 4) ; trainer's view range\n" + +    #flag's byte +    pointer_byte1 = ord(rom[address+2]) +    pointer_byte2 = ord(rom[address+3]) +    partial_pointer = (pointer_byte1 + (pointer_byte2 << 8)) +    partial_pointer = "$%.2x" % partial_pointer +    output += spacing + "dw " + partial_pointer + " ; flag's byte\n" + +    #TextBeforeBattle +    pointer_byte1 = ord(rom[address+4]) +    pointer_byte2 = ord(rom[address+5]) +    partial_pointer = (pointer_byte1 + (pointer_byte2 << 8)) +    label = find_label(partial_pointer, bank_id) +    if label == None: +        print "label not found for (TextBeforeBattle) " + hex(calculate_pointer(partial_pointer, bank_id)) +        print "" +        label = "$" + hex(partial_pointer)[2:] +        #sys.exit(0) + +    output += spacing + "dw " + label + " ; " + hex(partial_pointer) + " TextBeforeBattle\n" + +    #TextAfterBattle +    pointer_byte1 = ord(rom[address+6]) +    pointer_byte2 = ord(rom[address+7]) +    partial_pointer = (pointer_byte1 + (pointer_byte2 << 8)) +    label = find_label(partial_pointer, bank_id) +    if label == None: +        print "label not found for (TextAfterBattle) " + hex(calculate_pointer(partial_pointer, bank_id)) +        print "" +        label = "$" + hex(partial_pointer)[2:] +        #sys.exit(0) + +    output += spacing + "dw " + label + " ; " + hex(partial_pointer) + " TextAfterBattle\n" + +    #TextEndBattle +    pointer_byte1 = ord(rom[address+8]) +    pointer_byte2 = ord(rom[address+9]) +    partial_pointer = (pointer_byte1 + (pointer_byte2 << 8)) +    label = find_label(partial_pointer, bank_id) +    if label == None: +        print "label not found for (TextEndBattle) " + hex(calculate_pointer(partial_pointer, bank_id)) +        print "" +        label = "$" + hex(partial_pointer)[2:] +        #sys.exit(0) + +    output += spacing + "dw " + label + " ; " + hex(partial_pointer) + " TextEndBattle\n" + +    #TextEndBattle +    pointer_byte1 = ord(rom[address+10]) +    pointer_byte2 = ord(rom[address+11]) +    partial_pointer = (pointer_byte1 + (pointer_byte2 << 8)) +    label = find_label(partial_pointer, bank_id) +    if label == None: +        print "label not found for (TextEndBattle) " + hex(calculate_pointer(partial_pointer, bank_id)) +        print "" +        label = "$" + hex(partial_pointer)[2:] +        #sys.exit(0) + +    #output += spacing + "dw " + label + " ; " + hex(partial_pointer) + " TextEndBattle\n" + +    output += "; " + hex(address+10) + "\n" + +    return output + +def main(): +    load_labels() + +    usage = "usage: %prog address" +    parser = OptionParser(usage) +    (options, args) = parser.parse_args() +    if len(args) == 1: +        print "usage: python pretty_trainer_headers.py address label\n" +        args.append("TrainerHeader_" + (args[0].replace("0x", ""))) +    elif len(args) != 2: +        parser.error("we need both an address and a label") +    address = int(args[0], 16) +    label = args[1] + +    print pretty_print_trainer_header(address, label) + +if __name__ == "__main__": +    main() | 
