pre-flight decomp

This commit is contained in:
Seth Barberee
2022-08-01 09:18:19 -07:00
parent d9893a6274
commit 00940175b4
4 changed files with 123 additions and 293 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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
}

View File

@@ -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)
{