Skip to content

Commit

Permalink
sub_0207BD78
Browse files Browse the repository at this point in the history
  • Loading branch information
PikalaxALT committed Jun 8, 2024
1 parent 52f7505 commit 45f88c6
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 284 deletions.
284 changes: 0 additions & 284 deletions asm/unk_02078E30.s
Original file line number Diff line number Diff line change
Expand Up @@ -27,290 +27,6 @@

.text

thumb_func_start sub_0207BD78
sub_0207BD78: ; 0x0207BD78
push {r4, r5, r6, lr}
sub sp, #8
mov r1, #0xc9
add r4, r0, #0
lsl r1, r1, #4
add r5, r4, r1
ldr r2, [r5, #0xc]
cmp r2, #1
bne _0207BDBA
bl sub_0207CC24
cmp r0, #0
bne _0207BDB4
ldr r0, _0207BFB0 ; =0x00000C65
ldrb r0, [r4, r0]
cmp r0, #7
beq _0207BDAE
ldr r0, _0207BFB4 ; =0x00000684
mov r1, #0
ldr r0, [r4, r0]
bl Sprite_SetAnimCtrlCurrentFrame
ldr r0, _0207BFB4 ; =0x00000684
mov r1, #0
ldr r0, [r4, r0]
bl Set2dSpriteAnimSeqNo
_0207BDAE:
add sp, #8
ldr r0, [r5, #8]
pop {r4, r5, r6, pc}
_0207BDB4:
add sp, #8
mov r0, #0x1e
pop {r4, r5, r6, pc}
_0207BDBA:
add r2, r1, #0
sub r2, #0x26
ldrh r2, [r4, r2]
cmp r2, #4
bhi _0207BE14
add r2, r2, r2
add r2, pc
ldrh r2, [r2, #6]
lsl r2, r2, #0x10
asr r2, r2, #0x10
add pc, r2
_0207BDD0: ; jump table
.short _0207BDDA - _0207BDD0 - 2 ; case 0
.short _0207BEB2 - _0207BDD0 - 2 ; case 1
.short _0207BEDA - _0207BDD0 - 2 ; case 2
.short _0207BF02 - _0207BDD0 - 2 ; case 3
.short _0207BF88 - _0207BDD0 - 2 ; case 4
_0207BDDA:
bl sub_0207AD6C
add r5, r0, #0
mov r0, #0
mvn r0, r0
cmp r5, r0
beq _0207BE54
cmp r5, #6
bhi _0207BE14
add r0, r5, r5
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0207BDF8: ; jump table
.short _0207BE06 - _0207BDF8 - 2 ; case 0
.short _0207BE06 - _0207BDF8 - 2 ; case 1
.short _0207BE06 - _0207BDF8 - 2 ; case 2
.short _0207BE06 - _0207BDF8 - 2 ; case 3
.short _0207BE06 - _0207BDF8 - 2 ; case 4
.short _0207BE06 - _0207BDF8 - 2 ; case 5
.short _0207BE34 - _0207BDF8 - 2 ; case 6
_0207BE06:
ldr r0, _0207BFB8 ; =0x00000654
ldr r0, [r4, r0]
ldr r0, [r0]
bl Party_GetCount
cmp r5, r0
blo _0207BE16
_0207BE14:
b _0207BFAA
_0207BE16:
ldr r0, _0207BFBC ; =0x00000948
lsl r3, r5, #3
ldr r6, [r4, r0]
add r0, r4, #0
ldrb r2, [r6, r3]
add r3, r6, r3
ldrb r3, [r3, #1]
add r1, r5, #0
bl sub_0207A910
add r0, r4, #0
bl sub_0207BCE8
add sp, #8
pop {r4, r5, r6, pc}
_0207BE34:
mov r0, #0x25
lsl r0, r0, #6
bl PlaySE
add r0, r4, #0
bl sub_0207FBC8
add r0, r4, #0
mov r1, #9
mov r2, #1
mov r3, #0
bl sub_0207CBD0
add sp, #8
mov r0, #0x1e
pop {r4, r5, r6, pc}
_0207BE54:
ldr r0, _0207BFC0 ; =gSystem
ldr r1, [r0, #0x48]
mov r0, #1
tst r0, r1
beq _0207BE90
ldr r0, _0207BFB0 ; =0x00000C65
ldrb r0, [r4, r0]
cmp r0, #6
blo _0207BE86
mov r0, #0x25
lsl r0, r0, #6
bl PlaySE
add r0, r4, #0
bl sub_0207FBC8
add r0, r4, #0
mov r1, #9
mov r2, #1
mov r3, #0
bl sub_0207CBD0
add sp, #8
mov r0, #0x1e
pop {r4, r5, r6, pc}
_0207BE86:
add r0, r4, #0
bl sub_0207BCE8
add sp, #8
pop {r4, r5, r6, pc}
_0207BE90:
mov r0, #2
tst r0, r1
beq _0207BEAA
mov r0, #0x25
lsl r0, r0, #6
bl PlaySE
add r0, r4, #0
bl sub_0207FBC8
add sp, #8
mov r0, #1
pop {r4, r5, r6, pc}
_0207BEAA:
add r0, r4, #0
bl sub_0207A8FC
b _0207BFAA
_0207BEB2:
mov r0, #0x89
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl ClearFrameAndWindow2
ldr r0, _0207BFC4 ; =0x00000678
mov r1, #0
ldr r0, [r4, r0]
bl thunk_Sprite_SetPalIndex
add r0, r4, #0
mov r1, #0x25
mov r2, #1
bl sub_0207DAC4
ldr r0, _0207BFC8 ; =0x00000C6A
mov r1, #0
strh r1, [r4, r0]
b _0207BFAA
_0207BEDA:
sub r1, #0x2d
ldrb r1, [r4, r1]
mov r2, #0
mvn r2, r2
lsl r1, r1, #0x1a
lsr r1, r1, #0x1a
bl sub_0207C048
cmp r0, #1
bne _0207BFAA
ldr r0, _0207BFCC ; =0x000005EC
bl PlaySE
ldr r0, _0207BFC8 ; =0x00000C6A
mov r1, #3
strh r1, [r4, r0]
mov r1, #0
add r0, r0, #2
strh r1, [r4, r0]
b _0207BFAA
_0207BF02:
sub r1, #0x2b
ldrb r1, [r4, r1]
mov r2, #1
bl sub_0207C048
cmp r0, #1
bne _0207BFAA
ldr r0, _0207BFB8 ; =0x00000654
ldr r1, _0207BFB0 ; =0x00000C65
ldr r0, [r4, r0]
ldrb r1, [r4, r1]
ldr r0, [r0]
bl Party_GetMonByIndex
add r6, r0, #0
mov r0, #0x1f
lsl r0, r0, #6
ldr r0, [r4, r0]
mov r1, #0x41
bl NewString_ReadMsgData
add r5, r0, #0
add r0, r6, #0
bl Mon_GetBoxMon
add r2, r0, #0
ldr r0, _0207BFD0 ; =0x000007C4
mov r1, #0
ldr r0, [r4, r0]
bl BufferBoxMonNickname
mov r0, #0
str r0, [sp]
mov r1, #1
ldr r2, _0207BFD4 ; =0x00000C6C
str r1, [sp, #4]
ldr r0, _0207BFD0 ; =0x000007C4
ldrh r2, [r4, r2]
ldr r0, [r4, r0]
mov r3, #3
bl BufferIntegerAsString
ldr r1, _0207BFD0 ; =0x000007C4
add r2, r5, #0
ldr r0, [r4, r1]
add r1, r1, #4
ldr r1, [r4, r1]
bl StringExpandPlaceholders
add r0, r5, #0
bl String_Delete
mov r1, #0
add r0, r4, #0
mvn r1, r1
mov r2, #1
bl sub_0207DAEC
ldr r0, _0207BFC8 ; =0x00000C6A
mov r1, #4
strh r1, [r4, r0]
mov r1, #0x1e
sub r0, #8
strb r1, [r4, r0]
add sp, #8
mov r0, #0x18
pop {r4, r5, r6, pc}
_0207BF88:
mov r0, #0x89
lsl r0, r0, #2
add r0, r4, r0
mov r1, #1
bl ClearFrameAndWindow2
ldr r0, _0207BFC4 ; =0x00000678
mov r1, #0
ldr r0, [r4, r0]
bl thunk_Sprite_SetPalIndex
add r0, r4, #0
bl sub_0207FBC8
add sp, #8
mov r0, #1
pop {r4, r5, r6, pc}
_0207BFAA:
mov r0, #0x1e
add sp, #8
pop {r4, r5, r6, pc}
.balign 4, 0
_0207BFB0: .word 0x00000C65
_0207BFB4: .word 0x00000684
_0207BFB8: .word 0x00000654
_0207BFBC: .word 0x00000948
_0207BFC0: .word gSystem
_0207BFC4: .word 0x00000678
_0207BFC8: .word 0x00000C6A
_0207BFCC: .word 0x000005EC
_0207BFD0: .word 0x000007C4
_0207BFD4: .word 0x00000C6C
thumb_func_end sub_0207BD78

thumb_func_start sub_0207BFD8
sub_0207BFD8: ; 0x0207BFD8
push {r3, r4, r5, lr}
Expand Down
94 changes: 94 additions & 0 deletions src/party_menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ int sub_0207BB88(PartyMenuStruct *partyMenu);
void sub_0207BBFC(u8 a0, s16 *px, s16 *py);
BOOL sub_0207BC1C(PartyMenuStruct *partyMenu, int *pState);
int sub_0207BD78(PartyMenuStruct *partyMenu);
BOOL sub_0207C048(PartyMenuStruct *partyMenu, int a1, int a2);
int sub_0207C0DC(PartyMenuStruct *partyMenu);
int sub_0207C288(PartyMenuStruct *partyMenu);
int sub_0207C400(PartyMenuStruct *partyMenu);
Expand Down Expand Up @@ -1951,3 +1952,96 @@ int sub_0207BCE8(PartyMenuStruct *partyMenu) {

return 30;
}

int sub_0207BD78(PartyMenuStruct *partyMenu) {
PartyMenuStruct_SubC90 *r5 = &partyMenu->unk_C90;
if (r5->unk_C == TRUE) {
if (!sub_0207CC24(partyMenu)) {
if (partyMenu->partyMonIndex != 7) {
Sprite_SetAnimCtrlCurrentFrame(partyMenu->unk_684, 0);
Set2dSpriteAnimSeqNo(partyMenu->unk_684, 0);
}
return r5->unk_8;
} else {
return 30;
}
}

switch (partyMenu->unk_C6A) {
case 0: {
u32 selection = sub_0207AD6C(partyMenu);
if (selection != -1) {
switch (selection) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
if (selection >= Party_GetCount(partyMenu->args->party)) {
break;
}
sub_0207A910(partyMenu, selection, partyMenu->unk_948[selection].unk_0, partyMenu->unk_948[selection].unk_1);
return sub_0207BCE8(partyMenu);
case 6:
PlaySE(SEQ_SE_GS_GEARCANCEL);
sub_0207FBC8(partyMenu);
sub_0207CBD0(partyMenu, 9, 1, 0);
return 30;
}
} else {
if (gSystem.newKeys & PAD_BUTTON_A) {
if (partyMenu->partyMonIndex >= 6) {
PlaySE(SEQ_SE_GS_GEARCANCEL);
sub_0207FBC8(partyMenu);
sub_0207CBD0(partyMenu, 9, 1, 0);
return 30;
} else {
return sub_0207BCE8(partyMenu);
}
} else if (gSystem.newKeys & PAD_BUTTON_B) {
PlaySE(SEQ_SE_GS_GEARCANCEL);
sub_0207FBC8(partyMenu);
return 1;
} else {
sub_0207A8FC(partyMenu);
}
}
break;
}
case 1:
ClearFrameAndWindow2(&partyMenu->unk_224, TRUE);
thunk_Sprite_SetPalIndex(partyMenu->unk_678, 0);
sub_0207DAC4(partyMenu, 37, 1);
partyMenu->unk_C6A = 0;
break;
case 2:
if (sub_0207C048(partyMenu, partyMenu->unk_C63_0, -1) == TRUE) {
PlaySE(SEQ_SE_DP_KAIFUKU);
partyMenu->unk_C6A = 3;
partyMenu->unk_C6C = 0;
}
break;
case 3:
if (sub_0207C048(partyMenu, partyMenu->partyMonIndex, 1) == TRUE) {
Pokemon *pokemon = Party_GetMonByIndex(partyMenu->args->party, partyMenu->partyMonIndex);
String *string = NewString_ReadMsgData(partyMenu->msgData, msg_0300_00065);
BufferBoxMonNickname(partyMenu->msgFormat, 0, Mon_GetBoxMon(pokemon));
BufferIntegerAsString(partyMenu->msgFormat, 1, partyMenu->unk_C6C, 3, PRINTING_MODE_LEFT_ALIGN, TRUE);
StringExpandPlaceholders(partyMenu->msgFormat, partyMenu->strbuf, string);
String_Delete(string);
sub_0207DAEC(partyMenu, -1, 1);
partyMenu->unk_C6A = 4;
partyMenu->unk_C62 = 30;
return 24;
}
break;
case 4:
ClearFrameAndWindow2(&partyMenu->unk_224, TRUE);
thunk_Sprite_SetPalIndex(partyMenu->unk_678, 0);
sub_0207FBC8(partyMenu);
return 1;
}

return 30;
}

0 comments on commit 45f88c6

Please sign in to comment.