Merge pull request #503 from hatal175/beanstalk

This commit is contained in:
notyourav
2022-04-25 17:18:05 -07:00
committed by GitHub
9 changed files with 25 additions and 449 deletions
@@ -1,19 +0,0 @@
.syntax unified
ldr r0, _080197C4 @ =gMapBottom
ldr r1, _080197C8 @ =gBGAffSettings
str r1, [r0]
ldr r2, _080197CC @ =gUnk_080B77C0
ldrh r0, [r2]
strh r0, [r1]
ldr r0, _080197D0 @ =gMapTop
subs r1, #0xc
str r1, [r0]
ldrh r0, [r2, #2]
strh r0, [r1]
bx lr
.align 2, 0
_080197C4: .4byte gMapBottom
_080197C8: .4byte gScreen + 0x20
_080197CC: .4byte gUnk_080B77C0
_080197D0: .4byte gMapTop
.syntax divided
@@ -1,54 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0x80
lsls r5, r5, #0x18
_080197DC:
ldr r3, [r4, #4]
cmp r3, #0
beq _08019824
ldr r1, [r4]
ldr r0, _08019808 @ =0x7FFFFFFF
ands r1, r0
ldr r0, _0801980C @ =gMapData
adds r1, r1, r0
ldr r2, [r4, #8]
adds r0, r2, #0
ands r0, r5
cmp r0, #0
beq _0801981A
lsrs r0, r3, #0x18
cmp r0, #6
bne _08019810
adds r0, r1, #0
adds r1, r3, #0
bl LZ77UnCompVram
b _0801982E
.align 2, 0
_08019808: .4byte 0x7FFFFFFF
_0801980C: .4byte gMapData
_08019810:
adds r0, r1, #0
adds r1, r3, #0
bl LZ77UnCompWram
b _0801982E
_0801981A:
adds r0, r1, #0
adds r1, r3, #0
bl MemCopy
b _0801982E
_08019824:
ldrh r0, [r4]
bl LoadPaletteGroup
bl sub_080533CC
_0801982E:
adds r4, #0xc
adds r0, r4, #0
subs r0, #0xc
ldr r0, [r0]
ands r0, r5
cmp r0, #0
bne _080197DC
pop {r4, r5, pc}
.align 2, 0
.syntax divided
@@ -1,120 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
adds r4, r1, #0
ldr r5, _0801A3C8 @ =gPlayerEntity
ldrb r1, [r5, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0801A44E
bl sub_0801A4F8
cmp r0, #0
beq _0801A44E
movs r0, #2
bl GetLayerByIndex
adds r7, r0, #0
ldr r1, _0801A3CC @ =gUnk_080B4488
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r6, [r0, r1]
adds r4, r4, r6
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
bl GetTileType
adds r1, r0, #0
ldr r0, _0801A3D0 @ =0x0000402B
cmp r1, r0
beq _0801A3D4
cmp r1, r0
blo _0801A3D6
adds r0, #4
cmp r1, r0
bhi _0801A3D6
_0801A3C4:
movs r0, #1
b _0801A450
.align 2, 0
_0801A3C8: .4byte gPlayerEntity
_0801A3CC: .4byte gUnk_080B4488
_0801A3D0: .4byte 0x0000402B
_0801A3D4:
adds r4, r4, r6
_0801A3D6:
adds r0, r7, r4
ldr r1, _0801A40C @ =0x00001F84
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0x46
beq _0801A44E
ldr r0, _0801A410 @ =gPlayerEntity
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
bl GetTileType
bl sub_080B1B54
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x52
beq _0801A44E
cmp r0, #0x52
bgt _0801A414
cmp r0, #0x26
blt _0801A418
cmp r0, #0x27
ble _0801A44E
cmp r0, #0x29
beq _0801A44E
b _0801A418
.align 2, 0
_0801A40C: .4byte 0x00001F84
_0801A410: .4byte gPlayerEntity
_0801A414:
cmp r0, #0x74
beq _0801A44E
_0801A418:
ldr r0, _0801A434 @ =0x00002004
add r0, r8
adds r0, r0, r4
ldrb r0, [r0]
adds r1, r0, #0
cmp r0, #0xa
beq _0801A446
cmp r0, #0xa
bgt _0801A438
cmp r0, #0
beq _0801A3C4
cmp r0, #5
beq _0801A440
b _0801A44E
.align 2, 0
_0801A434: .4byte 0x00002004
_0801A438:
cmp r1, #0x44
beq _0801A446
cmp r1, #0x45
bne _0801A44E
_0801A440:
cmp r6, #1
bne _0801A44E
b _0801A3C4
_0801A446:
movs r0, #1
rsbs r0, r0, #0
cmp r6, r0
beq _0801A3C4
_0801A44E:
movs r0, #0
_0801A450:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -1,29 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _0801AC84 @ =gUnk_0200B240
ldr r0, _0801AC88 @ =gRoomVars
ldrh r3, [r0, #0xe]
movs r0, #0
cmp r0, r3
bhs _0801AC94
_0801AC78:
ldrh r5, [r2]
cmp r4, r5
bne _0801AC8C
ldrh r0, [r2, #2]
lsls r0, r0, #2
b _0801AC96
.align 2, 0
_0801AC84: .4byte gUnk_0200B240
_0801AC88: .4byte gRoomVars
_0801AC8C:
adds r2, #4
adds r0, #1
cmp r0, r3
blo _0801AC78
_0801AC94:
lsls r0, r1, #2
_0801AC96:
pop {r4, r5, pc}
.syntax divided
@@ -1,122 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r0, _0809CA04 @ =gRoomTransition
ldr r1, [r0]
movs r2, #2
ands r1, r2
adds r7, r0, #0
cmp r1, #0
beq _0809CA08
adds r2, r4, #0
adds r2, #0x84
ldr r0, [r2]
ldr r1, [r0, #8]
adds r1, #0x76
ldrh r0, [r1]
subs r0, #8
b _0809CA16
.align 2, 0
_0809CA04: .4byte gRoomTransition
_0809CA08:
adds r2, r4, #0
adds r2, #0x84
ldr r0, [r2]
ldr r1, [r0, #8]
adds r1, #0x76
ldrh r0, [r1]
adds r0, #8
_0809CA16:
strh r0, [r1]
adds r5, r2, #0
ldr r0, [r7]
movs r6, #3
ands r0, r6
cmp r0, #0
bne _0809CA30
adds r0, r4, #0
movs r1, #0x87
movs r2, #2
movs r3, #0
bl CreateObjectWithParent
_0809CA30:
adds r2, r4, #0
adds r2, #0x79
ldrb r0, [r2]
adds r1, r0, #0
cmp r1, #0
bne _0809CA92
ldr r0, [r4, #0x54]
adds r0, #0x62
strb r1, [r0]
ldr r0, [r4, #0x54]
movs r1, #0x80
lsls r1, r1, #2
adds r2, #2
ldrb r2, [r2]
rsbs r2, r2, #0
bl LinearMoveAngle
ldr r1, [r4, #0x54]
adds r0, r4, #0
movs r2, #0x48
bl sub_0806FC80
cmp r0, #0
beq _0809CAC4
movs r0, #6
strb r0, [r4, #0xd]
movs r1, #0
movs r0, #0xc0
strh r0, [r4, #0x24]
strb r1, [r4, #0xb]
strb r1, [r4, #0xf]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
subs r0, #0xc4
ands r0, r1
strb r0, [r2, #0x18]
ldr r0, [r5]
ldr r0, [r0, #8]
adds r0, #0x76
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r0]
ldr r1, [r5]
movs r0, #1
strb r0, [r1]
movs r0, #0xed
bl SoundReq
b _0809CAC4
_0809CA92:
subs r0, #1
strb r0, [r2]
ldr r0, [r7]
ands r0, r6
cmp r0, #1
beq _0809CAB4
cmp r0, #1
blo _0809CAAC
cmp r0, #2
beq _0809CAAC
cmp r0, #3
beq _0809CABC
b _0809CAC4
_0809CAAC:
ldr r0, [r4, #0x54]
adds r0, #0x62
movs r1, #0
b _0809CAC2
_0809CAB4:
ldr r0, [r4, #0x54]
adds r0, #0x62
movs r1, #0xfc
b _0809CAC2
_0809CABC:
ldr r0, [r4, #0x54]
adds r0, #0x62
movs r1, #4
_0809CAC2:
strb r1, [r0]
_0809CAC4:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -1,66 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #0
beq _080A22FC
cmp r5, #1
beq _080A231C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A233E
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0xd]
adds r0, r1, r0
strb r0, [r4, #0x1e]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmp r1, r0
bne _080A233E
b _080A233A
_080A22FC:
adds r0, r4, #0
bl sub_080A2340
movs r0, #8
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
ldrb r0, [r4, #0x1e]
strb r0, [r4, #0xd]
bl Random
movs r1, #3
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
b _080A233E
_080A231C:
ldrh r0, [r4, #0x24]
subs r0, #1
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A233E
bl Random
movs r1, #7
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
movs r0, #2
b _080A233C
_080A233A:
movs r0, #1
_080A233C:
strb r0, [r4, #0xc]
_080A233E:
pop {r4, r5, pc}
.syntax divided
+16 -23
View File
@@ -94,18 +94,14 @@ void sub_080197A0(void) {
MenuFadeIn(2, 0xb);
}
NONMATCH("asm/non_matching/beanstalkSubtask/SetBGDefaults.inc", void SetBGDefaults(void)) {
u16* ptr;
BgSettings* bg;
void SetBGDefaults(void) {
gMapBottom.bgControlPtr = (u16*)&gScreen.bg2;
gScreen.bg2.control = gUnk_080B77C0[0];
*gMapBottom.bgControlPtr = gUnk_080B77C0[0];
gMapTop.bgControlPtr = (u16*)&gScreen.bg1;
gScreen.bg1.control = gUnk_080B77C0[1];
*gMapTop.bgControlPtr = gUnk_080B77C0[1];
}
END_NONMATCH
NONMATCH("asm/non_matching/beanstalkSubtask/sub_080197D4.inc", void sub_080197D4(u32* param_1)) {
void sub_080197D4(u32* param_1) {
u32 uVar1;
u8* src;
void* dest;
@@ -127,11 +123,10 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_080197D4.inc", void sub_080197D4
LoadPaletteGroup((u32) * (u16*)param_1);
sub_080533CC();
}
uVar1 = *param_1;
param_1 += 3;
uVar1 = *(param_1 - 3);
} while ((uVar1 & 0x80000000) != 0);
}
END_NONMATCH
// Has ifdefs for other variants
ASM_FUNC("asm/non_matching/beanstalkSubtask/UpdatePlayerCollision.inc", void UpdatePlayerCollision())
@@ -171,11 +166,12 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A2B0.inc",
}
END_NONMATCH
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A370.inc", bool32 sub_0801A370(LayerStruct* layer, u32 position)) {
bool32 sub_0801A370(LayerStruct* layer, u32 position) {
LayerStruct* topLayer;
u32 tileType;
u32 pos;
s32 offset;
s32 temp;
if ((gPlayerEntity.animationState & 2) == 0) {
return FALSE;
@@ -208,7 +204,7 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A370.inc", bool32 sub_0801A3
case 0x74:
return FALSE;
}
switch (layer->collisionData[pos]) {
switch (temp = layer->collisionData[pos]) {
case 0:
return TRUE;
case 5:
@@ -226,7 +222,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A370.inc", bool32 sub_0801A3
}
return FALSE;
}
END_NONMATCH
bool32 sub_0801A458(LayerStruct* layer, u32 position, u32 collisionType) {
u32 tileType;
@@ -368,10 +363,10 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A9F0.inc",
}
END_NONMATCH
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AA58.inc",
bool32 sub_0801AA58(Entity* this, u32 param_2, u32 param_3)) {
bool32 sub_0801AA58(Entity* this, u32 param_2, u32 param_3) {
LayerStruct* layer;
Entity* object;
u32 temp;
layer = GetLayerByIndex(this->collisionLayer);
if (((layer->collisionData[param_2 + gUnk_080B4488[param_3 >> 3]] == 0) ||
@@ -380,12 +375,12 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AA58.inc",
object = CreateObject(PUSHED_BLOCK, 0, 0);
if (object != NULL) {
object->direction = param_3;
object->x.HALF.HI = ((param_2 & 0x3f) * 0x10 + 8) + gRoomControls.origin_x;
object->x.HALF.HI = ((((param_2)&0x3f) << 4) + 8) + gRoomControls.origin_x;
object->y.HALF.HI = (((param_2 & 0xfc0) >> 2) + 8) + gRoomControls.origin_y;
object->collisionLayer = this->collisionLayer;
gPlayerState.pushedObject = 0xa0;
gPlayerState.queued_action = 5;
gPlayerState.flags |= PL_BUSY;
gPlayerState.flags |= 1;
this->x.HALF.LO = 0;
this->y.HALF.LO = 0;
this->direction = param_3;
@@ -394,25 +389,23 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AA58.inc",
}
return FALSE;
}
END_NONMATCH
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801AB08.inc", void sub_0801AB08(u16* a, LayerStruct* layer))
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC68.inc", u32 sub_0801AC68(u32 position, u32 data)) {
u32 sub_0801AC68(u32 position, u32 data) {
u32 index;
struct_0200B240* ptr;
u32 end;
ptr = gUnk_0200B240;
end = gRoomVars.unk_0e;
for (index = 0; index < end; index++) {
if (position == ptr[index].position) {
return ptr[index].data << 2;
for (index = 0; index < end; ptr++, index++) {
if (position == ptr->position) {
return ptr->data << 2;
}
}
return data << 2;
}
END_NONMATCH
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98())
+5 -7
View File
@@ -175,8 +175,7 @@ void FrozenOctorok_Action1SubAction4(FrozenOctorokEntity* this) {
}
}
NONMATCH("asm/non_matching/frozenOctorok/FrozenOctorok_Action1SubAction5.inc",
void FrozenOctorok_Action1SubAction5(FrozenOctorokEntity* this)) {
void FrozenOctorok_Action1SubAction5(FrozenOctorokEntity* this) {
Entity* child;
if ((gRoomTransition.frameCount & 2) != 0) {
@@ -203,21 +202,20 @@ NONMATCH("asm/non_matching/frozenOctorok/FrozenOctorok_Action1SubAction5.inc",
}
} else {
this->unk_79--;
switch ((gRoomTransition.frameCount & 3)) {
switch ((u32)(gRoomTransition.frameCount & 3)) {
case 0:
case 2:
(super->child)->spriteOffsetX = 0;
super->child->spriteOffsetX = 0;
break;
case 1:
(super->child)->spriteOffsetX = 0xfc;
super->child->spriteOffsetX = 0xfc;
break;
case 3:
(super->child)->spriteOffsetX = 4;
super->child->spriteOffsetX = 4;
break;
}
}
}
END_NONMATCH
void FrozenOctorok_Action1SubAction6(FrozenOctorokEntity* this) {
LinearMoveUpdate(super);
+4 -9
View File
@@ -58,12 +58,8 @@ void sub_080A22B0(Entity* this) {
}
}
NONMATCH("asm/non_matching/objectBD/sub_080A22C4.inc", void sub_080A22C4(Entity* this)) {
u8 bVar1;
u8 uVar2;
s16 sVar3;
u32 uVar4;
u32 tmp1, tmp2, tmp3, tmp4;
void sub_080A22C4(Entity* this) {
u32 tmp1, tmp2, tmp3;
switch (this->action) {
case 0:
@@ -71,13 +67,13 @@ NONMATCH("asm/non_matching/objectBD/sub_080A22C4.inc", void sub_080A22C4(Entity*
this->timer = 8;
this->subtimer = 0;
this->subAction = this->frameIndex;
this->speed = (Random() & 3) * 0x10 + 0x1e;
this->speed = ((Random() & 3) << 4) + 0x1e;
break;
case 1:
if (--this->speed != 0) {
return;
}
this->speed = (Random() & 7) * 0x10 + 0x1e;
this->speed = ((Random() & 7) << 4) + 0x1e;
this->action = 2;
break;
default:
@@ -96,7 +92,6 @@ NONMATCH("asm/non_matching/objectBD/sub_080A22C4.inc", void sub_080A22C4(Entity*
break;
}
}
END_NONMATCH
void sub_080A2340(Entity* this) {
const struct_08125014* ptr;