summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/roulette.s9658
-rw-r--r--asm/roulette_util.s779
-rwxr-xr-xinclude/ewram.h8
-rw-r--r--include/m4a.h1
-rw-r--r--include/roulette.h38
-rw-r--r--include/roulette_util.h14
-rw-r--r--ld_script.txt4
-rw-r--r--src/roulette.c4637
-rw-r--r--src/roulette_util.c280
9 files changed, 4979 insertions, 10440 deletions
diff --git a/asm/roulette.s b/asm/roulette.s
deleted file mode 100644
index 04b3ac9b8..000000000
--- a/asm/roulette.s
+++ /dev/null
@@ -1,9658 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81150FC
-sub_81150FC: @ 81150FC
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _08115120 @ =gSharedMem + 0x19000
- adds r1, r0, 0
- adds r1, 0xB8
- ldrb r0, [r1]
- cmp r0, 0
- beq _0811511C
- adds r0, r1, 0
- bl task_tutorial_controls_fadein
-_0811511C:
- pop {r0}
- bx r0
- .align 2, 0
-_08115120: .4byte gSharedMem + 0x19000
- thumb_func_end sub_81150FC
-
- thumb_func_start sub_8115124
-sub_8115124: @ 8115124
- push {r4,lr}
- sub sp, 0x4
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8117434
- ldr r2, _08115188 @ =REG_BG1HOFS
- ldr r3, _0811518C @ =gSharedMem + 0x19000
- ldrh r1, [r3, 0x26]
- movs r4, 0x80
- lsls r4, 2
- adds r0, r4, 0
- subs r0, r1
- strh r0, [r2]
- ldrb r0, [r3, 0x1]
- cmp r0, 0
- beq _08115154
- ldr r1, _08115190 @ =REG_BLDALPHA
- ldrh r0, [r3, 0x34]
- strh r0, [r1]
-_08115154:
- movs r1, 0x2A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08115170
- ldr r1, _08115194 @ =0x040000d4
- ldr r0, _08115198 @ =gBGTilemapBuffers + 0x800 + 0x1C0
- str r0, [r1]
- ldr r0, _0811519C @ =0x060021c0
- str r0, [r1, 0x4]
- ldr r0, _081151A0 @ =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- strh r0, [r3, 0x2A]
-_08115170:
- movs r2, 0x28
- ldrsh r0, [r3, r2]
- cmp r0, 0x1
- beq _081151A4
- cmp r0, 0x1
- ble _0811521A
- cmp r0, 0x2
- beq _081151D4
- cmp r0, 0xFF
- beq _081151F8
- b _0811521A
- .align 2, 0
-_08115188: .4byte REG_BG1HOFS
-_0811518C: .4byte gSharedMem + 0x19000
-_08115190: .4byte REG_BLDALPHA
-_08115194: .4byte 0x040000d4
-_08115198: .4byte gBGTilemapBuffers + 0x800 + 0x1C0
-_0811519C: .4byte 0x060021c0
-_081151A0: .4byte 0x800001a0
-_081151A4:
- ldr r1, _081151C4 @ =REG_BG0CNT
- movs r4, 0xF8
- lsls r4, 5
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0xCC
- ldr r0, _081151C8 @ =gBGTilemapBuffers + 0x1000 + 0x1C0
- str r0, [r1]
- ldr r0, _081151CC @ =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, _081151D0 @ =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0x2
- b _08115218
- .align 2, 0
-_081151C4: .4byte REG_BG0CNT
-_081151C8: .4byte gBGTilemapBuffers + 0x1000 + 0x1C0
-_081151CC: .4byte 0x0600f9c0
-_081151D0: .4byte 0x800001a0
-_081151D4:
- ldr r1, _081151E8 @ =0x040000d4
- ldr r0, _081151EC @ =gBGTilemapBuffers + 0x1000 + 0x1C0
- str r0, [r1]
- ldr r0, _081151F0 @ =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, _081151F4 @ =0x800001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- b _0811521A
- .align 2, 0
-_081151E8: .4byte 0x040000d4
-_081151EC: .4byte gBGTilemapBuffers + 0x1000 + 0x1C0
-_081151F0: .4byte 0x0600f9c0
-_081151F4: .4byte 0x800001a0
-_081151F8:
- ldr r1, _08115224 @ =REG_BG0CNT
- ldr r2, _08115228 @ =0x00001f08
- adds r0, r2, 0
- strh r0, [r1]
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0811522C @ =0x040000d4
- mov r4, sp
- str r4, [r1]
- ldr r0, _08115230 @ =0x0600f9c0
- str r0, [r1, 0x4]
- ldr r0, _08115234 @ =0x810001a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
-_08115218:
- strh r0, [r3, 0x28]
-_0811521A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08115224: .4byte REG_BG0CNT
-_08115228: .4byte 0x00001f08
-_0811522C: .4byte 0x040000d4
-_08115230: .4byte 0x0600f9c0
-_08115234: .4byte 0x810001a0
- thumb_func_end sub_8115124
-
- thumb_func_start sub_8115238
-sub_8115238: @ 8115238
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, _081152C0 @ =gUnknown_083F8EC4
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- ldr r5, _081152C4 @ =gSharedMem + 0x19000
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r5, 0
- movs r1, 0
- bl memset
- ldr r0, _081152C8 @ =gSpecialVar_0x8004
- ldrh r2, [r0]
- movs r0, 0x1
- ands r0, r2
- ldrb r1, [r5, 0x4]
- movs r3, 0x4
- negs r3, r3
- ands r3, r1
- orrs r3, r0
- strb r3, [r5, 0x4]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08115276
- movs r0, 0x80
- orrs r3, r0
- strb r3, [r5, 0x4]
-_08115276:
- ldr r3, _081152CC @ =gUnknown_083F8DF4
- ldrb r2, [r5, 0x4]
- lsls r1, r2, 30
- lsrs r0, r1, 25
- adds r0, r3
- ldrb r0, [r0, 0x3]
- adds r4, r5, 0
- adds r4, 0x22
- strb r0, [r4]
- lsrs r0, r1, 25
- adds r0, r3
- ldrb r0, [r0, 0x4]
- adds r3, r5, 0
- adds r3, 0x23
- strb r0, [r3]
- ldr r0, _081152D0 @ =gUnknown_083F8DF0
- lsrs r1, 30
- lsls r2, 24
- lsrs r2, 31
- lsls r2, 1
- adds r1, r2
- adds r1, r0
- ldrb r2, [r1]
- strb r2, [r5, 0x19]
- ldrb r1, [r5, 0x1A]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x1A]
- cmp r2, 0x1
- bne _081152DC
- ldr r4, _081152D4 @ =gPlttBufferUnfaded
- ldr r3, _081152D8 @ =gPlttBufferFaded
- mov r0, sp
- ldrh r2, [r0]
- b _081152E4
- .align 2, 0
-_081152C0: .4byte gUnknown_083F8EC4
-_081152C4: .4byte gSharedMem + 0x19000
-_081152C8: .4byte gSpecialVar_0x8004
-_081152CC: .4byte gUnknown_083F8DF4
-_081152D0: .4byte gUnknown_083F8DF0
-_081152D4: .4byte gPlttBufferUnfaded
-_081152D8: .4byte gPlttBufferFaded
-_081152DC:
- ldr r4, _08115348 @ =gPlttBufferUnfaded
- ldr r3, _0811534C @ =gPlttBufferFaded
- mov r0, sp
- ldrh r2, [r0, 0x2]
-_081152E4:
- adds r0, r3, 0
- adds r0, 0xA2
- strh r2, [r0]
- ldr r1, _08115350 @ =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, _08115354 @ =gSharedMem + 0x190B8
- bl sub_8124918
- movs r4, 0
- ldr r5, _08115358 @ =gUnknown_083F8E34
-_08115308:
- lsls r2, r4, 3
- adds r2, r5
- ldr r0, _08115354 @ =gSharedMem + 0x190B8
- adds r1, r4, 0
- bl sub_812492C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xC
- bls _08115308
- movs r4, 0
- ldr r5, _0811535C @ =gSharedMem + 0x19000
-_08115322:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _08115360 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- beq _08115364
- adds r0, 0x2
- cmp r1, r0
- bne _0811536C
- ldrb r0, [r5, 0x2]
- movs r1, 0x1
- b _08115368
- .align 2, 0
-_08115348: .4byte gPlttBufferUnfaded
-_0811534C: .4byte gPlttBufferFaded
-_08115350: .4byte 0x0000ffff
-_08115354: .4byte gSharedMem + 0x190B8
-_08115358: .4byte gUnknown_083F8E34
-_0811535C: .4byte gSharedMem + 0x19000
-_08115360: .4byte gPlayerParty
-_08115364:
- ldrb r0, [r5, 0x2]
- movs r1, 0x2
-_08115368:
- orrs r0, r1
- strb r0, [r5, 0x2]
-_0811536C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _08115322
- bl RtcCalcLocalTime
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8115238
-
- thumb_func_start sub_8115384
-sub_8115384: @ 8115384
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _081153A4 @ =gMain
- ldr r2, _081153A8 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x7
- bls _08115398
- b _081155FE
-_08115398:
- lsls r0, 2
- ldr r1, _081153AC @ =_081153B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081153A4: .4byte gMain
-_081153A8: .4byte 0x0000043c
-_081153AC: .4byte _081153B0
- .align 2, 0
-_081153B0:
- .4byte _081153D0
- .4byte _08115444
- .4byte _08115460
- .4byte _08115494
- .4byte _081154CC
- .4byte _081154FC
- .4byte _0811556C
- .4byte _0811558C
-_081153D0:
- movs r0, 0
- bl SetVBlankCallback
- bl remove_some_task
- bl sub_80F9438
- bl sub_80F9368
- ldr r1, _08115420 @ =REG_BG2CNT
- ldr r3, _08115424 @ =0x00004686
- adds r0, r3, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _08115428 @ =0x00004401
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x46
- movs r3, 0x90
- lsls r3, 6
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0811542C @ =0x0000060a
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08115430 @ =gUnknown_08E8096C
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08115434 @ =gRouletteWheelTiles
- ldr r1, _08115438 @ =0x06004000
- bl LZ77UnCompVram
- ldr r1, _0811543C @ =gMain
- ldr r3, _08115440 @ =0x0000043c
- adds r1, r3
- b _0811557A
- .align 2, 0
-_08115420: .4byte REG_BG2CNT
-_08115424: .4byte 0x00004686
-_08115428: .4byte 0x00004401
-_0811542C: .4byte 0x0000060a
-_08115430: .4byte gUnknown_08E8096C
-_08115434: .4byte gRouletteWheelTiles
-_08115438: .4byte 0x06004000
-_0811543C: .4byte gMain
-_08115440: .4byte 0x0000043c
-_08115444:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- ldr r1, _08115458 @ =gMain
- ldr r0, _0811545C @ =0x0000043c
- adds r1, r0
- b _0811557A
- .align 2, 0
-_08115458: .4byte gMain
-_0811545C: .4byte 0x0000043c
-_08115460:
- ldr r0, _08115480 @ =gWindowConfig_81E6C3C
- bl SetUpWindowConfig
- ldr r0, _08115484 @ =gWindowConfig_81E6CE4
- bl InitMenuWindow
- ldr r0, _08115488 @ =gUnknown_083F86BC
- movs r2, 0xE0
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- ldr r1, _0811548C @ =gMain
- ldr r2, _08115490 @ =0x0000043c
- adds r1, r2
- b _0811557A
- .align 2, 0
-_08115480: .4byte gWindowConfig_81E6C3C
-_08115484: .4byte gWindowConfig_81E6CE4
-_08115488: .4byte gUnknown_083F86BC
-_0811548C: .4byte gMain
-_08115490: .4byte 0x0000043c
-_08115494:
- bl sub_8115238
- bl sub_80F9020
- ldr r0, _081154B4 @ =gUnknown_083F88BC
- ldr r1, _081154B8 @ =gSharedMem + 0x18800
- bl LZ77UnCompWram
- ldr r0, _081154BC @ =gUnknown_083F8A60
- ldr r1, _081154C0 @ =0x06003000
- bl LZ77UnCompVram
- ldr r1, _081154C4 @ =gMain
- ldr r3, _081154C8 @ =0x0000043c
- adds r1, r3
- b _0811557A
- .align 2, 0
-_081154B4: .4byte gUnknown_083F88BC
-_081154B8: .4byte gSharedMem + 0x18800
-_081154BC: .4byte gUnknown_083F8A60
-_081154C0: .4byte 0x06003000
-_081154C4: .4byte gMain
-_081154C8: .4byte 0x0000043c
-_081154CC:
- movs r0, 0
- bl sub_8117838
- bl sub_811857C
- bl sub_81184D8
- bl sub_8117F2C
- bl sub_8117900
- bl sub_8117BBC
- bl sub_8117DF4
- ldr r1, _081154F4 @ =gMain
- ldr r0, _081154F8 @ =0x0000043c
- adds r1, r0
- b _0811557A
- .align 2, 0
-_081154F4: .4byte gMain
-_081154F8: .4byte 0x0000043c
-_081154FC:
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _08115550 @ =gSaveBlock1
- ldr r1, _08115554 @ =0x00000494
- adds r0, r1
- ldrh r0, [r0]
- bl sub_81180F4
- movs r0, 0x6
- bl sub_81182F8
- movs r0, 0
- bl sub_811829C
- movs r0, 0
- bl sub_8117158
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08115558 @ =gUnknown_081C4157
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _0811555C @ =gSpriteCoordOffsetX
- movs r2, 0x3C
- negs r2, r2
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08115560 @ =gSpriteCoordOffsetY
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08115564 @ =gMain
- ldr r3, _08115568 @ =0x0000043c
- adds r1, r3
- b _0811557A
- .align 2, 0
-_08115550: .4byte gSaveBlock1
-_08115554: .4byte 0x00000494
-_08115558: .4byte gUnknown_081C4157
-_0811555C: .4byte gSpriteCoordOffsetX
-_08115560: .4byte gSpriteCoordOffsetY
-_08115564: .4byte gMain
-_08115568: .4byte 0x0000043c
-_0811556C:
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _08115584 @ =0x00001741
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _08115588 @ =0x0000043c
- adds r1, r2, r0
-_0811557A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081155FE
- .align 2, 0
-_08115584: .4byte 0x00001741
-_08115588: .4byte 0x0000043c
-_0811558C:
- ldr r3, _08115608 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _0811560C @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08115610 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08115614 @ =sub_8115124
- bl SetVBlankCallback
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r0, _08115618 @ =sub_81156BC
- movs r1, 0
- bl CreateTask
- ldr r4, _0811561C @ =gSharedMem + 0x19000
- adds r1, r4, 0
- adds r1, 0xA4
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08115620 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x6
- strh r0, [r1, 0x14]
- ldr r0, _08115624 @ =gSaveBlock1
- ldr r2, _08115628 @ =0x00000494
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1, 0x22]
- ldr r0, _0811562C @ =sub_8115634
- movs r1, 0x1
- bl CreateTask
- adds r4, 0xA5
- strb r0, [r4]
- ldr r0, _08115630 @ =sub_81150FC
- bl SetMainCallback2
-_081155FE:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08115608: .4byte 0x04000208
-_0811560C: .4byte 0x04000200
-_08115610: .4byte REG_DISPSTAT
-_08115614: .4byte sub_8115124
-_08115618: .4byte sub_81156BC
-_0811561C: .4byte gSharedMem + 0x19000
-_08115620: .4byte gTasks
-_08115624: .4byte gSaveBlock1
-_08115628: .4byte 0x00000494
-_0811562C: .4byte sub_8115634
-_08115630: .4byte sub_81150FC
- thumb_func_end sub_8115384
-
- thumb_func_start sub_8115634
-sub_8115634: @ 8115634
- push {r4-r6,lr}
- ldr r0, _081156B8 @ =gSharedMem + 0x19000
- adds r3, r0, 0
- adds r3, 0x21
- ldrb r1, [r3]
- adds r2, r1, 0x1
- strb r2, [r3]
- adds r2, r0, 0
- adds r2, 0x23
- lsls r1, 24
- lsrs r1, 24
- adds r6, r0, 0
- ldrb r2, [r2]
- cmp r1, r2
- bne _08115674
- movs r0, 0
- strb r0, [r3]
- adds r2, r6, 0
- adds r2, 0x22
- ldrb r1, [r2]
- ldrh r0, [r6, 0x24]
- subs r0, r1
- strh r0, [r6, 0x24]
- lsls r0, 16
- cmp r0, 0
- bge _08115674
- ldrb r1, [r2]
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r6, 0x24]
-_08115674:
- adds r4, r6, 0
- ldrh r0, [r4, 0x24]
- bl Sin2
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r4, 0x24]
- bl Cos2
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r0, r5, 16
- asrs r0, 16
- cmp r0, 0
- bge _08115694
- adds r0, 0xF
-_08115694:
- lsls r0, 12
- lsrs r5, r0, 16
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0
- bge _081156A2
- adds r0, 0xF
-_081156A2:
- asrs r0, 4
- strh r0, [r6, 0x32]
- strh r0, [r6, 0x2C]
- strh r5, [r6, 0x2E]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0x30]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081156B8: .4byte gSharedMem + 0x19000
- thumb_func_end sub_8115634
-
- thumb_func_start sub_81156BC
-sub_81156BC: @ 81156BC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _08115716
- ldr r2, _0811571C @ =REG_BLDCNT
- ldrh r0, [r2]
- movs r5, 0x90
- lsls r5, 6
- adds r1, r5, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08115720 @ =REG_BLDALPHA
- ldr r2, _08115724 @ =0x00000808
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08115728 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x14]
- adds r0, r4, 0
- bl sub_8116CAC
- bl sub_8116CF8
- bl sub_81185E8
- movs r0, 0
- bl sub_8117158
- movs r0, 0x6
- bl sub_81182F8
- ldr r1, _0811572C @ =sub_81159BC
- ldr r2, _08115730 @ =0x0000ffff
- adds r0, r4, 0
- movs r3, 0x3
- bl sub_8116C34
-_08115716:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811571C: .4byte REG_BLDCNT
-_08115720: .4byte REG_BLDALPHA
-_08115724: .4byte 0x00000808
-_08115728: .4byte gTasks
-_0811572C: .4byte sub_81159BC
-_08115730: .4byte 0x0000ffff
- thumb_func_end sub_81156BC
-
- thumb_func_start sub_8115734
-sub_8115734: @ 8115734
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x14
- movs r1, 0x8
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08115770 @ =0x00002d9e
- bl sub_814AAF8
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08115774 @ =gUnknown_081C41E3
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _08115778 @ =gUnknown_083F8EBC
- adds r0, r4, 0
- bl DoYesNoFuncWithChoice
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08115770: .4byte 0x00002d9e
-_08115774: .4byte gUnknown_081C41E3
-_08115778: .4byte gUnknown_083F8EBC
- thumb_func_end sub_8115734
-
- thumb_func_start sub_811577C
-sub_811577C: @ 811577C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x14
- movs r1, 0x8
- movs r2, 0x1A
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r1, _081157A4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081157A8 @ =sub_81159BC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081157A4: .4byte gTasks
-_081157A8: .4byte sub_81159BC
- thumb_func_end sub_811577C
-
- thumb_func_start sub_81157AC
-sub_81157AC: @ 81157AC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _081157CC @ =gSharedMem + 0x19000
- adds r0, 0xA5
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0
- bl sub_8116AB0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081157CC: .4byte gSharedMem + 0x19000
- thumb_func_end sub_81157AC
-
- thumb_func_start sub_81157D0
-sub_81157D0: @ 81157D0
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bhi _081158C8
- lsls r0, r4, 2
- ldr r1, _081157E8 @ =_081157EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081157E8: .4byte _081157EC
- .align 2, 0
-_081157EC:
- .4byte _0811582C
- .4byte _08115848
- .4byte _08115848
- .4byte _08115848
- .4byte _08115848
- .4byte _08115884
- .4byte _081158C8
- .4byte _081158C8
- .4byte _081158C8
- .4byte _081158C8
- .4byte _08115884
- .4byte _081158C8
- .4byte _081158C8
- .4byte _081158C8
- .4byte _081158C8
- .4byte _08115884
-_0811582C:
- ldr r0, _08115844 @ =gBGTilemapBuffers + 0x1000
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0xD
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8124DDC
- b _08115918
- .align 2, 0
-_08115844: .4byte gBGTilemapBuffers + 0x1000
-_08115848:
- lsls r0, r4, 1
- adds r0, r4
- adds r0, 0xE
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, _0811587C @ =gBGTilemapBuffers + 0x1000
- movs r0, 0x10
- str r0, [sp]
- movs r4, 0xD
- str r4, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8124DDC
- ldr r1, _08115880 @ =gSharedMem + 0x18A32
- movs r0, 0x3
- str r0, [sp]
- str r4, [sp, 0x4]
- adds r0, r5, 0
- adds r2, r7, 0
- movs r3, 0x7
- bl sub_8124E2C
- b _08115918
- .align 2, 0
-_0811587C: .4byte gBGTilemapBuffers + 0x1000
-_08115880: .4byte gSharedMem + 0x18A32
-_08115884:
- subs r0, r4, 0x1
- movs r1, 0x5
- bl __divsi3
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0xA
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r5, _081158C0 @ =gBGTilemapBuffers + 0x1000
- movs r4, 0x10
- str r4, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8124DDC
- ldr r1, _081158C4 @ =gSharedMem + 0x18A80
- str r4, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0xE
- adds r3, r6, 0
- bl sub_8124E2C
- b _08115918
- .align 2, 0
-_081158C0: .4byte gBGTilemapBuffers + 0x1000
-_081158C4: .4byte gSharedMem + 0x18A80
-_081158C8:
- 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 r7, r1, 24
- subs r0, r4, 0x1
- movs r1, 0x5
- bl __divsi3
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x7
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r4, _08115920 @ =gBGTilemapBuffers + 0x1000
- movs r0, 0x10
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8124DDC
- ldr r1, _08115924 @ =gSharedMem + 0x18A20
- movs r0, 0x3
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r2, r7, 0
- adds r3, r6, 0
- bl sub_8124E2C
-_08115918:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08115920: .4byte gBGTilemapBuffers + 0x1000
-_08115924: .4byte gSharedMem + 0x18A20
- thumb_func_end sub_81157D0
-
- thumb_func_start sub_8115928
-sub_8115928: @ 8115928
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- cmp r1, 0
- bne _0811594C
- ldr r1, _08115948 @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x10]
- bl sub_811829C
- b _08115960
- .align 2, 0
-_08115948: .4byte gTasks
-_0811594C:
- ldr r0, _08115974 @ =gSharedMem + 0x19000
- ldrb r1, [r0, 0x1A]
- lsls r1, 28
- lsrs r1, 28
- adds r0, 0x1B
- adds r1, r0
- ldrb r0, [r1]
- bl sub_811829C
- lsls r4, r5, 2
-_08115960:
- ldr r0, _08115978 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x10]
- bl sub_81157D0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08115974: .4byte gSharedMem + 0x19000
-_08115978: .4byte gTasks
- thumb_func_end sub_8115928
-
- thumb_func_start sub_811597C
-sub_811597C: @ 811597C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _081159B0 @ =gSharedMem + 0x19000
- movs r6, 0
- movs r1, 0x1
- strh r1, [r5, 0x28]
- ldr r1, _081159B4 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrb r0, [r4, 0x10]
- bl sub_81157D0
- adds r1, r5, 0
- adds r1, 0x23
- movs r0, 0x2
- strb r0, [r1]
- adds r5, 0x21
- strb r6, [r5]
- ldr r0, _081159B8 @ =sub_8115E14
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081159B0: .4byte gSharedMem + 0x19000
-_081159B4: .4byte gTasks
-_081159B8: .4byte sub_8115E14
- thumb_func_end sub_811597C
-
- thumb_func_start sub_81159BC
-sub_81159BC: @ 81159BC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, _08115A10 @ =gSharedMem + 0x19000
- ldr r1, [r3, 0x8]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08115A1C
- movs r2, 0xB
- ldr r5, _08115A14 @ =gUnknown_083F8C00
- adds r0, r5, 0
- adds r0, 0xE4
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _08115A18 @ =gTasks
- mov r12, r0
- lsls r7, r6, 2
- cmp r1, 0
- beq _08115A5A
- adds r4, r3, 0
- adds r3, r5, 0
- adds r3, 0x8
-_081159EA:
- lsls r0, r2, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r2, r0, 16
- asrs r1, r0, 16
- cmp r1, 0xD
- bgt _08115A5A
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, [r4, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _081159EA
- b _08115A5A
- .align 2, 0
-_08115A10: .4byte gSharedMem + 0x19000
-_08115A14: .4byte gUnknown_083F8C00
-_08115A18: .4byte gTasks
-_08115A1C:
- movs r2, 0x6
- ldr r5, _08115A88 @ =gUnknown_083F8C00
- adds r0, r5, 0
- adds r0, 0x80
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _08115A8C @ =gTasks
- mov r12, r0
- lsls r7, r6, 2
- cmp r1, 0
- beq _08115A5A
- adds r4, r3, 0
- adds r3, r5, 0
- adds r3, 0x8
-_08115A38:
- lsls r0, r2, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r2, r0, 16
- asrs r1, r0, 16
- cmp r1, 0x9
- bgt _08115A5A
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, [r4, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08115A38
-_08115A5A:
- adds r4, r7, r6
- lsls r4, 3
- add r4, r12
- movs r5, 0
- strh r2, [r4, 0x10]
- adds r0, r6, 0
- bl sub_8116CAC
- ldrb r0, [r4, 0x10]
- bl sub_8117158
- ldrb r0, [r4, 0x10]
- bl sub_811829C
- ldrb r0, [r4, 0x10]
- bl sub_8116EF8
- strh r5, [r4, 0xA]
- ldr r0, _08115A90 @ =sub_811597C
- str r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08115A88: .4byte gUnknown_083F8C00
-_08115A8C: .4byte gTasks
-_08115A90: .4byte sub_811597C
- thumb_func_end sub_81159BC
-
- thumb_func_start sub_8115A94
-sub_8115A94: @ 8115A94
- 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, _08115ADC @ =gUnknown_083F8ECA
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldrb r0, [r4]
- mov r8, r0
- cmp r5, 0
- blt _08115B08
- cmp r5, 0x1
- bgt _08115AE0
- 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 _08115B08
- movs r6, 0x5
- b _08115B08
- .align 2, 0
-_08115ADC: .4byte gUnknown_083F8ECA
-_08115AE0:
- cmp r5, 0x3
- bgt _08115B08
- 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 _08115B08
- movs r6, 0x1
-_08115B08:
- 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 _08115B2A
- asrs r0, r2, 24
- strh r0, [r4]
-_08115B2A:
- movs r0, 0
- ldrsh r1, [r4, r0]
- asrs r0, r2, 24
- cmp r1, r0
- ble _08115B36
- strh r3, [r4]
-_08115B36:
- mov r1, r8
- lsls r0, r1, 24
- movs r2, 0
- ldrsh r1, [r4, r2]
- asrs r0, 24
- cmp r1, r0
- bne _08115B48
- movs r0, 0
- b _08115B4A
-_08115B48:
- movs r0, 0x1
-_08115B4A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8115A94
-
- thumb_func_start sub_8115B58
-sub_8115B58: @ 8115B58
- 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 r8, r0
- movs r5, 0
- ldr r4, _08115D30 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08115B94
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _08115D34 @ =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0
- bl sub_8115A94
- lsls r0, 24
- cmp r0, 0
- bne _08115B94
- b _08115D20
-_08115B94:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08115BBA
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _08115D34 @ =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x1
- bl sub_8115A94
- lsls r0, 24
- cmp r0, 0
- bne _08115BBA
- b _08115D20
-_08115BBA:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08115BE0
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _08115D34 @ =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x2
- bl sub_8115A94
- lsls r0, 24
- cmp r0, 0
- bne _08115BE0
- b _08115D20
-_08115BE0:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08115C06
- movs r5, 0x1
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _08115D34 @ =gTasks + 0x8
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x3
- bl sub_8115A94
- lsls r0, 24
- cmp r0, 0
- bne _08115C06
- b _08115D20
-_08115C06:
- cmp r5, 0
- bne _08115C0C
- b _08115D20
-_08115C0C:
- ldr r0, _08115D38 @ =gTasks
- lsls r6, r7, 2
- adds r4, r6, r7
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x10]
- bl sub_8117158
- adds r0, r7, 0
- movs r1, 0
- bl sub_8115928
- mov r1, r8
- strh r1, [r4, 0xA]
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08115D3C @ =gSharedMem + 0x190B8
- ldr r1, _08115D40 @ =0x0000ffff
- adds r0, r5, 0
- bl sub_8124D3C
- adds r3, r5, 0
- adds r3, 0xB8
- ldrb r2, [r3]
- movs r1, 0x7F
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- subs r3, 0xC
- ldrb r2, [r3]
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- adds r2, r5, 0
- adds r2, 0xA0
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- ldrb r0, [r4, 0x10]
- bl sub_8116EF8
- movs r4, 0
- mov r12, r6
- ldr r6, _08115D44 @ =gSprites
- movs r2, 0x7C
- negs r2, r2
- adds r2, r5
- mov r10, r2
- movs r0, 0x8
- adds r0, r6
- mov r8, r0
- ldr r1, _08115D48 @ =0xfffffc00
- mov r9, r1
- ldr r2, _08115D4C @ =0x000003ff
- adds r5, r2, 0
-_08115C7C:
- adds r0, r4, 0
- adds r0, 0x29
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r6
- adds r2, r3, 0
- adds r2, 0x40
- add r0, r8
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0]
- ldrh r2, [r2]
- adds r1, r2
- ands r1, r5
- ldrh r2, [r3, 0x4]
- mov r0, r9
- 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 _08115C7C
- ldr r0, _08115D38 @ =gTasks
- mov r2, r12
- 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 _08115D20
- ldr r2, _08115D50 @ =gUnknown_083F8C00
- movs r0, 0x10
- ldrsh r1, [r1, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x8
- adds r0, r2
- ldr r2, _08115D54 @ =gSharedMem + 0x19000
- ldr r1, [r2, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08115D20
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r2, 0
- add r0, r8
- adds r0, 0x65
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08115D44 @ =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
- ldr r2, _08115D4C @ =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r3, 0x4]
- ldr r0, _08115D48 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
-_08115D20:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08115D30: .4byte gMain
-_08115D34: .4byte gTasks + 0x8
-_08115D38: .4byte gTasks
-_08115D3C: .4byte gSharedMem + 0x190B8
-_08115D40: .4byte 0x0000ffff
-_08115D44: .4byte gSprites
-_08115D48: .4byte 0xfffffc00
-_08115D4C: .4byte 0x000003ff
-_08115D50: .4byte gUnknown_083F8C00
-_08115D54: .4byte gSharedMem + 0x19000
- thumb_func_end sub_8115B58
-
- thumb_func_start sub_8115D58
-sub_8115D58: @ 8115D58
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08115D70 @ =gSharedMem + 0x19000
- movs r0, 0xFF
- strh r0, [r1, 0x28]
- ldrb r0, [r1, 0x19]
- cmp r0, 0x1
- bne _08115D74
- adds r2, r1, 0
- adds r2, 0x23
- b _08115D7A
- .align 2, 0
-_08115D70: .4byte gSharedMem + 0x19000
-_08115D74:
- adds r2, r1, 0
- adds r2, 0x23
- movs r0, 0
-_08115D7A:
- strb r0, [r2]
- adds r1, 0x21
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08115D98 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x20
- strh r1, [r0, 0xA]
- ldr r1, _08115D9C @ =sub_8115ECC
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_08115D98: .4byte gTasks
-_08115D9C: .4byte sub_8115ECC
- thumb_func_end sub_8115D58
-
- thumb_func_start sub_8115DA0
-sub_8115DA0: @ 8115DA0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08115E08 @ =gSharedMem + 0x19000
- ldrb r2, [r4, 0x1A]
- lsls r2, 28
- lsrs r2, 28
- adds r5, r4, 0
- adds r5, 0x1B
- adds r2, r5
- ldr r3, _08115E0C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r6, r1, r3
- ldrh r0, [r6, 0x10]
- strb r0, [r2]
- ldrb r0, [r4, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8117380
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0xC]
- ldrb r0, [r4, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r5
- ldrb r0, [r0]
- bl sub_811829C
- ldrb r1, [r4, 0x19]
- ldrh r0, [r6, 0x22]
- subs r0, r1
- strh r0, [r6, 0x22]
- lsls r0, 16
- cmp r0, 0
- bge _08115DF6
- movs r0, 0
- strh r0, [r6, 0x22]
-_08115DF6:
- ldrh r0, [r6, 0x22]
- bl sub_81180F4
- ldr r0, _08115E10 @ =sub_8115D58
- str r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115E08: .4byte gSharedMem + 0x19000
-_08115E0C: .4byte gTasks
-_08115E10: .4byte sub_8115D58
- thumb_func_end sub_8115DA0
-
- thumb_func_start sub_8115E14
-sub_8115E14: @ 8115E14
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_8115B58
- ldr r1, _08115E3C @ =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 _08115E4A
- cmp r0, 0x1E
- bgt _08115E40
- cmp r0, 0
- beq _08115E46
- b _08115E5E
- .align 2, 0
-_08115E3C: .4byte gTasks
-_08115E40:
- cmp r0, 0x3B
- beq _08115E58
- b _08115E5E
-_08115E46:
- ldrb r0, [r4, 0x10]
- b _08115E4C
-_08115E4A:
- movs r0, 0
-_08115E4C:
- bl sub_81157D0
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _08115E6E
-_08115E58:
- movs r0, 0
- strh r0, [r4, 0xA]
- b _08115E6E
-_08115E5E:
- ldr r0, _08115EA8 @ =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]
-_08115E6E:
- ldr r0, _08115EAC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08115EC2
- ldr r3, _08115EB0 @ =gSharedMem + 0x19000
- ldr r2, _08115EB4 @ =gUnknown_083F8C00
- ldr r1, _08115EA8 @ =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 _08115EB8
- movs r0, 0x16
- bl PlaySE
- b _08115EC2
- .align 2, 0
-_08115EA8: .4byte gTasks
-_08115EAC: .4byte gMain
-_08115EB0: .4byte gSharedMem + 0x19000
-_08115EB4: .4byte gUnknown_083F8C00
-_08115EB8:
- movs r0, 0x5F
- bl m4aSongNumStart
- ldr r0, _08115EC8 @ =sub_8115DA0
- str r0, [r4]
-_08115EC2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08115EC8: .4byte sub_8115DA0
- thumb_func_end sub_8115E14
-
- thumb_func_start sub_8115ECC
-sub_8115ECC: @ 8115ECC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08115F20 @ =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 _08115F34
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _08115EF8
- ldr r1, _08115F24 @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- adds r0, 0x2
- strh r0, [r1]
-_08115EF8:
- ldr r1, _08115F28 @ =gSharedMem + 0x19000
- ldrh r0, [r1, 0x26]
- adds r0, 0x4
- strh r0, [r1, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x68
- bne _08115F4C
- ldr r2, _08115F2C @ =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, _08115F30 @ =SpriteCallbackDummy
- str r1, [r0]
- b _08115F4C
- .align 2, 0
-_08115F20: .4byte gTasks
-_08115F24: .4byte gSpriteCoordOffsetX
-_08115F28: .4byte gSharedMem + 0x19000
-_08115F2C: .4byte gSprites
-_08115F30: .4byte SpriteCallbackDummy
-_08115F34:
- movs r0, 0x1
- movs r1, 0xFF
- bl sub_8117AA8
- movs r0, 0x1
- movs r1, 0xFF
- bl sub_8117C60
- ldr r0, _08115F54 @ =sub_8116100
- str r0, [r4]
- movs r0, 0
- strh r0, [r4, 0xA]
-_08115F4C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08115F54: .4byte sub_8116100
- thumb_func_end sub_8115ECC
-
- thumb_func_start sub_8115F58
-sub_8115F58: @ 8115F58
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08115F74 @ =gSharedMem + 0x19000
- ldrb r2, [r0, 0x2]
- adds r4, r0, 0
- cmp r2, 0x2
- bgt _08115F78
- cmp r2, 0x1
- bge _08115F7E
- b _08116048
- .align 2, 0
-_08115F74: .4byte gSharedMem + 0x19000
-_08115F78:
- cmp r2, 0x3
- beq _08115FE0
- b _08116048
-_08115F7E:
- ldr r0, _08115FA8 @ =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _08115FB0
- cmp r3, 0xB
- bls _08115F98
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811605E
-_08115F98:
- ldr r0, _08115FAC @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_08115FA8: .4byte gLocalTime
-_08115FAC: .4byte gUnknown_083F8DF4
-_08115FB0:
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08115FCC
- ldr r0, _08115FC8 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_08115FC8: .4byte gUnknown_083F8DF4
-_08115FCC:
- ldr r0, _08115FDC @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- b _081160F4
- .align 2, 0
-_08115FDC: .4byte gUnknown_083F8DF4
-_08115FE0:
- ldr r0, _0811600C @ =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bhi _08116014
- cmp r3, 0x5
- bls _08115FFA
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811605E
-_08115FFA:
- ldr r0, _08116010 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_0811600C: .4byte gLocalTime
-_08116010: .4byte gUnknown_083F8DF4
-_08116014:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08116034
- cmp r3, 0x6
- bls _08116034
- ldr r0, _08116030 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 2
- b _081160F4
- .align 2, 0
-_08116030: .4byte gUnknown_083F8DF4
-_08116034:
- ldr r0, _08116044 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_08116044: .4byte gUnknown_083F8DF4
-_08116048:
- ldr r0, _08116064 @ =gLocalTime
- ldrb r0, [r0, 0x2]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _0811607C
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08116068
-_0811605E:
- movs r0, 0x1
- b _081160F4
- .align 2, 0
-_08116064: .4byte gLocalTime
-_08116068:
- ldr r0, _08116078 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_08116078: .4byte gUnknown_083F8DF4
-_0811607C:
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081160B0
- cmp r3, 0xC
- bls _0811609C
- ldr r0, _08116098 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsrs r0, 1
- b _081160F4
- .align 2, 0
-_08116098: .4byte gUnknown_083F8DF4
-_0811609C:
- ldr r0, _081160AC @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- b _081160F4
- .align 2, 0
-_081160AC: .4byte gUnknown_083F8DF4
-_081160B0:
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081160E4
- cmp r3, 0xC
- bls _081160D0
- ldr r0, _081160CC @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x2]
- b _081160F4
- .align 2, 0
-_081160CC: .4byte gUnknown_083F8DF4
-_081160D0:
- ldr r0, _081160E0 @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _081160F4
- .align 2, 0
-_081160E0: .4byte gUnknown_083F8DF4
-_081160E4:
- ldr r0, _081160FC @ =gUnknown_083F8DF4
- ldrb r1, [r4, 0x4]
- lsls r1, 30
- lsrs r1, 25
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 25
- lsrs r0, 24
-_081160F4:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081160FC: .4byte gUnknown_083F8DF4
- thumb_func_end sub_8115F58
-
- thumb_func_start sub_8116100
-sub_8116100: @ 8116100
- 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 r9, r0
- movs r4, 0
- ldr r1, _08116188 @ =gUnknown_083F8ECE
- 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, _0811618C @ =gSharedMem + 0x19000
- ldr r1, _08116190 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldrh r2, [r0, 0x14]
- adds r1, r3, 0
- adds r1, 0x7C
- strb r2, [r1]
- adds r1, 0x3
- strb r4, [r1]
- subs r1, 0x1
- strb r4, [r1]
- subs r1, 0x1
- strb r4, [r1]
- ldrh r0, [r0, 0x18]
- adds r1, r7, 0
- bl sub_8115F58
- 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, _08116194 @ =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- movs r5, 0x1
- cmp r0, 0xC
- bgt _08116180
- movs r5, 0
-_08116180:
- cmp r6, 0x4F
- bhi _08116198
- lsls r0, r5, 25
- b _081161A2
- .align 2, 0
-_08116188: .4byte gUnknown_083F8ECE
-_0811618C: .4byte gSharedMem + 0x19000
-_08116190: .4byte gTasks
-_08116194: .4byte gLocalTime
-_08116198:
- lsls r1, r5, 24
- asrs r1, 24
- movs r0, 0x1
- subs r0, r1
- lsls r0, 25
-_081161A2:
- lsrs r5, r0, 24
- ldr r6, _081162D8 @ =gSharedMem + 0x19000
- ldrb r0, [r6, 0x4]
- lsls r0, 30
- mov r10, r0
- lsrs r0, 25
- ldr r1, _081162DC @ =gUnknown_083F8DF4
- 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 _081161D4
- ldr r1, _081162E0 @ =0x47800000
- bl __addsf3
-_081161D4:
- ldr r1, _081162E4 @ =0x40a00000
- bl __divsf3
- bl __fixunssfsi
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r4
- mov r8, r0
- adds r0, r6, 0
- adds r0, 0x82
- mov r2, r8
- strh r2, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [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 _0811621A
- ldr r1, _081162E0 @ =0x47800000
- bl __addsf3
-_0811621A:
- ldr r2, _081162E8 @ =gSharedMem + 0x19088
- str r0, [r2]
- adds r7, r6, 0
- adds r7, 0x8C
- mov r1, r10
- lsrs r0, r1, 25
- ldr r2, _081162DC @ =gUnknown_083F8DF4
- adds r0, r2
- movs r1, 0x18
- ldrsh r4, [r0, r1]
- adds r0, r4, 0
- bl __floatsisf
- adds r5, r0, 0
- cmp r4, 0
- bge _08116242
- ldr r1, _081162E0 @ =0x47800000
- bl __addsf3
- adds r5, r0, 0
-_08116242:
- str r5, [r7]
- adds r7, r6, 0
- adds r7, 0x90
- ldr r1, _081162EC @ =0x3f000000
- adds r0, r5, 0
- bl __mulsf3
- adds r1, r5, 0
- bl __subsf3
- adds r5, r0, 0
- mov r2, r8
- lsls r0, r2, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _08116272
- ldr r1, _081162E0 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_08116272:
- adds r0, r5, 0
- adds r1, r2, 0
- bl __divsf3
- str r0, [r7]
- adds r1, r6, 0
- adds r1, 0x94
- ldr r0, _081162F0 @ =0x42880000
- str r0, [r1]
- adds r1, 0x8
- ldr r0, _081162F4 @ =0x00000000
- str r0, [r1]
- adds r5, r6, 0
- adds r5, 0x98
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _081162A2
- ldr r1, _081162E0 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081162A2:
- ldr r0, _081162F8 @ =0x41000000
- adds r1, r2, 0
- bl __divsf3
- bl __negsf2
- str r0, [r5]
- adds r1, r6, 0
- adds r1, 0xA0
- ldr r0, _081162FC @ =0x42100000
- str r0, [r1]
- ldr r1, _08116300 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, _08116304 @ =sub_8116308
- 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
-_081162D8: .4byte gSharedMem + 0x19000
-_081162DC: .4byte gUnknown_083F8DF4
-_081162E0: .4byte 0x47800000
-_081162E4: .4byte 0x40a00000
-_081162E8: .4byte gSharedMem + 0x19088
-_081162EC: .4byte 0x3f000000
-_081162F0: .4byte 0x42880000
-_081162F4: .4byte 0x00000000
-_081162F8: .4byte 0x41000000
-_081162FC: .4byte 0x42100000
-_08116300: .4byte gTasks
-_08116304: .4byte sub_8116308
- thumb_func_end sub_8116100
-
- thumb_func_start sub_8116308
-sub_8116308: @ 8116308
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08116368 @ =gSharedMem + 0x19000
- ldrb r1, [r3, 0x3]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r3, 0x3]
- adds r2, r3, 0
- adds r2, 0x7C
- adds r1, r3, 0
- adds r1, 0x3C
- ldrb r2, [r2]
- adds r1, r2
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- ldr r2, _0811636C @ =gSprites
- adds r1, r2
- str r1, [r3, 0x38]
- ldr r2, _08116370 @ =sub_81191F4
- str r2, [r1, 0x1C]
- ldr r1, _08116374 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- ldrh r1, [r4, 0x14]
- adds r1, 0x1
- strh r1, [r4, 0x14]
- ldrh r0, [r4, 0x18]
- adds r0, 0x1
- strh r0, [r4, 0x18]
- movs r0, 0x6
- subs r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl sub_81182F8
- movs r0, 0x5C
- bl m4aSongNumStart
- ldr r0, _08116378 @ =sub_811637C
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08116368: .4byte gSharedMem + 0x19000
-_0811636C: .4byte gSprites
-_08116370: .4byte sub_81191F4
-_08116374: .4byte gTasks
-_08116378: .4byte sub_811637C
- thumb_func_end sub_8116308
-
- thumb_func_start sub_811637C
-sub_811637C: @ 811637C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _081163B0 @ =gSharedMem + 0x19000
- adds r0, r4, 0
- adds r0, 0x7D
- ldrb r0, [r0]
- cmp r0, 0
- beq _08116464
- ldrb r1, [r4, 0x3]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081163B4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08116464
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- strb r0, [r4, 0x3]
- b _08116464
- .align 2, 0
-_081163B0: .4byte gSharedMem + 0x19000
-_081163B4:
- ldr r2, _08116428 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r6, r0, r2
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- adds r7, r1, 0
- cmp r0, 0
- bne _08116400
- adds r0, r4, 0
- adds r0, 0x7E
- ldrb r1, [r0]
- adds r0, r5, 0
- bl sub_8116D54
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x1A]
- lsls r1, 28
- lsrs r1, 28
- adds r2, r4, 0
- adds r2, 0x1B
- adds r1, r2
- ldrb r1, [r1]
- bl sub_8116E5C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x12]
- cmp r0, 0x1
- bne _08116400
- adds r0, r4, 0
- adds r0, 0xB8
- movs r1, 0x80
- lsls r1, 5
- bl sub_8124CE8
-_08116400:
- ldr r0, _08116428 @ =gTasks
- adds r1, r7, r5
- lsls r1, 3
- adds r4, r1, r0
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x3C
- bgt _08116430
- ldr r0, _0811642C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08116420
- movs r0, 0x3C
- strh r0, [r4, 0xA]
-_08116420:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _08116464
- .align 2, 0
-_08116428: .4byte gTasks
-_0811642C: .4byte gMain
-_08116430:
- ldr r1, _0811646C @ =gSharedMem + 0x19000
- ldrb r0, [r1, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r1, 0x1B
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8117158
- ldrh r1, [r4, 0x20]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8117AA8
- ldrb r1, [r4, 0x14]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8117C60
- movs r0, 0x20
- strh r0, [r4, 0xA]
- ldr r0, _08116470 @ =sub_8116474
- str r0, [r4]
-_08116464:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811646C: .4byte gSharedMem + 0x19000
-_08116470: .4byte sub_8116474
- thumb_func_end sub_811637C
-
- thumb_func_start sub_8116474
-sub_8116474: @ 8116474
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _081164C8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- subs r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- ble _081164DC
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _081164A0
- ldr r1, _081164CC @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- subs r0, 0x2
- strh r0, [r1]
-_081164A0:
- ldr r1, _081164D0 @ =gSharedMem + 0x19000
- ldrh r0, [r1, 0x26]
- subs r0, 0x4
- strh r0, [r1, 0x26]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x68
- bne _08116504
- ldr r2, _081164D4 @ =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, _081164D8 @ =sub_81184CC
- str r1, [r0]
- b _08116504
- .align 2, 0
-_081164C8: .4byte gTasks
-_081164CC: .4byte gSpriteCoordOffsetX
-_081164D0: .4byte gSharedMem + 0x19000
-_081164D4: .4byte gSprites
-_081164D8: .4byte sub_81184CC
-_081164DC:
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8117D68
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _081164F2
- movs r0, 0x79
- b _081164F4
-_081164F2:
- movs r0, 0x3D
-_081164F4:
- strh r0, [r4, 0xA]
- ldr r0, _0811650C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _08116510 @ =sub_8116514
- str r0, [r1]
-_08116504:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811650C: .4byte gTasks
-_08116510: .4byte sub_8116514
- thumb_func_end sub_8116474
-
- thumb_func_start sub_8116514
-sub_8116514: @ 8116514
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08116564 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- subs r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _08116584
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- adds r0, r1, 0
- cmp r1, 0
- bge _0811653E
- adds r0, 0xF
-_0811653E:
- asrs r0, 4
- lsls r0, 4
- subs r0, r1, r0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- beq _08116568
- cmp r0, 0x8
- bne _08116590
- movs r0, 0
- movs r1, 0xFF
- bl sub_8117AA8
- movs r0, 0
- movs r1, 0xFF
- bl sub_8117C60
- b _08116590
- .align 2, 0
-_08116564: .4byte gTasks
-_08116568:
- ldrh r1, [r4, 0x20]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8117AA8
- ldrb r1, [r4, 0x14]
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_8117C60
- b _08116590
-_08116584:
- ldr r1, _08116598 @ =sub_8116638
- adds r0, r2, 0
- movs r2, 0x1E
- movs r3, 0
- bl sub_8116C34
-_08116590:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08116598: .4byte sub_8116638
- thumb_func_end sub_8116514
-
- thumb_func_start sub_811659C
-sub_811659C: @ 811659C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _081165F4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08116600
- cmp r0, 0
- blt _08116600
- cmp r0, 0x2
- bgt _08116600
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08116624
- movs r0, 0x1D
- bl GetGameStat
- ldrh r1, [r4, 0x1E]
- adds r1, 0x1
- strh r1, [r4, 0x1E]
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bcs _081165E4
- movs r0, 0x1E
- ldrsh r1, [r4, r0]
- movs r0, 0x1D
- bl SetGameStat
-_081165E4:
- ldr r1, _081165F8 @ =sub_811677C
- ldr r2, _081165FC @ =0x0000ffff
- adds r0, r5, 0
- movs r3, 0x3
- bl sub_8116C34
- b _08116624
- .align 2, 0
-_081165F4: .4byte gTasks
-_081165F8: .4byte sub_811677C
-_081165FC: .4byte 0x0000ffff
-_08116600:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _08116624
- ldr r1, _0811662C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x1E]
- ldr r1, _08116630 @ =sub_81167F4
- ldr r2, _08116634 @ =0x0000ffff
- adds r0, r5, 0
- movs r3, 0x3
- bl sub_8116C34
-_08116624:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811662C: .4byte gTasks
-_08116630: .4byte sub_81167F4
-_08116634: .4byte 0x0000ffff
- thumb_func_end sub_811659C
-
- thumb_func_start sub_8116638
-sub_8116638: @ 8116638
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08116678 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- cmp r1, 0
- beq _081166A8
- cmp r1, 0
- blt _081166A8
- cmp r1, 0x2
- bgt _081166A8
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0xC
- bne _08116684
- ldr r0, _0811667C @ =0x00000185
- bl PlayFanfare
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08116680 @ =gUnknown_081C41A5
- b _0811669A
- .align 2, 0
-_08116678: .4byte gTasks
-_0811667C: .4byte 0x00000185
-_08116680: .4byte gUnknown_081C41A5
-_08116684:
- movs r0, 0xC3
- lsls r0, 1
- bl PlayFanfare
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _081166A4 @ =gUnknown_081C4199
-_0811669A:
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- b _081166C4
- .align 2, 0
-_081166A4: .4byte gUnknown_081C4199
-_081166A8:
- movs r0, 0x20
- bl m4aSongNumStart
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _081166DC @ =gUnknown_081C41AE
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
-_081166C4:
- ldr r1, _081166E0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xA]
- ldr r1, _081166E4 @ =sub_811659C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081166DC: .4byte gUnknown_081C41AE
-_081166E0: .4byte gTasks
-_081166E4: .4byte sub_811659C
- thumb_func_end sub_8116638
-
- thumb_func_start sub_81166E8
-sub_81166E8: @ 81166E8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0811670C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x16
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _08116710
- cmp r5, 0x3
- beq _08116740
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- b _08116748
- .align 2, 0
-_0811670C: .4byte gTasks
-_08116710:
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x15
- bl m4aSongNumStart
- ldrh r0, [r4, 0x22]
- bl sub_81180F4
- movs r2, 0x22
- ldrsh r1, [r4, r2]
- ldr r0, _08116730 @ =0x0000270e
- cmp r1, r0
- ble _08116734
- strh r5, [r4, 0xA]
- b _0811674A
- .align 2, 0
-_08116730: .4byte 0x0000270e
-_08116734:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x16]
- adds r0, 0x1
- b _08116748
-_08116740:
- movs r0, 0x15
- bl m4aSongNumStop
- movs r0, 0
-_08116748:
- strh r0, [r4, 0x16]
-_0811674A:
- ldr r0, _08116770 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08116768
- ldr r1, _08116774 @ =sub_81167F4
- ldr r2, _08116778 @ =0x0000ffff
- adds r0, r6, 0
- movs r3, 0x3
- bl sub_8116C34
-_08116768:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08116770: .4byte gTasks
-_08116774: .4byte sub_81167F4
-_08116778: .4byte 0x0000ffff
- thumb_func_end sub_81166E8
-
- thumb_func_start sub_811677C
-sub_811677C: @ 811677C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _081167DC @ =gStringVar1
- ldr r6, _081167E0 @ =gSharedMem + 0x19000
- ldrb r2, [r6, 0x19]
- ldr r1, _081167E4 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- adds r1, r2, 0
- muls r1, r0
- adds r0, r3, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r5, _081167E8 @ =gStringVar4
- ldr r1, _081167EC @ =gUnknown_081C41BD
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldrb r1, [r6, 0x19]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- muls r0, r1
- movs r1, 0
- strh r0, [r4, 0xA]
- strh r1, [r4, 0x16]
- ldr r0, _081167F0 @ =sub_81166E8
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081167DC: .4byte gStringVar1
-_081167E0: .4byte gSharedMem + 0x19000
-_081167E4: .4byte gTasks
-_081167E8: .4byte gStringVar4
-_081167EC: .4byte gUnknown_081C41BD
-_081167F0: .4byte sub_81166E8
- thumb_func_end sub_811677C
-
- thumb_func_start sub_81167F4
-sub_81167F4: @ 81167F4
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _08116868 @ =gSharedMem + 0x190B8
- ldr r1, _0811686C @ =0x0000ffff
- adds r0, r4, 0
- bl sub_8124D3C
- adds r3, r4, 0
- adds r3, 0xB8
- ldrb r2, [r3]
- movs r1, 0x7F
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- subs r3, 0xC
- ldrb r2, [r3]
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- adds r2, r4, 0
- adds r2, 0xA0
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- ldr r6, _08116870 @ =gSprites
- ldr r2, _08116874 @ =gUnknown_083F8C00
- ldr r0, _08116878 @ =gTasks
- lsls r3, r5, 2
- adds r3, r5
- lsls r3, 3
- adds r3, r0
- movs r0, 0x20
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- adds r4, r0
- subs r4, 0x75
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, _0811687C @ =sub_8116880
- str r0, [r3]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08116868: .4byte gSharedMem + 0x190B8
-_0811686C: .4byte 0x0000ffff
-_08116870: .4byte gSprites
-_08116874: .4byte gUnknown_083F8C00
-_08116878: .4byte gTasks
-_0811687C: .4byte sub_8116880
- thumb_func_end sub_81167F4
-
- thumb_func_start sub_8116880
-sub_8116880: @ 8116880
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, _08116954 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r5, [r0, 0x10]
- ldr r4, _08116958 @ =gSharedMem + 0x19000
- ldrb r0, [r4, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- adds r1, r4, 0
- adds r1, 0x1B
- adds r0, r1
- strb r2, [r0]
- movs r0, 0
- bl sub_8117158
- ldr r3, _0811695C @ =gSprites
- adds r0, r4, 0
- adds r0, 0x6C
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r7, r3, 0
- movs r0, 0x3C
- adds r0, r4
- mov r10, r0
- movs r1, 0x8
- adds r1, r7
- mov r8, r1
- ldr r0, _08116960 @ =0xfffffc00
- mov r9, r0
- ldr r1, _08116964 @ =0x000003ff
- mov r12, r1
-_081168E4:
- adds r0, r5, 0
- adds r0, 0x29
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r7
- adds r2, r3, 0
- adds r2, 0x40
- add r0, r8
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0]
- ldrh r2, [r2]
- adds r1, r2
- mov r0, r12
- ands r1, r0
- ldrh r2, [r3, 0x4]
- mov r0, r9
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081168E4
- ldr r0, _08116954 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r2, r1, r0
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- ldrb r4, [r4, 0x19]
- cmp r0, r4
- blt _081169BC
- movs r1, 0x14
- ldrsh r0, [r2, r1]
- cmp r0, 0x6
- bne _08116970
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08116968 @ =gUnknown_081C41F1
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _0811696C @ =dp01t_12_3_battle_menu
- b _08116992
- .align 2, 0
-_08116954: .4byte gTasks
-_08116958: .4byte gSharedMem + 0x19000
-_0811695C: .4byte gSprites
-_08116960: .4byte 0xfffffc00
-_08116964: .4byte 0x000003ff
-_08116968: .4byte gUnknown_081C41F1
-_0811696C: .4byte dp01t_12_3_battle_menu
-_08116970:
- movs r0, 0x22
- ldrsh r1, [r2, r0]
- ldr r0, _081169A0 @ =0x0000270f
- cmp r1, r0
- bne _081169B0
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _081169A4 @ =gUnknown_081C4231
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _081169A8 @ =sub_8115734
-_08116992:
- ldr r2, _081169AC @ =0x0000ffff
- adds r0, r6, 0
- movs r3, 0x3
- bl sub_8116C34
- b _081169DE
- .align 2, 0
-_081169A0: .4byte 0x0000270f
-_081169A4: .4byte gUnknown_081C4231
-_081169A8: .4byte sub_8115734
-_081169AC: .4byte 0x0000ffff
-_081169B0:
- ldr r0, _081169B8 @ =sub_8115734
- str r0, [r2]
- b _081169DE
- .align 2, 0
-_081169B8: .4byte sub_8115734
-_081169BC:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _081169EC @ =gUnknown_081C41D2
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _081169F0 @ =sub_81157AC
- adds r0, r6, 0
- movs r2, 0x3C
- movs r3, 0x3
- bl sub_8116C34
-_081169DE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081169EC: .4byte gUnknown_081C41D2
-_081169F0: .4byte sub_81157AC
- thumb_func_end sub_8116880
-
- thumb_func_start dp01t_12_3_battle_menu
-dp01t_12_3_battle_menu: @ 81169F4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r1, _08116A84 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x14]
- adds r0, r5, 0
- bl sub_8116CAC
- bl sub_8116CF8
- bl sub_81185E8
- movs r0, 0
- bl sub_8117158
- movs r0, 0x6
- bl sub_81182F8
- ldr r7, _08116A88 @ =gSprites
- ldr r3, _08116A8C @ =gSharedMem + 0x1903C
- movs r6, 0x5
- negs r6, r6
-_08116A2A:
- adds r0, r4, 0x7
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xB
- bls _08116A2A
- ldr r1, _08116A84 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r0, 0x22
- ldrsh r1, [r2, r0]
- ldr r0, _08116A90 @ =0x0000270f
- cmp r1, r0
- bne _08116AA0
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08116A94 @ =gUnknown_081C4231
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _08116A98 @ =sub_8115734
- ldr r2, _08116A9C @ =0x0000ffff
- adds r0, r5, 0
- movs r3, 0x3
- bl sub_8116C34
- b _08116AA4
- .align 2, 0
-_08116A84: .4byte gTasks
-_08116A88: .4byte gSprites
-_08116A8C: .4byte gSharedMem + 0x1903C
-_08116A90: .4byte 0x0000270f
-_08116A94: .4byte gUnknown_081C4231
-_08116A98: .4byte sub_8115734
-_08116A9C: .4byte 0x0000ffff
-_08116AA0:
- ldr r0, _08116AAC @ =sub_8115734
- str r0, [r2]
-_08116AA4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08116AAC: .4byte sub_8115734
- thumb_func_end dp01t_12_3_battle_menu
-
- thumb_func_start sub_8116AB0
-sub_8116AB0: @ 8116AB0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _08116AF0 @ =gSharedMem + 0x190B8
- ldr r1, _08116AF4 @ =0x0000ffff
- adds r0, r4, 0
- bl sub_8124D3C
- adds r0, r4, 0
- bl sub_8124918
- ldr r1, _08116AF8 @ =gSaveBlock1
- ldr r2, _08116AFC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0x22]
- ldr r2, _08116B00 @ =0x00000494
- adds r1, r2
- strh r0, [r1]
- subs r4, 0xB8
- lsls r0, 16
- lsrs r0, 16
- ldrb r4, [r4, 0x19]
- cmp r0, r4
- bcs _08116B08
- ldr r1, _08116B04 @ =gSpecialVar_0x8004
- movs r0, 0x1
- b _08116B0C
- .align 2, 0
-_08116AF0: .4byte gSharedMem + 0x190B8
-_08116AF4: .4byte 0x0000ffff
-_08116AF8: .4byte gSaveBlock1
-_08116AFC: .4byte gTasks
-_08116B00: .4byte 0x00000494
-_08116B04: .4byte gSpecialVar_0x8004
-_08116B08:
- ldr r1, _08116B34 @ =gSpecialVar_0x8004
- movs r0, 0
-_08116B0C:
- strh r0, [r1]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginHardwarePaletteFade
- ldr r1, _08116B38 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08116B3C @ =sub_8116B40
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08116B34: .4byte gSpecialVar_0x8004
-_08116B38: .4byte gTasks
-_08116B3C: .4byte sub_8116B40
- thumb_func_end sub_8116AB0
-
- thumb_func_start sub_8116B40
-sub_8116B40: @ 8116B40
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08116B9E
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _08116BA4 @ =gSharedMem + 0x19000
- movs r2, 0xBE
- lsls r2, 1
- movs r1, 0
- bl memset
- ldr r1, _08116BA8 @ =gSpriteCoordOffsetX
- ldr r0, _08116BAC @ =gSpriteCoordOffsetY
- strh r4, [r0]
- strh r4, [r1]
- bl sub_80F9368
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl ResetSpriteData
- bl sub_80F9020
- ldr r0, _08116BB0 @ =REG_BLDCNT
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r1, _08116BB4 @ =gFieldCallback
- ldr r0, _08116BB8 @ =sub_8080990
- str r0, [r1]
- ldr r0, _08116BBC @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08116B9E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08116BA4: .4byte gSharedMem + 0x19000
-_08116BA8: .4byte gSpriteCoordOffsetX
-_08116BAC: .4byte gSpriteCoordOffsetY
-_08116BB0: .4byte REG_BLDCNT
-_08116BB4: .4byte gFieldCallback
-_08116BB8: .4byte sub_8080990
-_08116BBC: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end sub_8116B40
-
- thumb_func_start sub_8116BC0
-sub_8116BC0: @ 8116BC0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _08116C24 @ =gSharedMem + 0x19000
- adds r7, r0, 0
- adds r7, 0xA8
- ldrh r1, [r7]
- adds r6, r0, 0
- cmp r1, 0
- beq _08116BE4
- ldr r0, _08116C28 @ =gMain
- adds r2, r6, 0
- adds r2, 0xAA
- ldrh r1, [r0, 0x2E]
- ldrh r0, [r2]
- ands r0, r1
- cmp r0, 0
- beq _08116C0E
-_08116BE4:
- ldr r1, _08116C2C @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- adds r5, r6, 0
- adds r5, 0xAC
- ldr r1, [r5]
- str r1, [r0]
- adds r4, r6, 0
- adds r4, 0xAA
- ldrh r0, [r4]
- cmp r0, 0
- beq _08116C06
- movs r0, 0x5
- bl PlaySE
-_08116C06:
- movs r0, 0
- str r0, [r5]
- strh r0, [r4]
- strh r0, [r7]
-_08116C0E:
- adds r2, r6, 0
- adds r2, 0xA8
- ldrh r1, [r2]
- ldr r0, _08116C30 @ =0x0000ffff
- cmp r1, r0
- beq _08116C1E
- subs r0, r1, 0x1
- strh r0, [r2]
-_08116C1E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08116C24: .4byte gSharedMem + 0x19000
-_08116C28: .4byte gMain
-_08116C2C: .4byte gTasks
-_08116C30: .4byte 0x0000ffff
- thumb_func_end sub_8116BC0
-
- thumb_func_start sub_8116C34
-sub_8116C34: @ 8116C34
- push {r4-r7,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 16
- lsrs r4, r2, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _08116C84 @ =gSharedMem + 0x19000
- mov r12, r0
- mov r2, r12
- adds r2, 0xB4
- ldr r1, _08116C88 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- mov r2, r12
- adds r7, r1, 0
- cmp r5, 0
- bne _08116C64
- adds r5, r0, 0
-_08116C64:
- adds r0, r2, 0
- adds r0, 0xAC
- str r5, [r0]
- subs r0, 0x4
- strh r4, [r0]
- ldr r0, _08116C8C @ =0x0000ffff
- cmp r4, r0
- bne _08116C90
- cmp r3, 0
- bne _08116C90
- adds r1, r2, 0
- adds r1, 0xAA
- ldrh r0, [r1]
- orrs r4, r0
- strh r4, [r1]
- b _08116C96
- .align 2, 0
-_08116C84: .4byte gSharedMem + 0x19000
-_08116C88: .4byte gTasks
-_08116C8C: .4byte 0x0000ffff
-_08116C90:
- adds r0, r2, 0
- adds r0, 0xAA
- strh r3, [r0]
-_08116C96:
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r7
- ldr r1, _08116CA8 @ =sub_8116BC0
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08116CA8: .4byte sub_8116BC0
- thumb_func_end sub_8116C34
-
- thumb_func_start sub_8116CAC
-sub_8116CAC: @ 8116CAC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r0, _08116CF0 @ =gSharedMem + 0x19000
- strb r2, [r0]
- movs r1, 0
- strb r1, [r0, 0x3]
- adds r3, r0, 0
- ldr r6, _08116CF4 @ =gTasks
- adds r4, r3, 0
- adds r4, 0x1B
-_08116CC4:
- adds r0, r2, r4
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _08116CC4
- ldrb r1, [r3, 0x1A]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- strb r0, [r3, 0x1A]
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- movs r1, 0
- strh r1, [r0, 0xA]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08116CF0: .4byte gSharedMem + 0x19000
-_08116CF4: .4byte gTasks
- thumb_func_end sub_8116CAC
-
- thumb_func_start sub_8116CF8
-sub_8116CF8: @ 8116CF8
- push {lr}
- ldr r1, _08116D48 @ =gSharedMem + 0x19000
- movs r0, 0
- str r0, [r1, 0x8]
- movs r2, 0
- adds r1, 0xC
- movs r3, 0
-_08116D06:
- adds r0, r2, r1
- strb r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _08116D06
- movs r2, 0
- ldr r3, _08116D4C @ =gSharedMem + 0x19012
- movs r1, 0
-_08116D1A:
- adds r0, r2, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _08116D1A
- movs r2, 0
- ldr r3, _08116D50 @ =gSharedMem + 0x19016
- movs r1, 0
-_08116D2E:
- adds r0, r2, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _08116D2E
- movs r0, 0x1
- movs r1, 0xFF
- bl sub_8117C60
- pop {r0}
- bx r0
- .align 2, 0
-_08116D48: .4byte gSharedMem + 0x19000
-_08116D4C: .4byte gSharedMem + 0x19012
-_08116D50: .4byte gSharedMem + 0x19016
- thumb_func_end sub_8116CF8
-
- thumb_func_start sub_8116D54
-sub_8116D54: @ 8116D54
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- mov r1, sp
- ldr r0, _08116D88 @ =gUnknown_083F8ED8
- ldm r0!, {r2,r4,r6}
- stm r1!, {r2,r4,r6}
- ldr r0, [r0]
- str r0, [r1]
- add r2, sp, 0x10
- adds r1, r2, 0
- ldr r0, _08116D8C @ =gUnknown_083F8EE8
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- mov r9, r2
- cmp r5, 0xB
- bls _08116D90
- movs r0, 0
- b _08116E38
- .align 2, 0
-_08116D88: .4byte gUnknown_083F8ED8
-_08116D8C: .4byte gUnknown_083F8EE8
-_08116D90:
- ldr r6, _08116E48 @ =gSharedMem + 0x19000
- ldr r1, _08116E4C @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r7, 0x14
- ldrsh r2, [r0, r7]
- adds r2, r6, r2
- ldr r4, _08116E50 @ =gUnknown_083F8D90
- lsls r5, 3
- adds r3, r5, r4
- ldrb r1, [r3, 0x2]
- strb r1, [r2, 0xB]
- ldrb r1, [r3, 0x2]
- strh r1, [r0, 0x20]
- adds r0, r4, 0x4
- adds r0, r5, r0
- ldr r1, [r6, 0x8]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r6, 0x8]
- movs r3, 0
- mov r8, r4
- mov r12, r5
- adds r5, r0, 0
- adds r4, r6, 0
- adds r4, 0x12
-_08116DC8:
- lsls r0, r3, 2
- mov r1, sp
- adds r2, r1, r0
- ldr r0, [r2]
- ands r0, r5
- cmp r0, 0
- beq _08116DDE
- adds r1, r3, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08116DDE:
- adds r0, r3, r4
- ldrb r0, [r0]
- cmp r0, 0x2
- bls _08116DEE
- ldr r0, [r6, 0x8]
- ldr r1, [r2]
- orrs r0, r1
- str r0, [r6, 0x8]
-_08116DEE:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _08116DC8
- movs r2, 0
- ldr r0, _08116E54 @ =gUnknown_083F8D90 + 0x4
- add r0, r12
- ldr r7, [r0]
- ldr r4, _08116E58 @ =gSharedMem + 0x19016
- mov r5, r9
-_08116E04:
- lsls r0, r2, 2
- adds r3, r5, r0
- ldr r0, [r3]
- ands r0, r7
- cmp r0, 0
- beq _08116E18
- adds r1, r2, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08116E18:
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _08116E28
- ldr r0, [r6, 0x8]
- ldr r1, [r3]
- orrs r0, r1
- str r0, [r6, 0x8]
-_08116E28:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _08116E04
- mov r0, r12
- add r0, r8
- ldrb r0, [r0, 0x2]
-_08116E38:
- add sp, 0x1C
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08116E48: .4byte gSharedMem + 0x19000
-_08116E4C: .4byte gTasks
-_08116E50: .4byte gUnknown_083F8D90
-_08116E54: .4byte gUnknown_083F8D90 + 0x4
-_08116E58: .4byte gSharedMem + 0x19016
- thumb_func_end sub_8116D54
-
- thumb_func_start sub_8116E5C
-sub_8116E5C: @ 8116E5C
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- lsrs r3, r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x12
- bhi _08116EF0
- cmp r2, 0xF
- bhi _08116EEC
- lsls r0, r2, 2
- ldr r1, _08116E80 @ =_08116E84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116E80: .4byte _08116E84
- .align 2, 0
-_08116E84:
- .4byte _08116EC4
- .4byte _08116EC8
- .4byte _08116EC8
- .4byte _08116EC8
- .4byte _08116EC8
- .4byte _08116EDC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EDC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EEC
- .4byte _08116EDC
-_08116EC4:
- movs r0, 0x3
- b _08116EF2
-_08116EC8:
- adds r0, r2, 0x5
- cmp r3, r0
- beq _08116EE8
- adds r0, 0x5
- cmp r3, r0
- beq _08116EE8
- adds r0, 0x5
- cmp r3, r0
- bne _08116EF0
- b _08116EE8
-_08116EDC:
- adds r0, r2, 0x1
- cmp r3, r0
- blt _08116EF0
- adds r0, r2, 0x4
- cmp r3, r0
- bgt _08116EF0
-_08116EE8:
- movs r0, 0x1
- b _08116EF2
-_08116EEC:
- cmp r3, r2
- beq _08116EE8
-_08116EF0:
- movs r0, 0
-_08116EF2:
- pop {r1}
- bx r1
- thumb_func_end sub_8116E5C
-
- thumb_func_start sub_8116EF8
-sub_8116EF8: @ 8116EF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- str r0, [sp, 0x18]
- cmp r6, 0xA
- beq _08116F1E
- cmp r6, 0xA
- bgt _08116F1A
- cmp r6, 0x5
- beq _08116F1E
- b _08116F7C
-_08116F1A:
- cmp r6, 0xF
- bne _08116F7C
-_08116F1E:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r6, 0x5
- ldr r7, _08116F70 @ =gSharedMem + 0x190B8
- cmp r4, r0
- bge _08116F5E
- adds r1, r7, 0
- subs r1, 0xB8
- ldr r3, _08116F74 @ =gUnknown_083F8C00
- ldr r5, [r1, 0x8]
- adds r6, r3, 0
- adds r6, 0x8
- adds r2, r0, 0
-_08116F3A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r1, r0, 2
- adds r0, r1, r6
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- bne _08116F54
- adds r0, r1, r3
- ldrh r0, [r0, 0x10]
- ldr r1, [sp, 0x18]
- orrs r1, r0
- str r1, [sp, 0x18]
-_08116F54:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r2
- blt _08116F3A
-_08116F5E:
- ldr r0, _08116F78 @ =0x0000dfff
- ldr r2, [sp, 0x18]
- ands r2, r0
- str r2, [sp, 0x18]
- adds r0, r7, 0
- adds r1, r2, 0
- bl sub_8124CE8
- b _0811713C
- .align 2, 0
-_08116F70: .4byte gSharedMem + 0x190B8
-_08116F74: .4byte gUnknown_083F8C00
-_08116F78: .4byte 0x0000dfff
-_08116F7C:
- mov r0, sp
- ldr r1, _08116FC8 @ =gUnknown_083F8E9C
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1
- mov r10, r3
- cmp r0, 0x3
- bhi _08116F9A
- movs r4, 0x3
- mov r10, r4
-_08116F9A:
- adds r0, r6, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 8
- ldr r1, _08116FCC @ =0xffff0000
- adds r0, r1
- lsrs r7, r0, 16
- adds r0, r6, 0
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08116FF8
- cmp r0, 0x2
- bgt _08116FD4
- cmp r0, 0x1
- beq _08116FE4
- ldr r4, _08116FD0 @ =gSharedMem + 0x19000
- b _0811703A
- .align 2, 0
-_08116FC8: .4byte gUnknown_083F8E9C
-_08116FCC: .4byte 0xffff0000
-_08116FD0: .4byte gSharedMem + 0x19000
-_08116FD4:
- cmp r0, 0x3
- beq _0811700C
- cmp r0, 0x4
- beq _08117020
- ldr r4, _08116FE0 @ =gSharedMem + 0x19000
- b _0811703A
- .align 2, 0
-_08116FE0: .4byte gSharedMem + 0x19000
-_08116FE4:
- ldr r3, _08116FF0 @ =gSprites
- ldr r2, _08116FF4 @ =gSharedMem + 0x19000
- adds r0, r2, 0
- adds r0, 0x43
- b _08117028
- .align 2, 0
-_08116FF0: .4byte gSprites
-_08116FF4: .4byte gSharedMem + 0x19000
-_08116FF8:
- ldr r3, _08117004 @ =gSprites
- ldr r2, _08117008 @ =gSharedMem + 0x19000
- adds r0, r2, 0
- adds r0, 0x44
- b _08117028
- .align 2, 0
-_08117004: .4byte gSprites
-_08117008: .4byte gSharedMem + 0x19000
-_0811700C:
- ldr r3, _08117018 @ =gSprites
- ldr r2, _0811701C @ =gSharedMem + 0x19000
- adds r0, r2, 0
- adds r0, 0x45
- b _08117028
- .align 2, 0
-_08117018: .4byte gSprites
-_0811701C: .4byte gSharedMem + 0x19000
-_08117020:
- ldr r3, _08117088 @ =gSprites
- ldr r2, _0811708C @ =gSharedMem + 0x19000
- adds r0, r2, 0
- adds r0, 0x46
-_08117028:
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- lsls r7, r0, 4
- adds r4, r2, 0
-_0811703A:
- mov r2, r10
- cmp r2, 0x1
- bne _08117094
- ldr r1, _08117090 @ =gUnknown_083F8C00
- lsls r2, r6, 2
- adds r0, r2, r6
- lsls r0, 2
- adds r1, 0x8
- adds r0, r1
- ldr r1, [r4, 0x8]
- ldr r0, [r0]
- ands r1, r0
- str r2, [sp, 0x1C]
- cmp r1, 0
- bne _0811713C
- adds r0, r6, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- subs r1, r0, 0x1
- lsls r1, 3
- mov r3, sp
- adds r2, r3, r1
- ldrh r1, [r2, 0x2]
- adds r1, r7, r1
- strh r1, [r2, 0x2]
- adds r1, r4, 0
- adds r1, 0xB8
- lsls r0, 3
- subs r0, 0x8
- adds r2, r3, r0
- adds r0, r1, 0
- movs r1, 0xD
- bl sub_812492C
- b _08117122
- .align 2, 0
-_08117088: .4byte gSprites
-_0811708C: .4byte gSharedMem + 0x19000
-_08117090: .4byte gUnknown_083F8C00
-_08117094:
- movs r4, 0
- lsls r0, r6, 2
- str r0, [sp, 0x1C]
- ldr r1, _0811714C @ =gSharedMem + 0x19000
- mov r8, r1
- ldr r2, _08117150 @ =gUnknown_083F8C00
- mov r9, r2
-_081170A2:
- lsls r0, r4, 2
- adds r0, r4
- adds r0, r6, r0
- adds r0, 0x5
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r5, r0, 2
- mov r0, r9
- adds r0, 0x8
- adds r0, r5, r0
- mov r3, r8
- ldr r1, [r3, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0811710E
- adds r0, r2, 0
- movs r1, 0x5
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- subs r1, r0, 0x1
- lsls r1, 3
- mov r3, sp
- adds r2, r3, r1
- ldrh r1, [r2, 0x2]
- adds r1, r7, r1
- strh r1, [r2, 0x2]
- adds r1, r4, 0
- adds r1, 0xD
- lsls r1, 24
- lsrs r1, 24
- lsls r0, 3
- subs r0, 0x8
- adds r2, r3, r0
- mov r0, r8
- adds r0, 0xB8
- bl sub_812492C
- mov r0, r10
- cmp r0, 0x3
- bne _08117104
- mov r1, r9
- adds r0, r5, r1
- ldrh r0, [r0, 0x10]
- str r0, [sp, 0x18]
-_08117104:
- mov r0, r10
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_0811710E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081170A2
- mov r2, r10
- cmp r2, 0x2
- beq _08117122
- movs r3, 0
- str r3, [sp, 0x18]
-_08117122:
- ldr r0, _08117154 @ =gSharedMem + 0x190B8
- ldr r2, _08117150 @ =gUnknown_083F8C00
- ldr r4, [sp, 0x1C]
- adds r1, r4, r6
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x10]
- ldr r2, [sp, 0x18]
- orrs r2, r1
- str r2, [sp, 0x18]
- adds r1, r2, 0
- bl sub_8124CE8
-_0811713C:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811714C: .4byte gSharedMem + 0x19000
-_08117150: .4byte gUnknown_083F8C00
-_08117154: .4byte gSharedMem + 0x190B8
- thumb_func_end sub_8116EF8
-
- thumb_func_start sub_8117158
-sub_8117158: @ 8117158
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0811719C @ =gSharedMem + 0x19000
- movs r0, 0x1
- strh r0, [r4, 0x2A]
- movs r0, 0
- movs r1, 0
- bl sub_8117AA8
- ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800
- ldr r1, _081171A4 @ =0xfffff800
- adds r4, r1
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0xD
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0xE
- movs r3, 0x7
- bl sub_8124E2C
- cmp r5, 0xF
- bhi _08117250
- lsls r0, r5, 2
- ldr r1, _081171A8 @ =_081171AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811719C: .4byte gSharedMem + 0x19000
-_081171A0: .4byte gBGTilemapBuffers + 0x800
-_081171A4: .4byte 0xfffff800
-_081171A8: .4byte _081171AC
- .align 2, 0
-_081171AC:
- .4byte _08117360
- .4byte _081171EC
- .4byte _081171EC
- .4byte _081171EC
- .4byte _081171EC
- .4byte _08117220
- .4byte _08117250
- .4byte _08117250
- .4byte _08117250
- .4byte _08117250
- .4byte _08117220
- .4byte _08117250
- .4byte _08117250
- .4byte _08117250
- .4byte _08117250
- .4byte _08117220
-_081171EC:
- movs r0, 0x4
- str r0, [sp, 0x18]
- add r1, sp, 0x8
- movs r0, 0
- strb r0, [r1]
- adds r0, r1, 0
- ldrb r0, [r0]
- cmp r0, 0x3
- bhi _08117258
- add r4, sp, 0x10
- adds r3, r1, 0
-_08117202:
- ldrb r2, [r3]
- adds r2, r4
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, r5, r0
- strb r0, [r2]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldrb r0, [r3]
- ldr r1, [sp, 0x18]
- cmp r0, r1
- bcc _08117202
- b _08117258
-_08117220:
- movs r0, 0x5
- str r0, [sp, 0x18]
- add r1, sp, 0x8
- movs r0, 0
- strb r0, [r1]
- adds r0, r1, 0
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _08117258
- add r3, sp, 0x10
- adds r2, r1, 0
-_08117236:
- ldrb r1, [r2]
- adds r1, r3
- ldrb r0, [r2]
- adds r0, r5, r0
- strb r0, [r1]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldrb r0, [r2]
- ldr r1, [sp, 0x18]
- cmp r0, r1
- bcc _08117236
- b _08117258
-_08117250:
- movs r0, 0x1
- str r0, [sp, 0x18]
- add r0, sp, 0x10
- strb r5, [r0]
-_08117258:
- add r1, sp, 0x8
- movs r0, 0
- strb r0, [r1]
- adds r0, r1, 0
- ldrb r0, [r0]
- ldr r1, [sp, 0x18]
- cmp r0, r1
- bcs _08117360
- mov r0, sp
- adds r0, 0xE
- str r0, [sp, 0x1C]
- add r1, sp, 0x10
- mov r9, r1
- add r0, sp, 0x8
- mov r12, r0
- mov r1, sp
- adds r1, 0xA
- str r1, [sp, 0x20]
-_0811727C:
- mov r1, r12
- ldrb r0, [r1]
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _08117370 @ =gUnknown_083F8C00
- adds r0, r1
- ldrb r0, [r0, 0x6]
- ldr r1, [sp, 0x1C]
- strb r0, [r1]
- mov r1, r12
- ldrb r0, [r1]
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r1, _08117370 @ =gUnknown_083F8C00
- adds r0, r1
- ldrb r0, [r0, 0x3]
- ldr r1, [sp, 0x20]
- strh r0, [r1]
- mov r4, sp
- adds r4, 0x9
- movs r0, 0
- strb r0, [r4]
- ldrb r0, [r4]
- cmp r0, 0x2
- bhi _08117350
- add r5, sp, 0xC
- ldr r7, [sp, 0x20]
- ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800
- mov r8, r0
- ldr r6, [sp, 0x1C]
- ldr r1, _08117378 @ =gSharedMem + 0x189A0
- mov r10, r1
-_081172C8:
- mov r1, r12
- ldrb r0, [r1]
- add r0, r9
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- ldr r0, _08117370 @ =gUnknown_083F8C00
- adds r1, r0
- adds r3, r4, 0
- ldrb r0, [r4]
- ldrb r1, [r1, 0x4]
- adds r0, r1
- lsls r0, 5
- strh r0, [r5]
- ldrh r0, [r7]
- ldrh r2, [r5]
- adds r2, r0
- lsls r2, 1
- add r2, r8
- ldrb r0, [r6]
- ldrb r1, [r4]
- adds r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- strh r0, [r2]
- ldrh r0, [r7]
- ldrh r2, [r5]
- adds r2, r0
- adds r2, 0x1
- lsls r2, 1
- add r2, r8
- ldrb r0, [r6]
- ldrb r1, [r4]
- adds r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- mov r1, r10
- adds r1, 0x2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldrh r0, [r7]
- ldrh r2, [r5]
- adds r2, r0
- adds r2, 0x2
- lsls r2, 1
- add r2, r8
- ldrb r0, [r6]
- ldrb r1, [r4]
- adds r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- ldr r1, _0811737C @ =gSharedMem + 0x189A4
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldrb r0, [r3]
- cmp r0, 0x2
- bls _081172C8
-_08117350:
- mov r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r1]
- ldr r1, [sp, 0x18]
- cmp r0, r1
- bcc _0811727C
-_08117360:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117370: .4byte gUnknown_083F8C00
-_08117374: .4byte gBGTilemapBuffers + 0x800
-_08117378: .4byte gSharedMem + 0x189A0
-_0811737C: .4byte gSharedMem + 0x189A4
- thumb_func_end sub_8117158
-
- thumb_func_start sub_8117380
-sub_8117380: @ 8117380
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _081173B8 @ =gUnknown_083F8EF4
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x13
- bls _08117398
- movs r4, 0
-_08117398:
- ldr r3, _081173BC @ =gUnknown_083F8C00
- lsls r0, r4, 2
- adds r0, r4
- lsls r2, r0, 2
- adds r0, r2, r3
- ldrb r0, [r0, 0x1]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x4
- beq _081173EC
- cmp r0, 0x4
- bgt _081173C0
- cmp r0, 0x3
- beq _081173C6
- b _08117428
- .align 2, 0
-_081173B8: .4byte gUnknown_083F8EF4
-_081173BC: .4byte gUnknown_083F8C00
-_081173C0:
- cmp r0, 0xC
- beq _0811740C
- b _08117428
-_081173C6:
- adds r0, r4, 0
- movs r1, 0x5
- bl __udivsi3
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081173E8 @ =gSharedMem + 0x19000
- adds r0, 0x16
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- bhi _08117428
- ldrb r0, [r1]
- adds r0, 0x1
- b _08117402
- .align 2, 0
-_081173E8: .4byte gSharedMem + 0x19000
-_081173EC:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08117408 @ =gSharedMem + 0x19000
- adds r0, 0x12
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _08117428
- ldrb r0, [r1]
- adds r0, 0x2
-_08117402:
- add r0, sp
- ldrb r0, [r0]
- b _0811742A
- .align 2, 0
-_08117408: .4byte gSharedMem + 0x19000
-_0811740C:
- ldr r1, _08117424 @ =gSharedMem + 0x19000
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08117428
- mov r0, sp
- ldrb r0, [r0, 0x4]
- b _0811742A
- .align 2, 0
-_08117424: .4byte gSharedMem + 0x19000
-_08117428:
- movs r0, 0
-_0811742A:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8117380
-
- thumb_func_start sub_8117434
-sub_8117434: @ 8117434
- push {r4-r6,lr}
- ldr r1, _081174AC @ =REG_BG2PA
- ldr r4, _081174B0 @ =gSharedMem + 0x19000
- ldrh r0, [r4, 0x2C]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r4, 0x2E]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r4, 0x30]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r4, 0x32]
- strh r0, [r1]
- movs r0, 0x2E
- ldrsh r2, [r4, r0]
- ldr r0, _081174B4 @ =gSpriteCoordOffsetY
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r1, 0x50
- adds r0, r2, 0
- muls r0, r1
- movs r2, 0xE8
- lsls r2, 7
- subs r2, r0
- movs r6, 0x2C
- ldrsh r5, [r4, r6]
- ldr r0, _081174B8 @ =gSpriteCoordOffsetX
- movs r6, 0
- ldrsh r3, [r0, r6]
- adds r3, 0x74
- adds r0, r5, 0
- muls r0, r3
- subs r2, r0
- movs r5, 0x32
- ldrsh r0, [r4, r5]
- muls r0, r1
- movs r1, 0xA8
- lsls r1, 7
- subs r1, r0
- movs r6, 0x30
- ldrsh r0, [r4, r6]
- muls r0, r3
- subs r1, r0
- ldr r0, _081174BC @ =REG_BG2X_L
- strh r2, [r0]
- adds r0, 0x2
- ldr r3, _081174C0 @ =0x0fff0000
- ands r2, r3
- asrs r2, 16
- strh r2, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- ands r1, r3
- asrs r1, 16
- strh r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081174AC: .4byte REG_BG2PA
-_081174B0: .4byte gSharedMem + 0x19000
-_081174B4: .4byte gSpriteCoordOffsetY
-_081174B8: .4byte gSpriteCoordOffsetX
-_081174BC: .4byte REG_BG2X_L
-_081174C0: .4byte 0x0fff0000
- thumb_func_end sub_8117434
-
- thumb_func_start sub_81174C4
-sub_81174C4: @ 81174C4
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- muls r0, r1
- adds r1, r0, 0
- cmp r0, 0
- bge _081174D8
- adds r1, 0xFF
-_081174D8:
- lsls r0, r1, 8
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_81174C4
-
- thumb_func_start sub_81174E0
-sub_81174E0: @ 81174E0
- push {lr}
- adds r1, r0, 0
- movs r0, 0x80
- lsls r0, 9
- lsls r1, 16
- asrs r1, 16
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_81174E0
-
- thumb_func_start sub_81174F8
-sub_81174F8: @ 81174F8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x14
- movs r1, 0x8
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08117520 @ =0x00002d9e
- bl sub_814AAF8
- ldr r1, _08117524 @ =gUnknown_083F8EB4
- adds r0, r4, 0
- bl DoYesNoFuncWithChoice
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08117520: .4byte 0x00002d9e
-_08117524: .4byte gUnknown_083F8EB4
- thumb_func_end sub_81174F8
-
- thumb_func_start sub_8117528
-sub_8117528: @ 8117528
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08117554 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811754C
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _08117558 @ =sub_8115384
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0811754C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08117554: .4byte gPaletteFade
-_08117558: .4byte sub_8115384
- thumb_func_end sub_8117528
-
- thumb_func_start sub_811755C
-sub_811755C: @ 811755C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x14
- movs r1, 0x8
- movs r2, 0x1A
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- bl MenuZeroFillScreen
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r2, _081175B4 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- lsls r1, 26
- lsrs r1, 26
- ldrb r3, [r2, 0x4]
- movs r0, 0x40
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x4]
- bl UpdatePaletteFade
- ldr r1, _081175B8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081175BC @ =sub_8117528
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081175B4: .4byte gPaletteFade
-_081175B8: .4byte gTasks
-_081175BC: .4byte sub_8117528
- thumb_func_end sub_811755C
-
- thumb_func_start sub_81175C0
-sub_81175C0: @ 81175C0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl MenuZeroFillScreen
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81175C0
-
- thumb_func_start sub_81175DC
-sub_81175DC: @ 81175DC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _08117624 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r2, r1, 0x1
- strh r2, [r0, 0x8]
- ldr r0, _08117628 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08117608
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _0811761C
-_08117608:
- ldr r1, _0811762C @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- bl MenuZeroFillScreen
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_0811761C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08117624: .4byte gTasks
-_08117628: .4byte gMain
-_0811762C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_81175DC
-
- thumb_func_start sub_8117630
-sub_8117630: @ 8117630
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _0811768C @ =gUnknown_083F8DF0
- ldr r0, _08117690 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- lsrs r1, 7
- lsls r1, 1
- adds r0, r1
- adds r0, r2
- ldrb r1, [r0]
- ldr r0, _08117694 @ =gStringVar1
- movs r2, 0x2
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r5, _08117698 @ =gStringVar4
- ldr r1, _0811769C @ =gUnknown_081C40DF
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _081176A0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081176A4 @ =sub_81174F8
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811768C: .4byte gUnknown_083F8DF0
-_08117690: .4byte gSpecialVar_0x8004
-_08117694: .4byte gStringVar1
-_08117698: .4byte gStringVar4
-_0811769C: .4byte gUnknown_081C40DF
-_081176A0: .4byte gTasks
-_081176A4: .4byte sub_81174F8
- thumb_func_end sub_8117630
-
- thumb_func_start Task_Roulette_0
-Task_Roulette_0: @ 81176A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08117758 @ =gStringVar1
- mov r10, r0
- ldr r1, _0811775C @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- movs r0, 0x22
- ldrsh r1, [r6, r0]
- mov r0, r10
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- ldr r5, _08117760 @ =gStringVar4
- ldr r1, _08117764 @ =gOtherText_Coins
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0
- movs r2, 0x9
- movs r3, 0x3
- bl MenuDrawTextWindow
- adds r0, r5, 0
- movs r1, 0x9
- movs r2, 0x1
- bl MenuPrint_RightAligned
- ldr r2, _08117768 @ =gUnknown_083F8DF0
- ldr r1, _0811776C @ =gSpecialVar_0x8004
- mov r8, r1
- ldrh r1, [r1]
- movs r0, 0x1
- mov r9, r0
- ands r0, r1
- lsrs r1, 7
- lsls r1, 1
- adds r0, r1
- adds r0, r2
- ldrb r4, [r0]
- mov r0, r10
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r1, 0x22
- ldrsh r0, [r6, r1]
- cmp r0, r4
- blt _081177BC
- mov r0, r8
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811777C
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _0811777C
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08117770 @ =gUnknown_081C4139
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _08117774 @ =sub_8117630
- ldr r2, _08117778 @ =0x0000ffff
- adds r0, r7, 0
- movs r3, 0x3
- bl sub_8116C34
- b _081177E4
- .align 2, 0
-_08117758: .4byte gStringVar1
-_0811775C: .4byte gTasks
-_08117760: .4byte gStringVar4
-_08117764: .4byte gOtherText_Coins
-_08117768: .4byte gUnknown_083F8DF0
-_0811776C: .4byte gSpecialVar_0x8004
-_08117770: .4byte gUnknown_081C4139
-_08117774: .4byte sub_8117630
-_08117778: .4byte 0x0000ffff
-_0811777C:
- ldr r4, _081177AC @ =gStringVar4
- ldr r1, _081177B0 @ =gUnknown_081C40DF
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _081177B4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _081177B8 @ =sub_81174F8
- str r1, [r0]
- b _081177E4
- .align 2, 0
-_081177AC: .4byte gStringVar4
-_081177B0: .4byte gUnknown_081C40DF
-_081177B4: .4byte gTasks
-_081177B8: .4byte sub_81174F8
-_081177BC:
- ldr r1, _081177F4 @ =gUnknown_081C411C
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- ldr r0, _081177F8 @ =sub_81175DC
- str r0, [r6]
- movs r0, 0
- strh r0, [r6, 0x22]
- strh r0, [r6, 0x8]
-_081177E4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081177F4: .4byte gUnknown_081C411C
-_081177F8: .4byte sub_81175DC
- thumb_func_end Task_Roulette_0
-
- thumb_func_start PlayRoulette
-PlayRoulette: @ 81177FC
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, _08117828 @ =Task_Roulette_0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811782C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _08117830 @ =gSaveBlock1
- ldr r2, _08117834 @ =0x00000494
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1, 0x22]
- pop {r0}
- bx r0
- .align 2, 0
-_08117828: .4byte Task_Roulette_0
-_0811782C: .4byte gTasks
-_08117830: .4byte gSaveBlock1
-_08117834: .4byte 0x00000494
- thumb_func_end PlayRoulette
-
- thumb_func_start sub_8117838
-sub_8117838: @ 8117838
- push {r4,lr}
- lsls r0, 24
- cmp r0, 0
- bne _08117884
- bl FreeAllSpritePalettes
- ldr r0, _08117870 @ =gUnknown_083F9E30
- bl LoadSpritePalettes
- ldr r0, _08117874 @ =gUnknown_083F92A8
- ldr r4, _08117878 @ =gSharedMem + 0x17000
- adds r1, r4, 0
- bl LZ77UnCompWram
- ldr r0, _0811787C @ =gUnknown_083F90FC
- movs r2, 0xE0
- lsls r2, 4
- adds r1, r4, r2
- bl LZ77UnCompWram
- ldr r0, _08117880 @ =gUnknown_083F9D3C
- movs r1, 0x80
- lsls r1, 5
- adds r4, r1
- adds r1, r4, 0
- bl LZ77UnCompWram
- b _08117888
- .align 2, 0
-_08117870: .4byte gUnknown_083F9E30
-_08117874: .4byte gUnknown_083F92A8
-_08117878: .4byte gSharedMem + 0x17000
-_0811787C: .4byte gUnknown_083F90FC
-_08117880: .4byte gUnknown_083F9D3C
-_08117884:
- bl FreeAllSpritePalettes
-_08117888:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8117838
-
- thumb_func_start sub_8117890
-sub_8117890: @ 8117890
- push {r4-r6,lr}
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, [r0, 0x4]
- ldrb r3, [r1]
- movs r1, 0x74
- movs r2, 0x50
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, _081178F4 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r6]
- strh r0, [r1, 0x2E]
- strh r4, [r1, 0x30]
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- adds r1, 0x2C
- ldrb r0, [r1]
- movs r2, 0x40
- orrs r0, r2
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r1]
- ldrh r2, [r6]
- adds r0, r2, 0
- adds r0, 0x1E
- strh r0, [r6]
- lsls r0, 16
- ldr r1, _081178F8 @ =0x01670000
- cmp r0, r1
- bls _081178EC
- ldr r1, _081178FC @ =0xfffffeb6
- adds r0, r2, r1
- strh r0, [r6]
-_081178EC:
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081178F4: .4byte gSprites
-_081178F8: .4byte 0x01670000
-_081178FC: .4byte 0xfffffeb6
- thumb_func_end sub_8117890
-
- thumb_func_start sub_8117900
-sub_8117900: @ 8117900
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- ldr r4, _08117A50 @ =gUnknown_083F9F54
- ldr r0, [r4]
- ldr r5, _08117A54 @ =gSharedMem
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- mov r6, sp
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r4, _08117A58 @ =gUnknown_083F9F5C
- ldr r0, [r4]
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r0, [r4, 0x4]
- strh r0, [r6, 0x4]
- ldrh r0, [r4, 0x6]
- strh r0, [r6, 0x6]
- mov r0, sp
- bl LoadSpriteSheet
- movs r7, 0
- ldr r0, _08117A5C @ =0x0001903c
- adds r0, r5
- mov r9, r0
- ldr r0, _08117A60 @ =gSprites
- mov r8, r0
-_08117950:
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 27
- lsrs r4, r0, 24
- movs r6, 0
- lsls r5, r7, 2
-_0811795C:
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 3
- ldr r0, _08117A64 @ =gSpriteTemplate_83FA07C
- adds r0, r1, r0
- adds r1, 0x94
- adds r2, r4, 0
- adds r2, 0x5C
- movs r3, 0x1E
- bl CreateSprite
- adds r1, r6, 0
- adds r1, 0x1D
- adds r1, r5, r1
- add r1, r9
- strb r0, [r1]
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0
- adds r0, 0x18
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x47
- bls _081179A0
- movs r4, 0
-_081179A0:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _0811795C
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _08117950
- movs r7, 0
- ldr r5, _08117A68 @ =gSharedMem + 0x1903C
- ldr r4, _08117A60 @ =gSprites
-_081179BA:
- lsls r1, r7, 1
- adds r1, r7
- lsls r1, 3
- ldr r0, _08117A6C @ =gSpriteTemplate_83F9FD4
- adds r0, r1, r0
- adds r1, 0x94
- lsls r1, 16
- asrs r1, 16
- movs r2, 0x46
- movs r3, 0x1E
- bl CreateSprite
- adds r1, r7, 0
- adds r1, 0x29
- adds r1, r5
- strb r0, [r1]
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bls _081179BA
- movs r7, 0
- ldr r5, _08117A68 @ =gSharedMem + 0x1903C
- ldr r4, _08117A60 @ =gSprites
-_08117A00:
- lsls r2, r7, 1
- adds r2, r7
- lsls r2, 3
- ldr r0, _08117A70 @ =gSpriteTemplate_83FA034
- adds r0, r2, r0
- adds r2, 0x5C
- lsls r2, 16
- asrs r2, 16
- movs r1, 0x7E
- movs r3, 0x1E
- bl CreateSprite
- adds r1, r7, 0
- adds r1, 0x2D
- adds r1, r5
- strb r0, [r1]
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _08117A00
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117A50: .4byte gUnknown_083F9F54
-_08117A54: .4byte gSharedMem
-_08117A58: .4byte gUnknown_083F9F5C
-_08117A5C: .4byte 0x0001903c
-_08117A60: .4byte gSprites
-_08117A64: .4byte gSpriteTemplate_83FA07C
-_08117A68: .4byte gSharedMem + 0x1903C
-_08117A6C: .4byte gSpriteTemplate_83F9FD4
-_08117A70: .4byte gSpriteTemplate_83FA034
- thumb_func_end sub_8117900
-
- thumb_func_start unref_sub_8117A74
-unref_sub_8117A74: @ 8117A74
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08117AA0 @ =gSharedMem + 0x1903C
-_08117A7A:
- adds r0, r4, 0
- adds r0, 0x1D
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08117AA4 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xB
- bls _08117A7A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08117AA0: .4byte gSharedMem + 0x1903C
-_08117AA4: .4byte gSprites
- thumb_func_end unref_sub_8117A74
-
- thumb_func_start sub_8117AA8
-sub_8117AA8: @ 8117AA8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- cmp r0, 0
- beq _08117AF8
- cmp r0, 0x1
- bne _08117BA8
- movs r3, 0
- ldr r5, _08117AF0 @ =gSprites
- ldr r4, _08117AF4 @ =gSharedMem + 0x1903C
- movs r2, 0x4
-_08117ACA:
- adds r0, r3, 0
- adds r0, 0x1D
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x12
- bls _08117ACA
- b _08117BA8
- .align 2, 0
-_08117AF0: .4byte gSprites
-_08117AF4: .4byte gSharedMem + 0x1903C
-_08117AF8:
- movs r3, 0
- ldr r0, _08117B48 @ =gUnknown_083F8D90
- mov r12, r0
- ldr r7, _08117B4C @ =gSharedMem + 0x19000
- movs r1, 0x4
- add r1, r12
- mov r9, r1
- ldr r5, _08117B50 @ =gSprites
- adds r4, r7, 0
- adds r4, 0x3C
- movs r6, 0x5
- negs r6, r6
-_08117B10:
- lsls r2, r3, 3
- mov r1, r9
- adds r0, r2, r1
- ldr r1, [r7, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08117B54
- mov r1, r12
- adds r0, r2, r1
- ldrb r0, [r0, 0x2]
- cmp r0, r8
- beq _08117B54
- adds r0, r3, 0
- adds r0, 0x1D
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _08117B6E
- .align 2, 0
-_08117B48: .4byte gUnknown_083F8D90
-_08117B4C: .4byte gSharedMem + 0x19000
-_08117B50: .4byte gSprites
-_08117B54:
- adds r0, r3, 0
- adds r0, 0x1D
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
-_08117B6E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xB
- bls _08117B10
- cmp r3, 0x12
- bhi _08117BA8
- ldr r6, _08117BB4 @ =gSprites
- ldr r4, _08117BB8 @ =gSharedMem + 0x1903C
- movs r5, 0x5
- negs r5, r5
-_08117B84:
- adds r0, r3, 0
- adds r0, 0x1D
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x12
- bls _08117B84
-_08117BA8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117BB4: .4byte gSprites
-_08117BB8: .4byte gSharedMem + 0x1903C
- thumb_func_end sub_8117AA8
-
- thumb_func_start sub_8117BBC
-sub_8117BBC: @ 8117BBC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r0, _08117C50 @ =gSharedMem + 0x1903C
- mov r8, r0
- ldr r4, _08117C54 @ =gSprites
- movs r6, 0x4
-_08117BCC:
- ldr r0, _08117C58 @ =gSpriteTemplate_83FA40C
- movs r1, 0x74
- movs r2, 0x14
- movs r3, 0xA
- bl CreateSprite
- adds r3, r5, 0
- adds r3, 0x31
- add r3, r8
- strb r0, [r3]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r6
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08117C5C @ =sub_81184CC
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- movs r7, 0xD
- negs r7, r7
- adds r2, r7, 0
- ands r1, r2
- orrs r1, r6
- strb r1, [r0, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x8
- bl StartSpriteAnim
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08117BCC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117C50: .4byte gSharedMem + 0x1903C
-_08117C54: .4byte gSprites
-_08117C58: .4byte gSpriteTemplate_83FA40C
-_08117C5C: .4byte sub_81184CC
- thumb_func_end sub_8117BBC
-
- thumb_func_start sub_8117C60
-sub_8117C60: @ 8117C60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r5, 0
- cmp r0, 0
- beq _08117CAC
- ldr r4, _08117CA4 @ =gSprites
- ldr r3, _08117CA8 @ =gSharedMem + 0x1903C
- movs r2, 0x4
-_08117C7E:
- adds r0, r5, 0
- adds r0, 0x31
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08117C7E
- b _08117D58
- .align 2, 0
-_08117CA4: .4byte gSprites
-_08117CA8: .4byte gSharedMem + 0x1903C
-_08117CAC:
- ldr r0, _08117CEC @ =gSharedMem + 0x19000
- mov r12, r0
- ldr r6, _08117CF0 @ =gSprites
- movs r0, 0x3C
- add r0, r12
- mov r8, r0
- ldr r7, _08117CF4 @ =gUnknown_083F8C00
- movs r0, 0x5
- negs r0, r0
- mov r10, r0
-_08117CC0:
- mov r0, r12
- adds r0, 0xC
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08117CD0
- cmp r5, r9
- bne _08117CF8
-_08117CD0:
- adds r0, r5, 0
- adds r0, 0x31
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _08117D4E
- .align 2, 0
-_08117CEC: .4byte gSharedMem + 0x19000
-_08117CF0: .4byte gSprites
-_08117CF4: .4byte gUnknown_083F8C00
-_08117CF8:
- adds r3, r5, 0
- adds r3, 0x31
- add r3, r8
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r10
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x3]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x20]
- ldrb r0, [r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x4]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x3
- strh r0, [r2, 0x22]
-_08117D4E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08117CC0
-_08117D58:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8117C60
-
- thumb_func_start sub_8117D68
-sub_8117D68: @ 8117D68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08117D98
- ldr r2, _08117D90 @ =gSprites
- ldr r0, _08117D94 @ =gSharedMem + 0x19000
- adds r0, 0x6C
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _08117DE2
- .align 2, 0
-_08117D90: .4byte gSprites
-_08117D94: .4byte gSharedMem + 0x19000
-_08117D98:
- ldr r4, _08117DE8 @ =gSprites
- ldr r3, _08117DEC @ =gSharedMem + 0x19000
- adds r3, 0x6C
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldr r0, _08117DF0 @ =gUnknown_083F8C00
- lsls r2, r5, 2
- adds r2, r5
- lsls r2, 2
- adds r2, r0
- ldrb r0, [r2, 0x3]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r1, 0x20]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r2, 0x4]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r1, 0x22]
-_08117DE2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08117DE8: .4byte gSprites
-_08117DEC: .4byte gSharedMem + 0x19000
-_08117DF0: .4byte gUnknown_083F8C00
- thumb_func_end sub_8117D68
-
- thumb_func_start sub_8117DF4
-sub_8117DF4: @ 8117DF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r4, _08117E84 @ =gUnknown_083F9EE8
- ldr r0, [r4]
- ldr r5, _08117E88 @ =gSharedMem
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- ldrh r2, [r4, 0x6]
- lsls r2, 16
- ldrh r1, [r4, 0x4]
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpriteSheet
- movs r1, 0xF
- mov r0, sp
- strh r1, [r0]
- movs r0, 0
- ldr r1, _08117E8C @ =0x0001903c
- adds r1, r5
- mov r8, r1
- ldr r7, _08117E90 @ =gSprites
-_08117E2A:
- movs r4, 0
- adds r6, r0, 0x1
- lsls r5, r0, 2
-_08117E30:
- adds r1, r5, r4
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, _08117E94 @ =gSpriteTemplate_83FA0DC
- adds r0, r1
- movs r1, 0x28
- mov r2, sp
- bl sub_8117890
- adds r1, r4, 0x7
- adds r1, r5, r1
- add r1, r8
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x2C
- ldrb r0, [r1]
- movs r2, 0x40
- orrs r0, r2
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08117E30
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, 0x2
- bls _08117E2A
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117E84: .4byte gUnknown_083F9EE8
-_08117E88: .4byte gSharedMem
-_08117E8C: .4byte 0x0001903c
-_08117E90: .4byte gSprites
-_08117E94: .4byte gSpriteTemplate_83FA0DC
- thumb_func_end sub_8117DF4
-
- thumb_func_start sub_8117E98
-sub_8117E98: @ 8117E98
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _08117F1C @ =gSharedMem + 0x19000
- ldrh r1, [r6, 0x2E]
- ldrh r0, [r0, 0x24]
- adds r1, r0
- lsls r1, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r0, _08117F20 @ =0x00000167
- cmp r1, r0
- ble _08117EB8
- ldr r2, _08117F24 @ =0xfffffe98
- adds r0, r1, r2
- lsls r0, 16
- lsrs r4, r0, 16
-_08117EB8:
- adds r0, r4, 0
- bl Sin2
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl Cos2
- lsls r2, r5, 16
- asrs r2, 16
- movs r3, 0x30
- ldrsh r1, [r6, r3]
- muls r1, r2
- asrs r1, 12
- strh r1, [r6, 0x24]
- lsls r0, 16
- asrs r4, r0, 16
- negs r1, r4
- movs r3, 0x30
- ldrsh r0, [r6, r3]
- muls r0, r1
- asrs r0, 12
- strh r0, [r6, 0x26]
- ldrb r0, [r6, 0x3]
- lsls r0, 26
- lsrs r3, r0, 27
- cmp r2, 0
- bge _08117EF2
- adds r2, 0xF
-_08117EF2:
- lsls r0, r2, 12
- lsrs r5, r0, 16
- ldr r1, _08117F28 @ =gOamMatrices
- lsls r0, r3, 3
- adds r1, r0, r1
- adds r0, r4, 0
- cmp r0, 0
- bge _08117F04
- adds r0, 0xF
-_08117F04:
- asrs r0, 4
- strh r0, [r1, 0x6]
- strh r0, [r1]
- strh r5, [r1, 0x2]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r1, 0x4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08117F1C: .4byte gSharedMem + 0x19000
-_08117F20: .4byte 0x00000167
-_08117F24: .4byte 0xfffffe98
-_08117F28: .4byte gOamMatrices
- thumb_func_end sub_8117E98
-
- thumb_func_start sub_8117F2C
-sub_8117F2C: @ 8117F2C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r5, 0
- ldr r7, _081180C8 @ =gSharedMem
- mov r6, sp
-_08117F3A:
- ldr r0, _081180CC @ =gUnknown_083FA21C
- lsls r4, r5, 3
- adds r4, r0
- ldr r0, [r4]
- adds r1, r7, 0
- bl LZ77UnCompWram
- str r7, [sp]
- ldrh r2, [r4, 0x4]
- ldr r0, _081180D0 @ =0xffff0000
- ldr r1, [r6, 0x4]
- ands r1, r0
- orrs r1, r2
- str r1, [r6, 0x4]
- ldrh r2, [r4, 0x6]
- lsls r2, 16
- ldr r0, _081180D4 @ =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [r6, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _08117F3A
- ldr r0, _081180D8 @ =gSpriteTemplate_83FA2B0
- movs r1, 0xD0
- movs r2, 0x10
- movs r3, 0x4
- bl CreateSprite
- ldr r4, _081180DC @ =gSharedMem + 0x19000
- adds r1, r4, 0
- adds r1, 0x50
- strb r0, [r1]
- ldr r3, _081180E0 @ =gSprites
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- movs r5, 0
- adds r4, 0x3C
- adds r7, r3, 0
-_08117FA2:
- lsls r1, r5, 19
- movs r0, 0xC4
- lsls r0, 16
- adds r1, r0
- asrs r1, 16
- ldr r0, _081180E4 @ =gSpriteTemplate_83FA2C8
- movs r2, 0x18
- movs r3, 0
- bl CreateSprite
- adds r3, r5, 0
- adds r3, 0x15
- adds r3, r4
- strb r0, [r3]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r6, 0x40
- orrs r1, r6
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08117FA2
- ldr r0, _081180E8 @ =gSpriteTemplate_83FA2E0
- movs r1, 0x78
- movs r2, 0x44
- movs r3, 0x4
- bl CreateSprite
- ldr r3, _081180DC @ =gSharedMem + 0x19000
- adds r1, r3, 0
- adds r1, 0x55
- strb r0, [r1]
- ldr r2, _081180E0 @ =gSprites
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2C
- ldrb r1, [r0]
- orrs r1, r6
- strb r1, [r0]
- movs r5, 0
- adds r3, 0x3C
- mov r8, r3
- adds r4, r2, 0
-_08118020:
- lsls r1, r5, 20
- movs r0, 0xC0
- lsls r0, 16
- adds r1, r0
- asrs r1, 16
- ldr r0, _081180EC @ =gSpriteTemplate_83FA2F8
- movs r2, 0x24
- movs r3, 0x4
- bl CreateSprite
- adds r2, r5, 0
- adds r2, 0x1A
- add r2, r8
- strb r0, [r2]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r7, 0x4
- orrs r1, r7
- strb r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r6, 0x40
- orrs r1, r6
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08118020
- ldr r0, _081180F0 @ =gSpriteTemplate_83FA310
- movs r1, 0x98
- movs r2, 0x60
- movs r3, 0x9
- bl CreateSprite
- ldr r3, _081180DC @ =gSharedMem + 0x19000
- adds r3, 0x6C
- strb r0, [r3]
- ldr r4, _081180E0 @ =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r7
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- orrs r1, r6
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081180C8: .4byte gSharedMem
-_081180CC: .4byte gUnknown_083FA21C
-_081180D0: .4byte 0xffff0000
-_081180D4: .4byte 0x0000ffff
-_081180D8: .4byte gSpriteTemplate_83FA2B0
-_081180DC: .4byte gSharedMem + 0x19000
-_081180E0: .4byte gSprites
-_081180E4: .4byte gSpriteTemplate_83FA2C8
-_081180E8: .4byte gSpriteTemplate_83FA2E0
-_081180EC: .4byte gSpriteTemplate_83FA2F8
-_081180F0: .4byte gSpriteTemplate_83FA310
- thumb_func_end sub_8117F2C
-
- thumb_func_start sub_81180F4
-sub_81180F4: @ 81180F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r0, 0xFA
- lsls r0, 2
- mov r8, r0
- movs r4, 0
- movs r6, 0
- ldr r1, _081181D4 @ =gSharedMem + 0x19000
- mov r9, r1
- ldr r0, _081181D8 @ =gSprites
- mov r10, r0
-_08118114:
- adds r0, r7, 0
- mov r1, r8
- bl __udivsi3
- lsls r0, 24
- lsrs r5, r0, 24
- adds r3, r6, 0
- adds r3, 0x15
- mov r0, r9
- adds r0, 0x3C
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081181D8 @ =gSprites
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- adds r0, r3, 0
- cmp r5, 0
- bne _0811814E
- cmp r4, 0
- bne _0811814E
- cmp r6, 0x3
- bne _081181A2
-_0811814E:
- mov r3, r9
- adds r3, 0x3C
- adds r3, r0, r3
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r4, 0x5
- negs r4, r4
- adds r2, r4, 0
- ands r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r10
- adds r3, r0, r1
- adds r4, r3, 0
- adds r4, 0x40
- ldr r1, _081181DC @ =gSprites + 0x8
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrh r2, [r0]
- ldrh r4, [r4]
- adds r2, r4
- ldr r4, _081181E0 @ =0x000003ff
- adds r0, r4, 0
- ands r2, r0
- ldrh r0, [r3, 0x4]
- ldr r4, _081181E4 @ =0xfffffc00
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strh r0, [r3, 0x4]
- movs r4, 0x1
-_081181A2:
- adds r0, r7, 0
- mov r1, r8
- bl __umodsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r0, r8
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _08118114
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081181D4: .4byte gSharedMem + 0x19000
-_081181D8: .4byte gSprites
-_081181DC: .4byte gSprites + 0x8
-_081181E0: .4byte 0x000003ff
-_081181E4: .4byte 0xfffffc00
- thumb_func_end sub_81180F4
-
- thumb_func_start sub_81181E8
-sub_81181E8: @ 81181E8
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08118220 @ =gUnknown_083FA608
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x13
- bls _08118200
- movs r4, 0
-_08118200:
- ldr r3, _08118224 @ =gUnknown_083F8C00
- lsls r0, r4, 2
- adds r0, r4
- lsls r2, r0, 2
- adds r0, r2, r3
- ldrb r0, [r0, 0x1]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x4
- beq _08118254
- cmp r0, 0x4
- bgt _08118228
- cmp r0, 0x3
- beq _0811822E
- b _08118290
- .align 2, 0
-_08118220: .4byte gUnknown_083FA608
-_08118224: .4byte gUnknown_083F8C00
-_08118228:
- cmp r0, 0xC
- beq _08118274
- b _08118290
-_0811822E:
- adds r0, r4, 0
- movs r1, 0x5
- bl __udivsi3
- subs r0, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08118250 @ =gSharedMem + 0x19000
- adds r0, 0x16
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- bhi _08118290
- ldrb r0, [r1]
- adds r0, 0x1
- b _0811826A
- .align 2, 0
-_08118250: .4byte gSharedMem + 0x19000
-_08118254:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08118270 @ =gSharedMem + 0x19000
- adds r0, 0x12
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _08118290
- ldrb r0, [r1]
- adds r0, 0x2
-_0811826A:
- add r0, sp
- ldrb r0, [r0]
- b _08118292
- .align 2, 0
-_08118270: .4byte gSharedMem + 0x19000
-_08118274:
- ldr r1, _0811828C @ =gSharedMem + 0x19000
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r1, [r1, 0x8]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08118290
- mov r0, sp
- ldrb r0, [r0, 0x4]
- b _08118292
- .align 2, 0
-_0811828C: .4byte gSharedMem + 0x19000
-_08118290:
- movs r0, 0
-_08118292:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81181E8
-
- thumb_func_start sub_811829C
-sub_811829C: @ 811829C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081182E8 @ =gSharedMem + 0x19000
- adds r1, 0x55
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- ldr r2, _081182EC @ =gSprites
- adds r4, r1, r2
- bl sub_81181E8
- adds r3, r4, 0
- adds r3, 0x2B
- strb r0, [r3]
- adds r2, r4, 0
- adds r2, 0x40
- ldr r1, [r4, 0x8]
- ldrb r0, [r3]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0]
- ldrh r2, [r2]
- adds r1, r2
- ldr r2, _081182F0 @ =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r4, 0x4]
- ldr r0, _081182F4 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081182E8: .4byte gSharedMem + 0x19000
-_081182EC: .4byte gSprites
-_081182F0: .4byte 0x000003ff
-_081182F4: .4byte 0xfffffc00
- thumb_func_end sub_811829C
-
- thumb_func_start sub_81182F8
-sub_81182F8: @ 81182F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r5, 0
- ldr r0, _08118320 @ =gSharedMem + 0x19000
- ldrb r1, [r0, 0x19]
- adds r3, r0, 0
- cmp r1, 0x1
- bne _08118310
- movs r5, 0x2
-_08118310:
- cmp r2, 0x6
- bls _08118316
- b _08118464
-_08118316:
- lsls r0, r2, 2
- ldr r1, _08118324 @ =_08118328
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08118320: .4byte gSharedMem + 0x19000
-_08118324: .4byte _08118328
- .align 2, 0
-_08118328:
- .4byte _08118464
- .4byte _08118420
- .4byte _081183F8
- .4byte _081183EC
- .4byte _081183C4
- .4byte _081183B8
- .4byte _08118344
-_08118344:
- movs r4, 0
- ldr r5, _081183A8 @ =gSprites
- ldr r0, _081183AC @ =gSharedMem + 0x1903C
- mov r8, r0
- movs r2, 0x5
- negs r2, r2
- mov r12, r2
- adds r6, r5, 0
- adds r6, 0x8
- ldr r7, _081183B0 @ =0xfffffc00
-_08118358:
- adds r3, r4, 0
- adds r3, 0x1A
- add r3, r8
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r12
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r5
- adds r2, r3, 0
- adds r2, 0x40
- adds r0, r6
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0]
- ldrh r2, [r2]
- adds r1, r2
- ldr r2, _081183B4 @ =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r3, 0x4]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08118358
- b _081184B2
- .align 2, 0
-_081183A8: .4byte gSprites
-_081183AC: .4byte gSharedMem + 0x1903C
-_081183B0: .4byte 0xfffffc00
-_081183B4: .4byte 0x000003ff
-_081183B8:
- ldr r2, _081183C0 @ =gSprites
- adds r0, r3, 0
- adds r0, 0x58
- b _08118426
- .align 2, 0
-_081183C0: .4byte gSprites
-_081183C4:
- ldr r2, _081183E8 @ =gSprites
- adds r0, r3, 0
- adds r0, 0x58
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r2
- adds r4, r3, 0
- adds r4, 0x40
- adds r2, 0x8
- adds r0, r2
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrh r1, [r0, 0x8]
- b _08118442
- .align 2, 0
-_081183E8: .4byte gSprites
-_081183EC:
- ldr r2, _081183F4 @ =gSprites
- adds r0, r3, 0
- adds r0, 0x57
- b _08118426
- .align 2, 0
-_081183F4: .4byte gSprites
-_081183F8:
- ldr r2, _0811841C @ =gSprites
- adds r0, r3, 0
- adds r0, 0x57
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r2
- adds r4, r3, 0
- adds r4, 0x40
- adds r2, 0x8
- adds r0, r2
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrh r1, [r0, 0x8]
- b _08118442
- .align 2, 0
-_0811841C: .4byte gSprites
-_08118420:
- ldr r2, _08118458 @ =gSprites
- adds r0, r3, 0
- adds r0, 0x56
-_08118426:
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r2
- adds r4, r3, 0
- adds r4, 0x40
- adds r2, 0x8
- adds r0, r2
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrh r1, [r0, 0x4]
-_08118442:
- ldrh r4, [r4]
- adds r1, r4
- ldr r2, _0811845C @ =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r3, 0x4]
- ldr r0, _08118460 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- b _081184B2
- .align 2, 0
-_08118458: .4byte gSprites
-_0811845C: .4byte 0x000003ff
-_08118460: .4byte 0xfffffc00
-_08118464:
- movs r4, 0
- lsls r6, r5, 2
- ldr r5, _081184BC @ =gSprites
- ldr r0, _081184C0 @ =gSharedMem + 0x1903C
- mov r8, r0
- adds r7, r5, 0
- adds r7, 0x8
- ldr r2, _081184C4 @ =0xfffffc00
- mov r12, r2
-_08118476:
- adds r0, r4, 0
- adds r0, 0x1A
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r5
- adds r2, r3, 0
- adds r2, 0x40
- adds r0, r7
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, r6, r0
- ldrh r1, [r0, 0x8]
- ldrh r2, [r2]
- adds r1, r2
- ldr r2, _081184C8 @ =0x000003ff
- adds r0, r2, 0
- ands r1, r0
- ldrh r2, [r3, 0x4]
- mov r0, r12
- ands r0, r2
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08118476
-_081184B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081184BC: .4byte gSprites
-_081184C0: .4byte gSharedMem + 0x1903C
-_081184C4: .4byte 0xfffffc00
-_081184C8: .4byte 0x000003ff
- thumb_func_end sub_81182F8
-
- thumb_func_start sub_81184CC
-sub_81184CC: @ 81184CC
- ldr r1, _081184D4 @ =gSharedMem + 0x19000
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x24]
- bx lr
- .align 2, 0
-_081184D4: .4byte gSharedMem + 0x19000
- thumb_func_end sub_81184CC
-
- thumb_func_start sub_81184D8
-sub_81184D8: @ 81184D8
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _08118544 @ =gUnknown_083FA42C
- ldr r0, [r4]
- ldr r5, _08118548 @ =gSharedMem
- adds r1, r5, 0
- bl LZ77UnCompWram
- str r5, [sp]
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- ldrh r0, [r4, 0x4]
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, _0811854C @ =gSpriteTemplate_83FA434
- movs r1, 0x74
- movs r2, 0x50
- movs r3, 0x51
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08118550 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0xC8
- lsls r0, 9
- adds r5, r0
- ldrh r0, [r5, 0x24]
- movs r2, 0
- strh r0, [r1, 0x2E]
- strh r2, [r1, 0x30]
- adds r3, r1, 0
- adds r3, 0x2C
- ldrb r0, [r3]
- movs r2, 0x40
- orrs r0, r2
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r3]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08118544: .4byte gUnknown_083FA42C
-_08118548: .4byte gSharedMem
-_0811854C: .4byte gSpriteTemplate_83FA434
-_08118550: .4byte gSprites
- thumb_func_end sub_81184D8
-
- thumb_func_start sub_8118554
-sub_8118554: @ 8118554
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, _08118574 @ =gOamMatrices
- lsls r0, 3
- adds r0, r1
- ldr r2, _08118578 @ =gSharedMem + 0x19000
- ldrh r1, [r2, 0x2C]
- strh r1, [r0, 0x6]
- ldrh r1, [r2, 0x2C]
- strh r1, [r0]
- ldrh r1, [r2, 0x2E]
- strh r1, [r0, 0x2]
- ldrh r1, [r2, 0x30]
- strh r1, [r0, 0x4]
- bx lr
- .align 2, 0
-_08118574: .4byte gOamMatrices
-_08118578: .4byte gSharedMem + 0x19000
- thumb_func_end sub_8118554
-
- thumb_func_start sub_811857C
-sub_811857C: @ 811857C
- push {r4-r6,lr}
- movs r4, 0
- ldr r6, _081185DC @ =gSharedMem + 0x1903C
- ldr r5, _081185E0 @ =gSprites
-_08118584:
- movs r3, 0x39
- subs r3, r4
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _081185E4 @ =gSpriteTemplate_83FA40C
- movs r1, 0x74
- movs r2, 0x50
- bl CreateSprite
- adds r3, r4, r6
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081185CA
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_081185CA:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _08118584
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081185DC: .4byte gSharedMem + 0x1903C
-_081185E0: .4byte gSprites
-_081185E4: .4byte gSpriteTemplate_83FA40C
- thumb_func_end sub_811857C
-
- thumb_func_start sub_81185E8
-sub_81185E8: @ 81185E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08118660 @ =gSharedMem + 0x19000
- adds r0, 0x3C
- ldrb r5, [r0]
- movs r6, 0
- ldr r7, _08118664 @ =gSprites
- movs r0, 0x1C
- adds r0, r7
- mov r10, r0
- movs r1, 0x2E
- adds r1, r7
- mov r9, r1
- mov r8, r6
-_0811860A:
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r0, r4, r7
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r3]
- mov r1, r10
- adds r2, r4, r1
- ldr r1, _08118668 @ =SpriteCallbackDummy
- str r1, [r2]
- movs r1, 0
- bl StartSpriteAnim
- movs r1, 0
- adds r2, r5, 0x1
- adds r3, r6, 0x1
-_08118632:
- lsls r0, r1, 1
- adds r0, r4
- add r0, r9
- mov r5, r8
- strh r5, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x7
- bls _08118632
- lsls r0, r2, 24
- lsrs r5, r0, 24
- lsls r0, r3, 24
- lsrs r6, r0, 24
- cmp r6, 0x5
- bls _0811860A
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08118660: .4byte gSharedMem + 0x19000
-_08118664: .4byte gSprites
-_08118668: .4byte SpriteCallbackDummy
- thumb_func_end sub_81185E8
-
- thumb_func_start sub_811866C
-sub_811866C: @ 811866C
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r0, _0811869C @ =gSharedMem + 0x19000
- ldrh r4, [r0, 0x24]
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldrh r2, [r3, 0x34]
- movs r5, 0x34
- ldrsh r0, [r3, r5]
- cmp r1, r0
- ble _081186A8
- movs r1, 0xB4
- lsls r1, 1
- adds r0, r2, r1
- subs r2, r0, r4
- strh r2, [r3, 0x3A]
- lsls r1, r2, 16
- ldr r0, _081186A0 @ =0x01670000
- cmp r1, r0
- ble _081186AC
- ldr r5, _081186A4 @ =0xfffffe98
- adds r0, r2, r5
- b _081186AA
- .align 2, 0
-_0811869C: .4byte gSharedMem + 0x19000
-_081186A0: .4byte 0x01670000
-_081186A4: .4byte 0xfffffe98
-_081186A8:
- subs r0, r2, r4
-_081186AA:
- strh r0, [r3, 0x3A]
-_081186AC:
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811866C
-
- thumb_func_start sub_81186B8
-sub_81186B8: @ 81186B8
- push {r4,lr}
- bl sub_811866C
- ldr r4, _081186E0 @ =gSharedMem + 0x19000
- lsls r0, 16
- asrs r0, 16
- bl __floatsisf
- ldr r1, _081186E4 @ =0x41f00000
- bl __divsf3
- bl __fixunssfsi
- adds r4, 0x7E
- strb r0, [r4]
- ldrb r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081186E0: .4byte gSharedMem + 0x19000
-_081186E4: .4byte 0x41f00000
- thumb_func_end sub_81186B8
-
- thumb_func_start sub_81186E8
-sub_81186E8: @ 81186E8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811866C
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1E
- bl __modsi3
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0xE
- bne _08118708
- movs r0, 0
- strh r0, [r4, 0x32]
- b _0811871E
-_08118708:
- cmp r1, 0xD
- bgt _08118710
- movs r0, 0xE
- b _08118712
-_08118710:
- movs r0, 0x2B
-_08118712:
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
-_0811871E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81186E8
-
- thumb_func_start sub_8118724
-sub_8118724: @ 8118724
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r5, _08118770 @ =gSharedMem + 0x19000
- adds r4, r5, 0
- adds r4, 0x8C
- adds r1, r5, 0
- adds r1, 0x90
- ldr r0, [r4]
- ldr r1, [r1]
- bl __addsf3
- adds r1, r0, 0
- str r1, [r4]
- movs r0, 0x88
- adds r0, r5
- mov r8, r0
- ldr r0, [r0]
- bl __addsf3
- adds r4, r0, 0
- mov r1, r8
- str r4, [r1]
- ldr r7, _08118774 @ =0x43b40000
- adds r1, r7, 0
- bl __gesf2
- cmp r0, 0
- blt _08118778
- adds r0, r4, 0
- adds r1, r7, 0
- bl __subsf3
- mov r2, r8
- str r0, [r2]
- b _08118790
- .align 2, 0
-_08118770: .4byte gSharedMem + 0x19000
-_08118774: .4byte 0x43b40000
-_08118778:
- ldr r1, _08118824 @ =0x00000000
- adds r0, r4, 0
- bl __ltsf2
- cmp r0, 0
- bge _08118790
- adds r0, r4, 0
- adds r1, r7, 0
- bl __addsf3
- mov r1, r8
- str r0, [r1]
-_08118790:
- adds r0, r5, 0
- adds r0, 0x88
- ldr r0, [r0]
- bl __fixsfsi
- strh r0, [r6, 0x34]
- adds r4, r5, 0
- adds r4, 0x98
- adds r1, r5, 0
- adds r1, 0x9C
- ldr r0, [r4]
- ldr r1, [r1]
- bl __addsf3
- adds r1, r0, 0
- str r1, [r4]
- subs r4, 0x4
- ldr r0, [r4]
- bl __addsf3
- str r0, [r4]
- bl __fixsfsi
- strh r0, [r6, 0x36]
- ldrh r0, [r6, 0x34]
- bl Sin2
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrh r0, [r6, 0x34]
- bl Cos2
- lsls r4, 16
- asrs r4, 16
- movs r2, 0x36
- ldrsh r1, [r6, r2]
- muls r1, r4
- asrs r1, 12
- strh r1, [r6, 0x24]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- movs r2, 0x36
- ldrsh r1, [r6, r2]
- muls r0, r1
- asrs r0, 12
- strh r0, [r6, 0x26]
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08118818
- ldr r0, _08118828 @ =gMPlay_SE1
- ldr r4, _0811882C @ =0x0000ffff
- ldrh r2, [r6, 0x24]
- lsls r2, 24
- asrs r2, 24
- adds r1, r4, 0
- bl m4aMPlayPanpotControl
- ldr r0, _08118830 @ =gMPlay_SE2
- ldrh r2, [r6, 0x24]
- lsls r2, 24
- asrs r2, 24
- adds r1, r4, 0
- bl m4aMPlayPanpotControl
-_08118818:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08118824: .4byte 0x00000000
-_08118828: .4byte gMPlay_SE1
-_0811882C: .4byte 0x0000ffff
-_08118830: .4byte gMPlay_SE2
- thumb_func_end sub_8118724
-
- thumb_func_start sub_8118834
-sub_8118834: @ 8118834
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r1, _0811888C @ =gSharedMem + 0x19000
- ldrh r0, [r5, 0x3A]
- ldrh r1, [r1, 0x24]
- adds r2, r0, r1
- strh r2, [r5, 0x34]
- lsls r1, r2, 16
- ldr r0, _08118890 @ =0x01670000
- cmp r1, r0
- ble _08118850
- ldr r1, _08118894 @ =0xfffffe98
- adds r0, r2, r1
- strh r0, [r5, 0x34]
-_08118850:
- ldrh r0, [r5, 0x34]
- bl Sin2
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrh r0, [r5, 0x34]
- bl Cos2
- lsls r4, 16
- asrs r4, 16
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- muls r1, r4
- asrs r1, 12
- strh r1, [r5, 0x24]
- lsls r0, 16
- asrs r0, 16
- negs r0, r0
- movs r2, 0x36
- ldrsh r1, [r5, r2]
- muls r0, r1
- ldr r1, _08118898 @ =gSpriteCoordOffsetY
- asrs r0, 12
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r5, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811888C: .4byte gSharedMem + 0x19000
-_08118890: .4byte 0x01670000
-_08118894: .4byte 0xfffffe98
-_08118898: .4byte gSpriteCoordOffsetY
- thumb_func_end sub_8118834
-
- thumb_func_start sub_811889C
-sub_811889C: @ 811889C
- push {r4-r6,lr}
- adds r5, r0, 0
- bl sub_8118724
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x36]
- adds r0, 0x84
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xD4
- bls _081188C2
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- b _081188CE
-_081188C2:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
-_081188CE:
- strb r0, [r2]
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0x1D
- ble _0811898E
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08118908
- ldr r6, _08118900 @ =gSharedMem + 0x19000
- adds r4, r6, 0
- adds r4, 0x94
- adds r0, r6, 0
- adds r0, 0xA0
- ldr r0, [r0]
- ldr r1, _08118904 @ =0x40000000
- bl __subsf3
- adds r1, r0, 0
- ldr r0, [r4]
- bl __lesf2
- cmp r0, 0
- bgt _0811898E
- b _08118926
- .align 2, 0
-_08118900: .4byte gSharedMem + 0x19000
-_08118904: .4byte 0x40000000
-_08118908:
- ldr r6, _08118994 @ =gSharedMem + 0x19000
- adds r4, r6, 0
- adds r4, 0x94
- adds r0, r6, 0
- adds r0, 0xA0
- ldr r0, [r0]
- ldr r1, _08118998 @ =0x40000000
- bl __subsf3
- adds r1, r0, 0
- ldr r0, [r4]
- bl __gesf2
- cmp r0, 0
- blt _0811898E
-_08118926:
- adds r1, r6, 0
- adds r1, 0x7D
- movs r0, 0xFF
- strb r0, [r1]
- ldrb r1, [r6, 0x3]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r6, 0x3]
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r1, [r0]
- adds r1, 0x3
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl sub_81186B8
- movs r0, 0x1E
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_811866C
- movs r1, 0x3A
- ldrsh r0, [r5, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 1
- adds r1, 0xF
- strh r1, [r5, 0x3A]
- ldr r0, _0811899C @ =sub_8118834
- str r0, [r5, 0x1C]
- movs r0, 0x47
- bl m4aSongNumStartOrChange
- adds r2, r6, 0
- adds r2, 0x9C
- adds r1, r6, 0
- adds r1, 0x98
- ldr r0, _081189A0 @ =0x00000000
- str r0, [r1]
- str r0, [r2]
- subs r1, 0xC
- ldr r0, _081189A4 @ =0xbf800000
- str r0, [r1]
-_0811898E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08118994: .4byte gSharedMem + 0x19000
-_08118998: .4byte 0x40000000
-_0811899C: .4byte sub_8118834
-_081189A0: .4byte 0x00000000
-_081189A4: .4byte 0xbf800000
- thumb_func_end sub_811889C
-
- thumb_func_start sub_81189A8
-sub_81189A8: @ 81189A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- bl sub_8118724
- movs r1, 0x34
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _081189C6
- cmp r0, 0xB4
- beq _08118A2C
- b _08118B0C
-_081189C6:
- movs r1, 0x2E
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- bne _081189D0
- b _08118B0C
-_081189D0:
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- bl __floatsisf
- mov r8, r0
- ldr r0, _08118A24 @ =gUnknown_083F8DF4
- mov r9, r0
- ldr r1, _08118A28 @ =gSharedMem + 0x19000
- mov r10, r1
- ldrb r4, [r1, 0x4]
- lsls r4, 30
- lsrs r0, r4, 25
- add r0, r9
- ldrb r0, [r0, 0x1]
- bl __floatsisf
- adds r1, r0, 0
- mov r0, r8
- bl __mulsf3
- adds r6, r0, 0
- lsrs r0, r4, 25
- add r0, r9
- ldrb r0, [r0, 0x2]
- subs r0, 0x1
- bl __floatsisf
- adds r1, r0, 0
- adds r0, r6, 0
- bl __addsf3
- adds r5, r0, 0
- lsrs r4, 25
- add r4, r9
- ldrh r0, [r4, 0xC]
- bl __floatsisf
- adds r1, r0, 0
- mov r0, r8
- bl __divsf3
- b _08118A8A
- .align 2, 0
-_08118A24: .4byte gUnknown_083F8DF4
-_08118A28: .4byte gSharedMem + 0x19000
-_08118A2C:
- movs r1, 0x2E
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _08118B0C
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- bl __floatsisf
- mov r8, r0
- ldr r0, _08118B1C @ =gUnknown_083F8DF4
- mov r9, r0
- ldr r1, _08118B20 @ =gSharedMem + 0x19000
- mov r10, r1
- ldrb r4, [r1, 0x4]
- lsls r4, 30
- lsrs r0, r4, 25
- add r0, r9
- ldrb r0, [r0, 0x1]
- bl __floatsisf
- adds r1, r0, 0
- mov r0, r8
- bl __mulsf3
- adds r6, r0, 0
- lsrs r0, r4, 25
- add r0, r9
- ldrb r0, [r0, 0x2]
- subs r0, 0x1
- bl __floatsisf
- adds r1, r0, 0
- adds r0, r6, 0
- bl __addsf3
- adds r5, r0, 0
- lsrs r4, 25
- add r4, r9
- ldrh r0, [r4, 0xC]
- bl __floatsisf
- adds r1, r0, 0
- mov r0, r8
- bl __divsf3
- bl __negsf2
-_08118A8A:
- adds r2, r0, 0
- mov r6, r10
- adds r1, r6, 0
- adds r1, 0xA0
- adds r0, r6, 0
- adds r0, 0x94
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r6, 0
- adds r0, 0x98
- str r2, [r0]
- movs r0, 0x9C
- adds r0, r6
- mov r8, r0
- adds r0, r2, 0
- adds r1, r2, 0
- bl __addsf3
- adds r1, r5, 0
- bl __divsf3
- adds r4, r0, 0
- adds r0, r5, 0
- adds r1, r5, 0
- bl __mulsf3
- adds r1, r0, 0
- ldr r0, _08118B24 @ =0x40000000
- bl __divsf3
- adds r1, r0, 0
- adds r0, r4, 0
- bl __addsf3
- bl __negsf2
- mov r1, r8
- str r0, [r1]
- adds r1, r6, 0
- adds r1, 0x8C
- ldr r0, _08118B28 @ =0x00000000
- str r0, [r1]
- adds r2, r7, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r7, 0
- adds r0, 0x2A
- movs r2, 0
- strb r2, [r0]
- adds r3, r7, 0
- adds r3, 0x3F
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r3]
- ldr r0, _08118B2C @ =sub_811889C
- str r0, [r7, 0x1C]
- strh r2, [r7, 0x32]
-_08118B0C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08118B1C: .4byte gUnknown_083F8DF4
-_08118B20: .4byte gSharedMem + 0x19000
-_08118B24: .4byte 0x40000000
-_08118B28: .4byte 0x00000000
-_08118B2C: .4byte sub_811889C
- thumb_func_end sub_81189A8
-
- thumb_func_start sub_8118B30
-sub_8118B30: @ 8118B30
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- bl __floatsisf
- adds r4, r0, 0
- ldr r1, _08118BCC @ =0x3d4ccccd
- bl __mulsf3
- adds r1, r4, 0
- bl __mulsf3
- bl __fixsfsi
- adds r1, r0, 0
- subs r1, 0x2D
- strh r1, [r5, 0x26]
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _08118BC6
- lsls r0, r1, 16
- cmp r0, 0
- blt _08118BC6
- ldr r4, _08118BD0 @ =gSharedMem + 0x19000
- adds r1, r4, 0
- adds r1, 0x7D
- movs r0, 0xFF
- strb r0, [r1]
- ldrb r1, [r4, 0x3]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r1, [r0]
- adds r1, 0x3
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl sub_81186B8
- movs r0, 0x1E
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_811866C
- movs r1, 0x3A
- ldrsh r0, [r5, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 1
- adds r1, 0xF
- strh r1, [r5, 0x3A]
- ldr r0, _08118BD4 @ =sub_8118834
- str r0, [r5, 0x1C]
- movs r0, 0x47
- bl m4aSongNumStartOrChange
- ldrb r0, [r4, 0x3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
-_08118BC6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08118BCC: .4byte 0x3d4ccccd
-_08118BD0: .4byte gSharedMem + 0x19000
-_08118BD4: .4byte sub_8118834
- thumb_func_end sub_8118B30
-
- thumb_func_start sub_8118BD8
-sub_8118BD8: @ 8118BD8
- push {r4,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x32]
- adds r1, r0, 0x1
- strh r1, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2C
- bgt _08118C1C
- ldrh r4, [r3, 0x26]
- subs r0, r4, 0x1
- strh r0, [r3, 0x26]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x2D
- bne _08118CA2
- ldr r2, _08118C14 @ =gSprites
- ldr r0, _08118C18 @ =gSharedMem + 0x19000
- adds r0, 0x73
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08118CA2
- strh r4, [r3, 0x26]
- b _08118CA2
- .align 2, 0
-_08118C14: .4byte gSprites
-_08118C18: .4byte gSharedMem + 0x19000
-_08118C1C:
- lsls r0, r1, 16
- asrs r0, 16
- movs r2, 0x3C
- ldrsh r1, [r3, r2]
- cmp r0, r1
- bge _08118C68
- ldr r2, _08118C58 @ =gSprites
- ldr r0, _08118C5C @ =gSharedMem + 0x19000
- adds r0, 0x73
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x2C
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bne _08118CA2
- adds r0, r1, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08118C60
- ldrh r0, [r3, 0x26]
- adds r0, 0x1
- strh r0, [r3, 0x26]
- b _08118CA2
- .align 2, 0
-_08118C58: .4byte gSprites
-_08118C5C: .4byte gSharedMem + 0x19000
-_08118C60:
- ldrh r0, [r3, 0x26]
- subs r0, 0x1
- strh r0, [r3, 0x26]
- b _08118CA2
-_08118C68:
- adds r2, r3, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x3F
- adds r0, r3
- mov r12, r0
- ldrb r0, [r0]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- mov r1, r12
- strb r0, [r1]
- strh r2, [r3, 0x32]
- ldr r0, _08118CA8 @ =sub_8118B30
- str r0, [r3, 0x1C]
- movs r0, 0x3D
- bl m4aSongNumStart
-_08118CA2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08118CA8: .4byte sub_8118B30
- thumb_func_end sub_8118BD8
-
- thumb_func_start sub_8118CAC
-sub_8118CAC: @ 8118CAC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8118724
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- cmp r1, 0x5A
- beq _08118CC6
- movs r0, 0x87
- lsls r0, 1
- cmp r1, r0
- beq _08118CD0
- b _08118CE0
-_08118CC6:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08118CE0
- b _08118CD8
-_08118CD0:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08118CE0
-_08118CD8:
- ldr r0, _08118CE8 @ =sub_8118BD8
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x32]
-_08118CE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08118CE8: .4byte sub_8118BD8
- thumb_func_end sub_8118CAC
-
- thumb_func_start sub_8118CEC
-sub_8118CEC: @ 8118CEC
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8118724
- ldr r0, _08118D10 @ =gSharedMem + 0x19000
- ldrb r0, [r0, 0x3]
- lsls r0, 27
- lsrs r0, 27
- cmp r0, 0
- beq _08118D04
- cmp r0, 0x1
- beq _08118D18
-_08118D04:
- adds r0, r4, 0
- bl sub_8119224
- ldr r0, _08118D14 @ =sub_81189A8
- b _08118D20
- .align 2, 0
-_08118D10: .4byte gSharedMem + 0x19000
-_08118D14: .4byte sub_81189A8
-_08118D18:
- adds r0, r4, 0
- bl sub_81193D4
- ldr r0, _08118D28 @ =sub_8118CAC
-_08118D20:
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08118D28: .4byte sub_8118CAC
- thumb_func_end sub_8118CEC
-
- thumb_func_start sub_8118D2C
-sub_8118D2C: @ 8118D2C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_8118724
- ldrh r0, [r5, 0x32]
- subs r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bne _08118D50
- ldr r4, _08118DB8 @ =gSharedMem + 0x19000
- adds r4, 0x98
- ldr r0, [r4]
- ldr r1, _08118DBC @ =0xbf800000
- bl __mulsf3
- str r0, [r4]
-_08118D50:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08118DDC
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08118DC4
- ldr r1, _08118DB8 @ =gSharedMem + 0x19000
- adds r2, r1, 0
- adds r2, 0x7D
- movs r0, 0xFF
- strb r0, [r2]
- ldrb r2, [r1, 0x3]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r1, 0x3]
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r1, [r0]
- adds r1, 0x3
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl sub_81186B8
- movs r0, 0x1E
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl sub_811866C
- movs r1, 0x3A
- ldrsh r0, [r5, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 1
- adds r1, 0xF
- strh r1, [r5, 0x3A]
- ldr r0, _08118DC0 @ =sub_8118834
- str r0, [r5, 0x1C]
- movs r0, 0x47
- bl m4aSongNumStartOrChange
- b _08118DDC
- .align 2, 0
-_08118DB8: .4byte gSharedMem + 0x19000
-_08118DBC: .4byte 0xbf800000
-_08118DC0: .4byte sub_8118834
-_08118DC4:
- adds r0, r5, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x38
- bl m4aSongNumStart
- adds r0, r5, 0
- bl sub_811952C
-_08118DDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8118D2C
-
- thumb_func_start sub_8118DE4
-sub_8118DE4: @ 8118DE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- bl sub_8118724
- movs r0, 0
- strh r0, [r7, 0x32]
- adds r0, r7, 0
- bl sub_81186B8
- ldr r1, _08118E70 @ =gUnknown_083F8D90
- ldr r6, _08118E74 @ =gSharedMem + 0x19000
- movs r0, 0x7E
- adds r0, r6
- mov r8, r0
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r6, 0x8]
- ands r0, r1
- cmp r0, 0
- bne _08118E7C
- adds r1, r6, 0
- adds r1, 0x7D
- movs r0, 0xFF
- strb r0, [r1]
- ldrb r1, [r6, 0x3]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r6, 0x3]
- adds r0, r7, 0
- adds r0, 0x2B
- ldrb r1, [r0]
- adds r1, 0x3
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl StartSpriteAnim
- adds r0, r7, 0
- bl sub_81186B8
- movs r0, 0x1E
- strh r0, [r7, 0x36]
- adds r0, r7, 0
- bl sub_811866C
- movs r1, 0x3A
- ldrsh r0, [r7, r1]
- movs r1, 0x1E
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 1
- adds r1, 0xF
- strh r1, [r7, 0x3A]
- ldr r0, _08118E78 @ =sub_8118834
- str r0, [r7, 0x1C]
- movs r0, 0x47
- bl m4aSongNumStartOrChange
- b _08118F74
- .align 2, 0
-_08118E70: .4byte gUnknown_083F8D90
-_08118E74: .4byte gSharedMem + 0x19000
-_08118E78: .4byte sub_8118834
-_08118E7C:
- movs r0, 0x38
- bl m4aSongNumStart
- bl Random
- movs r2, 0x1
- mov r9, r2
- mov r1, r9
- ands r1, r0
- mov r9, r1
- cmp r1, 0
- beq _08118EC0
- adds r1, r6, 0
- adds r1, 0x8C
- ldr r0, _08118EB8 @ =0x00000000
- str r0, [r1]
- mov r2, r8
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0xC
- bl __modsi3
- lsls r1, r0, 24
- lsrs r2, r1, 24
- adds r1, r6, 0
- adds r1, 0x7F
- strb r0, [r1]
- ldr r5, _08118EBC @ =gUnknown_083F8DF4
- b _08118EF4
- .align 2, 0
-_08118EB8: .4byte 0x00000000
-_08118EBC: .4byte gUnknown_083F8DF4
-_08118EC0:
- adds r4, r6, 0
- adds r4, 0x8C
- ldr r5, _08118F1C @ =gUnknown_083F8DF4
- ldrb r0, [r6, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- adds r0, r1, 0
- bl __addsf3
- str r0, [r4]
- mov r0, r8
- ldrb r4, [r0]
- adds r0, r4, 0
- adds r0, 0xB
- movs r1, 0xC
- bl __modsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r6, 0
- adds r0, 0x7F
- strb r4, [r0]
-_08118EF4:
- ldr r0, _08118F20 @ =gUnknown_083F8D90
- lsls r1, r2, 3
- adds r0, 0x4
- adds r1, r0
- ldr r2, _08118F24 @ =gSharedMem + 0x19000
- ldr r1, [r1]
- ldr r0, [r2, 0x8]
- ands r1, r0
- cmp r1, 0
- beq _08118F28
- movs r0, 0x1
- strh r0, [r7, 0x2E]
- ldrb r0, [r2, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r5
- ldrb r0, [r0, 0x2]
- strh r0, [r7, 0x32]
- b _08118F64
- .align 2, 0
-_08118F1C: .4byte gUnknown_083F8DF4
-_08118F20: .4byte gUnknown_083F8D90
-_08118F24: .4byte gSharedMem + 0x19000
-_08118F28:
- strh r1, [r7, 0x2E]
- ldrb r1, [r2, 0x4]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08118F40
- lsls r0, r1, 30
- lsrs r0, 25
- adds r0, r5
- ldrb r0, [r0, 0x1]
- strh r0, [r7, 0x32]
- b _08118F64
-_08118F40:
- lsls r0, r1, 30
- lsrs r0, 25
- adds r0, r5
- ldrb r0, [r0, 0x2]
- strh r0, [r7, 0x32]
- mov r1, r9
- cmp r1, 0
- beq _08118F5C
- adds r1, r2, 0
- adds r1, 0x8C
- ldr r0, _08118F58 @ =0x3f000000
- b _08118F62
- .align 2, 0
-_08118F58: .4byte 0x3f000000
-_08118F5C:
- adds r1, r2, 0
- adds r1, 0x8C
- ldr r0, _08118F80 @ =0xbfc00000
-_08118F62:
- str r0, [r1]
-_08118F64:
- adds r1, r2, 0
- adds r1, 0x98
- ldr r0, _08118F84 @ =0x3dae147b
- str r0, [r1]
- ldr r0, _08118F88 @ =sub_8118D2C
- str r0, [r7, 0x1C]
- movs r0, 0x5
- strh r0, [r7, 0x30]
-_08118F74:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08118F80: .4byte 0xbfc00000
-_08118F84: .4byte 0x3dae147b
-_08118F88: .4byte sub_8118D2C
- thumb_func_end sub_8118DE4
-
- thumb_func_start sub_8118F8C
-sub_8118F8C: @ 8118F8C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- bl sub_8118724
- ldr r5, _08119018 @ =gSharedMem + 0x19000
- movs r0, 0x8C
- adds r0, r5
- mov r8, r0
- ldr r0, [r0]
- ldr r1, _0811901C @ =0x3f000000
- bl __gtsf2
- cmp r0, 0
- bgt _0811906E
- adds r0, r6, 0
- bl sub_81186B8
- adds r0, r6, 0
- bl sub_81186E8
- lsls r0, 16
- cmp r0, 0
- bne _08119030
- adds r1, r5, 0
- adds r1, 0x90
- ldr r0, _08119020 @ =0x00000000
- str r0, [r1]
- ldr r1, _08119024 @ =gUnknown_083F8DF4
- mov r9, r1
- ldrb r0, [r5, 0x4]
- lsls r7, r0, 30
- lsrs r0, r7, 25
- add r0, r9
- movs r4, 0x3
- ldrsb r4, [r0, r4]
- adds r0, r4, 0
- bl __floatsisf
- adds r5, r0, 0
- cmp r4, 0
- bge _08118FEC
- ldr r1, _08119028 @ =0x43800000
- bl __addsf3
- adds r5, r0, 0
-_08118FEC:
- lsrs r0, r7, 25
- add r0, r9
- ldrb r0, [r0, 0x4]
- adds r0, 0x1
- bl __floatsisf
- adds r1, r0, 0
- adds r0, r5, 0
- bl __divsf3
- adds r1, r0, 0
- mov r2, r8
- ldr r0, [r2]
- bl __subsf3
- mov r1, r8
- str r0, [r1]
- movs r0, 0x4
- strh r0, [r6, 0x30]
- ldr r0, _0811902C @ =sub_8118DE4
- str r0, [r6, 0x1C]
- b _0811906E
- .align 2, 0
-_08119018: .4byte gSharedMem + 0x19000
-_0811901C: .4byte 0x3f000000
-_08119020: .4byte 0x00000000
-_08119024: .4byte gUnknown_083F8DF4
-_08119028: .4byte 0x43800000
-_0811902C: .4byte sub_8118DE4
-_08119030:
- adds r6, r5, 0
- adds r6, 0x90
- ldr r0, [r6]
- ldr r4, _0811907C @ =0x00000000
- adds r1, r4, 0
- bl __nesf2
- cmp r0, 0
- beq _0811906E
- mov r2, r8
- ldr r0, [r2]
- adds r1, r4, 0
- bl __ltsf2
- cmp r0, 0
- bge _0811906E
- str r4, [r6]
- mov r0, r8
- str r4, [r0]
- adds r4, r5, 0
- adds r4, 0x98
- ldr r0, [r4]
- bl __extendsfdf2
- ldr r2, _08119080 @ =0x3ff33333
- ldr r3, _08119084 @ =0x33333333
- bl __divdf3
- bl __truncdfsf2
- str r0, [r4]
-_0811906E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811907C: .4byte 0x00000000
-_08119080: .4byte 0x3ff33333
-_08119084: .4byte 0x33333333
- thumb_func_end sub_8118F8C
-
- thumb_func_start sub_8119088
-sub_8119088: @ 8119088
- push {r4-r7,lr}
- adds r6, r0, 0
- bl sub_8118724
- ldr r5, _08119120 @ =gSharedMem + 0x19000
- adds r0, r5, 0
- adds r0, 0x94
- ldr r0, [r0]
- ldr r1, _08119124 @ =0x42200000
- bl __gtsf2
- cmp r0, 0
- bgt _0811911A
- adds r7, r5, 0
- adds r7, 0x98
- adds r0, r5, 0
- adds r0, 0x86
- movs r1, 0
- ldrsh r4, [r0, r1]
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _081190C2
- ldr r1, _08119128 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081190C2:
- ldr r0, _0811912C @ =0x40800000
- adds r1, r2, 0
- bl __divsf3
- bl __negsf2
- str r0, [r7]
- adds r7, r5, 0
- adds r7, 0x90
- adds r5, 0x8C
- adds r0, r4, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r4, 0
- bge _081190EA
- ldr r1, _08119128 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081190EA:
- ldr r0, [r5]
- adds r1, r2, 0
- bl __divsf3
- bl __negsf2
- str r0, [r7]
- adds r1, r6, 0
- adds r1, 0x2A
- movs r0, 0x2
- strb r0, [r1]
- adds r2, r6, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x3
- strh r0, [r6, 0x30]
- ldr r0, _08119130 @ =sub_8118F8C
- str r0, [r6, 0x1C]
-_0811911A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119120: .4byte gSharedMem + 0x19000
-_08119124: .4byte 0x42200000
-_08119128: .4byte 0x47800000
-_0811912C: .4byte 0x40800000
-_08119130: .4byte sub_8118F8C
- thumb_func_end sub_8119088
-
- thumb_func_start sub_8119134
-sub_8119134: @ 8119134
- push {r4-r7,lr}
- adds r6, r0, 0
- bl sub_8118724
- ldr r4, _081191DC @ =gSharedMem + 0x19000
- adds r0, r4, 0
- adds r0, 0x94
- ldr r0, [r0]
- ldr r1, _081191E0 @ =0x42700000
- bl __gtsf2
- cmp r0, 0
- bgt _081191D4
- movs r0, 0x5D
- bl m4aSongNumStartOrChange
- adds r7, r4, 0
- adds r7, 0x98
- adds r0, r4, 0
- adds r0, 0x84
- movs r1, 0
- ldrsh r5, [r0, r1]
- adds r0, r5, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r5, 0
- bge _08119174
- ldr r1, _081191E4 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_08119174:
- ldr r0, _081191E8 @ =0x41a00000
- adds r1, r2, 0
- bl __divsf3
- bl __negsf2
- str r0, [r7]
- adds r7, r4, 0
- adds r7, 0x90
- adds r0, r4, 0
- adds r0, 0x8C
- ldr r1, [r0]
- ldr r0, _081191EC @ =0x3f800000
- bl __subsf3
- adds r4, r0, 0
- adds r0, r5, 0
- bl __floatsisf
- adds r2, r0, 0
- cmp r5, 0
- bge _081191A8
- ldr r1, _081191E4 @ =0x47800000
- bl __addsf3
- adds r2, r0, 0
-_081191A8:
- adds r0, r4, 0
- adds r1, r2, 0
- bl __divsf3
- str r0, [r7]
- adds r1, r6, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- adds r2, r6, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x2
- strh r0, [r6, 0x30]
- ldr r0, _081191F0 @ =sub_8119088
- str r0, [r6, 0x1C]
-_081191D4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081191DC: .4byte gSharedMem + 0x19000
-_081191E0: .4byte 0x42700000
-_081191E4: .4byte 0x47800000
-_081191E8: .4byte 0x41a00000
-_081191EC: .4byte 0x3f800000
-_081191F0: .4byte sub_8119088
- thumb_func_end sub_8119134
-
- thumb_func_start sub_81191F4
-sub_81191F4: @ 81191F4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- movs r0, 0x1
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- adds r0, r4, 0
- bl sub_8118724
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08119220 @ =sub_8119134
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08119220: .4byte sub_8119134
- thumb_func_end sub_81191F4
-
- thumb_func_start sub_8119224
-sub_8119224: @ 8119224
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r7, r0, 0
- ldr r1, _081193B8 @ =gUnknown_083FA60E
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- ldrh r0, [r7, 0x3C]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r5, _081193BC @ =gSharedMem + 0x19000
- ldr r0, _081193C0 @ =gSpriteTemplate_83FA50C
- movs r2, 0xC
- negs r2, r2
- movs r1, 0x24
- movs r3, 0x32
- bl CreateSprite
- adds r1, r5, 0
- adds r1, 0x73
- strb r0, [r1]
- ldr r4, _081193C4 @ =gSpriteTemplate_83FA5C0
- movs r0, 0x2E
- ldrsh r2, [r7, r0]
- lsls r2, 2
- mov r1, sp
- adds r0, r1, r2
- movs r3, 0
- ldrsh r1, [r0, r3]
- mov r0, sp
- adds r0, 0x2
- adds r0, r2
- movs r3, 0
- ldrsh r2, [r0, r3]
- adds r0, r4, 0
- movs r3, 0x3B
- bl CreateSprite
- adds r1, r5, 0
- adds r1, 0x74
- strb r0, [r1]
- adds r4, 0x18
- adds r0, r4, 0
- movs r1, 0x24
- movs r2, 0x8C
- movs r3, 0x33
- bl CreateSprite
- adds r1, r5, 0
- adds r1, 0x75
- strb r0, [r1]
- ldr r3, _081193C8 @ =gSprites
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x1]
- movs r6, 0
- adds r4, r3, 0
- mov r12, r5
- ldr r0, _081193CC @ =gUnknown_083F8DF4
- mov r8, r0
- mov r10, r12
-_081192BE:
- mov r1, r12
- adds r3, r1, r6
- adds r3, 0x73
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r12
- adds r1, 0x73
- ldrb r1, [r1]
- strh r1, [r0, 0x36]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r5, r12
- adds r5, 0x74
- ldrb r1, [r5]
- strh r1, [r0, 0x38]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r12
- adds r1, 0x75
- ldrb r1, [r1]
- strh r1, [r0, 0x3A]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r9
- strh r1, [r0, 0x32]
- ldrb r0, [r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- movs r0, 0x3C
- ldrsh r3, [r7, r0]
- mov r0, r12
- ldrb r1, [r0, 0x4]
- lsls r1, 30
- lsrs r0, r1, 25
- add r0, r8
- ldrb r0, [r0, 0x1]
- muls r3, r0
- lsrs r1, 25
- add r1, r8
- ldrb r0, [r1, 0x2]
- ldr r1, _081193D0 @ =0x0000ffff
- adds r0, r1
- adds r3, r0
- strh r3, [r2, 0x34]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _081193C8 @ =gSprites
- cmp r6, 0x2
- bls _081192BE
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- mov r3, r10
- str r7, [r3, 0x38]
- 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
-_081193B8: .4byte gUnknown_083FA60E
-_081193BC: .4byte gSharedMem + 0x19000
-_081193C0: .4byte gSpriteTemplate_83FA50C
-_081193C4: .4byte gSpriteTemplate_83FA5C0
-_081193C8: .4byte gSprites
-_081193CC: .4byte gUnknown_083F8DF4
-_081193D0: .4byte 0x0000ffff
- thumb_func_end sub_8119224
-
- thumb_func_start sub_81193D4
-sub_81193D4: @ 81193D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r7, r0, 0
- movs r0, 0
- mov r8, r0
- ldr r1, _08119514 @ =gUnknown_083FA616
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- ldrh r0, [r7, 0x3C]
- subs r0, 0x2
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldr r0, _08119518 @ =gSpriteTemplate_83FA524
- movs r1, 0x2E
- ldrsh r2, [r7, r1]
- lsls r2, 2
- mov r3, sp
- adds r1, r3, r2
- movs r3, 0
- ldrsh r1, [r1, r3]
- mov r4, sp
- adds r4, 0x2
- adds r2, r4, r2
- movs r3, 0
- ldrsh r2, [r2, r3]
- movs r3, 0x32
- bl CreateSprite
- ldr r6, _0811951C @ =gSharedMem + 0x19000
- adds r1, r6, 0
- adds r1, 0x73
- strb r0, [r1]
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _08119520 @ =gSprites
- adds r0, r5
- ldrh r1, [r7, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, _08119524 @ =gSpriteTemplate_83FA5F0
- movs r1, 0x2E
- ldrsh r2, [r7, r1]
- lsls r2, 2
- mov r3, sp
- adds r1, r3, r2
- movs r3, 0
- ldrsh r1, [r1, r3]
- adds r4, r2
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0x33
- bl CreateSprite
- adds r4, r6, 0
- adds r4, 0x74
- strb r0, [r4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- mov r0, r9
- lsls r2, r0, 16
- asrs r2, 16
- ldr r3, _08119528 @ =gUnknown_083F8DF4
- ldrb r1, [r6, 0x4]
- lsls r1, 30
- lsrs r0, r1, 25
- adds r0, r3
- ldrb r0, [r0, 0x1]
- muls r2, r0
- lsrs r1, 25
- adds r1, r3
- ldrh r0, [r1, 0x10]
- adds r0, 0x2D
- adds r2, r0
- strh r2, [r7, 0x3C]
- adds r3, r6, 0
-_081194A2:
- mov r1, r8
- adds r2, r6, r1
- adds r2, 0x73
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0x73
- ldrb r1, [r1]
- strh r1, [r0, 0x36]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r4]
- strh r1, [r0, 0x38]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r4]
- strh r1, [r0, 0x3A]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r9
- strh r1, [r0, 0x32]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrh r0, [r7, 0x3C]
- subs r0, 0x2D
- strh r0, [r1, 0x34]
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x1
- bls _081194A2
- str r7, [r3, 0x38]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119514: .4byte gUnknown_083FA616
-_08119518: .4byte gSpriteTemplate_83FA524
-_0811951C: .4byte gSharedMem + 0x19000
-_08119520: .4byte gSprites
-_08119524: .4byte gSpriteTemplate_83FA5F0
-_08119528: .4byte gUnknown_083F8DF4
- thumb_func_end sub_81193D4
-
- thumb_func_start sub_811952C
-sub_811952C: @ 811952C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r8, r0
- movs r0, 0
- mov r10, r0
- movs r1, 0x5
- mov r9, r1
- movs r2, 0
- str r2, [sp, 0xC]
- mov r0, sp
- movs r1, 0
- movs r2, 0xA
- bl memset
- bl Random
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x10]
- ldr r7, _08119610 @ =gSharedMem + 0x19000
- adds r0, r7, 0
- adds r0, 0x7D
- movs r6, 0x1
- strb r6, [r0]
- ldrb r4, [r7, 0x3]
- movs r0, 0x20
- orrs r4, r0
- movs r0, 0x41
- negs r0, r0
- ands r4, r0
- strb r4, [r7, 0x3]
- adds r1, r7, 0
- adds r1, 0x7E
- movs r0, 0xFF
- strb r0, [r1]
- adds r5, r7, 0
- adds r5, 0x88
- mov r3, r8
- movs r1, 0x34
- ldrsh r0, [r3, r1]
- bl __floatsisf
- str r0, [r5]
- adds r1, r7, 0
- adds r1, 0x98
- ldr r0, _08119614 @ =0x00000000
- str r0, [r1]
- adds r3, r7, 0
- adds r3, 0x8C
- ldr r2, _08119618 @ =gUnknown_083F8DF4
- ldrb r0, [r7, 0x4]
- lsls r0, 30
- lsrs r1, r0, 25
- adds r2, 0x1C
- adds r1, r2
- ldr r1, [r1]
- str r1, [r3]
- lsrs r0, 30
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 1
- adds r1, 0x21
- lsls r4, 27
- lsrs r4, 27
- subs r6, r4
- lsls r0, r6, 4
- subs r0, r6
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- mov r3, r8
- movs r0, 0x34
- ldrsh r2, [r3, r0]
-_081195C8:
- cmp r1, r2
- bge _081195D4
- adds r0, r1, 0
- adds r0, 0x5A
- cmp r2, r0
- ble _08119638
-_081195D4:
- cmp r5, 0x3
- beq _0811961C
- adds r0, r1, 0
- adds r0, 0x5A
- lsls r0, 16
- lsrs r1, r0, 16
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081195C8
-_081195EA:
- ldr r0, _08119610 @ =gSharedMem + 0x19000
- ldrb r1, [r0, 0x3]
- movs r0, 0x1F
- ands r0, r1
- cmp r0, 0
- beq _08119664
- mov r1, r8
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08119658
- movs r0, 0x98
- lsls r0, 1
- movs r1, 0x3F
- negs r1, r1
- bl PlayCry1
- b _08119670
- .align 2, 0
-_08119610: .4byte gSharedMem + 0x19000
-_08119614: .4byte 0x00000000
-_08119618: .4byte gUnknown_083F8DF4
-_0811961C:
- movs r0, 0x1
- mov r3, r8
- strh r0, [r3, 0x2E]
- ldr r2, _08119634 @ =gSharedMem + 0x19000
- ldrb r1, [r2, 0x3]
- subs r0, 0x21
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x3]
- b _081195EA
- .align 2, 0
-_08119634: .4byte gSharedMem + 0x19000
-_08119638:
- lsrs r0, r5, 1
- mov r1, r8
- strh r0, [r1, 0x2E]
- ldr r3, _08119654 @ =gSharedMem + 0x19000
- movs r1, 0x1
- ands r1, r5
- ldrb r2, [r3, 0x3]
- movs r0, 0x20
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x3]
- b _081195EA
- .align 2, 0
-_08119654: .4byte gSharedMem + 0x19000
-_08119658:
- movs r0, 0x98
- lsls r0, 1
- movs r1, 0x3F
- bl PlayCry1
- b _08119670
-_08119664:
- movs r0, 0x99
- lsls r0, 1
- movs r1, 0x3F
- negs r1, r1
- bl PlayCry1
-_08119670:
- movs r5, 0x2
- ldr r4, _081196A0 @ =gSharedMem + 0x19000
- adds r0, r4, 0
- adds r0, 0x7F
- ldrb r0, [r0]
- adds r0, 0x2
- movs r1, 0xC
- bl __modsi3
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r1, [r4, 0x3]
- movs r0, 0x1F
- ands r0, r1
- cmp r0, 0x1
- bne _081196A4
- ldrb r1, [r4, 0x4]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081196A4
- mov r0, r9
- adds r0, 0x6
- b _081196A8
- .align 2, 0
-_081196A0: .4byte gSharedMem + 0x19000
-_081196A4:
- mov r2, r9
- adds r0, r2, r5
-_081196A8:
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r5, r9
- bcs _0811970E
- ldr r6, _08119734 @ =gSharedMem + 0x19000
- ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC
-_081196B6:
- lsls r0, r3, 3
- ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4
- adds r0, r1
- ldr r1, [r6, 0x8]
- ldr r2, [r0]
- ands r1, r2
- cmp r1, 0
- bne _081196F8
- mov r0, r10
- adds r1, r0, 0x1
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- add r0, sp
- strb r5, [r0]
- ldr r0, [sp, 0xC]
- cmp r0, 0
- bne _081196F8
- ldrb r0, [r6, 0x1A]
- lsls r0, 28
- lsrs r0, 28
- ldr r1, _08119740 @ =gSharedMem + 0x1901B
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _081196F8
- str r5, [sp, 0xC]
-_081196F8:
- adds r0, r3, 0x1
- movs r1, 0xC
- bl __modsi3
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r9
- bcc _081196B6
-_0811970E:
- ldrb r0, [r4, 0x3]
- lsls r0, 27
- lsrs r0, 27
- adds r0, 0x1
- ldrb r1, [r4, 0x2]
- ands r0, r1
- cmp r0, 0
- beq _08119756
- ldr r2, [sp, 0xC]
- cmp r2, 0
- beq _08119744
- movs r0, 0xFF
- ldr r3, [sp, 0x10]
- ands r0, r3
- cmp r0, 0xBF
- bhi _08119744
- mov r0, r8
- strh r2, [r0, 0x3C]
- b _08119766
- .align 2, 0
-_08119734: .4byte gSharedMem + 0x19000
-_08119738: .4byte gUnknown_083F8C00 + 0xC
-_0811973C: .4byte gUnknown_083F8D90 + 0x4
-_08119740: .4byte gSharedMem + 0x1901B
-_08119744:
- ldr r0, [sp, 0x10]
- mov r1, r10
- bl __modsi3
- add r0, sp
- ldrb r0, [r0]
- mov r1, r8
- strh r0, [r1, 0x3C]
- b _08119766
-_08119756:
- ldr r0, [sp, 0x10]
- mov r1, r10
- bl __modsi3
- add r0, sp
- ldrb r0, [r0]
- mov r2, r8
- strh r0, [r2, 0x3C]
-_08119766:
- ldr r3, _0811977C @ =sub_8118CEC
- mov r0, r8
- str r3, [r0, 0x1C]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811977C: .4byte sub_8118CEC
- thumb_func_end sub_811952C
-
- thumb_func_start sub_8119780
-sub_8119780: @ 8119780
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0x1
- strh r1, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _081197CA
- ldrh r0, [r2, 0x20]
- subs r0, 0x2
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bge _081197CA
- ldr r4, _081197D0 @ =gSharedMem + 0x19000
- ldrb r1, [r4, 0x3]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _081197BA
- movs r0, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
-_081197BA:
- adds r0, r2, 0
- bl DestroySprite
- movs r0, 0
- strb r0, [r4, 0x1]
- ldr r0, _081197D4 @ =gUnknown_083FA61E
- ldrh r0, [r0]
- strh r0, [r4, 0x34]
-_081197CA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081197D0: .4byte gSharedMem + 0x19000
-_081197D4: .4byte gUnknown_083FA61E
- thumb_func_end sub_8119780
-
- thumb_func_start sub_81197D8
-sub_81197D8: @ 81197D8
- push {r4,lr}
- sub sp, 0x18
- adds r4, r0, 0
- ldr r1, _08119854 @ =gUnknown_083FA632
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- ldrh r0, [r4, 0x30]
- adds r2, r0, 0x1
- strh r2, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bge _0811985C
- movs r0, 0x1
- ands r2, r0
- cmp r2, 0
- beq _08119836
- ldr r3, _08119858 @ =gSpriteCoordOffsetY
- movs r0, 0x3C
- ldrsh r2, [r4, r0]
- lsls r2, 1
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r2, r0
- mov r1, sp
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r3]
- movs r3, 0x3C
- ldrsh r2, [r4, r3]
- adds r1, r2, 0x1
- adds r0, r1, 0
- cmp r1, 0
- bge _0811982E
- adds r0, r2, 0x4
-_0811982E:
- asrs r0, 2
- lsls r0, 2
- subs r0, r1, r0
- strh r0, [r4, 0x3C]
-_08119836:
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08119884
- .align 2, 0
-_08119854: .4byte gUnknown_083FA632
-_08119858: .4byte gSpriteCoordOffsetY
-_0811985C:
- ldr r1, _0811988C @ =gSpriteCoordOffsetY
- movs r0, 0
- strh r0, [r1]
- ldr r2, _08119890 @ =gSprites
- ldr r0, _08119894 @ =gSharedMem + 0x19000
- adds r0, 0x73
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2C
- ldrb r2, [r0]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- adds r0, r4, 0
- bl DestroySprite
-_08119884:
- add sp, 0x18
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811988C: .4byte gSpriteCoordOffsetY
-_08119890: .4byte gSprites
-_08119894: .4byte gSharedMem + 0x19000
- thumb_func_end sub_81197D8
-
- thumb_func_start sub_8119898
-sub_8119898: @ 8119898
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- bl __floatsisf
- adds r4, r0, 0
- ldr r1, _08119948 @ =0x3d1fbe77
- bl __mulsf3
- adds r1, r4, 0
- bl __mulsf3
- bl __fixsfsi
- strh r0, [r5, 0x26]
- ldr r3, _0811994C @ =gSharedMem + 0x19000
- ldr r2, _08119950 @ =gUnknown_083FA61E
- ldrb r0, [r3, 0x1]
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r3, 0x34]
- ldrb r0, [r3, 0x1]
- cmp r0, 0x12
- bhi _081198DE
- adds r0, 0x1
- strb r0, [r3, 0x1]
-_081198DE:
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0x3C
- ble _08119940
- movs r0, 0
- strh r0, [r5, 0x30]
- ldr r3, _08119954 @ =sub_8119780
- str r3, [r5, 0x1C]
- ldr r2, _08119958 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r2, 0
- adds r4, 0x1C
- adds r0, r4
- str r3, [r0]
- movs r0, 0x3A
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0811995C @ =0x0000fffe
- strh r1, [r0, 0x30]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0x38
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08119960 @ =sub_81197D8
- str r1, [r0]
- movs r0, 0xD6
- bl m4aSongNumStart
-_08119940:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08119948: .4byte 0x3d1fbe77
-_0811994C: .4byte gSharedMem + 0x19000
-_08119950: .4byte gUnknown_083FA61E
-_08119954: .4byte sub_8119780
-_08119958: .4byte gSprites
-_0811995C: .4byte 0x0000fffe
-_08119960: .4byte sub_81197D8
- thumb_func_end sub_8119898
-
- thumb_func_start sub_8119964
-sub_8119964: @ 8119964
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081199E4
- ldr r3, _08119990 @ =gSharedMem + 0x19000
- ldr r1, [r3, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08119998
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _08119994 @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0x8]
- b _081199AA
- .align 2, 0
-_08119990: .4byte gSharedMem + 0x19000
-_08119994: .4byte gUnknown_083F8DF4
-_08119998:
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _081199D8 @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0x8]
- adds r0, 0xB4
-_081199AA:
- cmp r2, r0
- bne _08119A78
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r0, 0x2B
- bl m4aSongNumStart
- ldr r1, _081199DC @ =gSharedMem + 0x19000
- movs r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, _081199E0 @ =gUnknown_083FA61E
- ldrh r0, [r0]
- strh r0, [r1, 0x34]
- b _08119A78
- .align 2, 0
-_081199D8: .4byte gUnknown_083F8DF4
-_081199DC: .4byte gSharedMem + 0x19000
-_081199E0: .4byte gUnknown_083FA61E
-_081199E4:
- ldr r3, _08119A20 @ =gSharedMem + 0x19000
- ldr r2, _08119A24 @ =gUnknown_083FA61E
- ldrb r0, [r3, 0x1]
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r3, 0x34]
- ldrb r0, [r3, 0x1]
- cmp r0, 0x12
- bhi _08119A04
- adds r0, 0x1
- strb r0, [r3, 0x1]
-_08119A04:
- ldr r1, [r3, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08119A2C
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _08119A28 @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0xA]
- b _08119A3E
- .align 2, 0
-_08119A20: .4byte gSharedMem + 0x19000
-_08119A24: .4byte gUnknown_083FA61E
-_08119A28: .4byte gUnknown_083F8DF4
-_08119A2C:
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _08119A80 @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0xA]
- adds r0, 0xB4
-_08119A3E:
- cmp r2, r0
- bne _08119A78
- ldr r2, _08119A84 @ =gSprites
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08119A88 @ =sub_8119898
- str r1, [r0]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _08119A8C @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x3C]
-_08119A78:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08119A80: .4byte gUnknown_083F8DF4
-_08119A84: .4byte gSprites
-_08119A88: .4byte sub_8119898
-_08119A8C: .4byte SpriteCallbackDummy
- thumb_func_end sub_8119964
-
- thumb_func_start sub_8119A90
-sub_8119A90: @ 8119A90
- adds r0, 0x3E
- ldrb r3, [r0]
- lsls r1, r3, 29
- lsrs r1, 31
- movs r2, 0x1
- eors r2, r1
- lsls r2, 2
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0]
- bx lr
- thumb_func_end sub_8119A90
-
- thumb_func_start sub_8119AAC
-sub_8119AAC: @ 8119AAC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x22]
- movs r0, 0x22
- ldrsh r1, [r4, r0]
- movs r0, 0x10
- negs r0, r0
- cmp r1, r0
- ble _08119AC4
- subs r0, r2, 0x1
- strh r0, [r4, 0x22]
- b _08119B12
-_08119AC4:
- ldr r0, _08119B18 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x5E
- bl m4aSongNumStop
- adds r0, r4, 0
- bl DestroySprite
- ldr r5, _08119B1C @ =gSprites
- ldr r4, _08119B20 @ =gSharedMem + 0x19000
- adds r4, 0x74
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_08119B12:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08119B18: .4byte SpriteCallbackDummy
-_08119B1C: .4byte gSprites
-_08119B20: .4byte gSharedMem + 0x19000
- thumb_func_end sub_8119AAC
-
- thumb_func_start sub_8119B24
-sub_8119B24: @ 8119B24
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- blt _08119B4E
- subs r1, 0x1
- strh r1, [r4, 0x30]
- ldrh r0, [r4, 0x22]
- subs r0, 0x1
- strh r0, [r4, 0x22]
- lsls r1, 16
- cmp r1, 0
- bne _08119BB8
- adds r0, r4, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08119BB8
- b _08119B74
-_08119B4E:
- ldrh r1, [r4, 0x34]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r0, 0
- blt _08119B84
- subs r0, r1, 0x1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- cmp r0, 0
- bne _08119BB8
- adds r0, r4, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08119B7C
-_08119B74:
- ldrh r0, [r4, 0x26]
- adds r0, 0x1
- strh r0, [r4, 0x26]
- b _08119BB8
-_08119B7C:
- ldrh r0, [r4, 0x26]
- subs r0, 0x1
- strh r0, [r4, 0x26]
- b _08119BB8
-_08119B84:
- movs r0, 0x2B
- bl m4aSongNumStart
- ldr r0, _08119BC0 @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- ldrh r1, [r0, 0x2E]
- adds r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _08119BC4 @ =sub_8119AAC
- str r0, [r4, 0x1C]
- ldr r2, _08119BC8 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x2C
- ldrb r2, [r0]
- movs r1, 0x7F
- ands r1, r2
- strb r1, [r0]
-_08119BB8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08119BC0: .4byte gSharedMem + 0x19000
-_08119BC4: .4byte sub_8119AAC
-_08119BC8: .4byte gSprites
- thumb_func_end sub_8119B24
-
- thumb_func_start sub_8119BCC
-sub_8119BCC: @ 8119BCC
- push {r4,r5,lr}
- sub sp, 0x14
- adds r4, r0, 0
- ldr r1, _08119C44 @ =gUnknown_083FA64A
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- add r5, sp, 0x4
- ldr r1, _08119C48 @ =gUnknown_083FA64C
- adds r0, r5, 0
- movs r2, 0x10
- bl memcpy
- ldrh r0, [r4, 0x30]
- subs r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _08119C5C
- ldr r0, _08119C4C @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- add r0, sp
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08119CF6
- movs r1, 0x20
- ldrsh r0, [r4, r1]
- movs r4, 0x74
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- negs r4, r4
- ldr r0, _08119C50 @ =gMPlay_SE1
- ldr r5, _08119C54 @ =0x0000ffff
- lsls r4, 24
- asrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- ldr r0, _08119C58 @ =gMPlay_SE2
- adds r1, r5, 0
- adds r2, r4, 0
- bl m4aMPlayPanpotControl
- b _08119CF6
- .align 2, 0
-_08119C44: .4byte gUnknown_083FA64A
-_08119C48: .4byte gUnknown_083FA64C
-_08119C4C: .4byte gSharedMem + 0x19000
-_08119C50: .4byte gMPlay_SE1
-_08119C54: .4byte 0x0000ffff
-_08119C58: .4byte gMPlay_SE2
-_08119C5C:
- lsls r0, r1, 16
- cmp r0, 0
- blt _08119CAC
- ldr r0, _08119CA8 @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r0, r2]
- add r0, sp
- movs r2, 0
- ldrsb r2, [r0, r2]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x7
- subs r0, r1, r0
- lsls r0, 1
- adds r0, r5, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- muls r0, r2
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- subs r1, r0
- lsls r1, 1
- mov r0, sp
- adds r0, 0x5
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- b _08119CF6
- .align 2, 0
-_08119CA8: .4byte gSharedMem + 0x19000
-_08119CAC:
- movs r0, 0x5E
- bl m4aSongNumStartOrChange
- ldr r0, _08119CCC @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bne _08119CD0
- movs r0, 0x98
- lsls r0, 1
- movs r1, 0x3F
- bl PlayCry1
- b _08119CDC
- .align 2, 0
-_08119CCC: .4byte gSharedMem + 0x19000
-_08119CD0:
- movs r0, 0x98
- lsls r0, 1
- movs r1, 0x3F
- negs r1, r1
- bl PlayCry1
-_08119CDC:
- ldr r0, _08119D00 @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- ldrh r1, [r0, 0x2E]
- adds r1, 0x2
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r0, 0x2D
- strh r0, [r4, 0x30]
- ldr r0, _08119D04 @ =sub_8119B24
- str r0, [r4, 0x1C]
-_08119CF6:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08119D00: .4byte gSharedMem + 0x19000
-_08119D04: .4byte sub_8119B24
- thumb_func_end sub_8119BCC
-
- thumb_func_start sub_8119D08
-sub_8119D08: @ 8119D08
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _08119D64 @ =gUnknown_083FA64A
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- ldrh r0, [r4, 0x30]
- subs r1, r0, 0x1
- strh r1, [r4, 0x30]
- lsls r0, 16
- cmp r0, 0
- blt _08119D70
- ldr r0, _08119D68 @ =gSharedMem + 0x19000
- ldr r0, [r0, 0x38]
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- add r0, sp
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldr r1, _08119D6C @ =gSprites
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r0, r3, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- b _08119D74
- .align 2, 0
-_08119D64: .4byte gUnknown_083FA64A
-_08119D68: .4byte gSharedMem + 0x19000
-_08119D6C: .4byte gSprites
-_08119D70:
- ldr r0, _08119D7C @ =sub_8119A90
- str r0, [r4, 0x1C]
-_08119D74:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08119D7C: .4byte sub_8119A90
- thumb_func_end sub_8119D08
-
- thumb_func_start sub_8119D80
-sub_8119D80: @ 8119D80
- push {r4,lr}
- adds r4, r0, 0
- ldr r3, _08119DB8 @ =gSharedMem + 0x19000
- ldr r1, [r3, 0x38]
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08119DC4
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _08119DBC @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0x12]
- adds r0, 0x5A
- cmp r2, r0
- bne _08119E26
- ldr r2, _08119DC0 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x34
- b _08119DEE
- .align 2, 0
-_08119DB8: .4byte gSharedMem + 0x19000
-_08119DBC: .4byte gUnknown_083F8DF4
-_08119DC0: .4byte gSprites
-_08119DC4:
- movs r0, 0x34
- ldrsh r2, [r1, r0]
- ldr r1, _08119E2C @ =gUnknown_083F8DF4
- ldrb r0, [r3, 0x4]
- lsls r0, 30
- lsrs r0, 25
- adds r0, r1
- ldrh r0, [r0, 0x14]
- movs r1, 0x87
- lsls r1, 1
- adds r0, r1
- cmp r2, r0
- bne _08119E26
- ldr r2, _08119E30 @ =gSprites
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x2E
-_08119DEE:
- strh r3, [r0, 0x30]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x30]
- movs r0, 0x3A
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _08119E34 @ =sub_8119D08
- str r1, [r0]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08119E38 @ =sub_8119BCC
- str r1, [r0]
- movs r0, 0x2B
- bl m4aSongNumStart
-_08119E26:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08119E2C: .4byte gUnknown_083F8DF4
-_08119E30: .4byte gSprites
-_08119E34: .4byte sub_8119D08
-_08119E38: .4byte sub_8119BCC
- thumb_func_end sub_8119D80
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/roulette_util.s b/asm/roulette_util.s
deleted file mode 100644
index 5ddaa3a6e..000000000
--- a/asm/roulette_util.s
+++ /dev/null
@@ -1,779 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8124918
-sub_8124918: @ 8124918
- push {lr}
- movs r1, 0
- strb r1, [r0]
- strh r1, [r0, 0x2]
- adds r0, 0x4
- movs r2, 0xC0
- bl memset
- pop {r0}
- bx r0
- thumb_func_end sub_8124918
-
- thumb_func_start sub_812492C
-sub_812492C: @ 812492C
- push {r4-r7,lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r6, 0xF
- bhi _08124948
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r5, r3, r0
- ldrb r7, [r5, 0x4]
- lsrs r0, r7, 7
- cmp r0, 0
- beq _0812494C
-_08124948:
- movs r0, 0xFF
- b _081249AA
-_0812494C:
- ldrh r0, [r2]
- movs r4, 0
- strh r0, [r5, 0x8]
- ldrh r0, [r2, 0x2]
- strh r0, [r5, 0xA]
- ldrb r0, [r2, 0x4]
- strb r0, [r5, 0xC]
- ldrb r0, [r2, 0x5]
- strb r0, [r5, 0xD]
- ldrb r0, [r2, 0x6]
- strb r0, [r5, 0xE]
- ldrb r3, [r2, 0x7]
- lsls r0, r3, 27
- lsrs r0, 27
- ldrb r2, [r5, 0xF]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- movs r0, 0x60
- ands r0, r3
- movs r2, 0x61
- negs r2, r2
- ands r1, r2
- orrs r1, r0
- lsls r3, 24
- asrs r3, 31
- lsls r3, 7
- movs r0, 0x7F
- ands r1, r0
- orrs r1, r3
- strb r1, [r5, 0xF]
- subs r0, 0xFF
- ands r0, r7
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r5, 0x4]
- strb r4, [r5, 0x6]
- strb r4, [r5, 0x5]
- lsls r1, 24
- cmp r1, 0
- bge _081249A4
- movs r0, 0xFF
- b _081249A6
-_081249A4:
- movs r0, 0x1
-_081249A6:
- strb r0, [r5, 0x7]
- adds r0, r6, 0
-_081249AA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_812492C
-
- thumb_func_start unref_sub_81249B0
-unref_sub_81249B0: @ 81249B0
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r4, r1, 0
- cmp r4, 0xF
- bhi _081249DC
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r1, r2, r0
- ldrb r0, [r1, 0x4]
- lsrs r0, 7
- cmp r0, 0
- beq _081249DC
- adds r0, r1, 0x4
- movs r1, 0
- movs r2, 0xC
- bl memset
- adds r0, r4, 0
- b _081249DE
-_081249DC:
- movs r0, 0xFF
-_081249DE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_81249B0
-
- thumb_func_start sub_81249E4
-sub_81249E4: @ 81249E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- movs r0, 0
- mov r12, r0
- ldrb r1, [r5, 0x8]
- cmp r12, r1
- bcc _081249FC
- b _08124B94
-_081249FC:
- movs r7, 0x1F
- ldr r0, _08124A2C @ =0xfffffc1f
- mov r10, r0
- movs r1, 0x7D
- negs r1, r1
- mov r9, r1
- movs r0, 0x1F
- mov r8, r0
-_08124A0C:
- ldrh r0, [r5, 0x6]
- add r0, r12
- lsls r0, 1
- ldr r1, _08124A30 @ =gPlttBufferFaded
- adds r3, r0, r1
- ldr r1, _08124A34 @ =gPlttBufferUnfaded
- adds r6, r0, r1
- ldrb r0, [r5]
- lsls r0, 25
- lsrs r0, 25
- cmp r0, 0x1
- beq _08124A38
- cmp r0, 0x2
- beq _08124A96
- b _08124B82
- .align 2, 0
-_08124A2C: .4byte 0xfffffc1f
-_08124A30: .4byte gPlttBufferFaded
-_08124A34: .4byte gPlttBufferUnfaded
-_08124A38:
- ldr r0, [r3]
- lsls r2, r0, 27
- lsrs r0, r2, 27
- movs r1, 0x3
- ldrsb r1, [r5, r1]
- adds r0, r1
- cmp r0, 0x1F
- bhi _08124A5A
- lsrs r0, r2, 27
- adds r0, r1
- ands r0, r7
- ldrb r2, [r3]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
-_08124A5A:
- ldr r0, [r3]
- lsls r2, r0, 22
- lsrs r0, r2, 27
- movs r1, 0x3
- ldrsb r1, [r5, r1]
- adds r0, r1
- cmp r0, 0x1F
- bhi _08124A7E
- lsrs r0, r2, 27
- adds r0, r1
- mov r1, r8
- ands r0, r1
- lsls r0, 5
- ldrh r2, [r3]
- mov r1, r10
- ands r1, r2
- orrs r1, r0
- strh r1, [r3]
-_08124A7E:
- ldr r0, [r3]
- lsls r2, r0, 17
- lsrs r0, r2, 27
- movs r1, 0x3
- ldrsb r1, [r5, r1]
- adds r0, r1
- cmp r0, 0x1F
- bls _08124A90
- b _08124B82
-_08124A90:
- lsrs r0, r2, 27
- adds r0, r1
- b _08124B74
-_08124A96:
- movs r0, 0x3
- ldrsb r0, [r5, r0]
- cmp r0, 0
- bge _08124B08
- ldr r0, [r3]
- lsls r4, r0, 27
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 27
- lsrs r0, 27
- cmp r1, r0
- blt _08124AC6
- lsrs r0, r4, 27
- adds r0, r2
- ands r0, r7
- ldrb r2, [r3]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
-_08124AC6:
- ldr r0, [r3]
- lsls r4, r0, 22
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 22
- lsrs r0, 27
- cmp r1, r0
- blt _08124AF0
- lsrs r0, r4, 27
- adds r0, r2
- mov r1, r8
- ands r0, r1
- lsls r0, 5
- ldrh r2, [r3]
- mov r1, r10
- ands r1, r2
- orrs r1, r0
- strh r1, [r3]
-_08124AF0:
- ldr r0, [r3]
- lsls r4, r0, 17
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 17
- lsrs r0, 27
- cmp r1, r0
- blt _08124B82
- b _08124B70
-_08124B08:
- ldr r0, [r3]
- lsls r4, r0, 27
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 27
- lsrs r0, 27
- cmp r1, r0
- bgt _08124B30
- lsrs r0, r4, 27
- adds r0, r2
- ands r0, r7
- ldrb r2, [r3]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
-_08124B30:
- ldr r0, [r3]
- lsls r4, r0, 22
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 22
- lsrs r0, 27
- cmp r1, r0
- bgt _08124B5A
- lsrs r0, r4, 27
- adds r0, r2
- mov r1, r8
- ands r0, r1
- lsls r0, 5
- ldrh r2, [r3]
- mov r1, r10
- ands r1, r2
- orrs r1, r0
- strh r1, [r3]
-_08124B5A:
- ldr r0, [r3]
- lsls r4, r0, 17
- lsrs r1, r4, 27
- movs r2, 0x3
- ldrsb r2, [r5, r2]
- adds r1, r2
- ldr r0, [r6]
- lsls r0, 17
- lsrs r0, 27
- cmp r1, r0
- bgt _08124B82
-_08124B70:
- lsrs r0, r4, 27
- adds r0, r2
-_08124B74:
- ands r0, r7
- lsls r0, 2
- ldrb r2, [r3, 0x1]
- mov r1, r9
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
-_08124B82:
- mov r0, r12
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- ldrb r0, [r5, 0x8]
- cmp r12, r0
- bcs _08124B94
- b _08124A0C
-_08124B94:
- ldrb r1, [r5, 0x2]
- adds r0, r1, 0x1
- strb r0, [r5, 0x2]
- ldrb r0, [r5, 0xB]
- lsls r0, 27
- lsls r1, 24
- asrs r0, 3
- cmp r1, r0
- beq _08124BAA
- movs r0, 0
- b _08124BDE
-_08124BAA:
- movs r0, 0
- strb r0, [r5, 0x2]
- movs r0, 0x3
- ldrsb r0, [r5, r0]
- negs r0, r0
- strb r0, [r5, 0x3]
- ldrb r2, [r5]
- movs r1, 0x7F
- movs r0, 0x7F
- ands r0, r2
- cmp r0, 0x1
- bne _08124BCA
- lsls r0, r2, 25
- lsrs r0, 25
- adds r0, 0x1
- b _08124BD0
-_08124BCA:
- lsls r0, r2, 25
- lsrs r0, 25
- subs r0, 0x1
-_08124BD0:
- ands r0, r1
- movs r1, 0x80
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5]
- movs r0, 0x1
-_08124BDE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81249E4
-
- thumb_func_start sub_8124BEC
-sub_8124BEC: @ 8124BEC
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r2, 0
- ldrb r0, [r3]
- lsls r0, 25
- lsrs r0, 25
- cmp r0, 0x1
- beq _08124C02
- cmp r0, 0x2
- beq _08124C30
- b _08124C6A
-_08124C02:
- ldrb r0, [r3, 0x8]
- cmp r2, r0
- bcs _08124C22
- ldr r4, _08124C2C @ =gPlttBufferFaded
-_08124C0A:
- ldrh r0, [r3, 0x6]
- adds r0, r2
- lsls r0, 1
- adds r0, r4
- ldrh r1, [r3, 0x4]
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r3, 0x8]
- cmp r2, r0
- bcc _08124C0A
-_08124C22:
- ldrb r2, [r3]
- lsls r1, r2, 25
- lsrs r1, 25
- adds r1, 0x1
- b _08124C5C
- .align 2, 0
-_08124C2C: .4byte gPlttBufferFaded
-_08124C30:
- ldrb r0, [r3, 0x8]
- cmp r2, r0
- bcs _08124C54
- ldr r5, _08124C74 @ =gPlttBufferFaded
- ldr r4, _08124C78 @ =gPlttBufferUnfaded
-_08124C3A:
- ldrh r0, [r3, 0x6]
- adds r0, r2
- lsls r0, 1
- adds r1, r0, r5
- adds r0, r4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r3, 0x8]
- cmp r2, r0
- bcc _08124C3A
-_08124C54:
- ldrb r2, [r3]
- lsls r1, r2, 25
- lsrs r1, 25
- subs r1, 0x1
-_08124C5C:
- movs r0, 0x7F
- ands r1, r0
- movs r0, 0x80
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_08124C6A:
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08124C74: .4byte gPlttBufferFaded
-_08124C78: .4byte gPlttBufferUnfaded
- thumb_func_end sub_8124BEC
-
- thumb_func_start task_tutorial_controls_fadein
-task_tutorial_controls_fadein: @ 8124C7C
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r5, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _08124CE0
-_08124C88:
- ldrh r0, [r4, 0x2]
- asrs r0, r5
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08124CD6
- lsls r1, r5, 1
- adds r0, r1, r5
- lsls r3, r0, 2
- adds r2, r4, r3
- ldrb r0, [r2, 0x5]
- subs r0, 0x1
- strb r0, [r2, 0x5]
- lsls r0, 24
- lsrs r0, 24
- adds r6, r1, 0
- cmp r0, 0xFF
- bne _08124CD6
- ldrh r0, [r2, 0x8]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08124CC4
- adds r0, r3, 0x4
- adds r0, r4, r0
- bl sub_81249E4
- b _08124CCC
-_08124CC4:
- adds r0, r3, 0x4
- adds r0, r4, r0
- bl sub_8124BEC
-_08124CCC:
- adds r0, r6, r5
- lsls r0, 2
- adds r0, r4, r0
- ldrb r1, [r0, 0xD]
- strb r1, [r0, 0x5]
-_08124CD6:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _08124C88
-_08124CE0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end task_tutorial_controls_fadein
-
- thumb_func_start sub_8124CE8
-sub_8124CE8: @ 8124CE8
- push {r4-r7,lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r6, r1, 16
- movs r4, 0
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- movs r5, 0x1
- movs r7, 0x80
- negs r7, r7
-_08124CFE:
- adds r0, r6, 0
- asrs r0, r4
- ands r0, r5
- cmp r0, 0
- beq _08124D2C
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r2, r3, r0
- ldrb r0, [r2, 0x4]
- lsrs r0, 7
- cmp r0, 0
- beq _08124D2C
- adds r0, r5, 0
- lsls r0, r4
- ldrh r1, [r3, 0x2]
- orrs r0, r1
- strh r0, [r3, 0x2]
- ldrb r1, [r2, 0x4]
- adds r0, r7, 0
- ands r0, r1
- orrs r0, r5
- strb r0, [r2, 0x4]
-_08124D2C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08124CFE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8124CE8
-
- thumb_func_start sub_8124D3C
-sub_8124D3C: @ 8124D3C
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r1, 16
- lsrs r7, r1, 16
- movs r5, 0
- movs r3, 0x1
-_08124D4A:
- ldrh r0, [r6, 0x2]
- asrs r0, r5
- ands r0, r3
- cmp r0, 0
- beq _08124DB2
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- adds r4, r6, r0
- ldrb r0, [r4, 0x4]
- lsrs r0, 7
- cmp r0, 0
- beq _08124DB2
- adds r0, r7, 0
- asrs r0, r5
- ands r0, r3
- cmp r0, 0
- beq _08124DB2
- ldrh r1, [r4, 0xA]
- lsls r1, 1
- ldr r0, _08124DA8 @ =gPlttBufferFaded
- adds r0, r1, r0
- ldr r2, _08124DAC @ =gPlttBufferUnfaded
- adds r1, r2
- ldrb r2, [r4, 0xC]
- lsls r2, 1
- str r3, [sp]
- bl memcpy
- ldrb r0, [r4, 0x4]
- movs r2, 0x80
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- strb r0, [r4, 0x4]
- movs r0, 0
- strb r0, [r4, 0x6]
- strb r0, [r4, 0x5]
- ldrb r0, [r4, 0xF]
- lsls r0, 24
- ldr r3, [sp]
- cmp r0, 0
- bge _08124DB0
- movs r0, 0xFF
- strb r0, [r4, 0x7]
- b _08124DB2
- .align 2, 0
-_08124DA8: .4byte gPlttBufferFaded
-_08124DAC: .4byte gPlttBufferUnfaded
-_08124DB0:
- strb r3, [r4, 0x7]
-_08124DB2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _08124D4A
- ldr r0, _08124DC8 @ =0x0000ffff
- cmp r7, r0
- bne _08124DCC
- movs r0, 0
- strb r0, [r6]
- b _08124DD0
- .align 2, 0
-_08124DC8: .4byte 0x0000ffff
-_08124DCC:
- ldrh r0, [r6, 0x2]
- bics r0, r7
-_08124DD0:
- strh r0, [r6, 0x2]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8124D3C
-
- thumb_func_start sub_8124DDC
-sub_8124DDC: @ 8124DDC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, [sp, 0x14]
- ldr r4, [sp, 0x18]
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- lsrs r3, 19
- adds r3, r2
- lsls r3, 1
- adds r6, r3
- cmp r1, r4
- bcs _08124E26
-_08124E04:
- lsls r0, r1, 6
- adds r2, r6, r0
- movs r0, 0
- adds r3, r1, 0x1
- cmp r0, r5
- bcs _08124E1E
-_08124E10:
- strh r7, [r2]
- adds r2, 0x2
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bcc _08124E10
-_08124E1E:
- lsls r0, r3, 24
- lsrs r1, r0, 24
- cmp r1, r4
- bcc _08124E04
-_08124E26:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8124DDC
-
- thumb_func_start sub_8124E2C
-sub_8124E2C: @ 8124E2C
- push {r4-r7,lr}
- adds r7, r0, 0
- ldr r0, [sp, 0x14]
- ldr r4, [sp, 0x18]
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r6, r4, 24
- movs r4, 0
- lsrs r3, 19
- adds r3, r2
- lsls r3, 1
- adds r7, r3
- cmp r4, r6
- bcs _08124E76
-_08124E50:
- lsls r0, r4, 6
- adds r2, r7, r0
- movs r3, 0
- adds r4, 0x1
- cmp r3, r5
- bcs _08124E6E
-_08124E5C:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r5
- bcc _08124E5C
-_08124E6E:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08124E50
-_08124E76:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8124E2C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/ewram.h b/include/ewram.h
index 17ca3508a..b07820090 100755
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -200,13 +200,14 @@ extern u8 gSharedMem[];
#define B_FUNCTION_STACK ((struct funcStack *) (gSharedMem + 0x17140))
#define ewram17160 (gSharedMem[0x17160])
#define ewram17800 ((struct Struct2017800 *) (gSharedMem + 0x17800))
+#define ewram17800_2 (&gSharedMem[0x17800])
#define EWRAM_17800 ((struct UnknownStruct1 *)(gSharedMem + 0x17800))
#define eTransformStatuses ((struct TransformStatus *)(gSharedMem + 0x17800))
-#define ewram17800_2 (&gSharedMem[0x17800])
#define ewram17810 ((struct Struct2017810 *) (gSharedMem + 0x17810))
#define EWRAM_17810 ((struct UnknownStruct3 *)(gSharedMem + 0x17810))
#define ewram17840 (*(struct Struct2017840 *) (gSharedMem + 0x17840))
#define ewram17850 ((struct UnknownStruct5 *)(gSharedMem + 0x17850))
+#define ewram17E00 ((u16 *)(gSharedMem + 0x17E00))
#define ewram_2018000 (*(struct PlayerRecords *)(gSharedMem + 0x18000))
#define EWRAM_18000 ((u16 *)(gSharedMem + 0x18000))
#define ewram18000 ((u16 *)(gSharedMem + 0x18000))
@@ -220,9 +221,14 @@ extern u8 gSharedMem[];
#define ewram18300 ((u16 *)(gSharedMem + 0x18300))
#define ewram18800 (&gSharedMem[0x18800])
#define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800)
+#define ewram189a0 ((u16 *)(gSharedMem + 0x189A0))
+#define ewram18a20 ((u16 *)(gSharedMem + 0x18A20))
+#define ewram18a32 ((u16 *)(gSharedMem + 0x18A32))
+#define ewram18a80 ((u16 *)(gSharedMem + 0x18a80))
#define ewram19000 (&gSharedMem[0x19000])
#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
#define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000)
+#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
#define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348))
#define ewram19800 (&gSharedMem[0x19800])
#define ePokedexView4 (struct PokedexView *)(gSharedMem + 0x19800)
diff --git a/include/m4a.h b/include/m4a.h
index 7d016c98b..57a749a58 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -8,6 +8,7 @@ void m4aSoundVSync(void);
void m4aSoundInit(void);
void m4aSoundMain(void);
void m4aSongNumStart(u16);
+void m4aSongNumStartOrChange(u16);
void m4aSongNumStop(u16 n);
void m4aMPlayAllStop(void);
void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo);
diff --git a/include/roulette.h b/include/roulette.h
new file mode 100644
index 000000000..7d114a073
--- /dev/null
+++ b/include/roulette.h
@@ -0,0 +1,38 @@
+#ifndef GUARD_ROULETTE_H
+#define GUARD_ROULETTE_H
+
+struct UnkStruct1
+{
+ u16 var00;
+ u16 var02;
+ u8 var04;
+ u8 var05;
+ u8 var06;
+ s8 var07_0:5;
+ s8 var07_5:2;
+ s8 var07_7:1;
+};
+
+struct UnkStruct3
+{
+ u8 var00_0:7;
+ u8 var00_7:1;
+ u8 var01;
+ s8 var02;
+ s8 var03;
+ struct UnkStruct1 var04;
+};
+
+struct UnkStruct0
+{
+ u8 var00;
+ u8 var01;
+ u16 var02; //flag for each UnkStruct3
+ struct UnkStruct3 var04[0x10];
+};
+
+s16 sub_81174C4(s16, s16);
+s16 sub_81174E0(s16);
+void PlayRoulette(void);
+
+#endif
diff --git a/include/roulette_util.h b/include/roulette_util.h
new file mode 100644
index 000000000..daeaeeeef
--- /dev/null
+++ b/include/roulette_util.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_ROULETTE_UTIL_H
+#define GUARD_ROULETTE_UTIL_H
+
+#include "roulette.h"
+
+void sub_8124918(struct UnkStruct0 *);
+u8 sub_812492C(struct UnkStruct0 *, u8, struct UnkStruct1 *);
+void task_tutorial_controls_fadein(struct UnkStruct0 *);
+void sub_8124CE8(struct UnkStruct0 *, u16);
+void sub_8124D3C(struct UnkStruct0 *, u16);
+void sub_8124DDC(u16 *, u16, u8, u8, u8, u8);
+void sub_8124E2C(u16 *, u16 *, u8, u8, u8, u8);
+
+#endif
diff --git a/ld_script.txt b/ld_script.txt
index 68466c1a0..1f72ce2d7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -335,7 +335,7 @@ SECTIONS {
src/battle/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
src/scene/evolution_scene.o(.text);
- asm/roulette.o(.text);
+ src/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
src/pokemon/pokedex_cry_screen.o(.text);
asm/pokedex_cry_screen.o(.text_811A4F8);
@@ -347,7 +347,7 @@ SECTIONS {
src/battle/battle_message.o(.text);
src/field/choose_party.o(.text);
src/scene/cable_car.o(.text);
- asm/roulette_util.o(.text);
+ src/roulette_util.o(.text);
src/engine/cable_car_util.o(.text);
src/unused_8124F94.o(.text);
src/engine/save.o(.text);
diff --git a/src/roulette.c b/src/roulette.c
new file mode 100644
index 000000000..1d612d071
--- /dev/null
+++ b/src/roulette.c
@@ -0,0 +1,4637 @@
+#include "global.h"
+#include "ewram.h"
+#include "field_fadetransition.h"
+#include "constants/game_stat.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_cursor.h"
+#include "menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "roulette.h"
+#include "roulette_util.h"
+#include "rtc.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "script.h"
+#include "constants/species.h"
+#include "sprite.h"
+#include "strings2.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "trig.h"
+#include "unknown_task.h"
+
+asm(".include \"constants/gba_constants.inc\"");
+
+struct Roulette /* ewram + 0x19000 */
+{
+ 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;
+};
+
+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;
+};
+
+struct StructgUnknown_083F8D90
+{
+ u8 var00;
+ u8 var01;
+ u8 var02;
+ u8 var03;
+ u32 var04;
+};
+
+static void sub_81150FC(void);
+static void sub_8115124(void);
+static void sub_8115238(void);
+static void sub_8115384(void);
+static void sub_8115634(u8);
+static void sub_81156BC(u8);
+static void sub_8115734(u8);
+void sub_811577C(u8);
+void sub_81157AC(u8);
+static void sub_81157D0(u8);
+static void sub_8115928(u8, u8);
+static void sub_811597C(u8);
+static void sub_81159BC(u8);
+static u8 sub_8115A94(s16 *, u8);
+void sub_8115B58(u8);
+static void sub_8115DA0(u8);
+static void sub_8115E14(u8);
+static void sub_8115ECC(u8);
+u8 sub_8115F58(u16, u16);
+static void sub_8116100(u8);
+void sub_8116308(u8);
+static void sub_811637C(u8);
+static void sub_8116474(u8);
+static void sub_8116514(u8);
+static void sub_811659C(u8);
+static void sub_8116638(u8);
+static void sub_81166E8(u8);
+static void sub_811677C(u8);
+static void sub_81167F4(u8);
+static void sub_8116880(u8);
+static void dp01t_12_3_battle_menu(u8);
+static void sub_8116AB0(u8);
+static void sub_8116B40(u8);
+static void sub_8116BC0(u8);
+static void sub_8116C34(u8, TaskFunc, u16, u16);
+static void sub_8116CAC(u8);
+static void sub_8116CF8(void);
+static u8 sub_8116D54(u8, u8);
+static u8 sub_8116E5C(u8, u8);
+static void sub_8116EF8(u8);
+static void sub_8117158(u8);
+static u8 sub_8117380(u8);
+static void sub_8117434(void);
+static void sub_81174F8(u8);
+static void sub_8117528(u8);
+void sub_811755C(u8);
+void sub_81175C0(u8);
+static void sub_81175DC(u8);
+static void sub_8117630(u8);
+static void Task_Roulette_0(u8);
+static void sub_8117838(u8);
+static u8 sub_8117890(const struct SpriteTemplate *, u8, u16 *);
+static void sub_8117900(void);
+void unref_sub_8117A74(void);
+static void sub_8117AA8(u8, u8);
+static void sub_8117BBC(void);
+static void sub_8117C60(u8, u8);
+static void sub_8117D68(u8);
+static void sub_8117DF4(void);
+void sub_8117E98(struct Sprite *);
+static void sub_8117F2C(void);
+static void sub_81180F4(u16);
+static u8 sub_81181E8(u8);
+static void sub_811829C(u8);
+static void sub_81182F8(u8);
+void sub_81184CC(struct Sprite *);
+static void sub_81184D8(void);
+void sub_8118554(struct Sprite *);
+static void sub_811857C(void);
+static void sub_81185E8(void);
+static s16 sub_811866C(struct Sprite *);
+static u8 sub_81186B8(struct Sprite *);
+static s16 sub_81186E8(struct Sprite *);
+static void sub_8118724(struct Sprite *);
+static void sub_8118834(struct Sprite *);
+static void sub_811889C(struct Sprite *);
+static void sub_81189A8(struct Sprite *);
+static void sub_8118B30(struct Sprite *);
+static void sub_8118BD8(struct Sprite *);
+static void sub_8118CAC(struct Sprite *);
+void sub_8118CEC(struct Sprite *);
+void sub_8118D2C(struct Sprite *);
+static void sub_8118DE4(struct Sprite *);
+static void sub_8118F8C(struct Sprite *);
+static void sub_8119088(struct Sprite *);
+static void sub_8119134(struct Sprite *);
+static void sub_81191F4(struct Sprite *);
+static void sub_8119224(struct Sprite *);
+static void sub_81193D4(struct Sprite *);
+static void sub_811952C(struct Sprite *);
+static void sub_8119780(struct Sprite *);
+static void sub_81197D8(struct Sprite *);
+static void sub_8119898(struct Sprite *);
+void sub_8119964(struct Sprite *);
+static void sub_8119A90(struct Sprite *);
+static void sub_8119AAC(struct Sprite *);
+static void sub_8119B24(struct Sprite *);
+static void sub_8119BCC(struct Sprite *);
+static void sub_8119D08(struct Sprite *);
+void sub_8119D80(struct Sprite *);
+
+extern u8 gUnknown_02019000[];
+extern u16 gSpecialVar_0x8004;
+extern struct StructgUnknown_083F8DF4 gUnknown_083F8DF4[];
+extern u8 gUnknown_083F8EC4;
+extern u8 gUnknown_083F8DF0[];
+extern u8 gUnknown_083F8E34[];
+extern const u8 gUnknown_08E8096C[];
+extern const u8 gRouletteWheelTiles[];
+extern const u8 gRouletteCenter_Gfx[];
+extern const u8 gRouletteHeadersTiles[];
+extern const u8 gRouletteCreditTiles[];
+extern const u8 gRouletteNumbersTiles[];
+extern const u8 gRouletteMultiplierTiles[];
+extern const u16 gUnknown_083F86BC[];
+extern const u8 gUnknown_083F88BC[];
+extern const u8 gUnknown_083F8A60[];
+extern u16 gPlttBufferFaded[];
+extern u16 gPlttBufferUnfaded[];
+extern const u8 gUnknown_081C4157[];
+extern const struct YesNoFuncTable gUnknown_083F8EBC;
+extern const u8 gUnknown_081C41E3;
+extern const u16 gUnknown_083F8ECE;
+extern const struct StructgUnknown_083F8C00 gUnknown_083F8C00[];
+const extern u8 gUnknown_083F8ECA[];
+const extern u8 gUnknown_081C41A5;
+const extern u8 gUnknown_081C4199;
+const extern u8 gUnknown_081C41AE;
+const extern u8 gUnknown_081C41BD;
+const extern u8 gUnknown_081C41F1;
+const extern u8 gUnknown_081C4231;
+const extern u8 gUnknown_081C41D2;
+extern const struct StructgUnknown_083F8D90 gUnknown_083F8D90[];
+extern const u32 gUnknown_083F8ED8[];
+extern const u32 gUnknown_083F8EE8[];
+extern const struct UnkStruct1 gUnknown_083F8E9C[];
+extern const u8 gUnknown_083F8EF4[];
+extern const struct YesNoFuncTable gUnknown_083F8EB4;
+extern const u8 gUnknown_081C40DF;
+extern const u8 gUnknown_081C4139;
+extern const u8 gUnknown_081C411C;
+extern const u8 gUnknown_083F92A8[];
+extern const u8 gUnknown_083F90FC[];
+extern const u8 gUnknown_083F9D3C[];
+extern const struct SpritePalette gUnknown_083F9E30;
+extern const struct SpriteSheet gUnknown_083F9F54;
+extern const struct SpriteSheet gUnknown_083F9F5C;
+extern const struct SpriteTemplate gSpriteTemplate_83FA07C[];
+extern const struct SpriteTemplate gSpriteTemplate_83F9FD4[];
+extern const struct SpriteTemplate gSpriteTemplate_83FA034[];
+extern const struct SpriteTemplate gSpriteTemplate_83FA40C;
+extern const struct SpriteSheet gUnknown_083F9EE8;
+extern const struct SpriteTemplate gSpriteTemplate_83FA0DC[];
+extern struct OamMatrix gOamMatrices[];
+extern const struct SpriteSheet gUnknown_083FA21C[];
+extern const struct SpriteTemplate gSpriteTemplate_83FA2B0;
+extern const struct SpriteTemplate gSpriteTemplate_83FA2C8;
+extern const struct SpriteTemplate gSpriteTemplate_83FA2E0;
+extern const struct SpriteTemplate gSpriteTemplate_83FA2F8;
+extern const struct SpriteTemplate gSpriteTemplate_83FA310;
+extern const u8 gUnknown_083FA608[0x5];
+extern const struct SpriteSheet gUnknown_083FA42C;
+extern const struct SpriteTemplate gSpriteTemplate_83FA434;
+extern void (*gFieldCallback)(void);
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern const u16 gUnknown_083FA60E[0x2][0x2];
+extern const struct SpriteTemplate gSpriteTemplate_83FA50C;
+extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[];
+extern const u16 gUnknown_083FA616[0x2][0x2];
+extern const struct SpriteTemplate gSpriteTemplate_83FA524;
+extern const struct SpriteTemplate gSpriteTemplate_83FA5F0;
+extern const u16 gUnknown_083FA61E[0xA];
+extern const u16 gUnknown_083FA632[];
+extern const s8 gUnknown_083FA64A[0x2];
+extern const s8 gUnknown_083FA64C[0x8][0x2];
+
+
+
+
+void sub_81150FC(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ if (eRoulette->varB8.var00)
+ task_tutorial_controls_fadein(&eRoulette->varB8);
+}
+
+void sub_8115124(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8117434();
+ REG_BG1HOFS = 0x200 - eRoulette->var26;
+ if (eRoulette->var01)
+ REG_BLDALPHA = eRoulette->var34;
+ if (eRoulette->var2A != 0)
+ {
+ DmaCopy16(3, &gBGTilemapBuffers[1][0xE0], (void *)(VRAM + 0x21C0), 0x340);
+ eRoulette->var2A = 0x0;
+ }
+ switch (eRoulette->var28)
+ {
+ case 0x1:
+ REG_BG0CNT = (0x20 * 0xF8);
+ DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340);
+ eRoulette->var28 = 0x2;
+ break;
+ case 0x2:
+ DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340);
+ break;
+ case 0xFF:
+ REG_BG0CNT = 0x1F08;
+ DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340);
+ eRoulette->var28 = 0x0;
+ break;
+ case 0x0:
+ }
+}
+#ifdef NONMATCHING
+
+void sub_8115238(void)
+{
+ u8 i;
+ u32 temp;
+ struct PlttData t;
+ struct PlttData *unfaded;
+ struct PlttData *faded;
+ struct StructgUnknown_083F8DF4 *s0;
+ struct PlttData arr[0x3]; // the third is never used ?
+ memcpy(&arr, &gUnknown_083F8EC4, 0x6);
+ memset(eRoulette, 0x0, 0x17C);
+ eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1);
+ if (gSpecialVar_0x8004 & 0x80)
+ eRoulette->var04_7 = 0x1;
+ s0 = &gUnknown_083F8DF4[0];
+ eRoulette->var22 = s0[eRoulette->var04_0].var03;
+ eRoulette->var23 = s0[eRoulette->var04_0].var04;
+ temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2];
+ eRoulette->var19 = temp;
+ eRoulette->var1A_4 = 0x1;
+ if (temp == 0x1)
+ {
+ unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
+ faded = (struct PlttData *)&gPlttBufferFaded[0];
+ t = arr[0];
+ }
+ else
+ {
+ unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
+ faded = (struct PlttData *)&gPlttBufferFaded[0];
+ t = arr[1];
+ }
+ faded[0x51] = t;
+ faded[0x0] = faded[0x51];
+ unfaded[0x51] = t;
+ unfaded[0x0] = t;
+ sub_8124918((&eRoulette->varB8));
+ for (i = 0; i < 0xD; i++)
+ sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]);
+ for (i = 0; i < 0x6; i++)
+ {
+ switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
+ {
+ case SPECIES_TAILLOW:
+ eRoulette->var02 |= 0x2;
+ break;
+ case SPECIES_SHROOMISH:
+ eRoulette->var02 |= 0x1;
+ break;
+ }
+ }
+ RtcCalcLocalTime();
+}
+#else
+__attribute__((naked))
+void sub_8115238(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x8\n\
+ ldr r1, _081152C0 @ =gUnknown_083F8EC4\n\
+ mov r0, sp\n\
+ movs r2, 0x6\n\
+ bl memcpy\n\
+ ldr r5, _081152C4 @ =0x02019000\n\
+ movs r2, 0xBE\n\
+ lsls r2, 1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0\n\
+ bl memset\n\
+ ldr r0, _081152C8 @ =gSpecialVar_0x8004\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r2\n\
+ ldrb r1, [r5, 0x4]\n\
+ movs r3, 0x4\n\
+ negs r3, r3\n\
+ ands r3, r1\n\
+ orrs r3, r0\n\
+ strb r3, [r5, 0x4]\n\
+ movs r0, 0x80\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _08115276\n\
+ movs r0, 0x80\n\
+ orrs r3, r0\n\
+ strb r3, [r5, 0x4]\n\
+ _08115276:\n\
+ ldr r3, _081152CC @ =gUnknown_083F8DF4\n\
+ ldrb r2, [r5, 0x4]\n\
+ lsls r1, r2, 30\n\
+ lsrs r0, r1, 25\n\
+ adds r0, r3\n\
+ ldrb r0, [r0, 0x3]\n\
+ adds r4, r5, 0\n\
+ adds r4, 0x22\n\
+ strb r0, [r4]\n\
+ lsrs r0, r1, 25\n\
+ adds r0, r3\n\
+ ldrb r0, [r0, 0x4]\n\
+ adds r3, r5, 0\n\
+ adds r3, 0x23\n\
+ strb r0, [r3]\n\
+ ldr r0, _081152D0 @ =gUnknown_083F8DF0\n\
+ lsrs r1, 30\n\
+ lsls r2, 24\n\
+ lsrs r2, 31\n\
+ lsls r2, 1\n\
+ adds r1, r2\n\
+ adds r1, r0\n\
+ ldrb r2, [r1]\n\
+ strb r2, [r5, 0x19]\n\
+ ldrb r1, [r5, 0x1A]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ movs r1, 0x10\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1A]\n\
+ cmp r2, 0x1\n\
+ bne _081152DC\n\
+ ldr r4, _081152D4 @ =gPlttBufferUnfaded\n\
+ ldr r3, _081152D8 @ =gPlttBufferFaded\n\
+ mov r0, sp\n\
+ ldrh r2, [r0]\n\
+ b _081152E4\n\
+ .align 2, 0\n\
+ _081152C0: .4byte gUnknown_083F8EC4\n\
+ _081152C4: .4byte 0x02019000\n\
+ _081152C8: .4byte gSpecialVar_0x8004\n\
+ _081152CC: .4byte gUnknown_083F8DF4\n\
+ _081152D0: .4byte gUnknown_083F8DF0\n\
+ _081152D4: .4byte gPlttBufferUnfaded\n\
+ _081152D8: .4byte gPlttBufferFaded\n\
+ _081152DC:\n\
+ ldr r4, _08115348 @ =gPlttBufferUnfaded\n\
+ ldr r3, _0811534C @ =gPlttBufferFaded\n\
+ mov r0, sp\n\
+ ldrh r2, [r0, 0x2]\n\
+ _081152E4:\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xA2\n\
+ strh r2, [r0]\n\
+ ldr r1, _08115350 @ =0x0000ffff\n\
+ adds r0, r1, 0\n\
+ ands r0, r2\n\
+ strh r0, [r3]\n\
+ ands r0, r1\n\
+ adds r2, r4, 0\n\
+ adds r2, 0xA2\n\
+ strh r0, [r2]\n\
+ ands r0, r1\n\
+ strh r0, [r4]\n\
+ ldr r0, _08115354 @ =0x020190b8\n\
+ bl sub_8124918\n\
+ movs r4, 0\n\
+ ldr r5, _08115358 @ =gUnknown_083F8E34\n\
+ _08115308:\n\
+ lsls r2, r4, 3\n\
+ adds r2, r5\n\
+ ldr r0, _08115354 @ =0x020190b8\n\
+ adds r1, r4, 0\n\
+ bl sub_812492C\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0xC\n\
+ bls _08115308\n\
+ movs r4, 0\n\
+ ldr r5, _0811535C @ =0x02019000\n\
+ _08115322:\n\
+ movs r0, 0x64\n\
+ muls r0, r4\n\
+ ldr r1, _08115360 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ adds r1, r0, 0\n\
+ movs r0, 0x98\n\
+ lsls r0, 1\n\
+ cmp r1, r0\n\
+ beq _08115364\n\
+ adds r0, 0x2\n\
+ cmp r1, r0\n\
+ bne _0811536C\n\
+ ldrb r0, [r5, 0x2]\n\
+ movs r1, 0x1\n\
+ b _08115368\n\
+ .align 2, 0\n\
+ _08115348: .4byte gPlttBufferUnfaded\n\
+ _0811534C: .4byte gPlttBufferFaded\n\
+ _08115350: .4byte 0x0000ffff\n\
+ _08115354: .4byte 0x020190b8\n\
+ _08115358: .4byte gUnknown_083F8E34\n\
+ _0811535C: .4byte 0x02019000\n\
+ _08115360: .4byte gPlayerParty\n\
+ _08115364:\n\
+ ldrb r0, [r5, 0x2]\n\
+ movs r1, 0x2\n\
+ _08115368:\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x2]\n\
+ _0811536C:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x5\n\
+ bls _08115322\n\
+ bl RtcCalcLocalTime\n\
+ add sp, 0x8\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8115384(void)
+{
+ u32 temp_IME;
+ u8 taskid;
+ switch (gMain.state)
+ {
+ case 0x0:
+ SetVBlankCallback(NULL);
+ remove_some_task();
+ sub_80F9438();
+ sub_80F9368();
+ REG_BG2CNT = 0x4686;
+ REG_BG1CNT = 0x4401;
+ REG_BLDCNT = 0x2400;
+ REG_BLDALPHA = 0x060A;
+ LZ77UnCompVram(&gUnknown_08E8096C, (void *)VRAM);
+ LZ77UnCompVram(&gRouletteWheelTiles, (void *)(VRAM + 0x4000));
+ gMain.state++;
+ break;
+ case 0x1:
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 0x2:
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0);
+ gMain.state++;
+ break;
+ case 0x3:
+ sub_8115238();
+ sub_80F9020();
+ LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram18800));
+ LZ77UnCompVram(&gUnknown_083F8A60, (void *)(VRAM + 0x3000));
+ gMain.state++;
+ break;
+ case 0x4:
+ sub_8117838(0x0);
+ sub_811857C();
+ sub_81184D8();
+ sub_8117F2C();
+ sub_8117900();
+ sub_8117BBC();
+ sub_8117DF4();
+ gMain.state++;
+ break;
+ case 0x5:
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_81180F4(gSaveBlock1.coins);
+ sub_81182F8(0x6);
+ sub_811829C(0x0);
+ sub_8117158(0x0);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C4157[0], 0x1, 0xF);
+ gSpriteCoordOffsetX = -0x3C;
+ gSpriteCoordOffsetY = 0x0;
+ gMain.state++;
+ break;
+ case 0x6:
+ REG_DISPCNT = 0x1741;
+ gMain.state++;
+ break;
+ case 0x7:
+ temp_IME = REG_IME;
+ REG_IME = 0x0; //disable interrupts
+ REG_IE |= 0x1; //enable VBlank interrupt
+ REG_IME = temp_IME; //reenable interrupts
+ REG_DISPSTAT |= 0x8;
+ SetVBlankCallback(&sub_8115124);
+ BeginHardwarePaletteFade(0xFF, 0x0, 0x10, 0x0 , 0x1);
+ taskid = eRoulette->varA4 = CreateTask(&sub_81156BC, 0x0);
+ gTasks[taskid].data[0x6] = 0x6;
+ gTasks[taskid].data[0xD] = gSaveBlock1.coins;
+ eRoulette->varA5 = CreateTask(&sub_8115634, 0x1);
+ SetMainCallback2(&sub_81150FC);
+ break;
+ }
+}
+
+void sub_8115634(u8 unused)
+{
+ s16 sin;
+ s16 cos;
+ s32 cos32;
+ if (eRoulette->var21++ == eRoulette->var23)
+ {
+ eRoulette->var21 = 0x0;
+ if ((eRoulette->var24 -= eRoulette->var22) < 0)
+ eRoulette->var24 = 0x168 - eRoulette->var22;
+ }
+ sin = Sin2(eRoulette->var24);
+ cos = Cos2(eRoulette->var24);
+ sin = sin / 16;
+ cos32 = cos / 16;
+ eRoulette->var2C.d = cos32;
+ eRoulette->var2C.a = cos32;
+ eRoulette->var2C.b = sin;
+ eRoulette->var2C.c = -sin;
+}
+
+void sub_81156BC(u8 taskid)
+{
+ if (UpdatePaletteFade() == 0)
+ {
+ REG_BLDCNT |= 0x2400;
+ REG_BLDALPHA = 0x0808;
+ gTasks[taskid].data[0x6] = 0;
+ sub_8116CAC(taskid);
+ sub_8116CF8();
+ sub_81185E8();
+ sub_8117158(0);
+ sub_81182F8(0x6);
+ sub_8116C34(taskid, &sub_81159BC, 0xFFFF, 0x3);
+ }
+}
+
+void sub_8115734(u8 taskid)
+{
+ DisplayYesNoMenu(0x14, 0x8, 0x1);
+ sub_814AAF8(0x2D9E);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C41E3, 0x1, 0xF);
+ DoYesNoFuncWithChoice(taskid, &gUnknown_083F8EBC);
+}
+
+void sub_811577C(u8 taskid)
+{
+ MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD);
+ gTasks[taskid].func = &sub_81159BC;
+}
+
+void sub_81157AC(u8 taskid)
+{
+ DestroyTask(eRoulette->varA5);
+ sub_8116AB0(taskid);
+}
+
+void sub_81157D0(u8 r0)
+{
+ u8 temp0, temp1;
+ switch (r0)
+ {
+ case 0x0:
+ sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
+ break;
+ case 0x1:
+ case 0x2:
+ case 0x3:
+ case 0x4:
+ temp0 = (r0 * 3 + 0xE);
+ sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a32, temp0, 0x7, 0x3, 0xD);
+ break;
+ case 0x5:
+ case 0xA:
+ case 0xF:
+ temp1 = ((r0 - 1) / 5 * 3 + 0xA);
+ sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a80, 0xE, temp1, 0x10, 0x3);
+ break;
+ default:
+ temp0 = ((r0 % 5) * 3 + 0xE);
+ temp1 = ((r0 - 1) / 5 * 3 + 0x7);
+ sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 0x3, 0x3);
+ }
+}
+
+void sub_8115928(u8 taskid, u8 r1)
+{
+ if (!r1)
+ sub_811829C(gTasks[taskid].data[0x4]);
+ else
+ sub_811829C(eRoulette->var1B[eRoulette->var1A_0]);
+ sub_81157D0(gTasks[taskid].data[0x4]);
+}
+
+void sub_811597C(u8 taskid)
+{
+ eRoulette->var28 = 0x1;
+ sub_81157D0(gTasks[taskid].data[0x4]);
+ eRoulette->var23 = 0x2;
+ eRoulette->var21 = 0x0;
+ gTasks[taskid].func = &sub_8115E14;
+}
+
+void sub_81159BC(u8 taskid)
+{
+ s16 i;
+ if(eRoulette->var08 & 0x20)
+ {
+ for (i = 0xB; (i < 0xE); i++)
+ if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
+ break;
+ }
+ else
+ {
+ for (i = 0x6; (i < 0xA); i++)
+ if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
+ break;
+ }
+ gTasks[taskid].data[0x4] = i;
+ sub_8116CAC(taskid);
+ sub_8117158(gTasks[taskid].data[0x4]);
+ sub_811829C(gTasks[taskid].data[0x4]);
+ sub_8116EF8(gTasks[taskid].data[0x4]);
+ gTasks[taskid].data[0x1] = 0x0;
+ gTasks[taskid].func = &sub_811597C;
+}
+
+u8 sub_8115A94(s16 *r0, u8 r1)
+{
+ s8 temp1 = 0;
+ s8 temp = 0;
+ s8 arr[0x4];
+ s8 t;
+ memcpy(&arr, gUnknown_083F8ECA, 0x4);
+ t = (u8)*r0;
+ switch (r1)
+ {
+ case 0x0:
+ case 0x1:
+ temp1 = (*r0 % 5);
+ temp = temp1 + 0xF;
+ if (temp1 == 0)
+ temp1 = 0x5;
+ break;
+ case 0x2:
+ case 0x3:
+ temp1 = (s16)(*r0 / 5) * 5;
+ temp = temp1 + 0x4;
+ if (temp1 == 0)
+ temp1 = 0x1;
+ break;
+ }
+ *r0 += arr[r1];
+ if (*r0 < temp1)
+ *r0 = temp;
+ if (*r0 > temp)
+ *r0 = temp1;
+ if (*r0 != t)
+ return TRUE;
+ return FALSE;
+}
+
+void sub_8115B58(u8 r0)
+{
+ u8 z = 0x0;
+ bool8 var0 = FALSE;
+ if (!(gMain.newKeys & DPAD_UP) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x0)))
+ if (!(gMain.newKeys & DPAD_DOWN) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x1)))
+ if (!(gMain.newKeys & DPAD_LEFT) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x2)))
+ if (!(gMain.newKeys & DPAD_RIGHT) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x3)))
+ if (var0)
+ {
+ u8 i;
+ sub_8117158(gTasks[r0].data[0x4]);
+ sub_8115928(r0, FALSE);
+ gTasks[r0].data[0x1] = z;
+ PlaySE(SE_SELECT);
+ sub_8124D3C((&eRoulette->varB8), 0xFFFF);
+ (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
+ (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
+ (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ sub_8116EF8(gTasks[r0].data[0x4]);
+ for (i = 0; i < 0x4; i++)
+ {
+ gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type;
+ }
+ if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(eRoulette->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) )
+ {
+ z = gTasks[r0].data[0x4] - 1;
+ gSprites[eRoulette->var3C[z + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[z + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[z + 0x29]].anims + 1)->type;
+ }
+ }
+}
+
+void sub_8115D58(u8 r0)
+{
+ eRoulette->var28 = 0xFF;
+ if (eRoulette->var19 == 1)
+ eRoulette->var23 = 1;
+ else
+ eRoulette->var23 = 0;
+ eRoulette->var21 = 0;
+ gTasks[r0].data[0x1] = 0x20;
+ gTasks[r0].func = &sub_8115ECC;
+}
+
+void sub_8115DA0(u8 taskid)
+{
+ eRoulette->var1B[eRoulette->var1A_0] = gTasks[taskid].data[0x4];
+ gTasks[taskid].data[0x2] = sub_8117380(eRoulette->var1B[eRoulette->var1A_0]);
+ sub_811829C(eRoulette->var1B[eRoulette->var1A_0]);
+ if ((gTasks[taskid].data[0xD] -= eRoulette->var19) < 0)
+ gTasks[taskid].data[0xD] = 0;
+ sub_81180F4(gTasks[taskid].data[0xD]);
+ gTasks[taskid].func = &sub_8115D58;
+}
+
+void sub_8115E14(u8 taskid)
+{
+ sub_8115B58(taskid);
+ switch (gTasks[taskid].data[0x1])
+ {
+ case 0x0:
+ sub_81157D0(gTasks[taskid].data[0x4]);
+ gTasks[taskid].data[0x1]+= 1;
+ break;
+ case 0x1E:
+ sub_81157D0(0);
+ gTasks[taskid].data[0x1]+= 1;
+ break;
+ case 0x3B:
+ gTasks[taskid].data[0x1] = 0;
+ break;
+ default:
+ gTasks[taskid].data[0x1]++;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if ((eRoulette->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08))
+ PlaySE(SE_BOO);
+ else
+ {
+ m4aSongNumStart(SE_REGI);
+ gTasks[taskid].func = &sub_8115DA0;
+ }
+ }
+}
+
+void sub_8115ECC(u8 taskid)
+{
+ if (gTasks[taskid].data[0x1]-- > 0)
+ {
+ if (gTasks[taskid].data[0x1] > 0x2)
+ gSpriteCoordOffsetX += 0x2;
+ if ((eRoulette->var26 += 0x4) == 0x68)
+ gSprites[eRoulette->var3C[0x19]].callback = &SpriteCallbackDummy;
+ }
+ else
+ {
+ sub_8117AA8(0x1, 0xFF);
+ sub_8117C60(0x1, 0xFF);
+ gTasks[taskid].func = &sub_8116100;
+ gTasks[taskid].data[0x1] = 0;
+ }
+}
+
+u8 sub_8115F58(u16 r0, u16 r1)
+{
+ u8 timeh;
+ switch (eRoulette->var02)
+ {
+ case 0x1: // SHROOMISH
+ case 0x2: // TAILLOW
+ // one of the two is in party
+ timeh = gLocalTime.hours - 0x4;
+ if (!(timeh > 0x5))
+ {
+ if (!(r0 < 0xC || (r1 & 0x1)))
+ return 0x1;
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ }
+ else if (!(r1 & 0x3))
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
+ }
+ break;
+ case 0x3:
+ // both are in party
+ timeh = gLocalTime.hours - 0x4;
+ if (!(timeh > 0x6))
+ {
+ if (r0 < 0x6 || (r1 & 0x1))
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ else
+ {
+ return 0x1;
+ }
+ }
+ else if ((r1 & 0x1) && !(r0 < 0x7))
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 4;
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ break;
+ case 0:
+ default:
+ // neither is in party
+ timeh = gLocalTime.hours - 0x4;
+ if (!(timeh > 5))
+ {
+ if (!(r1 & 0x3))
+ {
+ return 0x1;
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ }
+ else if (!(r1 & 0x3))
+ {
+ if (!(r0 < 0xD))
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02 / 2;
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
+ }
+ }
+ else if (r1 & (0x80 << 8))
+ {
+ if (!(r0 < 0xD))
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var02;
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var01;
+ }
+ }
+ else
+ {
+ struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0];
+ return p[eRoulette->var04_0].var01 * 2;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+void sub_8116100(u8 taskid)
+{
+ u8 randf;
+ s8 randfinal;
+ s8 r5;
+ u16 g;
+ u16 rand;
+ u16 randmod;
+ u16 angles[0x4]; // angles in 90 degree steps
+ u8 zero = 0x0;
+ memcpy(angles, &gUnknown_083F8ECE, 0x8);
+ rand = Random();
+ randmod = rand % 0x64;
+ eRoulette->var7C = gTasks[taskid].data[0x6];
+ eRoulette->var7F = zero;
+ eRoulette->var7E = zero;
+ eRoulette->var7D = zero;
+ randf = sub_8115F58(gTasks[taskid].data[0x8], rand);
+ randfinal = (rand % randf) - (randf / 2);
+ if (gLocalTime.hours < 0xD)
+ r5 = 0x0;
+ else
+ r5 = 0x1;
+ if (randmod < 0x50)
+ r5 *= 2;
+ else
+ r5 = (1 - r5) * 2;
+ g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A;
+ eRoulette->var80 = (g + randfinal);
+ //
+ g = ((float)(u16)(g + randfinal)) / 5.0f;
+ eRoulette->var82 = g * 3;
+ eRoulette->var84 = g;
+ eRoulette->var86 = g;
+ //
+ eRoulette->var88 = (float)(angles[(rand & 0x1) + r5]);
+ eRoulette->var8C = (float)((&gUnknown_083F8DF4[eRoulette->var04_0])->var18);
+ eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / (float)(u16)(g * 3);
+ eRoulette->var94 = 68.0f;
+ eRoulette->var9C = 0.0f;
+ eRoulette->var98 = -(8.0f / (float)(u16)(g * 3));
+ eRoulette->varA0 = 36.0f;
+ gTasks[taskid].func = &sub_8116308;
+}
+#else
+__attribute__((naked))
+void sub_8116100(u8 taskid)
+{
+asm(".syntax unified\n\
+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 r9, r0\n\
+movs r4, 0\n\
+ldr r1, _08116188 @ =gUnknown_083F8ECE\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, _0811618C @ =0x02019000\n\
+ldr r1, _08116190 @ =gTasks\n\
+mov r2, r9\n\
+lsls r0, r2, 2\n\
+add r0, r9\n\
+lsls r0, 3\n\
+adds r0, r1\n\
+ldrh r2, [r0, 0x14]\n\
+adds r1, r3, 0\n\
+adds r1, 0x7C\n\
+strb r2, [r1]\n\
+adds r1, 0x3\n\
+strb r4, [r1]\n\
+subs r1, 0x1\n\
+strb r4, [r1]\n\
+subs r1, 0x1\n\
+strb r4, [r1]\n\
+ldrh r0, [r0, 0x18]\n\
+adds r1, r7, 0\n\
+bl sub_8115F58\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, _08116194 @ =gLocalTime\n\
+ldrb r0, [r0, 0x2]\n\
+lsls r0, 24\n\
+asrs r0, 24\n\
+movs r5, 0x1\n\
+cmp r0, 0xC\n\
+bgt _08116180\n\
+movs r5, 0\n\
+_08116180:\n\
+cmp r6, 0x4F\n\
+bhi _08116198\n\
+lsls r0, r5, 25\n\
+b _081161A2\n\
+.align 2, 0\n\
+_08116188: .4byte gUnknown_083F8ECE\n\
+_0811618C: .4byte 0x02019000\n\
+_08116190: .4byte gTasks\n\
+_08116194: .4byte gLocalTime\n\
+_08116198:\n\
+lsls r1, r5, 24\n\
+asrs r1, 24\n\
+movs r0, 0x1\n\
+subs r0, r1\n\
+lsls r0, 25\n\
+_081161A2:\n\
+lsrs r5, r0, 24\n\
+ldr r6, _081162D8 @ =0x02019000\n\
+ldrb r0, [r6, 0x4]\n\
+lsls r0, 30\n\
+mov r10, r0\n\
+lsrs r0, 25\n\
+ldr r1, _081162DC @ =gUnknown_083F8DF4\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 _081161D4\n\
+ldr r1, _081162E0 @ =0x47800000\n\
+bl __addsf3\n\
+_081161D4:\n\
+ldr r1, _081162E4 @ =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\
+mov r8, r0\n\
+adds r0, r6, 0\n\
+adds r0, 0x82\n\
+mov r2, r8\n\
+strh r2, [r0]\n\
+adds r0, 0x2\n\
+strh r4, [r0]\n\
+adds r0, 0x2\n\
+strh r4, [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 _0811621A\n\
+ldr r1, _081162E0 @ =0x47800000\n\
+bl __addsf3\n\
+_0811621A:\n\
+ldr r2, _081162E8 @ =0x02019088\n\
+str r0, [r2]\n\
+adds r7, r6, 0\n\
+adds r7, 0x8C\n\
+mov r1, r10\n\
+lsrs r0, r1, 25\n\
+ldr r2, _081162DC @ =gUnknown_083F8DF4\n\
+adds r0, r2\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 _08116242\n\
+ldr r1, _081162E0 @ =0x47800000\n\
+bl __addsf3\n\
+adds r5, r0, 0\n\
+_08116242:\n\
+str r5, [r7]\n\
+adds r7, r6, 0\n\
+adds r7, 0x90\n\
+ldr r1, _081162EC @ =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\
+lsls r0, r2, 16\n\
+asrs r4, r0, 16\n\
+adds r0, r4, 0\n\
+bl __floatsisf\n\
+adds r2, r0, 0\n\
+cmp r4, 0\n\
+bge _08116272\n\
+ldr r1, _081162E0 @ =0x47800000\n\
+bl __addsf3\n\
+adds r2, r0, 0\n\
+_08116272:\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, _081162F0 @ =0x42880000\n\
+str r0, [r1]\n\
+adds r1, 0x8\n\
+ldr r0, _081162F4 @ =0x00000000\n\
+str r0, [r1]\n\
+adds r5, r6, 0\n\
+adds r5, 0x98\n\
+adds r0, r4, 0\n\
+bl __floatsisf\n\
+adds r2, r0, 0\n\
+cmp r4, 0\n\
+bge _081162A2\n\
+ldr r1, _081162E0 @ =0x47800000\n\
+bl __addsf3\n\
+adds r2, r0, 0\n\
+_081162A2:\n\
+ldr r0, _081162F8 @ =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, _081162FC @ =0x42100000\n\
+str r0, [r1]\n\
+ldr r1, _08116300 @ =gTasks\n\
+mov r2, r9\n\
+lsls r0, r2, 2\n\
+add r0, r9\n\
+lsls r0, 3\n\
+adds r0, r1\n\
+ldr r1, _08116304 @ =sub_8116308\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\
+_081162D8: .4byte 0x02019000\n\
+_081162DC: .4byte gUnknown_083F8DF4\n\
+_081162E0: .4byte 0x47800000\n\
+_081162E4: .4byte 0x40a00000\n\
+_081162E8: .4byte 0x02019088\n\
+_081162EC: .4byte 0x3f000000\n\
+_081162F0: .4byte 0x42880000\n\
+_081162F4: .4byte 0x00000000\n\
+_081162F8: .4byte 0x41000000\n\
+_081162FC: .4byte 0x42100000\n\
+_08116300: .4byte gTasks\n\
+_08116304: .4byte sub_8116308\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8116308(u8 taskid)
+{
+ u8 index;
+ eRoulette->var03_7 = 1;
+ index = eRoulette->var3C[eRoulette->var7C];
+ eRoulette->var38 = &gSprites[index];
+ (&gSprites[index])->callback = &sub_81191F4;
+ gTasks[taskid].data[0x6]++;
+ gTasks[taskid].data[0x8]++;
+ sub_81182F8(0x6 - gTasks[taskid].data[0x6]);
+ m4aSongNumStart(SE_TAMAKORO);
+ gTasks[taskid].func = &sub_811637C;
+}
+
+void sub_811637C(u8 taskid)
+{
+ if (eRoulette->var7D)
+ {
+ if (eRoulette->var03_5)
+ {
+ if (eRoulette->var03_6)
+ {
+ eRoulette->var03_6 = FALSE;
+ eRoulette->var03_5 = FALSE;
+ }
+ }
+ else
+ {
+ if (!gTasks[taskid].data[0x1])
+ {
+ u8 temp = sub_8116E5C(sub_8116D54(taskid, eRoulette->var7E), eRoulette->var1B[eRoulette->var1A_0]);
+ gTasks[taskid].data[0x5] = temp;
+ if (temp == 1)
+ sub_8124CE8((&eRoulette->varB8), 0x1000);
+ }
+ if (gTasks[taskid].data[0x1] < 0x3D)
+ {
+ if (gMain.newKeys & A_BUTTON)
+ gTasks[taskid].data[0x1] = 0x3C;
+ gTasks[taskid].data[0x1]++;
+ }
+ else
+ {
+ sub_8117158(eRoulette->var1B[eRoulette->var1A_0]);
+ sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]);
+ sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1);
+ gTasks[taskid].data[0x1] = 0x20;
+ gTasks[taskid].func = &sub_8116474;
+ }
+ }
+ }
+}
+
+void sub_8116474(u8 taskid)
+{
+ if (gTasks[taskid].data[0x1]-- > 0x0)
+ {
+ if(gTasks[taskid].data[0x1] > 0x2)
+ gSpriteCoordOffsetX -= 0x2;
+ if((eRoulette->var26 -= 0x4) == 0x68)
+ gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC;
+ }
+ else
+ {
+ sub_8117D68(gTasks[taskid].data[0xC]);
+ if (gTasks[taskid].data[0x5] == 1)
+ gTasks[taskid].data[0x1] = 0x79;
+ else
+ gTasks[taskid].data[0x1] = 0x3D;
+ gTasks[taskid].func = &sub_8116514;
+ }
+}
+
+void sub_8116514(u8 taskid)
+{
+ if (gTasks[taskid].data[0x1]-- > 0x1)
+ {
+ switch(gTasks[taskid].data[0x1] % 0x10)
+ {
+ case 0x8:
+ sub_8117AA8(0x0, 0xFF);
+ sub_8117C60(0x0, 0xFF);
+ break;
+ case 0x0:
+ sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]);
+ sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1);
+ break;
+ }
+ }
+ else
+ {
+ sub_8116C34(taskid, &sub_8116638, 0x1E, 0x0);
+ }
+}
+
+void sub_811659C(u8 taskid)
+{
+ switch(gTasks[taskid].data[0x5])
+ {
+ case 0x1:
+ case 0x2:
+ if (IsFanfareTaskInactive())
+ {
+ u32 wins = GetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS);
+ if(wins < ++gTasks[taskid].data[0xB])
+ SetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS, gTasks[taskid].data[0xB]);
+ sub_8116C34(taskid, &sub_811677C, 0xFFFF, 0x3);
+ }
+ break;
+ case 0:
+ default:
+ if (!IsSEPlaying())
+ {
+ gTasks[taskid].data[0xB] = FALSE;
+ sub_8116C34(taskid, &sub_81167F4, 0xFFFF, 0x3);
+ }
+ }
+}
+
+void sub_8116638(u8 taskid)
+{
+ switch(gTasks[taskid].data[0x5])
+ {
+ case 0x1:
+ case 0x2:
+ if (gTasks[taskid].data[0x2] == 0xC)
+ {
+ PlayFanfare(BGM_ME_B_BIG);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C41A5, 0x1, 0xF);
+ }
+ else
+ {
+ PlayFanfare(BGM_ME_B_SMALL);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C4199, 0x1, 0xF);
+ }
+ break;
+ case 0:
+ default:
+ m4aSongNumStart(SE_HAZURE);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C41AE, 0x1, 0xF);
+ }
+ gTasks[taskid].data[0x1] = 0x0;
+ gTasks[taskid].func = &sub_811659C;
+}
+
+void sub_81166E8(u8 taskid)
+{
+ s32 r0 = gTasks[taskid].data[0x7];
+ switch(r0)
+ {
+ case 0x0:
+ gTasks[taskid].data[0xD]++;
+ m4aSongNumStart(SE_PIN);
+ sub_81180F4(gTasks[taskid].data[0xD]);
+ if (gTasks[taskid].data[0xD] > 0x270E)
+ {
+ gTasks[taskid].data[0x1] = r0;
+ }
+ else
+ {
+ gTasks[taskid].data[0x1]--;
+ gTasks[taskid].data[0x7]++;
+ }
+ break;
+ case 0x3:
+ m4aSongNumStop(SE_PIN);
+ gTasks[taskid].data[0x7] = 0x0;
+ break;
+ default:
+ gTasks[taskid].data[0x7]++;
+ }
+ if (gTasks[taskid].data[0x1] == 0x0)
+ sub_8116C34(taskid, &sub_81167F4, 0xFFFF, 0x3);
+}
+
+void sub_811677C(u8 taskid)
+{
+ ConvertIntToDecimalStringN((u8 *)&gStringVar1, (eRoulette->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2);
+ StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint((u8 *)&gStringVar4, 0x1, 0xF);
+ gTasks[taskid].data[0x1] = (eRoulette->var19 * gTasks[taskid].data[0x2]);
+ gTasks[taskid].data[0x7] = 0x0;
+ gTasks[taskid].func = &sub_81166E8;
+}
+
+void sub_81167F4(u8 taskid)
+{
+ sub_8124D3C((&eRoulette->varB8), 0xFFFF);
+ (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
+ (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
+ (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE;
+ gTasks[taskid].func = &sub_8116880;
+}
+
+void sub_8116880(u8 taskid)
+{
+ u8 i = 0;
+ gTasks[taskid].data[0x4] = i;
+ eRoulette->var1B[eRoulette->var1A_0] = 0x0;
+ sub_8117158(0x0);
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
+ for (i = 0; i < 0x4; i++)
+ {
+ gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum =
+ gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type;
+ }
+ if (!(gTasks[taskid].data[0xD] < eRoulette->var19))
+ {
+ if (gTasks[taskid].data[0x6] == 0x6)
+ {
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C41F1, 0x1, 0xF);
+ sub_8116C34(taskid, &dp01t_12_3_battle_menu, 0xFFFF, 0x3);
+ }
+ else if (gTasks[taskid].data[0xD] == 0x270F)
+ {
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C4231, 0x1, 0xF);
+ sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3);
+ }
+ else
+ {
+ gTasks[taskid].func = &sub_8115734;
+ }
+ }
+ else
+ {
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C41D2, 0x1, 0xF);
+ sub_8116C34(taskid, &sub_81157AC, 0x3C, 0x3);
+ }
+}
+
+void dp01t_12_3_battle_menu(u8 taskid)
+{
+ u8 i = 0x0;
+ gTasks[taskid].data[0x6] = 0x0;
+ sub_8116CAC(taskid);
+ sub_8116CF8();
+ sub_81185E8();
+ sub_8117158(0x0);
+ sub_81182F8(0x6);
+ for (i = 0; i < 0xC; i++)
+ gSprites[eRoulette->var3C[i + 0x7]].invisible = FALSE;
+ if (gTasks[taskid].data[0xD] == 0x270F)
+ {
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C4231, 0x1, 0xF);
+ sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3);
+ }
+ else
+ {
+ gTasks[taskid].func = &sub_8115734;
+ }
+}
+
+void sub_8116AB0(u8 taskid)
+{
+ sub_8124D3C((&eRoulette->varB8), 0xFFFF);
+ sub_8124918((&eRoulette->varB8));
+ gSaveBlock1.coins = gTasks[taskid].data[0xD];
+ if (gSaveBlock1.coins < eRoulette->var19)
+ gSpecialVar_0x8004 = TRUE;
+ else
+ gSpecialVar_0x8004 = FALSE;
+ BeginHardwarePaletteFade(0xFF, 0x0, 0x0, 0x10, 0x0);
+ gTasks[taskid].func = &sub_8116B40;
+}
+
+void sub_8116B40(u8 taskid) // end oulette ?
+{
+ if (UpdatePaletteFade() == 0)
+ {
+ SetVBlankCallback(0x0);
+ memset(eRoulette, 0x0, 0x17C);
+ gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0;
+ sub_80F9368();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ sub_80F9020();
+ REG_BLDCNT = 0x0;
+ REG_BLDALPHA = 0x0;
+ REG_BLDY = 0x0;
+ gFieldCallback = &sub_8080990;
+ SetMainCallback2(&c2_exit_to_overworld_2_switch);
+ DestroyTask(taskid);
+ }
+}
+
+void sub_8116BC0(u8 taskid)
+{
+ if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
+ {
+ gTasks[taskid].func = eRoulette->varAC;
+ if (eRoulette->varAA > 0)
+ PlaySE(SE_SELECT);
+ eRoulette->varAC = NULL;
+ eRoulette->varAA = 0x0;
+ eRoulette->varA8 = 0x0;
+ }
+ if (eRoulette->varA8 != 0xFFFF)
+ eRoulette->varA8--;
+}
+
+void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3)
+{
+ eRoulette->varB4 = gTasks[taskid].func;
+ if(r1 == NULL)
+ r1 = eRoulette->varB4;
+ eRoulette->varAC = r1;
+ eRoulette->varA8 = r2;
+ if (r2 == 0xFFFF && r3 == 0)
+ eRoulette->varAA = 0xFFFF;
+ else
+ eRoulette->varAA = r3;
+ gTasks[taskid].func = &sub_8116BC0;
+}
+
+void sub_8116CAC(u8 taskid)
+{
+ u8 i = 0;
+ eRoulette->var00 = i;
+ eRoulette->var03_0 = 0x0;
+ eRoulette->var03_5 = 0x0;
+ eRoulette->var03_6 = 0x0;
+ eRoulette->var03_7 = 0x0;
+ for (i = 0; i < 0x6; i++)
+ eRoulette->var1B[i] = 0x0;
+ eRoulette->var1A_0 = 0x0;
+ gTasks[taskid].data[0x1] = 0x0;
+}
+
+void sub_8116CF8(void)
+{
+ u8 i;
+ eRoulette->var08 = 0x0;
+ for (i = 0; i < 0x6; i++)
+ eRoulette->var0C[i] = 0x0;
+ for (i = 0; i < 0x4; i++)
+ eRoulette->var12[i] = 0x0;
+ for (i = 0; i < 0x3; i++)
+ eRoulette->var16[i] = 0x0;
+ sub_8117C60(0x1, 0xFF);
+}
+
+u8 sub_8116D54(u8 taskid, u8 r1)
+{
+ u32 t0[0x4];
+ u32 t1[0x3];
+ memcpy(t0, gUnknown_083F8ED8, 0x10);
+ memcpy(t1, gUnknown_083F8EE8, 0xC);
+ if (r1 > 0xB)
+ {
+ return 0x0;
+ }
+ else
+ {
+ u8 i;
+ u8 z;
+ eRoulette->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02;
+ gTasks[taskid].data[0xC] = gUnknown_083F8D90[r1].var02;
+ eRoulette->var08 |= gUnknown_083F8D90[r1].var04;
+ for (i = 0; i < 0x4; i++)
+ {
+ if (gUnknown_083F8D90[r1].var04 & t0[i])
+ eRoulette->var12[i]++;
+ if (eRoulette->var12[i] > 0x2)
+ eRoulette->var08 |= t0[i];
+ }
+ for (z = 0; z < 0x3; z++)
+ {
+ if (gUnknown_083F8D90[r1].var04 & t1[z])
+ eRoulette->var16[z]++;
+ if (eRoulette->var16[z] > 0x3)
+ eRoulette->var08 |= t1[z];
+ }
+ return gUnknown_083F8D90[r1].var02;
+ }
+}
+
+u8 sub_8116E5C(u8 r0, u8 r1)
+{
+ u8 t = r0;
+ if (--r0 < 0x13)
+ {
+ switch(r1)
+ {
+ case 0x0:
+ return 0x3;
+ break;
+ case 0x1 ... 0x4:
+ if (t == r1 + 5 || t == r1 + 10 || t == r1 + 15)
+ return 0x1;
+ break;
+ case 0x5:
+ case 0xA:
+ case 0xF:
+ if (!(t < r1 + 1) && !(t > r1 + 4))
+ return 0x1;
+ break;
+ default:
+ if (t == r1)
+ return 0x1;
+ }
+ }
+ return 0x0;
+}
+
+#ifdef NONMATCHING // stack variable switched with a register variable
+void sub_8116EF8(u8 r0)
+{
+
+ u32 var0 = 0x0;
+ struct UnkStruct1 var1[0x3];
+ u32 var2;
+ u16 var3;
+ u32 var4;
+ u8 i;
+ switch(r0)
+ {
+ case 0x5:
+ case 0xA:
+ case 0xF:
+ for (i = (r0 + 0x1); i < (r0 + 0x5); i++)
+ if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08))
+ var0 |= gUnknown_083F8C00[i].var10;
+ var0 &= 0xDFFF;
+ sub_8124CE8(&eRoulette->varB8, var0);
+ break;
+ default:
+ memcpy(var1, gUnknown_083F8E9C, 0x18);
+ if ((u8)(r0 - 0x1) < 0x4)
+ var2 = 0x3;
+ else
+ var2 = 0x1;
+ var3 = ((r0 / 0x5) - 0x1);
+ switch((u8)r0 % 0x5)
+ {
+ case 0x1:
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10;
+ break;
+ case 0x2:
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10;
+ break;
+ case 0x3:
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10;
+ break;
+ case 0x4:
+ var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10;
+ break;
+ }
+ if (var2 == 0x1)
+ {
+ if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
+ {
+ var4 = (r0 / 0x5);
+ var1[var4 - 0x1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]);
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 0x3; i++)
+ {
+ u8 var4 = i * 0x5 + r0 + 0x5;
+ if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08))
+ {
+ u8 var5 = (var4 / 0x5);
+ var1[var5 - 0x1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]);
+ if (var2 == 0x3)
+ var0 = gUnknown_083F8C00[var4].var10;
+ var2--;
+ }
+ }
+ if (var2 != 0x2)
+ var0 = 0x0;
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ }
+ }
+}
+
+#else
+__attribute__((naked))
+void sub_8116EF8(u8 r0)
+{
+asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+mov r7, r10\n\
+mov r6, r9\n\
+mov r5, r8\n\
+push {r5-r7}\n\
+sub sp, 0x20\n\
+lsls r0, 24\n\
+lsrs r6, r0, 24\n\
+movs r0, 0\n\
+str r0, [sp, 0x18]\n\
+cmp r6, 0xA\n\
+beq _08116F1E\n\
+cmp r6, 0xA\n\
+bgt _08116F1A\n\
+cmp r6, 0x5\n\
+beq _08116F1E\n\
+b _08116F7C\n\
+_08116F1A:\n\
+cmp r6, 0xF\n\
+bne _08116F7C\n\
+_08116F1E:\n\
+adds r0, r6, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+adds r0, r6, 0x5\n\
+ldr r7, _08116F70 @ =0x020190b8\n\
+cmp r4, r0\n\
+bge _08116F5E\n\
+adds r1, r7, 0\n\
+subs r1, 0xB8\n\
+ldr r3, _08116F74 @ =gUnknown_083F8C00\n\
+ldr r5, [r1, 0x8]\n\
+adds r6, r3, 0\n\
+adds r6, 0x8\n\
+adds r2, r0, 0\n\
+_08116F3A:\n\
+lsls r0, r4, 2\n\
+adds r0, r4\n\
+lsls r1, r0, 2\n\
+adds r0, r1, r6\n\
+ldr r0, [r0]\n\
+ands r0, r5\n\
+cmp r0, 0\n\
+bne _08116F54\n\
+adds r0, r1, r3\n\
+ldrh r0, [r0, 0x10]\n\
+ldr r1, [sp, 0x18]\n\
+orrs r1, r0\n\
+str r1, [sp, 0x18]\n\
+_08116F54:\n\
+adds r0, r4, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+cmp r4, r2\n\
+blt _08116F3A\n\
+_08116F5E:\n\
+ldr r0, _08116F78 @ =0x0000dfff\n\
+ldr r2, [sp, 0x18]\n\
+ands r2, r0\n\
+str r2, [sp, 0x18]\n\
+adds r0, r7, 0\n\
+adds r1, r2, 0\n\
+bl sub_8124CE8\n\
+b _0811713C\n\
+.align 2, 0\n\
+_08116F70: .4byte 0x020190b8\n\
+_08116F74: .4byte gUnknown_083F8C00\n\
+_08116F78: .4byte 0x0000dfff\n\
+_08116F7C:\n\
+mov r0, sp\n\
+ldr r1, _08116FC8 @ =gUnknown_083F8E9C\n\
+ldm r1!, {r2-r4}\n\
+stm r0!, {r2-r4}\n\
+ldm r1!, {r2-r4}\n\
+stm r0!, {r2-r4}\n\
+subs r0, r6, 0x1\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+movs r3, 0x1\n\
+mov r10, r3\n\
+cmp r0, 0x3\n\
+bhi _08116F9A\n\
+movs r4, 0x3\n\
+mov r10, r4\n\
+_08116F9A:\n\
+adds r0, r6, 0\n\
+movs r1, 0x5\n\
+bl __udivsi3\n\
+lsls r0, 24\n\
+lsrs r0, 8\n\
+ldr r1, _08116FCC @ =0xffff0000\n\
+adds r0, r1\n\
+lsrs r7, r0, 16\n\
+adds r0, r6, 0\n\
+movs r1, 0x5\n\
+bl __umodsi3\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+cmp r0, 0x2\n\
+beq _08116FF8\n\
+cmp r0, 0x2\n\
+bgt _08116FD4\n\
+cmp r0, 0x1\n\
+beq _08116FE4\n\
+ldr r4, _08116FD0 @ =0x02019000\n\
+b _0811703A\n\
+.align 2, 0\n\
+_08116FC8: .4byte gUnknown_083F8E9C\n\
+_08116FCC: .4byte 0xffff0000\n\
+_08116FD0: .4byte 0x02019000\n\
+_08116FD4:\n\
+cmp r0, 0x3\n\
+beq _0811700C\n\
+cmp r0, 0x4\n\
+beq _08117020\n\
+ldr r4, _08116FE0 @ =0x02019000\n\
+b _0811703A\n\
+.align 2, 0\n\
+_08116FE0: .4byte 0x02019000\n\
+_08116FE4:\n\
+ldr r3, _08116FF0 @ =gSprites\n\
+ldr r2, _08116FF4 @ =0x02019000\n\
+adds r0, r2, 0\n\
+adds r0, 0x43\n\
+b _08117028\n\
+.align 2, 0\n\
+_08116FF0: .4byte gSprites\n\
+_08116FF4: .4byte 0x02019000\n\
+_08116FF8:\n\
+ldr r3, _08117004 @ =gSprites\n\
+ldr r2, _08117008 @ =0x02019000\n\
+adds r0, r2, 0\n\
+adds r0, 0x44\n\
+b _08117028\n\
+.align 2, 0\n\
+_08117004: .4byte gSprites\n\
+_08117008: .4byte 0x02019000\n\
+_0811700C:\n\
+ldr r3, _08117018 @ =gSprites\n\
+ldr r2, _0811701C @ =0x02019000\n\
+adds r0, r2, 0\n\
+adds r0, 0x45\n\
+b _08117028\n\
+.align 2, 0\n\
+_08117018: .4byte gSprites\n\
+_0811701C: .4byte 0x02019000\n\
+_08117020:\n\
+ldr r3, _08117088 @ =gSprites\n\
+ldr r2, _0811708C @ =0x02019000\n\
+adds r0, r2, 0\n\
+adds r0, 0x46\n\
+_08117028:\n\
+ldrb r1, [r0]\n\
+lsls r0, r1, 4\n\
+adds r0, r1\n\
+lsls r0, 2\n\
+adds r0, r3\n\
+ldrb r0, [r0, 0x5]\n\
+lsrs r0, 4\n\
+lsls r7, r0, 4\n\
+adds r4, r2, 0\n\
+_0811703A:\n\
+mov r2, r10\n\
+cmp r2, 0x1\n\
+bne _08117094\n\
+ldr r1, _08117090 @ =gUnknown_083F8C00\n\
+lsls r2, r6, 2\n\
+adds r0, r2, r6\n\
+lsls r0, 2\n\
+adds r1, 0x8\n\
+adds r0, r1\n\
+ldr r1, [r4, 0x8]\n\
+ldr r0, [r0]\n\
+ands r1, r0\n\
+str r2, [sp, 0x1C]\n\
+cmp r1, 0\n\
+bne _0811713C\n\
+adds r0, r6, 0\n\
+movs r1, 0x5\n\
+bl __udivsi3\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+subs r1, r0, 0x1\n\
+lsls r1, 3\n\
+mov r3, sp\n\
+adds r2, r3, r1\n\
+ldrh r1, [r2, 0x2]\n\
+adds r1, r7, r1\n\
+strh r1, [r2, 0x2]\n\
+adds r1, r4, 0\n\
+adds r1, 0xB8\n\
+lsls r0, 3\n\
+subs r0, 0x8\n\
+adds r2, r3, r0\n\
+adds r0, r1, 0\n\
+movs r1, 0xD\n\
+bl sub_812492C\n\
+b _08117122\n\
+.align 2, 0\n\
+_08117088: .4byte gSprites\n\
+_0811708C: .4byte 0x02019000\n\
+_08117090: .4byte gUnknown_083F8C00\n\
+_08117094:\n\
+movs r4, 0\n\
+lsls r0, r6, 2\n\
+str r0, [sp, 0x1C]\n\
+ldr r1, _0811714C @ =0x02019000\n\
+mov r8, r1\n\
+ldr r2, _08117150 @ =gUnknown_083F8C00\n\
+mov r9, r2\n\
+_081170A2:\n\
+lsls r0, r4, 2\n\
+adds r0, r4\n\
+adds r0, r6, r0\n\
+adds r0, 0x5\n\
+lsls r0, 24\n\
+lsrs r2, r0, 24\n\
+lsls r0, r2, 2\n\
+adds r0, r2\n\
+lsls r5, r0, 2\n\
+mov r0, r9\n\
+adds r0, 0x8\n\
+adds r0, r5, r0\n\
+mov r3, r8\n\
+ldr r1, [r3, 0x8]\n\
+ldr r0, [r0]\n\
+ands r1, r0\n\
+cmp r1, 0\n\
+bne _0811710E\n\
+adds r0, r2, 0\n\
+movs r1, 0x5\n\
+bl __udivsi3\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+subs r1, r0, 0x1\n\
+lsls r1, 3\n\
+mov r3, sp\n\
+adds r2, r3, r1\n\
+ldrh r1, [r2, 0x2]\n\
+adds r1, r7, r1\n\
+strh r1, [r2, 0x2]\n\
+adds r1, r4, 0\n\
+adds r1, 0xD\n\
+lsls r1, 24\n\
+lsrs r1, 24\n\
+lsls r0, 3\n\
+subs r0, 0x8\n\
+adds r2, r3, r0\n\
+mov r0, r8\n\
+adds r0, 0xB8\n\
+bl sub_812492C\n\
+mov r0, r10\n\
+cmp r0, 0x3\n\
+bne _08117104\n\
+mov r1, r9\n\
+adds r0, r5, r1\n\
+ldrh r0, [r0, 0x10]\n\
+str r0, [sp, 0x18]\n\
+_08117104:\n\
+mov r0, r10\n\
+subs r0, 0x1\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+mov r10, r0\n\
+_0811710E:\n\
+adds r0, r4, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+cmp r4, 0x2\n\
+bls _081170A2\n\
+mov r2, r10\n\
+cmp r2, 0x2\n\
+beq _08117122\n\
+movs r3, 0\n\
+str r3, [sp, 0x18]\n\
+_08117122:\n\
+ldr r0, _08117154 @ =0x020190b8\n\
+ldr r2, _08117150 @ =gUnknown_083F8C00\n\
+ldr r4, [sp, 0x1C]\n\
+adds r1, r4, r6\n\
+lsls r1, 2\n\
+adds r1, r2\n\
+ldrh r1, [r1, 0x10]\n\
+ldr r2, [sp, 0x18]\n\
+orrs r2, r1\n\
+str r2, [sp, 0x18]\n\
+adds r1, r2, 0\n\
+bl sub_8124CE8\n\
+_0811713C:\n\
+add sp, 0x20\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\
+_0811714C: .4byte 0x02019000\n\
+_08117150: .4byte gUnknown_083F8C00\n\
+_08117154: .4byte 0x020190b8\n\
+.syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING //not enough stack usage
+void sub_8117158(u8 r0)
+{
+ u8 i;
+ u8 l;
+ u8 v[0x5];
+ u8 z;
+ u8 var0;
+ u8 var1;
+ u16 var2;
+ eRoulette->var2A = 0x1;
+ sub_8117AA8(0x0, 0x0);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD);
+ switch(r0)
+ {
+ case 0x0:
+ return;
+ case 0x1 ... 0x4:
+ l = 0x4;
+ for (i = 0x0; i < l; i++)
+ v[i] = i * 0x5 + r0;
+ break;
+ case 0x5:
+ case 0xA:
+ case 0xF:
+ l = 0x5;
+ for (i = 0x0; i < l; i++)
+ v[i] = i + r0;
+ break;
+ default:
+ l = 0x1;
+ v[0] = r0;
+ }
+ for (i = 0x0; i < l; i++)
+ {
+ //_0811727C
+ var0 = gUnknown_083F8C00[v[i]].var06;
+ var1 = gUnknown_083F8C00[v[i]].var03;
+ for (z = 0; z < 0x3; z++)
+ {
+ var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 0x20;
+ gBGTilemapBuffers[2][var2 + var1 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0];
+ gBGTilemapBuffers[2][var2 + var1 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1];
+ gBGTilemapBuffers[2][var2 + var1 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2];
+ }
+ //_08117350
+ }
+}
+#else
+__attribute__((naked))
+void sub_8117158(u8 r0)
+{
+asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+mov r7, r10\n\
+mov r6, r9\n\
+mov r5, r8\n\
+push {r5-r7}\n\
+sub sp, 0x24\n\
+lsls r0, 24\n\
+lsrs r5, r0, 24\n\
+ldr r4, _0811719C @ =0x02019000\n\
+movs r0, 0x1\n\
+strh r0, [r4, 0x2A]\n\
+movs r0, 0\n\
+movs r1, 0\n\
+bl sub_8117AA8\n\
+ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800\n\
+ldr r1, _081171A4 @ =0xfffff800\n\
+adds r4, r1\n\
+movs r1, 0x10\n\
+str r1, [sp]\n\
+movs r1, 0xD\n\
+str r1, [sp, 0x4]\n\
+adds r1, r4, 0\n\
+movs r2, 0xE\n\
+movs r3, 0x7\n\
+bl sub_8124E2C\n\
+cmp r5, 0xF\n\
+bhi _08117250\n\
+lsls r0, r5, 2\n\
+ldr r1, _081171A8 @ =_081171AC\n\
+adds r0, r1\n\
+ldr r0, [r0]\n\
+mov pc, r0\n\
+.align 2, 0\n\
+_0811719C: .4byte 0x02019000\n\
+_081171A0: .4byte gBGTilemapBuffers + 0x800\n\
+_081171A4: .4byte 0xfffff800\n\
+_081171A8: .4byte _081171AC\n\
+.align 2, 0\n\
+_081171AC:\n\
+.4byte _08117360\n\
+.4byte _081171EC\n\
+.4byte _081171EC\n\
+.4byte _081171EC\n\
+.4byte _081171EC\n\
+.4byte _08117220\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117220\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117250\n\
+.4byte _08117220\n\
+_081171EC:\n\
+movs r0, 0x4\n\
+str r0, [sp, 0x18]\n\
+add r1, sp, 0x8\n\
+movs r0, 0\n\
+strb r0, [r1]\n\
+adds r0, r1, 0\n\
+ldrb r0, [r0]\n\
+cmp r0, 0x3\n\
+bhi _08117258\n\
+add r4, sp, 0x10\n\
+adds r3, r1, 0\n\
+_08117202:\n\
+ldrb r2, [r3]\n\
+adds r2, r4\n\
+ldrb r1, [r3]\n\
+lsls r0, r1, 2\n\
+adds r0, r1\n\
+adds r0, r5, r0\n\
+strb r0, [r2]\n\
+ldrb r0, [r3]\n\
+adds r0, 0x1\n\
+strb r0, [r3]\n\
+ldrb r0, [r3]\n\
+ldr r1, [sp, 0x18]\n\
+cmp r0, r1\n\
+bcc _08117202\n\
+b _08117258\n\
+_08117220:\n\
+movs r0, 0x5\n\
+str r0, [sp, 0x18]\n\
+add r1, sp, 0x8\n\
+movs r0, 0\n\
+strb r0, [r1]\n\
+adds r0, r1, 0\n\
+ldrb r0, [r0]\n\
+cmp r0, 0x4\n\
+bhi _08117258\n\
+add r3, sp, 0x10\n\
+adds r2, r1, 0\n\
+_08117236:\n\
+ldrb r1, [r2]\n\
+adds r1, r3\n\
+ldrb r0, [r2]\n\
+adds r0, r5, r0\n\
+strb r0, [r1]\n\
+ldrb r0, [r2]\n\
+adds r0, 0x1\n\
+strb r0, [r2]\n\
+ldrb r0, [r2]\n\
+ldr r1, [sp, 0x18]\n\
+cmp r0, r1\n\
+bcc _08117236\n\
+b _08117258\n\
+_08117250:\n\
+movs r0, 0x1\n\
+str r0, [sp, 0x18]\n\
+add r0, sp, 0x10\n\
+strb r5, [r0]\n\
+_08117258:\n\
+add r1, sp, 0x8\n\
+movs r0, 0\n\
+strb r0, [r1]\n\
+adds r0, r1, 0\n\
+ldrb r0, [r0]\n\
+ldr r1, [sp, 0x18]\n\
+cmp r0, r1\n\
+bcs _08117360\n\
+mov r0, sp\n\
+adds r0, 0xE\n\
+str r0, [sp, 0x1C]\n\
+add r1, sp, 0x10\n\
+mov r9, r1\n\
+add r0, sp, 0x8\n\
+mov r12, r0\n\
+mov r1, sp\n\
+adds r1, 0xA\n\
+str r1, [sp, 0x20]\n\
+_0811727C:\n\
+mov r1, r12\n\
+ldrb r0, [r1]\n\
+add r0, r9\n\
+ldrb r1, [r0]\n\
+lsls r0, r1, 2\n\
+adds r0, r1\n\
+lsls r0, 2\n\
+ldr r1, _08117370 @ =gUnknown_083F8C00\n\
+adds r0, r1\n\
+ldrb r0, [r0, 0x6]\n\
+ldr r1, [sp, 0x1C]\n\
+strb r0, [r1]\n\
+mov r1, r12\n\
+ldrb r0, [r1]\n\
+add r0, r9\n\
+ldrb r1, [r0]\n\
+lsls r0, r1, 2\n\
+adds r0, r1\n\
+lsls r0, 2\n\
+ldr r1, _08117370 @ =gUnknown_083F8C00\n\
+adds r0, r1\n\
+ldrb r0, [r0, 0x3]\n\
+ldr r1, [sp, 0x20]\n\
+strh r0, [r1]\n\
+mov r4, sp\n\
+adds r4, 0x9\n\
+movs r0, 0\n\
+strb r0, [r4]\n\
+ldrb r0, [r4]\n\
+cmp r0, 0x2\n\
+bhi _08117350\n\
+add r5, sp, 0xC\n\
+ldr r7, [sp, 0x20]\n\
+ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800\n\
+mov r8, r0\n\
+ldr r6, [sp, 0x1C]\n\
+ldr r1, _08117378 @ =0x020189a0\n\
+mov r10, r1\n\
+_081172C8:\n\
+mov r1, r12\n\
+ldrb r0, [r1]\n\
+add r0, r9\n\
+ldrb r0, [r0]\n\
+lsls r1, r0, 2\n\
+adds r1, r0\n\
+lsls r1, 2\n\
+ldr r0, _08117370 @ =gUnknown_083F8C00\n\
+adds r1, r0\n\
+adds r3, r4, 0\n\
+ldrb r0, [r4]\n\
+ldrb r1, [r1, 0x4]\n\
+adds r0, r1\n\
+lsls r0, 5\n\
+strh r0, [r5]\n\
+ldrh r0, [r7]\n\
+ldrh r2, [r5]\n\
+adds r2, r0\n\
+lsls r2, 1\n\
+add r2, r8\n\
+ldrb r0, [r6]\n\
+ldrb r1, [r4]\n\
+adds r1, r0\n\
+lsls r0, r1, 1\n\
+adds r0, r1\n\
+lsls r0, 1\n\
+add r0, r10\n\
+ldrh r0, [r0]\n\
+strh r0, [r2]\n\
+ldrh r0, [r7]\n\
+ldrh r2, [r5]\n\
+adds r2, r0\n\
+adds r2, 0x1\n\
+lsls r2, 1\n\
+add r2, r8\n\
+ldrb r0, [r6]\n\
+ldrb r1, [r4]\n\
+adds r1, r0\n\
+lsls r0, r1, 1\n\
+adds r0, r1\n\
+lsls r0, 1\n\
+mov r1, r10\n\
+adds r1, 0x2\n\
+adds r0, r1\n\
+ldrh r0, [r0]\n\
+strh r0, [r2]\n\
+ldrh r0, [r7]\n\
+ldrh r2, [r5]\n\
+adds r2, r0\n\
+adds r2, 0x2\n\
+lsls r2, 1\n\
+add r2, r8\n\
+ldrb r0, [r6]\n\
+ldrb r1, [r4]\n\
+adds r1, r0\n\
+lsls r0, r1, 1\n\
+adds r0, r1\n\
+lsls r0, 1\n\
+ldr r1, _0811737C @ =0x020189a4\n\
+adds r0, r1\n\
+ldrh r0, [r0]\n\
+strh r0, [r2]\n\
+ldrb r0, [r4]\n\
+adds r0, 0x1\n\
+strb r0, [r4]\n\
+ldrb r0, [r3]\n\
+cmp r0, 0x2\n\
+bls _081172C8\n\
+_08117350:\n\
+mov r1, r12\n\
+ldrb r0, [r1]\n\
+adds r0, 0x1\n\
+strb r0, [r1]\n\
+ldrb r0, [r1]\n\
+ldr r1, [sp, 0x18]\n\
+cmp r0, r1\n\
+bcc _0811727C\n\
+_08117360:\n\
+add sp, 0x24\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\
+_08117370: .4byte gUnknown_083F8C00\n\
+_08117374: .4byte gBGTilemapBuffers + 0x800\n\
+_08117378: .4byte 0x020189a0\n\
+_0811737C: .4byte 0x020189a4\n\
+.syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING
+u8 sub_8117380(u8 r0)
+{
+ u8 var0[0x5];
+ u8 t;
+ u8 z;
+ memcpy(var0, gUnknown_083F8EF4, 0x5);
+ if (r0 > 0x13)
+ r0 = 0x0;
+ switch (gUnknown_083F8C00[r0].var01_0)
+ {
+ case 0x3:
+ z = r0 / 0x5 - 0x1;
+ if (eRoulette->var16[z] > 0x3)
+ return 0x0;
+ return var0[eRoulette->var16[z] + 0x1];
+ case 0x4:
+ t = r0 - 0x1;
+ if (eRoulette->var12[t] > 0x2)
+ return 0x0;
+ return var0[eRoulette->var12[t] + 0x2];
+ case 0xC:
+ if (eRoulette->var08 & gUnknown_083F8C00[r0].var08)
+ return 0x0;
+ return var0[0x4];
+ default:
+ }
+ return 0x0;
+}
+#else
+__attribute__((naked))
+u8 sub_8117380(u8 r0)
+{
+asm(".syntax unified\n\
+push {r4,lr}\n\
+sub sp, 0x8\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r1, _081173B8 @ =gUnknown_083F8EF4\n\
+mov r0, sp\n\
+movs r2, 0x5\n\
+bl memcpy\n\
+cmp r4, 0x13\n\
+bls _08117398\n\
+movs r4, 0\n\
+_08117398:\n\
+ldr r3, _081173BC @ =gUnknown_083F8C00\n\
+lsls r0, r4, 2\n\
+adds r0, r4\n\
+lsls r2, r0, 2\n\
+adds r0, r2, r3\n\
+ldrb r0, [r0, 0x1]\n\
+lsls r0, 28\n\
+lsrs r0, 28\n\
+cmp r0, 0x4\n\
+beq _081173EC\n\
+cmp r0, 0x4\n\
+bgt _081173C0\n\
+cmp r0, 0x3\n\
+beq _081173C6\n\
+b _08117428\n\
+.align 2, 0\n\
+_081173B8: .4byte gUnknown_083F8EF4\n\
+_081173BC: .4byte gUnknown_083F8C00\n\
+_081173C0:\n\
+cmp r0, 0xC\n\
+beq _0811740C\n\
+b _08117428\n\
+_081173C6:\n\
+adds r0, r4, 0\n\
+movs r1, 0x5\n\
+bl __udivsi3\n\
+subs r0, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r0, _081173E8 @ =0x02019000\n\
+adds r0, 0x16\n\
+adds r1, r4, r0\n\
+ldrb r0, [r1]\n\
+cmp r0, 0x3\n\
+bhi _08117428\n\
+ldrb r0, [r1]\n\
+adds r0, 0x1\n\
+b _08117402\n\
+.align 2, 0\n\
+_081173E8: .4byte 0x02019000\n\
+_081173EC:\n\
+subs r0, r4, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r0, _08117408 @ =0x02019000\n\
+adds r0, 0x12\n\
+adds r1, r4, r0\n\
+ldrb r0, [r1]\n\
+cmp r0, 0x2\n\
+bhi _08117428\n\
+ldrb r0, [r1]\n\
+adds r0, 0x2\n\
+_08117402:\n\
+add r0, sp\n\
+ldrb r0, [r0]\n\
+b _0811742A\n\
+.align 2, 0\n\
+_08117408: .4byte 0x02019000\n\
+_0811740C:\n\
+ldr r1, _08117424 @ =0x02019000\n\
+adds r0, r3, 0\n\
+adds r0, 0x8\n\
+adds r0, r2, r0\n\
+ldr r1, [r1, 0x8]\n\
+ldr r0, [r0]\n\
+ands r1, r0\n\
+cmp r1, 0\n\
+bne _08117428\n\
+mov r0, sp\n\
+ldrb r0, [r0, 0x4]\n\
+b _0811742A\n\
+.align 2, 0\n\
+_08117424: .4byte 0x02019000\n\
+_08117428:\n\
+movs r0, 0\n\
+_0811742A:\n\
+add sp, 0x8\n\
+pop {r4}\n\
+pop {r1}\n\
+bx r1\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8117434(void)
+{
+ s32 x1;
+ s32 x2;
+ REG_BG2PA = eRoulette->var2C.a;
+ REG_BG2PB = eRoulette->var2C.b;
+ REG_BG2PC = eRoulette->var2C.c;
+ REG_BG2PD = eRoulette->var2C.d;
+ x1 = 0x7400 - eRoulette->var2C.a * (gSpriteCoordOffsetX + 0x74)
+ - eRoulette->var2C.b * (gSpriteCoordOffsetY + 0x50);
+ x2 = 0x5400 - eRoulette->var2C.c * (gSpriteCoordOffsetX + 0x74)
+ - eRoulette->var2C.d * (gSpriteCoordOffsetY + 0x50);
+ REG_BG2X_L = x1;
+ REG_BG2X_H = (x1 & 0x0fff0000) >> 16;
+ REG_BG2Y_L = x2;
+ REG_BG2Y_H = (x2 & 0x0fff0000) >> 16;
+}
+
+s16 sub_81174C4(s16 r0, s16 r1)
+{
+ s32 t = r0 * r1;
+ t /= 0x100;
+ return t;
+}
+
+s16 sub_81174E0(s16 r0)
+{
+ s32 t = 0x10000;
+ return t / r0;
+}
+
+void sub_81174F8(u8 r0)
+{
+ DisplayYesNoMenu(0x14, 0x8, 0x1);
+ sub_814AAF8(0x2D9E);
+ DoYesNoFuncWithChoice(r0, &gUnknown_083F8EB4);
+}
+
+void sub_8117528(u8 taskid)
+{
+ if (!gPaletteFade.active)
+ {
+ SetVBlankCallback(NULL);
+ SetMainCallback2(&sub_8115384);
+ DestroyTask(taskid);
+ }
+}
+
+void sub_811755C(u8 taskid)
+{
+ MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD);
+ MenuZeroFillScreen();
+ BeginNormalPaletteFade(-0x1, 0x0, 0x0, 0x10, 0x0);
+ gPaletteFade.delayCounter = gPaletteFade.multipurpose2;
+ UpdatePaletteFade();
+ gTasks[taskid].func = &sub_8117528;
+}
+
+void sub_81175C0(u8 taskid)
+{
+ MenuZeroFillScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskid);
+}
+
+void sub_81175DC(u8 taskid)
+{
+ gTasks[taskid].data[0]++;
+ if (!(gMain.newKeys & (A_BUTTON | B_BUTTON)) && gTasks[taskid].data[0] < 0x3D)
+ return;
+ gSpecialVar_0x8004 = 0x1;
+ MenuZeroFillScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskid);
+}
+
+void sub_8117630(u8 taskid)
+{
+ u32 temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)];
+ ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1);
+ StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(gStringVar4, 0x1, 0xF);
+ gTasks[taskid].func = &sub_81174F8;
+}
+
+void Task_Roulette_0(u8 taskid)
+{
+ s32 temp;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskid].data[0xD], 0x1, 0x4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuDrawTextWindow(0x0, 0x0, 0x9, 0x3);
+ MenuPrint_RightAligned(gStringVar4, 0x9, 0x1);
+ temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)];
+ ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1);
+ if (gTasks[taskid].data[0xD] >= temp)
+ {
+ if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 0x1))
+ {
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(&gUnknown_081C4139, 0x1, 0xF);
+ sub_8116C34(taskid , &sub_8117630, 0xFFFF, 0x3);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(gStringVar4, 0x1, 0xF);
+ gTasks[taskid].func = &sub_81174F8;
+ }
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, &gUnknown_081C411C);
+ MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13);
+ MenuPrint(gStringVar4, 0x1, 0xF);
+ gTasks[taskid].func = &sub_81175DC;
+ gTasks[taskid].data[0xD] = 0x0;
+ gTasks[taskid].data[0x0] = 0x0;
+ }
+}
+
+void PlayRoulette(void)
+{
+ u8 taskid;
+ ScriptContext2_Enable();
+ taskid = CreateTask(&Task_Roulette_0, 0x0);
+ gTasks[taskid].data[0xD] = gSaveBlock1.coins;
+}
+
+void sub_8117838(u8 r0)
+{
+ if (!r0)
+ {
+ FreeAllSpritePalettes();
+ LoadSpritePalettes(&gUnknown_083F9E30);
+ LZ77UnCompWram(gUnknown_083F92A8, ewram17000);
+ LZ77UnCompWram(gUnknown_083F90FC, ewram17E00);
+ LZ77UnCompWram(gUnknown_083F9D3C, ewram18000);
+ }
+ else
+ {
+ FreeAllSpritePalettes();
+ }
+}
+
+u8 sub_8117890(const struct SpriteTemplate *r0, u8 r1, u16 *r2)
+{
+ u16 temp;
+ u8 spriteid = CreateSprite(r0, 0x74, 0x50, r0->oam->y);
+ gSprites[spriteid].data[0] = *r2;
+ gSprites[spriteid].data[1] = r1;
+ gSprites[spriteid].coordOffsetEnabled = TRUE;
+ gSprites[spriteid].animPaused = TRUE;
+ gSprites[spriteid].affineAnimPaused = TRUE;
+ temp = *r2;
+ *r2 += 0x1E;
+ if (*r2 > 0x167)
+ *r2 = temp - 0x14A;
+ return spriteid;
+}
+
+void sub_8117900(void)
+{
+ u8 i, j;
+ u8 spriteid;
+ struct SpriteSheet s;
+ LZ77UnCompWram(gUnknown_083F9F54.data, gSharedMem);
+ s.data = gSharedMem;
+ s.size = gUnknown_083F9F54.size;
+ s.tag = gUnknown_083F9F54.tag;
+ LoadSpriteSheet(&s);
+ LZ77UnCompWram(gUnknown_083F9F5C.data, gSharedMem);
+ s.data = gSharedMem;
+ s.size = gUnknown_083F9F5C.size;
+ s.tag = gUnknown_083F9F5C.tag;
+ LoadSpriteSheet(&s);
+ for (i = 0; i < 0x3; i++)
+ {
+ u8 o = i * 0x18;
+ for (j = 0; j < 0x4; j++)
+ {
+ spriteid = eRoulette->var3C[0x1D + i * 0x4 + j] =
+ CreateSprite(&gSpriteTemplate_83FA07C[j], j * 0x18 + 0x94, o + 0x5C, 0x1E);
+ gSprites[spriteid].animPaused = TRUE;
+ o += 0x18;
+ if (o > 0x47)
+ o = 0x0;
+ }
+ }
+ for (i = 0x0; i < 0x4; i++)
+ {
+ spriteid = eRoulette->var3C[0x29 + i] =
+ CreateSprite(&gSpriteTemplate_83F9FD4[i], (s16)(i * 0x18 + 0x94), 0x46, 0x1E);
+ gSprites[spriteid].animPaused = TRUE;
+ }
+ for (i = 0x0; i < 0x3; i++)
+ {
+ spriteid = eRoulette->var3C[0x2D + i] =
+ CreateSprite(&gSpriteTemplate_83FA034[i], 0x7E, (s16)(i * 0x18 + 0x5C), 0x1E);
+ gSprites[spriteid].animPaused = TRUE;
+ }
+}
+
+void unref_sub_8117A74(void) //destroy all sprites at 0x1D
+{
+ u8 i;
+ for (i = 0x0; i < 0xC; i++)
+ DestroySprite(&gSprites[eRoulette->var3C[0x1D + i]]);
+}
+
+void sub_8117AA8(u8 r0, u8 r1)
+{
+ u8 i;
+ switch(r0)
+ {
+ case 0x1:
+ for (i = 0x0; i < 0x13; i++)
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE;
+ break;
+ case 0x0:
+ for (i = 0x0; i < 0xC; i++)
+ {
+ if (!(eRoulette->var08 & gUnknown_083F8D90[i].var04))
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
+ else if(!(gUnknown_083F8D90[i].var02 == r1))
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE;
+ else
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
+ }
+ for ( ; i < 0x13; i++)
+ gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
+ break;
+ }
+}
+
+void sub_8117BBC(void)
+{
+ u8 i;
+ for (i = 0x0; i < 0x6; i++)
+ {
+ eRoulette->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA);
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1;
+ gSprites[eRoulette->var3C[0x31 + i]].callback = &sub_81184CC;
+ gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1;
+ StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8);
+ }
+}
+
+void sub_8117C60(u8 r0, u8 r1)
+{
+ u8 i = 0x0;
+ if (r0)
+ {
+ for ( ; i < 0x6; i++)
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
+ }
+ else
+ {
+ for ( ; i < 0x6; i++)
+ {
+ if (!(eRoulette->var0C[i]) || (i == r1))
+ {
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
+ }
+ else
+ {
+ gSprites[eRoulette->var3C[0x31 + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[eRoulette->var0C[i]].var03 + 0x1) * 0x8 + 0x4;
+ gSprites[eRoulette->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[eRoulette->var0C[i]].var04 + 0x1) * 0x8 + 0x3;
+ }
+ }
+ }
+}
+
+void sub_8117D68(u8 r0)
+{
+ if (!r0)
+ {
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
+ }
+ else
+ {
+ gSprites[eRoulette->var3C[0x30]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8;
+ gSprites[eRoulette->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8;
+ }
+}
+
+void sub_8117DF4(void)
+{
+ u8 i, j;
+ u16 k;
+ struct SpriteSheet s;
+ LZ77UnCompWram(gUnknown_083F9EE8.data, gSharedMem);
+ s.data = gSharedMem;
+ s.size = gUnknown_083F9EE8.size;
+ s.tag = gUnknown_083F9EE8.tag;
+ LoadSpriteSheet(&s);
+ k = 0xF;
+ for (i = 0x0; i < 0x3; i++)
+ {
+ for (j = 0x0; j < 0x4; j++)
+ {
+ u8 spriteid;
+ spriteid =
+ eRoulette->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k);
+ gSprites[spriteid].animPaused = TRUE;
+ gSprites[spriteid].affineAnimPaused = TRUE;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+void sub_8117E98(struct Sprite *sprite)
+{
+ struct OamMatrix *m;
+ u8 p;
+ u16 angle;
+ s16 cos, sin, z;
+ u32 cos32;
+ angle = eRoulette->var24 + sprite->data[0x0];
+ z = angle;
+ if (z > 359)
+ angle = z - 360;
+ sin = Sin2(angle);
+ cos = Cos2(angle);
+ sprite->pos2.x = sin * sprite->data[0x1] >> 0xC;
+ sprite->pos2.y = -cos * sprite->data[0x1] >> 0xC;
+ p = sprite->oam.matrixNum;
+ sin = sin / 0x10;
+ m = &gOamMatrices[p];
+ cos32 = cos / 0x10;
+
+ m->d = cos32;
+ m->a = cos32;
+ m->b = sin;
+ m->c = -sin;
+}
+#else
+__attribute__((naked))
+void sub_8117E98(struct Sprite *r0)
+{
+asm(".syntax unified\n\
+push {r4-r6,lr}\n\
+adds r6, r0, 0\n\
+ldr r0, _08117F1C @ =0x02019000\n\
+ldrh r1, [r6, 0x2E]\n\
+ldrh r0, [r0, 0x24]\n\
+adds r1, r0\n\
+lsls r1, 16\n\
+lsrs r4, r1, 16\n\
+asrs r1, 16\n\
+ldr r0, _08117F20 @ =0x00000167\n\
+cmp r1, r0\n\
+ble _08117EB8\n\
+ldr r2, _08117F24 @ =0xfffffe98\n\
+adds r0, r1, r2\n\
+lsls r0, 16\n\
+lsrs r4, r0, 16\n\
+_08117EB8:\n\
+adds r0, r4, 0\n\
+bl Sin2\n\
+lsls r0, 16\n\
+lsrs r5, r0, 16\n\
+adds r0, r4, 0\n\
+bl Cos2\n\
+lsls r2, r5, 16\n\
+asrs r2, 16\n\
+movs r3, 0x30\n\
+ldrsh r1, [r6, r3]\n\
+muls r1, r2\n\
+asrs r1, 12\n\
+strh r1, [r6, 0x24]\n\
+lsls r0, 16\n\
+asrs r4, r0, 16\n\
+negs r1, r4\n\
+movs r3, 0x30\n\
+ldrsh r0, [r6, r3]\n\
+muls r0, r1\n\
+asrs r0, 12\n\
+strh r0, [r6, 0x26]\n\
+ldrb r0, [r6, 0x3]\n\
+lsls r0, 26\n\
+lsrs r3, r0, 27\n\
+cmp r2, 0\n\
+bge _08117EF2\n\
+adds r2, 0xF\n\
+_08117EF2:\n\
+lsls r0, r2, 12\n\
+lsrs r5, r0, 16\n\
+ldr r1, _08117F28 @ =gOamMatrices\n\
+lsls r0, r3, 3\n\
+adds r1, r0, r1\n\
+adds r0, r4, 0\n\
+cmp r0, 0\n\
+bge _08117F04\n\
+adds r0, 0xF\n\
+_08117F04:\n\
+asrs r0, 4\n\
+strh r0, [r1, 0x6]\n\
+strh r0, [r1]\n\
+strh r5, [r1, 0x2]\n\
+lsls r0, r5, 16\n\
+asrs r0, 16\n\
+negs r0, r0\n\
+strh r0, [r1, 0x4]\n\
+pop {r4-r6}\n\
+pop {r0}\n\
+bx r0\n\
+.align 2, 0\n\
+_08117F1C: .4byte 0x02019000\n\
+_08117F20: .4byte 0x00000167\n\
+_08117F24: .4byte 0xfffffe98\n\
+_08117F28: .4byte gOamMatrices\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8117F2C(void)
+{
+ u8 i;
+ for (i = 0x0; i < 0x5; i++)
+ {
+ struct SpriteSheet s;
+ LZ77UnCompWram(gUnknown_083FA21C[i].data, gSharedMem);
+ s.data = gSharedMem;
+ s.size = gUnknown_083FA21C[i].size;
+ s.tag = gUnknown_083FA21C[i].tag;
+ LoadSpriteSheet(&s);
+ }
+ eRoulette->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4);
+ gSprites[eRoulette->var3C[0x14]].animPaused = TRUE;
+ for (i = 0x0; i < 0x4; i++)
+ {
+ eRoulette->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0);
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x15 + i]].animPaused = TRUE;
+ }
+ eRoulette->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4);
+ gSprites[eRoulette->var3C[0x19]].animPaused = TRUE;
+ for (i = 0x0; i < 0x3; i++)
+ {
+ eRoulette->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4);
+ gSprites[eRoulette->var3C[0x1A + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x1A + i]].animPaused = TRUE;
+ }
+ eRoulette->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9);
+ gSprites[eRoulette->var3C[0x30]].oam.priority = 0x1;
+ gSprites[eRoulette->var3C[0x30]].animPaused = TRUE;
+ gSprites[eRoulette->var3C[0x30]].invisible = TRUE;
+}
+
+void sub_81180F4(u16 r0)
+{
+ u8 i;
+ u16 d = 1000;
+ bool8 v = FALSE;
+ for (i = 0x0; i < 0x4; i++)
+ {
+ u8 t = r0 / d;
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE;
+ if (t > 0x0 || v || i == 0x3)
+ {
+ gSprites[eRoulette->var3C[0x15 + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x15 + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x15 + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x15 + i]].anims + t)->type;
+ v = TRUE;
+ }
+ r0 = r0 % d;
+ d = d / 10;
+ }
+}
+
+#ifdef NONMATCHING
+u8 sub_81181E8(u8 r0)
+{
+ u8 t[0x5];
+ memcpy(&t, &gUnknown_083FA608, 0x5);
+ if (r0 > 0x13)
+ r0 = 0x0;
+ switch(gUnknown_083F8C00[r0].var01_0)
+ {
+ case 0x3:
+ r0 = r0 / 0x5 - 0x1;
+ if ((u32)eRoulette->var16[r0] < 0x4)
+ return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads
+ break;
+ case 0x4:
+ r0 = r0 - 0x1;
+ if (eRoulette->var12[r0] < 0x3)
+ return t[0x2 + eRoulette->var12[r0]];
+ break;
+ case 0xC:
+ if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
+ return t[0x4];
+ break;
+ }
+ return 0x0;
+}
+#else
+__attribute__((naked))
+u8 sub_81181E8(u8 r0)
+{
+asm(".syntax unified\n\
+push {r4,lr}\n\
+sub sp, 0x8\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r1, _08118220 @ =gUnknown_083FA608\n\
+mov r0, sp\n\
+movs r2, 0x5\n\
+bl memcpy\n\
+cmp r4, 0x13\n\
+bls _08118200\n\
+movs r4, 0\n\
+_08118200:\n\
+ldr r3, _08118224 @ =gUnknown_083F8C00\n\
+lsls r0, r4, 2\n\
+adds r0, r4\n\
+lsls r2, r0, 2\n\
+adds r0, r2, r3\n\
+ldrb r0, [r0, 0x1]\n\
+lsls r0, 28\n\
+lsrs r0, 28\n\
+cmp r0, 0x4\n\
+beq _08118254\n\
+cmp r0, 0x4\n\
+bgt _08118228\n\
+cmp r0, 0x3\n\
+beq _0811822E\n\
+b _08118290\n\
+.align 2, 0\n\
+_08118220: .4byte gUnknown_083FA608\n\
+_08118224: .4byte gUnknown_083F8C00\n\
+_08118228:\n\
+cmp r0, 0xC\n\
+beq _08118274\n\
+b _08118290\n\
+_0811822E:\n\
+adds r0, r4, 0\n\
+movs r1, 0x5\n\
+bl __udivsi3\n\
+subs r0, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r0, _08118250 @ =0x02019000\n\
+adds r0, 0x16\n\
+adds r1, r4, r0\n\
+ldrb r0, [r1]\n\
+cmp r0, 0x3\n\
+bhi _08118290\n\
+ldrb r0, [r1]\n\
+adds r0, 0x1\n\
+b _0811826A\n\
+.align 2, 0\n\
+_08118250: .4byte 0x02019000\n\
+_08118254:\n\
+subs r0, r4, 0x1\n\
+lsls r0, 24\n\
+lsrs r4, r0, 24\n\
+ldr r0, _08118270 @ =0x02019000\n\
+adds r0, 0x12\n\
+adds r1, r4, r0\n\
+ldrb r0, [r1]\n\
+cmp r0, 0x2\n\
+bhi _08118290\n\
+ldrb r0, [r1]\n\
+adds r0, 0x2\n\
+_0811826A:\n\
+add r0, sp\n\
+ldrb r0, [r0]\n\
+b _08118292\n\
+.align 2, 0\n\
+_08118270: .4byte 0x02019000\n\
+_08118274:\n\
+ldr r1, _0811828C @ =0x02019000\n\
+adds r0, r3, 0\n\
+adds r0, 0x8\n\
+adds r0, r2, r0\n\
+ldr r1, [r1, 0x8]\n\
+ldr r0, [r0]\n\
+ands r1, r0\n\
+cmp r1, 0\n\
+bne _08118290\n\
+mov r0, sp\n\
+ldrb r0, [r0, 0x4]\n\
+b _08118292\n\
+.align 2, 0\n\
+_0811828C: .4byte 0x02019000\n\
+_08118290:\n\
+movs r0, 0\n\
+_08118292:\n\
+add sp, 0x8\n\
+pop {r4}\n\
+pop {r1}\n\
+bx r1\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_811829C(u8 r0)
+{
+ struct Sprite *s = &gSprites[eRoulette->var3C[0x19]];
+ s->animCmdIndex = sub_81181E8(r0);
+ s->oam.tileNum =
+ s->sheetTileStart
+ + (*s->anims + s->animCmdIndex)->type;
+}
+
+void sub_81182F8(u8 r0)
+{
+ u8 i;
+ u8 t = 0x0;
+ if (eRoulette->var19 == 0x1)
+ t = 0x2;
+ switch(r0)
+ {
+ case 0x6:
+ for (i = 0x0; i < 0x3; i++)
+ {
+ gSprites[eRoulette->var3C[0x1A + i]].invisible = FALSE;
+ gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A + i]].anims)->type;
+ }
+ break;
+ case 0x5:
+ gSprites[eRoulette->var3C[0x1C]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1C]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x1)->type;
+ break;
+ case 0x4:
+ gSprites[eRoulette->var3C[0x1C]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1C]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x2)->type;
+ break;
+ case 0x3:
+ gSprites[eRoulette->var3C[0x1B]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1B]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x1)->type;
+ break;
+ case 0x2:
+ gSprites[eRoulette->var3C[0x1B]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1B]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x2)->type;
+ break;
+ case 0x1:
+ gSprites[eRoulette->var3C[0x1A]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A]].anims + t + 0x1)->type;
+ break;
+ case 0x0:
+ default:
+ for (i = 0x0; i < 0x3; i++)
+ {
+ gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum =
+ gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart
+ + (*gSprites[eRoulette->var3C[0x1A + i]].anims + t + 2)->type;
+ }
+ }
+}
+
+void sub_81184CC(struct Sprite *sprite)
+{
+ sprite->pos2.x = eRoulette->var26;
+}
+
+void sub_81184D8(void)
+{
+ u8 spriteid;
+ struct SpriteSheet s;
+ LZ77UnCompWram(gUnknown_083FA42C.data, gSharedMem);
+ s.data = gSharedMem;
+ s.size = gUnknown_083FA42C.size;
+ s.tag = gUnknown_083FA42C.tag;
+ LoadSpriteSheet(&s);
+ spriteid = CreateSprite(&gSpriteTemplate_83FA434, 0x74, 0x50, 0x51);
+ gSprites[spriteid].data[0] = eRoulette->var24;
+ gSprites[spriteid].data[1] = 0x0;
+ gSprites[spriteid].animPaused = TRUE;
+ gSprites[spriteid].affineAnimPaused = TRUE;
+ gSprites[spriteid].coordOffsetEnabled = TRUE;
+}
+
+void sub_8118554(struct Sprite *sprite)
+{
+ u32 t = sprite->oam.matrixNum;
+ struct OamMatrix *m = &gOamMatrices[0];
+ m[t].d = eRoulette->var2C.a;
+ m[t].a = eRoulette->var2C.a;
+ m[t].b = eRoulette->var2C.b;
+ m[t].c = eRoulette->var2C.c;
+}
+
+void sub_811857C(void)
+{
+ u8 i;
+ for (i = 0x0; i < 0x6; i++)
+ {
+ u8 spriteid =
+ eRoulette->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i);
+ if (spriteid != 0x40)
+ {
+ gSprites[eRoulette->var3C[i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[i]].coordOffsetEnabled = TRUE;
+ }
+ }
+}
+
+void sub_81185E8(void)
+{
+ u8 t = eRoulette->var3C[0x0];
+ u8 i;
+ for (i = 0x0; i < 0x6; i++)
+ {
+ u8 j;
+ gSprites[t].invisible = TRUE;
+ gSprites[t].callback = &SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[t], 0x0);
+ for (j = 0x0; j < 0x8; j++)
+ gSprites[t].data[j] = 0x0;
+ t++;
+ }
+}
+
+s16 sub_811866C(struct Sprite *sprite)
+{
+ if (eRoulette->var24 > sprite->data[0x3])
+ {
+ sprite->data[0x6] = 360 - eRoulette->var24 + sprite->data[0x3];
+ if (sprite->data[0x6] > 359)
+ sprite->data[0x6] -=360;
+ }
+ else
+ sprite->data[0x6] = sprite->data[0x3] - eRoulette->var24;
+ return sprite->data[0x6];
+}
+
+u8 sub_81186B8(struct Sprite *sprite)
+{
+ eRoulette->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f);
+ return eRoulette->var7E;
+}
+
+s16 sub_81186E8(struct Sprite *sprite)
+{
+ s16 t = sub_811866C(sprite) % 30;
+ u16 z;
+ if (t == 0xE)
+ {
+ z = 0x0;
+ return sprite->data[0x2] = z;
+ }
+ else if (t > 0xD)
+ {
+ z = (u16)(0x2B - t);
+ return sprite->data[0x2] = z;
+ }
+ else
+ {
+ z = (u16)(0xE - t);
+ return sprite->data[0x2] = z;
+ }
+}
+
+void sub_8118724(struct Sprite *sprite)
+{
+ s16 sin, cos;
+ eRoulette->var8C += eRoulette->var90;
+ eRoulette->var88 += eRoulette->var8C;
+ if (eRoulette->var88 >= 360)
+ eRoulette->var88 -= 360.0f;
+ else
+ if (eRoulette->var88 < 0.0f)
+ eRoulette->var88 += 360.0f;
+ sprite->data[0x3] = eRoulette->var88;
+ eRoulette->var98 += eRoulette->var9C;
+ eRoulette->var94 += eRoulette->var98;
+ sprite->data[0x4] = eRoulette->var94;
+ sin = Sin2(sprite->data[0x3]);
+ cos = Cos2(sprite->data[0x3]);
+ sprite->pos2.x = sin * sprite->data[0x4] >> 0xC;
+ sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC;
+ if (IsSEPlaying())
+ {
+ m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, sprite->pos2.x);
+ m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, sprite->pos2.x);
+ }
+}
+
+void sub_8118834(struct Sprite *sprite)
+{
+ s16 sin, cos;
+ sprite->data[0x3] = eRoulette->var24 + sprite->data[0x6];
+ if (sprite->data[0x3] > 359)
+ sprite->data[0x3] -= 360;
+ sin = Sin2(sprite->data[0x3]);
+ cos = Cos2(sprite->data[0x3]);
+ sprite->pos2.x = sin * sprite->data[0x4] >> 0xC;
+ sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC;
+ sprite->pos2.y += gSpriteCoordOffsetY;
+}
+
+void sub_811889C(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ sprite->data[0x2]++;
+ if ((u16)(sprite->data[0x4] + 0x84) > 0xD4)
+ sprite->invisible = TRUE;
+ else
+ sprite->invisible = FALSE;
+ if (!(sprite->data[0x2] < 30))
+ {
+ if (!sprite->data[0x0])
+ {
+ if (eRoulette->var94 <= eRoulette->varA0 - 2.0f)
+ {
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
+ StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
+ sub_81186B8(sprite);
+ sprite->data[0x4] = 30;
+ sub_811866C(sprite);
+ sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
+ sprite->callback = &sub_8118834;
+ m4aSongNumStartOrChange(0x47);
+ eRoulette->var9C = eRoulette->var98 = 0.0f;
+ eRoulette->var8C = -1.0f;
+ }
+ }
+ else
+ {
+ if (eRoulette->var94 >= eRoulette->varA0 - 2.0f)
+ {
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
+ StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
+ sub_81186B8(sprite);
+ sprite->data[0x4] = 30;
+ sub_811866C(sprite);
+ sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
+ sprite->callback = &sub_8118834;
+ m4aSongNumStartOrChange(0x47);
+ eRoulette->var9C = eRoulette->var98 = 0.0f;
+ eRoulette->var8C = -1.0f;
+ }
+ }
+ }
+}
+
+void sub_81189A8(struct Sprite *sprite)
+{
+ float f0, f1, f2;
+ struct StructgUnknown_083F8DF4 *p;
+ sub_8118724(sprite);
+ switch(sprite->data[0x3])
+ {
+ case 0:
+ if (sprite->data[0x0] != 0x1)
+ {
+ f0 = ((float)sprite->data[0x7]);
+ p = &gUnknown_083F8DF4[0];
+ f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1));
+ f2 = (f0 / ((float)(s32)p[eRoulette->var04_0].var0C));
+ }
+ else
+ {
+ return;
+ }
+ break;
+ case 180:
+ if (sprite->data[0x0] != 0x0)
+ {
+ f0 = ((float)sprite->data[0x7]);
+ p = &gUnknown_083F8DF4[0];
+ f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1));
+ f2 = -(f0 / ((float)(s32)p[eRoulette->var04_0].var0C));
+ }
+ else
+ {
+ return;
+ }
+ break;
+ default: return;
+ }
+ eRoulette->varA0 = eRoulette->var94;
+ eRoulette->var98 = f2;
+ eRoulette->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1)));
+ eRoulette->var8C = 0.0f;
+ sprite->animPaused = FALSE;
+ sprite->animNum = 0x0;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->callback = &sub_811889C;
+ sprite->data[0x2] = 0x0;
+}
+
+void sub_8118B30(struct Sprite *sprite)
+{
+ sprite->pos2.y = (s32)(((float)sprite->data[0x2]) * 0.05f * ((float)sprite->data[0x2])) - 45;
+ sprite->data[0x2]++;
+ if (sprite->data[0x2] > 29 && sprite->pos2.y >= 0)
+ {
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = FALSE;
+ StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
+ sub_81186B8(sprite);
+ sprite->data[0x4] = 30;
+ sub_811866C(sprite);
+ sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF;
+ sprite->callback = &sub_8118834;
+ m4aSongNumStartOrChange(0x47);
+ eRoulette->var03_6 = TRUE;
+ }
+}
+
+void sub_8118BD8(struct Sprite *sprite)
+{
+ if (sprite->data[0x2]++ < 45)
+ {
+ sprite->pos2.y--;
+ if(sprite->data[0x2] == 45)
+ {
+ if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ }
+ }
+ else
+ {
+ if (sprite->data[0x2] < sprite->data[0x7])
+ {
+ if (gSprites[eRoulette->var3C[0x37]].animDelayCounter == 0x0)
+ {
+ if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ else
+ sprite->pos2.y--;
+ }
+ }
+ else
+ {
+ sprite->animPaused = FALSE;
+ sprite->animNum = 0x1;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->data[0x2] = 0x0;
+ sprite->callback = &sub_8118B30;
+ m4aSongNumStart(0x3D);
+ }
+ }
+}
+
+void sub_8118CAC(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ switch(sprite->data[0x3])
+ {
+ case 90:
+ if (sprite->data[0x0] != 0x1)
+ {
+ sprite->callback = &sub_8118BD8;
+ sprite->data[0x2] = 0x0;
+ }
+ break;
+ case 270:
+ if (sprite->data[0x0] != 0x0)
+ {
+ sprite->callback = &sub_8118BD8;
+ sprite->data[0x2] = 0x0;
+ }
+ break;
+ }
+}
+
+void sub_8118CEC(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ switch(eRoulette->var03_0)
+ {
+ default:
+ case 0x0:
+ sub_8119224(sprite);
+ sprite->callback = &sub_81189A8;
+ break;
+ case 0x1:
+ sub_81193D4(sprite);
+ sprite->callback = &sub_8118CAC;
+ break;
+ }
+}
+
+void sub_8118D2C(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (sprite->data[0x2]-- == 0x10)
+ eRoulette->var98 *= -1.0f;
+ if (sprite->data[0x2] == 0x0)
+ {
+ if (!sprite->data[0x0])
+ {
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
+ StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
+ sub_81186B8(sprite);
+ sprite->data[0x4] = 30;
+ sub_811866C(sprite);
+ sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15;
+ sprite->callback = &sub_8118834;
+ m4aSongNumStartOrChange(0x47);
+ }
+ else
+ {
+ sprite->animPaused = TRUE;
+ m4aSongNumStart(0x38);
+ sub_811952C(sprite);
+ }
+ }
+}
+
+#ifdef NONMATCHING
+void sub_8118DE4(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ sprite->data[0x2] = 0x0;
+ sub_81186B8(sprite);
+ if (!(gUnknown_083F8D90[eRoulette->var7E].var04 & eRoulette->var08))
+ {
+ eRoulette->var7D = 0xFF;
+ eRoulette->var03_7 = 0x0;
+ StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3);
+ sub_81186B8(sprite);
+ sprite->data[0x4] = 30;
+ sub_811866C(sprite);
+ sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15;
+ sprite->callback = &sub_8118834;
+ m4aSongNumStartOrChange(0x47);
+ }
+ else
+ {
+ u8 t;
+ u32 z;
+ m4aSongNumStart(0x38);
+ if ((z = (Random() & 0x1)))
+ {
+ u32 o;
+ eRoulette->var8C = 0.0f;
+ o = (eRoulette->var7E + 0x1) % 0xC;
+ t = o;
+ eRoulette->var7F = o;
+ }
+ else
+ {
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2; // couldn't replicate loads
+ t = (eRoulette->var7E + 0xB) % 0xC;
+ eRoulette->var7F = eRoulette->var7E;
+ }
+ if (gUnknown_083F8D90[t].var04 & eRoulette->var08)
+ {
+ sprite->data[0x0] = 0x1;
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ }
+ else
+ {
+ sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08;
+ if (eRoulette->var04_0)
+ {
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01;
+ }
+ else
+ {
+ sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ if (z)
+ {
+ eRoulette->var8C = 1.5f;
+ }
+ else
+ {
+ eRoulette->var8C = -1.5f;
+ }
+ }
+ }
+ eRoulette->var98 = 0.085f;
+ sprite->callback = &sub_8118D2C;
+ sprite->data[0x1] = 0x5;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8118DE4(struct Sprite *sprite)
+{
+asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+mov r7, r9\n\
+mov r6, r8\n\
+push {r6,r7}\n\
+adds r7, r0, 0\n\
+bl sub_8118724\n\
+movs r0, 0\n\
+strh r0, [r7, 0x32]\n\
+adds r0, r7, 0\n\
+bl sub_81186B8\n\
+ldr r1, _08118E70 @ =gUnknown_083F8D90\n\
+ldr r6, _08118E74 @ =gSharedMem + 0x19000\n\
+movs r0, 0x7E\n\
+adds r0, r6\n\
+mov r8, r0\n\
+ldrb r0, [r0]\n\
+lsls r0, 3\n\
+adds r1, 0x4\n\
+adds r0, r1\n\
+ldr r0, [r0]\n\
+ldr r1, [r6, 0x8]\n\
+ands r0, r1\n\
+cmp r0, 0\n\
+bne _08118E7C\n\
+adds r1, r6, 0\n\
+adds r1, 0x7D\n\
+movs r0, 0xFF\n\
+strb r0, [r1]\n\
+ldrb r1, [r6, 0x3]\n\
+movs r0, 0x7F\n\
+ands r0, r1\n\
+strb r0, [r6, 0x3]\n\
+adds r0, r7, 0\n\
+adds r0, 0x2B\n\
+ldrb r1, [r0]\n\
+adds r1, 0x3\n\
+lsls r1, 24\n\
+lsrs r1, 24\n\
+adds r0, r7, 0\n\
+bl StartSpriteAnim\n\
+adds r0, r7, 0\n\
+bl sub_81186B8\n\
+movs r0, 0x1E\n\
+strh r0, [r7, 0x36]\n\
+adds r0, r7, 0\n\
+bl sub_811866C\n\
+movs r1, 0x3A\n\
+ldrsh r0, [r7, r1]\n\
+movs r1, 0x1E\n\
+bl __divsi3\n\
+lsls r0, 16\n\
+asrs r0, 16\n\
+lsls r1, r0, 4\n\
+subs r1, r0\n\
+lsls r1, 1\n\
+adds r1, 0xF\n\
+strh r1, [r7, 0x3A]\n\
+ldr r0, _08118E78 @ =sub_8118834\n\
+str r0, [r7, 0x1C]\n\
+movs r0, 0x47\n\
+bl m4aSongNumStartOrChange\n\
+b _08118F74\n\
+.align 2, 0\n\
+_08118E70: .4byte gUnknown_083F8D90\n\
+_08118E74: .4byte gSharedMem + 0x19000\n\
+_08118E78: .4byte sub_8118834\n\
+_08118E7C:\n\
+movs r0, 0x38\n\
+bl m4aSongNumStart\n\
+bl Random\n\
+movs r2, 0x1\n\
+mov r9, r2\n\
+mov r1, r9\n\
+ands r1, r0\n\
+mov r9, r1\n\
+cmp r1, 0\n\
+beq _08118EC0\n\
+adds r1, r6, 0\n\
+adds r1, 0x8C\n\
+ldr r0, _08118EB8 @ =0x00000000\n\
+str r0, [r1]\n\
+mov r2, r8\n\
+ldrb r0, [r2]\n\
+adds r0, 0x1\n\
+movs r1, 0xC\n\
+bl __modsi3\n\
+lsls r1, r0, 24\n\
+lsrs r2, r1, 24\n\
+adds r1, r6, 0\n\
+adds r1, 0x7F\n\
+strb r0, [r1]\n\
+ldr r5, _08118EBC @ =gUnknown_083F8DF4\n\
+b _08118EF4\n\
+.align 2, 0\n\
+_08118EB8: .4byte 0x00000000\n\
+_08118EBC: .4byte gUnknown_083F8DF4\n\
+_08118EC0:\n\
+adds r4, r6, 0\n\
+adds r4, 0x8C\n\
+ldr r5, _08118F1C @ =gUnknown_083F8DF4\n\
+ldrb r0, [r6, 0x4]\n\
+lsls r0, 30\n\
+lsrs r0, 25\n\
+adds r1, r5, 0\n\
+adds r1, 0x1C\n\
+adds r0, r1\n\
+ldr r1, [r0]\n\
+adds r0, r1, 0\n\
+bl __addsf3\n\
+str r0, [r4]\n\
+mov r0, r8\n\
+ldrb r4, [r0]\n\
+adds r0, r4, 0\n\
+adds r0, 0xB\n\
+movs r1, 0xC\n\
+bl __modsi3\n\
+lsls r0, 24\n\
+lsrs r2, r0, 24\n\
+adds r0, r6, 0\n\
+adds r0, 0x7F\n\
+strb r4, [r0]\n\
+_08118EF4:\n\
+ldr r0, _08118F20 @ =gUnknown_083F8D90\n\
+lsls r1, r2, 3\n\
+adds r0, 0x4\n\
+adds r1, r0\n\
+ldr r2, _08118F24 @ =gSharedMem + 0x19000\n\
+ldr r1, [r1]\n\
+ldr r0, [r2, 0x8]\n\
+ands r1, r0\n\
+cmp r1, 0\n\
+beq _08118F28\n\
+movs r0, 0x1\n\
+strh r0, [r7, 0x2E]\n\
+ldrb r0, [r2, 0x4]\n\
+lsls r0, 30\n\
+lsrs r0, 25\n\
+adds r0, r5\n\
+ldrb r0, [r0, 0x2]\n\
+strh r0, [r7, 0x32]\n\
+b _08118F64\n\
+.align 2, 0\n\
+_08118F1C: .4byte gUnknown_083F8DF4\n\
+_08118F20: .4byte gUnknown_083F8D90\n\
+_08118F24: .4byte gSharedMem + 0x19000\n\
+_08118F28:\n\
+strh r1, [r7, 0x2E]\n\
+ldrb r1, [r2, 0x4]\n\
+movs r0, 0x3\n\
+ands r0, r1\n\
+cmp r0, 0\n\
+beq _08118F40\n\
+lsls r0, r1, 30\n\
+lsrs r0, 25\n\
+adds r0, r5\n\
+ldrb r0, [r0, 0x1]\n\
+strh r0, [r7, 0x32]\n\
+b _08118F64\n\
+_08118F40:\n\
+lsls r0, r1, 30\n\
+lsrs r0, 25\n\
+adds r0, r5\n\
+ldrb r0, [r0, 0x2]\n\
+strh r0, [r7, 0x32]\n\
+mov r1, r9\n\
+cmp r1, 0\n\
+beq _08118F5C\n\
+adds r1, r2, 0\n\
+adds r1, 0x8C\n\
+ldr r0, _08118F58 @ =0x3f000000\n\
+b _08118F62\n\
+.align 2, 0\n\
+_08118F58: .4byte 0x3f000000\n\
+_08118F5C:\n\
+adds r1, r2, 0\n\
+adds r1, 0x8C\n\
+ldr r0, _08118F80 @ =0xbfc00000\n\
+_08118F62:\n\
+str r0, [r1]\n\
+_08118F64:\n\
+adds r1, r2, 0\n\
+adds r1, 0x98\n\
+ldr r0, _08118F84 @ =0x3dae147b\n\
+str r0, [r1]\n\
+ldr r0, _08118F88 @ =sub_8118D2C\n\
+str r0, [r7, 0x1C]\n\
+movs r0, 0x5\n\
+strh r0, [r7, 0x30]\n\
+_08118F74:\n\
+pop {r3,r4}\n\
+mov r8, r3\n\
+mov r9, r4\n\
+pop {r4-r7}\n\
+pop {r0}\n\
+bx r0\n\
+.align 2, 0\n\
+_08118F80: .4byte 0xbfc00000\n\
+_08118F84: .4byte 0x3dae147b\n\
+_08118F88: .4byte sub_8118D2C\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8118F8C(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var8C > 0.5f))
+ {
+ sub_81186B8(sprite);
+ if (sub_81186E8(sprite) == 0x0)
+ {
+ struct StructgUnknown_083F8DF4 *p;
+ eRoulette->var90 = 0.0f;
+ p = &gUnknown_083F8DF4[0];
+ eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03)
+ / ((float)(s16)((&p[eRoulette->var04_0])->var04 + 0x1));
+ sprite->data[0x1] = 0x4;
+ sprite->callback = &sub_8118DE4;
+ }
+ else
+ {
+ if (eRoulette->var90 != 0.0f)
+ {
+ if (eRoulette->var8C < 0.0f)
+ {
+ eRoulette->var90 = 0.0f;
+ eRoulette->var8C = 0.0f;
+ eRoulette->var98 /= 1.2;
+ }
+ }
+ }
+ }
+}
+
+void sub_8119088(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var94 > 40.f))
+ {
+ eRoulette->var98 = - ( 4.0f / (float)(u16)eRoulette->var86);
+ eRoulette->var90 = - (eRoulette->var8C / (float)(u16)eRoulette->var86);
+ sprite->animNum = 0x2;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->data[0x1] = 0x3;
+ sprite->callback = &sub_8118F8C;
+ }
+}
+
+void sub_8119134(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ if (!(eRoulette->var94 > 60.0f))
+ {
+ m4aSongNumStartOrChange(0x5D);
+ eRoulette->var98 = - ( 20.0f / (float)(u16)eRoulette->var84);
+ eRoulette->var90 = ((1.0f - eRoulette->var8C) / (float)(u16)eRoulette->var84);
+ sprite->animNum = 0x1;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ sprite->data[0x1] = 0x2;
+ sprite->callback = &sub_8119088;
+ }
+}
+
+void sub_81191F4(struct Sprite *sprite)
+{
+ sprite->data[0x1] = 0x1;
+ sprite->data[0x2] = 0x0;
+ sub_8118724(sprite);
+ sprite->invisible = FALSE;
+ sprite->callback = &sub_8119134;
+}
+
+void sub_8119224(struct Sprite *sprite)
+{
+ u16 t;
+ u8 i;
+ s16 s[0x2][0x2];
+ struct Roulette *p;
+ memcpy(s, &gUnknown_083FA60E, 0x8);
+ t = sprite->data[0x7] - 0x2;
+ p = eRoulette;
+ p->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA50C, 0x24, -0xC, 0x32);
+ p->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5C0[0x0], s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x3B);
+ p->var3C[0x39] = CreateSprite(&gSpriteTemplate_83FA5C0[0x1], 0x24, 0x8C, 0x33);
+ gSprites[eRoulette->var3C[0x39]].oam.objMode = 0x1;
+ for (i = 0x0; i < 0x3; i++)
+ {
+ gSprites[eRoulette->var3C[0x37 + i]].coordOffsetEnabled = FALSE;
+ gSprites[eRoulette->var3C[0x37 + i]].invisible = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].animPaused = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].affineAnimPaused = TRUE;
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x39];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t;
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * (&gUnknown_083F8DF4[eRoulette->var04_0])->var01) +
+ ((&gUnknown_083F8DF4[eRoulette->var04_0])->var02 + 0xFFFF);
+ }
+ gSprites[eRoulette->var3C[0x38]].coordOffsetEnabled = TRUE;
+ eRoulette->var38 = sprite;
+}
+
+void sub_81193D4(struct Sprite *sprite)
+{
+ u8 i = 0;
+ s16 t;
+ s16 s[0x2][0x2];
+ struct StructgUnknown_083F8DF4 *p;
+ memcpy(s, &gUnknown_083FA616, 0x8);
+ t = sprite->data[0x7] - 0x2;
+ eRoulette->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA524, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x32);
+ StartSpriteAnim(&gSprites[eRoulette->var3C[0x37]], sprite->data[0x0]);
+ eRoulette->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5F0, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x33);
+ gSprites[eRoulette->var3C[0x38]].affineAnimPaused = TRUE;
+ gSprites[eRoulette->var3C[0x38]].animPaused = TRUE;
+ sprite->data[0x7] = (t * (p = &gUnknown_083F8DF4[0])[eRoulette->var04_0].var01) + (p[eRoulette->var04_0].var10 + 0x2D);
+ for (; i < 0x2; i++)
+ {
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x38];
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t;
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = sprite->data[0x7] - 0x2D;
+ }
+ eRoulette->var38 = sprite;
+}
+
+#ifdef NONMATCHING
+void sub_811952C(struct Sprite *sprite)
+{
+ u8 z;
+ register u8 h asm("r10") = 0x0;
+ u8 j = 0x5;
+ u32 p = 0x0;
+ u16 o;
+ u8 i;
+ u8 s[0xA] = (u8[]){0,0,0,0,0,0,0,0,0,0};
+ u16 t = Random();
+ eRoulette->var7D = 0x1;
+ eRoulette->var03_5 = TRUE;
+ eRoulette->var03_6 = FALSE;
+ eRoulette->var7E = 0xFF;
+ eRoulette->var88 = sprite->data[0x3];
+ eRoulette->var98 = 0.0f;
+ eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4
+ o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15;
+ for (i = 0x0; i < 0x4; i++)
+ {
+ if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90))
+ {
+ sprite->data[0x0] = i * 0x2;
+ eRoulette->var03_0 = 0x1 & i;
+ break;
+ }
+ if (i == 0x3)
+ {
+ sprite->data[0x0] = 0x1;
+ eRoulette->var03_0 = 0x1;
+ break;
+ }
+ o += 90;
+ }
+ if (eRoulette->var03_0)
+ {
+ if (sprite->data[0x0])
+ {
+ PlayCry1(0x130, -0x3F);
+ }
+ else
+ {
+ PlayCry1(0x130, 0x3F);
+ }
+ }
+ else
+ {
+ PlayCry1(0x132, -0x3F);
+ }
+ i = 0x2;
+ z = (eRoulette->var7F + 0x2) % 0xC;
+ if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1)
+ j += 0x6;
+ else
+ j += i;
+ for (; i < j; i++)
+ {
+ if (!(eRoulette->var08 & gUnknown_083F8D90[z].var04))
+ {
+ s[h++] = i;
+ if (!p && (gUnknown_083F8D90[z].var04 & gUnknown_083F8C00[eRoulette->var1B[eRoulette->var1A_0]].var00))
+ {
+ p = i;
+ }
+ }
+ z = (z + 0x1) % 0xC;
+ }
+ if ((eRoulette->var03_0 + 0x1) & eRoulette->var02)
+ {
+ if (p && (t & 0xFF) <= 0xBF)
+ {
+ sprite->data[0x7] = p;
+ }
+ else
+ {
+ sprite->data[0x7] = s[t % h];
+ }
+ }
+ else
+ {
+ sprite->data[0x7] = s[t % h];
+ }
+ sprite->callback = &sub_8118CEC;
+}
+#else
+__attribute__((naked))
+void sub_811952C(struct Sprite *sprite)
+{
+asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+mov r7, r10\n\
+mov r6, r9\n\
+mov r5, r8\n\
+push {r5-r7}\n\
+sub sp, 0x14\n\
+mov r8, r0\n\
+movs r0, 0\n\
+mov r10, r0\n\
+movs r1, 0x5\n\
+mov r9, r1\n\
+movs r2, 0\n\
+str r2, [sp, 0xC]\n\
+mov r0, sp\n\
+movs r1, 0\n\
+movs r2, 0xA\n\
+bl memset\n\
+bl Random\n\
+lsls r0, 16\n\
+lsrs r0, 16\n\
+str r0, [sp, 0x10]\n\
+ldr r7, _08119610 @ =gSharedMem + 0x19000\n\
+adds r0, r7, 0\n\
+adds r0, 0x7D\n\
+movs r6, 0x1\n\
+strb r6, [r0]\n\
+ldrb r4, [r7, 0x3]\n\
+movs r0, 0x20\n\
+orrs r4, r0\n\
+movs r0, 0x41\n\
+negs r0, r0\n\
+ands r4, r0\n\
+strb r4, [r7, 0x3]\n\
+adds r1, r7, 0\n\
+adds r1, 0x7E\n\
+movs r0, 0xFF\n\
+strb r0, [r1]\n\
+adds r5, r7, 0\n\
+adds r5, 0x88\n\
+mov r3, r8\n\
+movs r1, 0x34\n\
+ldrsh r0, [r3, r1]\n\
+bl __floatsisf\n\
+str r0, [r5]\n\
+adds r1, r7, 0\n\
+adds r1, 0x98\n\
+ldr r0, _08119614 @ =0x00000000\n\
+str r0, [r1]\n\
+adds r3, r7, 0\n\
+adds r3, 0x8C\n\
+ldr r2, _08119618 @ =gUnknown_083F8DF4\n\
+ldrb r0, [r7, 0x4]\n\
+lsls r0, 30\n\
+lsrs r1, r0, 25\n\
+adds r2, 0x1C\n\
+adds r1, r2\n\
+ldr r1, [r1]\n\
+str r1, [r3]\n\
+lsrs r0, 30\n\
+lsls r1, r0, 4\n\
+subs r1, r0\n\
+lsls r1, 1\n\
+adds r1, 0x21\n\
+lsls r4, 27\n\
+lsrs r4, 27\n\
+subs r6, r4\n\
+lsls r0, r6, 4\n\
+subs r0, r6\n\
+adds r1, r0\n\
+lsls r1, 16\n\
+lsrs r1, 16\n\
+mov r5, r10\n\
+mov r3, r8\n\
+movs r0, 0x34\n\
+ldrsh r2, [r3, r0]\n\
+_081195C8:\n\
+cmp r1, r2\n\
+bge _081195D4\n\
+adds r0, r1, 0\n\
+adds r0, 0x5A\n\
+cmp r2, r0\n\
+ble _08119638\n\
+_081195D4:\n\
+cmp r5, 0x3\n\
+beq _0811961C\n\
+adds r0, r1, 0\n\
+adds r0, 0x5A\n\
+lsls r0, 16\n\
+lsrs r1, r0, 16\n\
+adds r0, r5, 0x1\n\
+lsls r0, 24\n\
+lsrs r5, r0, 24\n\
+cmp r5, 0x3\n\
+bls _081195C8\n\
+_081195EA:\n\
+ldr r0, _08119610 @ =gSharedMem + 0x19000\n\
+ldrb r1, [r0, 0x3]\n\
+movs r0, 0x1F\n\
+ands r0, r1\n\
+cmp r0, 0\n\
+beq _08119664\n\
+mov r1, r8\n\
+movs r2, 0x2E\n\
+ldrsh r0, [r1, r2]\n\
+cmp r0, 0\n\
+beq _08119658\n\
+movs r0, 0x98\n\
+lsls r0, 1\n\
+movs r1, 0x3F\n\
+negs r1, r1\n\
+bl PlayCry1\n\
+b _08119670\n\
+.align 2, 0\n\
+_08119610: .4byte gSharedMem + 0x19000\n\
+_08119614: .4byte 0x00000000\n\
+_08119618: .4byte gUnknown_083F8DF4\n\
+_0811961C:\n\
+movs r0, 0x1\n\
+mov r3, r8\n\
+strh r0, [r3, 0x2E]\n\
+ldr r2, _08119634 @ =gSharedMem + 0x19000\n\
+ldrb r1, [r2, 0x3]\n\
+subs r0, 0x21\n\
+ands r0, r1\n\
+movs r1, 0x1\n\
+orrs r0, r1\n\
+strb r0, [r2, 0x3]\n\
+b _081195EA\n\
+.align 2, 0\n\
+_08119634: .4byte gSharedMem + 0x19000\n\
+_08119638:\n\
+lsrs r0, r5, 1\n\
+mov r1, r8\n\
+strh r0, [r1, 0x2E]\n\
+ldr r3, _08119654 @ =gSharedMem + 0x19000\n\
+movs r1, 0x1\n\
+ands r1, r5\n\
+ldrb r2, [r3, 0x3]\n\
+movs r0, 0x20\n\
+negs r0, r0\n\
+ands r0, r2\n\
+orrs r0, r1\n\
+strb r0, [r3, 0x3]\n\
+b _081195EA\n\
+.align 2, 0\n\
+_08119654: .4byte gSharedMem + 0x19000\n\
+_08119658:\n\
+movs r0, 0x98\n\
+lsls r0, 1\n\
+movs r1, 0x3F\n\
+bl PlayCry1\n\
+b _08119670\n\
+_08119664:\n\
+movs r0, 0x99\n\
+lsls r0, 1\n\
+movs r1, 0x3F\n\
+negs r1, r1\n\
+bl PlayCry1\n\
+_08119670:\n\
+movs r5, 0x2\n\
+ldr r4, _081196A0 @ =gSharedMem + 0x19000\n\
+adds r0, r4, 0\n\
+adds r0, 0x7F\n\
+ldrb r0, [r0]\n\
+adds r0, 0x2\n\
+movs r1, 0xC\n\
+bl __modsi3\n\
+lsls r0, 24\n\
+lsrs r3, r0, 24\n\
+ldrb r1, [r4, 0x3]\n\
+movs r0, 0x1F\n\
+ands r0, r1\n\
+cmp r0, 0x1\n\
+bne _081196A4\n\
+ldrb r1, [r4, 0x4]\n\
+movs r0, 0x3\n\
+ands r0, r1\n\
+cmp r0, 0x1\n\
+bne _081196A4\n\
+mov r0, r9\n\
+adds r0, 0x6\n\
+b _081196A8\n\
+.align 2, 0\n\
+_081196A0: .4byte gSharedMem + 0x19000\n\
+_081196A4:\n\
+mov r2, r9\n\
+adds r0, r2, r5\n\
+_081196A8:\n\
+lsls r0, 24\n\
+lsrs r0, 24\n\
+mov r9, r0\n\
+cmp r5, r9\n\
+bcs _0811970E\n\
+ldr r6, _08119734 @ =gSharedMem + 0x19000\n\
+ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n\
+_081196B6:\n\
+lsls r0, r3, 3\n\
+ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n\
+adds r0, r1\n\
+ldr r1, [r6, 0x8]\n\
+ldr r2, [r0]\n\
+ands r1, r2\n\
+cmp r1, 0\n\
+bne _081196F8\n\
+mov r0, r10\n\
+adds r1, r0, 0x1\n\
+lsls r1, 24\n\
+lsrs r1, 24\n\
+mov r10, r1\n\
+add r0, sp\n\
+strb r5, [r0]\n\
+ldr r0, [sp, 0xC]\n\
+cmp r0, 0\n\
+bne _081196F8\n\
+ldrb r0, [r6, 0x1A]\n\
+lsls r0, 28\n\
+lsrs r0, 28\n\
+ldr r1, _08119740 @ =gSharedMem + 0x1901B\n\
+adds r0, r1\n\
+ldrb r1, [r0]\n\
+lsls r0, r1, 2\n\
+adds r0, r1\n\
+lsls r0, 2\n\
+adds r0, r7\n\
+ldr r0, [r0]\n\
+ands r2, r0\n\
+cmp r2, 0\n\
+beq _081196F8\n\
+str r5, [sp, 0xC]\n\
+_081196F8:\n\
+adds r0, r3, 0x1\n\
+movs r1, 0xC\n\
+bl __modsi3\n\
+lsls r0, 24\n\
+lsrs r3, r0, 24\n\
+adds r0, r5, 0x1\n\
+lsls r0, 24\n\
+lsrs r5, r0, 24\n\
+cmp r5, r9\n\
+bcc _081196B6\n\
+_0811970E:\n\
+ldrb r0, [r4, 0x3]\n\
+lsls r0, 27\n\
+lsrs r0, 27\n\
+adds r0, 0x1\n\
+ldrb r1, [r4, 0x2]\n\
+ands r0, r1\n\
+cmp r0, 0\n\
+beq _08119756\n\
+ldr r2, [sp, 0xC]\n\
+cmp r2, 0\n\
+beq _08119744\n\
+movs r0, 0xFF\n\
+ldr r3, [sp, 0x10]\n\
+ands r0, r3\n\
+cmp r0, 0xBF\n\
+bhi _08119744\n\
+mov r0, r8\n\
+strh r2, [r0, 0x3C]\n\
+b _08119766\n\
+.align 2, 0\n\
+_08119734: .4byte gSharedMem + 0x19000\n\
+_08119738: .4byte gUnknown_083F8C00 + 0xC\n\
+_0811973C: .4byte gUnknown_083F8D90 + 0x4\n\
+_08119740: .4byte gSharedMem + 0x1901B\n\
+_08119744:\n\
+ldr r0, [sp, 0x10]\n\
+mov r1, r10\n\
+bl __modsi3\n\
+add r0, sp\n\
+ldrb r0, [r0]\n\
+mov r1, r8\n\
+strh r0, [r1, 0x3C]\n\
+b _08119766\n\
+_08119756:\n\
+ldr r0, [sp, 0x10]\n\
+mov r1, r10\n\
+bl __modsi3\n\
+add r0, sp\n\
+ldrb r0, [r0]\n\
+mov r2, r8\n\
+strh r0, [r2, 0x3C]\n\
+_08119766:\n\
+ldr r3, _0811977C @ =sub_8118CEC\n\
+mov r0, r8\n\
+str r3, [r0, 0x1C]\n\
+add sp, 0x14\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\
+_0811977C: .4byte sub_8118CEC\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_8119780(struct Sprite *sprite)
+{
+ if (!(sprite->data[0x1]++ < sprite->data[0x3]))
+ {
+ if ((sprite->pos1.x -= 0x2) < -0x10)
+ {
+ if (!eRoulette->var03_6)
+ {
+ eRoulette->var03_6 = TRUE;
+ }
+ DestroySprite(sprite);
+ eRoulette->var01 = 0x0;
+ eRoulette->var34 = gUnknown_083FA61E[0x0];
+ }
+ }
+}
+
+void sub_81197D8(struct Sprite *sprite)
+{
+ u16 t[0x3][0x4];
+ s32 p, z;
+ memcpy(t, &gUnknown_083FA632, 0x18);
+ if (sprite->data[0x1]++ < sprite->data[0x3])
+ {
+ if(sprite->data[0x1] & 0x1)
+ {
+ gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]];
+ p = z = sprite->data[0x7] + 0x1;
+ if (z < 0)
+ p += 0x3;
+ sprite->data[0x7] = z - ((p >> 2) * 4);
+ }
+ sprite->invisible ^= 0x1;
+ }
+ else
+ {
+ gSpriteCoordOffsetY = 0x0;
+ gSprites[eRoulette->var3C[0x37]].animPaused = FALSE;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8119898(struct Sprite *sprite)
+{
+ float t;
+ sprite->data[0x1]++;
+ t = sprite->data[0x1];
+ sprite->pos2.y = t * 0.039f * t;
+ eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2];
+ if (eRoulette->var01 < 0x13)
+ eRoulette->var01++;
+ if (sprite->data[0x1] > 0x3C)
+ {
+ sprite->data[0x1] = 0x0;
+ sprite->callback = &sub_8119780;
+ gSprites[sprite->data[0x6]].callback = &sub_8119780;
+ gSprites[sprite->data[0x6]].data[0x1] = -0x2;
+ gSprites[sprite->data[0x5]].invisible = FALSE;
+ gSprites[sprite->data[0x5]].callback = &sub_81197D8;
+ m4aSongNumStart(0xD6);
+ }
+}
+
+void sub_8119964(struct Sprite *sprite)
+{
+ if(sprite->data[0x7] == 0x0)
+ {
+ register u32 t asm("r2");
+ u32 z ;
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var08;
+ }
+ else
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var08;
+ z += 0xB4;
+ }
+ if (t == z)
+ {
+ sprite->invisible = FALSE;
+ sprite->data[0x7]++;
+ m4aSongNumStart(0x2B);
+ eRoulette->var01 = 0x1;
+ eRoulette->var34 = gUnknown_083FA61E[0x0];
+ }
+ }
+ else
+ {
+ u32 t, z;
+ eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2];
+ if (eRoulette->var01 < 0x13)
+ eRoulette->var01++;
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var0A;
+ }
+ else
+ {
+ t = eRoulette->var38->data[0x3];
+ z = gUnknown_083F8DF4[eRoulette->var04_0].var0A ;
+ z += 0xB4;
+ }
+ if (t == z)
+ {
+ gSprites[sprite->data[0x4]].callback = &sub_8119898;
+ gSprites[sprite->data[0x4]].invisible = FALSE;
+ sprite->callback = &SpriteCallbackDummy;
+ sprite->data[0x7] = 0x0;
+ }
+ }
+}
+
+void sub_8119A90(struct Sprite *sprite)
+{
+ sprite->invisible ^= 0x1;
+}
+
+void sub_8119AAC(struct Sprite *sprite)
+{
+ if (sprite->pos1.y > -0x10)
+ {
+ sprite->pos1.y--;
+ }
+ else
+ {
+ sprite->callback = &SpriteCallbackDummy;
+ sprite->invisible = TRUE;
+ sprite->animPaused = TRUE;
+ m4aSongNumStop(0x5E);
+ DestroySprite(sprite);
+ FreeOamMatrix(gSprites[eRoulette->var3C[0x38]].oam.matrixNum);
+ DestroySprite(&gSprites[eRoulette->var3C[0x38]]);
+ }
+}
+
+void sub_8119B24(struct Sprite *sprite)
+{
+ if (!(sprite->data[0x1] < 0x0))
+ {
+ sprite->data[0x1]--;
+ sprite->pos1.y--;
+ if (sprite->data[0x1] == 0x0 && sprite->animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ }
+ else
+ {
+ if (!(sprite->data[0x3] < 0x0))
+ {
+ sprite->data[0x3]--;
+ if (sprite->animDelayCounter == 0x0)
+ {
+ if (sprite->animCmdIndex == 0x1)
+ sprite->pos2.y++;
+ else
+ sprite->pos2.y--;
+ }
+ }
+ else
+ {
+ m4aSongNumStart(0x2B);
+ StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x4);
+ sprite->callback = &sub_8119AAC;
+ gSprites[sprite->data[0x6]].affineAnimPaused = FALSE;
+ }
+ }
+}
+
+void sub_8119BCC(struct Sprite *sprite)
+{
+ s8 t[0x2]; //sign
+ s8 z[0x8][0x2];
+ memcpy(t, &gUnknown_083FA64A, 0x2);
+ memcpy(z, &gUnknown_083FA64C, 0x10);
+ if (sprite->data[0x1]-- > 0x7)
+ {
+ sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
+ if (IsSEPlaying())
+ {
+ s8 u = -((0x74 - sprite->pos1.x) / 0x2);
+ m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF,u);
+ m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, u);
+ }
+ }
+ else
+ {
+ if (!(sprite->data[0x1] < 0x0))
+ {
+ sprite->pos1.x += t[eRoulette->var38->data[0x0]] * z[0x7 - sprite->data[0x1]][0x0];
+ sprite->pos1.y += z[0x7 - sprite->data[0x1]][0x1];
+ }
+ else
+ {
+ m4aSongNumStartOrChange(0x5E);
+ if(eRoulette->var38->data[0x0] == 0x0)
+ PlayCry1(0x130, 0x3F);
+ else
+ PlayCry1(0x130, -0x3F);
+ StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2);
+ sprite->data[0x1] = 45;
+ sprite->callback = &sub_8119B24;
+ }
+ }
+}
+
+void sub_8119D08(struct Sprite *sprite)
+{
+ s8 t[0x2]; //sign
+ memcpy(t, &gUnknown_083FA64A, 0x2);
+ if (!(sprite->data[0x1]-- < 0x0))
+ {
+ sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
+ gSprites[sprite->data[0x6]].invisible ^= 0x1;
+ }
+ else
+ {
+ sprite->callback = &sub_8119A90;
+ }
+}
+
+void sub_8119D80(struct Sprite *sprite)
+{
+ if (eRoulette->var38->data[0x0] == 0x0)
+ {
+ if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var12 + 90)
+ {
+ gSprites[sprite->data[0x6]].data[0x1] = 0x34;
+ gSprites[sprite->data[0x4]].data[0x1] = 0x34;
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var14 + 270)
+ {
+ gSprites[sprite->data[0x6]].data[0x1] = 0x2E;
+ gSprites[sprite->data[0x4]].data[0x1] = 0x2E;
+ }
+ else
+ {
+ return;
+ }
+ }
+ gSprites[sprite->data[0x6]].callback = &sub_8119D08;
+ gSprites[sprite->data[0x4]].callback = &sub_8119BCC;
+ m4aSongNumStart(0x2B);
+}
diff --git a/src/roulette_util.c b/src/roulette_util.c
new file mode 100644
index 000000000..3d5b03a5c
--- /dev/null
+++ b/src/roulette_util.c
@@ -0,0 +1,280 @@
+#include "global.h"
+#include "roulette_util.h"
+#include "roulette.h"
+
+static u8 sub_81249E4(struct UnkStruct3 *);
+static u8 sub_8124BEC(struct UnkStruct3 *);
+u8 unref_sub_81249B0(struct UnkStruct0 *, u8);
+
+extern u16 gPlttBufferFaded[];
+extern u16 gPlttBufferUnfaded[];
+
+void sub_8124918(struct UnkStruct0 *r0)
+{
+ r0->var00 = 0;
+ r0->var02 = 0;
+ memset((&r0->var04), 0, 0xC0);
+}
+
+u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2)
+{
+ if (!(r1 < 0x10) || (r0->var04[r1].var00_7))
+ return 0xFF;
+
+ r0->var04[r1].var04.var00 = r2->var00;
+ r0->var04[r1].var04.var02 = r2->var02;
+ r0->var04[r1].var04.var04 = r2->var04;
+ r0->var04[r1].var04.var05 = r2->var05;
+ r0->var04[r1].var04.var06 = r2->var06;
+ r0->var04[r1].var04.var07_0 = r2->var07_0;
+ r0->var04[r1].var04.var07_5 = r2->var07_5;
+ r0->var04[r1].var04.var07_7 = r2->var07_7;
+
+
+ r0->var04[r1].var00_0 = 0x0;
+ r0->var04[r1].var00_7 = 0x1;
+
+ r0->var04[r1].var02 = 0x0;
+ r0->var04[r1].var01 = 0x0;
+ if (r0->var04[r1].var04.var07_7 < 0)
+ r0->var04[r1].var03 = 0xFF;
+ else
+ r0->var04[r1].var03 = 0x1;
+ return r1;
+}
+
+#ifdef NONMATCHING
+u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1)
+{
+ if (r1 < 0x10)
+ {
+ if (r0->var04[r1].var00_7)
+ {
+ r0->var04[r1] = (struct UnkStruct3){0};
+ return r1;
+ }
+ }
+ return 0xFF;
+}
+#else
+__attribute__((naked))
+u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r2, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r4, r1, 0\n\
+ cmp r4, 0xF\n\
+ bhi _081249DC\n\
+ lsls r0, r4, 1\n\
+ adds r0, r4\n\
+ lsls r0, 2\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsrs r0, 7\n\
+ cmp r0, 0\n\
+ beq _081249DC\n\
+ adds r0, r1, 0x4\n\
+ movs r1, 0\n\
+ movs r2, 0xC\n\
+ bl memset\n\
+ adds r0, r4, 0\n\
+ b _081249DE\n\
+ _081249DC:\n\
+ movs r0, 0xFF\n\
+ _081249DE:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+#endif
+
+u8 sub_81249E4(struct UnkStruct3 *r0)
+{
+ u8 i;
+ u8 returnval;
+ for (i = 0; i < r0->var04.var04; i++)
+ {
+ u32 offset = r0->var04.var02 + i;
+ struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset];
+ struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset];
+ switch(r0->var00_0)
+ {
+ case 0x1:
+ if ((u32)(faded->r + r0->var03) < 0x20)
+ faded->r += r0->var03;
+ if ((u32)(faded->g + r0->var03) < 0x20)
+ faded->g += r0->var03;
+ if ((u32)(faded->b + r0->var03) < 0x20)
+ faded->b += r0->var03;
+ break;
+ case 0x2:
+ if (r0->var03 < 0)
+ {
+ if (!(faded->r + r0->var03 < unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 < unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 < unfaded->b))
+ faded->b += r0->var03;
+ }
+ else
+ {
+ if (!(faded->r + r0->var03 > unfaded->r))
+ faded->r += r0->var03;
+ if (!(faded->g + r0->var03 > unfaded->g))
+ faded->g += r0->var03;
+ if (!(faded->b + r0->var03 > unfaded->b))
+ faded->b += r0->var03;
+ }
+ break;
+ }
+ }
+ if (((u32)r0->var02++) != r0->var04.var07_0)
+ {
+ returnval = 0x0;
+ }
+ else
+ {
+ r0->var02 = 0x0;
+ r0->var03 = r0->var03 * -1;
+ if (r0->var00_0 == 0x1)
+ r0->var00_0++;
+ else
+ r0->var00_0--;
+ returnval = 0x1;
+ }
+ return returnval;
+}
+
+u8 sub_8124BEC(struct UnkStruct3 *r0)
+{
+ u8 rg2 = 0;
+ switch (r0->var00_0)
+ {
+ case 0x1:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00;
+ r0->var00_0++;
+ break;
+ case 0x2:
+ for (rg2 = 0; rg2 < r0->var04.var04; rg2++)
+ gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2];
+ r0->var00_0--;
+ break;
+ }
+ return 0x1;
+}
+
+void task_tutorial_controls_fadein(struct UnkStruct0 *r0)
+{
+ u8 i = 0;
+ if (r0->var00)
+ {
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (((u8)--r0->var04[i].var01) == 0xFF) // if underflow ?
+ {
+ if (r0->var04[i].var04.var00 & (0x80 << 8)) // PlttData->unused_15 ?
+ sub_81249E4(&r0->var04[i]);
+ else
+ sub_8124BEC(&r0->var04[i]);
+ r0->var04[i].var01 = r0->var04[i].var04.var05;
+ }
+ }
+ }
+ }
+}
+
+void sub_8124CE8(struct UnkStruct0 *r0, u16 r1)
+{
+ u8 i = 0;
+ r0->var00++;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ r0->var02 |= 0x1 << i;
+ r0->var04[i].var00_0 = 0x1;
+ }
+ }
+ }
+}
+
+void sub_8124D3C(struct UnkStruct0 *r0, u16 r1)
+{
+ u8 i;
+ for (i = 0; i < 0x10; i++)
+ {
+ if ((r0->var02 >> i) & 0x1)
+ {
+ if (r0->var04[i].var00_7)
+ {
+ if ((r1 >> i) & 0x1)
+ {
+ u32 offset = r0->var04[i].var04.var02;
+ u16 *faded = &gPlttBufferFaded[offset];
+ u16 *unfaded = &gPlttBufferUnfaded[offset];
+ memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2);
+ r0->var04[i].var00_0 = 0x0;
+ r0->var04[i].var02 = 0x0;
+ r0->var04[i].var01 = 0x0;
+ if (r0->var04[i].var04.var07_7 < 0)
+ r0->var04[i].var03 = 0xFF;
+ else
+ r0->var04[i].var03 = 0x1;
+ }
+ }
+ }
+ }
+ if (r1 == 0xFFFF)
+ {
+ r0->var00 = 0x0;
+ r0->var02 = 0x0;
+ }
+ else
+ {
+ r0->var02 = r0->var02 & ~r1;
+ }
+}
+void sub_8124DDC(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height)
+{
+
+ u16 *_dest;
+ u8 i;
+ u8 j;
+ i = 0x0;
+ dest = &dest[top * 32 + left];
+ for (; i < height; i++)
+ {
+ _dest = dest + i * 32;
+ for (j = 0; j < width; j++)
+ {
+ *_dest++ = src;
+ }
+ }
+}
+void sub_8124E2C(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height)
+{
+ u16 *_dest;
+ u16 *_src = src;
+ u8 i;
+ u8 j;
+ i = 0x0;
+ dest = &dest[top * 32 + left];
+ for (; i < height; i++)
+ {
+ _dest = dest + i * 32;
+ for (j = 0; j < width; j++)
+ {
+ *_dest++ = *_src++;
+ }
+ }
+}