mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-23 09:14:55 -05:00
sub_800E52C
This commit is contained in:
@@ -6,259 +6,6 @@
|
||||
.text
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_800E49C
|
||||
sub_800E49C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x50
|
||||
adds r7, r1, 0
|
||||
mov r8, r2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r3, 24
|
||||
lsrs r6, r3, 24
|
||||
cmp r6, 0
|
||||
beq _0800E4BA
|
||||
bl sub_800ECF8
|
||||
b _0800E4BE
|
||||
_0800E4BA:
|
||||
bl sub_800ED0C
|
||||
_0800E4BE:
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_800E700
|
||||
adds r5, r0, 0
|
||||
str r4, [sp, 0x28]
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x2C]
|
||||
movs r4, 0x1
|
||||
negs r4, r4
|
||||
str r4, [sp, 0x30]
|
||||
ldr r0, [r7]
|
||||
str r0, [sp, 0x34]
|
||||
str r1, [sp, 0x38]
|
||||
str r4, [sp, 0x3C]
|
||||
str r1, [sp, 0x40]
|
||||
add r1, sp, 0x44
|
||||
ldr r0, _0800E508
|
||||
ldm r0!, {r2,r3,r7}
|
||||
stm r1!, {r2,r3,r7}
|
||||
add r1, sp, 0x28
|
||||
mov r0, sp
|
||||
movs r2, 0x28
|
||||
bl memcpy
|
||||
ldr r0, [sp, 0x68]
|
||||
str r0, [sp, 0x18]
|
||||
cmp r6, 0
|
||||
beq _0800E50C
|
||||
cmp r5, r4
|
||||
beq _0800E516
|
||||
str r5, [sp, 0x14]
|
||||
lsls r0, r5, 2
|
||||
add r0, r8
|
||||
ldr r0, [r0]
|
||||
b _0800E514
|
||||
.align 2, 0
|
||||
_0800E508: .4byte gUnknown_80B9C60
|
||||
_0800E50C:
|
||||
movs r0, 0x3
|
||||
str r0, [sp, 0x14]
|
||||
mov r1, r8
|
||||
ldr r0, [r1, 0xC]
|
||||
_0800E514:
|
||||
str r0, [sp, 0x10]
|
||||
_0800E516:
|
||||
movs r0, 0x4
|
||||
mov r1, sp
|
||||
bl sub_800E208
|
||||
add sp, 0x50
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_800E49C
|
||||
|
||||
thumb_func_start sub_800E52C
|
||||
sub_800E52C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x1B0
|
||||
adds r7, r0, 0
|
||||
ldrh r0, [r7]
|
||||
cmp r0, 0x52
|
||||
bne _0800E628
|
||||
mov r1, sp
|
||||
ldr r0, _0800E618
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r4,r5}
|
||||
stm r1!, {r4,r5}
|
||||
movs r0, 0
|
||||
mov r10, r0
|
||||
mov r9, r0
|
||||
mov r8, sp
|
||||
add r6, sp, 0x20
|
||||
adds r4, r6, 0
|
||||
_0800E55C:
|
||||
ldrh r0, [r7]
|
||||
bl sub_800ECB8
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r0, r1]
|
||||
str r0, [r4]
|
||||
ldr r0, [r7, 0x10]
|
||||
str r0, [r4, 0x4]
|
||||
ldr r0, [r7, 0xC]
|
||||
str r0, [r4, 0x8]
|
||||
ldr r0, [r7, 0x4]
|
||||
str r0, [r4, 0xC]
|
||||
ldrh r0, [r4, 0xE]
|
||||
adds r0, 0x40
|
||||
strh r0, [r4, 0xE]
|
||||
ldr r0, [r7, 0x8]
|
||||
str r0, [r4, 0x10]
|
||||
mov r2, r8
|
||||
ldrh r0, [r2]
|
||||
ldrh r3, [r4, 0x10]
|
||||
adds r0, r3
|
||||
strh r0, [r4, 0x10]
|
||||
ldrh r0, [r4, 0x12]
|
||||
subs r0, 0x40
|
||||
ldrh r5, [r2, 0x2]
|
||||
adds r0, r5
|
||||
strh r0, [r4, 0x12]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
ldrh r1, [r7]
|
||||
bl sub_800E750
|
||||
str r0, [r4, 0x14]
|
||||
ldr r0, _0800E61C
|
||||
str r0, [r4, 0x18]
|
||||
adds r1, r6, 0
|
||||
adds r1, 0x1C
|
||||
ldr r0, _0800E620
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
movs r0, 0x1
|
||||
adds r1, r6, 0
|
||||
bl sub_800E208
|
||||
adds r5, r0, 0
|
||||
bl sub_800E2C0
|
||||
adds r1, r0, 0
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
beq _0800E5D4
|
||||
ldr r2, _0800E624
|
||||
movs r0, 0xD0
|
||||
muls r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r0, r1
|
||||
adds r0, 0xCC
|
||||
movs r1, 0x6
|
||||
strh r1, [r0]
|
||||
_0800E5D4:
|
||||
mov r0, r9
|
||||
cmp r0, 0
|
||||
bne _0800E5DC
|
||||
mov r10, r5
|
||||
_0800E5DC:
|
||||
movs r1, 0x4
|
||||
add r8, r1
|
||||
adds r4, 0x28
|
||||
adds r6, 0x28
|
||||
movs r2, 0x1
|
||||
add r9, r2
|
||||
mov r3, r9
|
||||
cmp r3, 0x7
|
||||
ble _0800E55C
|
||||
movs r4, 0x6
|
||||
mov r9, r4
|
||||
_0800E5F2:
|
||||
ldrh r0, [r7]
|
||||
bl sub_800ECB8
|
||||
movs r5, 0x2
|
||||
ldrsh r0, [r0, r5]
|
||||
bl sub_800ECA4
|
||||
ldr r0, [r0, 0x4]
|
||||
bl sub_800F15C
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
add r9, r0
|
||||
mov r1, r9
|
||||
cmp r1, 0
|
||||
bge _0800E5F2
|
||||
mov r0, r10
|
||||
b _0800E67E
|
||||
.align 2, 0
|
||||
_0800E618: .4byte gUnknown_80B9C7C
|
||||
_0800E61C: .4byte 0x0000ffff
|
||||
_0800E620: .4byte gUnknown_80B9C60
|
||||
_0800E624: .4byte gUnknown_203B0CC
|
||||
_0800E628:
|
||||
add r6, sp, 0x160
|
||||
add r5, sp, 0x188
|
||||
ldrh r0, [r7]
|
||||
bl sub_800ECB8
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r0, r2]
|
||||
str r0, [r5]
|
||||
add r1, sp, 0x18C
|
||||
ldr r0, [r7, 0x10]
|
||||
str r0, [r1]
|
||||
add r1, sp, 0x190
|
||||
ldr r0, [r7, 0xC]
|
||||
str r0, [r1]
|
||||
add r1, sp, 0x194
|
||||
ldr r0, [r7, 0x4]
|
||||
str r0, [r1]
|
||||
add r1, sp, 0x198
|
||||
ldr r0, [r7, 0x8]
|
||||
str r0, [r1]
|
||||
add r4, sp, 0x19C
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r7, r3]
|
||||
ldrh r1, [r7]
|
||||
bl sub_800E750
|
||||
str r0, [r4]
|
||||
add r1, sp, 0x1A0
|
||||
ldr r0, _0800E690
|
||||
str r0, [r1]
|
||||
add r1, sp, 0x1A4
|
||||
ldr r0, _0800E694
|
||||
ldm r0!, {r2-r4}
|
||||
stm r1!, {r2-r4}
|
||||
adds r0, r6, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x28
|
||||
bl memcpy
|
||||
movs r0, 0x1
|
||||
adds r1, r6, 0
|
||||
bl sub_800E208
|
||||
_0800E67E:
|
||||
add sp, 0x1B0
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0800E690: .4byte 0x0000ffff
|
||||
_0800E694: .4byte gUnknown_80B9C60
|
||||
thumb_func_end sub_800E52C
|
||||
|
||||
thumb_func_start sub_800E698
|
||||
sub_800E698:
|
||||
push {r4,r5,lr}
|
||||
|
||||
35
data/data_80B9BB0.s
Normal file
35
data/data_80B9BB0.s
Normal file
@@ -0,0 +1,35 @@
|
||||
.section .rodata
|
||||
|
||||
.align 2,0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "MultiSio010918\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80B9C60
|
||||
gUnknown_80B9C60: @ 80B9C60
|
||||
.byte 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0xFF, 0xFF, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
gefob001_string:: @ 80B9C6C
|
||||
.string "efob001\0"
|
||||
.align 2,0
|
||||
|
||||
gefob000_string:: @ 80B9C74
|
||||
.string "efob000\0"
|
||||
.align 2,0
|
||||
|
||||
@@ -2,41 +2,6 @@
|
||||
|
||||
.align 2,0
|
||||
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "MultiSio010918\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80B9C60
|
||||
gUnknown_80B9C60: @ 80B9C60
|
||||
.byte 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0xFF, 0xFF, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
gefob001_string:: @ 80B9C6C
|
||||
.string "efob001\0"
|
||||
.align 2,0
|
||||
|
||||
gefob000_string:: @ 80B9C74
|
||||
.string "efob000\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80B9C7C
|
||||
gUnknown_80B9C7C: @ 80B9C7C
|
||||
.byte 0xc0, 0xff, 0x0a, 0x00, 0xb8, 0xff, 0xe4, 0xff, 0xc4, 0xff, 0x32, 0x00, 0xbf, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0x18, 0x00, 0xb0, 0xff, 0x46, 0x00, 0x9c, 0xff, 0x20, 0x00, 0x88, 0xff, 0xd0, 0xff
|
||||
|
||||
.global gUnknown_80B9C9C
|
||||
gUnknown_80B9C9C: @ 80B9C9C
|
||||
.byte 0x01, 0x00, 0x00, 0x00
|
||||
|
||||
@@ -452,6 +452,8 @@ SECTIONS {
|
||||
data/pksdir_8.o(.rodata);
|
||||
src/main.o(.rodata);
|
||||
src/reg_control.o(.rodata);
|
||||
data/data_80B9BB0.o(.rodata);
|
||||
src/code_800DAC0.o(.rodata)
|
||||
data/data_80B9BB8_2.o(.rodata);
|
||||
src/code_800F034.o(.rodata);
|
||||
src/dungeon_pokemon_sprites.o(.rodata);
|
||||
|
||||
@@ -719,4 +719,115 @@ s32 sub_800E448(u8 a0, DungeonPos *pos)
|
||||
return sub_800E208(3, &sp);
|
||||
}
|
||||
|
||||
s32 sub_800E700(s32);
|
||||
|
||||
s32 sub_800E49C(u8 a0, DungeonPos *pos, DungeonPos posArray[4], bool8 a3, s32 a4)
|
||||
{
|
||||
s32 r4 = a3 ? sub_800ECF8(a0) : sub_800ED0C(a0);
|
||||
s32 r5 = sub_800E700(r4);
|
||||
struct unkStruct_203B0CC_xC sp = {
|
||||
.unkC = r4,
|
||||
.unk10 = 0,
|
||||
.unk14 = -1,
|
||||
.unk18 = *pos,
|
||||
.unk1c = {0, 0},
|
||||
.unk20 = -1,
|
||||
.unk24 = 0,
|
||||
.spriteMasks = gUnknown_80B9C60,
|
||||
};
|
||||
|
||||
sp.unk24 = a4;
|
||||
if (a3) {
|
||||
if (r5 != -1) {
|
||||
sp.unk20 = r5;
|
||||
sp.unk1c = posArray[r5];
|
||||
}
|
||||
}
|
||||
else {
|
||||
sp.unk20 = 3;
|
||||
sp.unk1c = posArray[3];
|
||||
}
|
||||
|
||||
return sub_800E208(4, &sp);
|
||||
}
|
||||
|
||||
// TODO: MERGE WITH UnkStruct_sub_800E308_1
|
||||
|
||||
struct UnkStruct_8040094
|
||||
{
|
||||
u16 unk0;
|
||||
s16 unk2;
|
||||
DungeonPos unk4;
|
||||
DungeonPos unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
};
|
||||
|
||||
void sub_800F15C(s32 effectID);
|
||||
|
||||
s32 sub_800E52C(struct UnkStruct_8040094 *a0)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (a0->unk0 == 0x52) {
|
||||
DungeonPos positions[8] = {
|
||||
{ -64, 10 },
|
||||
{ -72, -28 },
|
||||
{ -60, 50 },
|
||||
{ -65, -60 },
|
||||
{ -80, 24 },
|
||||
{ -80, 70 },
|
||||
{ -100, 32 },
|
||||
{ -120, -48 },
|
||||
};
|
||||
struct unkStruct_203B0CC_xC sp[8];
|
||||
s32 ret = 0;
|
||||
for (i = 0; i < 8; i++) {
|
||||
s32 possibleRet;
|
||||
s32 id;
|
||||
struct unkStruct_203B0CC_xC *curr = &sp[i];
|
||||
|
||||
curr->unkC = sub_800ECB8(a0->unk0)->unk2;
|
||||
curr->unk10 = a0->unk10;
|
||||
curr->unk14 = a0->unkC;
|
||||
curr->unk18 = a0->unk4;
|
||||
curr->unk18.y += 64;
|
||||
curr->unk1c = a0->unk8;
|
||||
curr->unk1c.x += positions[i].x;
|
||||
curr->unk1c.y += positions[i].y - 64;
|
||||
curr->unk20 = sub_800E750(a0->unk2, a0->unk0);
|
||||
curr->unk24 = 0xFFFF;
|
||||
curr->spriteMasks = gUnknown_80B9C60;
|
||||
possibleRet = sub_800E208(1, curr);
|
||||
id = sub_800E2C0(possibleRet);
|
||||
if (id != -1) {
|
||||
struct unkStruct_203B0CC_sub *ptr = &gUnknown_203B0CC->unk0[id];
|
||||
ptr->unkCC.x = 6;
|
||||
}
|
||||
if (i == 0) {
|
||||
ret = possibleRet;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 7; i++) {
|
||||
unkStruct_80B9CC4 *ptr2 = sub_800ECA4(sub_800ECB8(a0->unk0)->unk2);
|
||||
sub_800F15C(ptr2->effectId);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
else {
|
||||
struct unkStruct_203B0CC_xC sp = {
|
||||
.unkC = sub_800ECB8(a0->unk0)->unk2,
|
||||
.unk10 = a0->unk10,
|
||||
.unk14 = a0->unkC,
|
||||
.unk18 = a0->unk4,
|
||||
.unk1c = a0->unk8,
|
||||
.unk20 = sub_800E750(a0->unk2, a0->unk0),
|
||||
.unk24 = 0xFFFF,
|
||||
.spriteMasks = gUnknown_80B9C60,
|
||||
};
|
||||
return sub_800E208(1, &sp);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user