mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-26 18:55:56 -05:00
No wifi + 2 days on train = more decomp (#80)
* No wifi + 2 days on train = more decomp * layin some more * one func, one file
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_801B374
|
||||
sub_801B374:
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _0801B3A8
|
||||
ldr r4, [r1]
|
||||
bl GetItemMove
|
||||
lsls r0, 16
|
||||
lsrs r6, r0, 16
|
||||
movs r5, 0
|
||||
_0801B388:
|
||||
ldrh r0, [r4]
|
||||
lsrs r0, 1
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0801B3AC
|
||||
movs r0, 0x8
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r0, r6, 0
|
||||
bl CanMonLearnMove
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801B3AC
|
||||
movs r0, 0
|
||||
b _0801B3BA
|
||||
.align 2, 0
|
||||
_0801B3A8: .4byte gRecruitedPokemonRef
|
||||
_0801B3AC:
|
||||
adds r5, 0x1
|
||||
adds r4, 0x58
|
||||
movs r0, 0xCE
|
||||
lsls r0, 1
|
||||
cmp r5, r0
|
||||
ble _0801B388
|
||||
movs r0, 0x1
|
||||
_0801B3BA:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801B374
|
||||
|
||||
.align 2,0
|
||||
@@ -465,7 +465,7 @@ sub_801BEEC:
|
||||
lsls r0, 16
|
||||
asrs r5, r0, 16
|
||||
adds r0, r5, 0
|
||||
bl sub_801C5F0
|
||||
bl HasNoAvailIQSkills
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
cmp r6, 0
|
||||
@@ -854,7 +854,7 @@ _0801C1EA:
|
||||
adds r0, 0x20
|
||||
adds r1, 0x28
|
||||
ldrb r1, [r1]
|
||||
bl sub_808EBF4
|
||||
bl ToggleIQSkill
|
||||
movs r0, 0x1
|
||||
bl sub_801BFB4
|
||||
b _0801C21E
|
||||
@@ -899,7 +899,7 @@ sub_801C244:
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
adds r4, r0, 0
|
||||
bl sub_801C5F0
|
||||
bl HasNoAvailIQSkills
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801C25E
|
||||
@@ -1349,33 +1349,4 @@ _0801C5E8: .4byte gUnknown_80DBE1C
|
||||
_0801C5EC: .4byte gUnknown_203B23C
|
||||
thumb_func_end sub_801C4C8
|
||||
|
||||
thumb_func_start sub_801C5F0
|
||||
sub_801C5F0:
|
||||
push {lr}
|
||||
sub sp, 0x18
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
ldr r2, _0801C614
|
||||
movs r1, 0x58
|
||||
muls r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
movs r2, 0x14
|
||||
ldrsh r1, [r0, r2]
|
||||
mov r0, sp
|
||||
bl GetNumAvailableIQSkills
|
||||
cmp r0, 0
|
||||
beq _0801C618
|
||||
movs r0, 0
|
||||
b _0801C61A
|
||||
.align 2, 0
|
||||
_0801C614: .4byte gRecruitedPokemonRef
|
||||
_0801C618:
|
||||
movs r0, 0x1
|
||||
_0801C61A:
|
||||
add sp, 0x18
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_801C5F0
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -445,7 +445,7 @@ _0804049E:
|
||||
beq _080404C4
|
||||
_080404B2:
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
ldr r1, _080404FC
|
||||
ldrb r0, [r0]
|
||||
adds r0, r1
|
||||
|
||||
@@ -2422,7 +2422,7 @@ _08043E6E:
|
||||
cmp r0, 0x2
|
||||
bne _08043EA0
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
adds r1, r0, 0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x1B
|
||||
|
||||
@@ -690,8 +690,8 @@ sub_80528F4:
|
||||
bx r0
|
||||
thumb_func_end sub_80528F4
|
||||
|
||||
thumb_func_start sub_8052910
|
||||
sub_8052910:
|
||||
thumb_func_start DisplayDungeonDialogue
|
||||
DisplayDungeonDialogue:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
@@ -987,7 +987,7 @@ _08052B72:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08052B88: .4byte gUnknown_80F7AEA
|
||||
thumb_func_end sub_8052910
|
||||
thumb_func_end DisplayDungeonDialogue
|
||||
|
||||
thumb_func_start sub_8052B8C
|
||||
sub_8052B8C:
|
||||
@@ -4954,7 +4954,7 @@ _08054F40:
|
||||
adds r1, r5, 0
|
||||
mov r2, r8
|
||||
mov r3, r9
|
||||
bl sub_805BEA0
|
||||
bl LuminousOrbAction
|
||||
b _080554BA
|
||||
_08054F4E:
|
||||
adds r0, r7, 0
|
||||
|
||||
@@ -9158,14 +9158,14 @@ sub_805BE90:
|
||||
bx r1
|
||||
thumb_func_end sub_805BE90
|
||||
|
||||
thumb_func_start sub_805BEA0
|
||||
sub_805BEA0:
|
||||
thumb_func_start LuminousOrbAction
|
||||
LuminousOrbAction:
|
||||
push {lr}
|
||||
bl sub_804002C
|
||||
bl HandleLuminousOrbAction
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805BEA0
|
||||
thumb_func_end LuminousOrbAction
|
||||
|
||||
thumb_func_start sub_805BEAC
|
||||
sub_805BEAC:
|
||||
@@ -9353,7 +9353,7 @@ _0805BFF0:
|
||||
cmp r0, 0x2
|
||||
bne _0805C028
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x11
|
||||
beq _0805C028
|
||||
@@ -14721,7 +14721,7 @@ _0805EEB8:
|
||||
.4byte _0805EF52
|
||||
_0805EED0:
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
adds r6, r0, 0
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
@@ -19934,7 +19934,7 @@ _08061994:
|
||||
bl sub_8083654
|
||||
ldrb r1, [r0, 0x9]
|
||||
add r0, sp, 0x4
|
||||
bl sub_808EB0C
|
||||
bl GetAvailTacticsforLvl
|
||||
movs r6, 0x1
|
||||
negs r6, r6
|
||||
movs r1, 0
|
||||
@@ -20947,7 +20947,7 @@ _08062198:
|
||||
ldr r0, [sp, 0x11C]
|
||||
adds r0, 0x8C
|
||||
adds r1, r6, 0
|
||||
bl sub_808EBF4
|
||||
bl ToggleIQSkill
|
||||
b _080621BA
|
||||
.align 2, 0
|
||||
_080621AC: .4byte 0x00000133
|
||||
@@ -25618,7 +25618,7 @@ _080646C4:
|
||||
movs r1, 0
|
||||
bl sub_803ECB4
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
adds r4, r0, 0
|
||||
ldrb r1, [r4]
|
||||
mov r0, r10
|
||||
|
||||
@@ -5,63 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start CannotAttack
|
||||
CannotAttack:
|
||||
push {lr}
|
||||
adds r3, r0, 0
|
||||
lsls r1, 24
|
||||
ldr r2, [r3, 0x70]
|
||||
cmp r1, 0
|
||||
bne _08070D22
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xA8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
beq _08070D22
|
||||
cmp r0, 0x4
|
||||
beq _08070D22
|
||||
cmp r0, 0
|
||||
bne _08070D64
|
||||
_08070D22:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xB0
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _08070D64
|
||||
cmp r0, 0x3
|
||||
beq _08070D64
|
||||
cmp r0, 0x4
|
||||
beq _08070D64
|
||||
cmp r0, 0x6
|
||||
beq _08070D64
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _08070D64
|
||||
cmp r0, 0x3
|
||||
beq _08070D64
|
||||
cmp r0, 0x7
|
||||
beq _08070D64
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xAC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
beq _08070D64
|
||||
adds r0, r3, 0
|
||||
bl ShouldAvoidEnemies
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070D64
|
||||
movs r0, 0
|
||||
b _08070D66
|
||||
_08070D64:
|
||||
movs r0, 0x1
|
||||
_08070D66:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end CannotAttack
|
||||
|
||||
thumb_func_start CannotMoveForward
|
||||
CannotMoveForward:
|
||||
push {r4-r6,lr}
|
||||
@@ -972,26 +915,4 @@ _0807146A:
|
||||
bx r1
|
||||
thumb_func_end IsAtJunction
|
||||
|
||||
thumb_func_start ShouldAvoidFirstHit
|
||||
ShouldAvoidFirstHit:
|
||||
push {r4,lr}
|
||||
lsls r1, 24
|
||||
lsrs r4, r1, 24
|
||||
movs r1, 0x3
|
||||
bl HasTactic
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807148A
|
||||
cmp r4, 0
|
||||
beq _0807148A
|
||||
movs r0, 0x1
|
||||
b _0807148C
|
||||
_0807148A:
|
||||
movs r0, 0
|
||||
_0807148C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end ShouldAvoidFirstHit
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -5,29 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ShouldAvoidEnemies_2
|
||||
ShouldAvoidEnemies_2:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r5, r1, 24
|
||||
bl ShouldAvoidEnemies
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807152E
|
||||
movs r0, 0
|
||||
b _08071538
|
||||
_0807152E:
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl CheckRunAwayVisualFlag
|
||||
movs r0, 0x1
|
||||
_08071538:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end ShouldAvoidEnemies_2
|
||||
|
||||
thumb_func_start CheckRunAwayVisualFlag
|
||||
CheckRunAwayVisualFlag:
|
||||
push {r4-r7,lr}
|
||||
@@ -269,177 +246,4 @@ _080716E4:
|
||||
bx r1
|
||||
thumb_func_end sub_807167C
|
||||
|
||||
thumb_func_start sub_80716E8
|
||||
sub_80716E8:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xC4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08071720
|
||||
cmp r2, 0
|
||||
beq _08071714
|
||||
ldr r0, _08071718
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _0807171C
|
||||
ldr r2, [r0]
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
_08071714:
|
||||
movs r0, 0x1
|
||||
b _08071722
|
||||
.align 2, 0
|
||||
_08071718: .4byte gAvailablePokemonNames
|
||||
_0807171C: .4byte gUnknown_80FC2FC
|
||||
_08071720:
|
||||
movs r0, 0
|
||||
_08071722:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80716E8
|
||||
|
||||
thumb_func_start sub_8071728
|
||||
sub_8071728:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
adds r5, r2, 0
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0xC4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xE
|
||||
bne _08071758
|
||||
cmp r2, 0
|
||||
beq _0807178E
|
||||
ldr r0, _08071750
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08071754
|
||||
b _08071784
|
||||
.align 2, 0
|
||||
_08071750: .4byte gAvailablePokemonNames
|
||||
_08071754: .4byte gUnknown_80FC31C
|
||||
_08071758:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xF
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08071774
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x18
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807179C
|
||||
_08071774:
|
||||
cmp r5, 0
|
||||
beq _0807178E
|
||||
ldr r0, _08071794
|
||||
adds r1, r4, 0
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08071798
|
||||
_08071784:
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80522F4
|
||||
_0807178E:
|
||||
movs r0, 0x1
|
||||
b _0807179E
|
||||
.align 2, 0
|
||||
_08071794: .4byte gAvailablePokemonNames
|
||||
_08071798: .4byte gUnknown_80FCEFC
|
||||
_0807179C:
|
||||
movs r0, 0
|
||||
_0807179E:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8071728
|
||||
|
||||
thumb_func_start sub_80717A4
|
||||
sub_80717A4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
mov r8, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
mov r9, r1
|
||||
ldr r6, [r0, 0x70]
|
||||
adds r0, r6, 0
|
||||
adds r0, 0xA8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _080717CE
|
||||
cmp r0, 0x5
|
||||
beq _080717CE
|
||||
cmp r0, 0x3
|
||||
beq _080717CE
|
||||
b _08071816
|
||||
_080717CA:
|
||||
movs r0, 0x1
|
||||
b _08071818
|
||||
_080717CE:
|
||||
movs r7, 0
|
||||
movs r0, 0x8C
|
||||
lsls r0, 1
|
||||
adds r4, r6, r0
|
||||
adds r5, r4, 0
|
||||
_080717D8:
|
||||
ldrb r1, [r4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0807180C
|
||||
ldrb r0, [r6, 0x7]
|
||||
cmp r0, 0
|
||||
bne _080717F0
|
||||
movs r0, 0x4
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0807180C
|
||||
_080717F0:
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_805744C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807180C
|
||||
ldrb r0, [r4, 0x4]
|
||||
cmp r0, 0
|
||||
beq _0807180C
|
||||
ldrh r0, [r4, 0x2]
|
||||
cmp r0, r9
|
||||
beq _080717CA
|
||||
_0807180C:
|
||||
adds r4, 0x8
|
||||
adds r5, 0x8
|
||||
adds r7, 0x1
|
||||
cmp r7, 0x3
|
||||
ble _080717D8
|
||||
_08071816:
|
||||
movs r0, 0
|
||||
_08071818:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80717A4
|
||||
|
||||
.align 2, 0
|
||||
@@ -721,7 +721,7 @@ _08071E4C:
|
||||
beq _08071E68
|
||||
ldrb r1, [r6, 0x9]
|
||||
add r0, sp, 0x74
|
||||
bl sub_808EB48
|
||||
bl GetAvailTacticsforLvl_Bool
|
||||
_08071E68:
|
||||
movs r0, 0x10
|
||||
ldrsh r2, [r6, r0]
|
||||
@@ -863,7 +863,7 @@ _08071F7A:
|
||||
beq _08071FCA
|
||||
ldrb r1, [r6, 0x9]
|
||||
add r0, sp, 0x80
|
||||
bl sub_808EB48
|
||||
bl GetAvailTacticsforLvl_Bool
|
||||
movs r4, 0
|
||||
add r7, sp, 0x74
|
||||
add r5, sp, 0x80
|
||||
@@ -958,7 +958,7 @@ _08072036:
|
||||
beq _0807204C
|
||||
add r0, sp, 0xC
|
||||
ldrb r1, [r5, 0x9]
|
||||
bl sub_808EB48
|
||||
bl GetAvailTacticsforLvl_Bool
|
||||
_0807204C:
|
||||
movs r0, 0x10
|
||||
ldrsh r2, [r5, r0]
|
||||
@@ -1045,7 +1045,7 @@ _080720E6:
|
||||
add r4, sp, 0x18
|
||||
ldrb r1, [r5, 0x9]
|
||||
adds r0, r4, 0
|
||||
bl sub_808EB48
|
||||
bl GetAvailTacticsforLvl_Bool
|
||||
movs r6, 0
|
||||
add r7, sp, 0xC
|
||||
_080720FA:
|
||||
@@ -3694,45 +3694,4 @@ _08073604: .4byte gUnknown_80FCF50
|
||||
_08073608: .4byte 0x00000165
|
||||
thumb_func_end sub_807348C
|
||||
|
||||
thumb_func_start sub_807360C
|
||||
sub_807360C:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
_08073610:
|
||||
ldr r0, _08073650
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08073654
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08073644
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r2, 0xA9
|
||||
lsls r2, 1
|
||||
adds r1, r0, r2
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0
|
||||
beq _08073644
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8077274
|
||||
_08073644:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x13
|
||||
ble _08073610
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08073650: .4byte gDungeonGlobalData
|
||||
_08073654: .4byte 0x000135cc
|
||||
thumb_func_end sub_807360C
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -3697,7 +3697,7 @@ _08075770:
|
||||
.4byte _0807580C
|
||||
_08075788:
|
||||
adds r0, r5, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
adds r7, r0, 0
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
@@ -3772,185 +3772,4 @@ _0807580C:
|
||||
bx r0
|
||||
thumb_func_end sub_8075708
|
||||
|
||||
thumb_func_start sub_8075818
|
||||
sub_8075818:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r6, [r4, 0x70]
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080758F6
|
||||
adds r0, r4, 0
|
||||
bl sub_8045128
|
||||
adds r5, r0, 0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xD
|
||||
bl HasIQSkill
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08075848
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080758F2
|
||||
_08075848:
|
||||
ldr r4, [r5, 0x14]
|
||||
cmp r4, 0
|
||||
beq _080758F6
|
||||
adds r0, r4, 0
|
||||
bl GetEntityType
|
||||
cmp r0, 0x5
|
||||
bhi _080758F6
|
||||
lsls r0, 2
|
||||
ldr r1, _08075864
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08075864: .4byte _08075868
|
||||
.align 2, 0
|
||||
_08075868:
|
||||
.4byte _080758F6
|
||||
.4byte _080758F6
|
||||
.4byte _08075880
|
||||
.4byte _080758BE
|
||||
.4byte _080758F6
|
||||
.4byte _080758F6
|
||||
_08075880:
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
movs r1, 0
|
||||
ldrb r0, [r0, 0x1]
|
||||
cmp r0, 0
|
||||
bne _080758A0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080758B8
|
||||
ldrb r0, [r6, 0x6]
|
||||
cmp r0, 0
|
||||
bne _080758B8
|
||||
b _080758F2
|
||||
_080758A0:
|
||||
cmp r0, 0x1
|
||||
bne _080758AC
|
||||
ldrb r0, [r6, 0x6]
|
||||
cmp r0, 0
|
||||
beq _080758B8
|
||||
b _080758F2
|
||||
_080758AC:
|
||||
cmp r0, 0x2
|
||||
bne _080758B8
|
||||
ldrb r0, [r6, 0x6]
|
||||
cmp r0, 0
|
||||
bne _080758B8
|
||||
movs r1, 0x1
|
||||
_080758B8:
|
||||
cmp r1, 0
|
||||
beq _080758F6
|
||||
b _080758F2
|
||||
_080758BE:
|
||||
ldrb r0, [r6, 0x7]
|
||||
cmp r0, 0
|
||||
bne _080758F6
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x60
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080758F6
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0x3
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080758E2
|
||||
ldrb r0, [r6, 0x6]
|
||||
cmp r0, 0
|
||||
bne _080758F6
|
||||
_080758E2:
|
||||
adds r0, r4, 0
|
||||
bl GetItemData
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080758F6
|
||||
_080758F2:
|
||||
movs r0, 0x1
|
||||
b _080758F8
|
||||
_080758F6:
|
||||
movs r0, 0
|
||||
_080758F8:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8075818
|
||||
|
||||
thumb_func_start sub_8075900
|
||||
sub_8075900:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807597A
|
||||
ldr r0, [r4, 0x70]
|
||||
ldrb r0, [r0, 0x6]
|
||||
cmp r0, 0
|
||||
bne _0807597A
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807597A
|
||||
ldr r5, _08075980
|
||||
ldr r0, [r5]
|
||||
ldr r1, _08075984
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0807597A
|
||||
adds r0, r4, 0
|
||||
bl sub_8045128
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0807597A
|
||||
bl GetLeaderEntity
|
||||
ldr r1, _08075988
|
||||
ldr r1, [r1]
|
||||
bl SendMessage
|
||||
ldr r0, [r5]
|
||||
ldr r1, _0807598C
|
||||
adds r0, r1
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_807AB38
|
||||
movs r0, 0
|
||||
bl sub_8041888
|
||||
adds r0, r4, 0x4
|
||||
bl sub_803F428
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807597A
|
||||
movs r0, 0x78
|
||||
movs r1, 0x39
|
||||
bl sub_803E708
|
||||
_0807597A:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08075980: .4byte gDungeonGlobalData
|
||||
_08075984: .4byte 0x00000671
|
||||
_08075988: .4byte gUnknown_80FE308
|
||||
_0807598C: .4byte 0x00000672
|
||||
thumb_func_end sub_8075900
|
||||
.align 2,0
|
||||
|
||||
@@ -5,48 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8075BA4
|
||||
sub_8075BA4:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r1, 24
|
||||
ldr r4, [r5, 0x70]
|
||||
cmp r1, 0
|
||||
beq _08075BD0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08075BD0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x46
|
||||
ldrb r1, [r0]
|
||||
adds r1, 0x4
|
||||
movs r2, 0x7
|
||||
ands r1, r2
|
||||
strb r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl TargetTileInFront
|
||||
b _08075BEC
|
||||
_08075BD0:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08075BEC
|
||||
movs r0, 0x8
|
||||
bl DungeonRandomCapped
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x46
|
||||
strb r0, [r1]
|
||||
adds r0, r5, 0
|
||||
bl TargetTileInFront
|
||||
_08075BEC:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8075BA4
|
||||
|
||||
thumb_func_start sub_8075BF4
|
||||
sub_8075BF4:
|
||||
push {r4-r7,lr}
|
||||
@@ -20350,10 +20308,10 @@ _0807FD12:
|
||||
cmp r0, 0x2
|
||||
bne _0807FD6E
|
||||
ldr r0, [r6, 0x14]
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
strb r5, [r0]
|
||||
ldr r0, [r6, 0x14]
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
mov r1, r8
|
||||
strb r1, [r0, 0x1]
|
||||
ldr r0, [r6, 0x14]
|
||||
@@ -20566,7 +20524,7 @@ _0807FECE:
|
||||
b _080801B4
|
||||
_0807FED8:
|
||||
mov r0, r10
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
mov r8, r0
|
||||
ldr r0, _0807FF58
|
||||
mov r2, r8
|
||||
@@ -22129,7 +22087,7 @@ sub_8080B00:
|
||||
cmp r0, 0x2
|
||||
bne _08080B26
|
||||
adds r0, r4, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
strb r5, [r0]
|
||||
_08080B26:
|
||||
bl sub_8049ED4
|
||||
@@ -22305,7 +22263,7 @@ _08080C6A:
|
||||
cmp r0, 0x2
|
||||
bne _08080CC8
|
||||
adds r0, r5, 0
|
||||
bl sub_8045104
|
||||
bl GetTrapData
|
||||
adds r4, r0, 0
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
|
||||
@@ -798,251 +798,4 @@ _08085858: .4byte gAdjacentTileOffsets
|
||||
_0808585C: .4byte 0x000135cc
|
||||
thumb_func_end sub_80857B8
|
||||
|
||||
thumb_func_start sub_8085860
|
||||
sub_8085860:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r0, 0
|
||||
bl sub_803F4A0
|
||||
lsls r0, r4, 1
|
||||
adds r0, r4
|
||||
lsls r0, 11
|
||||
movs r1, 0xC0
|
||||
lsls r1, 4
|
||||
adds r0, r1
|
||||
lsls r1, r5, 1
|
||||
adds r1, r5
|
||||
lsls r1, 11
|
||||
movs r2, 0x80
|
||||
lsls r2, 5
|
||||
adds r1, r2
|
||||
bl sub_803F878
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8085860
|
||||
|
||||
thumb_func_start sub_8085890
|
||||
sub_8085890:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r0, 0
|
||||
bl sub_803F4A0
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_803F878
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8085890
|
||||
|
||||
thumb_func_start sub_80858AC
|
||||
sub_80858AC:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r7, r0, 0
|
||||
adds r4, r1, 0
|
||||
bl sub_803F994
|
||||
adds r6, r0, 0
|
||||
bl sub_803F9B0
|
||||
adds r5, r0, 0
|
||||
ldr r0, [r7]
|
||||
subs r0, r6
|
||||
adds r1, r4, 0
|
||||
bl __divsi3
|
||||
mov r9, r0
|
||||
ldr r0, [r7, 0x4]
|
||||
subs r0, r5
|
||||
adds r1, r4, 0
|
||||
bl __divsi3
|
||||
mov r8, r0
|
||||
movs r0, 0
|
||||
bl sub_803F4A0
|
||||
cmp r4, 0
|
||||
ble _080858FE
|
||||
_080858E6:
|
||||
add r6, r9
|
||||
add r5, r8
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_803F878
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bne _080858E6
|
||||
_080858FE:
|
||||
ldr r0, [r7]
|
||||
ldr r1, [r7, 0x4]
|
||||
bl sub_803F878
|
||||
movs r0, 0x46
|
||||
bl sub_803E46C
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80858AC
|
||||
|
||||
thumb_func_start SetFacingDirection
|
||||
SetFacingDirection:
|
||||
push {r4,lr}
|
||||
ldr r3, [r0, 0x70]
|
||||
movs r4, 0x7
|
||||
adds r2, r1, 0
|
||||
ands r2, r4
|
||||
adds r3, 0x46
|
||||
strb r2, [r3]
|
||||
bl sub_806CE68
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end SetFacingDirection
|
||||
|
||||
thumb_func_start sub_8085930
|
||||
sub_8085930:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
movs r5, 0
|
||||
movs r0, 0x7
|
||||
adds r7, r6, 0
|
||||
ands r7, r0
|
||||
_0808593C:
|
||||
ldr r0, _0808596C
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08085970
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08085982
|
||||
cmp r6, 0x7
|
||||
ble _08085974
|
||||
movs r0, 0x8
|
||||
bl RandomCapped
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_806CE68
|
||||
b _08085982
|
||||
.align 2, 0
|
||||
_0808596C: .4byte gDungeonGlobalData
|
||||
_08085970: .4byte 0x0001357c
|
||||
_08085974:
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0x46
|
||||
strb r7, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_806CE68
|
||||
_08085982:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0x3
|
||||
ble _0808593C
|
||||
movs r5, 0
|
||||
movs r0, 0x7
|
||||
adds r7, r6, 0
|
||||
ands r7, r0
|
||||
_08085990:
|
||||
ldr r0, _080859CC
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _080859D0
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080859E2
|
||||
ldr r1, [r4, 0x70]
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _080859E2
|
||||
cmp r6, 0x7
|
||||
ble _080859D4
|
||||
movs r0, 0x8
|
||||
bl RandomCapped
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_806CE68
|
||||
b _080859E2
|
||||
.align 2, 0
|
||||
_080859CC: .4byte gDungeonGlobalData
|
||||
_080859D0: .4byte 0x0001358c
|
||||
_080859D4:
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x46
|
||||
strb r7, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_806CE68
|
||||
_080859E2:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _08085990
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8085930
|
||||
|
||||
thumb_func_start sub_80859F0
|
||||
sub_80859F0:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
movs r5, 0
|
||||
movs r0, 0x7
|
||||
adds r7, r6, 0
|
||||
ands r7, r0
|
||||
_080859FC:
|
||||
ldr r0, _08085A2C
|
||||
ldr r0, [r0]
|
||||
lsls r1, r5, 2
|
||||
ldr r2, _08085A30
|
||||
adds r0, r2
|
||||
adds r0, r1
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08085A42
|
||||
cmp r6, 0x7
|
||||
ble _08085A34
|
||||
movs r0, 0x8
|
||||
bl RandomCapped
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
bl sub_806CE68
|
||||
b _08085A42
|
||||
.align 2, 0
|
||||
_08085A2C: .4byte gDungeonGlobalData
|
||||
_08085A30: .4byte 0x0001358c
|
||||
_08085A34:
|
||||
ldr r0, [r4, 0x70]
|
||||
adds r0, 0x46
|
||||
strb r7, [r0]
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
bl sub_806CE68
|
||||
_08085A42:
|
||||
adds r5, 0x1
|
||||
cmp r5, 0xF
|
||||
ble _080859FC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80859F0
|
||||
|
||||
.align 2, 0
|
||||
|
||||
@@ -68,12 +68,12 @@ TeamMeaniesPreFightDialogue:
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087048
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808704C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -81,27 +81,27 @@ TeamMeaniesPreFightDialogue:
|
||||
movs r0, 0xA
|
||||
bl sub_8083E88
|
||||
ldr r0, _08087050
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087054
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087058
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808705C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087060
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -131,12 +131,12 @@ TeamMeaniesReFightDialogue:
|
||||
adds r5, r0, 0
|
||||
bl sub_8086448
|
||||
ldr r0, _08087118
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808711C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -145,12 +145,12 @@ TeamMeaniesReFightDialogue:
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087120
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087124
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -177,9 +177,9 @@ TeamMeaniesReFightDialogue:
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _08087128
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
ldr r0, _0808712C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -493,7 +493,7 @@ ZapdosPreFightDialogue:
|
||||
movs r3, 0x6
|
||||
bl sub_80869E4
|
||||
ldr r0, _08087470
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -508,7 +508,7 @@ ZapdosPreFightDialogue:
|
||||
movs r3, 0x4
|
||||
bl sub_80869E4
|
||||
ldr r0, _08087474
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -519,7 +519,7 @@ ZapdosPreFightDialogue:
|
||||
lsls r0, 1
|
||||
bl PlaySoundEffect
|
||||
ldr r0, _08087478
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
ldr r0, [sp, 0x68]
|
||||
bl sub_8087704
|
||||
movs r0, 0x9
|
||||
@@ -529,7 +529,7 @@ ZapdosPreFightDialogue:
|
||||
movs r2, 0x4
|
||||
bl sub_806CDD4
|
||||
ldr r0, _0808747C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -599,12 +599,12 @@ _0808748E:
|
||||
movs r3, 0x4
|
||||
bl sub_80869E4
|
||||
ldr r0, _08087518
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0x3C
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808751C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -655,28 +655,28 @@ _0808752A:
|
||||
movs r3, 0x3
|
||||
bl sub_80869E4
|
||||
ldr r0, _080875B0
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x3
|
||||
bl sub_808775C
|
||||
ldr r0, _080875B4
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x1
|
||||
bl sub_808775C
|
||||
ldr r0, _080875B8
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
movs r0, 0x2
|
||||
bl sub_808775C
|
||||
ldr r0, _080875BC
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
|
||||
@@ -602,7 +602,7 @@ sub_8095F8C:
|
||||
_08095F92:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckMailSlot
|
||||
bl IsMailSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095FA2
|
||||
@@ -666,8 +666,8 @@ sub_8095FE8:
|
||||
_08095FFC: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8095FE8
|
||||
|
||||
thumb_func_start CheckMailSlot
|
||||
CheckMailSlot:
|
||||
thumb_func_start IsMailSlotEmpty
|
||||
IsMailSlotEmpty:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@@ -689,7 +689,7 @@ _08096020:
|
||||
_08096022:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end CheckMailSlot
|
||||
thumb_func_end IsMailSlotEmpty
|
||||
|
||||
thumb_func_start sub_8096028
|
||||
sub_8096028:
|
||||
@@ -1994,7 +1994,7 @@ GetNumAcceptedJobs:
|
||||
_080969B2:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckJobSlot
|
||||
bl IsJobSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080969C2
|
||||
@@ -2155,8 +2155,8 @@ sub_8096AB4:
|
||||
_08096AC8: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_8096AB4
|
||||
|
||||
thumb_func_start CheckJobSlot
|
||||
CheckJobSlot:
|
||||
thumb_func_start IsJobSlotEmpty
|
||||
IsJobSlotEmpty:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@@ -2179,7 +2179,7 @@ _08096AF0:
|
||||
_08096AF2:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end CheckJobSlot
|
||||
thumb_func_end IsJobSlotEmpty
|
||||
|
||||
thumb_func_start sub_8096AF8
|
||||
sub_8096AF8:
|
||||
|
||||
@@ -55,7 +55,7 @@ JirachiWish:
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808B844
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -67,7 +67,7 @@ JirachiWish:
|
||||
adds r0, r6, 0
|
||||
bl sub_80862BC
|
||||
ldr r0, _0808B84C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0x79
|
||||
bl sub_8083E88
|
||||
movs r0, 0xA
|
||||
@@ -80,14 +80,14 @@ JirachiWish:
|
||||
lsls r0, 1
|
||||
bl PlaySoundEffect
|
||||
ldr r0, _0808B850
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
adds r0, r6, 0
|
||||
bl SpriteLookAroundEffect
|
||||
ldr r0, _0808B854
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -109,7 +109,7 @@ _0808B692:
|
||||
cmp r2, 0x1
|
||||
bne _0808B754
|
||||
ldr r0, _0808B864
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -187,7 +187,7 @@ _0808B754:
|
||||
cmp r0, 0x2
|
||||
bne _0808B80A
|
||||
ldr r0, _0808B874
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -276,7 +276,7 @@ _0808B80A:
|
||||
cmp r4, 0x3A
|
||||
bne _0808B87C
|
||||
ldr r0, _0808B878
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -304,7 +304,7 @@ _0808B874: .4byte gUnknown_8105974
|
||||
_0808B878: .4byte gUnknown_8105A08
|
||||
_0808B87C:
|
||||
ldr r0, _0808BA30
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -316,7 +316,7 @@ _0808B87C:
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA38
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
adds r0, r4, 0
|
||||
bl UnlockFriendArea
|
||||
movs r0, 0xD4
|
||||
@@ -331,13 +331,13 @@ _0808B87C:
|
||||
movs r2, 0
|
||||
bl sub_8092578
|
||||
ldr r0, _0808BA44
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
_0808B8CA:
|
||||
mov r0, r9
|
||||
cmp r0, 0x4
|
||||
bne _0808B98E
|
||||
ldr r0, _0808BA48
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -417,7 +417,7 @@ _0808B970:
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA58
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -426,7 +426,7 @@ _0808B98E:
|
||||
cmp r0, 0x5
|
||||
bne _0808B9F8
|
||||
ldr r0, _0808BA5C
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -438,7 +438,7 @@ _0808B98E:
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808BA60
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -454,7 +454,7 @@ _0808B98E:
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808BA64
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
@@ -466,14 +466,14 @@ _0808B98E:
|
||||
strb r1, [r0]
|
||||
_0808B9F8:
|
||||
ldr r0, _0808BA70
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
adds r0, r6, 0
|
||||
bl sub_808BC20
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
ldr r0, _0808BA74
|
||||
bl sub_8052910
|
||||
bl DisplayDungeonDialogue
|
||||
movs r0, 0xA
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
|
||||
@@ -5,51 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start MemoryLocate_LocalCreate
|
||||
MemoryLocate_LocalCreate:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r7, r2, 0
|
||||
adds r6, r3, 0
|
||||
cmp r4, 0
|
||||
bne _08003412
|
||||
ldr r4, =gMainHeapDescriptor
|
||||
_08003412:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x9
|
||||
adds r2, r5, 0
|
||||
bl MemorySearchFromBack
|
||||
adds r1, r0, 0
|
||||
cmp r1, 0
|
||||
bge _08003438
|
||||
ldr r0, =gUnknown_80B7F88
|
||||
ldr r1, =gLocalCreateErrorMessage
|
||||
adds r2, r5, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
.pool
|
||||
_08003438:
|
||||
str r6, [sp]
|
||||
adds r0, r4, 0
|
||||
movs r2, 0x9
|
||||
adds r3, r5, 0
|
||||
bl _LocateSetBack
|
||||
ldr r1, [r0, 0xC]
|
||||
str r1, [sp, 0x4]
|
||||
ldr r0, [r0, 0x10]
|
||||
str r0, [sp, 0x8]
|
||||
add r0, sp, 0x4
|
||||
adds r1, r7, 0
|
||||
bl DoCreateSubHeap
|
||||
str r4, [r0, 0x4]
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end MemoryLocate_LocalCreate
|
||||
|
||||
thumb_func_start DoCreateSubHeap
|
||||
DoCreateSubHeap:
|
||||
push {r4,lr}
|
||||
|
||||
@@ -721,7 +721,7 @@ sub_8039068:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x22
|
||||
ldrb r0, [r0]
|
||||
bl sub_8092040
|
||||
bl IsInvalidItemReward
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080390B4
|
||||
|
||||
@@ -5,319 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_802BCC4
|
||||
sub_802BCC4:
|
||||
push {r4,lr}
|
||||
ldr r4, _0802BCDC
|
||||
ldr r0, [r4]
|
||||
ldrb r0, [r0, 0x4]
|
||||
bl GetPokemonMailText
|
||||
adds r3, r0, 0
|
||||
ldr r1, [r4]
|
||||
movs r0, 0
|
||||
str r0, [r1, 0xC]
|
||||
str r3, [r1, 0x10]
|
||||
b _0802BD08
|
||||
.align 2, 0
|
||||
_0802BCDC: .4byte gUnknown_203B2D4
|
||||
_0802BCE0:
|
||||
cmp r0, 0x23
|
||||
bne _0802BD06
|
||||
ldrb r2, [r3, 0x1]
|
||||
cmp r2, 0x50
|
||||
beq _0802BCF0
|
||||
adds r1, r3, 0x2
|
||||
cmp r2, 0x70
|
||||
bne _0802BD02
|
||||
_0802BCF0:
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r0, 0xC]
|
||||
adds r1, 0x1
|
||||
str r1, [r0, 0xC]
|
||||
lsls r1, 2
|
||||
adds r0, 0x10
|
||||
adds r0, r1
|
||||
adds r1, r3, 0x2
|
||||
str r1, [r0]
|
||||
_0802BD02:
|
||||
adds r3, r1, 0
|
||||
b _0802BD08
|
||||
_0802BD06:
|
||||
adds r3, 0x1
|
||||
_0802BD08:
|
||||
ldrb r0, [r3]
|
||||
cmp r0, 0
|
||||
bne _0802BCE0
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802BCC4
|
||||
|
||||
thumb_func_start sub_802BD14
|
||||
sub_802BD14:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
mov r8, r2
|
||||
bl HasNoMailinMailbox
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0802BD2E
|
||||
movs r0, 0
|
||||
b _0802BDD4
|
||||
_0802BD2E:
|
||||
ldr r5, _0802BDE0
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0
|
||||
bne _0802BD40
|
||||
movs r0, 0xA4
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r5]
|
||||
_0802BD40:
|
||||
ldr r0, [r5]
|
||||
str r6, [r0, 0x38]
|
||||
lsls r1, r6, 1
|
||||
adds r1, r6
|
||||
lsls r1, 3
|
||||
adds r1, 0x40
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x3C]
|
||||
adds r0, 0x40
|
||||
bl sub_8006518
|
||||
ldr r1, [r5]
|
||||
ldr r2, [r1, 0x38]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x40
|
||||
ldr r0, _0802BDE4
|
||||
ldm r0!, {r2,r3,r7}
|
||||
stm r1!, {r2,r3,r7}
|
||||
ldm r0!, {r2,r3,r7}
|
||||
stm r1!, {r2,r3,r7}
|
||||
ldr r2, [r5]
|
||||
ldr r1, [r2, 0x3C]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0xA0
|
||||
str r0, [r1, 0x14]
|
||||
cmp r4, 0
|
||||
beq _0802BD8E
|
||||
ldr r1, [r2, 0x38]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x48
|
||||
adds r1, r0
|
||||
ldr r0, [r4]
|
||||
str r0, [r1]
|
||||
_0802BD8E:
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x3C]
|
||||
mov r1, r8
|
||||
bl sub_8012D34
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x40
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r4, [r5]
|
||||
adds r4, 0x4
|
||||
bl sub_802C0B8
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
mov r2, r8
|
||||
adds r3, r6, 0
|
||||
bl sub_8013848
|
||||
ldr r0, [r5]
|
||||
ldr r1, _0802BDE8
|
||||
ldrh r1, [r1]
|
||||
strh r1, [r0, 0x1C]
|
||||
adds r0, 0x4
|
||||
bl sub_8013984
|
||||
bl sub_802BF30
|
||||
bl CreateMailMenu
|
||||
movs r0, 0x1
|
||||
_0802BDD4:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802BDE0: .4byte gUnknown_203B2D8
|
||||
_0802BDE4: .4byte gUnknown_80DFC74
|
||||
_0802BDE8: .4byte gUnknown_203B2DC
|
||||
thumb_func_end sub_802BD14
|
||||
|
||||
thumb_func_start sub_802BDEC
|
||||
sub_802BDEC:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802BE08
|
||||
ldr r0, _0802BE04
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x4
|
||||
bl sub_8013660
|
||||
movs r0, 0
|
||||
b _0802BE6E
|
||||
.align 2, 0
|
||||
_0802BE04: .4byte gUnknown_203B2D8
|
||||
_0802BE08:
|
||||
ldr r0, _0802BE20
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x4
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x2
|
||||
beq _0802BE2A
|
||||
cmp r0, 0x2
|
||||
bgt _0802BE24
|
||||
cmp r0, 0x1
|
||||
beq _0802BE34
|
||||
b _0802BE48
|
||||
.align 2, 0
|
||||
_0802BE20: .4byte gUnknown_203B2D8
|
||||
_0802BE24:
|
||||
cmp r0, 0x4
|
||||
beq _0802BE3E
|
||||
b _0802BE48
|
||||
_0802BE2A:
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0802BE6E
|
||||
_0802BE34:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _0802BE6E
|
||||
_0802BE3E:
|
||||
movs r0, 0x4
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x4
|
||||
b _0802BE6E
|
||||
_0802BE48:
|
||||
ldr r0, _0802BE60
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x4
|
||||
movs r1, 0x1
|
||||
bl sub_80138B8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802BE64
|
||||
movs r0, 0
|
||||
b _0802BE6E
|
||||
.align 2, 0
|
||||
_0802BE60: .4byte gUnknown_203B2D8
|
||||
_0802BE64:
|
||||
bl sub_802BF30
|
||||
bl CreateMailMenu
|
||||
movs r0, 0x1
|
||||
_0802BE6E:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802BDEC
|
||||
|
||||
thumb_func_start sub_802BE74
|
||||
sub_802BE74:
|
||||
ldr r0, _0802BE90
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x22
|
||||
ldrsh r2, [r1, r0]
|
||||
movs r3, 0x20
|
||||
ldrsh r0, [r1, r3]
|
||||
muls r0, r2
|
||||
movs r3, 0x1C
|
||||
ldrsh r2, [r1, r3]
|
||||
adds r0, r2
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0802BE90: .4byte gUnknown_203B2D8
|
||||
thumb_func_end sub_802BE74
|
||||
|
||||
thumb_func_start sub_802BE94
|
||||
sub_802BE94:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r5, _0802BED8
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x40
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_800641C
|
||||
bl sub_802C0B8
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r5]
|
||||
strh r1, [r0, 0x26]
|
||||
adds r0, 0x4
|
||||
bl sub_8013984
|
||||
bl sub_802BF30
|
||||
bl CreateMailMenu
|
||||
cmp r4, 0
|
||||
beq _0802BED2
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x4
|
||||
bl AddMenuCursorSprite
|
||||
_0802BED2:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802BED8: .4byte gUnknown_203B2D8
|
||||
thumb_func_end sub_802BE94
|
||||
|
||||
thumb_func_start sub_802BEDC
|
||||
sub_802BEDC:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0802BF24
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0802BF1C
|
||||
ldr r1, _0802BF28
|
||||
ldrh r0, [r2, 0x1C]
|
||||
strh r0, [r1]
|
||||
ldr r0, [r2, 0x38]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x40
|
||||
ldr r0, _0802BF2C
|
||||
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, 0x40
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0802BF1C:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802BF24: .4byte gUnknown_203B2D8
|
||||
_0802BF28: .4byte gUnknown_203B2DC
|
||||
_0802BF2C: .4byte gUnknown_80DFC5C
|
||||
thumb_func_end sub_802BEDC
|
||||
|
||||
thumb_func_start sub_802BF30
|
||||
sub_802BF30:
|
||||
push {r4,lr}
|
||||
@@ -505,15 +192,15 @@ _0802C09A:
|
||||
_0802C0B4: .4byte gUnknown_203B2D8
|
||||
thumb_func_end CreateMailMenu
|
||||
|
||||
thumb_func_start sub_802C0B8
|
||||
sub_802C0B8:
|
||||
thumb_func_start CountEmptyMailSlots
|
||||
CountEmptyMailSlots:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
movs r4, 0
|
||||
_0802C0BE:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckMailSlot
|
||||
bl IsMailSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C0D6
|
||||
@@ -532,7 +219,7 @@ _0802C0D6:
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802C0E4: .4byte gUnknown_203B2D8
|
||||
thumb_func_end sub_802C0B8
|
||||
thumb_func_end CountEmptyMailSlots
|
||||
|
||||
thumb_func_start HasNoMailinMailbox
|
||||
HasNoMailinMailbox:
|
||||
@@ -541,7 +228,7 @@ HasNoMailinMailbox:
|
||||
_0802C0EC:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckMailSlot
|
||||
bl IsMailSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C0FE
|
||||
@@ -1452,7 +1139,7 @@ sub_802C80C:
|
||||
_0802C812:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckJobSlot
|
||||
bl IsJobSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C82A
|
||||
@@ -1480,7 +1167,7 @@ HasNoAcceptedJobs:
|
||||
_0802C840:
|
||||
lsls r0, r4, 24
|
||||
lsrs r0, 24
|
||||
bl CheckJobSlot
|
||||
bl IsJobSlotEmpty
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0802C852
|
||||
|
||||
@@ -733,584 +733,4 @@ _0802DB1C:
|
||||
_0802DB24: .4byte gUnknown_203B490
|
||||
thumb_func_end sub_802DADC
|
||||
|
||||
thumb_func_start sub_802DB28
|
||||
sub_802DB28:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r2, r1, 0
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r0, sp
|
||||
adds r1, r6, 0
|
||||
bl sub_8096AF8
|
||||
mov r0, sp
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0802DB4A
|
||||
movs r0, 0
|
||||
b _0802DBC6
|
||||
_0802DB4A:
|
||||
bl ResetUnusedInputStruct
|
||||
movs r0, 0
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r4, _0802DBD0
|
||||
movs r0, 0xA8
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
adds r0, 0x30
|
||||
movs r5, 0
|
||||
strb r6, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8096AB4
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x34]
|
||||
bl sub_8096EEC
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r1, 0x34]
|
||||
adds r1, 0x8
|
||||
bl sub_803C21C
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetDialogueSpriteDataPtr
|
||||
ldr r1, [r4]
|
||||
str r0, [r1, 0x38]
|
||||
str r5, [r1, 0x3C]
|
||||
adds r1, 0x44
|
||||
strb r5, [r1]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x45
|
||||
strb r5, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x46
|
||||
strb r5, [r0]
|
||||
ldr r2, [r4]
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x40
|
||||
movs r0, 0x2
|
||||
strh r0, [r1]
|
||||
adds r1, 0x2
|
||||
movs r0, 0x8
|
||||
strh r0, [r1]
|
||||
ldr r0, [r2, 0x38]
|
||||
cmp r0, 0
|
||||
beq _0802DBBE
|
||||
ldr r0, [r0, 0x4]
|
||||
str r0, [r2, 0x3C]
|
||||
_0802DBBE:
|
||||
movs r0, 0
|
||||
bl sub_802DC28
|
||||
movs r0, 0x1
|
||||
_0802DBC6:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802DBD0: .4byte gUnknown_203B2FC
|
||||
thumb_func_end sub_802DB28
|
||||
|
||||
thumb_func_start sub_802DBD4
|
||||
sub_802DBD4:
|
||||
push {lr}
|
||||
ldr r0, _0802DBEC
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0]
|
||||
cmp r1, 0x6
|
||||
beq _0802DBF0
|
||||
cmp r1, 0x7
|
||||
bne _0802DBF6
|
||||
ldr r0, [r0, 0x34]
|
||||
strb r1, [r0]
|
||||
movs r0, 0x3
|
||||
b _0802DBFC
|
||||
.align 2, 0
|
||||
_0802DBEC: .4byte gUnknown_203B2FC
|
||||
_0802DBF0:
|
||||
bl sub_802DE44
|
||||
b _0802DBFA
|
||||
_0802DBF6:
|
||||
bl sub_802DE60
|
||||
_0802DBFA:
|
||||
movs r0, 0
|
||||
_0802DBFC:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802DBD4
|
||||
|
||||
thumb_func_start sub_802DC00
|
||||
sub_802DC00:
|
||||
push {r4,lr}
|
||||
ldr r4, _0802DC24
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _0802DC1E
|
||||
ldr r0, [r0, 0x38]
|
||||
cmp r0, 0
|
||||
beq _0802DC14
|
||||
bl CloseFile
|
||||
_0802DC14:
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0802DC1E:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DC24: .4byte gUnknown_203B2FC
|
||||
thumb_func_end sub_802DC00
|
||||
|
||||
thumb_func_start sub_802DC28
|
||||
sub_802DC28:
|
||||
push {lr}
|
||||
ldr r1, _0802DC3C
|
||||
ldr r1, [r1]
|
||||
str r0, [r1]
|
||||
bl sub_802DC40
|
||||
bl sub_802DC9C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DC3C: .4byte gUnknown_203B2FC
|
||||
thumb_func_end sub_802DC28
|
||||
|
||||
thumb_func_start sub_802DC40
|
||||
sub_802DC40:
|
||||
push {r4-r7,lr}
|
||||
ldr r4, _0802DC94
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x48
|
||||
bl sub_8006518
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0802DC58
|
||||
cmp r0, 0x7
|
||||
bne _0802DC7A
|
||||
_0802DC58:
|
||||
mov r12, r4
|
||||
ldr r4, _0802DC98
|
||||
movs r3, 0
|
||||
movs r2, 0x3
|
||||
_0802DC60:
|
||||
mov r0, r12
|
||||
ldr r1, [r0]
|
||||
adds r1, r3
|
||||
adds r1, 0x48
|
||||
adds r0, r4, 0
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
ldm r0!, {r5-r7}
|
||||
stm r1!, {r5-r7}
|
||||
adds r3, 0x18
|
||||
subs r2, 0x1
|
||||
cmp r2, 0
|
||||
bge _0802DC60
|
||||
_0802DC7A:
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _0802DC94
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x48
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DC94: .4byte gUnknown_203B2FC
|
||||
_0802DC98: .4byte gUnknown_80E016C
|
||||
thumb_func_end sub_802DC40
|
||||
|
||||
thumb_func_start sub_802DC9C
|
||||
sub_802DC9C:
|
||||
push {r4,r5,lr}
|
||||
ldr r1, _0802DCB8
|
||||
ldr r0, [r1]
|
||||
ldr r0, [r0]
|
||||
adds r5, r1, 0
|
||||
cmp r0, 0x7
|
||||
bls _0802DCAC
|
||||
b _0802DE3E
|
||||
_0802DCAC:
|
||||
lsls r0, 2
|
||||
ldr r1, _0802DCBC
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802DCB8: .4byte gUnknown_203B2FC
|
||||
_0802DCBC: .4byte _0802DCC0
|
||||
.align 2, 0
|
||||
_0802DCC0:
|
||||
.4byte _0802DCE0
|
||||
.4byte _0802DDDC
|
||||
.4byte _0802DDE4
|
||||
.4byte _0802DDEC
|
||||
.4byte _0802DDFC
|
||||
.4byte _0802DDF4
|
||||
.4byte _0802DE34
|
||||
.4byte _0802DE3E
|
||||
_0802DCE0:
|
||||
ldr r0, _0802DD60
|
||||
ldr r1, [r5]
|
||||
ldr r1, [r1, 0x34]
|
||||
movs r2, 0xC
|
||||
ldrsh r1, [r1, r2]
|
||||
bl CopyYellowSpeciesNametoBuffer
|
||||
ldr r4, _0802DD64
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r2, 0xC
|
||||
ldrsh r1, [r0, r2]
|
||||
adds r0, r4, 0
|
||||
bl CopyYellowSpeciesNametoBuffer
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetMonSpecies
|
||||
adds r1, r0, 0
|
||||
ldr r2, _0802DD68
|
||||
adds r0, r4, r2
|
||||
bl strcpy
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetMonSpecies
|
||||
adds r1, r0, 0
|
||||
ldr r2, _0802DD6C
|
||||
adds r4, r2
|
||||
adds r0, r4, 0
|
||||
bl strcpy
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r1, 0xC
|
||||
ldrsh r0, [r0, r1]
|
||||
bl UnlockExclusivePokemon
|
||||
ldr r0, _0802DD70
|
||||
ldr r1, [r5]
|
||||
ldr r1, [r1, 0x34]
|
||||
ldrb r1, [r1, 0x10]
|
||||
movs r2, 0
|
||||
bl sub_8090DC4
|
||||
ldr r1, [r5]
|
||||
movs r0, 0x6
|
||||
str r0, [r1, 0x4]
|
||||
ldr r0, [r1, 0x34]
|
||||
ldrb r0, [r0, 0x1]
|
||||
cmp r0, 0x4
|
||||
bhi _0802DDD4
|
||||
lsls r0, 2
|
||||
ldr r1, _0802DD74
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802DD60: .4byte gUnknown_202E5D8
|
||||
_0802DD64: .4byte gUnknown_202E1C8
|
||||
_0802DD68: .4byte 0xfffffdd0
|
||||
_0802DD6C: .4byte 0xfffffe20
|
||||
_0802DD70: .4byte gUnknown_202DE58
|
||||
_0802DD74: .4byte _0802DD78
|
||||
.align 2, 0
|
||||
_0802DD78:
|
||||
.4byte _0802DDD4
|
||||
.4byte _0802DD9C
|
||||
.4byte _0802DDB8
|
||||
.4byte _0802DD94
|
||||
.4byte _0802DD8C
|
||||
_0802DD8C:
|
||||
movs r0, 0x5
|
||||
bl sub_802DC28
|
||||
b _0802DE3E
|
||||
_0802DD94:
|
||||
movs r0, 0x4
|
||||
bl sub_802DC28
|
||||
b _0802DE3E
|
||||
_0802DD9C:
|
||||
movs r0, 0x2
|
||||
bl sub_802DC28
|
||||
ldr r0, _0802DDB4
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r2, 0xE
|
||||
ldrsh r0, [r0, r2]
|
||||
bl UnlockExclusivePokemon
|
||||
b _0802DE3E
|
||||
.align 2, 0
|
||||
_0802DDB4: .4byte gUnknown_203B2FC
|
||||
_0802DDB8:
|
||||
movs r0, 0x3
|
||||
bl sub_802DC28
|
||||
ldr r0, _0802DDD0
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x34]
|
||||
movs r1, 0xE
|
||||
ldrsh r0, [r0, r1]
|
||||
bl UnlockExclusivePokemon
|
||||
b _0802DE3E
|
||||
.align 2, 0
|
||||
_0802DDD0: .4byte gUnknown_203B2FC
|
||||
_0802DDD4:
|
||||
movs r0, 0x1
|
||||
bl sub_802DC28
|
||||
b _0802DE3E
|
||||
_0802DDDC:
|
||||
ldr r0, _0802DDE0
|
||||
b _0802DE1C
|
||||
.align 2, 0
|
||||
_0802DDE0: .4byte gWonderMailClientThanksForRescuingMe
|
||||
_0802DDE4:
|
||||
ldr r0, _0802DDE8
|
||||
b _0802DE1C
|
||||
.align 2, 0
|
||||
_0802DDE8: .4byte gWonderMailClientThanksForRescuingThem
|
||||
_0802DDEC:
|
||||
ldr r0, _0802DDF0
|
||||
b _0802DE1C
|
||||
.align 2, 0
|
||||
_0802DDF0: .4byte gWonderMailClientEscorted
|
||||
_0802DDF4:
|
||||
ldr r0, _0802DDF8
|
||||
b _0802DE1C
|
||||
.align 2, 0
|
||||
_0802DDF8: .4byte gWonderMailClientItemDelivered1
|
||||
_0802DDFC:
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, 0x34]
|
||||
ldrb r0, [r0, 0x10]
|
||||
bl FindItemInInventory
|
||||
adds r1, r0, 0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
beq _0802DE1A
|
||||
adds r0, r1, 0
|
||||
bl ShiftItemsDownFrom
|
||||
bl FillInventoryGaps
|
||||
_0802DE1A:
|
||||
ldr r0, _0802DE2C
|
||||
_0802DE1C:
|
||||
ldr r2, [r5]
|
||||
adds r2, 0x38
|
||||
ldr r3, _0802DE30
|
||||
movs r1, 0
|
||||
bl sub_80141B4
|
||||
b _0802DE3E
|
||||
.align 2, 0
|
||||
_0802DE2C: .4byte gWonderMailClientItemDelivered2
|
||||
_0802DE30: .4byte 0x0000010d
|
||||
_0802DE34:
|
||||
ldr r0, [r5]
|
||||
adds r0, 0x8
|
||||
movs r1, 0x1
|
||||
bl sub_802F204
|
||||
_0802DE3E:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802DC9C
|
||||
|
||||
thumb_func_start sub_802DE44
|
||||
sub_802DE44:
|
||||
push {lr}
|
||||
bl sub_802F298
|
||||
cmp r0, 0x1
|
||||
bls _0802DE5C
|
||||
cmp r0, 0x3
|
||||
bhi _0802DE5C
|
||||
bl sub_802F2C0
|
||||
movs r0, 0x7
|
||||
bl sub_802DC28
|
||||
_0802DE5C:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802DE44
|
||||
|
||||
thumb_func_start sub_802DE60
|
||||
sub_802DE60:
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
mov r0, sp
|
||||
bl sub_80144A4
|
||||
cmp r0, 0
|
||||
bne _0802DE78
|
||||
ldr r0, _0802DE80
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x4]
|
||||
bl sub_802DC28
|
||||
_0802DE78:
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DE80: .4byte gUnknown_203B2FC
|
||||
thumb_func_end sub_802DE60
|
||||
|
||||
thumb_func_start sub_802DE84
|
||||
sub_802DE84:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r4, _0802DED8
|
||||
movs r0, 0x7C
|
||||
movs r1, 0x8
|
||||
bl MemoryAlloc
|
||||
str r0, [r4]
|
||||
str r5, [r0, 0xC]
|
||||
bl sub_801317C
|
||||
ldr r0, [r4]
|
||||
ldr r1, [r0, 0xC]
|
||||
ldr r2, [r1]
|
||||
str r2, [r0, 0x10]
|
||||
lsls r1, r2, 1
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r1, 0x18
|
||||
adds r1, r0, r1
|
||||
str r1, [r0, 0x14]
|
||||
adds r0, 0x18
|
||||
bl sub_8006518
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r1, 0x10]
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
adds r1, 0x18
|
||||
ldr r0, _0802DEDC
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
bl sub_802DF14
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0802DED8: .4byte gUnknown_203B300
|
||||
_0802DEDC: .4byte gUnknown_80E0264
|
||||
thumb_func_end sub_802DE84
|
||||
|
||||
thumb_func_start sub_802DEE0
|
||||
sub_802DEE0:
|
||||
push {lr}
|
||||
ldr r0, _0802DF00
|
||||
ldr r0, [r0]
|
||||
ldr r1, [r0, 0x10]
|
||||
bl sub_8012A64
|
||||
cmp r0, 0x1
|
||||
beq _0802DF04
|
||||
cmp r0, 0x2
|
||||
bne _0802DF0E
|
||||
movs r0, 0x1
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x2
|
||||
b _0802DF10
|
||||
.align 2, 0
|
||||
_0802DF00: .4byte gUnknown_203B300
|
||||
_0802DF04:
|
||||
movs r0, 0
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x3
|
||||
b _0802DF10
|
||||
_0802DF0E:
|
||||
movs r0, 0
|
||||
_0802DF10:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_802DEE0
|
||||
|
||||
thumb_func_start sub_802DF14
|
||||
sub_802DF14:
|
||||
push {lr}
|
||||
bl sub_802DF6C
|
||||
bl sub_802DF88
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_802DF14
|
||||
|
||||
thumb_func_start sub_802DF24
|
||||
sub_802DF24:
|
||||
push {r4,r5,lr}
|
||||
ldr r4, _0802DF64
|
||||
ldr r2, [r4]
|
||||
cmp r2, 0
|
||||
beq _0802DF5E
|
||||
ldr r0, [r2, 0x10]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x18
|
||||
ldr r0, _0802DF68
|
||||
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, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
bl MemoryFree
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_0802DF5E:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DF64: .4byte gUnknown_203B300
|
||||
_0802DF68: .4byte gUnknown_80E0248
|
||||
thumb_func_end sub_802DF24
|
||||
|
||||
thumb_func_start sub_802DF6C
|
||||
sub_802DF6C:
|
||||
push {lr}
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, _0802DF84
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x18
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DF84: .4byte gUnknown_203B300
|
||||
thumb_func_end sub_802DF6C
|
||||
|
||||
thumb_func_start sub_802DF88
|
||||
sub_802DF88:
|
||||
push {r4,lr}
|
||||
ldr r4, _0802DFAC
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073B8
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0xC]
|
||||
bl CreateRescueDescription
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x10]
|
||||
bl sub_80073E0
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802DFAC: .4byte gUnknown_203B300
|
||||
thumb_func_end sub_802DF88
|
||||
|
||||
.align 2,0
|
||||
|
||||
@@ -4854,8 +4854,8 @@ gUnknown_80FE2D0: @ 80FE2D0
|
||||
gUnknown_80FE2EC: @ 80FE2EC
|
||||
.incbin "baserom.gba", 0xFE2EC, 0x1C
|
||||
|
||||
.global gUnknown_80FE308
|
||||
gUnknown_80FE308: @ 80FE308
|
||||
.global gPtrItsaMonsterHouseMessage
|
||||
gPtrItsaMonsterHouseMessage: @ 80FE308
|
||||
.incbin "baserom.gba", 0xFE308, 0x28
|
||||
|
||||
.global gUnknown_80FE330
|
||||
@@ -8338,13 +8338,13 @@ gUnknown_810A350: @ 810A350
|
||||
@ replacing .incbin "baserom.gba", 0x0010a350, 0xb
|
||||
.byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f
|
||||
|
||||
.global gUnknown_810A35B
|
||||
gUnknown_810A35B: @ 810A35B (item related)
|
||||
.global gInvalidItemIDs
|
||||
gInvalidItemIDs: @ 810A35B (item related)
|
||||
@ replacing .incbin "baserom.gba", 0x0010a35b, 0x10
|
||||
.byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0
|
||||
|
||||
.global gUnknown_810A36B
|
||||
gUnknown_810A36B: @ 810A36B
|
||||
.global gTacticsTargetLeader
|
||||
gTacticsTargetLeader: @ 810A36B
|
||||
@ replacing .incbin "baserom.gba", 0x0010a36b, 0xd
|
||||
.byte 0x01
|
||||
.byte 0x00
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
enum IQSkill
|
||||
{
|
||||
IQ_SKILL_NONE = 0x0,
|
||||
IQ_SKILL_TYPE_ADVANTAGE_MASTER = 0x1,
|
||||
IQ_SKILL_ITEM_CATCHER = 0x2,
|
||||
IQ_SKILL_COURSE_CHECKER = 0x3,
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
#ifndef GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
#define GUARD_CONSTANTS_WONDER_MAIL_H
|
||||
|
||||
enum MissionType
|
||||
{
|
||||
HELP_POKE,
|
||||
FIND_POKE,
|
||||
ESCORT,
|
||||
FIND_ITEM,
|
||||
DELIVER_ITEM
|
||||
};
|
||||
|
||||
enum RewardType
|
||||
{
|
||||
MONEY,
|
||||
|
||||
@@ -187,7 +187,8 @@ struct DungeonEntityData
|
||||
u8 fill149[0x14E - 0x149];
|
||||
/* 0x14E */ u16 visualFlags;
|
||||
/* 0x150 */ u16 previousVisualFlags;
|
||||
u8 fill152[0x15C - 0x152];
|
||||
/* 0x152 */ u8 unk152;
|
||||
u8 fill153[0x15C - 0x153];
|
||||
u8 unk15C;
|
||||
u8 unk15D;
|
||||
u8 unk15E;
|
||||
|
||||
@@ -40,7 +40,8 @@ struct DungeonGlobalData
|
||||
u16 unk66A;
|
||||
u8 fill66C[0x671 - 0x66C];
|
||||
/* 0x671 */ bool8 monsterHouseActive;
|
||||
u8 fill672[0x363C - 0x672];
|
||||
/* 0x672 */ u8 unk672;
|
||||
u8 fill673[0x363C - 0x673];
|
||||
/* 0x363C */ u8 expYieldRankings[NUM_SPECIES];
|
||||
u8 fill37E3[0x37FC - 0x37D9];
|
||||
/* 0x37FC */ bool8 decoyActive;
|
||||
|
||||
@@ -14,7 +14,7 @@ struct ExclusivePokemonData
|
||||
{
|
||||
u8 fill0[0x48];
|
||||
u32 unk48[4];
|
||||
bool8 Exclusives[NUM_EXCLUSIVE_POKEMON];
|
||||
/* 0x58 */ bool8 Exclusives[NUM_EXCLUSIVE_POKEMON];
|
||||
};
|
||||
|
||||
#define RED_EXCLUSIVE(species) \
|
||||
@@ -36,5 +36,6 @@ extern struct ExclusivePokemonData *gUnknown_203B498;
|
||||
void LoadExclusivePokemon(void);
|
||||
struct ExclusivePokemonData *GetExclusivePokemon(void);
|
||||
void InitializeExclusivePokemon(void);
|
||||
void UnlockExclusivePokemon(s16 pokeID);
|
||||
|
||||
#endif // GUARD_EXCLUSIVE_POKEMON_H
|
||||
|
||||
@@ -114,6 +114,7 @@ void MoveToStorage(struct ItemSlot* slot);
|
||||
void FillInventoryGaps();
|
||||
bool8 sub_8091274(struct HeldItem* slot);
|
||||
bool8 IsNotMoneyOrUsedTMItem(u8 id);
|
||||
s32 FindItemInInventory(u8 itemIndex);
|
||||
|
||||
|
||||
void RestoreHeldItem(struct unkStruct_8094924*, struct HeldItem*);
|
||||
|
||||
@@ -5,11 +5,24 @@
|
||||
|
||||
#define MAX_ROOM_COUNT 24 // Empirical max, not sure if the code supports any more.
|
||||
|
||||
struct MapTile
|
||||
|
||||
struct MapTileBitFlagStair
|
||||
{
|
||||
/* 0x0 */ u8 tileFlags;
|
||||
/* 0x1 */ bool8 stairs;
|
||||
u8 fill2[0x9 - 0x2];
|
||||
};
|
||||
|
||||
struct MapTile
|
||||
{
|
||||
// TODO: can we get rid of the union... is tileFlags a u16 only?
|
||||
union MapTileUnion
|
||||
{
|
||||
struct MapTileBitFlagStair unk0;
|
||||
u16 tileFlags_u16;
|
||||
} MapTileUnion;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u8 unk8;
|
||||
/* 0x9 */ u8 roomIndex;
|
||||
// Bitwise flags for whether Pokémon can move to an adjacent tile. Bits correspond to directions in direction.h.
|
||||
// Different sets of flags are used for Pokémon that can cross special terrain.
|
||||
|
||||
@@ -5,33 +5,33 @@
|
||||
|
||||
struct HeapSettings
|
||||
{
|
||||
u8 *start;
|
||||
u32 size;
|
||||
/* 0x0 */ u8 *start;
|
||||
/* 0x4 */ u32 size;
|
||||
};
|
||||
|
||||
struct HeapMemoryBlock {
|
||||
u8 *start;
|
||||
s32 size;
|
||||
s32 allocatedSize;
|
||||
/* 0x0 */ u8 *start;
|
||||
/* 0x4 */ s32 size;
|
||||
/* 0x8 */ s32 allocatedSize;
|
||||
};
|
||||
|
||||
struct HeapFreeListElement
|
||||
{
|
||||
u32 unk_atb;
|
||||
u32 atb;
|
||||
u32 grp;
|
||||
struct HeapMemoryBlock block;
|
||||
/* 0x0 */ u32 unk_atb;
|
||||
/* 0x4 */ u32 atb;
|
||||
/* 0x8 */ u32 grp;
|
||||
/* 0xC */ struct HeapMemoryBlock block;
|
||||
};
|
||||
|
||||
struct HeapDescriptor
|
||||
{
|
||||
u32 unk0;
|
||||
struct HeapDescriptor *parentHeap;
|
||||
struct HeapFreeListElement *freeList;
|
||||
s32 freeCount;
|
||||
u32 freeListLength;
|
||||
u8 *start;
|
||||
u32 size;
|
||||
/* 0x4 */ struct HeapDescriptor *parentHeap;
|
||||
/* 0x8 */ struct HeapFreeListElement *freeList;
|
||||
/* 0xC */ s32 freeCount;
|
||||
/* 0x10 */ u32 freeListLength;
|
||||
/* 0x14 */ u8 *start;
|
||||
/* 0x18 */ u32 size;
|
||||
};
|
||||
|
||||
void InitHeap(void);
|
||||
|
||||
@@ -44,9 +44,9 @@ struct WonderMail
|
||||
struct WonderMailStruct_203B2C0
|
||||
{
|
||||
// size: 0x548
|
||||
u32 unk0;
|
||||
u32 state;
|
||||
u8 passwordBuffer[PASSWORD_BUFFER_SIZE];
|
||||
/* 0x0 */ u32 fallbackState;
|
||||
/* 0x4 */ u32 state;
|
||||
/* 0x8 */ u8 passwordBuffer[PASSWORD_BUFFER_SIZE];
|
||||
u8 unk3E;
|
||||
u32 unk40;
|
||||
u32 linkError;
|
||||
@@ -67,9 +67,9 @@ struct WonderMailStruct_203B2C0
|
||||
u8 padding8[0x4C];
|
||||
struct UnkTextStruct2 unk35C[4];
|
||||
struct UnkTextStruct2 unk3BC[4];
|
||||
u32 unkfill; // unkStruct_41C?
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *faceData;
|
||||
/* 0x41C */ u32 unkfill; // ItemSlot?
|
||||
/* 0x420 */ struct OpenedFile *faceFile;
|
||||
/* 0x424 */ u8 *faceData;
|
||||
u16 unk428;
|
||||
u16 unk42A;
|
||||
u8 unk42C;
|
||||
@@ -87,12 +87,12 @@ struct WonderMailStruct_203B2C0
|
||||
struct WonderMailStruct_203B2C4
|
||||
{
|
||||
// size: 0x564
|
||||
u8 state;
|
||||
u32 unk4; // wonder mail link status??
|
||||
u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; // Probably a buffer for entry
|
||||
/* 0x0 */ u8 state;
|
||||
/* 0x4 */ u32 fallbackState; // wonder mail link status??
|
||||
/* 0x8 */ u8 passwordBuffer[PASSWORD_BUFFER_SIZE]; // Probably a buffer for entry
|
||||
u8 unk3E;
|
||||
u32 unk40;
|
||||
u32 linkError; // another link status
|
||||
/* 0x44 */ u32 linkError; // another link status
|
||||
u8 filler48[0x1B8 - 0x48];
|
||||
struct unkStruct_8095228 unk1B8;
|
||||
struct unkStruct_8095228 unk1E8;
|
||||
@@ -112,9 +112,9 @@ struct WonderMailStruct_203B2C4
|
||||
u8 unk42D;
|
||||
u8 unk42E;
|
||||
u32 unk430;
|
||||
u8 formattedString[0x100];
|
||||
s32 wonderMailMethod;
|
||||
u32 wonderMailMode;
|
||||
/* 0x434 */ u8 formattedString[0x100];
|
||||
/* 0x534 */ s32 wonderMailMethod;
|
||||
/* 0x538 */ u32 wonderMailMode;
|
||||
struct unkStruct_802F204 unk53C;
|
||||
};
|
||||
|
||||
@@ -126,17 +126,41 @@ enum WonderMailMode {
|
||||
};
|
||||
|
||||
enum WonderMailMethod {
|
||||
WONDER_MAIL_GAME_LINK = 3,
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
WONDER_MAIL_GAME_LINK = 3,
|
||||
WONDER_MAIL_PASSWORD = 5,
|
||||
};
|
||||
|
||||
enum WonderMailTypes {
|
||||
WONDER_MAIL_TYPE_SOS = 1,
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
WONDER_MAIL_TYPE_SOS = 1,
|
||||
WONDER_MAIL_TYPE_AOK = 4,
|
||||
WONDER_MAIL_TYPE_THANK_YOU = 5,
|
||||
WONDER_MAIL_TYPE_WONDER = 5,
|
||||
// TODO: document 7
|
||||
};
|
||||
|
||||
enum WonderMailMissionTypes
|
||||
{
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT = 0,
|
||||
WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET = 1,
|
||||
WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT = 2,
|
||||
WONDER_MAIL_MISSION_TYPE_FIND_ITEM = 3,
|
||||
WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM = 4,
|
||||
};
|
||||
|
||||
enum WonderMailErrorMode {
|
||||
WONDER_MAIL_GOOD = 0,
|
||||
// TODO: document 1
|
||||
WONDER_MAIL_NO_RESPONSE = 2,
|
||||
WONDER_MAIL_INCORRECT_NUM_SYSTEMS = 3,
|
||||
WONDER_MAIL_DIFFERENT_MODES = 4,
|
||||
// TODO: document 5
|
||||
WONDER_MAIL_NO_ROOM_STORAGE = 6,
|
||||
WONDER_MAIL_DUPLICATE_MAIL = 7,
|
||||
WONDER_MAIL_NOT_ELIGIBLE_1 = 9,
|
||||
WONDER_MAIL_NOT_ELIGIBLE_2 = 11,
|
||||
WONDER_MAIL_NO_ROOM_MAIL = 13,
|
||||
// TODO: document 14
|
||||
WONDER_MAIL_NOT_READY = 15,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -103,7 +103,6 @@ SECTIONS {
|
||||
asm/kecleon_items_1.o(.text);
|
||||
src/kecleon_items_2.o(.text);
|
||||
src/code_801AFA4.o(.text);
|
||||
asm/code_801AFA4.o(.text);
|
||||
src/code_801B3C0.o(.text);
|
||||
asm/code_801B3C0.o(.text);
|
||||
src/code_801C620.o(.text);
|
||||
@@ -129,6 +128,7 @@ SECTIONS {
|
||||
asm/wonder_mail_2.o(.text);
|
||||
src/wonder_mail_3.o(.text);
|
||||
asm/wonder_mail_3.o(.text);
|
||||
src/wonder_mail_802DF88.o(.text);
|
||||
src/mailbox.o(.text);
|
||||
asm/mailbox.o(.text);
|
||||
src/mailbox_1.o(.text);
|
||||
|
||||
@@ -247,7 +247,6 @@ s32 GetNumMonsAbleToLearnItemMove(void)
|
||||
s32 team [MAX_TEAM_MEMBERS];
|
||||
struct PokemonStruct *preload;
|
||||
|
||||
|
||||
length = sub_808D580(team);
|
||||
gUnknown_203B22C->monsAbleToLearnMove = 0;
|
||||
|
||||
@@ -263,3 +262,22 @@ s32 GetNumMonsAbleToLearnItemMove(void)
|
||||
}
|
||||
return gUnknown_203B22C->monsAbleToLearnMove;
|
||||
}
|
||||
|
||||
// Unused
|
||||
bool8 sub_801B374(u8 itemIndex)
|
||||
{
|
||||
u16 moveID;
|
||||
struct PokemonStruct *puVar4;
|
||||
s32 iVar5;
|
||||
|
||||
puVar4 = &gRecruitedPokemonRef->pokemon[0];
|
||||
moveID = GetItemMove(itemIndex);
|
||||
|
||||
for(iVar5 = 0; iVar5 < NUM_SPECIES; iVar5++, puVar4++)
|
||||
{
|
||||
if((puVar4->unk0 >> 1 & 1) != 0)
|
||||
if(CanMonLearnMove(moveID, puVar4->speciesNum))
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "pokemon.h"
|
||||
#include "text.h"
|
||||
#include "subStruct_203B240.h"
|
||||
|
||||
@@ -8,7 +10,7 @@ struct unkStruct_203B240
|
||||
{
|
||||
// size: 0x94
|
||||
s32 state;
|
||||
u8 unk4;
|
||||
u8 chosenIQSkill;
|
||||
u8 fill5[3];
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
@@ -45,17 +47,33 @@ extern void sub_8013F84();
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern char * GetIQSkillName(u8 r0);
|
||||
extern char * GetIQSkillDescription(u8 r0);
|
||||
extern s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ);
|
||||
|
||||
void sub_801C6D0(s32);
|
||||
void sub_801C7D4();
|
||||
void sub_801C6E4();
|
||||
void sub_801C848();
|
||||
|
||||
u32 sub_801C620(u8 param_1)
|
||||
bool8 HasNoAvailIQSkills(s16 species)
|
||||
{
|
||||
s32 species_s32;
|
||||
u8 iqSkillBuffer[NUM_IQ_SKILLS];
|
||||
struct PokemonStruct *pokeStruct;
|
||||
|
||||
species_s32 = species;
|
||||
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[species_s32];
|
||||
if(GetNumAvailableIQSkills(iqSkillBuffer, pokeStruct->IQ) == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_801C620(u8 iqSkill)
|
||||
{
|
||||
ResetSprites(1);
|
||||
gUnknown_203B240 = MemoryAlloc(sizeof(struct unkStruct_203B240),8);
|
||||
gUnknown_203B240->unk4 = param_1;
|
||||
gUnknown_203B240->chosenIQSkill = iqSkill;
|
||||
sub_801317C(&gUnknown_203B240->unk88);
|
||||
gUnknown_203B240->unk24 = 0;
|
||||
sub_80140B4(gUnknown_203B240->unk28);
|
||||
@@ -109,12 +127,12 @@ void sub_801C6E4(void)
|
||||
case 0:
|
||||
sub_8008C54(gUnknown_203B240->unk24);
|
||||
sub_80073B8(gUnknown_203B240->unk24);
|
||||
skillName = GetIQSkillName(gUnknown_203B240->unk4);
|
||||
skillName = GetIQSkillName(gUnknown_203B240->chosenIQSkill);
|
||||
strcpy(gUnknown_202DE58,skillName);
|
||||
xxx_format_and_draw(16,0,gUnknown_80DBE2C,0,0); // {ARG_MOVE_ITEM_0}
|
||||
xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk24,0);
|
||||
xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->chosenIQSkill),gUnknown_203B240->unk24,0);
|
||||
sub_80073E0(gUnknown_203B240->unk24);
|
||||
gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk10);
|
||||
gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->chosenIQSkill),gUnknown_203B240->unk10);
|
||||
gUnknown_203B240->unk20 = 0;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
@@ -25,34 +25,25 @@ extern void SendMessage(u32, const char *);
|
||||
|
||||
extern const char *gUnknown_80FD040; // It became brighter on the floor
|
||||
|
||||
struct unk8049590
|
||||
{
|
||||
u32 unk0;
|
||||
u16 unk4;
|
||||
};
|
||||
|
||||
extern struct unk8049590 *GetMapEntity(u32, u32);
|
||||
extern struct MapTile *GetMapEntity(u32, u32);
|
||||
|
||||
// Luminous Orb???
|
||||
void sub_804002C(u32 param_1)
|
||||
void HandleLuminousOrbAction(u32 param_1)
|
||||
{
|
||||
struct unk8049590 *iVar1;
|
||||
int innerCounter;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
struct MapTile *mapTile;
|
||||
int XCoord;
|
||||
int YCoord;
|
||||
|
||||
gDungeonGlobalData->unk1820B = 1;
|
||||
iVar3 = 0;
|
||||
do {
|
||||
innerCounter = 0;
|
||||
iVar4 = iVar3 + 1;
|
||||
do {
|
||||
iVar1 = GetMapEntity(innerCounter, iVar3);
|
||||
iVar1->unk4 = iVar1->unk4 | 1;
|
||||
innerCounter++;
|
||||
} while (innerCounter < 0x38);
|
||||
iVar3 = iVar4;
|
||||
} while (iVar4 < 0x20);
|
||||
|
||||
for(YCoord = 0; YCoord <= DUNGEON_MAX_SIZE_Y; YCoord++)
|
||||
{
|
||||
for(XCoord = 0; XCoord <= DUNGEON_MAX_SIZE_X; XCoord++)
|
||||
{
|
||||
mapTile = GetMapEntity(XCoord, YCoord);
|
||||
mapTile->unk4 = mapTile->unk4 | 1;
|
||||
}
|
||||
}
|
||||
sub_803F580(0);
|
||||
sub_8049ED4();
|
||||
sub_8040A84();
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#include "global.h"
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
extern void sub_80526D0(u8 r0);
|
||||
extern u8 sub_8045888(u32 r0);
|
||||
extern void sub_80523A8(u32 r0, u32 r1, u8 r2);
|
||||
extern u8 sub_8052DC0(u32);
|
||||
extern u8 sub_8045888(struct DungeonEntity *r0);
|
||||
extern void sub_80523A8(struct DungeonEntity *r0, u32 r1, u8 r2);
|
||||
extern u8 sub_8052DC0(struct DungeonEntity *);
|
||||
extern u8 sub_803F428(u32);
|
||||
|
||||
void sub_805229C(void)
|
||||
@@ -11,26 +12,26 @@ void sub_805229C(void)
|
||||
return sub_80526D0(0x50);
|
||||
}
|
||||
|
||||
void SendMessage(u32 r0, u32 r1)
|
||||
void SendMessage(struct DungeonEntity *r0, u32 r1)
|
||||
{
|
||||
if (sub_8045888(r0) != 0){
|
||||
sub_80523A8(r0, r1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80522C8(u32 r0, u32 r1)
|
||||
void sub_80522C8(struct DungeonEntity *r0, u32 r1)
|
||||
{
|
||||
if (sub_8045888(r0) != 0){
|
||||
sub_80523A8(r0, r1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80522E8(u32 r0, u32 r1)
|
||||
void sub_80522E8(struct DungeonEntity *r0, u32 r1)
|
||||
{
|
||||
sub_80523A8(r0, r1, 0);
|
||||
}
|
||||
|
||||
void sub_80522F4(u32 r0, u32 r1, u32 r2)
|
||||
void sub_80522F4(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 r2)
|
||||
{
|
||||
u8 temp;
|
||||
u32 temp_reg;
|
||||
@@ -48,7 +49,7 @@ void sub_80522F4(u32 r0, u32 r1, u32 r2)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_805232C(u32 r0, u32 r1, u32 r2)
|
||||
void sub_805232C(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 r2)
|
||||
{
|
||||
u8 temp;
|
||||
u32 temp_reg;
|
||||
@@ -66,7 +67,7 @@ void sub_805232C(u32 r0, u32 r1, u32 r2)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8052364(u32 r0, u32 r1, u32 r2)
|
||||
void sub_8052364(struct DungeonEntity *r0, u32 r1, u32 r2)
|
||||
{
|
||||
u8 temp;
|
||||
u32 temp_reg;
|
||||
@@ -84,7 +85,7 @@ void sub_8052364(u32 r0, u32 r1, u32 r2)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_805239C(u32 r0, u32 r1)
|
||||
void sub_805239C(struct DungeonEntity *r0, u32 r1)
|
||||
{
|
||||
sub_80523A8(r0, r1, 1);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "constants/friend_area.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/direction.h"
|
||||
#include "map.h"
|
||||
|
||||
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
|
||||
extern struct DungeonEntity *sub_8085680(u32);
|
||||
@@ -91,7 +92,7 @@ extern void sub_804539C(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_8042B0C(struct DungeonEntity *);
|
||||
extern void SetFacingDirection(struct DungeonEntity *, u32);
|
||||
extern void sub_8052910(u32 *);
|
||||
extern void DisplayDungeonDialogue(u32 *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern u8 EntityExists(struct DungeonEntity *);
|
||||
extern u8 HasRecruitedMon(u32);
|
||||
@@ -114,10 +115,10 @@ extern void sub_8085EB0();
|
||||
extern void sub_808563C(void *);
|
||||
extern void sub_80858AC(u32 *, u32);
|
||||
|
||||
void sub_808C5AC(struct DungeonEntity *r0);
|
||||
void SetupDeoxysFightHP(struct DungeonEntity *r0);
|
||||
void sub_808C550(void);
|
||||
void sub_808C590(struct DungeonEntity *r0);
|
||||
void sub_808C5A0(struct DungeonEntity *r0);
|
||||
void SetupDeoxysFacingDirection(struct DungeonEntity *r0);
|
||||
void sub_808C9B0();
|
||||
void sub_808C8E0(struct DungeonEntity *param_1);
|
||||
void sub_808C360(void);
|
||||
@@ -138,16 +139,7 @@ extern void sub_8049ED4();
|
||||
extern void sub_8040A84();
|
||||
extern void sub_8086A54(struct DungeonEntity *);
|
||||
|
||||
struct unk8049590
|
||||
{
|
||||
u16 unk0;
|
||||
u16 fill2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u8 unk8;
|
||||
};
|
||||
|
||||
extern struct unk8049590 *GetMapEntity(u32, u32);
|
||||
extern struct MapTile *GetMapEntity(u32, u32);
|
||||
extern void sub_806BFC0(struct DungeonEntityData *, u32);
|
||||
|
||||
void sub_808BBA8(struct DungeonEntity *param_1)
|
||||
@@ -198,13 +190,13 @@ void JirachiWishGrantDialogue(struct DungeonEntity *param_1)
|
||||
|
||||
param_1->entityData->unk15D = 1;
|
||||
// Nnnnnnnnnn!
|
||||
sub_8052910(&gUnknown_81058A8);
|
||||
DisplayDungeonDialogue(&gUnknown_81058A8);
|
||||
PlaySoundEffect(0x375);
|
||||
sub_80861F8(0x67,param_1,1);
|
||||
PlaySoundEffect(0x2a8);
|
||||
uVar2 = sub_80861F8(0x68,param_1,0);
|
||||
// Taaaaaaaah!
|
||||
sub_8052910(&gUnknown_81058C4);
|
||||
DisplayDungeonDialogue(&gUnknown_81058C4);
|
||||
if (sub_800E9A8(uVar2) != 0) {
|
||||
sub_800DC14(uVar2);
|
||||
}
|
||||
@@ -214,12 +206,12 @@ void JirachiWishGrantDialogue(struct DungeonEntity *param_1)
|
||||
|
||||
void sub_808BCE4(void)
|
||||
{
|
||||
struct unk8049590 *puVar1;
|
||||
struct MapTile *puVar1;
|
||||
|
||||
puVar1 = GetMapEntity(gDungeonGlobalData->unkE23C, gDungeonGlobalData->unkE23E);
|
||||
puVar1->unk0 &= 0xfffc;
|
||||
puVar1->unk0 |= 16;
|
||||
puVar1->unk0 &= 0xfdff;
|
||||
puVar1->MapTileUnion.tileFlags_u16 &= 0xfffc;
|
||||
puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_MAP_EDGE;
|
||||
puVar1->MapTileUnion.tileFlags_u16 &= 0xfdff;
|
||||
sub_8049884();
|
||||
sub_8049B8C();
|
||||
sub_8049ED4();
|
||||
@@ -228,13 +220,13 @@ void sub_808BCE4(void)
|
||||
|
||||
void sub_808BD38(void)
|
||||
{
|
||||
struct unk8049590 *puVar1;
|
||||
struct MapTile *puVar1;
|
||||
|
||||
puVar1 = GetMapEntity(gDungeonGlobalData->unkE23C, gDungeonGlobalData->unkE23E);
|
||||
puVar1->unk0 &= 0xfffc;
|
||||
puVar1->unk0 |= 1;
|
||||
puVar1->unk0 &= 0xffef;
|
||||
puVar1->unk0 |= (0x200);
|
||||
puVar1->MapTileUnion.tileFlags_u16 &= 0xfffc;
|
||||
puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_FLOOR;
|
||||
puVar1->MapTileUnion.tileFlags_u16 &= 0xffef;
|
||||
puVar1->MapTileUnion.tileFlags_u16 |= TILE_TYPE_STAIRS;
|
||||
puVar1->unk8 = 1;
|
||||
sub_8049884();
|
||||
sub_8049B8C();
|
||||
@@ -284,7 +276,7 @@ void sub_808BDEC(void)
|
||||
LugiaEntity = sub_8085680(0x1b);
|
||||
sub_8083F14();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
if (HasRecruitedMon(SPECIES_LUGIA)) {
|
||||
sub_8083E88(0x23);
|
||||
@@ -320,26 +312,26 @@ void LugiaPreFightDialogue(void)
|
||||
else {
|
||||
sub_8083F14();
|
||||
sub_8086448();
|
||||
sub_8052910(&gUnknown_8105E88);
|
||||
DisplayDungeonDialogue(&gUnknown_8105E88);
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
sub_808C0CC();
|
||||
sub_8052910(&gUnknown_8105EF8);
|
||||
DisplayDungeonDialogue(&gUnknown_8105EF8);
|
||||
sub_808BFA0();
|
||||
sub_8052910(&gUnknown_8105F38);
|
||||
DisplayDungeonDialogue(&gUnknown_8105F38);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8105F74);
|
||||
DisplayDungeonDialogue(&gUnknown_8105F74);
|
||||
PlaySoundEffect(0x1f8);
|
||||
sub_80861D4(LugiaEntity,0xd,0);
|
||||
sub_803E708(0x2b,0x46);
|
||||
sub_80861B8(LugiaEntity,0,0);
|
||||
sub_8052910(&gUnknown_8105FA0);
|
||||
DisplayDungeonDialogue(&gUnknown_8105FA0);
|
||||
sub_808BFA0();
|
||||
sub_8052910(&gUnknown_8105FD8);
|
||||
DisplayDungeonDialogue(&gUnknown_8105FD8);
|
||||
sub_808C02C();
|
||||
sub_8085C54(0xffffff06,0xffffff06,0xffffff06,1,0);
|
||||
sub_8083F14();
|
||||
sub_80861D4(LugiaEntity,7,0);
|
||||
sub_8052910(&gUnknown_8106024);
|
||||
DisplayDungeonDialogue(&gUnknown_8106024);
|
||||
sub_808BFA0();
|
||||
SetupBossFightHP(LugiaEntity,800,0x20);
|
||||
sub_8083E88(0x23);
|
||||
@@ -424,7 +416,7 @@ void sub_808C10C(void)
|
||||
KyogreEntity = sub_8085680(0x1c);
|
||||
sub_8083F14();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
if (HasRecruitedMon(SPECIES_KYOGRE)) {
|
||||
sub_8068FE0(KyogreEntity,0x21c,0);
|
||||
}
|
||||
@@ -461,35 +453,35 @@ void KyogrePreFightDialogue(void)
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
SpriteLookAroundEffect(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_81062A8);
|
||||
DisplayDungeonDialogue(&gUnknown_81062A8);
|
||||
sub_803E708(10,0x46);
|
||||
gDungeonGlobalData->unk2 = 1;
|
||||
}
|
||||
else {
|
||||
sub_8052910(&gUnknown_8106074);
|
||||
DisplayDungeonDialogue(&gUnknown_8106074);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_81060BC);
|
||||
DisplayDungeonDialogue(&gUnknown_81060BC);
|
||||
sub_803E708(10,0x46);
|
||||
nullsub_99();
|
||||
sub_803E708(10,0x46);
|
||||
// Gwwwwwooooooooh
|
||||
sub_8052910(&gUnknown_8106104);
|
||||
DisplayDungeonDialogue(&gUnknown_8106104);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8083EA8(0x23,0x3c);
|
||||
sub_808C360();
|
||||
// My duels against {ARG_POKEMON_3} (Groudon) left us both exhausted
|
||||
sub_8052910(&gUnknown_8106140);
|
||||
DisplayDungeonDialogue(&gUnknown_8106140);
|
||||
KyogreScreenFlash();
|
||||
// I am {ARG_POKEMON_2} (Kyogre)!
|
||||
// The lord of the sea!
|
||||
sub_8052910(&gUnknown_8106214);
|
||||
DisplayDungeonDialogue(&gUnknown_8106214);
|
||||
KyogreScreenFlash();
|
||||
// Witness the destructive force of my waves!
|
||||
sub_8052910(&gUnknown_8106244);
|
||||
DisplayDungeonDialogue(&gUnknown_8106244);
|
||||
KyogreScreenFlash();
|
||||
// Marvel at my awesome
|
||||
// power!
|
||||
sub_8052910(&gUnknown_810627C);
|
||||
DisplayDungeonDialogue(&gUnknown_810627C);
|
||||
sub_803E708(10,0x46);
|
||||
SetupBossFightHP(KyogreEntity,600,0xb);
|
||||
sub_8083E88(0x23);
|
||||
@@ -541,14 +533,14 @@ void sub_808C3A0(void)
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
sub_8083F14();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
if (HasRecruitedMon(SPECIES_DEOXYS_NORMAL)) {
|
||||
sub_808563C(sub_808C590);
|
||||
}
|
||||
else {
|
||||
gDungeonGlobalData->unk7 = 1;
|
||||
sub_808563C(sub_808C5A0);
|
||||
sub_808563C(SetupDeoxysFacingDirection);
|
||||
}
|
||||
sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_DEOXYS_NORMAL);
|
||||
@@ -574,16 +566,16 @@ void DeoxysPreFightDialogue(void)
|
||||
sub_80866C4(&gUnknown_81063C4);
|
||||
}
|
||||
else {
|
||||
sub_8052910(&gUnknown_81062B4);
|
||||
DisplayDungeonDialogue(&gUnknown_81062B4);
|
||||
sub_8083EA8(0x1a,0x3c);
|
||||
sub_808C550();
|
||||
sub_8052910(&gUnknown_81062E8);
|
||||
DisplayDungeonDialogue(&gUnknown_81062E8);
|
||||
DeoxysScreenFlash();
|
||||
sub_8052910(&gUnknown_8106368);
|
||||
DisplayDungeonDialogue(&gUnknown_8106368);
|
||||
DeoxysScreenFlash();
|
||||
sub_8052910(&gUnknown_8106390);
|
||||
DisplayDungeonDialogue(&gUnknown_8106390);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808563C(sub_808C5AC);
|
||||
sub_808563C(SetupDeoxysFightHP);
|
||||
sub_80858AC(&LeaderEntity->posPixelX,0x10);
|
||||
}
|
||||
}
|
||||
@@ -626,12 +618,12 @@ void sub_808C590(struct DungeonEntity *r0)
|
||||
sub_8068FE0(r0, 0x21C, 0);
|
||||
}
|
||||
|
||||
void sub_808C5A0(struct DungeonEntity *r0)
|
||||
void SetupDeoxysFacingDirection(struct DungeonEntity *r0)
|
||||
{
|
||||
SetFacingDirection(r0, DIRECTION_SOUTH);
|
||||
}
|
||||
|
||||
void sub_808C5AC(struct DungeonEntity *r0)
|
||||
void SetupDeoxysFightHP(struct DungeonEntity *r0)
|
||||
{
|
||||
SetupBossFightHP(r0, 950, 0x20);
|
||||
}
|
||||
@@ -648,7 +640,7 @@ void sub_808C5C0(void)
|
||||
CelebiEntity = sub_8085680(0x1e);
|
||||
sub_8083E88(0x7f);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
SetFacingDirection(CelebiEntity, DIRECTION_SOUTH);
|
||||
sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
|
||||
uVar3 = sub_803F994();
|
||||
@@ -678,7 +670,7 @@ void CelebiJoinDialogue(void)
|
||||
SpriteLookAroundEffect(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
// .........
|
||||
sub_8052910(&gUnknown_810663C);
|
||||
DisplayDungeonDialogue(&gUnknown_810663C);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -687,14 +679,14 @@ void CelebiJoinDialogue(void)
|
||||
sub_80862BC(LeaderEntity);
|
||||
sub_803E708(10,0x46);
|
||||
// Oh? There's someone there.
|
||||
sub_8052910(&gUnknown_81063D0);
|
||||
DisplayDungeonDialogue(&gUnknown_81063D0);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
sub_8086598();
|
||||
// The Time-Traveling Pokemon {ARG_POKEMON_2} (Celebi)!
|
||||
sub_8052910(&gUnknown_8106400);
|
||||
DisplayDungeonDialogue(&gUnknown_8106400);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
|
||||
sub_803E708(0x14,0x46);
|
||||
@@ -702,7 +694,7 @@ void CelebiJoinDialogue(void)
|
||||
sub_803E708(4,0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(CelebiEntity,10,DIRECTION_SOUTH);
|
||||
sub_8052910(&gUnknown_810643C);
|
||||
DisplayDungeonDialogue(&gUnknown_810643C);
|
||||
sub_803E708(10,0x46);
|
||||
state = 0;
|
||||
do {
|
||||
@@ -730,11 +722,11 @@ void CelebiJoinDialogue(void)
|
||||
sub_803E708(0x1a,0x46);
|
||||
PlaySoundEffect(0x1d5);
|
||||
sub_803E708(0x1c,0x46);
|
||||
sub_8052910(&gUnknown_8106468);
|
||||
DisplayDungeonDialogue(&gUnknown_8106468);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806FDF4(LeaderEntity,CelebiEntity,&CelebiEntity);
|
||||
sub_8083E88(0x7f);
|
||||
sub_8052910(&gUnknown_810648C);
|
||||
DisplayDungeonDialogue(&gUnknown_810648C);
|
||||
sub_803E708(10,0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_80861D4(CelebiEntity,0xd,0);
|
||||
@@ -743,7 +735,7 @@ void CelebiJoinDialogue(void)
|
||||
sub_803E708(0x1a,0x46);
|
||||
PlaySoundEffect(0x1d5);
|
||||
sub_803E708(0x1b,0x46);
|
||||
sub_8052910(&gUnknown_81064BC);
|
||||
DisplayDungeonDialogue(&gUnknown_81064BC);
|
||||
sub_803E708(10,0x46);
|
||||
state = 2;
|
||||
}
|
||||
@@ -763,15 +755,15 @@ void CelebiJoinDialogue(void)
|
||||
else
|
||||
{
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8106500);
|
||||
DisplayDungeonDialogue(&gUnknown_8106500);
|
||||
sub_80861F8(0x3e,CelebiEntity,1);
|
||||
sub_803E708(0x18,0x46);
|
||||
sub_80861F8(0x3e,CelebiEntity,1);
|
||||
sub_803E708(0xe,0x46);
|
||||
sub_8052910(&gUnknown_8106534);
|
||||
DisplayDungeonDialogue(&gUnknown_8106534);
|
||||
sub_803E708(10,0x46);
|
||||
sub_808C8E0(CelebiEntity);
|
||||
sub_8052910(&gUnknown_8106560);
|
||||
DisplayDungeonDialogue(&gUnknown_8106560);
|
||||
sub_803E708(10,0x46);
|
||||
state = 2;
|
||||
}
|
||||
@@ -820,7 +812,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _0808C67C\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tb _0808C8AC\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0808C67C: .4byte gUnknown_810663C\n"
|
||||
@@ -836,7 +828,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _0808C71C\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -845,7 +837,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tbl sub_8086598\n"
|
||||
"\tbl sub_8086598\n"
|
||||
"\tldr r0, _0808C720\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tldr r4, _0808C724\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl PlaySoundEffect\n"
|
||||
@@ -869,7 +861,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r2, 0\n"
|
||||
"\tbl sub_806CDD4\n"
|
||||
"\tldr r0, _0808C728\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -945,7 +937,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _0808C818\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -956,7 +948,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r0, 0x7F\n"
|
||||
"\tbl sub_8083E88\n"
|
||||
"\tldr r0, _0808C81C\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -1012,7 +1004,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _0808C8D0\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tldr r1, [sp]\n"
|
||||
"\tmovs r0, 0x3E\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
@@ -1028,7 +1020,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tldr r0, _0808C8D4\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -1036,7 +1028,7 @@ void CelebiJoinDialogue(void)
|
||||
"\tbl sub_808C8E0\n"
|
||||
"\tldr r0, _0808C8D8\n"
|
||||
"_0808C898:\n"
|
||||
"\tbl sub_8052910\n"
|
||||
"\tbl DisplayDungeonDialogue\n"
|
||||
"\tmovs r0, 0xA\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
@@ -1116,7 +1108,7 @@ void sub_808C998(void)
|
||||
{
|
||||
// Defeat the opposing team to win
|
||||
// Be careful, your opponents are tough
|
||||
sub_8052910(&gUnknown_8106720);
|
||||
DisplayDungeonDialogue(&gUnknown_8106720);
|
||||
sub_803E708(0xA, 0x46);
|
||||
}
|
||||
|
||||
@@ -1135,7 +1127,7 @@ void sub_808C9C4(void)
|
||||
MedichamEntity = sub_8085680(7);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
SetFacingDirection(MedichamEntity, DIRECTION_SOUTH);
|
||||
sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
|
||||
@@ -1152,12 +1144,12 @@ void MedichamRescueDialogue(void)
|
||||
SpriteLookAroundEffect(MedichamEntity);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// Oh my I can't seem to find a way out...
|
||||
sub_8052910(&gUnknown_8106778);
|
||||
DisplayDungeonDialogue(&gUnknown_8106778);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_80869E4(MedichamEntity, 4, 2, 4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// What am I to do...?
|
||||
sub_8052910(&gUnknown_81067BC);
|
||||
DisplayDungeonDialogue(&gUnknown_81067BC);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086448();
|
||||
sub_8086598();
|
||||
@@ -1165,7 +1157,7 @@ void MedichamRescueDialogue(void)
|
||||
sub_80862BC(MedichamEntity);
|
||||
sub_803E708(0x20, 0x46);
|
||||
sub_80869E4(MedichamEntity, 4, 2, 0);
|
||||
sub_8052910(&gUnknown_81067E0);
|
||||
DisplayDungeonDialogue(&gUnknown_81067E0);
|
||||
sub_803E708(0xA, 0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(MedichamEntity, 0xA, DIRECTION_SOUTH);
|
||||
@@ -1179,7 +1171,7 @@ void MedichamRescueDialogue(void)
|
||||
// I am so lucky
|
||||
//
|
||||
// There appears to be no one here
|
||||
sub_8052910(&gUnknown_8106834);
|
||||
DisplayDungeonDialogue(&gUnknown_8106834);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_806CDD4(MedichamEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
@@ -1204,7 +1196,7 @@ void sub_808CB5C(void)
|
||||
MedichamEntity = sub_8085680(7);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_8068FE0(MedichamEntity, 0x21C, 0);
|
||||
sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM);
|
||||
@@ -1223,7 +1215,7 @@ void sub_808CBB0(void)
|
||||
SmeargleEntity = sub_8085680(0x1F);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
SetFacingDirection(SmeargleEntity, DIRECTION_SOUTH);
|
||||
sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
|
||||
@@ -1241,14 +1233,14 @@ void SmeargleRescueDialogue(void)
|
||||
sub_803E708(0xA, 0x46);
|
||||
// Ohhh...
|
||||
// I've lost my bearings
|
||||
sub_8052910(&gUnknown_810688C);
|
||||
DisplayDungeonDialogue(&gUnknown_810688C);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_80869E4(SmeargleEntity, 4, 2, 4);
|
||||
sub_803E708(0xA, 0x46);
|
||||
// I can't get out...
|
||||
// I'm hungry...
|
||||
// I'm in trouble
|
||||
sub_8052910(&gUnknown_81068D0);
|
||||
DisplayDungeonDialogue(&gUnknown_81068D0);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086448();
|
||||
sub_8086598();
|
||||
@@ -1257,7 +1249,7 @@ void SmeargleRescueDialogue(void)
|
||||
sub_803E708(0x20, 0x46);
|
||||
sub_80869E4(SmeargleEntity, 4, 2, 0);
|
||||
// Oh! You are?
|
||||
sub_8052910(&gUnknown_8106918);
|
||||
DisplayDungeonDialogue(&gUnknown_8106918);
|
||||
sub_803E708(0xA, 0x46);
|
||||
PlaySoundEffect(0x1c7);
|
||||
sub_806CDD4(SmeargleEntity, 0xA, DIRECTION_SOUTH);
|
||||
@@ -1269,7 +1261,7 @@ void SmeargleRescueDialogue(void)
|
||||
sub_803E708(0x14, 0x46);
|
||||
// Did you maybe come to rescue me?
|
||||
// Am I glad to see you
|
||||
sub_8052910(&gUnknown_8106934);
|
||||
DisplayDungeonDialogue(&gUnknown_8106934);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_806CDD4(SmeargleEntity, 0, DIRECTION_SOUTH);
|
||||
for(counter = 0x17; counter >= 0; counter--)
|
||||
@@ -1295,7 +1287,7 @@ void sub_808CD44(void)
|
||||
SmeargleEntity = sub_8085680(0x1F);
|
||||
sub_8083E88(0x72);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_8068FE0(SmeargleEntity, 0x21C, 0);
|
||||
sub_8085860(LeaderEntity->posWorldX, LeaderEntity->posWorldY - 3);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@ extern void sub_8085C54(u32, u32, u32, u32, u32);
|
||||
extern void PlaySoundEffect(u32);
|
||||
extern struct DungeonEntity *xxx_call_GetLeaderEntity(void);
|
||||
void SpriteLookAroundEffect(struct DungeonEntity *r0);
|
||||
extern void sub_8052910(u32);
|
||||
extern void DisplayDungeonDialogue(u32);
|
||||
void sub_8086494();
|
||||
|
||||
extern u32 gUnknown_8107314[];
|
||||
@@ -171,16 +171,16 @@ void sub_8086494(void)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
sub_8085930(3);
|
||||
sub_8085930(DIRECTION_NORTHEAST);
|
||||
sub_803E708(4, 0x46);
|
||||
|
||||
sub_8085930(2);
|
||||
sub_8085930(DIRECTION_EAST);
|
||||
sub_803E708(4, 0x46);
|
||||
|
||||
sub_8085930(1);
|
||||
sub_8085930(DIRECTION_SOUTHEAST);
|
||||
sub_803E708(4, 0x46);
|
||||
|
||||
sub_8085930(0);
|
||||
sub_8085930(DIRECTION_SOUTH);
|
||||
sub_803E708(4, 0x46);
|
||||
|
||||
sub_80855E4(sub_80863C8);
|
||||
@@ -312,7 +312,7 @@ void sub_80866C4(u32 r0)
|
||||
|
||||
SpriteLookAroundEffect(xxx_call_GetLeaderEntity());
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8052910(r0);
|
||||
DisplayDungeonDialogue(r0);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_8086494();
|
||||
gDungeonGlobalData->unk2 = 1;
|
||||
@@ -461,16 +461,16 @@ void sub_8086910(struct DungeonEntity *r0)
|
||||
|
||||
void sub_808692C(void)
|
||||
{
|
||||
sub_80859F0(5);
|
||||
sub_80859F0(DIRECTION_NORTHWEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
|
||||
sub_80859F0(6);
|
||||
sub_80859F0(DIRECTION_WEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
|
||||
sub_80859F0(7);
|
||||
sub_80859F0(DIRECTION_SOUTHWEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
|
||||
sub_80859F0(0);
|
||||
sub_80859F0(DIRECTION_SOUTH);
|
||||
sub_803E708(0x4, 0x46);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "constants/direction.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "pokemon.h"
|
||||
@@ -22,7 +23,7 @@ extern void sub_8085860(s32 r0, u32 r1);
|
||||
extern void sub_8068FE0(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_8097FA8(u32);
|
||||
extern void sub_80858AC(void *, u32);
|
||||
extern void sub_8052910(u8 *);
|
||||
extern void DisplayDungeonDialogue(u8 *);
|
||||
extern void sub_806CDD4(struct DungeonEntity *, u32, u32);
|
||||
extern void sub_80869E4(struct DungeonEntity *, u32, u32, u32);
|
||||
extern void sub_8083E88(u32);
|
||||
@@ -124,7 +125,7 @@ void sub_8086B14(void)
|
||||
sub_8083E88(0x72);
|
||||
sub_8085374();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_8086A3C(SkarmoryEntity);
|
||||
DiglettEntity->entityData->unk15C = 1;
|
||||
@@ -146,7 +147,7 @@ void sub_8086B94(void)
|
||||
sub_8068FE0(SkarmoryEntity,0x21c,0);
|
||||
sub_8068FE0(DiglettEntity,0x21c,0);
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY);
|
||||
}
|
||||
|
||||
@@ -184,33 +185,33 @@ void SkarmoryPreFightDialogue(void)
|
||||
sub_80862BC(PartnerEntity);
|
||||
sub_803E708(0x20,0x46);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100768);
|
||||
DisplayDungeonDialogue(&gUnknown_8100768);
|
||||
sub_80858AC(&local_1c,0x40);
|
||||
sub_803E708(0x40,0x46);
|
||||
sub_80858AC(&local_20,0x30);
|
||||
sub_8052910(&gUnknown_8100798);
|
||||
DisplayDungeonDialogue(&gUnknown_8100798);
|
||||
sub_803E708(10,0x46);
|
||||
DiglettEntity->entityData->unk15D = 1;
|
||||
sub_80858AC(&local_1c,0x30);
|
||||
sub_8052910(&gUnknown_8100820); // Diglett: ...I...\nI'm scared.
|
||||
DisplayDungeonDialogue(&gUnknown_8100820); // Diglett: ...I...\nI'm scared.
|
||||
sub_803E708(10,0x46);
|
||||
sub_80858AC(&local_20,0x20);
|
||||
sub_803E708(0x20,0x46);
|
||||
sub_8086E74(SkarmoryEntity);
|
||||
sub_8052910(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
DisplayDungeonDialogue(&gUnknown_8100844); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100880);
|
||||
DisplayDungeonDialogue(&gUnknown_8100880);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100928);
|
||||
DisplayDungeonDialogue(&gUnknown_8100928);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100A04);
|
||||
DisplayDungeonDialogue(&gUnknown_8100A04);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
sub_8052910(&gUnknown_8100B80);
|
||||
DisplayDungeonDialogue(&gUnknown_8100B80);
|
||||
sub_803E708(10,0x46);
|
||||
sub_80869E4(PartnerEntity,4,1,2);
|
||||
sub_80869E4(LeaderEntity,4,2,6);
|
||||
sub_8052910(&gUnknown_8100BC0);
|
||||
DisplayDungeonDialogue(&gUnknown_8100BC0);
|
||||
sub_80869E4(PartnerEntity,4,2,4);
|
||||
sub_80869E4(LeaderEntity,4,1,4);
|
||||
sub_803E708(10,0x46);
|
||||
@@ -232,12 +233,12 @@ void SkarmoryReFightDialogue(void)
|
||||
sub_803E708(10,0x46);
|
||||
sub_8086E74(SkarmoryEntity);
|
||||
sub_80858AC(&local_14,0x10);
|
||||
sub_8052910(&gUnknown_8100C90);
|
||||
DisplayDungeonDialogue(&gUnknown_8100C90);
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100CBC);
|
||||
DisplayDungeonDialogue(&gUnknown_8100CBC);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
sub_8052910(&gUnknown_8100CDC);
|
||||
DisplayDungeonDialogue(&gUnknown_8100CDC);
|
||||
sub_803E708(10,0x46);
|
||||
sub_80858AC(&LeaderEntity->posPixelX,0x10);
|
||||
sub_8083E88(0xb);
|
||||
@@ -247,7 +248,7 @@ void sub_8086E40(void)
|
||||
{
|
||||
SpriteLookAroundEffect(xxx_call_GetLeaderEntity());
|
||||
sub_803E708(10,0x46);
|
||||
sub_8052910(&gUnknown_8100D3C);
|
||||
DisplayDungeonDialogue(&gUnknown_8100D3C);
|
||||
sub_803E708(10,0x46);
|
||||
gDungeonGlobalData->unk2 = 1;
|
||||
}
|
||||
@@ -268,7 +269,7 @@ void sub_8086E9C(void)
|
||||
sub_8083E88(0x72);
|
||||
sub_8085374();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_808563C(sub_8086A3C);
|
||||
sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
|
||||
@@ -283,7 +284,7 @@ void sub_8086F00(void)
|
||||
|
||||
LeaderEntity = xxx_call_GetLeaderEntity();
|
||||
sub_80854D4();
|
||||
sub_8085930(4);
|
||||
sub_8085930(DIRECTION_NORTH);
|
||||
sub_80855E4(sub_8086A3C);
|
||||
sub_8085860(LeaderEntity->posWorldX,LeaderEntity->posWorldY - 3);
|
||||
CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_METAPOD);
|
||||
|
||||
@@ -34,7 +34,7 @@ extern bool8 sub_809095C(u8);
|
||||
extern s32 sub_8090298(u8);
|
||||
extern bool8 sub_809017C(u8 *);
|
||||
extern s16 GetBaseSpecies(s16);
|
||||
extern bool8 sub_8092040(u8);
|
||||
extern bool8 IsInvalidItemReward(u8);
|
||||
extern u8 sub_803C1D0(u8 *, u8);
|
||||
extern bool8 IsNotMoneyOrUsedTMItem(u8);
|
||||
extern u8 xxx_bit_lut_lookup_8091E50(u8 ,u8 );
|
||||
@@ -107,11 +107,11 @@ bool8 IsValidWonderMail(struct WonderMail *WonderMailData)
|
||||
bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
{
|
||||
|
||||
if(data->missionType > DELIVER_ITEM)
|
||||
if(data->missionType > WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM)
|
||||
return FALSE;
|
||||
else
|
||||
{
|
||||
if(data->missionType == DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0)
|
||||
if(data->missionType == WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->unk2 > 9)
|
||||
@@ -141,11 +141,11 @@ bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
return FALSE;
|
||||
|
||||
// Item Delivery/Finding
|
||||
if((u8)(data->missionType - 1) > FIND_POKE)
|
||||
if((u8)(data->missionType - 1) > WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET)
|
||||
if(data->targetSpecies != data->clientSpecies)
|
||||
return FALSE;
|
||||
|
||||
if(sub_8092040(data->targetItem))
|
||||
if(IsInvalidItemReward(data->targetItem))
|
||||
return FALSE;
|
||||
if(IsThrowableItem(data->targetItem))
|
||||
return FALSE;
|
||||
@@ -153,13 +153,13 @@ bool8 ValidateWonderMail(struct WonderMail *data)
|
||||
return FALSE;
|
||||
|
||||
// Item finding
|
||||
if(data->missionType == 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, data->targetItem) == 0)
|
||||
return FALSE;
|
||||
|
||||
if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS)
|
||||
return FALSE;
|
||||
|
||||
if(sub_8092040(data->itemReward))
|
||||
if(IsInvalidItemReward(data->itemReward))
|
||||
return FALSE;
|
||||
|
||||
// Friend Area Reward
|
||||
|
||||
@@ -7,6 +7,17 @@
|
||||
#include "dungeon_pokemon_attributes_1.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
extern void CheckRunAwayVisualFlag(struct DungeonEntity *, u8 r1);
|
||||
|
||||
bool8 ShouldAvoidFirstHit(struct DungeonEntity *pokemon, bool8 forceAvoid)
|
||||
{
|
||||
if(!HasTactic(pokemon, TACTIC_AVOID_THE_FIRST_HIT))
|
||||
return FALSE;
|
||||
if(!forceAvoid)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon)
|
||||
{
|
||||
if (!EntityExists(pokemon))
|
||||
@@ -40,3 +51,13 @@ bool8 ShouldAvoidEnemies(struct DungeonEntity *pokemon)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 ShouldAvoidEnemies_2(struct DungeonEntity *pokemon, u8 r1)
|
||||
{
|
||||
if(ShouldAvoidEnemies(pokemon))
|
||||
{
|
||||
CheckRunAwayVisualFlag(pokemon, r1);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -27,12 +27,35 @@ extern u32 GetEntityType(struct DungeonEntity*);
|
||||
extern struct ItemSlot* GetItemData(struct DungeonEntity*);
|
||||
extern u32 EvaluateItem(struct DungeonEntity*, struct ItemSlot*, u8);
|
||||
extern bool8 ToolboxEnabled(struct DungeonEntityData*);
|
||||
extern void sub_8077274(struct DungeonEntity *, struct DungeonEntity *);
|
||||
extern bool8 EntityExists(struct DungeonEntity *);
|
||||
|
||||
extern s32 gNumPotentialTargets;
|
||||
extern u32 gPotentialTargetWeights[NUM_DIRECTIONS];
|
||||
extern u32 gPotentialTargetDirections[NUM_DIRECTIONS];
|
||||
extern struct TeamInventory *gTeamInventory_203B460;
|
||||
|
||||
extern struct DungeonGlobalData *gDungeonGlobalData;
|
||||
|
||||
void sub_807360C(struct DungeonEntity *pokemon)
|
||||
{
|
||||
s32 iVar2;
|
||||
struct DungeonEntity *entity;
|
||||
|
||||
for(iVar2 = 0; iVar2 < DUNGEON_MAX_POKEMON; iVar2++)
|
||||
{
|
||||
entity = gDungeonGlobalData->allPokemon[iVar2];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(entity->entityData->unk152 != 0)
|
||||
{
|
||||
entity->entityData->unk152 = 0;
|
||||
sub_8077274(entity, entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DecideUseItem(struct DungeonEntity *pokemon)
|
||||
{
|
||||
struct DungeonEntityData *pokemonData = pokemon->entityData;
|
||||
|
||||
@@ -54,3 +54,26 @@ bool8 CannotAct(struct DungeonEntity *pokemon)
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 CannotAttack(struct DungeonEntity *pokemon, u8 param_2)
|
||||
{
|
||||
struct DungeonEntityData *iVar3;
|
||||
|
||||
iVar3 = pokemon->entityData;
|
||||
if ((((((param_2 != '\0') ||
|
||||
(iVar3->sleepStatus == SLEEP_STATUS_SLEEPLESS)) ||
|
||||
(iVar3->sleepStatus == SLEEP_STATUS_YAWNING)) ||
|
||||
(iVar3->sleepStatus == SLEEP_STATUS_NONE)) &&
|
||||
((((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_FROZEN &&
|
||||
(iVar3->immobilizeStatus != IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE)) &&
|
||||
((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_WRAPPED_BY_FOE &&
|
||||
((iVar3->immobilizeStatus != IMMOBILIZE_STATUS_PETRIFIED &&
|
||||
(iVar3->volatileStatus != VOLATILE_STATUS_CRINGING)))))) &&
|
||||
(iVar3->volatileStatus != VOLATILE_STATUS_PAUSED)))) &&
|
||||
(((iVar3->volatileStatus != VOLATILE_STATUS_INFATUATED &&
|
||||
iVar3->nonVolatileStatus != NON_VOLATILE_STATUS_PARALYZED)) &&
|
||||
!ShouldAvoidEnemies(pokemon))) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "dungeon_movement.h"
|
||||
|
||||
#include "constants/dungeon_action.h"
|
||||
#include "constants/direction.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/status.h"
|
||||
#include "dungeon_global_data.h"
|
||||
@@ -10,6 +11,7 @@
|
||||
|
||||
extern char gAvailablePokemonNames[];
|
||||
extern char *gPtrCouldntBeUsedMessage;
|
||||
extern char *gPtrItsaMonsterHouseMessage;
|
||||
extern struct DungeonGlobalData *gDungeonGlobalData;
|
||||
|
||||
extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*);
|
||||
@@ -27,6 +29,132 @@ extern bool8 HasIQSkill(struct DungeonEntity*, u8);
|
||||
extern void DecideAttack(struct DungeonEntity*);
|
||||
extern bool8 GetIsMoving(s16);
|
||||
extern void MoveIfPossible(struct DungeonEntity*, bool8);
|
||||
extern u8 sub_8044B28(void);
|
||||
struct MapTile *sub_8045128(struct DungeonEntity *entity);
|
||||
extern void sub_807AB38(struct DungeonEntity *, u32);
|
||||
extern void sub_8041888(u32);
|
||||
extern u8 sub_803F428(s16 *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern struct DungeonEntity *GetLeaderEntity();
|
||||
struct ItemSlot *GetItemData(struct DungeonEntity *entity);
|
||||
u8 *GetTrapData(struct DungeonEntity *entity);
|
||||
u32 GetEntityType(struct DungeonEntity *entity);
|
||||
extern void TargetTileInFront(struct DungeonEntity *);
|
||||
|
||||
u32 sub_8075818(struct DungeonEntity *entity)
|
||||
{
|
||||
struct MapTile *tile;
|
||||
struct DungeonEntityData *entityData;
|
||||
struct DungeonEntity *subEntity;
|
||||
struct ItemSlot *item;
|
||||
u8 *trapData; // TODO: turn into struct when more research is done..
|
||||
u8 r1;
|
||||
|
||||
entityData = entity->entityData;
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
tile = sub_8045128(entity);
|
||||
if(HasIQSkill(entity, IQ_SKILL_SUPER_MOBILE))
|
||||
if(!(tile->MapTileUnion.tileFlags_u16 & 3))
|
||||
return 1;
|
||||
subEntity = tile->mapObject;
|
||||
if(subEntity != NULL)
|
||||
{
|
||||
switch(GetEntityType(subEntity))
|
||||
{
|
||||
case ENTITY_NONE:
|
||||
case ENTITY_POKEMON:
|
||||
case 4:
|
||||
case 5:
|
||||
break;
|
||||
case ENTITY_TRAP:
|
||||
trapData = GetTrapData(subEntity);
|
||||
r1 = 0;
|
||||
if(trapData[1] == 0)
|
||||
{
|
||||
if(!subEntity->visible || entityData->isEnemy)
|
||||
goto flag_check;
|
||||
else
|
||||
goto error;
|
||||
}
|
||||
else if(trapData[1] == 1)
|
||||
{
|
||||
if(!entityData->isEnemy)
|
||||
goto flag_check;
|
||||
else
|
||||
goto error;
|
||||
}
|
||||
else if(trapData[1] == 2)
|
||||
{
|
||||
if(!entityData->isEnemy)
|
||||
r1 = 1;
|
||||
}
|
||||
flag_check:
|
||||
if(r1 == 0)
|
||||
break;
|
||||
else
|
||||
goto error;
|
||||
case ENTITY_ITEM:
|
||||
if(!entityData->isLeader)
|
||||
{
|
||||
if(!(entityData->heldItem.itemFlags & ITEM_FLAG_EXISTS))
|
||||
{
|
||||
if(!(tile->MapTileUnion.tileFlags_u16 & 3))
|
||||
{
|
||||
if(entityData->isEnemy)
|
||||
break;
|
||||
else
|
||||
{
|
||||
item = GetItemData(subEntity);
|
||||
if(!(item->itemFlags & ITEM_FLAG_FOR_SALE))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
item = GetItemData(subEntity);
|
||||
if(!(item->itemFlags & ITEM_FLAG_FOR_SALE))
|
||||
{
|
||||
error:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_8075900(struct DungeonEntity *pokemon, u8 r1)
|
||||
{
|
||||
if(EntityExists(pokemon))
|
||||
{
|
||||
if(!pokemon->entityData->isEnemy)
|
||||
{
|
||||
if(!sub_8044B28())
|
||||
{
|
||||
if(!gDungeonGlobalData->monsterHouseActive)
|
||||
{
|
||||
if((sub_8045128(pokemon)->MapTileUnion.tileFlags_u16 & TILE_TYPE_MONSTER_HOUSE))
|
||||
{
|
||||
// It's a monster house!
|
||||
SendMessage(GetLeaderEntity(), gPtrItsaMonsterHouseMessage);
|
||||
gDungeonGlobalData->unk672 = 1;
|
||||
sub_807AB38(pokemon, r1);
|
||||
sub_8041888(0);
|
||||
if(sub_803F428(&pokemon->posWorldX) != 0)
|
||||
sub_803E708(0x78, 0x39);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DecideAction(struct DungeonEntity *pokemon)
|
||||
{
|
||||
@@ -35,7 +163,7 @@ void DecideAction(struct DungeonEntity *pokemon)
|
||||
{
|
||||
if (pokemonData->immobilizeStatus == IMMOBILIZE_STATUS_PETRIFIED)
|
||||
{
|
||||
SendImmobilizeEndMessage(pokemon, pokemon);
|
||||
SendImmobilizeEndMessage(pokemon, pokemon);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -147,3 +275,17 @@ void DecideAction(struct DungeonEntity *pokemon)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8075BA4(struct DungeonEntity *param_1,char param_2)
|
||||
{
|
||||
struct DungeonEntityData * iVar2 = param_1->entityData;
|
||||
|
||||
if ((param_2 != '\0') && (iVar2->volatileStatus == VOLATILE_STATUS_COWERING)) {
|
||||
iVar2->facingDir = (iVar2->facingDir + 4) & DIRECTION_MASK;
|
||||
TargetTileInFront(param_1);
|
||||
}
|
||||
else if (iVar2->volatileStatus == VOLATILE_STATUS_CONFUSED) {
|
||||
iVar2->facingDir = DungeonRandomCapped(NUM_DIRECTIONS);
|
||||
TargetTileInFront(param_1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,77 @@
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
|
||||
#include "dungeon_util.h"
|
||||
#include "constants/ability.h"
|
||||
#include "constants/status.h"
|
||||
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern u32 gUnknown_80FC31C;
|
||||
extern u32 gUnknown_80FCEFC;
|
||||
extern u32 gUnknown_80FC2FC;
|
||||
|
||||
extern bool8 sub_805744C(struct DungeonEntity *, struct PokemonMove *, u32);
|
||||
extern void SetMessageArgument(char[], struct DungeonEntity*, u32);
|
||||
extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u32);
|
||||
|
||||
bool8 sub_80716E8(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3)
|
||||
{
|
||||
if (param_2->entityData->protectionStatus == PROTECTION_STATUS_SAFEGUARD) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames,param_2,0);
|
||||
sub_80522F4(param_1,param_2,gUnknown_80FC2FC);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8071728(struct DungeonEntity * param_1, struct DungeonEntity * param_2, u8 param_3)
|
||||
{
|
||||
if (param_2->entityData->protectionStatus == PROTECTION_STATUS_MIST) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames, param_2, 0);
|
||||
sub_80522F4(param_1, param_2, gUnknown_80FC31C);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (HasAbility(param_2, ABILITY_CLEAR_BODY) || HasAbility(param_2, ABILITY_WHITE_SMOKE)) {
|
||||
if (param_3 != '\0') {
|
||||
SetMessageArgument(gAvailablePokemonNames, param_2, 0);
|
||||
sub_80522F4(param_1, param_2, gUnknown_80FCEFC);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80717A4(struct DungeonEntity *param_1, u16 moveID)
|
||||
{
|
||||
struct DungeonEntityData * entityData;
|
||||
s32 iVar3;
|
||||
|
||||
entityData = param_1->entityData;
|
||||
if ((entityData->sleepStatus != SLEEP_STATUS_SLEEP) && (entityData->sleepStatus != SLEEP_STATUS_NAPPING) && (entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE)) {
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pin this register to match
|
||||
register struct PokemonMove *pokeMove asm("r4");
|
||||
|
||||
struct PokemonMove *pokeMove2; // some reason uses another pointer to same struct
|
||||
|
||||
for(iVar3 = 0, pokeMove = entityData->moves, pokeMove2 = pokeMove; iVar3 < MAX_MON_MOVES; pokeMove++, pokeMove2++, iVar3++)
|
||||
{
|
||||
if (((pokeMove->moveFlags & MOVE_FLAG_EXISTS) != 0) && (entityData->isLeader || ((pokeMove->moveFlags & MOVE_FLAG_ENABLED) != 0)))
|
||||
if((sub_805744C(param_1, pokeMove2, 1) != '\0') && (pokeMove->pp != 0))
|
||||
if(pokeMove->moveID == moveID)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 HasAbility(struct DungeonEntity *pokemon, u8 ability)
|
||||
{
|
||||
|
||||
@@ -2,17 +2,7 @@
|
||||
#include "dungeon_util.h"
|
||||
|
||||
extern struct MapTile* GetMapTileAtPosition(s16, s16);
|
||||
|
||||
struct unk8049590
|
||||
{
|
||||
u16 unk0;
|
||||
u16 fill2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u8 unk8;
|
||||
};
|
||||
|
||||
extern struct unk8049590 *GetMapEntity(s16, s16);
|
||||
extern struct MapTile *GetMapEntity(s16, s16);
|
||||
|
||||
bool8 EntityExists(struct DungeonEntity *entity)
|
||||
{
|
||||
@@ -33,7 +23,7 @@ u8 GetEntityRoomIndex(struct DungeonEntity *entity)
|
||||
return entity->roomIndex;
|
||||
}
|
||||
|
||||
struct DungeonEntityData *sub_8045104(struct DungeonEntity *entity)
|
||||
struct DungeonEntityData *GetTrapData(struct DungeonEntity *entity)
|
||||
{
|
||||
return entity->entityData;
|
||||
}
|
||||
@@ -58,7 +48,7 @@ struct MapTile *sub_8045114(struct DungeonEntity *entity)
|
||||
return GetMapTileAtPosition(entity->posWorldX, entity->posWorldY);
|
||||
}
|
||||
|
||||
struct unk8049590 *sub_8045128(struct DungeonEntity *entity)
|
||||
struct MapTile *sub_8045128(struct DungeonEntity *entity)
|
||||
{
|
||||
return GetMapEntity(entity->posWorldX, entity->posWorldY);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,125 @@
|
||||
#include "global.h"
|
||||
#include "constants/direction.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "random.h"
|
||||
|
||||
extern struct DungeonGlobalData *gDungeonGlobalData;
|
||||
extern bool8 EntityExists(struct DungeonEntity *);
|
||||
extern void sub_806CE68(struct DungeonEntity *, s32);
|
||||
|
||||
extern s32 sub_803F994(void);
|
||||
extern s32 sub_803F9B0(void);
|
||||
extern void sub_803F4A0(u32);
|
||||
extern void sub_803F878(s32, s32);
|
||||
extern void sub_803E46C(u32);
|
||||
|
||||
void sub_8085860(s32 x, s32 y)
|
||||
{
|
||||
|
||||
sub_803F4A0(0);
|
||||
sub_803F878(x * 0x1800 + 0xc00, y * 0x1800 + 0x1000);
|
||||
}
|
||||
|
||||
void sub_8085890(s32 x, s32 y)
|
||||
{
|
||||
sub_803F4A0(0);
|
||||
sub_803F878(x, y);
|
||||
}
|
||||
|
||||
void sub_80858AC(s32 *param_1, s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
s32 iVar3;
|
||||
s32 iVar4;
|
||||
|
||||
iVar1 = sub_803F994();
|
||||
iVar2 = sub_803F9B0();
|
||||
iVar3 = (param_1[0] - iVar1) / param_2;
|
||||
iVar4 = (param_1[1] - iVar2) / param_2;
|
||||
sub_803F4A0(0);
|
||||
if (0 < param_2) {
|
||||
do {
|
||||
iVar1 += iVar3;
|
||||
iVar2 += iVar4;
|
||||
sub_803F878(iVar1,iVar2);
|
||||
sub_803E46C(0x46);
|
||||
param_2--;
|
||||
} while (param_2 != 0);
|
||||
}
|
||||
sub_803F878(param_1[0],param_1[1]);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
void SetFacingDirection(struct DungeonEntity *pokemon, s32 direction)
|
||||
{
|
||||
pokemon->entityData->facingDir = direction & DIRECTION_MASK;
|
||||
sub_806CE68(pokemon, direction);
|
||||
}
|
||||
|
||||
void sub_8085930(s32 direction)
|
||||
{
|
||||
s32 iVar2;
|
||||
struct DungeonEntity *entity;
|
||||
for(iVar2 = 0; iVar2 < MAX_TEAM_MEMBERS; iVar2++)
|
||||
{
|
||||
entity = gDungeonGlobalData->teamPokemon[iVar2];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(direction >= NUM_DIRECTIONS)
|
||||
{
|
||||
sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS));
|
||||
}
|
||||
else
|
||||
{
|
||||
entity->entityData->facingDir = direction & DIRECTION_MASK;
|
||||
sub_806CE68(entity, direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(iVar2 = 0; iVar2 < DUNGEON_MAX_WILD_POKEMON; iVar2++)
|
||||
{
|
||||
entity = gDungeonGlobalData->wildPokemon[iVar2];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(entity->entityData->clientType == 2)
|
||||
{
|
||||
if(direction >= NUM_DIRECTIONS)
|
||||
{
|
||||
sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS));
|
||||
}
|
||||
else
|
||||
{
|
||||
entity->entityData->facingDir = direction & DIRECTION_MASK;
|
||||
sub_806CE68(entity, direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80859F0(s32 direction)
|
||||
{
|
||||
s32 iVar2;
|
||||
struct DungeonEntity *entity;
|
||||
for(iVar2 = 0; iVar2 < DUNGEON_MAX_WILD_POKEMON; iVar2++)
|
||||
{
|
||||
entity = gDungeonGlobalData->wildPokemon[iVar2];
|
||||
if(EntityExists(entity))
|
||||
{
|
||||
if(direction >= NUM_DIRECTIONS)
|
||||
{
|
||||
sub_806CE68(entity, RandomCapped(NUM_DIRECTIONS));
|
||||
}
|
||||
else
|
||||
{
|
||||
entity->entityData->facingDir = direction & DIRECTION_MASK;
|
||||
sub_806CE68(entity, direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsMovingClient(struct DungeonEntity *pokemon)
|
||||
{
|
||||
|
||||
18
src/items.c
18
src/items.c
@@ -27,6 +27,7 @@ extern u32 gUnknown_81097F8[4]; // some sort of lookup table (17, 19, 21, 23)
|
||||
extern u32 gUnknown_810AF50[];
|
||||
extern u8 gUnknown_8108F64[0x3f][32]; // some sort of bit lookup table
|
||||
extern s16 gTypeGummiIQBoost[0x12][NUMBER_OF_GUMMIS];
|
||||
extern u8 gInvalidItemIDs[0x10];
|
||||
|
||||
EWRAM_DATA struct OpenedFile *gItemParametersFile;
|
||||
EWRAM_DATA struct Item *gItemParametersData;
|
||||
@@ -1502,3 +1503,20 @@ void ClearAllItems_8091FB4() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool32 IsInvalidItemReward(u8 itemID)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
if (itemID >= NUMBER_OF_ITEM_IDS)
|
||||
return TRUE;
|
||||
else {
|
||||
index = 0;
|
||||
while (gInvalidItemIDs[index] != NUMBER_OF_ITEM_IDS){
|
||||
if (gInvalidItemIDs[index] == itemID)
|
||||
return TRUE;
|
||||
index++;
|
||||
};
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
#include "memory.h"
|
||||
|
||||
extern u32 gUnknown_80B7F14;
|
||||
extern u32 gUnknown_80B7F88;
|
||||
extern const char gLocateSetErrorMessage[];
|
||||
extern struct HeapDescriptor gMainHeapDescriptor;
|
||||
|
||||
extern const char gLocalCreateErrorMessage[];
|
||||
extern s32 MemorySearchFromBack(struct HeapDescriptor *heap, s32, s32);
|
||||
extern s32 MemorySearchFromFront(struct HeapDescriptor *heap, s32, s32);
|
||||
extern struct HeapDescriptor * _LocateSetBack(struct HeapDescriptor *, u32, u32, u32, u32);
|
||||
extern struct HeapDescriptor * _LocateSetFront(struct HeapDescriptor *, u32, u32, u32, u32);
|
||||
void DoFree(struct HeapDescriptor *, void *);
|
||||
void *DoAlloc(struct HeapDescriptor *, s32, u32);
|
||||
extern struct HeapDescriptor *DoCreateSubHeap(u32 *, u32);
|
||||
|
||||
void FatalError(u32 *, const char *, ...) __attribute__((noreturn));
|
||||
|
||||
@@ -61,3 +63,28 @@ void MemoryFree(void *a)
|
||||
{
|
||||
DoFree(&gMainHeapDescriptor, a);
|
||||
}
|
||||
|
||||
struct HeapDescriptor *MemoryLocate_LocalCreate(struct HeapDescriptor *parentHeap,u32 size,u32 param_3,u32 group)
|
||||
{
|
||||
int index;
|
||||
struct HeapDescriptor *iVar2;
|
||||
struct HeapDescriptor *iVar3;
|
||||
s32 local_1c[2];
|
||||
|
||||
if (parentHeap == NULL) {
|
||||
parentHeap = &gMainHeapDescriptor;
|
||||
}
|
||||
|
||||
index = MemorySearchFromBack(parentHeap,9,size);
|
||||
if (index < 0)
|
||||
// Memroy LocalCreate buffer %08x size can't locate
|
||||
FatalError(&gUnknown_80B7F88,gLocalCreateErrorMessage,size);
|
||||
|
||||
iVar2 = _LocateSetBack(parentHeap,index,9,size,group);
|
||||
local_1c[0] = iVar2->freeCount;
|
||||
local_1c[1] = iVar2->freeListLength;
|
||||
|
||||
iVar3 = DoCreateSubHeap(local_1c,param_3);
|
||||
iVar3->parentHeap = parentHeap;
|
||||
return iVar3;
|
||||
}
|
||||
|
||||
@@ -277,20 +277,18 @@ void sub_800BA5C(void)
|
||||
|
||||
void xxx_update_bg_sound_input(void)
|
||||
{
|
||||
u32 store;
|
||||
store = gUnknown_203B09B;
|
||||
if(gUnknown_203B09B != 0){
|
||||
gUnknown_203B09C++;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B09B = 1;
|
||||
gUnknown_203B09A = store;
|
||||
gUnknown_203B09C = store;
|
||||
gUnknown_203B09A = 0;
|
||||
gUnknown_203B09C = 0;
|
||||
UpdateBGControlRegisters();
|
||||
if(gUnknown_203B099 != 0)
|
||||
UpdateSound();
|
||||
UpdateInput();
|
||||
gUnknown_203B099 = store;
|
||||
gUnknown_203B099 = 0;
|
||||
gUnknown_203B0A4 = gUnknown_203B0A0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ extern u32 gIQSkillNames[];
|
||||
extern u32 gIQSkillDescriptions[];
|
||||
extern u32 gTacticsDescriptions[];
|
||||
extern u8 *gTactics[];
|
||||
extern u8 gUnknown_810A36B[];
|
||||
extern u8 gTacticsTargetLeader[];
|
||||
|
||||
extern s16 gReqTacticLvls[];
|
||||
extern s32 gReqIQSkillPts[];
|
||||
@@ -483,10 +483,10 @@ u32 GetTacticsDescription(u8 r0)
|
||||
|
||||
u8 TacticsTargetLeader(u8 r0)
|
||||
{
|
||||
return gUnknown_810A36B[r0];
|
||||
return gTacticsTargetLeader[r0];
|
||||
}
|
||||
|
||||
void sub_808EB0C(u8 *r0, s32 pokeLevel)
|
||||
void GetAvailTacticsforLvl(u8 *tacticsBuffer, s32 pokeLevel)
|
||||
{
|
||||
s32 tactic;
|
||||
s32 availTactics;
|
||||
@@ -496,7 +496,7 @@ void sub_808EB0C(u8 *r0, s32 pokeLevel)
|
||||
{
|
||||
if(gReqTacticLvls[tactic] <= pokeLevel)
|
||||
{
|
||||
r0[availTactics] = tactic;
|
||||
tacticsBuffer[availTactics] = tactic;
|
||||
availTactics++;
|
||||
}
|
||||
}
|
||||
@@ -506,12 +506,13 @@ void sub_808EB0C(u8 *r0, s32 pokeLevel)
|
||||
}
|
||||
while(availTactics < NUM_TACTICS)
|
||||
{
|
||||
r0[availTactics] = TACTIC_UNUSED;
|
||||
tacticsBuffer[availTactics] = TACTIC_UNUSED;
|
||||
availTactics++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_808EB48(u8 *r0, s32 pokeLevel)
|
||||
// Instead of assigning the Tactic, a bool is assigned showing it is available
|
||||
void GetAvailTacticsforLvl_Bool(u8 *tacticsBuffer, s32 pokeLevel)
|
||||
{
|
||||
s32 tactic;
|
||||
|
||||
@@ -519,18 +520,18 @@ void sub_808EB48(u8 *r0, s32 pokeLevel)
|
||||
{
|
||||
if(gReqTacticLvls[tactic] <= pokeLevel)
|
||||
{
|
||||
r0[tactic] = TRUE;
|
||||
tacticsBuffer[tactic] = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
r0[tactic] = FALSE;
|
||||
tacticsBuffer[tactic] = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex)
|
||||
{
|
||||
if(IQSkillIndex == 0)
|
||||
if(IQSkillIndex == IQ_SKILL_NONE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -538,7 +539,8 @@ bool8 HasIQForSkill(s32 pokeIQ, u8 IQSkillIndex)
|
||||
return gReqIQSkillPts[IQSkillIndex] <= pokeIQ;
|
||||
}
|
||||
|
||||
s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ)
|
||||
// Fills buffer with all avaiable IQ Skills and returns the amount
|
||||
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ)
|
||||
{
|
||||
s32 counter_2;
|
||||
s32 counter_1;
|
||||
@@ -550,22 +552,22 @@ s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ)
|
||||
for(counter_1 = IQ_SKILL_TYPE_ADVANTAGE_MASTER; counter_1 < NUM_IQ_SKILLS; counter_1++) {
|
||||
iqSkill_u8 = counter_1; // force this cast to be in a reg
|
||||
if (HasIQForSkill(pokeIQ, iqSkill_u8)) {
|
||||
param_1[availIQSkills] = iqSkill_u8;
|
||||
iqSkillBuffer[availIQSkills] = iqSkill_u8;
|
||||
availIQSkills++;
|
||||
}
|
||||
}
|
||||
|
||||
for (counter_2 = availIQSkills; counter_2 < NUM_IQ_SKILLS; counter_2++) {
|
||||
param_1[counter_2] = 0;
|
||||
iqSkillBuffer[counter_2] = IQ_SKILL_NONE;
|
||||
}
|
||||
return availIQSkills;
|
||||
}
|
||||
|
||||
void sub_808EBF4(u8 *param_1, u32 param_2)
|
||||
void ToggleIQSkill(u8 *param_1, u32 skillIndex)
|
||||
{
|
||||
int iVar2; // a mask?
|
||||
|
||||
iVar2 = 1 << (param_2);
|
||||
iVar2 = 1 << (skillIndex);
|
||||
if (IsIQSkillSet(param_1, iVar2)) {
|
||||
param_1[0] = param_1[0] & ~iVar2;
|
||||
param_1[1] = param_1[1] & ~(iVar2 >> 8);
|
||||
@@ -573,7 +575,7 @@ void sub_808EBF4(u8 *param_1, u32 param_2)
|
||||
}
|
||||
else
|
||||
{
|
||||
SetIQSkill(param_1, param_2);
|
||||
SetIQSkill(param_1, skillIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,25 +12,6 @@ extern void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size);
|
||||
extern const char *gRescueTeamRanks[];
|
||||
extern s32 gRescueRankMaxPoints[7];
|
||||
extern u8 gTeamNamePlaceholder[0x8]; // Pokemon
|
||||
extern u8 gUnknown_810A35B[0x10];
|
||||
|
||||
bool32 sub_8092040(u8 param_1)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
// NUMBER_OF_ITEM_IDS == 0xf0
|
||||
if (param_1 >= 0xF0)
|
||||
return TRUE;
|
||||
else {
|
||||
index = 0;
|
||||
while (gUnknown_810A35B[index] != 0xF0){
|
||||
if (gUnknown_810A35B[index] == param_1)
|
||||
return TRUE;
|
||||
index++;
|
||||
};
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void LoadRescueTeamInfo(void)
|
||||
{
|
||||
|
||||
@@ -504,7 +504,7 @@ u32 CreateThankYouMailPelipper(void)
|
||||
gUnknown_203B2C4->unk218 = -1;
|
||||
SetThankYouMailMenuState(THANK_YOU_MAIL_MAIN_MENU);
|
||||
}
|
||||
gUnknown_203B2C4->unk4 = 0x2b;
|
||||
gUnknown_203B2C4->fallbackState = 0x2b;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -665,40 +665,40 @@ void ReturnToThankYouMainFromError(void)
|
||||
}
|
||||
}
|
||||
|
||||
void PrintThankYouMailLinkError(u32 param_1)
|
||||
void PrintThankYouMailLinkError(u32 errorCode)
|
||||
{
|
||||
switch(param_1) {
|
||||
case 3:
|
||||
switch(errorCode) {
|
||||
case WONDER_MAIL_INCORRECT_NUM_SYSTEMS:
|
||||
sub_80141B4(gUnknown_80DEF28, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 4:
|
||||
case WONDER_MAIL_DIFFERENT_MODES:
|
||||
sub_80141B4(gUnknown_80DEF80, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 6:
|
||||
case WONDER_MAIL_NO_ROOM_STORAGE:
|
||||
sub_80141B4(gUnknown_80DEFDC, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 7:
|
||||
case WONDER_MAIL_DUPLICATE_MAIL:
|
||||
sub_80141B4(gUnknown_80DF044, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 9:
|
||||
case WONDER_MAIL_NOT_ELIGIBLE_1:
|
||||
sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 11:
|
||||
case WONDER_MAIL_NOT_ELIGIBLE_2:
|
||||
sub_80141B4(gUnknown_80DF0A0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 13:
|
||||
case WONDER_MAIL_NO_ROOM_MAIL:
|
||||
sub_80141B4(gUnknown_80DF0E0, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case WONDER_MAIL_NO_RESPONSE:
|
||||
case 5:
|
||||
case 14:
|
||||
sub_80141B4(gUnknown_80DEF04, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 15:
|
||||
case WONDER_MAIL_NOT_READY:
|
||||
sub_80141B4(gUnknown_80DF138, 0, &gUnknown_203B2C4->faceFile, 0x10d);
|
||||
break;
|
||||
case 0:
|
||||
case WONDER_MAIL_GOOD:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -800,7 +800,7 @@ void sub_802A0C8(void)
|
||||
SetThankYouMailMenuState(0x11);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2C4->unk4 = 0x10;
|
||||
gUnknown_203B2C4->fallbackState = 0x10;
|
||||
gUnknown_203B2C4->unk218 = sub_80307EC();
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -837,7 +837,7 @@ void sub_802A174(void)
|
||||
SetThankYouMailMenuState(0xe);
|
||||
break;
|
||||
case 0xC:
|
||||
gUnknown_203B2C4->unk4 = 0x2b;
|
||||
gUnknown_203B2C4->fallbackState = 0x2b;
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
@@ -864,12 +864,12 @@ void sub_802A230(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2C4->unk3BC, 1, 1);
|
||||
sub_803092C();
|
||||
if (gUnknown_203B2C4->unk4 == 0x2b) {
|
||||
if (gUnknown_203B2C4->fallbackState == 0x2b) {
|
||||
sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1);
|
||||
SetThankYouMailMenuState(0x11);
|
||||
}
|
||||
else {
|
||||
SetThankYouMailMenuState(gUnknown_203B2C4->unk4);
|
||||
SetThankYouMailMenuState(gUnknown_203B2C4->fallbackState);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -895,7 +895,7 @@ void sub_802A28C(void)
|
||||
SetThankYouMailMenuState(0x14);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2C4->unk4 = 0x13;
|
||||
gUnknown_203B2C4->fallbackState = 0x13;
|
||||
gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24();
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -916,12 +916,12 @@ void sub_802A33C(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2C4->unk3BC,1,1);
|
||||
sub_801CB5C(1);
|
||||
if (gUnknown_203B2C4->unk4 == 0x2b) {
|
||||
if (gUnknown_203B2C4->fallbackState == 0x2b) {
|
||||
sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1);
|
||||
SetThankYouMailMenuState(0x14);
|
||||
}
|
||||
else {
|
||||
SetThankYouMailMenuState(gUnknown_203B2C4->unk4);
|
||||
SetThankYouMailMenuState(gUnknown_203B2C4->fallbackState);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
@@ -947,7 +947,7 @@ void sub_802A39C(void)
|
||||
SetThankYouMailMenuState(CONFIRM_ITEM_TO_SEND);
|
||||
break;
|
||||
case 0xC:
|
||||
gUnknown_203B2C4->unk4 = 0x2b;
|
||||
gUnknown_203B2C4->fallbackState = 0x2b;
|
||||
sub_8006518(gUnknown_203B2C4->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
|
||||
@@ -197,7 +197,7 @@ u32 sub_8027F88(void)
|
||||
for(counter = 0; counter < PASSWORD_BUFFER_SIZE; counter++){
|
||||
gUnknown_203B2C0->passwordBuffer[counter] = 0;
|
||||
}
|
||||
gUnknown_203B2C0->unk0 = 0x3D;
|
||||
gUnknown_203B2C0->fallbackState = 0x3D;
|
||||
sub_8028B04(0); // Set initial state to 0?
|
||||
return 1;
|
||||
}
|
||||
@@ -706,50 +706,44 @@ void sub_8028B04(u32 r0)
|
||||
}
|
||||
|
||||
// Wonder Mail Linking...
|
||||
void sub_8028B1C(u32 r0)
|
||||
void sub_8028B1C(u32 errorCode)
|
||||
{
|
||||
switch(r0)
|
||||
switch(errorCode)
|
||||
{
|
||||
case 0:
|
||||
case WONDER_MAIL_GOOD:
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case WONDER_MAIL_NO_RESPONSE:
|
||||
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 3:
|
||||
case WONDER_MAIL_INCORRECT_NUM_SYSTEMS:
|
||||
sub_80141B4(gWonderMailNumGBAsText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 4:
|
||||
case WONDER_MAIL_DIFFERENT_MODES:
|
||||
sub_80141B4(gWonderMailWrongModeText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 5:
|
||||
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 6:
|
||||
case WONDER_MAIL_NO_ROOM_STORAGE:
|
||||
sub_80141B4(gWonderMailStorageFullText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 7:
|
||||
case WONDER_MAIL_DUPLICATE_MAIL:
|
||||
sub_80141B4(gWonderMailDuplicateText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
case 9:
|
||||
case WONDER_MAIL_NOT_ELIGIBLE_1:
|
||||
sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 10:
|
||||
break;
|
||||
case 11:
|
||||
case WONDER_MAIL_NOT_ELIGIBLE_2:
|
||||
sub_80141B4(gWonderMailNotEligibleReceiveText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 12:
|
||||
break;
|
||||
case 13:
|
||||
case WONDER_MAIL_NO_ROOM_MAIL:
|
||||
sub_80141B4(gWonderMailNoRoomText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 14:
|
||||
sub_80141B4(gWonderMailErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
case 15:
|
||||
case WONDER_MAIL_NOT_READY:
|
||||
sub_80141B4(gWonderMailFriendErrorText, 0, &gUnknown_203B2C0->faceFile, 0x10d);
|
||||
break;
|
||||
default:
|
||||
@@ -1134,7 +1128,7 @@ void sub_8029044(void)
|
||||
sub_8028B04(32);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2C0->unk0 = 0x1F;
|
||||
gUnknown_203B2C0->fallbackState = 0x1F;
|
||||
gUnknown_203B2C0->unk218 = sub_80307EC();
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -1171,7 +1165,7 @@ void sub_80290F0(void)
|
||||
sub_8028B04(34);
|
||||
break;
|
||||
case 12:
|
||||
gUnknown_203B2C0->unk0 = 0x3D;
|
||||
gUnknown_203B2C0->fallbackState = 0x3D;
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0, 1, 1);
|
||||
@@ -1199,14 +1193,14 @@ void sub_80291AC(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
|
||||
sub_803092C();
|
||||
if(gUnknown_203B2C0->unk0 == 0x3D)
|
||||
if(gUnknown_203B2C0->fallbackState == 0x3D)
|
||||
{
|
||||
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
|
||||
sub_8028B04(0x20);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8028B04(gUnknown_203B2C0->unk0);
|
||||
sub_8028B04(gUnknown_203B2C0->fallbackState);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
@@ -1484,7 +1478,7 @@ void sub_80295D8(void)
|
||||
sub_8028B04(0x2B);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2C0->unk0 = 0x2A;
|
||||
gUnknown_203B2C0->fallbackState = 0x2A;
|
||||
gUnknown_203B2C0->unk218 = sub_80307EC();
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -1521,7 +1515,7 @@ void sub_8029684(void)
|
||||
sub_8028B04(0x2D);
|
||||
break;
|
||||
case 0xC:
|
||||
gUnknown_203B2C0->unk0 = 0x3D;
|
||||
gUnknown_203B2C0->fallbackState = 0x3D;
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0, 1, 1);
|
||||
@@ -1547,14 +1541,14 @@ void sub_8029740(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
|
||||
sub_803092C();
|
||||
if(gUnknown_203B2C0->unk0 == 0x3D)
|
||||
if(gUnknown_203B2C0->fallbackState == 0x3D)
|
||||
{
|
||||
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
|
||||
sub_8028B04(0x2B);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8028B04(gUnknown_203B2C0->unk0);
|
||||
sub_8028B04(gUnknown_203B2C0->fallbackState);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1594,7 +1588,7 @@ void sub_80297D4(void)
|
||||
sub_8028B04(0x34);
|
||||
break;
|
||||
case 4:
|
||||
gUnknown_203B2C0->unk0 = 0x33;
|
||||
gUnknown_203B2C0->fallbackState = 0x33;
|
||||
gUnknown_203B2C0->unk544 = sub_8023B44();
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
@@ -1621,7 +1615,7 @@ void sub_8029884(void)
|
||||
sub_8028B04(4);
|
||||
break;
|
||||
case 0xC:
|
||||
gUnknown_203B2C0->unk0 = 0x3D;
|
||||
gUnknown_203B2C0->fallbackState = 0x3D;
|
||||
sub_8006518(gUnknown_203B2C0->unk3BC);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0, 1, 1);
|
||||
@@ -1656,14 +1650,14 @@ void sub_8029944(void)
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2C0->unk3BC, 1, 1);
|
||||
sub_8023B7C(1);
|
||||
if(gUnknown_203B2C0->unk0 == 0x3D)
|
||||
if(gUnknown_203B2C0->fallbackState == 0x3D)
|
||||
{
|
||||
sub_8035CF4(&(gUnknown_203B2C0->unk21C), 3, 1);
|
||||
sub_8028B04(0x34);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8028B04(gUnknown_203B2C0->unk0);
|
||||
sub_8028B04(gUnknown_203B2C0->fallbackState);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,9 +13,8 @@
|
||||
struct unkStruct_203B2C8
|
||||
{
|
||||
// size: 0x140
|
||||
u8 currState;
|
||||
u8 unk1;
|
||||
u16 unk2;
|
||||
/* 0x0 */ u8 currState;
|
||||
/* 0x1 */ u8 unk1;
|
||||
/* 0x4 */ struct OpenedFile *faceFile;
|
||||
/* 0x8 */ u8 *faceData;
|
||||
/* 0xC */ u16 unkC;
|
||||
@@ -53,15 +52,13 @@ struct unkStruct_203B2CC
|
||||
struct UnkTextStruct2 *unk70;
|
||||
struct UnkTextStruct2 unk74[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2CC *gUnknown_203B2CC;
|
||||
|
||||
struct unkStruct_203B2D4
|
||||
{
|
||||
// size: 0x94
|
||||
s32 state;
|
||||
u8 currMailIndex;
|
||||
u8 fill5[0x8 - 0x5];
|
||||
/* 0x0 */ s32 state;
|
||||
/* 0x4 */ u8 currMailIndex;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
u8 *unk10[4];
|
||||
@@ -71,9 +68,28 @@ struct unkStruct_203B2D4
|
||||
u32 unk88;
|
||||
u8 fill8C[0x94 - 0x8C];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B2D4 *gUnknown_203B2D4;
|
||||
|
||||
struct unkStruct_203B2D8
|
||||
{
|
||||
// size: 0xA4
|
||||
u8 unk0[4];
|
||||
u32 unk4;
|
||||
u8 fill8[0x1C - 0x8];
|
||||
s16 unk1C;
|
||||
s16 unk1E;
|
||||
s16 unk20;
|
||||
s16 unk22;
|
||||
s16 fill24;
|
||||
/* 0x26 */ s16 emptyMailSlots;
|
||||
u8 fill28[0x38 - 0x28];
|
||||
u32 unk38;
|
||||
struct UnkTextStruct2 *unk3C;
|
||||
struct UnkTextStruct2 unk40[4];
|
||||
u8 unkA0[4];
|
||||
};
|
||||
extern struct unkStruct_203B2D8 *gUnknown_203B2D8;
|
||||
|
||||
extern struct UnkSaveStruct1 *gUnknown_203B46C;
|
||||
|
||||
|
||||
@@ -89,7 +105,7 @@ extern struct PokemonStruct *sub_808D3BC(void);
|
||||
extern void PrintPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon);
|
||||
extern u16 gUnknown_203B2D0;
|
||||
extern u16 gUnknown_203B2D2;
|
||||
|
||||
extern u16 gUnknown_203B2DC;
|
||||
extern u8 sub_80138B8(void *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 GetKeyPress(u32 *);
|
||||
@@ -101,7 +117,6 @@ extern void sub_802BC08(void);
|
||||
extern void sub_802BB28(void);
|
||||
extern void sub_8013E54(void);
|
||||
extern s32 sub_8012A64(u32 *, u32);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DFBEC;
|
||||
|
||||
@@ -144,6 +159,8 @@ extern void sub_802ABF8(void);
|
||||
|
||||
extern u8 gUnknown_80DFC04[];
|
||||
extern u8 gUnknown_80DFBE8[];
|
||||
extern struct UnkTextStruct2 gUnknown_80DFC74;
|
||||
extern struct UnkTextStruct2 gUnknown_80DFC5C;
|
||||
extern char *GetPokemonMailHeadline(u8 index);
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_80073B8(u32);
|
||||
@@ -158,6 +175,13 @@ extern s32 sub_8013800(u32 *, s32);
|
||||
extern void sub_802BCC4(void);
|
||||
extern void sub_802BB14(u32);
|
||||
extern void sub_801317C(u32 *);
|
||||
char *GetPokemonMailText(u8 index);
|
||||
extern u8 HasNoMailinMailbox(void);
|
||||
extern void sub_802BF30(void);
|
||||
extern void CreateMailMenu(void);
|
||||
extern void sub_8012D34(struct UnkTextStruct2 *, u32);
|
||||
extern s32 CountEmptyMailSlots(void);
|
||||
extern void sub_8013848(u32 *, s32, u32, u32);
|
||||
|
||||
ALIGNED(4) const char gUnknown_80DF9F0[] = "????";
|
||||
|
||||
@@ -595,7 +619,7 @@ bool8 HasNoPKMNNews(void)
|
||||
|
||||
u32 sub_802B9FC(u8 mailIndex)
|
||||
{
|
||||
gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 0x8);
|
||||
gUnknown_203B2D4 = MemoryAlloc(sizeof(struct unkStruct_203B2D4), 8);
|
||||
gUnknown_203B2D4->currMailIndex = mailIndex;
|
||||
sub_801317C(&gUnknown_203B2D4->unk88);
|
||||
gUnknown_203B2D4->unk24 = 0;
|
||||
@@ -729,3 +753,124 @@ void sub_802BC7C(void)
|
||||
strcpy(gAvailablePokemonNames + 0x50, gUnknown_80DFC50); // He
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BCC4(void)
|
||||
{
|
||||
char *mailTextPtr;
|
||||
|
||||
mailTextPtr = GetPokemonMailText(gUnknown_203B2D4->currMailIndex);
|
||||
gUnknown_203B2D4->unkC = 0;
|
||||
gUnknown_203B2D4->unk10[0] = mailTextPtr;
|
||||
|
||||
// Count all the {EXTRA_MSG}'s
|
||||
while (*mailTextPtr != '\0') {
|
||||
if (*mailTextPtr == '#') {
|
||||
if ((mailTextPtr[1] == 'P') || (mailTextPtr[1] == 'p')) {
|
||||
gUnknown_203B2D4->unkC++;
|
||||
gUnknown_203B2D4->unk10[gUnknown_203B2D4->unkC] = mailTextPtr + 2;
|
||||
}
|
||||
mailTextPtr += 2;
|
||||
}
|
||||
else {
|
||||
mailTextPtr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BD14(s32 param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
|
||||
{
|
||||
|
||||
if (HasNoMailinMailbox()) {
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_203B2D8 == NULL) {
|
||||
gUnknown_203B2D8 = MemoryAlloc(sizeof(struct unkStruct_203B2D8),8);
|
||||
}
|
||||
gUnknown_203B2D8->unk38 = param_1;
|
||||
gUnknown_203B2D8->unk3C = &gUnknown_203B2D8->unk40[param_1];
|
||||
sub_8006518(gUnknown_203B2D8->unk40);
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC74;
|
||||
gUnknown_203B2D8->unk3C->unk14 = gUnknown_203B2D8->unkA0;
|
||||
if (param_2 != NULL) {
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38].unk08 = *param_2;
|
||||
}
|
||||
sub_8012D34(gUnknown_203B2D8->unk3C,param_3);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40,1,1);
|
||||
sub_8013848(&gUnknown_203B2D8->unk4,CountEmptyMailSlots(),param_3,param_1);
|
||||
gUnknown_203B2D8->unk1C = gUnknown_203B2DC;
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802BDEC(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B2D8->unk4);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B2D8->unk4))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B2D8->unk4, 1) != 0)
|
||||
{
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802BE74(void) {
|
||||
return gUnknown_203B2D8->unk0[(gUnknown_203B2D8->unk22 * gUnknown_203B2D8->unk20) + gUnknown_203B2D8->unk1C];
|
||||
}
|
||||
|
||||
void sub_802BE94(u32 r0)
|
||||
{
|
||||
u8 temp;
|
||||
|
||||
temp = r0;
|
||||
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 0, 0);
|
||||
|
||||
gUnknown_203B2D8->emptyMailSlots = CountEmptyMailSlots();
|
||||
sub_8013984(&gUnknown_203B2D8->unk4);
|
||||
sub_802BF30();
|
||||
CreateMailMenu();
|
||||
|
||||
if(temp != 0)
|
||||
{
|
||||
AddMenuCursorSprite(&gUnknown_203B2D8->unk4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802BEDC(void)
|
||||
{
|
||||
if(gUnknown_203B2D8 != NULL)
|
||||
{
|
||||
gUnknown_203B2DC = gUnknown_203B2D8->unk1C;
|
||||
gUnknown_203B2D8->unk40[gUnknown_203B2D8->unk38] = gUnknown_80DFC5C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2D8->unk40, 1, 1);
|
||||
MemoryFree(gUnknown_203B2D8);
|
||||
gUnknown_203B2D8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "input.h"
|
||||
#include "mailbox.h"
|
||||
#include "menu.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "wonder_mail.h"
|
||||
@@ -82,7 +83,6 @@ extern u8 sub_802DADC(void);
|
||||
extern u8 *sub_8096DD8(void);
|
||||
extern u8 sub_8096C08(u8 *);
|
||||
extern void sub_802C750(void);
|
||||
extern s32 GetNumAcceptedJobs(void);
|
||||
extern void sub_802D1A0(u32);
|
||||
extern void sub_8012EA4(u8 *, u32);
|
||||
extern void* sub_8096AB4(u8);
|
||||
@@ -228,7 +228,7 @@ void sub_802D2A8(void)
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (GetNumAcceptedJobs() >= 8) {
|
||||
if (GetNumAcceptedJobs() >= MAX_ACCEPTED_JOBS) {
|
||||
if (sub_802DADC() != 0) {
|
||||
sub_802D1A0(10);
|
||||
}
|
||||
|
||||
316
src/wonder_mail_802DF88.c
Normal file
316
src/wonder_mail_802DF88.c
Normal file
@@ -0,0 +1,316 @@
|
||||
#include "global.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "input.h"
|
||||
#include "item.h"
|
||||
#include "memory.h"
|
||||
#include "text.h"
|
||||
#include "wonder_mail.h"
|
||||
|
||||
struct unkStruct_203B2FC
|
||||
{
|
||||
// size: 0xA8
|
||||
/* 0x0 */ u32 state;
|
||||
/* 0x4 */ u32 fallbackState;
|
||||
u32 unk8;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
u8 unk10;
|
||||
u8 fill11[0x30 - 0x11];
|
||||
u8 unk30;
|
||||
u8 fill31[3];
|
||||
struct WonderMail *unk34;
|
||||
struct OpenedFile *faceFile;
|
||||
u8 *faceData;
|
||||
u16 unk40;
|
||||
u16 unk42;
|
||||
u8 unk44;
|
||||
u8 unk45;
|
||||
u8 unk46;
|
||||
u8 fill47[0x48 - 0x47];
|
||||
struct UnkTextStruct2 unk48[4];
|
||||
};
|
||||
extern struct unkStruct_203B2FC *gUnknown_203B2FC;
|
||||
|
||||
|
||||
struct unkStruct_203B300
|
||||
{
|
||||
// size: 0x7C
|
||||
u8 fill0[0xC];
|
||||
u32 *unkC;
|
||||
u32 unk10;
|
||||
struct UnkTextStruct2 *unk14;
|
||||
struct UnkTextStruct2 unk18[4];
|
||||
u8 unk78[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B300 *gUnknown_203B300;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0248;
|
||||
extern struct UnkTextStruct2 gUnknown_80E0264;
|
||||
extern struct UnkTextStruct2 gUnknown_80E016C;
|
||||
extern void sub_80073B8(u32);
|
||||
extern void sub_80073E0(u32);
|
||||
extern void CreateRescueDescription(u32 *);
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern s32 sub_8012A64(void *, u32);
|
||||
void sub_802DF6C(void);
|
||||
void sub_802DF88(void);
|
||||
void sub_802DF14(void);
|
||||
void sub_801317C(void);
|
||||
extern s32 sub_80144A4(s32 *);
|
||||
extern void sub_802DC28(u32);
|
||||
extern void sub_802F2C0(void);
|
||||
extern void sub_802DC28(u32);
|
||||
extern u32 sub_802F298(void);
|
||||
extern u8 gUnknown_202E5D8[];
|
||||
extern u8 gUnknown_202E1C8[];
|
||||
extern u8 gUnknown_202DE58[];
|
||||
|
||||
extern u8 gWonderMailClientThanksForRescuingMe[];
|
||||
extern u8 gWonderMailClientThanksForRescuingThem[];
|
||||
extern u8 gWonderMailClientEscorted[];
|
||||
extern u8 gWonderMailClientItemDelivered1[];
|
||||
extern u8 gWonderMailClientItemDelivered2[];
|
||||
extern void sub_802F204(u32 *, u32);
|
||||
extern void sub_80141B4(u8 *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void sub_802DC40(void);
|
||||
extern void sub_802DC9C(void);
|
||||
void sub_802DE44(void);
|
||||
void sub_802DE60(void);
|
||||
struct WonderMail *sub_8096AB4(u8);
|
||||
extern void sub_8096AF8(u8 *, u32, u32);
|
||||
extern void sub_8096EEC(void);
|
||||
extern void sub_803C21C(struct WonderMail *, u32 *);
|
||||
|
||||
u32 sub_802DB28(u8 param_1, u8 param_2)
|
||||
{
|
||||
char local_18 [8];
|
||||
|
||||
sub_8096AF8(local_18,param_1,param_2);
|
||||
if (local_18[0] == '\0') {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(0,1,1);
|
||||
gUnknown_203B2FC = MemoryAlloc(sizeof(struct unkStruct_203B2FC),8);
|
||||
gUnknown_203B2FC->unk30 = param_1;
|
||||
gUnknown_203B2FC->unk34 = sub_8096AB4(param_1);
|
||||
sub_8096EEC();
|
||||
sub_803C21C(gUnknown_203B2FC->unk34,&gUnknown_203B2FC->unk8);
|
||||
gUnknown_203B2FC->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
gUnknown_203B2FC->faceData = NULL;
|
||||
gUnknown_203B2FC->unk44 = 0;
|
||||
gUnknown_203B2FC->unk45 = 0;
|
||||
gUnknown_203B2FC->unk46 = 0;
|
||||
gUnknown_203B2FC->unk40 = 2;
|
||||
gUnknown_203B2FC->unk42 = 8;
|
||||
if (gUnknown_203B2FC->faceFile != NULL) {
|
||||
gUnknown_203B2FC->faceData = gUnknown_203B2FC->faceFile->data;
|
||||
}
|
||||
sub_802DC28(0);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802DBD4(void)
|
||||
{
|
||||
switch(gUnknown_203B2FC->state)
|
||||
{
|
||||
case 7:
|
||||
gUnknown_203B2FC->unk34->mailType = 7;
|
||||
return 3;
|
||||
case 6:
|
||||
sub_802DE44();
|
||||
return 0;
|
||||
default:
|
||||
sub_802DE60();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DC00(void)
|
||||
{
|
||||
if(gUnknown_203B2FC != NULL)
|
||||
{
|
||||
if(gUnknown_203B2FC->faceFile != NULL)
|
||||
{
|
||||
CloseFile(gUnknown_203B2FC->faceFile);
|
||||
}
|
||||
MemoryFree(gUnknown_203B2FC);
|
||||
gUnknown_203B2FC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DC28(u32 newState)
|
||||
{
|
||||
gUnknown_203B2FC->state = newState;
|
||||
sub_802DC40();
|
||||
sub_802DC9C();
|
||||
}
|
||||
|
||||
void sub_802DC40(void)
|
||||
{
|
||||
s32 iVar3;
|
||||
sub_8006518(gUnknown_203B2FC->unk48);
|
||||
switch(gUnknown_203B2FC->state)
|
||||
{
|
||||
case 0:
|
||||
case 7:
|
||||
for(iVar3 = 0; iVar3 < 4; iVar3++)
|
||||
{
|
||||
gUnknown_203B2FC->unk48[iVar3] = gUnknown_80E016C;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B2FC->unk48, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802DC9C(void)
|
||||
{
|
||||
char *speciesText;
|
||||
s32 index;
|
||||
|
||||
switch(gUnknown_203B2FC->state) {
|
||||
case 0:
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8,gUnknown_203B2FC->unk34->clientSpecies);
|
||||
CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8,gUnknown_203B2FC->unk34->clientSpecies);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
strcpy(gUnknown_202E1C8 + 0xfffffdd0,speciesText);
|
||||
speciesText = GetMonSpecies(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
strcpy(gUnknown_202E1C8 + 0xfffffe20,speciesText);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->clientSpecies);
|
||||
sub_8090DC4(gUnknown_202DE58,gUnknown_203B2FC->unk34->targetItem,0);
|
||||
gUnknown_203B2FC->fallbackState = 6;
|
||||
switch(gUnknown_203B2FC->unk34->missionType) {
|
||||
case WONDER_MAIL_MISSION_TYPE_DELIVER_ITEM:
|
||||
sub_802DC28(5);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_FIND_ITEM:
|
||||
sub_802DC28(4);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_TARGET:
|
||||
sub_802DC28(2);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
break;
|
||||
case WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT:
|
||||
sub_802DC28(3);
|
||||
UnlockExclusivePokemon(gUnknown_203B2FC->unk34->targetSpecies);
|
||||
break;
|
||||
default:
|
||||
case WONDER_MAIL_MISSION_TYPE_RESCUE_CLIENT:
|
||||
sub_802DC28(1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_80141B4(gWonderMailClientThanksForRescuingMe,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 2:
|
||||
sub_80141B4(gWonderMailClientThanksForRescuingThem,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 3:
|
||||
sub_80141B4(gWonderMailClientEscorted,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 5:
|
||||
sub_80141B4(gWonderMailClientItemDelivered1,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 4:
|
||||
index = FindItemInInventory(gUnknown_203B2FC->unk34->targetItem);
|
||||
if (index != -1) {
|
||||
ShiftItemsDownFrom(index);
|
||||
FillInventoryGaps();
|
||||
}
|
||||
sub_80141B4(gWonderMailClientItemDelivered2,0,&gUnknown_203B2FC->faceFile,0x10d);
|
||||
break;
|
||||
case 6:
|
||||
sub_802F204(&gUnknown_203B2FC->unk8,1);
|
||||
break;
|
||||
case 7:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DE44(void)
|
||||
{
|
||||
switch(sub_802F298())
|
||||
{
|
||||
case 2:
|
||||
case 3:
|
||||
sub_802F2C0();
|
||||
sub_802DC28(7);
|
||||
break;
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DE60(void)
|
||||
{
|
||||
s32 temp;
|
||||
if(sub_80144A4(&temp) == 0)
|
||||
{
|
||||
sub_802DC28(gUnknown_203B2FC->fallbackState);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_802DE84(u32 *r0)
|
||||
{
|
||||
gUnknown_203B300 = MemoryAlloc(sizeof(struct unkStruct_203B300), 8);
|
||||
gUnknown_203B300->unkC = r0;
|
||||
sub_801317C();
|
||||
gUnknown_203B300->unk10 = *gUnknown_203B300->unkC;
|
||||
gUnknown_203B300->unk14 = &gUnknown_203B300->unk18[gUnknown_203B300->unk10];
|
||||
sub_8006518(gUnknown_203B300->unk18);
|
||||
gUnknown_203B300->unk18[gUnknown_203B300->unk10] = gUnknown_80E0264;
|
||||
sub_802DF14();
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_802DEE0(void)
|
||||
{
|
||||
switch(sub_8012A64(gUnknown_203B300, gUnknown_203B300->unk10))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DF14(void)
|
||||
{
|
||||
sub_802DF6C();
|
||||
sub_802DF88();
|
||||
}
|
||||
|
||||
void sub_802DF24(void)
|
||||
{
|
||||
if(gUnknown_203B300 != NULL)
|
||||
{
|
||||
gUnknown_203B300->unk18[gUnknown_203B300->unk10] = gUnknown_80E0248;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B300->unk18, 1, 1);
|
||||
MemoryFree(gUnknown_203B300);
|
||||
gUnknown_203B300 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802DF6C(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B300->unk18, 1, 1);
|
||||
}
|
||||
|
||||
void sub_802DF88(void)
|
||||
{
|
||||
sub_80073B8(gUnknown_203B300->unk10);
|
||||
CreateRescueDescription(gUnknown_203B300->unkC);
|
||||
sub_80073E0(gUnknown_203B300->unk10);
|
||||
}
|
||||
Reference in New Issue
Block a user