mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
more decomp and documentation
This commit is contained in:
parent
24da346796
commit
6a1a7bcaff
|
|
@ -3479,7 +3479,7 @@ _0806BDA6:
|
|||
bl SetDefaultIQSkills
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x3C
|
||||
bl sub_808E6F4
|
||||
bl GenerateHiddenPower
|
||||
strh r4, [r6, 0x10]
|
||||
strh r4, [r6, 0xE]
|
||||
mov r0, sp
|
||||
|
|
|
|||
|
|
@ -2405,265 +2405,4 @@ _0806FDEE:
|
|||
bx r1
|
||||
thumb_func_end sub_806FD18
|
||||
|
||||
thumb_func_start sub_806FDF4
|
||||
sub_806FDF4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x60
|
||||
str r0, [sp, 0x58]
|
||||
mov r10, r1
|
||||
str r2, [sp, 0x5C]
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
str r0, [r2]
|
||||
add r0, sp, 0xC
|
||||
bl sub_8069D4C
|
||||
movs r6, 0
|
||||
ldr r3, _0806FE50
|
||||
ldr r0, [r3]
|
||||
ldr r2, _0806FE54
|
||||
adds r0, r2
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _0806FE46
|
||||
adds r5, r3, 0
|
||||
adds r4, r2, 0
|
||||
movs r2, 0
|
||||
movs r3, 0x1
|
||||
_0806FE2E:
|
||||
adds r2, 0x64
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x3
|
||||
bgt _0806FE46
|
||||
ldr r0, [r5]
|
||||
adds r0, r2, r0
|
||||
adds r0, r4
|
||||
ldrb r1, [r0]
|
||||
adds r0, r3, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _0806FE2E
|
||||
_0806FE46:
|
||||
cmp r6, 0x4
|
||||
bne _0806FE58
|
||||
movs r0, 0
|
||||
b _0806FFF8
|
||||
.align 2, 0
|
||||
_0806FE50: .4byte gRecruitedPokemonRef
|
||||
_0806FE54: .4byte 0x00008df8
|
||||
_0806FE58:
|
||||
add r0, sp, 0xC
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetFriendArea
|
||||
lsls r0, 24
|
||||
lsrs r7, r0, 24
|
||||
ldr r1, _0806FF74
|
||||
movs r0, 0x64
|
||||
muls r0, r6
|
||||
ldr r2, _0806FF78
|
||||
adds r0, r2
|
||||
ldr r1, [r1]
|
||||
adds r5, r1, r0
|
||||
movs r4, 0
|
||||
movs r0, 0x3
|
||||
strh r0, [r5]
|
||||
strb r4, [r5, 0x2]
|
||||
add r0, sp, 0xC
|
||||
ldrh r0, [r0, 0xE]
|
||||
strb r0, [r5, 0x3]
|
||||
movs r0, 0x1
|
||||
strh r0, [r5, 0x8]
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x4C
|
||||
movs r1, 0
|
||||
bl SetDefaultIQSkills
|
||||
ldr r0, [sp, 0x50]
|
||||
str r0, [r5, 0x54]
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x50
|
||||
strb r4, [r0]
|
||||
ldr r0, _0806FF7C
|
||||
strh r0, [r5, 0xA]
|
||||
strh r6, [r5, 0xC]
|
||||
add r0, sp, 0xC
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r5, 0xE]
|
||||
ldr r0, _0806FF80
|
||||
ldr r0, [r0]
|
||||
ldr r3, _0806FF84
|
||||
adds r0, r3
|
||||
ldr r0, [r0]
|
||||
str r0, [r5, 0x4]
|
||||
add r0, sp, 0xC
|
||||
ldrh r0, [r0, 0x8]
|
||||
strh r0, [r5, 0x10]
|
||||
add r0, sp, 0xC
|
||||
ldrh r0, [r0, 0x8]
|
||||
strh r0, [r5, 0x12]
|
||||
ldr r0, [sp, 0x20]
|
||||
str r0, [r5, 0x44]
|
||||
ldr r0, [sp, 0x24]
|
||||
str r0, [r5, 0x48]
|
||||
movs r2, 0
|
||||
add r6, sp, 0x2C
|
||||
add r4, sp, 0x54
|
||||
mov r8, r4
|
||||
mov r4, sp
|
||||
adds r4, 0x16
|
||||
add r3, sp, 0x18
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x14
|
||||
_0806FED8:
|
||||
adds r0, r4, r2
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1]
|
||||
adds r0, r3, r2
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1, 0x2]
|
||||
adds r1, 0x1
|
||||
adds r2, 0x1
|
||||
cmp r2, 0x1
|
||||
ble _0806FED8
|
||||
ldr r0, [sp, 0x1C]
|
||||
str r0, [r5, 0x18]
|
||||
adds r1, r5, 0
|
||||
adds r1, 0x1C
|
||||
adds r0, r6, 0
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldr r0, [sp, 0x28]
|
||||
str r0, [r5, 0x40]
|
||||
adds r4, r5, 0
|
||||
adds r4, 0x58
|
||||
add r0, sp, 0xC
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
bl GetMonSpecies
|
||||
adds r1, r0, 0
|
||||
adds r0, r4, 0
|
||||
movs r2, 0xA
|
||||
bl BoundedCopyStringtoBuffer
|
||||
adds r0, r7, 0
|
||||
bl GetFriendAreaStatus
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806FF34
|
||||
adds r0, r7, 0
|
||||
bl UnlockFriendArea
|
||||
movs r2, 0x1
|
||||
mov r9, r2
|
||||
_0806FF34:
|
||||
bl sub_8097848
|
||||
movs r1, 0xFA
|
||||
lsls r1, 1
|
||||
mov r0, r10
|
||||
ldr r2, [sp, 0x58]
|
||||
bl sub_8068FE0
|
||||
add r0, sp, 0xC
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
add r1, sp, 0xC
|
||||
movs r2, 0x4
|
||||
ldrsh r1, [r1, r2]
|
||||
add r2, sp, 0xC
|
||||
movs r3, 0x6
|
||||
ldrsh r2, [r2, r3]
|
||||
mov r3, r8
|
||||
str r3, [sp]
|
||||
movs r3, 0
|
||||
str r3, [sp, 0x4]
|
||||
str r3, [sp, 0x8]
|
||||
adds r3, r5, 0
|
||||
bl sub_806B8CC
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
bne _0806FF88
|
||||
strh r0, [r5]
|
||||
b _0806FFF6
|
||||
.align 2, 0
|
||||
_0806FF74: .4byte gRecruitedPokemonRef
|
||||
_0806FF78: .4byte 0x00008df8
|
||||
_0806FF7C: .4byte 0x0000ffff
|
||||
_0806FF80: .4byte gDungeon
|
||||
_0806FF84: .4byte 0x00000644
|
||||
_0806FF88:
|
||||
ldr r0, _0806FF9C
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8052B8C
|
||||
cmp r0, 0x1
|
||||
bne _0806FFB8
|
||||
b _0806FFAC
|
||||
.align 2, 0
|
||||
_0806FF9C: .4byte gUnknown_80FA090
|
||||
_0806FFA0:
|
||||
ldr r0, _08070008
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
_0806FFAC:
|
||||
adds r0, r4, 0
|
||||
bl sub_805FBE8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806FFA0
|
||||
_0806FFB8:
|
||||
mov r4, r9
|
||||
cmp r4, 0
|
||||
beq _0806FFE6
|
||||
bl xxx_call_GetLeader
|
||||
adds r1, r0, 0
|
||||
ldr r0, _0807000C
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _08070010
|
||||
adds r1, r7, 0
|
||||
bl sub_8092558
|
||||
movs r0, 0xCE
|
||||
bl PlaySound
|
||||
ldr r0, _08070014
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl PrintFieldMessage
|
||||
_0806FFE6:
|
||||
ldr r0, _08070018
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl sub_808D9DC
|
||||
ldr r0, [sp, 0x54]
|
||||
ldr r1, [sp, 0x5C]
|
||||
str r0, [r1]
|
||||
_0806FFF6:
|
||||
movs r0, 0x1
|
||||
_0806FFF8:
|
||||
add sp, 0x60
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08070008: .4byte gUnknown_80FA0C8
|
||||
_0807000C: .4byte gAvailablePokemonNames
|
||||
_08070010: .4byte gUnknown_202E628
|
||||
_08070014: .4byte gUnknown_80FA120
|
||||
_08070018: .4byte gUnknown_202E088
|
||||
thumb_func_end sub_806FDF4
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ typedef struct unkStruct_808E218_arg
|
|||
typedef struct unkStruct_808E218
|
||||
{
|
||||
// leveldata? (same size)
|
||||
unkStruct_808E6F4 unk0[3];
|
||||
HiddenPower unk0[3];
|
||||
} unkStruct_808E218;
|
||||
|
||||
extern unkStruct_203B45C *gRecruitedPokemonRef;
|
||||
|
|
@ -80,7 +80,7 @@ bool8 IsPokemonDialogueSpriteAvail(s16 index, s32 r1);
|
|||
OpenedFile *OpenPokemonDialogueSpriteFile(s16 index);
|
||||
OpenedFile *GetDialogueSpriteDataPtr(s16 index);
|
||||
s32 GetUnownIndex(s16 index);
|
||||
void sub_808E6F4(unkStruct_808E6F4 *);
|
||||
void GenerateHiddenPower(HiddenPower *);
|
||||
s32 GetEvolutionSequence(PokemonStruct1 *pokemon, EvolveStage *);
|
||||
void xxx_pokemonstruct_to_pokemon2_808DE50(PokemonStruct2 *, PokemonStruct1 *, s32);
|
||||
void SavePokemonStruct(unkStruct_8094924 *, PokemonStruct1 *pokemon);
|
||||
|
|
|
|||
|
|
@ -40,13 +40,6 @@ typedef struct PokemonStruct1
|
|||
/* 0x4C */ u8 name[POKEMON_NAME_LENGTH];
|
||||
} PokemonStruct1;
|
||||
|
||||
// size: 0x4
|
||||
typedef struct unkStruct_808E6F4
|
||||
{
|
||||
s16 unk0;
|
||||
u8 unk2;
|
||||
} unkStruct_808E6F4;
|
||||
|
||||
// size: 0x4
|
||||
typedef struct EvolveStage
|
||||
{
|
||||
|
|
@ -78,11 +71,11 @@ typedef struct PokemonStruct2
|
|||
/* 0x18 */ u32 currExp;
|
||||
/* 0x1C */ unkStruct_8094184 moves;
|
||||
/* 0x40 */ Item itemSlot; // heldItem
|
||||
/* 0x44 */ FixedPoint unk44;
|
||||
/* 0x48 */ FixedPoint unk48;
|
||||
u32 belly; // some struct
|
||||
u32 maxBelly; // some struct (same type as 44)
|
||||
/* 0x4C */ u32 IQSkills; // unk20
|
||||
/* 0x50 */ u8 tacticIndex;
|
||||
unkStruct_808E6F4 unk54;
|
||||
/* 0x54 */ HiddenPower hiddenPower;
|
||||
/* 0x58 */ u8 name[POKEMON_NAME_LENGTH]; // name (other offset)
|
||||
} PokemonStruct2;
|
||||
|
||||
|
|
|
|||
27
include/structs/struct_8069D4C.h
Normal file
27
include/structs/struct_8069D4C.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef GUARD_STRUCT_8069D4C_H
|
||||
#define GUARD_STRUCT_8069D4C_H
|
||||
|
||||
#include "structs/dungeon_entity.h"
|
||||
#include "structs/str_items.h"
|
||||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
struct unkStruct_8069D4C
|
||||
{
|
||||
s16 id;
|
||||
Position pos;
|
||||
s16 HP;
|
||||
// NOTE: cannot re-use offense struct as it pads.
|
||||
u8 att[2]; // Atk, SpAtk
|
||||
u8 def[2]; // Def, SpDef
|
||||
u16 level;
|
||||
u32 exp;
|
||||
u32 belly;
|
||||
u32 maxBelly;
|
||||
Item heldItem;
|
||||
unkStruct_8094184 moves;
|
||||
HiddenPower hiddenPower;
|
||||
};
|
||||
|
||||
#endif // GUARD_STRUCT_8069D4C_H
|
||||
|
||||
|
|
@ -255,6 +255,7 @@ SECTIONS {
|
|||
src/type_effectiveness.o(.text);
|
||||
src/code_806E8B0.o(.text);
|
||||
asm/code_806E8B0.o(.text);
|
||||
src/code_806FDF4.o(.text);
|
||||
src/status_checks.o(.text);
|
||||
src/dungeon_movement.o(.text);
|
||||
src/status_checks_1.o(.text);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "pokemon_mid.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "code_8069D4C.h"
|
||||
#include "structs/struct_8069D4C.h"
|
||||
|
||||
u32 sub_8069D18(Position *pos,Entity *entity)
|
||||
{
|
||||
|
|
@ -31,15 +31,14 @@ void sub_8069D4C(struct unkStruct_8069D4C *r0, Entity *target)
|
|||
|
||||
r0->level = info->level;
|
||||
|
||||
|
||||
GetPokemonLevelData(&leveldata, info->id, info->level);
|
||||
r0->exp = leveldata.expRequired;
|
||||
r0->atk = info->atk;
|
||||
r0->spAtk = info->spAtk;
|
||||
r0->def = info->def;
|
||||
r0->spDef = info->spDef;
|
||||
r0->att[0] = info->atk;
|
||||
r0->att[1] = info->spAtk;
|
||||
r0->def[0] = info->def;
|
||||
r0->def[1] = info->spDef;
|
||||
r0->heldItem = info->heldItem;
|
||||
memcpy(r0->moves, info->moves, sizeof(r0->moves) + sizeof(r0->unk40));
|
||||
memcpy(r0->moves.moves, info->moves, sizeof(r0->moves));
|
||||
r0->belly = info->belly;
|
||||
r0->maxBelly = info->maxBelly;
|
||||
r0->hiddenPower = info->hiddenPower;
|
||||
|
|
|
|||
112
src/code_806FDF4.c
Normal file
112
src/code_806FDF4.c
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
#include "global.h"
|
||||
#include "structs/str_pokemon.h"
|
||||
#include "structs/struct_8069D4C.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_8045A00.h"
|
||||
#include "code_8097670.h"
|
||||
#include "friend_area.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "text_util.h"
|
||||
#include "dungeon_util_1.h"
|
||||
|
||||
extern u8 gUnknown_202E628[];
|
||||
extern u8 gUnknown_202E088[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
|
||||
extern u8 *gUnknown_80FA0C8[];
|
||||
extern u8 gUnknown_202E088[];
|
||||
extern u8 *gUnknown_80FA120[];
|
||||
extern u8 *gUnknown_80FA090[];
|
||||
|
||||
void sub_8069D4C(struct unkStruct_8069D4C *r0, Entity *target);
|
||||
void sub_8068FE0(Entity *, u32, Entity *);
|
||||
u8 sub_806B8CC();
|
||||
bool8 sub_805FBE8(u8 *a0);
|
||||
extern s32 sub_8052B8C(u32, const u8 *, u32);
|
||||
extern void PrintFieldMessage(u32, const u8 *, u32);
|
||||
|
||||
bool8 sub_806FDF4(Entity *entity1,Entity *entity2,Entity **entityPtr)
|
||||
{
|
||||
u8 friendArea;
|
||||
bool8 flag;
|
||||
Entity *leader;
|
||||
PokemonStruct2 *pokeStruct2;
|
||||
int index;
|
||||
struct unkStruct_8069D4C local_74;
|
||||
Entity *local_2c;
|
||||
u8 *buffer;
|
||||
s32 index2;
|
||||
|
||||
flag = 0;
|
||||
*entityPtr = NULL;
|
||||
|
||||
sub_8069D4C(&local_74,entity2);
|
||||
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
if (((u8)(index[gRecruitedPokemonRef->pokemon2].unk0) & 1) == 0) break;
|
||||
}
|
||||
|
||||
if (index == MAX_TEAM_MEMBERS) {
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
friendArea = GetFriendArea(local_74.id);
|
||||
pokeStruct2 = &gRecruitedPokemonRef->pokemon2[index];
|
||||
pokeStruct2->unk0 = 3;
|
||||
pokeStruct2->isTeamLeader = FALSE;
|
||||
pokeStruct2->level = local_74.level;
|
||||
pokeStruct2->IQ = 1;
|
||||
SetDefaultIQSkills((u8 *)&(pokeStruct2->IQSkills),FALSE);
|
||||
pokeStruct2->hiddenPower = local_74.hiddenPower;
|
||||
pokeStruct2->tacticIndex = 0;
|
||||
pokeStruct2->unkA = -1;
|
||||
pokeStruct2->unkC = index;
|
||||
pokeStruct2->speciesNum = local_74.id;
|
||||
pokeStruct2->dungeonLocation = gDungeon->dungeonLocation;
|
||||
pokeStruct2->unk10 = local_74.HP;
|
||||
pokeStruct2->unk12 = local_74.HP;
|
||||
pokeStruct2->belly = local_74.belly;
|
||||
pokeStruct2->maxBelly = local_74.maxBelly;
|
||||
|
||||
for(index2 = 0; index2 < 2; index2++)
|
||||
{
|
||||
pokeStruct2->offense.att[index2] = local_74.att[index2];
|
||||
pokeStruct2->offense.def[index2] = local_74.def[index2];
|
||||
}
|
||||
|
||||
pokeStruct2->currExp = local_74.exp;
|
||||
pokeStruct2->moves = local_74.moves;
|
||||
|
||||
pokeStruct2->itemSlot = local_74.heldItem;
|
||||
buffer = pokeStruct2->name;
|
||||
BoundedCopyStringtoBuffer(buffer,GetMonSpecies(local_74.id), POKEMON_NAME_LENGTH);
|
||||
if (GetFriendAreaStatus(friendArea) == 0) {
|
||||
UnlockFriendArea(friendArea);
|
||||
flag = TRUE;
|
||||
}
|
||||
sub_8097848();
|
||||
sub_8068FE0(entity2,500,entity1);
|
||||
if (sub_806B8CC(local_74.id,local_74.pos.x,local_74.pos.y,pokeStruct2,&local_2c,0,0) == 0) {
|
||||
pokeStruct2->unk0 = 0;
|
||||
}
|
||||
else {
|
||||
if (sub_8052B8C(0,*gUnknown_80FA090,1) == 1) {
|
||||
while (!sub_805FBE8(buffer)) {
|
||||
PrintFieldMessage(0,*gUnknown_80FA0C8,1);
|
||||
}
|
||||
}
|
||||
if (flag) {
|
||||
leader = xxx_call_GetLeader();
|
||||
SetMessageArgument(gAvailablePokemonNames,leader,0);
|
||||
sub_8092558(gUnknown_202E628,friendArea);
|
||||
PlaySound(0xce);
|
||||
PrintFieldMessage(0,*gUnknown_80FA120,1);
|
||||
}
|
||||
sub_808D9DC(gUnknown_202E088,pokeStruct2,0);
|
||||
*entityPtr = local_2c;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
#include "constants/evolution_status.h"
|
||||
#include "constants/iq_skill.h"
|
||||
#include "constants/tactic.h"
|
||||
#include "constants/type.h"
|
||||
#include "sprite.h"
|
||||
#include "text_util.h"
|
||||
#include "friend_area.h"
|
||||
|
|
@ -51,9 +52,9 @@ void RestoreDungeonLocation(struct unkStruct_8094924*, DungeonLocation*);
|
|||
void xxx_restore_poke_sub_c_808F410(struct unkStruct_8094924*, struct unkPokeSubStruct_C*);
|
||||
|
||||
extern void sub_809449C(struct unkStruct_8094924*, void*);
|
||||
extern void sub_808F448(struct unkStruct_8094924*, struct unkStruct_808E6F4*);
|
||||
extern void SavePokemonHiddenPower(struct unkStruct_8094924*, HiddenPower*);
|
||||
extern void sub_809447C(struct unkStruct_8094924*, void*);
|
||||
extern void sub_808F428(struct unkStruct_8094924*, struct unkStruct_808E6F4*);
|
||||
extern void RestorePokemonHiddenPower(struct unkStruct_8094924*, HiddenPower*);
|
||||
s16 GetPokemonEvolveConditions(s16 index, unkEvolve *r1);
|
||||
|
||||
u32 sub_808F798(PokemonStruct1 *, s16);
|
||||
|
|
@ -85,18 +86,18 @@ bool8 AddShadowSprite(s16 species, s16* a2, s16* a3)
|
|||
}
|
||||
|
||||
|
||||
void sub_808E6F4(struct unkStruct_808E6F4* a1)
|
||||
void GenerateHiddenPower(HiddenPower* a1)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
a1->unk0 = gUnknown_810AC90[RandInt(10)];
|
||||
a1->hiddenPowerBasePower = gUnknown_810AC90[RandInt(10)];
|
||||
for (i = 0; i < 100; i++) {
|
||||
a1->unk2 = RandInt(18);
|
||||
if ( a1->unk2 )
|
||||
a1->hiddenPowerType = RandInt(NUM_TYPES);
|
||||
if ( a1->hiddenPowerType )
|
||||
break;
|
||||
}
|
||||
if ( i == 100 )
|
||||
a1->unk2 = 2;
|
||||
a1->hiddenPowerType = TYPE_FIRE;
|
||||
}
|
||||
|
||||
bool8 HasRecruitedMon(s16 species) {
|
||||
|
|
@ -824,11 +825,11 @@ s32 SavePokemonStruct2(u8* a1, s32 size)
|
|||
SaveIntegerBits(&backup, &pokemon2->currExp, 24);
|
||||
sub_8094184(&backup, &pokemon2->moves);
|
||||
SaveItemSlot(&backup, &pokemon2->itemSlot);
|
||||
sub_809449C(&backup, &pokemon2->unk44);
|
||||
sub_809449C(&backup, &pokemon2->unk48);
|
||||
sub_809449C(&backup, &pokemon2->belly);
|
||||
sub_809449C(&backup, &pokemon2->maxBelly);
|
||||
SaveIntegerBits(&backup, &pokemon2->IQSkills, 24);
|
||||
SaveIntegerBits(&backup, &pokemon2->tacticIndex, 4);
|
||||
sub_808F448(&backup, &pokemon2->unk54);
|
||||
SavePokemonHiddenPower(&backup, &pokemon2->hiddenPower);
|
||||
SaveIntegerBits(&backup, &pokemon2->name, 80);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
|
|
@ -872,11 +873,11 @@ s32 RestorePokemonStruct2(u8* a1, s32 size)
|
|||
RestoreIntegerBits(&backup, &pokemon2->currExp, 24);
|
||||
sub_80941FC(&backup, &pokemon2->moves);
|
||||
RestoreItemSlot(&backup, &pokemon2->itemSlot);
|
||||
sub_809447C(&backup, &pokemon2->unk44);
|
||||
sub_809447C(&backup, &pokemon2->unk48);
|
||||
sub_809447C(&backup, &pokemon2->belly);
|
||||
sub_809447C(&backup, &pokemon2->maxBelly);
|
||||
RestoreIntegerBits(&backup, &pokemon2->IQSkills, 24);
|
||||
RestoreIntegerBits(&backup, &pokemon2->tacticIndex, 4);
|
||||
sub_808F428(&backup, &pokemon2->unk54);
|
||||
RestorePokemonHiddenPower(&backup, &pokemon2->hiddenPower);
|
||||
RestoreIntegerBits(&backup, &pokemon2->name, 80);
|
||||
}
|
||||
nullsub_102(&backup);
|
||||
|
|
@ -893,16 +894,16 @@ void xxx_save_poke_sub_c_808F41C(struct unkStruct_8094924* a1, struct unkPokeSub
|
|||
SaveIntegerBits(a1, &unkC->level, 7);
|
||||
}
|
||||
|
||||
void sub_808F428(unkStruct_8094924* a1, unkStruct_808E6F4* a2)
|
||||
void RestorePokemonHiddenPower(unkStruct_8094924* a1, HiddenPower* a2)
|
||||
{
|
||||
RestoreIntegerBits(a1, &a2->unk0, 10);
|
||||
RestoreIntegerBits(a1, &a2->unk2, 5);
|
||||
RestoreIntegerBits(a1, &a2->hiddenPowerBasePower, 10);
|
||||
RestoreIntegerBits(a1, &a2->hiddenPowerType, 5);
|
||||
}
|
||||
|
||||
void sub_808F448(unkStruct_8094924* a1, unkStruct_808E6F4* a2)
|
||||
void SavePokemonHiddenPower(unkStruct_8094924* a1, HiddenPower* a2)
|
||||
{
|
||||
SaveIntegerBits(a1, &a2->unk0, 10);
|
||||
SaveIntegerBits(a1, &a2->unk2, 5);
|
||||
SaveIntegerBits(a1, &a2->hiddenPowerBasePower, 10);
|
||||
SaveIntegerBits(a1, &a2->hiddenPowerType, 5);
|
||||
}
|
||||
|
||||
void sub_808F468(PokemonStruct1 *param_1, EvolveStatus *evolveStatus, u8 param_3)
|
||||
|
|
|
|||
|
|
@ -622,7 +622,7 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(PokemonStruct2 * a1, PokemonStruct1 *
|
|||
a1->level = pokemon->level;
|
||||
a1->IQ = pokemon->IQ;
|
||||
a1->IQSkills = pokemon->IQSkills;
|
||||
sub_808E6F4(&a1->unk54);
|
||||
GenerateHiddenPower(&a1->hiddenPower);
|
||||
a1->dungeonLocation = pokemon->dungeonLocation;
|
||||
a1->isTeamLeader = pokemon->isTeamLeader;
|
||||
a1->unkA = a3;
|
||||
|
|
@ -654,9 +654,10 @@ void xxx_pokemonstruct_to_pokemon2_808DE50(PokemonStruct2 * a1, PokemonStruct1 *
|
|||
slot->quantity = 0;
|
||||
slot->flags = 0;
|
||||
}
|
||||
|
||||
a1->unk44 = IntToFixedPoint(100);
|
||||
a1->unk48 = IntToFixedPoint(100);
|
||||
sub_80943A0(&somestruct_80943A0, 100);
|
||||
a1->belly = somestruct_80943A0;
|
||||
sub_80943A0(&somestruct2_80943A0, 100);
|
||||
a1->maxBelly = somestruct2_80943A0;
|
||||
}
|
||||
|
||||
void xxx_pokemon2_to_pokemonstruct_index_808DF2C(s32 a1, PokemonStruct2* a2)
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ void SaveImmobilizeStatus(unkStruct_8094924 *param_1, Immobilize *param_2);
|
|||
void SaveNonVolatileStatus(unkStruct_8094924 *param_1, NonVolatile *param_2);
|
||||
void SaveEntitySleep(unkStruct_8094924 *param_1, Sleep* param_2);
|
||||
void SaveTactic(unkStruct_8094924 *param_1, u8 param_2);
|
||||
void SaveHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2);
|
||||
void SaveDungeonHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2);
|
||||
void SaveChargingStatus(unkStruct_8094924 *param_1, Charging *param_2);
|
||||
void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2);
|
||||
void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2);
|
||||
|
|
@ -404,7 +404,7 @@ void SaveEntity(unkStruct_8094924 *param_1, Entity *param_2)
|
|||
SaveIQFlags(param_1,temp2);
|
||||
SaveIQFlags(param_1,temp1);
|
||||
SaveTactic(param_1,*puStack_a0);
|
||||
SaveHiddenPower(param_1,psStack_a4);
|
||||
SaveDungeonHiddenPower(param_1,psStack_a4);
|
||||
sub_8083078(param_1,*puStack_9c);
|
||||
sub_8083078(param_1,*puStack_98);
|
||||
sub_8083078(param_1,*puStack_94);
|
||||
|
|
@ -619,7 +619,7 @@ void SaveTactic(unkStruct_8094924 *param_1, u8 param_2)
|
|||
sub_8082FA8(param_1, ¶m_2, 1);
|
||||
}
|
||||
|
||||
void SaveHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2)
|
||||
void SaveDungeonHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2)
|
||||
{
|
||||
sub_8083048(param_1, param_2->hiddenPowerBasePower);
|
||||
sub_808180C(param_1, param_2->hiddenPowerType);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user