summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/non_matching/figurineDevice/sub_08088160.inc365
-rw-r--r--src/object/figurineDevice.c65
2 files changed, 35 insertions, 395 deletions
diff --git a/asm/non_matching/figurineDevice/sub_08088160.inc b/asm/non_matching/figurineDevice/sub_08088160.inc
deleted file mode 100644
index a9b6dee6..00000000
--- a/asm/non_matching/figurineDevice/sub_08088160.inc
+++ /dev/null
@@ -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
diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c
index 4e3e10de..f24170ce 100644
--- a/src/object/figurineDevice.c
+++ b/src/object/figurineDevice.c
@@ -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)) {
- u8 bVar1;
- bool32 condition;
- u32 uVar3;
+bool32 sub_08088160(FigurineDeviceEntity* this, s32 param_2) {
bool32 result;
const struct_080FC3E4* ptr;
- u32 tmp;
+#if !defined(JP) && !defined(EU)
+ u8 kinstoneId;
+#endif
ptr = &gUnk_080FC3E4[param_2];
result = FALSE;
@@ -502,64 +500,71 @@ NONMATCH("asm/non_matching/figurineDevice/sub_08088160.inc",
switch (ptr->unk_6) {
case 0x8:
case 0x40:
- if (CheckLocalFlagByBank(ptr->bank, ptr->flag)) {
+ if (CheckLocalFlagByBank(ptr->bank, ptr->flag))
result = TRUE;
- }
- return result;
break;
case 0x10:
- if (CheckKinstoneFused(gUnk_080FC3E4[param_2].flag)) {
+ if (CheckKinstoneFused(ptr->flag))
result = TRUE;
- }
- return result;
break;
default:
- return result;
+ break;
case 0x20:
- switch (gUnk_080FC3E4[param_2].flag) {
+ switch (ptr->flag) {
+#if defined(JP) || defined(EU)
case 0:
if (CheckKinstoneFused(KINSTONE_20) || CheckKinstoneFused(KINSTONE_10) ||
- CheckKinstoneFused(KINSTONE_19)) {
+ CheckKinstoneFused(KINSTONE_19))
result = TRUE;
- }
break;
case 1:
- if ((u8)this->unk_7c >= 5 && CheckKinstoneFused(KINSTONE_28)) {
+ if (this->unk_7c >= 5 && CheckKinstoneFused(KINSTONE_28))
result = TRUE;
+ 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:
if (CheckKinstoneFused(KINSTONE_54) || CheckKinstoneFused(KINSTONE_56) ||
- CheckKinstoneFused(KINSTONE_3D)) {
+ CheckKinstoneFused(KINSTONE_3D))
result = TRUE;
- }
break;
case 3:
if (CheckKinstoneFused(KINSTONE_3B) || CheckKinstoneFused(KINSTONE_4A) ||
- CheckKinstoneFused(KINSTONE_D)) {
+ CheckKinstoneFused(KINSTONE_D))
result = TRUE;
- }
break;
case 4:
if (CheckKinstoneFused(KINSTONE_49) || CheckKinstoneFused(KINSTONE_55) ||
- CheckKinstoneFused(KINSTONE_3C)) {
+ CheckKinstoneFused(KINSTONE_3C))
result = TRUE;
- }
break;
+#if !defined(JP) && !defined(EU)
case 5:
- if (this->unk_7c >= 2 && CheckGlobalFlag(MACHI_MACHIHOKORI)) {
+ if (this->unk_7c >= 2 && CheckGlobalFlag(MACHI_MACHIHOKORI))
result = TRUE;
- }
- default:
- return result;
+ break;
+#endif
}
- break;
}
}
return result;
}
-END_NONMATCH
void sub_0808826C(FigurineDeviceEntity* this) {
s32 tmp = 100;