diff options
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | engine/scripting.asm | 6 | ||||
m--------- | extras | 0 | ||||
-rw-r--r-- | main.asm | 5998 | ||||
-rw-r--r-- | preprocessor.py | 631 | ||||
-rw-r--r-- | prequeue.py | 2 |
6 files changed, 5888 insertions, 770 deletions
@@ -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 @@ -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 |