summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-06-16 08:26:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-06-16 08:26:08 -0400
commit424076d3a557419bc548346c7625931cc09a34b2 (patch)
treea841b547ceb674659f0f076d6e74aa3435920b1d
parentc1347194db3ca34035901203deaebf0141357524 (diff)
Decompile move table access routines
-rw-r--r--arm9/arm9.lcf2
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/unk_0206AB04.s120
-rw-r--r--arm9/asm/unk_0207550C.s2
-rw-r--r--arm9/asm/unk_02079C70.s4
-rw-r--r--arm9/asm/unk_0207C328.s12
-rw-r--r--arm9/asm/unk_0207D5BC.s8
-rw-r--r--arm9/asm/unk_020842DC.s12
-rw-r--r--arm9/global.inc8
-rw-r--r--arm9/modules/09/asm/module_09.s34
-rw-r--r--arm9/modules/11/asm/module_11.s24
-rw-r--r--arm9/modules/12/asm/module_12.s18
-rw-r--r--arm9/modules/75/asm/module_75.s10
-rw-r--r--arm9/modules/76/asm/module_76.s18
-rw-r--r--arm9/src/pokemon.c10
-rw-r--r--arm9/src/waza.c68
-rw-r--r--include/constants/moves.h2
-rw-r--r--include/move_data.h23
18 files changed, 173 insertions, 204 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index adf49127..5612df2a 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -362,7 +362,7 @@ SECTIONS {
unk_020653EC.o (.text)
unk_02066840.o (.text)
pokemon.o (.text)
- unk_0206AB04.o (.text)
+ waza.o (.text)
unk_0206ABC4.o (.text)
unk_0206B16C.o (.text)
unk_0206B688.o (.text)
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 261c41d5..e6a20bb8 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -242,7 +242,7 @@ Static arm9
Object unk_020653EC.o
Object unk_02066840.o
Object unk_02066978.o
- Object unk_0206AB04.o
+ Object waza.o
Object unk_0206ABC4.o
Object unk_0206B16C.o
Object unk_0206B688.o
diff --git a/arm9/asm/unk_0206AB04.s b/arm9/asm/unk_0206AB04.s
index c523eb3b..05ded05f 100644
--- a/arm9/asm/unk_0206AB04.s
+++ b/arm9/asm/unk_0206AB04.s
@@ -2,123 +2,3 @@
.include "global.inc"
.text
-
- thumb_func_start FUN_0206AB04
-FUN_0206AB04: ; 0x0206AB04
- push {r3, lr}
- mov r1, #0x75
- lsl r1, r1, #0x6
- mov r2, #0x0
- str r1, [sp, #0x0]
- mov r1, #0x9
- add r3, r2, #0x0
- bl ReadFromNarcMemberByIdPair
- pop {r3, pc}
-
- thumb_func_start FUN_0206AB18
-FUN_0206AB18: ; 0x0206AB18
- push {r4, lr}
- sub sp, #0x10
- add r4, r1, #0x0
- add r1, sp, #0x0
- bl FUN_0206ABB4
- add r0, sp, #0x0
- add r1, r4, #0x0
- bl FUN_0206AB58
- add sp, #0x10
- pop {r4, pc}
-
- thumb_func_start FUN_0206AB30
-FUN_0206AB30: ; 0x0206AB30
- push {r3-r5, lr}
- add r5, r1, #0x0
- cmp r5, #0x3
- bls _0206AB3A
- mov r5, #0x3
-_0206AB3A:
- mov r1, #0x5
- bl FUN_0206AB18
- lsl r0, r0, #0x18
- lsr r4, r0, #0x18
- mov r0, #0x14
- mul r0, r4
- mul r0, r5
- mov r1, #0x64
- bl _s32_div_f
- add r0, r4, r0
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0206AB58
-FUN_0206AB58: ; 0x0206AB58
- cmp r1, #0xb
- bhi _0206ABB0
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_0206AB68: ; jump table (using 16-bit offset)
- .short _0206AB80 - _0206AB68 - 2; case 0
- .short _0206AB84 - _0206AB68 - 2; case 1
- .short _0206AB88 - _0206AB68 - 2; case 2
- .short _0206AB8C - _0206AB68 - 2; case 3
- .short _0206AB90 - _0206AB68 - 2; case 4
- .short _0206AB94 - _0206AB68 - 2; case 5
- .short _0206AB98 - _0206AB68 - 2; case 6
- .short _0206AB9C - _0206AB68 - 2; case 7
- .short _0206ABA0 - _0206AB68 - 2; case 8
- .short _0206ABA6 - _0206AB68 - 2; case 9
- .short _0206ABAA - _0206AB68 - 2; case 10
- .short _0206ABAE - _0206AB68 - 2; case 11
-_0206AB80:
- ldrh r0, [r0, #0x0]
- bx lr
-_0206AB84:
- ldrb r0, [r0, #0x2]
- bx lr
-_0206AB88:
- ldrb r0, [r0, #0x3]
- bx lr
-_0206AB8C:
- ldrb r0, [r0, #0x4]
- bx lr
-_0206AB90:
- ldrb r0, [r0, #0x5]
- bx lr
-_0206AB94:
- ldrb r0, [r0, #0x6]
- bx lr
-_0206AB98:
- ldrb r0, [r0, #0x7]
- bx lr
-_0206AB9C:
- ldrh r0, [r0, #0x8]
- bx lr
-_0206ABA0:
- mov r1, #0xa
- ldrsb r0, [r0, r1]
- bx lr
-_0206ABA6:
- ldrb r0, [r0, #0xb]
- bx lr
-_0206ABAA:
- ldrb r0, [r0, #0xc]
- bx lr
-_0206ABAE:
- ldrb r0, [r0, #0xd]
-_0206ABB0:
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206ABB4
-FUN_0206ABB4: ; 0x0206ABB4
- ldr r3, _0206ABC0 ; =ReadWholeNarcMemberByIdPair
- add r2, r0, #0x0
- add r0, r1, #0x0
- mov r1, #0x9
- bx r3
- nop
-_0206ABC0: .word ReadWholeNarcMemberByIdPair
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 995ebf7e..7d275208 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -3092,7 +3092,7 @@ FUN_02076F2C: ; 0x02076F2C
mov r1, #0x0
ldr r0, [r5, r0]
ldrh r0, [r0, #0x26]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r6, #0x3a
str r0, [sp, #0x0]
add r0, r4, #0x0
diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s
index 9da982ce..17374c00 100644
--- a/arm9/asm/unk_02079C70.s
+++ b/arm9/asm/unk_02079C70.s
@@ -2104,7 +2104,7 @@ _0207AD26:
lsr r1, r0, #0x18
ldr r0, [sp, #0x0]
ldrh r0, [r0, #0x34]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r1, r5, r4
add r1, #0x40
strb r0, [r1, #0x0]
@@ -4153,7 +4153,7 @@ FUN_0207BD84: ; 0x0207BD84
beq _0207BDCC
add r0, r4, #0x0
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_02083114
mov r1, #0xa
bl _s32_div_f
diff --git a/arm9/asm/unk_0207C328.s b/arm9/asm/unk_0207C328.s
index 5c518aa4..486788c4 100644
--- a/arm9/asm/unk_0207C328.s
+++ b/arm9/asm/unk_0207C328.s
@@ -847,7 +847,7 @@ _0207C7FC:
cmp r0, #0x0
beq _0207C826
add r1, r7, #0x0
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0x0
add r1, r4, #0x0
add r1, #0xd
@@ -943,7 +943,7 @@ _0207C8BA:
cmp r0, #0x0
beq _0207C904
mov r1, #0x3
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0x0
add r1, r4, #0x0
add r1, #0xd
@@ -983,7 +983,7 @@ _0207C904:
cmp r0, #0x0
beq _0207C946
mov r1, #0x3
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0x0
lsl r3, r3, #0x18
add r0, r5, #0x0
@@ -1029,7 +1029,7 @@ _0207C974:
cmp r0, #0x0
beq _0207C9C0
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0x0
add r1, r4, #0x0
add r1, #0xd
@@ -1070,7 +1070,7 @@ _0207C9C0:
cmp r0, #0x0
beq _0207CA04
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0x0
add r3, #0x12
lsl r3, r3, #0x18
@@ -1270,7 +1270,7 @@ FUN_0207CB70: ; 0x0207CB70
add r5, r0, #0x0
add r0, r1, #0x0
mov r1, #0x1
- bl FUN_0206AB18
+ bl GetWazaAttr
add r4, r0, #0x0
bl FUN_0206E2A8
add r6, r0, #0x0
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 26580e37..4893d340 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -2532,7 +2532,7 @@ _0207EA76:
mov r1, #0x0
ldrh r0, [r0, #0x18]
str r0, [sp, #0x20]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
str r0, [sp, #0x1c]
str r0, [sp, #0x18]
_0207EA88:
@@ -2674,7 +2674,7 @@ FUN_0207EB64: ; 0x0207EB64
bl FUN_02019620
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0x0
cmp r2, #0x1
bhi _0207EBD2
@@ -2703,7 +2703,7 @@ _0207EBE0:
bl FUN_0207D998
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0x0
bne _0207EC0E
ldr r2, _0207EC88 ; =0x00000674
@@ -2980,7 +2980,7 @@ FUN_0207EE2C: ; 0x0207EE2C
bl FUN_02019620
add r0, r4, #0x0
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_0208315C
add r4, r0, #0x0
mov r0, #0x0
diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s
index b4f2fa48..91504fe7 100644
--- a/arm9/asm/unk_020842DC.s
+++ b/arm9/asm/unk_020842DC.s
@@ -210,7 +210,7 @@ _0208447C:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x0
- bl FUN_0206AB30
+ bl WazaGetMaxPp
cmp r0, #0x5
blo _020844B2
add r0, r4, #0x0
@@ -1360,7 +1360,7 @@ _02084E08:
lsl r0, r0, #0x18
lsr r1, r0, #0x18
add r0, r7, #0x0
- bl FUN_0206AB30
+ bl WazaGetMaxPp
cmp r4, r0
bhs _02084E36
mov r0, #0x1
@@ -1409,7 +1409,7 @@ _02084E5E:
lsl r1, r1, #0x18
add r0, r7, #0x0
lsr r1, r1, #0x18
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r1, sp, #0x4
ldrb r2, [r1, #0x0]
cmp r2, r0
@@ -1469,7 +1469,7 @@ _02084EE6:
lsr r0, r0, #0x10
mov r1, #0x0
str r0, [sp, #0x4]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
cmp r0, #0x5
bhs _02084F08
add sp, #0xc
@@ -1485,7 +1485,7 @@ _02084F08:
strb r0, [r1, #0x1]
ldrb r1, [r1, #0x0]
ldr r0, [sp, #0x4]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r7, r0, #0x0
add r0, sp, #0x8
ldrb r0, [r0, #0x0]
@@ -1502,7 +1502,7 @@ _02084F34:
strb r0, [r1, #0x0]
ldrb r1, [r1, #0x0]
ldr r0, [sp, #0x4]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r1, sp, #0x8
ldrb r2, [r1, #0x1]
add r0, r2, r0
diff --git a/arm9/global.inc b/arm9/global.inc
index 08442742..d827ff13 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4810,10 +4810,10 @@
.extern FUN_0206AA30
.extern FUN_0206AA84
.extern FUN_0206AAB4
-.extern FUN_0206AB04
-.extern FUN_0206AB18
-.extern FUN_0206AB30
-.extern FUN_0206AB58
+.extern LoadAllWazaTbl
+.extern GetWazaAttr
+.extern WazaGetMaxPp
+.extern GetAttrFromWazaTbl
.extern FUN_0206ABC4
.extern FUN_0206AC74
.extern FUN_0206ACD4
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 50557058..abb23468 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -2691,23 +2691,23 @@ _022133E4:
strb r0, [r5, #3]
ldrh r0, [r5]
ldrb r1, [r5, #3]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
strb r0, [r5, #3]
ldrh r0, [r5]
mov r1, #3
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #4]
ldrh r0, [r5]
mov r1, #1
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #5]
ldrh r0, [r5]
mov r1, #4
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #6]
ldrh r0, [r5]
mov r1, #2
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #7]
_02213450:
add r0, r4, #1
@@ -3311,7 +3311,7 @@ _022138AC:
ldrh r0, [r1, #0x24]
_022138AE:
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_02083114
mov r1, #0xa
bl _s32_div_f
@@ -6111,7 +6111,7 @@ MOD09_02215060: ; 0x02215060
ldr r5, [r6, r0]
add r0, r2, #0
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_0208315C
ldr r3, [r6]
add r7, r0, #0
@@ -7741,7 +7741,7 @@ _02215E4C:
ldr r0, [r5]
mov r1, #5
ldrh r0, [r0, #0x24]
- bl FUN_0206AB18
+ bl GetWazaAttr
add r1, sp, #0x14
strb r0, [r1, #2]
ldrb r0, [r1, #2]
@@ -7917,7 +7917,7 @@ MOD09_02215ED0: ; 0x02215ED0
_0221600C:
ldrh r0, [r1, #0x24]
mov r1, #5
- bl FUN_0206AB18
+ bl GetWazaAttr
add r4, r0, #0
mov r0, #0
str r0, [sp]
@@ -7938,7 +7938,7 @@ _0221600C:
ldr r0, [r5]
mov r1, #4
ldrh r0, [r0, #0x24]
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
add r0, r5, #0
mov r1, #6
@@ -7946,7 +7946,7 @@ _0221600C:
ldr r0, [r5]
mov r1, #2
ldrh r0, [r0, #0x24]
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
add r0, r5, #0
mov r1, #7
@@ -7954,7 +7954,7 @@ _0221600C:
ldr r0, [r5]
mov r1, #1
ldrh r0, [r0, #0x24]
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
add r0, r5, #0
mov r1, #0xa
@@ -8227,7 +8227,7 @@ MOD09_022161B0: ; 0x022161B0
_022162BE:
ldrh r0, [r1, #0x24]
mov r1, #5
- bl FUN_0206AB18
+ bl GetWazaAttr
add r4, r0, #0
mov r0, #0
str r0, [sp]
@@ -10080,7 +10080,7 @@ MOD09_022171AC: ; 0x022171AC
_02217242:
ldrh r0, [r1, #0x24]
mov r1, #1
- bl FUN_0206AB18
+ bl GetWazaAttr
ldr r1, _0221726C ; =0x00002020
add r2, r0, #0
ldr r1, [r5, r1]
@@ -10302,7 +10302,7 @@ _02217400:
cmp r0, #0
beq _02217436
mov r1, #3
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0
ldr r1, _02217444 ; =0x0000201C
lsl r3, r3, #0x18
@@ -10347,7 +10347,7 @@ _02217460:
lsl r1, r4, #2
add r6, r7, r1
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0
ldr r1, _022174D8 ; =0x0000200C
ldr r2, _022174DC ; =0x0000B010
@@ -10377,7 +10377,7 @@ _0221749E:
cmp r0, #0
beq _022174D6
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0
ldr r1, _022174E4 ; =0x0000201C
add r3, #0x12
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 5b67e5a9..3badbb92 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -24831,7 +24831,7 @@ MOD11_022399C8: ; 0x022399C8
ldr r0, [r4, r0]
lsl r0, r0, #4
add r0, r2, r0
- bl FUN_0206AB58
+ bl GetAttrFromWazaTbl
mov r1, #0x4d
lsl r1, r1, #2
str r0, [r4, r1]
@@ -31770,7 +31770,7 @@ MOD11_0223D1DC: ; 0x0223D1DC
_0223D216:
ldr r0, _0223D230 ; =0x000003DE
add r0, r4, r0
- bl FUN_0206AB04
+ bl LoadAllWazaTbl
mov r0, #5
bl FUN_0206EB50
ldr r1, _0223D234 ; =0x00002120
@@ -44615,7 +44615,7 @@ _022435AA:
add r1, #0x30
ldrh r0, [r0, #0xc]
ldrb r1, [r1]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
pop {r4, r5, r6, pc}
_022435BE:
add r4, #0x34
@@ -46006,7 +46006,7 @@ _02243F70:
add r1, #0x30
ldrh r0, [r0, #0xc]
ldrb r1, [r1]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r4, #0x2c
ldrb r1, [r4, r6]
add r1, r5, r1
@@ -58785,7 +58785,7 @@ _0224A0C8:
add r2, r5, r1
ldr r1, _0224A338 ; =0x00002D70
ldrb r1, [r2, r1]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r1, r4, r7
add r2, r5, r1
ldr r1, _0224A33C ; =0x00002D6C
@@ -59496,7 +59496,7 @@ _0224A61E:
add r2, r6, r1
ldr r1, _0224A868 ; =0x00002D70
ldrb r1, [r2, r1]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
ldr r1, [sp, #8]
add r1, r4, r1
add r2, r6, r1
@@ -79668,7 +79668,7 @@ MOD11_022545B4: ; 0x022545B4
ldrh r6, [r0, #0x10]
mov r1, #9
add r0, r6, #0
- bl FUN_0206AB18
+ bl GetWazaAttr
mov r1, #0x40
tst r0, r1
bne _022545D4
@@ -79680,7 +79680,7 @@ _022545D6:
strb r0, [r4]
add r0, r6, #0
mov r1, #9
- bl FUN_0206AB18
+ bl GetWazaAttr
mov r1, #0x80
tst r0, r1
beq _022545EC
@@ -81704,7 +81704,7 @@ _0225557E:
ldr r0, _022555D8 ; =0x00002D4C
ldrb r1, [r4, r1]
ldrh r0, [r6, r0]
- bl FUN_0206AB30
+ bl WazaGetMaxPp
strb r0, [r5, #0x10]
ldr r0, [sp, #0x10]
add r6, r6, #2
@@ -90106,7 +90106,7 @@ _0225978A:
cmp r0, #0
beq _022597A4
add r1, r7, #0
- bl FUN_0206AB18
+ bl GetWazaAttr
add r1, r0, #0
add r0, r5, #0
add r2, r4, #0
@@ -92090,7 +92090,7 @@ _0225A7CE:
cmp r0, #0
beq _0225A814
mov r1, #3
- bl FUN_0206AB18
+ bl GetWazaAttr
str r0, [sp, #0x3c]
bl FUN_0206E12C
str r0, [sp, #0x40]
@@ -92378,7 +92378,7 @@ _0225AA24:
cmp r0, #0
beq _0225AA9E
mov r1, #3
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
ldr r0, _0225AAB4 ; =0x00004E35
ldr r1, _0225AAB8 ; =0x0225F72C
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index 6862284e..2256bd99 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -979,7 +979,7 @@ _0222DE9E:
cmp r0, #0
beq _0222DEBE
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r3, r0, #0
b _0222DEC0
_0222DEBE:
@@ -10758,13 +10758,13 @@ _02232C2C:
ldr r1, [sp, #0x20]
add r4, r6, r1
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
mov r1, #0x4b
lsl r1, r1, #2
strb r0, [r4, r1]
ldrh r0, [r7]
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
mov r1, #0x13
lsl r1, r1, #4
strb r0, [r4, r1]
@@ -16965,7 +16965,7 @@ MOD12_02235C44: ; 0x02235C44
add r4, r0, #0
add r0, r1, #0
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
lsl r1, r4, #2
add r2, r4, r1
ldr r1, _02235C5C ; =0x022454E4
@@ -21837,7 +21837,7 @@ _022380B8:
ldr r0, _022380F8 ; =0x00000236
ldrh r0, [r7, r0]
strh r0, [r5]
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #2]
mov r0, #0x23
lsl r0, r0, #4
@@ -22518,7 +22518,7 @@ _022385D2:
ldr r0, [sp, #0xc]
mov r1, #0xb
ldrh r0, [r0]
- bl FUN_0206AB18
+ bl GetWazaAttr
bl MOD12_02235AC4
strb r0, [r7, #0xc]
ldr r0, [sp, #8]
@@ -22554,7 +22554,7 @@ _0223862C:
ldr r0, [sp, #0xc]
mov r1, #0xb
ldrh r0, [r0]
- bl FUN_0206AB18
+ bl GetWazaAttr
bl MOD12_02235AF0
strb r0, [r7, #0xc]
_0223863E:
@@ -23983,11 +23983,11 @@ _02239080:
bne _022390BA
ldrh r0, [r5]
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #0xa]
ldrh r0, [r5]
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
strb r0, [r5, #0xb]
b _022390BE
_022390BA:
diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s
index e4c70c65..cb2b9ef0 100644
--- a/arm9/modules/75/asm/module_75.s
+++ b/arm9/modules/75/asm/module_75.s
@@ -8193,7 +8193,7 @@ MOD75_021EAB44: ; 0x021EAB44
bl FUN_02021A20
ldr r0, [sp, #0x10]
mov r1, #0
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r7, r0, #0
mov r0, #0x45
lsl r0, r0, #2
@@ -8237,7 +8237,7 @@ MOD75_021EAB44: ; 0x021EAB44
bl FUN_0201BDE0
ldr r0, [sp, #0x10]
mov r1, #2
- bl FUN_0206AB18
+ bl GetWazaAttr
lsl r0, r0, #0x10
lsr r7, r0, #0x10
cmp r7, #1
@@ -8292,7 +8292,7 @@ _021EACC6:
bl FUN_0201BDE0
ldr r0, [sp, #0x10]
mov r1, #4
- bl FUN_0206AB18
+ bl GetWazaAttr
lsl r0, r0, #0x10
lsr r7, r0, #0x10
bne _021EAD30
@@ -10986,12 +10986,12 @@ MOD75_021EC2B8: ; 0x021EC2B8
bl FUN_0206EA30
mov r1, #3
add r4, r0, #0
- bl FUN_0206AB18
+ bl GetWazaAttr
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r4, #0
mov r1, #1
- bl FUN_0206AB18
+ bl GetWazaAttr
lsl r0, r0, #0x10
lsr r4, r0, #0x10
bl FUN_0206E12C
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index e40f2c19..7ebae410 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -813,7 +813,7 @@ MOD76_021D7B2C: ; 0x021D7B2C
add r0, r4, #0
bl MOD76_021D8514
mov r1, #0
- bl FUN_0206AB30
+ bl WazaGetMaxPp
str r0, [sp]
ldr r1, [r4]
add r2, sp, #0
@@ -1444,7 +1444,7 @@ MOD76_021D800C: ; 0x021D800C
_021D8050:
add r0, r4, #0
mov r1, #2
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
cmp r2, #1
bhi _021D8072
@@ -1474,7 +1474,7 @@ _021D8080:
bl MOD76_021D7CC8
add r0, r4, #0
mov r1, #4
- bl FUN_0206AB18
+ bl GetWazaAttr
add r2, r0, #0
bne _021D80B0
mov r1, #0x21
@@ -1504,7 +1504,7 @@ _021D80BE:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
mov r1, #0
- bl FUN_0206AB30
+ bl WazaGetMaxPp
add r2, r0, #0
mov r0, #0
str r0, [sp]
@@ -1608,7 +1608,7 @@ MOD76_021D81AC: ; 0x021D81AC
beq _021D8222
add r0, r4, #0
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_0208315C
add r6, r0, #0
mov r0, #0
@@ -1770,7 +1770,7 @@ MOD76_021D8300: ; 0x021D8300
beq _021D8344
add r0, r4, #0
mov r1, #0xa
- bl FUN_0206AB18
+ bl GetWazaAttr
bl FUN_02083114
mov r1, #0xa
bl _s32_div_f
@@ -2656,13 +2656,13 @@ MOD76_021D89E4: ; 0x021D89E4
bne _021D8A00
add r0, r1, #0
mov r1, #3
- bl FUN_0206AB18
+ bl GetWazaAttr
add r6, r0, #0
b _021D8A0C
_021D8A00:
add r0, r1, #0
mov r1, #0xb
- bl FUN_0206AB18
+ bl GetWazaAttr
add r6, r0, #0
add r6, #0x12
_021D8A0C:
@@ -2925,7 +2925,7 @@ MOD76_021D8BF8: ; 0x021D8BF8
add r5, r0, #0
add r0, r1, #0
mov r1, #1
- bl FUN_0206AB18
+ bl GetWazaAttr
add r4, r0, #0
bl FUN_0206E2A8
add r6, r0, #0
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 4a4b8a6d..e342bd0f 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -761,7 +761,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest)
case MON_DATA_MOVE2MAXPP:
case MON_DATA_MOVE3MAXPP:
case MON_DATA_MOVE4MAXPP:
- ret = (u32)FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]);
+ ret = (u32)WazaGetMaxPp(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]);
break;
case MON_DATA_HP_IV:
ret = blockB->hpIV;
@@ -1562,8 +1562,8 @@ void AddBoxMonData(struct BoxPokemon * boxmon, int attr, int value)
case MON_DATA_MOVE2PP:
case MON_DATA_MOVE3PP:
case MON_DATA_MOVE4PP:
- if (blockB->movePP[attr - MON_DATA_MOVE1PP] + value > FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]))
- blockB->movePP[attr - MON_DATA_MOVE1PP] = (u8)FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]);
+ if (blockB->movePP[attr - MON_DATA_MOVE1PP] + value > WazaGetMaxPp(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]))
+ blockB->movePP[attr - MON_DATA_MOVE1PP] = (u8)WazaGetMaxPp(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]);
else
blockB->movePP[attr - MON_DATA_MOVE1PP] += value;
break;
@@ -2859,7 +2859,7 @@ void FUN_02069718(struct BoxPokemon * boxmon, u16 move)
}
moves[3] = move;
- pp[3] = (u8)FUN_0206AB18(move, 5);
+ pp[3] = (u8)GetWazaAttr(move, 5);
ppUp[3] = 0;
for (i = 0; i < 4; i++)
@@ -2884,7 +2884,7 @@ void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot)
SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot, &move);
ppUp = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot, NULL);
- pp = (u8)FUN_0206AB30(move, ppUp);
+ pp = (u8)WazaGetMaxPp(move, ppUp);
SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot, &pp);
}
diff --git a/arm9/src/waza.c b/arm9/src/waza.c
new file mode 100644
index 00000000..1ed8574e
--- /dev/null
+++ b/arm9/src/waza.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "move_data.h"
+#include "filesystem.h"
+#include "constants/moves.h"
+
+#pragma thumb on
+
+void LoadWazaEntry(u16 waza, struct WazaTbl * dest);
+
+// Effectively reads the entirety of the waza_tbl.narc file image.
+// Even though each "file" is only 16 bytes, they are arranged
+// contiguously and in the correct order.
+void LoadAllWazaTbl(struct WazaTbl * dest)
+{
+ ReadFromNarcMemberByIdPair(dest, NARC_POKETOOL_WAZA_WAZA_TBL, 0, 0, (NUM_MOVES + 1) * sizeof(struct WazaTbl));
+}
+
+u32 GetWazaAttr(u16 waza, u32 attr)
+{
+ struct WazaTbl wazaTbl;
+ LoadWazaEntry(waza, &wazaTbl);
+ return GetAttrFromWazaTbl(&wazaTbl, attr);
+}
+
+u8 WazaGetMaxPp(u16 waza, u8 ppUp)
+{
+ u8 pp;
+ if (ppUp > 3)
+ ppUp = 3;
+ pp = GetWazaAttr(waza, 5);
+ return pp + (pp * 20 * ppUp) / 100;
+}
+
+u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, u32 attr)
+{
+ switch (attr)
+ {
+ case 0:
+ return wazaTbl->unk0;
+ case 1:
+ return wazaTbl->unk2;
+ case 2:
+ return wazaTbl->unk3;
+ case 3:
+ return wazaTbl->unk4;
+ case 4:
+ return wazaTbl->unk5;
+ case 5:
+ return wazaTbl->pp;
+ case 6:
+ return wazaTbl->unk7;
+ case 7:
+ return wazaTbl->unk8;
+ case 8:
+ return wazaTbl->unkA;
+ case 9:
+ return wazaTbl->unkB;
+ case 10:
+ return wazaTbl->unkC;
+ case 11:
+ return wazaTbl->unkD;
+ }
+}
+
+void LoadWazaEntry(u16 waza, struct WazaTbl * wazaTbl)
+{
+ ReadWholeNarcMemberByIdPair(wazaTbl, NARC_POKETOOL_WAZA_WAZA_TBL, waza);
+}
diff --git a/include/constants/moves.h b/include/constants/moves.h
index e25c16c9..bd658c17 100644
--- a/include/constants/moves.h
+++ b/include/constants/moves.h
@@ -470,4 +470,6 @@
#define MOVE_OMINOUS_WIND 466
#define MOVE_SHADOW_FORCE 467
+#define NUM_MOVES MOVE_SHADOW_FORCE
+
#endif //POKEDIAMOND_CONSTANTS_MOVES_H
diff --git a/include/move_data.h b/include/move_data.h
index 8da864b0..5267bfb1 100644
--- a/include/move_data.h
+++ b/include/move_data.h
@@ -1,7 +1,26 @@
#ifndef POKEDIAMOND_MOVE_DATA_H
#define POKEDIAMOND_MOVE_DATA_H
-int FUN_0206AB30(u16 move, u8 ppUp);
-u32 FUN_0206AB18(u16 move, u32 attr);
+struct WazaTbl
+{
+ u16 unk0;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u8 pp;
+ u8 unk7;
+ u16 unk8;
+ s8 unkA;
+ u8 unkB;
+ u8 unkC;
+ u8 unkD;
+ u8 padding[2];
+};
+
+void LoadAllWazaTbl(struct WazaTbl * dest);
+u8 WazaGetMaxPp(u16 move, u8 ppUp);
+u32 GetWazaAttr(u16 move, u32 attr);
+u32 GetAttrFromWazaTbl(struct WazaTbl * wazaTbl, u32 attr);
#endif //POKEDIAMOND_MOVE_DATA_H