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