Merge pull request #43 from huderlem:nonmatchings

Nonmatchings
This commit is contained in:
notyouraveragehooman
2020-08-07 22:29:34 -07:00
committed by GitHub
8 changed files with 86 additions and 426 deletions
-115
View File
@@ -1,115 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
bne _0806CF5E
movs r0, #1
strb r0, [r5, #0xc]
strb r0, [r5, #0xd]
ldrh r1, [r5, #0x2e]
adds r0, r5, #0
adds r0, #0x68
strh r1, [r0]
adds r0, r5, #0
movs r1, #2
bl sub_0805E3A0
adds r0, r5, #0
bl sub_0806D0B0
adds r0, r5, #0
bl sub_0807DD64
b _0806CF6C
_0806CF5E:
adds r0, r5, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r5, #0
bl sub_0807DDE4
_0806CF6C:
ldrb r0, [r5, #0xd]
cmp r0, #2
beq _0806CFD4
cmp r0, #2
bgt _0806D000
cmp r0, #0
blt _0806D000
ldr r0, _0806CFCC @ =gScreenTransition
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0806D000
ldr r0, _0806CFD0 @ =gLinkEntity
movs r1, #0x2e
ldrsh r2, [r0, r1]
ldrh r3, [r5, #0x2e]
movs r4, #0x2e
ldrsh r1, [r5, r4]
adds r4, r0, #0
cmp r2, r1
bge _0806CFA8
adds r0, r5, #0
adds r0, #0x68
ldrh r0, [r0]
subs r0, #0x20
cmp r0, r1
bge _0806CFA8
subs r0, r3, #1
strh r0, [r5, #0x2e]
_0806CFA8:
movs r3, #0x2e
ldrsh r1, [r4, r3]
ldrh r2, [r5, #0x2e]
movs r4, #0x2e
ldrsh r0, [r5, r4]
cmp r1, r0
ble _0806D000
adds r0, r5, #0
adds r0, #0x68
ldrh r0, [r0]
adds r0, #0x20
movs r3, #0x2e
ldrsh r1, [r5, r3]
cmp r0, r1
ble _0806D000
adds r0, r2, #1
strh r0, [r5, #0x2e]
b _0806D000
.align 2, 0
_0806CFCC: .4byte gScreenTransition
_0806CFD0: .4byte gLinkEntity
_0806CFD4:
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0806D000
bl Random
adds r4, r0, #0
ldr r1, _0806D008 @ =gUnk_081140CC
movs r0, #3
ands r0, r4
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
bl PlaySFX
movs r0, #7
ands r4, r0
lsls r4, r4, #4
adds r4, #0x80
strb r4, [r5, #0xe]
_0806D000:
adds r0, r5, #0
bl sub_0806D02C
pop {r4, r5, pc}
.align 2, 0
_0806D008: .4byte gUnk_081140CC
.syntax divided
-45
View File
@@ -1,45 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xa3
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809F7B6
adds r0, r5, #0
adds r1, r4, #0
bl PositionEntityOnTop
bl Random
ldrh r2, [r4, #0x2e]
subs r2, #0x10
movs r3, #0x1f
adds r1, r0, #0
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x2e]
ldrh r2, [r4, #0x32]
subs r2, #0x10
asrs r1, r0, #8
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x32]
asrs r0, r0, #0x10
movs r1, #3
ands r0, r1
strb r0, [r4, #0x1e]
movs r0, #0xff
strb r0, [r4, #0x15]
_0809F7B6:
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
.syntax divided
-110
View File
@@ -1,110 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x39
movs r1, #0
ldrsb r1, [r2, r1]
cmp r1, #2
bne _0805FE80
movs r0, #0
strb r1, [r5, #0xc]
strb r0, [r2]
ldr r1, _0805FE7C @ =gLinkEntity
adds r0, r5, #0
bl GetFacingDirection
bl sub_0806F5A4
adds r1, r0, #0
adds r0, r5, #0
bl InitAnimationForceUpdate
adds r0, r5, #0
bl sub_0806F118
b _0805FF14
.align 2, 0
_0805FE7C: .4byte gLinkEntity
_0805FE80:
adds r4, r5, #0
adds r4, #0x84
ldr r1, [r4]
adds r0, r5, #0
bl ExecuteScriptCommandSet
ldr r1, [r4]
adds r0, r5, #0
bl sub_0805FF2C
adds r0, r5, #0
adds r0, #0x80
ldrh r3, [r0]
adds r7, r0, #0
adds r6, r5, #0
adds r6, #0x82
cmp r3, #7
bhi _0805FEC6
ldrh r1, [r6]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0805FEBA
movs r1, #0xfc
ands r1, r3
ldrb r0, [r5, #0xf]
lsrs r0, r0, #1
adds r3, r1, r0
b _0805FEC6
_0805FEBA:
movs r0, #0xfc
ands r0, r3
ldrb r2, [r5, #0x14]
lsrs r1, r2, #1
adds r3, r0, r1
strb r2, [r5, #0xf]
_0805FEC6:
adds r4, r5, #0
adds r4, #0x58
ldrb r0, [r4]
cmp r3, r0
beq _0805FED8
adds r0, r5, #0
adds r1, r3, #0
bl InitAnimationForceUpdate
_0805FED8:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0805FF02
ldrb r0, [r4]
cmp r0, #8
beq _0805FEFE
cmp r0, #8
blt _0805FF02
cmp r0, #0xc
bgt _0805FF02
cmp r0, #0xa
blt _0805FF02
_0805FEFE:
movs r0, #0
strh r0, [r7]
_0805FF02:
ldrh r1, [r6]
mvns r0, r1
adds r0, #1
ands r1, r0
cmp r1, #2
bne _0805FF14
adds r0, r5, #0
bl sub_0806ED78
_0805FF14:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
-51
View File
@@ -1,51 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
ldr r3, _0806074C @ =gUnk_0810A918
adds r2, r0, #0
adds r2, #0x68
ldrb r2, [r2]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
adds r3, r0, #0
adds r3, #0x69
ldrb r3, [r3]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
adds r2, r2, r3
movs r3, #0
ldrsb r3, [r2, r3]
lsls r3, r3, #2
ldr r2, _08060750 @ =gUnk_0810A66C
adds r3, r3, r2
ldr r4, _08060754 @ =gRoomControls
movs r5, #0
ldrsh r2, [r3, r5]
ldrh r5, [r4, #6]
adds r2, r2, r5
movs r5, #2
ldrsh r3, [r3, r5]
ldrh r4, [r4, #8]
adds r3, r3, r4
bl sub_0807DEDC
ldr r2, _08060758 @ =gUnk_02033280
ldrb r1, [r2, #7]
movs r0, #1
orrs r0, r1
strb r0, [r2, #7]
pop {r4, r5, pc}
.align 2, 0
_0806074C: .4byte gUnk_0810A918
_08060750: .4byte gUnk_0810A66C
_08060754: .4byte gRoomControls
_08060758: .4byte gUnk_02033280
.syntax divided
+21 -33
View File
@@ -1,11 +1,11 @@
#include "global.h"
#include "entity.h"
#include "link.h"
#include "structures.h"
extern void (*gUnk_081140D4[])(Entity*);
extern u16 gUnk_081140CC[];
extern u32 gScreenTransition;
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0806D0B0(Entity*);
extern void sub_0807DD64(Entity*);
@@ -20,16 +20,11 @@ void BigGoron(Entity* this) {
gUnk_081140D4[this->entityType.form](this);
}
#ifdef NON_MATCHING
void sub_0806CF30(Entity* this) {
u8 bVar1;
u32 uVar2;
int iVar3;
if (this->action == 0) {
this->action = 1;
this->previousActionFlag = 1;
this->field_0x68 = (this->x).HALF.HI;
this->field_0x68.HWORD = this->x.HALF.HI;
sub_0805E3A0(this, 2);
sub_0806D0B0(this);
sub_0807DD64(this);
@@ -37,39 +32,32 @@ void sub_0806CF30(Entity* this) {
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
}
if (this->previousActionFlag != 2) {
if (this->previousActionFlag < 3) {
if ((gScreenTransition & 3) == 0) {
iVar3 = this->x.HALF.HI;
if (gLinkEntity.x.HALF.HI < iVar3) {
if ((this->field_0x68 - 32) < iVar3) {
this->x.HALF.HI = -1;
}
switch (this->previousActionFlag) {
case 0:
case 1:
if (gScreenTransition.frameCount % 4 == 0) {
if (gLinkEntity.x.HALF.HI < this->x.HALF.HI && this->field_0x68.HWORD - 32 < this->x.HALF.HI) {
this->x.HALF.HI--;
}
if (this->x.HALF.HI > gLinkEntity.x.HALF.HI) {
if (this->x.HALF.HI < (this->field_0x68 + 32)) {
this->x.HALF.HI += 1;
}
if (gLinkEntity.x.HALF.HI > this->x.HALF.HI && this->field_0x68.HWORD + 32 > this->x.HALF.HI) {
this->x.HALF.HI++;
}
}
}
} else {
bVar1 = this->actionDelay -= 1;
if (bVar1 == 0) {
uVar2 = Random();
PlaySFX(gUnk_081140CC[uVar2 & 3]);
this->actionDelay = ((u8)uVar2 & 7) * 10 + 128;
}
break;
case 2:
if (--this->actionDelay == 0) {
u32 uVar2 = Random();
PlaySFX(gUnk_081140CC[uVar2 % 4]);
this->actionDelay = ((u8)uVar2 & 7) * 16;
this->actionDelay += 128;
}
break;
case 3:
break;
}
sub_0806D02C(this);
}
#else
NAKED
void sub_0806CF30(Entity* this) {
asm(".include \"asm/non_matching/bigGoron/sub_0806CF30.inc\"");
}
#endif
void sub_0806D00C(Entity* this) {
Entity* pEVar1;
+40 -44
View File
@@ -1,5 +1,6 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "npc.h"
#include "link.h"
@@ -30,58 +31,53 @@ void sub_0805FE10(Entity *this)
sub_0807DD50(this);
}
#if NON_MATCHING
void sub_0805FE48(Entity *this)
{
u8 bVar1;
u16 uVar2;
u32 uVar3;
u32 uVar4;
u8 bVar1;
u16 uVar2;
u32 uVar3;
u32 uVar4;
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
sub_0806F118(this);
}
else {
ExecuteScriptCommandSet(this, *(void **)&this->cutsceneBeh);
sub_0805FF2C(this, *(void **)&this->cutsceneBeh);
if (this->field_0x80 < 8) {
if ((this->field_0x82 & 1) != 0) {
uVar4 = (uVar4 & 0xfc) + (this->field_0xf >> 1);
}
else {
uVar4 = (uVar4 & 0xfc) + (this->animationState >> 1);
this->field_0xf = this->animationState;
}
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
sub_0806F118(this);
}
if (uVar4 != this->animIndex) {
InitAnimationForceUpdate(this, uVar4);
}
UpdateAnimationSingleFrame(this);
else {
ExecuteScriptCommandSet(this, *(void **)&this->cutsceneBeh);
sub_0805FF2C(this, *(void **)&this->cutsceneBeh);
uVar4 = this->field_0x80.HWORD;
if (uVar4 < 8) {
if ((this->field_0x82.HWORD & 1) != 0) {
uVar4 = (uVar4 & 0xfc) + (this->field_0xf >> 1);
}
else {
uVar4 = (uVar4 & 0xfc) + (this->animationState >> 1);
this->field_0xf = this->animationState;
}
}
if (uVar4 != this->animIndex) {
InitAnimationForceUpdate(this, uVar4);
}
UpdateAnimationSingleFrame(this);
if (this->frames.b.f3)
{
switch (this->animIndex) {
case 8:
case 10:
case 11:
case 12:
this->field_0x80 = 0;
if (this->frames.b.f3)
{
switch (this->animIndex) {
case 8:
case 10:
case 11:
case 12:
this->field_0x80.HWORD = 0;
break;
}
}
if ((this->field_0x82.HWORD & (~this->field_0x82.HWORD + 1)) == 2) {
sub_0806ED78(this);
}
}
if ((this->field_0x82 & (~this->field_0x82 + 1)) == 2) {
sub_0806ED78(this);
}
}
}
#else
NAKED
void sub_0805FE48(Entity *this) {
asm(".include \"asm/non_matching/festari/sub_0805FE48.inc\"");
}
#endif
void sub_0805FF18(Entity *this)
{
+19 -15
View File
@@ -4,6 +4,7 @@
#include "npc.h"
#include "textbox.h"
#include "link.h"
#include "room.h"
#include "structures.h"
typedef struct {
@@ -34,10 +35,16 @@ extern void sub_0800451C(Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_0807DEDC(Entity*, u32, u32, u32);
typedef struct {
s16 x;
s16 y;
} Coords16;
extern Coords16 gUnk_0810A66C[];
extern s8* gUnk_0810A918[];
extern void (*const gUnk_0810AA24[])(Entity*);
extern u32 gUnk_0810AA30[];
extern u32** gUnk_0810A66C;
extern u32 gUnk_0810A918[];
extern struct_02033280 gUnk_02033280;
void Postman(Entity* this) {
@@ -208,21 +215,18 @@ void sub_080606D8(Entity* this)
ShowNPCDialogue(this, &gUnk_0810AA30[iVar1 * 2]);
}
#if 0
void sub_08060700(Entity *arg0, u32 arg1)
void sub_08060700(Entity *entity, u32 arg1)
{
sub_0807DEDC(arg0,arg1,
gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginX],
gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginY + 2]);
gUnk_02033280.unk |= 1;
}
#endif
NAKED void sub_08060700(Entity *arg0, u32 arg1) {
asm(".include \"asm/non_matching/postman/sub_08060700.inc\"");
s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO];
Coords16* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]];
u32 x = coords->x + gRoomControls.roomOriginX;
u32 y = coords->y + gRoomControls.roomOriginY;
sub_0807DEDC(entity, arg1, x, y);
gUnk_02033280.unk |= 1;
}
void sub_0806075C(Entity *this)
{
this->field_0x68.HALF.LO = 0xb;
this->field_0x68.HALF.HI = 0xff;
}
this->field_0x68.HALF.LO = 0xb;
this->field_0x68.HALF.HI = 0xff;
}
+6 -13
View File
@@ -156,28 +156,21 @@ void sub_0809F700(Entity* this) {
}
}
#ifdef NON_MATCHING
Entity* sub_0809F770(Entity* this) {
Entity* cloud;
s32 uVar1;
int uVar1;
cloud = CreateObject(163, 1, 0);
if (cloud != NULL) {
if (cloud) {
PositionEntityOnTop(this, cloud);
uVar1 = Random();
cloud->x.HALF.HI = ((cloud->x.HALF.HI - 16) + (uVar1 >> 0)) & 31;
cloud->y.HALF.HI = ((cloud->y.HALF.HI - 16) + (uVar1 >> 8)) & 31;
cloud->animationList = (u8)(uVar1 >> 16) & 3;
cloud->direction = 255;
cloud->x.HALF.HI += ((uVar1 >> 0) & 31) - 16;
cloud->y.HALF.HI += ((uVar1 >> 8) & 31) - 16;
cloud->frameIndex = (uVar1 >> 16) & 3;
cloud->direction = 0xFF;
}
return cloud;
}
#else
NAKED
Entity* sub_0809F770(Entity* this) {
asm(".include \"asm/non_matching/cloud/sub_0809F770.inc\"");
}
#endif
void sub_0809F7BC(Entity* this) {
Entity* cloud;