mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-10 18:15:45 -05:00
sub_80A69FC
This commit is contained in:
@@ -7,449 +7,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start IsOnscreen_80A675C
|
||||
IsOnscreen_80A675C:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r6, r1, 0
|
||||
mov r0, sp
|
||||
bl sub_809D248
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080A678C
|
||||
ldr r1, [r6]
|
||||
cmp r1, 0
|
||||
bge _080A6776
|
||||
adds r1, 0xFF
|
||||
_080A6776:
|
||||
asrs r1, 8
|
||||
ldr r0, [sp]
|
||||
subs r4, r1, r0
|
||||
ldr r1, [r6, 0x4]
|
||||
cmp r1, 0
|
||||
bge _080A6784
|
||||
adds r1, 0xFF
|
||||
_080A6784:
|
||||
asrs r1, 8
|
||||
ldr r0, [sp, 0x4]
|
||||
subs r5, r1, r0
|
||||
b _080A67A0
|
||||
_080A678C:
|
||||
ldr r0, [r6]
|
||||
cmp r0, 0
|
||||
bge _080A6794
|
||||
adds r0, 0xFF
|
||||
_080A6794:
|
||||
asrs r4, r0, 8
|
||||
ldr r1, [r6, 0x4]
|
||||
cmp r1, 0
|
||||
bge _080A679E
|
||||
adds r1, 0xFF
|
||||
_080A679E:
|
||||
asrs r5, r1, 8
|
||||
_080A67A0:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x40
|
||||
ldr r0, _080A67BC
|
||||
cmp r1, r0
|
||||
bhi _080A67C0
|
||||
movs r0, 0x10
|
||||
negs r0, r0
|
||||
cmp r5, r0
|
||||
blt _080A67C0
|
||||
cmp r5, 0xCF
|
||||
bgt _080A67C0
|
||||
movs r0, 0x1
|
||||
b _080A67C2
|
||||
.align 2, 0
|
||||
_080A67BC: .4byte 0x0000016f
|
||||
_080A67C0:
|
||||
movs r0, 0
|
||||
_080A67C2:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end IsOnscreen_80A675C
|
||||
|
||||
thumb_func_start sub_80A67CC
|
||||
sub_80A67CC:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r7, 0
|
||||
cmp r5, 0
|
||||
beq _080A67E2
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
ble _080A67E2
|
||||
movs r7, 0x1
|
||||
_080A67E2:
|
||||
adds r0, r2, 0
|
||||
bl sub_80A65E0
|
||||
adds r1, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
adds r0, r4, 0
|
||||
bl sub_80A65F0
|
||||
movs r1, 0
|
||||
str r1, [r4, 0x74]
|
||||
str r1, [r4, 0x78]
|
||||
movs r6, 0x1
|
||||
negs r6, r6
|
||||
str r6, [r4, 0x7C]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x70
|
||||
strb r1, [r0]
|
||||
subs r0, 0x4
|
||||
strh r1, [r0]
|
||||
adds r0, 0x2
|
||||
strh r1, [r0]
|
||||
adds r2, r4, 0
|
||||
adds r2, 0x52
|
||||
ldr r0, _080A6884
|
||||
strh r0, [r2]
|
||||
str r1, [r4, 0x54]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x64
|
||||
strh r1, [r0]
|
||||
adds r2, 0x14
|
||||
adds r0, r6, 0
|
||||
adds r3, r0, 0
|
||||
strh r0, [r2]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x68
|
||||
strh r1, [r0]
|
||||
subs r0, 0x10
|
||||
strh r1, [r0]
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x5A
|
||||
movs r0, 0xFF
|
||||
strb r0, [r1]
|
||||
str r6, [r4, 0x5C]
|
||||
str r6, [r4, 0x60]
|
||||
cmp r7, 0
|
||||
beq _080A6888
|
||||
ldr r0, [r5]
|
||||
ldr r1, [r5, 0x4]
|
||||
str r0, [r4, 0x48]
|
||||
str r1, [r4, 0x4C]
|
||||
adds r5, r4, 0
|
||||
adds r5, 0x48
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_80A68F8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080A689A
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x50
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x80
|
||||
lsls r0, 5
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080A689A
|
||||
adds r0, r5, 0
|
||||
bl sub_80A6CF4
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080A689A
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
adds r2, r6, 0
|
||||
bl sub_80A68F8
|
||||
b _080A689A
|
||||
.align 2, 0
|
||||
_080A6884: .4byte 0x0000ffff
|
||||
_080A6888:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x48
|
||||
ldrh r0, [r1]
|
||||
orrs r0, r3
|
||||
strh r0, [r1]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x4A
|
||||
strh r7, [r0]
|
||||
str r7, [r4, 0x4C]
|
||||
_080A689A:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A67CC
|
||||
|
||||
thumb_func_start sub_80A68A0
|
||||
sub_80A68A0:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
adds r0, 0x50
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080A68CE
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x58
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
beq _080A68CE
|
||||
ldr r1, [r4, 0x5C]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
beq _080A68CE
|
||||
adds r0, r1, 0
|
||||
bl sub_800DC14
|
||||
_080A68CE:
|
||||
ldr r0, [r4, 0x54]
|
||||
cmp r0, 0
|
||||
beq _080A68DC
|
||||
bl CloseFile
|
||||
movs r0, 0
|
||||
str r0, [r4, 0x54]
|
||||
_080A68DC:
|
||||
adds r0, r4, 0
|
||||
bl sub_80A69FC
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A68A0
|
||||
|
||||
thumb_func_start sub_80A68E8
|
||||
sub_80A68E8:
|
||||
push {lr}
|
||||
movs r0, 0x15
|
||||
_080A68EC:
|
||||
subs r0, 0x1
|
||||
cmp r0, 0
|
||||
bge _080A68EC
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A68E8
|
||||
|
||||
thumb_func_start sub_80A68F8
|
||||
sub_80A68F8:
|
||||
push {r4-r7,lr}
|
||||
mov r12, r0
|
||||
adds r5, r2, 0
|
||||
ldr r0, _080A6924
|
||||
ldr r4, [r0]
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, r5
|
||||
blt _080A6956
|
||||
adds r5, r0, 0
|
||||
movs r3, 0
|
||||
ldr r0, [r4]
|
||||
mov r6, r12
|
||||
adds r6, 0x52
|
||||
mov r7, r12
|
||||
adds r7, 0x64
|
||||
cmp r0, 0
|
||||
bne _080A6928
|
||||
movs r2, 0x1
|
||||
cmp r2, r5
|
||||
blt _080A692A
|
||||
b _080A6986
|
||||
.align 2, 0
|
||||
_080A6924: .4byte gUnknown_3001B7C
|
||||
_080A6928:
|
||||
movs r2, 0
|
||||
_080A692A:
|
||||
adds r0, r3, 0x1
|
||||
lsls r0, 16
|
||||
asrs r3, r0, 16
|
||||
adds r4, 0xC
|
||||
cmp r3, 0x15
|
||||
bgt _080A6986
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _080A6928
|
||||
adds r2, 0x1
|
||||
cmp r2, r5
|
||||
blt _080A692A
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
subs r0, 0xC
|
||||
subs r4, r0
|
||||
adds r0, r3, 0x1
|
||||
subs r0, r2
|
||||
lsls r0, 16
|
||||
asrs r3, r0, 16
|
||||
b _080A6986
|
||||
_080A6956:
|
||||
movs r3, 0x15
|
||||
adds r4, 0xFC
|
||||
ldr r0, [r4]
|
||||
mov r6, r12
|
||||
adds r6, 0x52
|
||||
mov r7, r12
|
||||
adds r7, 0x64
|
||||
cmp r0, 0
|
||||
bne _080A696C
|
||||
movs r2, 0x1
|
||||
b _080A6982
|
||||
_080A696C:
|
||||
movs r2, 0
|
||||
_080A696E:
|
||||
subs r0, r3, 0x1
|
||||
lsls r0, 16
|
||||
asrs r3, r0, 16
|
||||
subs r4, 0xC
|
||||
cmp r3, 0
|
||||
blt _080A6986
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _080A696C
|
||||
adds r2, 0x1
|
||||
_080A6982:
|
||||
cmp r2, r5
|
||||
blt _080A696E
|
||||
_080A6986:
|
||||
cmp r2, r5
|
||||
blt _080A69C4
|
||||
strh r3, [r6]
|
||||
strh r5, [r7]
|
||||
movs r0, 0x1
|
||||
str r0, [r4]
|
||||
mov r0, r12
|
||||
str r0, [r4, 0x8]
|
||||
ldrh r1, [r1, 0x2]
|
||||
bl GroundSprite_ExtendPaletteAdd
|
||||
cmp r5, 0x1
|
||||
ble _080A69B2
|
||||
movs r2, 0x2
|
||||
adds r0, r4, 0
|
||||
adds r0, 0xC
|
||||
subs r1, r5, 0x1
|
||||
_080A69A8:
|
||||
str r2, [r0]
|
||||
adds r0, 0xC
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _080A69A8
|
||||
_080A69B2:
|
||||
ldr r1, _080A69C0
|
||||
ldr r0, [r1]
|
||||
subs r0, r5
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
b _080A69EC
|
||||
.align 2, 0
|
||||
_080A69C0: .4byte gUnknown_2039DD4
|
||||
_080A69C4:
|
||||
ldr r1, _080A69F4
|
||||
movs r0, 0
|
||||
strb r0, [r1]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
mov r1, r12
|
||||
str r0, [r1, 0x7C]
|
||||
mov r0, r12
|
||||
adds r0, 0x70
|
||||
movs r1, 0
|
||||
strb r1, [r0]
|
||||
ldr r0, _080A69F8
|
||||
strh r0, [r6]
|
||||
strh r1, [r7]
|
||||
mov r0, r12
|
||||
adds r0, 0x6C
|
||||
strh r1, [r0]
|
||||
adds r0, 0x2
|
||||
strh r1, [r0]
|
||||
movs r0, 0
|
||||
_080A69EC:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080A69F4: .4byte gUnknown_2039DD0
|
||||
_080A69F8: .4byte 0x0000ffff
|
||||
thumb_func_end sub_80A68F8
|
||||
|
||||
thumb_func_start sub_80A69FC
|
||||
sub_80A69FC:
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r7, r6, 0
|
||||
adds r7, 0x52
|
||||
movs r0, 0
|
||||
ldrsh r4, [r7, r0]
|
||||
ldr r0, _080A6A80
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 2
|
||||
ldr r0, [r0]
|
||||
adds r5, r0, r1
|
||||
cmp r4, 0
|
||||
blt _080A6A7A
|
||||
adds r0, r6, 0
|
||||
bl GroundSprite_ExtendPaletteDelete
|
||||
movs r0, 0
|
||||
str r0, [r5, 0x8]
|
||||
str r0, [r5]
|
||||
adds r5, 0xC
|
||||
ldr r1, _080A6A84
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x1
|
||||
str r0, [r1]
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 16
|
||||
asrs r4, r0, 16
|
||||
adds r6, 0x64
|
||||
mov r12, r6
|
||||
cmp r4, 0x15
|
||||
bgt _080A6A6A
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0x2
|
||||
bne _080A6A6A
|
||||
movs r6, 0
|
||||
adds r2, r1, 0
|
||||
lsls r1, r4, 16
|
||||
movs r0, 0x80
|
||||
lsls r0, 9
|
||||
adds r1, r0
|
||||
adds r3, r0, 0
|
||||
_080A6A50:
|
||||
str r6, [r5]
|
||||
adds r5, 0xC
|
||||
ldr r0, [r2]
|
||||
adds r0, 0x1
|
||||
str r0, [r2]
|
||||
adds r0, r1, 0
|
||||
adds r1, r3
|
||||
asrs r4, r0, 16
|
||||
cmp r4, 0x15
|
||||
bgt _080A6A6A
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0x2
|
||||
beq _080A6A50
|
||||
_080A6A6A:
|
||||
ldr r0, _080A6A88
|
||||
strh r0, [r7]
|
||||
movs r0, 0
|
||||
mov r1, r12
|
||||
strh r0, [r1]
|
||||
ldr r1, _080A6A8C
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
_080A6A7A:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A6A80: .4byte gUnknown_3001B7C
|
||||
_080A6A84: .4byte gUnknown_2039DD4
|
||||
_080A6A88: .4byte 0x0000ffff
|
||||
_080A6A8C: .4byte gUnknown_2039DD0
|
||||
thumb_func_end sub_80A69FC
|
||||
|
||||
thumb_func_start GroundSprite_ExtendPaletteAdd
|
||||
GroundSprite_ExtendPaletteAdd:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -1,12 +1,48 @@
|
||||
#ifndef GUARD_GROUND_SPRITE_H
|
||||
#define GUARD_GROUND_SPRITE_H
|
||||
|
||||
#include "structs/sprite_oam.h"
|
||||
|
||||
// TODO: Clean up these structs
|
||||
|
||||
struct UnkGroundSpriteSubStructx48
|
||||
{
|
||||
s16 unk0;
|
||||
u16 unk2;
|
||||
s32 unk4;
|
||||
};
|
||||
|
||||
struct UnkGroundSpriteStruct
|
||||
{
|
||||
u16 unk0;
|
||||
u8 fill2[0x3a];
|
||||
unkStruct_2039DB0 unk3C;
|
||||
struct UnkGroundSpriteSubStructx48 unk48;
|
||||
u16 unk50;
|
||||
s16 unk52;
|
||||
OpenedFile *unk54;
|
||||
s16 unk58;
|
||||
u8 unk5A;
|
||||
s32 unk5C;
|
||||
s32 unk60;
|
||||
u16 unk64;
|
||||
s16 unk66;
|
||||
u16 unk68;
|
||||
u16 unk6A;
|
||||
u16 unk6C;
|
||||
u16 unk6E;
|
||||
u8 unk70;
|
||||
s32 unk74;
|
||||
s32 unk78;
|
||||
s32 unk7C;
|
||||
};
|
||||
|
||||
// size: 0xC
|
||||
typedef struct unkStruct_3001B7C_sub0
|
||||
{
|
||||
u32 unk0;
|
||||
s32 unk4;
|
||||
u32 unk8;
|
||||
struct UnkGroundSpriteStruct *unk8;
|
||||
} unkStruct_3001B7C_sub0;
|
||||
|
||||
// size: 0x4
|
||||
@@ -16,13 +52,15 @@ typedef struct unkStruct_3001B7C_sub108
|
||||
s16 unk2;
|
||||
} unkStruct_3001B7C_sub108;
|
||||
|
||||
#define UNK_3001B7C_SUB0_COUNT 22
|
||||
|
||||
// size: 0x110
|
||||
typedef struct unkStruct_3001B7C
|
||||
{
|
||||
unkStruct_3001B7C_sub0 unk0[22];
|
||||
unkStruct_3001B7C_sub0 unk0[UNK_3001B7C_SUB0_COUNT];
|
||||
unkStruct_3001B7C_sub108 unk108[2];
|
||||
} unkStruct_3001B7C;
|
||||
|
||||
void GroundSprite_Reset(s16);
|
||||
|
||||
#endif // GUARD_GROUND_SPRITE_H
|
||||
#endif // GUARD_GROUND_SPRITE_H
|
||||
|
||||
@@ -206,23 +206,6 @@ u16 sub_80A65E0(u32 a0)
|
||||
return (a0 >> 16) & 0x337F;
|
||||
}
|
||||
|
||||
// TODO: This struct should probable be merged with an already existing one? Or
|
||||
struct UnkGroundSpriteStruct
|
||||
{
|
||||
u16 unk0;
|
||||
u8 fill2[0x3a];
|
||||
unkStruct_2039DB0 unk3C;
|
||||
s16 unk48;
|
||||
u8 fill4A[6];
|
||||
u16 unk50;
|
||||
s16 unk52;
|
||||
u8 fill54[4];
|
||||
s16 unk58;
|
||||
u32 unk5C;
|
||||
u8 fill60[0x6a-0x60];
|
||||
u16 unk6A;
|
||||
};
|
||||
|
||||
void sub_80A65F0(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
{
|
||||
ptr->unk50 = a1;
|
||||
@@ -249,7 +232,7 @@ void sub_80A6688(struct UnkGroundSpriteStruct *ptr, s32 a0)
|
||||
|
||||
bool8 SpriteHasPokemonSize_80A66A4(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
return (ptr->unk48 > 0);
|
||||
return (ptr->unk48.unk0 > 0);
|
||||
}
|
||||
|
||||
UNUSED static bool8 sub_80A66BC(struct UnkGroundSpriteStruct *ptr)
|
||||
@@ -262,7 +245,7 @@ UNUSED static bool8 sub_80A66BC(struct UnkGroundSpriteStruct *ptr)
|
||||
|
||||
bool8 sub_80A66D4(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
if (ptr->unk52 < 0 && ptr->unk48 > 0)
|
||||
if (ptr->unk52 < 0 && ptr->unk48.unk0 > 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -290,3 +273,181 @@ bool8 sub_80A671C(struct UnkGroundSpriteStruct *ptr)
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
extern u8 sub_809D248(PixelPos *r0);
|
||||
|
||||
bool8 IsOnscreen_80A675C(struct UnkGroundSpriteStruct *ptr, PixelPos *pixPosArg)
|
||||
{
|
||||
PixelPos result;
|
||||
PixelPos pixelPos;
|
||||
|
||||
if (sub_809D248(&pixelPos)) {
|
||||
result.x = (pixPosArg->x / 256) - pixelPos.x;
|
||||
result.y = (pixPosArg->y / 256) - pixelPos.y;
|
||||
}
|
||||
else {
|
||||
result.x = (pixPosArg->x / 256);
|
||||
result.y = (pixPosArg->y / 256);
|
||||
}
|
||||
|
||||
if (result.x >= -64 && result.x <= 303 && result.y >= -16 && result.y <= 207) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80A68F8(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2);
|
||||
bool8 sub_80A6CF4(struct UnkGroundSpriteSubStructx48 *a0);
|
||||
void sub_80A69FC(struct UnkGroundSpriteStruct *ptr);
|
||||
|
||||
void sub_80A67CC(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2)
|
||||
{
|
||||
bool8 r7;
|
||||
|
||||
if (a1 != NULL && a1->unk0 > 0) {
|
||||
r7 = TRUE;
|
||||
}
|
||||
else {
|
||||
r7 = FALSE;
|
||||
}
|
||||
|
||||
sub_80A65F0(ptr, sub_80A65E0(a2));
|
||||
ptr->unk74 = 0;
|
||||
ptr->unk78 = 0;
|
||||
ptr->unk7C = -1;
|
||||
ptr->unk70 = 0;
|
||||
ptr->unk6C = 0;
|
||||
ptr->unk6E = 0;
|
||||
ptr->unk52 = -1;
|
||||
ptr->unk54 = NULL;
|
||||
ptr->unk64 = 0;
|
||||
ptr->unk66 = -1;
|
||||
ptr->unk68 = 0;
|
||||
ptr->unk58 = 0;
|
||||
ptr->unk5A = 0xFF;
|
||||
ptr->unk5C = -1;
|
||||
ptr->unk60 = -1;
|
||||
if (r7) {
|
||||
ptr->unk48 = *a1;
|
||||
if (!sub_80A68F8(ptr, &ptr->unk48, -1) && !(ptr->unk50 & 0x1000) && sub_80A6CF4(&ptr->unk48)) {
|
||||
sub_80A68F8(ptr, &ptr->unk48, -1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ptr->unk48.unk0 = -1;
|
||||
ptr->unk48.unk2 = 0;
|
||||
ptr->unk48.unk4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A68A0(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
if ((ptr->unk50 & 0x200) && ptr->unk58 != 0 && ptr->unk5C != -1) {
|
||||
sub_800DC14(ptr->unk5C);
|
||||
}
|
||||
if (ptr->unk54 != NULL) {
|
||||
CloseFile(ptr->unk54);
|
||||
ptr->unk54 = NULL;
|
||||
}
|
||||
sub_80A69FC(ptr);
|
||||
}
|
||||
|
||||
// I guess the code inside the loop was commented out or under an ifdef.
|
||||
UNUSED static void sub_80A68E8(void)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < UNK_3001B7C_SUB0_COUNT; i++) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16);
|
||||
void GroundSprite_ExtendPaletteDelete(struct UnkGroundSpriteStruct *ptr);
|
||||
|
||||
bool8 sub_80A68F8(struct UnkGroundSpriteStruct *ptr, struct UnkGroundSpriteSubStructx48 *a1, s32 a2)
|
||||
{
|
||||
s32 id, count;
|
||||
unkStruct_3001B7C_sub0 *unkPtr = &gUnknown_3001B7C->unk0[0];
|
||||
|
||||
if (a1->unk0 >= a2) {
|
||||
a2 = a1->unk0;
|
||||
count = 0;
|
||||
for (id = 0; id < UNK_3001B7C_SUB0_COUNT; id = (s16)(id + 1), unkPtr++) {
|
||||
if (unkPtr->unk0 == 0) {
|
||||
if (++count >= a2) {
|
||||
unkPtr -= count - 1;
|
||||
id = (s16) (id - (count - 1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
count = 0;
|
||||
id = UNK_3001B7C_SUB0_COUNT - 1;
|
||||
unkPtr = &gUnknown_3001B7C->unk0[UNK_3001B7C_SUB0_COUNT - 1];
|
||||
for (; id >= 0; id = (s16)(id - 1), unkPtr--) {
|
||||
if (unkPtr->unk0 == 0) {
|
||||
if (++count >= a2) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count >= a2) {
|
||||
s32 i;
|
||||
ptr->unk52 = id;
|
||||
ptr->unk64 = a2;
|
||||
unkPtr->unk0 = 1;
|
||||
unkPtr->unk8 = ptr;
|
||||
GroundSprite_ExtendPaletteAdd(ptr, a1->unk2);
|
||||
for (i = 1; i < a2; i++) {
|
||||
unkPtr[i].unk0 = 2;
|
||||
}
|
||||
|
||||
gUnknown_2039DD4 -= a2;
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
gUnknown_2039DD0 = 0;
|
||||
ptr->unk7C = -1;
|
||||
ptr->unk70 = 0;
|
||||
ptr->unk52 = -1;
|
||||
ptr->unk64 = 0;
|
||||
ptr->unk6C = 0;
|
||||
ptr->unk6E = 0;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A69FC(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
s32 id = ptr->unk52;
|
||||
unkStruct_3001B7C_sub0 *unkPtr = &gUnknown_3001B7C->unk0[id];
|
||||
|
||||
if (id >= 0) {
|
||||
GroundSprite_ExtendPaletteDelete(ptr);
|
||||
unkPtr->unk8 = NULL;
|
||||
unkPtr->unk0 = 0;
|
||||
unkPtr++;
|
||||
gUnknown_2039DD4++;
|
||||
id = (s16)(id + 1);
|
||||
for (; id < UNK_3001B7C_SUB0_COUNT && unkPtr->unk0 == 2; id = (s16)(id + 1)) {
|
||||
unkPtr->unk0 = 0;
|
||||
unkPtr++;
|
||||
gUnknown_2039DD4++;
|
||||
}
|
||||
|
||||
ptr->unk52 = -1;
|
||||
ptr->unk64 = 0;
|
||||
gUnknown_2039DD0 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user