mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-23 17:24:26 -05:00
Kill code_80869E4.s
This commit is contained in:
@@ -417,6 +417,7 @@ _08002A68:
|
||||
bx r1
|
||||
thumb_func_end sub_8002984
|
||||
|
||||
@ https://decomp.me/scratch/HXC9z
|
||||
thumb_func_start sub_8002A70
|
||||
sub_8002A70:
|
||||
push {r4,lr}
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_80869E4
|
||||
sub_80869E4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r7, r0, 0
|
||||
mov r9, r1
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r8, r2
|
||||
lsls r3, 24
|
||||
asrs r6, r3, 24
|
||||
ldr r0, [r7, 0x70]
|
||||
adds r0, 0x46
|
||||
movs r4, 0
|
||||
ldrsb r4, [r0, r4]
|
||||
cmp r4, r6
|
||||
beq _08086A30
|
||||
adds r5, r0, 0
|
||||
_08086A08:
|
||||
adds r0, r4, 0
|
||||
adds r1, r6, 0
|
||||
mov r2, r8
|
||||
bl sub_8002A70
|
||||
lsls r0, 24
|
||||
asrs r4, r0, 24
|
||||
movs r0, 0x7
|
||||
ands r0, r4
|
||||
strb r0, [r5]
|
||||
ldrb r1, [r5]
|
||||
adds r0, r7, 0
|
||||
bl sub_806CE68
|
||||
mov r0, r9
|
||||
movs r1, 0x46
|
||||
bl sub_803E708
|
||||
cmp r4, r6
|
||||
bne _08086A08
|
||||
_08086A30:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80869E4
|
||||
|
||||
.align 2,0
|
||||
@@ -279,6 +279,7 @@ _0800177A:
|
||||
bx r1
|
||||
thumb_func_end sub_8001658
|
||||
|
||||
@ https://decomp.me/scratch/xF3HH
|
||||
thumb_func_start sub_8001784
|
||||
sub_8001784:
|
||||
push {r4,r5,lr}
|
||||
|
||||
35
include/code_80869E4.h
Normal file
35
include/code_80869E4.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef GUARD_CODE_80869E4_H
|
||||
#define GUARD_CODE_80869E4_H
|
||||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
struct unkStruct_202F3D0
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
};
|
||||
|
||||
void SpriteShockEffect(Entity *);
|
||||
|
||||
void sub_8086448(void);
|
||||
void sub_8086500(void);
|
||||
void sub_808654C(void);
|
||||
void sub_8086598(void);
|
||||
void sub_80865E8(void);
|
||||
void sub_808663C(void);
|
||||
void sub_8086690(void);
|
||||
void sub_80866C4(const u8 *);
|
||||
void sub_8086738(void);
|
||||
void sub_8086764(void);
|
||||
void sub_8086794(void);
|
||||
void sub_80867F4(void);
|
||||
void sub_808680C(void);
|
||||
void sub_808682C(void);
|
||||
|
||||
void sub_80869E4(struct Entity *, s32, u8, s8);
|
||||
|
||||
#endif // GUARD_CODE_80869E4_H
|
||||
@@ -246,7 +246,6 @@ SECTIONS {
|
||||
src/dungeon_util_1.o(.text);
|
||||
asm/code_8085B0C.o(.text);
|
||||
src/code_80869E4.o(.text);
|
||||
asm/code_80869E4.o(.text);
|
||||
src/code_8086A3C.o(.text);
|
||||
asm/code_8086A3C.o(.text);
|
||||
src/code_8057824_1.o(.text);
|
||||
|
||||
1132
src/code_8057824_1.c
1132
src/code_8057824_1.c
File diff suppressed because it is too large
Load Diff
@@ -1,36 +1,28 @@
|
||||
#include "global.h"
|
||||
#include "code_806CD90.h"
|
||||
#include "code_80869E4.h"
|
||||
#include "constants/direction.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "random.h"
|
||||
|
||||
struct unkStruct_202F3D0
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
};
|
||||
// This file may originally be merged with code_8086A3C.c and code_8057824_1.c
|
||||
|
||||
// ???
|
||||
extern u32 gUnknown_202EDC8;
|
||||
EWRAM_DATA struct unkStruct_202F3D0 gUnknown_202F3D0;
|
||||
|
||||
// data_8107010.s
|
||||
extern u32 gUnknown_8107314[];
|
||||
|
||||
s8 sub_8002984(s8, u8);
|
||||
void sub_803E708(u32, u32);
|
||||
void sub_80869E4(Entity *entity, u32, u8, s8);
|
||||
extern void sub_803E46C(u32);
|
||||
extern void sub_803E9D0(void);
|
||||
extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32);
|
||||
extern void PlaySoundEffect(u32);
|
||||
void SpriteLookAroundEffect(Entity *entity);
|
||||
extern void DisplayDungeonDialogue(u32);
|
||||
void sub_8086494();
|
||||
|
||||
extern u32 gUnknown_8107314[];
|
||||
extern u32 gUnknown_202EDC8;
|
||||
extern void DisplayDungeonDialogue(const u8 *);
|
||||
|
||||
|
||||
extern void sub_8085EB0(void);
|
||||
@@ -39,7 +31,6 @@ extern void sub_80855E4(void *);
|
||||
extern s32 GetCameraXPos(void);
|
||||
extern s32 GetCameraYPos(void);
|
||||
extern void sub_803F878(u32, u32);
|
||||
extern void sub_8086384(Entity *entity);
|
||||
extern void IncreaseEntityPixelPos(Entity *, u32, u32);
|
||||
extern void sub_804535C(Entity *, Position32 *);
|
||||
extern void sub_8086A54(Entity *);
|
||||
@@ -49,11 +40,11 @@ extern void sub_80861F8(u32, Entity *, u32);
|
||||
|
||||
void SpriteShockEffect(Entity *entity)
|
||||
{
|
||||
PlaySoundEffect(0xE8 << 1);
|
||||
sub_80861F8(0x143, entity, 0);
|
||||
PlaySoundEffect(464);
|
||||
sub_80861F8(323, entity, 0);
|
||||
}
|
||||
|
||||
void sub_80862DC(Entity *entity)
|
||||
static void sub_80862DC(Entity *entity)
|
||||
{
|
||||
Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
@@ -64,7 +55,7 @@ void sub_80862DC(Entity *entity)
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
||||
void sub_8086310(Entity *entity)
|
||||
static void sub_8086310(Entity *entity)
|
||||
{
|
||||
Position32 pos;
|
||||
pos.x = entity->pixelPos.x;
|
||||
@@ -76,7 +67,7 @@ void sub_8086310(Entity *entity)
|
||||
entity->isVisible = 0;
|
||||
}
|
||||
|
||||
void sub_8086348(Entity *entity)
|
||||
static void sub_8086348(Entity *entity)
|
||||
{
|
||||
Position32 pos;
|
||||
pos.x = entity->pixelPos.x + 0x7800;
|
||||
@@ -87,7 +78,7 @@ void sub_8086348(Entity *entity)
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
||||
void sub_8086384(Entity *entity)
|
||||
static void sub_8086384(Entity *entity)
|
||||
{
|
||||
Position32 pos;
|
||||
pos.x = entity->pixelPos.x + 0x7800;
|
||||
@@ -98,280 +89,276 @@ void sub_8086384(Entity *entity)
|
||||
sub_8086A54(entity);
|
||||
}
|
||||
|
||||
void sub_80863B8(Entity *entity)
|
||||
static void sub_80863B8(Entity *entity)
|
||||
{
|
||||
sub_806CDD4(entity, 0, DIRECTION_NORTH);
|
||||
}
|
||||
|
||||
void sub_80863C8(Entity *entity)
|
||||
static void sub_80863C8(Entity *entity)
|
||||
{
|
||||
sub_806CDD4(entity, 0, DIRECTION_SOUTH);
|
||||
}
|
||||
|
||||
void sub_80863D8(Entity *entity)
|
||||
static void sub_80863D8(Entity *entity)
|
||||
{
|
||||
sub_806CDD4(entity, 0, DIRECTION_WEST);
|
||||
}
|
||||
|
||||
void sub_80863E8(Entity *entity)
|
||||
static void sub_80863E8(Entity *entity)
|
||||
{
|
||||
sub_806CDD4(entity, 6, DIRECTION_NORTH);
|
||||
}
|
||||
|
||||
void sub_80863F8(Entity *entity)
|
||||
static void sub_80863F8(Entity *entity)
|
||||
{
|
||||
sub_806CE68(entity, DIRECTION_NORTH);
|
||||
}
|
||||
|
||||
void sub_8086404(Entity *entity)
|
||||
static void sub_8086404(Entity *entity)
|
||||
{
|
||||
sub_806CE68(entity, DIRECTION_WEST);
|
||||
}
|
||||
|
||||
void sub_8086410(Entity *entity)
|
||||
static void sub_8086410(Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, 0, -0x100);
|
||||
}
|
||||
|
||||
void sub_8086424(Entity *entity)
|
||||
static void sub_8086424(Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, 0, 0x100);
|
||||
}
|
||||
|
||||
void sub_8086434(Entity *entity)
|
||||
static void sub_8086434(Entity *entity)
|
||||
{
|
||||
IncreaseEntityPixelPos(entity, -0x100, 0);
|
||||
}
|
||||
|
||||
void sub_8086448(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_80862DC);
|
||||
|
||||
for(index = 0; index < 0x38; index++)
|
||||
{
|
||||
for (i = 0; i < 56; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
YPos = GetCameraYPos();
|
||||
YPos += (0x80 << 1);
|
||||
YPos += 0x100;
|
||||
sub_803F878(XPos, YPos);
|
||||
sub_80855E4(sub_8086410);
|
||||
sub_803E46C(0x46);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_80863F8);
|
||||
}
|
||||
|
||||
void sub_8086494(void)
|
||||
static void sub_8086494(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
sub_8085930(DIRECTION_NORTHEAST);
|
||||
sub_803E708(4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_8085930(DIRECTION_EAST);
|
||||
sub_803E708(4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_8085930(DIRECTION_SOUTHEAST);
|
||||
sub_803E708(4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_8085930(DIRECTION_SOUTH);
|
||||
sub_803E708(4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_80855E4(sub_80863C8);
|
||||
for(index = 0; index < 0x90; index++)
|
||||
{
|
||||
|
||||
for (i = 0; i < 144; i++) {
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_8086310);
|
||||
}
|
||||
|
||||
void sub_8086500(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_8086348);
|
||||
|
||||
for(index = 0; index < 0x48; index++)
|
||||
{
|
||||
for (i = 0; i < 72; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
XPos += (0x80 << 1);
|
||||
XPos += 0x100;
|
||||
YPos = GetCameraYPos();
|
||||
sub_803F878(XPos, YPos);
|
||||
sub_80855E4(sub_8086434);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_8086404);
|
||||
}
|
||||
|
||||
void sub_808654C(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_8086384);
|
||||
|
||||
for(index = 0; index < 0x78; index++)
|
||||
{
|
||||
for (i = 0; i < 120; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
XPos += (0x80 << 1);
|
||||
XPos += 0x100;
|
||||
YPos = GetCameraYPos();
|
||||
sub_803F878(XPos, YPos);
|
||||
sub_80855E4(sub_8086434);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_8086404);
|
||||
}
|
||||
|
||||
void sub_8086598(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_80863B8);
|
||||
|
||||
for(index = 0; index < 0x18; index++)
|
||||
{
|
||||
for (i = 0; i < 24; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
YPos = GetCameraYPos();
|
||||
sub_803F878(XPos, YPos + (0xffffff00));
|
||||
sub_803F878(XPos, YPos - 0x100);
|
||||
sub_80855E4(sub_8086410);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_80863F8);
|
||||
}
|
||||
|
||||
void sub_80865E8(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_80863E8);
|
||||
|
||||
for(index = 0; index < 0xC; index++)
|
||||
{
|
||||
for (i = 0; i < 12; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
YPos = GetCameraYPos();
|
||||
sub_803F878(XPos, YPos + (0x80 << 2));
|
||||
sub_803F878(XPos, YPos + 0x200);
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_80863F8);
|
||||
}
|
||||
|
||||
void sub_808663C(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
u32 XPos;
|
||||
u32 YPos;
|
||||
|
||||
sub_80855E4(sub_80863E8);
|
||||
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
for (i = 0; i < 16; i++) {
|
||||
XPos = GetCameraXPos();
|
||||
YPos = GetCameraYPos();
|
||||
sub_803F878(XPos, YPos + (0x80 << 2));
|
||||
sub_803F878(XPos, YPos + 0x200);
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_80855E4(sub_8086424);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_80863F8);
|
||||
}
|
||||
|
||||
|
||||
void sub_8086690(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
sub_80855E4(sub_80863D8);
|
||||
|
||||
for(index = 0; index < 0x30; index++)
|
||||
{
|
||||
for (i = 0; i < 48; i++) {
|
||||
sub_80855E4(sub_8086434);
|
||||
sub_803E46C(0x46);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_80855E4(sub_8086404);
|
||||
}
|
||||
|
||||
|
||||
void sub_80866C4(u32 dialogue)
|
||||
void sub_80866C4(const u8 *dialogue)
|
||||
{
|
||||
|
||||
SpriteLookAroundEffect(xxx_call_GetLeader());
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_803E708(10, 70);
|
||||
DisplayDungeonDialogue(dialogue);
|
||||
sub_803E708(0xA, 0x46);
|
||||
sub_803E708(10, 70);
|
||||
sub_8086494();
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
|
||||
void sub_80866FC(void)
|
||||
UNUSED static void sub_80866FC(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
for(index = 0; index >= -0xFA; index -= 0xA)
|
||||
{
|
||||
SetDungeonBGColorRGB(index, index, index, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
for (i = 0; i >= -250; i -= 10) {
|
||||
SetDungeonBGColorRGB(i, i, i, 1, 0);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_808627C(void)
|
||||
UNUSED static void sub_808627C(void)
|
||||
{
|
||||
sub_803E748();
|
||||
}
|
||||
|
||||
void sub_8086738(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
for(index = 0; index < 0xFA; index += 0xA)
|
||||
{
|
||||
SetDungeonBGColorRGB(index, index, index, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
for (i = 0; i < 250; i += 10) {
|
||||
SetDungeonBGColorRGB(i, i, i, 1, 0);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8086764(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
for(index = 0xFA; index >= 0; index -= 5)
|
||||
{
|
||||
SetDungeonBGColorRGB(index, index, index, 1, 0);
|
||||
sub_803E46C(0x46);
|
||||
for (i = 250; i >= 0; i -= 5) {
|
||||
SetDungeonBGColorRGB(i, i, i, 1, 0);
|
||||
sub_803E46C(70);
|
||||
}
|
||||
|
||||
sub_8085EB0();
|
||||
}
|
||||
|
||||
void sub_8086794(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 i;
|
||||
|
||||
gUnknown_202EDC8 = 0;
|
||||
|
||||
for(index = 0; index < 0xC8; index++)
|
||||
{
|
||||
for (i = 0; i < 200; i++) {
|
||||
SetDungeonBGColorRGB(0, 0, 0, 1, 0);
|
||||
sub_803E9D0();
|
||||
sub_803E46C(0x46);
|
||||
if((index & 3) == 0)
|
||||
{
|
||||
sub_803E46C(70);
|
||||
|
||||
if ((i & 3) == 0) {
|
||||
gUnknown_202EDC8++;
|
||||
if(gUnknown_202EDC8 == 0x1F)
|
||||
if (gUnknown_202EDC8 == 31)
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_803E46C(0x46);
|
||||
|
||||
sub_803E46C(70);
|
||||
gDungeon->unk7 = 0;
|
||||
}
|
||||
|
||||
@@ -388,15 +375,27 @@ void sub_80867F4(void)
|
||||
void sub_808680C(void)
|
||||
{
|
||||
gUnknown_202F3D0.unk0 = 1;
|
||||
if(gUnknown_202F3D0.unk3 != 0)
|
||||
PlaySoundEffect(0x1F9);
|
||||
if (gUnknown_202F3D0.unk3 != 0)
|
||||
PlaySoundEffect(505);
|
||||
}
|
||||
|
||||
void sub_808682C(u8 entity)
|
||||
void sub_808682C(void)
|
||||
{
|
||||
gUnknown_202F3D0.unk0 = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// CONTINUE HEREEEEEEEEEE FOR THE HHHHHHHHHH :)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void sub_8086838(u8 entity, u8 r1, u8 r2)
|
||||
{
|
||||
gUnknown_202F3D0.unk1 = entity;
|
||||
@@ -412,35 +411,30 @@ void sub_8086848(u8 entity, u8 r1)
|
||||
|
||||
void sub_8086854(void)
|
||||
{
|
||||
if(gUnknown_202F3D0.unk0 != 0)
|
||||
{
|
||||
if(gUnknown_202F3D0.unk4 == 0)
|
||||
{
|
||||
if(gUnknown_202F3D0.unk1 != 0)
|
||||
{
|
||||
gUnknown_202F3D0.unk4 = 0x50;
|
||||
gUnknown_202F3D0.unk5 = 0x10;
|
||||
if (gUnknown_202F3D0.unk0) {
|
||||
if (gUnknown_202F3D0.unk4 == 0) {
|
||||
if (gUnknown_202F3D0.unk1) {
|
||||
gUnknown_202F3D0.unk4 = 80;
|
||||
gUnknown_202F3D0.unk5 = 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_202F3D0.unk4 = RandInt(0x6) + 2;
|
||||
gUnknown_202F3D0.unk5 = RandInt(0x6) + 2;
|
||||
else {
|
||||
gUnknown_202F3D0.unk4 = RandInt(6) + 2;
|
||||
gUnknown_202F3D0.unk5 = RandInt(6) + 2;
|
||||
}
|
||||
if(gUnknown_202F3D0.unk3 != 0)
|
||||
PlaySoundEffect(0x1F9);
|
||||
|
||||
if (gUnknown_202F3D0.unk3 != 0)
|
||||
PlaySoundEffect(505);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_202F3D0.unk4--;
|
||||
}
|
||||
if(gUnknown_202F3D0.unk5 != 0)
|
||||
|
||||
if (gUnknown_202F3D0.unk5 != 0)
|
||||
gUnknown_202F3D0.unk5--;
|
||||
|
||||
gDungeon->unk181FC = gUnknown_8107314[gUnknown_202F3D0.unk5];
|
||||
}
|
||||
else
|
||||
{
|
||||
gDungeon->unk181FC = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80868F4(Entity *entity)
|
||||
@@ -458,16 +452,16 @@ void sub_8086910(Entity *entity)
|
||||
void sub_808692C(void)
|
||||
{
|
||||
sub_80859F0(DIRECTION_NORTHWEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_80859F0(DIRECTION_WEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_80859F0(DIRECTION_SOUTHWEST);
|
||||
sub_803E708(0x4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
|
||||
sub_80859F0(DIRECTION_SOUTH);
|
||||
sub_803E708(0x4, 0x46);
|
||||
sub_803E708(4, 70);
|
||||
}
|
||||
|
||||
void SpriteLookAroundEffect(Entity *entity)
|
||||
@@ -479,17 +473,87 @@ void SpriteLookAroundEffect(Entity *entity)
|
||||
|
||||
sub_80869E4(entity, 4, 2, r4);
|
||||
|
||||
sub_803E708(0xF, 0x46);
|
||||
sub_803E708(15, 70);
|
||||
|
||||
r4 = sub_8002984(r4, 5);
|
||||
|
||||
sub_80869E4(entity, 4, 1, r4);
|
||||
|
||||
sub_803E708(0xF, 0x46);
|
||||
sub_803E708(15, 70);
|
||||
|
||||
r3 = sub_8002984(r4, 4);
|
||||
|
||||
sub_80869E4(entity, 4, 2, r3);
|
||||
|
||||
sub_803E708(0xF, 0x46);
|
||||
sub_803E708(15, 70);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING // 100% match, but params for sub_8002A70 are disputed... https://decomp.me/scratch/E3iF1
|
||||
void sub_80869E4(struct Entity *a0, s32 a1, u8 a2, s8 a3)
|
||||
{
|
||||
u32 r4;
|
||||
s8 *r5;
|
||||
s32 tmp;
|
||||
struct EntityInfo* info;
|
||||
|
||||
tmp = (s8)a3;
|
||||
|
||||
info = a0->info;
|
||||
r4 = (s8)info->action.direction;
|
||||
while (r4 != tmp) {
|
||||
r4 = sub_8002A70(r4, tmp, a2);
|
||||
info->action.direction = r4 % 8;
|
||||
sub_806CE68(a0, info->action.direction);
|
||||
sub_803E708(a1, 70);
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_80869E4(struct Entity *a0, s32 a1, u8 a2, s8 a3)
|
||||
{
|
||||
asm_unified(
|
||||
"push {r4-r7,lr}\n"
|
||||
"\tmov r7, r9\n"
|
||||
"\tmov r6, r8\n"
|
||||
"\tpush {r6,r7}\n"
|
||||
"\tadds r7, r0, 0\n"
|
||||
"\tmov r9, r1\n"
|
||||
"\tlsls r2, 24\n"
|
||||
"\tlsrs r2, 24\n"
|
||||
"\tmov r8, r2\n"
|
||||
"\tlsls r3, 24\n"
|
||||
"\tasrs r6, r3, 24\n"
|
||||
"\tldr r0, [r7, 0x70]\n"
|
||||
"\tadds r0, 0x46\n"
|
||||
"\tmovs r4, 0\n"
|
||||
"\tldrsb r4, [r0, r4]\n"
|
||||
"\tcmp r4, r6\n"
|
||||
"\tbeq _08086A30\n"
|
||||
"\tadds r5, r0, 0\n"
|
||||
"_08086A08:\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tbl sub_8002A70\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tasrs r4, r0, 24\n"
|
||||
"\tmovs r0, 0x7\n"
|
||||
"\tands r0, r4\n"
|
||||
"\tstrb r0, [r5]\n"
|
||||
"\tldrb r1, [r5]\n"
|
||||
"\tadds r0, r7, 0\n"
|
||||
"\tbl sub_806CE68\n"
|
||||
"\tmov r0, r9\n"
|
||||
"\tmovs r1, 0x46\n"
|
||||
"\tbl sub_803E708\n"
|
||||
"\tcmp r4, r6\n"
|
||||
"\tbne _08086A08\n"
|
||||
"_08086A30:\n"
|
||||
"\tpop {r3,r4}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tmov r9, r4\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
@@ -1,70 +1,68 @@
|
||||
#include "constants/monster.h"
|
||||
#include "global.h"
|
||||
#include "code_806CD90.h"
|
||||
#include "code_80869E4.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/direction.h"
|
||||
#include "constants/monster.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_music.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "dungeon_util_1.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
|
||||
extern u8 sub_8044B28(void);
|
||||
extern u8 gUnknown_202E038[];
|
||||
extern void sub_8085374();
|
||||
extern void sub_80855E4(void *);
|
||||
extern void sub_8068FE0(Entity *, u32, u32);
|
||||
extern void DisplayDungeonDialogue(u8 *);
|
||||
extern void sub_80869E4(Entity *, u32, u32, u32);
|
||||
extern void DisplayDungeonDialogue(const u8 *);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern void sub_8086448(void);
|
||||
extern void SpriteShockEffect(Entity *);
|
||||
extern void SkarmoryEntry(Entity *);
|
||||
extern void SpriteLookAroundEffect(Entity *);
|
||||
extern void sub_8086A54(Entity *);
|
||||
extern void sub_808563C(void *);
|
||||
extern void sub_8087144();
|
||||
void sub_80866C4(u8 *);
|
||||
extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
|
||||
extern bool8 sub_8085B80(u8 *);
|
||||
extern void sub_8085B4C(u8 *, void *, Entity **, u32);
|
||||
extern void sub_803E46C(u32);
|
||||
|
||||
extern u8 gUnknown_810739C[];
|
||||
extern u8 gUnknown_81073D4[];
|
||||
extern u8 gUnknown_810740C[];
|
||||
extern s16 gUnknown_80F57CC;
|
||||
extern u8 gUnknown_8101440[];
|
||||
extern u8 gSkarmoryPreFightDialogue_1;
|
||||
extern u8 gSkarmoryPreFightDialogue_2;
|
||||
extern u8 gSkarmoryPreFightDialogue_3;
|
||||
extern u8 gSkarmoryPreFightDialogue_4;
|
||||
extern u8 gSkarmoryPreFightDialogue_5;
|
||||
extern u8 gSkarmoryPreFightDialogue_6;
|
||||
extern u8 gSkarmoryPreFightDialogue_7;
|
||||
extern u8 gSkarmoryPreFightDialogue_8;
|
||||
extern u8 gSkarmoryPreFightDialogue_9;
|
||||
extern u8 gSkarmoryReFightDialogue_1;
|
||||
extern u8 gSkarmoryReFightDialogue_2;
|
||||
extern u8 gSkarmoryReFightDialogue_3;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_1;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_2;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_3;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_4;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_5;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_6;
|
||||
extern u8 gTeamMeaniesPreFightDialogue_7;
|
||||
extern u8 gTeamMeaniesReFightDialogue_1;
|
||||
extern u8 gTeamMeaniesReFightDialogue_2;
|
||||
extern u8 gTeamMeaniesReFightDialogue_3;
|
||||
extern u8 gTeamMeaniesReFightDialogue_4;
|
||||
extern u8 gTeamMeaniesReFightDialogue_5;
|
||||
extern const u8 gUnknown_810739C[];
|
||||
extern const u8 gUnknown_81073D4[];
|
||||
extern const u8 gUnknown_810740C[];
|
||||
extern const s16 gUnknown_80F57CC;
|
||||
extern const u8 gUnknown_8101440[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_1[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_2[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_3[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_4[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_5[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_6[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_7[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_8[];
|
||||
extern const u8 gSkarmoryPreFightDialogue_9[];
|
||||
extern const u8 gSkarmoryReFightDialogue_1[];
|
||||
extern const u8 gSkarmoryReFightDialogue_2[];
|
||||
extern const u8 gSkarmoryReFightDialogue_3[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_1[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_2[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_3[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_4[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_5[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_6[];
|
||||
extern const u8 gTeamMeaniesPreFightDialogue_7[];
|
||||
extern const u8 gTeamMeaniesReFightDialogue_1[];
|
||||
extern const u8 gTeamMeaniesReFightDialogue_2[];
|
||||
extern const u8 gTeamMeaniesReFightDialogue_3[];
|
||||
extern const u8 gTeamMeaniesReFightDialogue_4[];
|
||||
extern const u8 gTeamMeaniesReFightDialogue_5[];
|
||||
|
||||
extern u8 gUnknown_8100D3C;
|
||||
extern const u8 gUnknown_8100D3C[];
|
||||
|
||||
void sub_8086A3C(Entity *pokemon)
|
||||
{
|
||||
@@ -194,33 +192,33 @@ void SkarmoryPreFightDialogue(void)
|
||||
SpriteShockEffect(PartnerEntity);
|
||||
sub_803E708(0x20,0x46);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_1);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_1);
|
||||
ShiftCameraToPosition(&pos1,0x40);
|
||||
sub_803E708(0x40,0x46);
|
||||
ShiftCameraToPosition(&pos2,0x30);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_2);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_2);
|
||||
sub_803E708(10,0x46);
|
||||
DiglettEntity->info->unk15D = 1;
|
||||
ShiftCameraToPosition(&pos1,0x30);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_3); // Diglett: ...I...\nI'm scared.
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_3); // Diglett: ...I...\nI'm scared.
|
||||
sub_803E708(10,0x46);
|
||||
ShiftCameraToPosition(&pos2,0x20);
|
||||
sub_803E708(0x20,0x46);
|
||||
SkarmoryEntry(SkarmoryEntity);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_4); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_4); // Skarmory: You!\nWhat do you think you're doing here?!
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_5);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_5);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_6);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_6);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_7);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_7);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_8);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_8);
|
||||
sub_803E708(10,0x46);
|
||||
sub_80869E4(PartnerEntity,4,1,2);
|
||||
sub_80869E4(LeaderEntity,4,2,6);
|
||||
DisplayDungeonDialogue(&gSkarmoryPreFightDialogue_9);
|
||||
DisplayDungeonDialogue(gSkarmoryPreFightDialogue_9);
|
||||
sub_80869E4(PartnerEntity,4,2,4);
|
||||
sub_80869E4(LeaderEntity,4,1,4);
|
||||
sub_803E708(10,0x46);
|
||||
@@ -242,12 +240,12 @@ void SkarmoryReFightDialogue(void)
|
||||
sub_803E708(10,0x46);
|
||||
SkarmoryEntry(SkarmoryEntity);
|
||||
ShiftCameraToPosition(&pos,0x10);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_1);
|
||||
DisplayDungeonDialogue(gSkarmoryReFightDialogue_1);
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_2);
|
||||
DisplayDungeonDialogue(gSkarmoryReFightDialogue_2);
|
||||
sub_803E708(10,0x46);
|
||||
sub_806CDD4(SkarmoryEntity,0xd,0);
|
||||
DisplayDungeonDialogue(&gSkarmoryReFightDialogue_3);
|
||||
DisplayDungeonDialogue(gSkarmoryReFightDialogue_3);
|
||||
sub_803E708(10,0x46);
|
||||
ShiftCameraToPosition(&LeaderEntity->pixelPos,0x10);
|
||||
DungeonStartNewBGM(MUS_BOSS_BATTLE);
|
||||
@@ -257,7 +255,7 @@ void sub_8086E40(void)
|
||||
{
|
||||
SpriteLookAroundEffect(xxx_call_GetLeader());
|
||||
sub_803E708(10,0x46);
|
||||
DisplayDungeonDialogue(&gUnknown_8100D3C);
|
||||
DisplayDungeonDialogue(gUnknown_8100D3C);
|
||||
sub_803E708(10,0x46);
|
||||
gDungeon->unk2 = 1;
|
||||
}
|
||||
@@ -338,21 +336,21 @@ void TeamMeaniesPreFightDialogue(void)
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
sub_8086448();
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_1);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_1);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_8087144();
|
||||
DungeonStartNewBGM(MUS_THERES_TROUBLE);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_3);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_3);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_4);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_4);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_5);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_5);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_6);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_6);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_7);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_7);
|
||||
sub_803E708(10, 0x46);
|
||||
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
|
||||
}
|
||||
@@ -365,15 +363,15 @@ void TeamMeaniesReFightDialogue(void)
|
||||
LeaderEntity = xxx_call_GetLeader();
|
||||
PartnerEntity = GetPartnerEntity();
|
||||
sub_8086448();
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_1);
|
||||
DisplayDungeonDialogue(gTeamMeaniesReFightDialogue_1);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesPreFightDialogue_2);
|
||||
DisplayDungeonDialogue(gTeamMeaniesPreFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_8087144();
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_2);
|
||||
DisplayDungeonDialogue(gTeamMeaniesReFightDialogue_2);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_3);
|
||||
DisplayDungeonDialogue(gTeamMeaniesReFightDialogue_3);
|
||||
sub_803E708(10, 0x46);
|
||||
sub_806CDD4(LeaderEntity, 6, 4);
|
||||
sub_806CDD4(PartnerEntity, 6, 4);
|
||||
@@ -381,8 +379,8 @@ void TeamMeaniesReFightDialogue(void)
|
||||
sub_806CDD4(LeaderEntity, 7, 4);
|
||||
sub_806CDD4(PartnerEntity, 7, 4);
|
||||
sub_803E708(10, 0x46);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_4);
|
||||
DisplayDungeonDialogue(&gTeamMeaniesReFightDialogue_5);
|
||||
DisplayDungeonDialogue(gTeamMeaniesReFightDialogue_4);
|
||||
DisplayDungeonDialogue(gTeamMeaniesReFightDialogue_5);
|
||||
sub_803E708(10, 0x46);
|
||||
ShiftCameraToPosition(&LeaderEntity->pixelPos, 0x10);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "code_80869E4.h"
|
||||
#include "dungeon_items.h"
|
||||
|
||||
#include "dungeon_capabilities.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_util.h"
|
||||
|
||||
#include "pokemon.h"
|
||||
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
@@ -22,7 +21,6 @@ extern s32 sub_8052B8C(u32, u8 *, u32);
|
||||
extern void sub_80861A8(void);
|
||||
extern void PrintFieldMessage(u32, u8 *, u32);
|
||||
extern void sub_803E708(u32, u32);
|
||||
extern void sub_80869E4(Entity *, u32, u32, u32);
|
||||
extern void sub_80416E0(Position32 *r0, u32, u32);
|
||||
extern void SetMessageArgument(u8 *r0, Entity *r1, u32);
|
||||
extern void sub_80421C0(Entity *, u32);
|
||||
|
||||
Reference in New Issue
Block a user