mirror of https://github.com/zeldaret/tmc.git
objectA.c OK
This commit is contained in:
parent
5ffec8a611
commit
f08b8a7865
126
asm/objectA.s
126
asm/objectA.s
|
@ -1,126 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start ObjectA
|
|
||||||
ObjectA: @ 0x08083A94
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
adds r6, r0, #0
|
|
||||||
ldrb r0, [r6, #0xc]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08083B24
|
|
||||||
movs r0, #1
|
|
||||||
mov r8, r0
|
|
||||||
mov r2, r8
|
|
||||||
strb r2, [r6, #0xc]
|
|
||||||
ldr r0, _08083B10 @ =gUnk_080FD170
|
|
||||||
str r0, [r6, #0x48]
|
|
||||||
adds r7, r6, #0
|
|
||||||
adds r7, #0x38
|
|
||||||
ldrb r0, [r7]
|
|
||||||
movs r1, #0x34
|
|
||||||
cmp r0, #1
|
|
||||||
bne _08083ABC
|
|
||||||
movs r1, #0x26
|
|
||||||
_08083ABC:
|
|
||||||
adds r4, r6, #0
|
|
||||||
adds r4, #0x70
|
|
||||||
strh r1, [r4]
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x86
|
|
||||||
ldrh r0, [r0]
|
|
||||||
bl CheckFlags
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08083B1C
|
|
||||||
ldrh r0, [r4]
|
|
||||||
movs r3, #0x2e
|
|
||||||
ldrsh r1, [r6, r3]
|
|
||||||
ldr r5, _08083B14 @ =gRoomControls
|
|
||||||
ldrh r2, [r5, #6]
|
|
||||||
subs r1, r1, r2
|
|
||||||
asrs r1, r1, #4
|
|
||||||
movs r4, #0x3f
|
|
||||||
ands r1, r4
|
|
||||||
movs r3, #0x32
|
|
||||||
ldrsh r2, [r6, r3]
|
|
||||||
ldrh r3, [r5, #8]
|
|
||||||
subs r2, r2, r3
|
|
||||||
asrs r2, r2, #4
|
|
||||||
ands r2, r4
|
|
||||||
lsls r2, r2, #6
|
|
||||||
orrs r1, r2
|
|
||||||
ldrb r2, [r7]
|
|
||||||
bl SetTileType
|
|
||||||
ldrh r1, [r5]
|
|
||||||
mov r0, r8
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08083B08
|
|
||||||
ldr r1, _08083B18 @ =gUnk_02000070
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r1]
|
|
||||||
_08083B08:
|
|
||||||
bl DeleteThisEntity
|
|
||||||
b _08083B7E
|
|
||||||
.align 2, 0
|
|
||||||
_08083B10: .4byte gUnk_080FD170
|
|
||||||
_08083B14: .4byte gRoomControls
|
|
||||||
_08083B18: .4byte gUnk_02000070
|
|
||||||
_08083B1C:
|
|
||||||
adds r0, r6, #0
|
|
||||||
bl sub_080787CC
|
|
||||||
b _08083B7E
|
|
||||||
_08083B24:
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x39
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08083B7E
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x70
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r5, #0x2e
|
|
||||||
ldrsh r1, [r6, r5]
|
|
||||||
ldr r3, _08083B84 @ =gRoomControls
|
|
||||||
ldrh r2, [r3, #6]
|
|
||||||
subs r1, r1, r2
|
|
||||||
asrs r1, r1, #4
|
|
||||||
movs r4, #0x3f
|
|
||||||
ands r1, r4
|
|
||||||
movs r5, #0x32
|
|
||||||
ldrsh r2, [r6, r5]
|
|
||||||
ldrh r3, [r3, #8]
|
|
||||||
subs r2, r2, r3
|
|
||||||
asrs r2, r2, #4
|
|
||||||
ands r2, r4
|
|
||||||
lsls r2, r2, #6
|
|
||||||
orrs r1, r2
|
|
||||||
adds r2, r6, #0
|
|
||||||
adds r2, #0x38
|
|
||||||
ldrb r2, [r2]
|
|
||||||
bl SetTileType
|
|
||||||
adds r0, r6, #0
|
|
||||||
adds r0, #0x86
|
|
||||||
ldrh r0, [r0]
|
|
||||||
bl SetFlag
|
|
||||||
adds r0, r6, #0
|
|
||||||
bl sub_080A29BC
|
|
||||||
movs r0, #1
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
bl sub_080526F8
|
|
||||||
bl DeleteThisEntity
|
|
||||||
_08083B7E:
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08083B84: .4byte gRoomControls
|
|
|
@ -248,4 +248,6 @@ extern void sub_080A2BE4(Entity*, u32);
|
||||||
extern u32 sub_08097ADC(Entity*);
|
extern u32 sub_08097ADC(Entity*);
|
||||||
extern void sub_08097B24(Entity*);
|
extern void sub_08097B24(Entity*);
|
||||||
extern u32 sub_08079F8C(void);
|
extern u32 sub_08079F8C(void);
|
||||||
|
extern void sub_080787CC(Entity*);
|
||||||
|
extern void sub_080526F8(s32);
|
||||||
#endif
|
#endif
|
|
@ -677,7 +677,7 @@ SECTIONS {
|
||||||
asm/blockPushed.o(.text);
|
asm/blockPushed.o(.text);
|
||||||
asm/lockedDoor.o(.text);
|
asm/lockedDoor.o(.text);
|
||||||
asm/object9.o(.text);
|
asm/object9.o(.text);
|
||||||
asm/objectA.o(.text);
|
src/object/objectA.o(.text);
|
||||||
asm/objectB.o(.text);
|
asm/objectB.o(.text);
|
||||||
src/object/chestSpawner.o(.text);
|
src/object/chestSpawner.o(.text);
|
||||||
asm/chestSpawner.o(.text);
|
asm/chestSpawner.o(.text);
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "room.h"
|
||||||
|
#include "flags.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
extern BoundingBox gUnk_080FD170;
|
||||||
|
|
||||||
|
extern u8 gUnk_02000070;
|
||||||
|
|
||||||
|
void ObjectA(Entity *this) {
|
||||||
|
u32 uVar2;
|
||||||
|
|
||||||
|
if (this->action == 0) {
|
||||||
|
this->action = 1;
|
||||||
|
this->boundingBox = &gUnk_080FD170;
|
||||||
|
if (this->collisionLayer == 1) {
|
||||||
|
uVar2 = 0x26;
|
||||||
|
} else {
|
||||||
|
uVar2 = 0x34;
|
||||||
|
}
|
||||||
|
this->field_0x70.HALF.LO = uVar2;
|
||||||
|
if (CheckFlags(this->field_0x86) != 0) {
|
||||||
|
SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
|
||||||
|
if ((gRoomControls.unk2 & 1) != 0) {
|
||||||
|
gUnk_02000070 = 0;
|
||||||
|
}
|
||||||
|
DeleteThisEntity();
|
||||||
|
} else {
|
||||||
|
sub_080787CC(this);
|
||||||
|
}
|
||||||
|
} else if (this->interactType != 0) {
|
||||||
|
SetTileType(*(u16*)&this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
|
||||||
|
SetFlag(this->field_0x86);
|
||||||
|
sub_080A29BC(this);
|
||||||
|
sub_080526F8(-1);
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue