mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-30 12:58:10 -05:00
sub_809CDC8
This commit is contained in:
@@ -1,445 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_809CCDC
|
||||
sub_809CCDC:
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
adds r4, r1, 0
|
||||
lsls r1, r6, 2
|
||||
ldr r0, _0809CD20
|
||||
adds r5, r1, r0
|
||||
ldr r0, _0809CD24
|
||||
ldr r1, [r0]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [r1, 0x4]
|
||||
movs r0, 0
|
||||
str r0, [r1, 0x8]
|
||||
movs r0, 0x2
|
||||
cmp r4, 0x63
|
||||
bgt _0809CD04
|
||||
movs r0, 0
|
||||
cmp r4, 0x1
|
||||
ble _0809CD04
|
||||
movs r0, 0x1
|
||||
_0809CD04:
|
||||
ldr r1, _0809CD28
|
||||
ldr r2, _0809CD2C
|
||||
ldr r3, _0809CD30
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldr r3, [r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_809CBBC
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0809CD34
|
||||
movs r0, 0x2
|
||||
b _0809CD3E
|
||||
.align 2, 0
|
||||
_0809CD20: .4byte gUnknown_81163BC
|
||||
_0809CD24: .4byte gUnknown_20399E0
|
||||
_0809CD28: .4byte gUnknown_81163F0
|
||||
_0809CD2C: .4byte gUnknown_811642C
|
||||
_0809CD30: .4byte gUnknown_203B4A0
|
||||
_0809CD34:
|
||||
ldr r0, _0809CD44
|
||||
ldr r0, [r0]
|
||||
str r6, [r0, 0x4]
|
||||
str r4, [r0, 0x8]
|
||||
movs r0, 0x1
|
||||
_0809CD3E:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0809CD44: .4byte gUnknown_20399E0
|
||||
thumb_func_end sub_809CCDC
|
||||
|
||||
thumb_func_start sub_809CD48
|
||||
sub_809CD48:
|
||||
push {lr}
|
||||
bl IsTextboxOpen_809A750
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0809CD58
|
||||
movs r0, 0x3
|
||||
b _0809CD5A
|
||||
_0809CD58:
|
||||
movs r0, 0
|
||||
_0809CD5A:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_809CD48
|
||||
|
||||
thumb_func_start nullsub_117
|
||||
nullsub_117:
|
||||
bx lr
|
||||
thumb_func_end nullsub_117
|
||||
|
||||
thumb_func_start nullsub_118
|
||||
nullsub_118:
|
||||
bx lr
|
||||
thumb_func_end nullsub_118
|
||||
|
||||
thumb_func_start sub_809CD68
|
||||
sub_809CD68:
|
||||
movs r2, 0
|
||||
str r2, [r0]
|
||||
str r2, [r0, 0x4]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0, 0x10]
|
||||
str r2, [r0, 0x14]
|
||||
str r2, [r0, 0x8]
|
||||
strb r2, [r0, 0x18]
|
||||
bx lr
|
||||
thumb_func_end sub_809CD68
|
||||
|
||||
thumb_func_start sub_809CD7C
|
||||
sub_809CD7C:
|
||||
movs r2, 0
|
||||
str r2, [r0]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
str r1, [r0, 0x10]
|
||||
str r2, [r0, 0x14]
|
||||
str r2, [r0, 0x8]
|
||||
bx lr
|
||||
thumb_func_end sub_809CD7C
|
||||
|
||||
thumb_func_start sub_809CD8C
|
||||
sub_809CD8C:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
cmp r4, 0x5
|
||||
bne _0809CD9E
|
||||
bl sub_809CD68
|
||||
str r4, [r5]
|
||||
b _0809CDB0
|
||||
_0809CD9E:
|
||||
ldr r0, [r5, 0x4]
|
||||
cmp r0, r4
|
||||
beq _0809CDB0
|
||||
str r4, [r5, 0x4]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [r5, 0x10]
|
||||
movs r0, 0
|
||||
str r0, [r5, 0x14]
|
||||
_0809CDB0:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_809CD8C
|
||||
|
||||
thumb_func_start sub_809CDB8
|
||||
sub_809CDB8:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
ldr r0, [r1, 0x4]
|
||||
cmp r0, 0
|
||||
bne _0809CDC4
|
||||
ldr r0, [r1]
|
||||
_0809CDC4:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_809CDB8
|
||||
|
||||
thumb_func_start sub_809CDC8
|
||||
sub_809CDC8:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
adds r6, r1, 0
|
||||
adds r7, r2, 0
|
||||
ldr r1, [sp, 0x24]
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [r3]
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0x1
|
||||
beq _0809CDEA
|
||||
cmp r0, 0x2
|
||||
beq _0809CDFE
|
||||
b _0809CE12
|
||||
_0809CDEA:
|
||||
movs r0, 0x80
|
||||
lsls r0, 6
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
beq _0809CE12
|
||||
adds r0, r4, 0
|
||||
bl sub_809CD68
|
||||
movs r0, 0x2
|
||||
b _0809CE10
|
||||
_0809CDFE:
|
||||
movs r0, 0x80
|
||||
lsls r0, 6
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
bne _0809CE12
|
||||
adds r0, r4, 0
|
||||
bl sub_809CD68
|
||||
movs r0, 0x1
|
||||
_0809CE10:
|
||||
str r0, [r4]
|
||||
_0809CE12:
|
||||
ldr r0, [r4, 0x4]
|
||||
mov r8, r0
|
||||
cmp r0, 0
|
||||
bne _0809CE1E
|
||||
ldr r1, [r4]
|
||||
mov r8, r1
|
||||
_0809CE1E:
|
||||
mov r0, r8
|
||||
subs r0, 0x1
|
||||
cmp r0, 0x6
|
||||
bls _0809CE28
|
||||
b _0809CFCC
|
||||
_0809CE28:
|
||||
lsls r0, 2
|
||||
ldr r1, _0809CE34
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0809CE34: .4byte _0809CE38
|
||||
.align 2, 0
|
||||
_0809CE38:
|
||||
.4byte _0809CE54
|
||||
.4byte _0809CF74
|
||||
.4byte _0809CFCC
|
||||
.4byte _0809CFCC
|
||||
.4byte _0809CECC
|
||||
.4byte _0809CF5C
|
||||
.4byte _0809CF5C
|
||||
_0809CE54:
|
||||
ldr r0, _0809CE70
|
||||
ldrh r2, [r0]
|
||||
ldrh r1, [r0, 0x2]
|
||||
movs r0, 0xF0
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _0809CE74
|
||||
movs r0, 0x2
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _0809CEA4
|
||||
movs r0, 0
|
||||
b _0809CEA8
|
||||
.align 2, 0
|
||||
_0809CE70: .4byte gRealInputs
|
||||
_0809CE74:
|
||||
movs r3, 0x2
|
||||
adds r0, r1, 0
|
||||
ands r0, r3
|
||||
cmp r0, 0
|
||||
beq _0809CE82
|
||||
movs r0, 0x14
|
||||
b _0809CEA8
|
||||
_0809CE82:
|
||||
ldr r0, [r4, 0x10]
|
||||
cmp r0, 0x1
|
||||
ble _0809CEA4
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0x10]
|
||||
adds r0, r2, 0
|
||||
ands r0, r3
|
||||
cmp r0, 0
|
||||
bne _0809CEAA
|
||||
movs r0, 0x13
|
||||
str r0, [r6]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
adds r0, r1, 0
|
||||
strb r0, [r7]
|
||||
movs r0, 0x5
|
||||
b _0809CFDA
|
||||
_0809CEA4:
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0809CEA8:
|
||||
str r0, [r4, 0x10]
|
||||
_0809CEAA:
|
||||
movs r0, 0x1
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
beq _0809CEB6
|
||||
movs r0, 0xA
|
||||
b _0809CEC2
|
||||
_0809CEB6:
|
||||
ldr r0, [r4, 0x10]
|
||||
cmp r0, 0
|
||||
bne _0809CEC0
|
||||
movs r0, 0x8
|
||||
b _0809CEC2
|
||||
_0809CEC0:
|
||||
movs r0, 0x7
|
||||
_0809CEC2:
|
||||
str r0, [r6]
|
||||
adds r0, r2, 0
|
||||
bl sub_809CFE8
|
||||
b _0809CF4E
|
||||
_0809CECC:
|
||||
mov r0, sp
|
||||
bl sub_809B260
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809CFCC
|
||||
ldr r0, _0809CEEC
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, 0xC]
|
||||
cmp r0, 0
|
||||
bne _0809CEF0
|
||||
movs r0, 0x4
|
||||
bl sub_809C6CC
|
||||
b _0809CEF6
|
||||
.align 2, 0
|
||||
_0809CEEC: .4byte gGameOptionsRef
|
||||
_0809CEF0:
|
||||
movs r0, 0x3
|
||||
bl sub_809C6CC
|
||||
_0809CEF6:
|
||||
bl nullsub_104
|
||||
adds r0, r4, 0
|
||||
bl sub_809CD7C
|
||||
movs r5, 0x1
|
||||
str r5, [r4]
|
||||
ldr r0, [sp]
|
||||
cmp r0, 0x2
|
||||
beq _0809CF1E
|
||||
cmp r0, 0x2
|
||||
bgt _0809CF14
|
||||
cmp r0, 0x1
|
||||
beq _0809CF2A
|
||||
b _0809CF54
|
||||
_0809CF14:
|
||||
cmp r0, 0x3
|
||||
beq _0809CF2A
|
||||
cmp r0, 0x4
|
||||
beq _0809CF3C
|
||||
b _0809CF54
|
||||
_0809CF1E:
|
||||
movs r0, 0x4
|
||||
str r0, [r4]
|
||||
movs r0, 0x1E
|
||||
bl sub_8098D80
|
||||
b _0809CF46
|
||||
_0809CF2A:
|
||||
movs r0, 0x4
|
||||
str r0, [r4]
|
||||
str r5, [r6]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
adds r0, r1, 0
|
||||
strb r0, [r7]
|
||||
movs r0, 0x4
|
||||
b _0809CFDA
|
||||
_0809CF3C:
|
||||
str r0, [r4]
|
||||
movs r0, 0x45
|
||||
movs r1, 0
|
||||
bl GroundMap_ExecuteEvent
|
||||
_0809CF46:
|
||||
str r5, [r6]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
adds r0, r1, 0
|
||||
_0809CF4E:
|
||||
strb r0, [r7]
|
||||
ldr r0, [r4]
|
||||
b _0809CFDA
|
||||
_0809CF54:
|
||||
movs r0, 0x2
|
||||
bl GroundScriptLockJumpZero
|
||||
b _0809CFCC
|
||||
_0809CF5C:
|
||||
add r0, sp, 0x4
|
||||
bl sub_809B260
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0809CFCC
|
||||
adds r0, r4, 0
|
||||
bl sub_809CD7C
|
||||
movs r0, 0x1
|
||||
str r0, [r4]
|
||||
b _0809CFDA
|
||||
_0809CF74:
|
||||
ldr r0, [r4, 0x8]
|
||||
cmp r0, 0
|
||||
ble _0809CF86
|
||||
subs r0, 0x1
|
||||
str r0, [r4, 0x8]
|
||||
movs r0, 0x9
|
||||
str r0, [r6]
|
||||
ldrb r0, [r4, 0xC]
|
||||
b _0809CFD6
|
||||
_0809CF86:
|
||||
ldr r0, _0809CFA0
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x9
|
||||
str r0, [r6]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 16
|
||||
cmp r2, 0
|
||||
beq _0809CFA4
|
||||
movs r0, 0x4
|
||||
b _0809CFB6
|
||||
.align 2, 0
|
||||
_0809CFA0: .4byte gRealInputs
|
||||
_0809CFA4:
|
||||
movs r0, 0x80
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
beq _0809CFB0
|
||||
strb r2, [r7]
|
||||
b _0809CFB8
|
||||
_0809CFB0:
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
adds r0, r1, 0
|
||||
_0809CFB6:
|
||||
strb r0, [r7]
|
||||
_0809CFB8:
|
||||
ldrb r0, [r7]
|
||||
strb r0, [r4, 0xC]
|
||||
lsls r0, 24
|
||||
movs r1, 0xFF
|
||||
lsls r1, 24
|
||||
cmp r0, r1
|
||||
beq _0809CFD8
|
||||
movs r0, 0x20
|
||||
str r0, [r4, 0x8]
|
||||
b _0809CFD8
|
||||
_0809CFCC:
|
||||
movs r0, 0
|
||||
str r0, [r6]
|
||||
movs r1, 0x1
|
||||
negs r1, r1
|
||||
adds r0, r1, 0
|
||||
_0809CFD6:
|
||||
strb r0, [r7]
|
||||
_0809CFD8:
|
||||
mov r0, r8
|
||||
_0809CFDA:
|
||||
add sp, 0x8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_809CDC8
|
||||
|
||||
.align 2,0
|
||||
@@ -337,7 +337,6 @@ SECTIONS {
|
||||
asm/code_8099360.o(.text);
|
||||
src/code_809A560.o(.text);
|
||||
src/code_809C5C4.o(.text);
|
||||
asm/code_809C5C4.o(.text);
|
||||
src/code_809D148.o(.text);
|
||||
src/ground_script.o(.text);
|
||||
src/code_80A26CC.o(.text);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "code_800D090.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "string_format.h"
|
||||
#include "input.h"
|
||||
|
||||
struct unkStruct_3001B68
|
||||
{
|
||||
@@ -439,6 +440,11 @@ bool8 HasItemInInventory(u8 item)
|
||||
|
||||
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[];
|
||||
|
||||
@@ -448,7 +454,7 @@ struct ItemWithQuantity
|
||||
s16 quantity;
|
||||
};
|
||||
|
||||
bool8 sub_809CBBC(const struct ItemWithQuantity *itemToAdd, u8 *maxMoneyStr, u8 *noItemSpaceStr, u8 *itemGivenStr)
|
||||
static bool8 sub_809CBBC(const struct ItemWithQuantity *itemToAdd, const u8 *maxMoneyStr, const u8 *noItemSpaceStr, const u8 *itemGivenStr)
|
||||
{
|
||||
char buffer[80];
|
||||
|
||||
@@ -493,9 +499,9 @@ bool8 sub_809CBBC(const struct ItemWithQuantity *itemToAdd, u8 *maxMoneyStr, u8
|
||||
|
||||
extern const struct ItemWithQuantity gUnknown_81163BC[];
|
||||
|
||||
s32 sub_809CC90(s32 r0)
|
||||
s32 sub_809CC90(s32 tableId)
|
||||
{
|
||||
const struct ItemWithQuantity *item = &gUnknown_81163BC[r0];
|
||||
const struct ItemWithQuantity *item = &gUnknown_81163BC[tableId];
|
||||
if (item->id == ITEM_POKE) {
|
||||
if (gTeamInventoryRef->teamMoney + item->quantity > MAX_TEAM_MONEY)
|
||||
return 2;
|
||||
@@ -506,3 +512,246 @@ s32 sub_809CC90(s32 r0)
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user