mirror of
https://github.com/zeldaret/tmc
synced 2026-06-04 10:48:58 -04:00
Merge pull request #535 from hatal175/sub_080878CC
This commit is contained in:
@@ -1,314 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, #0
|
||||
adds r7, r1, #0
|
||||
bl GetInventoryValue
|
||||
adds r5, r0, #0
|
||||
lsls r1, r6, #3
|
||||
ldr r0, _08054010 @ =gItemMetaData
|
||||
adds r4, r1, r0
|
||||
cmp r5, #0
|
||||
bne _08054014
|
||||
ldrh r0, [r4, #4]
|
||||
mov r8, r0
|
||||
b _08054018
|
||||
.align 2, 0
|
||||
_08054010: .4byte gItemMetaData
|
||||
_08054014:
|
||||
ldrh r2, [r4, #6]
|
||||
mov r8, r2
|
||||
_08054018:
|
||||
adds r0, r6, #0
|
||||
bl ItemIsBottle
|
||||
cmp r0, #0
|
||||
bne _08054034
|
||||
adds r0, r6, #0
|
||||
bl PutItemOnSlot
|
||||
cmp r5, #0
|
||||
bne _08054034
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
_08054034:
|
||||
ldrb r0, [r4, #1]
|
||||
cmp r0, #0x12
|
||||
bls _0805403C
|
||||
b _0805427C
|
||||
_0805403C:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08054048 @ =_0805404C
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08054048: .4byte _0805404C
|
||||
_0805404C: @ jump table
|
||||
.4byte _0805427C @ case 0
|
||||
.4byte _08054098 @ case 1
|
||||
.4byte _080540A6 @ case 2
|
||||
.4byte _080540C0 @ case 3
|
||||
.4byte _08054104 @ case 4
|
||||
.4byte _0805414C @ case 5
|
||||
.4byte _08054154 @ case 6
|
||||
.4byte _08054194 @ case 7
|
||||
.4byte _080541B6 @ case 8
|
||||
.4byte _080541F0 @ case 9
|
||||
.4byte _08054212 @ case 10
|
||||
.4byte _080541F8 @ case 11
|
||||
.4byte _08054238 @ case 12
|
||||
.4byte _08054174 @ case 13
|
||||
.4byte _08054240 @ case 14
|
||||
.4byte _0805425C @ case 15
|
||||
.4byte _08054264 @ case 16
|
||||
.4byte _080541B0 @ case 17
|
||||
.4byte _0805417C @ case 18
|
||||
_08054098:
|
||||
ldrb r0, [r4, #2]
|
||||
bl ModHealth
|
||||
movs r0, #0x71
|
||||
bl SoundReq
|
||||
b _0805427C
|
||||
_080540A6:
|
||||
ldr r0, _080540BC @ =gUnk_080FD5A8
|
||||
ldrb r1, [r4, #2]
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1]
|
||||
bl ModRupees
|
||||
movs r0, #0x6f
|
||||
bl SoundReq
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_080540BC: .4byte gUnk_080FD5A8
|
||||
_080540C0:
|
||||
movs r5, #0
|
||||
movs r4, #0x1c
|
||||
b _080540CA
|
||||
_080540C6:
|
||||
adds r4, r1, #1
|
||||
adds r5, #1
|
||||
_080540CA:
|
||||
cmp r5, #3
|
||||
bls _080540D0
|
||||
b _0805427C
|
||||
_080540D0:
|
||||
adds r0, r4, #0
|
||||
bl GetInventoryValue
|
||||
adds r1, r4, #0
|
||||
cmp r0, #0
|
||||
bne _080540C6
|
||||
adds r6, r4, #0
|
||||
ldr r0, _08054100 @ =gSave
|
||||
adds r0, #0xb6
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _080540EE
|
||||
movs r0, #0x20
|
||||
strb r0, [r1]
|
||||
_080540EE:
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
adds r0, r6, #0
|
||||
bl PutItemOnSlot
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_08054100: .4byte gSave
|
||||
_08054104:
|
||||
movs r5, #0
|
||||
ldr r0, _08054144 @ =gSave
|
||||
adds r2, r0, #0
|
||||
adds r2, #0xb6
|
||||
ldrb r1, [r2]
|
||||
adds r3, r0, #0
|
||||
cmp r1, #0x20
|
||||
beq _08054126
|
||||
adds r1, r2, #0
|
||||
_08054116:
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bls _0805411E
|
||||
b _0805427C
|
||||
_0805411E:
|
||||
adds r0, r5, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x20
|
||||
bne _08054116
|
||||
_08054126:
|
||||
cmp r5, #3
|
||||
bls _0805412C
|
||||
b _0805427C
|
||||
_0805412C:
|
||||
adds r0, r3, #0
|
||||
adds r0, #0xb6
|
||||
adds r0, r5, r0
|
||||
strb r6, [r0]
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
ldr r0, _08054148 @ =0x00000109
|
||||
bl SoundReq
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_08054144: .4byte gSave
|
||||
_08054148: .4byte 0x00000109
|
||||
_0805414C:
|
||||
movs r0, #1
|
||||
bl sub_080526F8
|
||||
b _0805424E
|
||||
_08054154:
|
||||
ldr r1, _08054168 @ =gSave
|
||||
ldr r0, _0805416C @ =gArea
|
||||
ldr r2, _08054170 @ =0x0000046C
|
||||
adds r1, r1, r2
|
||||
ldrb r0, [r0, #3]
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1]
|
||||
ldrb r2, [r4, #2]
|
||||
orrs r0, r2
|
||||
b _0805427A
|
||||
.align 2, 0
|
||||
_08054168: .4byte gSave
|
||||
_0805416C: .4byte gArea
|
||||
_08054170: .4byte 0x0000046C
|
||||
_08054174:
|
||||
movs r0, #0x72
|
||||
bl sub_0801E738
|
||||
b _0805427C
|
||||
_0805417C:
|
||||
cmp r6, #0xb
|
||||
bne _0805418A
|
||||
movs r0, #0xc
|
||||
movs r1, #0
|
||||
bl SetInventoryValue
|
||||
b _080541B0
|
||||
_0805418A:
|
||||
movs r0, #0xb
|
||||
movs r1, #0
|
||||
bl SetInventoryValue
|
||||
b _080541B0
|
||||
_08054194:
|
||||
cmp r6, #7
|
||||
bne _080541A2
|
||||
movs r0, #8
|
||||
movs r1, #0
|
||||
bl SetInventoryValue
|
||||
b _080541AA
|
||||
_080541A2:
|
||||
movs r0, #7
|
||||
movs r1, #0
|
||||
bl SetInventoryValue
|
||||
_080541AA:
|
||||
movs r0, #0x63
|
||||
bl ModBombs
|
||||
_080541B0:
|
||||
bl LoadItemGfx
|
||||
b _0805427C
|
||||
_080541B6:
|
||||
cmp r5, #0
|
||||
bne _080541CA
|
||||
movs r0, #7
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
movs r0, #7
|
||||
bl PutItemOnSlot
|
||||
b _080541E2
|
||||
_080541CA:
|
||||
ldr r0, _080541EC @ =gSave
|
||||
adds r1, r0, #0
|
||||
adds r1, #0xae
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #3
|
||||
bls _080541E2
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
_080541E2:
|
||||
movs r0, #0x63
|
||||
bl ModBombs
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_080541EC: .4byte gSave
|
||||
_080541F0:
|
||||
ldrb r0, [r4, #2]
|
||||
bl ModBombs
|
||||
b _0805424E
|
||||
_080541F8:
|
||||
movs r0, #0x66
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _0805420A
|
||||
movs r0, #0x66
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
_0805420A:
|
||||
movs r0, #0x63
|
||||
bl ModArrows
|
||||
b _080541B0
|
||||
_08054212:
|
||||
ldr r0, _08054234 @ =gSave
|
||||
adds r1, r0, #0
|
||||
adds r1, #0xaf
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #3
|
||||
bls _0805422A
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
_0805422A:
|
||||
movs r0, #0x63
|
||||
bl ModArrows
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_08054234: .4byte gSave
|
||||
_08054238:
|
||||
ldrb r0, [r4, #2]
|
||||
bl ModArrows
|
||||
b _0805424E
|
||||
_08054240:
|
||||
movs r0, #0x3f
|
||||
movs r1, #1
|
||||
bl SetInventoryValue
|
||||
adds r0, r7, #0
|
||||
bl ModShells
|
||||
_0805424E:
|
||||
ldr r0, _08054258 @ =0x00000103
|
||||
bl SoundReq
|
||||
b _0805427C
|
||||
.align 2, 0
|
||||
_08054258: .4byte 0x00000103
|
||||
_0805425C:
|
||||
adds r0, r7, #0
|
||||
bl sub_0801E738
|
||||
b _0805427C
|
||||
_08054264:
|
||||
ldr r0, _08054284 @ =gSave
|
||||
adds r1, r0, #0
|
||||
adds r1, #0xa8
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #3
|
||||
bls _0805427C
|
||||
movs r0, #3
|
||||
_0805427A:
|
||||
strb r0, [r1]
|
||||
_0805427C:
|
||||
mov r0, r8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08054284: .4byte gSave
|
||||
.syntax divided
|
||||
@@ -1,104 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x10
|
||||
adds r7, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r7, r1]
|
||||
str r0, [sp]
|
||||
movs r0, #0x32
|
||||
ldrsh r2, [r7, r0]
|
||||
str r2, [sp, #4]
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x38
|
||||
ldrb r0, [r0]
|
||||
mov r8, r0
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
mov r1, r8
|
||||
lsls r1, r1, #0x18
|
||||
str r1, [sp, #8]
|
||||
_080878F8:
|
||||
movs r2, #0x10
|
||||
rsbs r2, r2, #0
|
||||
mov sb, r2
|
||||
ldr r1, [sp]
|
||||
adds r1, r1, r0
|
||||
mov sl, r1
|
||||
adds r0, #0x10
|
||||
str r0, [sp, #0xc]
|
||||
mov r6, sl
|
||||
_0808790A:
|
||||
ldr r2, _0808795C @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r0, r6, r0
|
||||
lsrs r4, r0, #4
|
||||
movs r0, #0x3f
|
||||
ands r4, r0
|
||||
ldr r5, [sp, #4]
|
||||
add r5, sb
|
||||
ldrh r0, [r2, #8]
|
||||
subs r0, r5, r0
|
||||
lsrs r0, r0, #4
|
||||
movs r1, #0x3f
|
||||
ands r0, r1
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
adds r0, r4, #0
|
||||
ldr r2, [sp, #8]
|
||||
lsrs r1, r2, #0x18
|
||||
bl sub_080B1AE0
|
||||
cmp r0, #0x2e
|
||||
bne _08087970
|
||||
adds r0, r4, #0
|
||||
mov r1, r8
|
||||
bl GetTileType
|
||||
adds r1, r0, #0
|
||||
movs r0, #0xda
|
||||
lsls r0, r0, #2
|
||||
cmp r1, r0
|
||||
bhi _08087960
|
||||
subs r0, #1
|
||||
cmp r1, r0
|
||||
blo _08087960
|
||||
adds r0, r7, #0
|
||||
movs r1, #3
|
||||
adds r2, r6, #0
|
||||
adds r3, r5, #0
|
||||
bl sub_08008796
|
||||
b _0808797C
|
||||
.align 2, 0
|
||||
_0808795C: .4byte gRoomControls
|
||||
_08087960:
|
||||
ldr r0, _0808796C @ =0x00004022
|
||||
adds r1, r4, #0
|
||||
mov r2, r8
|
||||
bl SetTile
|
||||
b _0808797C
|
||||
.align 2, 0
|
||||
_0808796C: .4byte 0x00004022
|
||||
_08087970:
|
||||
adds r0, r7, #0
|
||||
movs r1, #3
|
||||
mov r2, sl
|
||||
adds r3, r5, #0
|
||||
bl sub_08008796
|
||||
_0808797C:
|
||||
movs r0, #0x10
|
||||
add sb, r0
|
||||
mov r1, sb
|
||||
cmp r1, #0x10
|
||||
ble _0808790A
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #0x10
|
||||
ble _080878F8
|
||||
add sp, #0x10
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,110 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, #0
|
||||
ldr r0, _08079C68 @ =gPlayerState
|
||||
ldrb r1, [r0, #0x14]
|
||||
adds r7, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08079C44
|
||||
b _08079D40
|
||||
_08079C44:
|
||||
ldr r1, [r7, #0x30]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08079D40
|
||||
movs r0, #0x80
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _08079D36
|
||||
ldrb r0, [r7, #0x13]
|
||||
subs r0, #0xd
|
||||
cmp r0, #0x1d
|
||||
bhi _08079CE8
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08079C6C @ =_08079C70
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08079C68: .4byte gPlayerState
|
||||
_08079C6C: .4byte _08079C70
|
||||
_08079C70: @ jump table
|
||||
.4byte _08079D36 @ case 0
|
||||
.4byte _08079D36 @ case 1
|
||||
.4byte _08079D36 @ case 2
|
||||
.4byte _08079D36 @ case 3
|
||||
.4byte _08079CE8 @ case 4
|
||||
.4byte _08079CE8 @ case 5
|
||||
.4byte _08079CE8 @ case 6
|
||||
.4byte _08079D36 @ case 7
|
||||
.4byte _08079CE8 @ case 8
|
||||
.4byte _08079CE8 @ case 9
|
||||
.4byte _08079D36 @ case 10
|
||||
.4byte _08079CE8 @ case 11
|
||||
.4byte _08079CE8 @ case 12
|
||||
.4byte _08079CE8 @ case 13
|
||||
.4byte _08079CE8 @ case 14
|
||||
.4byte _08079CE8 @ case 15
|
||||
.4byte _08079CE8 @ case 16
|
||||
.4byte _08079CE8 @ case 17
|
||||
.4byte _08079CE8 @ case 18
|
||||
.4byte _08079CE8 @ case 19
|
||||
.4byte _08079CE8 @ case 20
|
||||
.4byte _08079CE8 @ case 21
|
||||
.4byte _08079CE8 @ case 22
|
||||
.4byte _08079CE8 @ case 23
|
||||
.4byte _08079CE8 @ case 24
|
||||
.4byte _08079CE8 @ case 25
|
||||
.4byte _08079CE8 @ case 26
|
||||
.4byte _08079CE8 @ case 27
|
||||
.4byte _08079CE8 @ case 28
|
||||
.4byte _08079D36 @ case 29
|
||||
_08079CE8:
|
||||
mov r8, r7
|
||||
mov r0, r8
|
||||
ldrb r4, [r0, #0x12]
|
||||
movs r2, #1
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r6, #0
|
||||
movs r1, #0
|
||||
bl GetRelativeCollisionTile
|
||||
ldr r5, _08079D3C @ =gUnk_08007CAC
|
||||
adds r1, r5, #0
|
||||
bl sub_08007DD6
|
||||
cmp r4, r0
|
||||
bne _08079D40
|
||||
mov r0, r8
|
||||
ldrb r4, [r0, #0x12]
|
||||
adds r0, r6, #0
|
||||
movs r1, #2
|
||||
movs r2, #0
|
||||
bl GetRelativeCollisionTile
|
||||
adds r1, r5, #0
|
||||
bl sub_08007DD6
|
||||
cmp r4, r0
|
||||
bne _08079D40
|
||||
ldrb r4, [r7, #0x12]
|
||||
movs r1, #2
|
||||
rsbs r1, r1, #0
|
||||
adds r0, r6, #0
|
||||
movs r2, #0
|
||||
bl GetRelativeCollisionTile
|
||||
adds r1, r5, #0
|
||||
bl sub_08007DD6
|
||||
cmp r4, r0
|
||||
bne _08079D40
|
||||
_08079D36:
|
||||
movs r0, #1
|
||||
b _08079D42
|
||||
.align 2, 0
|
||||
_08079D3C: .4byte gUnk_08007CAC
|
||||
_08079D40:
|
||||
movs r0, #0
|
||||
_08079D42:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
+148
-1
@@ -82,6 +82,7 @@ extern u8 gUpdateVisibleTiles;
|
||||
|
||||
extern u16 gUnk_020178E0[];
|
||||
extern u8 gUnk_02024090[];
|
||||
extern const u16 gUnk_080FD5A8[];
|
||||
|
||||
extern void** gAreaTilesets[];
|
||||
extern void** gAreaRoomMaps[];
|
||||
@@ -157,6 +158,9 @@ static void InitAllRoomResInfo(void);
|
||||
static void InitRoomResInfo(RoomResInfo* info, RoomHeader* hdr, u32 area, u32 room);
|
||||
static void sub_080532E4(void);
|
||||
static void ResetTimerFlags(void);
|
||||
bool32 ItemIsBottle(u32);
|
||||
void ModArrows(s32);
|
||||
void ModShells(s32);
|
||||
|
||||
typedef struct {
|
||||
u8 dest_off[8];
|
||||
@@ -2249,7 +2253,150 @@ s32 GetItemPrice(u32 item) {
|
||||
return ptr[0];
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/GiveItem.inc", u32 GiveItem(u32 a, u32 b))
|
||||
u32 GiveItem(Item item, u32 param_2) {
|
||||
u32 uVar4;
|
||||
u32 result;
|
||||
u32 uVar9;
|
||||
const ItemMetaData* metaData;
|
||||
|
||||
uVar4 = GetInventoryValue(item);
|
||||
metaData = &gItemMetaData[item];
|
||||
|
||||
if (uVar4 == 0) {
|
||||
result = *(u16*)&metaData->textId;
|
||||
} else {
|
||||
result = *(u16*)&metaData->unk6;
|
||||
}
|
||||
if (!ItemIsBottle(item)) {
|
||||
PutItemOnSlot(item);
|
||||
if (uVar4 == 0) {
|
||||
SetInventoryValue(item, 1);
|
||||
}
|
||||
}
|
||||
switch (metaData->unk1) {
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
case 1:
|
||||
ModHealth(metaData->unk2);
|
||||
SoundReq(SFX_HEART_GET);
|
||||
break;
|
||||
case 2:
|
||||
ModRupees((u32)gUnk_080FD5A8[metaData->unk2]);
|
||||
SoundReq(SFX_RUPEE_GET);
|
||||
break;
|
||||
case 3:
|
||||
uVar9 = 0;
|
||||
while (TRUE) {
|
||||
if (3 < uVar9) {
|
||||
return result;
|
||||
}
|
||||
if (GetInventoryValue(ITEM_BOTTLE1 + uVar9) == 0)
|
||||
break;
|
||||
uVar9++;
|
||||
}
|
||||
item = ITEM_BOTTLE1 + uVar9;
|
||||
if (gSave.stats.bottles[uVar9] == 0) {
|
||||
gSave.stats.bottles[uVar9] = 0x20;
|
||||
}
|
||||
SetInventoryValue(item, 1);
|
||||
PutItemOnSlot(item);
|
||||
break;
|
||||
case 4:
|
||||
uVar9 = 0;
|
||||
while (gSave.stats.bottles[uVar9] != 0x20) {
|
||||
uVar9++;
|
||||
if (3 < uVar9) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
if (3 < uVar9) {
|
||||
break;
|
||||
}
|
||||
gSave.stats.bottles[uVar9] = (u8)item;
|
||||
SetInventoryValue(item, 1);
|
||||
SoundReq(SFX_ITEM_GET);
|
||||
break;
|
||||
case 5:
|
||||
sub_080526F8(1);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 6:
|
||||
gSave.unk46C[gArea.dungeon_idx] |= metaData->unk2;
|
||||
break;
|
||||
case 0xd:
|
||||
sub_0801E738(0x72);
|
||||
break;
|
||||
case 0x12:
|
||||
if (item == ITEM_BOOMERANG) {
|
||||
SetInventoryValue(ITEM_MAGIC_BOOMERANG, 0);
|
||||
} else {
|
||||
SetInventoryValue(ITEM_BOOMERANG, 0);
|
||||
}
|
||||
case 0x11:
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 7:
|
||||
if (item == ITEM_BOMBS) {
|
||||
SetInventoryValue(ITEM_REMOTE_BOMBS, 0);
|
||||
} else {
|
||||
SetInventoryValue(ITEM_BOMBS, 0);
|
||||
}
|
||||
ModBombs(99);
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 8:
|
||||
if (uVar4 == 0) {
|
||||
SetInventoryValue(ITEM_BOMBS, 1);
|
||||
PutItemOnSlot(7);
|
||||
} else {
|
||||
gSave.stats.bombBagType++;
|
||||
if (3 < gSave.stats.bombBagType) {
|
||||
gSave.stats.bombBagType = 3;
|
||||
}
|
||||
}
|
||||
ModBombs(99);
|
||||
break;
|
||||
case 9:
|
||||
ModBombs(metaData->unk2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0xb:
|
||||
if (GetInventoryValue(ITEM_LARGE_QUIVER) == 0) {
|
||||
SetInventoryValue(ITEM_LARGE_QUIVER, 1);
|
||||
}
|
||||
ModArrows(99);
|
||||
LoadItemGfx();
|
||||
break;
|
||||
case 0xa:
|
||||
gSave.stats.quiverType++;
|
||||
if (3 < gSave.stats.quiverType) {
|
||||
gSave.stats.quiverType = 3;
|
||||
}
|
||||
ModArrows(99);
|
||||
break;
|
||||
case 0xc:
|
||||
ModArrows(metaData->unk2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0x0e:
|
||||
SetInventoryValue(ITEM_SHELLS, 1);
|
||||
ModShells(param_2);
|
||||
SoundReq(SFX_103);
|
||||
break;
|
||||
case 0x0f:
|
||||
sub_0801E738(param_2);
|
||||
break;
|
||||
case 0x10:
|
||||
gSave.stats.walletType++;
|
||||
if (gSave.stats.walletType < 4) {
|
||||
break;
|
||||
}
|
||||
gSave.stats.walletType = 3;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO Adapt ItemMetaData struct
|
||||
void sub_08054288(s32 param_1) {
|
||||
|
||||
+10
-10
@@ -59,13 +59,12 @@ void sub_08087888(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/object20/sub_080878CC.inc", void sub_080878CC(Entity* this)) {
|
||||
void sub_080878CC(Entity* this) {
|
||||
s32 x;
|
||||
s32 y;
|
||||
s32 itX;
|
||||
s32 itY;
|
||||
u32 layer;
|
||||
u32 tileType;
|
||||
u32 pos;
|
||||
|
||||
x = this->x.HALF.HI;
|
||||
@@ -74,13 +73,15 @@ NONMATCH("asm/non_matching/object20/sub_080878CC.inc", void sub_080878CC(Entity*
|
||||
for (itX = -0x10; itX < 0x11; itX += 0x10) {
|
||||
for (itY = -0x10; itY < 0x11; itY += 0x10) {
|
||||
pos = TILE((u32)x + itX, (u32)y + itY);
|
||||
if (sub_080B1AE0(pos, layer) == 0x2e) {
|
||||
tileType = GetTileType(pos, layer);
|
||||
if (tileType == 0x368 || tileType == 0x367
|
||||
/*(tileType < 0x369) && (0x366 < tileType)*/) {
|
||||
sub_08008796(this, 3, x + itX, y + itY);
|
||||
} else {
|
||||
SetTile(0x4022, pos, layer);
|
||||
if (sub_080B1AE0(pos, (u8)layer) == 0x2e) {
|
||||
switch (GetTileType(pos, layer)) {
|
||||
case 0x368:
|
||||
case 0x367:
|
||||
sub_08008796(this, 3, x + itX, y + itY);
|
||||
break;
|
||||
default:
|
||||
SetTile(0x4022, pos, layer);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
sub_08008796(this, 3, x + itX, y + itY);
|
||||
@@ -88,4 +89,3 @@ NONMATCH("asm/non_matching/object20/sub_080878CC.inc", void sub_080878CC(Entity*
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
+18
-18
@@ -1185,7 +1185,7 @@ void ClearPlayerState(void) {
|
||||
gPlayerState.field_0xe = 0;
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.floor_type = SURFACE_NORMAL;
|
||||
gPlayerState.floor_type_last = 0;
|
||||
gPlayerState.floor_type_last = SURFACE_NORMAL;
|
||||
gPlayerState.field_0x14 = 0;
|
||||
gPlayerState.sword_state = 0;
|
||||
gPlayerState.dash_state = 0;
|
||||
@@ -1610,34 +1610,34 @@ void sub_08079BD8(Entity* this) {
|
||||
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/playerUtils/sub_08079C30.inc", bool32 sub_08079C30(Entity* this)) {
|
||||
if ((gPlayerState.field_0x14 == 0) && ((gPlayerState.flags & PL_FLAGS2) == 0)) {
|
||||
bool32 sub_08079C30(Entity* param_1) {
|
||||
if (gPlayerState.field_0x14 == 0 && (gPlayerState.flags & PL_FLAGS2) == 0) {
|
||||
if ((gPlayerState.flags & PL_MINISH) != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
switch (gPlayerState.floor_type_last) {
|
||||
case 0xd:
|
||||
case 0x0e:
|
||||
case 0x0f:
|
||||
case 0x10:
|
||||
case 0x14:
|
||||
case 0x17:
|
||||
case 0x2a:
|
||||
case SURFACE_D:
|
||||
case SURFACE_E:
|
||||
case SURFACE_F:
|
||||
case SURFACE_10:
|
||||
case SURFACE_14:
|
||||
case SURFACE_ICE:
|
||||
case SURFACE_AUTO_LADDER:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (gPlayerState.floor_type == sub_08007DD6(GetRelativeCollisionTile(this, 0, -1), (u16*)gUnk_08007CAC)) {
|
||||
if (gPlayerState.floor_type == sub_08007DD6(GetRelativeCollisionTile(this, 2, 0), (u16*)gUnk_08007CAC)) {
|
||||
if (gPlayerState.floor_type ==
|
||||
sub_08007DD6(GetRelativeCollisionTile(this, -2, 0), (u16*)gUnk_08007CAC)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
if (gPlayerState.floor_type != sub_08007DD6(GetRelativeCollisionTile(param_1, 0, -1), (u16*)gUnk_08007CAC))
|
||||
return FALSE;
|
||||
|
||||
if (gPlayerState.floor_type != sub_08007DD6(GetRelativeCollisionTile(param_1, 2, 0), (u16*)gUnk_08007CAC))
|
||||
return FALSE;
|
||||
|
||||
if (gPlayerState.floor_type == sub_08007DD6(GetRelativeCollisionTile(param_1, -2, 0), (u16*)gUnk_08007CAC)) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
bool32 sub_08079D48(void) {
|
||||
if (!sub_08079C30(&gPlayerEntity)) {
|
||||
|
||||
Reference in New Issue
Block a user