mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-06-02 21:54:45 -05:00
Decompile scrcmd_pokemon_misc, 6
This commit is contained in:
parent
c1914e7150
commit
d85a4e4336
|
|
@ -2541,228 +2541,11 @@ _02201F08: .word gGameVersion
|
|||
_02201F0C: .word 0x00001388
|
||||
thumb_func_end ScrCmd_741
|
||||
|
||||
thumb_func_start ScrCmd_743
|
||||
ScrCmd_743: ; 0x02201F10
|
||||
push {r4, lr}
|
||||
add r4, r0, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl VarGet
|
||||
add r1, r0, #0
|
||||
ldr r0, [r4, #0x74]
|
||||
bl ov03_02258CFC
|
||||
mov r0, #1
|
||||
pop {r4, pc}
|
||||
thumb_func_end ScrCmd_743
|
||||
|
||||
thumb_func_start ScrCmd_744
|
||||
ScrCmd_744: ; 0x02201F30
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
sub sp, #0x10
|
||||
add r0, #0x80
|
||||
ldr r7, [r0]
|
||||
ldr r0, [r7, #0xc]
|
||||
bl sub_02031B00
|
||||
ldr r5, _02201F90 ; =ov01_022093B4
|
||||
add r4, r0, #0
|
||||
mov r6, #0
|
||||
_02201F44:
|
||||
add r1, r6, #0
|
||||
ldr r0, [r7, #0x3c]
|
||||
add r1, #0xf6
|
||||
bl GetMapObjectByID
|
||||
cmp r0, #0
|
||||
beq _02201F56
|
||||
bl DeleteMapObject
|
||||
_02201F56:
|
||||
ldrh r2, [r4]
|
||||
cmp r2, #0
|
||||
beq _02201F80
|
||||
ldr r0, _02201F94 ; =0x000001ED
|
||||
cmp r2, r0
|
||||
bhi _02201F80
|
||||
ldrb r0, [r4, #2]
|
||||
lsl r1, r6, #0x18
|
||||
lsr r1, r1, #0x18
|
||||
str r0, [sp]
|
||||
ldrb r0, [r5]
|
||||
str r0, [sp, #4]
|
||||
ldrb r0, [r5, #1]
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r7, #0x20]
|
||||
ldr r0, [r0]
|
||||
str r0, [sp, #0xc]
|
||||
ldrb r3, [r4, #3]
|
||||
ldr r0, [r7, #0x3c]
|
||||
bl ov01_02201F98
|
||||
_02201F80:
|
||||
add r6, r6, #1
|
||||
add r4, r4, #4
|
||||
add r5, r5, #2
|
||||
cmp r6, #3
|
||||
blt _02201F44
|
||||
mov r0, #1
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
_02201F90: .word ov01_022093B4
|
||||
_02201F94: .word 0x000001ED
|
||||
thumb_func_end ScrCmd_744
|
||||
|
||||
thumb_func_start ov01_02201F98
|
||||
ov01_02201F98: ; 0x02201F98
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0x1c
|
||||
str r3, [sp, #0x18]
|
||||
add r6, r1, #0
|
||||
add r7, r2, #0
|
||||
add r4, r0, #0
|
||||
ldr r1, [sp, #0x18]
|
||||
ldr r2, [sp, #0x30]
|
||||
add r0, r7, #0
|
||||
bl FollowingPokemon_GetSpriteID
|
||||
lsl r5, r0, #1
|
||||
add r0, r7, #0
|
||||
bl GetFollowPokeSizeParamBySpecies
|
||||
lsl r1, r0, #1
|
||||
add r0, r0, r1
|
||||
add r1, r6, r0
|
||||
ldr r0, _02202058 ; =0x0000019F
|
||||
ldr r2, [sp, #0x38]
|
||||
add r0, r1, r0
|
||||
str r0, [sp]
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #0x3c]
|
||||
str r1, [sp, #4]
|
||||
str r0, [sp, #8]
|
||||
str r1, [sp, #0xc]
|
||||
str r1, [sp, #0x10]
|
||||
ldr r1, [sp, #0x34]
|
||||
add r0, r4, #0
|
||||
mov r3, #1
|
||||
str r5, [sp, #0x14]
|
||||
bl CreateSpecialFieldObjectEx
|
||||
add r4, r0, #0
|
||||
bne _02201FE4
|
||||
bl GF_AssertFail
|
||||
_02201FE4:
|
||||
add r6, #0xf6
|
||||
add r0, r4, #0
|
||||
add r1, r6, #0
|
||||
bl MapObject_SetID
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl MapObject_SetType
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl MapObject_SetFlagID
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl MapObject_SetScript
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
mov r2, #2
|
||||
bl MapObject_SetParam
|
||||
str r5, [sp]
|
||||
ldr r2, [sp, #0x18]
|
||||
add r0, r4, #0
|
||||
lsl r2, r2, #0x18
|
||||
add r1, r7, #0
|
||||
lsr r2, r2, #0x18
|
||||
mov r3, #0
|
||||
bl sub_02069F0C
|
||||
mov r1, #0
|
||||
add r0, r4, #0
|
||||
mvn r1, r1
|
||||
bl MapObject_SetXRange
|
||||
mov r1, #0
|
||||
add r0, r4, #0
|
||||
mvn r1, r1
|
||||
bl MapObject_SetYRange
|
||||
mov r1, #1
|
||||
add r0, r4, #0
|
||||
lsl r1, r1, #0x1e
|
||||
bl MapObject_SetBits
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl MapObject_ClearBits
|
||||
add r0, r4, #0
|
||||
mov r1, #0
|
||||
bl sub_0205F89C
|
||||
add r0, r4, #0
|
||||
add sp, #0x1c
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
nop
|
||||
_02202058: .word 0x0000019F
|
||||
thumb_func_end ov01_02201F98
|
||||
|
||||
thumb_func_start ScrCmd_770
|
||||
ScrCmd_770: ; 0x0220205C
|
||||
push {r3, r4, r5, r6, r7, lr}
|
||||
add r4, r0, #0
|
||||
bl ScriptReadHalfword
|
||||
add r1, r0, #0
|
||||
add r0, r4, #0
|
||||
add r0, #0x80
|
||||
ldr r0, [r0]
|
||||
bl GetVarPointer
|
||||
add r4, #0x80
|
||||
str r0, [sp]
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl Sav2_Pokedex_get
|
||||
mov r1, #1
|
||||
add r7, r0, #0
|
||||
bl Pokedex_GetSeenFormeNum_Unown
|
||||
add r6, r0, #0
|
||||
cmp r6, #0x1a
|
||||
bge _02202094
|
||||
ldr r0, [sp]
|
||||
mov r1, #0
|
||||
strh r1, [r0]
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
_02202094:
|
||||
mov r5, #0
|
||||
add r4, r5, #0
|
||||
cmp r6, #0
|
||||
ble _022020B6
|
||||
_0220209C:
|
||||
add r0, r7, #0
|
||||
add r1, r4, #0
|
||||
mov r2, #1
|
||||
bl Pokedex_GetSeenFormeByIdx_Unown
|
||||
cmp r0, #0x1a
|
||||
beq _022020B0
|
||||
cmp r0, #0x1b
|
||||
beq _022020B0
|
||||
add r5, r5, #1
|
||||
_022020B0:
|
||||
add r4, r4, #1
|
||||
cmp r4, r6
|
||||
blt _0220209C
|
||||
_022020B6:
|
||||
cmp r5, #0x1a
|
||||
bne _022020C0
|
||||
mov r1, #1
|
||||
ldr r0, [sp]
|
||||
b _022020C4
|
||||
_022020C0:
|
||||
ldr r0, [sp]
|
||||
mov r1, #0
|
||||
_022020C4:
|
||||
strh r1, [r0]
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
.balign 4, 0
|
||||
thumb_func_end ScrCmd_770
|
||||
|
||||
.rodata
|
||||
|
||||
ov01_022093B4: ; 0x022093B4
|
||||
.public sFriendshipRoomStatuesPositions
|
||||
|
||||
sFriendshipRoomStatuesPositions: ; 0x022093B4
|
||||
.byte 0x04, 0x0A, 0x07, 0x05, 0x0A, 0x0A
|
||||
|
||||
.public sSpikyEarPichuMoveset
|
||||
|
|
|
|||
|
|
@ -4,7 +4,15 @@
|
|||
#include "save.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk[0x28];
|
||||
u16 species;
|
||||
u8 gender;
|
||||
u8 forme;
|
||||
} PokeathlonFriendshipRoomStatueData;
|
||||
|
||||
//TODO: Rename to PokeathlonSaveData or PokeathlonRecords smth like that
|
||||
typedef struct {
|
||||
PokeathlonFriendshipRoomStatueData friendshipRoomStatues[3];
|
||||
u8 unk[0x1C];
|
||||
} UnkSaveStruct29;
|
||||
|
||||
u32 sub_02031AF0(void);
|
||||
|
|
|
|||
|
|
@ -2,11 +2,114 @@
|
|||
#include "fieldmap.h"
|
||||
#include "friend_group.h"
|
||||
#include "photo_album.h"
|
||||
#include "pokedex.h"
|
||||
#include "scrcmd.h"
|
||||
#include "unk_0206D494.h"
|
||||
#include "unk_02031AF0.h"
|
||||
#include "msgdata/msg/msg_0096_D31R0201.h"
|
||||
#include "msgdata/msg/msg_0066_D23R0102.h"
|
||||
|
||||
static LocalMapObject *ov01_02201F98(MapObjectMan *mapObjectMan, u8 unkA, u16 species, u16 forme, u32 gender, u32 x, u32 y, u32 mapId);
|
||||
|
||||
//TODO: define ov03_02258CFC in a header
|
||||
BOOL ScrCmd_743(SCRIPTCONTEXT *ctx) {
|
||||
ov03_02258CFC(ctx->taskman, VarGet(ctx->fsys, ScriptReadHalfword(ctx)));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
extern u8 sFriendshipRoomStatuesPositions[3][2];
|
||||
|
||||
//TODO: rename to ScrCmd_CreatePokeathlonFriendshipRoomSprites
|
||||
BOOL ScrCmd_744(SCRIPTCONTEXT *ctx) {
|
||||
s32 i;
|
||||
u16 species;
|
||||
FieldSystem *fsys = ctx->fsys;
|
||||
|
||||
UnkSaveStruct29 *unkPtr = sub_02031B00(fsys->savedata);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
//TODO: Replace 0xf6 with whatever the const is
|
||||
LocalMapObject *mapObj = GetMapObjectByID(fsys->mapObjectMan, 0xf6 + i);
|
||||
|
||||
if (mapObj) {
|
||||
DeleteMapObject(mapObj);
|
||||
}
|
||||
|
||||
species = unkPtr->friendshipRoomStatues[i].species;
|
||||
|
||||
if (species != 0 && species <= SPECIES_ARCEUS) {
|
||||
ov01_02201F98(fsys->mapObjectMan, (u8) i, species, unkPtr->friendshipRoomStatues[i].forme, unkPtr->friendshipRoomStatues[i].gender, sFriendshipRoomStatuesPositions[i][0], sFriendshipRoomStatuesPositions[i][1], fsys->location->mapId);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static LocalMapObject *ov01_02201F98(MapObjectMan *mapObjectMan, u8 unkA, u16 species, u16 forme, u32 gender, u32 x, u32 y, u32 mapId) {
|
||||
LocalMapObject *mapObj;
|
||||
u32 spriteId;
|
||||
u32 size;
|
||||
|
||||
|
||||
spriteId = FollowingPokemon_GetSpriteID(species, forme, gender) << 1;
|
||||
size = GetFollowPokeSizeParamBySpecies(species)*3 + unkA;
|
||||
|
||||
//TODO: Define CreateSpecialFieldObjectEx in a header
|
||||
mapObj = CreateSpecialFieldObjectEx(mapObjectMan, x, y, DIR_SOUTH, size + 0x19f, 0, mapId, 0, 0, spriteId);
|
||||
|
||||
if (!mapObj) {
|
||||
GF_AssertFail();
|
||||
}
|
||||
|
||||
MapObject_SetID(mapObj, unkA + 0xf6);
|
||||
MapObject_SetType(mapObj, 0);
|
||||
MapObject_SetFlagID(mapObj, 0);
|
||||
MapObject_SetScript(mapObj, 0);
|
||||
MapObject_SetParam(mapObj, 0, 2);
|
||||
sub_02069F0C(mapObj, species, (u8) forme, FALSE, spriteId);
|
||||
MapObject_SetXRange(mapObj, -1);
|
||||
MapObject_SetYRange(mapObj, -1);
|
||||
MapObject_SetBits(mapObj, 1 << 0x1e);
|
||||
MapObject_ClearBits(mapObj, FALSE);
|
||||
sub_0205F89C(mapObj, FALSE);
|
||||
|
||||
return mapObj;
|
||||
}
|
||||
|
||||
//TODO: Rename to ScrCmd_CheckAllLetterUnownSeen
|
||||
BOOL ScrCmd_770(SCRIPTCONTEXT *ctx) {
|
||||
u32 forme;
|
||||
s32 i;
|
||||
u32 counter;
|
||||
s32 unownFormes;
|
||||
POKEDEX *pokedex;
|
||||
u16 *allUnownSeen;
|
||||
|
||||
allUnownSeen = GetVarPointer(ctx->fsys, ScriptReadHalfword(ctx));
|
||||
pokedex = Sav2_Pokedex_get(ctx->fsys->savedata);
|
||||
|
||||
unownFormes = Pokedex_GetSeenFormeNum_Unown(pokedex, 1);
|
||||
if (unownFormes < 26) {
|
||||
*allUnownSeen = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
counter = 0;
|
||||
for (i = 0; i < unownFormes; i++) {
|
||||
forme = Pokedex_GetSeenFormeByIdx_Unown(pokedex, i, TRUE);
|
||||
if (forme != 26 && forme != 27) {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
if (counter == 26) {
|
||||
*allUnownSeen = TRUE;
|
||||
} else {
|
||||
*allUnownSeen = FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_GiveTogepiEgg(SCRIPTCONTEXT *ctx) {
|
||||
s32 i;
|
||||
u8 pp;
|
||||
|
|
@ -231,8 +334,6 @@ BOOL ScrCmd_GetBuenasPassword(SCRIPTCONTEXT *ctx) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
//TODO: Rename to MonGetShinyLeafCount
|
||||
static u32 MonGetShinyLeafCount(POKEMON *mon) {
|
||||
int c;
|
||||
u32 shinyLeafCount = 0;
|
||||
|
|
@ -247,7 +348,6 @@ static u32 MonGetShinyLeafCount(POKEMON *mon) {
|
|||
return shinyLeafCount;
|
||||
}
|
||||
|
||||
//TODO: Rename to ScrCmd_GetShinyLeafCount
|
||||
BOOL ScrCmd_GetShinyLeafCount(SCRIPTCONTEXT *ctx) {
|
||||
u32 monIndex = VarGet(ctx->fsys, ScriptReadHalfword(ctx));
|
||||
u16 *shinyLeafCount = GetVarPointer(ctx->fsys, ScriptReadHalfword(ctx));
|
||||
|
|
@ -255,7 +355,6 @@ BOOL ScrCmd_GetShinyLeafCount(SCRIPTCONTEXT *ctx) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
//TODO: Rename to ScrCmd_TryGiveShinyLeafCrown
|
||||
BOOL ScrCmd_TryGiveShinyLeafCrown(SCRIPTCONTEXT *ctx) {
|
||||
u32 monIndex = VarGet(ctx->fsys, ScriptReadHalfword(ctx));
|
||||
|
||||
|
|
@ -268,7 +367,6 @@ BOOL ScrCmd_TryGiveShinyLeafCrown(SCRIPTCONTEXT *ctx) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
//TODO: Rename to ScrCmd_GetUniqueSealsCount
|
||||
BOOL ScrCmd_GetUniqueSealsQuantity(SCRIPTCONTEXT *ctx) {
|
||||
u16 *uniqueSeals = GetVarPointer(ctx->fsys, ScriptReadHalfword(ctx));
|
||||
|
||||
|
|
@ -295,7 +393,6 @@ BOOL ScrCmd_GiveOrTakeSeal(SCRIPTCONTEXT *ctx) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
//TODO: rename to IsSealNonUnique
|
||||
static BOOL IsSealNonUnique(u16 sealId, u16 *uniqueSealIds, s32 size) {
|
||||
s32 c;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user