diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm new file mode 100755 index 000000000..a2a93e189 --- /dev/null +++ b/engine/evolution_animation.asm @@ -0,0 +1,457 @@ +EvolutionAnimation: ; 4e5e1 + push hl + push de + push bc + ld a, [CurSpecies] + push af + ld a, [rOBP0] + push af + ld a, [BaseDexNo] + push af + + call _EvolutionAnimation + + pop af + ld [BaseDexNo], a + pop af + ld [rOBP0], a + pop af + ld [CurSpecies], a + pop bc + pop de + pop hl + + ld a, [wd1ed] + and a + ret z + + scf + ret +; 4e607 + +_EvolutionAnimation: ; 4e607 + ld a, $e4 + ld [rOBP0], a + + ld de, MUSIC_NONE + call PlayMusic + + callba Function8cf53 + + ld de, EvolutionGFX + ld hl, VTiles0 + lb bc, BANK(EvolutionGFX), 8 + call Request2bpp + + xor a + ld [Danger], a + call WaitBGMap + xor a + ld [hBGMapMode], a + ld a, [Buffer1] + ld [PlayerHPPal], a + + ld c, $0 + call Function4e703 + ld a, [Buffer1] + ld [CurPartySpecies], a + ld [CurSpecies], a + call Function4e708 + + ld de, VTiles2 + ld hl, VTiles2 tile $31 + ld bc, $31 + call Request2bpp + + ld a, $31 + ld [wd1ec], a + call Evolution_FlashFrontpics + ld a, [Buffer2] + ld [CurPartySpecies], a + ld [CurSpecies], a + call Function4e711 + ld a, [Buffer1] + ld [CurPartySpecies], a + ld [CurSpecies], a + + ld a, $1 + ld [hBGMapMode], a + call Function4e794 + jr c, .skip_cry + + ld a, [Buffer1] + call PlayCry + +.skip_cry + ld de, MUSIC_EVOLUTION + call PlayMusic + + ld c, 80 + call DelayFrames + + ld c, $1 + call Function4e703 + call Function4e726 + jr c, .pressed_b + + ld a, $cf + ld [wd1ec], a + + call Evolution_FlashFrontpics + xor a + ld [wd1ed], a + + ld a, [Buffer2] + ld [PlayerHPPal], a + + ld c, $0 + call Function4e703 + call Function4e7a6 + callba Function8cf53 + call Function4e794 + jr c, .asm_4e6de + + ld a, [wc2c6] + push af + ld a, $1 + ld [wc2c6], a + ld a, [CurPartySpecies] + push af + + ld a, [PlayerHPPal] + ld [CurPartySpecies], a + hlcoord 7, 2 + ld d, $0 + ld e, ANIM_MON_EVOLVE + predef AnimateFrontpic + + pop af + ld [CurPartySpecies], a + pop af + ld [wc2c6], a + ret + +.asm_4e6de + ret + +.pressed_b + ld a, $1 + ld [wd1ed], a + + ld a, [Buffer1] + ld [PlayerHPPal], a + + ld c, $0 + call Function4e703 + call Function4e7a6 + callba Function8cf53 + call Function4e794 + ret c + + ld a, [PlayerHPPal] + call PlayCry + ret +; 4e703 + +Function4e703: ; 4e703 + ld b, $b + jp GetSGBLayout +; 4e708 + +Function4e708: ; 4e708 + call GetBaseData + hlcoord 7, 2 + jp Function3786 +; 4e711 + +Function4e711: ; 4e711 + call GetBaseData + ld a, $1 + ld [wc2c6], a + ld de, VTiles2 + predef Function5108b + xor a + ld [wc2c6], a + ret +; 4e726 + +Function4e726: ; 4e726 + call ClearJoypad + lb bc, 1, 14 +.loop + push bc + call Evolution_CheckPressedB + pop bc + jr c, .pressed_b + push bc + call Evolution_NextFrame + pop bc + inc b +rept 2 + dec c +endr + jr nz, .loop + and a + ret + +.pressed_b + scf + ret +; 4e741 + +Evolution_NextFrame: ; 4e741 +.loop + ld a, -49 + ld [wd1ec], a + call Evolution_FlashFrontpics + ld a, 49 + ld [wd1ec], a + call Evolution_FlashFrontpics + dec b + jr nz, .loop + ret +; 4e755 + +Evolution_FlashFrontpics: ; 4e755 + push bc + xor a + ld [hBGMapMode], a + hlcoord 7, 2 + lb bc, 7, 7 + ld de, $d +.loop1 + push bc +.loop2 + ld a, [wd1ec] + add [hl] + ld [hli], a + dec c + jr nz, .loop2 + pop bc + add hl, de + dec b + jr nz, .loop1 + ld a, $1 + ld [hBGMapMode], a + call WaitBGMap + pop bc + ret +; 4e779 + +Evolution_CheckPressedB: ; 4e779 +.loop + call DelayFrame + push bc + call JoyTextDelay + ld a, [hJoyDown] + pop bc + and B_BUTTON + jr nz, .pressed_b +.loop2 + dec c + jr nz, .loop + and a + ret + +.pressed_b + ld a, [wd1e9] + and a + jr nz, .loop2 + scf + ret +; 4e794 + +Function4e794: ; 4e794 + ld a, [CurPartyMon] + ld hl, PartyMon1Species + call GetPartyLocation + ld b, h + ld c, l + callba CheckFaintedFrzSlp + ret +; 4e7a6 + +Function4e7a6: ; 4e7a6 + ld a, [wd1ed] + and a + ret nz + ld de, SFX_EVOLVED + call PlaySFX + ld hl, wJumptableIndex + ld a, [hl] + push af + ld [hl], $0 +.asm_4e7b8 + call Function4e7cf + jr nc, .asm_4e7c2 + call Function4e80c + jr .asm_4e7b8 + +.asm_4e7c2 + ld c, $20 +.asm_4e7c4 + call Function4e80c + dec c + jr nz, .asm_4e7c4 + pop af + ld [wJumptableIndex], a + ret +; 4e7cf + +Function4e7cf: ; 4e7cf + ld hl, wJumptableIndex + ld a, [hl] + cp $20 + ret nc + ld d, a + inc [hl] + and $1 + jr nz, .asm_4e7e6 + ld e, $0 + call Function4e7e8 + ld e, $10 + call Function4e7e8 + +.asm_4e7e6 + scf + ret +; 4e7e8 + +Function4e7e8: ; 4e7e8 + push de + ld de, $4858 + ld a, $13 + call Function3b2a + ld hl, $b + add hl, bc + ld a, [wJumptableIndex] + and $e + sla a + pop de + add e + ld [hl], a + ld hl, $3 + add hl, bc + ld [hl], $0 + ld hl, $c + add hl, bc + ld [hl], $10 + ret +; 4e80c + +Function4e80c: ; 4e80c + push bc + callab Function8cf69 + ld a, [$ff9b] + and $e + srl a +rept 2 + inc a +endr + and $7 + ld b, a + ld hl, Sprites + 3 + ld c, $28 +.asm_4e823 + ld a, [hl] + or b + ld [hli], a +rept 3 + inc hl +endr + dec c + jr nz, .asm_4e823 + pop bc + call DelayFrame + ret +; 4e831 + + +EvolutionGFX: +INCBIN "gfx/evo/bubble_large.2bpp" +INCBIN "gfx/evo/bubble.2bpp" + +Function4e881: ; 4e881 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call DisableLCD + call LoadStandardFont + call LoadFontsBattleExtra + ld hl, VBGMap0 + ld bc, VBGMap1 - VBGMap0 + ld a, " " + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + xor a + ld [hSCY], a + ld [hSCX], a + call EnableLCD + ld hl, UnknownText_0x4e8bd + call PrintText + call Function3200 + call SetPalettes + ret +; 4e8bd + +UnknownText_0x4e8bd: ; 0x4e8bd + ; SAVING RECORD… DON'T TURN OFF! + text_jump UnknownText_0x1bd39e + db "@" +; 0x4e8c2 + + +Function4e8c2: ; 4e8c2 + call WhiteBGMap + call ClearTileMap + call ClearSprites + call DisableLCD + call LoadStandardFont + call LoadFontsBattleExtra + ld hl, VBGMap0 + ld bc, VBGMap1 - VBGMap0 + ld a, " " + call ByteFill + hlcoord 0, 0, AttrMap + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + xor a + call ByteFill + ld hl, wd000 + ld c, $40 +.asm_4e8ee + ld a, -1 + ld [hli], a + ld a, " " + ld [hli], a + dec c + jr nz, .asm_4e8ee + xor a + ld [hSCY], a + ld [hSCX], a + call EnableLCD + call Function3200 + call SetPalettes + ret +; 4e906 + +Function4e906: ; 4e906 + ld a, [rSVBK] + push af + ld a, $6 + ld [rSVBK], a + ld hl, w6_d000 + ld bc, w6_d400 - w6_d000 + ld a, " " + call ByteFill + ld hl, VBGMap0 + ld de, w6_d000 + ld b, $0 + ld c, $40 + call Request2bpp + pop af + ld [rSVBK], a + ret +; 4e929 diff --git a/engine/party_menu.asm b/engine/party_menu.asm new file mode 100644 index 000000000..b0997e821 --- /dev/null +++ b/engine/party_menu.asm @@ -0,0 +1,940 @@ +SelectMonFromParty: ; 50000 + call DisableSpriteUpdates + xor a + ld [PartyMenuActionText], a + call WhiteBGMap + call Function5003f + call WaitBGMap + call Function32f9 + call DelayFrame + call PartyMenuSelect + call Function2b74 + ret +; 5001d + + +Function5001d: ; 5001d + ld a, b + ld [PartyMenuActionText], a + call DisableSpriteUpdates + call WhiteBGMap + call Function5003f + call WaitBGMap + ld b, $a + call GetSGBLayout + call Function32f9 + call DelayFrame + call PartyMenuSelect + call Function2b74 + ret +; 5003f + +Function5003f: ; 5003f + call Function5004f + call Function50405 + call Function503e0 + call WritePartyMenuTilemap + call PrintPartyMenuText + ret +; 5004f + +Function5004f: ; 5004f + call LoadFontsBattleExtra + callab Function8ad1 ; engine/color.asm + callab InefficientlyClear121BytesAtwc300 + ret +; 5005f + + +WritePartyMenuTilemap: ; 0x5005f + ld hl, Options + ld a, [hl] + push af + set 4, [hl] ; Disable text delay + xor a + ld [hBGMapMode], a + hlcoord 0, 0 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT + ld a, " " + call ByteFill ; blank the tilemap + call Function50396 ; This reads from a pointer table??? +.loop + ld a, [hli] + cp -1 + jr z, .asm_50084 ; 0x5007a $8 + push hl + ld hl, .jumptable + rst JumpTable + pop hl + jr .loop ; 0x50082 $f3 + +.asm_50084 + pop af + ld [Options], a + ret +; 0x50089 + +.jumptable: ; 50089 + dw .displaynicks ; 0 + dw .drawhpbars ; 1 + dw Function50138 ; 2 + dw Function50176 ; 3 + dw Function501b2 ; 4 + dw Function501e0 ; 5 + dw Function5022f ; 6 + dw Function502b1 ; 7 + dw Function50307 ; 8 +; 5009b + +.displaynicks: ; 5009b + hlcoord 3, 1 + ld a, [PartyCount] + and a + jr z, .done + ld c, a + ld b, $0 +.loop2 + push bc + push hl + push hl + ld hl, PartyMonNicknames + ld a, b + call GetNick + pop hl + call PlaceString + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .loop2 + +.done +rept 2 + dec hl +endr + ld de, .cancelstring + call PlaceString + ret +; 500c8 + +.cancelstring: ; 500c8 + db "CANCEL@" +; 500cf + + +.drawhpbars: ; 500cf + xor a + ld [wcda9], a + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + hlcoord 11, 2 +.loop3 + push bc + push hl + call Function50389 + jr z, .skip + push hl + call _fillhpbar + pop hl + ld d, 6 + ld b, 0 + call DrawHPBar + ld hl, wcd9b + ld a, [wcda9] + ld c, a + ld b, $0 + add hl, bc + call SetHPPal + ld b, $fc + call GetSGBLayout + +.skip + ld hl, wcda9 + inc [hl] + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .loop3 + ld b, $a + call GetSGBLayout + ret +; 50117 + +_fillhpbar: ; 50117 + ld a, b + ld bc, PartyMon2 - PartyMon1 + ld hl, PartyMon1HP + call AddNTimes + ld a, [hli] + or [hl] + jr nz, .notfainted + xor a + ld e, a + ld c, a + ret + +.notfainted + dec hl + ld a, [hli] + ld b, a + ld a, [hli] + ld c, a + ld a, [hli] + ld d, a + ld a, [hli] + ld e, a + predef ComputeHPBarLength + ret +; 50138 + +Function50138: ; 50138 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, $0 + hlcoord 13, 1 +.asm_50143 + push bc + push hl + call Function50389 + jr z, .asm_5016b + push hl + ld a, b + ld bc, PartyMon2 - PartyMon1 + ld hl, PartyMon1HP + call AddNTimes + ld e, l + ld d, h + pop hl + push de + lb bc, 2, 3 + call PrintNum + pop de + ld a, $f3 + ld [hli], a +rept 2 + inc de +endr + lb bc, 2, 3 + call PrintNum + +.asm_5016b + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_50143 + ret +; 50176 + +Function50176: ; 50176 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 8, 2 +.asm_50181 + push bc + push hl + call Function50389 + jr z, .asm_501a7 + push hl + ld a, b + ld bc, PartyMon2 - PartyMon1 + ld hl, PartyMon1Level + call AddNTimes + ld e, l + ld d, h + pop hl + ld a, [de] + cp 100 ; This is distinct from MAX_LEVEL. + jr nc, .asm_501a1 + ld a, "" + ld [hli], a + ld bc, $4102 +.asm_501a1 + lb bc, PRINTNUM_RIGHTALIGN | 1, 3 + call PrintNum + +.asm_501a7 + pop hl + ld de, SCREEN_WIDTH * 2 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_50181 + ret +; 501b2 + +Function501b2: ; 501b2 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 5, 2 +.asm_501bd + push bc + push hl + call Function50389 + jr z, .asm_501d5 + push hl + ld a, b + ld bc, PartyMon2 - PartyMon1 + ld hl, PartyMon1Status + call AddNTimes + ld e, l + ld d, h + pop hl + call Function50d0a + +.asm_501d5 + pop hl + ld de, SCREEN_WIDTH * 2 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_501bd + ret +; 501e0 + +Function501e0: ; 501e0 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 12, 2 +.asm_501eb + push bc + push hl + call Function50389 + jr z, .asm_5020a + push hl + ld hl, PartySpecies + ld e, b + ld d, 0 + add hl, de + ld a, [hl] + ld [CurPartySpecies], a + predef CanLearnTMHMMove + pop hl + call Function50215 + call PlaceString + +.asm_5020a + pop hl + ld de, SCREEN_WIDTH * 2 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_501eb + ret +; 50215 + +Function50215: ; 50215 + ld a, c + and a + jr nz, .asm_5021d + ld de, String_50226 + ret + +.asm_5021d + ld de, String_50221 + ret +; 50221 + +String_50221: ; 50221 + db "ABLE@" +; 50226 + +String_50226: ; 50226 + db "NOT ABLE@" +; 5022f + + +Function5022f: ; 5022f + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 12, 2 +.asm_5023a + push bc + push hl + call Function50389 + jr z, .asm_5025d + push hl + ld a, b + ld bc, PartyMon2 - PartyMon1 + ld hl, PartyMon1Species + call AddNTimes + ld a, [hl] + dec a + ld e, a + ld d, 0 + ld hl, EvosAttacksPointers +rept 2 + add hl, de +endr + call Function50268 + pop hl + call PlaceString + +.asm_5025d + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_5023a + ret +; 50268 + +Function50268: ; 50268 + ld de, StringBuffer1 + ld a, BANK(EvosAttacksPointers) + ld bc, 2 + call FarCopyBytes + ld hl, StringBuffer1 + ld a, [hli] + ld h, [hl] + ld l, a + ld de, StringBuffer1 + ld a, BANK(EvosAttacks) + ld bc, $a + call FarCopyBytes + ld hl, StringBuffer1 +.asm_50287 + ld a, [hli] + and a + jr z, .asm_5029f +rept 2 + inc hl +endr + cp EVOLVE_ITEM + jr nz, .asm_50287 +rept 2 + dec hl +endr + ld a, [CurItem] + cp [hl] +rept 2 + inc hl +endr + jr nz, .asm_50287 + ld de, String_502a3 + ret + +.asm_5029f + ld de, String_502a8 + ret +; 502a3 + +String_502a3: ; 502a3 + db "ABLE@" +; 502a8 +String_502a8: ; 502a8 + db "NOT ABLE@" +; 502b1 + + +Function502b1: ; 502b1 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 12, 2 +.asm_502bc + push bc + push hl + call Function50389 + jr z, .asm_502e3 + ld [CurPartySpecies], a + push hl + ld a, b + ld [CurPartyMon], a + xor a + ld [MonType], a + call GetGender + ld de, String_502fe + jr c, .asm_502df + ld de, String_502ee + jr nz, .asm_502df + ld de, String_502f5 + +.asm_502df + pop hl + call PlaceString + +.asm_502e3 + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_502bc + ret +; 502ee + +String_502ee: ; 502ee + db "♂…MALE@" +; 502f5 + +String_502f5: ; 502f5 + db "♀…FEMALE@" +; 502fe + +String_502fe: ; 502fe + db "…UNKNOWN@" +; 50307 + + +Function50307: ; 50307 + ld a, [PartyCount] + and a + ret z + ld c, a + ld b, 0 + hlcoord 12, 1 +.asm_50312 + push bc + push hl + ld de, String_50372 + call PlaceString + pop hl + ld de, $0028 + add hl, de + pop bc + inc b + dec c + jr nz, .asm_50312 + ld a, l + ld e, $b + sub e + ld l, a + ld a, h + sbc $0 + ld h, a + ld de, String_50379 + call PlaceString + ld b, $3 + ld c, $0 + ld hl, DefaultFlypoint + ld a, [hl] +.asm_5033b + push hl + push bc + hlcoord 12, 1 +.asm_50340 + and a + jr z, .asm_5034a + ld de, $0028 + add hl, de + dec a + jr .asm_50340 + +.asm_5034a + ld de, String_5036b + push hl + call PlaceString + pop hl + pop bc + push bc + push hl + ld a, c + ld hl, Strings_50383 + call GetNthString + ld d, h + ld e, l + pop hl + call PlaceString + pop bc + pop hl + inc hl + ld a, [hl] + inc c + dec b + ret z + jr .asm_5033b +; 5036b + +String_5036b: ; 5036b + db " ばんめ @" ; Place +; 50372 +String_50372: ; 50372 + db "さんかしない@" ; Cancel +; 50379 +String_50379: ; 50379 + db "けってい やめる@" ; Quit +; 50383 +Strings_50383: ; 50383 + db "1@", "2@", "3@" ; 1st, 2nd, 3rd +; 50389 + + +Function50389: ; 50389 + ld a, PartySpecies % $100 + add b + ld e, a + ld a, PartySpecies / $100 + adc 0 + ld d, a + ld a, [de] + cp EGG + ret +; 50396 + +Function50396: ; 50396 + ld a, [PartyMenuActionText] + and $f0 + jr nz, .override + ld a, [PartyMenuActionText] + and $f + ld e, a + ld d, 0 + ld hl, .selectmonmenuoptions +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ret + +.override + ld hl, .default + ret +; 503b2 + +.selectmonmenuoptions: ; 503b2 + dw .default + dw .default + dw .default + dw .unknown1 + dw .default + dw .unknown2 + dw .trade + dw .trade + dw .default + dw .unknown3 +; 503c6 + +.default: db 0, 1, 2, 3, 4, -1 +.unknown1: db 0, 5, 3, 4, -1 +.unknown2: db 0, 6, 3, 4, -1 +.trade: db 0, 7, 3, 4, -1 +.unknown3: db 0, 8, 3, 4, -1 +; 503e0 + +Function503e0: ; 503e0 + ld hl, PartyCount + ld a, [hli] + and a + ret z + ld c, a + xor a + ld [hConnectedMapWidth], a +.asm_503ea + push bc + push hl + ld hl, Function8e83f + ld a, BANK(Function8e83f) + ld e, $0 + rst FarCall + ld a, [hConnectedMapWidth] + inc a + ld [hConnectedMapWidth], a + pop hl + pop bc + dec c + jr nz, .asm_503ea + callab Function8cf69 + ret +; 50405 +Function50405: ; 50405 + xor a + ld [wd0e3], a + ld de, Unknown_5044f + call Function1bb1 + ld a, [PartyCount] + inc a + ld [wcfa3], a + dec a + ld b, a + ld a, [wd0d8] + and a + jr z, .asm_50422 + inc b + cp b + jr c, .asm_50424 + +.asm_50422 + ld a, $1 + +.asm_50424 + ld [wcfa9], a + ld a, $3 + ld [wcfa8], a + ret +; 5042d + +Function5042d: ; 0x5042d + ld de, Unknown_5044f + call Function1bb1 + ld a, [PartyCount] + ld [wcfa3], a + ld b, a + ld a, [wd0d8] + and a + jr z, .asm_50444 + inc b + cp b + jr c, .asm_50446 +.asm_50444 + ld a, $1 +.asm_50446 + ld [wcfa9], a + ld a, $3 + ld [wcfa8], a + ret +; 5044f (14:444f) + +Unknown_5044f: ; 5044f +; cursor y +; cursor x +; list length +; ? +; bit 6: animate sprites bit 5: wrap around +; ? +; distance between items (hi: y, lo: x) +; allowed buttons (mask) + db $01, $00, $00, $01, $60, $00, $20, $00 +; 50457 + +PartyMenuSelect: ; 0x50457 +; sets carry if exitted menu. + call Function1bc9 + call Function1bee + ld a, [PartyCount] + inc a + ld b, a + ld a, [wcfa9] ; menu selection? + cp b + jr z, .exitmenu ; CANCEL + ld [wd0d8], a + ld a, [hJoyLast] + ld b, a + bit 1, b + jr nz, .exitmenu ; B button? + ld a, [wcfa9] + dec a + ld [CurPartyMon], a + ld c, a + ld b, $0 + ld hl, PartySpecies + add hl, bc + ld a, [hl] + ld [CurPartySpecies], a + + ld de, SFX_READ_TEXT_2 + call PlaySFX + call WaitSFX + and a + ret + +.exitmenu + ld de, SFX_READ_TEXT_2 + call PlaySFX + call WaitSFX + scf + ret +; 0x5049a + + +PrintPartyMenuText: ; 5049a + hlcoord 0, 14 + ld bc, $0212 + call TextBox + ld a, [PartyCount] + and a + jr nz, .haspokemon + ld de, YouHaveNoPKMNString + jr .gotstring +.haspokemon ; 504ae + ld a, [PartyMenuActionText] + and $f ; drop high nibble + ld hl, PartyMenuStrings + ld e, a + ld d, $0 +rept 2 + add hl, de +endr + ld a, [hli] + ld d, [hl] + ld e, a +.gotstring ; 504be + ld a, [Options] + push af + set 4, a ; disable text delay + ld [Options], a + hlcoord 1, 16 ; Coord + call PlaceString + pop af + ld [Options], a + ret +; 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 + +ChooseAMonString: ; 0x504e4 + db "Choose a #MON.@" +UseOnWhichPKMNString: ; 0x504f3 + db "Use on which ?@" +WhichPKMNString: ; 0x50504 + db "Which ?@" +TeachWhichPKMNString: ; 0x5050e + db "Teach which ?@" +MoveToWhereString: ; 0x5051e + db "Move to where?@" +ChooseAFemalePKMNString: ; 0x5052d ; UNUSED + db "Choose a ♀.@" +ChooseAMalePKMNString: ; 0x5053b ; UNUSED + db "Choose a ♂.@" +ToWhichPKMNString: ; 0x50549 + db "To which ?@" + +YouHaveNoPKMNString: ; 0x50556 + db "You have no !@" + + +Function50566: ; 50566 + ld a, [CurPartyMon] + ld hl, PartyMonNicknames + call GetNick + ld a, [PartyMenuActionText] + and $f + ld hl, Unknown_5057b + call Function505c1 + ret +; 5057b + +Unknown_5057b: ; 5057b + dw UnknownText_0x50594 + dw UnknownText_0x5059e + dw UnknownText_0x505a3 + dw UnknownText_0x505a8 + dw UnknownText_0x50599 + dw UnknownText_0x5058f + dw UnknownText_0x505ad + dw UnknownText_0x505b2 + dw UnknownText_0x505b7 + dw UnknownText_0x505bc +; 5058f + +UnknownText_0x5058f: ; 0x5058f + ; recovered @ HP! + text_jump UnknownText_0x1bc0a2 + db "@" +; 0x50594 + +UnknownText_0x50594: ; 0x50594 + ; 's cured of poison. + text_jump UnknownText_0x1bc0bb + db "@" +; 0x50599 + +UnknownText_0x50599: ; 0x50599 + ; 's rid of paralysis. + text_jump UnknownText_0x1bc0d2 + db "@" +; 0x5059e + +UnknownText_0x5059e: ; 0x5059e + ; 's burn was healed. + text_jump UnknownText_0x1bc0ea + db "@" +; 0x505a3 + +UnknownText_0x505a3: ; 0x505a3 + ; was defrosted. + text_jump UnknownText_0x1bc101 + db "@" +; 0x505a8 + +UnknownText_0x505a8: ; 0x505a8 + ; woke up. + text_jump UnknownText_0x1bc115 + db "@" +; 0x505ad + +UnknownText_0x505ad: ; 0x505ad + ; 's health returned. + text_jump UnknownText_0x1bc123 + db "@" +; 0x505b2 + +UnknownText_0x505b2: ; 0x505b2 + ; is revitalized. + text_jump UnknownText_0x1bc13a + db "@" +; 0x505b7 + +UnknownText_0x505b7: ; 0x505b7 + ; grew to level @ !@ @ + text_jump UnknownText_0x1bc14f + db "@" +; 0x505bc + +UnknownText_0x505bc: ; 0x505bc + ; came to its senses. + text_jump UnknownText_0x1bc16e + db "@" +; 0x505c1 + +Function505c1: ; 505c1 + ld e, a + ld d, 0 +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [Options] + push af + set 4, a + ld [Options], a + call PrintText + pop af + ld [Options], a + ret +; 505da