mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-26 10:44:40 -05:00
ground sprite decompiled
This commit is contained in:
@@ -1,420 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_80A73EC
|
||||
sub_80A73EC:
|
||||
push {lr}
|
||||
bl CopySpritesToOam
|
||||
bl nullsub_13
|
||||
bl sub_8005304
|
||||
bl nullsub_14
|
||||
ldr r1, _080A7420
|
||||
ldrh r0, [r1]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1]
|
||||
ldr r1, _080A7424
|
||||
ldrh r0, [r1]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r0, 0xB
|
||||
bls _080A741A
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
_080A741A:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A7420: .4byte gUnknown_2039DCC
|
||||
_080A7424: .4byte gUnknown_2039DCE
|
||||
thumb_func_end sub_80A73EC
|
||||
|
||||
thumb_func_start sub_80A7428
|
||||
sub_80A7428:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x14
|
||||
adds r6, r0, 0
|
||||
mov r8, r3
|
||||
lsls r1, 16
|
||||
asrs r7, r1, 16
|
||||
lsls r2, 16
|
||||
asrs r2, 16
|
||||
adds r4, r2, 0
|
||||
ldr r1, _080A7480
|
||||
mov r0, sp
|
||||
bl sprintf
|
||||
ldr r1, _080A7484
|
||||
mov r0, sp
|
||||
bl OpenFile
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
bl GetFileDataPtr
|
||||
adds r0, r4, 0
|
||||
bl GetBodySize
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, _080A7488
|
||||
ldr r2, [sp, 0xC]
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
str r2, [sp, 0xC]
|
||||
movs r0, 0xD3
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
bne _080A7490
|
||||
ldr r0, _080A748C
|
||||
ands r0, r2
|
||||
movs r1, 0x91
|
||||
lsls r1, 17
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0xC]
|
||||
b _080A74AC
|
||||
.align 2, 0
|
||||
_080A7480: .4byte gUnknown_8117EDC
|
||||
_080A7484: .4byte gMonsterFileArchive
|
||||
_080A7488: .4byte 0xffff0000
|
||||
_080A748C: .4byte 0x0000ffff
|
||||
_080A7490:
|
||||
movs r1, 0
|
||||
cmp r7, 0x47
|
||||
bne _080A7498
|
||||
movs r1, 0x1
|
||||
_080A7498:
|
||||
adds r0, r4, 0
|
||||
bl GetPokemonOverworldPalette
|
||||
lsls r0, 24
|
||||
lsrs r0, 8
|
||||
ldr r2, _080A74E0
|
||||
ldr r1, [sp, 0xC]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp, 0xC]
|
||||
_080A74AC:
|
||||
ldr r0, [r5, 0x4]
|
||||
add r1, sp, 0xC
|
||||
str r0, [r1, 0x4]
|
||||
adds r0, r6, 0
|
||||
mov r2, r8
|
||||
bl sub_80A67CC
|
||||
str r5, [r6, 0x54]
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x52
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
blt _080A74D4
|
||||
movs r1, 0xC0
|
||||
lsls r1, 2
|
||||
adds r0, r6, 0
|
||||
movs r2, 0
|
||||
bl sub_80A6EFC
|
||||
_080A74D4:
|
||||
add sp, 0x14
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A74E0: .4byte 0x0000ffff
|
||||
thumb_func_end sub_80A7428
|
||||
|
||||
thumb_func_start sub_80A74E4
|
||||
sub_80A74E4:
|
||||
push {lr}
|
||||
bl sub_80A68A0
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A74E4
|
||||
|
||||
thumb_func_start sub_80A74F0
|
||||
sub_80A74F0:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r4, r1, 16
|
||||
lsls r2, 24
|
||||
asrs r5, r2, 24
|
||||
cmp r3, 0
|
||||
bge _080A7514
|
||||
movs r0, 0xE0
|
||||
lsls r0, 1
|
||||
cmp r4, r0
|
||||
beq _080A7512
|
||||
adds r0, r4, 0
|
||||
bl sub_800E700
|
||||
adds r3, r0, 0
|
||||
b _080A7514
|
||||
_080A7512:
|
||||
movs r3, 0
|
||||
_080A7514:
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_80A7040
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A74F0
|
||||
|
||||
thumb_func_start sub_80A7524
|
||||
sub_80A7524:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x18
|
||||
adds r5, r0, 0
|
||||
adds r6, r2, 0
|
||||
adds r7, r3, 0
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
mov r8, r1
|
||||
mov r1, sp
|
||||
bl sub_80A7094
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080A75C0
|
||||
ldr r1, [r5, 0x5C]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
beq _080A758C
|
||||
ldr r2, [r5, 0x60]
|
||||
cmp r2, 0x3
|
||||
bgt _080A7580
|
||||
cmp r2, 0
|
||||
blt _080A7580
|
||||
add r4, sp, 0x8
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_800569C
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
str r0, [sp, 0xC]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
add r2, sp, 0xC
|
||||
str r0, [r2, 0x4]
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
adds r3, r7, 0
|
||||
bl sub_80A7310
|
||||
b _080A758C
|
||||
_080A7580:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
adds r3, r7, 0
|
||||
bl sub_80A7310
|
||||
_080A758C:
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x50
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080A75B4
|
||||
ldr r0, [sp]
|
||||
lsls r0, 16
|
||||
ldr r1, [sp, 0x4]
|
||||
lsls r1, 16
|
||||
lsrs r0, 16
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x14]
|
||||
add r1, sp, 0x14
|
||||
mov r0, r8
|
||||
adds r2, r5, 0
|
||||
bl AddShadowSprite
|
||||
_080A75B4:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0
|
||||
adds r3, r7, 0
|
||||
bl sub_80A7310
|
||||
_080A75C0:
|
||||
add sp, 0x18
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A7524
|
||||
|
||||
thumb_func_start sub_80A75CC
|
||||
sub_80A75CC:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r6, r3, 0
|
||||
lsls r2, 16
|
||||
asrs r2, 13
|
||||
ldr r0, _080A7618
|
||||
adds r2, r0
|
||||
movs r5, 0
|
||||
movs r0, 0
|
||||
ldrsb r0, [r2, r0]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r3, _080A761C
|
||||
ldr r1, [sp]
|
||||
ands r1, r3
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
ldrh r3, [r2, 0x2]
|
||||
lsls r3, 16
|
||||
ldr r0, _080A7620
|
||||
ands r0, r1
|
||||
orrs r0, r3
|
||||
str r0, [sp]
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080A7628
|
||||
ldr r1, _080A7624
|
||||
bl OpenFile
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
bl GetFileDataPtr
|
||||
ldr r0, [r5, 0x4]
|
||||
str r0, [sp, 0x4]
|
||||
b _080A762A
|
||||
.align 2, 0
|
||||
_080A7618: .4byte gGroundObjectKinds
|
||||
_080A761C: .4byte 0xffff0000
|
||||
_080A7620: .4byte 0x0000ffff
|
||||
_080A7624: .4byte gOrnamentFileArchive
|
||||
_080A7628:
|
||||
str r5, [sp, 0x4]
|
||||
_080A762A:
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
adds r2, r6, 0
|
||||
bl sub_80A67CC
|
||||
str r5, [r4, 0x54]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x52
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
blt _080A764E
|
||||
movs r1, 0x80
|
||||
lsls r1, 4
|
||||
adds r0, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_80A6EFC
|
||||
_080A764E:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A75CC
|
||||
|
||||
thumb_func_start sub_80A7658
|
||||
sub_80A7658:
|
||||
push {lr}
|
||||
bl sub_80A68A0
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A7658
|
||||
|
||||
thumb_func_start sub_80A7664
|
||||
sub_80A7664:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r6, r2, 0
|
||||
movs r1, 0
|
||||
adds r2, r5, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_80A7094
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
adds r3, r6, 0
|
||||
bl sub_80A7310
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A7664
|
||||
|
||||
thumb_func_start sub_80A7688
|
||||
sub_80A7688:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r6, r3, 0
|
||||
lsls r2, 16
|
||||
asrs r2, 13
|
||||
ldr r0, _080A76D4
|
||||
adds r2, r0
|
||||
movs r5, 0
|
||||
movs r0, 0
|
||||
ldrsb r0, [r2, r0]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r3, _080A76D8
|
||||
ldr r1, [sp]
|
||||
ands r1, r3
|
||||
orrs r1, r0
|
||||
str r1, [sp]
|
||||
ldrh r3, [r2, 0x2]
|
||||
lsls r3, 16
|
||||
ldr r0, _080A76DC
|
||||
ands r0, r1
|
||||
orrs r0, r3
|
||||
str r0, [sp]
|
||||
ldr r0, [r2, 0x4]
|
||||
cmp r0, 0
|
||||
beq _080A76E4
|
||||
ldr r1, _080A76E0
|
||||
bl OpenFile
|
||||
adds r5, r0, 0
|
||||
movs r1, 0
|
||||
bl GetFileDataPtr
|
||||
ldr r0, [r5, 0x4]
|
||||
str r0, [sp, 0x4]
|
||||
b _080A76E6
|
||||
.align 2, 0
|
||||
_080A76D4: .4byte gUnknown_8117E8C
|
||||
_080A76D8: .4byte 0xffff0000
|
||||
_080A76DC: .4byte 0x0000ffff
|
||||
_080A76E0: .4byte gOrnamentFileArchive
|
||||
_080A76E4:
|
||||
str r5, [sp, 0x4]
|
||||
_080A76E6:
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
adds r2, r6, 0
|
||||
bl sub_80A67CC
|
||||
str r5, [r4, 0x54]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x52
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
blt _080A770A
|
||||
movs r1, 0x80
|
||||
lsls r1, 4
|
||||
adds r0, r4, 0
|
||||
movs r2, 0
|
||||
bl sub_80A6EFC
|
||||
_080A770A:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A7688
|
||||
|
||||
.align 2,0
|
||||
@@ -53,7 +53,7 @@ void sub_8005180(void);
|
||||
void sub_8005304(void);
|
||||
void sub_8005610(OpenedFile *, s32 vramIdx, s32 brightness, const RGB *ramp);
|
||||
const RGB *sub_8005674(const EfoFileData *, s32 vramIdx);
|
||||
void sub_800569C(DungeonPos *, axObject *, u8);
|
||||
void sub_800569C(DungeonPos *, axdata *, u8);
|
||||
void sub_8005700(DungeonPos *, axObject *);
|
||||
void sub_8005770(s32, const RGB *color, s32 brightness, const RGB *ramp);
|
||||
|
||||
|
||||
@@ -346,7 +346,6 @@ SECTIONS {
|
||||
asm/code_80A59DC.o(.text);
|
||||
src/ground_map_2.o(.text);
|
||||
src/ground_sprite.o(.text);
|
||||
asm/ground_sprite.o(.text);
|
||||
src/code_80A7714.o(.text);
|
||||
src/ground_lives.o(.text);
|
||||
asm/ground_lives.o(.text);
|
||||
|
||||
@@ -100,7 +100,7 @@ static void sub_8040C4C(Entity *entity, Move *move, bool32 a2)
|
||||
s32 r2 = sub_800E710(apparentId, sub_80412E0(move->id, GetApparentWeather(entity), TRUE));
|
||||
|
||||
if (r2 != -1) {
|
||||
sub_800569C(&sp.unk8, &entity->axObj, r2);
|
||||
sub_800569C(&sp.unk8, &entity->axObj.axdata, r2);
|
||||
}
|
||||
else {
|
||||
sp.unk8 = (DungeonPos) {0};
|
||||
@@ -252,7 +252,7 @@ static void sub_8041038(struct UnkStruct_8040094 *a0, Entity *entity, Move *move
|
||||
s32 r2 = sub_800E710(entInfo->apparentID, sub_80412E0(move->id, GetApparentWeather(entity), a2));
|
||||
|
||||
if (r2 != -1) {
|
||||
sub_800569C(&a0->unk8, &entity->axObj, r2);
|
||||
sub_800569C(&a0->unk8, &entity->axObj.axdata, r2);
|
||||
}
|
||||
else {
|
||||
a0->unk8 = (DungeonPos) {0};
|
||||
@@ -312,7 +312,7 @@ void sub_8041168(Entity *entity, Entity *entity2, Move *move, DungeonPos *pos)
|
||||
var2 = sub_800ECA4(var)->unk1c;
|
||||
if (var2 != -1) {
|
||||
if (EntityIsValid(entity2)) {
|
||||
sub_800569C(&sp.unk8, &entity2->axObj, var2);
|
||||
sub_800569C(&sp.unk8, &entity2->axObj.axdata, var2);
|
||||
}
|
||||
else {
|
||||
sp.unk8 = (DungeonPos) {0};
|
||||
|
||||
@@ -229,7 +229,7 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5)
|
||||
sub_804178C(a4 == 2);
|
||||
}
|
||||
|
||||
sub_800569C(&pos, &entity->axObj, a3);
|
||||
sub_800569C(&pos, &entity->axObj.axdata, a3);
|
||||
if (pos.x != 99 && pos.y != 99) {
|
||||
pixelPos.x = entity->pixelPos.x + (pos.x << 8);
|
||||
pixelPos.y = (entity->pixelPos.y + (pos.y << 8)) - entInfo->unk174.raw;
|
||||
@@ -1718,7 +1718,7 @@ void sub_8042EC8(Entity *a0, s32 a1)
|
||||
|
||||
if (strPtr->unk8 != -1) {
|
||||
sub_800569C(&sp4,
|
||||
&a0->axObj,
|
||||
&a0->axObj.axdata,
|
||||
strPtr->unk8);
|
||||
}
|
||||
|
||||
|
||||
@@ -1489,7 +1489,7 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3)
|
||||
pos.y = 0;
|
||||
uStack_38 = sub_800E700(param_1Copy);
|
||||
if (uStack_38 != -1) {
|
||||
sub_800569C(&pos, ¶m_2->axObj, uStack_38);
|
||||
sub_800569C(&pos, ¶m_2->axObj.axdata, uStack_38);
|
||||
}
|
||||
stack.unk0 = param_1Copy;
|
||||
stack.unk4 = 0;
|
||||
|
||||
@@ -567,7 +567,7 @@ s32 sub_8056564(Entity *entity, DungeonPos *pos, Move *move, s32 r4)
|
||||
DungeonRunFrameActions(0x5E);
|
||||
someRetVal = sub_800E710(entInfo->apparentID, sub_80412E0(move->id, GetApparentWeather(entity), 1));
|
||||
if (someRetVal != -1) {
|
||||
sub_800569C(&unkSp1.unk8, &entity->axObj, someRetVal);
|
||||
sub_800569C(&unkSp1.unk8, &entity->axObj.axdata, someRetVal);
|
||||
}
|
||||
else {
|
||||
unkSp1.unk8 = (DungeonPos) {0};
|
||||
|
||||
@@ -918,3 +918,176 @@ bool8 sub_80A7310(struct UnkGroundSpriteStruct *ptr, PixelPos *posArg1, PixelPos
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A73EC(void)
|
||||
{
|
||||
CopySpritesToOam();
|
||||
nullsub_13();
|
||||
sub_8005304();
|
||||
nullsub_14();
|
||||
gUnknown_2039DCC++;
|
||||
if (++gUnknown_2039DCE > 11) {
|
||||
gUnknown_2039DCE = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include "pokemon.h"
|
||||
|
||||
extern const char gUnknown_8117EDC[];
|
||||
|
||||
void sub_80A7428(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 monsterId_, s32 a3)
|
||||
{
|
||||
u8 name[12];
|
||||
OpenedFile *file;
|
||||
struct UnkGroundSpriteSubStructx48 spStruct;
|
||||
s32 a1 = (s16) a1_;
|
||||
// s16 memes strike again...
|
||||
s32 monsterId = (s16) monsterId_;
|
||||
s32 monsterIdS16 = (s16) monsterId;
|
||||
|
||||
sprintf(name, gUnknown_8117EDC, monsterIdS16);
|
||||
file = OpenFile(name, &gMonsterFileArchive);
|
||||
GetFileDataPtr(file, 0); // Unused return value
|
||||
spStruct.unk0 = GetBodySize(monsterId);
|
||||
if (monsterId == MONSTER_STATUE) {
|
||||
spStruct.unk2 = 0x122;
|
||||
}
|
||||
else {
|
||||
bool32 kecleonShop = (a1 == 71);
|
||||
spStruct.unk2 = GetPokemonOverworldPalette(monsterId, kecleonShop);
|
||||
}
|
||||
spStruct.axmain = (axmain *) file->data;
|
||||
sub_80A67CC(ptr, &spStruct, a3);
|
||||
ptr->unk54 = file;
|
||||
if (ptr->unk52 >= 0) {
|
||||
sub_80A6EFC(ptr, 0x300, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A74E4(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
sub_80A68A0(ptr);
|
||||
}
|
||||
|
||||
extern s32 sub_800E700(s32);
|
||||
extern bool8 AddShadowSprite(s32 species, DungeonPos* a2, axdata* a3);
|
||||
|
||||
void sub_80A74F0(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_, s32 a3)
|
||||
{
|
||||
s32 a1 = (s16) a1_;
|
||||
s32 a2 = (s8) a2_;
|
||||
|
||||
if (a3 < 0) {
|
||||
if (a1 != 0x1C0) {
|
||||
a3 = sub_800E700(a1);
|
||||
}
|
||||
else {
|
||||
a3 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
sub_80A7040(ptr, a1, a2, a3);
|
||||
}
|
||||
|
||||
void sub_80A7524(struct UnkGroundSpriteStruct *ptr, s32 monsterId_, PixelPos *pixelPosArg, s32 a3)
|
||||
{
|
||||
PixelPos pixelPosSp;
|
||||
DungeonPos pos;
|
||||
|
||||
s32 monsterId = (s16) monsterId_;
|
||||
if (sub_80A7094(ptr, &pixelPosSp, pixelPosArg, a3)) {
|
||||
if (ptr->unk5C != -1) {
|
||||
PixelPos pixelPosSp2;
|
||||
switch (ptr->unk60) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
sub_800569C(&pos, &ptr->axdata, ptr->unk60);
|
||||
pixelPosSp2.x = pos.x;
|
||||
pixelPosSp2.y = pos.y;
|
||||
sub_80A7310(ptr, pixelPosArg, &pixelPosSp2, a3);
|
||||
break;
|
||||
default:
|
||||
sub_80A7310(ptr, pixelPosArg, NULL, a3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ptr->flags_0x50 & 0x100) {
|
||||
DungeonPos shadowPos = {pixelPosSp.x, pixelPosSp.y};
|
||||
AddShadowSprite(monsterId, &shadowPos, &ptr->axdata);
|
||||
}
|
||||
sub_80A7310(ptr, pixelPosArg, NULL, a3);
|
||||
}
|
||||
}
|
||||
|
||||
struct GroundObjectKind
|
||||
{
|
||||
s8 unk0;
|
||||
u16 unk2;
|
||||
const char *fileName;
|
||||
};
|
||||
|
||||
extern const struct GroundObjectKind gGroundObjectKinds[];
|
||||
extern const struct GroundObjectKind gUnknown_8117E8C[];
|
||||
|
||||
void sub_80A75CC(struct UnkGroundSpriteStruct *ptr, s32 unused, s32 a2_, s32 a3)
|
||||
{
|
||||
struct UnkGroundSpriteSubStructx48 sp;
|
||||
s32 a2 = (s16) a2_;
|
||||
const struct GroundObjectKind *objKind = &gGroundObjectKinds[a2];
|
||||
OpenedFile *file = NULL;
|
||||
|
||||
sp.unk0 = objKind->unk0;
|
||||
sp.unk2 = objKind->unk2;
|
||||
if (objKind->fileName != 0) {
|
||||
file = OpenFile(objKind->fileName, &gOrnamentFileArchive);
|
||||
GetFileDataPtr(file, 0);
|
||||
sp.axmain = (axmain *) file->data;
|
||||
}
|
||||
else {
|
||||
sp.axmain = NULL;
|
||||
}
|
||||
sub_80A67CC(ptr, &sp, a3);
|
||||
ptr->unk54 = file;
|
||||
if (ptr->unk52 >= 0) {
|
||||
sub_80A6EFC(ptr, 0x800, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A7658(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
sub_80A68A0(ptr);
|
||||
}
|
||||
|
||||
void sub_80A7664(struct UnkGroundSpriteStruct *ptr, PixelPos *pixelPos, s32 a3)
|
||||
{
|
||||
sub_80A7094(ptr, NULL, pixelPos, a3);
|
||||
sub_80A7310(ptr, pixelPos, NULL, a3);
|
||||
}
|
||||
|
||||
// Identical to sub_80A75CC, except uses a different table.
|
||||
void sub_80A7688(struct UnkGroundSpriteStruct *ptr, s32 unused, s32 a2_, s32 a3)
|
||||
{
|
||||
struct UnkGroundSpriteSubStructx48 sp;
|
||||
s32 a2 = (s16) a2_;
|
||||
const struct GroundObjectKind *objKind = &gUnknown_8117E8C[a2];
|
||||
OpenedFile *file = NULL;
|
||||
|
||||
sp.unk0 = objKind->unk0;
|
||||
sp.unk2 = objKind->unk2;
|
||||
if (objKind->fileName != 0) {
|
||||
file = OpenFile(objKind->fileName, &gOrnamentFileArchive);
|
||||
GetFileDataPtr(file, 0);
|
||||
sp.axmain = (axmain *) file->data;
|
||||
}
|
||||
else {
|
||||
sp.axmain = NULL;
|
||||
}
|
||||
sub_80A67CC(ptr, &sp, a3);
|
||||
ptr->unk54 = file;
|
||||
if (ptr->unk52 >= 0) {
|
||||
sub_80A6EFC(ptr, 0x800, 0);
|
||||
}
|
||||
}
|
||||
|
||||
12
src/sprite.c
12
src/sprite.c
@@ -647,7 +647,7 @@ const RGB *sub_8005674(const EfoFileData *a0, s32 vramIdx)
|
||||
}
|
||||
|
||||
// arm9.bin::02001894
|
||||
void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2)
|
||||
void sub_800569C(DungeonPos *a0, axdata *a1, u8 a2)
|
||||
{
|
||||
DungeonPos *ptr;
|
||||
DungeonPos *ptr2;
|
||||
@@ -656,11 +656,11 @@ void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2)
|
||||
a0->x = 0;
|
||||
a0->y = 0;
|
||||
|
||||
if (!(a1->axdata.flags >> 15) || a2 >= 4)
|
||||
if (!(a1->flags >> 15) || a2 >= 4)
|
||||
return;
|
||||
|
||||
if (a1->axdata.positions != NULL) {
|
||||
ptr = &((DungeonPos*)a1->axdata.positions)[a1->axdata.sub1.poseId * 4];
|
||||
if (a1->positions != NULL) {
|
||||
ptr = &((DungeonPos*)a1->positions)[a1->sub1.poseId * 4];
|
||||
ptr2 = &ptr[a2];
|
||||
if (*&ptr2->x == 99 && *&ptr2->y == 99) {
|
||||
a0->x = 99;
|
||||
@@ -668,8 +668,8 @@ void sub_800569C(DungeonPos *a0, axObject *a1, u8 a2)
|
||||
}
|
||||
else {
|
||||
ptr3 = &ptr[a2];
|
||||
a0->x = a1->axdata.sub1.offset.x + ptr3->x;
|
||||
a0->y = a1->axdata.sub1.offset.y + ptr3->y;
|
||||
a0->x = a1->sub1.offset.x + ptr3->x;
|
||||
a0->y = a1->sub1.offset.y + ptr3->y;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user