diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-16 08:26:08 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-06-16 08:26:08 -0400 |
commit | 424076d3a557419bc548346c7625931cc09a34b2 (patch) | |
tree | a841b547ceb674659f0f076d6e74aa3435920b1d | |
parent | c1347194db3ca34035901203deaebf0141357524 (diff) |
Decompile move table access routines
-rw-r--r-- | arm9/arm9.lcf | 2 | ||||
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/unk_0206AB04.s | 120 | ||||
-rw-r--r-- | arm9/asm/unk_0207550C.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02079C70.s | 4 | ||||
-rw-r--r-- | arm9/asm/unk_0207C328.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_0207D5BC.s | 8 | ||||
-rw-r--r-- | arm9/asm/unk_020842DC.s | 12 | ||||
-rw-r--r-- | arm9/global.inc | 8 | ||||
-rw-r--r-- | arm9/modules/09/asm/module_09.s | 34 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11.s | 24 | ||||
-rw-r--r-- | arm9/modules/12/asm/module_12.s | 18 | ||||
-rw-r--r-- | arm9/modules/75/asm/module_75.s | 10 | ||||
-rw-r--r-- | arm9/modules/76/asm/module_76.s | 18 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 10 | ||||
-rw-r--r-- | arm9/src/waza.c | 68 | ||||
-rw-r--r-- | include/constants/moves.h | 2 | ||||
-rw-r--r-- | include/move_data.h | 23 |
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 |