mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-20 15:55:05 -05:00
file split code 8041ad0
This commit is contained in:
@@ -1,152 +1,6 @@
|
||||
#include "constants/status.h"
|
||||
.section .rodata
|
||||
#.incbin "baserom.gba", 0xF59C4, 0x4
|
||||
|
||||
.string "pksdir0\0"
|
||||
.string "pksdir0\0"
|
||||
|
||||
.global gUnknown_80F6624
|
||||
gUnknown_80F6624: @ 80F6624
|
||||
@ replacing .incbin "baserom.gba", 0xF6624, 0x78
|
||||
.byte 0x78, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
.byte 0x7b, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x7d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0xb9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
.byte 0xbb, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
||||
|
||||
.global gStatusSpriteMasks_SleepClassStatus
|
||||
gStatusSpriteMasks_SleepClassStatus: @ 80F669C
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_SLEEP @ STATUS_SLEEP
|
||||
.4byte STATUS_SPRITE_SLEEPLESS @ STATUS_SLEEPLESS
|
||||
.4byte STATUS_SPRITE_SLEEP @ STATUS_NIGHTMARE
|
||||
.4byte 0 @ STATUS_YAWNING
|
||||
.4byte STATUS_SPRITE_SLEEP @ STATUS_NAPPING
|
||||
|
||||
.global gStatusSpriteMasks_BurnClassStatus
|
||||
gStatusSpriteMasks_BurnClassStatus: @ 80F66B4
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_BURNED @ STATUS_BURN
|
||||
.4byte STATUS_SPRITE_POISONED @ STATUS_POISONED
|
||||
.4byte STATUS_SPRITE_BADLY_POISONED @ STATUS_BADLY_POISONED
|
||||
.4byte 0 @ STATUS_PARALYSIS
|
||||
|
||||
.global gStatusSpriteMasks_FrozenClassStatus
|
||||
gStatusSpriteMasks_FrozenClassStatus: @ 80F66C8
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_FROZEN @ STATUS_FROZEN
|
||||
.4byte 0 @ STATUS_SHADOW_HOLD
|
||||
.4byte 0 @ STATUS_WRAP
|
||||
.4byte 0 @ STATUS_WRAPPED
|
||||
.4byte 0 @ STATUS_INGRAIN
|
||||
.4byte 0 @ STATUS_PETRIFIED
|
||||
.4byte 0 @ STATUS_CONSTRICTION
|
||||
|
||||
.global gStatusSpriteMasks_CringeClassStatus
|
||||
gStatusSpriteMasks_CringeClassStatus: @ 80F66E8
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte 0 @ STATUS_CRINGE
|
||||
.4byte STATUS_SPRITE_CONFUSED @ STATUS_CONFUSED
|
||||
.4byte 0 @ STATUS_PAUSED
|
||||
.4byte STATUS_SPRITE_COWERING @ STATUS_COWERING
|
||||
.4byte STATUS_SPRITE_TAUNTED @ STATUS_TAUNTED
|
||||
.4byte STATUS_SPRITE_ENCORE @ STATUS_ENCORE
|
||||
.4byte 0 @ STATUS_INFATUATED
|
||||
|
||||
.global gStatusSpriteMasks_BideClassStatus
|
||||
gStatusSpriteMasks_BideClassStatus: @ 80F6708
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte 0 @ STATUS_BIDE
|
||||
.4byte 0 @ STATUS_SOLARBEAM
|
||||
.4byte 0 @ STATUS_SKY_ATTACK
|
||||
.4byte 0 @ STATUS_RAZOR_WIND
|
||||
.4byte 0 @ STATUS_FOCUS_PUNCH
|
||||
.4byte 0 @ STATUS_SKULL_BASH
|
||||
.4byte 0 @ STATUS_FLYING
|
||||
.4byte 0 @ STATUS_BOUNCING
|
||||
.4byte 0 @ STATUS_DIVING
|
||||
.4byte 0 @ STATUS_DIGGING
|
||||
.4byte 0 @ STATUS_CHARGING
|
||||
.4byte 0 @ STATUS_ENRAGED
|
||||
|
||||
.global gStatusSpriteMasks_ReflectClassStatus
|
||||
gStatusSpriteMasks_ReflectClassStatus: @ 80F673C
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_SHIELD_BLUE @ STATUS_REFLECT
|
||||
.4byte STATUS_SPRITE_SHIELD_RED @ STATUS_SAFEGUARD
|
||||
.4byte STATUS_SPRITE_SHIELD_YELLOW @ STATUS_LIGHT_SCREEN
|
||||
.4byte STATUS_SPRITE_SHIELD_BLUE @ STATUS_COUNTER
|
||||
.4byte STATUS_SPRITE_SHIELD_YELLOW @ STATUS_MAGIC_COAT
|
||||
.4byte 0 @ STATUS_WISH
|
||||
.4byte STATUS_SPRITE_SHIELD_GREEN @ STATUS_PROTECT
|
||||
.4byte STATUS_SPRITE_SHIELD_RED @ STATUS_MIRROR_COAT
|
||||
.4byte STATUS_SPRITE_ENDURE @ STATUS_ENDURING
|
||||
.4byte STATUS_SPRITE_SHIELD_BLUE @ STATUS_MINI_COUNTER
|
||||
.4byte STATUS_SPRITE_SHIELD_GREEN @ STATUS_MIRROR_MOVE
|
||||
.4byte 0 @ STATUS_CONVERSION2
|
||||
.4byte STATUS_SPRITE_SHIELD_GREEN @ STATUS_VITAL_THROW
|
||||
.4byte STATUS_SPRITE_SHIELD_BLUE @ STATUS_MIST
|
||||
|
||||
.global gStatusSpriteMasks_CurseClassStatus
|
||||
gStatusSpriteMasks_CurseClassStatus: @ 80F6778
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_CURSED @ STATUS_CURSED
|
||||
.4byte 0 @ STATUS_DECOY
|
||||
.4byte STATUS_SPRITE_SNATCH @ STATUS_SNATCH
|
||||
|
||||
.global gStatusSpriteMasks_LeechSeedClassStatus
|
||||
gStatusSpriteMasks_LeechSeedClassStatus: @ 80F6788
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte 0 @ STATUS_LEECH_SEED
|
||||
.4byte 0 @ STATUS_DESTINY_BOND
|
||||
|
||||
.global gStatusSpriteMasks_SureShotClassStatus
|
||||
gStatusSpriteMasks_SureShotClassStatus: @ 80F6794
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_SURE_SHOT @ STATUS_SURE_SHOT
|
||||
.4byte STATUS_SPRITE_WHIFFER @ STATUS_WHIFFER
|
||||
.4byte STATUS_SPRITE_SET_DAMAGE @ STATUS_SET_DAMAGE
|
||||
.4byte STATUS_SPRITE_FOCUS_ENERGY @ STATUS_FOCUS_ENERGY
|
||||
|
||||
.global gStatusSpriteMasks_LongTossClassStatus
|
||||
gStatusSpriteMasks_LongTossClassStatus: @ 80F67A8
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte 0 @ STATUS_LONG_TOSS
|
||||
.4byte 0 @ STATUS_PIERCE
|
||||
|
||||
.global gStatusSpriteMasks_InvisibleClassStatus
|
||||
gStatusSpriteMasks_InvisibleClassStatus: @ 80F67B4
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte 0 @ STATUS_INVISIBLE
|
||||
.4byte 0 @ STATUS_TRANSFORMED
|
||||
.4byte 0 @ STATUS_MOBILE
|
||||
|
||||
.global gStatusSpriteMasks_BlinkerClassStatus
|
||||
gStatusSpriteMasks_BlinkerClassStatus: @ 80F67C4
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_BLINKER @ STATUS_BLINKER
|
||||
.4byte STATUS_SPRITE_CROSS_EYED @ STATUS_CROSS_EYED
|
||||
.4byte STATUS_SPRITE_EYEDROPS @ STATUS_EYEDROPS
|
||||
|
||||
.global gStatusSpriteMasks_MuzzledStatus
|
||||
gStatusSpriteMasks_MuzzledStatus: @ 80F67D4
|
||||
.4byte 0 @ STATUS_NONE
|
||||
.4byte STATUS_SPRITE_MUZZLED @ STATUS_MUZZLED
|
||||
|
||||
.global gUnknown_80F67DC
|
||||
gUnknown_80F67DC: @ 80F67DC
|
||||
@ u16[4]. They are sound effect IDs
|
||||
.byte 0xD8, 0x00, 0xD9, 0x00
|
||||
.byte 0xD9, 0x00, 0x73, 0x01
|
||||
|
||||
.global gUnknown_80F67E4
|
||||
gUnknown_80F67E4: @ 80F67E4
|
||||
@ u16[4]. They are sound effect IDs
|
||||
.byte 0xDA, 0x00, 0xDB, 0x00
|
||||
.byte 0xDB, 0x00, 0x74, 0x01
|
||||
|
||||
.global gUnknown_80F67EC
|
||||
gUnknown_80F67EC: @ 80F67EC
|
||||
@@ -175,7 +29,9 @@ gUnknown_80F683C: @ 80F683C
|
||||
gUnknown_80F6850: @ 80F6850
|
||||
@ replacing .incbin "baserom.gba", 0xF6850, 0x10
|
||||
.byte 0x9e, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01
|
||||
.byte 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00
|
||||
|
||||
.string "pksdir0"
|
||||
.align 2,0
|
||||
|
||||
.global gSpeedTurns
|
||||
gSpeedTurns: @ 80F6860
|
||||
|
||||
3
data/pksdir_0.s
Normal file
3
data/pksdir_0.s
Normal file
@@ -0,0 +1,3 @@
|
||||
.section .rodata
|
||||
|
||||
.string "pksdir0\0"
|
||||
@@ -203,7 +203,6 @@ SECTIONS {
|
||||
src/dungeon_map.o(.text);
|
||||
src/code_8040094_1.o(.text);
|
||||
src/code_8041AD0.o(.text);
|
||||
src/code_804267C.o(.text);
|
||||
src/code_8042B34.o(.text);
|
||||
src/dungeon_engine.o(.text);
|
||||
src/dungeon_action.o(.text);
|
||||
@@ -530,7 +529,6 @@ SECTIONS {
|
||||
src/personality_test2.o(.rodata);
|
||||
src/code_803D0D8.o(.rodata);
|
||||
src/dungeon_util.o(.rodata);
|
||||
src/dungeon_ai_movement.o(.rodata);
|
||||
data/data_80F4D44.o(.rodata);
|
||||
src/dungeon_config.o(.rodata);
|
||||
data/data_80F59C8_1.o(.rodata);
|
||||
@@ -540,6 +538,8 @@ SECTIONS {
|
||||
data/data_80F59C8_0.o(.rodata);
|
||||
src/dungeon_map.o(.rodata);
|
||||
src/code_8040094_1.o(.rodata);
|
||||
data/pksdir_0.o(.rodata);
|
||||
src/code_8041AD0.o(.rodata);
|
||||
data/data_80F59C8_5.o(.rodata);
|
||||
src/dungeon_items.o(.rodata);
|
||||
data/data_80F59C8_7.o(.rodata);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "globaldata.h"
|
||||
#include "constants/direction.h"
|
||||
#include "constants/status.h"
|
||||
#include "constants/type.h"
|
||||
@@ -20,20 +21,24 @@
|
||||
#include "items.h"
|
||||
#include "math.h"
|
||||
#include "sprite.h"
|
||||
#include "code_803E668.h"
|
||||
#include "dungeon.h"
|
||||
#include "code_8042B34.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_map.h"
|
||||
#include "dungeon_message.h"
|
||||
#include "dungeon_music.h"
|
||||
#include "memory.h"
|
||||
#include "random.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "code_800E9E4.h"
|
||||
|
||||
extern u32 gStatusSpriteMasks_SleepClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_BurnClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_FrozenClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_CringeClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_BideClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_ReflectClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_CurseClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_LeechSeedClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_SureShotClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_LongTossClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_InvisibleClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_BlinkerClassStatus[];
|
||||
extern u32 gStatusSpriteMasks_MuzzledStatus[];
|
||||
// Unknown dungeon file. File split is correct.
|
||||
|
||||
extern const s32 gUnknown_80F67EC[8];
|
||||
extern const u32 gUnknown_80F680C[8];
|
||||
extern const u16 gUnknown_80F682C[8];
|
||||
extern const u8 *gPtrFeralFoundItemMessage[];
|
||||
|
||||
extern void sub_803ED30(u8, Entity *pokemon, u8, u8);
|
||||
extern u32 sub_806F62C(u32);
|
||||
@@ -47,11 +52,167 @@ extern s32 gDungeonBrightness;
|
||||
extern void sub_800DBBC(void);
|
||||
extern void sub_803EA10(void);
|
||||
extern void sub_8042E98(void);
|
||||
extern void sub_800EF28(u8);
|
||||
extern u32 sub_800E448(u8, DungeonPos *);
|
||||
extern void sub_80429A0(Entity *);
|
||||
void sub_8042B34(s32 a0, s32 a1, s32 a2);
|
||||
extern bool8 sub_8042CC0(void);
|
||||
extern void sub_8042D7C(void);
|
||||
extern u8 GetFloorType(void);
|
||||
extern bool8 sub_8045888(Entity *);
|
||||
extern s32 sub_80416E0(PixelPos*, u32, bool8);
|
||||
extern u32 sub_8041764(unkStruct_80416E0 *, bool8);
|
||||
extern u32 sub_800E49C();
|
||||
extern void sub_800F15C(s32);
|
||||
extern void sub_800EF40(u8 r0, u8 r1);
|
||||
extern s32 sub_800E6D8(s32);
|
||||
extern void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 param_4, s32 param_5);
|
||||
|
||||
void sub_804178C(u8 param_1);
|
||||
u32 sub_8041764(unkStruct_80416E0 *param_1, bool8 param_2);
|
||||
s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3);
|
||||
s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5);
|
||||
s32 sub_804151C(Entity *entity, s32 r1, u8 r2);
|
||||
void sub_804178C(u8 param_1);
|
||||
|
||||
struct UnkStruct_80F6624
|
||||
{
|
||||
s16 unk0;
|
||||
s32 unk4;
|
||||
};
|
||||
|
||||
static const struct UnkStruct_80F6624 gUnknown_80F6624[][3] = {
|
||||
{{0x178, 3}, {0x179, 1}, {0, 0}},
|
||||
{{0x17A, 1}, {0x17B, 2}, {0x17C, 3}},
|
||||
{{0x17D, 1}, {0x17E, 2}, {0, 0}},
|
||||
{{0x17F, 2}, {0, 0}, {0, 0}},
|
||||
{{0x1B9, 1}, {0x1BA, 2}, {0x1BB, 3}},
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_SleepClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_SLEEP] = STATUS_SPRITE_SLEEP,
|
||||
[STATUS_SLEEPLESS] = STATUS_SPRITE_SLEEPLESS,
|
||||
[STATUS_NIGHTMARE] = STATUS_SPRITE_SLEEP,
|
||||
[STATUS_YAWNING] = 0,
|
||||
[STATUS_NAPPING] = STATUS_SPRITE_SLEEP,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_BurnClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_BURN] = STATUS_SPRITE_BURNED,
|
||||
[STATUS_POISONED] = STATUS_SPRITE_POISONED,
|
||||
[STATUS_BADLY_POISONED] = STATUS_SPRITE_BADLY_POISONED,
|
||||
[STATUS_PARALYSIS] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_FrozenClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_FROZEN] = STATUS_SPRITE_FROZEN,
|
||||
[STATUS_SHADOW_HOLD] = 0,
|
||||
[STATUS_WRAP] = 0,
|
||||
[STATUS_WRAPPED] = 0,
|
||||
[STATUS_INGRAIN] = 0,
|
||||
[STATUS_PETRIFIED] = 0,
|
||||
[STATUS_CONSTRICTION] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_CringeClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_CRINGE] = 0,
|
||||
[STATUS_CONFUSED] = STATUS_SPRITE_CONFUSED,
|
||||
[STATUS_PAUSED] = 0,
|
||||
[STATUS_COWERING] = STATUS_SPRITE_COWERING,
|
||||
[STATUS_TAUNTED] = STATUS_SPRITE_TAUNTED,
|
||||
[STATUS_ENCORE] = STATUS_SPRITE_ENCORE,
|
||||
[STATUS_INFATUATED] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_BideClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_BIDE] = 0,
|
||||
[STATUS_SOLARBEAM] = 0,
|
||||
[STATUS_SKY_ATTACK] = 0,
|
||||
[STATUS_RAZOR_WIND] = 0,
|
||||
[STATUS_FOCUS_PUNCH] = 0,
|
||||
[STATUS_SKULL_BASH] = 0,
|
||||
[STATUS_FLYING] = 0,
|
||||
[STATUS_BOUNCING] = 0,
|
||||
[STATUS_DIVING] = 0,
|
||||
[STATUS_DIGGING] = 0,
|
||||
[STATUS_CHARGING] = 0,
|
||||
[STATUS_ENRAGED] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_ReflectClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_REFLECT] = STATUS_SPRITE_SHIELD_BLUE,
|
||||
[STATUS_SAFEGUARD] = STATUS_SPRITE_SHIELD_RED,
|
||||
[STATUS_LIGHT_SCREEN] = STATUS_SPRITE_SHIELD_YELLOW,
|
||||
[STATUS_COUNTER] = STATUS_SPRITE_SHIELD_BLUE,
|
||||
[STATUS_MAGIC_COAT] = STATUS_SPRITE_SHIELD_YELLOW,
|
||||
[STATUS_WISH] = 0,
|
||||
[STATUS_PROTECT] = STATUS_SPRITE_SHIELD_GREEN,
|
||||
[STATUS_MIRROR_COAT] = STATUS_SPRITE_SHIELD_RED,
|
||||
[STATUS_ENDURING] = STATUS_SPRITE_ENDURE,
|
||||
[STATUS_MINI_COUNTER] = STATUS_SPRITE_SHIELD_BLUE,
|
||||
[STATUS_MIRROR_MOVE] = STATUS_SPRITE_SHIELD_GREEN,
|
||||
[STATUS_CONVERSION2] = 0,
|
||||
[STATUS_VITAL_THROW] = STATUS_SPRITE_SHIELD_GREEN,
|
||||
[STATUS_MIST] = STATUS_SPRITE_SHIELD_BLUE,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_CurseClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_CURSED] = STATUS_SPRITE_CURSED,
|
||||
[STATUS_DECOY] = 0,
|
||||
[STATUS_SNATCH] = STATUS_SPRITE_SNATCH,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_LeechSeedClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_LEECH_SEED] = 0,
|
||||
[STATUS_DESTINY_BOND] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_SureShotClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_SURE_SHOT] = STATUS_SPRITE_SURE_SHOT,
|
||||
[STATUS_WHIFFER] = STATUS_SPRITE_WHIFFER,
|
||||
[STATUS_SET_DAMAGE] = STATUS_SPRITE_SET_DAMAGE,
|
||||
[STATUS_FOCUS_ENERGY] = STATUS_SPRITE_FOCUS_ENERGY,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_LongTossClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_LONG_TOSS] = 0,
|
||||
[STATUS_PIERCE] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_InvisibleClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_INVISIBLE] = 0,
|
||||
[STATUS_TRANSFORMED] = 0,
|
||||
[STATUS_MOBILE] = 0,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_BlinkerClassStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
[STATUS_BLINKER] = STATUS_SPRITE_BLINKER,
|
||||
[STATUS_CROSS_EYED] = STATUS_SPRITE_CROSS_EYED,
|
||||
[STATUS_EYEDROPS] = STATUS_SPRITE_EYEDROPS,
|
||||
};
|
||||
|
||||
static const u32 sStatusSpriteMasks_MuzzledStatus[] = {
|
||||
[STATUS_NONE] = 0,
|
||||
/*STATUS_MUZZLED not defined*/[1] = STATUS_SPRITE_MUZZLED,
|
||||
};
|
||||
|
||||
static const u16 gUnknown_80F67DC[4] = {
|
||||
0xD8, 0xD9, 0xD9, 0x173
|
||||
};
|
||||
static const u16 gUnknown_80F67E4[4] = {
|
||||
0xDA, 0xDB, 0xDB, 0x174
|
||||
};
|
||||
|
||||
s32 sub_804151C(Entity *entity, s32 r1, u8 r2)
|
||||
{
|
||||
@@ -258,21 +419,21 @@ void EntityUpdateStatusSprites(Entity *entity)
|
||||
flag = (temp) != 0;
|
||||
}
|
||||
if (flag) {
|
||||
spriteStatus = gStatusSpriteMasks_SleepClassStatus[entityInfo->sleepClassStatus.status];
|
||||
spriteStatus = sStatusSpriteMasks_SleepClassStatus[entityInfo->sleepClassStatus.status];
|
||||
}
|
||||
spriteStatus = spriteStatus |
|
||||
gStatusSpriteMasks_BurnClassStatus[entityInfo->burnClassStatus.status] |
|
||||
gStatusSpriteMasks_FrozenClassStatus[entityInfo->frozenClassStatus.status] |
|
||||
gStatusSpriteMasks_CringeClassStatus[entityInfo->cringeClassStatus.status] |
|
||||
gStatusSpriteMasks_BideClassStatus[entityInfo->bideClassStatus.status] |
|
||||
gStatusSpriteMasks_ReflectClassStatus[entityInfo->reflectClassStatus.status] |
|
||||
gStatusSpriteMasks_CurseClassStatus[entityInfo->curseClassStatus.status] |
|
||||
gStatusSpriteMasks_LeechSeedClassStatus[entityInfo->leechSeedClassStatus.status] |
|
||||
gStatusSpriteMasks_SureShotClassStatus[entityInfo->sureShotClassStatus.status] |
|
||||
gStatusSpriteMasks_LongTossClassStatus[entityInfo->longTossClassStatus.status] |
|
||||
gStatusSpriteMasks_InvisibleClassStatus[entityInfo->invisibleClassStatus.status] |
|
||||
gStatusSpriteMasks_BlinkerClassStatus[entityInfo->blinkerClassStatus.status] |
|
||||
gStatusSpriteMasks_MuzzledStatus[entityInfo->muzzled.muzzled];
|
||||
sStatusSpriteMasks_BurnClassStatus[entityInfo->burnClassStatus.status] |
|
||||
sStatusSpriteMasks_FrozenClassStatus[entityInfo->frozenClassStatus.status] |
|
||||
sStatusSpriteMasks_CringeClassStatus[entityInfo->cringeClassStatus.status] |
|
||||
sStatusSpriteMasks_BideClassStatus[entityInfo->bideClassStatus.status] |
|
||||
sStatusSpriteMasks_ReflectClassStatus[entityInfo->reflectClassStatus.status] |
|
||||
sStatusSpriteMasks_CurseClassStatus[entityInfo->curseClassStatus.status] |
|
||||
sStatusSpriteMasks_LeechSeedClassStatus[entityInfo->leechSeedClassStatus.status] |
|
||||
sStatusSpriteMasks_SureShotClassStatus[entityInfo->sureShotClassStatus.status] |
|
||||
sStatusSpriteMasks_LongTossClassStatus[entityInfo->longTossClassStatus.status] |
|
||||
sStatusSpriteMasks_InvisibleClassStatus[entityInfo->invisibleClassStatus.status] |
|
||||
sStatusSpriteMasks_BlinkerClassStatus[entityInfo->blinkerClassStatus.status] |
|
||||
sStatusSpriteMasks_MuzzledStatus[entityInfo->muzzled.muzzled];
|
||||
|
||||
if (entityInfo->grudge) {
|
||||
spriteStatus = spriteStatus | STATUS_SPRITE_GRUDGE;
|
||||
@@ -961,10 +1122,6 @@ void sub_8042238(Entity *pokemon, Entity *target)
|
||||
PlaySoundEffect(0x156);
|
||||
}
|
||||
|
||||
extern void sub_800EF28(u8);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern u32 sub_800E448(u8, DungeonPos *);
|
||||
|
||||
void sub_804225C(Entity *entity, DungeonPos *pos, u8 trapId)
|
||||
{
|
||||
s32 uVar6;
|
||||
@@ -1014,3 +1171,571 @@ void sub_804225C(Entity *entity, DungeonPos *pos, u8 trapId)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042390(Entity *entity, Item *item)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 counter;
|
||||
u8 id;
|
||||
u32 uVar6;
|
||||
DungeonPos asStack_24[4];
|
||||
DungeonPos local_14;
|
||||
|
||||
if (sub_8042768(entity)) {
|
||||
id = !ItemSticky(item) ? item->id : ITEM_NOTHING;
|
||||
sub_800EF40(id, 0);
|
||||
sub_800EF64();
|
||||
sub_803E708(4,0x42);
|
||||
local_14.x = (entity->pixelPos).x / 256;
|
||||
local_14.y = (entity->pixelPos).y / 256;
|
||||
|
||||
sVar1 = (local_14.y - gDungeon->unk181e8.cameraPixelPos.y) / 2 + 1;
|
||||
sub_8005700(asStack_24,&entity->axObj);
|
||||
uVar6 = sub_800E49C(id,&local_14,asStack_24,0,sVar1);
|
||||
for (counter = 0; counter < 1000; counter++) {
|
||||
DungeonRunFrameActions(0x42);
|
||||
if (!sub_800E9A8(uVar6)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804245C(Entity *entity, Item *item)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 counter;
|
||||
u8 id;
|
||||
u32 uVar6;
|
||||
DungeonPos asStack_24[4];
|
||||
DungeonPos local_14;
|
||||
|
||||
if (sub_8042768(entity)) {
|
||||
id = !ItemSticky(item) ? item->id : ITEM_NOTHING;
|
||||
sub_800EF64();
|
||||
sub_803E708(4,0x42);
|
||||
local_14.x = (entity->pixelPos).x / 256;
|
||||
local_14.y = (entity->pixelPos).y / 256;
|
||||
|
||||
sVar1 = (local_14.y - gDungeon->unk181e8.cameraPixelPos.y) / 2 + 1;
|
||||
sub_8005700(asStack_24,&entity->axObj);
|
||||
uVar6 = sub_800E49C(id,&local_14,asStack_24,1,sVar1);
|
||||
for (counter = 0; counter < 1000; counter++) {
|
||||
DungeonRunFrameActions(0x42);
|
||||
if (!sub_800E9A8(uVar6)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_8042520(Entity *a0)
|
||||
{
|
||||
s32 i;
|
||||
s32 uVar4;
|
||||
DungeonPos pos;
|
||||
u32 dir;
|
||||
s32 iVar8;
|
||||
unkStruct_80416E0 local_58;
|
||||
unkStruct_2039DB0 u203; // Unused
|
||||
PixelPos local_2c;
|
||||
|
||||
if (sub_8045888(a0)) {
|
||||
dir = GetEntInfo(a0)->action.direction;
|
||||
pos.x = a0->pixelPos.x / 0x100;
|
||||
pos.y = a0->pixelPos.y / 0x100;
|
||||
|
||||
iVar8 = (pos.y - gDungeon->unk181e8.cameraPixelPos.y) / 2;
|
||||
local_58.unk0 = 357;
|
||||
local_58.unk4 = 0;
|
||||
local_58.dir = dir;
|
||||
local_58.x = pos.x;
|
||||
local_58.y = pos.y;
|
||||
local_58.unk10 = 0;
|
||||
local_58.unk12 = 0;
|
||||
local_58.unk14 = -1;
|
||||
local_58.unk18 = iVar8;
|
||||
sub_8004E8C(&u203);
|
||||
uVar4 = sub_8041764(&local_58, 0);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
sub_800E8AC(uVar4, &pos, 0, iVar8, 0);
|
||||
DungeonRunFrameActions(66);
|
||||
pos.x += gAdjacentTileOffsets[dir].x * 4;
|
||||
pos.y += gAdjacentTileOffsets[dir].y * 4;
|
||||
iVar8 = (pos.y - gDungeon->unk181e8.cameraPixelPos.y) / 2;
|
||||
}
|
||||
|
||||
sub_800DBBC();
|
||||
local_2c.x = pos.x * 0x100;
|
||||
local_2c.y = pos.y * 0x100;
|
||||
uVar4 = sub_80416E0(&local_2c, 416, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
uVar4 = -1;
|
||||
}
|
||||
return uVar4;
|
||||
}
|
||||
|
||||
// This func plays the appropriate ascend/descend SFX for stairs depending on the direction
|
||||
void PlayStairsSound(void)
|
||||
{
|
||||
u32 songIndex;
|
||||
|
||||
songIndex = 997;
|
||||
|
||||
switch (GetFloorType()) {
|
||||
case 0:
|
||||
default:
|
||||
songIndex = IsStairDirectionUp(gDungeon->unk644.dungeonLocation.id) ? 340 : 341;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
|
||||
PlaySoundEffect(songIndex);
|
||||
}
|
||||
|
||||
void sub_80426C8(u32 a0, u32 a1)
|
||||
{
|
||||
if (a1 == 3)
|
||||
DungeonStartNewBGM(0);
|
||||
|
||||
if (a0 != 4)
|
||||
PlaySoundEffect(gUnknown_80F67DC[a1]);
|
||||
else
|
||||
PlaySoundEffect(gUnknown_80F67E4[a1]);
|
||||
|
||||
sub_8042B34(a0, a1, 0x80);
|
||||
|
||||
while (sub_8042CC0())
|
||||
DungeonRunFrameActions(0x46);
|
||||
|
||||
sub_8042D7C();
|
||||
LoadDungeonMapPalette();
|
||||
sub_8052210(1);
|
||||
}
|
||||
|
||||
void sub_8042730(Entity *a0, void *unused)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_806CDD4(a0, 8, 8);
|
||||
for (i = 0; i < 100; i++) {
|
||||
DungeonRunFrameActions(0x51);
|
||||
if ((a0->axObj.axdata.sub1.unk10 & 3) != 0 || a0->axObj.unk43_animId2 != 8)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8042768(Entity* pokemon)
|
||||
{
|
||||
if (!pokemon->isVisible)
|
||||
return FALSE;
|
||||
if (gDungeon->unk181e8.blinded) {
|
||||
if (gDungeon->unk181e8.cameraTarget == pokemon)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
return sub_8045888(pokemon);
|
||||
}
|
||||
|
||||
void sub_80427AC(void)
|
||||
{
|
||||
Entity *entity;
|
||||
EntityInfo *enInfo;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < DUNGEON_MAX_POKEMON; i++) {
|
||||
entity = gDungeon->activePokemon[i];
|
||||
if (EntityIsValid(entity)) {
|
||||
enInfo = GetEntInfo(entity);
|
||||
if (enInfo->unkF3) {
|
||||
enInfo->unkF3 = FALSE;
|
||||
sub_80429A0(entity);
|
||||
if (!enInfo->isNotTeamMember) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
|
||||
DisplayDungeonLoggableMessageTrue(entity, *gPtrFeralFoundItemMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042818(u8 a0, bool8 a1)
|
||||
{
|
||||
Entity *en;
|
||||
|
||||
en = gDungeon->unk181e8.cameraTarget;
|
||||
if (en == NULL)
|
||||
en = GetLeader();
|
||||
|
||||
if (gUnknown_80F682C[a0] != 997)
|
||||
sub_80421C0(en, gUnknown_80F682C[a0]);
|
||||
|
||||
if (gUnknown_80F67EC[a0] < 0)
|
||||
return;
|
||||
|
||||
if (a1 && !IsBossFight())
|
||||
sub_804151C(en, gUnknown_80F67EC[a0], 0);
|
||||
else
|
||||
sub_804151C(en, gUnknown_80F680C[a0], 0);
|
||||
}
|
||||
|
||||
void sub_80428A0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x29, 1);
|
||||
}
|
||||
|
||||
void sub_80428B0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80428C4(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80428D8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80428EC(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_8042900(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD4 << 1, 0);
|
||||
}
|
||||
|
||||
void ShowVisualFlags(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x29, 0);
|
||||
}
|
||||
|
||||
void sub_8042920(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x48, 0);
|
||||
}
|
||||
|
||||
void sub_8042930(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD3 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8042940(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xC7 << 1, 0);
|
||||
}
|
||||
|
||||
void sub_8042950(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD8 << 1, 1);
|
||||
sub_803E708(0xA, 0x42);
|
||||
}
|
||||
|
||||
void sub_8042968(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD4 << 1, 0);
|
||||
}
|
||||
|
||||
void sub_8042978(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_804298C(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80429A0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x199, 0);
|
||||
}
|
||||
|
||||
void sub_80429B4(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1ab, 0);
|
||||
}
|
||||
|
||||
void sub_80429C8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x4, 1);
|
||||
}
|
||||
|
||||
void sub_80429D8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x8F << 1, 1);
|
||||
}
|
||||
|
||||
void sub_80429E8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x11d, 1);
|
||||
}
|
||||
|
||||
void sub_80429FC(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x19E, TRUE);
|
||||
sub_80421C0(NULL, 0xD4);
|
||||
}
|
||||
|
||||
void sub_8042A14(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x36, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A24(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x15, 1);
|
||||
}
|
||||
|
||||
void sub_8042A34(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x13E, FALSE);
|
||||
}
|
||||
|
||||
void sub_8042A44(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xDA << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8042A54(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x37, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A64(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x29, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A74(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x18, 1);
|
||||
}
|
||||
|
||||
void sub_8042A84(s16 param_1, Entity *entity, u32 param_3)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 r6;
|
||||
s32 param_1_s16;
|
||||
|
||||
param_1_s16 = param_1;
|
||||
|
||||
r6 = IntToF248_2(2).raw;
|
||||
if (sub_8042768(entity)) {
|
||||
sub_804151C(entity,param_1_s16,0);
|
||||
sub_803E708(param_3,0x42);
|
||||
do {
|
||||
if (entity->unk1C.raw > IntToF248_2(199.999).raw) break;
|
||||
DungeonRunFrameActions(0x42);
|
||||
entity->unk1C.raw += + r6;
|
||||
r6 += IntToF248_2(1).raw;
|
||||
iVar3 = (entity->pixelPos.y - entity->unk1C.raw) / 256;
|
||||
} while (-8 <= iVar3 - gDungeon->unk181e8.cameraPixelPos.y);
|
||||
entity->isVisible = 0;
|
||||
sub_804178C(0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042B0C(Entity *entity)
|
||||
{
|
||||
sub_8042A84(0x13e, entity, 5);
|
||||
}
|
||||
|
||||
void sub_8042B20(Entity *entity)
|
||||
{
|
||||
sub_8042A84(0x1BC, entity, 0xE);
|
||||
}
|
||||
|
||||
struct UnkStruct_203B414
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC[16];
|
||||
s32 unk4C[16];
|
||||
struct DungeonPos unk8C[16];
|
||||
};
|
||||
extern struct UnkStruct_203B414 *sUnknown_203B414;
|
||||
|
||||
extern const unkStruct_2039DB0 gUnknown_80F683C;
|
||||
|
||||
void sub_8042B34(s32 a0, s32 a1, s32 a2)
|
||||
{
|
||||
unkStruct_80416E0 spStruct;
|
||||
unkStruct_2039DB0 stack1C;
|
||||
s32 i;
|
||||
s32 r8 = 0;
|
||||
Entity *leader = xxx_call_GetLeader();
|
||||
sUnknown_203B414 = MemoryAlloc(sizeof(*sUnknown_203B414), 7);
|
||||
|
||||
sUnknown_203B414->unk0 = a0;
|
||||
sUnknown_203B414->unk8 = (a1 + 1) * 4;
|
||||
sub_800EE5C(gUnknown_80F6624[a0][0].unk0);
|
||||
sub_800EF64();
|
||||
DungeonRunFrameActions(0x46);
|
||||
sUnknown_203B414->unk4 = a2;
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
s32 rnd;
|
||||
|
||||
spStruct.unk0 = gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk0;
|
||||
spStruct.unk4 = i;
|
||||
spStruct.dir = 0;
|
||||
spStruct.x = leader->pixelPos.x / 256;
|
||||
spStruct.y = leader->pixelPos.y / 256;
|
||||
|
||||
rnd = RandInt(2);
|
||||
sUnknown_203B414->unk4C[i] = (gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk4 * 2) + rnd;
|
||||
sUnknown_203B414->unk8C[i].x = RandInt(240) + 152;
|
||||
sUnknown_203B414->unk8C[i].y = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24);
|
||||
|
||||
spStruct.unk10 = sUnknown_203B414->unk8C[i].x;
|
||||
spStruct.unk12 = sUnknown_203B414->unk8C[i].y;
|
||||
spStruct.unk14 = 4;
|
||||
spStruct.unk18 = 0xFFFF;
|
||||
stack1C = gUnknown_80F683C;
|
||||
sUnknown_203B414->unkC[i] = sub_800E890(&spStruct);
|
||||
|
||||
r8++;
|
||||
if (r8 >= 3 || gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk0 == 0) {
|
||||
r8 = 0;
|
||||
}
|
||||
|
||||
sub_800F15C(sub_800ECA4(spStruct.unk0)->effectId);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8042CC0(void)
|
||||
{
|
||||
s32 i;
|
||||
bool8 ret = FALSE;
|
||||
|
||||
if (sUnknown_203B414->unk4 != 0) {
|
||||
ret = TRUE;
|
||||
sUnknown_203B414->unk4--;
|
||||
}
|
||||
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
sUnknown_203B414->unk8C[i].x -= sUnknown_203B414->unk4C[i];
|
||||
if (sUnknown_203B414->unk8C[i].x <= -152) {
|
||||
if (sUnknown_203B414->unk4 > 0) {
|
||||
sUnknown_203B414->unk8C[i].x = 152;
|
||||
}
|
||||
else {
|
||||
sUnknown_203B414->unk8C[i].x = -152;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = TRUE;
|
||||
}
|
||||
sub_800E8AC(sUnknown_203B414->unkC[i], NULL, &sUnknown_203B414->unk8C[i], 0, NULL);
|
||||
}
|
||||
|
||||
sub_800E90C(&gDungeon->unk181e8.cameraPixelPos);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_8042D7C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (sUnknown_203B414 == NULL)
|
||||
return;
|
||||
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
if (sub_800E9A8(sUnknown_203B414->unkC[i])) {
|
||||
sub_800DC14(sUnknown_203B414->unkC[i]);
|
||||
}
|
||||
}
|
||||
sub_800DBBC();
|
||||
MemoryFree(sUnknown_203B414);
|
||||
sUnknown_203B414 = NULL;
|
||||
}
|
||||
|
||||
void sub_8042DD4(s32 a0, Entity *a1, s32 a2)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 == -1) {
|
||||
strPtr->unk0 = a0;
|
||||
strPtr->unkC = a1;
|
||||
strPtr->unk4 = a2;
|
||||
strPtr->unk8 = sub_800E6D8(a0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static UNUSED bool32 sub_8042E1C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 != -1 && sub_800E9A8(strPtr->unk0)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8042E5C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 >= 0 && !sub_800E9A8(strPtr->unk0)) {
|
||||
strPtr->unk0 = -1;
|
||||
strPtr->unkC = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042E98(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
strPtr->unk0 = -1;
|
||||
strPtr->unk4 = 0;
|
||||
strPtr->unkC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042EC8(Entity *a0, s32 a1)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 >= 0 && strPtr->unkC == a0) {
|
||||
DungeonPos sp8 = {a0->pixelPos.x / 256, a0->pixelPos.y / 256};
|
||||
DungeonPos sp4 = {0};
|
||||
EntityInfo *entInfo = GetEntInfo(a0);
|
||||
|
||||
if (strPtr->unk8 != -1) {
|
||||
sub_800569C(&sp4,
|
||||
&a0->axObj,
|
||||
strPtr->unk8);
|
||||
}
|
||||
|
||||
sub_800EB24(strPtr->unk0, &sp8, &sp4,a1, entInfo->action.direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,426 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "code_800DAC0.h"
|
||||
#include "code_800ED38.h"
|
||||
#include "code_803E46C.h"
|
||||
#include "code_803E668.h"
|
||||
#include "code_8041AD0.h"
|
||||
#include "code_804267C.h"
|
||||
#include "code_806CD90.h"
|
||||
#include "dungeon.h"
|
||||
#include "code_8042B34.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_map.h"
|
||||
#include "dungeon_message.h"
|
||||
#include "dungeon_music.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "items.h"
|
||||
#include "sprite.h"
|
||||
|
||||
extern const u16 gUnknown_80F67DC[4];
|
||||
extern const u16 gUnknown_80F67E4[4];
|
||||
extern const s32 gUnknown_80F67EC[8];
|
||||
extern const u32 gUnknown_80F680C[8];
|
||||
extern const u16 gUnknown_80F682C[8];
|
||||
extern const u8 *gPtrFeralFoundItemMessage[];
|
||||
|
||||
extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2);
|
||||
extern void sub_804178C(u32);
|
||||
extern void sub_80416A4(DungeonPos *r0, u32 r1, bool8 r2);
|
||||
extern void sub_80429A0(Entity *);
|
||||
extern void sub_8042B34(u32, u32, u32);
|
||||
extern bool8 sub_8042CC0(void);
|
||||
extern void sub_8042D7C(void);
|
||||
extern u8 GetFloorType(void);
|
||||
extern bool8 sub_8045888(Entity *);
|
||||
extern s32 sub_80416E0(PixelPos*, u32, bool8);
|
||||
extern u32 sub_8041764(unkStruct_80416E0 *, bool8);
|
||||
extern u32 sub_800E49C();
|
||||
extern void sub_800EF40(u8 r0, u8 r1);
|
||||
|
||||
void sub_8042390(Entity *entity, Item *item)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 counter;
|
||||
u8 id;
|
||||
u32 uVar6;
|
||||
DungeonPos asStack_24[4];
|
||||
DungeonPos local_14;
|
||||
|
||||
if (sub_8042768(entity)) {
|
||||
id = !ItemSticky(item) ? item->id : ITEM_NOTHING;
|
||||
sub_800EF40(id, 0);
|
||||
sub_800EF64();
|
||||
sub_803E708(4,0x42);
|
||||
local_14.x = (entity->pixelPos).x / 256;
|
||||
local_14.y = (entity->pixelPos).y / 256;
|
||||
|
||||
sVar1 = (local_14.y - gDungeon->unk181e8.cameraPixelPos.y) / 2 + 1;
|
||||
sub_8005700(asStack_24,&entity->axObj);
|
||||
uVar6 = sub_800E49C(id,&local_14,asStack_24,0,sVar1);
|
||||
for (counter = 0; counter < 1000; counter++) {
|
||||
DungeonRunFrameActions(0x42);
|
||||
if (!sub_800E9A8(uVar6)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804245C(Entity *entity, Item *item)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 counter;
|
||||
u8 id;
|
||||
u32 uVar6;
|
||||
DungeonPos asStack_24[4];
|
||||
DungeonPos local_14;
|
||||
|
||||
if (sub_8042768(entity)) {
|
||||
id = !ItemSticky(item) ? item->id : ITEM_NOTHING;
|
||||
sub_800EF64();
|
||||
sub_803E708(4,0x42);
|
||||
local_14.x = (entity->pixelPos).x / 256;
|
||||
local_14.y = (entity->pixelPos).y / 256;
|
||||
|
||||
sVar1 = (local_14.y - gDungeon->unk181e8.cameraPixelPos.y) / 2 + 1;
|
||||
sub_8005700(asStack_24,&entity->axObj);
|
||||
uVar6 = sub_800E49C(id,&local_14,asStack_24,1,sVar1);
|
||||
for (counter = 0; counter < 1000; counter++) {
|
||||
DungeonRunFrameActions(0x42);
|
||||
if (!sub_800E9A8(uVar6)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
s32 sub_8042520(Entity *a0)
|
||||
{
|
||||
s32 i;
|
||||
s32 uVar4;
|
||||
DungeonPos pos;
|
||||
u32 dir;
|
||||
s32 iVar8;
|
||||
unkStruct_80416E0 local_58;
|
||||
unkStruct_2039DB0 u203; // Unused
|
||||
PixelPos local_2c;
|
||||
|
||||
if (sub_8045888(a0)) {
|
||||
dir = GetEntInfo(a0)->action.direction;
|
||||
pos.x = a0->pixelPos.x / 0x100;
|
||||
pos.y = a0->pixelPos.y / 0x100;
|
||||
|
||||
iVar8 = (pos.y - gDungeon->unk181e8.cameraPixelPos.y) / 2;
|
||||
local_58.unk0 = 357;
|
||||
local_58.unk4 = 0;
|
||||
local_58.dir = dir;
|
||||
local_58.x = pos.x;
|
||||
local_58.y = pos.y;
|
||||
local_58.unk10 = 0;
|
||||
local_58.unk12 = 0;
|
||||
local_58.unk14 = -1;
|
||||
local_58.unk18 = iVar8;
|
||||
sub_8004E8C(&u203);
|
||||
uVar4 = sub_8041764(&local_58, 0);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
sub_800E8AC(uVar4, &pos, 0, iVar8, 0);
|
||||
DungeonRunFrameActions(66);
|
||||
pos.x += gAdjacentTileOffsets[dir].x * 4;
|
||||
pos.y += gAdjacentTileOffsets[dir].y * 4;
|
||||
iVar8 = (pos.y - gDungeon->unk181e8.cameraPixelPos.y) / 2;
|
||||
}
|
||||
|
||||
sub_800DBBC();
|
||||
local_2c.x = pos.x * 0x100;
|
||||
local_2c.y = pos.y * 0x100;
|
||||
uVar4 = sub_80416E0(&local_2c, 416, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
uVar4 = -1;
|
||||
}
|
||||
return uVar4;
|
||||
}
|
||||
|
||||
// This func plays the appropriate ascend/descend SFX for stairs depending on the direction
|
||||
void PlayStairsSound(void)
|
||||
{
|
||||
u32 songIndex;
|
||||
|
||||
songIndex = 997;
|
||||
|
||||
switch (GetFloorType()) {
|
||||
case 0:
|
||||
default:
|
||||
songIndex = IsStairDirectionUp(gDungeon->unk644.dungeonLocation.id) ? 340 : 341;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
|
||||
PlaySoundEffect(songIndex);
|
||||
}
|
||||
|
||||
void sub_80426C8(u32 a0, u32 a1)
|
||||
{
|
||||
if (a1 == 3)
|
||||
DungeonStartNewBGM(0);
|
||||
|
||||
if (a0 != 4)
|
||||
PlaySoundEffect(gUnknown_80F67DC[a1]);
|
||||
else
|
||||
PlaySoundEffect(gUnknown_80F67E4[a1]);
|
||||
|
||||
sub_8042B34(a0, a1, 0x80);
|
||||
|
||||
while (sub_8042CC0())
|
||||
DungeonRunFrameActions(0x46);
|
||||
|
||||
sub_8042D7C();
|
||||
LoadDungeonMapPalette();
|
||||
sub_8052210(1);
|
||||
}
|
||||
|
||||
void sub_8042730(Entity *a0, void *unused)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sub_806CDD4(a0, 8, 8);
|
||||
for (i = 0; i < 100; i++) {
|
||||
DungeonRunFrameActions(0x51);
|
||||
if ((a0->axObj.axdata.sub1.unk10 & 3) != 0 || a0->axObj.unk43_animId2 != 8)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8042768(Entity* pokemon)
|
||||
{
|
||||
if (!pokemon->isVisible)
|
||||
return FALSE;
|
||||
if (gDungeon->unk181e8.blinded) {
|
||||
if (gDungeon->unk181e8.cameraTarget == pokemon)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
return sub_8045888(pokemon);
|
||||
}
|
||||
|
||||
void sub_80427AC(void)
|
||||
{
|
||||
Entity *entity;
|
||||
EntityInfo *enInfo;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 20; i++) {
|
||||
entity = gDungeon->activePokemon[i];
|
||||
if (EntityIsValid(entity)) {
|
||||
enInfo = GetEntInfo(entity);
|
||||
if (enInfo->unkF3) {
|
||||
enInfo->unkF3 = FALSE;
|
||||
sub_80429A0(entity);
|
||||
if (!enInfo->isNotTeamMember) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
|
||||
DisplayDungeonLoggableMessageTrue(entity, *gPtrFeralFoundItemMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042818(u8 a0, bool8 a1)
|
||||
{
|
||||
Entity *en;
|
||||
|
||||
en = gDungeon->unk181e8.cameraTarget;
|
||||
if (en == NULL)
|
||||
en = GetLeader();
|
||||
|
||||
if (gUnknown_80F682C[a0] != 997)
|
||||
sub_80421C0(en, gUnknown_80F682C[a0]);
|
||||
|
||||
if (gUnknown_80F67EC[a0] < 0)
|
||||
return;
|
||||
|
||||
if (a1 && !IsBossFight())
|
||||
sub_804151C(en, gUnknown_80F67EC[a0], 0);
|
||||
else
|
||||
sub_804151C(en, gUnknown_80F680C[a0], 0);
|
||||
}
|
||||
|
||||
void sub_80428A0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x29, 1);
|
||||
}
|
||||
|
||||
void sub_80428B0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
|
||||
void sub_80428C4(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
|
||||
void sub_80428D8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80428EC(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_8042900(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD4 << 1, 0);
|
||||
}
|
||||
|
||||
void ShowVisualFlags(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x29, 0);
|
||||
}
|
||||
|
||||
void sub_8042920(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x48, 0);
|
||||
}
|
||||
|
||||
void sub_8042930(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD3 << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8042940(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xC7 << 1, 0);
|
||||
}
|
||||
|
||||
void sub_8042950(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD8 << 1, 1);
|
||||
sub_803E708(0xA, 0x42);
|
||||
}
|
||||
|
||||
void sub_8042968(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xD4 << 1, 0);
|
||||
}
|
||||
|
||||
void sub_8042978(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_804298C(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1a9, 0);
|
||||
}
|
||||
|
||||
void sub_80429A0(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x199, 0);
|
||||
}
|
||||
|
||||
void sub_80429B4(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x1ab, 0);
|
||||
}
|
||||
|
||||
void sub_80429C8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x4, 1);
|
||||
}
|
||||
|
||||
void sub_80429D8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x8F << 1, 1);
|
||||
}
|
||||
|
||||
void sub_80429E8(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x11d, 1);
|
||||
}
|
||||
|
||||
void sub_80429FC(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x19E, TRUE);
|
||||
sub_80421C0(NULL, 0xD4);
|
||||
}
|
||||
|
||||
void sub_8042A14(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x36, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A24(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x15, 1);
|
||||
}
|
||||
|
||||
void sub_8042A34(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x13E, FALSE);
|
||||
}
|
||||
|
||||
void sub_8042A44(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0xDA << 1, 1);
|
||||
}
|
||||
|
||||
void sub_8042A54(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x37, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A64(DungeonPos *r0)
|
||||
{
|
||||
sub_80416A4(r0, 0x29, TRUE);
|
||||
}
|
||||
|
||||
void sub_8042A74(Entity *r0)
|
||||
{
|
||||
sub_804151C(r0, 0x18, 1);
|
||||
}
|
||||
|
||||
void sub_8042A84(s16 param_1, Entity *entity, u32 param_3)
|
||||
{
|
||||
s32 iVar3;
|
||||
s32 r6;
|
||||
s32 param_1_s16;
|
||||
|
||||
param_1_s16 = param_1;
|
||||
|
||||
r6 = IntToF248_2(2).raw;
|
||||
if (sub_8042768(entity)) {
|
||||
sub_804151C(entity,param_1_s16,0);
|
||||
sub_803E708(param_3,0x42);
|
||||
do {
|
||||
if (entity->unk1C.raw > IntToF248_2(199.999).raw) break;
|
||||
DungeonRunFrameActions(0x42);
|
||||
entity->unk1C.raw += + r6;
|
||||
r6 += IntToF248_2(1).raw;
|
||||
iVar3 = (entity->pixelPos.y - entity->unk1C.raw) / 256;
|
||||
} while (-8 <= iVar3 - gDungeon->unk181e8.cameraPixelPos.y);
|
||||
entity->isVisible = 0;
|
||||
sub_804178C(0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042B0C(Entity *entity)
|
||||
{
|
||||
sub_8042A84(0x13e, entity, 5);
|
||||
}
|
||||
|
||||
void sub_8042B20(Entity *entity)
|
||||
{
|
||||
sub_8042A84(0x1BC, entity, 0xE);
|
||||
}
|
||||
@@ -39,10 +39,8 @@
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_serializer.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "file_system.h"
|
||||
#include "memory.h"
|
||||
#include "moves.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
@@ -51,210 +49,12 @@
|
||||
#include "text_3.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern void sub_800F15C(s32);
|
||||
|
||||
struct UnkStruct_203B414
|
||||
{
|
||||
s32 unk0;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
s32 unkC[16];
|
||||
s32 unk4C[16];
|
||||
struct DungeonPos unk8C[16];
|
||||
};
|
||||
|
||||
EWRAM_INIT DungeonPos gPlayerDotMapPosition = {100, 100};
|
||||
static EWRAM_INIT struct UnkStruct_203B414 *sUnknown_203B414 = NULL;
|
||||
EWRAM_INIT void *sUnknown_203B414 = NULL; // TODO: fix location
|
||||
EWRAM_INIT Dungeon *gDungeon = NULL;
|
||||
EWRAM_INIT u8 *gSerializedData_203B41C = NULL;
|
||||
|
||||
struct UnkStruct_80F6624
|
||||
{
|
||||
s16 unk0;
|
||||
s32 unk4;
|
||||
};
|
||||
|
||||
extern const struct UnkStruct_80F6624 gUnknown_80F6624[][3];
|
||||
|
||||
extern const unkStruct_2039DB0 gUnknown_80F683C;
|
||||
|
||||
// These functions are not part of dungeon's overlay5
|
||||
|
||||
void sub_8042B34(s32 a0, s32 a1, s32 a2)
|
||||
{
|
||||
unkStruct_80416E0 spStruct;
|
||||
unkStruct_2039DB0 stack1C;
|
||||
s32 i;
|
||||
s32 r8 = 0;
|
||||
Entity *leader = xxx_call_GetLeader();
|
||||
sUnknown_203B414 = MemoryAlloc(sizeof(*sUnknown_203B414), 7);
|
||||
|
||||
sUnknown_203B414->unk0 = a0;
|
||||
sUnknown_203B414->unk8 = (a1 + 1) * 4;
|
||||
sub_800EE5C(gUnknown_80F6624[a0][0].unk0);
|
||||
sub_800EF64();
|
||||
DungeonRunFrameActions(0x46);
|
||||
sUnknown_203B414->unk4 = a2;
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
s32 rnd;
|
||||
|
||||
spStruct.unk0 = gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk0;
|
||||
spStruct.unk4 = i;
|
||||
spStruct.dir = 0;
|
||||
spStruct.x = leader->pixelPos.x / 256;
|
||||
spStruct.y = leader->pixelPos.y / 256;
|
||||
|
||||
rnd = RandInt(2);
|
||||
sUnknown_203B414->unk4C[i] = (gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk4 * 2) + rnd;
|
||||
sUnknown_203B414->unk8C[i].x = RandInt(240) + 152;
|
||||
sUnknown_203B414->unk8C[i].y = RandInt(8 + (i * 2)) - (((i - (i / 4 * 4)) * 40) - 24);
|
||||
|
||||
spStruct.unk10 = sUnknown_203B414->unk8C[i].x;
|
||||
spStruct.unk12 = sUnknown_203B414->unk8C[i].y;
|
||||
spStruct.unk14 = 4;
|
||||
spStruct.unk18 = 0xFFFF;
|
||||
stack1C = gUnknown_80F683C;
|
||||
sUnknown_203B414->unkC[i] = sub_800E890(&spStruct);
|
||||
|
||||
r8++;
|
||||
if (r8 >= 3 || gUnknown_80F6624[sUnknown_203B414->unk0][r8].unk0 == 0) {
|
||||
r8 = 0;
|
||||
}
|
||||
|
||||
sub_800F15C(sub_800ECA4(spStruct.unk0)->effectId);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8042CC0(void)
|
||||
{
|
||||
s32 i;
|
||||
bool8 ret = FALSE;
|
||||
|
||||
if (sUnknown_203B414->unk4 != 0) {
|
||||
ret = TRUE;
|
||||
sUnknown_203B414->unk4--;
|
||||
}
|
||||
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
sUnknown_203B414->unk8C[i].x -= sUnknown_203B414->unk4C[i];
|
||||
if (sUnknown_203B414->unk8C[i].x <= -152) {
|
||||
if (sUnknown_203B414->unk4 > 0) {
|
||||
sUnknown_203B414->unk8C[i].x = 152;
|
||||
}
|
||||
else {
|
||||
sUnknown_203B414->unk8C[i].x = -152;
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret = TRUE;
|
||||
}
|
||||
sub_800E8AC(sUnknown_203B414->unkC[i], NULL, &sUnknown_203B414->unk8C[i], 0, NULL);
|
||||
}
|
||||
|
||||
sub_800E90C(&gDungeon->unk181e8.cameraPixelPos);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_8042D7C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (sUnknown_203B414 == NULL)
|
||||
return;
|
||||
|
||||
for (i = 0; i < sUnknown_203B414->unk8; i++) {
|
||||
if (sub_800E9A8(sUnknown_203B414->unkC[i])) {
|
||||
sub_800DC14(sUnknown_203B414->unkC[i]);
|
||||
}
|
||||
}
|
||||
sub_800DBBC();
|
||||
MemoryFree(sUnknown_203B414);
|
||||
sUnknown_203B414 = NULL;
|
||||
}
|
||||
|
||||
extern s32 sub_800E6D8(s32);
|
||||
|
||||
// TODO: Figure out if a new file should start here
|
||||
void sub_8042DD4(s32 a0, Entity *a1, s32 a2)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 == -1) {
|
||||
strPtr->unk0 = a0;
|
||||
strPtr->unkC = a1;
|
||||
strPtr->unk4 = a2;
|
||||
strPtr->unk8 = sub_800E6D8(a0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED bool32 sub_8042E1C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 != -1 && sub_800E9A8(strPtr->unk0)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8042E5C(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 >= 0 && !sub_800E9A8(strPtr->unk0)) {
|
||||
strPtr->unk0 = -1;
|
||||
strPtr->unkC = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8042E98(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
strPtr->unk0 = -1;
|
||||
strPtr->unk4 = 0;
|
||||
strPtr->unkC = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
extern void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3,
|
||||
s32 param_4, s32 param_5);
|
||||
|
||||
void sub_8042EC8(Entity *a0, s32 a1)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct unkStruct_Dungeon5C4_sub *strPtr = &gDungeon->unk5C4[i];
|
||||
if (strPtr->unk0 >= 0 && strPtr->unkC == a0) {
|
||||
DungeonPos sp8 = {a0->pixelPos.x / 256, a0->pixelPos.y / 256};
|
||||
DungeonPos sp4 = {0};
|
||||
EntityInfo *entInfo = GetEntInfo(a0);
|
||||
|
||||
if (strPtr->unk8 != -1) {
|
||||
sub_800569C(&sp4,
|
||||
&a0->axObj,
|
||||
strPtr->unk8);
|
||||
}
|
||||
|
||||
sub_800EB24(strPtr->unk0, &sp8, &sp4,a1, entInfo->action.direction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern u8 gUnknown_203B40C;
|
||||
|
||||
|
||||
@@ -314,6 +114,7 @@ extern void sub_807FA18(void);
|
||||
extern void sub_806A974(void);
|
||||
extern void sub_806CF60(void);
|
||||
extern void sub_8068F80(void);
|
||||
extern void sub_8042E98(void);
|
||||
extern bool8 sub_8044B28(void);
|
||||
extern bool8 sub_8043ED0(bool8);
|
||||
extern void sub_806A914(bool8 a0, bool8 a1, bool8 showRunAwayEffect);
|
||||
|
||||
Reference in New Issue
Block a user