mirror of
https://github.com/pret/pmd-red.git
synced 2026-10-01 05:18:28 -05:00
more decomp
This commit is contained in:
@@ -10833,320 +10833,4 @@ _080243D6:
|
||||
_080243E4: .4byte gUnknown_3001B60
|
||||
thumb_func_end sub_802437C
|
||||
|
||||
thumb_func_start sub_80243E8
|
||||
sub_80243E8:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x3C
|
||||
ldr r3, _08024448
|
||||
ldr r0, _0802444C
|
||||
ldr r0, [r0]
|
||||
ldr r2, _08024450
|
||||
adds r1, r0, r2
|
||||
movs r4, 0
|
||||
ldrsh r2, [r1, r4]
|
||||
movs r4, 0xDD
|
||||
lsls r4, 2
|
||||
adds r1, r0, r4
|
||||
movs r4, 0
|
||||
ldrsh r1, [r1, r4]
|
||||
muls r1, r2
|
||||
movs r4, 0xDC
|
||||
lsls r4, 2
|
||||
adds r2, r0, r4
|
||||
movs r4, 0
|
||||
ldrsh r2, [r2, r4]
|
||||
adds r1, r2
|
||||
lsls r1, 1
|
||||
adds r0, 0x1A
|
||||
adds r0, r1
|
||||
movs r2, 0
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r0, 0x58
|
||||
muls r0, r1
|
||||
ldr r4, [r3]
|
||||
adds r4, r0
|
||||
add r5, sp, 0x28
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x4C
|
||||
adds r0, r5, 0
|
||||
movs r2, 0xA
|
||||
bl sub_80922B4
|
||||
ldr r1, _08024454
|
||||
mov r0, sp
|
||||
adds r2, r5, 0
|
||||
bl sprintf_2
|
||||
adds r0, r4, 0
|
||||
add sp, 0x3C
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08024448: .4byte gRecruitedPokemonRef
|
||||
_0802444C: .4byte gUnknown_3001B60
|
||||
_08024450: .4byte 0x00000376
|
||||
_08024454: .4byte gUnknown_80DC9A4
|
||||
thumb_func_end sub_80243E8
|
||||
|
||||
thumb_func_start sub_8024458
|
||||
sub_8024458:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
ldr r6, _080244DC
|
||||
movs r0, 0xA6
|
||||
lsls r0, 1
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r6]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x48
|
||||
strh r4, [r1]
|
||||
adds r1, 0x98
|
||||
str r5, [r1]
|
||||
adds r2, r0, 0
|
||||
adds r2, 0xE4
|
||||
lsls r1, r5, 1
|
||||
adds r1, r5
|
||||
lsls r1, 3
|
||||
adds r1, 0xE8
|
||||
adds r1, r0, r1
|
||||
str r1, [r2]
|
||||
adds r0, 0xE8
|
||||
bl sub_8006518
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xE0
|
||||
ldr r2, [r0]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0xE8
|
||||
ldr r0, _080244E0
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r2, [r6]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xE4
|
||||
ldr r1, [r0]
|
||||
movs r3, 0xA4
|
||||
lsls r3, 1
|
||||
adds r0, r2, r3
|
||||
str r0, [r1, 0x14]
|
||||
movs r4, 0xA5
|
||||
lsls r4, 1
|
||||
adds r1, r2, r4
|
||||
movs r0, 0xA
|
||||
strb r0, [r1]
|
||||
bl sub_8024604
|
||||
bl sub_802452C
|
||||
ldr r0, [r6]
|
||||
bl sub_8013984
|
||||
movs r0, 0x1
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080244DC: .4byte gUnknown_203B2AC
|
||||
_080244E0: .4byte gUnknown_80DC9C8
|
||||
thumb_func_end sub_8024458
|
||||
|
||||
thumb_func_start sub_80244E4
|
||||
sub_80244E4:
|
||||
push {r4,lr}
|
||||
ldr r4, _08024500
|
||||
ldr r0, [r4]
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x1
|
||||
beq _08024504
|
||||
cmp r0, 0x2
|
||||
bne _0802450E
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _08024524
|
||||
.align 2, 0
|
||||
_08024500: .4byte gUnknown_203B2AC
|
||||
_08024504:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _08024524
|
||||
_0802450E:
|
||||
ldr r0, [r4]
|
||||
bl sub_8013938
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802451E
|
||||
movs r0, 0
|
||||
b _08024524
|
||||
_0802451E:
|
||||
bl sub_802452C
|
||||
movs r0, 0x1
|
||||
_08024524:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80244E4
|
||||
|
||||
thumb_func_start sub_802452C
|
||||
sub_802452C:
|
||||
push {lr}
|
||||
bl sub_8024588
|
||||
bl sub_80245D0
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802452C
|
||||
|
||||
thumb_func_start sub_802453C
|
||||
sub_802453C:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08024580
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0802457A
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xE0
|
||||
ldr r0, [r0]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0xE8
|
||||
ldr r0, _08024584
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xE8
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0802457A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08024580: .4byte gUnknown_203B2AC
|
||||
_08024584: .4byte gUnknown_80DC9B0
|
||||
thumb_func_end sub_802453C
|
||||
|
||||
thumb_func_start sub_8024588
|
||||
sub_8024588:
|
||||
push {r4,lr}
|
||||
ldr r4, _080245C4
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x20]
|
||||
movs r2, 0xA4
|
||||
lsls r2, 1
|
||||
adds r0, r2
|
||||
movs r2, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldrh r1, [r0, 0x1E]
|
||||
ldr r3, _080245C8
|
||||
adds r0, r3
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
ldr r1, _080245CC
|
||||
adds r0, r1
|
||||
strb r2, [r0]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xE8
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080245C4: .4byte gUnknown_203B2AC
|
||||
_080245C8: .4byte 0x00000149
|
||||
_080245CC: .4byte 0x0000014b
|
||||
thumb_func_end sub_8024588
|
||||
|
||||
thumb_func_start sub_80245D0
|
||||
sub_80245D0:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _08024600
|
||||
ldr r4, [r0]
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r4, r0]
|
||||
lsls r2, r1, 2
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x34
|
||||
adds r0, r2
|
||||
ldr r0, [r0]
|
||||
adds r2, r4, 0
|
||||
adds r2, 0x4C
|
||||
adds r3, r4, 0
|
||||
adds r3, 0xB0
|
||||
adds r4, 0xE0
|
||||
ldr r4, [r4]
|
||||
str r4, [sp]
|
||||
bl CreatePokemonInfoTabScreen
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08024600: .4byte gUnknown_203B2AC
|
||||
thumb_func_end sub_80245D0
|
||||
|
||||
thumb_func_start sub_8024604
|
||||
sub_8024604:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _08024654
|
||||
ldr r0, [r4]
|
||||
movs r1, 0x2
|
||||
str r1, [r0, 0x34]
|
||||
movs r1, 0x3
|
||||
str r1, [r0, 0x38]
|
||||
movs r1, 0x5
|
||||
str r1, [r0, 0x3C]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xE0
|
||||
ldr r3, [r1]
|
||||
movs r1, 0x3
|
||||
movs r2, 0x1
|
||||
bl sub_8013818
|
||||
ldr r0, [r4]
|
||||
adds r5, r0, 0
|
||||
adds r5, 0x4C
|
||||
ldr r2, _08024658
|
||||
adds r0, 0x48
|
||||
movs r3, 0
|
||||
ldrsh r1, [r0, r3]
|
||||
movs r0, 0x58
|
||||
muls r0, r1
|
||||
ldr r4, [r2]
|
||||
adds r4, r0
|
||||
movs r0, 0x7
|
||||
bl sub_80023E4
|
||||
adds r2, r0, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_808FF20
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08024654: .4byte gUnknown_203B2AC
|
||||
_08024658: .4byte gRecruitedPokemonRef
|
||||
thumb_func_end sub_8024604
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -391,7 +391,7 @@ _0803D3C0:
|
||||
bl xxx_init_struct_8094924_restore_809485C
|
||||
adds r0, r4, 0
|
||||
mov r1, r9
|
||||
bl sub_80971EC
|
||||
bl RestoreWonderMail
|
||||
adds r0, r4, 0
|
||||
bl nullsub_102
|
||||
movs r0, 0x1
|
||||
@@ -440,7 +440,7 @@ _0803D436:
|
||||
bl xxx_init_struct_8094924_save_809486C
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_8097270
|
||||
bl SaveWonderMail
|
||||
adds r0, r4, 0
|
||||
bl nullsub_102
|
||||
movs r2, 0x1
|
||||
|
||||
@@ -4609,7 +4609,7 @@ _08054C88:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805BD70
|
||||
bl ScannerOrbAction
|
||||
bl _080554BA
|
||||
_08054C98:
|
||||
adds r0, r7, 0
|
||||
@@ -4793,7 +4793,7 @@ _08054DFE:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805B5F4
|
||||
bl LeechSeedMoveAction
|
||||
b _080554BA
|
||||
_08054E0C:
|
||||
adds r0, r7, 0
|
||||
@@ -4821,7 +4821,7 @@ _08054E36:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805BD7C
|
||||
bl RadarOrbAction
|
||||
b _080554BA
|
||||
_08054E44:
|
||||
adds r0, r7, 0
|
||||
@@ -4982,7 +4982,7 @@ _08054F78:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805C474
|
||||
bl StairsOrbAction
|
||||
b _080554BA
|
||||
_08054F86:
|
||||
adds r0, r7, 0
|
||||
|
||||
@@ -4,113 +4,6 @@
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_807049C
|
||||
sub_807049C:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r7, [r6, 0x70]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetMapTile_1
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
blt _0807055A
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
cmp r1, 0
|
||||
blt _0807055A
|
||||
cmp r0, 0x37
|
||||
bgt _0807055A
|
||||
cmp r1, 0x1F
|
||||
bgt _0807055A
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0807055A
|
||||
ldr r0, [r5, 0x10]
|
||||
cmp r0, 0
|
||||
beq _080704E2
|
||||
bl GetEntityType
|
||||
cmp r0, 0x1
|
||||
bne _0807055A
|
||||
_080704E2:
|
||||
bl IsFixedDungeon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070504
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3
|
||||
beq _08070552
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x9
|
||||
bl HasItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070552
|
||||
_08070504:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
bl GetCrossableTerrain
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldrh r0, [r5]
|
||||
movs r5, 0x3
|
||||
ands r5, r0
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xC
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08070526
|
||||
movs r4, 0x2
|
||||
_08070526:
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xD
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08070536
|
||||
movs r4, 0x3
|
||||
_08070536:
|
||||
cmp r4, 0x1
|
||||
beq _0807054A
|
||||
cmp r4, 0x1
|
||||
bgt _08070544
|
||||
cmp r4, 0
|
||||
beq _0807054E
|
||||
b _08070552
|
||||
_08070544:
|
||||
cmp r4, 0x2
|
||||
beq _08070556
|
||||
b _08070552
|
||||
_0807054A:
|
||||
cmp r5, 0x2
|
||||
beq _08070552
|
||||
_0807054E:
|
||||
cmp r5, 0x1
|
||||
bne _0807055A
|
||||
_08070552:
|
||||
movs r0, 0
|
||||
b _0807055C
|
||||
_08070556:
|
||||
cmp r5, 0
|
||||
bne _08070552
|
||||
_0807055A:
|
||||
movs r0, 0x1
|
||||
_0807055C:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_807049C
|
||||
|
||||
thumb_func_start sub_8070564
|
||||
sub_8070564:
|
||||
@@ -189,305 +82,4 @@ _080705E8:
|
||||
bx r1
|
||||
thumb_func_end sub_8070564
|
||||
|
||||
thumb_func_start sub_80705F0
|
||||
sub_80705F0:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r7, [r6, 0x70]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetMapTile_1
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
blt _0807069A
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
cmp r1, 0
|
||||
blt _0807069A
|
||||
cmp r0, 0x37
|
||||
bgt _0807069A
|
||||
cmp r1, 0x1F
|
||||
bgt _0807069A
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0807069A
|
||||
ldr r0, [r5, 0x10]
|
||||
cmp r0, 0
|
||||
beq _08070636
|
||||
bl GetEntityType
|
||||
cmp r0, 0x1
|
||||
bne _0807069A
|
||||
_08070636:
|
||||
bl IsFixedDungeon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070658
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3
|
||||
beq _08070696
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x9
|
||||
bl HasItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070696
|
||||
_08070658:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
bl GetCrossableTerrain
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldrh r0, [r5]
|
||||
movs r5, 0x3
|
||||
ands r5, r0
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xC
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807067A
|
||||
movs r4, 0x2
|
||||
_0807067A:
|
||||
adds r0, r6, 0
|
||||
movs r1, 0xD
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807068A
|
||||
movs r4, 0x3
|
||||
_0807068A:
|
||||
cmp r4, 0
|
||||
blt _08070696
|
||||
cmp r4, 0x2
|
||||
bgt _08070696
|
||||
cmp r5, 0
|
||||
beq _0807069A
|
||||
_08070696:
|
||||
movs r0, 0
|
||||
b _0807069C
|
||||
_0807069A:
|
||||
movs r0, 0x1
|
||||
_0807069C:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80705F0
|
||||
|
||||
thumb_func_start sub_80706A4
|
||||
sub_80706A4:
|
||||
push {r4-r7,lr}
|
||||
adds r7, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r6, [r7, 0x70]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
bl GetMapTile_1
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
blt _0807076A
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
cmp r1, 0
|
||||
blt _0807076A
|
||||
cmp r0, 0x37
|
||||
bgt _0807076A
|
||||
cmp r1, 0x1F
|
||||
bgt _0807076A
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0x10
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0807076A
|
||||
ldr r0, [r5, 0x10]
|
||||
cmp r0, 0
|
||||
beq _080706F2
|
||||
bl GetEntityType
|
||||
cmp r0, 0x1
|
||||
bne _0807076A
|
||||
ldr r0, [r5, 0x10]
|
||||
ldr r0, [r0, 0x70]
|
||||
cmp r0, r6
|
||||
bne _0807076A
|
||||
_080706F2:
|
||||
bl IsFixedDungeon
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070714
|
||||
adds r0, r6, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3
|
||||
beq _08070762
|
||||
adds r0, r7, 0
|
||||
movs r1, 0x9
|
||||
bl HasItem
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070762
|
||||
_08070714:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r6, r1]
|
||||
bl GetCrossableTerrain
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldrh r0, [r5]
|
||||
movs r5, 0x3
|
||||
ands r5, r0
|
||||
adds r0, r7, 0
|
||||
movs r1, 0xC
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08070736
|
||||
movs r4, 0x2
|
||||
_08070736:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0xD
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08070746
|
||||
movs r4, 0x3
|
||||
_08070746:
|
||||
cmp r4, 0x1
|
||||
beq _0807075A
|
||||
cmp r4, 0x1
|
||||
bgt _08070754
|
||||
cmp r4, 0
|
||||
beq _0807075E
|
||||
b _08070762
|
||||
_08070754:
|
||||
cmp r4, 0x2
|
||||
beq _08070766
|
||||
b _08070762
|
||||
_0807075A:
|
||||
cmp r5, 0x2
|
||||
beq _08070762
|
||||
_0807075E:
|
||||
cmp r5, 0x1
|
||||
bne _0807076A
|
||||
_08070762:
|
||||
movs r0, 0
|
||||
b _0807076C
|
||||
_08070766:
|
||||
cmp r5, 0
|
||||
bne _08070762
|
||||
_0807076A:
|
||||
movs r0, 0x1
|
||||
_0807076C:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80706A4
|
||||
|
||||
thumb_func_start GetMovementSpeed
|
||||
GetMovementSpeed:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
ldr r5, [r6, 0x70]
|
||||
movs r4, 0
|
||||
movs r0, 0x84
|
||||
lsls r0, 1
|
||||
adds r1, r5, r0
|
||||
movs r2, 0x4
|
||||
_08070784:
|
||||
ldrb r0, [r1, 0x5]
|
||||
cmp r0, 0
|
||||
beq _0807078C
|
||||
subs r4, 0x1
|
||||
_0807078C:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08070794
|
||||
adds r4, 0x1
|
||||
_08070794:
|
||||
adds r1, 0x1
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _08070784
|
||||
adds r0, r5, 0
|
||||
adds r0, 0xAC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _080707A8
|
||||
subs r4, 0x1
|
||||
_080707A8:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r5, r1]
|
||||
bl GetMoveSpeed
|
||||
adds r4, r0
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x6
|
||||
bl HasType
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080707D0
|
||||
adds r0, r6, 0
|
||||
bl GetWeather
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x7
|
||||
bne _080707D0
|
||||
adds r4, 0x1
|
||||
_080707D0:
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r5, r0]
|
||||
ldr r0, _0807081C
|
||||
cmp r1, r0
|
||||
bne _080707DC
|
||||
adds r4, 0x1
|
||||
_080707DC:
|
||||
movs r0, 0x2
|
||||
ldrsh r1, [r5, r0]
|
||||
movs r0, 0xBE
|
||||
lsls r0, 1
|
||||
cmp r1, r0
|
||||
bne _080707FE
|
||||
ldrb r0, [r5, 0x6]
|
||||
cmp r0, 0
|
||||
beq _080707FE
|
||||
ldr r0, _08070820
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08070824
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080707FE
|
||||
adds r4, 0x1
|
||||
_080707FE:
|
||||
cmp r4, 0
|
||||
bge _08070804
|
||||
movs r4, 0
|
||||
_08070804:
|
||||
cmp r4, 0x4
|
||||
ble _0807080A
|
||||
movs r4, 0x4
|
||||
_0807080A:
|
||||
movs r1, 0x82
|
||||
lsls r1, 1
|
||||
adds r0, r5, r1
|
||||
str r4, [r0]
|
||||
adds r0, r4, 0
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0807081C: .4byte 0x000001a3
|
||||
_08070820: .4byte gDungeonGlobalData
|
||||
_08070824: .4byte 0x0000066e
|
||||
thumb_func_end GetMovementSpeed
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -5,591 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start HealTargetHP
|
||||
HealTargetHP:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
mov r9, r0
|
||||
adds r5, r1, 0
|
||||
mov r10, r2
|
||||
mov r8, r3
|
||||
ldr r0, [sp, 0x24]
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp]
|
||||
adds r0, r5, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08077C6E
|
||||
b _08077DC8
|
||||
_08077C6E:
|
||||
ldr r4, [r5, 0x70]
|
||||
movs r0, 0x10
|
||||
ldrsh r7, [r4, r0]
|
||||
movs r1, 0xE
|
||||
ldrsh r6, [r4, r1]
|
||||
ldrh r2, [r4, 0xE]
|
||||
adds r0, r6, 0
|
||||
ldrh r1, [r4, 0x10]
|
||||
mov r12, r1
|
||||
adds r1, r7, 0
|
||||
cmp r0, r1
|
||||
bne _08077C8C
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
bgt _08077C92
|
||||
_08077C8C:
|
||||
mov r3, r10
|
||||
cmp r3, 0
|
||||
bne _08077CD0
|
||||
_08077C92:
|
||||
ldrh r1, [r4, 0x10]
|
||||
add r1, r8
|
||||
strh r1, [r4, 0x10]
|
||||
ldrh r0, [r4, 0xE]
|
||||
add r0, r8
|
||||
strh r0, [r4, 0xE]
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
ldr r0, _08077CCC
|
||||
cmp r1, r0
|
||||
ble _08077CAA
|
||||
strh r0, [r4, 0x10]
|
||||
_08077CAA:
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r3, 0x10
|
||||
ldrsh r2, [r4, r3]
|
||||
ldrh r1, [r4, 0x10]
|
||||
cmp r0, r2
|
||||
ble _08077CBA
|
||||
strh r1, [r4, 0xE]
|
||||
_08077CBA:
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, r2
|
||||
bne _08077CC4
|
||||
adds r6, r0, 0
|
||||
_08077CC4:
|
||||
adds r0, r5, 0
|
||||
bl sub_8041C94
|
||||
b _08077CE8
|
||||
.align 2, 0
|
||||
_08077CCC: .4byte 0x000003e7
|
||||
_08077CD0:
|
||||
mov r3, r10
|
||||
adds r0, r2, r3
|
||||
strh r0, [r4, 0xE]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, r1
|
||||
ble _08077CE2
|
||||
mov r0, r12
|
||||
strh r0, [r4, 0xE]
|
||||
_08077CE2:
|
||||
adds r0, r5, 0
|
||||
bl sub_8041CA8
|
||||
_08077CE8:
|
||||
movs r1, 0x10
|
||||
ldrsh r0, [r4, r1]
|
||||
subs r7, r0, r7
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r4, r2]
|
||||
subs r6, r0, r6
|
||||
adds r0, r5, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
ldr r0, _08077D1C
|
||||
str r6, [r0]
|
||||
str r7, [r0, 0x4]
|
||||
ldr r0, _08077D20
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
cmp r6, 0
|
||||
bne _08077D28
|
||||
cmp r7, 0
|
||||
bne _08077D28
|
||||
ldr r3, [sp]
|
||||
cmp r3, 0
|
||||
beq _08077DC8
|
||||
ldr r0, _08077D24
|
||||
b _08077D3A
|
||||
.align 2, 0
|
||||
_08077D1C: .4byte gUnknown_202DE30
|
||||
_08077D20: .4byte gAvailablePokemonNames
|
||||
_08077D24: .4byte gUnknown_80FB204
|
||||
_08077D28:
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
bne _08077D4C
|
||||
cmp r6, 0
|
||||
bne _08077D4C
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0
|
||||
beq _08077DC8
|
||||
ldr r0, _08077D48
|
||||
_08077D3A:
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
adds r1, r5, 0
|
||||
bl sub_80522F4
|
||||
b _08077DC8
|
||||
.align 2, 0
|
||||
_08077D48: .4byte gUnknown_80FB21C
|
||||
_08077D4C:
|
||||
movs r2, 0
|
||||
mov r8, r2
|
||||
cmp r7, 0
|
||||
beq _08077D6E
|
||||
adds r0, r5, 0
|
||||
bl sub_8045888
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077D62
|
||||
mov r8, r7
|
||||
_08077D62:
|
||||
ldr r0, _08077DA0
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
adds r1, r5, 0
|
||||
bl sub_80522F4
|
||||
_08077D6E:
|
||||
cmp r6, 0
|
||||
beq _08077DB4
|
||||
adds r0, r5, 0
|
||||
bl sub_8045888
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077D80
|
||||
mov r8, r6
|
||||
_08077D80:
|
||||
mov r3, r10
|
||||
cmp r3, 0
|
||||
beq _08077DB4
|
||||
movs r0, 0x10
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r1, r0
|
||||
bne _08077DA8
|
||||
ldr r0, _08077DA4
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
adds r1, r5, 0
|
||||
bl sub_80522F4
|
||||
b _08077DB4
|
||||
.align 2, 0
|
||||
_08077DA0: .4byte gUnknown_80FB240
|
||||
_08077DA4: .4byte gUnknown_80FB1E0
|
||||
_08077DA8:
|
||||
ldr r0, _08077DD8
|
||||
ldr r2, [r0]
|
||||
mov r0, r9
|
||||
adds r1, r5, 0
|
||||
bl sub_80522F4
|
||||
_08077DB4:
|
||||
mov r3, r8
|
||||
cmp r3, 0
|
||||
beq _08077DC8
|
||||
movs r3, 0x1
|
||||
negs r3, r3
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_803ED30
|
||||
_08077DC8:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08077DD8: .4byte gUnknown_80FB1C4
|
||||
thumb_func_end HealTargetHP
|
||||
|
||||
thumb_func_start sub_8077DDC
|
||||
sub_8077DDC:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077E3C
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xF1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08077E0C
|
||||
ldr r0, _08077E08
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08077E3C
|
||||
.align 2, 0
|
||||
_08077E08: .4byte gUnknown_80FAEF0
|
||||
_08077E0C:
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl nullsub_75
|
||||
ldr r0, _08077E44
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08077E48
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
movs r0, 0
|
||||
bl sub_803F580
|
||||
bl sub_8040A84
|
||||
adds r0, r4, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
_08077E3C:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08077E44: .4byte gAvailablePokemonNames
|
||||
_08077E48: .4byte gUnknown_80FAEA0
|
||||
thumb_func_end sub_8077DDC
|
||||
|
||||
thumb_func_start sub_8077E4C
|
||||
sub_8077E4C:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077EC0
|
||||
bl sub_8043D10
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077E70
|
||||
ldr r0, _08077E6C
|
||||
b _08077E7E
|
||||
.align 2, 0
|
||||
_08077E6C: .4byte gUnknown_80FAF3C
|
||||
_08077E70:
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xF2
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08077E90
|
||||
ldr r0, _08077E8C
|
||||
_08077E7E:
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08077EC0
|
||||
.align 2, 0
|
||||
_08077E8C: .4byte gUnknown_80FAF1C
|
||||
_08077E90:
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl nullsub_76
|
||||
ldr r0, _08077EC8
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08077ECC
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
movs r0, 0
|
||||
bl sub_803F580
|
||||
bl sub_8040A84
|
||||
adds r0, r4, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
_08077EC0:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08077EC8: .4byte gAvailablePokemonNames
|
||||
_08077ECC: .4byte gUnknown_80FAEC8
|
||||
thumb_func_end sub_8077E4C
|
||||
|
||||
thumb_func_start sub_8077ED0
|
||||
sub_8077ED0:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08077F30
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xF0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08077F00
|
||||
ldr r0, _08077EFC
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08077F30
|
||||
.align 2, 0
|
||||
_08077EFC: .4byte gUnknown_80FAFD0
|
||||
_08077F00:
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
bl nullsub_77
|
||||
ldr r0, _08077F38
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08077F3C
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
movs r0, 0
|
||||
bl sub_803F580
|
||||
bl sub_8040A84
|
||||
adds r0, r4, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
_08077F30:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08077F38: .4byte gAvailablePokemonNames
|
||||
_08077F3C: .4byte gUnknown_80FAFAC
|
||||
thumb_func_end sub_8077ED0
|
||||
|
||||
thumb_func_start sub_8077F40
|
||||
sub_8077F40:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
lsls r2, 24
|
||||
lsrs r6, r2, 24
|
||||
mov r9, r6
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08077F62
|
||||
b _08078068
|
||||
_08077F62:
|
||||
adds r0, r5, 0
|
||||
bl GetEntityType
|
||||
mov r10, r0
|
||||
cmp r0, 0x1
|
||||
beq _08077F70
|
||||
b _08078068
|
||||
_08077F70:
|
||||
ldr r7, [r4, 0x70]
|
||||
cmp r5, r4
|
||||
bne _08077F88
|
||||
cmp r6, 0
|
||||
beq _08078068
|
||||
ldr r0, _08077F84
|
||||
ldr r2, [r0]
|
||||
adds r0, r4, 0
|
||||
b _08078022
|
||||
.align 2, 0
|
||||
_08077F84: .4byte gPtrCantLeechSeedSelfMessage
|
||||
_08077F88:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
mov r2, r9
|
||||
bl HasSafeguardStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08078068
|
||||
ldr r0, _08077FC0
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x4
|
||||
bl HasType
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
cmp r0, 0
|
||||
beq _08077FC8
|
||||
mov r0, r9
|
||||
cmp r0, 0
|
||||
beq _08078068
|
||||
ldr r0, _08077FC4
|
||||
b _0807801E
|
||||
.align 2, 0
|
||||
_08077FC0: .4byte gAvailablePokemonNames
|
||||
_08077FC4: .4byte gPtrCantLeechSeedMonMessage
|
||||
_08077FC8:
|
||||
adds r6, r7, 0
|
||||
adds r6, 0xD0
|
||||
ldrb r0, [r6]
|
||||
cmp r0, 0x1
|
||||
beq _0807801C
|
||||
cmp r0, 0x2
|
||||
bne _08077FE2
|
||||
ldr r0, _08078014
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
_08077FE2:
|
||||
mov r1, r10
|
||||
strb r1, [r6]
|
||||
ldr r1, _08078018
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x1
|
||||
bl CalculateStatusTurns
|
||||
adds r0, 0x1
|
||||
adds r1, r7, 0
|
||||
adds r1, 0xD9
|
||||
strb r0, [r1]
|
||||
adds r0, r7, 0
|
||||
adds r0, 0xDA
|
||||
mov r6, r8
|
||||
strb r6, [r0]
|
||||
adds r0, r4, 0
|
||||
bl nullsub_78
|
||||
adds r1, r7, 0
|
||||
adds r1, 0xD8
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1]
|
||||
movs r2, 0
|
||||
adds r3, r1, 0
|
||||
b _08078030
|
||||
.align 2, 0
|
||||
_08078014: .4byte gUnknown_80FAA8C
|
||||
_08078018: .4byte gUnknown_80F4EB0
|
||||
_0807801C:
|
||||
ldr r0, _0807802C
|
||||
_0807801E:
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
_08078022:
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
b _08078068
|
||||
.align 2, 0
|
||||
_0807802C: .4byte gUnknown_80FAE7C
|
||||
_08078030:
|
||||
ldr r0, _08078078
|
||||
ldr r0, [r0]
|
||||
lsls r1, r2, 2
|
||||
ldr r6, _0807807C
|
||||
adds r0, r6
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
cmp r5, r0
|
||||
bne _08078050
|
||||
strb r2, [r3]
|
||||
ldr r0, [r5, 0x70]
|
||||
adds r1, r7, 0
|
||||
adds r1, 0xD4
|
||||
adds r0, 0x98
|
||||
ldr r0, [r0]
|
||||
str r0, [r1]
|
||||
_08078050:
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x13
|
||||
ble _08078030
|
||||
ldr r0, _08078080
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
adds r0, r4, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
_08078068:
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08078078: .4byte gDungeonGlobalData
|
||||
_0807807C: .4byte 0x000135cc
|
||||
_08078080: .4byte gUnknown_80FAE58
|
||||
thumb_func_end sub_8077F40
|
||||
|
||||
thumb_func_start sub_8078084
|
||||
sub_8078084:
|
||||
push {r4-r6,lr}
|
||||
ldr r6, [r0, 0x70]
|
||||
movs r5, 0
|
||||
_0807808A:
|
||||
ldr r0, _080780DC
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080780E0
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080780D0
|
||||
ldr r1, [r4, 0x70]
|
||||
adds r3, r1, 0
|
||||
adds r3, 0xD0
|
||||
ldrb r0, [r3]
|
||||
subs r0, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bhi _080780D0
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xD4
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x98
|
||||
ldr r2, [r0]
|
||||
ldr r0, [r1]
|
||||
cmp r2, r0
|
||||
bne _080780D0
|
||||
movs r0, 0
|
||||
strb r0, [r3]
|
||||
adds r0, r4, 0
|
||||
bl DungeonEntityUpdateStatusSprites
|
||||
_080780D0:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _0807808A
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080780DC: .4byte gDungeonGlobalData
|
||||
_080780E0: .4byte 0x000135cc
|
||||
thumb_func_end sub_8078084
|
||||
|
||||
thumb_func_start DestinyBondStatusTarget
|
||||
DestinyBondStatusTarget:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -5,222 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80833E8
|
||||
sub_80833E8:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r5, r2]
|
||||
bl GetMapTile_1
|
||||
adds r1, r0, 0
|
||||
ldr r0, _08083438
|
||||
ldr r3, [r0]
|
||||
ldr r2, _0808343C
|
||||
adds r0, r3, r2
|
||||
ldrb r2, [r0]
|
||||
cmp r2, 0
|
||||
bne _0808340C
|
||||
movs r2, 0x2
|
||||
_0808340C:
|
||||
ldrb r0, [r1, 0x9]
|
||||
cmp r0, 0xFF
|
||||
bne _08083440
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
subs r0, r2
|
||||
str r0, [r4]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r0, r2
|
||||
adds r0, 0x1
|
||||
str r0, [r4, 0x8]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r5, r1]
|
||||
subs r0, r2
|
||||
str r0, [r4, 0x4]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r0, r2
|
||||
adds r0, 0x1
|
||||
b _0808346A
|
||||
.align 2, 0
|
||||
_08083438: .4byte gDungeonGlobalData
|
||||
_0808343C: .4byte 0x00018209
|
||||
_08083440:
|
||||
lsls r1, r0, 3
|
||||
subs r1, r0
|
||||
lsls r1, 2
|
||||
ldr r2, _08083474
|
||||
adds r1, r2
|
||||
adds r1, r3, r1
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r1, r2]
|
||||
subs r0, 0x1
|
||||
str r0, [r4]
|
||||
movs r2, 0x6
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r0, 0x2
|
||||
str r0, [r4, 0x8]
|
||||
movs r2, 0x4
|
||||
ldrsh r0, [r1, r2]
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0x4]
|
||||
movs r2, 0x8
|
||||
ldrsh r0, [r1, r2]
|
||||
adds r0, 0x2
|
||||
_0808346A:
|
||||
str r0, [r4, 0xC]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08083474: .4byte 0x000104c4
|
||||
thumb_func_end sub_80833E8
|
||||
|
||||
thumb_func_start IsTargetTwoTilesAway
|
||||
IsTargetTwoTilesAway:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
adds r3, r0, 0
|
||||
adds r6, r1, 0
|
||||
movs r0, 0
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r6, r2]
|
||||
subs r1, r0
|
||||
cmp r1, 0
|
||||
bge _08083490
|
||||
negs r1, r1
|
||||
_08083490:
|
||||
cmp r1, 0x1
|
||||
bgt _080834A8
|
||||
movs r5, 0x2
|
||||
ldrsh r1, [r3, r5]
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r6, r2]
|
||||
subs r1, r0
|
||||
cmp r1, 0
|
||||
bge _080834A4
|
||||
negs r1, r1
|
||||
_080834A4:
|
||||
cmp r1, 0x1
|
||||
ble _0808355A
|
||||
_080834A8:
|
||||
movs r5, 0
|
||||
ldrsh r4, [r3, r5]
|
||||
movs r1, 0
|
||||
ldrsh r0, [r6, r1]
|
||||
subs r2, r4, r0
|
||||
cmp r2, 0
|
||||
bge _080834B8
|
||||
negs r2, r2
|
||||
_080834B8:
|
||||
movs r5, 0x2
|
||||
ldrsh r1, [r3, r5]
|
||||
movs r5, 0x2
|
||||
ldrsh r0, [r6, r5]
|
||||
subs r0, r1, r0
|
||||
cmp r0, 0
|
||||
bge _080834C8
|
||||
negs r0, r0
|
||||
_080834C8:
|
||||
cmp r0, r2
|
||||
bge _080834CE
|
||||
adds r0, r2, 0
|
||||
_080834CE:
|
||||
cmp r0, 0x2
|
||||
bne _0808355E
|
||||
adds r5, r4, 0
|
||||
adds r4, r1, 0
|
||||
movs r7, 0
|
||||
_080834D8:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r6, r1]
|
||||
cmp r5, r0
|
||||
bge _080834E2
|
||||
adds r5, 0x1
|
||||
_080834E2:
|
||||
cmp r5, r0
|
||||
ble _080834E8
|
||||
subs r5, 0x1
|
||||
_080834E8:
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r6, r2]
|
||||
cmp r4, r0
|
||||
bge _080834F2
|
||||
adds r4, 0x1
|
||||
_080834F2:
|
||||
cmp r4, r0
|
||||
ble _080834F8
|
||||
subs r4, 0x1
|
||||
_080834F8:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
str r3, [sp]
|
||||
bl GetMapTile_1
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
ldr r3, [sp]
|
||||
cmp r0, 0
|
||||
beq _0808355E
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x1
|
||||
ble _080834D8
|
||||
movs r0, 0
|
||||
ldrsh r5, [r6, r0]
|
||||
movs r1, 0x2
|
||||
ldrsh r4, [r6, r1]
|
||||
movs r7, 0
|
||||
_0808351E:
|
||||
movs r2, 0
|
||||
ldrsh r0, [r3, r2]
|
||||
cmp r5, r0
|
||||
bge _08083528
|
||||
adds r5, 0x1
|
||||
_08083528:
|
||||
cmp r5, r0
|
||||
ble _0808352E
|
||||
subs r5, 0x1
|
||||
_0808352E:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r3, r1]
|
||||
cmp r4, r0
|
||||
bge _08083538
|
||||
adds r4, 0x1
|
||||
_08083538:
|
||||
cmp r4, r0
|
||||
ble _0808353E
|
||||
subs r4, 0x1
|
||||
_0808353E:
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
str r3, [sp]
|
||||
bl GetMapTile_1
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
ldr r3, [sp]
|
||||
cmp r0, 0
|
||||
beq _0808355E
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x1
|
||||
ble _0808351E
|
||||
_0808355A:
|
||||
movs r0, 0x1
|
||||
b _08083560
|
||||
_0808355E:
|
||||
movs r0, 0
|
||||
_08083560:
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end IsTargetTwoTilesAway
|
||||
|
||||
thumb_func_start sub_8083568
|
||||
sub_8083568:
|
||||
push {r4,r5,lr}
|
||||
@@ -296,4 +80,4 @@ _080835FA:
|
||||
bx r1
|
||||
thumb_func_end sub_8083568
|
||||
|
||||
.align 2, 0
|
||||
.align 2, 0
|
||||
|
||||
@@ -804,80 +804,4 @@ _08084846:
|
||||
_08084850: .4byte 0x000003e6
|
||||
thumb_func_end sub_80847D4
|
||||
|
||||
thumb_func_start sub_8084854
|
||||
sub_8084854:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r5, _08084874
|
||||
ldr r2, [r5]
|
||||
movs r1, 0xCF
|
||||
lsls r1, 3
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0808487C
|
||||
ldrb r1, [r4, 0x5]
|
||||
ldr r3, _08084878
|
||||
adds r0, r2, r3
|
||||
strb r1, [r0]
|
||||
b _080848C8
|
||||
.align 2, 0
|
||||
_08084874: .4byte gDungeonGlobalData
|
||||
_08084878: .4byte 0x00003a0d
|
||||
_0808487C:
|
||||
ldrb r0, [r4, 0x4]
|
||||
bl sub_8098100
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08084898
|
||||
ldr r0, [r5]
|
||||
ldrb r1, [r4, 0x5]
|
||||
ldr r2, _08084894
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
b _080848C8
|
||||
.align 2, 0
|
||||
_08084894: .4byte 0x00003a0d
|
||||
_08084898:
|
||||
ldrb r0, [r4, 0x2]
|
||||
bl sub_8098100
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080848B4
|
||||
ldr r0, [r5]
|
||||
ldrb r1, [r4, 0x3]
|
||||
ldr r3, _080848B0
|
||||
adds r0, r3
|
||||
strb r1, [r0]
|
||||
b _080848C8
|
||||
.align 2, 0
|
||||
_080848B0: .4byte 0x00003a0d
|
||||
_080848B4:
|
||||
ldr r0, [r5]
|
||||
ldrb r1, [r4, 0x1]
|
||||
ldr r2, _080848E0
|
||||
adds r0, r2
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r4, 0x2]
|
||||
cmp r0, 0x40
|
||||
beq _080848C8
|
||||
bl sub_8097FA8
|
||||
_080848C8:
|
||||
ldr r0, _080848E4
|
||||
ldr r0, [r0]
|
||||
ldr r3, _080848E8
|
||||
adds r0, r3
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
movs r0, 0
|
||||
bl sub_807E5E4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080848E0: .4byte 0x00003a0d
|
||||
_080848E4: .4byte gDungeonGlobalData
|
||||
_080848E8: .4byte 0x00000675
|
||||
thumb_func_end sub_8084854
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -5,67 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_809733C
|
||||
sub_809733C:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
cmp r4, 0xD
|
||||
beq _0809737C
|
||||
lsls r0, r4, 16
|
||||
lsrs r5, r0, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
adds r2, r5, 0
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
bne _0809737C
|
||||
movs r0, 0
|
||||
movs r1, 0x2B
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_800199C
|
||||
cmp r6, 0
|
||||
beq _0809737C
|
||||
cmp r4, 0xE
|
||||
blt _0809737C
|
||||
cmp r4, 0xF
|
||||
ble _08097378
|
||||
cmp r4, 0x1C
|
||||
bne _0809737C
|
||||
_08097378:
|
||||
bl sub_809674C
|
||||
_0809737C:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_809733C
|
||||
|
||||
thumb_func_start sub_8097384
|
||||
sub_8097384:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0xD
|
||||
bne _08097392
|
||||
movs r0, 0
|
||||
b _080973A4
|
||||
_08097392:
|
||||
lsls r2, r0, 16
|
||||
lsrs r2, 16
|
||||
movs r0, 0
|
||||
movs r1, 0x2C
|
||||
bl sub_8001784
|
||||
cmp r0, 0
|
||||
beq _080973A4
|
||||
movs r0, 0x1
|
||||
_080973A4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8097384
|
||||
|
||||
thumb_func_start sub_80973A8
|
||||
sub_80973A8:
|
||||
push {r4-r6,lr}
|
||||
|
||||
109
asm/dungeon_2.s
109
asm/dungeon_2.s
@@ -706,113 +706,4 @@ _080908CE:
|
||||
bx r0
|
||||
thumb_func_end sub_8090888
|
||||
|
||||
thumb_func_start sub_80908D8
|
||||
sub_80908D8:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, 0x3E
|
||||
bhi _08090908
|
||||
ldr r0, _08090900
|
||||
ldrb r3, [r2]
|
||||
adds r0, r3, r0
|
||||
ldrb r1, [r2, 0x1]
|
||||
ldrb r0, [r0]
|
||||
cmp r1, r0
|
||||
bcs _08090908
|
||||
ldr r1, _08090904
|
||||
lsls r0, r3, 2
|
||||
adds r0, r1
|
||||
ldrb r1, [r2, 0x1]
|
||||
ldr r0, [r0]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
b _0809090A
|
||||
.align 2, 0
|
||||
_08090900: .4byte gDungeonFloorCount
|
||||
_08090904: .4byte gUnknown_8108084
|
||||
_08090908:
|
||||
movs r0, 0x1
|
||||
_0809090A:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80908D8
|
||||
|
||||
thumb_func_start sub_8090910
|
||||
sub_8090910:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
adds r7, r1, 0
|
||||
ldr r4, _0809094C
|
||||
adds r0, r4, 0
|
||||
bl RandomCapped
|
||||
adds r6, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl RandomCapped
|
||||
adds r2, r0, 0
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0x3E
|
||||
bhi _08090954
|
||||
ldr r0, _08090950
|
||||
ldrb r1, [r5]
|
||||
adds r1, r0
|
||||
ldrb r0, [r5, 0x1]
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bcs _08090954
|
||||
adds r0, r7, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_8091E94
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
b _08090956
|
||||
.align 2, 0
|
||||
_0809094C: .4byte 0x0000270f
|
||||
_08090950: .4byte gDungeonFloorCount
|
||||
_08090954:
|
||||
movs r0, 0x46
|
||||
_08090956:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8090910
|
||||
|
||||
thumb_func_start sub_809095C
|
||||
sub_809095C:
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
cmp r3, 0x3E
|
||||
bls _0809096A
|
||||
_08090966:
|
||||
movs r0, 0x1
|
||||
b _0809098C
|
||||
_0809096A:
|
||||
movs r2, 0
|
||||
ldr r0, _08090994
|
||||
ldrb r1, [r0]
|
||||
adds r4, r0, 0
|
||||
cmp r1, 0x3F
|
||||
beq _0809098A
|
||||
adds r1, r4, 0
|
||||
_08090978:
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r3
|
||||
beq _08090966
|
||||
adds r2, 0x1
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x3F
|
||||
bne _08090978
|
||||
_0809098A:
|
||||
movs r0, 0
|
||||
_0809098C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08090994: .4byte gUnknown_810A350
|
||||
thumb_func_end sub_809095C
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -4,205 +4,6 @@
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start GroundMap_ExecuteEvent
|
||||
GroundMap_ExecuteEvent:
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
ldr r1, _080A4C44
|
||||
movs r0, 0
|
||||
adds r2, r4, 0
|
||||
adds r3, r5, 0
|
||||
bl Log
|
||||
movs r0, 0
|
||||
mov r1, sp
|
||||
adds r2, r4, 0
|
||||
bl sub_809D710
|
||||
cmp r5, 0
|
||||
beq _080A4C2C
|
||||
mov r1, sp
|
||||
movs r0, 0x5
|
||||
strh r0, [r1, 0x4]
|
||||
_080A4C2C:
|
||||
ldr r0, _080A4C48
|
||||
ldr r0, [r0]
|
||||
ldr r3, _080A4C4C
|
||||
movs r1, 0
|
||||
mov r2, sp
|
||||
bl GroundScript_ExecutePP
|
||||
add sp, 0xC
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A4C44: .4byte gUnknown_8117594
|
||||
_080A4C48: .4byte gUnknown_3001B6C
|
||||
_080A4C4C: .4byte gUnknown_81175E0
|
||||
thumb_func_end GroundMap_ExecuteEvent
|
||||
|
||||
thumb_func_start GroundMap_ExecuteStation
|
||||
GroundMap_ExecuteStation:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x14
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r6, r2, 0
|
||||
mov r8, r3
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
lsls r5, 16
|
||||
asrs r5, 16
|
||||
lsls r6, 24
|
||||
asrs r6, 24
|
||||
mov r0, r8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
ldr r1, _080A4CB8
|
||||
str r6, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
movs r0, 0
|
||||
adds r2, r4, 0
|
||||
adds r3, r5, 0
|
||||
bl Log
|
||||
add r0, sp, 0x8
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl GroundMap_GetStationScript
|
||||
mov r0, r8
|
||||
cmp r0, 0
|
||||
beq _080A4C9C
|
||||
add r1, sp, 0x8
|
||||
movs r0, 0x5
|
||||
strh r0, [r1, 0x4]
|
||||
_080A4C9C:
|
||||
ldr r0, _080A4CBC
|
||||
ldr r0, [r0]
|
||||
ldr r3, _080A4CC0
|
||||
movs r1, 0
|
||||
add r2, sp, 0x8
|
||||
bl GroundScript_ExecutePP
|
||||
add sp, 0x14
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A4CB8: .4byte gUnknown_81175EC
|
||||
_080A4CBC: .4byte gUnknown_3001B6C
|
||||
_080A4CC0: .4byte gUnknown_8117644
|
||||
thumb_func_end GroundMap_ExecuteStation
|
||||
|
||||
thumb_func_start GroundMap_ExecuteEnter
|
||||
GroundMap_ExecuteEnter:
|
||||
push {r4,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
ldr r1, _080A4D08
|
||||
movs r0, 0
|
||||
adds r2, r4, 0
|
||||
bl Log
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl sub_80A4BE8
|
||||
mov r1, sp
|
||||
movs r3, 0
|
||||
movs r2, 0
|
||||
movs r0, 0x2
|
||||
strh r0, [r1, 0x4]
|
||||
mov r0, sp
|
||||
strh r2, [r0, 0x6]
|
||||
strb r3, [r0, 0x8]
|
||||
ldr r0, _080A4D0C
|
||||
ldr r0, [r0]
|
||||
ldr r3, _080A4D10
|
||||
movs r1, 0
|
||||
mov r2, sp
|
||||
bl GroundScript_ExecutePP
|
||||
add sp, 0xC
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A4D08: .4byte gUnknown_8117650
|
||||
_080A4D0C: .4byte gUnknown_3001B6C
|
||||
_080A4D10: .4byte gUnknown_8117698
|
||||
thumb_func_end GroundMap_ExecuteEnter
|
||||
|
||||
thumb_func_start sub_80A4D14
|
||||
sub_80A4D14:
|
||||
push {lr}
|
||||
ldr r0, _080A4D28
|
||||
ldr r0, [r0]
|
||||
bl sub_809D678
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A4D28: .4byte gUnknown_3001B6C
|
||||
thumb_func_end sub_80A4D14
|
||||
|
||||
thumb_func_start sub_80A4D2C
|
||||
sub_80A4D2C:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
ldr r0, _080A4D44
|
||||
ldr r0, [r0]
|
||||
bl sub_809D968
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A4D44: .4byte gUnknown_3001B6C
|
||||
thumb_func_end sub_80A4D2C
|
||||
|
||||
thumb_func_start sub_80A4D48
|
||||
sub_80A4D48:
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r2, r0, 16
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r2, r0
|
||||
beq _080A4D74
|
||||
ldr r1, _080A4D70
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0x5
|
||||
beq _080A4D6C
|
||||
cmp r0, 0x8
|
||||
bne _080A4D74
|
||||
_080A4D6C:
|
||||
movs r0, 0
|
||||
b _080A4D76
|
||||
.align 2, 0
|
||||
_080A4D70: .4byte gUnknown_811BAF4
|
||||
_080A4D74:
|
||||
movs r0, 0x1
|
||||
_080A4D76:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80A4D48
|
||||
|
||||
thumb_func_start sub_80A4D7C
|
||||
sub_80A4D7C:
|
||||
|
||||
@@ -5,220 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_809D8EC
|
||||
sub_809D8EC:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r5, r1, 16
|
||||
cmp r5, 0
|
||||
bne _0809D910
|
||||
bl sub_809A750
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0809D910
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl sub_80A2460
|
||||
str r0, [r4, 0x28]
|
||||
movs r0, 0
|
||||
b _0809D922
|
||||
_0809D910:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x46
|
||||
strh r5, [r0]
|
||||
movs r0, 0x2
|
||||
strh r0, [r4, 0x26]
|
||||
ldr r1, _0809D928
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
movs r0, 0x1
|
||||
_0809D922:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809D928: .4byte gUnknown_2039A36
|
||||
thumb_func_end sub_809D8EC
|
||||
|
||||
thumb_func_start sub_809D92C
|
||||
sub_809D92C:
|
||||
push {lr}
|
||||
ldr r1, _0809D93C
|
||||
bl sub_809D770
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809D93C: .4byte gUnknown_81165C8
|
||||
thumb_func_end sub_809D92C
|
||||
|
||||
thumb_func_start sub_809D940
|
||||
sub_809D940:
|
||||
push {r4,lr}
|
||||
bl sub_80A8B74
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl sub_80AC378
|
||||
orrs r4, r0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl sub_80AD290
|
||||
orrs r4, r0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r4, 0
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_809D940
|
||||
|
||||
thumb_func_start sub_809D968
|
||||
sub_809D968:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r6, r1, 16
|
||||
movs r4, 0
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x46
|
||||
ldrh r1, [r2]
|
||||
movs r0, 0
|
||||
ldrsh r3, [r2, r0]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r3, r0
|
||||
beq _0809D98E
|
||||
cmp r3, r6
|
||||
bne _0809D98E
|
||||
ldr r0, _0809D9B4
|
||||
strh r0, [r2]
|
||||
movs r4, 0x1
|
||||
_0809D98E:
|
||||
adds r2, r5, 0
|
||||
adds r2, 0xA6
|
||||
ldrh r1, [r2]
|
||||
movs r0, 0
|
||||
ldrsh r3, [r2, r0]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r3, r0
|
||||
beq _0809D9AA
|
||||
cmp r3, r6
|
||||
bne _0809D9AA
|
||||
ldr r0, _0809D9B4
|
||||
strh r0, [r2]
|
||||
movs r4, 0x1
|
||||
_0809D9AA:
|
||||
adds r0, r4, 0
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809D9B4: .4byte 0x0000ffff
|
||||
thumb_func_end sub_809D968
|
||||
|
||||
thumb_func_start sub_809D9B8
|
||||
sub_809D9B8:
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
ldr r1, _0809D9D4
|
||||
adds r1, r0, r1
|
||||
movs r3, 0
|
||||
movs r2, 0x1
|
||||
strb r2, [r1]
|
||||
ldr r1, _0809D9D8
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
str r3, [r0]
|
||||
ldr r0, _0809D9DC
|
||||
strb r2, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0809D9D4: .4byte gUnknown_2039A38
|
||||
_0809D9D8: .4byte gUnknown_2039B48
|
||||
_0809D9DC: .4byte gUnknown_2039A36
|
||||
thumb_func_end sub_809D9B8
|
||||
|
||||
thumb_func_start sub_809D9E0
|
||||
sub_809D9E0:
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
ldr r2, _0809D9FC
|
||||
adds r2, r0, r2
|
||||
movs r3, 0x1
|
||||
strb r3, [r2]
|
||||
ldr r2, _0809DA00
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
str r1, [r0]
|
||||
ldr r0, _0809DA04
|
||||
strb r3, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0809D9FC: .4byte gUnknown_2039A38
|
||||
_0809DA00: .4byte gUnknown_2039B48
|
||||
_0809DA04: .4byte gUnknown_2039A36
|
||||
thumb_func_end sub_809D9E0
|
||||
|
||||
thumb_func_start sub_809DA08
|
||||
sub_809DA08:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r4, r1, 16
|
||||
ldr r1, _0809DA2C
|
||||
lsls r0, r4, 2
|
||||
adds r0, r1
|
||||
str r2, [r0]
|
||||
cmp r4, 0
|
||||
bne _0809DA38
|
||||
bl sub_809A750
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0809DA30
|
||||
movs r0, 0
|
||||
b _0809DA5E
|
||||
.align 2, 0
|
||||
_0809DA2C: .4byte gUnknown_2039B48
|
||||
_0809DA30:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x46
|
||||
strh r4, [r0]
|
||||
b _0809DA52
|
||||
_0809DA38:
|
||||
movs r1, 0x80
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x46
|
||||
adds r0, r4, 0
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r0, _0809DA64
|
||||
adds r0, r4, r0
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, _0809DA68
|
||||
adds r0, r4, r0
|
||||
strb r1, [r0]
|
||||
_0809DA52:
|
||||
movs r0, 0x2
|
||||
strh r0, [r5, 0x26]
|
||||
ldr r1, _0809DA6C
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
movs r0, 0x1
|
||||
_0809DA5E:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809DA64: .4byte gUnknown_2039A38
|
||||
_0809DA68: .4byte gUnknown_2039AC0
|
||||
_0809DA6C: .4byte gUnknown_2039A36
|
||||
thumb_func_end sub_809DA08
|
||||
|
||||
thumb_func_start HandleAction
|
||||
HandleAction:
|
||||
push {r4-r7,lr}
|
||||
@@ -8928,28 +8714,4 @@ _080A257C:
|
||||
bx r0
|
||||
thumb_func_end sub_80A2558
|
||||
|
||||
thumb_func_start sub_80A2584
|
||||
sub_80A2584:
|
||||
push {lr}
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bl sub_809ABB4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A2584
|
||||
|
||||
thumb_func_start sub_80A2598
|
||||
sub_80A2598:
|
||||
push {lr}
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
bl sub_809AC18
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A2598
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -294,443 +294,4 @@ _0802D7C8: .4byte gUnknown_80D4928
|
||||
_0802D7CC: .4byte gUnknown_80E014C
|
||||
thumb_func_end sub_802D73C
|
||||
|
||||
thumb_func_start sub_802D7D0
|
||||
sub_802D7D0:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802D826
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802D7EA
|
||||
ldr r0, _0802D800
|
||||
ldr r0, [r0]
|
||||
str r1, [r0, 0x70]
|
||||
_0802D7EA:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x3
|
||||
beq _0802D804
|
||||
cmp r0, 0x3
|
||||
ble _0802D820
|
||||
cmp r0, 0x4
|
||||
beq _0802D820
|
||||
cmp r0, 0x6
|
||||
beq _0802D80C
|
||||
b _0802D820
|
||||
.align 2, 0
|
||||
_0802D800: .4byte gUnknown_203B2F8
|
||||
_0802D804:
|
||||
movs r0, 0x2
|
||||
bl sub_802D1A0
|
||||
b _0802D826
|
||||
_0802D80C:
|
||||
ldr r0, _0802D81C
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0x10
|
||||
bl sub_802D1A0
|
||||
b _0802D826
|
||||
.align 2, 0
|
||||
_0802D81C: .4byte gUnknown_203B2F8
|
||||
_0802D820:
|
||||
movs r0, 0
|
||||
bl sub_802D1A0
|
||||
_0802D826:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802D7D0
|
||||
|
||||
thumb_func_start sub_802D82C
|
||||
sub_802D82C:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802D8C6
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802D846
|
||||
ldr r0, _0802D858
|
||||
ldr r0, [r0]
|
||||
str r1, [r0, 0x74]
|
||||
_0802D846:
|
||||
ldr r0, [sp]
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x6
|
||||
bhi _0802D8C0
|
||||
lsls r0, 2
|
||||
ldr r1, _0802D85C
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802D858: .4byte gUnknown_203B2F8
|
||||
_0802D85C: .4byte _0802D860
|
||||
.align 2, 0
|
||||
_0802D860:
|
||||
.4byte _0802D8C0
|
||||
.4byte _0802D8C0
|
||||
.4byte _0802D87C
|
||||
.4byte _0802D8C0
|
||||
.4byte _0802D8C0
|
||||
.4byte _0802D898
|
||||
.4byte _0802D8AC
|
||||
_0802D87C:
|
||||
ldr r0, _0802D894
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0x10]
|
||||
bl sub_8096C3C
|
||||
bl sub_8096C80
|
||||
movs r0, 0x8
|
||||
bl sub_802D1A0
|
||||
b _0802D8C6
|
||||
.align 2, 0
|
||||
_0802D894: .4byte gUnknown_203B2F8
|
||||
_0802D898:
|
||||
ldr r0, _0802D8A8
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x9
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0x10
|
||||
bl sub_802D1A0
|
||||
b _0802D8C6
|
||||
.align 2, 0
|
||||
_0802D8A8: .4byte gUnknown_203B2F8
|
||||
_0802D8AC:
|
||||
ldr r0, _0802D8BC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x9
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0xF
|
||||
bl sub_802D1A0
|
||||
b _0802D8C6
|
||||
.align 2, 0
|
||||
_0802D8BC: .4byte gUnknown_203B2F8
|
||||
_0802D8C0:
|
||||
movs r0, 0x1
|
||||
bl sub_802D1A0
|
||||
_0802D8C6:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802D82C
|
||||
|
||||
thumb_func_start sub_802D8CC
|
||||
sub_802D8CC:
|
||||
push {lr}
|
||||
movs r0, 0x1
|
||||
bl sub_802C598
|
||||
cmp r0, 0x4
|
||||
bhi _0802D93A
|
||||
lsls r0, 2
|
||||
ldr r1, _0802D8E4
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802D8E4: .4byte _0802D8E8
|
||||
.align 2, 0
|
||||
_0802D8E8:
|
||||
.4byte _0802D93A
|
||||
.4byte _0802D93A
|
||||
.4byte _0802D930
|
||||
.4byte _0802D8FC
|
||||
.4byte _0802D914
|
||||
_0802D8FC:
|
||||
bl sub_802C620
|
||||
ldr r1, _0802D910
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, 0x10]
|
||||
movs r0, 0xD
|
||||
bl sub_802D1A0
|
||||
b _0802D93A
|
||||
.align 2, 0
|
||||
_0802D910: .4byte gUnknown_203B2F8
|
||||
_0802D914:
|
||||
bl sub_802C620
|
||||
ldr r2, _0802D92C
|
||||
ldr r1, [r2]
|
||||
strb r0, [r1, 0x10]
|
||||
ldr r1, [r2]
|
||||
movs r0, 0xC
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0xF
|
||||
bl sub_802D1A0
|
||||
b _0802D93A
|
||||
.align 2, 0
|
||||
_0802D92C: .4byte gUnknown_203B2F8
|
||||
_0802D930:
|
||||
bl sub_802C688
|
||||
movs r0, 0x1
|
||||
bl sub_802D1A0
|
||||
_0802D93A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802D8CC
|
||||
|
||||
thumb_func_start sub_802D940
|
||||
sub_802D940:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802C598
|
||||
ldr r4, _0802D980
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x78
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802D970
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x78
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
ldr r1, [sp]
|
||||
cmp r1, 0x1
|
||||
beq _0802D970
|
||||
ldr r0, [r4]
|
||||
str r1, [r0, 0x6C]
|
||||
_0802D970:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _0802D98A
|
||||
cmp r0, 0x2
|
||||
bgt _0802D984
|
||||
cmp r0, 0x1
|
||||
beq _0802D9E0
|
||||
b _0802D9E6
|
||||
.align 2, 0
|
||||
_0802D980: .4byte gUnknown_203B2F8
|
||||
_0802D984:
|
||||
cmp r0, 0x5
|
||||
beq _0802D9CC
|
||||
b _0802D9E6
|
||||
_0802D98A:
|
||||
ldr r0, _0802D9BC
|
||||
ldr r3, [r0]
|
||||
ldrb r0, [r3, 0x9]
|
||||
cmp r0, 0
|
||||
beq _0802D9C4
|
||||
ldr r2, _0802D9C0
|
||||
ldrb r1, [r3, 0x10]
|
||||
lsls r0, r1, 2
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, 0xF0
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x5
|
||||
bls _0802D9C4
|
||||
ldrb r0, [r3, 0xA]
|
||||
ldrb r1, [r1, 0x4]
|
||||
cmp r0, r1
|
||||
bne _0802D9C4
|
||||
movs r0, 0x7
|
||||
bl sub_802D1A0
|
||||
b _0802D9E6
|
||||
.align 2, 0
|
||||
_0802D9BC: .4byte gUnknown_203B2F8
|
||||
_0802D9C0: .4byte gUnknown_203B490
|
||||
_0802D9C4:
|
||||
movs r0, 0xE
|
||||
bl sub_802D1A0
|
||||
b _0802D9E6
|
||||
_0802D9CC:
|
||||
ldr r0, _0802D9DC
|
||||
ldr r1, [r0]
|
||||
movs r0, 0xC
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0xF
|
||||
bl sub_802D1A0
|
||||
b _0802D9E6
|
||||
.align 2, 0
|
||||
_0802D9DC: .4byte gUnknown_203B2F8
|
||||
_0802D9E0:
|
||||
movs r0, 0xC
|
||||
bl sub_802D1A0
|
||||
_0802D9E6:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802D940
|
||||
|
||||
thumb_func_start sub_802D9F0
|
||||
sub_802D9F0:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
bl sub_802C598
|
||||
ldr r4, _0802DA30
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x78
|
||||
bl sub_8012FD8
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xC8
|
||||
bl sub_8012FD8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802DA1E
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xC8
|
||||
mov r1, sp
|
||||
bl sub_8013114
|
||||
_0802DA1E:
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x3
|
||||
beq _0802DA40
|
||||
cmp r0, 0x3
|
||||
bgt _0802DA34
|
||||
cmp r0, 0x1
|
||||
beq _0802DA38
|
||||
b _0802DA56
|
||||
.align 2, 0
|
||||
_0802DA30: .4byte gUnknown_203B2F8
|
||||
_0802DA34:
|
||||
cmp r0, 0x4
|
||||
bne _0802DA56
|
||||
_0802DA38:
|
||||
movs r0, 0xC
|
||||
bl sub_802D1A0
|
||||
b _0802DA56
|
||||
_0802DA40:
|
||||
bl sub_802C688
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x10]
|
||||
bl sub_8096C3C
|
||||
bl sub_8096C80
|
||||
movs r0, 0x8
|
||||
bl sub_802D1A0
|
||||
_0802DA56:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802D9F0
|
||||
|
||||
thumb_func_start sub_802DA60
|
||||
sub_802DA60:
|
||||
push {lr}
|
||||
bl sub_802DEE0
|
||||
cmp r0, 0x1
|
||||
bls _0802DA7C
|
||||
cmp r0, 0x3
|
||||
bhi _0802DA7C
|
||||
bl sub_802DF24
|
||||
ldr r0, _0802DA80
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x4]
|
||||
bl sub_802D1A0
|
||||
_0802DA7C:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DA80: .4byte gUnknown_203B2F8
|
||||
thumb_func_end sub_802DA60
|
||||
|
||||
thumb_func_start sub_802DA84
|
||||
sub_802DA84:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802DA9C
|
||||
ldr r0, _0802DAA4
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x4]
|
||||
bl sub_802D1A0
|
||||
_0802DA9C:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DAA4: .4byte gUnknown_203B2F8
|
||||
thumb_func_end sub_802DA84
|
||||
|
||||
thumb_func_start sub_802DAA8
|
||||
sub_802DAA8:
|
||||
push {r4,lr}
|
||||
ldr r4, _0802DAD0
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x10]
|
||||
bl GetJobSlotInfo
|
||||
adds r1, r0, 0
|
||||
ldr r4, [r4]
|
||||
ldrb r0, [r4, 0x9]
|
||||
cmp r0, 0
|
||||
beq _0802DAD4
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x5
|
||||
beq _0802DAD4
|
||||
ldrb r0, [r4, 0xA]
|
||||
ldrb r1, [r1, 0x4]
|
||||
cmp r0, r1
|
||||
bne _0802DAD4
|
||||
movs r0, 0
|
||||
b _0802DAD6
|
||||
.align 2, 0
|
||||
_0802DAD0: .4byte gUnknown_203B2F8
|
||||
_0802DAD4:
|
||||
movs r0, 0x1
|
||||
_0802DAD6:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802DAA8
|
||||
|
||||
thumb_func_start sub_802DADC
|
||||
sub_802DADC:
|
||||
push {r4,lr}
|
||||
ldr r3, _0802DAEC
|
||||
ldr r0, [r3]
|
||||
ldrb r0, [r0, 0x9]
|
||||
cmp r0, 0
|
||||
bne _0802DAF0
|
||||
_0802DAE8:
|
||||
movs r0, 0x1
|
||||
b _0802DB1C
|
||||
.align 2, 0
|
||||
_0802DAEC: .4byte gUnknown_203B2F8
|
||||
_0802DAF0:
|
||||
ldr r0, _0802DB24
|
||||
ldr r0, [r0]
|
||||
adds r1, r0, 0
|
||||
adds r1, 0xF0
|
||||
movs r2, 0
|
||||
_0802DAFA:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _0802DAE8
|
||||
cmp r0, 0x5
|
||||
beq _0802DAE8
|
||||
cmp r0, 0x5
|
||||
bls _0802DB12
|
||||
ldr r0, [r3]
|
||||
ldrb r0, [r0, 0xA]
|
||||
ldrb r4, [r1, 0x4]
|
||||
cmp r0, r4
|
||||
bne _0802DAE8
|
||||
_0802DB12:
|
||||
adds r1, 0x14
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x7
|
||||
ble _0802DAFA
|
||||
movs r0, 0
|
||||
_0802DB1C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802DB24: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_802DADC
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -661,99 +661,4 @@ sub_802CF5C:
|
||||
_0802CFCC: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CF5C
|
||||
|
||||
thumb_func_start sub_802CFD0
|
||||
sub_802CFD0:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x60
|
||||
ldr r6, _0802D02C
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073B8
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x1E
|
||||
ldrsh r4, [r0, r1]
|
||||
lsls r4, 3
|
||||
adds r5, r4, 0
|
||||
adds r5, 0xA
|
||||
ldr r2, _0802D030
|
||||
ldr r3, [r0, 0x34]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
adds r4, 0x4
|
||||
ldr r1, [r6]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x9E
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 3
|
||||
adds r5, r4, r0
|
||||
movs r0, 0x1E
|
||||
ldrsh r2, [r1, r0]
|
||||
adds r2, 0x1
|
||||
movs r0, 0x7
|
||||
str r0, [sp]
|
||||
ldr r0, [r1, 0x34]
|
||||
str r0, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
movs r1, 0
|
||||
movs r3, 0x2
|
||||
bl sub_8012BC4
|
||||
movs r5, 0
|
||||
b _0802D076
|
||||
.align 2, 0
|
||||
_0802D02C: .4byte gUnknown_203B2F4
|
||||
_0802D030: .4byte gUnknown_80DFDBC
|
||||
_0802D034:
|
||||
ldr r0, [r6]
|
||||
movs r2, 0x1E
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r2, 0x1C
|
||||
ldrsh r0, [r0, r2]
|
||||
muls r0, r1
|
||||
adds r0, r5
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_803B344
|
||||
adds r4, r0, 0
|
||||
ldr r0, [r6]
|
||||
ldr r1, [r0, 0x34]
|
||||
str r1, [sp, 0x8]
|
||||
adds r1, r5, 0
|
||||
bl sub_8013800
|
||||
str r0, [sp, 0x50]
|
||||
adds r0, r4, 0
|
||||
add r1, sp, 0x8
|
||||
bl sub_803B35C
|
||||
mov r1, sp
|
||||
adds r1, 0x4B
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4, 0x14]
|
||||
str r0, [sp, 0x54]
|
||||
add r0, sp, 0x8
|
||||
bl CreateRescueTitle
|
||||
adds r5, 0x1
|
||||
_0802D076:
|
||||
ldr r0, [r6]
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r5, r0
|
||||
blt _0802D034
|
||||
ldr r0, _0802D094
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
bl sub_80073E0
|
||||
add sp, 0x60
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802D094: .4byte gUnknown_203B2F4
|
||||
thumb_func_end sub_802CFD0
|
||||
|
||||
.align 2,0
|
||||
|
||||
24
include/code_80958E8.h
Normal file
24
include/code_80958E8.h
Normal file
@@ -0,0 +1,24 @@
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
u8 dungeon;
|
||||
u8 unk1;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
struct WonderMail unk0[4];
|
||||
struct WonderMail unk50[8];
|
||||
struct WonderMail unkF0[8];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
struct subStruct_203B490 unk230[16];
|
||||
u8 unk2F0[0x38];
|
||||
u8 unk328;
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
@@ -28,5 +28,8 @@ struct Dungeon
|
||||
extern struct Dungeon gDungeons[];
|
||||
extern struct DungeonName gDungeonNames[];
|
||||
const u8 *GetDungeonName1(u8 dungeon);
|
||||
u32 sub_80908D8(struct DungeonLocation *dungeon);
|
||||
u8 sub_8090910(struct DungeonLocation *dungeon, u32 param_2);
|
||||
bool8 sub_809095C(u8 dungeon);
|
||||
|
||||
#endif //GUARD_DUNGEON_H
|
||||
|
||||
@@ -99,7 +99,8 @@ struct DungeonEntityData
|
||||
/* 0x8C */ u8 IQSkillsSelected[4]; // IQ skills selected in the IQ skills menu.
|
||||
/* 0x90 */ u8 IQSkillsEnabled[4];
|
||||
/* 0x94 */ u8 tactic;
|
||||
u8 fill95[0x9C - 0x95];
|
||||
u8 fill95[0x98 - 0x95];
|
||||
/* 0x98 */ u32 unk98;
|
||||
/* 0x9C */ u32 unk9C;
|
||||
/* 0xA0 */ u32 unkA0;
|
||||
/* 0xA4 */ u8 clientType;
|
||||
@@ -135,7 +136,8 @@ struct DungeonEntityData
|
||||
/* 0xCC */ u8 cursedDamageTimer;
|
||||
u8 fillCD[0xD0 - 0xCD];
|
||||
/* 0xD0 */ u8 linkedStatus;
|
||||
u8 fillD1[0xD8 - 0xD1];
|
||||
u8 fillD1[0xD4 - 0xD1];
|
||||
/* 0xD4 */ u32 unkD4;
|
||||
/* 0xD8 */ u8 unkD8;
|
||||
/* 0xD9 */ u8 linkedStatusTurnsLeft;
|
||||
/* 0xDA */ u8 linkedStatusDamageTimer;
|
||||
|
||||
@@ -66,7 +66,9 @@ struct DungeonGlobalData
|
||||
u8 unk674;
|
||||
u8 unk675;
|
||||
/* 0x676 */ bool8 itemHoldersIdentified;
|
||||
u8 unk677[0x68A - 0x677];
|
||||
u8 unk677;
|
||||
u8 unk678;
|
||||
u8 unk679[0x68A - 0x679];
|
||||
/* 0x68A */ u8 unk68A;
|
||||
u8 fill68B[0x363C - 0x68B];
|
||||
/* 0x363C */ u8 expYieldRankings[NUM_SPECIES];
|
||||
|
||||
46
include/ground_script.h
Normal file
46
include/ground_script.h
Normal file
@@ -0,0 +1,46 @@
|
||||
struct GroundScript_ExecutePP_3
|
||||
{
|
||||
// size: 0xC
|
||||
u32 unk0;
|
||||
s16 scriptType;
|
||||
s16 unk6;
|
||||
u8 unk8;
|
||||
};
|
||||
|
||||
struct GroundScript_ExecutePP_1_sub
|
||||
{
|
||||
// size: 0x60
|
||||
/* 0x0 */ s16 scriptType;
|
||||
/* 0x2 */ s16 unk2;
|
||||
/* 0x4 */ u32 unk4;
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ u16 unkC;
|
||||
/* 0xE */ u8 unkE;
|
||||
/* 0xF */ u8 fillF;
|
||||
/* 0x10 */ u32 unk10;
|
||||
/* 0x14 */ u32 unk14;
|
||||
/* 0x18 */ u8 fill18[0x22 - 0x18];
|
||||
/* 0x22 */ u16 unk22;
|
||||
/* 0x24 */ u16 unk24;
|
||||
/* 0x26 */ u32 unk26;
|
||||
u8 fill50[0x60 - 0x2A];
|
||||
} __attribute__((packed));
|
||||
|
||||
typedef void (*Callback)(u32, void *);
|
||||
struct GroundScript_ExecutePP_1_sub2
|
||||
{
|
||||
Callback callbacks[10]; // IDK the size..
|
||||
};
|
||||
|
||||
struct GroundScript_ExecutePP_1
|
||||
{
|
||||
struct GroundScript_ExecutePP_1_sub2 *unk0;
|
||||
u32 unk4;
|
||||
u32 fill8;
|
||||
u32 unkC;
|
||||
u32 fill10;
|
||||
u8 fill18[0x24 - 0x14];
|
||||
struct GroundScript_ExecutePP_1_sub unk24;
|
||||
struct GroundScript_ExecutePP_1_sub unk84;
|
||||
u16 unkE4;
|
||||
};
|
||||
@@ -19,5 +19,10 @@ void sub_8077910(struct DungeonEntity * pokemon, struct DungeonEntity * target,
|
||||
void sub_80779F0(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 param_3, bool8 displayMessage);
|
||||
void sub_8077AE4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage);
|
||||
void sub_8077BB4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage);
|
||||
void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *target, s32 param_3, s32 param_4, u32 displayMessage);
|
||||
void HandleScannerOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target);
|
||||
void HandleStairsOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target);
|
||||
void HandleRadarOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target);
|
||||
void HandleLeechSeed(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,8 +23,8 @@ bool8 CleanseOrbAction(struct DungeonEntity *pokemon,struct DungeonEntity *targe
|
||||
bool8 sub_805BC70(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805BC98(struct DungeonEntity *pokemon, struct DungeonEntity *target, struct PokemonMove *move, s32 param_4);
|
||||
bool8 SilenceOrbAction(struct DungeonEntity *pokemon,struct DungeonEntity *target);
|
||||
bool8 sub_805BD70(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805BD7C(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 ScannerOrbAction(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 RadarOrbAction(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 TransferOrbAction(struct DungeonEntity *pokemon,struct DungeonEntity *target);
|
||||
bool8 sub_805BE90(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 LuminousOrbAction(struct DungeonEntity *pokemon,struct DungeonEntity *target);
|
||||
@@ -49,7 +49,7 @@ bool8 sub_805C3DC(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C3F8(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C45C(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C468(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C474(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 StairsOrbAction(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C480(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 sub_805C48C(struct DungeonEntity *pokemon, struct DungeonEntity *target);
|
||||
bool8 CanUseOnSelfWithStatusChecker(struct DungeonEntity *pokemon, struct PokemonMove *move);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define GUARD_WONDER_MAIL_H
|
||||
|
||||
#include "file_system.h"
|
||||
#include "global.h"
|
||||
#include "text.h"
|
||||
#include "item.h"
|
||||
#include "pokemon.h"
|
||||
@@ -29,8 +30,7 @@ struct WonderMail
|
||||
/* 0x1 */ u8 missionType; // mission type
|
||||
/* 0x2 */ u8 unk2;
|
||||
/* 0x3 */ u8 unk3;
|
||||
/* 0x4 */ u8 dungeon; // dungeon
|
||||
/* 0x5 */ u8 floor; // floor
|
||||
/* 0x4 */ struct DungeonLocation dungeon;
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ s16 clientSpecies; // client pokemon
|
||||
/* 0xE */ s16 targetSpecies; // target
|
||||
|
||||
79
include/wonder_mail_3.h
Normal file
79
include/wonder_mail_3.h
Normal file
@@ -0,0 +1,79 @@
|
||||
struct unkStruct_203B2F4
|
||||
{
|
||||
u8 fill0[0x1A];
|
||||
s16 unk1A;
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
u8 fill20[0x34 - 0x20];
|
||||
u32 unk34;
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 unk3C[4];
|
||||
u8 unk9C[4];
|
||||
};
|
||||
extern struct unkStruct_203B2F4 *gUnknown_203B2F4;
|
||||
|
||||
struct unkStruct_802C39C
|
||||
{
|
||||
/* 0x0 */ u32 unk0[2];
|
||||
/* 0x8 */ struct DungeonLocation *unk8;
|
||||
/* 0xC */ u8 *unkC;
|
||||
/* 0x10 */ s16 unk10;
|
||||
/* 0x12 */ s16 unk12;
|
||||
/* 0x14 */ u8 unk14;
|
||||
/* 0x15 */ u8 fill15[0x1B];
|
||||
/* 0x34 */ u8 fill34[2];
|
||||
/* 0x36 */ u8 fill36[0x3C - 0x36];
|
||||
/* 0x3C */ u8 unk3C[0xC];
|
||||
/* 0x48 */ u8 fill48[4];
|
||||
/* 0x4C */ u32 unk4C;
|
||||
/* 0x50 */ u8 *unk50[3];
|
||||
};
|
||||
|
||||
struct unkStruct_803B344
|
||||
{
|
||||
// size: 0xB4
|
||||
struct WonderMail unk0;
|
||||
u8* unk14;
|
||||
u8* unk18;
|
||||
u8 fill1C[0x3C - 0x1C];
|
||||
u8 unk3C[0x78];
|
||||
};
|
||||
|
||||
struct unkSubStruct_203B2F8
|
||||
{
|
||||
struct WonderMail wonderMail;
|
||||
u8 *unk14;
|
||||
u8 *unk18;
|
||||
};
|
||||
|
||||
struct unkStruct_203B2F8
|
||||
{
|
||||
// size: 0x208
|
||||
s32 state; // state
|
||||
s32 fallbackState;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
struct unkSubStruct_203B2F8 *unkC;
|
||||
u8 unk10;
|
||||
u8 fill11[0x14 - 0x11];
|
||||
u32 unk14;
|
||||
u8 fill18[0x58 - 0x18];
|
||||
u8 unk58;
|
||||
u8 fill59[0x64 - 0x59];
|
||||
u8 *unk64;
|
||||
u32 unk68;
|
||||
u32 unk6C;
|
||||
u32 unk70;
|
||||
u32 unk74;
|
||||
u8 unk78[0xC8 - 0x78];
|
||||
u8 unkC8[4];
|
||||
u8 fillCC[0x118 - 0xCC];
|
||||
struct MenuItem unk118[8];
|
||||
struct MenuItem unk158[8];
|
||||
u16 unk198[8];
|
||||
struct UnkTextStruct2 unk1A8[4];
|
||||
u32 unk1E4;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
@@ -116,6 +116,7 @@ SECTIONS {
|
||||
asm/gulpin_shop.o(.text);
|
||||
src/gulpin_shop_1.o(.text);
|
||||
asm/code_801EE10.o(.text);
|
||||
src/code_801EE10.o(.text);
|
||||
src/luminous_cave.o(.text);
|
||||
src/friend_list_menu_1.o(.text);
|
||||
asm/friend_list_menu.o(.text);
|
||||
@@ -292,6 +293,7 @@ SECTIONS {
|
||||
asm/dungeon.o(.text);
|
||||
src/dungeon_2.o(.text);
|
||||
asm/dungeon_2.o(.text);
|
||||
src/dungeon_2_1.o(.text);
|
||||
src/items.o(.text);
|
||||
src/rescue_team_info.o(.text);
|
||||
src/text_util.o(.text);
|
||||
|
||||
157
src/code_801EE10.c
Normal file
157
src/code_801EE10.c
Normal file
@@ -0,0 +1,157 @@
|
||||
#include "global.h"
|
||||
#include "code_800D090.h"
|
||||
#include "pokemon.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
|
||||
struct unkStruct_203B2AC
|
||||
{
|
||||
u8 unk0[0x1E];
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
u8 unk22[0x34 - 0x22];
|
||||
u32 unk34[3];
|
||||
u8 unk40[0x48 - 0x40];
|
||||
s16 unk48;
|
||||
u32 unk4C;
|
||||
u8 unk50[0xB0 - 0x50];
|
||||
u32 unkB0;
|
||||
u8 fillB4[0xE0 - 0xB4];
|
||||
u32 unkE0;
|
||||
struct UnkTextStruct2 *unkE4;
|
||||
struct UnkTextStruct2 unkE8[4];
|
||||
u8 unk148[4];
|
||||
};
|
||||
extern struct unkStruct_203B2AC *gUnknown_203B2AC;
|
||||
|
||||
struct unkStruct_3001B60
|
||||
{
|
||||
u8 fill0[0x1A];
|
||||
s16 unk1A[2];
|
||||
u8 fill1C[0x370 - 0x1E];
|
||||
s16 unk370;
|
||||
s16 unk372;
|
||||
s16 unk374;
|
||||
s16 unk376;
|
||||
};
|
||||
|
||||
extern struct unkStruct_3001B60 *gUnknown_3001B60;
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DC9B0;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC9C8;
|
||||
|
||||
extern void sub_8013818(void *, u32, u32, u32);
|
||||
extern u8 sub_80023E4(u32);
|
||||
extern void sub_808FF20(u32 *, struct PokemonStruct *, u8);
|
||||
extern void CreatePokemonInfoTabScreen(u32, s16, u32 *, u32 *, u32);
|
||||
extern s32 GetKeyPress(void *);
|
||||
extern bool8 sub_8013938(void *);
|
||||
extern void sub_802452C(void);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void sub_8013984(void *);
|
||||
void sub_80922B4(u8 *buffer, u8 *string, s32 size);
|
||||
|
||||
void sub_8024588(void);
|
||||
void sub_80245D0(void);
|
||||
void sub_8024604(void);
|
||||
|
||||
extern u8 gUnknown_80DC9A4[];
|
||||
|
||||
struct PokemonStruct *sub_80243E8(void)
|
||||
{
|
||||
u8 buffer [40];
|
||||
u8 nameBuffer [20];
|
||||
struct PokemonStruct *pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_3001B60->unk1A[gUnknown_3001B60->unk376 * gUnknown_3001B60->unk374 + gUnknown_3001B60->unk370]];
|
||||
|
||||
sub_80922B4(nameBuffer, pokeStruct->name, POKEMON_NAME_LENGTH);
|
||||
sprintf_2(buffer, gUnknown_80DC9A4,nameBuffer); // %s
|
||||
return pokeStruct;
|
||||
}
|
||||
|
||||
bool8 sub_8024458(s16 param_1, s32 param_2)
|
||||
{
|
||||
s32 param_1_s32 = param_1;
|
||||
gUnknown_203B2AC = MemoryAlloc(sizeof(struct unkStruct_203B2AC), 8);
|
||||
gUnknown_203B2AC->unk48 = param_1_s32;
|
||||
gUnknown_203B2AC->unkE0 = param_2;
|
||||
gUnknown_203B2AC->unkE4 = &gUnknown_203B2AC->unkE8[param_2];
|
||||
sub_8006518(gUnknown_203B2AC->unkE8);
|
||||
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9C8;
|
||||
gUnknown_203B2AC->unkE4->unk14 = gUnknown_203B2AC->unk148;
|
||||
gUnknown_203B2AC->unk148[2] = 10;
|
||||
sub_8024604();
|
||||
sub_802452C();
|
||||
sub_8013984(gUnknown_203B2AC);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_80244E4(void)
|
||||
{
|
||||
switch(GetKeyPress(gUnknown_203B2AC))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if (sub_8013938(gUnknown_203B2AC) != 0) {
|
||||
sub_802452C();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802452C(void)
|
||||
{
|
||||
sub_8024588();
|
||||
sub_80245D0();
|
||||
}
|
||||
|
||||
void sub_802453C(void)
|
||||
{
|
||||
if(gUnknown_203B2AC)
|
||||
{
|
||||
gUnknown_203B2AC->unkE8[gUnknown_203B2AC->unkE0] = gUnknown_80DC9B0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2AC->unkE8, 1, 1);
|
||||
MemoryFree(gUnknown_203B2AC);
|
||||
gUnknown_203B2AC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8024588(void)
|
||||
{
|
||||
gUnknown_203B2AC->unk148[0] = gUnknown_203B2AC->unk20;
|
||||
gUnknown_203B2AC->unk148[1] = gUnknown_203B2AC->unk1E;
|
||||
gUnknown_203B2AC->unk148[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2AC->unkE8,1,1);
|
||||
}
|
||||
|
||||
void sub_80245D0(void)
|
||||
{
|
||||
CreatePokemonInfoTabScreen
|
||||
(gUnknown_203B2AC->unk34[gUnknown_203B2AC->unk1E],
|
||||
gUnknown_203B2AC->unk1E,&gUnknown_203B2AC->unk4C,
|
||||
&gUnknown_203B2AC->unkB0,gUnknown_203B2AC->unkE0);
|
||||
}
|
||||
|
||||
void sub_8024604(void)
|
||||
{
|
||||
struct PokemonStruct *pokeStruct;
|
||||
u32 *iVar3;
|
||||
|
||||
gUnknown_203B2AC->unk34[0] = 2;
|
||||
gUnknown_203B2AC->unk34[1] = 3;
|
||||
gUnknown_203B2AC->unk34[2] = 5;
|
||||
sub_8013818(gUnknown_203B2AC,3,1,gUnknown_203B2AC->unkE0);
|
||||
iVar3 = &gUnknown_203B2AC->unk4C;
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B2AC->unk48];
|
||||
sub_808FF20(iVar3,pokeStruct,sub_80023E4(7));
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
#include "global.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern s32 sub_80908D8(u32);
|
||||
|
||||
s32 sub_803C1B4(s32 r0, u8 r1)
|
||||
u32 sub_803C1B4(struct DungeonLocation *dungeon, u8 r1)
|
||||
{
|
||||
s32 temp;
|
||||
temp = sub_80908D8(r0);
|
||||
temp = sub_80908D8(dungeon);
|
||||
if(r1 == 2)
|
||||
{
|
||||
temp += 2;
|
||||
|
||||
@@ -13,43 +13,43 @@ struct unkStruct_80420E8
|
||||
};
|
||||
|
||||
|
||||
extern void sub_803ED30(u8, struct DungeonEntity *r0, u8, u8);
|
||||
extern void sub_804151C(struct DungeonEntity *r0, u32 r1, u8 r2);
|
||||
extern void sub_80416E0(struct DungeonEntity *r0, u32, u32);
|
||||
extern u8 sub_8042768(struct DungeonEntity *r0);
|
||||
extern void sub_806CDD4(struct DungeonEntity *r0, u8, u32);
|
||||
extern void sub_803ED30(u8, struct DungeonEntity *pokemon, u8, u8);
|
||||
extern void sub_804151C(struct DungeonEntity *pokemon, u32 r1, u8 r2);
|
||||
extern void sub_80416E0(struct DungeonEntity *pokemon, u32, u32);
|
||||
extern u8 sub_8042768(struct DungeonEntity *pokemon);
|
||||
extern void sub_806CDD4(struct DungeonEntity *pokemon, u8, u32);
|
||||
extern u32 sub_806F62C(u32);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern u8 sub_803F428(struct DungeonEntity *r0);
|
||||
extern void sub_8041550(struct DungeonEntity *r0, u32, u32, u32, u32, u32);
|
||||
extern u8 sub_803F428(struct DungeonEntity *pokemon);
|
||||
extern void sub_8041550(struct DungeonEntity *pokemon, u32, u32, u32, u32, u32);
|
||||
|
||||
|
||||
void sub_80421C0(struct DungeonEntity *r0, u16 r1);
|
||||
void sub_80421C0(struct DungeonEntity *pokemon, u16 r1);
|
||||
|
||||
|
||||
void sub_8041AD0(struct DungeonEntity *r0)
|
||||
void sub_8041AD0(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xA2 << 1, 1);
|
||||
sub_804151C(pokemon, 0xA2 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041AE0(struct DungeonEntity *r0)
|
||||
void sub_8041AE0(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x143, 1);
|
||||
sub_804151C(pokemon, 0x143, 1);
|
||||
}
|
||||
|
||||
void sub_8041AF4(struct DungeonEntity *r0)
|
||||
void sub_8041AF4(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x25, 1);
|
||||
sub_80421C0(r0, 0x197);
|
||||
sub_804151C(pokemon, 0x25, 1);
|
||||
sub_80421C0(pokemon, 0x197);
|
||||
}
|
||||
|
||||
void nullsub_57(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B18(struct DungeonEntity *r0)
|
||||
void sub_8041B18(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x141, 1);
|
||||
sub_804151C(pokemon, 0x141, 1);
|
||||
}
|
||||
|
||||
void nullsub_58(void)
|
||||
@@ -60,36 +60,36 @@ void nullsub_59(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B34(struct DungeonEntity *r0)
|
||||
void sub_8041B34(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 7, 1);
|
||||
sub_804151C(pokemon, 7, 1);
|
||||
}
|
||||
|
||||
void nullsub_60(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B48(struct DungeonEntity *r0)
|
||||
void sub_8041B48(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 4, 0);
|
||||
sub_804151C(pokemon, 4, 0);
|
||||
}
|
||||
|
||||
void nullsub_61(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B5C(struct DungeonEntity *r0)
|
||||
void sub_8041B5C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x171, 1);
|
||||
sub_804151C(pokemon, 0x171, 1);
|
||||
}
|
||||
|
||||
void nullsub_62(struct DungeonEntity *r0)
|
||||
void nullsub_62(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B74(struct DungeonEntity *r0)
|
||||
void sub_8041B74(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x171, 0);
|
||||
sub_804151C(pokemon, 0x171, 0);
|
||||
}
|
||||
|
||||
void nullsub_63(void)
|
||||
@@ -100,9 +100,9 @@ void nullsub_64(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041B90(struct DungeonEntity *r0)
|
||||
void sub_8041B90(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xD6 << 1, 0);
|
||||
sub_804151C(pokemon, 0xD6 << 1, 0);
|
||||
}
|
||||
|
||||
void nullsub_65(void)
|
||||
@@ -113,60 +113,60 @@ void nullsub_66(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041BA8(struct DungeonEntity *r0)
|
||||
void sub_8041BA8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 4, 1);
|
||||
sub_804151C(pokemon, 4, 1);
|
||||
}
|
||||
|
||||
void nullsub_67(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041BBC(struct DungeonEntity *r0)
|
||||
void sub_8041BBC(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xD4 << 1, 1);
|
||||
sub_804151C(pokemon, 0xD4 << 1, 1);
|
||||
}
|
||||
|
||||
void nullsub_68(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041BD0(struct DungeonEntity *r0, u8 r1)
|
||||
void sub_8041BD0(struct DungeonEntity *pokemon, u8 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sub_80421C0(r0, 0x1a5);
|
||||
sub_80421C0(pokemon, 0x1a5);
|
||||
}
|
||||
|
||||
void sub_8041BE8(struct DungeonEntity *r0)
|
||||
void sub_8041BE8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0xCB << 1);
|
||||
sub_80421C0(pokemon, 0xCB << 1);
|
||||
}
|
||||
|
||||
void sub_8041BF8(struct DungeonEntity *r0)
|
||||
void sub_8041BF8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_806CDD4(r0, 0xA, NUM_DIRECTIONS);
|
||||
sub_806CDD4(pokemon, 0xA, NUM_DIRECTIONS);
|
||||
}
|
||||
|
||||
void sub_8041C08(struct DungeonEntity *r0)
|
||||
void sub_8041C08(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x1a7, 1);
|
||||
sub_804151C(pokemon, 0x1a7, 1);
|
||||
}
|
||||
|
||||
void sub_8041C1C(struct DungeonEntity *r0)
|
||||
void sub_8041C1C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x1a7, 1);
|
||||
sub_804151C(pokemon, 0x1a7, 1);
|
||||
}
|
||||
|
||||
void nullsub_69(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041C34(struct DungeonEntity *r0)
|
||||
void sub_8041C34(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x4C, 1);
|
||||
sub_804151C(pokemon, 0x4C, 1);
|
||||
}
|
||||
|
||||
void nullsub_70(void)
|
||||
@@ -177,24 +177,24 @@ void nullsub_71(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041C4C(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041C4C(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
sub_804151C(r0, r1, 1);
|
||||
sub_804151C(pokemon, r1, 1);
|
||||
}
|
||||
|
||||
void sub_8041C58(struct DungeonEntity *r0)
|
||||
void sub_8041C58(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 1);
|
||||
sub_804151C(pokemon, 0x1a9, 1);
|
||||
}
|
||||
|
||||
void sub_8041C6C(struct DungeonEntity *r0)
|
||||
void sub_8041C6C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x9D << 1, 1);
|
||||
sub_804151C(pokemon, 0x9D << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041C7C(struct DungeonEntity *r0)
|
||||
void sub_8041C7C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x9D << 1, 1);
|
||||
sub_804151C(pokemon, 0x9D << 1, 1);
|
||||
}
|
||||
|
||||
void nullsub_72(void)
|
||||
@@ -205,96 +205,96 @@ void nullsub_73(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041C94(struct DungeonEntity *r0)
|
||||
void sub_8041C94(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x171, 1);
|
||||
sub_804151C(pokemon, 0x171, 1);
|
||||
}
|
||||
|
||||
void sub_8041CA8(struct DungeonEntity *r0)
|
||||
void sub_8041CA8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 7, 1);
|
||||
sub_804151C(pokemon, 7, 1);
|
||||
}
|
||||
|
||||
void sub_8041CB8(struct DungeonEntity *r0)
|
||||
void sub_8041CB8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x18b, 1);
|
||||
sub_804151C(pokemon, 0x18b, 1);
|
||||
}
|
||||
|
||||
void sub_8041CCC(struct DungeonEntity *r0)
|
||||
void sub_8041CCC(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xC5 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC5 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041CDC(struct DungeonEntity *r0)
|
||||
void sub_8041CDC(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 5, 1);
|
||||
sub_804151C(pokemon, 5, 1);
|
||||
}
|
||||
|
||||
void sub_8041CEC(struct DungeonEntity *r0)
|
||||
void sub_8041CEC(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x19d);
|
||||
sub_80421C0(pokemon, 0x19d);
|
||||
}
|
||||
|
||||
void nullsub_74(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041D00(struct DungeonEntity *r0, struct DungeonEntity *r1)
|
||||
void sub_8041D00(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_804151C(r1, 0x2F, 1);
|
||||
sub_804151C(r0, 0x30, 1);
|
||||
sub_804151C(target, 0x2F, 1);
|
||||
sub_804151C(pokemon, 0x30, 1);
|
||||
}
|
||||
|
||||
void nullsub_75(void)
|
||||
void nullsub_75(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_76(void)
|
||||
void nullsub_76(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_77(void)
|
||||
void nullsub_77(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_78(void)
|
||||
void nullsub_78(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_79(void)
|
||||
void nullsub_79(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_80(void)
|
||||
void nullsub_80(struct DungeonEntity *pokemon)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041D38(struct DungeonEntity * r0)
|
||||
void sub_8041D38(struct DungeonEntity * pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x21, 1);
|
||||
sub_804151C(pokemon, 0x21, 1);
|
||||
}
|
||||
|
||||
void sub_8041D48(struct DungeonEntity * r0)
|
||||
void sub_8041D48(struct DungeonEntity * pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x191);
|
||||
sub_80421C0(pokemon, 0x191);
|
||||
}
|
||||
|
||||
void nullsub_81(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041D5C(struct DungeonEntity *r0)
|
||||
void sub_8041D5C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
if(sub_8042768(r0) == 0)
|
||||
if(sub_8042768(pokemon) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sub_803ED30(r0->entityData->stockpileCount, r0, 1, 0xB);
|
||||
sub_803ED30(pokemon->entityData->stockpileCount, pokemon, 1, 0xB);
|
||||
}
|
||||
|
||||
void sub_8041D84(struct DungeonEntity * r0)
|
||||
void sub_8041D84(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x19f);
|
||||
sub_80421C0(pokemon, 0x19f);
|
||||
}
|
||||
|
||||
void nullsub_82(void)
|
||||
@@ -305,14 +305,14 @@ void nullsub_83(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041D9C(struct DungeonEntity * r0)
|
||||
void sub_8041D9C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x131, 1);
|
||||
sub_804151C(pokemon, 0x131, 1);
|
||||
}
|
||||
|
||||
void sub_8041DB0(struct DungeonEntity * r0)
|
||||
void sub_8041DB0(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x30, 1);
|
||||
sub_804151C(pokemon, 0x30, 1);
|
||||
}
|
||||
|
||||
void nullsub_84(void)
|
||||
@@ -339,257 +339,257 @@ void nullsub_88(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041DD8(struct DungeonEntity *r0, s16 r1)
|
||||
void sub_8041DD8(struct DungeonEntity *pokemon, s16 r1)
|
||||
{
|
||||
u32 temp;
|
||||
temp = r1;
|
||||
|
||||
if(HasType(r0, TYPE_GHOST) != 0)
|
||||
sub_804151C(r0, temp, 1);
|
||||
if(HasType(pokemon, TYPE_GHOST) != 0)
|
||||
sub_804151C(pokemon, temp, 1);
|
||||
else
|
||||
sub_804151C(r0, TYPE_GHOST, 1);
|
||||
sub_804151C(pokemon, TYPE_GHOST, 1);
|
||||
}
|
||||
|
||||
void nullsub_89(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041E0C(struct DungeonEntity *r0)
|
||||
void sub_8041E0C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x41, 1);
|
||||
sub_804151C(pokemon, 0x41, 1);
|
||||
}
|
||||
|
||||
void sub_8041E1C(struct DungeonEntity *r0)
|
||||
void sub_8041E1C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x8F << 1, 1);
|
||||
sub_80421C0(r0, 0xCE << 1);
|
||||
sub_804151C(pokemon, 0x8F << 1, 1);
|
||||
sub_80421C0(pokemon, 0xCE << 1);
|
||||
}
|
||||
|
||||
void sub_8041E3C(struct DungeonEntity *r0)
|
||||
void sub_8041E3C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xD7 << 1, 1);
|
||||
sub_804151C(pokemon, 0xD7 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041E4C(struct DungeonEntity *r0)
|
||||
void sub_8041E4C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x1b1, 1);
|
||||
sub_804151C(pokemon, 0x1b1, 1);
|
||||
}
|
||||
|
||||
void sub_8041E60(struct DungeonEntity *r0)
|
||||
void sub_8041E60(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 1);
|
||||
sub_804151C(pokemon, 0x1a9, 1);
|
||||
}
|
||||
|
||||
void sub_8041E74(struct DungeonEntity *r0)
|
||||
void sub_8041E74(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xC9 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC9 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041E84(struct DungeonEntity *r0)
|
||||
void sub_8041E84(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xC7 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC7 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041E94(struct DungeonEntity *r0)
|
||||
void sub_8041E94(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xC8 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC8 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8041EA4(struct DungeonEntity *r0)
|
||||
void sub_8041EA4(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x15, 1);
|
||||
sub_804151C(pokemon, 0x15, 1);
|
||||
}
|
||||
|
||||
void sub_8041EB4(struct DungeonEntity *r0)
|
||||
void sub_8041EB4(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x171, 1);
|
||||
sub_804151C(pokemon, 0x171, 1);
|
||||
}
|
||||
|
||||
void sub_8041EC8(struct DungeonEntity *r0)
|
||||
void sub_8041EC8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x197);
|
||||
sub_80421C0(pokemon, 0x197);
|
||||
}
|
||||
|
||||
void sub_8041ED8(struct DungeonEntity *r0)
|
||||
void sub_8041ED8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x197);
|
||||
sub_80421C0(pokemon, 0x197);
|
||||
}
|
||||
|
||||
void sub_8041EE8(struct DungeonEntity *r0)
|
||||
void sub_8041EE8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0x15, 1);
|
||||
sub_804151C(pokemon, 0x15, 1);
|
||||
}
|
||||
|
||||
void sub_8041EF8(struct DungeonEntity *r0)
|
||||
void sub_8041EF8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_804151C(r0, 0xF, 1);
|
||||
sub_804151C(pokemon, 0xF, 1);
|
||||
}
|
||||
|
||||
void sub_8041F08(struct DungeonEntity *r0)
|
||||
void sub_8041F08(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_8041550(r0, 0x15, 1, 3, 2, 0);
|
||||
sub_8041550(pokemon, 0x15, 1, 3, 2, 0);
|
||||
}
|
||||
|
||||
void nullsub_90(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_8041F28(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041F28(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xCA << 1, 1);
|
||||
sub_804151C(pokemon, 0xCA << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0x193, 1);
|
||||
sub_804151C(pokemon, 0x193, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041F4C(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041F4C(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0x18f, 1);
|
||||
sub_804151C(pokemon, 0x18f, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0x191, 1);
|
||||
sub_804151C(pokemon, 0x191, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041F70(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041F70(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 1);
|
||||
sub_804151C(pokemon, 0x1a9, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xC9 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC9 << 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041F94(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041F94(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xC7 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC7 << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xC8 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC8 << 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041FB4(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041FB4(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 1);
|
||||
sub_804151C(pokemon, 0x1a9, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xC9 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC9 << 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041FD8(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041FD8(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xCA << 1, 1);
|
||||
sub_804151C(pokemon, 0xCA << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0x193, 1);
|
||||
sub_804151C(pokemon, 0x193, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8041FFC(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8041FFC(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xC7 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC7 << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xC8 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC8 << 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804201C(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_804201C(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0x18f, 1);
|
||||
sub_804151C(pokemon, 0x18f, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0x191, 1);
|
||||
sub_804151C(pokemon, 0x191, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042040(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8042040(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xC6 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC6 << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xD, 1);
|
||||
sub_804151C(pokemon, 0xD, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042060(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8042060(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0x18d, 1);
|
||||
sub_804151C(pokemon, 0x18d, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xE, 1);
|
||||
sub_804151C(pokemon, 0xE, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042080(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_8042080(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
{
|
||||
sub_804151C(r0, 0xC6 << 1, 1);
|
||||
sub_804151C(pokemon, 0xC6 << 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_804151C(r0, 0xD, 1);
|
||||
sub_804151C(pokemon, 0xD, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80420A0(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_80420A0(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
sub_804151C(r0, 0x143, 1);
|
||||
sub_804151C(pokemon, 0x143, 1);
|
||||
}
|
||||
|
||||
void nullsub_91(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_80420B8(struct DungeonEntity *r0, u32 r1)
|
||||
void sub_80420B8(struct DungeonEntity *pokemon, u32 r1)
|
||||
{
|
||||
sub_804151C(r0, 0x19, 1);
|
||||
sub_804151C(pokemon, 0x19, 1);
|
||||
}
|
||||
|
||||
void sub_80420C8(struct DungeonEntity *r0)
|
||||
void sub_80420C8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_8041550(r0, 0x15, 1, 3, 2, 0);
|
||||
sub_8041550(pokemon, 0x15, 1, 3, 2, 0);
|
||||
}
|
||||
|
||||
void nullsub_92(void)
|
||||
{
|
||||
}
|
||||
|
||||
void sub_80420E8(struct DungeonEntity *r0, struct unkStruct_80420E8 *r1)
|
||||
void sub_80420E8(struct DungeonEntity *pokemon, struct unkStruct_80420E8 *r1)
|
||||
{
|
||||
u32 temp;
|
||||
u32 arg;
|
||||
@@ -612,58 +612,58 @@ void sub_80420E8(struct DungeonEntity *r0, struct unkStruct_80420E8 *r1)
|
||||
arg = 11;
|
||||
break;
|
||||
}
|
||||
sub_8041550(r0, arg, 1, 3, 0, 1);
|
||||
sub_8041550(pokemon, arg, 1, 3, 0, 1);
|
||||
}
|
||||
|
||||
void sub_8042148(struct DungeonEntity *r0)
|
||||
void sub_8042148(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80421C0(r0, 0x1a7);
|
||||
sub_804151C(r0, 0x9F << 1, 1);
|
||||
sub_80421C0(pokemon, 0x1a7);
|
||||
sub_804151C(pokemon, 0x9F << 1, 1);
|
||||
}
|
||||
|
||||
void nullsub_93()
|
||||
{
|
||||
}
|
||||
|
||||
void sub_804216C(u32 r0, struct DungeonEntity *r1, u32 r2)
|
||||
void sub_804216C(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 r2)
|
||||
{
|
||||
if(r2 == 1)
|
||||
sub_804151C(r1, 0xF8, 1);
|
||||
sub_804151C(target, 0xF8, 1);
|
||||
else
|
||||
sub_804151C(r1, 0xF9, 1);
|
||||
sub_804151C(target, 0xF9, 1);
|
||||
}
|
||||
|
||||
void sub_804218C(u32 r0, struct DungeonEntity *r1)
|
||||
void sub_804218C(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_804151C(r1, 0x2A, 1);
|
||||
sub_804151C(target, 0x2A, 1);
|
||||
}
|
||||
|
||||
void sub_804219C(struct DungeonEntity *r0)
|
||||
void sub_804219C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
sub_80416E0(r0, 0x90, 1);
|
||||
sub_80416E0(pokemon, 0x90, 1);
|
||||
}
|
||||
|
||||
void sub_80421AC(u32 r0, struct DungeonEntity * r1)
|
||||
void sub_80421AC(struct DungeonEntity *pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
sub_804151C(r1, 0x167, 1);
|
||||
sub_804151C(target, 0x167, 1);
|
||||
}
|
||||
|
||||
void sub_80421C0(struct DungeonEntity *r0, u16 r1)
|
||||
void sub_80421C0(struct DungeonEntity *pokemon, u16 r1)
|
||||
{
|
||||
if(r0 == NULL)
|
||||
if(pokemon == NULL)
|
||||
PlaySoundEffect(r1);
|
||||
else
|
||||
if(sub_8042768(r0) != 0)
|
||||
if(sub_8042768(pokemon) != 0)
|
||||
PlaySoundEffect(r1);
|
||||
}
|
||||
|
||||
void sub_80421EC(struct DungeonEntity *r0, u16 r1)
|
||||
void sub_80421EC(struct DungeonEntity *pokemon, u16 r1)
|
||||
{
|
||||
if(sub_803F428(r0) != 0)
|
||||
if(sub_803F428(pokemon) != 0)
|
||||
PlaySoundEffect(r1);
|
||||
}
|
||||
|
||||
void sub_8042208(struct DungeonEntity *r0, u8 r1)
|
||||
void sub_8042208(struct DungeonEntity *pokemon, u8 r1)
|
||||
{
|
||||
if(r1 == 0)
|
||||
PlaySoundEffect(0x152);
|
||||
@@ -673,9 +673,9 @@ void sub_8042208(struct DungeonEntity *r0, u8 r1)
|
||||
PlaySoundEffect(0x150);
|
||||
}
|
||||
|
||||
void sub_8042238(u32 r0, struct DungeonEntity *r1)
|
||||
void sub_8042238(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
if(r1->entityData->isEnemy)
|
||||
if(target->entityData->isEnemy)
|
||||
PlaySoundEffect(0x157);
|
||||
else
|
||||
PlaySoundEffect(0x156);
|
||||
|
||||
@@ -47,28 +47,28 @@ extern u8 sub_8092364(u8);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E708(u32 r0, u32 r1);
|
||||
|
||||
void sub_8069E0C(struct DungeonEntity *param_1)
|
||||
void sub_8069E0C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
s32 index;
|
||||
struct DungeonEntityData *iVar4;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
iVar4 = param_1->entityData;
|
||||
if (HasAbility(param_1, ABILITY_FORECAST)) {
|
||||
iVar4->types[0] = gUnknown_80F520C[GetWeather(param_1)].unk0;
|
||||
iVar4->types[1] = TYPE_NONE;
|
||||
entityData = pokemon->entityData;
|
||||
if (HasAbility(pokemon, ABILITY_FORECAST)) {
|
||||
entityData->types[0] = gUnknown_80F520C[GetWeather(pokemon)].unk0;
|
||||
entityData->types[1] = TYPE_NONE;
|
||||
}
|
||||
else {
|
||||
for(index = 0; index < 2; index++)
|
||||
iVar4->types[index] = GetPokemonType(iVar4->entityID, index);
|
||||
entityData->types[index] = GetPokemonType(entityData->entityID, index);
|
||||
}
|
||||
for(index = 0; index < 2; index++)
|
||||
iVar4->abilities[index] = GetPokemonAbility(iVar4->entityID, index);
|
||||
entityData->abilities[index] = GetPokemonAbility(entityData->entityID, index);
|
||||
gDungeonGlobalData->unkC = 1;
|
||||
}
|
||||
|
||||
void TriggerWeatherAbilities(void)
|
||||
{
|
||||
struct DungeonEntity *uVar4;
|
||||
struct DungeonEntity *entity;
|
||||
s32 iVar5;
|
||||
|
||||
if (gDungeonGlobalData->unkC != 0) {
|
||||
@@ -77,18 +77,18 @@ void TriggerWeatherAbilities(void)
|
||||
|
||||
for(iVar5 = 0; iVar5 < DUNGEON_MAX_POKEMON; iVar5++)
|
||||
{
|
||||
uVar4 = gDungeonGlobalData->allPokemon[iVar5];
|
||||
if (EntityExists(uVar4)) {
|
||||
if (HasAbility(uVar4, ABILITY_DRIZZLE)) {
|
||||
entity = gDungeonGlobalData->allPokemon[iVar5];
|
||||
if (EntityExists(entity)) {
|
||||
if (HasAbility(entity, ABILITY_DRIZZLE)) {
|
||||
gDungeonGlobalData->startingWeather[WEATHER_RAIN] = 1;
|
||||
}
|
||||
else if (HasAbility(uVar4, ABILITY_SAND_STREAM)) {
|
||||
else if (HasAbility(entity, ABILITY_SAND_STREAM)) {
|
||||
gDungeonGlobalData->startingWeather[WEATHER_SANDSTORM] = 1;
|
||||
}
|
||||
else if (HasAbility(uVar4, ABILITY_DROUGHT)) {
|
||||
else if (HasAbility(entity, ABILITY_DROUGHT)) {
|
||||
gDungeonGlobalData->startingWeather[WEATHER_SUNNY] = 1;
|
||||
}
|
||||
if ((HasAbility(uVar4, ABILITY_AIR_LOCK)) || (HasAbility(uVar4, ABILITY_CLOUD_NINE))) {
|
||||
if ((HasAbility(entity, ABILITY_AIR_LOCK)) || (HasAbility(entity, ABILITY_CLOUD_NINE))) {
|
||||
gDungeonGlobalData->negateWeatherEffects = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -96,11 +96,11 @@ void TriggerWeatherAbilities(void)
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_8069F54(struct DungeonEntity *param_1, s16 param_2)
|
||||
s32 sub_8069F54(struct DungeonEntity *pokemon, s16 param_2)
|
||||
{
|
||||
if ((((param_2 * 0x10000) + 0xfe880000U) >> 0x10) < 4) {
|
||||
if (HasAbility(param_1, ABILITY_FORECAST)) {
|
||||
return gUnknown_80F520C[GetWeather(param_1)].unk2;
|
||||
if (HasAbility(pokemon, ABILITY_FORECAST)) {
|
||||
return gUnknown_80F520C[GetWeather(pokemon)].unk2;
|
||||
}
|
||||
else {
|
||||
return 0x178;
|
||||
@@ -109,14 +109,14 @@ s32 sub_8069F54(struct DungeonEntity *param_1, s16 param_2)
|
||||
return param_2;
|
||||
}
|
||||
|
||||
static inline u8 sub_8069F9C_sub(struct DungeonEntity *param_1)
|
||||
static inline u8 sub_8069F9C_sub(struct DungeonEntity *pokemon)
|
||||
{
|
||||
u32 uVar3;
|
||||
uVar3 = GetWeather(param_1);
|
||||
return gUnknown_80F51E4[uVar3];
|
||||
u32 weather;
|
||||
weather = GetWeather(pokemon);
|
||||
return gUnknown_80F51E4[weather];
|
||||
}
|
||||
|
||||
void sub_8069F9C(struct DungeonEntity *param_1,struct DungeonEntity * param_2,struct PokemonMove *param_3)
|
||||
void sub_8069F9C(struct DungeonEntity *pokemon,struct DungeonEntity * target,struct PokemonMove *move)
|
||||
{
|
||||
u8 type;
|
||||
u8 ability;
|
||||
@@ -129,19 +129,19 @@ void sub_8069F9C(struct DungeonEntity *param_1,struct DungeonEntity * param_2,st
|
||||
struct DungeonEntityData *iVar8;
|
||||
u8 local_20 [4];
|
||||
|
||||
if (!EntityExists(param_1)) {
|
||||
if (!EntityExists(pokemon)) {
|
||||
return;
|
||||
}
|
||||
if (!EntityExists(param_2)) {
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
if (param_1 == param_2) {
|
||||
if (pokemon == target) {
|
||||
return;
|
||||
}
|
||||
|
||||
iVar7 = param_1->entityData;
|
||||
iVar7 = pokemon->entityData;
|
||||
iVar8 = iVar7;
|
||||
iVar6 = param_2->entityData;
|
||||
iVar6 = target->entityData;
|
||||
abilityIndex = -1;
|
||||
if (iVar6->abilities[0] == ABILITY_TRACE) {
|
||||
abilityIndex = 0;
|
||||
@@ -171,112 +171,112 @@ void sub_8069F9C(struct DungeonEntity *param_1,struct DungeonEntity * param_2,st
|
||||
}
|
||||
iVar6->abilities[abilityIndex] = local_20[randomIndex];
|
||||
gDungeonGlobalData->unkC = 1;
|
||||
SetMessageArgument(gAvailablePokemonNames,param_2,0);
|
||||
sub_80522F4(param_1,param_2,*gUnknown_80FCC7C);
|
||||
sub_8042900(param_2);
|
||||
sub_806ABAC(param_1,param_2);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCC7C);
|
||||
sub_8042900(target);
|
||||
sub_806ABAC(pokemon,target);
|
||||
}
|
||||
}
|
||||
_0806A068:
|
||||
if (iVar6->unk15A != 0) {
|
||||
iVar6->unk15A = 0;
|
||||
if (HasAbility(param_2, ABILITY_COLOR_CHANGE)) {
|
||||
type = GetMoveTypeForPokemon(param_1,param_3);
|
||||
if (param_3->moveID == MOVE_WEATHER_BALL) {
|
||||
type = sub_8069F9C_sub(param_1);
|
||||
if (HasAbility(target, ABILITY_COLOR_CHANGE)) {
|
||||
type = GetMoveTypeForPokemon(pokemon,move);
|
||||
if (move->moveID == MOVE_WEATHER_BALL) {
|
||||
type = sub_8069F9C_sub(pokemon);
|
||||
}
|
||||
if ((type != TYPE_NONE) && (!HasType(param_2,type))) {
|
||||
if ((type != TYPE_NONE) && (!HasType(target,type))) {
|
||||
iVar6->types[0] = type;
|
||||
iVar6->types[1] = TYPE_NONE;
|
||||
iVar6->isColorChanged = TRUE;
|
||||
SetMessageArgument(gAvailablePokemonNames,param_2,0);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
__src = GetUnformattedTypeString(iVar6->types[0]);
|
||||
strcpy(gUnknown_202DE58,__src);
|
||||
sub_80522F4(param_1,param_2,*gUnknown_80FCCAC);
|
||||
sub_8042968(param_2);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCCAC);
|
||||
sub_8042968(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A120(struct DungeonEntity * param_1, struct DungeonEntity * param_2, struct PokemonMove* move)
|
||||
void sub_806A120(struct DungeonEntity * pokemon, struct DungeonEntity * target, struct PokemonMove* move)
|
||||
{
|
||||
u32 uVar2_u32;
|
||||
u8 uVar2;
|
||||
const char *__src;
|
||||
struct DungeonEntityData *iVar3;
|
||||
u8 moveType;
|
||||
const char *typeString;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if ((((EntityExists(param_1)) && (EntityExists(param_2))) && (param_1 != param_2))
|
||||
&& (iVar3 = param_2->entityData, iVar3->protectionStatus == 0xC)) {
|
||||
uVar2 = GetMoveTypeForPokemon(param_1, move);
|
||||
uVar2_u32 = sub_8092364(uVar2);
|
||||
if ((((EntityExists(pokemon)) && (EntityExists(target))) && (pokemon != target))
|
||||
&& (entityData = target->entityData, entityData->protectionStatus == 0xC)) {
|
||||
moveType = GetMoveTypeForPokemon(pokemon, move);
|
||||
uVar2_u32 = sub_8092364(moveType);
|
||||
if (uVar2_u32 != TYPE_NONE) {
|
||||
iVar3->types[0] = uVar2_u32;
|
||||
iVar3->types[1] = 0;
|
||||
sub_8041BBC(param_2);
|
||||
SetMessageArgument(gAvailablePokemonNames,param_2,0);
|
||||
__src = GetUnformattedTypeString(uVar2_u32);
|
||||
strcpy(gUnknown_202DE58,__src);
|
||||
sub_80522F4(param_1,param_2,*gUnknown_80FDCC8);
|
||||
entityData->types[0] = uVar2_u32;
|
||||
entityData->types[1] = 0;
|
||||
sub_8041BBC(target);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
typeString = GetUnformattedTypeString(uVar2_u32);
|
||||
strcpy(gUnknown_202DE58,typeString);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FDCC8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A1B0(struct DungeonEntity *param_1)
|
||||
void sub_806A1B0(struct DungeonEntity *pokemon)
|
||||
{
|
||||
if ((EntityExists(param_1)) && (HasAbility(param_1,0x2a))) {
|
||||
sub_8076090(param_1,param_1,0,1,0);
|
||||
if ((EntityExists(pokemon)) && (HasAbility(pokemon, ABILITY_TRUANT))) {
|
||||
sub_8076090(pokemon,pokemon,0,1,0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A1E8(struct DungeonEntity *param_1)
|
||||
void sub_806A1E8(struct DungeonEntity *pokemon)
|
||||
{
|
||||
bool8 bVar3;
|
||||
struct DungeonEntityData *iVar1;
|
||||
|
||||
bVar3 = FALSE;
|
||||
if (EntityExists(param_1)) {
|
||||
if (GetEntityType(param_1) == ENTITY_POKEMON) {
|
||||
iVar1 = param_1->entityData;
|
||||
if (EntityExists(pokemon)) {
|
||||
if (GetEntityType(pokemon) == ENTITY_POKEMON) {
|
||||
iVar1 = pokemon->entityData;
|
||||
bVar3 = (!iVar1->isEnemy);
|
||||
}
|
||||
if (gUnknown_203B46C->unk1 == '\0') {
|
||||
bVar3 = FALSE;
|
||||
}
|
||||
if (bVar3 && (sub_8045888(param_1) == '\0')) {
|
||||
sub_806A2BC(param_1,1);
|
||||
if (bVar3 && (sub_8045888(pokemon) == '\0')) {
|
||||
sub_806A2BC(pokemon,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A240(struct DungeonEntity *param_1, struct DungeonEntity *param_2)
|
||||
void sub_806A240(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
bool8 bVar3;
|
||||
struct DungeonEntityData *iVar1;
|
||||
bool8 isEnemy;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
bVar3 = FALSE;
|
||||
if (EntityExists(param_1)){
|
||||
if (GetEntityType(param_1) == ENTITY_POKEMON) {
|
||||
iVar1 = param_1->entityData;
|
||||
bVar3 = (!iVar1->isEnemy);
|
||||
isEnemy = FALSE;
|
||||
if (EntityExists(pokemon)){
|
||||
if (GetEntityType(pokemon) == ENTITY_POKEMON) {
|
||||
entityData = pokemon->entityData;
|
||||
isEnemy = (!entityData->isEnemy);
|
||||
}
|
||||
if (bVar3 && (sub_8045888(param_1) == '\0')) {
|
||||
sub_806A2BC(param_1,1);
|
||||
if (isEnemy && (sub_8045888(pokemon) == '\0')) {
|
||||
sub_806A2BC(pokemon,1);
|
||||
return;
|
||||
}
|
||||
else if (GetEntityType(param_2) == ENTITY_POKEMON) {
|
||||
iVar1 = param_2->entityData;
|
||||
bVar3 = (!iVar1->isEnemy);
|
||||
else if (GetEntityType(target) == ENTITY_POKEMON) {
|
||||
entityData = target->entityData;
|
||||
isEnemy = (!entityData->isEnemy);
|
||||
}
|
||||
if (bVar3 && (sub_8045888(param_2) == '\0')) {
|
||||
sub_806A2BC(param_2,1);
|
||||
if (isEnemy && (sub_8045888(target) == '\0')) {
|
||||
sub_806A2BC(target,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A2BC(struct DungeonEntity *param_1, u8 param_2)
|
||||
void sub_806A2BC(struct DungeonEntity *pokemon, u8 param_2)
|
||||
{
|
||||
if ((EntityExists(param_1)) && (GetEntityType(param_1) == ENTITY_POKEMON) && (gDungeonGlobalData->leader != param_1)) {
|
||||
if ((EntityExists(pokemon)) && (GetEntityType(pokemon) == ENTITY_POKEMON) && (gDungeonGlobalData->leader != pokemon)) {
|
||||
if (param_2 != '\0') {
|
||||
sub_804178C(1);
|
||||
while (gDungeonGlobalData->unk12 < 0x3c) {
|
||||
@@ -284,8 +284,8 @@ void sub_806A2BC(struct DungeonEntity *param_1, u8 param_2)
|
||||
}
|
||||
}
|
||||
sub_803E708(4,0x44);
|
||||
sub_803F508(param_1);
|
||||
sub_804AC20(¶m_1->posWorld);
|
||||
sub_803F508(pokemon);
|
||||
sub_804AC20(&pokemon->posWorld);
|
||||
gDungeonGlobalData->unk12 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,6 +145,38 @@ extern void sub_808CBB0(void);
|
||||
extern void sub_808CD44(void);
|
||||
extern void sub_8097FF8(void);
|
||||
|
||||
extern u8 sub_8098100(u8);
|
||||
extern void sub_8097FA8(void);
|
||||
extern void sub_807E5E4(u32);
|
||||
|
||||
void sub_8084854(u8 *param_1)
|
||||
{
|
||||
if (gDungeonGlobalData->unk678 != 0) {
|
||||
gDungeonGlobalData->unk3A0D = param_1[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sub_8098100(param_1[4]) != 0) {
|
||||
gDungeonGlobalData->unk3A0D = param_1[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sub_8098100(param_1[2]) != 0) {
|
||||
gDungeonGlobalData->unk3A0D = param_1[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
gDungeonGlobalData->unk3A0D = param_1[1];
|
||||
if (param_1[2] != 0x40) {
|
||||
sub_8097FA8();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
gDungeonGlobalData->unk675 = 1;
|
||||
sub_807E5E4(0);
|
||||
}
|
||||
|
||||
u32 sub_80848EC(void)
|
||||
{
|
||||
return 1;
|
||||
|
||||
@@ -6,36 +6,15 @@
|
||||
#include "sub_8095228.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "constants/wonder_mail.h"
|
||||
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
|
||||
u8 fill0[0x190];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
struct subStruct_203B490 unk230[16];
|
||||
u8 unk2F0[0x38];
|
||||
u8 unk328;
|
||||
};
|
||||
#include "dungeon.h"
|
||||
#include "code_80958E8.h"
|
||||
|
||||
|
||||
extern bool8 sub_809095C(u8);
|
||||
extern s32 GetDungeonFloorCount(u8);
|
||||
extern bool8 sub_809017C(u8 *);
|
||||
extern bool8 sub_809017C(struct DungeonLocation *);
|
||||
extern s16 GetBaseSpecies(s16);
|
||||
extern bool8 IsInvalidItemReward(u8);
|
||||
extern u8 sub_803C1D0(u8 *, u8);
|
||||
extern u8 sub_803C1D0(struct DungeonLocation *, u8);
|
||||
extern bool8 IsNotMoneyOrUsedTMItem(u8);
|
||||
extern u8 xxx_bit_lut_lookup_8091E50(u8 ,u8 );
|
||||
extern u32 GetMaxItemCount(u8);
|
||||
@@ -82,7 +61,7 @@ void sub_8095900(void)
|
||||
MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8));
|
||||
for(iVar2 = 0; iVar2 < 16; iVar2++)
|
||||
{
|
||||
gUnknown_203B490->unk230[iVar2].unk0 = 99;
|
||||
gUnknown_203B490->unk230[iVar2].dungeon = 99;
|
||||
gUnknown_203B490->unk230[iVar2].unk1 = 1;
|
||||
gUnknown_203B490->unk230[iVar2].unk4 = 0;
|
||||
gUnknown_203B490->unk230[iVar2].unk8 = 0;
|
||||
@@ -111,17 +90,17 @@ bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
return FALSE;
|
||||
else
|
||||
{
|
||||
if(data->missionType == WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0)
|
||||
if(data->missionType == WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM && GetMaxItemCount(data->dungeon.dungeonIndex) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->unk2 > 9)
|
||||
return FALSE;
|
||||
|
||||
if(sub_809095C(data->dungeon))
|
||||
if(sub_809095C(data->dungeon.dungeonIndex))
|
||||
return FALSE;
|
||||
if(data->floor >= GetDungeonFloorCount(data->dungeon))
|
||||
if(data->dungeon.dungeonFloor >= GetDungeonFloorCount(data->dungeon.dungeonIndex))
|
||||
return FALSE;
|
||||
if(sub_809017C(&(data->dungeon)))
|
||||
if(sub_809017C(&data->dungeon))
|
||||
return FALSE;
|
||||
|
||||
if(data->clientSpecies == SPECIES_NONE)
|
||||
@@ -153,7 +132,7 @@ bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
return FALSE;
|
||||
|
||||
// Item finding
|
||||
if(data->missionType == WONDER_MAIL_MISSION_TYPE_FIND_ITEM && xxx_bit_lut_lookup_8091E50(data->dungeon, data->targetItem) == 0)
|
||||
if(data->missionType == WONDER_MAIL_MISSION_TYPE_FIND_ITEM && xxx_bit_lut_lookup_8091E50(data->dungeon.dungeonIndex, data->targetItem) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS)
|
||||
@@ -170,7 +149,7 @@ bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
{
|
||||
if(GetFriendAreaUnlockCondition(data->friendAreaReward) != UNLOCK_WONDER_MAIL)
|
||||
return FALSE;
|
||||
if(sub_803C1D0(&(data->dungeon), data->missionType) == 0)
|
||||
if(sub_803C1D0(&data->dungeon, data->missionType) == 0)
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
@@ -2,42 +2,21 @@
|
||||
#include "pokemon.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
|
||||
struct unkStruct_8097270
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
struct DungeonLocation unk4;
|
||||
u32 unk8;
|
||||
u16 unkC;
|
||||
u16 unkE;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
};
|
||||
|
||||
struct subStruct_203B490
|
||||
{
|
||||
// size: 0xC
|
||||
struct DungeonLocation unk0;
|
||||
struct DungeonLocation dungeon;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
};
|
||||
|
||||
|
||||
struct unkStruct_203B490
|
||||
{
|
||||
// size: 0x330?
|
||||
|
||||
struct unkStruct_8097270 unk0[4];
|
||||
struct unkStruct_8097270 unk50[8];
|
||||
struct unkStruct_8097270 unkF0[8];
|
||||
struct WonderMail unk0[4];
|
||||
struct WonderMail unk50[8];
|
||||
struct WonderMail unkF0[8];
|
||||
u8 unk190[0x28];
|
||||
u8 unk1B8[0x78];
|
||||
struct subStruct_203B490 unk230[16];
|
||||
@@ -46,9 +25,15 @@ struct unkStruct_203B490
|
||||
};
|
||||
extern struct unkStruct_203B490 *gUnknown_203B490;
|
||||
|
||||
void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
|
||||
void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b);
|
||||
void SaveWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
|
||||
void RestoreWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b);
|
||||
extern s32 sub_8096EB0(void);
|
||||
extern void SaveDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void RestoreDungeonLocation(struct unkStruct_8094924*, struct DungeonLocation*);
|
||||
extern void sub_80015C0(u32, u32);
|
||||
extern u32 sub_8001784(u32, u32, u16);
|
||||
extern void sub_809674C();
|
||||
extern void sub_800199C(u32, s32, u32, s32);
|
||||
|
||||
bool8 sub_8096F50(struct WonderMail *r0)
|
||||
{
|
||||
@@ -62,8 +47,8 @@ bool8 sub_8096F50(struct WonderMail *r0)
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
temp = &gUnknown_203B490->unk230[index];
|
||||
if(temp->unk0.dungeonIndex == r0->dungeon)
|
||||
if(temp->unk0.dungeonFloor == r0->floor)
|
||||
if(temp->dungeon.dungeonIndex == r0->dungeon.dungeonIndex)
|
||||
if(temp->dungeon.dungeonFloor == r0->dungeon.dungeonFloor)
|
||||
if(temp->unk4 == r0->unk8)
|
||||
if(temp->unk8 == temp2)
|
||||
return TRUE;
|
||||
@@ -80,15 +65,15 @@ u32 sub_8096FA0(u8 *r0, u32 size)
|
||||
xxx_init_struct_8094924_restore_809485C(&backup, r0, size);
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unk0[index]);
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->unk0[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unk50[index]);
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->unk50[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_80971EC(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
RestoreWonderMail(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
@@ -110,7 +95,7 @@ u32 sub_8096FA0(u8 *r0, u32 size)
|
||||
{
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
|
||||
RestoreIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
|
||||
RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
|
||||
RestoreDungeonLocation(&backup, &gUnknown_203B490->unk230[index].dungeon);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
@@ -125,15 +110,15 @@ u32 sub_80970D8(u8 *r0, u32 size)
|
||||
xxx_init_struct_8094924_save_809486C(&backup, r0, size);
|
||||
for(index = 0; index < 4; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unk0[index]);
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->unk0[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unk50[index]);
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->unk50[index]);
|
||||
}
|
||||
for(index = 0; index < 8; index++)
|
||||
{
|
||||
sub_8097270(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
SaveWonderMail(&backup, &gUnknown_203B490->unkF0[index]);
|
||||
}
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
@@ -154,40 +139,40 @@ u32 sub_80970D8(u8 *r0, u32 size)
|
||||
{
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk8, 0x20);
|
||||
SaveIntegerBits(&backup, &gUnknown_203B490->unk230[index].unk4, 0x18);
|
||||
SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].unk0);
|
||||
SaveDungeonLocation(&backup, &gUnknown_203B490->unk230[index].dungeon);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
return backup.unk8;
|
||||
}
|
||||
|
||||
void sub_80971EC(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
|
||||
void RestoreWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b)
|
||||
{
|
||||
RestoreIntegerBits(a, &b->unk0, 4);
|
||||
RestoreIntegerBits(a, &b->unk1, 3);
|
||||
RestoreIntegerBits(a, &b->mailType, 4);
|
||||
RestoreIntegerBits(a, &b->missionType, 3);
|
||||
RestoreIntegerBits(a, &b->unk2, 4);
|
||||
RestoreIntegerBits(a, &b->unkC, 9);
|
||||
RestoreIntegerBits(a, &b->unkE, 9);
|
||||
RestoreIntegerBits(a, &b->unk10, 8);
|
||||
RestoreIntegerBits(a, &b->unk11, 4);
|
||||
RestoreIntegerBits(a, &b->unk12, 8);
|
||||
RestoreIntegerBits(a, &b->unk13, 6);
|
||||
RestoreIntegerBits(a, &b->clientSpecies, 9);
|
||||
RestoreIntegerBits(a, &b->targetSpecies, 9);
|
||||
RestoreIntegerBits(a, &b->targetItem, 8);
|
||||
RestoreIntegerBits(a, &b->rewardType, 4);
|
||||
RestoreIntegerBits(a, &b->itemReward, 8);
|
||||
RestoreIntegerBits(a, &b->friendAreaReward, 6);
|
||||
RestoreIntegerBits(a, &b->unk8, 0x18);
|
||||
RestoreDungeonLocation(a, &b->unk4);
|
||||
RestoreDungeonLocation(a, &b->dungeon);
|
||||
}
|
||||
|
||||
void sub_8097270(struct unkStruct_8094924 *a, struct unkStruct_8097270 *b)
|
||||
void SaveWonderMail(struct unkStruct_8094924 *a, struct WonderMail *b)
|
||||
{
|
||||
SaveIntegerBits(a, &b->unk0, 4);
|
||||
SaveIntegerBits(a, &b->unk1, 3);
|
||||
SaveIntegerBits(a, &b->mailType, 4);
|
||||
SaveIntegerBits(a, &b->missionType, 3);
|
||||
SaveIntegerBits(a, &b->unk2, 4);
|
||||
SaveIntegerBits(a, &b->unkC, 9);
|
||||
SaveIntegerBits(a, &b->unkE, 9);
|
||||
SaveIntegerBits(a, &b->unk10, 8);
|
||||
SaveIntegerBits(a, &b->unk11, 4);
|
||||
SaveIntegerBits(a, &b->unk12, 8);
|
||||
SaveIntegerBits(a, &b->unk13, 6);
|
||||
SaveIntegerBits(a, &b->clientSpecies, 9);
|
||||
SaveIntegerBits(a, &b->targetSpecies, 9);
|
||||
SaveIntegerBits(a, &b->targetItem, 8);
|
||||
SaveIntegerBits(a, &b->rewardType, 4);
|
||||
SaveIntegerBits(a, &b->itemReward, 8);
|
||||
SaveIntegerBits(a, &b->friendAreaReward, 6);
|
||||
SaveIntegerBits(a, &b->unk8, 0x18);
|
||||
SaveDungeonLocation(a, &b->unk4);
|
||||
SaveDungeonLocation(a, &b->dungeon);
|
||||
}
|
||||
|
||||
void sub_80972F4(void)
|
||||
@@ -218,3 +203,43 @@ s32 sub_8097318(s16 param_1)
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_809733C(short param_1,u32 param_2)
|
||||
{
|
||||
s32 uVar2;
|
||||
u8 param_2_u8;
|
||||
u16 uVar2_u16;
|
||||
|
||||
uVar2 = param_1;
|
||||
param_2_u8 = param_2;
|
||||
|
||||
if (uVar2 != 0xd) {
|
||||
uVar2_u16 = uVar2;
|
||||
if ((((sub_8001784(0,0x2c,uVar2_u16) == 0) && (sub_800199C(0,0x2b,uVar2_u16,param_2_u8), param_2_u8 != '\0')))){
|
||||
switch(uVar2)
|
||||
{
|
||||
case 0xE:
|
||||
case 0xF:
|
||||
case 0x1C:
|
||||
sub_809674C();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_8097384(s16 param_1)
|
||||
{
|
||||
bool32 iVar1;
|
||||
|
||||
if (param_1 == 0xd) {
|
||||
iVar1 = FALSE;
|
||||
}
|
||||
else {
|
||||
iVar1 = sub_8001784(0,0x2c,param_1 & 0xffff);
|
||||
if (iVar1 != 0) {
|
||||
iVar1 = TRUE;
|
||||
}
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
@@ -24,9 +24,11 @@ extern const char gUnknown_8115FE8;
|
||||
|
||||
struct unkStruct_811BAF4
|
||||
{
|
||||
u16 unk0;
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
u8 fill4[8];
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
u8 *text;
|
||||
};
|
||||
|
||||
extern struct unkStruct_811BAF4 gUnknown_811BAF4[10];
|
||||
|
||||
@@ -13,6 +13,23 @@ extern s16 gUnknown_8116F9A[];
|
||||
extern s16 gUnknown_8116F24[];
|
||||
extern const u8 *gUnknown_8117000[];
|
||||
|
||||
extern void sub_809AC18(s32, s32);
|
||||
extern void sub_809ABB4(s32, s32);
|
||||
|
||||
void sub_80A2584(s16 r0, s16 r1)
|
||||
{
|
||||
s32 iVar2 = r1;
|
||||
s32 iVar1 = r0;
|
||||
sub_809ABB4(iVar1, iVar2);
|
||||
}
|
||||
|
||||
void sub_80A2598(s16 r0, s16 r1)
|
||||
{
|
||||
s32 iVar2 = r1;
|
||||
s32 iVar1 = r0;
|
||||
sub_809AC18(iVar1, iVar2);
|
||||
}
|
||||
|
||||
u32 sub_80A25AC(u16 param_1)
|
||||
{
|
||||
if (sub_8098F88() != 0) {
|
||||
|
||||
@@ -48,7 +48,7 @@ void sub_80A7784(void)
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_80A77A0(s16 r0, u32 r1)
|
||||
u8 sub_80A77A0(s16 r0)
|
||||
{
|
||||
s32 temp;
|
||||
s32 temp2;
|
||||
|
||||
58
src/dungeon_2_1.c
Normal file
58
src/dungeon_2_1.c
Normal file
@@ -0,0 +1,58 @@
|
||||
#include "global.h"
|
||||
#include "dungeon.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "code_800D090.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "code_8092334.h"
|
||||
|
||||
extern u8 gUnknown_810A350[];
|
||||
extern u8 gDungeonFloorCount[];
|
||||
extern u8 *gUnknown_8108084[];
|
||||
|
||||
s32 sub_8091E94(s32 a1, s32 a2, s32 a3); // items.c
|
||||
|
||||
u32 sub_80908D8(struct DungeonLocation *dungeon)
|
||||
{
|
||||
if ((dungeon->dungeonIndex < DUNGEON_OUT_ON_RESCUE) && (dungeon->dungeonFloor < gDungeonFloorCount[dungeon->dungeonIndex])) {
|
||||
return gUnknown_8108084[dungeon->dungeonIndex][dungeon->dungeonFloor];
|
||||
}
|
||||
else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8090910(struct DungeonLocation *dungeon, u32 param_2)
|
||||
{
|
||||
u32 rand1;
|
||||
u32 rand2;
|
||||
|
||||
rand1 = RandomCapped(9999);
|
||||
rand2 = RandomCapped(9999);
|
||||
if ((dungeon->dungeonIndex < DUNGEON_OUT_ON_RESCUE) && (dungeon->dungeonFloor < gDungeonFloorCount[dungeon->dungeonIndex])) {
|
||||
return sub_8091E94(param_2, rand1, rand2);
|
||||
}
|
||||
else {
|
||||
return 0x46;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_809095C(u8 dungeon)
|
||||
{
|
||||
s32 counter;
|
||||
|
||||
if (dungeon >= DUNGEON_OUT_ON_RESCUE) {
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
counter = 0;
|
||||
if (gUnknown_810A350[0] != DUNGEON_OUT_ON_RESCUE) {
|
||||
for(; gUnknown_810A350[counter] != DUNGEON_OUT_ON_RESCUE; counter++)
|
||||
{
|
||||
if (gUnknown_810A350[counter] == dungeon) return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@ void RunDungeon(u8 param_1)
|
||||
if (!sub_8044B28()) {
|
||||
cVar2 = xxx_dungeon_80442D0(param_1);
|
||||
if (!sub_8044B28()) {
|
||||
if (cVar2 != '\0') {
|
||||
if (cVar2 != 0) {
|
||||
sub_807E378();
|
||||
if (sub_8044B28()) {
|
||||
return;
|
||||
@@ -59,7 +59,7 @@ void RunDungeon(u8 param_1)
|
||||
if (!sub_8044B28()) {
|
||||
sub_8044AB4();
|
||||
gDungeonGlobalData->speedTurnCounter++;
|
||||
if ( (s16)gDungeonGlobalData->speedTurnCounter == 0x18) {
|
||||
if (gDungeonGlobalData->speedTurnCounter == 24) {
|
||||
gDungeonGlobalData->speedTurnCounter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,15 @@
|
||||
#include "dungeon_movement_1.h"
|
||||
|
||||
#include "constants/item.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/status.h"
|
||||
#include "dungeon_engine.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_movement.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "map.h"
|
||||
|
||||
bool8 CanCrossWalls(struct DungeonEntity *pokemon)
|
||||
@@ -25,3 +31,43 @@ bool8 CanCrossWalls(struct DungeonEntity *pokemon)
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_807049C(struct DungeonEntity *pokemon, struct Position *pos)
|
||||
{
|
||||
s32 crossableTerrain;
|
||||
struct MapTile *tile;
|
||||
u16 tileFlags;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
entityData = pokemon->entityData;
|
||||
tile = GetMapTile_1(pos->x, pos->y);
|
||||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->tileType & TILE_TYPE_MAP_EDGE) == 0)) &&
|
||||
(tile->pokemon == NULL || (GetEntityType(tile->pokemon) == ENTITY_POKEMON))) {
|
||||
if (IsFixedDungeon() || (entityData->transformStatus != TRANSFORM_STATUS_MOBILE && !HasItem(pokemon, ITEM_ID_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityData->entityID);
|
||||
tileFlags = tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID);
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_ALL_TERRAIN_HIKER)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
|
||||
}
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_SUPER_MOBILE)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
switch(crossableTerrain)
|
||||
{
|
||||
case CROSSABLE_TERRAIN_LIQUID:
|
||||
if(tileFlags == TILE_TYPE_LIQUID) return FALSE;
|
||||
case CROSSABLE_TERRAIN_REGULAR:
|
||||
if(tileFlags == TILE_TYPE_FLOOR) return FALSE;
|
||||
break;
|
||||
case CROSSABLE_TERRAIN_WALL:
|
||||
default:
|
||||
return FALSE;
|
||||
case CROSSABLE_TERRAIN_CREVICE:
|
||||
if(tileFlags != 0) return FALSE;
|
||||
}
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -98,3 +98,112 @@ returnFalse:
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80833E8(struct Position *param_1, s32 *param_2)
|
||||
{
|
||||
struct MapTile *tile;
|
||||
struct MapRoom *room;
|
||||
u32 visibility;
|
||||
u32 roomIndex;
|
||||
|
||||
tile = GetMapTile_1(param_1->x, param_1->y);
|
||||
visibility = gDungeonGlobalData->visibility;
|
||||
if (visibility == 0) {
|
||||
visibility = 2;
|
||||
}
|
||||
roomIndex = tile->roomIndex;
|
||||
if (roomIndex == CORRIDOR_ROOM_INDEX) {
|
||||
param_2[0] = param_1->x - visibility;
|
||||
param_2[2] = param_1->x + visibility + 1;
|
||||
param_2[1] = param_1->y - visibility;
|
||||
param_2[3] = param_1->y + visibility + 1;
|
||||
}
|
||||
else {
|
||||
room = &gDungeonGlobalData->roomData[roomIndex];
|
||||
param_2[0] = room->startX - 1;
|
||||
param_2[2] = room->endX + 2;
|
||||
param_2[1] = room->startY - 1;
|
||||
param_2[3] = room->endY + 2;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsTargetTwoTilesAway(struct Position *pos1, struct Position *pos2)
|
||||
{
|
||||
s32 counter;
|
||||
struct MapTile *tile;
|
||||
s32 diff;
|
||||
s32 yCoord;
|
||||
s32 xCoord;
|
||||
s32 xDiff;
|
||||
s32 yDiff;
|
||||
s32 yCoord_1;
|
||||
s32 xCoord_1;
|
||||
|
||||
diff = pos1->x - pos2->x;
|
||||
if (diff < 0) {
|
||||
diff = -diff;
|
||||
}
|
||||
if (diff < 2) {
|
||||
diff = pos1->y - pos2->y;
|
||||
if (diff < 0) {
|
||||
diff = -diff;
|
||||
}
|
||||
if (1 >= diff) return TRUE;
|
||||
}
|
||||
xDiff = pos1->x - pos2->x;
|
||||
if (xDiff < 0) {
|
||||
xDiff = -xDiff;
|
||||
}
|
||||
yDiff = pos1->y - pos2->y;
|
||||
if (yDiff < 0) {
|
||||
yDiff = -yDiff;
|
||||
}
|
||||
if (yDiff < xDiff) {
|
||||
yDiff = xDiff;
|
||||
}
|
||||
if (yDiff == 2) {
|
||||
|
||||
xCoord = pos1->x;
|
||||
yCoord = pos1->y;
|
||||
|
||||
for(counter = 0; counter < 2; counter++){
|
||||
if (xCoord < pos2->x) {
|
||||
xCoord = xCoord + 1;
|
||||
}
|
||||
if (xCoord > pos2->x) {
|
||||
xCoord = xCoord - 1;
|
||||
}
|
||||
if (yCoord < pos2->y) {
|
||||
yCoord = yCoord + 1;
|
||||
}
|
||||
if (yCoord > pos2->y) {
|
||||
yCoord = yCoord -1;
|
||||
}
|
||||
tile = GetMapTile_1(xCoord,yCoord);
|
||||
if ((tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) == 0) return FALSE;
|
||||
}
|
||||
|
||||
xCoord_1 = pos2->x;
|
||||
yCoord_1 = pos2->y;
|
||||
|
||||
for(counter = 0; counter < 2; counter++)
|
||||
{
|
||||
if (xCoord_1 < pos1->x) {
|
||||
xCoord_1 = xCoord_1 + 1;
|
||||
}
|
||||
if (xCoord_1 > pos1->x) {
|
||||
xCoord_1 = xCoord_1 - 1;
|
||||
}
|
||||
if (yCoord_1 < pos1->y) {
|
||||
yCoord_1 = yCoord_1 + 1;
|
||||
}
|
||||
if (yCoord_1 > pos1->y) {
|
||||
yCoord_1 = yCoord_1 - 1;
|
||||
}
|
||||
tile = GetMapTile_1(xCoord_1, yCoord_1);
|
||||
if ((tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) == 0) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
#include "global.h"
|
||||
#include "memory.h"
|
||||
#include "debug.h"
|
||||
#include "ground_script.h"
|
||||
|
||||
struct unkStruct_3001B6C
|
||||
{
|
||||
// size: 0x110
|
||||
u8 fill0[0xE4];
|
||||
u16 unkE4;
|
||||
};
|
||||
extern struct GroundScript_ExecutePP_1 *gUnknown_3001B6C;
|
||||
|
||||
extern struct unkStruct_3001B6C *gUnknown_3001B6C;
|
||||
extern u8 gUnknown_811736C[];
|
||||
extern struct DebugLocation gUnknown_8117538[];
|
||||
|
||||
extern u8 gUnknown_811736C[];
|
||||
extern u8 *gUnknown_3001B70;
|
||||
|
||||
extern void sub_809D600(void *, u8 *, u32, u32, u32);
|
||||
|
||||
@@ -1,8 +1,107 @@
|
||||
#include "global.h"
|
||||
#include "debug.h"
|
||||
#include "ground_script.h"
|
||||
|
||||
extern void GroundMap_GetStationScript(u32, s16, u32, u32);
|
||||
extern struct GroundScript_ExecutePP_1 *gUnknown_3001B6C;
|
||||
|
||||
void sub_80A4BE8(u32 r0, s16 r1)
|
||||
struct unkStruct_811BAF4
|
||||
{
|
||||
GroundMap_GetStationScript(r0, r1, 0, 0);
|
||||
}
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
u8 *text;
|
||||
};
|
||||
|
||||
extern struct unkStruct_811BAF4 gUnknown_811BAF4[10];
|
||||
|
||||
extern struct DebugLocation gUnknown_8117698;
|
||||
extern struct DebugLocation gUnknown_8117644;
|
||||
extern struct DebugLocation gUnknown_81175E0;
|
||||
extern u8 gUnknown_8117594[];
|
||||
extern u8 gUnknown_81175EC[];
|
||||
extern u8 gUnknown_8117650[];
|
||||
|
||||
extern void GroundMap_GetStationScript(struct GroundScript_ExecutePP_3 *, s16, u32, u32);
|
||||
|
||||
bool8 GroundScript_ExecutePP(struct GroundScript_ExecutePP_1 *param_1, s32 *param_2, struct GroundScript_ExecutePP_3 *param_3, struct DebugLocation *unused);
|
||||
extern u8 sub_809D678(void *);
|
||||
extern void sub_809D710(u32,struct GroundScript_ExecutePP_3 *, s32);
|
||||
extern u8 sub_809D968(void *, s32);
|
||||
|
||||
void sub_80A4BE8(struct GroundScript_ExecutePP_3 *script, s16 r1)
|
||||
{
|
||||
GroundMap_GetStationScript(script, r1, 0, 0);
|
||||
}
|
||||
|
||||
void GroundMap_ExecuteEvent(s16 param_1, u32 param_2)
|
||||
{
|
||||
struct GroundScript_ExecutePP_3 script;
|
||||
s32 iVar1;
|
||||
u8 iVar2;
|
||||
|
||||
iVar1 = param_1;
|
||||
iVar2 = param_2;
|
||||
|
||||
Log(0,gUnknown_8117594,iVar1,iVar2); // "GroundMap ExecuteEvent %3d %d
|
||||
sub_809D710(0,&script,iVar1);
|
||||
if (iVar2 != 0) {
|
||||
script.scriptType = 5;
|
||||
}
|
||||
GroundScript_ExecutePP(gUnknown_3001B6C,0,&script,&gUnknown_81175E0);
|
||||
}
|
||||
|
||||
void GroundMap_ExecuteStation(s16 param_1, s16 param_2, s8 param_3, u32 param_4)
|
||||
{
|
||||
struct GroundScript_ExecutePP_3 script;
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
s32 iVar3;
|
||||
u8 iVar4;
|
||||
|
||||
iVar1 = param_1;
|
||||
iVar2 = param_2;
|
||||
iVar3 = param_3;
|
||||
iVar4 = param_4;
|
||||
|
||||
Log(0,gUnknown_81175EC,iVar1,iVar2,iVar3,iVar4); // GroundMap ExecuteStation %3d %3d %3d %d
|
||||
GroundMap_GetStationScript(&script,iVar1,iVar2,iVar3);
|
||||
if (iVar4 != 0) {
|
||||
script.scriptType = 5;
|
||||
}
|
||||
GroundScript_ExecutePP(gUnknown_3001B6C,0,&script,&gUnknown_8117644);
|
||||
}
|
||||
|
||||
void GroundMap_ExecuteEnter(s16 param_1)
|
||||
{
|
||||
struct GroundScript_ExecutePP_3 script;
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = param_1;
|
||||
|
||||
Log(0,gUnknown_8117650,iVar1); // GroundMap ExecuteEnter %3d
|
||||
sub_80A4BE8(&script, iVar1);
|
||||
script.scriptType = 2;
|
||||
script.unk6 = 0;
|
||||
script.unk8 = 0;
|
||||
GroundScript_ExecutePP(gUnknown_3001B6C,0,&script,&gUnknown_8117698);
|
||||
}
|
||||
|
||||
u8 sub_80A4D14(void)
|
||||
{
|
||||
return sub_809D678(gUnknown_3001B6C);
|
||||
}
|
||||
|
||||
u8 sub_80A4D2C(s16 param_1)
|
||||
{
|
||||
s32 iVar1 = param_1;
|
||||
return sub_809D968(gUnknown_3001B6C,iVar1);
|
||||
}
|
||||
|
||||
bool8 sub_80A4D48(s16 index)
|
||||
{
|
||||
if (index == -1) return TRUE;
|
||||
else if(gUnknown_811BAF4[index].unk0 == 5) return FALSE;
|
||||
else if(gUnknown_811BAF4[index].unk0 != 8) return TRUE;
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
@@ -1,63 +1,30 @@
|
||||
#include "global.h"
|
||||
#include "debug.h"
|
||||
#include "ground_script.h"
|
||||
|
||||
extern u8 gUnknown_2039A36;
|
||||
extern u8 gUnknown_2039A38[];
|
||||
extern u32 gUnknown_2039B48[];
|
||||
extern u8 gUnknown_2039AC0[];
|
||||
|
||||
extern u32 gUnknown_8116588;
|
||||
extern u32 gUnknown_8116538;
|
||||
extern u32 gUnknown_8116560;
|
||||
|
||||
extern u8 gUnknown_8116594[];
|
||||
extern u8 gUnknown_8116544[];
|
||||
extern u8 gUnknown_811656C[];
|
||||
|
||||
extern struct DebugLocation gUnknown_81165C8;
|
||||
|
||||
struct GroundScript_ExecutePP_3
|
||||
{
|
||||
// size: 0xC
|
||||
u32 unk0;
|
||||
s16 scriptType;
|
||||
s16 unk6;
|
||||
u8 unk8;
|
||||
};
|
||||
|
||||
struct GroundScript_ExecutePP_1_sub
|
||||
{
|
||||
// size: 0x60
|
||||
/* 0x0 */ s16 scriptType;
|
||||
/* 0x2 */ s16 unk2;
|
||||
/* 0x4 */ u32 unk4;
|
||||
/* 0x8 */ u32 unk8;
|
||||
/* 0xC */ u16 unkC;
|
||||
/* 0xE */ u8 unkE;
|
||||
/* 0xF */ u8 fillF;
|
||||
/* 0x10 */ u32 unk10;
|
||||
/* 0x14 */ u32 unk14;
|
||||
/* 0x18 */ u8 fill3C[0x26 - 0x18];
|
||||
/* 0x26 */ u32 unk26;
|
||||
u8 fill50[0x60 - 0x2A];
|
||||
} __attribute__((packed));
|
||||
|
||||
typedef void (*Callback)(u32, void *);
|
||||
struct GroundScript_ExecutePP_1_sub2
|
||||
{
|
||||
Callback callbacks[10]; // IDK the size..
|
||||
};
|
||||
|
||||
struct GroundScript_ExecutePP_1
|
||||
{
|
||||
struct GroundScript_ExecutePP_1_sub2 *unk0;
|
||||
u32 unk4;
|
||||
u32 fill8;
|
||||
u32 unkC;
|
||||
u32 fill10;
|
||||
u8 fill18[0x24 - 0x14];
|
||||
struct GroundScript_ExecutePP_1_sub unk24;
|
||||
struct GroundScript_ExecutePP_1_sub unk84;
|
||||
};
|
||||
|
||||
extern u8 sub_809D770(struct GroundScript_ExecutePP_1 *param_1, struct DebugLocation *);
|
||||
extern void sub_809D520(void *);
|
||||
extern void sub_809D568(void *);
|
||||
extern u8 sub_80AC378(void);
|
||||
extern u8 sub_80AD290(void);
|
||||
extern u8 sub_80A8B74(void);
|
||||
extern void sub_809D6E4(struct GroundScript_ExecutePP_1 *, struct GroundScript_ExecutePP_3 *, s32);
|
||||
extern u8 sub_809A750(void);
|
||||
extern u32 sub_80A2460(struct GroundScript_ExecutePP_1 *param_1, u32);
|
||||
void FatalError(u32 *, const char *, ...) __attribute__((noreturn));
|
||||
|
||||
bool8 GroundScript_ExecutePP(struct GroundScript_ExecutePP_1 *param_1, s32 *param_2, struct GroundScript_ExecutePP_3 *param_3, struct DebugLocation *unused)
|
||||
@@ -69,7 +36,7 @@ bool8 GroundScript_ExecutePP(struct GroundScript_ExecutePP_1 *param_1, s32 *para
|
||||
case 2:
|
||||
case 3:
|
||||
if (param_1->unk24.scriptType == 1) {
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, 0x60);
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, sizeof(struct GroundScript_ExecutePP_1_sub));
|
||||
break;
|
||||
}
|
||||
if (param_1->unk24.scriptType == 5) {
|
||||
@@ -85,11 +52,11 @@ bool8 GroundScript_ExecutePP(struct GroundScript_ExecutePP_1 *param_1, s32 *para
|
||||
// "execute script type error C"
|
||||
FatalError(&gUnknown_8116560, gUnknown_811656C);
|
||||
}
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, 0x60);
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, sizeof(struct GroundScript_ExecutePP_1_sub));
|
||||
break;
|
||||
case 0:
|
||||
if (param_1->unk24.scriptType != 1) goto _0809D84A;
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, 0x60);
|
||||
memcpy(¶m_1->unk84, ¶m_1->unk24, sizeof(struct GroundScript_ExecutePP_1_sub));
|
||||
break;
|
||||
case 1:
|
||||
_0809D84A:
|
||||
@@ -128,3 +95,97 @@ bool8 sub_809D8C0(struct GroundScript_ExecutePP_1 *param_1, s32 *param_2, s16 pa
|
||||
sub_809D6E4(param_1,&auStack28,param_3);
|
||||
return GroundScript_ExecutePP(param_1, param_2, &auStack28, debug);
|
||||
}
|
||||
|
||||
u8 sub_809D8EC(struct GroundScript_ExecutePP_1 *param_1, s16 param_2)
|
||||
{
|
||||
s32 param_2_s32;
|
||||
|
||||
param_2_s32 = param_2;
|
||||
|
||||
if ((param_2 == 0) && (sub_809A750() == 0)) {
|
||||
param_1->unk24.unk4 = sub_80A2460(param_1,0);
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
param_1->unk24.unk22 = param_2_s32;
|
||||
param_1->unk24.unk2 = 2;
|
||||
gUnknown_2039A36 = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
u8 sub_809D92C(struct GroundScript_ExecutePP_1 *r0)
|
||||
{
|
||||
return sub_809D770(r0, &gUnknown_81165C8);
|
||||
}
|
||||
|
||||
u8 sub_809D940(void)
|
||||
{
|
||||
u8 ret;
|
||||
|
||||
ret = sub_80A8B74();
|
||||
ret |= sub_80AC378();
|
||||
ret |= sub_80AD290();
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool8 sub_809D968(struct GroundScript_ExecutePP_1 * param_1, s16 param_2)
|
||||
{
|
||||
s16 sVar1;
|
||||
s16 sVar2;
|
||||
bool8 ret;
|
||||
|
||||
s32 param_2_s16 = param_2;
|
||||
|
||||
ret = FALSE;
|
||||
sVar1 = param_1->unk24.unk22;
|
||||
if ((sVar1 != -1) && (sVar1 == param_2_s16)) {
|
||||
param_1->unk24.unk22 = -1;
|
||||
ret = TRUE;
|
||||
}
|
||||
sVar2 = param_1->unk84.unk22;
|
||||
if ((sVar2 != -1) && (sVar2 == param_2_s16)) {
|
||||
param_1->unk84.unk22 = -1;
|
||||
ret = TRUE;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_809D9B8(s16 index)
|
||||
{
|
||||
s32 index_s16 = index;
|
||||
gUnknown_2039A38[index_s16] = 1;
|
||||
gUnknown_2039B48[index_s16] = 0;
|
||||
gUnknown_2039A36 = 1;
|
||||
}
|
||||
|
||||
void sub_809D9E0(s16 index, s32 r1)
|
||||
{
|
||||
s32 index_s16 = index;
|
||||
gUnknown_2039A38[index_s16] = 1;
|
||||
gUnknown_2039B48[index_s16] = r1;
|
||||
gUnknown_2039A36 = 1;
|
||||
}
|
||||
|
||||
bool8 sub_809DA08(struct GroundScript_ExecutePP_1 *param_1, s16 index, u32 param_3)
|
||||
{
|
||||
s32 index_s32;
|
||||
|
||||
index_s32 = index;
|
||||
gUnknown_2039B48[index_s32] = param_3;
|
||||
if (index_s32 == 0) {
|
||||
if (sub_809A750() == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
param_1->unk24.unk22 = index_s32;
|
||||
}
|
||||
else {
|
||||
param_1->unk24.unk22 = index_s32 | 0x80;
|
||||
gUnknown_2039A38[index_s32] = 1;
|
||||
gUnknown_2039AC0[index_s32] = 1;
|
||||
}
|
||||
param_1->unk24.unk2 = 2;
|
||||
gUnknown_2039A36 = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -635,11 +635,11 @@ void DisplayMissionObjectives(void)
|
||||
for(jobSlotIdx = 0; jobSlotIdx < MAX_ACCEPTED_JOBS; jobSlotIdx++)
|
||||
{
|
||||
jobInfo = GetJobSlotInfo(jobSlotIdx);
|
||||
if ((((jobInfo->dungeon == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
|
||||
if ((((jobInfo->dungeon.dungeonIndex == gUnknown_203B330->dungeonIndex) && (jobInfo->mailType != 0)
|
||||
) && (jobInfo->mailType != 5)) && (jobInfo->mailType != 7)) {
|
||||
sub_803B6B0(10,yCoord,3,gUnknown_203B330->unk10);
|
||||
if (jobInfo->missionType != WONDER_MAIL_MISSION_TYPE_FIND_ITEM) {
|
||||
sprintf_2(auStack144,gUnknown_80E1F3C,jobInfo->floor);
|
||||
sprintf_2(auStack144,gUnknown_80E1F3C,jobInfo->dungeon.dungeonFloor);
|
||||
xxx_call_draw_string(21,yCoord,auStack144,gUnknown_203B330->unk10,0);
|
||||
}
|
||||
switch(jobInfo->missionType)
|
||||
|
||||
271
src/status.c
271
src/status.c
@@ -1,9 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "status.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/ability.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/type.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_ai_targeting.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_items.h"
|
||||
@@ -56,24 +58,52 @@ extern u8 *gUnknown_80FD500[];
|
||||
extern s16 gUnknown_80F4ECC[];
|
||||
extern u8 *gUnknown_80FB960[];
|
||||
extern u8 *gUnknown_80FB940[];
|
||||
extern u8 *gUnknown_80FB204[];
|
||||
extern u8 *gUnknown_80FB240[];
|
||||
extern u8 *gUnknown_80FB1E0[];
|
||||
extern u8 *gUnknown_80FB1C4[];
|
||||
extern u8 *gUnknown_80FB21C[];
|
||||
extern u8 *gUnknown_80FAEA0[];
|
||||
extern u8 *gUnknown_80FAEF0[];
|
||||
extern u8 *gUnknown_80FAF3C[];
|
||||
extern u8 *gUnknown_80FAEC8[];
|
||||
extern u8 *gUnknown_80FAF1C[];
|
||||
extern u8 *gUnknown_80FAFAC[];
|
||||
extern u8 *gUnknown_80FAFD0[];
|
||||
extern u8 *gPtrCantLeechSeedSelfMessage[];
|
||||
extern u8 *gPtrCantLeechSeedMonMessage[];
|
||||
extern u8 *gUnknown_80FAA8C[];
|
||||
extern u8 *gUnknown_80FAE58[];
|
||||
extern u8 *gUnknown_80FAE7C[];
|
||||
extern s16 gUnknown_80F4EB0[];
|
||||
|
||||
extern s32 gUnknown_202DE30[10];
|
||||
|
||||
extern u8 sub_8043D10(void);
|
||||
extern void nullsub_75(struct DungeonEntity *);
|
||||
extern void nullsub_76(struct DungeonEntity *);
|
||||
extern void nullsub_77(struct DungeonEntity *);
|
||||
extern void nullsub_78(struct DungeonEntity *);
|
||||
extern void sub_803F580(u32);
|
||||
extern void sub_8040A84(void);
|
||||
extern void sub_8041CA8(struct DungeonEntity *);
|
||||
extern void sub_8041C94(struct DungeonEntity *);
|
||||
extern u8 sub_8045888(struct DungeonEntity *r0);
|
||||
extern void sub_803ED30(s32, struct DungeonEntity *r0, u8, s32);
|
||||
extern void sub_8041BF8(struct DungeonEntity *);
|
||||
extern void sub_8041BE8(struct DungeonEntity *);
|
||||
extern void sub_8041CCC(struct DungeonEntity *);
|
||||
extern void sub_8041CB8(struct DungeonEntity *r0);
|
||||
extern void sub_8041C1C(struct DungeonEntity *r0);
|
||||
extern s32 GetMovementSpeed(struct DungeonEntity *);
|
||||
|
||||
extern void sub_8042060(struct DungeonEntity *, s32);
|
||||
extern bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3);
|
||||
extern void sub_8041FB4(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_8041FD8(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u8 *);
|
||||
extern s32 sub_8009DA4(s32, s32);
|
||||
|
||||
extern void sub_804201C(struct DungeonEntity *r0, u32 r1);
|
||||
extern void sub_8041FFC(struct DungeonEntity *r0, u32 r1);
|
||||
|
||||
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
|
||||
extern void SetMessageArgument_2(char[], struct DungeonEntityData*, u32);
|
||||
extern void sub_8041C58(struct DungeonEntity *r0);
|
||||
@@ -523,14 +553,14 @@ void sub_8077AE4(struct DungeonEntity * pokemon, struct DungeonEntity * target,
|
||||
|
||||
void sub_8077BB4(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *iVar3;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) {
|
||||
iVar3 = target->entityData;
|
||||
entityData = target->entityData;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (iVar3->volatileStatus != VOLATILE_STATUS_COWERING) {
|
||||
iVar3->volatileStatus = VOLATILE_STATUS_COWERING;
|
||||
iVar3->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4ECC,1) + 1;
|
||||
if (entityData->volatileStatus != VOLATILE_STATUS_COWERING) {
|
||||
entityData->volatileStatus = VOLATILE_STATUS_COWERING;
|
||||
entityData->volatileStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4ECC,1) + 1;
|
||||
sub_8041BF8(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB940);
|
||||
}
|
||||
@@ -540,3 +570,226 @@ void sub_8077BB4(struct DungeonEntity * pokemon, struct DungeonEntity * target,
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
||||
void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *target, s32 param_3, s32 param_4, u32 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
s32 HP;
|
||||
s32 maxHP;
|
||||
s32 r8;
|
||||
u8 displayMessage_u8;
|
||||
|
||||
displayMessage_u8 = displayMessage;
|
||||
|
||||
if (!EntityExists(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
entityData = target->entityData;
|
||||
maxHP = entityData->maxHP;
|
||||
HP = entityData->HP;
|
||||
if (((entityData->HP == entityData->maxHP) && (0 < param_4)) || (param_3 == 0)) {
|
||||
entityData->maxHP += param_4;
|
||||
entityData->HP += param_4;
|
||||
if (entityData->maxHP > 999) {
|
||||
entityData->maxHP = 999;
|
||||
}
|
||||
if (entityData->HP > entityData->maxHP) {
|
||||
entityData->HP = entityData->maxHP;
|
||||
}
|
||||
if (entityData->HP == entityData->maxHP) {
|
||||
HP = entityData->HP;
|
||||
}
|
||||
sub_8041C94(target);
|
||||
}
|
||||
else {
|
||||
entityData->HP += param_3;
|
||||
if (entityData->HP > entityData->maxHP) {
|
||||
entityData->HP = entityData->maxHP;
|
||||
}
|
||||
sub_8041CA8(target);
|
||||
}
|
||||
maxHP = entityData->maxHP - maxHP;
|
||||
HP = entityData->HP - HP;
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
gUnknown_202DE30[0] = HP;
|
||||
gUnknown_202DE30[1] = maxHP;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if ((HP == 0) && (maxHP == 0)) {
|
||||
if (displayMessage_u8)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB204); // $m0's HP remained unchanged
|
||||
}
|
||||
else if ((param_4 == 0) && (HP == 0))
|
||||
{
|
||||
if (displayMessage_u8)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB21C); // $m0 has full HP
|
||||
}
|
||||
else
|
||||
{
|
||||
r8 = 0;
|
||||
if (maxHP != 0) {
|
||||
if (sub_8045888(target) != 0) {
|
||||
r8 = maxHP;
|
||||
}
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB240); // m0$'s max HP rose by $d1
|
||||
}
|
||||
if (HP != 0) {
|
||||
if (sub_8045888(target) != 0) {
|
||||
r8 = HP;
|
||||
}
|
||||
if (param_3 != 0) {
|
||||
if (entityData->maxHP == entityData->HP) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB1E0); // $m0 was fully healed
|
||||
}
|
||||
else {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB1C4); // $m0 recovered $d0 HP
|
||||
}
|
||||
}
|
||||
}
|
||||
if (r8)
|
||||
sub_803ED30(r8,target,1,-1);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleScannerOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target)
|
||||
{
|
||||
if (EntityExists(target)) {
|
||||
if (target->entityData->scanningStatus) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAEF0); // Item locations are already known
|
||||
}
|
||||
else
|
||||
{
|
||||
target->entityData->scanningStatus = TRUE;
|
||||
nullsub_75(target);
|
||||
SetMessageArgument(gAvailablePokemonNames, target, 0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAEA0); // Item locations became evident
|
||||
sub_803F580(0);
|
||||
sub_8040A84();
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HandleStairsOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target)
|
||||
{
|
||||
if (EntityExists(target)) {
|
||||
if(sub_8043D10())
|
||||
{
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAF3C);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (target->entityData->stairSpotterStatus) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAF1C);
|
||||
}
|
||||
else
|
||||
{
|
||||
target->entityData->stairSpotterStatus = TRUE;
|
||||
nullsub_76(target);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAEC8);
|
||||
sub_803F580(0);
|
||||
sub_8040A84();
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HandleRadarOrb(struct DungeonEntity* pokemon, struct DungeonEntity* target)
|
||||
{
|
||||
if (EntityExists(target)) {
|
||||
if (target->entityData->radarStatus != 0) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAFD0);
|
||||
}
|
||||
else
|
||||
{
|
||||
target->entityData->radarStatus = TRUE;
|
||||
nullsub_77(target);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAFAC);
|
||||
sub_803F580(0);
|
||||
sub_8040A84();
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void HandleLeechSeed(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 displayMessage)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
struct DungeonEntityData *entityData2;
|
||||
s32 index;
|
||||
|
||||
if ((EntityExists(target)) && (GetEntityType(pokemon) == ENTITY_POKEMON)) {
|
||||
entityData = target->entityData;
|
||||
if (pokemon == target) {
|
||||
pokemon = target;
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gPtrCantLeechSeedSelfMessage);
|
||||
}
|
||||
else {
|
||||
if (HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
return;
|
||||
}
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (HasType(target, TYPE_GRASS)) {
|
||||
if (displayMessage)
|
||||
sub_80522F4(pokemon,target,*gPtrCantLeechSeedMonMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(entityData->linkedStatus)
|
||||
{
|
||||
case LINKED_STATUS_DESTINY_BOND:
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAA8C);
|
||||
default:
|
||||
entityData->linkedStatus = LINKED_STATUS_LEECH_SEED;
|
||||
entityData->linkedStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4EB0, TRUE) + 1;
|
||||
entityData->linkedStatusDamageTimer = 0;
|
||||
nullsub_78(target);
|
||||
entityData->unkD8 = 0xff;
|
||||
break;
|
||||
case LINKED_STATUS_LEECH_SEED:
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAE7C);
|
||||
return;
|
||||
}
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
if (pokemon == gDungeonGlobalData->allPokemon[index]) {
|
||||
entityData->unkD8 = index;
|
||||
entityData2 = pokemon->entityData;
|
||||
entityData->unkD4 = entityData2->unk98;
|
||||
}
|
||||
}
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAE58);
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8078084(struct DungeonEntity * pokemon)
|
||||
{
|
||||
struct DungeonEntityData *entityData;
|
||||
struct DungeonEntityData *entityData2;
|
||||
struct DungeonEntity *target;
|
||||
s32 index;
|
||||
|
||||
entityData = pokemon->entityData;
|
||||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
target = gDungeonGlobalData->allPokemon[index];
|
||||
if (EntityExists(target)) {
|
||||
entityData2 = target->entityData;
|
||||
if((u8)(entityData2->linkedStatus - 1) <= 1)
|
||||
{
|
||||
if(entityData2->unkD4 == entityData->unk98)
|
||||
{
|
||||
entityData2->linkedStatus = LINKED_STATUS_NONE;
|
||||
DungeonEntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
|
||||
extern void sub_807F43C(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8078F50(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8077E4C(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_807DC68(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8077BB4(struct DungeonEntity *, struct DungeonEntity *, u8);
|
||||
extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32);
|
||||
@@ -64,8 +63,6 @@ extern void sub_807DA14(struct DungeonEntity *, struct DungeonEntity *, s32);
|
||||
extern s16 sub_803D970(u32);
|
||||
extern u8 sub_806AA0C(s32, u32);
|
||||
extern void sub_806BB6C(struct DungeonEntity *, s32);
|
||||
extern void sub_8077DDC(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8077ED0(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void sub_8075C58(struct DungeonEntity *, struct DungeonEntity *, s32, s32);
|
||||
extern void sub_807E254(struct DungeonEntity *, struct DungeonEntity *, u32);
|
||||
extern bool8 sub_805727C(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 chance);
|
||||
@@ -78,9 +75,7 @@ extern u8 sub_8057308(struct DungeonEntity *, u32);
|
||||
extern void sub_8076F80(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32, u32);
|
||||
extern void sub_8077084(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8078678(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *r1, s32, s16, u32);
|
||||
extern void sub_806F324(struct DungeonEntity *, s32, u32, u32);
|
||||
extern void sub_8077F40(struct DungeonEntity *, struct DungeonEntity *, u32);
|
||||
extern void sub_8077160(struct DungeonEntity *, struct DungeonEntity *, u32, u32);
|
||||
extern bool8 sub_805755C(struct DungeonEntity* pokemon,u16 moveID);
|
||||
extern void sub_807614C(struct DungeonEntity *, struct DungeonEntity *, u32);
|
||||
@@ -349,25 +344,25 @@ bool8 sub_805B214(struct DungeonEntity * pokemon,struct DungeonEntity * target,s
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 TrapperOrbAction(struct DungeonEntity * param_1,struct DungeonEntity * param_2)
|
||||
bool8 TrapperOrbAction(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
bool8 trapLaid;
|
||||
u8 uVar2;
|
||||
bool8 isEnemy;
|
||||
|
||||
trapLaid = FALSE;
|
||||
isEnemy = param_1->entityData->isEnemy;
|
||||
isEnemy = pokemon->entityData->isEnemy;
|
||||
uVar2 = 1;
|
||||
|
||||
if (isEnemy) {
|
||||
uVar2 = 2;
|
||||
}
|
||||
if (sub_807FCD4(¶m_1->posWorld,0x13,uVar2) != 0) {
|
||||
if (sub_807FCD4(&pokemon->posWorld,0x13,uVar2) != 0) {
|
||||
trapLaid = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80522F4(param_1,param_2,*gUnknown_80FC5A8); // A trap can't be laid here!
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FC5A8); // A trap can't be laid here!
|
||||
}
|
||||
sub_8049ED4();
|
||||
return trapLaid;
|
||||
@@ -558,9 +553,9 @@ _0805B598:
|
||||
return local_24;
|
||||
}
|
||||
|
||||
bool8 sub_805B5F4(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
bool8 LeechSeedMoveAction(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
sub_8077F40(pokemon, target, 1);
|
||||
HandleLeechSeed(pokemon, target, TRUE);
|
||||
if (pokemon->entityData->unkFB == 0) {
|
||||
pokemon->entityData->unkFB = 1;
|
||||
}
|
||||
@@ -975,15 +970,15 @@ bool8 SilenceOrbAction(struct DungeonEntity * pokemon, struct DungeonEntity * ta
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805BD70(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
bool8 ScannerOrbAction(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
sub_8077DDC(pokemon, target);
|
||||
HandleScannerOrb(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805BD7C(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
bool8 RadarOrbAction(struct DungeonEntity * pokemon, struct DungeonEntity * target)
|
||||
{
|
||||
sub_8077ED0(pokemon, target);
|
||||
HandleRadarOrb(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1136,11 +1131,11 @@ bool8 TrapbustOrbAction(struct DungeonEntity * pokemon,struct DungeonEntity * ta
|
||||
return foundTrap;
|
||||
}
|
||||
|
||||
bool8 sub_805C080(struct DungeonEntity * pokemon, struct DungeonEntity *param_2)
|
||||
bool8 sub_805C080(struct DungeonEntity * pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
struct DungeonEntity **possibleTargets;
|
||||
s32 numPossibleTargets;
|
||||
struct DungeonEntity *target;
|
||||
struct DungeonEntity *targetEntity;
|
||||
bool8 foundTarget;
|
||||
s32 index;
|
||||
|
||||
@@ -1154,15 +1149,15 @@ bool8 sub_805C080(struct DungeonEntity * pokemon, struct DungeonEntity *param_2)
|
||||
numPossibleTargets = MAX_TEAM_MEMBERS;
|
||||
}
|
||||
for(index = 0; index < numPossibleTargets; index++){
|
||||
target = possibleTargets[index];
|
||||
if (((EntityExists(target)) && (pokemon != target)) &&
|
||||
(CanTarget(pokemon,target,1,FALSE) == 0)) {
|
||||
sub_807D148(pokemon,target,2,&pokemon->posWorld);
|
||||
targetEntity = possibleTargets[index];
|
||||
if (((EntityExists(targetEntity)) && (pokemon != targetEntity)) &&
|
||||
(CanTarget(pokemon,targetEntity,1,FALSE) == 0)) {
|
||||
sub_807D148(pokemon,targetEntity,2,&pokemon->posWorld);
|
||||
foundTarget = TRUE;
|
||||
}
|
||||
}
|
||||
if (!foundTarget) {
|
||||
sub_80522F4(pokemon,param_2,*gUnknown_81004F0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_81004F0);
|
||||
}
|
||||
return foundTarget;
|
||||
}
|
||||
@@ -1329,9 +1324,9 @@ bool8 sub_805C468(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_805C474(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
bool8 StairsOrbAction(struct DungeonEntity *pokemon, struct DungeonEntity *target)
|
||||
{
|
||||
sub_8077E4C(pokemon, target);
|
||||
HandleStairsOrb(pokemon, target);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
#include "status_checks_1.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/type.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_engine.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_movement.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_map_access.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_80521D0.h"
|
||||
@@ -21,6 +27,128 @@ extern u8 *gUnknown_80F8968[];
|
||||
extern u8 *gUnknown_80F8988[];
|
||||
extern u8 gUnknown_8106FA4[];
|
||||
|
||||
bool8 sub_80705F0(struct DungeonEntity *pokemon, struct Position *pos)
|
||||
{
|
||||
s32 crossableTerrain;
|
||||
struct MapTile *tile;
|
||||
u16 tileFlags;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
entityData = pokemon->entityData;
|
||||
tile = GetMapTile_1(pos->x, pos->y);
|
||||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->tileType & TILE_TYPE_MAP_EDGE) == 0)) &&
|
||||
((tile->pokemon == NULL) || ((GetEntityType(tile->pokemon) == ENTITY_POKEMON)))) {
|
||||
if (IsFixedDungeon() || (entityData->transformStatus != TRANSFORM_STATUS_MOBILE && !HasItem(pokemon, ITEM_ID_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityData->entityID);
|
||||
tileFlags = tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID);
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_ALL_TERRAIN_HIKER)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
|
||||
}
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_SUPER_MOBILE)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
|
||||
switch(crossableTerrain)
|
||||
{
|
||||
case CROSSABLE_TERRAIN_WALL:
|
||||
default:
|
||||
return FALSE;
|
||||
case CROSSABLE_TERRAIN_REGULAR:
|
||||
case CROSSABLE_TERRAIN_LIQUID:
|
||||
case CROSSABLE_TERRAIN_CREVICE:
|
||||
if(tileFlags != 0) return FALSE;
|
||||
}
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80706A4(struct DungeonEntity *pokemon, struct Position *pos)
|
||||
{
|
||||
s32 crossableTerrain;
|
||||
struct MapTile *tile;
|
||||
u16 tileFlags;
|
||||
struct DungeonEntityData *entityData;
|
||||
|
||||
entityData = pokemon->entityData;
|
||||
tile = GetMapTile_1(pos->x, pos->y);
|
||||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->tileType & TILE_TYPE_MAP_EDGE) == 0)) &&
|
||||
((tile->pokemon == NULL) || ((GetEntityType(tile->pokemon) == ENTITY_POKEMON) && (tile->pokemon->entityData == entityData)))) {
|
||||
if (IsFixedDungeon() || (entityData->transformStatus != TRANSFORM_STATUS_MOBILE && !HasItem(pokemon, ITEM_ID_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityData->entityID);
|
||||
tileFlags = tile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID);
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_ALL_TERRAIN_HIKER)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
|
||||
}
|
||||
if (HasIQSkill(pokemon, IQ_SKILL_SUPER_MOBILE)) {
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
switch(crossableTerrain)
|
||||
{
|
||||
case CROSSABLE_TERRAIN_LIQUID:
|
||||
if(tileFlags == TILE_TYPE_LIQUID) return FALSE;
|
||||
case CROSSABLE_TERRAIN_REGULAR:
|
||||
if(tileFlags == TILE_TYPE_FLOOR) return FALSE;
|
||||
break;
|
||||
case CROSSABLE_TERRAIN_WALL:
|
||||
default:
|
||||
return FALSE;
|
||||
case CROSSABLE_TERRAIN_CREVICE:
|
||||
if(tileFlags != 0) return FALSE;
|
||||
}
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 GetMovementSpeed(struct DungeonEntity *pokemon)
|
||||
{
|
||||
s32 index;
|
||||
s32 speed;
|
||||
struct DungeonEntityData * entityData;
|
||||
|
||||
entityData = pokemon->entityData;
|
||||
speed = 0;
|
||||
|
||||
for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++)
|
||||
{
|
||||
if (entityData->speedUpTurnsLeft[index + NUM_SPEED_TURN_COUNTERS] != 0) {
|
||||
speed--;
|
||||
}
|
||||
if (entityData->speedUpTurnsLeft[index] != 0) {
|
||||
speed++;
|
||||
}
|
||||
}
|
||||
|
||||
if (entityData->nonVolatileStatus == NON_VOLATILE_STATUS_PARALYZED) {
|
||||
speed--;
|
||||
}
|
||||
|
||||
speed += GetMoveSpeed(entityData->entityID);
|
||||
if ((HasType(pokemon, TYPE_ICE)) && (GetWeather(pokemon) == WEATHER_SNOW)) {
|
||||
speed++;
|
||||
}
|
||||
if (entityData->transformSpecies == SPECIES_DEOXYS_SPEED) {
|
||||
speed++;
|
||||
}
|
||||
if ((entityData->entityID == SPECIES_KECLEON) && entityData->isEnemy &&
|
||||
gDungeonGlobalData->unk66E) {
|
||||
speed++;
|
||||
}
|
||||
if (speed < 0) {
|
||||
speed = 0;
|
||||
}
|
||||
if (MAX_MOVEMENT_SPEED < speed) {
|
||||
speed = MAX_MOVEMENT_SPEED;
|
||||
}
|
||||
entityData->movementSpeed = speed;
|
||||
return speed;
|
||||
}
|
||||
|
||||
u8 sub_8070828(struct DungeonEntity *pokemon, bool8 displayMessage)
|
||||
{
|
||||
bool8 flag;
|
||||
|
||||
@@ -6,45 +6,7 @@
|
||||
#include "menu.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
struct unkSubStruct_203B2F8
|
||||
{
|
||||
struct WonderMail wonderMail;
|
||||
u8 *unk14;
|
||||
u8 *unk18;
|
||||
};
|
||||
|
||||
struct unkStruct_203B2F8
|
||||
{
|
||||
// size: 0x208
|
||||
s32 state; // state
|
||||
u32 unk4;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
struct unkSubStruct_203B2F8 *unkC;
|
||||
u8 unk10;
|
||||
u8 fill11[0x14 - 0x11];
|
||||
u32 unk14;
|
||||
u8 fill18[0x58 - 0x18];
|
||||
u8 unk58;
|
||||
u8 fill59[0x64 - 0x59];
|
||||
u8 *unk64;
|
||||
u32 unk68;
|
||||
u32 unk6C;
|
||||
u32 unk70;
|
||||
u32 unk74;
|
||||
u8 unk78[0xC8 - 0x78];
|
||||
u8 unkC8[4];
|
||||
u8 fillCC[0x118 - 0xCC];
|
||||
struct MenuItem unk118[8];
|
||||
struct MenuItem unk158[8];
|
||||
u16 unk198[8];
|
||||
struct UnkTextStruct2 unk1A8[4];
|
||||
u32 unk1E4;
|
||||
};
|
||||
extern struct unkStruct_203B2F8 *gUnknown_203B2F8;
|
||||
#include "wonder_mail_3.h"
|
||||
|
||||
const struct UnkTextStruct2 gUnknown_80DFDD4 =
|
||||
{
|
||||
@@ -141,7 +103,6 @@ ALIGNED(4) const u8 gUnknown_80E014C[] = "New Mail";
|
||||
ALIGNED(4) const u8 gUnknown_80E0158[] = "Old Mail";
|
||||
static const u8 wonder_mail_3_fill[] = "pksdir0";
|
||||
|
||||
|
||||
extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
|
||||
extern void sub_802D63C(void);
|
||||
extern void sub_802D5A4(void);
|
||||
@@ -185,8 +146,51 @@ extern void sub_8012D60(u8 *, struct MenuItem *, u32, u16 *, u32, u32);
|
||||
extern u8 *sub_8096DE8(void);
|
||||
extern void sub_8096A78(struct unkSubStruct_203B2F8 *);
|
||||
extern void sub_8014248(const char *text, u32, u32, struct MenuItem *r0, u32, u32, u32, u32, u32);
|
||||
struct unkStruct_803B344 *sub_803B344(u8);
|
||||
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
|
||||
extern void sub_8012BC4(u32 x, u32 y, u32, u32, u32, u32);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueTitle(void *);
|
||||
extern s32 sub_8013800(void *, u32);
|
||||
extern void sub_803B35C(void *, u32*);
|
||||
extern u8 gUnknown_80DFDBC[];
|
||||
|
||||
|
||||
void sub_802CFD0(void)
|
||||
{
|
||||
struct unkStruct_802C39C local;
|
||||
struct unkStruct_803B344 *iVar1;
|
||||
s32 r5;
|
||||
s32 r4;
|
||||
|
||||
sub_8008C54(gUnknown_203B2F4->unk34);
|
||||
sub_80073B8(gUnknown_203B2F4->unk34);
|
||||
r5 = r4 = gUnknown_203B2F4->unk1E * 8 + 10;
|
||||
xxx_call_draw_string(r5,0,gUnknown_80DFDBC,gUnknown_203B2F4->unk34,0); // RESCUE EVENT
|
||||
r4 -= 6;
|
||||
r5 = r4 + (gUnknown_203B2F4->unk9C[2] * 8);
|
||||
sub_8012BC4(r5,0,gUnknown_203B2F4->unk1E + 1,2,7,gUnknown_203B2F4->unk34);
|
||||
|
||||
r5 = 0;
|
||||
|
||||
if(r5 < gUnknown_203B2F4->unk1A)
|
||||
{
|
||||
while(r5 < gUnknown_203B2F4->unk1A) {
|
||||
iVar1 = sub_803B344(gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C + r5);
|
||||
local.unk0[0] = gUnknown_203B2F4->unk34;
|
||||
local.unk4C = sub_8013800(gUnknown_203B2F4,r5);
|
||||
sub_803B35C(iVar1,local.unk0);
|
||||
local.unk3C[11] = 1;
|
||||
local.unk50[0] = iVar1->unk14;
|
||||
CreateRescueTitle(&local);
|
||||
r5++;
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B2F4->unk34);
|
||||
}
|
||||
|
||||
u32 sub_802D098(struct unkSubStruct_203B2F8 *param_1)
|
||||
{
|
||||
gUnknown_203B2F8 = MemoryAlloc(0x208,8);
|
||||
@@ -324,23 +328,23 @@ void sub_802D2A8(void)
|
||||
sub_8014248(gUnknown_80DFE4C,0,gUnknown_203B2F8->unk70,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DFE9C,0,0,0x101);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DFED0,0,0,0x101);
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DFF2C,0,0,0x101);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80DFFA4,0,0,0x101);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2F8->unk4 = 0xc;
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
sub_80141B4(gUnknown_80E0010,0,0,0x101);
|
||||
break;
|
||||
case 8:
|
||||
@@ -352,7 +356,7 @@ void sub_802D2A8(void)
|
||||
MemoryCopy8(sub_8096DD8(),gUnknown_203B2F8->unkC->unk14,0x28);
|
||||
MemoryCopy8(sub_8096DE8(),gUnknown_203B2F8->unkC->unk18,0x78);
|
||||
}
|
||||
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon)
|
||||
switch(gUnknown_203B2F8->unkC->wonderMail.dungeon.dungeonIndex)
|
||||
{
|
||||
// NOTE: subtract 1 from each of the case as the input??
|
||||
case DUNGEON_ODDITY_CAVE: // 0x2B
|
||||
@@ -368,7 +372,7 @@ void sub_802D2A8(void)
|
||||
sub_8097418(0x2D, 1);
|
||||
break;
|
||||
}
|
||||
gUnknown_203B2F8->unk4 = 2;
|
||||
gUnknown_203B2F8->fallbackState = 2;
|
||||
sub_80141B4(gUnknown_80E0074,0,0,0x101);
|
||||
break;
|
||||
case 9:
|
||||
@@ -376,7 +380,7 @@ void sub_802D2A8(void)
|
||||
sub_8014248(gUnknown_80E0094,0,gUnknown_203B2F8->unk74,gUnknown_203B2F8->unk158,0,4,0,0,0);
|
||||
break;
|
||||
case 10:
|
||||
gUnknown_203B2F8->unk4 = 0xb;
|
||||
gUnknown_203B2F8->fallbackState = 0xb;
|
||||
sub_80141B4(gUnknown_80E0108,0,0,0x101);
|
||||
break;
|
||||
case 0xb:
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
#include "input.h"
|
||||
#include "item.h"
|
||||
#include "memory.h"
|
||||
#include "menu.h"
|
||||
#include "text.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "wonder_mail_3.h"
|
||||
#include "code_80958E8.h"
|
||||
|
||||
struct unkStruct_203B2FC
|
||||
{
|
||||
@@ -119,6 +122,13 @@ struct WonderMail *GetJobSlotInfo(u8);
|
||||
extern void sub_8096AF8(u8 *, u32, u32);
|
||||
extern void sub_8096EEC(void);
|
||||
extern void sub_803C21C(struct WonderMail *, u32 *);
|
||||
extern u8 sub_8012FD8(u8 *);
|
||||
extern void sub_8013114(u8 *r0, s32 *r1);
|
||||
extern u32 sub_802C598(s32);
|
||||
extern void sub_802C688(void);
|
||||
extern void sub_8096C80(void);
|
||||
extern void sub_8096C3C(u8);
|
||||
extern u8 sub_802C620(void);
|
||||
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
@@ -126,6 +136,207 @@ void sub_802DF6C(void);
|
||||
void sub_802DF88(void);
|
||||
void sub_802DF14(void);
|
||||
void sub_801317C(void);
|
||||
void sub_802D1A0(u32);
|
||||
u32 sub_802DEE0(void);
|
||||
void sub_802DF24(void);
|
||||
|
||||
void sub_802D7D0(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
if (menuAction != 1) {
|
||||
gUnknown_203B2F8->unk70 = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
case 3:
|
||||
sub_802D1A0(2);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->fallbackState = 1;
|
||||
sub_802D1A0(0x10);
|
||||
break;
|
||||
case 4:
|
||||
case 2:
|
||||
default:
|
||||
sub_802D1A0(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802D82C(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
if (sub_80144A4(&menuAction) == 0) {
|
||||
if (menuAction != 1) {
|
||||
gUnknown_203B2F8->unk74 = menuAction;
|
||||
}
|
||||
switch(menuAction) {
|
||||
case 3:
|
||||
sub_8096C3C(gUnknown_203B2F8->unk10);
|
||||
sub_8096C80();
|
||||
sub_802D1A0(8);
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_203B2F8->fallbackState = 9;
|
||||
sub_802D1A0(0x10);
|
||||
break;
|
||||
case 7:
|
||||
gUnknown_203B2F8->fallbackState = 9;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
default:
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
sub_802D1A0(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802D8CC(void)
|
||||
{
|
||||
switch(sub_802C598(1)) {
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_203B2F8->unk10 = sub_802C620();
|
||||
sub_802D1A0(0xd);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2F8->unk10 = sub_802C620();
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
case 2:
|
||||
sub_802C688();
|
||||
sub_802D1A0(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802D940(void)
|
||||
{
|
||||
struct WonderMail *mail;
|
||||
s32 menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
sub_802C598(0);
|
||||
if ((sub_8012FD8(gUnknown_203B2F8->unk78) == 0) && (sub_8013114(gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) {
|
||||
gUnknown_203B2F8->unk6C = menuAction;
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
{
|
||||
case 2:
|
||||
if ((gUnknown_203B2F8->unk9 != 0) && (((mail = &gUnknown_203B490->unkF0[gUnknown_203B2F8->unk10]), mail->mailType > 5) && (gUnknown_203B2F8->unkA == mail->dungeon.dungeonIndex)))
|
||||
{
|
||||
sub_802D1A0(0x7);
|
||||
}
|
||||
else {
|
||||
sub_802D1A0(0xE);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
gUnknown_203B2F8->fallbackState = 0xc;
|
||||
sub_802D1A0(0xf);
|
||||
break;
|
||||
case 1:
|
||||
sub_802D1A0(0xc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802D9F0(void)
|
||||
{
|
||||
s32 menuAction;
|
||||
|
||||
menuAction = 0;
|
||||
sub_802C598(0);
|
||||
sub_8012FD8(gUnknown_203B2F8->unk78);
|
||||
if (sub_8012FD8(gUnknown_203B2F8->unkC8) == 0) {
|
||||
sub_8013114(gUnknown_203B2F8->unkC8,&menuAction);
|
||||
}
|
||||
|
||||
switch(menuAction)
|
||||
{
|
||||
case 1:
|
||||
case 4:
|
||||
sub_802D1A0(0xc);
|
||||
break;
|
||||
case 3:
|
||||
sub_802C688();
|
||||
sub_8096C3C(gUnknown_203B2F8->unk10);
|
||||
sub_8096C80();
|
||||
sub_802D1A0(8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DA60(void)
|
||||
{
|
||||
switch(sub_802DEE0())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802DF24();
|
||||
sub_802D1A0(gUnknown_203B2F8->fallbackState);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DA84(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802D1A0(gUnknown_203B2F8->fallbackState);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_802DAA8(void)
|
||||
{
|
||||
struct WonderMail *mail;
|
||||
|
||||
mail = GetJobSlotInfo(gUnknown_203B2F8->unk10);
|
||||
if (gUnknown_203B2F8->unk9 == 0) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
if ( (mail->mailType != WONDER_MAIL_TYPE_THANK_YOU) && (gUnknown_203B2F8->unkA == mail->dungeon.dungeonIndex)) return 0;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_802DADC(void)
|
||||
{
|
||||
u8 mailType;
|
||||
struct WonderMail *mail;
|
||||
s32 counter;
|
||||
|
||||
if (gUnknown_203B2F8->unk9 == 0) {
|
||||
_0802DAE8:
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
for( mail = &gUnknown_203B490->unkF0[0], counter = 0; counter < 8; mail++, counter++)
|
||||
{
|
||||
mailType = mail->mailType;
|
||||
if (((mailType == 0) || (mailType == WONDER_MAIL_TYPE_THANK_YOU)) ||
|
||||
((WONDER_MAIL_TYPE_THANK_YOU < mailType && (gUnknown_203B2F8->unkA != mail->dungeon.dungeonIndex)))) goto _0802DAE8;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: merge above with wonder_mail_3.c
|
||||
|
||||
bool8 sub_802DB28(u8 jobSlot, u8 param_2)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user