From 0fbeb64fcd15b9a0aa6281c7e2e625e627a8b412 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Fri, 12 Jun 2026 16:54:12 -0400 Subject: [PATCH] Decomped GetBaseFormCastformDeoxysCherrim Decomped by @Zur3l --- .../{main_02054C24.inc => main_02054CD8.inc} | 2 +- asm/{main_02054C24.s => main_02054CD8.s} | 52 +------------------ include/main_02054C24.h | 9 ++++ main.lsf | 3 +- src/main_02054C24.c | 23 ++++++++ 5 files changed, 36 insertions(+), 53 deletions(-) rename asm/include/{main_02054C24.inc => main_02054CD8.inc} (76%) rename asm/{main_02054C24.s => main_02054CD8.s} (52%) create mode 100644 include/main_02054C24.h create mode 100644 src/main_02054C24.c diff --git a/asm/include/main_02054C24.inc b/asm/include/main_02054CD8.inc similarity index 76% rename from asm/include/main_02054C24.inc rename to asm/include/main_02054CD8.inc index 360e27e4..24f33e60 100644 --- a/asm/include/main_02054C24.inc +++ b/asm/include/main_02054CD8.inc @@ -1,6 +1,6 @@ #pragma once .public FemaleToMaleForm .public GetBaseFormBurmyWormadamShellosGastrodonCherrim +.public GetBaseFormCastformDeoxysCherrim .public GetDexNumber -.public IsDeoxys .public IsUnown diff --git a/asm/main_02054C24.s b/asm/main_02054CD8.s similarity index 52% rename from asm/main_02054C24.s rename to asm/main_02054CD8.s index 8f101238..91bfa7aa 100644 --- a/asm/main_02054C24.s +++ b/asm/main_02054CD8.s @@ -1,58 +1,8 @@ .include "asm/macros.inc" - .include "main_02054C24.inc" + .include "main_02054CD8.inc" .text - arm_func_start GetBaseFormCastformDeoxysCherrim -GetBaseFormCastformDeoxysCherrim: ; 0x02054C24 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsDeoxys - cmp r0, #0 - ldrne r0, _02054CCC ; =0x000001A2 - ldmneia sp!, {r4, pc} - ldr r1, _02054CD0 ; =0xFFFFFE85 - add r0, r4, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - rsbls r0, r1, #0 - ldmlsia sp!, {r4, pc} - sub r0, r1, #0x258 - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - rsbls r0, r1, #0x258 - ldmlsia sp!, {r4, pc} - sub r0, r4, #0x1cc - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - movls r0, #0x1cc - ldmlsia sp!, {r4, pc} - ldr r0, _02054CD4 ; =0xFFFFFBDC - add r1, r4, r0 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - rsbls r4, r0, #0 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02054CCC: .word 0x000001A2 -_02054CD0: .word 0xFFFFFE85 -_02054CD4: .word 0xFFFFFBDC - arm_func_end GetBaseFormCastformDeoxysCherrim - arm_func_start BaseFormsEqual BaseFormsEqual: ; 0x02054CD8 stmdb sp!, {r4, r5, r6, lr} diff --git a/include/main_02054C24.h b/include/main_02054C24.h new file mode 100644 index 00000000..ba881b6e --- /dev/null +++ b/include/main_02054C24.h @@ -0,0 +1,9 @@ +#ifndef PMDSKY_MAIN_02054C24_H +#define PMDSKY_MAIN_02054C24_H + +#include "enums.h" +#include "util.h" + +enum monster_id GetBaseFormCastformDeoxysCherrim(enum monster_id monster_id); + +#endif //PMDSKY_MAIN_02054C24_H diff --git a/main.lsf b/main.lsf index 33bbb7ef..3042b299 100644 --- a/main.lsf +++ b/main.lsf @@ -139,7 +139,8 @@ Static main Object src/main_02054AA4.o Object asm/main_02054AD4.o Object src/main_02054BE0.o - Object asm/main_02054C24.o + Object src/main_02054C24.o + Object asm/main_02054CD8.o Object src/main_02054DC4.o Object asm/main_02054E4C.o Object src/main_02058C3C.o diff --git a/src/main_02054C24.c b/src/main_02054C24.c new file mode 100644 index 00000000..85c48db4 --- /dev/null +++ b/src/main_02054C24.c @@ -0,0 +1,23 @@ +#include "main_02054C24.h" + +extern bool8 IsDeoxys(enum monster_id monster_id); + +enum monster_id GetBaseFormCastformDeoxysCherrim(enum monster_id monster_id) +{ + if (IsDeoxys(monster_id)) { + return MONSTER_DEOXYS_NORMAL; + } + if ((u32) (u16) (s16) (monster_id + 0xFFFFFE85) <= 3U) { + return MONSTER_CASTFORM_NORMAL; + } + if ((u32) (u16) (s16) (monster_id - MONSTER_CASTFORM_NORMAL_SECONDARY) <= 3U) { + return MONSTER_CASTFORM_NORMAL_SECONDARY; + } + if ((u32) (u16) (s16) (monster_id - MONSTER_CHERRIM_OVERCAST) <= 1U) { + return MONSTER_CHERRIM_OVERCAST; + } + if ((u32) (u16) (s16) (monster_id + 0xFFFFFBDC) <= 1U) { + return MONSTER_CHERRIM_OVERCAST_SECONDARY; + } + return monster_id; +}