mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 07:11:53 -04:00
758 lines
17 KiB
C
758 lines
17 KiB
C
#include "global.h"
|
|
#include "items.h"
|
|
#include "memory.h"
|
|
#include "game_options.h"
|
|
#include "event_flag.h"
|
|
#include "ground_main.h"
|
|
#include "code_80A26CC.h"
|
|
#include "code_800D090.h"
|
|
#include "code_80118A4.h"
|
|
#include "string_format.h"
|
|
#include "input.h"
|
|
|
|
struct unkStruct_3001B68
|
|
{
|
|
u32 unk0;
|
|
u32 unk4;
|
|
u16 unk8;
|
|
u16 unkA;
|
|
u8 unkC;
|
|
u8 unkD;
|
|
u8 unkE;
|
|
u32 unk10;
|
|
s16 unk14;
|
|
s16 unk16;
|
|
u8 unk18;
|
|
u8 unk19;
|
|
u32 unk1C;
|
|
u8 unk20;
|
|
};
|
|
|
|
IWRAM_INIT struct unkStruct_3001B68 *gUnknown_3001B68 = {NULL};
|
|
|
|
|
|
struct unkStruct_20399E0
|
|
{
|
|
u32 unk0;
|
|
s32 unk4;
|
|
u32 unk8;
|
|
};
|
|
|
|
extern struct unkStruct_20399E0 *gUnknown_20399E0;
|
|
|
|
|
|
void sub_809C63C();
|
|
u8 sub_809C740(void);
|
|
void nullsub_107();
|
|
void nullsub_108();
|
|
void nullsub_109();
|
|
void nullsub_110();
|
|
void nullsub_111();
|
|
void nullsub_112();
|
|
void nullsub_113();
|
|
void nullsub_114();
|
|
void nullsub_115();
|
|
void nullsub_116();
|
|
|
|
extern const char gUnknown_8116390[];
|
|
extern const char gUnknown_811636C[];
|
|
extern const char gUnknown_811633C[];
|
|
|
|
EWRAM_INIT const char *gUnknown_203B4A0[3] = {gUnknown_8116390, gUnknown_811636C, gUnknown_811633C};
|
|
|
|
void sub_809C5C4(void)
|
|
{
|
|
gUnknown_3001B68 = MemoryAlloc(sizeof(struct unkStruct_3001B68), 6);
|
|
gUnknown_3001B68->unk0 = 0;
|
|
gUnknown_3001B68->unk4 = 0;
|
|
gUnknown_3001B68->unk8 = 0;
|
|
gUnknown_3001B68->unkA = 0;
|
|
gUnknown_3001B68->unkD = 0;
|
|
gUnknown_3001B68->unkE = 0;
|
|
gUnknown_3001B68->unk10 = 0;
|
|
gUnknown_3001B68->unk14 = 0xffff;
|
|
gUnknown_3001B68->unk16 = 0x23;
|
|
gUnknown_3001B68->unk18 = 0;
|
|
gUnknown_3001B68->unk19 = 0x3f;
|
|
gUnknown_3001B68->unk1C = 0;
|
|
gUnknown_3001B68->unk20 = 0;
|
|
nullsub_107();
|
|
sub_809C63C();
|
|
}
|
|
|
|
void sub_809C618(void)
|
|
{
|
|
sub_809C63C();
|
|
nullsub_107();
|
|
nullsub_108();
|
|
MemoryFree(gUnknown_3001B68);
|
|
gUnknown_3001B68 = NULL;
|
|
}
|
|
|
|
void sub_809C63C(void)
|
|
{
|
|
nullsub_108();
|
|
gUnknown_3001B68->unk1C = 0;
|
|
gUnknown_3001B68->unk20 = 0;
|
|
}
|
|
|
|
void sub_809C658(void)
|
|
{
|
|
switch(gUnknown_3001B68->unkA) {
|
|
case 3:
|
|
nullsub_111();
|
|
nullsub_112();
|
|
nullsub_113();
|
|
break;
|
|
case 4:
|
|
nullsub_114();
|
|
nullsub_115();
|
|
nullsub_116();
|
|
break;
|
|
case 2:
|
|
nullsub_109();
|
|
nullsub_110();
|
|
break;
|
|
case 5:
|
|
nullsub_107();
|
|
nullsub_108();
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
nullsub_107();
|
|
nullsub_108();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void sub_809C6CC(u16 param_1)
|
|
{
|
|
if(gUnknown_3001B68->unk8 != param_1)
|
|
{
|
|
gUnknown_3001B68->unk8 = param_1;
|
|
gUnknown_3001B68->unkE = 0;
|
|
}
|
|
}
|
|
|
|
void sub_809C6EC(void)
|
|
{
|
|
if (sub_8098F88() == 0) {
|
|
if (gGameOptionsRef->unkC == 0) {
|
|
sub_809C6CC(4);
|
|
}
|
|
else {
|
|
sub_809C6CC(3);
|
|
}
|
|
}
|
|
else {
|
|
sub_809C6CC(5);
|
|
}
|
|
}
|
|
|
|
u16 sub_809C724(void)
|
|
{
|
|
return gUnknown_3001B68->unk8;
|
|
}
|
|
|
|
u8 sub_809C730(void)
|
|
{
|
|
return sub_809C740();
|
|
}
|
|
|
|
u8 sub_809C740(void)
|
|
{
|
|
if(gUnknown_3001B68->unk0 == 0)
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
// Called in a number of places, like when the player changes the team leader in sub_80278B4().
|
|
void nullsub_104(void)
|
|
{ }
|
|
|
|
void sub_809C760(void)
|
|
{
|
|
gUnknown_3001B68->unkE = 1;
|
|
}
|
|
|
|
void sub_809C770(s16 param_1, s16 param_2)
|
|
{
|
|
u8 uVar2;
|
|
u8 uVar3;
|
|
s32 iVar5;
|
|
u32 uVar6;
|
|
|
|
s32 param_1_s32;
|
|
s32 param_2_s32;
|
|
|
|
param_1_s32 = param_1;
|
|
param_2_s32 = param_2;
|
|
|
|
if (gUnknown_3001B68->unkE != 0) {
|
|
gUnknown_3001B68->unkE = 0;
|
|
return;
|
|
}
|
|
if (gUnknown_3001B68->unk8 == 0) {
|
|
sub_809C6EC();
|
|
}
|
|
uVar2 = gUnknown_3001B68->unk18;
|
|
uVar3 = gUnknown_3001B68->unk19;
|
|
switch(param_2_s32) {
|
|
case 9:
|
|
uVar2 = sub_8002658(param_1_s32);
|
|
if (uVar2 == 0) {
|
|
return;
|
|
}
|
|
uVar6 = 1;
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 10:
|
|
case 0xb:
|
|
uVar6 = 1;
|
|
uVar2 = 0;
|
|
break;
|
|
case 0x23:
|
|
switch((s16)(param_1_s32)) {
|
|
case 0xA4:
|
|
case 0xA5:
|
|
case 0xA8:
|
|
case 0xA9:
|
|
case 0xAA:
|
|
case 0xAE:
|
|
case 0xAF:
|
|
case 0xB0:
|
|
case 0xB1:
|
|
uVar6 = 0;
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
break;
|
|
case 0x24:
|
|
case 0x25:
|
|
case 0x26:
|
|
uVar6 = 0;
|
|
break;
|
|
default:
|
|
switch((s16)(param_2_s32 - 0xc)) {
|
|
case 1:
|
|
iVar5 = 0;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
iVar5 = 7;
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
iVar5 = 9;
|
|
break;
|
|
case 10:
|
|
iVar5 = 10;
|
|
break;
|
|
case 0xc:
|
|
case 0xd:
|
|
iVar5 = 0xb;
|
|
break;
|
|
case 0xe:
|
|
case 0xf:
|
|
iVar5 = 0xd;
|
|
break;
|
|
case 0x10:
|
|
case 0x11:
|
|
iVar5 = 0xf;
|
|
break;
|
|
case 0x12:
|
|
case 0x13:
|
|
iVar5 = 0x11;
|
|
break;
|
|
case 0x14:
|
|
case 0x15:
|
|
iVar5 = 0x13;
|
|
break;
|
|
case 0x16:
|
|
iVar5 = 0x20;
|
|
break;
|
|
case 0:
|
|
default:
|
|
iVar5 = (s16)GetScriptVarValue(NULL,DUNGEON_ENTER);
|
|
break;
|
|
|
|
}
|
|
if (iVar5 == -1) {
|
|
return;
|
|
}
|
|
uVar3 = sub_80A2740(iVar5);
|
|
uVar6 = 2;
|
|
break;
|
|
}
|
|
if (gUnknown_3001B68->unk10 != uVar6) {
|
|
gUnknown_3001B68->unk0 = 2;
|
|
gUnknown_3001B68->unkC = 1;
|
|
gUnknown_3001B68->unk20 = 1;
|
|
}
|
|
else
|
|
{
|
|
if (uVar6 == 1) {
|
|
if ((uVar2 != gUnknown_3001B68->unk18) ||
|
|
(gUnknown_3001B68->unk14 != param_1_s32)) {
|
|
gUnknown_3001B68->unkC = 1;
|
|
gUnknown_3001B68->unk20 = 1;
|
|
}
|
|
else {
|
|
if ((uVar2 == 0) && (gUnknown_3001B68->unk16 != param_2_s32)) {
|
|
gUnknown_3001B68->unkC = 1;
|
|
}
|
|
}
|
|
}
|
|
else if ((uVar6 == 2) &&
|
|
((uVar3 != gUnknown_3001B68->unk19 || (gUnknown_3001B68->unk16 != param_2_s32))))
|
|
{
|
|
gUnknown_3001B68->unkC = 1;
|
|
gUnknown_3001B68->unk20 = 1;
|
|
}
|
|
}
|
|
if (gUnknown_3001B68->unkC != 0) {
|
|
gUnknown_3001B68->unk10 = uVar6;
|
|
gUnknown_3001B68->unk14 = param_1_s32;
|
|
gUnknown_3001B68->unk16 = param_2_s32;
|
|
gUnknown_3001B68->unk18 = uVar2;
|
|
gUnknown_3001B68->unk19 = uVar3;
|
|
if (gUnknown_3001B68->unk8 != 4) {
|
|
gUnknown_3001B68->unkC = 0;
|
|
gUnknown_3001B68->unk20 = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void nullsub_105(void) {}
|
|
|
|
void sub_809CA20(void)
|
|
{
|
|
u16 *puVar1;
|
|
|
|
if (gUnknown_3001B68->unk0 != 0) {
|
|
gUnknown_3001B68->unk0 = 0;
|
|
gUnknown_3001B68->unk4 = 0x1f;
|
|
gUnknown_3001B68->unkC = 1;
|
|
}
|
|
if (gUnknown_3001B68->unkC != 0) {
|
|
puVar1 = &gUnknown_3001B68->unk8;
|
|
gUnknown_3001B68->unkA = *puVar1;
|
|
if ((*puVar1 == 4) && (gUnknown_3001B68->unk10 == 0)) {
|
|
gUnknown_3001B68->unkA = 2;
|
|
gUnknown_3001B68->unk1C = 0;
|
|
gUnknown_3001B68->unk20 = 0;
|
|
}
|
|
switch(gUnknown_3001B68->unkA) {
|
|
case 3:
|
|
nullsub_111();
|
|
nullsub_113();
|
|
nullsub_112();
|
|
gUnknown_3001B68->unkD = 1;
|
|
break;
|
|
case 4:
|
|
nullsub_114();
|
|
nullsub_115();
|
|
nullsub_116();
|
|
break;
|
|
case 2:
|
|
nullsub_109();
|
|
nullsub_110();
|
|
break;
|
|
case 5:
|
|
nullsub_107();
|
|
nullsub_108();
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
nullsub_107();
|
|
nullsub_108();
|
|
break;
|
|
}
|
|
gUnknown_3001B68->unkC = 0;
|
|
|
|
}
|
|
else {
|
|
switch(gUnknown_3001B68->unkA) {
|
|
case 3:
|
|
nullsub_113();
|
|
break;
|
|
case 4:
|
|
nullsub_116();
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 5:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void nullsub_106(void) {}
|
|
void nullsub_107(void) {}
|
|
void nullsub_108(void) {}
|
|
void nullsub_109(void) {}
|
|
void nullsub_110(void) {}
|
|
void nullsub_111(void) {}
|
|
void nullsub_112(void) {}
|
|
void nullsub_113(void) {}
|
|
void nullsub_114(void) {}
|
|
void nullsub_115(void) {}
|
|
void nullsub_116(void) {}
|
|
|
|
void sub_809CB50(void)
|
|
{
|
|
gUnknown_20399E0 = MemoryAlloc(sizeof(struct unkStruct_20399E0), 6);
|
|
gUnknown_20399E0->unk4 = -1;
|
|
gUnknown_20399E0->unk8 = 0;
|
|
}
|
|
|
|
void sub_809CB74(void)
|
|
{
|
|
MemoryFree(gUnknown_20399E0);
|
|
gUnknown_20399E0 = NULL;
|
|
}
|
|
|
|
|
|
void sub_809CB8C(void)
|
|
{
|
|
ClearScriptVarArray(NULL, STATION_ITEM_TEMP);
|
|
ClearScriptVarArray(NULL, DELIVER_ITEM_TEMP);
|
|
}
|
|
|
|
bool8 HasItemInInventory(u8 item)
|
|
{
|
|
if (FindItemInInventory(item) >= 0)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
extern bool8 ScriptPrintText(s32 a0, s32 a1_, const char *text);
|
|
extern bool8 sub_809124C(u8 id, u8 param_3);
|
|
extern u8 IsTextboxOpen_809A750(void);
|
|
extern u8 sub_809CFE8(u32);
|
|
extern bool8 sub_809B260(s32 *a0);
|
|
extern void GroundMap_ExecuteEvent(s32, s32);
|
|
extern void GroundScriptLockJumpZero(s32 index);
|
|
|
|
extern const u8 gUnknown_81163E4[];
|
|
|
|
struct ItemWithQuantity
|
|
{
|
|
u8 id;
|
|
s16 quantity;
|
|
};
|
|
|
|
static bool8 sub_809CBBC(const struct ItemWithQuantity *itemToAdd, const u8 *maxMoneyStr, const u8 *noItemSpaceStr, const u8 *itemGivenStr)
|
|
{
|
|
char buffer[80];
|
|
|
|
if (itemToAdd->id == ITEM_POKE) {
|
|
int newMoneyAmount;
|
|
sprintfStatic(buffer,gUnknown_81163E4,itemToAdd->quantity,gItemParametersData[ITEM_POKE].name);
|
|
newMoneyAmount = gTeamInventoryRef->teamMoney + itemToAdd->quantity;
|
|
if (newMoneyAmount > MAX_TEAM_MONEY) {
|
|
if (maxMoneyStr != 0) {
|
|
ScriptPrintText(0, -1, maxMoneyStr);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
gTeamInventoryRef->teamMoney = newMoneyAmount;
|
|
}
|
|
else {
|
|
Item item = {0};
|
|
item.quantity = itemToAdd->quantity;
|
|
item.id = itemToAdd->id;
|
|
|
|
sub_8090E14(buffer,&item,0);
|
|
if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) {
|
|
if (noItemSpaceStr != 0) {
|
|
ScriptPrintText(0, -1, noItemSpaceStr);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
sub_809124C(item.id,0);
|
|
FillInventoryGaps();
|
|
}
|
|
|
|
if (itemGivenStr != 0) {
|
|
strcpy(gFormatBuffer_Items[0], buffer);
|
|
ScriptPrintText(0, -1, itemGivenStr);
|
|
xxx_call_play_fanfare_se(0xcb,0x100);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
extern const struct ItemWithQuantity gUnknown_81163BC[];
|
|
|
|
s32 sub_809CC90(s32 tableId)
|
|
{
|
|
const struct ItemWithQuantity *item = &gUnknown_81163BC[tableId];
|
|
if (item->id == ITEM_POKE) {
|
|
if (gTeamInventoryRef->teamMoney + item->quantity > MAX_TEAM_MONEY)
|
|
return 2;
|
|
}
|
|
else {
|
|
if (GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE)
|
|
return 2;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
extern const u8 gUnknown_81163F0[];
|
|
extern const u8 gUnknown_811642C[];
|
|
|
|
s32 sub_809CCDC(u32 tableId, s32 a1)
|
|
{
|
|
s32 strId;
|
|
const struct ItemWithQuantity *item = &gUnknown_81163BC[tableId];
|
|
gUnknown_20399E0->unk4 = -1;
|
|
gUnknown_20399E0->unk8 = 0;
|
|
|
|
if (a1 > 99) {
|
|
strId = 2;
|
|
}
|
|
else if (a1 > 1) {
|
|
strId = 1;
|
|
}
|
|
else {
|
|
strId = 0;
|
|
}
|
|
|
|
if (sub_809CBBC(item, gUnknown_81163F0, gUnknown_811642C, gUnknown_203B4A0[strId])) {
|
|
gUnknown_20399E0->unk4 = tableId;
|
|
gUnknown_20399E0->unk8 = a1;
|
|
return 1;
|
|
}
|
|
else {
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
s32 sub_809CD48(void)
|
|
{
|
|
if (IsTextboxOpen_809A750()) {
|
|
return 0;
|
|
}
|
|
return 3;
|
|
}
|
|
|
|
void nullsub_117(void) {}
|
|
void nullsub_118(void) {}
|
|
|
|
// TODO: merge this struct with other ground-related structs (if possible, otherwise just give a fitting name)
|
|
struct Tempsub_809CD68Struct
|
|
{
|
|
s32 unk0;
|
|
s32 unk4;
|
|
s32 unk8;
|
|
u8 unkC;
|
|
s32 unk10;
|
|
s32 unk14;
|
|
u8 unk18;
|
|
};
|
|
|
|
void sub_809CD68(struct Tempsub_809CD68Struct *dst)
|
|
{
|
|
dst->unk0 = 0;
|
|
dst->unk4 = 0;
|
|
dst->unk10 = -1;
|
|
dst->unk14 = 0;
|
|
dst->unk8 = 0;
|
|
dst->unk18 = 0;
|
|
}
|
|
|
|
void sub_809CD7C(struct Tempsub_809CD68Struct *dst)
|
|
{
|
|
dst->unk0 = 0;
|
|
dst->unk10 = -1;
|
|
dst->unk14 = 0;
|
|
dst->unk8 = 0;
|
|
}
|
|
|
|
void sub_809CD8C(struct Tempsub_809CD68Struct *dst, s32 a1)
|
|
{
|
|
if (a1 == 5) {
|
|
sub_809CD68(dst);
|
|
dst->unk0 = a1;
|
|
}
|
|
else if (dst->unk4 != a1) {
|
|
dst->unk4 = a1;
|
|
dst->unk10 = -1;
|
|
dst->unk14 = 0;
|
|
}
|
|
}
|
|
|
|
s32 sub_809CDB8(struct Tempsub_809CD68Struct *dst)
|
|
{
|
|
s32 ret = dst->unk4;
|
|
if (ret == 0) {
|
|
ret = dst->unk0;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
u32 sub_809CDC8(struct Tempsub_809CD68Struct *strPtr, u32 *r6, s8 *r7, s32 *param_4, u32 param_5, u32 param_6)
|
|
{
|
|
u32 sp_4;
|
|
s32 sp;
|
|
s32 r8;
|
|
|
|
param_4[0] = -1;
|
|
|
|
switch (strPtr->unk0) {
|
|
case 1:
|
|
if (param_6 & 0x2000) {
|
|
sub_809CD68(strPtr);
|
|
strPtr->unk0 = 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (!(param_6 & 0x2000)) {
|
|
sub_809CD68(strPtr);
|
|
strPtr->unk0 = 1;
|
|
}
|
|
break;
|
|
}
|
|
|
|
r8 = strPtr->unk4;
|
|
if (r8 == 0)
|
|
r8 = strPtr->unk0;
|
|
|
|
switch (r8) {
|
|
case 1:
|
|
{
|
|
u16 held = gRealInputs.held;
|
|
u16 pressed = gRealInputs.pressed;
|
|
if (held & DPAD_ANY) {
|
|
if (held & B_BUTTON) {
|
|
strPtr->unk10 = 0;
|
|
}
|
|
else {
|
|
strPtr->unk10 = -1;
|
|
}
|
|
}
|
|
else if (pressed & B_BUTTON) {
|
|
strPtr->unk10 = 0x14;
|
|
}
|
|
else if (strPtr->unk10 > 1) {
|
|
strPtr->unk10--;
|
|
if (!(held & B_BUTTON)) {
|
|
*r6 = 0x13;
|
|
*r7 = -1;
|
|
return 5;
|
|
}
|
|
}
|
|
else {
|
|
strPtr->unk10 = -1;
|
|
}
|
|
|
|
if (pressed & A_BUTTON) {
|
|
*r6 = 10;
|
|
}
|
|
else if (strPtr->unk10 == 0) {
|
|
*r6 = 8;
|
|
}
|
|
else {
|
|
*r6 = 7;
|
|
}
|
|
|
|
*r7 = sub_809CFE8(held);
|
|
return strPtr->unk0;
|
|
}
|
|
case 5:
|
|
if (sub_809B260(&sp)) {
|
|
if (gGameOptionsRef->unkC == 0)
|
|
sub_809C6CC(4);
|
|
else
|
|
sub_809C6CC(3);
|
|
|
|
nullsub_104();
|
|
sub_809CD7C(strPtr);
|
|
strPtr->unk0 = 1;
|
|
|
|
switch (sp) {
|
|
case 3:
|
|
strPtr->unk0 = 4;
|
|
*r6 = 1;
|
|
*r7 = -1;
|
|
return 4;
|
|
case 2:
|
|
strPtr->unk0 = 4;
|
|
sub_8098D80(0x1E);
|
|
*r6 = 1;
|
|
*r7 = -1;
|
|
return strPtr->unk0;
|
|
case 1:
|
|
strPtr->unk0 = 4;
|
|
*r6 = 1;
|
|
*r7 = -1;
|
|
return 4;
|
|
case 4:
|
|
strPtr->unk0 = 4;
|
|
GroundMap_ExecuteEvent(0x45, 0);
|
|
*r6 = 1;
|
|
*r7 = -1;
|
|
return strPtr->unk0;
|
|
}
|
|
GroundScriptLockJumpZero(2);
|
|
}
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
if (sub_809B260(&sp_4)) {
|
|
sub_809CD7C(strPtr);
|
|
strPtr->unk0 = 1;
|
|
return strPtr->unk0;
|
|
}
|
|
break;
|
|
case 2:
|
|
{
|
|
if (strPtr->unk8 >= 1) {
|
|
strPtr->unk8--;
|
|
*r6 = 9;
|
|
*r7 = strPtr->unkC;
|
|
}
|
|
else {
|
|
s32 v;
|
|
u16 held = gRealInputs.held;
|
|
*r6 = 9;
|
|
if (held & 0x40) {
|
|
*r7 = 4;
|
|
}
|
|
else if (held & 0x80) {
|
|
*r7 = 0;
|
|
}
|
|
else {
|
|
*r7 = -1;
|
|
}
|
|
|
|
// TODO: Fix me, this should be a simple -1 comparision, but agbcc doesn't want to cooperate...
|
|
v = strPtr->unkC = *r7;
|
|
if ((v << 0x18) != (0xFF) << 0x18) {
|
|
strPtr->unk8 = 0x20;
|
|
}
|
|
}
|
|
}
|
|
return r8;
|
|
}
|
|
|
|
*r6 = 0;
|
|
*r7 = -1;
|
|
return r8;
|
|
}
|