From 040b1f3a5972ee86d12c84ae741d286d6b43f8fa Mon Sep 17 00:00:00 2001 From: KEKW555 <152369890+KEKW555@users.noreply.github.com> Date: Fri, 22 Dec 2023 02:34:41 +0530 Subject: [PATCH] Match sub_080A1270 (#657) * Nuke asm/non_matching/objectB9 directory * Match sub_080A1270 --- asm/non_matching/objectB9/sub_080A1270.inc | 144 --------------------- src/object/cuccoMinigame.c | 72 ++++++----- 2 files changed, 38 insertions(+), 178 deletions(-) delete mode 100644 asm/non_matching/objectB9/sub_080A1270.inc 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; + returnedArray = this->returnedCuccoTypes; - for (iVar7 = 0; iVar7 < 9; iVar7++) { - pEnt = entArray[iVar7]; - if (((s8*)ptr)[iVar7] == 0) { + 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;