Match sub_08088160 (#637)

* Nuke asm/non_matching/figurineDevice/sub_08088160.inc

* Match sub_08088160

* Remove headers

* Update vars

* Add JP & EU ifdefs

* Revert field names
This commit is contained in:
KEKW555 2023-12-04 03:32:58 +05:30 committed by GitHub
parent 4aa26b0ea5
commit d0a8433e2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 396 deletions

View File

@ -1,365 +0,0 @@
.syntax unified
.ifdef JP
push {r4, lr}
adds r2, r0, #0
lsls r1, r1, #3
ldr r0, _08087FB0 @ =gUnk_080FC3E4
adds r1, r1, r0
movs r4, #0
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
ldrb r3, [r1, #6]
cmp r0, r3
bhs _08088068
ldrb r0, [r1, #6]
cmp r0, #0x10
beq _08087FC6
cmp r0, #0x10
bgt _08087FB4
cmp r0, #8
beq _08087FBC
b _0808806A
.align 2, 0
_08087FB0: .4byte gUnk_080FC3E4
_08087FB4:
cmp r0, #0x20
beq _08087FCA
cmp r0, #0x40
bne _0808806A
_08087FBC:
ldr r0, [r1]
ldrh r1, [r1, #4]
bl CheckLocalFlagByBank
b _08088064EU
_08087FC6:
ldrh r0, [r1, #4]
b _08088060EU
_08087FCA:
ldrh r0, [r1, #4]
cmp r0, #4
bhi _0808806A
lsls r0, r0, #2
ldr r1, _08087FDC @ =_08087FE0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08087FDC: .4byte _08087FE0
_08087FE0: @ jump table
.4byte _08087FF4 @ case 0
.4byte _0808800C @ case 1
.4byte _0808801A @ case 2
.4byte _08088032 @ case 3
.4byte _0808804A @ case 4
_08087FF4:
movs r0, #0x20
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x10
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x19
b _08088060EU
_0808800C:
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #4
bls _0808806A
movs r0, #0x28
b _08088060EU
_0808801A:
movs r0, #0x54
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x56
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x3d
b _08088060EU
_08088032:
movs r0, #0x3b
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x4a
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0xd
b _08088060EU
_0808804A:
movs r0, #0x49
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x55
bl CheckKinstoneFused
cmp r0, #0
bne _08088068
movs r0, #0x3c
_08088060EU:
bl CheckKinstoneFused
_08088064EU:
cmp r0, #0
beq _0808806A
_08088068:
movs r4, #1
_0808806A:
adds r0, r4, #0
pop {r4, pc}
.align 2, 0
.else
.ifdef EU
push {r4, lr}
adds r2, r0, #0
lsls r1, r1, #3
ldr r0, _08087B44 @ =gUnk_080FC3E4
adds r1, r1, r0
movs r4, #0
adds r0, r2, #0
adds r0, #0x7d
ldrb r0, [r0]
ldrb r3, [r1, #6]
cmp r0, r3
bhs _08087BFC
ldrb r0, [r1, #6]
cmp r0, #0x10
beq _08087B5A
cmp r0, #0x10
bgt _08087B48
cmp r0, #8
beq _08087B50
b _08087BFE
.align 2, 0
_08087B44: .4byte gUnk_080FC3E4
_08087B48:
cmp r0, #0x20
beq _08087B5E
cmp r0, #0x40
bne _08087BFE
_08087B50:
ldr r0, [r1]
ldrh r1, [r1, #4]
bl CheckLocalFlagByBank
b _08087BF8
_08087B5A:
ldrh r0, [r1, #4]
b _08087BF4
_08087B5E:
ldrh r0, [r1, #4]
cmp r0, #4
bhi _08087BFE
lsls r0, r0, #2
ldr r1, _08087B70 @ =_08087B74
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08087B70: .4byte _08087B74
_08087B74: @ jump table
.4byte _08087B88 @ case 0
.4byte _08087BA0 @ case 1
.4byte _08087BAE @ case 2
.4byte _08087BC6 @ case 3
.4byte _08087BDE @ case 4
_08087B88:
movs r0, #0x20
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x10
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x19
b _08087BF4
_08087BA0:
adds r0, r2, #0
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #4
bls _08087BFE
movs r0, #0x28
b _08087BF4
_08087BAE:
movs r0, #0x54
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x56
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x3d
b _08087BF4
_08087BC6:
movs r0, #0x3b
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x4a
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0xd
b _08087BF4
_08087BDE:
movs r0, #0x49
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x55
bl CheckKinstoneFused
cmp r0, #0
bne _08087BFC
movs r0, #0x3c
_08087BF4:
bl CheckKinstoneFused
_08087BF8:
cmp r0, #0
beq _08087BFE
_08087BFC:
movs r4, #1
_08087BFE:
adds r0, r4, #0
pop {r4, pc}
.align 2, 0
.else
push {r4, lr}
adds r2, r0, #0
lsls r1, r1, #3
ldr r0, _08088188 @ =gUnk_080FC3E4
adds r1, r1, r0
movs r4, #0
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
ldrb r3, [r1, #6]
cmp r0, r3
bhs _08088266
ldrb r0, [r1, #6]
cmp r0, #0x10
beq _0808819E
cmp r0, #0x10
bgt _0808818C
cmp r0, #8
beq _08088194
b _08088268
.align 2, 0
_08088188: .4byte gUnk_080FC3E4
_0808818C:
cmp r0, #0x20
beq _080881A6
cmp r0, #0x40
bne _08088268
_08088194:
ldr r0, [r1]
ldrh r1, [r1, #4]
bl CheckLocalFlagByBank
b _08088262
_0808819E:
ldrh r0, [r1, #4]
.ifndef JP
bl CheckKinstoneFused
.endif
b _08088262
_080881A6:
ldrh r0, [r1, #4]
cmp r0, #5
bhi _08088268
lsls r0, r0, #2
ldr r1, _080881B8 @ =_080881BC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080881B8: .4byte _080881BC
_080881BC: @ jump table
.4byte _080881D4 @ case 0
.4byte _080881F0 @ case 1
.4byte _080881FE @ case 2
.4byte _0808821A @ case 3
.4byte _08088236 @ case 4
.4byte _08088252 @ case 5
_080881D4:
movs r0, #0x20
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x10
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x19
_080881EA:
bl CheckKinstoneFused
b _08088262
_080881F0:
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #4
bls _08088268
movs r0, #0x28
b _080881EA
_080881FE:
movs r0, #0x54
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x56
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x3d
bl CheckKinstoneFused
b _08088262
_0808821A:
movs r0, #0x3b
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x4a
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0xd
bl CheckKinstoneFused
b _08088262
_08088236:
movs r0, #0x49
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x55
bl CheckKinstoneFused
cmp r0, #0
bne _08088266
movs r0, #0x3c
bl CheckKinstoneFused
b _08088262
_08088252:
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #1
bls _08088268
movs r0, #0x12
bl CheckGlobalFlag
_08088262:
cmp r0, #0
beq _08088268
_08088266:
movs r4, #1
_08088268:
adds r0, r4, #0
pop {r4, pc}
.endif
.endif
.syntax divided

View File

@ -485,14 +485,12 @@ void sub_080880D8(FigurineDeviceEntity* this) {
} }
} }
NONMATCH("asm/non_matching/figurineDevice/sub_08088160.inc", bool32 sub_08088160(FigurineDeviceEntity* this, s32 param_2) {
bool32 sub_08088160(FigurineDeviceEntity* this, s32 param_2)) {
u8 bVar1;
bool32 condition;
u32 uVar3;
bool32 result; bool32 result;
const struct_080FC3E4* ptr; const struct_080FC3E4* ptr;
u32 tmp; #if !defined(JP) && !defined(EU)
u8 kinstoneId;
#endif
ptr = &gUnk_080FC3E4[param_2]; ptr = &gUnk_080FC3E4[param_2];
result = FALSE; result = FALSE;
@ -502,64 +500,71 @@ NONMATCH("asm/non_matching/figurineDevice/sub_08088160.inc",
switch (ptr->unk_6) { switch (ptr->unk_6) {
case 0x8: case 0x8:
case 0x40: case 0x40:
if (CheckLocalFlagByBank(ptr->bank, ptr->flag)) { if (CheckLocalFlagByBank(ptr->bank, ptr->flag))
result = TRUE; result = TRUE;
}
return result;
break; break;
case 0x10: case 0x10:
if (CheckKinstoneFused(gUnk_080FC3E4[param_2].flag)) { if (CheckKinstoneFused(ptr->flag))
result = TRUE; result = TRUE;
}
return result;
break; break;
default: default:
return result; break;
case 0x20: case 0x20:
switch (gUnk_080FC3E4[param_2].flag) { switch (ptr->flag) {
#if defined(JP) || defined(EU)
case 0: case 0:
if (CheckKinstoneFused(KINSTONE_20) || CheckKinstoneFused(KINSTONE_10) || if (CheckKinstoneFused(KINSTONE_20) || CheckKinstoneFused(KINSTONE_10) ||
CheckKinstoneFused(KINSTONE_19)) { CheckKinstoneFused(KINSTONE_19))
result = TRUE; result = TRUE;
}
break; break;
case 1: case 1:
if ((u8)this->unk_7c >= 5 && CheckKinstoneFused(KINSTONE_28)) { if (this->unk_7c >= 5 && CheckKinstoneFused(KINSTONE_28))
result = TRUE; result = TRUE;
}
break; break;
#else
case 0:
if (CheckKinstoneFused(KINSTONE_20) || CheckKinstoneFused(KINSTONE_10)) {
result = TRUE;
break;
}
kinstoneId = KINSTONE_19;
backward_tail_merge:
if (CheckKinstoneFused(kinstoneId))
result = TRUE;
break;
case 1:
if (this->unk_7c >= 5) {
kinstoneId = KINSTONE_28;
goto backward_tail_merge;
}
break;
#endif
case 2: case 2:
if (CheckKinstoneFused(KINSTONE_54) || CheckKinstoneFused(KINSTONE_56) || if (CheckKinstoneFused(KINSTONE_54) || CheckKinstoneFused(KINSTONE_56) ||
CheckKinstoneFused(KINSTONE_3D)) { CheckKinstoneFused(KINSTONE_3D))
result = TRUE; result = TRUE;
}
break; break;
case 3: case 3:
if (CheckKinstoneFused(KINSTONE_3B) || CheckKinstoneFused(KINSTONE_4A) || if (CheckKinstoneFused(KINSTONE_3B) || CheckKinstoneFused(KINSTONE_4A) ||
CheckKinstoneFused(KINSTONE_D)) { CheckKinstoneFused(KINSTONE_D))
result = TRUE; result = TRUE;
}
break; break;
case 4: case 4:
if (CheckKinstoneFused(KINSTONE_49) || CheckKinstoneFused(KINSTONE_55) || if (CheckKinstoneFused(KINSTONE_49) || CheckKinstoneFused(KINSTONE_55) ||
CheckKinstoneFused(KINSTONE_3C)) { CheckKinstoneFused(KINSTONE_3C))
result = TRUE; result = TRUE;
}
break; break;
#if !defined(JP) && !defined(EU)
case 5: case 5:
if (this->unk_7c >= 2 && CheckGlobalFlag(MACHI_MACHIHOKORI)) { if (this->unk_7c >= 2 && CheckGlobalFlag(MACHI_MACHIHOKORI))
result = TRUE; result = TRUE;
} break;
default: #endif
return result;
} }
break;
} }
} }
return result; return result;
} }
END_NONMATCH
void sub_0808826C(FigurineDeviceEntity* this) { void sub_0808826C(FigurineDeviceEntity* this) {
s32 tmp = 100; s32 tmp = 100;