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 void sub_08097B24(Entity*);
|
||||
extern u32 sub_08079F8C(void);
|
||||
extern void sub_080787CC(Entity*);
|
||||
extern void sub_080526F8(s32);
|
||||
#endif
|
|
@ -677,7 +677,7 @@ SECTIONS {
|
|||
asm/blockPushed.o(.text);
|
||||
asm/lockedDoor.o(.text);
|
||||
asm/object9.o(.text);
|
||||
asm/objectA.o(.text);
|
||||
src/object/objectA.o(.text);
|
||||
asm/objectB.o(.text);
|
||||
src/object/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