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)