From ae3ae650f1965ad8d3b8c82b608de16e96540087 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Thu, 18 Aug 2022 18:16:51 +0300 Subject: [PATCH] Match sub_08088328 --- .../figurineDevice/sub_08088328.inc | 257 ------------------ src/object/figurineDevice.c | 57 +++- 2 files changed, 56 insertions(+), 258 deletions(-) delete mode 100644 asm/non_matching/figurineDevice/sub_08088328.inc diff --git a/asm/non_matching/figurineDevice/sub_08088328.inc b/asm/non_matching/figurineDevice/sub_08088328.inc deleted file mode 100644 index 0396a96b..00000000 --- a/asm/non_matching/figurineDevice/sub_08088328.inc +++ /dev/null @@ -1,257 +0,0 @@ - .syntax unified -.ifdef EU - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - movs r4, #0x7f -_08087CC6: - bl Random - adds r5, r0, #0 - ands r5, r4 - cmp r5, #0x63 - bhi _08087CC6 - adds r0, r6, #0 - adds r0, #0x81 - ldrb r0, [r0] - rsbs r0, r0, #0 - bl ModShells - bl Random - movs r1, #0x7f - ands r1, r0 - adds r4, r1, #1 - adds r7, r4, #0 - adds r0, r6, #0 - bl sub_08088424 - adds r0, r6, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r5, r0 - bhs _08087D34EU - movs r5, #0 - movs r0, #0x7e - adds r0, r0, r6 - mov r8, r0 -_08087D02EU: - cmp r5, #0 - bne _08087D72 - cmp r4, #0x88 - bls _08087D0C - movs r4, #1 -_08087D0C: - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_08088160 - cmp r0, #0 - beq _08087D2C - ldr r0, _08087D28 @ =gSave+0xce - adds r1, r4, #0 - bl ReadBit - cmp r0, #0 - bne _08087D2C - movs r5, #1 - b _08087D2E - .align 2, 0 -_08087D28: .4byte gSave+0xce -_08087D2C: - adds r4, #1 -_08087D2E: - cmp r7, r4 - bne _08087D02EU - b _08087D6E -_08087D34EU: - movs r5, #1 - movs r0, #0x7e - adds r0, r0, r6 - mov r8, r0 -_08087D3C: - cmp r5, #0 - beq _08087DA4 - cmp r4, #0x88 - bls _08087D46 - movs r4, #1 -_08087D46: - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_08088160 - cmp r0, #0 - beq _08087D68 - ldr r0, _08087D64 @ =gSave+0xce - adds r1, r4, #0 - bl ReadBit - cmp r0, #0 - beq _08087D68 - movs r5, #0 - b _08087D6A - .align 2, 0 -_08087D64: .4byte gSave+0xce -_08087D68: - adds r4, #1 -_08087D6A: - cmp r7, r4 - bne _08087D3C -_08087D6E: - cmp r5, #0 - beq _08087DA4 -_08087D72: - ldr r0, _08087D94 @ =gSave - adds r0, #0xb0 - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - adds r0, r6, #0 - adds r0, #0x7c - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - ldrb r0, [r0] - cmp r1, r0 - beq _08087D98 - movs r0, #7 - bl SetRoomFlag - b _08087DA4 - .align 2, 0 -_08087D94: .4byte gSave -_08087D98: - movs r0, #0x5f - bl SetLocalFlag - movs r0, #8 - bl SetRoomFlag -_08087DA4: - mov r0, r8 - strb r4, [r0] - ldr r0, [r6, #0x50] - adds r0, #0x7e - strb r4, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} -.else - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - movs r4, #0x7f -_08088332: - bl Random - adds r5, r0, #0 - ands r5, r4 - cmp r5, #0x63 - bhi _08088332 - adds r0, r6, #0 - adds r0, #0x81 - ldrb r0, [r0] - rsbs r0, r0, #0 - bl ModShells - bl Random - movs r1, #0x7f - ands r1, r0 - adds r4, r1, #1 - adds r7, r4, #0 - adds r0, r6, #0 - bl sub_08088424 - adds r0, r6, #0 - adds r0, #0x83 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r5, r0 - bhs _080883A4 - movs r5, #0 - movs r0, #0x7d - adds r0, r0, r6 - mov r8, r0 -_08088372: - cmp r5, #0 - bne _080883E2 - cmp r4, #0x88 - bls _0808837C - movs r4, #1 -_0808837C: - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_08088160 - cmp r0, #0 - beq _0808839C - ldr r0, _08088398 @ =gSave+0xce - adds r1, r4, #0 - bl ReadBit - cmp r0, #0 - bne _0808839C - movs r5, #1 - b _0808839E - .align 2, 0 -_08088398: .4byte gSave+0xce -_0808839C: - adds r4, #1 -_0808839E: - cmp r7, r4 - bne _08088372 - b _080883DE -_080883A4: - movs r5, #1 - movs r0, #0x7d - adds r0, r0, r6 - mov r8, r0 -_080883AC: - cmp r5, #0 - beq _08088414 - cmp r4, #0x88 - bls _080883B6 - movs r4, #1 -_080883B6: - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_08088160 - cmp r0, #0 - beq _080883D8 - ldr r0, _080883D4 @ =gSave+0xce - adds r1, r4, #0 - bl ReadBit - cmp r0, #0 - beq _080883D8 - movs r5, #0 - b _080883DA - .align 2, 0 -_080883D4: .4byte gSave+0xce -_080883D8: - adds r4, #1 -_080883DA: - cmp r7, r4 - bne _080883AC -_080883DE: - cmp r5, #0 - beq _08088414 -_080883E2: - ldr r0, _08088404 @ =gSave - adds r0, #0xb0 - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - adds r0, r6, #0 - adds r0, #0x80 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - ldrb r0, [r0] - cmp r1, r0 - beq _08088408 - movs r0, #7 - bl SetRoomFlag - b _08088414 - .align 2, 0 -_08088404: .4byte gSave -_08088408: - movs r0, #0x5f - bl SetLocalFlag - movs r0, #8 - bl SetRoomFlag -_08088414: - mov r0, r8 - strb r4, [r0] - ldr r0, [r6, #0x50] - adds r0, #0x7d - strb r4, [r0] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} -.endif - .syntax divided diff --git a/src/object/figurineDevice.c b/src/object/figurineDevice.c index 33194506..e01a1304 100644 --- a/src/object/figurineDevice.c +++ b/src/object/figurineDevice.c @@ -489,7 +489,62 @@ void sub_080882A8(FigurineDeviceEntity* this) { gScreen.bg0.updated = 1; } -ASM_FUNC("asm/non_matching/figurineDevice/sub_08088328.inc", void sub_08088328(FigurineDeviceEntity* this)) +void sub_08088328(FigurineDeviceEntity* this) { + u32 uVar2; + u32 uVar3; + u32 uVar5; + u32 uVar6; + + do { + uVar2 = Random(); + uVar2 &= 0x7f; + } while (uVar2 >= 100); + ModShells(-this->unk_81); + uVar3 = Random(); + uVar6 = (uVar3 & 0x7f) + 1; + uVar5 = uVar6; + sub_08088424(this); + if (uVar2 < this->unk_83) { + uVar2 = FALSE; + do { + if (uVar2) + break; + if (uVar6 > 0x88) { + uVar6 = 1; + } + if (sub_08088160(this, uVar6) && ReadBit(&gSave.stats.filler4[4], uVar6) == 0) { + uVar2 = TRUE; + } else { + uVar6++; + } + } while (uVar5 != uVar6); + } else { + uVar2 = TRUE; + do { + if (!uVar2) + break; + if (uVar6 > 0x88) { + uVar6 = 1; + } + if (sub_08088160(this, uVar6) && ReadBit(&gSave.stats.filler4[4], uVar6) != 0) { + uVar2 = FALSE; + } else { + uVar6++; + } + } while (uVar5 != uVar6); + } + if (uVar2) { + gSave.stats.filler[0]++; + if (gSave.stats.filler[0] != this->unk_80) { + SetRoomFlag(7); + } else { + SetLocalFlag(SHOP07_COMPLETE); + SetRoomFlag(8); + } + } + this->unk_7d = uVar6; + ((FigurineDeviceEntity*)super->parent)->unk_7d = uVar6; +} void sub_08088424(FigurineDeviceEntity* this) { if (gSave.stats.filler[0] < 0x32) {