mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-24 17:54:43 -05:00
pre-flight decomp
This commit is contained in:
@@ -678,293 +678,4 @@ _08070820: .4byte gDungeonGlobalData
|
||||
_08070824: .4byte 0x0000066e
|
||||
thumb_func_end GetMovementSpeed
|
||||
|
||||
thumb_func_start sub_8070828
|
||||
sub_8070828:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
movs r5, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08070840
|
||||
movs r0, 0
|
||||
b _080708AE
|
||||
_08070840:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1B
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807085E
|
||||
adds r0, r4, 0
|
||||
bl GetWeather
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x4
|
||||
bne _0807085E
|
||||
movs r5, 0x1
|
||||
_0807085E:
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x4A
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807087C
|
||||
adds r0, r4, 0
|
||||
bl GetWeather
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _0807087C
|
||||
movs r5, 0x1
|
||||
_0807087C:
|
||||
cmp r6, 0
|
||||
beq _080708A0
|
||||
ldr r0, [r4, 0x70]
|
||||
movs r1, 0x40
|
||||
adds r2, r5, 0
|
||||
bl SetVisualFlags
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080708A0
|
||||
adds r0, r4, 0
|
||||
bl sub_80429B4
|
||||
ldr r0, _080708A8
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl SendMessage
|
||||
_080708A0:
|
||||
cmp r5, 0
|
||||
bne _080708AC
|
||||
movs r0, 0x1
|
||||
b _080708AE
|
||||
.align 2, 0
|
||||
_080708A8: .4byte gUnknown_80FEE80
|
||||
_080708AC:
|
||||
movs r0, 0x2
|
||||
_080708AE:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8070828
|
||||
|
||||
thumb_func_start SetMessageArgument_2
|
||||
SetMessageArgument_2:
|
||||
push {r4,r5,lr}
|
||||
adds r3, r0, 0
|
||||
adds r4, r2, 0
|
||||
ldr r0, _080708E8
|
||||
ldr r2, [r0]
|
||||
ldr r5, _080708EC
|
||||
adds r0, r2, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080708DC
|
||||
adds r5, 0x6
|
||||
adds r0, r2, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080708DC
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _080708F4
|
||||
_080708DC:
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _080708F4
|
||||
ldr r0, _080708F0
|
||||
b _08070900
|
||||
.align 2, 0
|
||||
_080708E8: .4byte gDungeonGlobalData
|
||||
_080708EC: .4byte 0x0001820a
|
||||
_080708F0: .4byte gUnknown_80F8988
|
||||
_080708F4:
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08070910
|
||||
ldr r0, _0807090C
|
||||
_08070900:
|
||||
ldr r1, [r0]
|
||||
adds r0, r3, 0
|
||||
bl strcpy
|
||||
b _0807095A
|
||||
.align 2, 0
|
||||
_0807090C: .4byte gUnknown_80F8968
|
||||
_08070910:
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _08070942
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4A
|
||||
beq _0807092A
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xA4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08070936
|
||||
_0807092A:
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r1, r0]
|
||||
adds r0, r3, 0
|
||||
bl CopyYellowSpeciesNametoBuffer
|
||||
b _0807095A
|
||||
_08070936:
|
||||
movs r5, 0x4
|
||||
ldrsh r1, [r1, r5]
|
||||
adds r0, r3, 0
|
||||
bl CopyCyanSpeciesNametoBuffer
|
||||
b _0807095A
|
||||
_08070942:
|
||||
ldr r2, _08070960
|
||||
ldrb r1, [r1, 0xA]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _08070964
|
||||
adds r0, r1
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
adds r0, r3, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_808D9DC
|
||||
_0807095A:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070960: .4byte gRecruitedPokemonRef
|
||||
_08070964: .4byte 0x00008df8
|
||||
thumb_func_end SetMessageArgument_2
|
||||
|
||||
thumb_func_start sub_8070968
|
||||
sub_8070968:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
adds r3, r2, 0
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08070990
|
||||
ldr r1, _08070988
|
||||
adds r2, 0x30
|
||||
ldr r0, _0807098C
|
||||
ldr r3, [r0]
|
||||
adds r0, r4, 0
|
||||
bl sprintf_2
|
||||
b _080709BA
|
||||
.align 2, 0
|
||||
_08070988: .4byte gUnknown_8106FA4
|
||||
_0807098C: .4byte gUnknown_80F8974
|
||||
_08070990:
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _080709A2
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r1, r0]
|
||||
adds r0, r4, 0
|
||||
bl CopyCyanSpeciesNametoBuffer
|
||||
b _080709BA
|
||||
_080709A2:
|
||||
ldr r2, _080709C0
|
||||
ldrb r1, [r1, 0xA]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _080709C4
|
||||
adds r0, r1
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
adds r0, r4, 0
|
||||
adds r2, r3, 0
|
||||
bl sub_808D9DC
|
||||
_080709BA:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080709C0: .4byte gRecruitedPokemonRef
|
||||
_080709C4: .4byte 0x00008df8
|
||||
thumb_func_end sub_8070968
|
||||
|
||||
thumb_func_start sub_80709C8
|
||||
sub_80709C8:
|
||||
push {r4,lr}
|
||||
adds r3, r0, 0
|
||||
ldr r0, _080709F8
|
||||
ldr r2, [r0]
|
||||
ldr r4, _080709FC
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080709EE
|
||||
adds r4, 0x6
|
||||
adds r0, r2, r4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080709EE
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xE4
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _08070A04
|
||||
_080709EE:
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _08070A04
|
||||
ldr r0, _08070A00
|
||||
b _08070A10
|
||||
.align 2, 0
|
||||
_080709F8: .4byte gDungeonGlobalData
|
||||
_080709FC: .4byte 0x0001820a
|
||||
_08070A00: .4byte gUnknown_80F8994
|
||||
_08070A04:
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC8
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x2
|
||||
bne _08070A20
|
||||
ldr r0, _08070A1C
|
||||
_08070A10:
|
||||
ldr r1, [r0]
|
||||
adds r0, r3, 0
|
||||
bl strcpy
|
||||
b _08070A48
|
||||
.align 2, 0
|
||||
_08070A1C: .4byte gUnknown_80F8974
|
||||
_08070A20:
|
||||
ldrb r0, [r1, 0x6]
|
||||
cmp r0, 0
|
||||
beq _08070A32
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r1, r0]
|
||||
adds r0, r3, 0
|
||||
bl CopySpeciesNametoBuffer
|
||||
b _08070A48
|
||||
_08070A32:
|
||||
ldr r2, _08070A50
|
||||
ldrb r1, [r1, 0xA]
|
||||
movs r0, 0x64
|
||||
muls r0, r1
|
||||
ldr r1, _08070A54
|
||||
adds r0, r1
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
adds r0, r3, 0
|
||||
bl sub_808DA0C
|
||||
_08070A48:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08070A50: .4byte gRecruitedPokemonRef
|
||||
_08070A54: .4byte 0x00008df8
|
||||
thumb_func_end sub_80709C8
|
||||
|
||||
.align 2, 0
|
||||
@@ -190,6 +190,8 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index);
|
||||
void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index);
|
||||
void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index);
|
||||
void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum);
|
||||
void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum);
|
||||
void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2);
|
||||
void PeekPokemonItem(s16 index_, struct HeldItem* item);
|
||||
void GivePokemonItem(s16 index_, struct HeldItem* item);
|
||||
bool8 IsPokemonRenamed(struct PokemonStruct* pokemon);
|
||||
|
||||
@@ -281,22 +281,22 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32
|
||||
sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
|
||||
}
|
||||
|
||||
void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum)
|
||||
void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum)
|
||||
{
|
||||
u8 nameBuffer [20];
|
||||
|
||||
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
|
||||
sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH);
|
||||
if (colorNum == COLOR_WHITE) {
|
||||
colorNum = COLOR_YELLOW;
|
||||
}
|
||||
sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2}
|
||||
}
|
||||
|
||||
void sub_808DA0C(u8 *buffer, u8 *param_2)
|
||||
void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2)
|
||||
{
|
||||
u8 nameBuffer [20];
|
||||
|
||||
sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH);
|
||||
sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH);
|
||||
sprintf_2(buffer,gUnknown_8107638,nameBuffer); // %s
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,124 @@
|
||||
#include "global.h"
|
||||
#include "status_checks_1.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "code_800D090.h"
|
||||
#include "code_80521D0.h"
|
||||
#include "pokemon.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern void sub_80429B4(struct DungeonEntity *r0);
|
||||
|
||||
extern u8 *gUnknown_80FEE80[];
|
||||
extern u8 *gUnknown_80F8974[];
|
||||
extern u8 *gUnknown_80F8994[];
|
||||
extern u8 *gUnknown_80F8968[];
|
||||
extern u8 *gUnknown_80F8988[];
|
||||
extern u8 gUnknown_8106FA4[];
|
||||
|
||||
u8 sub_8070828(struct DungeonEntity *pokemon, bool8 displayMessage)
|
||||
{
|
||||
bool8 flag;
|
||||
|
||||
flag = FALSE;
|
||||
if (!EntityExists(pokemon)) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
if ((HasAbility(pokemon, ABILITY_SWIFT_SWIM)) && (GetWeather(pokemon) == WEATHER_RAIN)) {
|
||||
flag = TRUE;
|
||||
}
|
||||
if ((HasAbility(pokemon, ABILITY_CHLOROPHYLL)) && (GetWeather(pokemon) == WEATHER_SUNNY)) {
|
||||
flag = TRUE;
|
||||
}
|
||||
if (displayMessage && SetVisualFlags(pokemon->entityData, 0x40, flag)) {
|
||||
sub_80429B4(pokemon);
|
||||
SendMessage(pokemon, *gUnknown_80FEE80);
|
||||
}
|
||||
if (flag) {
|
||||
return 2;
|
||||
}
|
||||
else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetMessageArgument_2(u8 *buffer, struct DungeonEntityData *param_2, s32 colorNum)
|
||||
{
|
||||
if (((gDungeonGlobalData->displayBlinker ||
|
||||
gDungeonGlobalData->displayCrossEyed) ||
|
||||
(param_2->transformStatus == TRANSFORM_STATUS_INVISIBLE)) &&
|
||||
(param_2->isEnemy))
|
||||
{
|
||||
strcpy(buffer, *gUnknown_80F8988);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (param_2->waitingStatus == WAITING_STATUS_DECOY) {
|
||||
strcpy(buffer, *gUnknown_80F8968);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (param_2->isEnemy) {
|
||||
if ((param_2->joinLocation == 0x4A) || (param_2->clientType == CLIENT_TYPE_CLIENT)) {
|
||||
CopyYellowSpeciesNametoBuffer(buffer, param_2->transformSpecies);
|
||||
}
|
||||
else
|
||||
CopyCyanSpeciesNametoBuffer(buffer, param_2->transformSpecies);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[param_2->partyIndex],colorNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8070968(u8 *buffer, struct DungeonEntityData *entityData, s32 colorNum)
|
||||
{
|
||||
if (entityData->waitingStatus == WAITING_STATUS_DECOY) {
|
||||
sprintf_2(buffer, gUnknown_8106FA4, colorNum + 0x30, *gUnknown_80F8974);
|
||||
}
|
||||
else if (entityData->isEnemy) {
|
||||
CopyCyanSpeciesNametoBuffer(buffer, entityData->transformSpecies);
|
||||
}
|
||||
else {
|
||||
sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex], colorNum);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80709C8(u8 *buffer, struct DungeonEntityData *entityData)
|
||||
{
|
||||
if (((gDungeonGlobalData->displayBlinker ||
|
||||
gDungeonGlobalData->displayCrossEyed) ||
|
||||
(entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)) &&
|
||||
(entityData->isEnemy))
|
||||
{
|
||||
strcpy(buffer, *gUnknown_80F8994);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (entityData->waitingStatus == WAITING_STATUS_DECOY) {
|
||||
strcpy(buffer, *gUnknown_80F8974);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (entityData->isEnemy) {
|
||||
CopySpeciesNametoBuffer(buffer, entityData->transformSpecies);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_808DA0C(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 HasNegativeStatus(struct DungeonEntity *pokemon)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user