mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-26 04:39:28 -05:00
Decomped GetBaseFormCastformDeoxysCherrim
Decomped by @Zur3l
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
.public FemaleToMaleForm
|
||||
.public GetBaseFormBurmyWormadamShellosGastrodonCherrim
|
||||
.public GetBaseFormCastformDeoxysCherrim
|
||||
.public GetDexNumber
|
||||
.public IsDeoxys
|
||||
.public IsUnown
|
||||
@@ -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}
|
||||
9
include/main_02054C24.h
Normal file
9
include/main_02054C24.h
Normal file
@@ -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
|
||||
3
main.lsf
3
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
|
||||
|
||||
23
src/main_02054C24.c
Normal file
23
src/main_02054C24.c
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user