summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKEKW555 <152369890+KEKW555@users.noreply.github.com>2023-12-22 02:34:41 +0530
committerGitHub <noreply@github.com>2023-12-21 13:04:41 -0800
commit040b1f3a5972ee86d12c84ae741d286d6b43f8fa (patch)
tree61a5db55e758ce2b3be7b61ad76c4b30f53f081e
parenta5a2b57a1cb6537c99fc39b9a3cdc7a561eea196 (diff)
Match sub_080A1270 (#657)
* Nuke asm/non_matching/objectB9 directory * Match sub_080A1270
-rw-r--r--asm/non_matching/objectB9/sub_080A1270.inc144
-rw-r--r--src/object/cuccoMinigame.c74
2 files changed, 39 insertions, 179 deletions
diff --git a/asm/non_matching/objectB9/sub_080A1270.inc b/asm/non_matching/objectB9/sub_080A1270.inc
deleted file mode 100644
index 5079781b..00000000
--- a/asm/non_matching/objectB9/sub_080A1270.inc
+++ /dev/null
@@ -1,144 +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, #8
- mov sb, r0
- movs r6, #0
- ldr r0, [r0, #0x64]
- str r0, [sp, #4]
- mov r4, sb
- adds r4, #0x70
- ldr r0, _080A12F8 @ =gRoomControls
- movs r2, #0xd8
- lsls r2, r2, #2
- adds r1, r2, #0
- ldrh r3, [r0, #6]
- adds r1, r1, r3
- movs r7, #0xd4
- lsls r7, r7, #2
- adds r2, r7, #0
- ldrh r0, [r0, #8]
- adds r2, r2, r0
- lsls r1, r1, #0x10
- asrs r1, r1, #0x10
- mov r8, r1
- lsls r2, r2, #0x10
- asrs r3, r2, #0x10
- movs r0, #9
- mov sl, r0
- movs r1, #1
- rsbs r1, r1, #0
- adds r5, r1, #0
-_080A12B2:
- ldr r7, [sp, #4]
- ldr r2, [r7]
- movs r0, #0
- ldrsb r0, [r4, r0]
- cmp r0, #0
- bne _080A1300
- ldr r0, [r2, #4]
- cmp r0, #0
- beq _080A132C
- cmp r2, #0
- beq _080A132C
- movs r1, #0x2e
- ldrsh r0, [r2, r1]
- cmp r8, r0
- bgt _080A132E
- movs r7, #0x32
- ldrsh r0, [r2, r7]
- cmp r3, r0
- bgt _080A132E
- ldrb r0, [r2, #0xa]
- adds r0, #1
- strb r0, [r4]
- movs r0, #1
- strb r0, [r2, #0xb]
- adds r6, #1
- ldr r1, _080A12FC @ =CuccoMinigame_Sounds
- ldrb r0, [r2, #0xa]
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrh r0, [r0]
- str r3, [sp]
- bl SoundReq
- ldr r3, [sp]
- b _080A132E
- .align 2, 0
-_080A12F8: .4byte gRoomControls
-_080A12FC: .4byte CuccoMinigame_Sounds
-_080A1300:
- cmp r0, #0
- ble _080A132E
- adds r6, #1
- ldr r0, [r2, #4]
- cmp r0, #0
- beq _080A132C
- cmp r2, #0
- beq _080A132C
- mov r1, r8
- adds r1, #4
- movs r7, #0x2e
- ldrsh r0, [r2, r7]
- cmp r1, r0
- ble _080A131E
- strh r1, [r2, #0x2e]
-_080A131E:
- adds r1, r3, #4
- movs r7, #0x32
- ldrsh r0, [r2, r7]
- cmp r1, r0
- ble _080A132E
- strh r1, [r2, #0x32]
- b _080A132E
-_080A132C:
- strb r5, [r4]
-_080A132E:
- movs r0, #1
- rsbs r0, r0, #0
- add sl, r0
- adds r4, #1
- ldr r1, [sp, #4]
- adds r1, #4
- str r1, [sp, #4]
- mov r2, sl
- cmp r2, #0
- bge _080A12B2
- mov r0, sb
- adds r0, #0x6a
- strh r6, [r0]
- ldr r0, _080A136C @ =gPlayerState
- adds r0, #0x27
- movs r1, #0xff
- strb r1, [r0]
- mov r1, sb
- adds r1, #0x68
- ldrh r0, [r1]
- subs r0, #1
- strh r0, [r1]
- lsls r0, r0, #0x10
- cmp r0, #0
- bgt _080A1370
- movs r0, #0xe2
- bl SoundReq
- bl sub_08050384
- b _080A1376
- .align 2, 0
-_080A136C: .4byte gPlayerState
-_080A1370:
- ldr r1, _080A1384 @ =gActiveScriptInfo
- movs r0, #0
- strb r0, [r1, #6]
-_080A1376:
- add sp, #8
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
- _080A1384: .4byte gActiveScriptInfo
- .syntax divided
diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c
index 87fd0d9e..b0433c4d 100644
--- a/src/object/cuccoMinigame.c
+++ b/src/object/cuccoMinigame.c
@@ -111,57 +111,62 @@ void CuccoMinigame(CuccoMinigameEntity* this) {
ExecuteScriptAndHandleAnimation(super, NULL);
}
-NONMATCH("asm/non_matching/objectB9/sub_080A1270.inc", void sub_080A1270(CuccoMinigameEntity* this)) {
- s32 iVar1;
- int iVar2;
- s32 iVar4;
- s32 sVar6;
- int iVar7;
- s8* ptr;
- s32 val;
+void sub_080A1270(CuccoMinigameEntity* this) {
+ s32 numReturnedCuccos;
+ FORCE_REGISTER(int index, r10);
+ s8* returnedArray;
+
Entity* pEnt;
Entity** entArray;
+ u16 cageX, cageY;
+ s32 castedCageX, castedCageY;
+
+ s32 one;
+ FORCE_REGISTER(s16 minusOne, r5);
+
+ numReturnedCuccos = 0;
- sVar6 = 0;
entArray = ((Entity**)super->myHeap);
- ptr = this->returnedCuccoTypes;
- iVar1 = (gRoomControls.origin_x + 0x360);
- iVar4 = (gRoomControls.origin_y + 0x350);
- iVar1 = (iVar1 << 16) >> 16;
- iVar4 = (iVar4 << 16) >> 16;
- val = -1;
-
- for (iVar7 = 0; iVar7 < 9; iVar7++) {
- pEnt = entArray[iVar7];
- if (((s8*)ptr)[iVar7] == 0) {
+ returnedArray = this->returnedCuccoTypes;
+
+ cageX = (gRoomControls.origin_x + 0x360);
+ cageY = (gRoomControls.origin_y + 0x350);
+ castedCageX = (s16)cageX;
+ castedCageY = (s16)cageY;
+ index = 9;
+ one = 1;
+ minusOne = -one;
+ do {
+ pEnt = *entArray;
+ if (*returnedArray == 0) { // this cucco not saved
if (pEnt->next != NULL && pEnt != NULL) {
- if ((iVar1 <= pEnt->x.HALF.HI) && (iVar4 <= pEnt->y.HALF.HI)) {
- ptr[iVar7] = pEnt->type + 1;
+ if ((castedCageX <= pEnt->x.HALF.HI) && (castedCageY <= pEnt->y.HALF.HI)) {
+ returnedArray[0] = pEnt->type + one;
pEnt->type2 = 1;
- sVar6++;
+
+ numReturnedCuccos++;
SoundReq(CuccoMinigame_Sounds[pEnt->type]);
}
} else {
- ((s8*)ptr)[iVar7] = val;
+ *returnedArray = minusOne;
}
- } else if (0 < (s8)ptr[iVar7]) {
- sVar6++;
+ } else if (*returnedArray > 0) { // this cucco saved
+ numReturnedCuccos++;
if (pEnt->next != NULL && pEnt != NULL) {
- iVar2 = iVar1 + 4;
- if (iVar2 > pEnt->x.HALF.HI) {
- pEnt->x.HALF.HI = iVar2;
+ if (castedCageX + 4 > pEnt->x.HALF.HI) {
+ pEnt->x.HALF.HI = castedCageX + 4;
}
- iVar2 = iVar4 + 4;
- if (iVar2 > pEnt->y.HALF.HI) {
- pEnt->y.HALF.HI = iVar2;
+ if (castedCageY + 4 > pEnt->y.HALF.HI) {
+ pEnt->y.HALF.HI = castedCageY + 4;
}
} else {
- ((s8*)ptr)[iVar7] = val;
+ *returnedArray = minusOne;
}
}
- }
+ index--, returnedArray++, entArray++;
+ } while (index >= 0);
- this->currentCuccos = sVar6;
+ this->currentCuccos = numReturnedCuccos;
gPlayerState.field_0x27[0] = 0xff;
if (--this->timer < 1) {
SoundReq(SFX_CUCCO_MINIGAME_BELL);
@@ -170,7 +175,6 @@ NONMATCH("asm/non_matching/objectB9/sub_080A1270.inc", void sub_080A1270(CuccoMi
gActiveScriptInfo.commandSize = 0;
}
}
-END_NONMATCH
void CuccoMinigame_Cleanup(CuccoMinigameEntity* this) {
Entity** puVar1;