mirror of https://github.com/zeldaret/tmc.git
Match sub_080A1270 (#657)
* Nuke asm/non_matching/objectB9 directory * Match sub_080A1270
This commit is contained in:
parent
a5a2b57a1c
commit
040b1f3a59
|
@ -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
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue