summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2022-08-19 14:22:21 -0700
committerGitHub <noreply@github.com>2022-08-19 14:22:21 -0700
commite4d94ceaf6c83682fc2e8cb04a1979d0951dd04a (patch)
treeac319655335224cfe6138c9f98b301992aa4c4ee
parent373ab92156ddc4f11c9898ff48d497b4f3a49a23 (diff)
parentae3ae650f1965ad8d3b8c82b608de16e96540087 (diff)
Merge pull request #562 from hatal175/sub_08088328
-rw-r--r--asm/non_matching/figurineDevice/sub_08088328.inc257
-rw-r--r--src/object/figurineDevice.c57
2 files changed, 56 insertions, 258 deletions
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) {