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;