summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2018-12-31 16:09:45 -0600
committerDiegoisawesome <diego@domoreaweso.me>2018-12-31 16:09:45 -0600
commit439fa13e9460db41054aa97fe178a4212299ec83 (patch)
tree34632df1e0382c551d6dc35770d54bd2391a57d2
parent530a20354c56642647a67bfd1bf17dc71ff960a2 (diff)
Start porting/decompiling roulette
-rw-r--r--asm/roulette.s2213
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/roulette_util.h6
-rw-r--r--include/strings.h3
-rw-r--r--ld_script.txt1
-rw-r--r--src/decoration.c10
-rw-r--r--src/menu_helpers.c2
-rw-r--r--src/roulette.c1053
-rwxr-xr-xsrc/roulette_util.c2
-rw-r--r--src/secret_base.c2
10 files changed, 1073 insertions, 2221 deletions
diff --git a/asm/roulette.s b/asm/roulette.s
index 4174924e6..bfd4c7c7f 100644
--- a/asm/roulette.s
+++ b/asm/roulette.s
@@ -5,2217 +5,6 @@
.text
- thumb_func_start sub_8140238
-sub_8140238: @ 8140238
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, =gUnknown_0203AB88
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xB8
- ldrb r0, [r1]
- cmp r0, 0
- beq _0814025A
- adds r0, r1, 0
- bl task_tutorial_controls_fadein
-_0814025A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140238
-
- thumb_func_start sub_8140264
-sub_8140264: @ 8140264
- push {r4,lr}
- sub sp, 0x4
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8142814
- ldr r4, =gUnknown_0203AB88
- ldr r0, [r4]
- ldrh r0, [r0, 0x26]
- movs r2, 0x80
- lsls r2, 2
- adds r1, r2, 0
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x14
- bl SetGpuReg
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _081402A0
- ldrh r1, [r1, 0x34]
- movs r0, 0x52
- bl SetGpuReg
-_081402A0:
- ldr r2, [r4]
- movs r3, 0x2A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _081402C0
- ldr r1, =0x040000d4
- ldr r3, =0x0000133c
- adds r0, r2, r3
- str r0, [r1]
- ldr r0, =0x060021c0
- str r0, [r1, 0x4]
- ldr r0, =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- strh r0, [r2, 0x2A]
-_081402C0:
- ldr r0, [r4]
- movs r2, 0x28
- ldrsh r1, [r0, r2]
- cmp r1, 0x1
- beq _081402EC
- cmp r1, 0x1
- ble _08140374
- cmp r1, 0x2
- beq _08140324
- cmp r1, 0xFF
- beq _08140348
- b _08140374
- .pool
-_081402EC:
- movs r0, 0
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- ldr r1, =0x040000d4
- ldr r2, [r4]
- movs r3, 0xCF
- lsls r3, 2
- adds r0, r2, r3
- str r0, [r1]
- ldr r0, =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0x2
- strh r0, [r2, 0x28]
- b _08140374
- .pool
-_08140324:
- ldr r1, =0x040000d4
- movs r2, 0xCF
- lsls r2, 2
- adds r0, r2
- str r0, [r1]
- ldr r0, =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- b _08140374
- .pool
-_08140348:
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- mov r3, sp
- str r3, [r1]
- ldr r0, =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, =0x810001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0x28]
-_08140374:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140264
-
- thumb_func_start sub_8140388
-sub_8140388: @ 8140388
- push {r4,r5,lr}
- sub sp, 0x4
- movs r5, 0
- str r5, [sp]
- ldr r4, =gUnknown_0203AB88
- movs r0, 0xE6
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085B6140
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r1, [r4]
- movs r0, 0xBE
- lsls r0, 1
- adds r1, r0
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r2, =0x0000117c
- adds r1, r2
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x0000317c
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r0, =gUnknown_085B614C
- bl InitWindows
- bl sub_8197200
- ldr r0, =gUnknown_0203AB8C
- strb r5, [r0]
- ldr r0, =gUnknown_085B5DFC
- mov r1, sp
- bl malloc_and_decompress
- ldr r1, [r4]
- ldr r2, =0x0000397c
- adds r1, r2
- str r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140388
-
- thumb_func_start sub_8140418
-sub_8140418: @ 8140418
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- ldr r4, =0x0000397c
- adds r0, r4
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- adds r0, r4
- movs r4, 0
- str r4, [r0]
- bl FreeAllWindowBuffers
- movs r0, 0
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x2
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r0, [r5]
- movs r2, 0xE6
- lsls r2, 6
- movs r1, 0
- bl memset
- ldr r0, [r5]
- bl Free
- str r4, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140418
-
- thumb_func_start sub_8140470
-sub_8140470: @ 8140470
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, =gUnknown_085B6418
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- ldr r5, =gUnknown_0203AB88
- ldr r3, [r5]
- ldr r4, =gSpecialVar_0x8004
- ldrb r0, [r4]
- movs r1, 0x1
- ands r1, r0
- ldrb r2, [r3, 0x4]
- movs r0, 0x4
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x4]
- ldrh r1, [r4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081404AA
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0, 0x4]
-_081404AA:
- ldr r1, [r5]
- ldr r2, =gUnknown_085B6348
- ldrb r0, [r1, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r2
- ldrb r0, [r0, 0x3]
- adds r1, 0x22
- strb r0, [r1]
- ldr r1, [r5]
- ldrb r0, [r1, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r2
- ldrb r0, [r0, 0x4]
- adds r1, 0x23
- strb r0, [r1]
- ldr r2, [r5]
- ldr r3, =gUnknown_085B6344
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 30
- lsrs r0, 30
- lsrs r1, 7
- lsls r1, 1
- adds r0, r1
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r2, 0x19]
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1A]
- ldr r0, [r5]
- ldrb r0, [r0, 0x19]
- cmp r0, 0x1
- bne _08140520
- ldr r4, =gPlttBufferUnfaded
- ldr r3, =gPlttBufferFaded
- mov r0, sp
- ldrh r2, [r0]
- b _08140528
- .pool
-_08140520:
- ldr r4, =gPlttBufferUnfaded
- ldr r3, =gPlttBufferFaded
- mov r0, sp
- ldrh r2, [r0, 0x2]
-_08140528:
- adds r0, r3, 0
- adds r0, 0xA2
- strh r2, [r0]
- ldr r1, =0x0000ffff
- adds r0, r1, 0
- ands r0, r2
- strh r0, [r3]
- ands r0, r1
- adds r2, r4, 0
- adds r2, 0xA2
- strh r0, [r2]
- ands r0, r1
- strh r0, [r4]
- ldr r0, =gUnknown_0203AB88
- ldr r0, [r0]
- adds r0, 0xB8
- bl sub_8151678
- movs r4, 0
-_0814054E:
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- adds r0, 0xB8
- lsls r2, r4, 3
- ldr r1, =gUnknown_085B6388
- adds r2, r1
- adds r1, r4, 0
- bl sub_815168C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xC
- bls _0814054E
- movs r4, 0
-_0814056C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- beq _081405AC
- adds r0, 0x2
- cmp r1, r0
- bne _081405B6
- ldr r0, [r5]
- ldrb r1, [r0, 0x2]
- movs r2, 0x1
- b _081405B2
- .pool
-_081405AC:
- ldr r0, [r5]
- ldrb r1, [r0, 0x2]
- movs r2, 0x2
-_081405B2:
- orrs r1, r2
- strb r1, [r0, 0x2]
-_081405B6:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0814056C
- bl RtcCalcLocalTime
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8140470
-
- thumb_func_start sub_81405CC
-sub_81405CC: @ 81405CC
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _081405E0
- b _081407F8
-_081405E0:
- lsls r0, 2
- ldr r1, =_081405F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081405F4:
- .4byte _08140618
- .4byte _08140630
- .4byte _08140650
- .4byte _08140662
- .4byte _0814069C
- .4byte _081406C0
- .4byte _081406E0
- .4byte _08140750
- .4byte _0814077A
-_08140618:
- movs r0, 0
- bl SetVBlankCallback
- bl ScanlineEffect_Stop
- bl SetVBlankHBlankCallbacksToNull
- bl ResetVramOamAndBgCntRegs
- bl ResetAllBgsCoordinates
- b _081407F8
-_08140630:
- bl sub_8140388
- bl DeactivateAllTextPrinters
- movs r1, 0x90
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x0000060a
- movs r0, 0x52
- bl SetGpuReg
- b _081407F8
- .pool
-_08140650:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- bl reset_temp_tile_data_buffers
- b _081407F8
-_08140662:
- ldr r0, =gUnknown_085B5BFC
- movs r2, 0xE0
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- ldr r1, =gRouletteMenuTiles
- movs r4, 0
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRouletteWheelTiles
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _081407F8
- .pool
-_0814069C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _081406A8
- b _08140806
-_081406A8:
- bl sub_8140470
- ldr r1, =gUnknown_085B5FA0
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- b _081407F8
- .pool
-_081406C0:
- movs r0, 0
- bl sub_8142C0C
- bl sub_81439C8
- bl sub_814391C
- bl sub_8143314
- bl sub_8142CD0
- bl sub_8142F7C
- bl sub_81431E4
- b _081407F8
-_081406E0:
- bl AnimateSprites
- bl BuildOamBuffer
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl sub_8143514
- movs r0, 0x6
- bl sub_814372C
- movs r0, 0
- bl sub_81436D0
- movs r0, 0
- bl sub_81424FC
- ldr r4, =gUnknown_0203AB8C
- ldrb r0, [r4]
- movs r1, 0
- bl NewMenuHelpers_DrawStdWindowFrame
- ldrb r0, [r4]
- ldr r2, =gUnknown_082A5B89
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, =gSpriteCoordOffsetX
- movs r2, 0x3C
- negs r2, r2
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, =gSpriteCoordOffsetY
- strh r5, [r0]
- b _081407F8
- .pool
-_08140750:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- b _081407F8
-_0814077A:
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_8140264
- bl SetVBlankCallback
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r0, =sub_81408A8
- movs r1, 0
- bl CreateTask
- ldr r5, =gUnknown_0203AB88
- ldr r1, [r5]
- adds r1, 0xA4
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0x6
- strh r0, [r4, 0x14]
- bl GetCoins
- strh r0, [r4, 0x22]
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl sub_80EDE84
- ldr r0, =sub_8140814
- movs r1, 0x1
- bl CreateTask
- ldr r1, [r5]
- adds r1, 0xA5
- strb r0, [r1]
- ldr r0, =sub_8140238
- bl SetMainCallback2
- b _08140806
- .pool
-_081407F8:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08140806:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81405CC
-
- thumb_func_start sub_8140814
-sub_8140814: @ 8140814
- push {r4-r6,lr}
- ldr r3, =gUnknown_0203AB88
- ldr r0, [r3]
- adds r0, 0x21
- ldrb r2, [r0]
- adds r1, r2, 0x1
- strb r1, [r0]
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x23
- lsls r2, 24
- lsrs r2, 24
- adds r6, r3, 0
- ldrb r0, [r0]
- cmp r2, r0
- bne _0814085A
- adds r1, 0x21
- movs r0, 0
- strb r0, [r1]
- ldr r2, [r6]
- adds r3, r2, 0
- adds r3, 0x22
- ldrb r1, [r3]
- ldrh r0, [r2, 0x24]
- subs r0, r1
- strh r0, [r2, 0x24]
- lsls r0, 16
- cmp r0, 0
- bge _0814085A
- ldrb r1, [r3]
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r3, 0
- subs r0, r1
- strh r0, [r2, 0x24]
-_0814085A:
- adds r4, r6, 0
- ldr r0, [r4]
- ldrh r0, [r0, 0x24]
- bl Sin2
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r4]
- ldrh r0, [r0, 0x24]
- bl Cos2
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r0, r5, 16
- asrs r0, 16
- cmp r0, 0
- bge _0814087E
- adds r0, 0xF
-_0814087E:
- lsls r0, 12
- lsrs r5, r0, 16
- ldr r3, [r6]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0
- bge _0814088E
- adds r0, 0xF
-_0814088E:
- asrs r0, 4
- strh r0, [r3, 0x32]
- strh r0, [r3, 0x2C]
- strh r5, [r3, 0x2E]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r3, 0x30]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140814
-
- thumb_func_start sub_81408A8
-sub_81408A8: @ 81408A8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081408FE
- movs r1, 0x90
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000808
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x14]
- adds r0, r4, 0
- bl sub_8141FF4
- bl sub_8142070
- bl sub_8143A40
- movs r0, 0
- bl sub_81424FC
- movs r0, 0x6
- bl sub_814372C
- ldr r1, =sub_8140968
- ldr r2, =0x0000ffff
- adds r0, r4, 0
- movs r3, 0x3
- bl sub_8141F7C
-_081408FE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81408A8
-
- thumb_func_start sub_8140914
-sub_8140914: @ 8140914
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl DisplayYesNoMenu
- ldr r5, =gUnknown_0203AB8C
- ldrb r0, [r5]
- movs r1, 0
- bl NewMenuHelpers_DrawStdWindowFrame
- ldrb r0, [r5]
- ldr r2, =gUnknown_082A5C13
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- ldrb r0, [r5]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, =gUnknown_085B6410
- adds r0, r4, 0
- bl sub_8121F68
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140914
-
- thumb_func_start sub_8140968
-sub_8140968: @ 8140968
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x1
- bl sub_819746C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8140BD0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140968
-
- thumb_func_start sub_8140994
-sub_8140994: @ 8140994
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203AB88
- ldr r0, [r0]
- adds r0, 0xA5
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0
- bl sub_8141DE4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140994
-
- thumb_func_start sub_81409B8
-sub_81409B8: @ 81409B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _081409CA
- b _08140AE8
-_081409CA:
- lsls r0, r4, 2
- ldr r1, =_081409D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081409D8:
- .4byte _08140A18
- .4byte _08140A3C
- .4byte _08140A3C
- .4byte _08140A3C
- .4byte _08140A3C
- .4byte _08140A90
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140A90
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140AE8
- .4byte _08140A90
-_08140A18:
- ldr r0, =gUnknown_0203AB88
- ldr r0, [r0]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r1
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0xD
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8152008
- b _08140B4E
- .pool
-_08140A3C:
- lsls r0, r4, 1
- adds r0, r4
- adds r0, 0xE
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- movs r1, 0x10
- str r1, [sp]
- movs r6, 0xD
- str r6, [sp, 0x4]
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8152008
- ldr r0, [r5]
- adds r4, r0, r4
- ldr r1, =0x0000397c
- adds r0, r1
- ldr r1, [r0]
- ldr r0, =0x00000232
- adds r1, r0
- movs r0, 0x3
- str r0, [sp]
- str r6, [sp, 0x4]
- adds r0, r4, 0
- mov r2, r8
- movs r3, 0x7
- bl sub_8152058
- b _08140B4E
- .pool
-_08140A90:
- subs r0, r4, 0x1
- movs r1, 0x5
- bl __divsi3
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0xA
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- movs r6, 0x10
- str r6, [sp]
- movs r1, 0xD
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8152008
- ldr r0, [r5]
- adds r4, r0, r4
- ldr r1, =0x0000397c
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0xA0
- lsls r0, 2
- adds r1, r0
- str r6, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0xE
- adds r3, r7, 0
- bl sub_8152058
- b _08140B4E
- .pool
-_08140AE8:
- adds r0, r4, 0
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0xE
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- subs r0, r4, 0x1
- movs r1, 0x5
- bl __divsi3
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x7
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0xD
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8152008
- ldr r0, [r5]
- adds r4, r0, r4
- ldr r1, =0x0000397c
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x88
- lsls r0, 2
- adds r1, r0
- movs r0, 0x3
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- mov r2, r8
- adds r3, r7, 0
- bl sub_8152058
-_08140B4E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81409B8
-
- thumb_func_start sub_8140B64
-sub_8140B64: @ 8140B64
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x10]
- bl sub_81436D0
- ldrb r0, [r4, 0x10]
- bl sub_81409B8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140B64
-
- thumb_func_start sub_8140B8C
-sub_8140B8C: @ 8140B8C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gUnknown_0203AB88
- ldr r2, [r5]
- movs r6, 0
- movs r1, 0x1
- strh r1, [r2, 0x28]
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x10]
- bl sub_81409B8
- ldr r0, [r5]
- adds r0, 0x23
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, 0x21
- strb r6, [r0]
- ldr r0, =sub_8141040
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140B8C
-
- thumb_func_start sub_8140BD0
-sub_8140BD0: @ 8140BD0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gUnknown_0203AB88
- ldr r0, [r1]
- ldr r2, [r0, 0x8]
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _08140C30
- movs r3, 0xB
- ldr r5, =gUnknown_085B6154
- adds r0, r5, 0
- adds r0, 0xE4
- ldr r0, [r0]
- ands r2, r0
- ldr r0, =gTasks
- mov r12, r0
- lsls r7, r6, 2
- cmp r2, 0
- beq _08140C6E
- adds r4, r1, 0
- adds r5, 0x8
-_08140BFE:
- lsls r0, r3, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r3, r0, 16
- asrs r2, r0, 16
- cmp r2, 0xD
- bgt _08140C6E
- ldr r1, [r4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- ldr r1, [r1, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08140BFE
- b _08140C6E
- .pool
-_08140C30:
- movs r3, 0x6
- ldr r5, =gUnknown_085B6154
- adds r0, r5, 0
- adds r0, 0x80
- ldr r0, [r0]
- ands r2, r0
- ldr r0, =gTasks
- mov r12, r0
- lsls r7, r6, 2
- cmp r2, 0
- beq _08140C6E
- adds r4, r1, 0
- adds r5, 0x8
-_08140C4A:
- lsls r0, r3, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r3, r0, 16
- asrs r2, r0, 16
- cmp r2, 0x9
- bgt _08140C6E
- ldr r1, [r4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- ldr r1, [r1, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08140C4A
-_08140C6E:
- adds r4, r7, r6
- lsls r4, 3
- add r4, r12
- movs r5, 0
- strh r3, [r4, 0x10]
- adds r0, r6, 0
- bl sub_8141FF4
- ldrb r0, [r4, 0x10]
- bl sub_81424FC
- ldrb r0, [r4, 0x10]
- bl sub_81436D0
- ldrb r0, [r4, 0x10]
- bl sub_8142284
- strh r5, [r4, 0xA]
- ldr r0, =sub_8140B8C
- str r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140BD0
-
- thumb_func_start sub_8140CA8
-sub_8140CA8: @ 8140CA8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- movs r6, 0
- movs r7, 0
- ldr r1, =gUnknown_085B641E
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldrb r0, [r4]
- mov r8, r0
- cmp r5, 0
- blt _08140D1C
- cmp r5, 0x1
- bgt _08140CF4
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl __modsi3
- lsls r0, 24
- lsrs r6, r0, 24
- movs r2, 0xF0
- lsls r2, 20
- adds r1, r0, r2
- lsrs r7, r1, 24
- cmp r0, 0
- bne _08140D1C
- movs r6, 0x5
- b _08140D1C
- .pool
-_08140CF4:
- cmp r5, 0x3
- bgt _08140D1C
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x5
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 24
- lsrs r6, r1, 24
- movs r2, 0x80
- lsls r2, 19
- adds r0, r1, r2
- lsrs r7, r0, 24
- cmp r1, 0
- bne _08140D1C
- movs r6, 0x1
-_08140D1C:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r2, [r4]
- adds r0, r2
- strh r0, [r4]
- lsls r1, r6, 24
- asrs r3, r1, 24
- lsls r0, 16
- asrs r0, 16
- lsls r2, r7, 24
- cmp r0, r3
- bge _08140D3E
- asrs r0, r2, 24
- strh r0, [r4]
-_08140D3E:
- movs r0, 0
- ldrsh r1, [r4, r0]
- asrs r0, r2, 24
- cmp r1, r0
- ble _08140D4A
- strh r3, [r4]
-_08140D4A:
- mov r1, r8
- lsls r0, r1, 24
- movs r2, 0
- ldrsh r1, [r4, r2]
- asrs r0, 24
- cmp r1, r0
- bne _08140D5C
- movs r0, 0
- b _08140D5E
-_08140D5C:
- movs r0, 0x1
-_08140D5E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8140CA8
-
- thumb_func_start sub_8140D6C
-sub_8140D6C: @ 8140D6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r9, r0
- movs r5, 0
- ldr r4, =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08140DA8
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0
- bl sub_8140CA8
- lsls r0, 24
- cmp r0, 0
- bne _08140DA8
- b _08140F3A
-_08140DA8:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08140DCE
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x1
- bl sub_8140CA8
- lsls r0, 24
- cmp r0, 0
- bne _08140DCE
- b _08140F3A
-_08140DCE:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08140DF4
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x2
- bl sub_8140CA8
- lsls r0, 24
- cmp r0, 0
- bne _08140DF4
- b _08140F3A
-_08140DF4:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08140E1A
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x3
- bl sub_8140CA8
- lsls r0, 24
- cmp r0, 0
- bne _08140E1A
- b _08140F3A
-_08140E1A:
- cmp r5, 0
- bne _08140E20
- b _08140F3A
-_08140E20:
- ldr r0, =gTasks
- lsls r6, r7, 2
- adds r4, r6, r7
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x10]
- bl sub_81424FC
- adds r0, r7, 0
- bl sub_8140B64
- mov r1, r9
- strh r1, [r4, 0xA]
- movs r0, 0x5
- bl PlaySE
- ldr r5, =gUnknown_0203AB88
- ldr r0, [r5]
- adds r0, 0xB8
- ldr r1, =0x0000ffff
- bl sub_8151A9C
- ldr r5, [r5]
- movs r2, 0xB8
- lsls r2, 1
- adds r3, r5, r2
- ldrb r2, [r3]
- movs r1, 0x7F
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- movs r0, 0xB2
- lsls r0, 1
- adds r3, r5, r0
- ldrb r2, [r3]
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- movs r0, 0xAC
- lsls r0, 1
- adds r2, r5, r0
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- ldrb r0, [r4, 0x10]
- bl sub_8142284
- movs r4, 0
- mov r9, r6
- ldr r1, =gSprites
- mov r12, r1
- movs r2, 0x8
- add r2, r12
- mov r10, r2
-_08140E8C:
- ldr r0, =gUnknown_0203AB88
- ldr r5, [r0]
- adds r0, r4, 0
- adds r0, 0x29
- adds r6, r5, 0
- adds r6, 0x3C
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r12
- adds r3, r0, r1
- adds r2, r3, 0
- adds r2, 0x40
- add r0, r10
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0]
- ldrh r2, [r2]
- adds r1, r2
- ldr r2, =0x000003ff
- mov r8, r2
- mov r0, r8
- ands r1, r0
- ldrh r2, [r3, 0x4]
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08140E8C
- ldr r0, =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r3, [r1, 0x10]
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- bhi _08140F3A
- ldr r2, =gUnknown_085B6154
- movs r0, 0x10
- ldrsh r1, [r1, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x8
- adds r0, r2
- ldr r1, [r5, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08140F3A
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- adds r0, 0x29
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r3, r0, r1
- adds r2, r3, 0
- adds r2, 0x40
- adds r1, 0x8
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- ldrh r2, [r2]
- adds r1, r2
- mov r2, r8
- ands r1, r2
- ldrh r2, [r3, 0x4]
- ldr r0, =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
-_08140F3A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140D6C
-
- thumb_func_start sub_8140F6C
-sub_8140F6C: @ 8140F6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80EECA4
- ldr r0, =gUnknown_0203AB88
- ldr r1, [r0]
- movs r0, 0xFF
- strh r0, [r1, 0x28]
- ldrb r2, [r1, 0x19]
- cmp r2, 0x1
- bne _08140F90
- adds r0, r1, 0
- adds r0, 0x23
- strb r2, [r0]
- b _08140F96
- .pool
-_08140F90:
- adds r1, 0x23
- movs r0, 0
- strb r0, [r1]
-_08140F96:
- ldr r0, =gUnknown_0203AB88
- ldr r0, [r0]
- adds r0, 0x21
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x20
- strh r1, [r0, 0xA]
- ldr r1, =sub_81410FC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140F6C
-
- thumb_func_start sub_8140FC4
-sub_8140FC4: @ 8140FC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gUnknown_0203AB88
- ldr r2, [r4]
- ldrb r1, [r2, 0x1A]
- lsls r1, 28
- lsrs r1, 28
- adds r2, 0x1B
- adds r2, r1
- ldr r3, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r3
- ldrh r0, [r5, 0x10]
- strb r0, [r2]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r1, 0x1B
- adds r1, r0
- ldrb r0, [r1]
- bl sub_8142758
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xC]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r1, 0x1B
- adds r1, r0
- ldrb r0, [r1]
- bl sub_81436D0
- ldr r0, [r4]
- ldrb r1, [r0, 0x19]
- ldrh r0, [r5, 0x22]
- subs r0, r1
- strh r0, [r5, 0x22]
- lsls r0, 16
- cmp r0, 0
- bge _08141024
- movs r0, 0
- strh r0, [r5, 0x22]
-_08141024:
- ldrh r0, [r5, 0x22]
- bl sub_8143514
- ldr r0, =sub_8140F6C
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8140FC4
-
- thumb_func_start sub_8141040
-sub_8141040: @ 8141040
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_8140D6C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x1E
- beq _08141076
- cmp r0, 0x1E
- bgt _0814106C
- cmp r0, 0
- beq _08141072
- b _0814108A
- .pool
-_0814106C:
- cmp r0, 0x3B
- beq _08141084
- b _0814108A
-_08141072:
- ldrb r0, [r4, 0x10]
- b _08141078
-_08141076:
- movs r0, 0
-_08141078:
- bl sub_81409B8
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _0814109A
-_08141084:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _0814109A
-_0814108A:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_0814109A:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081410F2
- ldr r0, =gUnknown_0203AB88
- ldr r3, [r0]
- ldr r2, =gUnknown_085B6154
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x8
- adds r0, r2
- ldr r1, [r3, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _081410E8
- movs r0, 0x16
- bl PlaySE
- b _081410F2
- .pool
-_081410E8:
- movs r0, 0x5F
- bl m4aSongNumStart
- ldr r0, =sub_8140FC4
- str r0, [r4]
-_081410F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8141040
-
- thumb_func_start sub_81410FC
-sub_81410FC: @ 81410FC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0xA]
- subs r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- ble _08141168
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08141128
- ldr r1, =gSpriteCoordOffsetX
- ldrh r0, [r1]
- adds r0, 0x2
- strh r0, [r1]
-_08141128:
- ldr r0, =gUnknown_0203AB88
- ldr r1, [r0]
- ldrh r0, [r1, 0x26]
- adds r0, 0x4
- strh r0, [r1, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x68
- bne _08141180
- ldr r2, =gSprites
- adds r0, r1, 0
- adds r0, 0x55
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- b _08141180
- .pool
-_08141168:
- movs r0, 0x1
- movs r1, 0xFF
- bl sub_8142E70
- movs r0, 0x1
- movs r1, 0xFF
- bl sub_8143038
- ldr r0, =sub_8141344
- str r0, [r4]
- movs r0, 0
- strh r0, [r4, 0xA]
-_08141180:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81410FC
-
- thumb_func_start sub_814118C
-sub_814118C: @ 814118C
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_0203AB88
- ldr r3, [r0]
- ldrb r2, [r3, 0x2]
- adds r5, r0, 0
- cmp r2, 0x2
- bgt _081411AC
- cmp r2, 0x1
- bge _081411B2
- b _08141280
- .pool
-_081411AC:
- cmp r2, 0x3
- beq _08141214
- b _08141280
-_081411B2:
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _081411E4
- cmp r4, 0xB
- bls _081411CC
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08141296
-_081411CC:
- ldr r0, =gUnknown_085B6348
- ldrb r1, [r3, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_081411E4:
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08141200
- ldr r0, =gUnknown_085B6348
- ldrb r1, [r3, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_08141200:
- ldr r0, =gUnknown_085B6348
- ldrb r1, [r3, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- b _0814133A
- .pool
-_08141214:
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bhi _08141248
- cmp r4, 0x5
- bls _0814122E
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08141296
-_0814122E:
- ldr r0, =gUnknown_085B6348
- ldrb r1, [r3, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_08141248:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08141268
- cmp r4, 0x6
- bls _08141268
- ldr r0, =gUnknown_085B6348
- ldrb r1, [r3, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 2
- b _0814133A
- .pool
-_08141268:
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_08141280:
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _081412B8
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081412A0
-_08141296:
- movs r0, 0x1
- b _0814133A
- .pool
-_081412A0:
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_081412B8:
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081412F0
- cmp r4, 0xC
- bls _081412DC
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsrs r0, 1
- b _0814133A
- .pool
-_081412DC:
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x2]
- b _0814133A
- .pool
-_081412F0:
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08141328
- cmp r4, 0xC
- bls _08141314
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x2]
- b _0814133A
- .pool
-_08141314:
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x1]
- b _0814133A
- .pool
-_08141328:
- ldr r1, =gUnknown_085B6348
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 25
- lsrs r0, 24
-_0814133A:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_814118C
-
- thumb_func_start sub_8141344
-sub_8141344: @ 8141344
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, =gUnknown_085B6422
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- bl Random
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r7, 0
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, =gUnknown_0203AB88
- ldr r0, [r3]
- ldr r2, =gTasks
- mov r5, r10
- lsls r1, r5, 2
- add r1, r10
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0x14]
- adds r0, 0x7C
- strb r2, [r0]
- ldr r0, [r3]
- adds r2, r0, 0
- adds r2, 0x7F
- strb r4, [r2]
- subs r2, 0x1
- strb r4, [r2]
- adds r0, 0x7D
- strb r4, [r0]
- ldrh r0, [r1, 0x18]
- adds r1, r7, 0
- bl sub_814118C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r1, r4, 24
- adds r0, r7, 0
- bl __modsi3
- lsrs r4, 25
- subs r0, r4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- movs r5, 0x1
- cmp r0, 0xC
- bgt _081413C8
- movs r5, 0
-_081413C8:
- cmp r6, 0x4F
- bhi _081413E0
- lsls r0, r5, 25
- b _081413EA
- .pool
-_081413E0:
- lsls r1, r5, 24
- asrs r1, 24
- movs r0, 0x1
- subs r0, r1
- lsls r0, 25
-_081413EA:
- lsrs r5, r0, 24
- ldr r0, _08141530 @ =gUnknown_0203AB88
- ldr r6, [r0]
- ldrb r0, [r6, 0x4]
- lsls r0, 30
- lsrs r0, 25
- ldr r1, _08141534 @ =gUnknown_085B6348
- adds r0, r1
- lsls r4, 24
- asrs r4, 24
- ldrh r0, [r0, 0x1A]
- adds r4, r0
- adds r0, r6, 0
- adds r0, 0x80
- strh r4, [r0]
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _0814141C
- ldr r1, _08141538 @ =0x47800000
- bl __addsf3
-_0814141C:
- ldr r1, _0814153C @ =0x40A00000
- bl __divsf3
- bl __fixunssfsi
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r4
- movs r2, 0x82
- adds r2, r6
- mov r8, r2
- strh r0, [r2]
- adds r0, r6, 0
- adds r0, 0x84
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- movs r0, 0x88
- adds r0, r6
- mov r9, r0
- movs r0, 0x1
- ands r0, r7
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r1
- lsls r0, 1
- add r0, sp
- movs r1, 0
- ldrsh r4, [r0, r1]
- adds r0, r4, 0
- bl __floatsisf
- cmp r4, 0
- bge _08141468
- ldr r1, _08141538 @ =0x47800000
- bl __addsf3
-_08141468:
- mov r2, r9
- str r0, [r2]
- adds r7, r6, 0
- adds r7, 0x8C
- ldrb r0, [r6, 0x4]
- lsls r0, 30
- lsrs r0, 25
- ldr r5, _08141534 @ =gUnknown_085B6348
- adds r0, r5
- movs r1, 0x18
- ldrsh r4, [r0, r1]
- adds r0, r4, 0
- bl __floatsisf
- adds r5, r0, 0
- cmp r4, 0
- bge _08141492
- ldr r1, _08141538 @ =0x47800000
- bl __addsf3
- adds r5, r0, 0
-_08141492:
- str r5, [r7]
- adds r7, r6, 0
- adds r7, 0x90
- ldr r1, _08141540 @ =0x3F000000
- adds r0, r5, 0
- bl __mulsf3
- adds r1, r5, 0
- bl __subsf3
- adds r5, r0, 0
- mov r2, r8
- movs r0, 0
- ldrsh r4, [r2, r0]
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _081414C2
- ldr r1, _08141538 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081414C2:
- adds r0, r5, 0
- adds r1, r2, 0
- bl __divsf3
- str r0, [r7]
- adds r1, r6, 0
- adds r1, 0x94
- ldr r0, _08141544 @ =0x42880000
- str r0, [r1]
- adds r1, 0x8
- ldr r0, _08141548 @ =0x00000000
- str r0, [r1]
- adds r5, r6, 0
- adds r5, 0x98
- mov r1, r8
- movs r2, 0
- ldrsh r4, [r1, r2]
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _081414F8
- ldr r1, _08141538 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081414F8:
- ldr r0, _0814154C @ =0x41000000
- adds r1, r2, 0
- bl __divsf3
- bl __negsf2
- str r0, [r5]
- adds r1, r6, 0
- adds r1, 0xA0
- ldr r0, _08141550 @ =0x42100000
- str r0, [r1]
- ldr r1, _08141554 @ =gTasks
- mov r5, r10
- lsls r0, r5, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- ldr r1, _08141558 @ =sub_814155C
- str r1, [r0]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08141530:
- .4byte gUnknown_0203AB88
-_08141534:
- .4byte gUnknown_085B6348
-_08141538:
- .4byte 0x47800000
-_0814153C:
- .4byte 0x40A00000
-_08141540:
- .4byte 0x3F000000
-_08141544:
- .4byte 0x42880000
-_08141548:
- .4byte 0x00000000
-_0814154C:
- .4byte 0x41000000
-_08141550:
- .4byte 0x42100000
-_08141554:
- .4byte gTasks
-_08141558:
- .4byte sub_814155C
- thumb_func_end sub_8141344
-
thumb_func_start sub_814155C
sub_814155C: @ 814155C
push {r4,lr}
@@ -4505,7 +2294,7 @@ sub_81428C4: @ 81428C4
bl DisplayYesNoMenu
ldr r1, =gUnknown_085B6408
adds r0, r4, 0
- bl sub_8121F68
+ bl DoYesNoFuncWithChoice
pop {r4}
pop {r0}
bx r0
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index ee8501d18..63af4c731 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -20,7 +20,7 @@ void ResetAllBgsCoordinates(void);
void SetVBlankHBlankCallbacksToNull(void);
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
+void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysState(void);
diff --git a/include/roulette_util.h b/include/roulette_util.h
index 7f0b9cbf8..4542b73c6 100644
--- a/include/roulette_util.h
+++ b/include/roulette_util.h
@@ -1,6 +1,8 @@
#ifndef GUARD_ROULETTE_UTIL_H
#define GUARD_ROULETTE_UTIL_H
+#include "roulette.h"
+
struct PulseBlendSettings
{
u16 blendColor;
@@ -41,5 +43,9 @@ void UnmarkUsedPulseBlendPalettes(struct PulseBlend *, u16, u8);
void UpdatePulseBlend(struct PulseBlend *);
void sub_8152008(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height);
void sub_8152058(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height);
+void task_tutorial_controls_fadein(struct UnkStruct0 *r0);
+void sub_8151678(struct UnkStruct0 *r0);
+u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, const struct UnkStruct1 *r2);
+void sub_8151A9C(struct UnkStruct0 *r0, u16 r1);
#endif // GUARD_ROULETTE_UTIL_H
diff --git a/include/strings.h b/include/strings.h
index 7c6ca14ba..7a23e2e0f 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1990,4 +1990,7 @@ extern const u8 gText_XSentOverY[];
extern const u8 gText_TakeGoodCareOfX[];
extern const u8 gText_CommunicationStandby5[];
+// roulette
+extern const u8 gUnknown_082A5B89[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 660c1d60d..d60e18c55 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -206,6 +206,7 @@ SECTIONS {
src/battle_records.o(.text);
src/pokedex_area_screen.o(.text);
src/evolution_scene.o(.text);
+ src/roulette.o(.text);
asm/roulette.o(.text);
src/pokedex_cry_screen.o(.text);
src/coins.o(.text);
diff --git a/src/decoration.c b/src/decoration.c
index 438f2cbd1..c4c3d6171 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1629,7 +1629,7 @@ void sub_8128950(u8 taskId)
void sub_81289D0(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_085A72C4);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085A72C4);
}
void sub_81289F0(u8 taskId)
@@ -1694,7 +1694,7 @@ void sub_8128AAC(u8 taskId)
void sub_8128B80(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_085A72CC);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085A72CC);
}
void sub_8128BA0(u8 taskId)
@@ -2589,7 +2589,7 @@ void sub_812A0E8(u8 taskId)
void sub_812A1A0(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_085A7348);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085A7348);
}
void sub_812A1C0(u8 taskId)
@@ -2602,7 +2602,7 @@ void sub_812A1C0(u8 taskId)
void sub_812A1F0(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_085A7350);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085A7350);
}
void sub_812A210(u8 taskId)
@@ -2726,7 +2726,7 @@ void sub_812A3D4(u8 taskId)
void sub_812A458(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_085A741C);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085A741C);
}
void sub_812A478(u8 taskId)
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 0adc6228e..e6547b300 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -152,7 +152,7 @@ static void Task_ContinueTaskAfterMessagePrints(u8 taskId)
gUnknown_0300117C(taskId);
}
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data)
+void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *data)
{
gUnknown_0203A138 = *data;
gTasks[taskId].func = Task_CallYesOrNoCallback;
diff --git a/src/roulette.c b/src/roulette.c
new file mode 100644
index 000000000..8a483e123
--- /dev/null
+++ b/src/roulette.c
@@ -0,0 +1,1053 @@
+#include "global.h"
+#include "alloc.h"
+#include "bg.h"
+#include "coins.h"
+#include "event_data.h"
+#include "gpu_regs.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "palette.h"
+#include "random.h"
+#include "roulette.h"
+#include "roulette_util.h"
+#include "rtc.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "tv.h"
+#include "window.h"
+#include "constants/species.h"
+#include "constants/songs.h"
+
+struct StructgUnknown_083F8DF4
+{
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03;
+ u8 var04;
+ u8 v[0x3];
+ u16 var08;
+ u16 var0A;
+ u16 var0C;
+ u16 v13[0x1];
+ u16 var10;
+ u16 var12;
+ u16 var14;
+ u8 v1[0x2];
+ u16 var18;
+ u16 var1A;
+ float var1C;
+};
+
+struct StructgUnknown_083F8C00
+{
+ u8 var00;
+ u8 var01_0:4;
+ u8 var01_4:4;
+ u8 var02;
+ u8 var03;
+ u8 var04;
+ u8 var05;
+ u8 var06;
+ u8 var07;
+ u32 var08;
+ u32 var0C;
+ u16 var10;
+ u16 var12;
+};
+
+extern struct Roulette
+{
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03_0:5;
+ u8 var03_5:1;
+ u8 var03_6:1;
+ u8 var03_7:1;
+ u8 var04_0:2;
+ u8 var04_2:5;
+ u8 var04_7:1;
+ u32 var08;
+ u8 var0C[0x6];
+ u8 var12[0x4];
+ u8 var16[0x3];
+ u8 var19;
+ u8 var1A_0:4;
+ u8 var1A_4:4;
+ u8 var1B[0x6];
+ u8 var21;
+ u8 var22;
+ u8 var23;
+ s16 var24;
+ s16 var26;
+ s16 var28;
+ s16 var2A;
+ struct OamMatrix var2C;
+ u16 var34;
+ struct Sprite *var38;
+ u8 var3C[0x40]; // Sprite IDs
+ u8 var7C;
+ u8 var7D;
+ u8 var7E;
+ u8 var7F;
+ s16 var80;
+ s16 var82;
+ s16 var84;
+ s16 var86;
+ float var88;
+ float var8C;
+ float var90;
+ float var94;
+ float var98;
+ float var9C;
+ float varA0;
+ u8 varA4;
+ u8 varA5;
+ u8 v51[0x2];
+ u16 varA8;
+ u16 varAA;
+ TaskFunc varAC;
+ u8 v46[0x4];
+ TaskFunc varB4;
+ struct UnkStruct0 varB8;
+ u16 tilemapBuffers[7][0x400];
+ u16 *unk_397C;
+} *gUnknown_0203AB88;
+extern u8 gUnknown_0203AB8C;
+
+/*static*/ void sub_8140814(u8);
+/*static*/ void sub_81408A8(u8);
+/*static*/ void sub_8140968(u8);
+/*static*/ void sub_8140BD0(u8);
+/*static*/ void sub_8141040(u8);
+/*static*/ void sub_81410FC(u8);
+/*static*/ void sub_8141344(u8);
+/*static*/ void sub_814155C(u8);
+/*static*/ void sub_8141DE4(u8);
+/*static*/ void sub_8141F7C(u8 taskId, TaskFunc r1, u16 r2, u16 r3);
+/*static*/ void sub_8141FF4(u8);
+/*static*/ void sub_8142070(void);
+/*static*/ void sub_8142284(u8);
+/*static*/ void sub_81424FC(u8);
+/*static*/ u8 sub_8142758(u8);
+/*static*/ void sub_8142814(void);
+/*static*/ void sub_8142C0C(u8);
+/*static*/ void sub_8142CD0(void);
+/*static*/ void sub_8142E70(u8, u8);
+/*static*/ void sub_8142F7C(void);
+/*static*/ void sub_8143038(u8, u8);
+/*static*/ void sub_81431E4(void);
+/*static*/ void sub_8143314(void);
+/*static*/ void sub_8143514(u16);
+/*static*/ void sub_81436D0(u8);
+/*static*/ void sub_814372C(u8);
+/*static*/ void sub_814391C(void);
+/*static*/ void sub_81439C8(void);
+/*static*/ void sub_8143A40(void);
+
+extern const struct BgTemplate gUnknown_085B6140[3];
+extern const struct WindowTemplate gUnknown_085B614C[];
+extern const u32 gUnknown_085B5DFC[];
+extern const u16 gUnknown_085B6418[];
+extern const struct StructgUnknown_083F8DF4 gUnknown_085B6348[];
+extern const u8 gUnknown_085B6344[];
+extern const struct UnkStruct1 gUnknown_085B6388[];
+extern const u16 gUnknown_085B5BFC[];
+extern const u32 gRouletteMenuTiles[];
+extern const u32 gRouletteWheelTiles[];
+extern const u32 gUnknown_085B5FA0[];
+extern const u8 gUnknown_082A5B89[];
+extern const u8 gUnknown_082A5C13[];
+extern const struct YesNoFuncTable gUnknown_085B6410;
+extern const struct StructgUnknown_083F8C00 gUnknown_085B6154[];
+extern const u8 gUnknown_085B641E[];
+extern const u16 gUnknown_085B6422;
+
+void sub_8140238(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ if (gUnknown_0203AB88->varB8.var00)
+ task_tutorial_controls_fadein(&gUnknown_0203AB88->varB8);
+}
+
+void sub_8140264(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8142814();
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0x200 - gUnknown_0203AB88->var26);
+ if (gUnknown_0203AB88->var01)
+ SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0203AB88->var34);
+ if (gUnknown_0203AB88->var2A != 0)
+ {
+ DmaCopy16(3, &gUnknown_0203AB88->tilemapBuffers[2][0xE0], (void *)BG_SCREEN_ADDR(4) + 0x1C0, 0x340);
+ gUnknown_0203AB88->var2A = 0;
+ }
+ switch (gUnknown_0203AB88->var28)
+ {
+ case 1:
+ SetBgAttribute(0, BG_ATTR_CHARBASEINDEX, 0);
+ ShowBg(0);
+ DmaCopy16(3, &gUnknown_0203AB88->tilemapBuffers[0][0xE0], (void *)BG_SCREEN_ADDR(31) + 0x1C0, 0x340);
+ gUnknown_0203AB88->var28 = 2;
+ break;
+ case 2:
+ DmaCopy16(3, &gUnknown_0203AB88->tilemapBuffers[0][0xE0], (void *)BG_SCREEN_ADDR(31) + 0x1C0, 0x340);
+ break;
+ case 0xFF:
+ SetBgAttribute(0, BG_ATTR_CHARBASEINDEX, 2);
+ ShowBg(0);
+ DmaFill16(3, 0, (void *)BG_SCREEN_ADDR(31) + 0x1C0, 0x340);
+ gUnknown_0203AB88->var28 = 0;
+ case 0:
+ break;
+ }
+}
+
+void sub_8140388(void)
+{
+ u32 size = 0;
+
+ gUnknown_0203AB88 = AllocZeroed(sizeof(*gUnknown_0203AB88));
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, gUnknown_085B6140, ARRAY_COUNT(gUnknown_085B6140));
+ SetBgTilemapBuffer(0, gUnknown_0203AB88->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, gUnknown_0203AB88->tilemapBuffers[2]);
+ SetBgTilemapBuffer(2, gUnknown_0203AB88->tilemapBuffers[6]);
+ InitWindows(gUnknown_085B614C);
+ sub_8197200();
+ gUnknown_0203AB8C = 0;
+ gUnknown_0203AB88->unk_397C = malloc_and_decompress(gUnknown_085B5DFC, &size);
+}
+
+void sub_8140418(void)
+{
+ FREE_AND_SET_NULL(gUnknown_0203AB88->unk_397C);
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(0);
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(2);
+ ResetBgsAndClearDma3BusyFlags(0);
+ memset(gUnknown_0203AB88, 0, sizeof(*gUnknown_0203AB88));
+ FREE_AND_SET_NULL(gUnknown_0203AB88);
+}
+
+void sub_8140470(void)
+{
+ u8 i;
+ u16 arr[3]; // the third is never used ?
+
+ memcpy(arr, &gUnknown_085B6418, sizeof(arr));
+ gUnknown_0203AB88->var04_0 = (gSpecialVar_0x8004 & 1);
+
+ if (gSpecialVar_0x8004 & 0x80)
+ gUnknown_0203AB88->var04_7 = 1;
+
+ gUnknown_0203AB88->var22 = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var03;
+ gUnknown_0203AB88->var23 = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var04;
+ gUnknown_0203AB88->var19 = gUnknown_085B6344[gUnknown_0203AB88->var04_0 + gUnknown_0203AB88->var04_7 * 2];
+ gUnknown_0203AB88->var1A_4 = 1;
+
+ if (gUnknown_0203AB88->var19 == 1)
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[0];
+ else
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[1];
+
+ sub_8151678(&gUnknown_0203AB88->varB8);
+
+ for (i = 0; i < 13; i++)
+ {
+ sub_815168C(&gUnknown_0203AB88->varB8, i, &gUnknown_085B6388[i]);
+ }
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
+ {
+ case SPECIES_SHROOMISH:
+ gUnknown_0203AB88->var02 |= 0x1;
+ break;
+ case SPECIES_TAILLOW:
+ gUnknown_0203AB88->var02 |= 0x2;
+ break;
+ }
+ }
+ RtcCalcLocalTime();
+}
+
+void sub_81405CC(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ScanlineEffect_Stop();
+ SetVBlankHBlankCallbacksToNull();
+ ResetVramOamAndBgCntRegs();
+ ResetAllBgsCoordinates();
+ break;
+ case 1:
+ sub_8140388();
+ DeactivateAllTextPrinters();
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_NONE |
+ BLDCNT_TGT2_BG2 |
+ BLDCNT_TGT2_BD);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(10, 6));
+ break;
+ case 2:
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ reset_temp_tile_data_buffers();
+ break;
+ case 3:
+ LoadPalette(&gUnknown_085B5BFC, 0, 0x1C0);
+ decompress_and_copy_tile_data_to_vram(1, gRouletteMenuTiles, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gRouletteWheelTiles, 0, 0, 0);
+ break;
+ case 4:
+ if (free_temp_tile_data_buffers_if_possible())
+ return;
+
+ sub_8140470();
+ CopyToBgTilemapBuffer(2, gUnknown_085B5FA0, 0, 0);
+ break;
+ case 5:
+ sub_8142C0C(0);
+ sub_81439C8();
+ sub_814391C();
+ sub_8143314();
+ sub_8142CD0();
+ sub_8142F7C();
+ sub_81431E4();
+ break;
+ case 6:
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_8143514(GetCoins());
+ sub_814372C(6);
+ sub_81436D0(0);
+ sub_81424FC(0);
+ NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE);
+ AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5B89, 0, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_0203AB8C, 3);
+ gSpriteCoordOffsetX = -0x3C;
+ gSpriteCoordOffsetY = 0x0;
+ break;
+ case 7:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_OBJ_ON);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ break;
+ case 8:
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(sub_8140264);
+ BeginHardwarePaletteFade(0xFF, 0, 16, 0, 1);
+ taskId = gUnknown_0203AB88->varA4 = CreateTask(sub_81408A8, 0);
+ gTasks[taskId].data[6] = 6;
+ gTasks[taskId].data[13] = GetCoins();
+ sub_80EDE84(GetCoins());
+ gUnknown_0203AB88->varA5 = CreateTask(sub_8140814, 1);
+ SetMainCallback2(sub_8140238);
+ return;
+ }
+ gMain.state++;
+}
+
+void sub_8140814(u8 unused)
+{
+ s16 sin;
+ s16 cos;
+
+ if (gUnknown_0203AB88->var21++ == gUnknown_0203AB88->var23)
+ {
+ gUnknown_0203AB88->var21 = 0;
+ if ((gUnknown_0203AB88->var24 -= gUnknown_0203AB88->var22) < 0)
+ gUnknown_0203AB88->var24 = 360 - gUnknown_0203AB88->var22;
+ }
+ sin = Sin2(gUnknown_0203AB88->var24);
+ cos = Cos2(gUnknown_0203AB88->var24);
+ sin = sin / 16;
+ gUnknown_0203AB88->var2C.a = gUnknown_0203AB88->var2C.d = cos / 16;
+ gUnknown_0203AB88->var2C.b = sin;
+ gUnknown_0203AB88->var2C.c = -sin;
+}
+
+void sub_81408A8(u8 taskId)
+{
+ if (UpdatePaletteFade() == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_NONE |
+ BLDCNT_TGT2_BG2 |
+ BLDCNT_TGT2_BD);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
+ gTasks[taskId].data[6] = 0;
+ sub_8141FF4(taskId);
+ sub_8142070();
+ sub_8143A40();
+ sub_81424FC(0);
+ sub_814372C(6);
+ sub_8141F7C(taskId, sub_8140968, 0xFFFF, 0x3);
+ }
+}
+
+void sub_8140914(u8 taskId)
+{
+ DisplayYesNoMenu();
+ NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, 0);
+ AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C13, 0, 1, TEXT_SPEED_FF, 0);
+ CopyWindowToVram(gUnknown_0203AB8C, 3);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_085B6410);
+}
+
+void sub_8140968(u8 taskId)
+{
+ sub_819746C(0, TRUE);
+ gTasks[taskId].func = sub_8140BD0;
+}
+
+void sub_8140994(u8 taskId)
+{
+ DestroyTask(gUnknown_0203AB88->varA5);
+ sub_8141DE4(taskId);
+}
+
+void sub_81409B8(u8 r0)
+{
+ u8 temp0, temp1;
+ switch (r0)
+ {
+ case 0:
+ sub_8152008(&gUnknown_0203AB88->tilemapBuffers[0][0], 0, 14, 7, 16, 13);
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ temp0 = (r0 * 3 + 14);
+ sub_8152008(&gUnknown_0203AB88->tilemapBuffers[0][0], 0, 14, 7, 16, 13);
+ sub_8152058(&gUnknown_0203AB88->tilemapBuffers[0][0], &gUnknown_0203AB88->unk_397C[281], temp0, 7, 3, 13);
+ break;
+ case 0x5:
+ case 0xA:
+ case 0xF:
+ temp1 = ((r0 - 1) / 5 * 3 + 10);
+ sub_8152008(&gUnknown_0203AB88->tilemapBuffers[0][0], 0, 14, 7, 16, 13);
+ sub_8152058(&gUnknown_0203AB88->tilemapBuffers[0][0], &gUnknown_0203AB88->unk_397C[320], 14, temp1, 16, 3);
+ break;
+ default:
+ temp0 = ((r0 % 5) * 3 + 14);
+ temp1 = ((r0 - 1) / 5 * 3 + 7);
+ sub_8152008(&gUnknown_0203AB88->tilemapBuffers[0][0], 0, 14, 7, 16, 13);
+ sub_8152058(&gUnknown_0203AB88->tilemapBuffers[0][0], &gUnknown_0203AB88->unk_397C[272], temp0, temp1, 3, 3);
+ break;
+ }
+}
+
+void sub_8140B64(u8 taskId)
+{
+ sub_81436D0(gTasks[taskId].data[4]);
+ sub_81409B8(gTasks[taskId].data[4]);
+}
+
+void sub_8140B8C(u8 taskId)
+{
+ gUnknown_0203AB88->var28 = 1;
+ sub_81409B8(gTasks[taskId].data[4]);
+ gUnknown_0203AB88->var23 = 2;
+ gUnknown_0203AB88->var21 = 0;
+ gTasks[taskId].func = sub_8141040;
+}
+
+void sub_8140BD0(u8 taskId)
+{
+ s16 i;
+
+ if (gUnknown_0203AB88->var08 & 0x20)
+ {
+ for (i = 11; i < 14; i++)
+ {
+ if ((gUnknown_0203AB88->var08 & gUnknown_085B6154[i].var08) == 0)
+ break;
+ }
+ }
+ else
+ {
+ for (i = 6; i < 10; i++)
+ {
+ if ((gUnknown_0203AB88->var08 & gUnknown_085B6154[i].var08) == 0)
+ break;
+ }
+ }
+ gTasks[taskId].data[4] = i;
+ sub_8141FF4(taskId);
+ sub_81424FC(gTasks[taskId].data[4]);
+ sub_81436D0(gTasks[taskId].data[4]);
+ sub_8142284(gTasks[taskId].data[4]);
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_8140B8C;
+}
+
+u8 sub_8140CA8(s16 *r0, u8 r1)
+{
+ s8 temp1 = 0;
+ s8 temp = 0;
+ s8 arr[4];
+ s8 t;
+
+ memcpy(&arr, gUnknown_085B641E, sizeof(arr));
+ t = *r0;
+
+ switch (r1)
+ {
+ case 0:
+ case 1:
+ temp1 = (*r0 % 5);
+ temp = temp1 + 15;
+ if (temp1 == 0)
+ temp1 = 5;
+ break;
+ case 2:
+ case 3:
+ temp1 = (*r0 / 5) * 5;
+ temp = temp1 + 4;
+ if (temp1 == 0)
+ temp1 = 1;
+ break;
+ }
+
+ *r0 += arr[r1];
+
+ if (*r0 < temp1)
+ *r0 = temp;
+
+ if (*r0 > temp)
+ *r0 = temp1;
+
+ if (*r0 != t)
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_8140D6C(u8 r0)
+{
+ u8 z = 0;
+ bool8 var0 = FALSE;
+ if (!(gMain.newKeys & DPAD_UP) || ((var0 = TRUE), sub_8140CA8(&gTasks[r0].data[4], 0)))
+ if (!(gMain.newKeys & DPAD_DOWN) || ((var0 = TRUE), sub_8140CA8(&gTasks[r0].data[4], 1)))
+ if (!(gMain.newKeys & DPAD_LEFT) || ((var0 = TRUE), sub_8140CA8(&gTasks[r0].data[4], 2)))
+ if (!(gMain.newKeys & DPAD_RIGHT) || ((var0 = TRUE), sub_8140CA8(&gTasks[r0].data[4], 3)))
+ if (var0)
+ {
+ u8 i;
+ struct Roulette *roulette;
+ sub_81424FC(gTasks[r0].data[4]);
+ sub_8140B64(r0);
+ gTasks[r0].data[1] = z;
+ PlaySE(SE_SELECT);
+ sub_8151A9C(&gUnknown_0203AB88->varB8, 0xFFFF);
+ roulette = gUnknown_0203AB88;
+ roulette->varB8.var04[15].var00_7 = 0;
+ roulette->varB8.var04[14].var00_7 = 0;
+ roulette->varB8.var04[13].var00_7 = 0;
+ sub_8142284(gTasks[r0].data[4]);
+ for (i = 0; i < 4; i++)
+ {
+ gSprites[gUnknown_0203AB88->var3C[i + 41]].oam.tileNum =
+ gSprites[gUnknown_0203AB88->var3C[i + 41]].sheetTileStart
+ + (*gSprites[gUnknown_0203AB88->var3C[i + 41]].anims)->type;
+ }
+ if ((u16)(gTasks[r0].data[4] - 1) < 4 && !(gUnknown_0203AB88->var08 & gUnknown_085B6154[gTasks[r0].data[4]].var08) )
+ {
+ z = gTasks[r0].data[4] - 1;
+ gSprites[gUnknown_0203AB88->var3C[z + 41]].oam.tileNum =
+ gSprites[gUnknown_0203AB88->var3C[z + 41]].sheetTileStart
+ + (*gSprites[gUnknown_0203AB88->var3C[z + 41]].anims + 1)->type;
+ }
+ }
+}
+
+void sub_8140F6C(u8 r0)
+{
+ sub_80EECA4();
+ gUnknown_0203AB88->var28 = 0xFF;
+ if (gUnknown_0203AB88->var19 == 1)
+ gUnknown_0203AB88->var23 = 1;
+ else
+ gUnknown_0203AB88->var23 = 0;
+ gUnknown_0203AB88->var21 = 0;
+ gTasks[r0].data[1] = 32;
+ gTasks[r0].func = sub_81410FC;
+}
+
+void sub_8140FC4(u8 taskId)
+{
+ gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0] = gTasks[taskId].data[4];
+ gTasks[taskId].data[2] = sub_8142758(gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]);
+ sub_81436D0(gUnknown_0203AB88->var1B[gUnknown_0203AB88->var1A_0]);
+ if ((gTasks[taskId].data[13] -= gUnknown_0203AB88->var19) < 0)
+ gTasks[taskId].data[13] = 0;
+ sub_8143514(gTasks[taskId].data[13]);
+ gTasks[taskId].func = &sub_8140F6C;
+}
+
+void sub_8141040(u8 taskId)
+{
+ sub_8140D6C(taskId);
+
+ switch (gTasks[taskId].data[0x1])
+ {
+ case 0:
+ sub_81409B8(gTasks[taskId].data[0x4]);
+ gTasks[taskId].data[0x1]+= 1;
+ break;
+ case 30:
+ sub_81409B8(0);
+ gTasks[taskId].data[0x1]+= 1;
+ break;
+ case 59:
+ gTasks[taskId].data[0x1] = 0;
+ break;
+ default:
+ gTasks[taskId].data[0x1]++;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if ((gUnknown_0203AB88->var08 & gUnknown_085B6154[gTasks[taskId].data[0x4]].var08))
+ PlaySE(SE_BOO);
+ else
+ {
+ m4aSongNumStart(SE_REGI);
+ gTasks[taskId].func = sub_8140FC4;
+ }
+ }
+}
+
+void sub_81410FC(u8 taskId)
+{
+ if (gTasks[taskId].data[0x1]-- > 0)
+ {
+ if (gTasks[taskId].data[0x1] > 0x2)
+ gSpriteCoordOffsetX += 0x2;
+ if ((gUnknown_0203AB88->var26 += 0x4) == 0x68)
+ gSprites[gUnknown_0203AB88->var3C[0x19]].callback = &SpriteCallbackDummy;
+ }
+ else
+ {
+ sub_8142E70(1, 0xFF);
+ sub_8143038(1, 0xFF);
+ gTasks[taskId].func = sub_8141344;
+ gTasks[taskId].data[0x1] = 0;
+ }
+}
+
+u8 sub_814118C(u16 r0, u16 r1)
+{
+ switch (gUnknown_0203AB88->var02)
+ {
+ case 1: // SHROOMISH
+ case 2: // TAILLOW
+ // one of the two is in party
+ if (gLocalTime.hours > 3 && gLocalTime.hours < 10)
+ {
+ if (r0 < 0xC || (r1 & 0x1))
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ else
+ {
+ return 0x1;
+ }
+ }
+ else if (!(r1 & 0x3))
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02;
+ }
+ break;
+ case 3:
+ // both are in party
+ if (gLocalTime.hours > 3 && gLocalTime.hours < 11)
+ {
+ if (r0 < 0x6 || (r1 & 0x1))
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ else
+ {
+ return 0x1;
+ }
+ }
+ else if ((r1 & 0x1) && r0 > 6)
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 4;
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ break;
+ case 0:
+ default:
+ // neither is in party
+ if (gLocalTime.hours > 3 && gLocalTime.hours < 10)
+ {
+ if (!(r1 & 0x3))
+ {
+ return 0x1;
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ }
+ else if (!(r1 & 0x3))
+ {
+ if (r0 > 12)
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02 / 2;
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02;
+ }
+ }
+ else if (r1 & 0x8000)
+ {
+ if (r0 > 12)
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var02;
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var01;
+ }
+ }
+ else
+ {
+ return gUnknown_085B6348[gUnknown_0203AB88->var04_0].var01 * 2;
+ }
+ break;
+ }
+}
+
+// r7/r8 swap
+#ifdef NONMATCHING
+void sub_8141344(u8 taskId)
+{
+ u8 randf;
+ s8 randfinal;
+ s8 r5;
+ u16 g = 0;
+ u16 rand;
+ u16 randmod;
+ u16 angles[4]; // angles in 90 degree steps
+
+ memcpy(angles, &gUnknown_085B6422, sizeof(angles));
+ rand = Random();
+ randmod = rand % 100;
+ gUnknown_0203AB88->var7C = gTasks[taskId].data[6];
+ gUnknown_0203AB88->var7D = gUnknown_0203AB88->var7E = gUnknown_0203AB88->var7F = g;
+ randf = sub_814118C(gTasks[taskId].data[8], rand);
+ randfinal = (rand % randf) - (randf / 2);
+
+ if (gLocalTime.hours < 13)
+ r5 = 0;
+ else
+ r5 = 1;
+
+ if (randmod < 80)
+ r5 *= 2;
+ else
+ r5 = (1 - r5) * 2;
+
+ gUnknown_0203AB88->var80 = g = gUnknown_085B6348[gUnknown_0203AB88->var04_0].var1A + randfinal;
+
+ g = S16TOPOSFLOAT(g) / 5.0f;
+ gUnknown_0203AB88->var82 = g * 3;
+ gUnknown_0203AB88->var84 = g;
+ gUnknown_0203AB88->var86 = g;
+
+ gUnknown_0203AB88->var88 = S16TOPOSFLOAT(angles[(rand & 1) + r5]);
+ gUnknown_0203AB88->var8C = S16TOPOSFLOAT(gUnknown_085B6348[gUnknown_0203AB88->var04_0].var18);
+ gUnknown_0203AB88->var90 = ((gUnknown_0203AB88->var8C * 0.5f) - gUnknown_0203AB88->var8C) / S16TOPOSFLOAT(gUnknown_0203AB88->var82);
+ gUnknown_0203AB88->var94 = 68.0f;
+ gUnknown_0203AB88->var9C = 0.0f;
+ gUnknown_0203AB88->var98 = -(8.0f / S16TOPOSFLOAT(gUnknown_0203AB88->var82));
+ gUnknown_0203AB88->varA0 = 36.0f;
+ gTasks[taskId].func = sub_814155C;
+}
+#else
+NAKED
+void sub_8141344(u8 taskId)
+{
+ asm_unified(" push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ movs r4, 0\n\
+ ldr r1, =gUnknown_085B6422\n\
+ mov r0, sp\n\
+ movs r2, 0x8\n\
+ bl memcpy\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x64\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ ldr r3, =gUnknown_0203AB88\n\
+ ldr r0, [r3]\n\
+ ldr r2, =gTasks\n\
+ mov r5, r10\n\
+ lsls r1, r5, 2\n\
+ add r1, r10\n\
+ lsls r1, 3\n\
+ adds r1, r2\n\
+ ldrh r2, [r1, 0x14]\n\
+ adds r0, 0x7C\n\
+ strb r2, [r0]\n\
+ ldr r0, [r3]\n\
+ adds r2, r0, 0\n\
+ adds r2, 0x7F\n\
+ strb r4, [r2]\n\
+ subs r2, 0x1\n\
+ strb r4, [r2]\n\
+ adds r0, 0x7D\n\
+ strb r4, [r0]\n\
+ ldrh r0, [r1, 0x18]\n\
+ adds r1, r7, 0\n\
+ bl sub_814118C\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r1, r4, 24\n\
+ adds r0, r7, 0\n\
+ bl __modsi3\n\
+ lsrs r4, 25\n\
+ subs r0, r4\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldr r0, =gLocalTime\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ movs r5, 0x1\n\
+ cmp r0, 0xC\n\
+ bgt _081413C8\n\
+ movs r5, 0\n\
+_081413C8:\n\
+ cmp r6, 0x4F\n\
+ bhi _081413E0\n\
+ lsls r0, r5, 25\n\
+ b _081413EA\n\
+ .pool\n\
+_081413E0:\n\
+ lsls r1, r5, 24\n\
+ asrs r1, 24\n\
+ movs r0, 0x1\n\
+ subs r0, r1\n\
+ lsls r0, 25\n\
+_081413EA:\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, _08141530 @ =gUnknown_0203AB88\n\
+ ldr r6, [r0]\n\
+ ldrb r0, [r6, 0x4]\n\
+ lsls r0, 30\n\
+ lsrs r0, 25\n\
+ ldr r1, _08141534 @ =gUnknown_085B6348\n\
+ adds r0, r1\n\
+ lsls r4, 24\n\
+ asrs r4, 24\n\
+ ldrh r0, [r0, 0x1A]\n\
+ adds r4, r0\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x80\n\
+ strh r4, [r0]\n\
+ lsls r4, 16\n\
+ asrs r4, 16\n\
+ adds r0, r4, 0\n\
+ bl __floatsisf\n\
+ cmp r4, 0\n\
+ bge _0814141C\n\
+ ldr r1, _08141538 @ =0x47800000\n\
+ bl __addsf3\n\
+_0814141C:\n\
+ ldr r1, _0814153C @ =0x40A00000\n\
+ bl __divsf3\n\
+ bl __fixunssfsi\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r0, r4, 1\n\
+ adds r0, r4\n\
+ movs r2, 0x82\n\
+ adds r2, r6\n\
+ mov r8, r2\n\
+ strh r0, [r2]\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x84\n\
+ strh r4, [r0]\n\
+ adds r0, 0x2\n\
+ strh r4, [r0]\n\
+ movs r0, 0x88\n\
+ adds r0, r6\n\
+ mov r9, r0\n\
+ movs r0, 0x1\n\
+ ands r0, r7\n\
+ lsls r1, r5, 24\n\
+ asrs r1, 24\n\
+ adds r0, r1\n\
+ lsls r0, 1\n\
+ add r0, sp\n\
+ movs r1, 0\n\
+ ldrsh r4, [r0, r1]\n\
+ adds r0, r4, 0\n\
+ bl __floatsisf\n\
+ cmp r4, 0\n\
+ bge _08141468\n\
+ ldr r1, _08141538 @ =0x47800000\n\
+ bl __addsf3\n\
+_08141468:\n\
+ mov r2, r9\n\
+ str r0, [r2]\n\
+ adds r7, r6, 0\n\
+ adds r7, 0x8C\n\
+ ldrb r0, [r6, 0x4]\n\
+ lsls r0, 30\n\
+ lsrs r0, 25\n\
+ ldr r5, _08141534 @ =gUnknown_085B6348\n\
+ adds r0, r5\n\
+ movs r1, 0x18\n\
+ ldrsh r4, [r0, r1]\n\
+ adds r0, r4, 0\n\
+ bl __floatsisf\n\
+ adds r5, r0, 0\n\
+ cmp r4, 0\n\
+ bge _08141492\n\
+ ldr r1, _08141538 @ =0x47800000\n\
+ bl __addsf3\n\
+ adds r5, r0, 0\n\
+_08141492:\n\
+ str r5, [r7]\n\
+ adds r7, r6, 0\n\
+ adds r7, 0x90\n\
+ ldr r1, _08141540 @ =0x3F000000\n\
+ adds r0, r5, 0\n\
+ bl __mulsf3\n\
+ adds r1, r5, 0\n\
+ bl __subsf3\n\
+ adds r5, r0, 0\n\
+ mov r2, r8\n\
+ movs r0, 0\n\
+ ldrsh r4, [r2, r0]\n\
+ adds r0, r4, 0\n\
+ bl __floatsisf\n\
+ adds r2, r0, 0\n\
+ cmp r4, 0\n\
+ bge _081414C2\n\
+ ldr r1, _08141538 @ =0x47800000\n\
+ bl __addsf3\n\
+ adds r2, r0, 0\n\
+_081414C2:\n\
+ adds r0, r5, 0\n\
+ adds r1, r2, 0\n\
+ bl __divsf3\n\
+ str r0, [r7]\n\
+ adds r1, r6, 0\n\
+ adds r1, 0x94\n\
+ ldr r0, _08141544 @ =0x42880000\n\
+ str r0, [r1]\n\
+ adds r1, 0x8\n\
+ ldr r0, _08141548 @ =0x00000000\n\
+ str r0, [r1]\n\
+ adds r5, r6, 0\n\
+ adds r5, 0x98\n\
+ mov r1, r8\n\
+ movs r2, 0\n\
+ ldrsh r4, [r1, r2]\n\
+ adds r0, r4, 0\n\
+ bl __floatsisf\n\
+ adds r2, r0, 0\n\
+ cmp r4, 0\n\
+ bge _081414F8\n\
+ ldr r1, _08141538 @ =0x47800000\n\
+ bl __addsf3\n\
+ adds r2, r0, 0\n\
+_081414F8:\n\
+ ldr r0, _0814154C @ =0x41000000\n\
+ adds r1, r2, 0\n\
+ bl __divsf3\n\
+ bl __negsf2\n\
+ str r0, [r5]\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xA0\n\
+ ldr r0, _08141550 @ =0x42100000\n\
+ str r0, [r1]\n\
+ ldr r1, _08141554 @ =gTasks\n\
+ mov r5, r10\n\
+ lsls r0, r5, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _08141558 @ =sub_814155C\n\
+ str r1, [r0]\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08141530:\n\
+ .4byte gUnknown_0203AB88\n\
+_08141534:\n\
+ .4byte gUnknown_085B6348\n\
+_08141538:\n\
+ .4byte 0x47800000\n\
+_0814153C:\n\
+ .4byte 0x40A00000\n\
+_08141540:\n\
+ .4byte 0x3F000000\n\
+_08141544:\n\
+ .4byte 0x42880000\n\
+_08141548:\n\
+ .4byte 0x00000000\n\
+_0814154C:\n\
+ .4byte 0x41000000\n\
+_08141550:\n\
+ .4byte 0x42100000\n\
+_08141554:\n\
+ .4byte gTasks\n\
+_08141558:\n\
+ .4byte sub_814155C");
+}
+#endif // NONMATCHING
diff --git a/src/roulette_util.c b/src/roulette_util.c
index c556a4af5..9531302d9 100755
--- a/src/roulette_util.c
+++ b/src/roulette_util.c
@@ -11,7 +11,7 @@ void sub_8151678(struct UnkStruct0 *r0)
memset(&r0->var04, 0, sizeof(r0->var04));
}
-u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2)
+u8 sub_815168C(struct UnkStruct0 *r0, u8 r1, const struct UnkStruct1 *r2)
{
if (!(r1 < 16) || (r0->var04[r1].var00_7))
return 0xFF;
diff --git a/src/secret_base.c b/src/secret_base.c
index 1f3f9b46a..4bdc49c2e 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1032,7 +1032,7 @@ void sub_80E9FFC(u8 taskId)
void sub_80EA06C(u8 taskId)
{
DisplayYesNoMenu();
- sub_8121F68(taskId, &gUnknown_0858D058);
+ DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058);
}
void sub_80EA08C(u8 taskId)