summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-06-13 15:07:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-06-13 15:07:54 -0400
commit01eea396ed25500e15752d7edfe76cb1031bee60 (patch)
tree88b79f0a606b63454db977f006ecaff0d734f2a8
parent321da97e6fdd66192484ca9aa60581b69fb3e7a4 (diff)
through CalcShininessByOtIdAndPersonality
-rw-r--r--arm9/asm/pokemon_s.s271
-rw-r--r--arm9/asm/scrcmd_12.s2
-rw-r--r--arm9/asm/unk_02023C40.s4
-rw-r--r--arm9/asm/unk_0204A01C.s2
-rw-r--r--arm9/asm/unk_0206F3FC.s2
-rw-r--r--arm9/asm/unk_0207550C.s2
-rw-r--r--arm9/asm/unk_02079C70.s2
-rw-r--r--arm9/asm/unk_02080C38.s2
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/modules/05/asm/module_05.s8
-rw-r--r--arm9/modules/07/asm/module_07.s2
-rw-r--r--arm9/modules/09/asm/module_09.s2
-rw-r--r--arm9/modules/11/asm/module_11.s14
-rw-r--r--arm9/modules/35/asm/module_35.s2
-rw-r--r--arm9/modules/65/asm/module_65.s2
-rw-r--r--arm9/modules/69/asm/module_69.s2
-rw-r--r--arm9/modules/71/asm/module_71.s2
-rw-r--r--arm9/modules/80/asm/module_80.s2
-rw-r--r--arm9/modules/83/asm/module_83.s4
-rw-r--r--arm9/src/pokemon.c105
-rw-r--r--include/constants/items.h448
-rw-r--r--include/pokemon.h2
22 files changed, 585 insertions, 303 deletions
diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s
index a2fb59bb..82548f30 100644
--- a/arm9/asm/pokemon_s.s
+++ b/arm9/asm/pokemon_s.s
@@ -21,272 +21,7 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8
.extern LoadGrowthTable
.extern GetExpByGrowthRateAndLevel
- thumb_func_start MonApplyFriendshipModEncrypted
-MonApplyFriendshipModEncrypted: ; 0x020688E8
- push {r3-r7, lr}
- sub sp, #0x8
- add r6, r1, #0x0
- add r5, r0, #0x0
- str r2, [sp, #0x0]
- cmp r6, #0x5
- bne _02068900
- bl rand_LC
- mov r1, #0x1
- tst r0, r1
- bne _020689D4
-_02068900:
- add r0, r5, #0x0
- mov r1, #0xad
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r1, r0, #0x10
- beq _020689D4
- ldr r0, _020689D8 ; =SPECIES_EGG
- cmp r1, r0
- beq _020689D4
- add r0, r5, #0x0
- mov r1, #0x6
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r1, #0x1
- mov r2, #0x0
- bl FUN_0206E7B8
- lsl r0, r0, #0x18
- mov r4, #0x0
- lsr r7, r0, #0x18
- add r0, r5, #0x0
- mov r1, #0x9
- add r2, r4, #0x0
- bl GetMonData
- add r1, sp, #0x4
- strh r0, [r1, #0x0]
- add r0, r4, #0x0
- ldrsh r1, [r1, r0]
- cmp r1, #0x64
- blt _0206894E
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_0206894E:
- cmp r1, #0xc8
- blt _02068958
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
-_02068958:
- lsl r0, r6, #0x1
- add r1, r6, r0
- ldr r0, _020689DC ; =sFriendshipModTable
- add r0, r0, r1
- ldrsb r4, [r4, r0]
- cmp r4, #0x0
- ble _0206897A
- add r0, r5, #0x0
- mov r1, #0x9a
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0xb
- bne _0206897A
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- asr r4, r0, #0x18
-_0206897A:
- cmp r4, #0x0
- ble _02068994
- add r0, r5, #0x0
- mov r1, #0x97
- mov r2, #0x0
- bl GetMonData
- ldr r1, [sp, #0x0]
- cmp r1, r0
- bne _02068994
- add r0, r4, #0x1
- lsl r0, r0, #0x18
- asr r4, r0, #0x18
-_02068994:
- cmp r4, #0x0
- ble _020689AA
- cmp r7, #0x34
- bne _020689AA
- mov r0, #0x96
- mul r0, r4
- mov r1, #0x64
- bl _s32_div_f
- lsl r0, r0, #0x18
- asr r4, r0, #0x18
-_020689AA:
- add r0, sp, #0x4
- mov r1, #0x0
- ldrsh r2, [r0, r1]
- add r2, r2, r4
- strh r2, [r0, #0x0]
- ldrsh r2, [r0, r1]
- cmp r2, #0x0
- bge _020689BC
- strh r1, [r0, #0x0]
-_020689BC:
- add r1, sp, #0x4
- mov r0, #0x0
- ldrsh r0, [r1, r0]
- cmp r0, #0xff
- ble _020689CA
- mov r0, #0xff
- strh r0, [r1, #0x0]
-_020689CA:
- add r0, r5, #0x0
- mov r1, #0x9
- add r2, sp, #0x4
- bl SetMonData
-_020689D4:
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-_020689D8: .word SPECIES_EGG
-_020689DC: .word sFriendshipModTable
-
- thumb_func_start GetMonGenderEncrypted
-GetMonGenderEncrypted: ; 0x020689E0
- ldr r3, _020689E4 ; =GetBoxMonGenderEncrypted
- bx r3
- .balign 4
-_020689E4: .word GetBoxMonGenderEncrypted
-
- thumb_func_start GetBoxMonGenderEncrypted
-GetBoxMonGenderEncrypted: ; 0x020689E8
- push {r3-r7, lr}
- add r5, r0, #0x0
- bl AcquireBoxMonLock
- add r6, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetBoxMonData
- lsl r0, r0, #0x10
- mov r1, #0x0
- lsr r4, r0, #0x10
- add r0, r5, #0x0
- add r2, r1, #0x0
- bl GetBoxMonData
- add r7, r0, #0x0
- add r0, r5, #0x0
- add r1, r6, #0x0
- bl ReleaseBoxMonLock
- add r0, r4, #0x0
- add r1, r7, #0x0
- bl GetGenderBySpeciesAndPersonality
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start GetGenderBySpeciesAndPersonality
-GetGenderBySpeciesAndPersonality: ; 0x02068A20
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- mov r1, #0x0
- bl AllocAndLoadMonPersonal
- add r6, r0, #0x0
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl GetGenderBySpeciesAndPersonality_PreloadedPersonal
- add r4, r0, #0x0
- add r0, r6, #0x0
- bl FreeMonPersonal
- add r0, r4, #0x0
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start GetGenderBySpeciesAndPersonality_PreloadedPersonal
-GetGenderBySpeciesAndPersonality_PreloadedPersonal: ; 0x02068A44
- push {r4, lr}
- mov r1, #0x12
- add r4, r2, #0x0
- bl GetPersonalAttr
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- beq _02068A5E
- cmp r1, #0xfe
- beq _02068A62
- cmp r1, #0xff
- beq _02068A66
- b _02068A6A
-_02068A5E:
- mov r0, #0x0
- pop {r4, pc}
-_02068A62:
- mov r0, #0x1
- pop {r4, pc}
-_02068A66:
- mov r0, #0x2
- pop {r4, pc}
-_02068A6A:
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- cmp r1, r0
- bls _02068A76
- mov r0, #0x1
- b _02068A78
-_02068A76:
- mov r0, #0x0
-_02068A78:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r4, pc}
- .balign 4
-
- thumb_func_start MonIsShiny
-MonIsShiny: ; 0x02068A80
- ldr r3, _02068A84 ; =BoxMonIsShiny
- bx r3
- .balign 4
-_02068A84: .word BoxMonIsShiny
-
- thumb_func_start BoxMonIsShiny
-BoxMonIsShiny: ; 0x02068A88
- push {r3-r5, lr}
- mov r1, #0x7
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetBoxMonData
- mov r1, #0x0
- add r4, r0, #0x0
- add r0, r5, #0x0
- add r2, r1, #0x0
- bl GetBoxMonData
- add r1, r0, #0x0
- add r0, r4, #0x0
- bl CalcShininessByOtIdAndPersonality
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start CalcShininessByOtIdAndPersonality
-CalcShininessByOtIdAndPersonality: ; 0x02068AAC
- ldr r3, _02068AD4 ; =0xFFFF0000
- lsl r2, r1, #0x10
- and r1, r3
- and r3, r0
- lsl r0, r0, #0x10
- lsr r3, r3, #0x10
- lsr r0, r0, #0x10
- lsr r1, r1, #0x10
- eor r0, r3
- lsr r2, r2, #0x10
- eor r0, r1
- eor r0, r2
- cmp r0, #0x8
- bhs _02068ACC
- mov r0, #0x1
- b _02068ACE
-_02068ACC:
- mov r0, #0x0
-_02068ACE:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bx lr
- .balign 4
-_02068AD4: .word 0xFFFF0000
+ .extern BoxMonIsShiny
thumb_func_start GenerateShinyPersonality
GenerateShinyPersonality: ; 0x02068AD8
@@ -381,7 +116,7 @@ FUN_02068B70: ; 0x02068B70
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0x0
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
str r0, [sp, #0x14]
add r0, r5, #0x0
bl BoxMonIsShiny
@@ -754,7 +489,7 @@ FUN_02068E1C: ; 0x02068E1C
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0x0
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
mov r1, #0x0
str r0, [sp, #0x4]
add r0, r5, #0x0
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index a941eb48..3c0ac2f0 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -391,7 +391,7 @@ _02042FE8:
add r0, r4, #0x0
bl FUN_0206A23C
add r0, r4, #0x0
- bl GetMonGenderEncrypted
+ bl GetMonGender
str r0, [sp, #0x30]
add r0, r4, #0x0
mov r1, #0x6f
diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s
index 480a9e7a..46a01c79 100644
--- a/arm9/asm/unk_02023C40.s
+++ b/arm9/asm/unk_02023C40.s
@@ -1926,7 +1926,7 @@ FUN_0202498C: ; 0x0202498C
bl GetMonData
add r7, r0, #0x0
ldr r0, [sp, #0x0]
- bl GetMonGenderEncrypted
+ bl GetMonGender
add r6, r0, #0x0
ldr r1, [r5, #0x0]
ldr r0, _02024AE4 ; =0xBEEFCAFE
@@ -2113,7 +2113,7 @@ FUN_02024AF0: ; 0x02024AF0
bl GetMonData
str r0, [sp, #0x4]
ldr r0, [sp, #0x0]
- bl GetMonGenderEncrypted
+ bl GetMonGender
add r7, r0, #0x0
ldr r1, [r4, #0x0]
ldr r0, _02024C78 ; =0xBEEFCAFE
diff --git a/arm9/asm/unk_0204A01C.s b/arm9/asm/unk_0204A01C.s
index 2864246e..5ea5d8c5 100644
--- a/arm9/asm/unk_0204A01C.s
+++ b/arm9/asm/unk_0204A01C.s
@@ -378,7 +378,7 @@ _0204A2EA:
add r0, r5, #0x0
mov r1, #0x7
add r6, r6, #0x1
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
_0204A306:
add r7, r7, #0x1
_0204A308:
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index eddf119f..984a657d 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -1775,7 +1775,7 @@ _0207018E:
ldr r0, _020701FC ; =0x0000070E
add r6, r5, r0
add r0, r7, #0x0
- bl GetMonGenderEncrypted
+ bl GetMonGender
lsl r0, r0, #0x1e
ldrh r2, [r6, r4]
ldr r1, _02070204 ; =0xFFFF9FFF
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 879b13ea..ca869d5a 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -3121,7 +3121,7 @@ _02076F98:
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x4
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
_02076FA8:
add sp, #0x4
pop {r3-r6, pc}
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 978c1f6d..8b972fcc 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -1961,7 +1961,7 @@ _0207AC16:
strb r0, [r5, #0x12]
_0207AC1E:
add r0, r6, #0x0
- bl GetMonGenderEncrypted
+ bl GetMonGender
ldrb r1, [r5, #0x13]
mov r2, #0x3
bic r1, r2
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index 3437cc36..bf8c6901 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -3748,7 +3748,7 @@ _02082820:
lsl r2, r2, #0x10
mov r1, #0x9
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
_0208283A:
add sp, #0xc
pop {r4-r7, pc}
diff --git a/arm9/global.inc b/arm9/global.inc
index e61ae077..c033aa3e 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4740,9 +4740,9 @@
.extern GetMonNature
.extern GetBoxMonNature
.extern GetNatureFromPersonality
-.extern MonApplyFriendshipModEncrypted
-.extern GetMonGenderEncrypted
-.extern GetBoxMonGenderEncrypted
+.extern MonApplyFriendshipMod
+.extern GetMonGender
+.extern GetBoxMonGender
.extern GetGenderBySpeciesAndPersonality
.extern GetGenderBySpeciesAndPersonality_PreloadedPersonal
.extern MonIsShiny
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 736c4f38..ea4a9191 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3290,7 +3290,7 @@ _021D8FF6:
bl FUN_0206B9B0
mov r1, #5
add r2, r5, #0
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
add r4, r4, #1
cmp r4, r7
blt _021D8FF6
@@ -43564,7 +43564,7 @@ MOD05_021EC8A8: ; 0x021EC8A8
add r5, sp, #4
_021EC8BC:
ldr r0, [r5]
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
cmp r0, #1
bne _021EC8C8
str r4, [sp]
@@ -44316,7 +44316,7 @@ _021ECE56:
b _021ECE8C
_021ECE7A:
ldr r0, [r7, r6]
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
cmp r0, #1
bne _021ECE8C
mov r0, #1
@@ -44377,7 +44377,7 @@ _021ECEDE:
lsl r1, r0, #2
add r0, sp, #4
ldr r0, [r0, r1]
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
cmp r0, #1
beq _021ECF02
ldrb r1, [r5, #1]
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 116ffbed..5f048017 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -3758,7 +3758,7 @@ _02213CEA:
ldr r0, _02213D28 ; =0x00000222
strb r1, [r7, r0]
add r0, r4, #0
- bl GetMonGenderEncrypted
+ bl GetMonGender
ldr r1, _02213D2C ; =0x00000221
strb r0, [r5, r1]
add r0, r4, #0
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 6312dd4f..26c682ce 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -2535,7 +2535,7 @@ _022132C2:
add r6, r0, #0
ldr r0, [r4, #4]
add r6, #0x1b
- bl GetMonGenderEncrypted
+ bl GetMonGender
ldrb r1, [r6, r5]
mov r2, #7
bic r1, r2
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 2e80cbba..f8a593a1 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -2898,7 +2898,7 @@ _0222EE8C:
add r1, r7, #0
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
ldr r0, [r4, #0x68]
add r5, r5, #1
bl FUN_0206B9AC
@@ -2920,7 +2920,7 @@ _0222EEBC:
add r1, r7, #0
lsl r2, r2, #0x10
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
ldr r0, [r4, #0x70]
add r5, r5, #1
bl FUN_0206B9AC
@@ -27099,7 +27099,7 @@ _0223AB58:
add r0, r6, #0
mov r1, #0
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
add r0, r6, #0
bl CalcMonStats
ldr r1, [r4, #4]
@@ -31697,7 +31697,7 @@ _0223D148:
add r0, r7, #0
mov r1, #8
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
pop {r3, r4, r5, r6, r7, pc}
_0223D18E:
add r0, r5, #0
@@ -31707,7 +31707,7 @@ _0223D18E:
add r0, r7, #0
mov r1, #6
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
pop {r3, r4, r5, r6, r7, pc}
_0223D1A4:
add r0, r5, #0
@@ -31717,7 +31717,7 @@ _0223D1A4:
add r0, r7, #0
mov r1, #6
lsr r2, r2, #0x10
- bl MonApplyFriendshipModEncrypted
+ bl MonApplyFriendshipMod
_0223D1B8:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -43613,7 +43613,7 @@ _02242D2E:
add r0, r7, r1
str r0, [sp, #0x1c]
add r0, r4, #0
- bl GetMonGenderEncrypted
+ bl GetMonGender
ldr r1, [sp, #0x1c]
mov r2, #0xf
ldrb r1, [r1, r5]
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
index 760c2f64..a07a6426 100644
--- a/arm9/modules/35/asm/module_35.s
+++ b/arm9/modules/35/asm/module_35.s
@@ -349,7 +349,7 @@ _02254A7A:
bl MOD05_021EC7B4
str r0, [r5, #0xc]
add r0, r4, #0
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
str r0, [r5, #0x14]
ldr r1, [sp, #0xc]
add r0, r4, #0
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index c62ef6e6..fa4d0c5b 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -3376,7 +3376,7 @@ MOD65_021D8F34: ; 0x021D8F34
strh r0, [r4, #0x34]
ldr r0, [r4, #0x10]
ldr r0, [r0]
- bl GetMonGenderEncrypted
+ bl GetMonGender
add r1, r4, #0
add r1, #0x37
strb r0, [r1]
diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s
index 3199be5d..32eb8847 100644
--- a/arm9/modules/69/asm/module_69.s
+++ b/arm9/modules/69/asm/module_69.s
@@ -2370,7 +2370,7 @@ MOD69_0222E8FC: ; 0x0222E8FC
mov r3, #3
bl FUN_0200AD38
ldr r0, [r4, #0x24]
- bl GetMonGenderEncrypted
+ bl GetMonGender
cmp r0, #0
beq _0222E93C
cmp r0, #1
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index bc13fe8f..e9d79012 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -6435,7 +6435,7 @@ MOD71_02230AE4: ; 0x02230AE4
bl FUN_020239CC
add r5, r0, #0
add r0, r4, #0
- bl GetMonGenderEncrypted
+ bl GetMonGender
add r3, r0, #0
mov r0, #0x1a
lsl r1, r5, #0x18
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index ffa44bd8..8b553253 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -16366,7 +16366,7 @@ MOD80_022357A0: ; 0x022357A0
add r2, sp, #4
bl GetMonData
add r0, r4, #0
- bl GetMonGenderEncrypted
+ bl GetMonGender
add r3, r0, #0
mov r0, #0x3e
str r0, [sp]
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index bd2f6d2f..2aa02a59 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -22397,7 +22397,7 @@ _02238332:
add r2, sp, #8
bl SetBoxMonData
add r0, r4, #0
- bl GetBoxMonGenderEncrypted
+ bl GetBoxMonGender
str r0, [sp, #8]
add r0, r4, #0
mov r1, #0x6f
@@ -23885,7 +23885,7 @@ MOD83_02238F94: ; 0x02238F94
add r7, r2, #0
add r6, r3, #0
ldr r4, [sp, #0x40]
- bl GetMonGenderEncrypted
+ bl GetMonGender
str r0, [sp, #0x24]
ldr r0, [sp, #0x20]
bl MonIsShiny
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 663b581a..58030ee1 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -10,6 +10,7 @@
#include "string_util.h"
#include "text.h"
#include "constants/abilities.h"
+#include "constants/items.h"
#pragma thumb on
@@ -20,9 +21,13 @@ void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr);
void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount);
void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount);
u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon);
+u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno);
+u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid);
+u8 BoxMonIsShiny(struct BoxPokemon * boxmon);
+u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid);
void LoadMonPersonal(int species, struct BaseStats * personal);
-int ResolveMonForme(int species, int forme);
+int ResolveMonForme(int species, int forme);
void MonEncryptSegment(void * datap, u32 size, u32 key);
void MonDecryptSegment(void * datap, u32 size, u32 key);
u16 MonEncryptionLCRNG(u32 * seed);
@@ -30,7 +35,6 @@ u16 CalcMonChecksum(void * datap, u32 size);
void InitBoxMonMoveset(struct BoxPokemon * boxmon);
PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct);
void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats);
-u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno);
#define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid
#define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum
@@ -316,7 +320,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi
}
else
SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp);
- exp = GetBoxMonGenderEncrypted(boxPokemon);
+ exp = GetBoxMonGender(boxPokemon);
SetBoxMonData(boxPokemon, MON_DATA_GENDER, &exp);
InitBoxMonMoveset(boxPokemon);
ReleaseBoxMonLock(boxPokemon, decry);
@@ -2017,3 +2021,98 @@ u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
}
return retVal;
}
+
+void MonApplyFriendshipMod(struct Pokemon * pokemon, u32 kind, u32 location)
+{
+ u16 species;
+ u8 effect;
+ u8 r4;
+ s16 friendship;
+ s8 mod;
+
+ if (kind == 5 && (rand_LC() & 1))
+ return;
+
+ species = GetMonData(pokemon, MON_DATA_SPECIES2, NULL);
+ if (species == SPECIES_NONE || species == SPECIES_EGG)
+ return;
+
+ effect = FUN_0206E7B8(GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL), 1, 0);
+ r4 = 0;
+ friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL);
+ if (friendship >= 100)
+ r4++;
+ if (friendship >= 200)
+ r4++;
+ mod = sFriendshipModTable[kind][r4];
+ if (mod > 0 && GetMonData(pokemon, MON_DATA_POKEBALL, NULL) == ITEM_LUXURY_BALL)
+ mod++;
+ if (mod > 0 && GetMonData(pokemon, MON_DATA_EGG_MET_LOCATION, NULL) == location)
+ mod++;
+ if (mod > 0 && effect == 52) // Soothe Bell effect?
+ mod = mod * 150 / 100;
+ friendship += mod;
+ if (friendship < 0)
+ friendship = 0;
+ if (friendship > 255)
+ friendship = 255;
+ SetMonData(pokemon, MON_DATA_FRIENDSHIP, &friendship);
+}
+
+u8 GetMonGender(struct Pokemon * pokemon)
+{
+ return GetBoxMonGender(&pokemon->box);
+}
+
+u8 GetBoxMonGender(struct BoxPokemon * boxmon)
+{
+ BOOL decry = AcquireBoxMonLock(boxmon);
+ u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL);
+ ReleaseBoxMonLock(boxmon, decry);
+ return GetGenderBySpeciesAndPersonality(species, personality);
+}
+
+u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid)
+{
+ struct BaseStats * personal = AllocAndLoadMonPersonal(species, 0);
+ u8 gender = GetGenderBySpeciesAndPersonality_PreloadedPersonal(personal, species, pid);
+ FreeMonPersonal(personal);
+ return gender;
+}
+
+u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid)
+{
+ u8 ratio = GetPersonalAttr(personal, BASE_GENDER_RATIO);
+ switch (ratio)
+ {
+ case MON_RATIO_MALE:
+ return MON_MALE;
+ case MON_RATIO_FEMALE:
+ return MON_FEMALE;
+ case MON_RATIO_UNKNOWN:
+ return MON_GENDERLESS;
+ default:
+ if (ratio > (u8)pid)
+ return MON_FEMALE;
+ else
+ return MON_MALE;
+ }
+}
+
+u8 MonIsShiny(struct Pokemon * pokemon)
+{
+ return BoxMonIsShiny(&pokemon->box);
+}
+
+u8 BoxMonIsShiny(struct BoxPokemon * boxmon)
+{
+ u32 otid = GetBoxMonData(boxmon, MON_DATA_OTID, NULL);
+ u32 pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL);
+ return CalcShininessByOtIdAndPersonality(otid, pid);
+}
+
+u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid)
+{
+ return SHINY_CHECK(otid, pid);
+}
diff --git a/include/constants/items.h b/include/constants/items.h
new file mode 100644
index 00000000..98c3dd97
--- /dev/null
+++ b/include/constants/items.h
@@ -0,0 +1,448 @@
+#ifndef POKEDIAMOND_CONSTANTS_ITEMS_H
+#define POKEDIAMOND_CONSTANTS_ITEMS_H
+
+#define ITEM_NONE 0
+#define ITEM_MASTER_BALL 1
+#define ITEM_ULTRA_BALL 2
+#define ITEM_GREAT_BALL 3
+#define ITEM_POKE_BALL 4
+#define ITEM_SAFARI_BALL 5
+#define ITEM_NET_BALL 6
+#define ITEM_DIVE_BALL 7
+#define ITEM_NEST_BALL 8
+#define ITEM_REPEAT_BALL 9
+#define ITEM_TIMER_BALL 10
+#define ITEM_LUXURY_BALL 11
+#define ITEM_PREMIER_BALL 12
+#define ITEM_DUSK_BALL 13
+#define ITEM_HEAL_BALL 14
+#define ITEM_QUICK_BALL 15
+#define ITEM_CHERISH_BALL 16
+#define ITEM_POTION 17
+#define ITEM_ANTIDOTE 18
+#define ITEM_BURN_HEAL 19
+#define ITEM_ICE_HEAL 20
+#define ITEM_AWAKENING 21
+#define ITEM_PARLYZ_HEAL 22
+#define ITEM_FULL_RESTORE 23
+#define ITEM_MAX_POTION 24
+#define ITEM_HYPER_POTION 25
+#define ITEM_SUPER_POTION 26
+#define ITEM_FULL_HEAL 27
+#define ITEM_REVIVE 28
+#define ITEM_MAX_REVIVE 29
+#define ITEM_FRESH_WATER 30
+#define ITEM_SODA_POP 31
+#define ITEM_LEMONADE 32
+#define ITEM_MOOMOO_MILK 33
+#define ITEM_ENERGYPOWDER 34
+#define ITEM_ENERGY_ROOT 35
+#define ITEM_HEAL_POWDER 36
+#define ITEM_REVIVAL_HERB 37
+#define ITEM_ETHER 38
+#define ITEM_MAX_ETHER 39
+#define ITEM_ELIXIR 40
+#define ITEM_MAX_ELIXIR 41
+#define ITEM_LAVA_COOKIE 42
+#define ITEM_BERRY_JUICE 43
+#define ITEM_SACRED_ASH 44
+#define ITEM_HP_UP 45
+#define ITEM_PROTEIN 46
+#define ITEM_IRON 47
+#define ITEM_CARBOS 48
+#define ITEM_CALCIUM 49
+#define ITEM_RARE_CANDY 50
+#define ITEM_PP_UP 51
+#define ITEM_ZINC 52
+#define ITEM_PP_MAX 53
+#define ITEM_OLD_GATEAU 54
+#define ITEM_GUARD_SPEC_ 55
+#define ITEM_DIRE_HIT 56
+#define ITEM_X_ATTACK 57
+#define ITEM_X_DEFENSE 58
+#define ITEM_X_SPEED 59
+#define ITEM_X_ACCURACY 60
+#define ITEM_X_SPECIAL 61
+#define ITEM_X_SP__DEF 62
+#define ITEM_POKE_DOLL 63
+#define ITEM_FLUFFY_TAIL 64
+#define ITEM_BLUE_FLUTE 65
+#define ITEM_YELLOW_FLUTE 66
+#define ITEM_RED_FLUTE 67
+#define ITEM_BLACK_FLUTE 68
+#define ITEM_WHITE_FLUTE 69
+#define ITEM_SHOAL_SALT 70
+#define ITEM_SHOAL_SHELL 71
+#define ITEM_RED_SHARD 72
+#define ITEM_BLUE_SHARD 73
+#define ITEM_YELLOW_SHARD 74
+#define ITEM_GREEN_SHARD 75
+#define ITEM_SUPER_REPEL 76
+#define ITEM_MAX_REPEL 77
+#define ITEM_ESCAPE_ROPE 78
+#define ITEM_REPEL 79
+#define ITEM_SUN_STONE 80
+#define ITEM_MOON_STONE 81
+#define ITEM_FIRE_STONE 82
+#define ITEM_THUNDERSTONE 83
+#define ITEM_WATER_STONE 84
+#define ITEM_LEAF_STONE 85
+#define ITEM_TINYMUSHROOM 86
+#define ITEM_BIG_MUSHROOM 87
+#define ITEM_PEARL 88
+#define ITEM_BIG_PEARL 89
+#define ITEM_STARDUST 90
+#define ITEM_STAR_PIECE 91
+#define ITEM_NUGGET 92
+#define ITEM_HEART_SCALE 93
+#define ITEM_HONEY 94
+#define ITEM_GROWTH_MULCH 95
+#define ITEM_DAMP_MULCH 96
+#define ITEM_STABLE_MULCH 97
+#define ITEM_GOOEY_MULCH 98
+#define ITEM_ROOT_FOSSIL 99
+#define ITEM_CLAW_FOSSIL 100
+#define ITEM_HELIX_FOSSIL 101
+#define ITEM_DOME_FOSSIL 102
+#define ITEM_OLD_AMBER 103
+#define ITEM_ARMOR_FOSSIL 104
+#define ITEM_SKULL_FOSSIL 105
+#define ITEM_RARE_BONE 106
+#define ITEM_SHINY_STONE 107
+#define ITEM_DUSK_STONE 108
+#define ITEM_DAWN_STONE 109
+#define ITEM_OVAL_STONE 110
+#define ITEM_ODD_KEYSTONE 111
+
+#define ITEM_ADAMANT_ORB 135
+#define ITEM_LUSTROUS_ORB 136
+#define ITEM_GRASS_MAIL 137
+#define ITEM_FLAME_MAIL 138
+#define ITEM_BUBBLE_MAIL 139
+#define ITEM_BLOOM_MAIL 140
+#define ITEM_TUNNEL_MAIL 141
+#define ITEM_STEEL_MAIL 142
+#define ITEM_HEART_MAIL 143
+#define ITEM_SNOW_MAIL 144
+#define ITEM_SPACE_MAIL 145
+#define ITEM_AIR_MAIL 146
+#define ITEM_MOSAIC_MAIL 147
+#define ITEM_BRICK_MAIL 148
+#define ITEM_CHERI_BERRY 149
+#define ITEM_CHESTO_BERRY 150
+#define ITEM_PECHA_BERRY 151
+#define ITEM_RAWST_BERRY 152
+#define ITEM_ASPEAR_BERRY 153
+#define ITEM_LEPPA_BERRY 154
+#define ITEM_ORAN_BERRY 155
+#define ITEM_PERSIM_BERRY 156
+#define ITEM_LUM_BERRY 157
+#define ITEM_SITRUS_BERRY 158
+#define ITEM_FIGY_BERRY 159
+#define ITEM_WIKI_BERRY 160
+#define ITEM_MAGO_BERRY 161
+#define ITEM_AGUAV_BERRY 162
+#define ITEM_IAPAPA_BERRY 163
+#define ITEM_RAZZ_BERRY 164
+#define ITEM_BLUK_BERRY 165
+#define ITEM_NANAB_BERRY 166
+#define ITEM_WEPEAR_BERRY 167
+#define ITEM_PINAP_BERRY 168
+#define ITEM_POMEG_BERRY 169
+#define ITEM_KELPSY_BERRY 170
+#define ITEM_QUALOT_BERRY 171
+#define ITEM_HONDEW_BERRY 172
+#define ITEM_GREPA_BERRY 173
+#define ITEM_TAMATO_BERRY 174
+#define ITEM_CORNN_BERRY 175
+#define ITEM_MAGOST_BERRY 176
+#define ITEM_RABUTA_BERRY 177
+#define ITEM_NOMEL_BERRY 178
+#define ITEM_SPELON_BERRY 179
+#define ITEM_PAMTRE_BERRY 180
+#define ITEM_WATMEL_BERRY 181
+#define ITEM_DURIN_BERRY 182
+#define ITEM_BELUE_BERRY 183
+#define ITEM_OCCA_BERRY 184
+#define ITEM_PASSHO_BERRY 185
+#define ITEM_WACAN_BERRY 186
+#define ITEM_RINDO_BERRY 187
+#define ITEM_YACHE_BERRY 188
+#define ITEM_CHOPLE_BERRY 189
+#define ITEM_KEBIA_BERRY 190
+#define ITEM_SHUCA_BERRY 191
+#define ITEM_COBA_BERRY 192
+#define ITEM_PAYAPA_BERRY 193
+#define ITEM_TANGA_BERRY 194
+#define ITEM_CHARTI_BERRY 195
+#define ITEM_KASIB_BERRY 196
+#define ITEM_HABAN_BERRY 197
+#define ITEM_COLBUR_BERRY 198
+#define ITEM_BABIRI_BERRY 199
+#define ITEM_CHILAN_BERRY 200
+#define ITEM_LIECHI_BERRY 201
+#define ITEM_GANLON_BERRY 202
+#define ITEM_SALAC_BERRY 203
+#define ITEM_PETAYA_BERRY 204
+#define ITEM_APICOT_BERRY 205
+#define ITEM_LANSAT_BERRY 206
+#define ITEM_STARF_BERRY 207
+#define ITEM_ENIGMA_BERRY 208
+#define ITEM_MICLE_BERRY 209
+#define ITEM_CUSTAP_BERRY 210
+#define ITEM_JABOCA_BERRY 211
+#define ITEM_ROWAP_BERRY 212
+#define ITEM_BRIGHTPOWDER 213
+#define ITEM_WHITE_HERB 214
+#define ITEM_MACHO_BRACE 215
+#define ITEM_EXP__SHARE 216
+#define ITEM_QUICK_CLAW 217
+#define ITEM_SOOTHE_BELL 218
+#define ITEM_MENTAL_HERB 219
+#define ITEM_CHOICE_BAND 220
+#define ITEM_KINGS_ROCK 221
+#define ITEM_SILVERPOWDER 222
+#define ITEM_AMULET_COIN 223
+#define ITEM_CLEANSE_TAG 224
+#define ITEM_SOUL_DEW 225
+#define ITEM_DEEPSEATOOTH 226
+#define ITEM_DEEPSEASCALE 227
+#define ITEM_SMOKE_BALL 228
+#define ITEM_EVERSTONE 229
+#define ITEM_FOCUS_BAND 230
+#define ITEM_LUCKY_EGG 231
+#define ITEM_SCOPE_LENS 232
+#define ITEM_METAL_COAT 233
+#define ITEM_LEFTOVERS 234
+#define ITEM_DRAGON_SCALE 235
+#define ITEM_LIGHT_BALL 236
+#define ITEM_SOFT_SAND 237
+#define ITEM_HARD_STONE 238
+#define ITEM_MIRACLE_SEED 239
+#define ITEM_BLACKGLASSES 240
+#define ITEM_BLACK_BELT 241
+#define ITEM_MAGNET 242
+#define ITEM_MYSTIC_WATER 243
+#define ITEM_SHARP_BEAK 244
+#define ITEM_POISON_BARB 245
+#define ITEM_NEVERMELTICE 246
+#define ITEM_SPELL_TAG 247
+#define ITEM_TWISTEDSPOON 248
+#define ITEM_CHARCOAL 249
+#define ITEM_DRAGON_FANG 250
+#define ITEM_SILK_SCARF 251
+#define ITEM_UPGRADE 252
+#define ITEM_SHELL_BELL 253
+#define ITEM_SEA_INCENSE 254
+#define ITEM_LAX_INCENSE 255
+#define ITEM_LUCKY_PUNCH 256
+#define ITEM_METAL_POWDER 257
+#define ITEM_THICK_CLUB 258
+#define ITEM_STICK 259
+#define ITEM_RED_SCARF 260
+#define ITEM_BLUE_SCARF 261
+#define ITEM_PINK_SCARF 262
+#define ITEM_GREEN_SCARF 263
+#define ITEM_YELLOW_SCARF 264
+#define ITEM_WIDE_LENS 265
+#define ITEM_MUSCLE_BAND 266
+#define ITEM_WISE_GLASSES 267
+#define ITEM_EXPERT_BELT 268
+#define ITEM_LIGHT_CLAY 269
+#define ITEM_LIFE_ORB 270
+#define ITEM_POWER_HERB 271
+#define ITEM_TOXIC_ORB 272
+#define ITEM_FLAME_ORB 273
+#define ITEM_QUICK_POWDER 274
+#define ITEM_FOCUS_SASH 275
+#define ITEM_ZOOM_LENS 276
+#define ITEM_METRONOME 277
+#define ITEM_IRON_BALL 278
+#define ITEM_LAGGING_TAIL 279
+#define ITEM_DESTINY_KNOT 280
+#define ITEM_BLACK_SLUDGE 281
+#define ITEM_ICY_ROCK 282
+#define ITEM_SMOOTH_ROCK 283
+#define ITEM_HEAT_ROCK 284
+#define ITEM_DAMP_ROCK 285
+#define ITEM_GRIP_CLAW 286
+#define ITEM_CHOICE_SCARF 287
+#define ITEM_STICKY_BARB 288
+#define ITEM_POWER_BRACER 289
+#define ITEM_POWER_BELT 290
+#define ITEM_POWER_LENS 291
+#define ITEM_POWER_BAND 292
+#define ITEM_POWER_ANKLET 293
+#define ITEM_POWER_WEIGHT 294
+#define ITEM_SHED_SHELL 295
+#define ITEM_BIG_ROOT 296
+#define ITEM_CHOICE_SPECS 297
+#define ITEM_FLAME_PLATE 298
+#define ITEM_SPLASH_PLATE 299
+#define ITEM_ZAP_PLATE 300
+#define ITEM_MEADOW_PLATE 301
+#define ITEM_ICICLE_PLATE 302
+#define ITEM_FIST_PLATE 303
+#define ITEM_TOXIC_PLATE 304
+#define ITEM_EARTH_PLATE 305
+#define ITEM_SKY_PLATE 306
+#define ITEM_MIND_PLATE 307
+#define ITEM_INSECT_PLATE 308
+#define ITEM_STONE_PLATE 309
+#define ITEM_SPOOKY_PLATE 310
+#define ITEM_DRACO_PLATE 311
+#define ITEM_DREAD_PLATE 312
+#define ITEM_IRON_PLATE 313
+#define ITEM_ODD_INCENSE 314
+#define ITEM_ROCK_INCENSE 315
+#define ITEM_FULL_INCENSE 316
+#define ITEM_WAVE_INCENSE 317
+#define ITEM_ROSE_INCENSE 318
+#define ITEM_LUCK_INCENSE 319
+#define ITEM_PURE_INCENSE 320
+#define ITEM_PROTECTOR 321
+#define ITEM_ELECTIRIZER 322
+#define ITEM_MAGMARIZER 323
+#define ITEM_DUBIOUS_DISC 324
+#define ITEM_REAPER_CLOTH 325
+#define ITEM_RAZOR_CLAW 326
+#define ITEM_RAZOR_FANG 327
+#define ITEM_TM01 328
+#define ITEM_TM02 329
+#define ITEM_TM03 330
+#define ITEM_TM04 331
+#define ITEM_TM05 332
+#define ITEM_TM06 333
+#define ITEM_TM07 334
+#define ITEM_TM08 335
+#define ITEM_TM09 336
+#define ITEM_TM10 337
+#define ITEM_TM11 338
+#define ITEM_TM12 339
+#define ITEM_TM13 340
+#define ITEM_TM14 341
+#define ITEM_TM15 342
+#define ITEM_TM16 343
+#define ITEM_TM17 344
+#define ITEM_TM18 345
+#define ITEM_TM19 346
+#define ITEM_TM20 347
+#define ITEM_TM21 348
+#define ITEM_TM22 349
+#define ITEM_TM23 350
+#define ITEM_TM24 351
+#define ITEM_TM25 352
+#define ITEM_TM26 353
+#define ITEM_TM27 354
+#define ITEM_TM28 355
+#define ITEM_TM29 356
+#define ITEM_TM30 357
+#define ITEM_TM31 358
+#define ITEM_TM32 359
+#define ITEM_TM33 360
+#define ITEM_TM34 361
+#define ITEM_TM35 362
+#define ITEM_TM36 363
+#define ITEM_TM37 364
+#define ITEM_TM38 365
+#define ITEM_TM39 366
+#define ITEM_TM40 367
+#define ITEM_TM41 368
+#define ITEM_TM42 369
+#define ITEM_TM43 370
+#define ITEM_TM44 371
+#define ITEM_TM45 372
+#define ITEM_TM46 373
+#define ITEM_TM47 374
+#define ITEM_TM48 375
+#define ITEM_TM49 376
+#define ITEM_TM50 377
+#define ITEM_TM51 378
+#define ITEM_TM52 379
+#define ITEM_TM53 380
+#define ITEM_TM54 381
+#define ITEM_TM55 382
+#define ITEM_TM56 383
+#define ITEM_TM57 384
+#define ITEM_TM58 385
+#define ITEM_TM59 386
+#define ITEM_TM60 387
+#define ITEM_TM61 388
+#define ITEM_TM62 389
+#define ITEM_TM63 390
+#define ITEM_TM64 391
+#define ITEM_TM65 392
+#define ITEM_TM66 393
+#define ITEM_TM67 394
+#define ITEM_TM68 395
+#define ITEM_TM69 396
+#define ITEM_TM70 397
+#define ITEM_TM71 398
+#define ITEM_TM72 399
+#define ITEM_TM73 400
+#define ITEM_TM74 401
+#define ITEM_TM75 402
+#define ITEM_TM76 403
+#define ITEM_TM77 404
+#define ITEM_TM78 405
+#define ITEM_TM79 406
+#define ITEM_TM80 407
+#define ITEM_TM81 408
+#define ITEM_TM82 409
+#define ITEM_TM83 410
+#define ITEM_TM84 411
+#define ITEM_TM85 412
+#define ITEM_TM86 413
+#define ITEM_TM87 414
+#define ITEM_TM88 415
+#define ITEM_TM89 416
+#define ITEM_TM90 417
+#define ITEM_TM91 418
+#define ITEM_TM92 419
+#define ITEM_HM01 420
+#define ITEM_HM02 421
+#define ITEM_HM03 422
+#define ITEM_HM04 423
+#define ITEM_HM05 424
+#define ITEM_HM06 425
+#define ITEM_HM07 426
+#define ITEM_HM08 427
+#define ITEM_EXPLORER_KIT 428
+#define ITEM_LOOT_SACK 429
+#define ITEM_RULE_BOOK 430
+#define ITEM_POKE_RADAR 431
+#define ITEM_POINT_CARD 432
+#define ITEM_JOURNAL 433
+#define ITEM_SEAL_CASE 434
+#define ITEM_FASHION_CASE 435
+#define ITEM_SEAL_BAG 436
+#define ITEM_PAL_PAD 437
+#define ITEM_WORKS_KEY 438
+#define ITEM_OLD_CHARM 439
+#define ITEM_GALACTIC_KEY 440
+#define ITEM_RED_CHAIN 441
+#define ITEM_TOWN_MAP 442
+#define ITEM_VS__SEEKER 443
+#define ITEM_COIN_CASE 444
+#define ITEM_OLD_ROD 445
+#define ITEM_GOOD_ROD 446
+#define ITEM_SUPER_ROD 447
+#define ITEM_SPRAYDUCK 448
+#define ITEM_POFFIN_CASE 449
+#define ITEM_BICYCLE 450
+#define ITEM_SUITE_KEY 451
+#define ITEM_OAKS_LETTER 452
+#define ITEM_LUNAR_WING 453
+#define ITEM_MEMBER_CARD 454
+#define ITEM_AZURE_FLUTE 455
+#define ITEM_S_S__TICKET 456
+#define ITEM_CONTEST_PASS 457
+#define ITEM_MAGMA_STONE 458
+#define ITEM_PARCEL 459
+#define ITEM_COUPON_1 460
+#define ITEM_COUPON_2 461
+#define ITEM_COUPON_3 462
+#define ITEM_STORAGE_KEY 463
+#define ITEM_SECRETPOTION 464
+
+#endif //POKEDIAMOND_CONSTANTS_ITEMS_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 3e277ee1..db15ac14 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -507,7 +507,7 @@ int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16
u8 GetBoxMonNature(struct BoxPokemon * boxmon);
u8 GetMonNature(struct Pokemon * mon);
u8 GetNatureFromPersonality(u32 pid);
+u8 GetBoxMonGender(struct BoxPokemon * boxmon);
u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid);
-u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon);
#endif //POKEDIAMOND_POKEMON_H