mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-13 19:45:40 -05:00
code_805D8C8 esta muerto
This commit is contained in:
@@ -1,953 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ShowRecruitmentSearchMenu
|
||||
ShowRecruitmentSearchMenu:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r4, _08065FE0
|
||||
add sp, r4
|
||||
movs r0, 0
|
||||
mov r10, r0
|
||||
ldr r4, _08065FE4
|
||||
ldr r0, [r4]
|
||||
ldr r1, _08065FE8
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl IsRecruitingEnabled
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08065FF0
|
||||
ldr r0, _08065FEC
|
||||
b _08065FFE
|
||||
.align 2, 0
|
||||
_08065FE0: .4byte 0xfffff608
|
||||
_08065FE4: .4byte gDungeon
|
||||
_08065FE8: .4byte 0x00000644
|
||||
_08065FEC: .4byte gUnknown_80FA5F4
|
||||
_08065FF0:
|
||||
ldr r0, [r4]
|
||||
ldr r2, _0806600C
|
||||
adds r0, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08066014
|
||||
ldr r0, _08066010
|
||||
_08065FFE:
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl DisplayDungeonMessage
|
||||
b _08066194
|
||||
.align 2, 0
|
||||
_0806600C: .4byte 0x0000065d
|
||||
_08066010: .4byte gUnknown_80FA61C
|
||||
_08066014:
|
||||
mov r0, sp
|
||||
bl sub_80664FC
|
||||
ldr r6, _08066130
|
||||
_0806601C:
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
mov r1, r10
|
||||
lsls r0, r1, 2
|
||||
add r0, r10
|
||||
lsls r0, 6
|
||||
subs r0, r1
|
||||
lsls r0, 2
|
||||
add r0, sp
|
||||
mov r9, r0
|
||||
ldr r0, _08066134
|
||||
strb r1, [r0, 0x1]
|
||||
ldr r0, _08066138
|
||||
movs r1, 0x1
|
||||
bl DungeonShowWindows
|
||||
mov r2, r8
|
||||
strh r2, [r6, 0x1A]
|
||||
strh r2, [r6, 0x18]
|
||||
strh r2, [r6, 0x1C]
|
||||
mov r0, r10
|
||||
strh r0, [r6, 0x1E]
|
||||
movs r0, 0x2
|
||||
strh r0, [r6, 0x20]
|
||||
strh r2, [r6, 0x4]
|
||||
movs r0, 0x10
|
||||
strh r0, [r6, 0x6]
|
||||
strh r2, [r6, 0x14]
|
||||
mov r1, r8
|
||||
str r1, [r6]
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x28
|
||||
bl sub_801317C
|
||||
ldr r0, _0806613C
|
||||
mov r2, r8
|
||||
str r2, [r0]
|
||||
movs r1, 0
|
||||
ldr r0, _08066140
|
||||
strb r1, [r0]
|
||||
mov r0, r9
|
||||
mov r1, r10
|
||||
bl sub_80661AC
|
||||
ldr r1, _08066144
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r0, 0x10
|
||||
lsls r0, 3
|
||||
strh r0, [r6, 0xC]
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r0, 0x1
|
||||
lsls r0, 3
|
||||
subs r0, 0x2
|
||||
strh r0, [r6, 0xE]
|
||||
_0806608C:
|
||||
movs r5, 0
|
||||
ldr r0, _08066140
|
||||
strb r5, [r0]
|
||||
movs r0, 0
|
||||
ldr r1, _08066148
|
||||
bl sub_8014140
|
||||
adds r4, r0, 0
|
||||
mov r0, r9
|
||||
adds r1, r4, 0
|
||||
bl sub_8066288
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
negs r1, r0
|
||||
orrs r1, r0
|
||||
lsrs r5, r1, 31
|
||||
mov r0, r9
|
||||
adds r1, r4, 0
|
||||
bl sub_8066358
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080660BE
|
||||
movs r5, 0x1
|
||||
_080660BE:
|
||||
cmp r5, 0
|
||||
bne _080660CE
|
||||
ldr r0, _08066130
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x45
|
||||
bl DungeonRunFrameActions
|
||||
_080660CE:
|
||||
ldr r2, _08066140
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080660E2
|
||||
movs r0, 0x1
|
||||
movs r1, 0x8
|
||||
bl sub_8066434
|
||||
_080660E2:
|
||||
ldr r0, _08066140
|
||||
ldrb r1, [r0]
|
||||
movs r7, 0x2
|
||||
adds r0, r7, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080660F8
|
||||
movs r0, 0
|
||||
movs r1, 0x70
|
||||
bl sub_8066434
|
||||
_080660F8:
|
||||
ldr r5, _0806614C
|
||||
ldrh r1, [r5, 0x2]
|
||||
movs r0, 0x30
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0806611A
|
||||
ldr r4, _08066130
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x2C
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0806611A
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x2B
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08066150
|
||||
_0806611A:
|
||||
movs r0, 0
|
||||
bl PlayDungeonCursorSE
|
||||
movs r0, 0
|
||||
mov r1, r10
|
||||
cmp r1, 0
|
||||
bne _0806612A
|
||||
movs r0, 0x1
|
||||
_0806612A:
|
||||
mov r10, r0
|
||||
b _08066184
|
||||
.align 2, 0
|
||||
_08066130: .4byte gDungeonMenu
|
||||
_08066134: .4byte gUnknown_203B43C
|
||||
_08066138: .4byte gUnknown_8106D08
|
||||
_0806613C: .4byte gUnknown_202F2F8
|
||||
_08066140: .4byte gUnknown_202F2FC
|
||||
_08066144: .4byte gWindows
|
||||
_08066148: .4byte gUnknown_8106D68
|
||||
_0806614C: .4byte gRealInputs
|
||||
_08066150:
|
||||
bl sub_80048C8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806608C
|
||||
ldrh r1, [r5, 0x2]
|
||||
adds r0, r7, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0806616E
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x2A
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08066174
|
||||
_0806616E:
|
||||
bl PlayDungeonCancelSE
|
||||
b _0806618C
|
||||
_08066174:
|
||||
movs r0, 0xC
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806608C
|
||||
bl PlayDungeonConfirmationSE
|
||||
movs r2, 0x1
|
||||
mov r8, r2
|
||||
_08066184:
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
bne _0806618C
|
||||
b _0806601C
|
||||
_0806618C:
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_803EAF0
|
||||
_08066194:
|
||||
ldr r3, _080661A8
|
||||
add sp, r3
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080661A8: .4byte 0x000009f8
|
||||
thumb_func_end ShowRecruitmentSearchMenu
|
||||
|
||||
thumb_func_start sub_80661AC
|
||||
sub_80661AC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x44
|
||||
adds r6, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldr r0, _080661DC
|
||||
ldr r4, [r0]
|
||||
movs r0, 0x20
|
||||
mov r8, r0
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
cmp r5, 0
|
||||
bne _080661E4
|
||||
ldr r0, _080661E0
|
||||
ldr r2, [r0]
|
||||
str r5, [sp]
|
||||
movs r0, 0xC
|
||||
movs r1, 0
|
||||
movs r3, 0
|
||||
bl PrintStringOnWindow
|
||||
b _080661F6
|
||||
.align 2, 0
|
||||
_080661DC: .4byte gUnknown_202F2F8
|
||||
_080661E0: .4byte gUnknown_80FEA68
|
||||
_080661E4:
|
||||
ldr r0, _08066254
|
||||
ldr r2, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
movs r1, 0
|
||||
movs r3, 0
|
||||
bl PrintStringOnWindow
|
||||
_080661F6:
|
||||
movs r1, 0x9F
|
||||
lsls r1, 3
|
||||
adds r0, r6, r1
|
||||
ldr r1, [r0]
|
||||
cmp r1, 0
|
||||
beq _08066260
|
||||
movs r7, 0x7
|
||||
lsls r0, r4, 1
|
||||
adds r5, r0, r6
|
||||
_08066208:
|
||||
cmp r4, 0
|
||||
blt _08066244
|
||||
movs r1, 0x9F
|
||||
lsls r1, 3
|
||||
adds r0, r6, r1
|
||||
ldr r0, [r0]
|
||||
cmp r4, r0
|
||||
bge _08066244
|
||||
movs r1, 0xD4
|
||||
lsls r1, 2
|
||||
adds r0, r6, r1
|
||||
adds r0, r4
|
||||
ldrb r2, [r0]
|
||||
add r0, sp, 0x4
|
||||
ldr r1, _08066258
|
||||
bl sprintfStatic
|
||||
movs r0, 0
|
||||
ldrsh r1, [r5, r0]
|
||||
ldr r0, _0806625C
|
||||
bl sub_808D930
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
mov r1, r8
|
||||
add r2, sp, 0x4
|
||||
movs r3, 0
|
||||
bl PrintFormattedStringOnWindow
|
||||
_08066244:
|
||||
subs r7, 0x1
|
||||
adds r5, 0x2
|
||||
adds r4, 0x1
|
||||
movs r1, 0xC
|
||||
add r8, r1
|
||||
cmp r7, 0
|
||||
bge _08066208
|
||||
b _08066270
|
||||
.align 2, 0
|
||||
_08066254: .4byte gUnknown_80FEA80
|
||||
_08066258: .4byte gUnknown_8106D8C
|
||||
_0806625C: .4byte gFormatBuffer_Monsters
|
||||
_08066260:
|
||||
ldr r0, _08066284
|
||||
ldr r2, [r0]
|
||||
str r1, [sp]
|
||||
movs r0, 0x8
|
||||
mov r1, r8
|
||||
movs r3, 0
|
||||
bl PrintStringOnWindow
|
||||
_08066270:
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
add sp, 0x44
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08066284: .4byte gUnknown_80FEA8C
|
||||
thumb_func_end sub_80661AC
|
||||
|
||||
thumb_func_start sub_8066288
|
||||
sub_8066288:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x44
|
||||
adds r5, r0, 0
|
||||
adds r3, r1, 0
|
||||
ldr r0, _080662B8
|
||||
ldr r4, [r0]
|
||||
cmp r4, 0
|
||||
beq _080662B4
|
||||
subs r4, 0x1
|
||||
ldr r2, _080662BC
|
||||
ldrb r0, [r2]
|
||||
movs r1, 0x1
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, _080662C0
|
||||
ldrh r1, [r0, 0x4]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080662C4
|
||||
cmp r3, 0x1
|
||||
beq _080662C4
|
||||
_080662B4:
|
||||
movs r0, 0
|
||||
b _0806633E
|
||||
.align 2, 0
|
||||
_080662B8: .4byte gUnknown_202F2F8
|
||||
_080662BC: .4byte gUnknown_202F2FC
|
||||
_080662C0: .4byte gRealInputs
|
||||
_080662C4:
|
||||
movs r0, 0
|
||||
bl PlayDungeonCursorSE
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
movs r0, 0x10
|
||||
str r0, [sp]
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x10
|
||||
movs r3, 0x90
|
||||
bl sub_80087EC
|
||||
ldr r1, _08066348
|
||||
movs r2, 0xD4
|
||||
lsls r2, 2
|
||||
adds r0, r5, r2
|
||||
adds r0, r4
|
||||
ldrb r2, [r0]
|
||||
add r0, sp, 0x4
|
||||
bl sprintfStatic
|
||||
ldr r0, _0806634C
|
||||
lsls r1, r4, 1
|
||||
adds r1, r5, r1
|
||||
movs r2, 0
|
||||
ldrsh r1, [r1, r2]
|
||||
bl sub_808D930
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
movs r1, 0x14
|
||||
add r2, sp, 0x4
|
||||
movs r3, 0
|
||||
bl PrintFormattedStringOnWindow
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
movs r0, 0x45
|
||||
bl DungeonRunFrameActions
|
||||
ldr r5, _08066350
|
||||
movs r4, 0x5
|
||||
_08066320:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x45
|
||||
bl DungeonRunFrameActions
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08066320
|
||||
ldr r1, _08066354
|
||||
ldr r0, [r1]
|
||||
subs r0, 0x1
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
_0806633E:
|
||||
add sp, 0x44
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08066348: .4byte gUnknown_8106D8C
|
||||
_0806634C: .4byte gFormatBuffer_Monsters
|
||||
_08066350: .4byte ScrollUpWindowFunc
|
||||
_08066354: .4byte gUnknown_202F2F8
|
||||
thumb_func_end sub_8066288
|
||||
|
||||
thumb_func_start sub_8066358
|
||||
sub_8066358:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x44
|
||||
adds r5, r0, 0
|
||||
adds r3, r1, 0
|
||||
ldr r0, _08066394
|
||||
ldr r0, [r0]
|
||||
adds r4, r0, 0
|
||||
adds r4, 0x8
|
||||
movs r6, 0x80
|
||||
movs r1, 0x9F
|
||||
lsls r1, 3
|
||||
adds r0, r5, r1
|
||||
ldr r0, [r0]
|
||||
cmp r0, r4
|
||||
ble _08066390
|
||||
ldr r2, _08066398
|
||||
ldrb r0, [r2]
|
||||
movs r1, 0x2
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0806639C
|
||||
ldrh r1, [r0, 0x4]
|
||||
adds r0, r6, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080663A0
|
||||
cmp r3, 0x2
|
||||
beq _080663A0
|
||||
_08066390:
|
||||
movs r0, 0
|
||||
b _0806641A
|
||||
.align 2, 0
|
||||
_08066394: .4byte gUnknown_202F2F8
|
||||
_08066398: .4byte gUnknown_202F2FC
|
||||
_0806639C: .4byte gRealInputs
|
||||
_080663A0:
|
||||
movs r0, 0
|
||||
bl PlayDungeonCursorSE
|
||||
movs r0, 0
|
||||
bl sub_80073B8
|
||||
movs r0, 0x10
|
||||
str r0, [sp]
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
adds r2, r6, 0
|
||||
movs r3, 0x48
|
||||
bl sub_80087EC
|
||||
ldr r1, _08066424
|
||||
movs r2, 0xD4
|
||||
lsls r2, 2
|
||||
adds r0, r5, r2
|
||||
adds r0, r4
|
||||
ldrb r2, [r0]
|
||||
add r0, sp, 0x4
|
||||
bl sprintfStatic
|
||||
ldr r0, _08066428
|
||||
lsls r1, r4, 1
|
||||
adds r1, r5, r1
|
||||
movs r2, 0
|
||||
ldrsh r1, [r1, r2]
|
||||
bl sub_808D930
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
adds r1, r6, 0
|
||||
add r2, sp, 0x4
|
||||
movs r3, 0
|
||||
bl PrintFormattedStringOnWindow
|
||||
movs r0, 0
|
||||
bl sub_80073E0
|
||||
movs r0, 0xD
|
||||
bl DungeonRunFrameActions
|
||||
ldr r5, _0806642C
|
||||
movs r4, 0x5
|
||||
_080663FC:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0xD
|
||||
bl DungeonRunFrameActions
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _080663FC
|
||||
ldr r1, _08066430
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x1
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
_0806641A:
|
||||
add sp, 0x44
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08066424: .4byte gUnknown_8106D8C
|
||||
_08066428: .4byte gFormatBuffer_Monsters
|
||||
_0806642C: .4byte ScrollDownWindowFunc
|
||||
_08066430: .4byte gUnknown_202F2F8
|
||||
thumb_func_end sub_8066358
|
||||
|
||||
thumb_func_start sub_8066434
|
||||
sub_8066434:
|
||||
push {r4-r7,lr}
|
||||
mov r12, r1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
ldr r7, _080664C8
|
||||
ldr r0, _080664CC
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080664C0
|
||||
ldr r0, _080664D0
|
||||
ldrh r1, [r0]
|
||||
ldr r3, _080664D4
|
||||
ands r3, r1
|
||||
ldr r1, _080664D8
|
||||
ands r3, r1
|
||||
ldr r1, _080664DC
|
||||
ands r3, r1
|
||||
ldr r1, _080664E0
|
||||
ands r3, r1
|
||||
ldr r1, _080664E4
|
||||
ands r3, r1
|
||||
negs r1, r2
|
||||
orrs r1, r2
|
||||
asrs r1, 31
|
||||
movs r2, 0x80
|
||||
lsls r2, 6
|
||||
ands r2, r1
|
||||
ldrh r1, [r0, 0x2]
|
||||
ldr r4, _080664E8
|
||||
ands r4, r1
|
||||
orrs r4, r2
|
||||
movs r5, 0xF
|
||||
ldr r2, _080664EC
|
||||
movs r6, 0x2
|
||||
ldrsh r1, [r7, r6]
|
||||
lsls r1, 3
|
||||
add r1, r12
|
||||
ands r1, r2
|
||||
lsls r1, 4
|
||||
ldrh r2, [r0, 0x6]
|
||||
ands r5, r2
|
||||
orrs r5, r1
|
||||
strh r5, [r0, 0x6]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r7, r2]
|
||||
lsls r1, 3
|
||||
adds r1, 0x40
|
||||
ldr r2, _080664F0
|
||||
ands r1, r2
|
||||
movs r2, 0xFE
|
||||
lsls r2, 8
|
||||
ands r4, r2
|
||||
orrs r4, r1
|
||||
movs r2, 0x80
|
||||
lsls r2, 7
|
||||
ldr r1, _080664F4
|
||||
ands r3, r1
|
||||
orrs r3, r2
|
||||
strh r3, [r0]
|
||||
ands r4, r1
|
||||
strh r4, [r0, 0x2]
|
||||
ldr r1, _080664F8
|
||||
strh r1, [r0, 0x4]
|
||||
movs r1, 0x7F
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_080664C0:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080664C8: .4byte gWindows
|
||||
_080664CC: .4byte gDungeonFramesCounter
|
||||
_080664D0: .4byte gUnknown_202F300
|
||||
_080664D4: .4byte 0x0000feff
|
||||
_080664D8: .4byte 0x0000fdff
|
||||
_080664DC: .4byte 0x0000f3ff
|
||||
_080664E0: .4byte 0x0000efff
|
||||
_080664E4: .4byte 0x0000dfff
|
||||
_080664E8: .4byte 0x0000c1ff
|
||||
_080664EC: .4byte 0x00000fff
|
||||
_080664F0: .4byte 0x000001ff
|
||||
_080664F4: .4byte 0x00003fff
|
||||
_080664F8: .4byte 0x0000f3f0
|
||||
thumb_func_end sub_8066434
|
||||
|
||||
thumb_func_start sub_80664FC
|
||||
sub_80664FC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x1C0
|
||||
str r0, [sp, 0x1A8]
|
||||
movs r7, 0
|
||||
ldr r2, _08066604
|
||||
ldr r3, _08066608
|
||||
movs r1, 0
|
||||
_08066512:
|
||||
mov r4, sp
|
||||
adds r0, r4, r7
|
||||
strb r1, [r0]
|
||||
adds r7, 0x1
|
||||
cmp r7, r2
|
||||
ble _08066512
|
||||
movs r4, 0
|
||||
adds r1, r3, 0
|
||||
ldr r0, [r3]
|
||||
ldr r7, _0806660C
|
||||
adds r0, r7
|
||||
ldr r0, [r0]
|
||||
cmp r4, r0
|
||||
bge _08066578
|
||||
ldr r6, _08066610
|
||||
_08066530:
|
||||
movs r5, 0x1
|
||||
ldr r2, [r1]
|
||||
lsls r0, r4, 3
|
||||
adds r0, r2, r0
|
||||
ldr r7, _08066614
|
||||
adds r1, r0, r7
|
||||
movs r7, 0
|
||||
ldrsh r1, [r1, r7]
|
||||
movs r7, 0xD1
|
||||
lsls r7, 6
|
||||
adds r0, r7
|
||||
movs r7, 0
|
||||
ldrsh r0, [r0, r7]
|
||||
cmp r1, 0
|
||||
bne _08066554
|
||||
cmp r0, 0
|
||||
beq _08066566
|
||||
movs r5, 0x2
|
||||
_08066554:
|
||||
adds r0, r2, r6
|
||||
str r3, [sp, 0x1BC]
|
||||
bl ExtractSpeciesIndex
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
add r0, sp
|
||||
strb r5, [r0]
|
||||
ldr r3, [sp, 0x1BC]
|
||||
_08066566:
|
||||
adds r6, 0x8
|
||||
adds r4, 0x1
|
||||
ldr r1, _08066608
|
||||
ldr r0, [r1]
|
||||
ldr r2, _0806660C
|
||||
adds r0, r2
|
||||
ldr r0, [r0]
|
||||
cmp r4, r0
|
||||
blt _08066530
|
||||
_08066578:
|
||||
ldr r0, [r3]
|
||||
ldr r4, _08066618
|
||||
adds r0, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0806658A
|
||||
add r1, sp, 0x17C
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_0806658A:
|
||||
movs r0, 0x5
|
||||
_0806658C:
|
||||
subs r0, 0x1
|
||||
cmp r0, 0
|
||||
bge _0806658C
|
||||
movs r7, 0
|
||||
_08066594:
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
movs r1, 0x1
|
||||
adds r2, r7, 0x1
|
||||
str r2, [sp, 0x1AC]
|
||||
lsls r4, r7, 2
|
||||
str r4, [sp, 0x1B0]
|
||||
_080665A2:
|
||||
lsls r0, r1, 16
|
||||
asrs r6, r0, 16
|
||||
movs r0, 0x7
|
||||
mov r10, r0
|
||||
movs r2, 0
|
||||
mov r9, r2
|
||||
mov r4, sp
|
||||
adds r0, r4, r6
|
||||
ldrb r0, [r0]
|
||||
adds r1, 0x1
|
||||
str r1, [sp, 0x1B4]
|
||||
cmp r0, 0
|
||||
bne _080665BE
|
||||
b _08066704
|
||||
_080665BE:
|
||||
cmp r7, 0
|
||||
bne _08066620
|
||||
adds r0, r6, 0
|
||||
bl sub_806F9BC
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080665D0
|
||||
b _08066704
|
||||
_080665D0:
|
||||
adds r0, r6, 0
|
||||
bl IsExclusivePokemonUnlocked
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080665DE
|
||||
b _08066704
|
||||
_080665DE:
|
||||
adds r0, r6, 0
|
||||
bl GetRecruitRate
|
||||
lsls r0, 16
|
||||
ldr r1, _0806661C
|
||||
cmp r0, r1
|
||||
bne _080665EE
|
||||
b _08066704
|
||||
_080665EE:
|
||||
cmp r6, 0x97
|
||||
bne _0806669E
|
||||
movs r0, 0x7A
|
||||
bl sub_80860A8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08066600
|
||||
b _08066704
|
||||
_08066600:
|
||||
b _0806669E
|
||||
.align 2, 0
|
||||
_08066604: .4byte 0x000001a7
|
||||
_08066608: .4byte gDungeon
|
||||
_0806660C: .4byte 0x000037e4
|
||||
_08066610: .4byte 0x0000343c
|
||||
_08066614: .4byte 0x0000343e
|
||||
_08066618: .4byte 0x0000066e
|
||||
_0806661C: .4byte 0xfc190000
|
||||
_08066620:
|
||||
movs r5, 0
|
||||
ldr r0, _080666CC
|
||||
ldr r2, [r0]
|
||||
movs r4, 0x1
|
||||
movs r3, 0xCE
|
||||
lsls r3, 1
|
||||
_0806662C:
|
||||
ldrb r1, [r2]
|
||||
adds r0, r4, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806663E
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, r6
|
||||
beq _08066646
|
||||
_0806663E:
|
||||
adds r2, 0x58
|
||||
adds r5, 0x1
|
||||
cmp r5, r3
|
||||
ble _0806662C
|
||||
_08066646:
|
||||
ldr r0, _080666D0
|
||||
cmp r5, r0
|
||||
beq _08066650
|
||||
movs r2, 0x1
|
||||
mov r9, r2
|
||||
_08066650:
|
||||
mov r4, r9
|
||||
cmp r4, 0
|
||||
bne _0806669E
|
||||
movs r5, 0
|
||||
ldr r2, _080666CC
|
||||
_0806665A:
|
||||
movs r0, 0x64
|
||||
adds r1, r5, 0
|
||||
muls r1, r0
|
||||
ldr r0, _080666D4
|
||||
adds r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r4, r0, r1
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806668C
|
||||
movs r1, 0xA
|
||||
ldrsh r0, [r4, r1]
|
||||
str r2, [sp, 0x1B8]
|
||||
bl sub_806A564
|
||||
lsls r0, 24
|
||||
ldr r2, [sp, 0x1B8]
|
||||
cmp r0, 0
|
||||
bne _0806668C
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, r6
|
||||
beq _08066692
|
||||
_0806668C:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _0806665A
|
||||
_08066692:
|
||||
cmp r5, 0x4
|
||||
beq _0806669E
|
||||
movs r2, 0x1
|
||||
mov r9, r2
|
||||
movs r4, 0x6
|
||||
mov r10, r4
|
||||
_0806669E:
|
||||
cmp r7, 0
|
||||
bne _080666D8
|
||||
mov r1, sp
|
||||
adds r0, r1, r6
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _080666B0
|
||||
movs r2, 0x2
|
||||
mov r10, r2
|
||||
_080666B0:
|
||||
mov r4, r8
|
||||
lsls r0, r4, 1
|
||||
ldr r1, [sp, 0x1A8]
|
||||
adds r0, r1, r0
|
||||
strh r6, [r0]
|
||||
movs r2, 0xD4
|
||||
lsls r2, 2
|
||||
adds r0, r1, r2
|
||||
add r0, r8
|
||||
mov r4, r10
|
||||
strb r4, [r0]
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
b _08066704
|
||||
.align 2, 0
|
||||
_080666CC: .4byte gRecruitedPokemonRef
|
||||
_080666D0: .4byte 0x0000019d
|
||||
_080666D4: .4byte 0x00008df8
|
||||
_080666D8:
|
||||
mov r1, r9
|
||||
cmp r1, 0
|
||||
beq _08066704
|
||||
ldr r2, [sp, 0x1B0]
|
||||
adds r0, r2, r7
|
||||
lsls r0, 6
|
||||
subs r0, r7
|
||||
lsls r0, 2
|
||||
ldr r4, [sp, 0x1A8]
|
||||
adds r0, r4
|
||||
mov r2, r8
|
||||
lsls r1, r2, 1
|
||||
adds r1, r0, r1
|
||||
strh r6, [r1]
|
||||
movs r4, 0xD4
|
||||
lsls r4, 2
|
||||
adds r0, r4
|
||||
add r0, r8
|
||||
mov r1, r10
|
||||
strb r1, [r0]
|
||||
movs r2, 0x1
|
||||
add r8, r2
|
||||
_08066704:
|
||||
ldr r1, [sp, 0x1B4]
|
||||
ldr r0, _08066740
|
||||
cmp r1, r0
|
||||
bgt _0806670E
|
||||
b _080665A2
|
||||
_0806670E:
|
||||
ldr r4, [sp, 0x1B0]
|
||||
adds r0, r4, r7
|
||||
lsls r0, 6
|
||||
subs r0, r7
|
||||
lsls r0, 2
|
||||
ldr r7, [sp, 0x1A8]
|
||||
adds r0, r7
|
||||
movs r1, 0x9F
|
||||
lsls r1, 3
|
||||
adds r0, r1
|
||||
mov r2, r8
|
||||
str r2, [r0]
|
||||
ldr r7, [sp, 0x1AC]
|
||||
cmp r7, 0x1
|
||||
bgt _0806672E
|
||||
b _08066594
|
||||
_0806672E:
|
||||
add sp, 0x1C0
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08066740: .4byte 0x000001a3
|
||||
thumb_func_end sub_80664FC
|
||||
|
||||
.align 2, 0
|
||||
@@ -2,12 +2,6 @@
|
||||
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_8106D08
|
||||
gUnknown_8106D08: @ 8106D08
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x02, 0x00, 0x3c, 0xb4, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_8106D68
|
||||
gUnknown_8106D68: @ 8106D68
|
||||
.byte 0x01, 0x00, 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x38, 0x00, 0x68, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
#include "structs/dungeon_entity.h"
|
||||
#include "string_format.h"
|
||||
|
||||
// These flags are used in dungeon message and dungeon menu recruitment file. It's possible these are general scroll flags and should be put elsewhere, like text.h, assuming more files actually use it.
|
||||
#define FLAG_CAN_SCROLL_UP 0x1
|
||||
#define FLAG_CAN_SCROLL_DOWN 0x2
|
||||
|
||||
struct MonDialogueSpriteInfo
|
||||
{
|
||||
s16 species;
|
||||
|
||||
@@ -55,7 +55,7 @@ bool8 sub_8098100(u8 param_1);
|
||||
bool8 sub_8098134(s16 pokeID);
|
||||
void SetTutorialFlag(s32 param_1);
|
||||
bool32 GetTutorialFlag(s32 param_1);
|
||||
bool8 IsExclusivePokemonUnlocked(s16 pokeID);
|
||||
bool8 IsExclusivePokemonUnlocked(s32 pokeID);
|
||||
void UnlockExclusivePokemon(s16 pokeID);
|
||||
void WriteExclusivePokemon(DataSerializer *r0);
|
||||
void ReadExclusivePokemon(DataSerializer *r0);
|
||||
|
||||
@@ -235,7 +235,6 @@ SECTIONS {
|
||||
src/dungeon_menu_stairs.o(.text);
|
||||
src/dungeon_menu_others.o(.text);
|
||||
src/dungeon_menu_recruitment.o(.text);
|
||||
asm/code_805D8C8.o(.text);
|
||||
src/code_8066D04.o(.text);
|
||||
src/code_805D8C8.o(.text);
|
||||
asm/code_805D8C8_1.o(.text);
|
||||
|
||||
@@ -37,7 +37,6 @@ extern void sub_8040238(void);
|
||||
extern void sub_8083AB0(s16 param_0, Entity * target, Entity * entity);
|
||||
|
||||
extern MenuInputStruct gDungeonMenu;
|
||||
extern s32 gDungeonSubMenuItemsCount;
|
||||
|
||||
extern const u8 *const gUnknown_80FEBF8;
|
||||
extern const u8 *const gUnknown_80FEC28;
|
||||
|
||||
@@ -1,3 +1,385 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "dungeon_menu_recruitment.h"
|
||||
#include "dungeon.h"
|
||||
#include "text.h"
|
||||
#include "menu_input.h"
|
||||
#include "input.h"
|
||||
#include "dungeon_message.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "sprite.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
extern const u8 gUnknown_8106D68[];
|
||||
|
||||
extern void PlayDungeonStartButtonSE(void);
|
||||
extern void PlayDungeonCancelSE(void);
|
||||
extern void PlayDungeonConfirmationSE(void);
|
||||
extern void PlayDungeonCursorSE(u8 param_1);
|
||||
extern void sub_803EAF0(u32, u8 *);
|
||||
extern bool8 CanSubMenuItemBeChosen(s32 param_1);
|
||||
extern void DungeonRunFrameActions(u32 a0);
|
||||
extern void DungeonShowWindows(const WindowTemplates *a0, bool8 a1);
|
||||
extern void AddActionToDungeonSubMenu(u16 actionId, u8 param_2);
|
||||
extern u16 GetLeaderActionId(void);
|
||||
extern u32 sub_8014140(s32 a0, const void *a1);
|
||||
extern void sprintfStatic(char *buffer, const char *text, ...);
|
||||
extern u8 sub_806F9BC(s32);
|
||||
extern bool8 sub_80860A8(u8 id);
|
||||
extern bool8 sub_806A564(s32 r0);
|
||||
|
||||
extern MenuInputStruct gDungeonMenu;
|
||||
extern s32 gDungeonFramesCounter;
|
||||
|
||||
struct MonRecruitList
|
||||
{
|
||||
s16 speciesIds[MONSTER_MAX];
|
||||
u8 monColor[MONSTER_MAX];
|
||||
s32 count;
|
||||
};
|
||||
|
||||
static void sub_80661AC(struct MonRecruitList *tabData, s32 tabId);
|
||||
static bool8 TryScrollUp(struct MonRecruitList *tabData, s32 a1);
|
||||
static bool8 TryScrollDown(struct MonRecruitList *tabData, s32 a1);
|
||||
static void CreateScrollingArrow(bool8 upArrow, s32 y);
|
||||
static void sub_80664FC(struct MonRecruitList *tabsData);
|
||||
|
||||
extern const u8 *const gUnknown_80FA61C;
|
||||
extern const u8 *const gUnknown_80FA5F4;
|
||||
extern const u8 *const gUnknown_80FEA68;
|
||||
extern const u8 *const gUnknown_80FEA80;
|
||||
extern const u8 *const gUnknown_80FEA8C;
|
||||
|
||||
extern s32 gUnknown_202F2F8;
|
||||
extern u8 gUnknown_202F2FC;
|
||||
extern SpriteOAM gUnknown_202F300;
|
||||
|
||||
enum {
|
||||
TAB_POTENTIAL_RECRUITS,
|
||||
TAB_RECRUITED_MONS,
|
||||
TABS_COUNT
|
||||
};
|
||||
|
||||
static EWRAM_INIT WindowHeader sRecruitmentWindowHeader = {2, 0, 13, 0};
|
||||
|
||||
static const WindowTemplates sRecruitmentSearchWindows = {
|
||||
.id = {
|
||||
[0] = {
|
||||
.type = WINDOW_TYPE_WITH_HEADER,
|
||||
.pos = {2, 2},
|
||||
.width = 18,
|
||||
.height = 14,
|
||||
.unk10 = 18,
|
||||
.unk12 = 2,
|
||||
.header = &sRecruitmentWindowHeader,
|
||||
},
|
||||
[1] = WINDOW_DUMMY,
|
||||
[2] = WINDOW_DUMMY,
|
||||
[3] = WINDOW_DUMMY,
|
||||
}
|
||||
};
|
||||
|
||||
void ShowRecruitmentSearchMenu(void)
|
||||
{
|
||||
s32 currTabId = 0;
|
||||
|
||||
if (!IsRecruitingEnabled(gDungeon->unk644.dungeonLocation.id)) {
|
||||
DisplayDungeonMessage(NULL, gUnknown_80FA5F4, TRUE);
|
||||
}
|
||||
else if (gDungeon->unk644.unk19) {
|
||||
DisplayDungeonMessage(NULL, gUnknown_80FA61C, TRUE);
|
||||
}
|
||||
else {
|
||||
struct MonRecruitList tabsData[2];
|
||||
|
||||
sub_80664FC(tabsData);
|
||||
while (1) {
|
||||
bool8 closeWindow = FALSE;
|
||||
struct MonRecruitList *currTabData = &tabsData[currTabId];
|
||||
|
||||
sRecruitmentWindowHeader.currId = currTabId;
|
||||
DungeonShowWindows(&sRecruitmentSearchWindows, TRUE);
|
||||
gDungeonMenu.unk1A = 0;
|
||||
gDungeonMenu.menuIndex = 0;
|
||||
gDungeonMenu.unk1C = 0;
|
||||
gDungeonMenu.unk1E = currTabId;
|
||||
gDungeonMenu.unk20 = 2;
|
||||
gDungeonMenu.unk4 = 0;
|
||||
gDungeonMenu.firstEntryY = 16;
|
||||
gDungeonMenu.unk14.x = 0;
|
||||
gDungeonMenu.unk0 = 0;
|
||||
sub_801317C(&gDungeonMenu.unk28);
|
||||
gUnknown_202F2F8 = 0;
|
||||
gUnknown_202F2FC = 0;
|
||||
sub_80661AC(currTabData, currTabId);
|
||||
gDungeonMenu.unkC = (gWindows[0].x + 16) * 8;
|
||||
gDungeonMenu.unkE = ((gWindows[0].y + 1) * 8) - 2;
|
||||
|
||||
while (1) {
|
||||
s32 unkVar;
|
||||
bool8 scroll = FALSE;
|
||||
|
||||
gUnknown_202F2FC = 0;
|
||||
unkVar = sub_8014140(0, gUnknown_8106D68);
|
||||
if (TryScrollUp(currTabData, unkVar)) {
|
||||
scroll = TRUE;
|
||||
}
|
||||
if (TryScrollDown(currTabData, unkVar)) {
|
||||
scroll = TRUE;
|
||||
}
|
||||
|
||||
if (!scroll) {
|
||||
AddMenuCursorSprite(&gDungeonMenu);
|
||||
DungeonRunFrameActions(0x45);
|
||||
}
|
||||
|
||||
if (gUnknown_202F2FC & FLAG_CAN_SCROLL_UP) {
|
||||
CreateScrollingArrow(TRUE, 8);
|
||||
}
|
||||
if (gUnknown_202F2FC & FLAG_CAN_SCROLL_DOWN) {
|
||||
CreateScrollingArrow(FALSE, 0x70);
|
||||
}
|
||||
|
||||
if ((gRealInputs.pressed & (DPAD_LEFT | DPAD_RIGHT)) || gDungeonMenu.unk28.dpad_left || gDungeonMenu.unk28.dpad_right) {
|
||||
PlayDungeonCursorSE(FALSE);
|
||||
currTabId = (currTabId == 0) ? 1 : 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (sub_80048C8())
|
||||
continue;
|
||||
if ((gRealInputs.pressed & B_BUTTON) || gDungeonMenu.unk28.b_button) {
|
||||
PlayDungeonCancelSE();
|
||||
closeWindow = TRUE;
|
||||
break;
|
||||
}
|
||||
if ((gRealInputs.pressed & (SELECT_BUTTON | START_BUTTON))) {
|
||||
PlayDungeonConfirmationSE();
|
||||
closeWindow = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (closeWindow)
|
||||
break;
|
||||
}
|
||||
|
||||
sub_803EAF0(0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
extern const u8 gUnknown_8106D8C[];
|
||||
|
||||
static void sub_80661AC(struct MonRecruitList *tabData, s32 tabId)
|
||||
{
|
||||
u8 text[64];
|
||||
s32 i;
|
||||
s32 menuMonId = gUnknown_202F2F8;
|
||||
s32 y = 32;
|
||||
|
||||
sub_80073B8(0);
|
||||
if (tabId == TAB_POTENTIAL_RECRUITS) {
|
||||
PrintStringOnWindow(12, 0, gUnknown_80FEA68, 0, '\0');
|
||||
}
|
||||
else {
|
||||
PrintStringOnWindow(20, 0, gUnknown_80FEA80, 0, '\0');
|
||||
}
|
||||
|
||||
if (tabData->count != 0) {
|
||||
for (i = 0; i < 8; i++, menuMonId++, y += 12) {
|
||||
if (menuMonId >= 0 && menuMonId < tabData->count) {
|
||||
sprintfStatic(text, gUnknown_8106D8C, tabData->monColor[menuMonId]);
|
||||
sub_808D930(gFormatBuffer_Monsters[0], tabData->speciesIds[menuMonId]);
|
||||
PrintFormattedStringOnWindow(8, y, text, 0, '\0');
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
PrintStringOnWindow(8, y, gUnknown_80FEA8C, 0, '\0');
|
||||
}
|
||||
sub_80073E0(0);
|
||||
}
|
||||
|
||||
static bool8 TryScrollUp(struct MonRecruitList *tabData, s32 a1)
|
||||
{
|
||||
s32 i;
|
||||
u8 text[64];
|
||||
s32 menuMonId = gUnknown_202F2F8;
|
||||
if (menuMonId == 0)
|
||||
return FALSE;
|
||||
|
||||
menuMonId--;
|
||||
gUnknown_202F2FC |= FLAG_CAN_SCROLL_UP;
|
||||
if (!(gRealInputs.repeated & DPAD_UP) && a1 != 1) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
PlayDungeonCursorSE(FALSE);
|
||||
sub_80073B8(0);
|
||||
sub_80087EC(0, 0, 16, 144, 16);
|
||||
sprintfStatic(text, gUnknown_8106D8C, tabData->monColor[menuMonId]);
|
||||
sub_808D930(gFormatBuffer_Monsters[0], tabData->speciesIds[menuMonId]);
|
||||
PrintFormattedStringOnWindow(8, 20, text, 0, '\0');
|
||||
sub_80073E0(0);
|
||||
DungeonRunFrameActions(0x45);
|
||||
for (i = 0; i < 6; i++) {
|
||||
ScrollUpWindowFunc(0);
|
||||
DungeonRunFrameActions(0x45);
|
||||
}
|
||||
gUnknown_202F2F8--;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 TryScrollDown(struct MonRecruitList *tabData, s32 a1)
|
||||
{
|
||||
s32 i;
|
||||
u8 text[64];
|
||||
s32 menuMonId = gUnknown_202F2F8 + 8;
|
||||
s32 y = 128;
|
||||
if (tabData->count <= menuMonId)
|
||||
return FALSE;
|
||||
|
||||
gUnknown_202F2FC |= FLAG_CAN_SCROLL_DOWN;
|
||||
if (!(gRealInputs.repeated & DPAD_DOWN) && a1 != 2) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
PlayDungeonCursorSE(FALSE);
|
||||
sub_80073B8(0);
|
||||
sub_80087EC(0, 0, y, 72, 16);
|
||||
sprintfStatic(text, gUnknown_8106D8C, tabData->monColor[menuMonId]);
|
||||
sub_808D930(gFormatBuffer_Monsters[0], tabData->speciesIds[menuMonId]);
|
||||
PrintFormattedStringOnWindow(8, y, text, 0, '\0');
|
||||
sub_80073E0(0);
|
||||
DungeonRunFrameActions(13);
|
||||
for (i = 0; i < 6; i++) {
|
||||
ScrollDownWindowFunc(0);
|
||||
DungeonRunFrameActions(13);
|
||||
}
|
||||
gUnknown_202F2F8++;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// Almost identical to CreateMessageLogArrow
|
||||
static void CreateScrollingArrow(bool8 upArrow, s32 y)
|
||||
{
|
||||
struct Window *window = &gWindows[0];
|
||||
if (!(gDungeonFramesCounter & 8)) {
|
||||
SpriteSetAffine1(&gUnknown_202F300, 0);
|
||||
SpriteSetAffine2(&gUnknown_202F300, 0);
|
||||
SpriteSetObjMode(&gUnknown_202F300, 0);
|
||||
SpriteSetMosaic(&gUnknown_202F300, 0);
|
||||
SpriteSetBpp(&gUnknown_202F300, 0);
|
||||
SpriteSetMatrixNum(&gUnknown_202F300, (upArrow != FALSE) ? (16) : 0);
|
||||
SpriteSetPalNum(&gUnknown_202F300, 15);
|
||||
SpriteSetY(&gUnknown_202F300, (window->y * 8) + y);
|
||||
SpriteSetX(&gUnknown_202F300, (window->x * 8) + 64);
|
||||
SpriteSetShape(&gUnknown_202F300, 1);
|
||||
SpriteSetSize(&gUnknown_202F300, 0);
|
||||
SpriteSetPriority(&gUnknown_202F300, 0);
|
||||
SpriteSetPalNum(&gUnknown_202F300, 15);
|
||||
SpriteSetTileNum(&gUnknown_202F300, 0x3f0);
|
||||
|
||||
AddSprite(&gUnknown_202F300, 127, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80664FC(struct MonRecruitList *tabsData)
|
||||
{
|
||||
s32 i, id, dummy;
|
||||
u8 spArray[MONSTER_MAX];
|
||||
|
||||
for (i = 0; i < MONSTER_MAX; i++) {
|
||||
spArray[i] = 0;
|
||||
}
|
||||
|
||||
for (id = 0; id < gDungeon->unk37E4; id++) {
|
||||
u8 byte = 1;
|
||||
s32 val1 = gDungeon->unk343C[id].unk2[0];
|
||||
s32 val2 = gDungeon->unk343C[id].unk2[1];
|
||||
if (val1 == 0) {
|
||||
if (val2 == 0)
|
||||
continue;
|
||||
byte = 2;
|
||||
}
|
||||
spArray[ExtractSpeciesIndex(&gDungeon->unk343C[id])] = byte;
|
||||
}
|
||||
|
||||
if (gDungeon->unk644.unk2A) {
|
||||
spArray[MONSTER_KECLEON] = 1;
|
||||
}
|
||||
|
||||
// ???
|
||||
for (dummy = 0; dummy < 6; dummy++) {;}
|
||||
|
||||
for (i = 0; i < TABS_COUNT; i++) {
|
||||
s32 count = 0;
|
||||
s32 j;
|
||||
// Line below is only to trick compiler into generating matching stack pattern.
|
||||
dummy = tabsData[i].count;
|
||||
for (j = 1; j < MONSTER_MUNCHLAX; j++) {
|
||||
s32 k;
|
||||
s32 speciesId = (s16) j;
|
||||
s32 monNameColor = 7;
|
||||
bool8 monIsRecruited = FALSE;
|
||||
|
||||
|
||||
if (spArray[speciesId] == 0)
|
||||
continue;
|
||||
|
||||
if (i == TAB_POTENTIAL_RECRUITS) {
|
||||
u32 recruitRate, unrecruitableRate;
|
||||
if (!sub_806F9BC(speciesId))
|
||||
continue;
|
||||
if (!IsExclusivePokemonUnlocked(speciesId))
|
||||
continue;
|
||||
// Weird casting needed to match...
|
||||
recruitRate = (u16) GetRecruitRate(speciesId);
|
||||
unrecruitableRate = (u16) -999;
|
||||
if (recruitRate == unrecruitableRate)
|
||||
continue;
|
||||
if (speciesId == MONSTER_MEW && !sub_80860A8(122))
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
for (k = 0; k < NUM_MONSTERS; k++) {
|
||||
if (PokemonFlag1(&gRecruitedPokemonRef->pokemon[k]) && gRecruitedPokemonRef->pokemon[k].speciesNum == speciesId)
|
||||
break;
|
||||
}
|
||||
if (k != NUM_MONSTERS) {
|
||||
monIsRecruited = TRUE;
|
||||
}
|
||||
|
||||
if (!monIsRecruited) {
|
||||
for (k = 0; k < 4; k++) {
|
||||
PokemonStruct2 *mon = &gRecruitedPokemonRef->pokemon2[k];
|
||||
if (PokemonFlag1Struct2(mon) && !sub_806A564(mon->unkA) && mon->speciesNum == speciesId)
|
||||
break;
|
||||
}
|
||||
if (k != 4) {
|
||||
monIsRecruited = TRUE;
|
||||
monNameColor = 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (i == TAB_POTENTIAL_RECRUITS) {
|
||||
if (spArray[speciesId] == 2) {
|
||||
monNameColor = 2;
|
||||
}
|
||||
tabsData[TAB_POTENTIAL_RECRUITS].speciesIds[count] = speciesId;
|
||||
tabsData[TAB_POTENTIAL_RECRUITS].monColor[count] = monNameColor;
|
||||
count++;
|
||||
}
|
||||
else if (monIsRecruited) {
|
||||
tabsData[i].speciesIds[count] = speciesId;
|
||||
tabsData[i].monColor[count] = monNameColor;
|
||||
count++;
|
||||
}
|
||||
}
|
||||
tabsData[i].count = count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,8 +149,6 @@ static UNUSED EWRAM_DATA u8 sUnused[4] = {0};
|
||||
EWRAM_DATA static SpriteOAM gUnknown_202F268 = {0};
|
||||
EWRAM_DATA static WindowHeader sTeamWindowHeader = {0};
|
||||
|
||||
EWRAM_INIT u8 gUnknown_203B43C[4] = {2, 0, 0xD, 0}; // TODO: Move to a better file and figure out the array count. Apparently it's only written to.
|
||||
|
||||
struct UnkFieldTeamMenuStruct
|
||||
{
|
||||
s32 unk0;
|
||||
|
||||
@@ -61,10 +61,6 @@ static EWRAM_DATA u8 sMessageLogFlags = 0;
|
||||
static EWRAM_DATA SpriteOAM sMessageLogArrowSpriteOAM = {0};
|
||||
EWRAM_INIT u8 gUnknown_203B434 = 1;
|
||||
|
||||
// Used for sMessageLogFlags
|
||||
#define FLAG_CAN_SCROLL_UP 0x1
|
||||
#define FLAG_CAN_SCROLL_DOWN 0x2
|
||||
|
||||
void sub_80521D0(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -168,12 +168,10 @@ bool32 GetTutorialFlag(s32 index)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsExclusivePokemonUnlocked(s16 pokeID)
|
||||
bool8 IsExclusivePokemonUnlocked(s32 pokeID)
|
||||
{
|
||||
s32 index;
|
||||
s32 pokeID_s32;
|
||||
|
||||
pokeID_s32 = pokeID;
|
||||
s32 pokeID_s32 = (s16) pokeID;
|
||||
|
||||
for(index = 0; index < NUM_EXCLUSIVE_POKEMON; index++)
|
||||
{
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
.include "src/dungeon_message.o"
|
||||
.include "src/dungeon_move.o"
|
||||
.include "src/dungeon_main.o"
|
||||
.include "src/dungeon_menu_team.o"
|
||||
.include "src/dungeon_menu_recruitment.o"
|
||||
.include "src/dungeon_ai_items.o"
|
||||
.include "src/code_807CD9C.o"
|
||||
.include "src/dungeon_leader.o"
|
||||
|
||||
Reference in New Issue
Block a user