From fcca1fecac1953fc2bc6dee45dca350b2e72328e Mon Sep 17 00:00:00 2001 From: Zur3l <90565581+Zur3l@users.noreply.github.com> Date: Sat, 11 Jul 2026 16:00:25 -0400 Subject: [PATCH] Decomp IsRealMove --- .../{main_02014E64.inc => main_02014EF8.inc} | 1 + asm/{main_02014E64.s => main_02014EF8.s} | 47 +------ include/main_02014CEC.h | 2 + main.lsf | 2 +- src/main_02014CEC.c | 115 ++++++++++++++++++ 5 files changed, 120 insertions(+), 47 deletions(-) rename asm/include/{main_02014E64.inc => main_02014EF8.inc} (99%) rename asm/{main_02014E64.s => main_02014EF8.s} (99%) diff --git a/asm/include/main_02014E64.inc b/asm/include/main_02014EF8.inc similarity index 99% rename from asm/include/main_02014E64.inc rename to asm/include/main_02014EF8.inc index cc74c7bf..950eec43 100644 --- a/asm/include/main_02014E64.inc +++ b/asm/include/main_02014EF8.inc @@ -95,6 +95,7 @@ .public GroupOamObjs .public InitOamInfo .public IqSkillFlagTest +.public IsRealMove .public LANGUAGE_INFO_DATA .public LoadFileFromRom .public LoadScriptVariableValue diff --git a/asm/main_02014E64.s b/asm/main_02014EF8.s similarity index 99% rename from asm/main_02014E64.s rename to asm/main_02014EF8.s index 6df0173f..c83eaa5c 100644 --- a/asm/main_02014E64.s +++ b/asm/main_02014EF8.s @@ -1,53 +1,8 @@ .include "asm/macros.inc" - .include "main_02014E64.inc" + .include "main_02014EF8.inc" .text - arm_func_start IsRealMove -IsRealMove: ; 0x02014E64 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r1, _02014EEC ; =0x000001D3 - cmp r0, r1 - moveq r0, #0 - bxeq lr - cmp r0, #0x160 - moveq r0, #0 - bxeq lr - sub r1, r1, #0x70 - cmp r0, r1 - blo _02014EA4 - cmp r0, #0x168 - movlo r0, #0 - bxlo lr -_02014EA4: - cmp r0, #0x168 - bls _02014EBC - ldr r1, _02014EF0 ; =0x0000018A - cmp r0, r1 - movlo r0, #0 - bxlo lr -_02014EBC: - ldr r1, _02014EF0 ; =0x0000018A - cmp r0, r1 - bls _02014ED8 - add r1, r1, #0x23 - cmp r0, r1 - movls r0, #0 - bxls lr -_02014ED8: - ldr r1, _02014EF4 ; =0x0000021F - cmp r0, r1 - movhs r0, #0 - movlo r0, #1 - bx lr - .align 2, 0 -_02014EEC: .word 0x000001D3 -_02014EF0: .word 0x0000018A -_02014EF4: .word 0x0000021F - arm_func_end IsRealMove - arm_func_start IsMovesetValid IsMovesetValid: ; 0x02014EF8 stmdb sp!, {r4, r5, r6, r7, r8, lr} diff --git a/include/main_02014CEC.h b/include/main_02014CEC.h index a878c680..14844e5e 100644 --- a/include/main_02014CEC.h +++ b/include/main_02014CEC.h @@ -28,4 +28,6 @@ bool8 IsOneHitKoMove(enum move_id move_id); // Checks if the move is not a two turn move or sketch bool8 IsNot2TurnsMoveOrSketch(enum move_id move_id); +bool8 IsRealMove(enum move_id move_id); + #endif //PMDSKY_MAIN_02014CEC_H diff --git a/main.lsf b/main.lsf index a3a956df..6447cd5c 100644 --- a/main.lsf +++ b/main.lsf @@ -79,7 +79,7 @@ Static main Object src/main_02014A4C.o Object asm/main_02014B1C.o Object src/main_02014CEC.o - Object asm/main_02014E64.o + Object asm/main_02014EF8.o Object src/main_020251AC.o Object asm/main_020251F0.o Object src/main_02025788.o diff --git a/src/main_02014CEC.c b/src/main_02014CEC.c index 693a198a..8471bd30 100644 --- a/src/main_02014CEC.c +++ b/src/main_02014CEC.c @@ -80,3 +80,118 @@ bool8 IsNot2TurnsMoveOrSketch(enum move_id move_id) return TRUE; } + +bool8 IsRealMove(enum move_id move_id) +{ + if (move_id == MOVE_NOTHING) return FALSE; + if (move_id == MOVE_JUDGMENT) return FALSE; + if (move_id == MOVE_STRUGGLE) return FALSE; + + // MOVE_REGULAR_ATTACK + // MOVE_IS_WATCHING + // MOVE_BIDE_UNLEASH + // MOVE_REVENGE_UNLEASH + // MOVE_AVALANCHE_UNLEASH + if ((move_id >= MOVE_REGULAR_ATTACK) && (move_id < MOVE_WIDE_SLASH)) { + return FALSE; + } + + // MOVE_UNNAMED_0x169 + // MOVE_UNNAMED_0x16A + // MOVE_SEE_TRAP + // MOVE_TAKEAWAY + // MOVE_REBOUND + // MOVE_BLOOP_SLASH + // MOVE_SWITCHER + // MOVE_BLOWBACK + // MOVE_WARP + // MOVE_TRANSFER + // MOVE_SLOW_DOWN + // MOVE_SPEED_BOOST + // MOVE_SEARCHLIGHT + // MOVE_PETRIFY + // MOVE_STAY_AWAY + // MOVE_POUNCE + // MOVE_TRAWL + // MOVE_CLEANSE + // MOVE_OBSERVER + // MOVE_DECOY_MAKER + // MOVE_SIESTA + // MOVE_TOTTER + // MOVE_TWO_EDGE + // MOVE_NO_MOVE + // MOVE_ESCAPE + // MOVE_SCAN + // MOVE_POWER_EARS + // MOVE_DROUGHT + // MOVE_TRAP_BUSTER + // MOVE_WILD_CALL + // MOVE_INVISIFY + // MOVE_ONE_SHOT + // MOVE_HP_GAUGE + if ((move_id > MOVE_WIDE_SLASH) && (move_id < MOVE_VACUUM_CUT)) { + return FALSE; + } + + // MOVE_REVIVER + // MOVE_SHOCKER + // MOVE_ECHO + // MOVE_FAMISH + // MOVE_ONE_ROOM + // MOVE_FILL_IN + // MOVE_TRAPPER + // MOVE_POSSESS + // MOVE_ITEMIZE + // MOVE_TAG_0x194 + // MOVE_PROJECTILE + // MOVE_HURL + // MOVE_MOBILE + // MOVE_ITEM_TOSS + // MOVE_SEE_STAIRS + // MOVE_LONG_TOSS + // MOVE_TAG_0x19B + // MOVE_PIERCE + // MOVE_TAG_0x19D + // MOVE_TAG_0x19E + // MOVE_TAG_0x19F + // MOVE_TAG_0x1A0 + // MOVE_TAG_0x1A1 + // MOVE_TAG_0x1A2 + // MOVE_TAG_0x1A3 + // MOVE_TAG_0x1A4 + // MOVE_TAG_0x1A5 + // MOVE_TAG_0x1A6 + // MOVE_TAG_0x1A7 + // MOVE_TAG_0x1A8 + // MOVE_TAG_0x1A9 + // MOVE_TAG_0x1AA + // MOVE_TAG_0x1AB + // MOVE_TAG_0x1AC + // MOVE_TAG_0x1AD + if ((move_id > MOVE_VACUUM_CUT) && (move_id <= MOVE_TAG_0x1AD)) { + return FALSE; + } + + // MOVE_TAG_0x21F + // MOVE_TAG_0x220 + // MOVE_TAG_0x221 + // MOVE_TAG_0x222 + // MOVE_TAG_0x223 + // MOVE_TAG_0x224 + // MOVE_TAG_0x225 + // MOVE_TAG_0x226 + // MOVE_TAG_0x227 + // MOVE_TAG_0x228 + // MOVE_TAG_0x229 + // MOVE_TAG_0x22A + // MOVE_TAG_0x22B + // MOVE_TAG_0x22C + // MOVE_TAG_0x22D + // MOVE_TAG_0x22E + // ... + if (move_id >= MOVE_TAG_0x21F) { + return FALSE; + } + + return TRUE; +}