summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile21
-rw-r--r--engine/scripting.asm6
m---------extras0
-rw-r--r--main.asm5998
-rw-r--r--preprocessor.py631
-rw-r--r--prequeue.py2
6 files changed, 5888 insertions, 770 deletions
diff --git a/Makefile b/Makefile
index b8ded2274..1fe1789ad 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+PYTHON := python
.SUFFIXES: .asm .tx .o .gbc .png .2bpp .lz
TEXTFILES := $(shell find ./ -type f -name '*.asm' | grep -v pokecrystal.asm | grep -v constants.asm | grep -v gbhw.asm | grep -v hram.asm | grep -v constants | grep -v wram.asm)
@@ -14,35 +15,35 @@ clean:
@echo 'rm -f $(TEXTFILES:.asm=.tx)'
@rm -f $(TEXTFILES:.asm=.tx)
pokecrystal.o: $(TEXTFILES:.asm=.tx) wram.asm constants.asm $(shell find constants/ -type f -name '*.asm') hram.asm gbhw.asm $(LZ_GFX) $(TWOBPP_GFX)
- python prequeue.py $(TEXTQUEUE)
+ $(PYTHON) prequeue.py $(TEXTQUEUE)
rgbasm -o pokecrystal.o pokecrystal.asm
.asm.tx:
$(eval TEXTQUEUE := $(TEXTQUEUE) $<)
@rm -f $@
baserom.gbc:
- python -c "import os; assert 'baserom.gbc' in os.listdir('.'), 'Wait! Need baserom.gbc first. Check README and INSTALL for details.';"
+ $(PYTHON) -c "import os; assert 'baserom.gbc' in os.listdir('.'), 'Wait! Need baserom.gbc first. Check README and INSTALL for details.';"
pokecrystal.gbc: pokecrystal.o
rgblink -n pokecrystal.sym -m pokecrystal.map -o $@ $<
rgbfix -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
pngs:
- python extras/pokemontools/gfx.py mass-decompress
- python extras/pokemontools/gfx.py dump-pngs
+ $(PYTHON) extras/pokemontools/gfx.py mass-decompress
+ $(PYTHON) extras/pokemontools/gfx.py dump-pngs
lzs: $(LZ_GFX) $(TWOBPP_GFX)
@:
gfx/pics/%/front.lz: gfx/pics/%/tiles.2bpp gfx/pics/%/front.png
- python extras/pokemontools/gfx.py png-to-lz --front $^
+ $(PYTHON) extras/pokemontools/gfx.py png-to-lz --front $^
gfx/pics/%/tiles.2bpp: gfx/pics/%/tiles.png
- python extras/pokemontools/gfx.py png-to-2bpp $<
+ $(PYTHON) extras/pokemontools/gfx.py png-to-2bpp $<
gfx/pics/%/back.lz: gfx/pics/%/back.png
- python extras/pokemontools/gfx.py png-to-lz --vert $<
+ $(PYTHON) extras/pokemontools/gfx.py png-to-lz --vert $<
gfx/trainers/%.lz: gfx/trainers/%.png
- python extras/pokemontools/gfx.py png-to-lz --vert $<
+ $(PYTHON) extras/pokemontools/gfx.py png-to-lz --vert $<
.png.lz:
- python extras/pokemontools/gfx.py png-to-lz $<
+ $(PYTHON) extras/pokemontools/gfx.py png-to-lz $<
.png.2bpp:
- python extras/pokemontools/gfx.py png-to-lz $<
+ $(PYTHON) extras/pokemontools/gfx.py png-to-lz $<
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 5d44d1a8e..e8921a265 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1787,15 +1787,15 @@ StdScript: ; 0x9757b
ld e, a
call GetScriptByte
ld d, a
- ld hl, $4000 ; StdScripts
+ ld hl, StdScripts
add hl, de
add hl, de
add hl, de
- ld a, $2f ; BANK(StdScripts)
+ ld a, BANK(StdScripts)
call GetFarByte
ld b, a
inc hl
- ld a, $2f ; BANK(StdScripts)
+ ld a, BANK(StdScripts)
call GetFarHalfword
ret
; 0x97596
diff --git a/extras b/extras
-Subproject 016f0206b5029fc83a6200be29b0f980c76dfd9
+Subproject 276111f04dcc3e937f1a16f4b7066934409f8ad
diff --git a/main.asm b/main.asm
index a985d9548..60937fb52 100644
--- a/main.asm
+++ b/main.asm
@@ -14984,21 +14984,21 @@ PredefPointers: ; 856b
dwb Function6508, BANK(Function6508)
dwb Function747a, BANK(Function747a)
- dwb $4658, $03
- dwb $57c1, $13 ; Flag, BANK(Flag)
- dwb $4699, $03
+ dwb Functionc658, BANK(Functionc658)
+ dwb Function4d7c1, BANK(Function4d7c1)
+ dwb Functionc699, BANK(Functionc699)
dwb FillPP, BANK(FillPP)
dwb Functiond88c, BANK(Functiond88c)
- dwb $5a96, $03
- dwb $5b3f, $03
+ dwb Functionda96, BANK(Functionda96)
+ dwb Functiondb3f, BANK(Functiondb3f)
dwb Functionde6e, BANK(Functionde6e)
dwb Functiondf8c, BANK(Functiondf8c)
- dwb $46e0, $03
+ dwb Functionc6e0, BANK(Functionc6e0)
dwb Functione167, BANK(Functione167)
dwb Functione17b, BANK(Functione17b)
dwb CanLearnTMHMMove, BANK(CanLearnTMHMMove)
dwb GetTMHMMove, BANK(GetTMHMMove)
- dwb $4eef, $0a
+ dwb Function28eef, BANK(Function28eef)
dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription)
dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD
dwb FillBox, BANK(FillBox)
@@ -15010,57 +15010,58 @@ PredefPointers: ; 856b
dwb Function3f47c, BANK(Function3f47c)
dwb Function42487, BANK(Function42487)
dwb FillMoves, BANK(FillMoves)
- dwb $61e6, $10
- dwb $4f63, $0a
- dwb $4f24, $0a
+ dwb Function421e6, BANK(Function421e6)
+ dwb Function28f63, BANK(Function28f63)
+ dwb Function28f24, BANK(Function28f24)
dwb Function5084a, BANK(Function5084a)
- dwb $4d6f, $14
- dwb $4d2e, $14
- dwb $4cdb, $14
- dwb $4c50, $14
+ dwb Function50d6f, BANK(Function50d6f)
+ dwb Function50d2e, BANK(Function50d2e)
+ dwb Function50cdb, BANK(Function50cdb)
+ dwb Function50c50, BANK(Function50c50)
dwb GetGender, BANK(GetGender)
dwb StatsScreenInit, BANK(StatsScreenInit)
dwb DrawPlayerHP, BANK(DrawPlayerHP)
dwb DrawEnemyHP, BANK(DrawEnemyHP)
- dwb $4b7b, $14
+ dwb Function50b7b, BANK(Function50b7b)
dwb GetTypeName, BANK(GetTypeName)
dwb PrintMoveType, BANK(PrintMoveType)
dwb PrintType, BANK(PrintType)
dwb PrintMonTypes, BANK(PrintMonTypes)
dwb GetUnownLetter, BANK(GetUnownLetter)
- dwb $7cdd, $32
- dwb $40d5, $33
- dwb $5853, $02
- dwb Function864c, BANK(Function864c) ; LoadSGBLayout, BANK(LoadSGBLayout)
- dwb $5d11, $24
+ dwb Functioncbcdd, BANK(Functioncbcdd)
+ dwb Functioncc0d5, BANK(Functioncc0d5)
+ dwb Function9853, BANK(Function9853)
+ dwb Function864c, BANK(Function864c)
+ dwb Function91d11, BANK(Function91d11)
dwb CheckContestMon, BANK(CheckContestMon)
dwb Function8c20f, BANK(Function8c20f)
- dwb $4000, $23
- dwb $4000, $23
+ dwb Function8c000, BANK(Function8c000)
+ dwb Function8c000, BANK(Function8c000)
dwb Functioncc0d6, BANK(Functioncc0d6)
- dwb $40d5, $33
- dwb $40d5, $33
- dwb $51d0, $3f
+ dwb Functioncc0d5, BANK(Functioncc0d5)
+ dwb Functioncc0d5, BANK(Functioncc0d5)
+ dwb Functionfd1d0, BANK(Functionfd1d0)
dwb PartyMonItemName, BANK(PartyMonItemName)
- dwb $5077, $14
- dwb $516c, $14
- dwb $508b, $14
+ dwb Function51077, BANK(Function51077)
+ dwb Function5116c, BANK(Function5116c)
+ dwb Function5108b, BANK(Function5108b)
dwb Function5120d, BANK(Function5120d)
dwb DecompressPredef, BANK(DecompressPredef)
dwb Function0x347d3, BANK(Function0x347d3)
- dwb $7908, $3e
+ dwb Functionfb908, BANK(Functionfb908)
dwb Functionfb877, BANK(Functionfb877)
- dwb $4000, $34
+ dwb Functiond0000, BANK(Functiond0000)
dwb Function50d0a, BANK(Function50d0a)
- dwb $40a3, $34
- dwb $408e, $34
- dwb $4669, $34
- dwb $466e, $34
- dwb $43ff, $2d
+ dwb Functiond00a3, BANK(Functiond00a3)
+ dwb Functiond008e, BANK(Functiond008e)
+ dwb Functiond0669, BANK(Functiond0669)
+ dwb Functiond066e, BANK(Functiond066e)
+ dbw $ff, Function2d43 ; ????
; 864c
Function864c: ; 864c
+; LoadSGBLayout
call Function8d55
jp nz, Function8d59
ld a, b
@@ -15250,7 +15251,60 @@ Function8b07: ; 8b07
ret
; 8b2f
-INCBIN "baserom.gbc", $8b2f, $8cb4 - $8b2f
+INCBIN "baserom.gbc", $8b2f, $8c43 - $8b2f
+
+Function8c43: ; 8c43
+ ld a, [$d10a]
+ and a
+ jr z, .asm_8c52
+ cp $1
+ jr z, .asm_8c57
+ cp $2
+ jr z, .asm_8c70
+ ret
+
+.asm_8c52
+ ld de, $d092
+ jr .asm_8c5a
+
+.asm_8c57
+ ld de, $d09a
+
+.asm_8c5a
+ ld l, c
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld bc, $68be
+ add hl, bc
+ ld bc, $0004
+ ld a, $5
+ call Function306b
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+
+.asm_8c70
+ ld e, c
+ inc e
+ ld hl, $cdf8
+ ld bc, $0028
+ ld a, [CurPartyMon]
+.asm_8c7b
+ and a
+ jr z, .asm_8c82
+ add hl, bc
+ dec a
+ jr .asm_8c7b
+
+.asm_8c82
+ ld bc, $0208
+ ld a, e
+ call Function9663
+ ret
+; 8c8a
+
+INCBIN "baserom.gbc", $8c8a, $8cb4 - $8c8a
Function8cb4: ; 8cb4
ld l, e
@@ -15881,7 +15935,37 @@ Function981a: ; 981a
ret
; 9853
-INCBIN "baserom.gbc", $9853, $9890 - $9853
+Function9853: ; 9853
+ call Function8d55
+ ret nz
+ di
+ ld a, [$cfbe]
+ push af
+ set 7, a
+ ld [$cfbe], a
+ xor a
+ ld [rJOYP], a
+ ld [hSGB], a
+ call Function994a
+ jr nc, .asm_988a
+ ld a, $1
+ ld [hSGB], a
+ call Function98eb
+ call Function99b4
+ call Function9a7a
+ call Function993f
+ call Function992c
+ call Function9a7a
+ call Function993f
+ ld hl, $5d66
+ call Function981a
+
+.asm_988a
+ pop af
+ ld [$cfbe], a
+ ei
+ ret
+; 9890
Function9890: ; 9890
@@ -15940,7 +16024,181 @@ Function98df: ; 98df
ret
; 98eb
-INCBIN "baserom.gbc", $98eb, $9a52 - $98eb
+Function98eb: ; 98eb
+ ld hl, $58ff
+ ld c, $9
+.asm_98f0
+ push bc
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ call Function981a
+ pop hl
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_98f0
+ ret
+; 98ff
+
+INCBIN "baserom.gbc", $98ff, $992c - $98ff
+
+Function992c: ; 992c
+ call Function9938
+ push de
+ call Function9a24
+ pop hl
+ call Function99d8
+ ret
+; 9938
+
+Function9938: ; 9938
+ ld hl, $651e
+ ld de, $606e
+ ret
+; 993f
+
+Function993f: ; 993f
+ ld hl, VTiles0
+ ld bc, $2000
+ xor a
+ call ByteFill
+ ret
+; 994a
+
+Function994a: ; 994a
+ ld hl, $5d26
+ call Function981a
+ call Function9a7a
+ ld a, [rJOYP]
+ and $3
+ cp $3
+ jr nz, .asm_99a6
+ ld a, $20
+ ld [rJOYP], a
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ call Function9a7a
+ call Function9a7a
+ ld a, $30
+ ld [rJOYP], a
+ call Function9a7a
+ call Function9a7a
+ ld a, $10
+ ld [rJOYP], a
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ call Function9a7a
+ call Function9a7a
+ ld a, $30
+ ld [rJOYP], a
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ ld a, [rJOYP]
+ call Function9a7a
+ call Function9a7a
+ ld a, [rJOYP]
+ and $3
+ cp $3
+ jr nz, .asm_99a6
+ call Function99ab
+ and a
+ ret
+
+.asm_99a6
+ call Function99ab
+ scf
+ ret
+; 99ab
+
+Function99ab: ; 99ab
+ ld hl, $5d16
+ call Function981a
+ jp Function9a7a
+; 99b4
+
+Function99b4: ; 99b4
+ call DisableLCD
+ ld a, $e4
+ ld [rBGP], a
+ ld hl, $5df6
+ ld de, VTiles1
+ ld bc, $1000
+ call CopyData
+ call DrawDefaultTiles
+ ld a, $e3
+ ld [rLCDC], a
+ ld hl, $5d06
+ call Function981a
+ xor a
+ ld [rBGP], a
+ ret
+; 99d8
+
+Function99d8: ; 99d8
+ call DisableLCD
+ ld a, $e4
+ ld [rBGP], a
+ ld de, VTiles1
+ ld bc, $0140
+ call CopyData
+ ld b, $12
+.asm_99ea
+ push bc
+ ld bc, $000c
+ call CopyData
+ ld bc, $0028
+ call ClearBytes
+ ld bc, $000c
+ call CopyData
+ pop bc
+ dec b
+ jr nz, .asm_99ea
+ ld bc, $0140
+ call CopyData
+ ld bc, Start
+ call ClearBytes
+ ld bc, $0080
+ call CopyData
+ call DrawDefaultTiles
+ ld a, $e3
+ ld [rLCDC], a
+ ld hl, $5d46
+ call Function981a
+ xor a
+ ld [rBGP], a
+ ret
+; 9a24
+
+Function9a24: ; 9a24
+ call DisableLCD
+ ld a, $e4
+ ld [rBGP], a
+ ld de, VTiles1
+ ld b, $80
+.asm_9a30
+ push bc
+ ld bc, $0010
+ call CopyData
+ ld bc, $0010
+ call ClearBytes
+ pop bc
+ dec b
+ jr nz, .asm_9a30
+ call DrawDefaultTiles
+ ld a, $e3
+ ld [rLCDC], a
+ ld hl, $5d36
+ call Function981a
+ xor a
+ ld [rBGP], a
+ ret
+; 9a52
CopyData: ; 0x9a52
; copy bc bytes of data from hl to de
@@ -16951,7 +17209,62 @@ Functionc677: ; c677
ret
; c699
-INCBIN "baserom.gbc", $c699, $c6ea - $c699
+Functionc699: ; c699
+ ld a, b
+ or c
+ jr z, .asm_c6dd
+ push hl
+ xor a
+ ld [hMultiplicand], a
+ ld a, b
+ ld [$ffb5], a
+ ld a, c
+ ld [$ffb6], a
+ ld a, $30
+ ld [hMultiplier], a
+ call Multiply
+ ld a, d
+ and a
+ jr z, .asm_c6cc
+ srl d
+ rr e
+ srl d
+ rr e
+ ld a, [$ffb5]
+ ld b, a
+ ld a, [$ffb6]
+ srl b
+ rr a
+ srl b
+ rr a
+ ld [$ffb6], a
+ ld a, b
+ ld [$ffb5], a
+
+.asm_c6cc
+ ld a, e
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ ld a, [$ffb6]
+ ld e, a
+ pop hl
+ and a
+ ret nz
+ ld e, $1
+ ret
+
+.asm_c6dd
+ ld e, $0
+ ret
+; c6e0
+
+Functionc6e0: ; c6e0
+ call WaitBGMap
+ call Functiond627
+ call WaitBGMap
+ ret
+; c6ea
Functionc6ea: ; c6ea
@@ -17923,6 +18236,8 @@ Functioncd1d: ; cd1d
UnknownScript_0xcd29: ; 0xcd29
reloadmappart
special $0035
+
+UnknownScript_0xcd2d: ; 0xcd2d
3callasm BANK(Functioncd12), Functioncd12
2writetext UnknownText_0xcd41
copybytetovar $d1ef
@@ -17943,7 +18258,49 @@ UnknownText_0xcd46: ; 0xcd46
db $50
; 0xcd4b
-INCBIN "baserom.gbc", $cd4b, $cd9d - $cd4b
+UnknownScript_0xcd4b: ; 0xcd4b
+ 3callasm $03, $4d78
+ iffalse UnknownScript_0xcd5f
+ if_equal $1, UnknownScript_0xcd59
+ 2jump UnknownScript_0xcd5c
+; 0xcd59
+
+UnknownScript_0xcd59: ; 0xcd59
+ jumptext UnknownText_0xcd73
+; 0xcd5c
+
+UnknownScript_0xcd5c: ; 0xcd5c
+ jumptext UnknownText_0xcd6e
+; 0xcd5f
+
+UnknownScript_0xcd5f: ; 0xcd5f
+ loadfont
+ 2writetext UnknownText_0xcd69
+ yesorno
+ iftrue UnknownScript_0xcd2d
+ loadmovesprites
+ end
+; 0xcd69
+
+UnknownText_0xcd69: ; 0xcd69
+ ; A #MON may be able to move this. Want to use STRENGTH?
+ text_jump UnknownText_0x1c07a0, BANK(UnknownText_0x1c07a0)
+ db "@"
+; 0xcd6e
+
+UnknownText_0xcd6e: ; 0xcd6e
+ ; Boulders may now be moved!
+ text_jump UnknownText_0x1c07d8, BANK(UnknownText_0x1c07d8)
+ db "@"
+; 0xcd73
+
+UnknownText_0xcd73: ; 0xcd73
+ ; A #MON may be able to move this.
+ text_jump UnknownText_0x1c07f4, BANK(UnknownText_0x1c07f4)
+ db "@"
+; 0xcd78
+
+INCBIN "baserom.gbc", $cd78, $cd9d - $cd78
Functioncd9d: ; cd9d
call Functionc6ea
@@ -18191,6 +18548,8 @@ Functioncf0d: ; cf0d
UnknownScript_0xcf2e: ; 0xcf2e
reloadmappart
special $0035
+
+UnknownScript_0xcf32: ; cf32
3callasm BANK(GetPartyNick), GetPartyNick
2writetext UnknownText_0xcf58
loadmovesprites
@@ -18218,7 +18577,34 @@ UnknownText_0xcf58: ; 0xcf58
db $50
; 0xcf5d
-INCBIN "baserom.gbc", $cf5d, $cf8e - $cf5d
+UnknownScript_0xcf5d: ; 0xcf5d
+ 3callasm $03, $4f7c
+ if_equal $1, UnknownScript_0xcf6f
+ loadfont
+ 2writetext UnknownText_0xcf77
+ yesorno
+ iftrue UnknownScript_0xcf32
+ loadmovesprites
+ end
+; 0xcf6f
+
+UnknownScript_0xcf6f: ; 0xcf6f
+ jumptext UnknownText_0xcf72
+; 0xcf72
+
+UnknownText_0xcf72: ; 0xcf72
+ ; Maybe a #MON can break this.
+ text_jump UnknownText_0x1c0906, BANK(UnknownText_0x1c0906)
+ db "@"
+; 0xcf77
+
+UnknownText_0xcf77: ; 0xcf77
+ ; This rock looks breakable. Want to use ROCK SMASH?
+ text_jump UnknownText_0x1c0924, BANK(UnknownText_0x1c0924)
+ db "@"
+; 0xcf7c
+
+INCBIN "baserom.gbc", $cf7c, $cf8e - $cf7c
Functioncf8e: ; cf8e
@@ -19022,7 +19408,440 @@ GetItemPrice: ; d486
ret
; d497
-INCBIN "baserom.gbc", $d497, $d88c - $d497
+INCBIN "baserom.gbc", $d497, $d627 - $d497
+
+Functiond627: ; d627
+ call Functiond65f
+ jr c, .asm_d645
+ call Functiond670
+.asm_d62f
+ push bc
+ push hl
+ call Functiond6e2
+ pop hl
+ pop bc
+ push af
+ push bc
+ push hl
+ call Functiond730
+ call Functiond7c9
+ pop hl
+ pop bc
+ pop af
+ jr nc, .asm_d62f
+ ret
+
+.asm_d645
+ call Functiond670
+.asm_d648
+ push bc
+ push hl
+ call Functiond6f5
+ pop hl
+ pop bc
+ ret c
+ push af
+ push bc
+ push hl
+ call Functiond749
+ call Functiond7c9
+ pop hl
+ pop bc
+ pop af
+ jr nc, .asm_d648
+ ret
+; d65f
+
+Functiond65f: ; d65f
+ ld a, [Buffer2]
+ and a
+ jr nz, .asm_d66e
+ ld a, [Buffer1]
+ cp $30
+ jr nc, .asm_d66e
+ and a
+ ret
+
+.asm_d66e
+ scf
+ ret
+; d670
+
+Functiond670: ; d670
+ push hl
+ ld hl, Buffer1
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ pop hl
+ call Functionc699
+ ld a, e
+ ld [$d1f1], a
+ ld a, [$d1ee]
+ ld c, a
+ ld a, [$d1ef]
+ ld b, a
+ ld a, [Buffer1]
+ ld e, a
+ ld a, [Buffer2]
+ ld d, a
+ call Functionc699
+ ld a, e
+ ld [$d1f2], a
+ push hl
+ ld hl, $d1ec
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ pop hl
+ ld a, e
+ sub c
+ ld e, a
+ ld a, d
+ sbc b
+ ld d, a
+ jr c, .asm_d6c1
+ ld a, [$d1ec]
+ ld [$d1f5], a
+ ld a, [$d1ee]
+ ld [$d1f6], a
+ ld bc, $0001
+ jr .asm_d6d9
+
+.asm_d6c1
+ ld a, [$d1ec]
+ ld [$d1f6], a
+ ld a, [$d1ee]
+ ld [$d1f5], a
+ ld a, e
+ xor $ff
+ inc a
+ ld e, a
+ ld a, d
+ xor $ff
+ ld d, a
+ ld bc, rIE
+
+.asm_d6d9
+ ld a, d
+ ld [$d1f3], a
+ ld a, e
+ ld [$d1f4], a
+ ret
+; d6e2
+
+Functiond6e2: ; d6e2
+ ld hl, $d1f1
+ ld a, [$d1f2]
+ cp [hl]
+ jr nz, .asm_d6ed
+ scf
+ ret
+
+.asm_d6ed
+ ld a, c
+ add [hl]
+ ld [hl], a
+ call Functiond839
+ and a
+ ret
+; d6f5
+
+Functiond6f5: ; d6f5
+.asm_d6f5
+ ld hl, $d1ec
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, e
+ cp [hl]
+ jr nz, .asm_d707
+ inc hl
+ ld a, d
+ cp [hl]
+ jr nz, .asm_d707
+ scf
+ ret
+
+.asm_d707
+ ld l, e
+ ld h, d
+ add hl, bc
+ ld a, l
+ ld [$d1ec], a
+ ld a, h
+ ld [$d1ed], a
+ push hl
+ push de
+ push bc
+ ld hl, Buffer1
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ call Functionc699
+ pop bc
+ pop de
+ pop hl
+ ld a, e
+ ld hl, $d1f1
+ cp [hl]
+ jr z, .asm_d6f5
+ ld [hl], a
+ and a
+ ret
+; d730
+
+Functiond730: ; d730
+ call Functiond784
+ ld d, $6
+ ld a, [$d10a]
+ and $1
+ ld b, a
+ ld a, [$d1f1]
+ ld e, a
+ ld c, a
+ push de
+ call Functiond771
+ pop de
+ call Functiond7b4
+ ret
+; d749
+
+Functiond749: ; d749
+ call Functiond784
+ ld a, [$d1ec]
+ ld c, a
+ ld a, [$d1ed]
+ ld b, a
+ ld a, [Buffer1]
+ ld e, a
+ ld a, [Buffer2]
+ ld d, a
+ call Functionc699
+ ld c, e
+ ld d, $6
+ ld a, [$d10a]
+ and $1
+ ld b, a
+ push de
+ call Functiond771
+ pop de
+ call Functiond7b4
+ ret
+; d771
+
+Functiond771: ; d771
+ ld a, [$d10a]
+ cp $2
+ jr nz, .asm_d780
+ ld a, $28
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+
+.asm_d780
+ call DrawHPBar
+ ret
+; d784
+
+Functiond784: ; d784
+ ld a, [$d10a]
+ and a
+ ret z
+ cp $1
+ jr z, .asm_d792
+ ld de, $0016
+ jr .asm_d795
+
+.asm_d792
+ ld de, $0015
+
+.asm_d795
+ push hl
+ add hl, de
+ ld a, $7f
+ ld [hli], a
+ ld [hli], a
+ ld [hld], a
+ dec hl
+ ld a, [$d1ec]
+ ld [$d087], a
+ ld a, [$d1ed]
+ ld [StringBuffer2], a
+ ld de, StringBuffer2
+ ld bc, $0203
+ call PrintNum
+ pop hl
+ ret
+; d7b4
+
+Functiond7b4: ; d7b4
+ ld a, [hCGB]
+ and a
+ ret z
+ ld hl, $d1f0
+ call SetHPPal
+ ld a, [$d1f0]
+ ld c, a
+ callba Function8c43
+ ret
+; d7c9
+
+Functiond7c9: ; d7c9
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_d7d5
+ call DelayFrame
+ call DelayFrame
+ ret
+
+.asm_d7d5
+ ld a, [$d10a]
+ and a
+ jr z, .asm_d829
+ cp $1
+ jr z, .asm_d82d
+ ld a, [CurPartyMon]
+ cp $3
+ jr nc, .asm_d7ea
+ ld c, $0
+ jr .asm_d7ec
+
+.asm_d7ea
+ ld c, $1
+
+.asm_d7ec
+ push af
+ cp $2
+ jr z, .asm_d7ff
+ cp $5
+ jr z, .asm_d7ff
+ ld a, $2
+ ld [hBGMapMode], a
+ ld a, c
+ ld [hBGMapThird], a
+ call DelayFrame
+
+.asm_d7ff
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, c
+ ld [hBGMapThird], a
+ call DelayFrame
+ pop af
+ cp $2
+ jr z, .asm_d813
+ cp $5
+ jr z, .asm_d813
+ ret
+
+.asm_d813
+ inc c
+ ld a, $2
+ ld [hBGMapMode], a
+ ld a, c
+ ld [hBGMapThird], a
+ call DelayFrame
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, c
+ ld [hBGMapThird], a
+ call DelayFrame
+ ret
+
+.asm_d829
+ ld c, $0
+ jr .asm_d82f
+
+.asm_d82d
+ ld c, $1
+
+.asm_d82f
+ call DelayFrame
+ ld a, c
+ ld [hBGMapThird], a
+ call DelayFrame
+ ret
+; d839
+
+Functiond839: ; d839
+ ld a, [Buffer1]
+ ld c, a
+ ld b, $0
+ ld hl, $0000
+ ld a, [$d1f1]
+ cp $30
+ jr nc, .asm_d885
+ and a
+ jr z, .asm_d880
+ call AddNTimes
+ ld b, $0
+.asm_d851
+ ld a, l
+ sub $30
+ ld l, a
+ ld a, h
+ sbc $0
+ ld h, a
+ jr c, .asm_d85e
+ inc b
+ jr .asm_d851
+
+.asm_d85e
+ push bc
+ ld bc, $0080
+ add hl, bc
+ pop bc
+ ld a, l
+ sub $30
+ ld l, a
+ ld a, h
+ sbc $0
+ ld h, a
+ jr c, .asm_d86f
+ inc b
+
+.asm_d86f
+ ld a, [$d1f5]
+ cp b
+ jr nc, .asm_d87c
+ ld a, [$d1f6]
+ cp b
+ jr c, .asm_d87c
+ ld a, b
+
+.asm_d87c
+ ld [$d1ec], a
+ ret
+
+.asm_d880
+ xor a
+ ld [$d1ec], a
+ ret
+
+.asm_d885
+ ld a, [Buffer1]
+ ld [$d1ec], a
+ ret
+; d88c
Functiond88c: ; d88c
@@ -19375,7 +20194,307 @@ FillPP: ; da6d
ret
; da96
-INCBIN "baserom.gbc", $da96, $dcb6 - $da96
+Functionda96: ; da96
+ ld hl, PartyCount
+ ld a, [hl]
+ cp $6
+ scf
+ ret z
+ inc a
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [CurPartySpecies]
+ ld [hli], a
+ ld [hl], $ff
+ ld hl, PartyMon1Species
+ ld a, [PartyCount]
+ dec a
+ ld bc, $0030
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ld hl, TempMonSpecies
+ call CopyBytes
+ ld hl, PartyMon1OT
+ ld a, [PartyCount]
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+ ld hl, OTPartyMon1OT
+ ld a, [CurPartyMon]
+ call SkipNames
+ ld bc, $000b
+ call CopyBytes
+ ld hl, PartyMon1Nickname
+ ld a, [PartyCount]
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+ ld hl, OTPartyMon1Nickname
+ ld a, [CurPartyMon]
+ call SkipNames
+ ld bc, $000b
+ call CopyBytes
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ cp $fd
+ jr z, .asm_db12
+ dec a
+ call SetSeenAndCaughtMon
+ ld hl, PartyMon1Happiness
+ ld a, [PartyCount]
+ dec a
+ ld bc, $0030
+ call AddNTimes
+ ld [hl], $46
+
+.asm_db12
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr nz, .asm_db3d
+ ld hl, PartyMon1DVs
+ ld a, [PartyCount]
+ dec a
+ ld bc, $0030
+ call AddNTimes
+ ld a, $2d
+ call Predef
+ callab Functionfba18
+ ld a, [$def4]
+ and a
+ jr nz, .asm_db3d
+ ld a, [UnownLetter]
+ ld [$def4], a
+
+.asm_db3d
+ and a
+ ret
+; db3f
+
+Functiondb3f: ; db3f
+ ld a, $1
+ call GetSRAMBank
+ ld a, [$d10b]
+ and a
+ jr z, .asm_db60
+ cp $2
+ jr z, .asm_db60
+ cp $3
+ ld hl, BreedMon1Species
+ jr z, .asm_db9b
+ ld hl, BoxCount
+ ld a, [hl]
+ cp $14
+ jr nz, .asm_db69
+ jp Functiondcb1
+
+.asm_db60
+ ld hl, PartyCount
+ ld a, [hl]
+ cp $6
+ jp z, Functiondcb1
+
+.asm_db69
+ inc a
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [$d10b]
+ cp $2
+ ld a, [BreedMon1Species]
+ jr z, .asm_db7c
+ ld a, [CurPartySpecies]
+
+.asm_db7c
+ ld [hli], a
+ ld [hl], $ff
+ ld a, [$d10b]
+ dec a
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ ld a, [PartyCount]
+ jr nz, .asm_db97
+ ld hl, BoxMon1Species
+ ld bc, $0020
+ ld a, [BoxCount]
+
+.asm_db97
+ dec a
+ call AddNTimes
+
+.asm_db9b
+ push hl
+ ld e, l
+ ld d, h
+ ld a, [$d10b]
+ and a
+ ld hl, BoxMon1Species
+ ld bc, $0020
+ jr z, .asm_dbb7
+ cp $2
+ ld hl, BreedMon1Species
+ jr z, .asm_dbbd
+ ld hl, PartyMon1Species
+ ld bc, $0030
+
+.asm_dbb7
+ ld a, [CurPartyMon]
+ call AddNTimes
+
+.asm_dbbd
+ ld bc, $0020
+ call CopyBytes
+ ld a, [$d10b]
+ cp $3
+ ld de, BreedMon1OT
+ jr z, .asm_dbe2
+ dec a
+ ld hl, PartyMon1OT
+ ld a, [PartyCount]
+ jr nz, .asm_dbdc
+ ld hl, BoxMon1OT
+ ld a, [BoxCount]
+
+.asm_dbdc
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+
+.asm_dbe2
+ ld hl, BoxMon1OT
+ ld a, [$d10b]
+ and a
+ jr z, .asm_dbf5
+ ld hl, BreedMon1OT
+ cp $2
+ jr z, .asm_dbfb
+ ld hl, PartyMon1OT
+
+.asm_dbf5
+ ld a, [CurPartyMon]
+ call SkipNames
+
+.asm_dbfb
+ ld bc, $000b
+ call CopyBytes
+ ld a, [$d10b]
+ cp $3
+ ld de, BreedMon1Nick
+ jr z, .asm_dc20
+ dec a
+ ld hl, PartyMon1Nickname
+ ld a, [PartyCount]
+ jr nz, .asm_dc1a
+ ld hl, BoxMon1Nickname
+ ld a, [BoxCount]
+
+.asm_dc1a
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+
+.asm_dc20
+ ld hl, BoxMon1Nickname
+ ld a, [$d10b]
+ and a
+ jr z, .asm_dc33
+ ld hl, BreedMon1Nick
+ cp $2
+ jr z, .asm_dc39
+ ld hl, PartyMon1Nickname
+
+.asm_dc33
+ ld a, [CurPartyMon]
+ call SkipNames
+
+.asm_dc39
+ ld bc, $000b
+ call CopyBytes
+ pop hl
+ ld a, [$d10b]
+ cp $1
+ jr z, .asm_dca4
+ cp $3
+ jp z, .asm_dcac
+ push hl
+ srl a
+ add $2
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ callab Function50e1b
+ ld a, d
+ ld [CurPartyLevel], a
+ pop hl
+ ld b, h
+ ld c, l
+ ld hl, $001f
+ add hl, bc
+ ld [hl], a
+ ld hl, $0024
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, $000a
+ add hl, bc
+ push bc
+ ld b, $1
+ call Functione167
+ pop bc
+ ld a, [$d10b]
+ and a
+ jr nz, .asm_dcac
+ ld hl, $0020
+ add hl, bc
+ xor a
+ ld [hl], a
+ ld hl, $0022
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [CurPartySpecies]
+ cp $fd
+ jr z, .asm_dc9e
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld [de], a
+ ld a, [hl]
+ inc de
+ ld [de], a
+ jr .asm_dcac
+
+.asm_dc9e
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ jr .asm_dcac
+
+.asm_dca4
+ ld a, [BoxCount]
+ dec a
+ ld b, a
+ call Functiondcb6
+
+.asm_dcac
+ call CloseSRAM
+ and a
+ ret
+; dcb1
+
+Functiondcb1: ; dcb1
+ call CloseSRAM
+ scf
+ ret
+; dcb6
Functiondcb6: ; dcb6
@@ -28758,11 +29877,11 @@ OpenMartDialog: ; 15a45
; 15a57
.dialogs
- dw MartDialog
- dw HerbShop
- dw BargainShop
- dw Pharmacist
- dw VendingMachine
+ dw MartDialog
+ dw HerbShop
+ dw BargainShop
+ dw Pharmacist
+ dw VendingMachine
; 15a61
MartDialog: ; 15a61
@@ -28890,12 +30009,12 @@ Function15b47: ; 15b47
ret
.table_15b56
- dw Function15b62
- dw Function15b6e
- dw Function15b8d
- dw Function15b9a
- dw Function15ba3
- dw Function15baf
+ dw Function15b62
+ dw Function15b6e
+ dw Function15b8d
+ dw Function15b9a
+ dw Function15ba3
+ dw Function15baf
; 15b62
Function15b62: ; 15b62
@@ -29132,11 +30251,11 @@ Function15ca3: ; 15ca3
; 15cb0
.data_15cb0 ; 15cb0
- dwb $5cbf, 0
- dwb $5ccb, 0
- dwb $5cd7, 1
- dwb $5ce3, 0
- dwb $5cbf, 2
+ dwb $5cbf, 0
+ dwb $5ccb, 0
+ dwb $5cd7, 1
+ dwb $5ce3, 0
+ dwb $5cbf, 2
; 15cbf
INCBIN "baserom.gbc", $15cbf, $15cef - $15cbf
@@ -36204,7 +37323,328 @@ Function28eff: ; 28eff
ret
; 28f09
-INCBIN "baserom.gbc", $28f09, $29bfb - $28f09
+INCBIN "baserom.gbc", $28f09, $28f24 - $28f09
+
+Function28f24: ; 28f24
+ xor a
+ ld [$cf66], a
+ ld hl, $c6e7
+ ld de, $c719
+ call Function297ff
+ ld hl, PlayerSDefLevel
+ ld de, PlayerLightScreenCount
+ call Function29814
+ ld de, .data_28f3f
+ jr Function28fa1
+
+.data_28f3f
+ db $1b
+ db $1
+ db $1c
+ db $21
+ db $2d
+ db $27
+ db $23
+ db $3
+ db $25
+ db $28
+ db $25
+ db $1e
+ db $29
+ db $6
+ db $16
+ db $1f
+ db $19
+ db $17
+ db $22
+ db $1f
+ db $2a
+ db $e
+ db $3
+ db $24
+ db $5
+ db $25
+ db $2
+ db $27
+ db $25
+ db $1d
+ db $2c
+ db $2e
+ db $1e
+ db $18
+ db $1f
+ db $2b
+
+Function28f63: ; 28f63
+ xor a
+ ld [$cf66], a
+ ld hl, $c719
+ ld de, $c6e7
+ call Function297ff
+ ld hl, PlayerLightScreenCount
+ ld de, PlayerSDefLevel
+ call Function29814
+ ld de, .data_28f7e
+ jr Function28fa1
+
+.data_28f7e
+ db $1a
+ db $17
+ db $22
+ db $1f
+ db $2a
+ db $6
+ db $3
+ db $24
+ db $5
+ db $25
+ db $2
+ db $27
+ db $25
+ db $1d
+ db $2c
+ db $2f
+ db $1e
+ db $18
+ db $1f
+ db $1b
+ db $1
+ db $1c
+ db $22
+ db $27
+ db $23
+ db $3
+ db $25
+ db $28
+ db $25
+ db $1e
+ db $29
+ db $e
+ db $16
+ db $1f
+ db $2b
+
+Function28fa1: ; 28fa1
+ ld hl, BattleEnded
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, [$ffde]
+ push af
+ xor a
+ ld [$ffde], a
+ ld hl, VramState
+ ld a, [hl]
+ push af
+ res 0, [hl]
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function28fdb
+ ld a, [$cf66]
+ and a
+ jr nz, .asm_28fca
+ ld de, MUSIC_EVOLUTION
+ call StartMusic2
+.asm_28fca
+ call Function29082
+ jr nc, .asm_28fca
+ pop af
+ ld [Options], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [$ffde], a
+ ret
+; 28fdb
+
+Function28fdb: ; 28fdb
+ xor a
+ ld [$cf63], a
+ call WhiteBGMap
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call Functione58
+ callab Function8cf53
+ ld a, [hCGB]
+ and a
+ jr z, .asm_2900b
+ ld a, $1
+ ld [rVBK], a
+ ld hl, VTiles0
+ ld bc, $2000
+ xor a
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+
+.asm_2900b
+ ld hl, VBGMap0
+ ld bc, $0800
+ ld a, $7f
+ call ByteFill
+ ld hl, $599b
+ ld de, $9310
+ call Decompress
+ ld hl, $591b
+ ld de, $8ed0
+ ld bc, $0010
+ ld a, $a
+ call FarCopyBytes
+ ld hl, $592b
+ ld de, $8ee0
+ ld bc, $0010
+ ld a, $a
+ call FarCopyBytes
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ callba Function4d7fd
+ call EnableLCD
+ call Function2982b
+ ld a, [PlayerSDefLevel]
+ ld hl, $c6fd
+ ld de, VTiles0
+ call Function29491
+ ld a, [PlayerLightScreenCount]
+ ld hl, $c72f
+ ld de, $8310
+ call Function29491
+ ld a, [PlayerSDefLevel]
+ ld de, PlayerAccLevel
+ call Function294a9
+ ld a, [PlayerLightScreenCount]
+ ld de, PlayerReflectCount
+ call Function294a9
+ call Function297ed
+ ret
+; 29082
+
+Function29082: ; 29082
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_2909b
+ call Function290a0
+ callab Function8cf69
+ ld hl, $cf65
+ inc [hl]
+ call DelayFrame
+ and a
+ ret
+
+.asm_2909b
+ call Functione51
+ scf
+ ret
+; 290a0
+
+Function290a0: ; 290a0
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $50af
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 290af
+
+INCBIN "baserom.gbc", $290af, $29491 - $290af
+
+Function29491: ; 29491
+ push de
+ push af
+ ld a, $2d
+ call Predef
+ pop af
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ pop de
+ ld a, $3c
+ call Predef
+ ret
+; 294a9
+
+Function294a9: ; 294a9
+ push de
+ ld [$d265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ pop de
+ ld bc, $000b
+ call CopyBytes
+ ret
+; 294bb
+
+INCBIN "baserom.gbc", $294bb, $297ed - $294bb
+
+Function297ed: ; 297ed
+ ld a, [hSGB]
+ and a
+ ld a, $e4
+ jr z, .asm_297f6
+ ld a, $f0
+
+.asm_297f6
+ call Functioncf8
+ ld a, $e4
+ call DmgToCgbBGPals
+ ret
+; 297ff
+
+Function297ff: ; 297ff
+ push de
+ ld de, $c736
+ ld bc, $000b
+ call CopyBytes
+ pop hl
+ ld de, $c741
+ ld bc, $000b
+ call CopyBytes
+ ret
+; 29814
+
+Function29814: ; 29814
+ ld a, [hl]
+ ld [$c74c], a
+ ld a, [de]
+ ld [$c74d], a
+ ret
+; 2981d
+
+INCBIN "baserom.gbc", $2981d, $2982b - $2981d
+
+Function2982b: ; 2982b
+ call DelayFrame
+ ld de, $5adb
+ ld hl, $8620
+ ld bc, $0a06
+ call Request2bpp
+ ld de, $5b3b
+ ld hl, $8680
+ ld bc, $0a0c
+ call Request2bpp
+ ld de, $593b
+ ld hl, $8740
+ ld bc, $0a04
+ call Request2bpp
+ xor a
+ ld hl, $c300
+ ld [hli], a
+ ld [hl], $62
+ ret
+; 2985a
+
+INCBIN "baserom.gbc", $2985a, $29bfb - $2985a
Function29bfb: ; 29bfb
ld hl, PartySpecies
@@ -36736,7 +38176,161 @@ Function29f47: ; 29f47
ret
; 29f54
-INCBIN "baserom.gbc", $29f54, $2a0e7 - $29f54
+INCBIN "baserom.gbc", $29f54, $2a01f - $29f54
+
+Function2a01f: ; 2a01f
+ ld hl, TileMap
+ ld bc, $0168
+ xor a
+ call ByteFill
+ ld a, e
+ and a
+ jr nz, .asm_2a043
+ ld de, TileMap
+ ld hl, WildMons1
+ call Function2a052
+ ld hl, WildMons2
+ call Function2a06e
+ call Function2a0b7
+ call Function2a0cf
+ ret
+
+.asm_2a043
+ ld de, TileMap
+ ld hl, WildMons3
+ call Function2a052
+ ld hl, WildMons4
+ jp Function2a06e
+; 2a052
+
+Function2a052: ; 2a052
+.asm_2a052
+ ld a, [hl]
+ cp $ff
+ ret z
+ push hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ inc hl
+ inc hl
+ inc hl
+ ld a, $15
+ call Function2a088
+ jr nc, .asm_2a067
+ ld [de], a
+ inc de
+
+.asm_2a067
+ pop hl
+ ld bc, $002f
+ add hl, bc
+ jr .asm_2a052
+; 2a06e
+
+Function2a06e: ; 2a06e
+.asm_2a06e
+ ld a, [hl]
+ cp $ff
+ ret z
+ push hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ inc hl
+ ld a, $3
+ call Function2a088
+ jr nc, .asm_2a081
+ ld [de], a
+ inc de
+
+.asm_2a081
+ pop hl
+ ld bc, $0009
+ add hl, bc
+ jr .asm_2a06e
+; 2a088
+
+Function2a088: ; 2a088
+ inc hl
+.asm_2a089
+ push af
+ ld a, [$d265]
+ cp [hl]
+ jr z, .asm_2a098
+ inc hl
+ inc hl
+ pop af
+ dec a
+ jr nz, .asm_2a089
+ and a
+ ret
+
+.asm_2a098
+ pop af
+ jp Function2a09c
+; 2a09c
+
+Function2a09c: ; 2a09c
+ push de
+ call GetWorldMapLocation
+ ld c, a
+ ld hl, TileMap
+ ld de, $0168
+.asm_2a0a7
+ ld a, [hli]
+ cp c
+ jr z, .asm_2a0b4
+ dec de
+ ld a, e
+ or d
+ jr nz, .asm_2a0a7
+ ld a, c
+ pop de
+ scf
+ ret
+
+.asm_2a0b4
+ pop de
+ and a
+ ret
+; 2a0b7
+
+Function2a0b7: ; 2a0b7
+ ld a, [RoamMon1Species]
+ ld b, a
+ ld a, [$d265]
+ cp b
+ ret nz
+ ld a, [RoamMon1MapGroup]
+ ld b, a
+ ld a, [RoamMon1MapNumber]
+ ld c, a
+ call Function2a09c
+ ret nc
+ ld [de], a
+ inc de
+ ret
+; 2a0cf
+
+Function2a0cf: ; 2a0cf
+ ld a, [RoamMon2Species]
+ ld b, a
+ ld a, [$d265]
+ cp b
+ ret nz
+ ld a, [RoamMon2MapGroup]
+ ld b, a
+ ld a, [RoamMon2MapNumber]
+ ld c, a
+ call Function2a09c
+ ret nc
+ ld [de], a
+ inc de
+ ret
+; 2a0e7
Function2a0e7: ; 2a0e7
; Try to trigger a wild encounter.
@@ -49699,6 +51293,8 @@ Function421d8: ; 421d8
ld c, a
ld b, $1
call Function42577
+
+Function421e6: ; 421e6
xor a
ld [$d268], a
dec a
@@ -54200,7 +55796,82 @@ INCBIN "baserom.gbc", $4d580, $4d596 - $4d580
Tilesets:
INCLUDE "tilesets/tileset_headers.asm"
-INCBIN "baserom.gbc", $4d7c1, $4d860 - $4d7c1
+Function4d7c1: ; 4d7c1
+ push hl
+ push bc
+ push bc
+ srl c
+ srl c
+ srl c
+ ld b, $0
+ add hl, bc
+ pop bc
+ ld a, c
+ and $7
+ ld c, a
+ ld a, $1
+ jr z, .asm_4d7da
+.asm_4d7d6
+ add a
+ dec c
+ jr nz, .asm_4d7d6
+
+.asm_4d7da
+ ld c, a
+ dec b
+ jr z, .asm_4d7e7
+ dec b
+ jr z, .asm_4d7ec
+ ld a, c
+ cpl
+ and [hl]
+ ld [hl], a
+ jr .asm_4d7f9
+
+.asm_4d7e7
+ ld a, [hl]
+ or c
+ ld [hl], a
+ jr .asm_4d7f9
+
+.asm_4d7ec
+ ld a, d
+ cp $0
+ jr nz, .asm_4d7f5
+ ld a, [hl]
+ and c
+ jr .asm_4d7f9
+
+.asm_4d7f5
+ call GetFarByte
+ and c
+
+.asm_4d7f9
+ pop bc
+ pop hl
+ ld c, a
+ ret
+; 4d7fd
+
+Function4d7fd: ; 4d7fd
+ ld a, [PlayerLightScreenCount]
+ ld hl, $c72f
+ ld de, VTiles2
+ push de
+ push af
+ ld a, $2d
+ call Predef
+ pop af
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ pop de
+ ld a, $3e
+ call Predef
+ ret
+; 4d81e
+
+INCBIN "baserom.gbc", $4d81e, $4d860 - $4d81e
CheckPokerus: ; 4d860
; Return carry if a monster in your party has Pokerus
@@ -54877,14 +56548,14 @@ StatsScreenMain: ; 0x4dcd2
INCBIN "baserom.gbc", $4dcf7, $4dd2a - $4dcf7
StatsScreenPointerTable: ; 4dd2a
- dw $5d72 ; regular pokémon
- dw EggStatsInit ; egg
- dw $5de6
- dw $5dac
- dw $5dc6
- dw $5de6
- dw $5dd6
- dw $5d6c
+ dw $5d72 ; regular pokémon
+ dw EggStatsInit ; egg
+ dw $5de6
+ dw $5dac
+ dw $5dc6
+ dw $5de6
+ dw $5dd6
+ dw $5d6c
; 4dd3a
@@ -54901,10 +56572,10 @@ EggStatsInit: ; 4dda1
INCBIN "baserom.gbc", $4ddac, $4e21e - $4ddac
IDNoString: ; 4e21e
- db $73, "№.@"
+ db $73, "№.@"
OTString: ; 4e222
- db "OT/@"
+ db "OT/@"
; 4e226
INCBIN "baserom.gbc", $4e226, $4e33a - $4e226
@@ -54966,22 +56637,22 @@ EggStatsScreen: ; 4e33a
; 0x4e3c0
EggString: ; 4e3c0
- db "EGG@"
+ db "EGG@"
FiveQMarkString: ; 4e3c4
- db "?????@"
+ db "?????@"
EggSoonString: ; 0x4e3ca
- db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@"
+ db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@"
EggCloseString: ; 0x4e3fd
- db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@"
+ db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@"
EggMoreTimeString: ; 0x4e43d
- db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@"
+ db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@"
EggALotMoreTimeString: ; 0x4e46e
- db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@"
+ db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@"
; 0x4e497
@@ -56842,35 +58513,35 @@ PrintPartyMenuText: ; 5049a
; 0x504d2
PartyMenuStrings: ; 0x504d2
- dw ChooseAMonString
- dw UseOnWhichPKMNString
- dw WhichPKMNString
- dw TeachWhichPKMNString
- dw MoveToWhereString
- dw UseOnWhichPKMNString
- dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
- dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
- dw ToWhichPKMNString
+ dw ChooseAMonString
+ dw UseOnWhichPKMNString
+ dw WhichPKMNString
+ dw TeachWhichPKMNString
+ dw MoveToWhereString
+ dw UseOnWhichPKMNString
+ dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
+ dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
+ dw ToWhichPKMNString
ChooseAMonString: ; 0x504e4
- db "Choose a #MON.@"
+ db "Choose a #MON.@"
UseOnWhichPKMNString: ; 0x504f3
- db "Use on which ", $e1, $e2, "?@"
+ db "Use on which ", $e1, $e2, "?@"
WhichPKMNString: ; 0x50504
- db "Which ", $e1, $e2, "?@"
+ db "Which ", $e1, $e2, "?@"
TeachWhichPKMNString: ; 0x5050e
- db "Teach which ", $e1, $e2, "?@"
+ db "Teach which ", $e1, $e2, "?@"
MoveToWhereString: ; 0x5051e
- db "Move to where?@"
+ db "Move to where?@"
ChooseAFemalePKMNString: ; 0x5052d ; UNUSED
- db "Choose a ♀", $e1, $e2, ".@"
+ db "Choose a ♀", $e1, $e2, ".@"
ChooseAMalePKMNString: ; 0x5053b ; UNUSED
- db "Choose a ♂", $e1, $e2, ".@"
+ db "Choose a ♂", $e1, $e2, ".@"
ToWhichPKMNString: ; 0x50549
- db "To which ", $e1, $e2, "?@"
+ db "To which ", $e1, $e2, "?@"
YouHaveNoPKMNString: ; 0x50556
- db "You have no ", $e1, $e2, "!@"
+ db "You have no ", $e1, $e2, "!@"
Function50566: ; 50566
@@ -57714,7 +59385,39 @@ DrawHP: ; 50b10
; 50b7b
-INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b
+Function50b7b: ; 50b7b
+ push bc
+ push hl
+ ld de, $4bb5
+ call PlaceString
+ pop hl
+ pop bc
+ add hl, bc
+ ld bc, $0014
+ add hl, bc
+ ld de, TempMonAtk
+ ld bc, $0203
+ call Function50bab
+ ld de, TempMonDef
+ call Function50bab
+ ld de, TempMonSpclAtk
+ call Function50bab
+ ld de, TempMonSpclDef
+ call Function50bab
+ ld de, TempMonSpd
+ jp PrintNum
+; 50bab
+
+Function50bab: ; 50bab
+ push hl
+ call PrintNum
+ pop hl
+ ld de, $0028
+ add hl, de
+ ret
+; 50bb5
+
+INCBIN "baserom.gbc", $50bb5, $50bdd - $50bb5
GetGender: ; 50bdd
@@ -57835,7 +59538,128 @@ GetGender: ; 50bdd
ret
; 50c50
-INCBIN "baserom.gbc", $50c50, $50d0a - $50c50
+Function50c50: ; 50c50
+ ld a, [$d0eb]
+ inc a
+ ld c, a
+ ld a, $4
+ sub c
+ ld b, a
+ push hl
+ ld a, [Buffer1]
+ ld e, a
+ ld d, $0
+ ld a, $3e
+ call Function50cc9
+ ld a, b
+ and a
+ jr z, .asm_50c6f
+ ld c, a
+ ld a, $e3
+ call Function50cc9
+
+.asm_50c6f
+ pop hl
+ inc hl
+ inc hl
+ inc hl
+ ld d, h
+ ld e, l
+ ld hl, TempMonMove1
+ ld b, $0
+.asm_50c7a
+ ld a, [hli]
+ and a
+ jr z, .asm_50cc8
+ push bc
+ push hl
+ push de
+ ld hl, $cfa9
+ ld a, [hl]
+ push af
+ ld [hl], b
+ push hl
+ callab Functionf8ec
+ pop hl
+ pop af
+ ld [hl], a
+ pop de
+ pop hl
+ push hl
+ ld bc, $0014
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ ld [$d077], a
+ ld h, d
+ ld l, e
+ push hl
+ ld de, $d077
+ ld bc, $0102
+ call PrintNum
+ ld a, $f3
+ ld [hli], a
+ ld de, $d265
+ ld bc, $0102
+ call PrintNum
+ pop hl
+ ld a, [Buffer1]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ inc b
+ ld a, b
+ cp $4
+ jr nz, .asm_50c7a
+
+.asm_50cc8
+ ret
+; 50cc9
+
+Function50cc9: ; 50cc9
+.asm_50cc9
+ ld [hli], a
+ ld [hld], a
+ add hl, de
+ dec c
+ jr nz, .asm_50cc9
+ ret
+; 50cd0
+
+INCBIN "baserom.gbc", $50cd0, $50cdb - $50cd0
+
+Function50cdb: ; 50cdb
+ push hl
+ push hl
+ ld hl, PartyMon1Nickname
+ ld a, [CurPartyMon]
+ call GetNick
+ pop hl
+ call PlaceString
+ call Function5084a
+ pop hl
+ ld a, [CurPartySpecies]
+ cp $fd
+ jr z, .asm_50d09
+ push hl
+ ld bc, $fff4
+ add hl, bc
+ ld b, $0
+ call DrawEnemyHP
+ pop hl
+ ld bc, $0005
+ add hl, bc
+ push de
+ call PrintLevel
+ pop de
+
+.asm_50d09
+ ret
+; 50d0a
Function50d0a: ; 50d0a
@@ -57848,31 +59672,32 @@ Function50d0a: ; 50d0a
ld a, [de]
or b
pop de
- jr nz, .asm_50d2e
+ jr nz, Function50d2e
push de
- ld de, .data_50d21
- call $4d25
+ ld de, .string_50d21
+ call Function50d25
pop de
ld a, $1
and a
ret
-.data_50d21
- db $85
- db $8d
- db $93
- db $50
- db $1a
- db $13
- db $22
- db $1a
- db $13
- db $22
- db $1a
- db $77
- db $c9
+.string_50d21
+ db "カセト@"
+; 50d25
+
+Function50d25: ; 50d25
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hl], a
+ ret
+; 50d2e
-.asm_50d2e
+Function50d2e: ; 50d2e
push de
ld a, [de]
ld de, $4d5f
@@ -57901,7 +59726,61 @@ Function50d0a: ; 50d0a
ret
; 50d5b
-INCBIN "baserom.gbc", $50d5b, $50db9 - $50d5b
+INCBIN "baserom.gbc", $50d5b, $50d6f - $50d5b
+
+Function50d6f: ; 50d6f
+ ld de, $d25e
+ ld b, $0
+.asm_50d74
+ ld a, [de]
+ inc de
+ and a
+ jr z, .asm_50da7
+ push de
+ push hl
+ push hl
+ ld [CurSpecies], a
+ ld a, $2
+ ld [$cf61], a
+ call GetName
+ ld de, StringBuffer1
+ pop hl
+ push bc
+ call PlaceString
+ pop bc
+ ld a, b
+ ld [$d0eb], a
+ inc b
+ pop hl
+ push bc
+ ld a, [Buffer1]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ pop de
+ ld a, b
+ cp $4
+ jr z, .asm_50db8
+ jr .asm_50d74
+
+.asm_50da7
+ ld a, b
+.asm_50da8
+ push af
+ ld [hl], $e3
+ ld a, [Buffer1]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop af
+ inc a
+ cp $4
+ jr nz, .asm_50da8
+
+.asm_50db8
+ ret
+; 50db9
Function50db9: ; 50db9
ld a, [$d263]
@@ -58168,7 +60047,206 @@ GetUnownLetter: ; 51040
; 51077
-INCBIN "baserom.gbc", $51077, $511c5 - $51077
+Function51077: ; 51077
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call IsAPokemon
+ ret c
+ ld a, [rSVBK]
+ push af
+ call Function510a5
+ pop af
+ ld [rSVBK], a
+ ret
+; 5108b
+
+Function5108b: ; 5108b
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call IsAPokemon
+ ret c
+ ld a, [rSVBK]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ call Function510a5
+ call Function51103
+ pop af
+ ld [rSVBK], a
+ ret
+; 510a5
+
+Function510a5: ; 510a5
+ push de
+ call GetBaseData
+ ld a, [BasePicSize]
+ and $f
+ ld b, a
+ push bc
+ call Function510d7
+ ld a, $6
+ ld [rSVBK], a
+ ld a, b
+ ld de, $d800
+ call FarDecompress
+ pop bc
+ ld hl, Unkn1Pals
+ ld de, $d800
+ call Function512ab
+ pop hl
+ push hl
+ ld de, Unkn1Pals
+ ld c, $31
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ pop hl
+ ret
+; 510d7
+
+Function510d7: ; 510d7
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr z, .asm_510e5
+ ld a, [CurPartySpecies]
+ ld d, $48
+ jr .asm_510ea
+
+.asm_510e5
+ ld a, [UnownLetter]
+ ld d, $49
+
+.asm_510ea
+ ld hl, Function50000
+ dec a
+ ld bc, $0006
+ call AddNTimes
+ ld a, d
+ call GetFarByte
+ call Function511c5
+ push af
+ inc hl
+ ld a, d
+ call GetFarHalfword
+ pop bc
+ ret
+; 51103
+
+Function51103: ; 51103
+ ld a, $1
+ ld [rVBK], a
+ push hl
+ ld de, Unkn1Pals
+ ld c, $31
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ pop hl
+ ld de, $0310
+ add hl, de
+ push hl
+ ld a, $1
+ ld hl, BasePicSize
+ call Function307b
+ pop hl
+ and $f
+ ld de, $d990
+ ld c, $19
+ cp $5
+ jr z, .asm_5113b
+ ld de, $da40
+ ld c, $24
+ cp $6
+ jr z, .asm_5113b
+ ld de, $db10
+ ld c, $31
+
+.asm_5113b
+ push hl
+ push bc
+ call Function5114f
+ pop bc
+ pop hl
+ ld de, Unkn1Pals
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ xor a
+ ld [rVBK], a
+ ret
+; 5114f
+
+Function5114f: ; 5114f
+ ld hl, Unkn1Pals
+ swap c
+ ld a, c
+ and $f
+ ld b, a
+ ld a, c
+ and $f0
+ ld c, a
+ push bc
+ call Function512f2
+ pop bc
+.asm_51161
+ push bc
+ ld c, $0
+ call Function512f2
+ pop bc
+ dec b
+ jr nz, .asm_51161
+ ret
+; 5116c
+
+Function5116c: ; 5116c
+ ld a, [CurPartySpecies]
+ call IsAPokemon
+ ret c
+ ld a, [CurPartySpecies]
+ ld b, a
+ ld a, [UnownLetter]
+ ld c, a
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push de
+ ld hl, Function50000
+ ld a, b
+ ld d, $48
+ cp $c9
+ jr nz, .asm_51190
+ ld a, c
+ ld d, $49
+
+.asm_51190
+ dec a
+ ld bc, $0006
+ call AddNTimes
+ ld bc, $0003
+ add hl, bc
+ ld a, d
+ call GetFarByte
+ call Function511c5
+ push af
+ inc hl
+ ld a, d
+ call GetFarHalfword
+ ld de, Unkn1Pals
+ pop af
+ call FarDecompress
+ ld hl, Unkn1Pals
+ ld c, $24
+ call Function5127c
+ pop hl
+ ld de, Unkn1Pals
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 511c5
Function511c5: ; 511c5
@@ -58259,7 +60337,137 @@ DecompressPredef: ; 5125d
; 5127c
-INCBIN "baserom.gbc", $5127c, $51322 - $5127c
+Function5127c: ; 5127c
+ push de
+ push bc
+ ld a, [$c2c6]
+ and a
+ jr z, .asm_512a8
+ ld a, c
+ cp $31
+ ld de, $0310
+ jr z, .asm_51296
+ cp $24
+ ld de, $0240
+ jr z, .asm_51296
+ ld de, $0190
+
+.asm_51296
+ ld a, [hl]
+ ld b, $0
+ ld c, $8
+.asm_5129b
+ rra
+ rl b
+ dec c
+ jr nz, .asm_5129b
+ ld a, b
+ ld [hli], a
+ dec de
+ ld a, e
+ or d
+ jr nz, .asm_51296
+
+.asm_512a8
+ pop bc
+ pop de
+ ret
+; 512ab
+
+Function512ab: ; 512ab
+ ld a, b
+ cp $6
+ jr z, .asm_512bd
+ cp $5
+ jr z, .asm_512d2
+.asm_512b4
+ ld c, $70
+ call Function512f2
+ dec b
+ jr nz, .asm_512b4
+ ret
+
+.asm_512bd
+ ld c, $70
+ xor a
+ call Function512ed
+.asm_512c3
+ ld c, $10
+ xor a
+ call Function512ed
+ ld c, $60
+ call Function512f2
+ dec b
+ jr nz, .asm_512c3
+ ret
+
+.asm_512d2
+ ld c, $70
+ xor a
+ call Function512ed
+.asm_512d8
+ ld c, $20
+ xor a
+ call Function512ed
+ ld c, $50
+ call Function512f2
+ dec b
+ jr nz, .asm_512d8
+ ld c, $70
+ xor a
+ call Function512ed
+ ret
+; 512ed
+
+Function512ed: ; 512ed
+.asm_512ed
+ ld [hli], a
+ dec c
+ jr nz, .asm_512ed
+ ret
+; 512f2
+
+Function512f2: ; 512f2
+ ld a, [$c2c6]
+ and a
+ jr nz, .asm_512ff
+.asm_512f8
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_512f8
+ ret
+
+.asm_512ff
+ push bc
+.asm_51300
+ ld a, [de]
+ inc de
+ ld b, a
+ xor a
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ rr b
+ rla
+ ld [hli], a
+ dec c
+ jr nz, .asm_51300
+ pop bc
+ ret
+; 51322
Function51322: ; 51322
ld a, $1
@@ -59934,7 +62142,7 @@ Function84742: ; 84742
; 8474c
Function8474c: ; 8474c
- ld de, $005b
+ ld de, MUSIC_PRINTER
call StartMusic2
ret
; 84753
@@ -64021,7 +66229,9 @@ INCBIN "baserom.gbc", $8b960, $8ba24 - $8b960
SECTION "bank23",ROMX,BANK[$23]
-INCBIN "baserom.gbc", $8c000, $8c001 - $8c000
+Function8c000: ; 8c000
+ ret
+; 8c001
Function8c001: ; 8c001
@@ -64906,7 +67116,7 @@ Function8ccc9: ; 8ccc9
ld [hli], a
ld [hli], a
ld [hli], a
- ld de, $0005
+ ld de, MUSIC_MAGNET_TRAIN
call StartMusic2
ret
; 8cd27
@@ -67474,7 +69684,277 @@ FlyMap: ; 91c90
ret
; 91d11
-INCBIN "baserom.gbc", $91d11, $91ee4 - $91d11
+Function91d11: ; 91d11
+ ld a, [DefaultFlypoint]
+ push af
+ ld a, [$d003]
+ push af
+ ld a, e
+ ld [DefaultFlypoint], a
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ ld a, $1
+ ld [$ffaa], a
+ ld de, $62d1
+ ld hl, $87f0
+ ld bc, $2401
+ call Request2bpp
+ call Function91ed0
+ ld hl, $8780
+ ld c, $4
+ call Request2bpp
+ call Function91ff2
+ call FillKantoMap
+ call Function91de9
+ call TownMapPals
+ ld hl, VBGMap1
+ call TownMapBGUpdate
+ call FillJohtoMap
+ call Function91de9
+ call TownMapPals
+ ld hl, VBGMap0
+ call TownMapBGUpdate
+ ld b, $2
+ call GetSGBLayout
+ call Function32f9
+ xor a
+ ld [hBGMapMode], a
+ xor a
+ call Function91e1e
+.asm_91d6e
+ call Functiona57
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $3
+ jr nz, .asm_91d8f
+ ld a, [hJoypadDown]
+ and $4
+ jr nz, .asm_91d87
+ call Function91d9b
+ call Function91dcd
+ jr .asm_91d8a
+
+.asm_91d87
+ call Function91e5a
+
+.asm_91d8a
+ call DelayFrame
+ jr .asm_91d6e
+
+.asm_91d8f
+ call ClearSprites
+ pop af
+ ld [$d003], a
+ pop af
+ ld [DefaultFlypoint], a
+ ret
+; 91d9b
+
+Function91d9b: ; 91d9b
+ ld a, [hl]
+ and $20
+ jr nz, .asm_91da6
+ ld a, [hl]
+ and $10
+ jr nz, .asm_91db7
+ ret
+
+.asm_91da6
+ ld a, [hWY]
+ cp $90
+ ret z
+ call ClearSprites
+ ld a, $90
+ ld [hWY], a
+ xor a
+ call Function91e1e
+ ret
+
+.asm_91db7
+ ld a, [StatusFlags]
+ bit 6, a
+ ret z
+ ld a, [hWY]
+ and a
+ ret z
+ call ClearSprites
+ xor a
+ ld [hWY], a
+ ld a, $1
+ call Function91e1e
+ ret
+; 91dcd
+
+Function91dcd: ; 91dcd
+ ld a, [$ff9b]
+ ld e, a
+ and $f
+ ret nz
+ ld a, e
+ and $10
+ jr nz, .asm_91ddc
+ call ClearSprites
+ ret
+
+.asm_91ddc
+ ld hl, TileMap
+ ld de, Sprites
+ ld bc, $00a0
+ call CopyBytes
+ ret
+; 91de9
+
+Function91de9: ; 91de9
+ ld hl, TileMap
+ ld bc, $0014
+ ld a, $7f
+ call ByteFill
+ ld hl, $c4b4
+ ld a, $6
+ ld [hli], a
+ ld bc, $0012
+ ld a, $7
+ call ByteFill
+ ld [hl], $17
+ call GetPokemonName
+ ld hl, $c4a2
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, $5e16
+ call PlaceString
+ ret
+; 91e16
+
+INCBIN "baserom.gbc", $91e16, $91e1e - $91e16
+
+Function91e1e: ; 91e1e
+ ld [$d003], a
+ ld e, a
+ callba Function2a01f
+ ld de, TileMap
+ ld hl, Sprites
+.asm_91e2e
+ ld a, [de]
+ and a
+ jr z, .asm_91e4d
+ push de
+ ld e, a
+ push hl
+ callba GetLandmarkCoords
+ pop hl
+ ld a, d
+ sub $4
+ ld [hli], a
+ ld a, e
+ sub $4
+ ld [hli], a
+ ld a, $7f
+ ld [hli], a
+ xor a
+ ld [hli], a
+ pop de
+ inc de
+ jr .asm_91e2e
+
+.asm_91e4d
+ ld hl, Sprites
+ ld de, TileMap
+ ld bc, $00a0
+ call CopyBytes
+ ret
+; 91e5a
+
+Function91e5a: ; 91e5a
+ call Function91ea9
+ ret c
+ ld a, [DefaultFlypoint]
+ ld e, a
+ callba GetLandmarkCoords
+ ld c, e
+ ld b, d
+ ld de, $5e9c
+ ld hl, Sprites
+.asm_91e70
+ ld a, [de]
+ cp $80
+ jr z, .asm_91e91
+ add b
+ ld [hli], a
+ inc de
+ ld a, [de]
+ add c
+ ld [hli], a
+ inc de
+ ld a, [de]
+ add $78
+ ld [hli], a
+ inc de
+ push bc
+ ld c, $0
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_91e8c
+ inc c
+
+.asm_91e8c
+ ld a, c
+ ld [hli], a
+ pop bc
+ jr .asm_91e70
+
+.asm_91e91
+ ld hl, $c410
+ ld bc, $0090
+ xor a
+ call ByteFill
+ ret
+; 91e9c
+
+INCBIN "baserom.gbc", $91e9c, $91ea9 - $91e9c
+
+Function91ea9: ; 91ea9
+ ld a, [DefaultFlypoint]
+ cp $5f
+ jr z, .asm_91ebc
+ cp $2f
+ jr c, .asm_91ebc
+ ld a, [$d003]
+ and a
+ jr z, .asm_91ec4
+ jr .asm_91ec2
+
+.asm_91ebc
+ ld a, [$d003]
+ and a
+ jr nz, .asm_91ec4
+
+.asm_91ec2
+ and a
+ ret
+
+.asm_91ec4
+ ld hl, Sprites
+ ld bc, $00a0
+ xor a
+ call ByteFill
+ scf
+ ret
+; 91ed0
+
+Function91ed0: ; 91ed0
+ ld a, [DefaultFlypoint]
+ cp $5f
+ jr z, .asm_91ede
+ callba GetPlayerIcon
+ ret
+
+.asm_91ede
+ ld de, $4cb2
+ ld b, $24
+ ret
+; 91ee4
TownMapBGUpdate: ; 91ee4
; Update BG Map tiles and attributes
@@ -70370,7 +72850,60 @@ ItemIsMail: ; b9e76
SECTION "bank2F",ROMX,BANK[$2F]
-INCBIN "baserom.gbc", $bc000, $bc09c - $bc000
+StdScripts: ; bc000
+ dbw BANK(PokeCenterNurseScript), PokeCenterNurseScript
+ dbw BANK(UnknownScript_0xbc162), UnknownScript_0xbc162
+ dbw BANK(UnknownScript_0xbc166), UnknownScript_0xbc166
+ dbw BANK(UnknownScript_0xbc16a), UnknownScript_0xbc16a
+ dbw BANK(UnknownScript_0xbc16e), UnknownScript_0xbc16e
+ dbw BANK(UnknownScript_0xbc172), UnknownScript_0xbc172
+ dbw BANK(UnknownScript_0xbc176), UnknownScript_0xbc176
+ dbw BANK(UnknownScript_0xbc17a), UnknownScript_0xbc17a
+ dbw BANK(UnknownScript_0xbc185), UnknownScript_0xbc185
+ dbw BANK(UnknownScript_0xbc189), UnknownScript_0xbc189
+ dbw BANK(UnknownScript_0xbc191), UnknownScript_0xbc191
+ dbw BANK(UnknownScript_0xbc195), UnknownScript_0xbc195
+ dbw BANK(UnknownScript_0xbc19d), UnknownScript_0xbc19d
+ dbw BANK(UnknownScript_0xbc1a5), UnknownScript_0xbc1a5
+ dbw BANK(UnknownScript_0xbc1b8), UnknownScript_0xbc1b8
+ dbw BANK(UnknownScript_0xbc1bc), UnknownScript_0xbc1bc
+ dbw BANK(UnknownScript_0xbc1c0), UnknownScript_0xbc1c0
+ dbw BANK(UnknownScript_0xbc1c4), UnknownScript_0xbc1c4
+ dbw BANK(UnknownScript_0xbc23e), UnknownScript_0xbc23e
+ dbw BANK(UnknownScript_0xbc242), UnknownScript_0xbc242
+ dbw BANK(UnknownScript_0xbc1af), UnknownScript_0xbc1af
+ dbw BANK(UnknownScript_0xbc1c8), UnknownScript_0xbc1c8
+ dbw BANK(UnknownScript_0xbc25c), UnknownScript_0xbc25c
+ dbw BANK(UnknownScript_0xbc274), UnknownScript_0xbc274
+ dbw BANK(UnknownScript_0xbc3db), UnknownScript_0xbc3db
+ dbw BANK(UnknownScript_0xbc574), UnknownScript_0xbc574
+ dbw BANK(UnknownScript_0xbc62d), UnknownScript_0xbc62d
+ dbw BANK(UnknownScript_0xbc6e6), UnknownScript_0xbc6e6
+ dbw BANK(UnknownScript_0xbc6f0), UnknownScript_0xbc6f0
+ dbw BANK(UnknownScript_0xbc7ce), UnknownScript_0xbc7ce
+ dbw BANK(UnknownScript_0xbc8ac), UnknownScript_0xbc8ac
+ dbw BANK(UnknownScript_0xbc98a), UnknownScript_0xbc98a
+ dbw BANK(UnknownScript_0xbca47), UnknownScript_0xbca47
+ dbw BANK(UnknownScript_0xbca8f), UnknownScript_0xbca8f
+ dbw BANK(UnknownScript_0xbcb0a), UnknownScript_0xbcb0a
+ dbw BANK(UnknownScript_0xbcb35), UnknownScript_0xbcb35
+ dbw BANK(UnknownScript_0xbcb7f), UnknownScript_0xbcb7f
+ dbw BANK(UnknownScript_0xbcbc9), UnknownScript_0xbcbc9
+ dbw BANK(UnknownScript_0xbcbd3), UnknownScript_0xbcbd3
+ dbw BANK(UnknownScript_0xbcc2d), UnknownScript_0xbcc2d
+ dbw BANK(UnknownScript_0xbcc87), UnknownScript_0xbcc87
+ dbw BANK(UnknownScript_0xbcce1), UnknownScript_0xbcce1
+ dbw BANK(UnknownScript_0xbcd30), UnknownScript_0xbcd30
+ dbw BANK(UnknownScript_0xbcd5a), UnknownScript_0xbcd5a
+ dbw BANK(UnknownScript_0xbcd93), UnknownScript_0xbcd93
+ dbw BANK(UnknownScript_0xbcda0), UnknownScript_0xbcda0
+ dbw BANK(UnknownScript_0xbcdaa), UnknownScript_0xbcdaa
+ dbw BANK(UnknownScript_0xbcdb9), UnknownScript_0xbcdb9
+ dbw BANK(UnknownScript_0xbcdc3), UnknownScript_0xbcdc3
+ dbw BANK(UnknownScript_0xbc1a9), UnknownScript_0xbc1a9
+ dbw BANK(UnknownScript_0xbcdcd), UnknownScript_0xbcdcd
+ dbw BANK(UnknownScript_0xbce7f), UnknownScript_0xbce7f
+; bc09c
PokeCenterNurseScript: ; bc09c
; Talking to a nurse in a Pokemon Center
@@ -70503,7 +73036,2118 @@ PokeCenterNurseScript: ; bc09c
end
; bc162
-INCBIN "baserom.gbc", $bc162, $bcea5-$bc162
+UnknownScript_0xbc162: ; 0xbc162
+ 3jumptext $6c, $435a
+; 0xbc166
+
+UnknownScript_0xbc166: ; 0xbc166
+ 3jumptext $6c, $4378
+; 0xbc16a
+
+UnknownScript_0xbc16a: ; 0xbc16a
+ 3jumptext $6c, $43a3
+; 0xbc16e
+
+UnknownScript_0xbc16e: ; 0xbc16e
+ 3jumptext $6c, $43d9
+; 0xbc172
+
+UnknownScript_0xbc172: ; 0xbc172
+ 3jumptext $6c, $4448
+; 0xbc176
+
+UnknownScript_0xbc176: ; 0xbc176
+ 3jumptext $6c, $4472
+; 0xbc17a
+
+UnknownScript_0xbc17a: ; 0xbc17a
+ loadfont
+ 3writetext $6c, $448d
+ closetext
+ special $0026
+ loadmovesprites
+ end
+; 0xbc185
+
+UnknownScript_0xbc185: ; 0xbc185
+ 3jumptext $6c, $44a0
+; 0xbc189
+
+UnknownScript_0xbc189: ; 0xbc189
+ loadfont
+ 3writetext $6c, $44be
+ closetext
+ loadmovesprites
+ end
+; 0xbc191
+
+UnknownScript_0xbc191: ; 0xbc191
+ 3jumptext $6c, $44c9
+; 0xbc195
+
+UnknownScript_0xbc195: ; 0xbc195
+ loadfont
+ writebyte $0
+ special $0028
+ loadmovesprites
+ end
+; 0xbc19d
+
+UnknownScript_0xbc19d: ; 0xbc19d
+ loadfont
+ writebyte $4
+ special $0028
+ loadmovesprites
+ end
+; 0xbc1a5
+
+UnknownScript_0xbc1a5: ; 0xbc1a5
+ 3jumptext $6c, $4526
+; 0xbc1a9
+
+UnknownScript_0xbc1a9: ; 0xbc1a9
+ loadfont
+ special $001c
+ loadmovesprites
+ end
+; 0xbc1af
+
+UnknownScript_0xbc1af: ; 0xbc1af
+ playsound $0008
+ pause 15
+ playsound $0027
+ end
+; 0xbc1b8
+
+UnknownScript_0xbc1b8: ; 0xbc1b8
+ 3jump BANK(UnknownScript_0xcd4b), UnknownScript_0xcd4b
+; 0xbc1bc
+
+UnknownScript_0xbc1bc: ; 0xbc1bc
+ 3jump BANK(UnknownScript_0xcf5d), UnknownScript_0xcf5d
+; 0xbc1c0
+
+UnknownScript_0xbc1c0: ; 0xbc1c0
+ 3jumptext $6c, $457f
+; 0xbc1c4
+
+UnknownScript_0xbc1c4: ; 0xbc1c4
+ 3jumptext $6c, $459c
+; 0xbc1c8
+
+UnknownScript_0xbc1c8: ; 0xbc1c8
+ checkcode $b
+ if_equal $1, UnknownScript_0xbc1e7
+ if_equal $2, UnknownScript_0xbc1ec
+ if_equal $3, UnknownScript_0xbc1f1
+ if_equal $4, UnknownScript_0xbc1f6
+ if_equal $5, UnknownScript_0xbc1fb
+ if_equal $6, UnknownScript_0xbc200
+ stringtotext UnknownRawText_0xbc205, $0
+ end
+; 0xbc1e7
+
+UnknownScript_0xbc1e7: ; 0xbc1e7
+ stringtotext UnknownRawText_0xbc20c, $0
+ end
+; 0xbc1ec
+
+UnknownScript_0xbc1ec: ; 0xbc1ec
+ stringtotext UnknownRawText_0xbc213, $0
+ end
+; 0xbc1f1
+
+UnknownScript_0xbc1f1: ; 0xbc1f1
+ stringtotext UnknownRawText_0xbc21b, $0
+ end
+; 0xbc1f6
+
+UnknownScript_0xbc1f6: ; 0xbc1f6
+ stringtotext UnknownRawText_0xbc225, $0
+ end
+; 0xbc1fb
+
+UnknownScript_0xbc1fb: ; 0xbc1fb
+ stringtotext UnknownRawText_0xbc22e, $0
+ end
+; 0xbc200
+
+UnknownScript_0xbc200: ; 0xbc200
+ stringtotext UnknownRawText_0xbc235, $0
+ end
+; 0xbc205
+
+UnknownRawText_0xbc205: ; bc205
+ db "SUNDAY@"
+; bc20c
+
+UnknownRawText_0xbc20c: ; bc20c
+ db "MONDAY@"
+; bc213
+
+UnknownRawText_0xbc213: ; bc213
+ db "TUESDAY@"
+; bc21b
+
+UnknownRawText_0xbc21b: ; bc21b
+ db "WEDNESDAY@"
+; bc225
+
+UnknownRawText_0xbc225: ; bc225
+ db "THURSDAY@"
+; bc22e
+
+UnknownRawText_0xbc22e: ; bc22e
+ db "FRIDAY@"
+; bc235
+
+UnknownRawText_0xbc235: ; bc235
+ db "SATURDAY@"
+; bc23e
+
+UnknownScript_0xbc23e: ; 0xbc23e
+ clearbit1 $06cd
+ end
+; 0xbc242
+
+UnknownScript_0xbc242: ; 0xbc242
+ setbit2 $0013
+ setbit1 $06cf
+ setbit1 $06d1
+ clearbit1 $06ce
+ clearbit1 $0025
+ setbit1 $0756
+ specialphonecall $0004
+ domaptrigger GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, $1
+ end
+; 0xbc25c
+
+UnknownScript_0xbc25c: ; 0xbc25c
+ special $0034
+ 2call UnknownScript_0xbc380
+ setbit1 $0747
+ clearbit1 $0748
+ setbit1 $02d2
+ warp GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE, $0, $4
+ applymovement $0, MovementData_0xbcea1
+
+UnknownScript_0xbc274: ; bc274
+ clearbit2 $0011
+ clearbit1 $02d2
+ clearbit1 $0313
+ clearbit1 $0314
+ clearbit1 $0315
+ clearbit1 $0316
+ loadfont
+ 3writetext $6c, $45bf
+ closetext
+ special $0014
+ RAM2MEM $0
+ if_equal $1, UnknownScript_0xbc31e
+ if_equal $2, UnknownScript_0xbc332
+ if_equal $3, UnknownScript_0xbc343
+ 3writetext $6c, $4681
+ keeptextopen
+ waitbutton
+ verbosegiveitem BERRY, 1
+ iffalse UnknownScript_0xbc375
+ 3writetext $6c, $46b7
+ keeptextopen
+ 2jump $42b6
+; 0xbc2b1
+
+UnknownScript_0xbc2b1: ; 0xbc2b1
+ 3writetext $6c, $465b
+ keeptextopen
+ checkbit1 $0308
+ iffalse $42c4
+ 3writetext $6c, $46d9
+ closetext
+ special $0017
+ special $0015
+ if_equal $0, $42d4
+ if_equal $2, $42d4
+ 3writetext $6c, $470d
+ closetext
+ loadmovesprites
+ dotrigger $0
+ domaptrigger GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE, $0
+ setbit1 $0716
+ setbit1 $0717
+ setbit1 $0718
+ setbit1 $0719
+ setbit1 $071a
+ setbit1 $071b
+ setbit1 $071c
+ setbit1 $071d
+ setbit1 $071e
+ setbit1 $071f
+ setbit1 $0720
+ setbit1 $0721
+ setbit1 $0722
+ setbit1 $0723
+ setbit1 $0724
+ setbit1 $0725
+ setbit1 $0726
+ setbit1 $0727
+ setbit1 $0728
+ setbit1 $0729
+ setbit2 $0051
+ special $003c
+ end
+; 0xbc31e
+
+UnknownScript_0xbc31e: ; 0xbc31e
+ setbit1 $0000
+ itemtotext SUN_STONE, $1
+ 3writetext $6c, $4621
+ closetext
+ verbosegiveitem SUN_STONE, 1
+ iffalse UnknownScript_0xbc354
+ 2jump UnknownScript_0xbc2b1
+; 0xbc332
+
+UnknownScript_0xbc332: ; 0xbc332
+ itemtotext EVERSTONE, $1
+ 3writetext $6c, $4621
+ closetext
+ verbosegiveitem EVERSTONE, 1
+ iffalse UnknownScript_0xbc35f
+ 2jump UnknownScript_0xbc2b1
+; 0xbc343
+
+UnknownScript_0xbc343: ; 0xbc343
+ itemtotext GOLD_BERRY, $1
+ 3writetext $6c, $4621
+ closetext
+ verbosegiveitem GOLD_BERRY, 1
+ iffalse UnknownScript_0xbc36a
+ 2jump UnknownScript_0xbc2b1
+; 0xbc354
+
+UnknownScript_0xbc354: ; 0xbc354
+ 3writetext $6c, $48cc
+ keeptextopen
+ setbit1 $0313
+ 2jump UnknownScript_0xbc2b1
+; 0xbc35f
+
+UnknownScript_0xbc35f: ; 0xbc35f
+ 3writetext $6c, $48cc
+ keeptextopen
+ setbit1 $0314
+ 2jump UnknownScript_0xbc2b1
+; 0xbc36a
+
+UnknownScript_0xbc36a: ; 0xbc36a
+ 3writetext $6c, $48cc
+ keeptextopen
+ setbit1 $0315
+ 2jump UnknownScript_0xbc2b1
+; 0xbc375
+
+UnknownScript_0xbc375: ; 0xbc375
+ 3writetext $6c, $48cc
+ keeptextopen
+ setbit1 $0316
+ 2jump $42a9
+; 0xbc380
+
+UnknownScript_0xbc380: ; 0xbc380
+ checkbit1 $0716
+ iftrue $4389
+ clearbit1 $0720
+ checkbit1 $0717
+ iftrue $4392
+ clearbit1 $0721
+ checkbit1 $0718
+ iftrue $439b
+ clearbit1 $0722
+ checkbit1 $0719
+ iftrue $43a4
+ clearbit1 $0723
+ checkbit1 $071a
+ iftrue $43ad
+ clearbit1 $0724
+ checkbit1 $071b
+ iftrue $43b6
+ clearbit1 $0725
+ checkbit1 $071c
+ iftrue $43bf
+ clearbit1 $0726
+ checkbit1 $071d
+ iftrue $43c8
+ clearbit1 $0727
+ checkbit1 $071e
+ iftrue $43d1
+ clearbit1 $0728
+ checkbit1 $071f
+ iftrue $43da
+ clearbit1 $0729
+ end
+; 0xbc3db
+
+UnknownScript_0xbc3db: ; 0xbc3db
+ setbit1 $06cb
+ setbit1 $06ce
+ setbit1 $06cd
+ setbit1 $06d0
+ setbit1 $06f3
+ setbit1 $06e9
+ setbit1 $06f4
+ setbit1 $06d5
+ setbit1 $06de
+ setbit1 $06dd
+ setbit1 $06df
+ setbit1 $06c0
+ setbit1 $06e4
+ setbit1 $0025
+ setbit1 $06be
+ setbit1 $06bf
+ setbit1 $06c1
+ setbit1 $06f9
+ setbit1 $06fd
+ setbit1 $06ff
+ setbit1 $0700
+ setbit1 $0702
+ setbit1 $0703
+ setbit1 $0704
+ setbit1 $070d
+ setbit1 $070e
+ setbit1 $070f
+ setbit1 $0710
+ setbit1 $0715
+ setbit1 $0716
+ setbit1 $0717
+ setbit1 $0718
+ setbit1 $0719
+ setbit1 $071a
+ setbit1 $071b
+ setbit1 $071c
+ setbit1 $071d
+ setbit1 $071e
+ setbit1 $071f
+ setbit1 $0720
+ setbit1 $0721
+ setbit1 $0722
+ setbit1 $0723
+ setbit1 $0724
+ setbit1 $0725
+ setbit1 $0726
+ setbit1 $0727
+ setbit1 $0728
+ setbit1 $0729
+ setbit1 $072c
+ setbit1 $072f
+ setbit1 $072d
+ setbit1 $0735
+ setbit1 $0736
+ setbit1 $073c
+ setbit1 $073d
+ setbit1 $0741
+ setbit1 $0742
+ setbit1 $0743
+ setbit1 $0744
+ setbit1 $02a4
+ setbit1 $02af
+ setbit1 $0749
+ setbit1 $06d3
+ setbit1 $074d
+ setbit1 $0712
+ setbit1 $0713
+ setbit1 $0711
+ setbit1 $06d4
+ setbit1 $0304
+ setbit1 $0307
+ setbit1 $06d8
+ setbit1 $06c3
+ setbit1 $06c2
+ setbit1 $06c6
+ setbit1 $075f
+ setbit1 $0731
+ setbit1 $074a
+ setbit1 $0762
+ setbit1 $0738
+ setbit1 $073a
+ setbit1 $073b
+ setbit1 $0733
+ setbit1 $073f
+ setbit1 $078d
+ setbit1 $0766
+ setbit1 $0768
+ setbit1 $0769
+ setbit1 $076a
+ setbit1 $078e
+ setbit1 $078f
+ setbit1 $0790
+ setbit1 $0791
+ setbit1 $0793
+ setbit1 $07a4
+ setbit1 $07a4
+ setbit1 $07a5
+ setbit1 $06ec
+ setbit1 $06ed
+ setbit1 $06f0
+ setbit1 $07a9
+ setbit1 $07aa
+ setbit1 $06c8
+ setbit1 $07ac
+ setbit1 $07ad
+ setbit1 $07b5
+ setbit1 $07b6
+ setbit1 $07c5
+ setbit1 $07b7
+ setbit1 $07b0
+ setbit1 $07af
+ setbit1 $07ae
+ setbit1 $07cf
+ setbit2 $000e
+ setbit2 $0017
+ variablesprite $4, $52
+ variablesprite $5, $4
+ variablesprite $6, $35
+ variablesprite $7, $a
+ variablesprite $8, $a
+ variablesprite $9, $a
+ variablesprite $a, $a
+ variablesprite $b, $28
+ variablesprite $c, $28
+ setbit1 $00fb
+ setbit1 $076d
+ setbit1 $076c
+ setbit1 $076e
+ setbit1 $076f
+ setbit1 $0773
+ setbit1 $0776
+ setbit1 $0777
+ setbit1 $0779
+ setbit1 $0772
+ setbit1 $077b
+ setbit1 $0036
+ return
+; 0xbc574
+
+UnknownScript_0xbc574: ; 0xbc574
+ special $005d
+ checkcode $17
+ if_equal $5, $45c9
+ if_equal $7, UnknownScript_0xbc5ce
+ if_equal $b, UnknownScript_0xbc5d3
+ if_equal $d, UnknownScript_0xbc5d8
+ if_equal $f, UnknownScript_0xbc5dd
+ if_equal $10, UnknownScript_0xbc5e2
+ if_equal $11, UnknownScript_0xbc5e7
+ if_equal $13, UnknownScript_0xbc5ec
+ if_equal $14, UnknownScript_0xbc5f1
+ if_equal $16, UnknownScript_0xbc5f6
+ if_equal $17, UnknownScript_0xbc5fb
+ if_equal $18, UnknownScript_0xbc600
+ if_equal $1b, UnknownScript_0xbc605
+ if_equal $1c, UnknownScript_0xbc60a
+ if_equal $1d, UnknownScript_0xbc60f
+ if_equal $1e, UnknownScript_0xbc614
+ if_equal $20, UnknownScript_0xbc619
+ if_equal $21, UnknownScript_0xbc61e
+ if_equal $22, UnknownScript_0xbc623
+ if_equal $23, UnknownScript_0xbc628
+ 3writetext $6c, $49fe
+ end
+; 0xbc5ce
+
+UnknownScript_0xbc5ce: ; 0xbc5ce
+ 3writetext $6c, $4d9f
+ end
+; 0xbc5d3
+
+UnknownScript_0xbc5d3: ; 0xbc5d3
+ 3writetext $6c, $502e
+ end
+; 0xbc5d8
+
+UnknownScript_0xbc5d8: ; 0xbc5d8
+ 3writetext $6c, $542d
+ end
+; 0xbc5dd
+
+UnknownScript_0xbc5dd: ; 0xbc5dd
+ 3writetext $6c, $5800
+ end
+; 0xbc5e2
+
+UnknownScript_0xbc5e2: ; 0xbc5e2
+ 3writetext $6c, $5a71
+ end
+; 0xbc5e7
+
+UnknownScript_0xbc5e7: ; 0xbc5e7
+ 3writetext $6c, $5cd5
+ end
+; 0xbc5ec
+
+UnknownScript_0xbc5ec: ; 0xbc5ec
+ 3writetext $29, $4000
+ end
+; 0xbc5f1
+
+UnknownScript_0xbc5f1: ; 0xbc5f1
+ 3writetext $29, $41c0
+ end
+; 0xbc5f6
+
+UnknownScript_0xbc5f6: ; 0xbc5f6
+ 3writetext $29, $4642
+ end
+; 0xbc5fb
+
+UnknownScript_0xbc5fb: ; 0xbc5fb
+ 3writetext $29, $4829
+ end
+; 0xbc600
+
+UnknownScript_0xbc600: ; 0xbc600
+ 3writetext $29, $4a31
+ end
+; 0xbc605
+
+UnknownScript_0xbc605: ; 0xbc605
+ 3writetext $29, $4ed4
+ end
+; 0xbc60a
+
+UnknownScript_0xbc60a: ; 0xbc60a
+ 3writetext $29, $50d5
+ end
+; 0xbc60f
+
+UnknownScript_0xbc60f: ; 0xbc60f
+ 3writetext $29, $52e2
+ end
+; 0xbc614
+
+UnknownScript_0xbc614: ; 0xbc614
+ 3writetext $29, $5545
+ end
+; 0xbc619
+
+UnknownScript_0xbc619: ; 0xbc619
+ 3writetext $29, $5937
+ end
+; 0xbc61e
+
+UnknownScript_0xbc61e: ; 0xbc61e
+ 3writetext $29, $5bc4
+ end
+; 0xbc623
+
+UnknownScript_0xbc623: ; 0xbc623
+ 3writetext $29, $5dc6
+ end
+; 0xbc628
+
+UnknownScript_0xbc628: ; 0xbc628
+ 3writetext $29, $600c
+ end
+; 0xbc62d
+
+UnknownScript_0xbc62d: ; 0xbc62d
+ special $005d
+ checkcode $17
+ if_equal $5, $4682
+ if_equal $7, UnknownScript_0xbc687
+ if_equal $b, UnknownScript_0xbc68c
+ if_equal $d, UnknownScript_0xbc691
+ if_equal $f, UnknownScript_0xbc696
+ if_equal $10, UnknownScript_0xbc69b
+ if_equal $11, UnknownScript_0xbc6a0
+ if_equal $13, UnknownScript_0xbc6a5
+ if_equal $14, UnknownScript_0xbc6aa
+ if_equal $16, UnknownScript_0xbc6af
+ if_equal $17, UnknownScript_0xbc6b4
+ if_equal $18, UnknownScript_0xbc6b9
+ if_equal $1b, UnknownScript_0xbc6be
+ if_equal $1c, UnknownScript_0xbc6c3
+ if_equal $1d, UnknownScript_0xbc6c8
+ if_equal $1e, UnknownScript_0xbc6cd
+ if_equal $20, UnknownScript_0xbc6d2
+ if_equal $21, UnknownScript_0xbc6d7
+ if_equal $22, UnknownScript_0xbc6dc
+ if_equal $23, UnknownScript_0xbc6e1
+ 3writetext $6c, $4a82
+ end
+; 0xbc687
+
+UnknownScript_0xbc687: ; 0xbc687
+ 3writetext $6c, $4e2c
+ end
+; 0xbc68c
+
+UnknownScript_0xbc68c: ; 0xbc68c
+ 3writetext $6c, $50d3
+ end
+; 0xbc691
+
+UnknownScript_0xbc691: ; 0xbc691
+ 3writetext $6c, $54e4
+ end
+; 0xbc696
+
+UnknownScript_0xbc696: ; 0xbc696
+ 3writetext $6c, $587b
+ end
+; 0xbc69b
+
+UnknownScript_0xbc69b: ; 0xbc69b
+ 3writetext $6c, $5b1d
+ end
+; 0xbc6a0
+
+UnknownScript_0xbc6a0: ; 0xbc6a0
+ 3writetext $6c, $5d85
+ end
+; 0xbc6a5
+
+UnknownScript_0xbc6a5: ; 0xbc6a5
+ 3writetext $29, $40a9
+ end
+; 0xbc6aa
+
+UnknownScript_0xbc6aa: ; 0xbc6aa
+ 3writetext $29, $426a
+ end
+; 0xbc6af
+
+UnknownScript_0xbc6af: ; 0xbc6af
+ 3writetext $29, $470b
+ end
+; 0xbc6b4
+
+UnknownScript_0xbc6b4: ; 0xbc6b4
+ 3writetext $29, $48fc
+ end
+; 0xbc6b9
+
+UnknownScript_0xbc6b9: ; 0xbc6b9
+ 3writetext $29, $4b03
+ end
+; 0xbc6be
+
+UnknownScript_0xbc6be: ; 0xbc6be
+ 3writetext $29, $4fc8
+ end
+; 0xbc6c3
+
+UnknownScript_0xbc6c3: ; 0xbc6c3
+ 3writetext $29, $5175
+ end
+; 0xbc6c8
+
+UnknownScript_0xbc6c8: ; 0xbc6c8
+ 3writetext $29, $5383
+ end
+; 0xbc6cd
+
+UnknownScript_0xbc6cd: ; 0xbc6cd
+ 3writetext $29, $5621
+ end
+; 0xbc6d2
+
+UnknownScript_0xbc6d2: ; 0xbc6d2
+ 3writetext $29, $59bc
+ end
+; 0xbc6d7
+
+UnknownScript_0xbc6d7: ; 0xbc6d7
+ 3writetext $29, $5c4b
+ end
+; 0xbc6dc
+
+UnknownScript_0xbc6dc: ; 0xbc6dc
+ 3writetext $29, $5e63
+ end
+; 0xbc6e1
+
+UnknownScript_0xbc6e1: ; 0xbc6e1
+ 3writetext $29, $6076
+ end
+; 0xbc6e6
+
+UnknownScript_0xbc6e6: ; 0xbc6e6
+ 3writetext $6c, $49c4
+ playsound $0093
+ waitbutton
+ keeptextopen
+ end
+; 0xbc6f0
+
+UnknownScript_0xbc6f0: ; 0xbc6f0
+ checkcode $17
+ if_equal $5, $4742
+ if_equal $7, UnknownScript_0xbc749
+ if_equal $b, UnknownScript_0xbc750
+ if_equal $d, UnknownScript_0xbc757
+ if_equal $f, UnknownScript_0xbc75e
+ if_equal $10, UnknownScript_0xbc765
+ if_equal $11, UnknownScript_0xbc76c
+ if_equal $13, UnknownScript_0xbc773
+ if_equal $14, UnknownScript_0xbc77a
+ if_equal $16, UnknownScript_0xbc781
+ if_equal $17, UnknownScript_0xbc788
+ if_equal $18, UnknownScript_0xbc78f
+ if_equal $1b, UnknownScript_0xbc796
+ if_equal $1c, UnknownScript_0xbc79d
+ if_equal $1d, UnknownScript_0xbc7a4
+ if_equal $1e, UnknownScript_0xbc7ab
+ if_equal $20, UnknownScript_0xbc7b2
+ if_equal $21, UnknownScript_0xbc7b9
+ if_equal $22, UnknownScript_0xbc7c0
+ if_equal $23, UnknownScript_0xbc7c7
+ 3writetext $6c, $4adb
+ closetext
+ loadmovesprites
+ end
+; 0xbc749
+
+UnknownScript_0xbc749: ; 0xbc749
+ 3writetext $6c, $4e89
+ closetext
+ loadmovesprites
+ end
+; 0xbc750
+
+UnknownScript_0xbc750: ; 0xbc750
+ 3writetext $6c, $5136
+ closetext
+ loadmovesprites
+ end
+; 0xbc757
+
+UnknownScript_0xbc757: ; 0xbc757
+ 3writetext $6c, $5553
+ closetext
+ loadmovesprites
+ end
+; 0xbc75e
+
+UnknownScript_0xbc75e: ; 0xbc75e
+ 3writetext $6c, $58d7
+ closetext
+ loadmovesprites
+ end
+; 0xbc765
+
+UnknownScript_0xbc765: ; 0xbc765
+ 3writetext $6c, $5b8e
+ closetext
+ loadmovesprites
+ end
+; 0xbc76c
+
+UnknownScript_0xbc76c: ; 0xbc76c
+ 3writetext $6c, $5db9
+ closetext
+ loadmovesprites
+ end
+; 0xbc773
+
+UnknownScript_0xbc773: ; 0xbc773
+ 3writetext $29, $40f8
+ closetext
+ loadmovesprites
+ end
+; 0xbc77a
+
+UnknownScript_0xbc77a: ; 0xbc77a
+ 3writetext $29, $42ab
+ closetext
+ loadmovesprites
+ end
+; 0xbc781
+
+UnknownScript_0xbc781: ; 0xbc781
+ 3writetext $29, $4730
+ closetext
+ loadmovesprites
+ end
+; 0xbc788
+
+UnknownScript_0xbc788: ; 0xbc788
+ 3writetext $29, $494d
+ closetext
+ loadmovesprites
+ end
+; 0xbc78f
+
+UnknownScript_0xbc78f: ; 0xbc78f
+ 3writetext $29, $4b47
+ closetext
+ loadmovesprites
+ end
+; 0xbc796
+
+UnknownScript_0xbc796: ; 0xbc796
+ 3writetext $29, $502e
+ closetext
+ loadmovesprites
+ end
+; 0xbc79d
+
+UnknownScript_0xbc79d: ; 0xbc79d
+ 3writetext $29, $51ac
+ closetext
+ loadmovesprites
+ end
+; 0xbc7a4
+
+UnknownScript_0xbc7a4: ; 0xbc7a4
+ 3writetext $29, $53de
+ closetext
+ loadmovesprites
+ end
+; 0xbc7ab
+
+UnknownScript_0xbc7ab: ; 0xbc7ab
+ 3writetext $29, $5666
+ closetext
+ loadmovesprites
+ end
+; 0xbc7b2
+
+UnknownScript_0xbc7b2: ; 0xbc7b2
+ 3writetext $29, $5a28
+ closetext
+ loadmovesprites
+ end
+; 0xbc7b9
+
+UnknownScript_0xbc7b9: ; 0xbc7b9
+ 3writetext $29, $5c8e
+ closetext
+ loadmovesprites
+ end
+; 0xbc7c0
+
+UnknownScript_0xbc7c0: ; 0xbc7c0
+ 3writetext $29, $5ea8
+ closetext
+ loadmovesprites
+ end
+; 0xbc7c7
+
+UnknownScript_0xbc7c7: ; 0xbc7c7
+ 3writetext $29, $60b5
+ closetext
+ loadmovesprites
+ end
+; 0xbc7ce
+
+UnknownScript_0xbc7ce: ; 0xbc7ce
+ checkcode $17
+ if_equal $5, $4820
+ if_equal $7, UnknownScript_0xbc827
+ if_equal $b, UnknownScript_0xbc82e
+ if_equal $d, UnknownScript_0xbc835
+ if_equal $f, UnknownScript_0xbc83c
+ if_equal $10, UnknownScript_0xbc843
+ if_equal $11, UnknownScript_0xbc84a
+ if_equal $13, UnknownScript_0xbc851
+ if_equal $14, UnknownScript_0xbc858
+ if_equal $16, UnknownScript_0xbc85f
+ if_equal $17, UnknownScript_0xbc866
+ if_equal $18, UnknownScript_0xbc86d
+ if_equal $1b, UnknownScript_0xbc874
+ if_equal $1c, UnknownScript_0xbc87b
+ if_equal $1d, UnknownScript_0xbc882
+ if_equal $1e, UnknownScript_0xbc889
+ if_equal $20, UnknownScript_0xbc890
+ if_equal $21, UnknownScript_0xbc897
+ if_equal $22, UnknownScript_0xbc89e
+ if_equal $23, UnknownScript_0xbc8a5
+ 3writetext $6c, $4afd
+ closetext
+ loadmovesprites
+ end
+; 0xbc827
+
+UnknownScript_0xbc827: ; 0xbc827
+ 3writetext $6c, $4ea2
+ closetext
+ loadmovesprites
+ end
+; 0xbc82e
+
+UnknownScript_0xbc82e: ; 0xbc82e
+ 3writetext $6c, $517b
+ closetext
+ loadmovesprites
+ end
+; 0xbc835
+
+UnknownScript_0xbc835: ; 0xbc835
+ 3writetext $6c, $5584
+ closetext
+ loadmovesprites
+ end
+; 0xbc83c
+
+UnknownScript_0xbc83c: ; 0xbc83c
+ 3writetext $6c, $5908
+ closetext
+ loadmovesprites
+ end
+; 0xbc843
+
+UnknownScript_0xbc843: ; 0xbc843
+ 3writetext $6c, $5bd2
+ closetext
+ loadmovesprites
+ end
+; 0xbc84a
+
+UnknownScript_0xbc84a: ; 0xbc84a
+ 3writetext $6c, $5df4
+ closetext
+ loadmovesprites
+ end
+; 0xbc851
+
+UnknownScript_0xbc851: ; 0xbc851
+ 3writetext $29, $4126
+ closetext
+ loadmovesprites
+ end
+; 0xbc858
+
+UnknownScript_0xbc858: ; 0xbc858
+ 3writetext $29, $42f2
+ closetext
+ loadmovesprites
+ end
+; 0xbc85f
+
+UnknownScript_0xbc85f: ; 0xbc85f
+ 3writetext $29, $4794
+ closetext
+ loadmovesprites
+ end
+; 0xbc866
+
+UnknownScript_0xbc866: ; 0xbc866
+ 3writetext $29, $498a
+ closetext
+ loadmovesprites
+ end
+; 0xbc86d
+
+UnknownScript_0xbc86d: ; 0xbc86d
+ 3writetext $29, $4b87
+ closetext
+ loadmovesprites
+ end
+; 0xbc874
+
+UnknownScript_0xbc874: ; 0xbc874
+ 3writetext $29, $505f
+ closetext
+ loadmovesprites
+ end
+; 0xbc87b
+
+UnknownScript_0xbc87b: ; 0xbc87b
+ 3writetext $29, $51ee
+ closetext
+ loadmovesprites
+ end
+; 0xbc882
+
+UnknownScript_0xbc882: ; 0xbc882
+ 3writetext $29, $5412
+ closetext
+ loadmovesprites
+ end
+; 0xbc889
+
+UnknownScript_0xbc889: ; 0xbc889
+ 3writetext $29, $56b6
+ closetext
+ loadmovesprites
+ end
+; 0xbc890
+
+UnknownScript_0xbc890: ; 0xbc890
+ 3writetext $29, $5a5a
+ closetext
+ loadmovesprites
+ end
+; 0xbc897
+
+UnknownScript_0xbc897: ; 0xbc897
+ 3writetext $29, $5cc5
+ closetext
+ loadmovesprites
+ end
+; 0xbc89e
+
+UnknownScript_0xbc89e: ; 0xbc89e
+ 3writetext $29, $5ed6
+ closetext
+ loadmovesprites
+ end
+; 0xbc8a5
+
+UnknownScript_0xbc8a5: ; 0xbc8a5
+ 3writetext $29, $60e2
+ closetext
+ loadmovesprites
+ end
+; 0xbc8ac
+
+UnknownScript_0xbc8ac: ; 0xbc8ac
+ checkcode $17
+ if_equal $5, $48fe
+ if_equal $7, UnknownScript_0xbc905
+ if_equal $b, UnknownScript_0xbc90c
+ if_equal $d, UnknownScript_0xbc913
+ if_equal $f, UnknownScript_0xbc91a
+ if_equal $10, UnknownScript_0xbc921
+ if_equal $11, UnknownScript_0xbc928
+ if_equal $13, UnknownScript_0xbc92f
+ if_equal $14, UnknownScript_0xbc936
+ if_equal $16, UnknownScript_0xbc93d
+ if_equal $17, UnknownScript_0xbc944
+ if_equal $18, UnknownScript_0xbc94b
+ if_equal $1b, UnknownScript_0xbc952
+ if_equal $1c, UnknownScript_0xbc959
+ if_equal $1d, UnknownScript_0xbc960
+ if_equal $1e, UnknownScript_0xbc967
+ if_equal $20, UnknownScript_0xbc96e
+ if_equal $21, UnknownScript_0xbc975
+ if_equal $22, UnknownScript_0xbc97c
+ if_equal $23, UnknownScript_0xbc983
+ 3writetext $6c, $4b42
+ closetext
+ loadmovesprites
+ end
+; 0xbc905
+
+UnknownScript_0xbc905: ; 0xbc905
+ 3writetext $6c, $4ebc
+ closetext
+ loadmovesprites
+ end
+; 0xbc90c
+
+UnknownScript_0xbc90c: ; 0xbc90c
+ 3writetext $6c, $51c4
+ closetext
+ loadmovesprites
+ end
+; 0xbc913
+
+UnknownScript_0xbc913: ; 0xbc913
+ 3writetext $6c, $55b6
+ closetext
+ loadmovesprites
+ end
+; 0xbc91a
+
+UnknownScript_0xbc91a: ; 0xbc91a
+ 3writetext $6c, $5936
+ closetext
+ loadmovesprites
+ end
+; 0xbc921
+
+UnknownScript_0xbc921: ; 0xbc921
+ 3writetext $6c, $5c06
+ closetext
+ loadmovesprites
+ end
+; 0xbc928
+
+UnknownScript_0xbc928: ; 0xbc928
+ 3writetext $6c, $5e50
+ closetext
+ loadmovesprites
+ end
+; 0xbc92f
+
+UnknownScript_0xbc92f: ; 0xbc92f
+ 3writetext $29, $4158
+ closetext
+ loadmovesprites
+ end
+; 0xbc936
+
+UnknownScript_0xbc936: ; 0xbc936
+ 3writetext $29, $434a
+ closetext
+ loadmovesprites
+ end
+; 0xbc93d
+
+UnknownScript_0xbc93d: ; 0xbc93d
+ 3writetext $29, $47eb
+ closetext
+ loadmovesprites
+ end
+; 0xbc944
+
+UnknownScript_0xbc944: ; 0xbc944
+ 3writetext $29, $49bd
+ closetext
+ loadmovesprites
+ end
+; 0xbc94b
+
+UnknownScript_0xbc94b: ; 0xbc94b
+ 3writetext $29, $4bcd
+ closetext
+ loadmovesprites
+ end
+; 0xbc952
+
+UnknownScript_0xbc952: ; 0xbc952
+ 3writetext $29, $508c
+ closetext
+ loadmovesprites
+ end
+; 0xbc959
+
+UnknownScript_0xbc959: ; 0xbc959
+ 3writetext $29, $5216
+ closetext
+ loadmovesprites
+ end
+; 0xbc960
+
+UnknownScript_0xbc960: ; 0xbc960
+ 3writetext $29, $5446
+ closetext
+ loadmovesprites
+ end
+; 0xbc967
+
+UnknownScript_0xbc967: ; 0xbc967
+ 3writetext $29, $56e2
+ closetext
+ loadmovesprites
+ end
+; 0xbc96e
+
+UnknownScript_0xbc96e: ; 0xbc96e
+ 3writetext $29, $5aa6
+ closetext
+ loadmovesprites
+ end
+; 0xbc975
+
+UnknownScript_0xbc975: ; 0xbc975
+ 3writetext $29, $5cfa
+ closetext
+ loadmovesprites
+ end
+; 0xbc97c
+
+UnknownScript_0xbc97c: ; 0xbc97c
+ 3writetext $29, $5f06
+ closetext
+ loadmovesprites
+ end
+; 0xbc983
+
+UnknownScript_0xbc983: ; 0xbc983
+ 3writetext $29, $6144
+ closetext
+ loadmovesprites
+ end
+; 0xbc98a
+
+UnknownScript_0xbc98a: ; 0xbc98a
+ checkcode $17
+ if_equal $5, $49d0
+ if_equal $7, UnknownScript_0xbc9d7
+ if_equal $b, UnknownScript_0xbc9de
+ if_equal $d, UnknownScript_0xbc9e5
+ if_equal $f, UnknownScript_0xbc9ec
+ if_equal $10, UnknownScript_0xbc9f3
+ if_equal $11, UnknownScript_0xbc9fa
+ if_equal $13, UnknownScript_0xbca01
+ if_equal $14, UnknownScript_0xbca08
+ if_equal $17, UnknownScript_0xbca0f
+ if_equal $18, UnknownScript_0xbca16
+ if_equal $1b, UnknownScript_0xbca1d
+ if_equal $1d, UnknownScript_0xbca24
+ if_equal $1e, UnknownScript_0xbca2b
+ if_equal $20, UnknownScript_0xbca32
+ if_equal $21, UnknownScript_0xbca39
+ if_equal $23, UnknownScript_0xbca40
+ 3writetext $6c, $4b75
+ closetext
+ loadmovesprites
+ end
+; 0xbc9d7
+
+UnknownScript_0xbc9d7: ; 0xbc9d7
+ 3writetext $6c, $4edc
+ closetext
+ loadmovesprites
+ end
+; 0xbc9de
+
+UnknownScript_0xbc9de: ; 0xbc9de
+ 3writetext $6c, $51fe
+ closetext
+ loadmovesprites
+ end
+; 0xbc9e5
+
+UnknownScript_0xbc9e5: ; 0xbc9e5
+ 3writetext $6c, $55d5
+ closetext
+ loadmovesprites
+ end
+; 0xbc9ec
+
+UnknownScript_0xbc9ec: ; 0xbc9ec
+ 3writetext $6c, $5954
+ closetext
+ loadmovesprites
+ end
+; 0xbc9f3
+
+UnknownScript_0xbc9f3: ; 0xbc9f3
+ 3writetext $6c, $5c32
+ closetext
+ loadmovesprites
+ end
+; 0xbc9fa
+
+UnknownScript_0xbc9fa: ; 0xbc9fa
+ 3writetext $6c, $5e98
+ closetext
+ loadmovesprites
+ end
+; 0xbca01
+
+UnknownScript_0xbca01: ; 0xbca01
+ 3writetext $29, $418d
+ closetext
+ loadmovesprites
+ end
+; 0xbca08
+
+UnknownScript_0xbca08: ; 0xbca08
+ 3writetext $29, $4382
+ closetext
+ loadmovesprites
+ end
+; 0xbca0f
+
+UnknownScript_0xbca0f: ; 0xbca0f
+ 3writetext $29, $49fc
+ closetext
+ loadmovesprites
+ end
+; 0xbca16
+
+UnknownScript_0xbca16: ; 0xbca16
+ 3writetext $29, $4bec
+ closetext
+ loadmovesprites
+ end
+; 0xbca1d
+
+UnknownScript_0xbca1d: ; 0xbca1d
+ 3writetext $29, $50b1
+ closetext
+ loadmovesprites
+ end
+; 0xbca24
+
+UnknownScript_0xbca24: ; 0xbca24
+ 3writetext $29, $548c
+ closetext
+ loadmovesprites
+ end
+; 0xbca2b
+
+UnknownScript_0xbca2b: ; 0xbca2b
+ 3writetext $29, $571e
+ closetext
+ loadmovesprites
+ end
+; 0xbca32
+
+UnknownScript_0xbca32: ; 0xbca32
+ 3writetext $29, $5ada
+ closetext
+ loadmovesprites
+ end
+; 0xbca39
+
+UnknownScript_0xbca39: ; 0xbca39
+ 3writetext $29, $5d1d
+ closetext
+ loadmovesprites
+ end
+; 0xbca40
+
+UnknownScript_0xbca40: ; 0xbca40
+ 3writetext $29, $6175
+ closetext
+ loadmovesprites
+ end
+; 0xbca47
+
+UnknownScript_0xbca47: ; 0xbca47
+ checkcode $17
+ if_equal $d, $4a65
+ if_equal $10, UnknownScript_0xbca6b
+ if_equal $18, UnknownScript_0xbca71
+ if_equal $1c, UnknownScript_0xbca77
+ if_equal $1d, UnknownScript_0xbca7d
+ if_equal $21, UnknownScript_0xbca83
+ if_equal $22, UnknownScript_0xbca89
+ 3writetext $6c, $5607
+ keeptextopen
+ end
+; 0xbca6b
+
+UnknownScript_0xbca6b: ; 0xbca6b
+ 3writetext $6c, $5c57
+ keeptextopen
+ end
+; 0xbca71
+
+UnknownScript_0xbca71: ; 0xbca71
+ 3writetext $29, $4c24
+ keeptextopen
+ end
+; 0xbca77
+
+UnknownScript_0xbca77: ; 0xbca77
+ 3writetext $29, $523a
+ keeptextopen
+ end
+; 0xbca7d
+
+UnknownScript_0xbca7d: ; 0xbca7d
+ 3writetext $29, $54e3
+ keeptextopen
+ end
+; 0xbca83
+
+UnknownScript_0xbca83: ; 0xbca83
+ 3writetext $29, $5d4d
+ keeptextopen
+ end
+; 0xbca89
+
+UnknownScript_0xbca89: ; 0xbca89
+ 3writetext $29, $5f37
+ keeptextopen
+ end
+; 0xbca8f
+
+UnknownScript_0xbca8f: ; 0xbca8f
+ checkcode $17
+ if_equal $7, $4abd
+ if_equal $d, UnknownScript_0xbcac4
+ if_equal $f, UnknownScript_0xbcacb
+ if_equal $10, UnknownScript_0xbcad2
+ if_equal $18, UnknownScript_0xbcad9
+ if_equal $1c, UnknownScript_0xbcae0
+ if_equal $1d, UnknownScript_0xbcae7
+ if_equal $20, UnknownScript_0xbcaee
+ if_equal $21, UnknownScript_0xbcaf5
+ if_equal $22, UnknownScript_0xbcafc
+ if_equal $23, UnknownScript_0xbcb03
+ 3writetext $6c, $4eff
+ closetext
+ loadmovesprites
+ end
+; 0xbcac4
+
+UnknownScript_0xbcac4: ; 0xbcac4
+ 3writetext $6c, $564d
+ closetext
+ loadmovesprites
+ end
+; 0xbcacb
+
+UnknownScript_0xbcacb: ; 0xbcacb
+ 3writetext $6c, $5978
+ closetext
+ loadmovesprites
+ end
+; 0xbcad2
+
+UnknownScript_0xbcad2: ; 0xbcad2
+ 3writetext $6c, $5c91
+ closetext
+ loadmovesprites
+ end
+; 0xbcad9
+
+UnknownScript_0xbcad9: ; 0xbcad9
+ 3writetext $29, $4c47
+ closetext
+ loadmovesprites
+ end
+; 0xbcae0
+
+UnknownScript_0xbcae0: ; 0xbcae0
+ 3writetext $29, $52a0
+ closetext
+ loadmovesprites
+ end
+; 0xbcae7
+
+UnknownScript_0xbcae7: ; 0xbcae7
+ 3writetext $29, $5513
+ closetext
+ loadmovesprites
+ end
+; 0xbcaee
+
+UnknownScript_0xbcaee: ; 0xbcaee
+ 3writetext $29, $5aff
+ closetext
+ loadmovesprites
+ end
+; 0xbcaf5
+
+UnknownScript_0xbcaf5: ; 0xbcaf5
+ 3writetext $29, $5d9a
+ closetext
+ loadmovesprites
+ end
+; 0xbcafc
+
+UnknownScript_0xbcafc: ; 0xbcafc
+ 3writetext $29, $5faa
+ closetext
+ loadmovesprites
+ end
+; 0xbcb03
+
+UnknownScript_0xbcb03: ; 0xbcb03
+ 3writetext $29, $61c9
+ closetext
+ loadmovesprites
+ end
+; 0xbcb0a
+
+UnknownScript_0xbcb0a: ; 0xbcb0a
+ loadfont
+ checkcode $17
+ if_equal $7, $4b1d
+ if_equal $f, UnknownScript_0xbcb23
+ if_equal $20, UnknownScript_0xbcb29
+ if_equal $23, UnknownScript_0xbcb2f
+ 3writetext $6c, $4f2f
+ keeptextopen
+ end
+; 0xbcb23
+
+UnknownScript_0xbcb23: ; 0xbcb23
+ 3writetext $6c, $59be
+ keeptextopen
+ end
+; 0xbcb29
+
+UnknownScript_0xbcb29: ; 0xbcb29
+ 3writetext $29, $5b3f
+ keeptextopen
+ end
+; 0xbcb2f
+
+UnknownScript_0xbcb2f: ; 0xbcb2f
+ 3writetext $29, $6200
+ keeptextopen
+ end
+; 0xbcb35
+
+UnknownScript_0xbcb35: ; 0xbcb35
+ checkcode $17
+ if_equal $6, $4b57
+ if_equal $c, UnknownScript_0xbcb5c
+ if_equal $e, UnknownScript_0xbcb61
+ if_equal $12, UnknownScript_0xbcb66
+ if_equal $15, UnknownScript_0xbcb6b
+ if_equal $1a, UnknownScript_0xbcb70
+ if_equal $1f, UnknownScript_0xbcb75
+ if_equal $24, UnknownScript_0xbcb7a
+ 3writetext $6c, $4bb6
+ end
+; 0xbcb5c
+
+UnknownScript_0xbcb5c: ; 0xbcb5c
+ 3writetext $6c, $5239
+ end
+; 0xbcb61
+
+UnknownScript_0xbcb61: ; 0xbcb61
+ 3writetext $6c, $5690
+ end
+; 0xbcb66
+
+UnknownScript_0xbcb66: ; 0xbcb66
+ 3writetext $6c, $5ebe
+ end
+; 0xbcb6b
+
+UnknownScript_0xbcb6b: ; 0xbcb6b
+ 3writetext $29, $4405
+ end
+; 0xbcb70
+
+UnknownScript_0xbcb70: ; 0xbcb70
+ 3writetext $29, $4c8c
+ end
+; 0xbcb75
+
+UnknownScript_0xbcb75: ; 0xbcb75
+ 3writetext $29, $574a
+ end
+; 0xbcb7a
+
+UnknownScript_0xbcb7a: ; 0xbcb7a
+ 3writetext $29, $6295
+ end
+; 0xbcb7f
+
+UnknownScript_0xbcb7f: ; 0xbcb7f
+ checkcode $17
+ if_equal $6, $4ba1
+ if_equal $c, UnknownScript_0xbcba6
+ if_equal $e, UnknownScript_0xbcbab
+ if_equal $12, UnknownScript_0xbcbb0
+ if_equal $15, UnknownScript_0xbcbb5
+ if_equal $1a, UnknownScript_0xbcbba
+ if_equal $1f, UnknownScript_0xbcbbf
+ if_equal $24, UnknownScript_0xbcbc4
+ 3writetext $6c, $4c37
+ end
+; 0xbcba6
+
+UnknownScript_0xbcba6: ; 0xbcba6
+ 3writetext $6c, $5314
+ end
+; 0xbcbab
+
+UnknownScript_0xbcbab: ; 0xbcbab
+ 3writetext $6c, $5710
+ end
+; 0xbcbb0
+
+UnknownScript_0xbcbb0: ; 0xbcbb0
+ 3writetext $6c, $5f4e
+ end
+; 0xbcbb5
+
+UnknownScript_0xbcbb5: ; 0xbcbb5
+ 3writetext $29, $44db
+ end
+; 0xbcbba
+
+UnknownScript_0xbcbba: ; 0xbcbba
+ 3writetext $29, $4d36
+ end
+; 0xbcbbf
+
+UnknownScript_0xbcbbf: ; 0xbcbbf
+ 3writetext $29, $57e3
+ end
+; 0xbcbc4
+
+UnknownScript_0xbcbc4: ; 0xbcbc4
+ 3writetext $29, $6316
+ end
+; 0xbcbc9
+
+UnknownScript_0xbcbc9: ; 0xbcbc9
+ 3writetext $6c, $49e1
+ playsound $0093
+ waitbutton
+ keeptextopen
+ end
+; 0xbcbd3
+
+UnknownScript_0xbcbd3: ; 0xbcbd3
+ checkcode $17
+ if_equal $6, $4bf5
+ if_equal $c, UnknownScript_0xbcbfc
+ if_equal $e, UnknownScript_0xbcc03
+ if_equal $12, UnknownScript_0xbcc0a
+ if_equal $15, UnknownScript_0xbcc11
+ if_equal $1a, UnknownScript_0xbcc18
+ if_equal $1f, UnknownScript_0xbcc1f
+ if_equal $24, UnknownScript_0xbcc26
+ 3writetext $6c, $4c9b
+ closetext
+ loadmovesprites
+ end
+; 0xbcbfc
+
+UnknownScript_0xbcbfc: ; 0xbcbfc
+ 3writetext $6c, $5392
+ closetext
+ loadmovesprites
+ end
+; 0xbcc03
+
+UnknownScript_0xbcc03: ; 0xbcc03
+ 3writetext $6c, $5755
+ closetext
+ loadmovesprites
+ end
+; 0xbcc0a
+
+UnknownScript_0xbcc0a: ; 0xbcc0a
+ 3writetext $6c, $5faa
+ closetext
+ loadmovesprites
+ end
+; 0xbcc11
+
+UnknownScript_0xbcc11: ; 0xbcc11
+ 3writetext $29, $451d
+ closetext
+ loadmovesprites
+ end
+; 0xbcc18
+
+UnknownScript_0xbcc18: ; 0xbcc18
+ 3writetext $29, $4d72
+ closetext
+ loadmovesprites
+ end
+; 0xbcc1f
+
+UnknownScript_0xbcc1f: ; 0xbcc1f
+ 3writetext $29, $5820
+ closetext
+ loadmovesprites
+ end
+; 0xbcc26
+
+UnknownScript_0xbcc26: ; 0xbcc26
+ 3writetext $29, $6359
+ closetext
+ loadmovesprites
+ end
+; 0xbcc2d
+
+UnknownScript_0xbcc2d: ; 0xbcc2d
+ checkcode $17
+ if_equal $6, $4c4f
+ if_equal $c, UnknownScript_0xbcc56
+ if_equal $e, UnknownScript_0xbcc5d
+ if_equal $12, UnknownScript_0xbcc64
+ if_equal $15, UnknownScript_0xbcc6b
+ if_equal $1a, UnknownScript_0xbcc72
+ if_equal $1f, UnknownScript_0xbcc79
+ if_equal $24, UnknownScript_0xbcc80
+ 3writetext $6c, $4ce0
+ closetext
+ loadmovesprites
+ end
+; 0xbcc56
+
+UnknownScript_0xbcc56: ; 0xbcc56
+ 3writetext $6c, $53af
+ closetext
+ loadmovesprites
+ end
+; 0xbcc5d
+
+UnknownScript_0xbcc5d: ; 0xbcc5d
+ 3writetext $6c, $578a
+ closetext
+ loadmovesprites
+ end
+; 0xbcc64
+
+UnknownScript_0xbcc64: ; 0xbcc64
+ 3writetext $6c, $5fdd
+ closetext
+ loadmovesprites
+ end
+; 0xbcc6b
+
+UnknownScript_0xbcc6b: ; 0xbcc6b
+ 3writetext $29, $4542
+ closetext
+ loadmovesprites
+ end
+; 0xbcc72
+
+UnknownScript_0xbcc72: ; 0xbcc72
+ 3writetext $29, $4dcd
+ closetext
+ loadmovesprites
+ end
+; 0xbcc79
+
+UnknownScript_0xbcc79: ; 0xbcc79
+ 3writetext $29, $5842
+ closetext
+ loadmovesprites
+ end
+; 0xbcc80
+
+UnknownScript_0xbcc80: ; 0xbcc80
+ 3writetext $29, $638c
+ closetext
+ loadmovesprites
+ end
+; 0xbcc87
+
+UnknownScript_0xbcc87: ; 0xbcc87
+ checkcode $17
+ if_equal $6, $4ca9
+ if_equal $c, UnknownScript_0xbccb0
+ if_equal $e, UnknownScript_0xbccb7
+ if_equal $12, UnknownScript_0xbccbe
+ if_equal $15, UnknownScript_0xbccc5
+ if_equal $1a, UnknownScript_0xbcccc
+ if_equal $1f, UnknownScript_0xbccd3
+ if_equal $24, UnknownScript_0xbccda
+ 3writetext $6c, $4d0b
+ closetext
+ loadmovesprites
+ end
+; 0xbccb0
+
+UnknownScript_0xbccb0: ; 0xbccb0
+ 3writetext $6c, $53e4
+ closetext
+ loadmovesprites
+ end
+; 0xbccb7
+
+UnknownScript_0xbccb7: ; 0xbccb7
+ 3writetext $6c, $57ba
+ closetext
+ loadmovesprites
+ end
+; 0xbccbe
+
+UnknownScript_0xbccbe: ; 0xbccbe
+ 3writetext $6c, $5ffa
+ closetext
+ loadmovesprites
+ end
+; 0xbccc5
+
+UnknownScript_0xbccc5: ; 0xbccc5
+ 3writetext $29, $4573
+ closetext
+ loadmovesprites
+ end
+; 0xbcccc
+
+UnknownScript_0xbcccc: ; 0xbcccc
+ 3writetext $29, $4e01
+ closetext
+ loadmovesprites
+ end
+; 0xbccd3
+
+UnknownScript_0xbccd3: ; 0xbccd3
+ 3writetext $29, $5881
+ closetext
+ loadmovesprites
+ end
+; 0xbccda
+
+UnknownScript_0xbccda: ; 0xbccda
+ 3writetext $29, $63cc
+ closetext
+ loadmovesprites
+ end
+; 0xbcce1
+
+UnknownScript_0xbcce1: ; 0xbcce1
+ checkcode $17
+ if_equal $c, $4cff
+ if_equal $e, UnknownScript_0xbcd06
+ if_equal $12, UnknownScript_0xbcd0d
+ if_equal $15, UnknownScript_0xbcd14
+ if_equal $1a, UnknownScript_0xbcd1b
+ if_equal $1f, UnknownScript_0xbcd22
+ if_equal $24, UnknownScript_0xbcd29
+ 3writetext $6c, $5409
+ closetext
+ loadmovesprites
+ end
+; 0xbcd06
+
+UnknownScript_0xbcd06: ; 0xbcd06
+ 3writetext $6c, $57de
+ closetext
+ loadmovesprites
+ end
+; 0xbcd0d
+
+UnknownScript_0xbcd0d: ; 0xbcd0d
+ 3writetext $6c, $601f
+ closetext
+ loadmovesprites
+ end
+; 0xbcd14
+
+UnknownScript_0xbcd14: ; 0xbcd14
+ 3writetext $29, $4595
+ closetext
+ loadmovesprites
+ end
+; 0xbcd1b
+
+UnknownScript_0xbcd1b: ; 0xbcd1b
+ 3writetext $29, $4e21
+ closetext
+ loadmovesprites
+ end
+; 0xbcd22
+
+UnknownScript_0xbcd22: ; 0xbcd22
+ 3writetext $29, $58a3
+ closetext
+ loadmovesprites
+ end
+; 0xbcd29
+
+UnknownScript_0xbcd29: ; 0xbcd29
+ 3writetext $29, $63f1
+ closetext
+ loadmovesprites
+ end
+; 0xbcd30
+
+UnknownScript_0xbcd30: ; 0xbcd30
+ checkcode $17
+ if_equal $6, $4d42
+ if_equal $15, UnknownScript_0xbcd48
+ if_equal $1a, UnknownScript_0xbcd4e
+ if_equal $1f, UnknownScript_0xbcd54
+ 3writetext $6c, $4d2c
+ keeptextopen
+ end
+; 0xbcd48
+
+UnknownScript_0xbcd48: ; 0xbcd48
+ 3writetext $29, $45c9
+ keeptextopen
+ end
+; 0xbcd4e
+
+UnknownScript_0xbcd4e: ; 0xbcd4e
+ 3writetext $29, $4e4c
+ keeptextopen
+ end
+; 0xbcd54
+
+UnknownScript_0xbcd54: ; 0xbcd54
+ 3writetext $29, $58d5
+ keeptextopen
+ end
+; 0xbcd5a
+
+UnknownScript_0xbcd5a: ; 0xbcd5a
+ checkcode $17
+ if_equal $6, $4d70
+ if_equal $15, UnknownScript_0xbcd77
+ if_equal $1a, UnknownScript_0xbcd7e
+ if_equal $1f, UnknownScript_0xbcd85
+ if_equal $24, UnknownScript_0xbcd8c
+ 3writetext $6c, $4d69
+ closetext
+ loadmovesprites
+ end
+; 0xbcd77
+
+UnknownScript_0xbcd77: ; 0xbcd77
+ 3writetext $29, $4603
+ closetext
+ loadmovesprites
+ end
+; 0xbcd7e
+
+UnknownScript_0xbcd7e: ; 0xbcd7e
+ 3writetext $29, $4e8f
+ closetext
+ loadmovesprites
+ end
+; 0xbcd85
+
+UnknownScript_0xbcd85: ; 0xbcd85
+ 3writetext $29, $5914
+ closetext
+ loadmovesprites
+ end
+; 0xbcd8c
+
+UnknownScript_0xbcd8c: ; 0xbcd8c
+ 3writetext $29, $6411
+ closetext
+ loadmovesprites
+ end
+; 0xbcd93
+
+UnknownScript_0xbcd93: ; 0xbcd93
+ checkcode $17
+ if_equal $24, $4d99
+ loadfont
+ 3writetext $29, $6454
+ keeptextopen
+ end
+; 0xbcda0
+
+UnknownScript_0xbcda0: ; 0xbcda0
+ mapnametotext $0
+ loadfont
+ 3writetext $6c, $474e
+ closetext
+ loadmovesprites
+ end
+; 0xbcdaa
+
+UnknownScript_0xbcdaa: ; 0xbcdaa
+ mapnametotext $0
+ loadfont
+ 3writetext $6c, $474e
+ keeptextopen
+ 3writetext $6c, $475c
+ closetext
+ loadmovesprites
+ end
+; 0xbcdb9
+
+UnknownScript_0xbcdb9: ; 0xbcdb9
+ waitbutton
+ 3writetext $6c, $4648
+ playsound $0001
+ waitbutton
+ end
+; 0xbcdc3
+
+UnknownScript_0xbcdc3: ; 0xbcdc3
+ waitbutton
+ 3writetext $6c, $4648
+ playsound $0096
+ waitbutton
+ end
+; 0xbcdcd
+
+UnknownScript_0xbcdcd: ; 0xbcdcd
+ faceplayer
+ loadfont
+ 3writetext $6c, $477f
+ keeptextopen
+ checkitem COIN_CASE
+ iftrue UnknownScript_0xbcde0
+ 3writetext $6c, $479c
+ closetext
+ loadmovesprites
+ end
+; 0xbcde0
+
+UnknownScript_0xbcde0: ; 0xbcde0
+ 3writetext $6c, $47e3
+ special $0050
+ loadmenudata $4e54
+ interpretmenu2
+ writebackup
+ if_equal $1, UnknownScript_0xbcdf7
+ if_equal $2, UnknownScript_0xbce1b
+ 2jump UnknownScript_0xbce4d
+; 0xbcdf7
+
+UnknownScript_0xbcdf7: ; 0xbcdf7
+ checkcoins 9949
+ if_equal $0, UnknownScript_0xbce46
+ checkmoney $0, 1000
+ if_equal $2, UnknownScript_0xbce3f
+ givecoins 50
+ takemoney $0, 1000
+ waitbutton
+ playsound $0022
+ 3writetext $6c, $4830
+ closetext
+ 2jump $4de4
+; 0xbce1b
+
+UnknownScript_0xbce1b: ; 0xbce1b
+ checkcoins 9499
+ if_equal $0, UnknownScript_0xbce46
+ checkmoney $0, 10000
+ if_equal $2, UnknownScript_0xbce3f
+ givecoins 500
+ takemoney $0, 10000
+ waitbutton
+ playsound $0022
+ 3writetext $6c, $484f
+ closetext
+ 2jump $4de4
+; 0xbce3f
+
+UnknownScript_0xbce3f: ; 0xbce3f
+ 3writetext $6c, $486f
+ closetext
+ loadmovesprites
+ end
+; 0xbce46
+
+UnknownScript_0xbce46: ; 0xbce46
+ 3writetext $6c, $488c
+ closetext
+ loadmovesprites
+ end
+; 0xbce4d
+
+UnknownScript_0xbce4d: ; 0xbce4d
+ 3writetext $6c, $48ad
+ closetext
+ loadmovesprites
+ end
+; 0xbce54
+
+INCBIN "baserom.gbc", $bce54, $bce7f - $bce54
+
+UnknownScript_0xbce7f: ; 0xbce7f
+ faceplayer
+ loadfont
+ special $0059
+ if_greater_than $32, UnknownScript_0xbce9a
+ if_greater_than $96, UnknownScript_0xbce93
+ 3writetext $6c, $492a
+ closetext
+ loadmovesprites
+ end
+; 0xbce93
+
+UnknownScript_0xbce93: ; 0xbce93
+ 3writetext $6c, $4954
+ closetext
+ loadmovesprites
+ end
+; 0xbce9a
+
+UnknownScript_0xbce9a: ; 0xbce9a
+ 3writetext $6c, $4989
+ closetext
+ loadmovesprites
+ end
+; 0xbcea1
+
+MovementData_0xbcea1: ; bcea1
+ step_right
+ step_down
+ turn_head_up
+ step_end
+; bcea5
UnusedPhoneScript: ; 0xbcea5
3writetext BANK(UnusedPhoneText), UnusedPhoneText
@@ -70807,7 +75451,59 @@ INCLUDE "gfx/overworld/sprites_2.asm"
SECTION "bank32",ROMX,BANK[$32]
-INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000
+INCBIN "baserom.gbc", $c8000, $cbcdd - $c8000
+
+Functioncbcdd: ; cbcdd
+ call Functioncbce5
+ ld a, [hCGB]
+ and a
+ ret nz
+ ret
+; cbce5
+
+Functioncbce5: ; cbce5
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_cbd06
+ ld a, [TimeOfDayPal]
+ and $3
+ cp $3
+ ld a, $0
+ jr z, .asm_cbcf7
+ ld a, $aa
+
+.asm_cbcf7
+ call DmgToCgbBGPals
+ ld c, $4
+ call DelayFrames
+ callba _UpdateTimePals
+ ret
+
+.asm_cbd06
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, BGPals
+ ld c, $20
+.asm_cbd12
+ ld a, $bc
+ ld [hli], a
+ ld a, $7e
+ ld [hli], a
+ dec c
+ jr nz, .asm_cbd12
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ld c, $4
+ call DelayFrames
+ callba _UpdateTimePals
+ ret
+; cbd2e
+
+INCBIN "baserom.gbc", $cbd2e, $cbe2b - $cbd2e
SECTION "bank33",ROMX,BANK[$33]
@@ -70887,7 +75583,11 @@ Functioncc0c7: ; cc0c7
jp PrintText
; cc0d0
-INCBIN "baserom.gbc", $cc0d0, $cc0d6 - $cc0d0
+INCBIN "baserom.gbc", $cc0d0, $cc0d5 - $cc0d0
+
+Functioncc0d5: ; cc0d5
+ ret
+; cc0d6
Functioncc0d6: ; cc0d6
@@ -71702,7 +76402,1030 @@ Music_PostCredits: INCLUDE "audio/music/postcredits.asm"
SECTION "bank34",ROMX,BANK[$34]
; Pic animations asm
-INCBIN "baserom.gbc", $d0000, $d0695 - $d0000
+Functiond0000: ; d0000
+ ld hl, $c4ac
+ ld a, [IsInBattle]
+ cp $1
+ jr z, .asm_d0012
+ ld e, $0
+ ld d, $0
+ call Functiond008e
+ ret
+
+.asm_d0012
+ ld e, $1
+ ld d, $0
+ call Functiond008e
+ ret
+; d001a
+
+INCBIN "baserom.gbc", $d001a, $d008e - $d001a
+
+Functiond008e: ; d008e
+ call Functiond01c6
+ ret c
+ call Functiond00a3
+.asm_d0095
+ call Functiond00b4
+ push af
+ callba Function10402d
+ pop af
+ jr nc, .asm_d0095
+ ret
+; d00a3
+
+Functiond00a3: ; d00a3
+ push hl
+ ld c, e
+ ld b, $0
+ ld hl, $4042
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld b, [hl]
+ ld c, a
+ pop hl
+ call Functiond01d6
+ ret
+; d00b4
+
+Functiond00b4: ; d00b4
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ ld a, [$d168]
+ ld c, a
+ ld b, $0
+ ld hl, $d169
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ ld a, [hl]
+ ld hl, $40da
+ rst JumpTable
+ ld a, [$d168]
+ ld c, a
+ pop af
+ ld [rSVBK], a
+ ld a, c
+ and $80
+ ret z
+ scf
+ ret
+; d00da
+
+Tabled00da: ; d00da
+ dw Functiond0171
+ dw Functiond0166
+ dw Functiond00f2
+ dw Functiond00fe
+ dw Functiond010b
+ dw Functiond011d
+ dw Functiond012f
+ dw Functiond0141
+ dw Functiond0155
+ dw Functiond017a
+ dw Functiond0188
+ dw Functiond0196
+; d00f2
+
+Functiond00f2: ; d00f2
+ ld a, $12
+ ld [$d181], a
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+
+Functiond00fe: ; d00fe
+ ld hl, $d181
+ dec [hl]
+ ret nz
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d010b
+
+Functiond010b: ; d010b
+ ld c, $0
+ ld b, $0
+ call Functiond0228
+ call Functiond0504
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d011d
+
+Functiond011d: ; d011d
+ ld c, $0
+ ld b, $4
+ call Functiond0228
+ call Functiond0504
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d012f
+
+Functiond012f: ; d012f
+ ld c, $1
+ ld b, $0
+ call Functiond0228
+ call Functiond0504
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0141
+
+Functiond0141: ; d0141
+ call Functiond0250
+ ld a, [$d17e]
+ bit 7, a
+ ret z
+ call Functiond04bd
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0155
+
+Functiond0155: ; d0155
+ call Functiond0250
+ ld a, [$d17e]
+ bit 7, a
+ ret z
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0166
+
+Functiond0166: ; d0166
+ call Functiond01a9
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0171
+
+Functiond0171: ; d0171
+ call Functiond01a9
+ ld hl, $d168
+ set 7, [hl]
+ ret
+; d017a
+
+Functiond017a: ; d017a
+ ld a, [$d16b]
+ call Function37e2
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0188
+
+Functiond0188: ; d0188
+ ld a, [$d16b]
+ call Function37d5
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d0196
+
+Functiond0196: ; d0196
+ ld a, $f
+ ld [CryTracks], a
+ ld a, [$d16b]
+ call Function37c4
+ ld a, [$d168]
+ inc a
+ ld [$d168], a
+ ret
+; d01a9
+
+Functiond01a9: ; d01a9
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ call Functiond04bd
+ callba Function10402d
+ call Functiond0536
+ callba Function104047
+ pop af
+ ld [rSVBK], a
+ ret
+; d01c6
+
+Functiond01c6: ; d01c6
+ ld a, [CurPartySpecies]
+ cp $fd
+ jr z, .asm_d01d4
+ call IsAPokemon
+ jr c, .asm_d01d4
+ and a
+ ret
+
+.asm_d01d4
+ scf
+ ret
+; d01d6
+
+Functiond01d6: ; d01d6
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ push bc
+ push de
+ push hl
+ ld hl, $d168
+ ld bc, $0029
+ xor a
+ call ByteFill
+ pop hl
+ pop de
+ pop bc
+ ld a, c
+ ld [$d169], a
+ ld a, b
+ ld [$d16a], a
+ ld a, l
+ ld [$d16f], a
+ ld a, h
+ ld [$d170], a
+ ld a, d
+ ld [$d16e], a
+ ld a, $1
+ ld hl, CurPartySpecies
+ call Function307b
+ ld [$d16b], a
+ ld a, $1
+ ld hl, UnownLetter
+ call Function307b
+ ld [$d16c], a
+ call Functiond065c
+ ld [$d16d], a
+ call Functiond05b4
+ ld a, c
+ ld [$d171], a
+ pop af
+ ld [rSVBK], a
+ ret
+; d0228
+
+Functiond0228: ; d0228
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ push bc
+ ld hl, $d172
+ ld bc, $001f
+ xor a
+ call ByteFill
+ pop bc
+ ld a, b
+ ld [$d173], a
+ ld a, c
+ ld [$d172], a
+ call Functiond055c
+ call Functiond05ce
+ call Functiond061b
+ pop af
+ ld [rSVBK], a
+ ret
+; d0250
+
+Functiond0250: ; d0250
+ xor a
+ ld [hBGMapMode], a
+
+Functiond0253: ; d0253
+ ld a, [$d17e]
+ and $7f
+ ld hl, Tabled025d
+ rst JumpTable
+ ret
+; d025d
+
+Tabled025d: ; d025d
+ dw Functiond0261
+ dw Functiond0282
+; d0261
+
+Functiond0261: ; d0261
+ call Functiond02f8
+ ld a, [$d182]
+ cp $ff
+ jr z, Functiond02a8
+ cp $fe
+ jr z, Functiond028e
+ cp $fd
+ jr z, Functiond0296
+ call Functiond02c8
+ ld a, [$d183]
+ call Functiond02ae
+ ld [$d181], a
+ call Functiond02dc
+
+Functiond0282: ; d0282
+ ld a, [$d181]
+ dec a
+ ld [$d181], a
+ ret nz
+ call Functiond02e4
+ ret
+; d028e
+
+Functiond028e: ; d028e
+ ld a, [$d183]
+ ld [$d17f], a
+ jr Functiond0253
+; d0296
+
+Functiond0296: ; d0296
+ ld a, [$d17f]
+ and a
+ ret z
+ dec a
+ ld [$d17f], a
+ ret z
+ ld a, [$d183]
+ ld [$d17d], a
+ jr Functiond0253
+; d02a8
+
+Functiond02a8: ; d02a8
+ ld hl, $d17e
+ set 7, [hl]
+ ret
+; d02ae
+
+Functiond02ae: ; d02ae
+ ld c, a
+ ld b, $0
+ ld hl, $0000
+ ld a, [$d173]
+ call AddNTimes
+ ld a, h
+ swap a
+ and $f0
+ ld h, a
+ ld a, l
+ swap a
+ and $f
+ or h
+ add c
+ ret
+; d02c8
+
+Functiond02c8: ; d02c8
+ call Functiond04bd
+ ld a, [$d182]
+ and a
+ ret z
+ call Functiond031b
+ push hl
+ call Functiond033b
+ pop hl
+ call Functiond036b
+ ret
+; d02dc
+
+Functiond02dc: ; d02dc
+ ld a, [$d17e]
+ inc a
+ ld [$d17e], a
+ ret
+; d02e4
+
+Functiond02e4: ; d02e4
+ ld a, [$d17e]
+ dec a
+ ld [$d17e], a
+ ret
+; d02ec
+
+Functiond02ec: ; d02ec
+ ld a, [$d16b]
+ cp $c9
+ ret
+; d02f2
+
+Functiond02f2: ; d02f2
+ ld a, [$d16b]
+ cp $fd
+ ret
+; d02f8
+
+Functiond02f8: ; d02f8
+ push hl
+ ld a, [$d17d]
+ ld e, a
+ ld d, $0
+ ld hl, $d175
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ add hl, de
+ ld a, [$d174]
+ call GetFarHalfword
+ ld a, l
+ ld [$d182], a
+ ld a, h
+ ld [$d183], a
+ ld hl, $d17d
+ inc [hl]
+ pop hl
+ ret
+; d031b
+
+Functiond031b: ; d031b
+ ld a, [$d182]
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, $d178
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ add hl, bc
+ ld a, [$d177]
+ call GetFarHalfword
+ ld a, [$d177]
+ call GetFarByte
+ ld [$d180], a
+ inc hl
+ ret
+; d033b
+
+Functiond033b: ; d033b
+ call Functiond0356
+ push bc
+ ld hl, $d17b
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d180]
+ call AddNTimes
+ pop bc
+ ld de, $d188
+ ld a, [$d17a]
+ call FarCopyBytes
+ ret
+; d0356
+
+Functiond0356: ; d0356
+ push hl
+ ld a, [$d171]
+ sub $5
+ ld c, a
+ ld b, $0
+ ld hl, $4368
+ add hl, bc
+ ld c, [hl]
+ ld b, $0
+ pop hl
+ ret
+; d0368
+
+INCBIN "baserom.gbc", $d0368, $d036b - $d0368
+
+Functiond036b: ; d036b
+ xor a
+ ld [$d187], a
+ ld [$d186], a
+ ld [$d185], a
+.asm_d0375
+ push hl
+ call Functiond0392
+ pop hl
+ ld a, b
+ and a
+ jr z, .asm_d038a
+ ld a, [$d177]
+ call GetFarByte
+ inc hl
+ push hl
+ call Functiond03bd
+ pop hl
+
+.asm_d038a
+ push hl
+ call Functiond0499
+ pop hl
+ jr nc, .asm_d0375
+ ret
+; d0392
+
+Functiond0392: ; d0392
+ ld a, [$d187]
+ and $f8
+ rrca
+ rrca
+ rrca
+ ld e, a
+ ld d, $0
+ ld hl, $d188
+ add hl, de
+ ld b, [hl]
+ ld a, [$d187]
+ and $7
+ jr z, .asm_d03b0
+ ld c, a
+ ld a, b
+.asm_d03ab
+ rrca
+ dec c
+ jr nz, .asm_d03ab
+ ld b, a
+
+.asm_d03b0
+ xor a
+ bit 0, b
+ jr z, .asm_d03b7
+ ld a, $1
+
+.asm_d03b7
+ ld b, a
+ ld hl, $d187
+ inc [hl]
+ ret
+; d03bd
+
+Functiond03bd: ; d03bd
+ push af
+ call Functiond03cd
+ pop af
+ push hl
+ call Functiond03f7
+ ld hl, $d16e
+ add [hl]
+ pop hl
+ ld [hl], a
+ ret
+; d03cd
+
+Functiond03cd: ; d03cd
+ call Functiond046c
+ ld a, [$d186]
+ ld bc, $0014
+ call AddNTimes
+ ld a, [$c2c6]
+ and a
+ jr nz, .asm_d03e8
+ ld a, [$d185]
+ ld e, a
+ ld d, $0
+ add hl, de
+ jr .asm_d03f3
+
+.asm_d03e8
+ ld a, [$d185]
+ ld e, a
+ ld a, l
+ sub e
+ ld l, a
+ ld a, h
+ sbc $0
+ ld h, a
+
+.asm_d03f3
+ ret
+; d03f4
+
+INCBIN "baserom.gbc", $d03f4, $d03f7 - $d03f4
+
+Functiond03f7: ; d03f7
+ push af
+ ld a, [$d171]
+ cp $5
+ jr z, .asm_d0405
+ cp $6
+ jr z, .asm_d041a
+ pop af
+ ret
+
+.asm_d0405
+ pop af
+ cp $19
+ jr nc, .asm_d0417
+ push hl
+ push de
+ ld hl, $442f
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ pop de
+ pop hl
+ ret
+
+.asm_d0417
+ add $18
+ ret
+
+.asm_d041a
+ pop af
+ cp $24
+ jr nc, .asm_d042c
+ push hl
+ push de
+ ld hl, $4448
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ pop de
+ pop hl
+ ret
+
+.asm_d042c
+ add $d
+ ret
+; d042f
+
+INCBIN "baserom.gbc", $d042f, $d046c - $d042f
+
+Functiond046c: ; d046c
+ ld hl, $d16f
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d171]
+ ld de, $0000
+ ld bc, $0006
+ cp $7
+ jr z, .asm_d048f
+ ld de, $0015
+ ld bc, $0019
+ cp $6
+ jr z, .asm_d048f
+ ld de, $0029
+ ld bc, $002d
+
+.asm_d048f
+ ld a, [$c2c6]
+ and a
+ jr nz, .asm_d0497
+ add hl, de
+ ret
+
+.asm_d0497
+ add hl, bc
+ ret
+; d0499
+
+Functiond0499: ; d0499
+ ld a, [$d186]
+ inc a
+ ld [$d186], a
+ ld c, a
+ ld a, [$d171]
+ cp c
+ jr nz, .asm_d04bb
+ xor a
+ ld [$d186], a
+ ld a, [$d185]
+ inc a
+ ld [$d185], a
+ ld c, a
+ ld a, [$d171]
+ cp c
+ jr nz, .asm_d04bb
+ scf
+ ret
+
+.asm_d04bb
+ xor a
+ ret
+; d04bd
+
+Functiond04bd: ; d04bd
+ call Functiond04f6
+ ld a, [$c2c6]
+ and a
+ jr nz, .asm_d04ce
+ ld de, $0001
+ ld bc, $0000
+ jr .asm_d04d4
+
+.asm_d04ce
+ ld de, rIE
+ ld bc, $0006
+
+.asm_d04d4
+ ld hl, $d16f
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ ld c, $7
+ ld b, $7
+ ld a, [$d16e]
+.asm_d04e2
+ push bc
+ push hl
+ push de
+ ld de, $0014
+.asm_d04e8
+ ld [hl], a
+ inc a
+ add hl, de
+ dec b
+ jr nz, .asm_d04e8
+ pop de
+ pop hl
+ add hl, de
+ pop bc
+ dec c
+ jr nz, .asm_d04e2
+ ret
+; d04f6
+
+Functiond04f6: ; d04f6
+ ld hl, $d16f
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, $7
+ ld c, $7
+ call ClearBox
+ ret
+; d0504
+
+Functiond0504: ; d0504
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ xor a
+ ld [hBGMapMode], a
+ call Functiond051b
+ callba Function104047
+ pop af
+ ld [rSVBK], a
+ ret
+; d051b
+
+Functiond051b: ; d051b
+ call Functiond0551
+ ld b, $7
+ ld c, $7
+ ld de, $0014
+.asm_d0525
+ push bc
+ push hl
+.asm_d0527
+ ld a, [hl]
+ or $8
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_d0527
+ pop hl
+ inc hl
+ pop bc
+ dec b
+ jr nz, .asm_d0525
+ ret
+; d0536
+
+Functiond0536: ; d0536
+ call Functiond0551
+ ld b, $7
+ ld c, $7
+ ld de, $0014
+.asm_d0540
+ push bc
+ push hl
+.asm_d0542
+ ld a, [hl]
+ and $f7
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_d0542
+ pop hl
+ inc hl
+ pop bc
+ dec b
+ jr nz, .asm_d0540
+ ret
+; d0551
+
+Functiond0551: ; d0551
+ ld hl, $d16f
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $0939
+ add hl, de
+ ret
+; d055c
+
+Functiond055c: ; d055c
+ call Functiond02f2
+ jr z, .asm_d0597
+ ld c, $34
+ ld hl, UnownAnimationPointers
+ ld de, UnownAnimationExtraPointers
+ call Functiond02ec
+ jr z, .asm_d0576
+ ld c, $34
+ ld hl, AnimationPointers
+ ld de, AnimationExtraPointers
+
+.asm_d0576
+ ld a, [$d172]
+ and a
+ jr z, .asm_d057e
+ ld h, d
+ ld l, e
+
+.asm_d057e
+ ld a, [$d16d]
+ dec a
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, c
+ ld [$d174], a
+ call GetFarHalfword
+ ld a, l
+ ld [$d175], a
+ ld a, h
+ ld [$d176], a
+ ret
+
+.asm_d0597
+ ld hl, EggAnimation
+ ld c, $34
+ ld a, [$d172]
+ and a
+ jr z, .asm_d05a7
+ ld hl, EggAnimationExtra
+ ld c, $34
+
+.asm_d05a7
+ ld a, c
+ ld [$d174], a
+ ld a, l
+ ld [$d175], a
+ ld a, h
+ ld [$d176], a
+ ret
+; d05b4
+
+Functiond05b4: ; d05b4
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BasePicSize]
+ and $f
+ ld c, a
+ pop af
+ ld [rSVBK], a
+ ret
+; d05ce
+
+Functiond05ce: ; d05ce
+ call Functiond02f2
+ jr z, .asm_d0609
+ call Functiond02ec
+ ld b, $36
+ ld c, $36
+ ld hl, PikachuAnimationExtra
+ jr z, .asm_d05ef
+ ld a, [$d16b]
+ cp $98
+ ld b, $35
+ ld c, $35
+ ld hl, $4000
+ jr c, .asm_d05ef
+ ld c, $36
+
+.asm_d05ef
+ ld a, c
+ ld [$d177], a
+ ld a, [$d16d]
+ dec a
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, b
+ call GetFarHalfword
+ ld a, l
+ ld [$d178], a
+ ld a, h
+ ld [$d179], a
+ ret
+
+.asm_d0609
+ ld hl, $598b
+ ld c, $36
+ ld a, c
+ ld [$d177], a
+ ld a, l
+ ld [$d178], a
+ ld a, h
+ ld [$d179], a
+ ret
+; d061b
+
+Functiond061b: ; d061b
+ call Functiond02f2
+ jr z, .asm_d064a
+ call Functiond02ec
+ ld a, $34
+ ld hl, UnownBitmasksPointers
+ jr z, .asm_d062f
+ ld a, $34
+ ld hl, BitmasksPointers
+
+.asm_d062f
+ ld [$d17a], a
+ ld a, [$d16d]
+ dec a
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [$d17a]
+ call GetFarHalfword
+ ld a, l
+ ld [$d17b], a
+ ld a, h
+ ld [$d17c], a
+ ret
+
+.asm_d064a
+ ld c, $34
+ ld hl, EggBitmasks
+ ld a, c
+ ld [$d17a], a
+ ld a, l
+ ld [$d17b], a
+ ld a, h
+ ld [$d17c], a
+ ret
+; d065c
+
+Functiond065c: ; d065c
+ call Functiond02ec
+ jr z, .asm_d0665
+ ld a, [$d16b]
+ ret
+
+.asm_d0665
+ ld a, [$d16c]
+ ret
+; d0669
+
+Functiond0669: ; d0669
+ ld a, $1
+ ld [$c2c6], a
+
+Functiond066e: ; d066e
+ call Functiond01c6
+ jr c, .asm_d068c
+ ld h, d
+ ld l, e
+ push bc
+ push hl
+ ld de, VTiles2
+ ld a, $3e
+ call Predef
+ pop hl
+ pop bc
+ ld d, $0
+ ld e, c
+ call Functiond008e
+ xor a
+ ld [$c2c6], a
+ ret
+
+.asm_d068c
+ xor a
+ ld [$c2c6], a
+ inc a
+ ld [CurPartySpecies], a
+ ret
+; d0695
; Pic animations are assembled in 3 parts:
@@ -76116,7 +81839,13 @@ Functionfd117: ; fd117
ret
; fd136
-INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136
+INCBIN "baserom.gbc", $fd136, $fd1d0 - $fd136
+
+Functionfd1d0: ; fd1d0
+ ret
+; fd1d1
+
+INCBIN "baserom.gbc", $fd1d1, $fd1d2 - $fd1d1
SECTION "bank40",ROMX,BANK[$40]
@@ -78726,7 +84455,14 @@ Function10402d: ; 10402d
jp Function104177
; 104033
-INCBIN "baserom.gbc", $104033, $104061 - $104033
+INCBIN "baserom.gbc", $104033, $104047 - $104033
+
+Function104047: ; 104047
+ ld hl, $404d
+ jp Function104177
+; 10404d
+
+INCBIN "baserom.gbc", $10404d, $104061 - $10404d
Function104061: ; 104061
@@ -86855,7 +92591,7 @@ RegionCheck: ; 0x1caea1
SECTION "bank73",ROMX,BANK[$73]
- ; Pokedex entries III
+; Pokedex entries III
; 129-192
PokedexEntries3:
INCLUDE "stats/pokedex/entries_3.asm"
diff --git a/preprocessor.py b/preprocessor.py
index 59850729a..188db81a6 100644
--- a/preprocessor.py
+++ b/preprocessor.py
@@ -3,6 +3,8 @@
import sys
+import extras.pokemontools.preprocessor as preprocessor
+
from extras.pokemontools.crystal import (
command_classes,
Warp,
@@ -39,636 +41,15 @@ def load_pokecrystal_macros():
return ourmacros
-chars = {
-"ガ": 0x05,
-"ギ": 0x06,
-"グ": 0x07,
-"ゲ": 0x08,
-"ゴ": 0x09,
-"ザ": 0x0A,
-"ジ": 0x0B,
-"ズ": 0x0C,
-"ゼ": 0x0D,
-"ゾ": 0x0E,
-"ダ": 0x0F,
-"ヂ": 0x10,
-"ヅ": 0x11,
-"デ": 0x12,
-"ド": 0x13,
-"バ": 0x19,
-"ビ": 0x1A,
-"ブ": 0x1B,
-"ボ": 0x1C,
-"が": 0x26,
-"ぎ": 0x27,
-"ぐ": 0x28,
-"げ": 0x29,
-"ご": 0x2A,
-"ざ": 0x2B,
-"じ": 0x2C,
-"ず": 0x2D,
-"ぜ": 0x2E,
-"ぞ": 0x2F,
-"だ": 0x30,
-"ぢ": 0x31,
-"づ": 0x32,
-"で": 0x33,
-"ど": 0x34,
-"ば": 0x3A,
-"び": 0x3B,
-"ぶ": 0x3C,
-"べ": 0x3D,
-"ぼ": 0x3E,
-"パ": 0x40,
-"ピ": 0x41,
-"プ": 0x42,
-"ポ": 0x43,
-"ぱ": 0x44,
-"ぴ": 0x45,
-"ぷ": 0x46,
-"ぺ": 0x47,
-"ぽ": 0x48,
-"ア": 0x80,
-"イ": 0x81,
-"ウ": 0x82,
-"エ": 0x83,
-"ォ": 0x84,
-"カ": 0x85,
-"キ": 0x86,
-"ク": 0x87,
-"ケ": 0x88,
-"コ": 0x89,
-"サ": 0x8A,
-"シ": 0x8B,
-"ス": 0x8C,
-"セ": 0x8D,
-"ソ": 0x8E,
-"タ": 0x8F,
-"チ": 0x90,
-"ツ": 0x91,
-"テ": 0x92,
-"ト": 0x93,
-"ナ": 0x94,
-"ニ": 0x95,
-"ヌ": 0x96,
-"ネ": 0x97,
-"ノ": 0x98,
-"ハ": 0x99,
-"ヒ": 0x9A,
-"フ": 0x9B,
-"ホ": 0x9C,
-"マ": 0x9D,
-"ミ": 0x9E,
-"ム": 0x9F,
-"メ": 0xA0,
-"モ": 0xA1,
-"ヤ": 0xA2,
-"ユ": 0xA3,
-"ヨ": 0xA4,
-"ラ": 0xA5,
-"ル": 0xA6,
-"レ": 0xA7,
-"ロ": 0xA8,
-"ワ": 0xA9,
-"ヲ": 0xAA,
-"ン": 0xAB,
-"ッ": 0xAC,
-"ャ": 0xAD,
-"ュ": 0xAE,
-"ョ": 0xAF,
-"ィ": 0xB0,
-"あ": 0xB1,
-"い": 0xB2,
-"う": 0xB3,
-"え": 0xB4,
-"お": 0xB5,
-"か": 0xB6,
-"き": 0xB7,
-"く": 0xB8,
-"け": 0xB9,
-"こ": 0xBA,
-"さ": 0xBB,
-"し": 0xBC,
-"す": 0xBD,
-"せ": 0xBE,
-"そ": 0xBF,
-"た": 0xC0,
-"ち": 0xC1,
-"つ": 0xC2,
-"て": 0xC3,
-"と": 0xC4,
-"な": 0xC5,
-"に": 0xC6,
-"ぬ": 0xC7,
-"ね": 0xC8,
-"の": 0xC9,
-"は": 0xCA,
-"ひ": 0xCB,
-"ふ": 0xCC,
-"へ": 0xCD,
-"ほ": 0xCE,
-"ま": 0xCF,
-"み": 0xD0,
-"む": 0xD1,
-"め": 0xD2,
-"も": 0xD3,
-"や": 0xD4,
-"ゆ": 0xD5,
-"よ": 0xD6,
-"ら": 0xD7,
-"り": 0xD8,
-"る": 0xD9,
-"れ": 0xDA,
-"ろ": 0xDB,
-"わ": 0xDC,
-"を": 0xDD,
-"ん": 0xDE,
-"っ": 0xDF,
-"ゃ": 0xE0,
-"ゅ": 0xE1,
-"ょ": 0xE2,
-"ー": 0xE3,
-"ァ": 0xE9,
-
-"@": 0x50,
-"#": 0x54,
-"…": 0x75,
-
-"┌": 0x79,
-"─": 0x7A,
-"┐": 0x7B,
-"│": 0x7C,
-"└": 0x7D,
-"┘": 0x7E,
-
-"№": 0x74,
-
-" ": 0x7F,
-"A": 0x80,
-"B": 0x81,
-"C": 0x82,
-"D": 0x83,
-"E": 0x84,
-"F": 0x85,
-"G": 0x86,
-"H": 0x87,
-"I": 0x88,
-"J": 0x89,
-"K": 0x8A,
-"L": 0x8B,
-"M": 0x8C,
-"N": 0x8D,
-"O": 0x8E,
-"P": 0x8F,
-"Q": 0x90,
-"R": 0x91,
-"S": 0x92,
-"T": 0x93,
-"U": 0x94,
-"V": 0x95,
-"W": 0x96,
-"X": 0x97,
-"Y": 0x98,
-"Z": 0x99,
-"(": 0x9A,
-")": 0x9B,
-":": 0x9C,
-";": 0x9D,
-"[": 0x9E,
-"]": 0x9F,
-"a": 0xA0,
-"b": 0xA1,
-"c": 0xA2,
-"d": 0xA3,
-"e": 0xA4,
-"f": 0xA5,
-"g": 0xA6,
-"h": 0xA7,
-"i": 0xA8,
-"j": 0xA9,
-"k": 0xAA,
-"l": 0xAB,
-"m": 0xAC,
-"n": 0xAD,
-"o": 0xAE,
-"p": 0xAF,
-"q": 0xB0,
-"r": 0xB1,
-"s": 0xB2,
-"t": 0xB3,
-"u": 0xB4,
-"v": 0xB5,
-"w": 0xB6,
-"x": 0xB7,
-"y": 0xB8,
-"z": 0xB9,
-"Ä": 0xC0,
-"Ö": 0xC1,
-"Ü": 0xC2,
-"ä": 0xC3,
-"ö": 0xC4,
-"ü": 0xC5,
-"'d": 0xD0,
-"'l": 0xD1,
-"'m": 0xD2,
-"'r": 0xD3,
-"'s": 0xD4,
-"'t": 0xD5,
-"'v": 0xD6,
-"'": 0xE0,
-"-": 0xE3,
-"?": 0xE6,
-"!": 0xE7,
-".": 0xE8,
-"&": 0xE9,
-"é": 0xEA,
-"→": 0xEB,
-"▷": 0xEC,
-"▶": 0xED,
-"▼": 0xEE,
-"♂": 0xEF,
-"¥": 0xF0,
-"×": 0xF1,
-"/": 0xF3,
-",": 0xF4,
-"♀": 0xF5,
-"0": 0xF6,
-"1": 0xF7,
-"2": 0xF8,
-"3": 0xF9,
-"4": 0xFA,
-"5": 0xFB,
-"6": 0xFC,
-"7": 0xFD,
-"8": 0xFE,
-"9": 0xFF
-}
-
-class PreprocessorException(Exception):
- """
- There was a problem in the preprocessor.
- """
-
-class MacroException(PreprocessorException):
- """
- There was a problem with a macro.
- """
-
-def separate_comment(l):
- """
- Separates asm and comments on a single line.
- """
- in_quotes = False
- for i in xrange(len(l)):
- if not in_quotes:
- if l[i] == ";":
- break
- if l[i] == "\"":
- in_quotes = not in_quotes
- return l[:i], l[i:] or None
-
-def quote_translator(asm):
- """
- Writes asm with quoted text translated into bytes.
- """
-
- # split by quotes
- asms = asm.split('"')
-
- # skip asm that actually does use ASCII in quotes
- if "SECTION" in asms[0]\
- or "INCBIN" in asms[0]\
- or "INCLUDE" in asms[0]:
- return asm
-
- print_macro = False
- if asms[0].strip() == 'print':
- asms[0] = asms[0].replace('print','db 0,')
- print_macro = True
-
- output = ''
- even = False
- for token in asms:
- if even:
- characters = []
- # token is a string to convert to byte values
- while len(token):
- # read a single UTF-8 codepoint
- char = token[0]
- if ord(char) < 0xc0:
- token = token[1:]
- # certain apostrophe-letter pairs are considered a single character
- if char == "'" and token:
- if token[0] in 'dlmrstv':
- char += token[0]
- token = token[1:]
- elif ord(char) < 0xe0:
- char = char + token[1:2]
- token = token[2:]
- elif ord(char) < 0xf0:
- char = char + token[1:3]
- token = token[3:]
- elif ord(char) < 0xf8:
- char = char + token[1:4]
- token = token[4:]
- elif ord(char) < 0xfc:
- char = char + token[1:5]
- token = token[5:]
- else:
- char = char + token[1:6]
- token = token[6:]
- characters += [char]
-
- if print_macro:
- line = 0
- while len(characters):
- last_char = 1
- if len(characters) > 18 and characters[-1] != '@':
- for i, char in enumerate(characters):
- last_char = i + 1
- if ' ' not in characters[i+1:18]: break
- output += ", ".join("${0:02X}".format(chars[char]) for char in characters[:last_char-1])
- if characters[last_char-1] != " ":
- output += ", ${0:02X}".format(characters[last_char-1])
- if not line & 1:
- line_ending = 0x4f
- else:
- line_ending = 0x51
- output += ", ${0:02X}".format(line_ending)
- line += 1
- else:
- output += ", ".join(["${0:02X}".format(chars[char]) for char in characters[:last_char]])
- characters = characters[last_char:]
- if len(characters): output += ", "
- # end text
- line_ending = 0x57
- output += ", ${0:02X}".format(line_ending)
-
- output += ", ".join(["${0:02X}".format(chars[char]) for char in characters])
-
- else:
- output += token
-
- even = not even
-
- return output
-
-def extract_token(asm):
- return asm.split(" ")[0].strip()
-
-def make_macro_table(macros):
- return dict(((macro.macro_name, macro) for macro in macros))
-
-def macro_test(asm, macro_table):
- """
- Returns a matching macro, or None/False.
- """
- # macros are determined by the first symbol on the line
- token = extract_token(asm)
-
- # skip db and dw since rgbasm handles those and they aren't macros
- if token is not None and token not in ["db", "dw"] and token in macro_table:
- return (macro_table[token], token)
- else:
- return (None, None)
-
-def is_based_on(something, base):
- """
- Checks whether or not 'something' is a class that is a subclass of a class
- by name. This is a terrible hack but it removes a direct dependency on
- existing macros.
-
- Used by macro_translator.
- """
- options = [str(klass.__name__) for klass in something.__bases__]
- options += [something.__name__]
- return (base in options)
-
-def check_macro_sanity(params, macro, original_line):
- """
- Checks whether or not the correct number of arguments are being passed to a
- certain macro. There are a number of possibilities based on the types of
- parameters that define the macro.
-
- @param params: a list of parameters given to the macro
- @param macro: macro klass
- @param original_line: the line being preprocessed
- """
- allowed_length = 0
-
- for (index, param_type) in macro.param_types.items():
- param_klass = param_type["class"]
-
- if param_klass.byte_type == "db":
- allowed_length += 1 # just one value
- elif param_klass.byte_type == "dw":
- if param_klass.size == 2:
- allowed_length += 1 # just label
- elif param_klass.size == 3:
- allowed_length += 2 # bank and label
- else:
- raise MacroException(
- "dunno what to do with a macro param with a size > 3 (size={size})"
- .format(size=param_klass.size)
- )
- else:
- raise MacroException(
- "dunno what to do with this non db/dw macro param: {klass} in line {line}"
- .format(klass=param_klass, line=original_line)
- )
-
- # sometimes the allowed length can vary
- if hasattr(macro, "allowed_lengths"):
- allowed_lengths = macro.allowed_lengths + [allowed_length]
- else:
- allowed_lengths = [allowed_length]
-
- # used twice, so precompute once
- params_len = len(params)
-
- if params_len not in allowed_lengths:
- raise PreprocessorException(
- "mismatched number of parameters ({count}, instead of any of {allowed}) on this line: {line}"
- .format(
- count=params_len,
- allowed=allowed_lengths,
- line=original_line,
- )
- )
-
- return True
-
-def macro_translator(macro, token, line, show_original_lines=False, do_macro_sanity_check=False):
+def preprocess(macro_table, lines=None):
"""
- Converts a line with a macro into a rgbasm-compatible line.
-
- @param show_original_lines: show lines before preprocessing in stdout
- @param do_macro_sanity_check: helpful for debugging macros
+ Entry point for the preprocessor.
"""
- if macro.macro_name != token:
- raise MacroException("macro/token mismatch")
-
- original_line = line
-
- # remove trailing newline
- if line[-1] == "\n":
- line = line[:-1]
- else:
- original_line += "\n"
-
- # remove first tab
- has_tab = False
- if line[0] == "\t":
- has_tab = True
- line = line[1:]
-
- # remove duplicate whitespace (also trailing)
- line = " ".join(line.split())
-
- params = []
-
- # check if the line has params
- if " " in line:
- # split the line into separate parameters
- params = line.replace(token, "").split(",")
-
- # check if there are no params (redundant)
- if len(params) == 1 and params[0] == "":
- raise MacroException("macro has no params?")
-
- # write out a comment showing the original line
- if show_original_lines:
- sys.stdout.write("; original_line: " + original_line)
-
- # rgbasm can handle "db" so no preprocessing is required, plus this wont be
- # reached because of earlier checks in macro_test.
- if macro.macro_name in ["db", "dw"]:
- sys.stdout.write(original_line)
- return
-
- # certain macros don't need an initial byte written
- # do: all scripting macros
- # don't: signpost, warp_def, person_event, xy_trigger
- if not macro.override_byte_check:
- sys.stdout.write("db ${0:02X}\n".format(macro.id))
-
- # Does the number of parameters on this line match any allowed number of
- # parameters that the macro expects?
- if do_macro_sanity_check:
- check_macro_sanity(params, macro, original_line)
-
- # used for storetext
- correction = 0
-
- output = ""
-
- index = 0
- while index < len(params):
- param_type = macro.param_types[index - correction]
- description = param_type["name"]
- param_klass = param_type["class"]
- byte_type = param_klass.byte_type # db or dw
- size = param_klass.size
- param = params[index].strip()
-
- # param_klass.to_asm() won't work here because it doesn't
- # include db/dw.
-
- # some parameters are really multiple types of bytes
- if (byte_type == "dw" and size != 2) or \
- (byte_type == "db" and size != 1):
-
- output += ("; " + description + "\n")
-
- if size == 3 and is_based_on(param_klass, "PointerLabelBeforeBank"):
- # write the bank first
- output += ("db " + param + "\n")
- # write the pointer second
- output += ("dw " + params[index+1].strip() + "\n")
- index += 2
- correction += 1
- elif size == 3 and is_based_on(param_klass, "PointerLabelAfterBank"):
- # write the pointer first
- output += ("dw " + param + "\n")
- # write the bank second
- output += ("db " + params[index+1].strip() + "\n")
- index += 2
- correction += 1
- elif size == 3 and "from_asm" in dir(param_klass):
- output += ("db " + param_klass.from_asm(param) + "\n")
- index += 1
- else:
- raise MacroException(
- "dunno what to do with this macro param ({klass}) in line: {line}"
- .format(
- klass=param_klass,
- line=original_line,
- )
- )
-
- # or just print out the byte
- else:
- output += (byte_type + " " + param + " ; " + description + "\n")
-
- index += 1
-
- sys.stdout.write(output)
-
-def read_line(l, macro_table):
- """Preprocesses a given line of asm."""
-
- if l in ["\n", ""] or l[0] == ";":
- sys.stdout.write(l)
- return # jump out early
-
- # strip comments from asm
- asm, comment = separate_comment(l)
-
- # export all labels
- if ':' in asm[:asm.find('"')]:
- sys.stdout.write('GLOBAL ' + asm.split(':')[0] + '\n')
-
- # expect preprocessed .asm files
- if "INCLUDE" in asm:
- asm = asm.replace('.asm','.tx')
- sys.stdout.write(asm)
-
- # ascii string macro preserves the bytes as ascii (skip the translator)
- elif len(asm) > 6 and ("ascii " == asm[:6] or "\tascii " == asm[:7]):
- asm = asm.replace("ascii", "db", 1)
- sys.stdout.write(asm)
-
- # convert text to bytes when a quote appears (not in a comment)
- elif "\"" in asm:
- sys.stdout.write(quote_translator(asm))
-
- # check against other preprocessor features
- else:
- macro, token = macro_test(asm, macro_table)
- if macro:
- macro_translator(macro, token, asm)
- else:
- sys.stdout.write(asm)
-
- if comment:
- sys.stdout.write(comment)
-
-def preprocess(macro_table, lines=None):
- """Main entry point for the preprocessor."""
-
- if not lines:
- # read each line from stdin
- lines = (sys.stdin.readlines())
- elif not isinstance(lines, list):
- # split up the input into individual lines
- lines = lines.split("\n")
-
- for l in lines:
- read_line(l, macro_table)
+ return preprocessor.preprocess(macro_table, lines=lines)
def main():
macros = load_pokecrystal_macros()
- macro_table = make_macro_table(macros)
+ macro_table = preprocessor.make_macro_table(macros)
preprocess(macro_table)
# only run against stdin when not included as a module
diff --git a/prequeue.py b/prequeue.py
index 6efc519d1..5c1a9f161 100644
--- a/prequeue.py
+++ b/prequeue.py
@@ -11,7 +11,7 @@ import preprocessor
def main():
macros = preprocessor.load_pokecrystal_macros()
- macro_table = preprocessor.make_macro_table(macros)
+ macro_table = preprocessor.preprocessor.make_macro_table(macros)
stdout = sys.stdout