Decomp IsCastform and IsCherrim

Both decomped by @Chesyon and @taxicat1, thanks
This commit is contained in:
Zur3l
2026-07-11 16:17:40 -04:00
parent 4c368ab4e1
commit 00953d57af
5 changed files with 28 additions and 62 deletions

View File

@@ -1,2 +0,0 @@
#pragma once

View File

@@ -1,59 +0,0 @@
.include "asm/macros.inc"
.include "main_02054AD4.inc"
.text
arm_func_start IsCastform
IsCastform: ; 0x02054AD4
ldr r2, _02054B24 ; =0x0000017B
cmp r0, r2
cmpne r0, #0x17c
addne r1, r2, #2
cmpne r0, r1
addne r1, r2, #3
cmpne r0, r1
beq _02054B14
ldr r1, _02054B28 ; =0xFFFFFC2D
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #3
bhi _02054B1C
_02054B14:
mov r0, #1
bx lr
_02054B1C:
mov r0, #0
bx lr
.align 2, 0
_02054B24: .word 0x0000017B
_02054B28: .word 0xFFFFFC2D
arm_func_end IsCastform
arm_func_start IsCherrim
IsCherrim: ; 0x02054B2C
cmp r0, #0x1cc
ldrne r1, _02054B6C ; =0x000001CD
cmpne r0, r1
beq _02054B5C
ldr r1, _02054B70 ; =0xFFFFFBDC
add r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _02054B64
_02054B5C:
mov r0, #1
bx lr
_02054B64:
mov r0, #0
bx lr
.align 2, 0
_02054B6C: .word 0x000001CD
_02054B70: .word 0xFFFFFBDC
arm_func_end IsCherrim

View File

@@ -1,9 +1,12 @@
#ifndef PMDSKY_MAIN_02054AA4_H
#define PMDSKY_MAIN_02054AA4_H
#include "enums.h"
#include "util.h"
bool8 IsUnown(s16 monster_id);
bool8 IsShaymin(s16 monster_id);
bool8 IsCastform(enum monster_id monster_id);
bool8 IsCherrim(enum monster_id monster_id);
#endif //PMDSKY_MAIN_02054AA4_H

View File

@@ -149,7 +149,6 @@ Static main
Object src/main_02052B28.o
Object asm/main_02052B44.o
Object src/main_02054AA4.o
Object asm/main_02054AD4.o
Object src/main_02054BE0.o
Object src/main_02054C24.o
Object src/main_02054DC4.o

View File

@@ -10,3 +10,28 @@ bool8 IsUnown(s16 monster_id) {
bool8 IsShaymin(s16 monster_id) {
return (u16)(s16)(monster_id - MONSTER_SHAYMIN_LAND) <= 1;
}
bool8 IsCastform(enum monster_id monster_id)
{
if(monster_id == MONSTER_CASTFORM_NORMAL ||
monster_id == MONSTER_CASTFORM_SNOWY ||
monster_id == MONSTER_CASTFORM_SUNNY ||
monster_id == MONSTER_CASTFORM_RAINY ||
((u16)(s16)(monster_id - MONSTER_CASTFORM_NORMAL_SECONDARY) <= 3)
) {
return TRUE;
}
return FALSE;
}
bool8 IsCherrim(enum monster_id monster_id)
{
if (monster_id == MONSTER_CHERRIM_OVERCAST ||
monster_id == MONSTER_CHERRIM_SUNSHINE ||
((u16)(s16)(monster_id - MONSTER_CHERRIM_OVERCAST_SECONDARY) <= 1)) {
return TRUE;
}
return FALSE;
}