.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start Clouds_InitVars Clouds_InitVars: @ 807B2DC push {lr} ldr r0, _0807B314 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r2, _0807B318 @ =0x000006c1 adds r1, r0, r2 movs r2, 0 strb r2, [r1] ldr r1, _0807B31C @ =0x000006c2 adds r3, r0, r1 movs r1, 0x14 strb r1, [r3] ldr r3, _0807B320 @ =0x000006d2 adds r1, r0, r3 strb r2, [r1] subs r3, 0x6 adds r1, r0, r3 strh r2, [r1] ldr r1, _0807B324 @ =0x000006de adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807B310 movs r0, 0 movs r1, 0x10 bl Weather_SetBlendCoeffs _0807B310: pop {r0} bx r0 .align 2, 0 _0807B314: .4byte gUnknown_83C2BBC _0807B318: .4byte 0x000006c1 _0807B31C: .4byte 0x000006c2 _0807B320: .4byte 0x000006d2 _0807B324: .4byte 0x000006de thumb_func_end Clouds_InitVars thumb_func_start Clouds_InitAll Clouds_InitAll: @ 807B328 push {r4,lr} bl Clouds_InitVars ldr r0, _0807B350 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B354 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807B348 adds r4, r1, r2 _0807B33E: bl Clouds_Main ldrb r0, [r4] cmp r0, 0 beq _0807B33E _0807B348: pop {r4} pop {r0} bx r0 .align 2, 0 _0807B350: .4byte gUnknown_83C2BBC _0807B354: .4byte 0x000006d2 thumb_func_end Clouds_InitAll thumb_func_start Clouds_Main Clouds_Main: @ 807B358 push {r4,r5,lr} ldr r0, _0807B374 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807B378 @ =0x000006cc adds r4, r5, r0 ldrh r0, [r4] cmp r0, 0x1 beq _0807B388 cmp r0, 0x1 bgt _0807B37C cmp r0, 0 beq _0807B382 b _0807B3AC .align 2, 0 _0807B374: .4byte gUnknown_83C2BBC _0807B378: .4byte 0x000006cc _0807B37C: cmp r0, 0x2 beq _0807B394 b _0807B3AC _0807B382: bl CreateCloudSprites b _0807B3A6 _0807B388: movs r0, 0xC movs r1, 0x8 movs r2, 0x1 bl Weather_SetTargetBlendCoeffs b _0807B3A6 _0807B394: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807B3AC ldr r0, _0807B3B4 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] _0807B3A6: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807B3AC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807B3B4: .4byte 0x000006d2 thumb_func_end Clouds_Main thumb_func_start Clouds_Finish Clouds_Finish: @ 807B3B8 push {r4,lr} ldr r0, _0807B3D0 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807B3D4 @ =0x000006ce adds r4, r0, r1 ldrh r0, [r4] cmp r0, 0 beq _0807B3D8 cmp r0, 0x1 beq _0807B3E4 movs r0, 0 b _0807B3FA .align 2, 0 _0807B3D0: .4byte gUnknown_83C2BBC _0807B3D4: .4byte 0x000006ce _0807B3D8: movs r0, 0 movs r1, 0x10 movs r2, 0x1 bl Weather_SetTargetBlendCoeffs b _0807B3F2 _0807B3E4: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807B3F8 bl sub_807B504 _0807B3F2: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807B3F8: movs r0, 0x1 _0807B3FA: pop {r4} pop {r1} bx r1 thumb_func_end Clouds_Finish thumb_func_start Weather2_InitVars Weather2_InitVars: @ 807B400 ldr r0, _0807B418 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807B41C @ =0x000006c1 adds r2, r1, r0 movs r0, 0 strb r0, [r2] ldr r0, _0807B420 @ =0x000006c2 adds r1, r0 movs r0, 0x14 strb r0, [r1] bx lr .align 2, 0 _0807B418: .4byte gUnknown_83C2BBC _0807B41C: .4byte 0x000006c1 _0807B420: .4byte 0x000006c2 thumb_func_end Weather2_InitVars thumb_func_start Weather2_InitAll Weather2_InitAll: @ 807B424 push {lr} bl Weather2_InitVars pop {r0} bx r0 thumb_func_end Weather2_InitAll thumb_func_start nullsub_48 nullsub_48: @ 807B430 bx lr thumb_func_end nullsub_48 thumb_func_start sub_807B434 sub_807B434: @ 807B434 movs r0, 0 bx lr thumb_func_end sub_807B434 thumb_func_start CreateCloudSprites CreateCloudSprites: @ 807B438 push {r4,r5,lr} ldr r0, _0807B4B0 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807B4B4 @ =0x000006de adds r0, r1 ldrb r0, [r0] cmp r0, 0x1 beq _0807B4F4 ldr r0, _0807B4B8 @ =gUnknown_83C65D4 bl LoadSpriteSheet ldr r0, _0807B4BC @ =gUnknown_83C2D00 bl sub_807ABC0 movs r5, 0 _0807B456: ldr r0, _0807B4C0 @ =gUnknown_83C65F0 movs r1, 0 movs r2, 0 movs r3, 0xFF bl CreateSprite lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x40 beq _0807B4CC ldr r0, _0807B4B0 @ =gUnknown_83C2BBC ldr r1, [r0] lsls r2, r5, 2 movs r0, 0xFA lsls r0, 1 adds r1, r0 adds r1, r2 lsls r4, r3, 4 adds r4, r3 lsls r4, 2 ldr r0, _0807B4C4 @ =gSprites adds r4, r0 str r4, [r1] ldr r0, _0807B4C8 @ =gUnknown_83C65C8 adds r2, r0 ldrh r0, [r2] adds r0, 0x7 lsls r0, 16 asrs r0, 16 ldrh r1, [r2, 0x2] adds r1, 0x7 lsls r1, 16 asrs r1, 16 adds r2, r4, 0 adds r2, 0x20 adds r3, r4, 0 adds r3, 0x22 bl sub_8063B1C adds r4, 0x3E ldrb r0, [r4] movs r1, 0x2 orrs r0, r1 strb r0, [r4] b _0807B4DE .align 2, 0 _0807B4B0: .4byte gUnknown_83C2BBC _0807B4B4: .4byte 0x000006de _0807B4B8: .4byte gUnknown_83C65D4 _0807B4BC: .4byte gUnknown_83C2D00 _0807B4C0: .4byte gUnknown_83C65F0 _0807B4C4: .4byte gSprites _0807B4C8: .4byte gUnknown_83C65C8 _0807B4CC: ldr r0, _0807B4FC @ =gUnknown_83C2BBC ldr r1, [r0] lsls r0, r5, 2 movs r2, 0xFA lsls r2, 1 adds r1, r2 adds r1, r0 movs r0, 0 str r0, [r1] _0807B4DE: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x2 bls _0807B456 ldr r0, _0807B4FC @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807B500 @ =0x000006de adds r0, r1 movs r1, 0x1 strb r1, [r0] _0807B4F4: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807B4FC: .4byte gUnknown_83C2BBC _0807B500: .4byte 0x000006de thumb_func_end CreateCloudSprites thumb_func_start sub_807B504 sub_807B504: @ 807B504 push {r4,r5,lr} ldr r0, _0807B550 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B554 @ =0x000006de adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807B548 movs r4, 0 movs r0, 0xFA lsls r0, 1 adds r5, r1, r0 _0807B51C: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807B52A bl DestroySprite _0807B52A: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x2 bls _0807B51C movs r0, 0x90 lsls r0, 5 bl FreeSpriteTilesByTag ldr r0, _0807B550 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807B554 @ =0x000006de adds r0, r1 movs r1, 0 strb r1, [r0] _0807B548: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807B550: .4byte gUnknown_83C2BBC _0807B554: .4byte 0x000006de thumb_func_end sub_807B504 thumb_func_start sub_807B558 sub_807B558: @ 807B558 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x2E] adds r0, 0x1 movs r1, 0x1 ands r0, r1 strh r0, [r2, 0x2E] cmp r0, 0 beq _0807B570 ldrh r0, [r2, 0x20] subs r0, 0x1 strh r0, [r2, 0x20] _0807B570: pop {r0} bx r0 thumb_func_end sub_807B558 thumb_func_start Drought_InitVars Drought_InitVars: @ 807B574 ldr r0, _0807B598 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807B59C @ =0x000006cc adds r3, r1, r0 movs r2, 0 movs r0, 0 strh r0, [r3] ldr r3, _0807B5A0 @ =0x000006d2 adds r0, r1, r3 strb r2, [r0] subs r3, 0x11 adds r0, r1, r3 strb r2, [r0] ldr r0, _0807B5A4 @ =0x000006c2 adds r1, r0 strb r2, [r1] bx lr .align 2, 0 _0807B598: .4byte gUnknown_83C2BBC _0807B59C: .4byte 0x000006cc _0807B5A0: .4byte 0x000006d2 _0807B5A4: .4byte 0x000006c2 thumb_func_end Drought_InitVars thumb_func_start Drought_InitAll Drought_InitAll: @ 807B5A8 push {r4,lr} bl Drought_InitVars ldr r0, _0807B5D0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B5D4 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807B5C8 adds r4, r1, r2 _0807B5BE: bl Drought_Main ldrb r0, [r4] cmp r0, 0 beq _0807B5BE _0807B5C8: pop {r4} pop {r0} bx r0 .align 2, 0 _0807B5D0: .4byte gUnknown_83C2BBC _0807B5D4: .4byte 0x000006d2 thumb_func_end Drought_InitAll thumb_func_start Drought_Main Drought_Main: @ 807B5D8 push {lr} ldr r1, _0807B5F4 @ =gUnknown_83C2BBC ldr r0, [r1] ldr r2, _0807B5F8 @ =0x000006cc adds r0, r2 ldrh r0, [r0] adds r2, r1, 0 cmp r0, 0x4 bhi _0807B6B4 lsls r0, 2 ldr r1, _0807B5FC @ =_0807B600 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0807B5F4: .4byte gUnknown_83C2BBC _0807B5F8: .4byte 0x000006cc _0807B5FC: .4byte _0807B600 .align 2, 0 _0807B600: .4byte _0807B614 .4byte _0807B630 .4byte _0807B648 .4byte _0807B664 .4byte _0807B67C _0807B614: ldr r1, [r2] ldr r2, _0807B628 @ =0x000006c6 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807B6B8 ldr r0, _0807B62C @ =0x000006cc adds r1, r0 b _0807B69C .align 2, 0 _0807B628: .4byte 0x000006c6 _0807B62C: .4byte 0x000006cc _0807B630: bl sub_807ABF4 ldr r0, _0807B640 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B644 @ =0x000006cc adds r1, r2 b _0807B69C .align 2, 0 _0807B640: .4byte gUnknown_83C2BBC _0807B644: .4byte 0x000006cc _0807B648: bl sub_807AC14 lsls r0, 24 cmp r0, 0 bne _0807B6B8 ldr r0, _0807B65C @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807B660 @ =0x000006cc adds r1, r0 b _0807B69C .align 2, 0 _0807B65C: .4byte gUnknown_83C2BBC _0807B660: .4byte 0x000006cc _0807B664: bl sub_807AC60 ldr r0, _0807B674 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B678 @ =0x000006cc adds r1, r2 b _0807B69C .align 2, 0 _0807B674: .4byte gUnknown_83C2BBC _0807B678: .4byte 0x000006cc _0807B67C: bl sub_807AC98 ldr r0, _0807B6A4 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r1, _0807B6A8 @ =0x0000073c adds r0, r2, r1 movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0x6 bne _0807B6B8 ldr r0, _0807B6AC @ =0x000006d2 adds r1, r2, r0 movs r0, 0x1 strb r0, [r1] ldr r0, _0807B6B0 @ =0x000006cc adds r1, r2, r0 _0807B69C: ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] b _0807B6B8 .align 2, 0 _0807B6A4: .4byte gUnknown_83C2BBC _0807B6A8: .4byte 0x0000073c _0807B6AC: .4byte 0x000006d2 _0807B6B0: .4byte 0x000006cc _0807B6B4: bl sub_807AC98 _0807B6B8: pop {r0} bx r0 thumb_func_end Drought_Main thumb_func_start sub_807B6BC sub_807B6BC: @ 807B6BC movs r0, 0 bx lr thumb_func_end sub_807B6BC thumb_func_start sub_807B6C0 sub_807B6C0: @ 807B6C0 push {lr} ldr r0, _0807B6D0 @ =task50_0807B6D4 movs r1, 0x50 bl CreateTask pop {r0} bx r0 .align 2, 0 _0807B6D0: .4byte task50_0807B6D4 thumb_func_end sub_807B6C0 thumb_func_start task50_0807B6D4 task50_0807B6D4: @ 807B6D4 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, _0807B6F8 @ =gTasks adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x4 bhi _0807B7C2 lsls r0, 2 ldr r1, _0807B6FC @ =_0807B700 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0807B6F8: .4byte gTasks _0807B6FC: .4byte _0807B700 .align 2, 0 _0807B700: .4byte _0807B714 .4byte _0807B740 .4byte _0807B768 .4byte _0807B798 .4byte _0807B7B8 _0807B714: movs r0, 0 strh r0, [r4, 0xA] strh r0, [r4, 0xC] movs r0, 0x48 bl GetGpuReg strh r0, [r4, 0xE] ldr r1, _0807B764 @ =0x00003f3f movs r0, 0x48 bl SetGpuReg movs r0, 0x50 movs r1, 0x9E bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0807B740: ldrh r0, [r4, 0xA] adds r0, 0x3 strh r0, [r4, 0xA] lsls r0, 16 asrs r0, 16 cmp r0, 0x10 ble _0807B752 movs r0, 0x10 strh r0, [r4, 0xA] _0807B752: ldrh r1, [r4, 0xA] movs r0, 0x54 bl SetGpuReg movs r1, 0xA ldrsh r0, [r4, r1] cmp r0, 0xF ble _0807B7C2 b _0807B7B0 .align 2, 0 _0807B764: .4byte 0x00003f3f _0807B768: ldrh r0, [r4, 0xC] adds r0, 0x1 movs r1, 0 strh r0, [r4, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0x9 ble _0807B7C2 strh r1, [r4, 0xC] ldrh r0, [r4, 0xA] subs r0, 0x1 strh r0, [r4, 0xA] lsls r0, 16 cmp r0, 0 bgt _0807B78E strh r1, [r4, 0xA] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] _0807B78E: ldrh r1, [r4, 0xA] movs r0, 0x54 bl SetGpuReg b _0807B7C2 _0807B798: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg ldrh r1, [r4, 0xE] movs r0, 0x48 bl SetGpuReg _0807B7B0: ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0807B7C2 _0807B7B8: bl EnableBothScriptContexts adds r0, r5, 0 bl DestroyTask _0807B7C2: pop {r4,r5} pop {r0} bx r0 thumb_func_end task50_0807B6D4 thumb_func_start LightRain_InitVars LightRain_InitVars: @ 807B7C8 push {r4,lr} ldr r0, _0807B818 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B81C @ =0x000006cc adds r0, r1, r2 movs r3, 0 movs r2, 0 strh r2, [r0] ldr r4, _0807B820 @ =0x000006d2 adds r0, r1, r4 strb r3, [r0] adds r4, 0x4 adds r0, r1, r4 strh r2, [r0] ldr r0, _0807B824 @ =0x000006db adds r2, r1, r0 movs r0, 0x8 strb r0, [r2] ldr r2, _0807B828 @ =0x000006dc adds r0, r1, r2 strb r3, [r0] adds r4, 0x3 adds r2, r1, r4 movs r0, 0xA strb r0, [r2] ldr r0, _0807B82C @ =0x000006c1 adds r2, r1, r0 movs r0, 0x3 strb r0, [r2] ldr r2, _0807B830 @ =0x000006c2 adds r1, r2 movs r0, 0x14 strb r0, [r1] movs r0, 0x4E bl SetRainStrengthFromSoundEffect pop {r4} pop {r0} bx r0 .align 2, 0 _0807B818: .4byte gUnknown_83C2BBC _0807B81C: .4byte 0x000006cc _0807B820: .4byte 0x000006d2 _0807B824: .4byte 0x000006db _0807B828: .4byte 0x000006dc _0807B82C: .4byte 0x000006c1 _0807B830: .4byte 0x000006c2 thumb_func_end LightRain_InitVars thumb_func_start LightRain_InitAll LightRain_InitAll: @ 807B834 push {r4,lr} bl LightRain_InitVars ldr r0, _0807B85C @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807B860 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807B854 adds r4, r1, r2 _0807B84A: bl LightRain_Main ldrb r0, [r4] cmp r0, 0 beq _0807B84A _0807B854: pop {r4} pop {r0} bx r0 .align 2, 0 _0807B85C: .4byte gUnknown_83C2BBC _0807B860: .4byte 0x000006d2 thumb_func_end LightRain_InitAll thumb_func_start LightRain_Main LightRain_Main: @ 807B864 push {r4,r5,lr} ldr r0, _0807B880 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807B884 @ =0x000006cc adds r4, r5, r0 ldrh r0, [r4] cmp r0, 0x1 beq _0807B894 cmp r0, 0x1 bgt _0807B888 cmp r0, 0 beq _0807B88E b _0807B8B8 .align 2, 0 _0807B880: .4byte gUnknown_83C2BBC _0807B884: .4byte 0x000006cc _0807B888: cmp r0, 0x2 beq _0807B8A0 b _0807B8B8 _0807B88E: bl LoadRainSpriteSheet b _0807B8B2 _0807B894: bl CreateRainSprite lsls r0, 24 cmp r0, 0 bne _0807B8B8 b _0807B8B2 _0807B8A0: bl sub_807BD4C lsls r0, 24 cmp r0, 0 bne _0807B8B8 ldr r0, _0807B8C0 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] _0807B8B2: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807B8B8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807B8C0: .4byte 0x000006d2 thumb_func_end LightRain_Main thumb_func_start LightRain_Finish LightRain_Finish: @ 807B8C4 push {r4,r5,lr} ldr r0, _0807B8E0 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r1, _0807B8E4 @ =0x000006ce adds r3, r2, r1 ldrh r1, [r3] adds r4, r0, 0 cmp r1, 0 beq _0807B8E8 cmp r1, 0x1 beq _0807B91C movs r0, 0 b _0807B94A .align 2, 0 _0807B8E0: .4byte gUnknown_83C2BBC _0807B8E4: .4byte 0x000006ce _0807B8E8: ldr r5, _0807B908 @ =0x000006d1 adds r0, r2, r5 ldrb r0, [r0] cmp r0, 0x3 beq _0807B8FA cmp r0, 0x5 beq _0807B8FA cmp r0, 0xD bne _0807B910 _0807B8FA: ldr r0, [r4] ldr r1, _0807B90C @ =0x000006ce adds r0, r1 movs r1, 0xFF strh r1, [r0] movs r0, 0 b _0807B94A .align 2, 0 _0807B908: .4byte 0x000006d1 _0807B90C: .4byte 0x000006ce _0807B910: ldr r4, _0807B93C @ =0x000006d9 adds r0, r2, r4 strb r1, [r0] ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] _0807B91C: bl sub_807BD4C lsls r0, 24 cmp r0, 0 bne _0807B948 bl DestroyRainSprites ldr r0, _0807B940 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r5, _0807B944 @ =0x000006ce adds r1, r5 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] movs r0, 0 b _0807B94A .align 2, 0 _0807B93C: .4byte 0x000006d9 _0807B940: .4byte gUnknown_83C2BBC _0807B944: .4byte 0x000006ce _0807B948: movs r0, 0x1 _0807B94A: pop {r4,r5} pop {r1} bx r1 thumb_func_end LightRain_Finish thumb_func_start sub_807B950 sub_807B950: @ 807B950 push {r4-r7,lr} mov r7, r8 push {r7} adds r7, r0, 0 movs r1, 0x30 ldrsh r0, [r7, r1] cmp r0, 0 bne _0807B964 ldr r0, _0807BA08 @ =0x00000169 strh r0, [r7, 0x30] _0807B964: movs r2, 0x30 ldrsh r1, [r7, r2] ldr r0, _0807BA0C @ =0x41c64e6d muls r0, r1 ldr r3, _0807BA10 @ =0x00003039 adds r0, r3 lsls r0, 1 lsrs r0, 17 movs r1, 0x96 lsls r1, 2 bl __umodsi3 movs r1, 0 mov r8, r1 strh r0, [r7, 0x30] ldr r1, _0807BA14 @ =gUnknown_83C66C4 ldr r0, _0807BA18 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r2, _0807BA1C @ =0x000006dc adds r5, r2 ldrb r0, [r5] lsls r0, 2 adds r0, r1 ldrh r6, [r0] movs r3, 0x30 ldrsh r0, [r7, r3] movs r1, 0x1E bl __modsi3 adds r4, r0, 0 lsls r4, 16 asrs r4, 16 lsls r0, r4, 3 strh r0, [r7, 0x32] movs r1, 0x30 ldrsh r0, [r7, r1] movs r1, 0x1E bl __divsi3 lsls r0, 16 lsls r4, 7 strh r4, [r7, 0x32] asrs r0, 9 strh r0, [r7, 0x34] ldr r2, _0807BA20 @ =gUnknown_83C66BC ldrb r1, [r5] lsls r1, 2 adds r1, r2 movs r3, 0 ldrsh r1, [r1, r3] muls r1, r6 subs r4, r1 strh r4, [r7, 0x32] ldrb r1, [r5] lsls r1, 2 adds r2, 0x2 adds r1, r2 movs r2, 0 ldrsh r1, [r1, r2] muls r1, r6 subs r0, r1 strh r0, [r7, 0x34] adds r0, r7, 0 movs r1, 0 bl StartSpriteAnim mov r3, r8 strh r3, [r7, 0x36] adds r2, r7, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x3 negs r0, r0 ands r0, r1 strb r0, [r2] strh r6, [r7, 0x2E] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807BA08: .4byte 0x00000169 _0807BA0C: .4byte 0x41c64e6d _0807BA10: .4byte 0x00003039 _0807BA14: .4byte gUnknown_83C66C4 _0807BA18: .4byte gUnknown_83C2BBC _0807BA1C: .4byte 0x000006dc _0807BA20: .4byte gUnknown_83C66BC thumb_func_end sub_807B950 thumb_func_start sub_807BA24 sub_807BA24: @ 807BA24 push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x36 ldrsh r0, [r5, r1] cmp r0, 0 bne _0807BB00 ldr r3, _0807BA98 @ =gUnknown_83C66BC ldr r4, _0807BA9C @ =gUnknown_83C2BBC ldr r2, [r4] ldr r0, _0807BAA0 @ =0x000006dc adds r2, r0 ldrb r0, [r2] lsls r0, 2 adds r0, r3 ldrh r1, [r0] ldrh r0, [r5, 0x32] adds r1, r0 strh r1, [r5, 0x32] ldrb r0, [r2] lsls r0, 2 adds r3, 0x2 adds r0, r3 ldrh r0, [r0] ldrh r2, [r5, 0x34] adds r0, r2 strh r0, [r5, 0x34] lsls r1, 16 asrs r1, 20 strh r1, [r5, 0x20] lsls r0, 16 asrs r2, r0, 20 strh r2, [r5, 0x22] movs r3, 0x38 ldrsh r0, [r5, r3] adds r3, r4, 0 cmp r0, 0 beq _0807BAA4 adds r0, r1, 0 adds r0, 0x8 lsls r0, 16 movs r1, 0x80 lsls r1, 17 cmp r0, r1 bhi _0807BAA4 adds r1, r2, 0 movs r0, 0x10 negs r0, r0 cmp r1, r0 blt _0807BAA4 cmp r1, 0xB0 bgt _0807BAA4 adds r0, r5, 0 adds r0, 0x3E ldrb r2, [r0] movs r1, 0x5 negs r1, r1 ands r1, r2 b _0807BAAE .align 2, 0 _0807BA98: .4byte gUnknown_83C66BC _0807BA9C: .4byte gUnknown_83C2BBC _0807BAA0: .4byte 0x000006dc _0807BAA4: adds r0, r5, 0 adds r0, 0x3E ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 _0807BAAE: strb r1, [r0] adds r4, r0, 0 ldrh r0, [r5, 0x2E] subs r0, 0x1 strh r0, [r5, 0x2E] lsls r0, 16 cmp r0, 0 bne _0807BB20 ldr r0, [r3] ldr r1, _0807BAF4 @ =0x000006dc adds r0, r1 ldrb r1, [r0] adds r1, 0x1 lsls r1, 24 lsrs r1, 24 adds r0, r5, 0 bl StartSpriteAnim movs r0, 0x1 strh r0, [r5, 0x36] ldr r1, _0807BAF8 @ =gSpriteCoordOffsetX ldrh r0, [r5, 0x20] ldrh r1, [r1] subs r0, r1 strh r0, [r5, 0x20] ldr r1, _0807BAFC @ =gSpriteCoordOffsetY ldrh r0, [r5, 0x22] ldrh r1, [r1] subs r0, r1 strh r0, [r5, 0x22] ldrb r0, [r4] movs r1, 0x2 orrs r0, r1 strb r0, [r4] b _0807BB20 .align 2, 0 _0807BAF4: .4byte 0x000006dc _0807BAF8: .4byte gSpriteCoordOffsetX _0807BAFC: .4byte gSpriteCoordOffsetY _0807BB00: adds r0, r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0807BB20 adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] adds r0, r5, 0 bl sub_807B950 _0807BB20: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_807BA24 thumb_func_start sub_807BB28 sub_807BB28: @ 807BB28 push {r4,lr} adds r4, r0, 0 ldrh r1, [r4, 0x2E] movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0 bne _0807BB48 adds r0, r4, 0 bl sub_807B950 ldr r0, _0807BB44 @ =sub_807BA24 str r0, [r4, 0x1C] b _0807BB4C .align 2, 0 _0807BB44: .4byte sub_807BA24 _0807BB48: subs r0, r1, 0x1 strh r0, [r4, 0x2E] _0807BB4C: pop {r4} pop {r0} bx r0 thumb_func_end sub_807BB28 thumb_func_start sub_807BB54 sub_807BB54: @ 807BB54 push {r4-r7,lr} mov r7, r8 push {r7} adds r7, r0, 0 lsls r5, r1, 16 lsrs r5, 16 ldr r2, _0807BBD8 @ =gUnknown_83C66C4 ldr r0, _0807BBDC @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807BBE0 @ =0x000006dc adds r0, r1 ldrb r0, [r0] lsls r0, 2 adds r1, r0, r2 ldrh r1, [r1] mov r8, r1 adds r2, 0x2 adds r0, r2 ldrh r4, [r0] add r4, r8 adds r0, r5, 0 adds r1, r4, 0 bl __divsi3 lsls r0, 16 lsrs r6, r0, 16 adds r0, r5, 0 adds r1, r4, 0 bl __modsi3 lsls r0, 16 lsrs r4, r0, 16 subs r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 ldr r0, _0807BBE4 @ =0x0000ffff cmp r6, r0 beq _0807BBB2 adds r5, r0, 0 _0807BBA2: adds r0, r7, 0 bl sub_807B950 subs r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, r5 bne _0807BBA2 _0807BBB2: cmp r4, r8 bcs _0807BBE8 subs r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r0, _0807BBE4 @ =0x0000ffff cmp r4, r0 beq _0807BBD4 adds r5, r0, 0 _0807BBC4: adds r0, r7, 0 bl sub_807BA24 subs r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, r5 bne _0807BBC4 _0807BBD4: movs r0, 0 b _0807BBFC .align 2, 0 _0807BBD8: .4byte gUnknown_83C66C4 _0807BBDC: .4byte gUnknown_83C2BBC _0807BBE0: .4byte 0x000006dc _0807BBE4: .4byte 0x0000ffff _0807BBE8: mov r1, r8 subs r0, r4, r1 strh r0, [r7, 0x2E] adds r2, r7, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] movs r0, 0x1 _0807BBFC: strh r0, [r7, 0x3A] pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_807BB54 thumb_func_start LoadRainSpriteSheet LoadRainSpriteSheet: @ 807BC08 push {lr} ldr r0, _0807BC14 @ =gUnknown_83C66CC bl LoadSpriteSheet pop {r0} bx r0 .align 2, 0 _0807BC14: .4byte gUnknown_83C66CC thumb_func_end LoadRainSpriteSheet thumb_func_start CreateRainSprite CreateRainSprite: @ 807BC18 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, _0807BCC4 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r0, _0807BCC8 @ =0x000006da adds r2, r4, r0 ldrb r0, [r2] cmp r0, 0x18 bne _0807BC32 b _0807BD38 _0807BC32: ldrb r7, [r2] ldr r0, _0807BCCC @ =gUnknown_83C66A4 ldr r2, _0807BCD0 @ =gUnknown_83C6608 lsls r6, r7, 2 adds r2, r6, r2 movs r3, 0 ldrsh r1, [r2, r3] movs r3, 0x2 ldrsh r2, [r2, r3] movs r3, 0x4E bl CreateSpriteAtEnd lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x40 beq _0807BCE0 ldr r3, _0807BCD4 @ =gSprites lsls r4, r5, 4 adds r1, r4, r5 lsls r1, 2 adds r1, r3 movs r0, 0 strh r0, [r1, 0x38] lsls r2, r7, 3 adds r0, r2, r7 lsls r0, 4 adds r0, r7 strh r0, [r1, 0x30] lsls r0, 16 asrs r0, 16 ldr r1, _0807BCD8 @ =0x00000257 mov r10, r6 mov r9, r3 mov r12, r4 mov r8, r2 cmp r0, r1 ble _0807BC96 adds r2, r1, 0 _0807BC7E: adds r0, r4, r5 lsls r0, 2 ldr r6, _0807BCD4 @ =gSprites adds r0, r6 ldr r3, _0807BCDC @ =0xfffffda8 ldrh r6, [r0, 0x30] adds r1, r3, r6 strh r1, [r0, 0x30] lsls r1, 16 asrs r1, 16 cmp r1, r2 bgt _0807BC7E _0807BC96: mov r0, r12 adds r4, r0, r5 lsls r4, 2 add r4, r9 adds r0, r4, 0 bl sub_807B950 mov r3, r8 adds r1, r3, r7 adds r0, r4, 0 bl sub_807BB54 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _0807BCC4 @ =gUnknown_83C2BBC ldr r0, [r0] add r0, r10 str r4, [r0] b _0807BCE6 .align 2, 0 _0807BCC4: .4byte gUnknown_83C2BBC _0807BCC8: .4byte 0x000006da _0807BCCC: .4byte gUnknown_83C66A4 _0807BCD0: .4byte gUnknown_83C6608 _0807BCD4: .4byte gSprites _0807BCD8: .4byte 0x00000257 _0807BCDC: .4byte 0xfffffda8 _0807BCE0: adds r1, r4, r6 movs r0, 0 str r0, [r1] _0807BCE6: ldr r0, _0807BD1C @ =gUnknown_83C2BBC ldr r2, [r0] ldr r6, _0807BD20 @ =0x000006da adds r1, r2, r6 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 cmp r0, 0x18 bne _0807BD3C movs r3, 0 adds r1, r2, 0 ldr r5, _0807BD24 @ =sub_807BA24 ldr r4, _0807BD28 @ =sub_807BB28 _0807BD04: lsls r0, r3, 2 adds r0, r1, r0 ldr r2, [r0] cmp r2, 0 beq _0807BD2E movs r6, 0x3A ldrsh r0, [r2, r6] cmp r0, 0 bne _0807BD2C str r5, [r2, 0x1C] b _0807BD2E .align 2, 0 _0807BD1C: .4byte gUnknown_83C2BBC _0807BD20: .4byte 0x000006da _0807BD24: .4byte sub_807BA24 _0807BD28: .4byte sub_807BB28 _0807BD2C: str r4, [r2, 0x1C] _0807BD2E: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, 0x17 bls _0807BD04 _0807BD38: movs r0, 0 b _0807BD3E _0807BD3C: movs r0, 0x1 _0807BD3E: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end CreateRainSprite thumb_func_start sub_807BD4C sub_807BD4C: @ 807BD4C push {r4-r7,lr} ldr r0, _0807BD68 @ =gUnknown_83C2BBC ldr r3, [r0] movs r0, 0xDB lsls r0, 3 adds r4, r3, r0 ldr r1, _0807BD6C @ =0x000006d9 adds r5, r3, r1 ldrb r0, [r4] ldrb r7, [r5] cmp r0, r7 bne _0807BD70 movs r0, 0 b _0807BDD2 .align 2, 0 _0807BD68: .4byte gUnknown_83C2BBC _0807BD6C: .4byte 0x000006d9 _0807BD70: ldr r0, _0807BDA8 @ =0x000006d6 adds r2, r3, r0 ldrh r0, [r2] adds r0, 0x1 movs r6, 0 strh r0, [r2] ldr r7, _0807BDAC @ =0x000006db adds r1, r3, r7 lsls r0, 16 lsrs r0, 16 ldrb r1, [r1] cmp r0, r1 bls _0807BDD0 strh r6, [r2] ldrb r0, [r4] adds r1, r0, 0 ldrb r5, [r5] cmp r1, r5 bcs _0807BDB0 adds r0, 0x1 strb r0, [r4] lsls r0, r1, 2 adds r0, r3, r0 ldr r1, [r0] movs r0, 0x1 strh r0, [r1, 0x38] b _0807BDD0 .align 2, 0 _0807BDA8: .4byte 0x000006d6 _0807BDAC: .4byte 0x000006db _0807BDB0: subs r0, 0x1 strb r0, [r4] ldrb r0, [r4] lsls r0, 2 adds r0, r3, r0 ldr r0, [r0] strh r6, [r0, 0x38] ldrb r0, [r4] lsls r0, 2 adds r0, r3, r0 ldr r1, [r0] adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 orrs r0, r2 strb r0, [r1] _0807BDD0: movs r0, 0x1 _0807BDD2: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_807BD4C thumb_func_start DestroyRainSprites DestroyRainSprites: @ 807BDD8 push {r4-r7,lr} movs r4, 0 ldr r0, _0807BE20 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r3, _0807BE24 @ =0x000006da adds r1, r2, r3 adds r7, r0, 0 ldrb r1, [r1] cmp r4, r1 bcs _0807BE0A adds r5, r2, 0 adds r6, r5, r3 _0807BDF0: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807BDFE bl DestroySprite _0807BDFE: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldrb r0, [r6] cmp r4, r0 bcc _0807BDF0 _0807BE0A: ldr r0, [r7] ldr r1, _0807BE24 @ =0x000006da adds r0, r1 movs r1, 0 strb r1, [r0] ldr r0, _0807BE28 @ =0x00001206 bl FreeSpriteTilesByTag pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807BE20: .4byte gUnknown_83C2BBC _0807BE24: .4byte 0x000006da _0807BE28: .4byte 0x00001206 thumb_func_end DestroyRainSprites thumb_func_start Snow_InitVars Snow_InitVars: @ 807BE2C push {r4,lr} ldr r0, _0807BE68 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807BE6C @ =0x000006cc adds r0, r1, r2 movs r2, 0 movs r3, 0 strh r3, [r0] ldr r4, _0807BE70 @ =0x000006d2 adds r0, r1, r4 strb r2, [r0] ldr r0, _0807BE74 @ =0x000006c1 adds r2, r1, r0 movs r0, 0x3 strb r0, [r2] subs r4, 0x10 adds r2, r1, r4 movs r0, 0x14 strb r0, [r2] ldr r0, _0807BE78 @ =0x000006e5 adds r2, r1, r0 movs r0, 0x10 strb r0, [r2] movs r2, 0xDC lsls r2, 3 adds r1, r2 strh r3, [r1] pop {r4} pop {r0} bx r0 .align 2, 0 _0807BE68: .4byte gUnknown_83C2BBC _0807BE6C: .4byte 0x000006cc _0807BE70: .4byte 0x000006d2 _0807BE74: .4byte 0x000006c1 _0807BE78: .4byte 0x000006e5 thumb_func_end Snow_InitVars thumb_func_start Snow_InitAll Snow_InitAll: @ 807BE7C push {r4-r7,lr} mov r7, r8 push {r7} bl Snow_InitVars ldr r2, _0807BEDC @ =gUnknown_83C2BBC ldr r1, [r2] ldr r3, _0807BEE0 @ =0x000006d2 adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0 bne _0807BED2 mov r8, r2 adds r7, r1, r3 _0807BE98: bl snowflakes_progress2 movs r4, 0 mov r1, r8 ldr r0, [r1] ldr r3, _0807BEE4 @ =0x000006e4 adds r0, r3 ldrb r0, [r0] cmp r4, r0 bcs _0807BECC ldr r0, _0807BEDC @ =gUnknown_83C2BBC ldr r5, [r0] adds r6, r5, r3 _0807BEB2: lsls r1, r4, 2 adds r0, r5, 0 adds r0, 0x60 adds r0, r1 ldr r0, [r0] bl sub_807C1AC adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldrb r0, [r6] cmp r4, r0 bcc _0807BEB2 _0807BECC: ldrb r0, [r7] cmp r0, 0 beq _0807BE98 _0807BED2: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807BEDC: .4byte gUnknown_83C2BBC _0807BEE0: .4byte 0x000006d2 _0807BEE4: .4byte 0x000006e4 thumb_func_end Snow_InitAll thumb_func_start snowflakes_progress2 snowflakes_progress2: @ 807BEE8 push {r4,r5,lr} ldr r0, _0807BF18 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807BF1C @ =0x000006cc adds r4, r5, r0 ldrh r0, [r4] cmp r0, 0 bne _0807BF10 bl snowflakes_progress lsls r0, 24 cmp r0, 0 bne _0807BF10 ldr r0, _0807BF20 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807BF10: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807BF18: .4byte gUnknown_83C2BBC _0807BF1C: .4byte 0x000006cc _0807BF20: .4byte 0x000006d2 thumb_func_end snowflakes_progress2 thumb_func_start Snow_Finish Snow_Finish: @ 807BF24 push {r4,lr} ldr r0, _0807BF3C @ =gUnknown_83C2BBC ldr r2, [r0] ldr r0, _0807BF40 @ =0x000006ce adds r3, r2, r0 ldrh r1, [r3] cmp r1, 0 beq _0807BF44 cmp r1, 0x1 beq _0807BF56 movs r0, 0 b _0807BF82 .align 2, 0 _0807BF3C: .4byte gUnknown_83C2BBC _0807BF40: .4byte 0x000006ce _0807BF44: ldr r4, _0807BF74 @ =0x000006e5 adds r0, r2, r4 strb r1, [r0] subs r4, 0x5 adds r0, r2, r4 strh r1, [r0] ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] _0807BF56: bl snowflakes_progress lsls r0, 24 cmp r0, 0 bne _0807BF80 ldr r0, _0807BF78 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807BF7C @ =0x000006ce adds r1, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] movs r0, 0 b _0807BF82 .align 2, 0 _0807BF74: .4byte 0x000006e5 _0807BF78: .4byte gUnknown_83C2BBC _0807BF7C: .4byte 0x000006ce _0807BF80: movs r0, 0x1 _0807BF82: pop {r4} pop {r1} bx r1 thumb_func_end Snow_Finish thumb_func_start snowflakes_progress snowflakes_progress: @ 807BF88 push {r4,lr} ldr r0, _0807BFA4 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807BFA8 @ =0x000006e4 adds r3, r1, r0 ldr r4, _0807BFAC @ =0x000006e5 adds r2, r1, r4 ldrb r0, [r3] ldrb r4, [r2] cmp r0, r4 bne _0807BFB0 movs r0, 0 b _0807BFF2 .align 2, 0 _0807BFA4: .4byte gUnknown_83C2BBC _0807BFA8: .4byte 0x000006e4 _0807BFAC: .4byte 0x000006e5 _0807BFB0: movs r0, 0xDC lsls r0, 3 adds r1, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] lsls r0, 16 lsrs r0, 16 cmp r0, 0x24 bls _0807BFDA movs r0, 0 strh r0, [r1] ldrb r0, [r3] ldrb r2, [r2] cmp r0, r2 bcs _0807BFD6 bl snowflake_add b _0807BFDA _0807BFD6: bl snowflake_remove _0807BFDA: ldr r0, _0807BFF8 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r2, _0807BFFC @ =0x000006e4 adds r1, r0, r2 ldr r4, _0807C000 @ =0x000006e5 adds r0, r4 ldrb r1, [r1] ldrb r0, [r0] eors r1, r0 negs r0, r1 orrs r0, r1 lsrs r0, 31 _0807BFF2: pop {r4} pop {r1} bx r1 .align 2, 0 _0807BFF8: .4byte gUnknown_83C2BBC _0807BFFC: .4byte 0x000006e4 _0807C000: .4byte 0x000006e5 thumb_func_end snowflakes_progress thumb_func_start snowflake_add snowflake_add: @ 807C004 push {r4-r6,lr} ldr r0, _0807C058 @ =gUnknown_83C6704 movs r1, 0 movs r2, 0 movs r3, 0x4E bl CreateSpriteAtEnd lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0807C068 ldr r0, _0807C05C @ =gSprites lsls r4, r1, 4 adds r4, r1 lsls r4, 2 adds r4, r0 ldr r0, _0807C060 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807C064 @ =0x000006e4 adds r6, r5, r0 ldrb r0, [r6] strh r0, [r4, 0x36] adds r0, r4, 0 bl sub_807C0A4 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x2 orrs r0, r1 strb r0, [r2] ldrb r0, [r6] adds r1, r0, 0x1 strb r1, [r6] lsls r0, 24 lsrs r0, 22 adds r5, 0x60 adds r5, r0 str r4, [r5] movs r0, 0x1 b _0807C06A .align 2, 0 _0807C058: .4byte gUnknown_83C6704 _0807C05C: .4byte gSprites _0807C060: .4byte gUnknown_83C2BBC _0807C064: .4byte 0x000006e4 _0807C068: movs r0, 0 _0807C06A: pop {r4-r6} pop {r1} bx r1 thumb_func_end snowflake_add thumb_func_start snowflake_remove snowflake_remove: @ 807C070 push {lr} ldr r0, _0807C084 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807C088 @ =0x000006e4 adds r2, r1, r0 ldrb r0, [r2] cmp r0, 0 bne _0807C08C movs r0, 0 b _0807C0A0 .align 2, 0 _0807C084: .4byte gUnknown_83C2BBC _0807C088: .4byte 0x000006e4 _0807C08C: subs r0, 0x1 strb r0, [r2] lsls r0, 24 lsrs r0, 22 adds r1, 0x60 adds r1, r0 ldr r0, [r1] bl DestroySprite movs r0, 0x1 _0807C0A0: pop {r1} bx r1 thumb_func_end snowflake_remove thumb_func_start sub_807C0A4 sub_807C0A4: @ 807C0A4 push {r4-r7,lr} adds r5, r0, 0 bl Random movs r1, 0x36 ldrsh r2, [r5, r1] lsls r1, r2, 2 adds r1, r2 movs r2, 0x7 ands r1, r2 lsls r4, r1, 4 subs r4, r1 lsls r4, 1 lsls r0, 16 lsrs r0, 16 movs r1, 0x1E bl __umodsi3 adds r4, r0 lsls r4, 16 lsrs r4, 16 ldr r1, _0807C148 @ =gSpriteCoordOffsetY adds r0, r5, 0 adds r0, 0x29 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r1, [r1] adds r0, r1 movs r2, 0x3 negs r2, r2 adds r1, r2, 0 subs r1, r0 movs r7, 0 strh r1, [r5, 0x22] ldr r1, _0807C14C @ =gSpriteCoordOffsetX adds r0, r5, 0 adds r0, 0x28 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r1, [r1] adds r0, r1 subs r4, r0 strh r4, [r5, 0x20] movs r1, 0x22 ldrsh r0, [r5, r1] lsls r0, 7 strh r0, [r5, 0x2E] strh r7, [r5, 0x24] bl Random lsls r0, 16 lsrs r0, 16 adds r6, r0, 0 movs r4, 0x3 ands r4, r6 lsls r0, r4, 2 adds r0, r4 adds r0, 0x40 strh r0, [r5, 0x30] strh r0, [r5, 0x3C] movs r1, 0x1 bics r1, r6 adds r0, r5, 0 bl StartSpriteAnim strh r7, [r5, 0x34] movs r0, 0x1 cmp r4, 0 bne _0807C134 movs r0, 0x2 _0807C134: strh r0, [r5, 0x32] movs r0, 0x1F ands r0, r6 adds r0, 0xD2 strh r0, [r5, 0x3A] strh r7, [r5, 0x38] pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807C148: .4byte gSpriteCoordOffsetY _0807C14C: .4byte gSpriteCoordOffsetX thumb_func_end sub_807C0A4 thumb_func_start sub_807C150 sub_807C150: @ 807C150 push {r4,lr} adds r3, r0, 0 ldr r0, _0807C19C @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807C1A0 @ =0x000006e2 adds r4, r0, r1 ldrh r0, [r4] cmp r0, 0x12 bls _0807C196 adds r2, r3, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldr r0, _0807C1A4 @ =sub_807C1AC str r0, [r3, 0x1C] ldr r1, _0807C1A8 @ =gSpriteCoordOffsetY adds r0, r3, 0 adds r0, 0x29 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 ldrh r1, [r1] adds r0, r1 movs r1, 0xFA subs r1, r0 movs r2, 0 strh r1, [r3, 0x22] movs r1, 0x22 ldrsh r0, [r3, r1] lsls r0, 7 strh r0, [r3, 0x2E] strh r2, [r4] _0807C196: pop {r4} pop {r0} bx r0 .align 2, 0 _0807C19C: .4byte gUnknown_83C2BBC _0807C1A0: .4byte 0x000006e2 _0807C1A4: .4byte sub_807C1AC _0807C1A8: .4byte gSpriteCoordOffsetY thumb_func_end sub_807C150 thumb_func_start sub_807C1AC sub_807C1AC: @ 807C1AC push {r4,r5,lr} adds r4, r0, 0 ldrh r0, [r4, 0x30] ldrh r1, [r4, 0x2E] adds r0, r1 strh r0, [r4, 0x2E] lsls r0, 16 asrs r0, 23 strh r0, [r4, 0x22] ldrh r0, [r4, 0x32] ldrh r2, [r4, 0x34] adds r0, r2 movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x34] ldr r1, _0807C224 @ =gUnknown_825E074 movs r3, 0x34 ldrsh r0, [r4, r3] lsls r0, 1 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bge _0807C1DE adds r0, 0x3F _0807C1DE: asrs r0, 6 strh r0, [r4, 0x24] adds r0, r4, 0 adds r0, 0x28 movs r5, 0 ldrsb r5, [r0, r5] ldrh r0, [r4, 0x20] adds r0, r5 ldr r1, _0807C228 @ =gSpriteCoordOffsetX ldrh r1, [r1] adds r3, r1, r0 ldr r2, _0807C22C @ =0x000001ff adds r0, r2, 0 ands r3, r0 adds r2, r3, 0 movs r0, 0x80 lsls r0, 1 ands r0, r2 cmp r0, 0 beq _0807C210 ldr r3, _0807C230 @ =0xffffff00 adds r0, r3, 0 orrs r2, r0 lsls r0, r2, 16 lsrs r3, r0, 16 _0807C210: lsls r0, r3, 16 asrs r0, 16 movs r2, 0x3 negs r2, r2 cmp r0, r2 bge _0807C234 adds r1, r5 movs r0, 0xF2 subs r0, r1 b _0807C23C .align 2, 0 _0807C224: .4byte gUnknown_825E074 _0807C228: .4byte gSpriteCoordOffsetX _0807C22C: .4byte 0x000001ff _0807C230: .4byte 0xffffff00 _0807C234: cmp r0, 0xF2 ble _0807C23E adds r0, r1, r5 subs r0, r2, r0 _0807C23C: strh r0, [r4, 0x20] _0807C23E: adds r0, r4, 0 adds r0, 0x29 movs r3, 0 ldrsb r3, [r0, r3] ldrh r0, [r4, 0x22] adds r0, r3 ldr r1, _0807C27C @ =gSpriteCoordOffsetY ldrh r1, [r1] adds r2, r1, r0 movs r0, 0xFF ands r2, r0 adds r0, r2, 0 subs r0, 0xA4 lsls r0, 16 lsrs r0, 16 cmp r0, 0x6 bhi _0807C280 adds r1, r3 movs r0, 0xFA subs r0, r1 movs r1, 0 strh r0, [r4, 0x22] movs r2, 0x22 ldrsh r0, [r4, r2] lsls r0, 7 strh r0, [r4, 0x2E] strh r1, [r4, 0x38] movs r0, 0xDC strh r0, [r4, 0x3A] b _0807C2AC .align 2, 0 _0807C27C: .4byte gSpriteCoordOffsetY _0807C280: adds r0, r2, 0 subs r0, 0xF3 lsls r0, 16 lsrs r0, 16 cmp r0, 0x6 bhi _0807C2AC movs r1, 0 movs r0, 0xA3 strh r0, [r4, 0x22] lsls r0, 7 strh r0, [r4, 0x2E] strh r1, [r4, 0x38] movs r0, 0xDC strh r0, [r4, 0x3A] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _0807C2E0 @ =sub_807C150 str r0, [r4, 0x1C] _0807C2AC: ldrh r0, [r4, 0x38] adds r0, 0x1 strh r0, [r4, 0x38] lsls r0, 16 asrs r0, 16 movs r3, 0x3A ldrsh r1, [r4, r3] cmp r0, r1 bne _0807C2D8 adds r0, r4, 0 bl sub_807C0A4 movs r0, 0xFA strh r0, [r4, 0x22] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldr r0, _0807C2E0 @ =sub_807C150 str r0, [r4, 0x1C] _0807C2D8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807C2E0: .4byte sub_807C150 thumb_func_end sub_807C1AC thumb_func_start sub_807C2E4 sub_807C2E4: @ 807C2E4 push {r4,r5,lr} ldr r0, _0807C33C @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C340 @ =0x000006cc adds r0, r1, r2 movs r3, 0 movs r2, 0 strh r2, [r0] ldr r5, _0807C344 @ =0x000006d2 adds r4, r1, r5 strb r3, [r4] adds r5, 0x4 adds r0, r1, r5 strh r2, [r0] ldr r0, _0807C348 @ =0x000006db adds r2, r1, r0 movs r0, 0x4 strb r0, [r2] ldr r2, _0807C34C @ =0x000006dc adds r0, r1, r2 strb r3, [r0] adds r5, 0x3 adds r2, r1, r5 movs r0, 0x10 strb r0, [r2] ldr r0, _0807C350 @ =0x000006c1 adds r2, r1, r0 movs r0, 0x3 strb r0, [r2] subs r5, 0x17 adds r2, r1, r5 movs r0, 0x14 strb r0, [r2] strb r3, [r4] ldr r0, _0807C354 @ =0x000006ed adds r1, r0 strb r3, [r1] movs r0, 0x4A bl SetRainStrengthFromSoundEffect pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807C33C: .4byte gUnknown_83C2BBC _0807C340: .4byte 0x000006cc _0807C344: .4byte 0x000006d2 _0807C348: .4byte 0x000006db _0807C34C: .4byte 0x000006dc _0807C350: .4byte 0x000006c1 _0807C354: .4byte 0x000006ed thumb_func_end sub_807C2E4 thumb_func_start sub_807C358 sub_807C358: @ 807C358 push {r4,lr} bl sub_807C2E4 ldr r0, _0807C380 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C384 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807C378 adds r4, r1, r2 _0807C36E: bl Rain_Main ldrb r0, [r4] cmp r0, 0 beq _0807C36E _0807C378: pop {r4} pop {r0} bx r0 .align 2, 0 _0807C380: .4byte gUnknown_83C2BBC _0807C384: .4byte 0x000006d2 thumb_func_end sub_807C358 thumb_func_start sub_807C388 sub_807C388: @ 807C388 push {r4,r5,lr} ldr r0, _0807C3DC @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C3E0 @ =0x000006cc adds r0, r1, r2 movs r4, 0 movs r2, 0 strh r2, [r0] ldr r5, _0807C3E4 @ =0x000006d2 adds r3, r1, r5 strb r4, [r3] adds r5, 0x4 adds r0, r1, r5 strh r2, [r0] ldr r0, _0807C3E8 @ =0x000006db adds r2, r1, r0 movs r0, 0x4 strb r0, [r2] adds r5, 0x6 adds r2, r1, r5 movs r0, 0x1 strb r0, [r2] ldr r0, _0807C3EC @ =0x000006d9 adds r2, r1, r0 movs r0, 0x18 strb r0, [r2] subs r5, 0x1B adds r2, r1, r5 movs r0, 0x3 strb r0, [r2] ldr r0, _0807C3F0 @ =0x000006c2 adds r1, r0 movs r0, 0x14 strb r0, [r1] strb r4, [r3] movs r0, 0x4C bl SetRainStrengthFromSoundEffect pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807C3DC: .4byte gUnknown_83C2BBC _0807C3E0: .4byte 0x000006cc _0807C3E4: .4byte 0x000006d2 _0807C3E8: .4byte 0x000006db _0807C3EC: .4byte 0x000006d9 _0807C3F0: .4byte 0x000006c2 thumb_func_end sub_807C388 thumb_func_start sub_807C3F4 sub_807C3F4: @ 807C3F4 push {r4,lr} bl sub_807C388 ldr r0, _0807C41C @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C420 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807C414 adds r4, r1, r2 _0807C40A: bl Rain_Main ldrb r0, [r4] cmp r0, 0 beq _0807C40A _0807C414: pop {r4} pop {r0} bx r0 .align 2, 0 _0807C41C: .4byte gUnknown_83C2BBC _0807C420: .4byte 0x000006d2 thumb_func_end sub_807C3F4 thumb_func_start Rain_Main Rain_Main: @ 807C424 push {r4,r5,lr} bl UpdateThunderSound ldr r0, _0807C444 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807C448 @ =0x000006cc adds r0, r1 ldrh r0, [r0] cmp r0, 0xE bls _0807C43A b _0807C79A _0807C43A: lsls r0, 2 ldr r1, _0807C44C @ =_0807C450 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0807C444: .4byte gUnknown_83C2BBC _0807C448: .4byte 0x000006cc _0807C44C: .4byte _0807C450 .align 2, 0 _0807C450: .4byte _0807C48C .4byte _0807C4A8 .4byte _0807C4CC .4byte _0807C4FC .4byte _0807C520 .4byte _0807C550 .4byte _0807C580 .4byte _0807C5AC .4byte _0807C5CA .4byte _0807C628 .4byte _0807C6AC .4byte _0807C6D4 .4byte _0807C704 .4byte _0807C748 .4byte _0807C77C _0807C48C: bl LoadRainSpriteSheet ldr r0, _0807C4A0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C4A4 @ =0x000006cc adds r1, r2 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C4A0: .4byte gUnknown_83C2BBC _0807C4A4: .4byte 0x000006cc _0807C4A8: bl CreateRainSprite lsls r0, 24 cmp r0, 0 beq _0807C4B4 b _0807C79A _0807C4B4: ldr r0, _0807C4C4 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r3, _0807C4C8 @ =0x000006cc adds r1, r3 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C4C4: .4byte gUnknown_83C2BBC _0807C4C8: .4byte 0x000006cc _0807C4CC: bl sub_807BD4C lsls r0, 24 cmp r0, 0 beq _0807C4D8 b _0807C79A _0807C4D8: ldr r0, _0807C4F0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807C4F4 @ =0x000006d2 adds r2, r1, r0 movs r0, 0x1 strb r0, [r2] ldr r2, _0807C4F8 @ =0x000006cc adds r1, r2 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C4F0: .4byte gUnknown_83C2BBC _0807C4F4: .4byte 0x000006d2 _0807C4F8: .4byte 0x000006cc _0807C4FC: ldr r0, _0807C514 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r3, _0807C518 @ =0x000006c6 adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0 bne _0807C50C b _0807C79A _0807C50C: ldr r0, _0807C51C @ =0x000006cc adds r1, r0 movs r0, 0x6 b _0807C798 .align 2, 0 _0807C514: .4byte gUnknown_83C2BBC _0807C518: .4byte 0x000006c6 _0807C51C: .4byte 0x000006cc _0807C520: ldr r0, _0807C570 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r2, _0807C574 @ =0x000006ea adds r1, r4, r2 movs r0, 0x1 strb r0, [r1] bl Random lsls r0, 16 lsrs r0, 16 movs r5, 0xB4 lsls r5, 1 adds r1, r5, 0 bl __umodsi3 adds r0, r5 ldr r3, _0807C578 @ =0x000006e6 adds r1, r4, r3 strh r0, [r1] ldr r0, _0807C57C @ =0x000006cc adds r4, r0 ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807C550: ldr r0, _0807C570 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r3, _0807C578 @ =0x000006e6 adds r1, r2, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] lsls r0, 16 cmp r0, 0 beq _0807C566 b _0807C79A _0807C566: ldr r0, _0807C57C @ =0x000006cc adds r1, r2, r0 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C570: .4byte gUnknown_83C2BBC _0807C574: .4byte 0x000006ea _0807C578: .4byte 0x000006e6 _0807C57C: .4byte 0x000006cc _0807C580: ldr r0, _0807C5A0 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r1, _0807C5A4 @ =0x000006ea adds r0, r4, r1 movs r5, 0x1 strb r5, [r0] bl Random lsls r0, 16 lsrs r0, 16 ands r0, r5 ldr r2, _0807C5A8 @ =0x000006eb adds r1, r4, r2 strb r0, [r1] b _0807C608 .align 2, 0 _0807C5A0: .4byte gUnknown_83C2BBC _0807C5A4: .4byte 0x000006ea _0807C5A8: .4byte 0x000006eb _0807C5AC: bl Random ldr r1, _0807C614 @ =gUnknown_83C2BBC ldr r2, [r1] movs r1, 0x1 ands r1, r0 adds r1, 0x1 ldr r3, _0807C618 @ =0x000006ec adds r0, r2, r3 strb r1, [r0] ldr r0, _0807C61C @ =0x000006cc adds r2, r0 ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] _0807C5CA: movs r0, 0x13 bl sub_807A790 ldr r0, _0807C614 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C620 @ =0x000006eb adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807C5EE ldr r3, _0807C618 @ =0x000006ec adds r0, r1, r3 ldrb r0, [r0] cmp r0, 0x1 bne _0807C5EE movs r0, 0x14 bl SetThunderCounter _0807C5EE: bl Random ldr r1, _0807C614 @ =gUnknown_83C2BBC ldr r4, [r1] lsls r0, 16 lsrs r0, 16 movs r1, 0x3 bl __umodsi3 adds r0, 0x6 ldr r2, _0807C624 @ =0x000006e6 adds r1, r4, r2 strh r0, [r1] _0807C608: ldr r3, _0807C61C @ =0x000006cc adds r4, r3 ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807C79A .align 2, 0 _0807C614: .4byte gUnknown_83C2BBC _0807C618: .4byte 0x000006ec _0807C61C: .4byte 0x000006cc _0807C620: .4byte 0x000006eb _0807C624: .4byte 0x000006e6 _0807C628: ldr r0, _0807C674 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r0, _0807C678 @ =0x000006e6 adds r5, r4, r0 ldrh r0, [r5] subs r0, 0x1 strh r0, [r5] lsls r0, 16 cmp r0, 0 beq _0807C63E b _0807C79A _0807C63E: movs r0, 0x3 bl sub_807A790 ldr r2, _0807C67C @ =0x000006ea adds r1, r4, r2 movs r0, 0x1 strb r0, [r1] ldr r3, _0807C680 @ =0x000006ec adds r1, r4, r3 ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] lsls r0, 24 cmp r0, 0 beq _0807C688 bl Random lsls r0, 16 lsrs r0, 16 movs r1, 0xF ands r0, r1 adds r0, 0x3C strh r0, [r5] ldr r0, _0807C684 @ =0x000006cc adds r1, r4, r0 movs r0, 0xA b _0807C798 .align 2, 0 _0807C674: .4byte gUnknown_83C2BBC _0807C678: .4byte 0x000006e6 _0807C67C: .4byte 0x000006ea _0807C680: .4byte 0x000006ec _0807C684: .4byte 0x000006cc _0807C688: ldr r1, _0807C698 @ =0x000006eb adds r0, r4, r1 ldrb r0, [r0] cmp r0, 0 bne _0807C6A0 ldr r2, _0807C69C @ =0x000006cc adds r1, r4, r2 b _0807C796 .align 2, 0 _0807C698: .4byte 0x000006eb _0807C69C: .4byte 0x000006cc _0807C6A0: ldr r3, _0807C6A8 @ =0x000006cc adds r1, r4, r3 movs r0, 0xB b _0807C798 .align 2, 0 _0807C6A8: .4byte 0x000006cc _0807C6AC: ldr r0, _0807C6C8 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r0, _0807C6CC @ =0x000006e6 adds r1, r2, r0 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] lsls r0, 16 cmp r0, 0 bne _0807C79A ldr r3, _0807C6D0 @ =0x000006cc adds r1, r2, r3 movs r0, 0x8 b _0807C798 .align 2, 0 _0807C6C8: .4byte gUnknown_83C2BBC _0807C6CC: .4byte 0x000006e6 _0807C6D0: .4byte 0x000006cc _0807C6D4: bl Random ldr r1, _0807C6F8 @ =gUnknown_83C2BBC ldr r2, [r1] lsls r0, 16 lsrs r0, 16 movs r1, 0xF ands r0, r1 adds r0, 0x3C ldr r3, _0807C6FC @ =0x000006e6 adds r1, r2, r3 strh r0, [r1] ldr r0, _0807C700 @ =0x000006cc adds r2, r0 ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] b _0807C79A .align 2, 0 _0807C6F8: .4byte gUnknown_83C2BBC _0807C6FC: .4byte 0x000006e6 _0807C700: .4byte 0x000006cc _0807C704: ldr r0, _0807C73C @ =gUnknown_83C2BBC ldr r5, [r0] ldr r1, _0807C740 @ =0x000006e6 adds r4, r5, r1 ldrh r0, [r4] subs r0, 0x1 strh r0, [r4] lsls r0, 16 cmp r0, 0 bne _0807C79A movs r0, 0x64 bl SetThunderCounter movs r0, 0x13 bl sub_807A790 bl Random movs r1, 0xF ands r1, r0 adds r1, 0x1E strh r1, [r4] ldr r2, _0807C744 @ =0x000006cc adds r1, r5, r2 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C73C: .4byte gUnknown_83C2BBC _0807C740: .4byte 0x000006e6 _0807C744: .4byte 0x000006cc _0807C748: ldr r0, _0807C770 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r3, _0807C774 @ =0x000006e6 adds r1, r4, r3 ldrh r0, [r1] subs r0, 0x1 strh r0, [r1] lsls r0, 16 cmp r0, 0 bne _0807C79A movs r0, 0x13 movs r1, 0x3 movs r2, 0x5 bl sub_807A7C4 ldr r0, _0807C778 @ =0x000006cc adds r1, r4, r0 ldrh r0, [r1] adds r0, 0x1 b _0807C798 .align 2, 0 _0807C770: .4byte gUnknown_83C2BBC _0807C774: .4byte 0x000006e6 _0807C778: .4byte 0x000006cc _0807C77C: ldr r0, _0807C7A0 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r1, _0807C7A4 @ =0x000006c6 adds r0, r2, r1 ldrb r0, [r0] cmp r0, 0x3 bne _0807C79A ldr r3, _0807C7A8 @ =0x000006ea adds r1, r2, r3 movs r0, 0x1 strb r0, [r1] ldr r0, _0807C7AC @ =0x000006cc adds r1, r2, r0 _0807C796: movs r0, 0x4 _0807C798: strh r0, [r1] _0807C79A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807C7A0: .4byte gUnknown_83C2BBC _0807C7A4: .4byte 0x000006c6 _0807C7A8: .4byte 0x000006ea _0807C7AC: .4byte 0x000006cc thumb_func_end Rain_Main thumb_func_start Rain_Finish Rain_Finish: @ 807C7B0 push {r4-r6,lr} ldr r0, _0807C7CC @ =gUnknown_83C2BBC ldr r6, [r0] ldr r0, _0807C7D0 @ =0x000006ce adds r5, r6, r0 ldrh r1, [r5] cmp r1, 0x1 beq _0807C7E6 cmp r1, 0x1 bgt _0807C7D4 cmp r1, 0 beq _0807C7DA b _0807C84C .align 2, 0 _0807C7CC: .4byte gUnknown_83C2BBC _0807C7D0: .4byte 0x000006ce _0807C7D4: cmp r1, 0x2 beq _0807C830 b _0807C84C _0807C7DA: ldr r2, _0807C820 @ =0x000006ea adds r0, r6, r2 strb r1, [r0] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0807C7E6: bl Rain_Main ldr r0, _0807C824 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r1, _0807C820 @ =0x000006ea adds r0, r2, r1 ldrb r0, [r0] cmp r0, 0 beq _0807C854 subs r1, 0x19 adds r0, r2, r1 ldrb r0, [r0] cmp r0, 0x3 beq _0807C84C cmp r0, 0x5 beq _0807C84C cmp r0, 0xD beq _0807C84C ldr r0, _0807C828 @ =0x000006d9 adds r1, r2, r0 movs r0, 0 strb r0, [r1] ldr r0, _0807C82C @ =0x000006ce adds r1, r2, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] b _0807C854 .align 2, 0 _0807C820: .4byte 0x000006ea _0807C824: .4byte gUnknown_83C2BBC _0807C828: .4byte 0x000006d9 _0807C82C: .4byte 0x000006ce _0807C830: bl sub_807BD4C lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0807C854 bl DestroyRainSprites ldr r1, _0807C850 @ =0x000006ed adds r0, r6, r1 strb r4, [r0] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0807C84C: movs r0, 0 b _0807C856 .align 2, 0 _0807C850: .4byte 0x000006ed _0807C854: movs r0, 0x1 _0807C856: pop {r4-r6} pop {r1} bx r1 thumb_func_end Rain_Finish thumb_func_start SetThunderCounter SetThunderCounter: @ 807C85C push {r4-r6,lr} lsls r0, 16 lsrs r6, r0, 16 ldr r0, _0807C890 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r0, _0807C894 @ =0x000006ed adds r5, r4, r0 ldrb r0, [r5] cmp r0, 0 bne _0807C88A bl Random lsls r0, 16 lsrs r0, 16 adds r1, r6, 0 bl __umodsi3 movs r2, 0xDD lsls r2, 3 adds r1, r4, r2 strh r0, [r1] movs r0, 0x1 strb r0, [r5] _0807C88A: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0807C890: .4byte gUnknown_83C2BBC _0807C894: .4byte 0x000006ed thumb_func_end SetThunderCounter thumb_func_start UpdateThunderSound UpdateThunderSound: @ 807C898 push {r4,lr} ldr r0, _0807C8D0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C8D4 @ =0x000006ed adds r0, r1, r2 ldrb r4, [r0] cmp r4, 0x1 bne _0807C8F8 movs r0, 0xDD lsls r0, 3 adds r1, r0 ldrh r0, [r1] cmp r0, 0 bne _0807C8F4 bl IsSEPlaying lsls r0, 24 cmp r0, 0 bne _0807C8F8 bl Random ands r4, r0 cmp r4, 0 beq _0807C8D8 movs r0, 0x50 bl PlaySE b _0807C8DE .align 2, 0 _0807C8D0: .4byte gUnknown_83C2BBC _0807C8D4: .4byte 0x000006ed _0807C8D8: movs r0, 0x51 bl PlaySE _0807C8DE: ldr r0, _0807C8EC @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807C8F0 @ =0x000006ed adds r0, r1 movs r1, 0 strb r1, [r0] b _0807C8F8 .align 2, 0 _0807C8EC: .4byte gUnknown_83C2BBC _0807C8F0: .4byte 0x000006ed _0807C8F4: subs r0, 0x1 strh r0, [r1] _0807C8F8: pop {r4} pop {r0} bx r0 thumb_func_end UpdateThunderSound thumb_func_start Fog1_InitVars Fog1_InitVars: @ 807C900 push {lr} ldr r0, _0807C94C @ =gUnknown_83C2BBC ldr r3, [r0] ldr r0, _0807C950 @ =0x000006cc adds r1, r3, r0 movs r2, 0 movs r0, 0 strh r0, [r1] ldr r1, _0807C954 @ =0x000006d2 adds r0, r3, r1 strb r2, [r0] subs r1, 0x11 adds r0, r3, r1 strb r2, [r0] ldr r2, _0807C958 @ =0x000006c2 adds r1, r3, r2 movs r0, 0x14 strb r0, [r1] ldr r1, _0807C95C @ =0x000006fb adds r0, r3, r1 ldrb r1, [r0] cmp r1, 0 bne _0807C948 adds r2, 0x2E adds r0, r3, r2 strh r1, [r0] adds r2, 0x2 adds r0, r3, r2 strh r1, [r0] subs r2, 0x4 adds r0, r3, r2 strh r1, [r0] movs r0, 0 movs r1, 0x10 bl Weather_SetBlendCoeffs _0807C948: pop {r0} bx r0 .align 2, 0 _0807C94C: .4byte gUnknown_83C2BBC _0807C950: .4byte 0x000006cc _0807C954: .4byte 0x000006d2 _0807C958: .4byte 0x000006c2 _0807C95C: .4byte 0x000006fb thumb_func_end Fog1_InitVars thumb_func_start Fog1_InitAll Fog1_InitAll: @ 807C960 push {r4,lr} bl Fog1_InitVars ldr r0, _0807C988 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807C98C @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807C980 adds r4, r1, r2 _0807C976: bl Fog1_Main ldrb r0, [r4] cmp r0, 0 beq _0807C976 _0807C980: pop {r4} pop {r0} bx r0 .align 2, 0 _0807C988: .4byte gUnknown_83C2BBC _0807C98C: .4byte 0x000006d2 thumb_func_end Fog1_InitAll thumb_func_start Fog1_Main Fog1_Main: @ 807C990 push {r4-r6,lr} ldr r0, _0807C9DC @ =gUnknown_83C2BBC ldr r6, [r0] ldr r0, _0807C9E0 @ =gSpriteCoordOffsetX ldr r1, _0807C9E4 @ =0x000006f2 adds r2, r6, r1 ldrh r0, [r0] ldrh r1, [r2] subs r0, r1 movs r1, 0xFF ands r0, r1 ldr r3, _0807C9E8 @ =0x000006ee adds r1, r6, r3 strh r0, [r1] movs r0, 0xDE lsls r0, 3 adds r1, r6, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] lsls r0, 16 lsrs r0, 16 cmp r0, 0x3 bls _0807C9CA movs r0, 0 strh r0, [r1] ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] _0807C9CA: ldr r1, _0807C9EC @ =0x000006cc adds r5, r6, r1 ldrh r4, [r5] cmp r4, 0 beq _0807C9F0 cmp r4, 0x1 beq _0807CA30 b _0807CA46 .align 2, 0 _0807C9DC: .4byte gUnknown_83C2BBC _0807C9E0: .4byte gSpriteCoordOffsetX _0807C9E4: .4byte 0x000006f2 _0807C9E8: .4byte 0x000006ee _0807C9EC: .4byte 0x000006cc _0807C9F0: bl CreateFog1Sprites movs r3, 0xDA lsls r3, 3 adds r0, r6, r3 ldrb r0, [r0] cmp r0, 0x6 bne _0807CA0C movs r0, 0xC movs r1, 0x8 movs r2, 0x3 bl Weather_SetTargetBlendCoeffs b _0807CA16 _0807CA0C: movs r0, 0x4 movs r1, 0x10 movs r2, 0 bl Weather_SetTargetBlendCoeffs _0807CA16: ldr r0, _0807CA28 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807CA2C @ =0x000006cc adds r1, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] b _0807CA46 .align 2, 0 _0807CA28: .4byte gUnknown_83C2BBC _0807CA2C: .4byte 0x000006cc _0807CA30: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807CA46 ldr r1, _0807CA4C @ =0x000006d2 adds r0, r6, r1 strb r4, [r0] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0807CA46: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0807CA4C: .4byte 0x000006d2 thumb_func_end Fog1_Main thumb_func_start Fog1_Finish Fog1_Finish: @ 807CA50 push {r4,lr} ldr r0, _0807CAA0 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r0, _0807CAA4 @ =gSpriteCoordOffsetX ldr r1, _0807CAA8 @ =0x000006f2 adds r3, r2, r1 ldrh r0, [r0] ldrh r1, [r3] subs r0, r1 movs r1, 0xFF ands r0, r1 ldr r4, _0807CAAC @ =0x000006ee adds r1, r2, r4 strh r0, [r1] movs r0, 0xDE lsls r0, 3 adds r1, r2, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] lsls r0, 16 lsrs r0, 16 cmp r0, 0x3 bls _0807CA8A movs r0, 0 strh r0, [r1] ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] _0807CA8A: ldr r1, _0807CAB0 @ =0x000006ce adds r4, r2, r1 ldrh r0, [r4] cmp r0, 0x1 beq _0807CAC6 cmp r0, 0x1 bgt _0807CAB4 cmp r0, 0 beq _0807CABA b _0807CADE .align 2, 0 _0807CAA0: .4byte gUnknown_83C2BBC _0807CAA4: .4byte gSpriteCoordOffsetX _0807CAA8: .4byte 0x000006f2 _0807CAAC: .4byte 0x000006ee _0807CAB0: .4byte 0x000006ce _0807CAB4: cmp r0, 0x2 beq _0807CAD2 b _0807CADE _0807CABA: movs r0, 0 movs r1, 0x10 movs r2, 0x3 bl Weather_SetTargetBlendCoeffs b _0807CAD6 _0807CAC6: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807CAE2 b _0807CAD6 _0807CAD2: bl DestroyFog1Sprites _0807CAD6: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807CAE2 _0807CADE: movs r0, 0 b _0807CAE4 _0807CAE2: movs r0, 0x1 _0807CAE4: pop {r4} pop {r1} bx r1 thumb_func_end Fog1_Finish thumb_func_start Fog1SpriteCallback Fog1SpriteCallback: @ 807CAEC push {r4,lr} adds r3, r0, 0 ldr r0, _0807CB38 @ =gSpriteCoordOffsetY ldrb r0, [r0] strh r0, [r3, 0x26] ldr r0, _0807CB3C @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807CB40 @ =0x000006ee adds r2, r0, r1 ldrh r1, [r2] adds r1, 0x20 movs r4, 0x2E ldrsh r0, [r3, r4] lsls r0, 6 adds r1, r0 strh r1, [r3, 0x20] lsls r1, 16 ldr r0, _0807CB44 @ =0x010f0000 cmp r1, r0 ble _0807CB30 movs r0, 0xF0 lsls r0, 1 adds r1, r0, 0 ldrh r2, [r2] adds r1, r2 movs r4, 0x2E ldrsh r2, [r3, r4] movs r0, 0x4 subs r0, r2 lsls r0, 6 subs r1, r0 ldr r0, _0807CB48 @ =0x000001ff ands r1, r0 strh r1, [r3, 0x20] _0807CB30: pop {r4} pop {r0} bx r0 .align 2, 0 _0807CB38: .4byte gSpriteCoordOffsetY _0807CB3C: .4byte gUnknown_83C2BBC _0807CB40: .4byte 0x000006ee _0807CB44: .4byte 0x010f0000 _0807CB48: .4byte 0x000001ff thumb_func_end Fog1SpriteCallback thumb_func_start CreateFog1Sprites CreateFog1Sprites: @ 807CB4C push {r4,r5,lr} sub sp, 0x8 ldr r0, _0807CBC0 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807CBC4 @ =0x000006fb adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807CBF6 ldr r0, _0807CBC8 @ =gUnknown_83C67A8 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] mov r0, sp bl LoadSpriteSheet movs r5, 0 _0807CB70: ldr r0, _0807CBCC @ =gUnknown_83C6790 movs r1, 0 movs r2, 0 movs r3, 0xFF bl CreateSpriteAtEnd lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0807CBD4 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _0807CBD0 @ =gSprites adds r4, r0 adds r0, r5, 0 movs r1, 0x5 bl __umodsi3 strh r0, [r4, 0x2E] lsls r0, 16 lsrs r0, 10 adds r0, 0x20 strh r0, [r4, 0x20] adds r0, r5, 0 movs r1, 0x5 bl __udivsi3 lsls r0, 16 lsrs r0, 10 adds r0, 0x20 strh r0, [r4, 0x22] ldr r2, _0807CBC0 @ =gUnknown_83C2BBC ldr r0, [r2] lsls r1, r5, 2 adds r0, 0xA0 adds r0, r1 str r4, [r0] b _0807CBE2 .align 2, 0 _0807CBC0: .4byte gUnknown_83C2BBC _0807CBC4: .4byte 0x000006fb _0807CBC8: .4byte gUnknown_83C67A8 _0807CBCC: .4byte gUnknown_83C6790 _0807CBD0: .4byte gSprites _0807CBD4: ldr r2, _0807CC00 @ =gUnknown_83C2BBC ldr r1, [r2] lsls r0, r5, 2 adds r1, 0xA0 adds r1, r0 movs r0, 0 str r0, [r1] _0807CBE2: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0x13 bls _0807CB70 ldr r0, [r2] ldr r1, _0807CC04 @ =0x000006fb adds r0, r1 movs r1, 0x1 strb r1, [r0] _0807CBF6: add sp, 0x8 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807CC00: .4byte gUnknown_83C2BBC _0807CC04: .4byte 0x000006fb thumb_func_end CreateFog1Sprites thumb_func_start DestroyFog1Sprites DestroyFog1Sprites: @ 807CC08 push {r4,r5,lr} ldr r0, _0807CC50 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807CC54 @ =0x000006fb adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807CC48 movs r4, 0 adds r5, r1, 0 adds r5, 0xA0 _0807CC1E: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807CC2C bl DestroySprite _0807CC2C: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x13 bls _0807CC1E ldr r0, _0807CC58 @ =0x00001201 bl FreeSpriteTilesByTag ldr r0, _0807CC50 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807CC54 @ =0x000006fb adds r0, r1 movs r1, 0 strb r1, [r0] _0807CC48: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807CC50: .4byte gUnknown_83C2BBC _0807CC54: .4byte 0x000006fb _0807CC58: .4byte 0x00001201 thumb_func_end DestroyFog1Sprites thumb_func_start Ash_InitVars Ash_InitVars: @ 807CC5C push {lr} ldr r0, _0807CCA8 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807CCAC @ =0x000006cc adds r2, r1, r0 movs r3, 0 movs r0, 0 strh r0, [r2] ldr r2, _0807CCB0 @ =0x000006d2 adds r0, r1, r2 strb r3, [r0] subs r2, 0x11 adds r0, r1, r2 strb r3, [r0] ldr r3, _0807CCB4 @ =0x000006c2 adds r0, r1, r3 movs r2, 0x14 strb r2, [r0] adds r3, 0x3C adds r0, r1, r3 strh r2, [r0] movs r0, 0xE0 lsls r0, 3 adds r1, r0 ldrb r0, [r1] cmp r0, 0 bne _0807CCA4 movs r0, 0 movs r1, 0x10 bl Weather_SetBlendCoeffs movs r1, 0xFD lsls r1, 6 movs r0, 0x52 bl SetGpuReg _0807CCA4: pop {r0} bx r0 .align 2, 0 _0807CCA8: .4byte gUnknown_83C2BBC _0807CCAC: .4byte 0x000006cc _0807CCB0: .4byte 0x000006d2 _0807CCB4: .4byte 0x000006c2 thumb_func_end Ash_InitVars thumb_func_start Ash_InitAll Ash_InitAll: @ 807CCB8 push {r4,lr} bl Ash_InitVars ldr r0, _0807CCE0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807CCE4 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807CCD8 adds r4, r1, r2 _0807CCCE: bl Ash_Main ldrb r0, [r4] cmp r0, 0 beq _0807CCCE _0807CCD8: pop {r4} pop {r0} bx r0 .align 2, 0 _0807CCE0: .4byte gUnknown_83C2BBC _0807CCE4: .4byte 0x000006d2 thumb_func_end Ash_InitAll thumb_func_start Ash_Main Ash_Main: @ 807CCE8 push {r4,r5,lr} ldr r2, _0807CD2C @ =gUnknown_83C2BBC ldr r1, [r2] ldr r0, _0807CD30 @ =gSpriteCoordOffsetX ldrh r0, [r0] ldr r3, _0807CD34 @ =0x000001ff ands r3, r0 ldr r0, _0807CD38 @ =0x000006fc adds r1, r0 strh r3, [r1] cmp r3, 0xEF bls _0807CD14 adds r4, r1, 0 adds r1, r3, 0 _0807CD04: adds r3, r1, 0 subs r3, 0xF0 adds r1, r3, 0 lsls r0, r3, 16 lsrs r0, 16 cmp r0, 0xEF bhi _0807CD04 strh r3, [r4] _0807CD14: ldr r5, [r2] ldr r1, _0807CD3C @ =0x000006cc adds r4, r5, r1 ldrh r0, [r4] cmp r0, 0x1 beq _0807CD4C cmp r0, 0x1 bgt _0807CD40 cmp r0, 0 beq _0807CD46 b _0807CD88 .align 2, 0 _0807CD2C: .4byte gUnknown_83C2BBC _0807CD30: .4byte gSpriteCoordOffsetX _0807CD34: .4byte 0x000001ff _0807CD38: .4byte 0x000006fc _0807CD3C: .4byte 0x000006cc _0807CD40: cmp r0, 0x2 beq _0807CD68 b _0807CD88 _0807CD46: bl LoadAshSpriteSheet b _0807CD7A _0807CD4C: movs r1, 0xE0 lsls r1, 3 adds r0, r5, r1 ldrb r0, [r0] cmp r0, 0 bne _0807CD5C bl CreateAshSprites _0807CD5C: movs r0, 0x10 movs r1, 0 movs r2, 0x1 bl Weather_SetTargetBlendCoeffs b _0807CD7A _0807CD68: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807CD8C ldr r0, _0807CD84 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] _0807CD7A: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807CD8C .align 2, 0 _0807CD84: .4byte 0x000006d2 _0807CD88: bl Weather_UpdateBlend _0807CD8C: pop {r4,r5} pop {r0} bx r0 thumb_func_end Ash_Main thumb_func_start Ash_Finish Ash_Finish: @ 807CD94 push {r4,lr} ldr r0, _0807CDB0 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807CDB4 @ =0x000006ce adds r4, r0, r1 ldrh r0, [r4] cmp r0, 0x1 beq _0807CDCA cmp r0, 0x1 bgt _0807CDB8 cmp r0, 0 beq _0807CDBE b _0807CDEE .align 2, 0 _0807CDB0: .4byte gUnknown_83C2BBC _0807CDB4: .4byte 0x000006ce _0807CDB8: cmp r0, 0x2 beq _0807CDE0 b _0807CDEE _0807CDBE: movs r0, 0 movs r1, 0x10 movs r2, 0x1 bl Weather_SetTargetBlendCoeffs b _0807CDD8 _0807CDCA: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807CDF2 bl DestroyAshSprites _0807CDD8: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807CDF2 _0807CDE0: movs r0, 0x52 movs r1, 0 bl SetGpuReg ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807CDEE: movs r0, 0 b _0807CDF4 _0807CDF2: movs r0, 0x1 _0807CDF4: pop {r4} pop {r1} bx r1 thumb_func_end Ash_Finish thumb_func_start LoadAshSpriteSheet LoadAshSpriteSheet: @ 807CDFC push {lr} ldr r0, _0807CE08 @ =gUnknown_83C67B0 bl LoadSpriteSheet pop {r0} bx r0 .align 2, 0 _0807CE08: .4byte gUnknown_83C67B0 thumb_func_end LoadAshSpriteSheet thumb_func_start CreateAshSprites CreateAshSprites: @ 807CE0C push {r4,r5,lr} ldr r0, _0807CE78 @ =gUnknown_83C2BBC ldr r0, [r0] movs r1, 0xE0 lsls r1, 3 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807CEA8 movs r5, 0 _0807CE20: ldr r0, _0807CE7C @ =gUnknown_83C67D0 movs r1, 0 movs r2, 0 movs r3, 0x4E bl CreateSpriteAtEnd lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0807CE84 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _0807CE80 @ =gSprites adds r4, r0 movs r0, 0 strh r0, [r4, 0x30] adds r0, r5, 0 movs r1, 0x5 bl __umodsi3 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x32] adds r0, r5, 0 movs r1, 0x5 bl __udivsi3 lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x34] movs r1, 0x34 ldrsh r0, [r4, r1] lsls r0, 6 adds r0, 0x20 strh r0, [r4, 0x2E] ldr r2, _0807CE78 @ =gUnknown_83C2BBC ldr r0, [r2] lsls r1, r5, 2 adds r0, 0xF0 adds r0, r1 str r4, [r0] b _0807CE92 .align 2, 0 _0807CE78: .4byte gUnknown_83C2BBC _0807CE7C: .4byte gUnknown_83C67D0 _0807CE80: .4byte gSprites _0807CE84: ldr r2, _0807CEB0 @ =gUnknown_83C2BBC ldr r1, [r2] lsls r0, r5, 2 adds r1, 0xF0 adds r1, r0 movs r0, 0 str r0, [r1] _0807CE92: adds r0, r5, 0x1 lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x13 bls _0807CE20 ldr r0, [r2] movs r1, 0xE0 lsls r1, 3 adds r0, r1 movs r1, 0x1 strb r1, [r0] _0807CEA8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807CEB0: .4byte gUnknown_83C2BBC thumb_func_end CreateAshSprites thumb_func_start DestroyAshSprites DestroyAshSprites: @ 807CEB4 push {r4,r5,lr} ldr r0, _0807CF00 @ =gUnknown_83C2BBC ldr r1, [r0] movs r2, 0xE0 lsls r2, 3 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807CEF8 movs r4, 0 adds r5, r1, 0 adds r5, 0xF0 _0807CECC: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807CEDA bl DestroySprite _0807CEDA: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x13 bls _0807CECC ldr r0, _0807CF04 @ =0x00001202 bl FreeSpriteTilesByTag ldr r0, _0807CF00 @ =gUnknown_83C2BBC ldr r0, [r0] movs r1, 0xE0 lsls r1, 3 adds r0, r1 movs r1, 0 strb r1, [r0] _0807CEF8: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807CF00: .4byte gUnknown_83C2BBC _0807CF04: .4byte 0x00001202 thumb_func_end DestroyAshSprites thumb_func_start sub_807CF08 sub_807CF08: @ 807CF08 push {r4,lr} adds r3, r0, 0 ldrh r0, [r3, 0x30] adds r0, 0x1 strh r0, [r3, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0x5 ble _0807CF24 movs r0, 0 strh r0, [r3, 0x30] ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] _0807CF24: ldr r1, _0807CF70 @ =gSpriteCoordOffsetY ldrh r0, [r3, 0x2E] ldrh r1, [r1] adds r0, r1 strh r0, [r3, 0x22] ldr r0, _0807CF74 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807CF78 @ =0x000006fc adds r2, r0, r1 ldrh r1, [r2] adds r1, 0x20 movs r4, 0x32 ldrsh r0, [r3, r4] lsls r0, 6 adds r1, r0 strh r1, [r3, 0x20] lsls r1, 16 ldr r0, _0807CF7C @ =0x010f0000 cmp r1, r0 ble _0807CF68 movs r0, 0xF0 lsls r0, 1 adds r1, r0, 0 ldrh r2, [r2] adds r1, r2 movs r4, 0x32 ldrsh r2, [r3, r4] movs r0, 0x4 subs r0, r2 lsls r0, 6 subs r1, r0 ldr r0, _0807CF80 @ =0x000001ff ands r1, r0 strh r1, [r3, 0x20] _0807CF68: pop {r4} pop {r0} bx r0 .align 2, 0 _0807CF70: .4byte gSpriteCoordOffsetY _0807CF74: .4byte gUnknown_83C2BBC _0807CF78: .4byte 0x000006fc _0807CF7C: .4byte 0x010f0000 _0807CF80: .4byte 0x000001ff thumb_func_end sub_807CF08 thumb_func_start Fog2_InitVars Fog2_InitVars: @ 807CF84 push {r4,lr} ldr r0, _0807CFF4 @ =gUnknown_83C2BBC ldr r3, [r0] ldr r1, _0807CFF8 @ =0x000006cc adds r0, r3, r1 movs r1, 0 movs r2, 0 strh r2, [r0] ldr r4, _0807CFFC @ =0x000006d2 adds r0, r3, r4 strb r1, [r0] subs r4, 0x11 adds r0, r3, r4 strb r1, [r0] ldr r0, _0807D000 @ =0x000006c2 adds r1, r3, r0 movs r0, 0x14 strb r0, [r1] movs r1, 0xDE lsls r1, 3 adds r0, r3, r1 strh r2, [r0] adds r4, 0x31 adds r1, r3, r4 movs r0, 0x1 strh r0, [r1] ldr r1, _0807D004 @ =0x00000724 adds r0, r3, r1 ldrb r2, [r0] cmp r2, 0 bne _0807CFEE adds r4, 0x2A adds r0, r3, r4 strh r2, [r0] subs r1, 0x6 adds r0, r3, r1 strh r2, [r0] adds r4, 0x4 adds r0, r3, r4 strh r2, [r0] adds r1, 0x4 adds r0, r3, r1 strh r2, [r0] subs r4, 0x8 adds r0, r3, r4 strh r2, [r0] subs r1, 0x8 adds r0, r3, r1 strh r2, [r0] movs r0, 0 movs r1, 0x10 bl Weather_SetBlendCoeffs _0807CFEE: pop {r4} pop {r0} bx r0 .align 2, 0 _0807CFF4: .4byte gUnknown_83C2BBC _0807CFF8: .4byte 0x000006cc _0807CFFC: .4byte 0x000006d2 _0807D000: .4byte 0x000006c2 _0807D004: .4byte 0x00000724 thumb_func_end Fog2_InitVars thumb_func_start Fog2_InitAll Fog2_InitAll: @ 807D008 push {r4,lr} bl Fog2_InitVars ldr r0, _0807D030 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D034 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807D028 adds r4, r1, r2 _0807D01E: bl Fog2_Main ldrb r0, [r4] cmp r0, 0 beq _0807D01E _0807D028: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D030: .4byte gUnknown_83C2BBC _0807D034: .4byte 0x000006d2 thumb_func_end Fog2_InitAll thumb_func_start Fog2_Main Fog2_Main: @ 807D038 push {r4,r5,lr} bl sub_807D0FC ldr r0, _0807D058 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807D05C @ =0x000006cc adds r4, r5, r0 ldrh r0, [r4] cmp r0, 0x1 beq _0807D06C cmp r0, 0x1 bgt _0807D060 cmp r0, 0 beq _0807D066 b _0807D090 .align 2, 0 _0807D058: .4byte gUnknown_83C2BBC _0807D05C: .4byte 0x000006cc _0807D060: cmp r0, 0x2 beq _0807D078 b _0807D090 _0807D066: bl CreateFog2Sprites b _0807D08A _0807D06C: movs r0, 0xC movs r1, 0x8 movs r2, 0x8 bl Weather_SetTargetBlendCoeffs b _0807D08A _0807D078: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807D090 ldr r0, _0807D098 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] _0807D08A: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807D090: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D098: .4byte 0x000006d2 thumb_func_end Fog2_Main thumb_func_start Fog2_Finish Fog2_Finish: @ 807D09C push {r4,lr} bl sub_807D0FC ldr r0, _0807D0BC @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D0C0 @ =0x000006ce adds r4, r0, r1 ldrh r0, [r4] cmp r0, 0x1 beq _0807D0D6 cmp r0, 0x1 bgt _0807D0C4 cmp r0, 0 beq _0807D0CA b _0807D0EE .align 2, 0 _0807D0BC: .4byte gUnknown_83C2BBC _0807D0C0: .4byte 0x000006ce _0807D0C4: cmp r0, 0x2 beq _0807D0E2 b _0807D0EE _0807D0CA: movs r0, 0 movs r1, 0x10 movs r2, 0x1 bl Weather_SetTargetBlendCoeffs b _0807D0E6 _0807D0D6: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807D0F2 b _0807D0E6 _0807D0E2: bl DestroyFog2Sprites _0807D0E6: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807D0F2 _0807D0EE: movs r0, 0 b _0807D0F4 _0807D0F2: movs r0, 0x1 _0807D0F4: pop {r4} pop {r1} bx r1 thumb_func_end Fog2_Finish thumb_func_start sub_807D0FC sub_807D0FC: @ 807D0FC push {r4,r5,lr} ldr r0, _0807D174 @ =gUnknown_83C2BBC ldr r3, [r0] ldr r0, _0807D178 @ =0x0000071c adds r2, r3, r0 ldrh r0, [r2] adds r0, 0x1 movs r5, 0 strh r0, [r2] ldr r1, _0807D17C @ =0x0000ffff adds r4, r1, 0 lsls r0, 16 lsrs r0, 16 cmp r0, 0x2 bls _0807D128 movs r0, 0xE4 lsls r0, 3 adds r1, r3, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] strh r5, [r2] _0807D128: ldr r1, _0807D180 @ =0x0000071e adds r2, r3, r1 ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] ands r0, r4 cmp r0, 0x4 bls _0807D144 ldr r0, _0807D184 @ =0x00000722 adds r1, r3, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] strh r5, [r2] _0807D144: ldr r0, _0807D188 @ =gSpriteCoordOffsetX movs r2, 0xE4 lsls r2, 3 adds r1, r3, r2 ldrh r0, [r0] ldrh r1, [r1] subs r0, r1 movs r1, 0xFF ands r0, r1 subs r2, 0x8 adds r1, r3, r2 strh r0, [r1] ldr r1, _0807D18C @ =gSpriteCoordOffsetY adds r2, 0xA adds r0, r3, r2 ldrh r0, [r0] ldrh r1, [r1] adds r0, r1 subs r2, 0x8 adds r1, r3, r2 strh r0, [r1] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D174: .4byte gUnknown_83C2BBC _0807D178: .4byte 0x0000071c _0807D17C: .4byte 0x0000ffff _0807D180: .4byte 0x0000071e _0807D184: .4byte 0x00000722 _0807D188: .4byte gSpriteCoordOffsetX _0807D18C: .4byte gSpriteCoordOffsetY thumb_func_end sub_807D0FC thumb_func_start CreateFog2Sprites CreateFog2Sprites: @ 807D190 push {r4-r6,lr} sub sp, 0x8 ldr r0, _0807D1FC @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D200 @ =0x00000724 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807D236 ldr r0, _0807D204 @ =gUnknown_83C67E8 ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [sp] str r1, [sp, 0x4] mov r0, sp bl LoadSpriteSheet movs r6, 0 _0807D1B4: adds r0, r6, 0 movs r1, 0x5 bl __udivsi3 adds r5, r0, 0 lsls r2, r5, 22 asrs r2, 16 ldr r0, _0807D208 @ =gUnknown_83C6804 movs r1, 0 movs r3, 0xFF bl CreateSpriteAtEnd lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0807D210 lsls r4, r0, 4 adds r4, r0 lsls r4, 2 ldr r0, _0807D20C @ =gSprites adds r4, r0 adds r0, r6, 0 movs r1, 0x5 bl __umodsi3 strh r0, [r4, 0x2E] strh r5, [r4, 0x30] ldr r2, _0807D1FC @ =gUnknown_83C2BBC ldr r0, [r2] lsls r1, r6, 2 movs r3, 0xA0 lsls r3, 1 adds r0, r3 adds r0, r1 str r4, [r0] b _0807D222 .align 2, 0 _0807D1FC: .4byte gUnknown_83C2BBC _0807D200: .4byte 0x00000724 _0807D204: .4byte gUnknown_83C67E8 _0807D208: .4byte gUnknown_83C6804 _0807D20C: .4byte gSprites _0807D210: ldr r2, _0807D240 @ =gUnknown_83C2BBC ldr r1, [r2] lsls r0, r6, 2 movs r3, 0xA0 lsls r3, 1 adds r1, r3 adds r1, r0 movs r0, 0 str r0, [r1] _0807D222: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0x13 bls _0807D1B4 ldr r0, [r2] ldr r1, _0807D244 @ =0x00000724 adds r0, r1 movs r1, 0x1 strb r1, [r0] _0807D236: add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0807D240: .4byte gUnknown_83C2BBC _0807D244: .4byte 0x00000724 thumb_func_end CreateFog2Sprites thumb_func_start DestroyFog2Sprites DestroyFog2Sprites: @ 807D248 push {r4,r5,lr} ldr r0, _0807D290 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D294 @ =0x00000724 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807D28A movs r4, 0 movs r0, 0xA0 lsls r0, 1 adds r5, r1, r0 _0807D260: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807D26E bl DestroySprite _0807D26E: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x13 bls _0807D260 ldr r0, _0807D298 @ =0x00001203 bl FreeSpriteTilesByTag ldr r0, _0807D290 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D294 @ =0x00000724 adds r0, r1 movs r1, 0 strb r1, [r0] _0807D28A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D290: .4byte gUnknown_83C2BBC _0807D294: .4byte 0x00000724 _0807D298: .4byte 0x00001203 thumb_func_end DestroyFog2Sprites thumb_func_start Fog2SpriteCallback Fog2SpriteCallback: @ 807D29C push {r4,lr} adds r3, r0, 0 ldr r0, _0807D2EC @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D2F0 @ =0x0000071a adds r0, r1, r2 ldrh r0, [r0] strh r0, [r3, 0x26] movs r4, 0xE3 lsls r4, 3 adds r2, r1, r4 ldrh r1, [r2] adds r1, 0x20 movs r4, 0x2E ldrsh r0, [r3, r4] lsls r0, 6 adds r1, r0 strh r1, [r3, 0x20] lsls r1, 16 ldr r0, _0807D2F4 @ =0x010f0000 cmp r1, r0 ble _0807D2E4 movs r0, 0xF0 lsls r0, 1 adds r1, r0, 0 ldrh r2, [r2] adds r1, r2 movs r4, 0x2E ldrsh r2, [r3, r4] movs r0, 0x4 subs r0, r2 lsls r0, 6 subs r1, r0 ldr r0, _0807D2F8 @ =0x000001ff ands r1, r0 strh r1, [r3, 0x20] _0807D2E4: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D2EC: .4byte gUnknown_83C2BBC _0807D2F0: .4byte 0x0000071a _0807D2F4: .4byte 0x010f0000 _0807D2F8: .4byte 0x000001ff thumb_func_end Fog2SpriteCallback thumb_func_start Sandstorm_InitVars Sandstorm_InitVars: @ 807D2FC push {r4,lr} ldr r0, _0807D360 @ =gUnknown_83C2BBC ldr r3, [r0] ldr r0, _0807D364 @ =0x000006cc adds r1, r3, r0 movs r2, 0 movs r0, 0 strh r0, [r1] ldr r1, _0807D368 @ =0x000006d2 adds r0, r3, r1 strb r2, [r0] ldr r4, _0807D36C @ =0x000006c1 adds r0, r3, r4 strb r2, [r0] ldr r0, _0807D370 @ =0x000006c2 adds r1, r3, r0 movs r0, 0x14 strb r0, [r1] ldr r1, _0807D374 @ =0x00000716 adds r0, r3, r1 ldrb r2, [r0] cmp r2, 0 bne _0807D358 adds r4, 0x43 adds r1, r3, r4 adds r4, 0x4 adds r0, r3, r4 str r2, [r0] str r2, [r1] ldr r0, _0807D378 @ =0x00000712 adds r1, r3, r0 movs r0, 0x8 strh r0, [r1] adds r4, 0xC adds r0, r3, r4 strh r2, [r0] ldrh r2, [r1] cmp r2, 0x5F bls _0807D350 movs r0, 0x80 subs r0, r2 strh r0, [r1] _0807D350: movs r0, 0 movs r1, 0x10 bl Weather_SetBlendCoeffs _0807D358: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D360: .4byte gUnknown_83C2BBC _0807D364: .4byte 0x000006cc _0807D368: .4byte 0x000006d2 _0807D36C: .4byte 0x000006c1 _0807D370: .4byte 0x000006c2 _0807D374: .4byte 0x00000716 _0807D378: .4byte 0x00000712 thumb_func_end Sandstorm_InitVars thumb_func_start Sandstorm_InitAll Sandstorm_InitAll: @ 807D37C push {r4,lr} bl Sandstorm_InitVars ldr r0, _0807D3A4 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D3A8 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807D39C adds r4, r1, r2 _0807D392: bl Sandstorm_Main ldrb r0, [r4] cmp r0, 0 beq _0807D392 _0807D39C: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D3A4: .4byte gUnknown_83C2BBC _0807D3A8: .4byte 0x000006d2 thumb_func_end Sandstorm_InitAll thumb_func_start Sandstorm_Main Sandstorm_Main: @ 807D3AC push {r4,r5,lr} bl sub_807D4C4 bl sub_807D48C ldr r0, _0807D3DC @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807D3E0 @ =0x00000712 adds r1, r5, r0 ldrh r0, [r1] cmp r0, 0x5F bls _0807D3C8 movs r0, 0x20 strh r0, [r1] _0807D3C8: ldr r0, _0807D3E4 @ =0x000006cc adds r4, r5, r0 ldrh r0, [r4] cmp r0, 0x1 beq _0807D3F8 cmp r0, 0x1 bgt _0807D3E8 cmp r0, 0 beq _0807D3EE b _0807D41C .align 2, 0 _0807D3DC: .4byte gUnknown_83C2BBC _0807D3E0: .4byte 0x00000712 _0807D3E4: .4byte 0x000006cc _0807D3E8: cmp r0, 0x2 beq _0807D404 b _0807D41C _0807D3EE: bl CreateSandstormSprites_1 bl CreateSandstormSprites_2 b _0807D416 _0807D3F8: movs r0, 0x10 movs r1, 0 movs r2, 0 bl Weather_SetTargetBlendCoeffs b _0807D416 _0807D404: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807D41C ldr r0, _0807D424 @ =0x000006d2 adds r1, r5, r0 movs r0, 0x1 strb r0, [r1] _0807D416: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] _0807D41C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D424: .4byte 0x000006d2 thumb_func_end Sandstorm_Main thumb_func_start Sandstorm_Finish Sandstorm_Finish: @ 807D428 push {r4,lr} bl sub_807D4C4 bl sub_807D48C ldr r0, _0807D44C @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D450 @ =0x000006ce adds r4, r0, r1 ldrh r0, [r4] cmp r0, 0x1 beq _0807D466 cmp r0, 0x1 bgt _0807D454 cmp r0, 0 beq _0807D45A b _0807D47E .align 2, 0 _0807D44C: .4byte gUnknown_83C2BBC _0807D450: .4byte 0x000006ce _0807D454: cmp r0, 0x2 beq _0807D472 b _0807D47E _0807D45A: movs r0, 0 movs r1, 0x10 movs r2, 0 bl Weather_SetTargetBlendCoeffs b _0807D476 _0807D466: bl Weather_UpdateBlend lsls r0, 24 cmp r0, 0 beq _0807D482 b _0807D476 _0807D472: bl sub_807D544 _0807D476: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0807D482 _0807D47E: movs r0, 0 b _0807D484 _0807D482: movs r0, 0x1 _0807D484: pop {r4} pop {r1} bx r1 thumb_func_end Sandstorm_Finish thumb_func_start sub_807D48C sub_807D48C: @ 807D48C push {lr} ldr r0, _0807D4B8 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r0, _0807D4BC @ =0x00000714 adds r3, r2, r0 ldrh r0, [r3] adds r1, r0, 0x1 strh r1, [r3] lsls r0, 16 lsrs r0, 16 cmp r0, 0x4 bls _0807D4B2 ldr r1, _0807D4C0 @ =0x00000712 adds r0, r2, r1 ldrh r1, [r0] adds r1, 0x1 movs r2, 0 strh r1, [r0] strh r2, [r3] _0807D4B2: pop {r0} bx r0 .align 2, 0 _0807D4B8: .4byte gUnknown_83C2BBC _0807D4BC: .4byte 0x00000714 _0807D4C0: .4byte 0x00000712 thumb_func_end sub_807D48C thumb_func_start sub_807D4C4 sub_807D4C4: @ 807D4C4 push {r4-r6,lr} ldr r0, _0807D528 @ =gUnknown_83C2BBC ldr r2, [r0] ldr r0, _0807D52C @ =0x00000704 adds r4, r2, r0 ldr r6, _0807D530 @ =gUnknown_825E074 ldr r1, _0807D534 @ =0x00000712 adds r5, r2, r1 ldrh r0, [r5] lsls r0, 1 adds r0, r6 movs r3, 0 ldrsh r1, [r0, r3] lsls r1, 2 ldr r0, [r4] subs r0, r1 str r0, [r4] movs r0, 0xE1 lsls r0, 3 adds r3, r2, r0 ldrh r0, [r5] lsls r0, 1 adds r0, r6 movs r5, 0 ldrsh r1, [r0, r5] ldr r0, [r3] subs r0, r1 str r0, [r3] ldr r1, _0807D538 @ =gSpriteCoordOffsetX ldr r0, [r4] lsrs r0, 8 ldrh r1, [r1] adds r0, r1 movs r1, 0xFF ands r0, r1 ldr r4, _0807D53C @ =0x0000070e adds r1, r2, r4 strh r0, [r1] ldr r1, _0807D540 @ =gSpriteCoordOffsetY ldr r0, [r3] lsrs r0, 8 ldrh r1, [r1] adds r0, r1 movs r5, 0xE2 lsls r5, 3 adds r2, r5 strh r0, [r2] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0807D528: .4byte gUnknown_83C2BBC _0807D52C: .4byte 0x00000704 _0807D530: .4byte gUnknown_825E074 _0807D534: .4byte 0x00000712 _0807D538: .4byte gSpriteCoordOffsetX _0807D53C: .4byte 0x0000070e _0807D540: .4byte gSpriteCoordOffsetY thumb_func_end sub_807D4C4 thumb_func_start sub_807D544 sub_807D544: @ 807D544 push {r4,r5,lr} ldr r0, _0807D5C8 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D5CC @ =0x00000716 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807D586 movs r4, 0 movs r0, 0xC8 lsls r0, 1 adds r5, r1, r0 _0807D55C: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807D56A bl DestroySprite _0807D56A: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x13 bls _0807D55C ldr r0, _0807D5C8 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D5CC @ =0x00000716 adds r0, r1 movs r1, 0 strb r1, [r0] ldr r0, _0807D5D0 @ =0x00001204 bl FreeSpriteTilesByTag _0807D586: ldr r0, _0807D5C8 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D5D4 @ =0x00000717 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 beq _0807D5C0 movs r4, 0 movs r0, 0xF0 lsls r0, 1 adds r5, r1, r0 _0807D59C: lsls r0, r4, 2 adds r0, r5, r0 ldr r0, [r0] cmp r0, 0 beq _0807D5AA bl DestroySprite _0807D5AA: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x4 bls _0807D59C ldr r0, _0807D5C8 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D5D4 @ =0x00000717 adds r0, r1 movs r1, 0 strb r1, [r0] _0807D5C0: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D5C8: .4byte gUnknown_83C2BBC _0807D5CC: .4byte 0x00000716 _0807D5D0: .4byte 0x00001204 _0807D5D4: .4byte 0x00000717 thumb_func_end sub_807D544 thumb_func_start CreateSandstormSprites_1 CreateSandstormSprites_1: @ 807D5D8 push {r4-r7,lr} sub sp, 0x4 ldr r0, _0807D648 @ =gUnknown_83C2BBC ldr r0, [r0] ldr r1, _0807D64C @ =0x00000716 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807D686 ldr r0, _0807D650 @ =gUnknown_83C6854 bl LoadSpriteSheet ldr r0, _0807D654 @ =gUnknown_83C2D20 bl sub_807ABC0 movs r7, 0 _0807D5F8: adds r0, r7, 0 movs r1, 0x5 bl __udivsi3 adds r6, r0, 0 lsls r2, r6, 22 asrs r2, 16 ldr r0, _0807D658 @ =gUnknown_83C683C movs r1, 0 movs r3, 0x1 bl CreateSpriteAtEnd lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0807D660 ldr r2, _0807D648 @ =gUnknown_83C2BBC ldr r5, [r2] lsls r0, r7, 2 movs r3, 0xC8 lsls r3, 1 adds r5, r3 adds r5, r0 lsls r4, r1, 4 adds r4, r1 lsls r4, 2 ldr r0, _0807D65C @ =gSprites adds r4, r0 str r4, [r5] adds r0, r7, 0 movs r1, 0x5 str r2, [sp] bl __umodsi3 strh r0, [r4, 0x2E] ldr r0, [r5] strh r6, [r0, 0x30] ldr r2, [sp] b _0807D672 .align 2, 0 _0807D648: .4byte gUnknown_83C2BBC _0807D64C: .4byte 0x00000716 _0807D650: .4byte gUnknown_83C6854 _0807D654: .4byte gUnknown_83C2D20 _0807D658: .4byte gUnknown_83C683C _0807D65C: .4byte gSprites _0807D660: ldr r2, _0807D690 @ =gUnknown_83C2BBC ldr r1, [r2] lsls r0, r7, 2 movs r3, 0xC8 lsls r3, 1 adds r1, r3 adds r1, r0 movs r0, 0 str r0, [r1] _0807D672: adds r0, r7, 0x1 lsls r0, 16 lsrs r7, r0, 16 cmp r7, 0x13 bls _0807D5F8 ldr r0, [r2] ldr r1, _0807D694 @ =0x00000716 adds r0, r1 movs r1, 0x1 strb r1, [r0] _0807D686: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807D690: .4byte gUnknown_83C2BBC _0807D694: .4byte 0x00000716 thumb_func_end CreateSandstormSprites_1 thumb_func_start CreateSandstormSprites_2 CreateSandstormSprites_2: @ 807D698 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r4, _0807D740 @ =gUnknown_83C2BBC ldr r0, [r4] ldr r1, _0807D744 @ =0x00000717 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0807D784 movs r7, 0 mov r9, r4 movs r2, 0 mov r10, r2 _0807D6B8: lsls r0, r7, 1 mov r8, r0 adds r6, r0, r7 lsls r5, r6, 4 adds r1, r5, 0 adds r1, 0x18 lsls r1, 16 asrs r1, 16 ldr r0, _0807D748 @ =gUnknown_83C683C movs r2, 0xD0 movs r3, 0x1 bl CreateSpriteAtEnd lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0807D75C mov r2, r9 ldr r4, [r2] lsls r0, r7, 2 movs r2, 0xF0 lsls r2, 1 adds r4, r2 adds r4, r0 lsls r2, r1, 4 adds r2, r1 lsls r2, 2 ldr r0, _0807D74C @ =gSprites adds r2, r0 str r2, [r4] ldrb r1, [r2, 0x3] movs r0, 0x3F ands r0, r1 movs r1, 0x80 orrs r0, r1 strb r0, [r2, 0x3] ldr r1, [r4] adds r0, r6, r5 strh r0, [r1, 0x30] ldr r1, [r4] movs r0, 0x8 strh r0, [r1, 0x2E] ldr r0, [r4] mov r1, r10 strh r1, [r0, 0x32] ldr r1, [r4] ldr r0, _0807D750 @ =0x00006730 strh r0, [r1, 0x36] ldr r1, [r4] ldr r0, _0807D754 @ =gUnknown_83C685C add r0, r8 ldrh r0, [r0] strh r0, [r1, 0x34] ldr r0, [r4] movs r1, 0x1 bl StartSpriteAnim ldr r0, [r4] movs r1, 0 movs r2, 0x2 movs r3, 0 bl CalcCenterToCornerVec ldr r1, [r4] ldr r0, _0807D758 @ =SandstormSpriteCallback2 str r0, [r1, 0x1C] b _0807D76E .align 2, 0 _0807D740: .4byte gUnknown_83C2BBC _0807D744: .4byte 0x00000717 _0807D748: .4byte gUnknown_83C683C _0807D74C: .4byte gSprites _0807D750: .4byte 0x00006730 _0807D754: .4byte gUnknown_83C685C _0807D758: .4byte SandstormSpriteCallback2 _0807D75C: mov r2, r9 ldr r0, [r2] lsls r1, r7, 2 movs r2, 0xF0 lsls r2, 1 adds r0, r2 adds r0, r1 mov r1, r10 str r1, [r0] _0807D76E: mov r2, r9 ldr r0, [r2] ldr r1, _0807D794 @ =0x00000717 adds r0, r1 movs r1, 0x1 strb r1, [r0] adds r0, r7, 0x1 lsls r0, 16 lsrs r7, r0, 16 cmp r7, 0x4 bls _0807D6B8 _0807D784: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807D794: .4byte 0x00000717 thumb_func_end CreateSandstormSprites_2 thumb_func_start SandstormSpriteCallback1 SandstormSpriteCallback1: @ 807D798 push {r4,lr} adds r3, r0, 0 ldr r0, _0807D7E8 @ =gUnknown_83C2BBC ldr r1, [r0] movs r2, 0xE2 lsls r2, 3 adds r0, r1, r2 ldrh r0, [r0] strh r0, [r3, 0x26] ldr r4, _0807D7EC @ =0x0000070e adds r2, r1, r4 ldrh r1, [r2] adds r1, 0x20 movs r4, 0x2E ldrsh r0, [r3, r4] lsls r0, 6 adds r1, r0 strh r1, [r3, 0x20] lsls r1, 16 ldr r0, _0807D7F0 @ =0x010f0000 cmp r1, r0 ble _0807D7E0 movs r0, 0xF0 lsls r0, 1 adds r1, r0, 0 ldrh r2, [r2] adds r1, r2 movs r4, 0x2E ldrsh r2, [r3, r4] movs r0, 0x4 subs r0, r2 lsls r0, 6 subs r1, r0 ldr r0, _0807D7F4 @ =0x000001ff ands r1, r0 strh r1, [r3, 0x20] _0807D7E0: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D7E8: .4byte gUnknown_83C2BBC _0807D7EC: .4byte 0x0000070e _0807D7F0: .4byte 0x010f0000 _0807D7F4: .4byte 0x000001ff thumb_func_end SandstormSpriteCallback1 thumb_func_start SandstormSpriteCallback2 SandstormSpriteCallback2: @ 807D7F8 push {lr} adds r2, r0, 0 ldrh r0, [r2, 0x34] subs r0, 0x1 strh r0, [r2, 0x34] lsls r0, 16 asrs r0, 16 movs r1, 0x1 negs r1, r1 cmp r0, r1 bne _0807D812 ldr r0, _0807D818 @ =SandstormSpriteCallback3 str r0, [r2, 0x1C] _0807D812: pop {r0} bx r0 .align 2, 0 _0807D818: .4byte SandstormSpriteCallback3 thumb_func_end SandstormSpriteCallback2 thumb_func_start SandstormSpriteCallback3 SandstormSpriteCallback3: @ 807D81C push {r4,r5,lr} adds r5, r0, 0 ldrh r0, [r5, 0x22] subs r0, 0x1 strh r0, [r5, 0x22] lsls r0, 16 asrs r0, 16 movs r1, 0x30 negs r1, r1 cmp r0, r1 bge _0807D83A movs r0, 0xD0 strh r0, [r5, 0x22] movs r0, 0x4 strh r0, [r5, 0x2E] _0807D83A: movs r0, 0x2E ldrsh r4, [r5, r0] ldr r3, _0807D88C @ =gUnknown_825E074 movs r2, 0x30 ldrsh r1, [r5, r2] lsls r0, r1, 1 adds r0, r3 movs r2, 0 ldrsh r0, [r0, r2] adds r2, r4, 0 muls r2, r0 adds r1, 0x40 lsls r1, 1 adds r1, r3 movs r3, 0 ldrsh r0, [r1, r3] muls r0, r4 lsrs r2, 8 strh r2, [r5, 0x24] lsrs r0, 8 strh r0, [r5, 0x26] ldrh r0, [r5, 0x30] adds r0, 0xA movs r1, 0xFF ands r0, r1 strh r0, [r5, 0x30] ldrh r0, [r5, 0x32] adds r0, 0x1 strh r0, [r5, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 ble _0807D886 movs r0, 0 strh r0, [r5, 0x32] ldrh r0, [r5, 0x2E] adds r0, 0x1 strh r0, [r5, 0x2E] _0807D886: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D88C: .4byte gUnknown_825E074 thumb_func_end SandstormSpriteCallback3 thumb_func_start Weather11_InitVars Weather11_InitVars: @ 807D890 ldr r0, _0807D8B0 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807D8B4 @ =0x000006cc adds r2, r1, r0 movs r0, 0 strh r0, [r2] ldr r0, _0807D8B8 @ =0x000006c1 adds r2, r1, r0 movs r0, 0x3 strb r0, [r2] ldr r0, _0807D8BC @ =0x000006c2 adds r1, r0 movs r0, 0x14 strb r0, [r1] bx lr .align 2, 0 _0807D8B0: .4byte gUnknown_83C2BBC _0807D8B4: .4byte 0x000006cc _0807D8B8: .4byte 0x000006c1 _0807D8BC: .4byte 0x000006c2 thumb_func_end Weather11_InitVars thumb_func_start Weather11_InitAll Weather11_InitAll: @ 807D8C0 push {lr} bl Weather11_InitVars pop {r0} bx r0 thumb_func_end Weather11_InitAll thumb_func_start nullsub_49 nullsub_49: @ 807D8CC bx lr thumb_func_end nullsub_49 thumb_func_start sub_807D8D0 sub_807D8D0: @ 807D8D0 movs r0, 0 bx lr thumb_func_end sub_807D8D0 thumb_func_start Bubbles_InitVars Bubbles_InitVars: @ 807D8D4 push {r4,r5,lr} bl Fog1_InitVars ldr r0, _0807D914 @ =gUnknown_83C2BBC ldr r4, [r0] ldr r1, _0807D918 @ =0x0000072e adds r0, r4, r1 ldrb r5, [r0] cmp r5, 0 bne _0807D90C ldr r0, _0807D91C @ =gUnknown_83C6870 bl LoadSpriteSheet movs r2, 0xE5 lsls r2, 3 adds r0, r4, r2 strh r5, [r0] ldr r0, _0807D920 @ =gUnknown_83C6868 ldrb r1, [r0] subs r2, 0x2 adds r0, r4, r2 strh r1, [r0] ldr r1, _0807D924 @ =0x0000072a adds r0, r4, r1 strh r5, [r0] adds r2, 0x6 adds r0, r4, r2 strh r5, [r0] _0807D90C: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807D914: .4byte gUnknown_83C2BBC _0807D918: .4byte 0x0000072e _0807D91C: .4byte gUnknown_83C6870 _0807D920: .4byte gUnknown_83C6868 _0807D924: .4byte 0x0000072a thumb_func_end Bubbles_InitVars thumb_func_start Bubbles_InitAll Bubbles_InitAll: @ 807D928 push {r4,lr} bl Bubbles_InitVars ldr r0, _0807D950 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r2, _0807D954 @ =0x000006d2 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _0807D948 adds r4, r1, r2 _0807D93E: bl Bubbles_Main ldrb r0, [r4] cmp r0, 0 beq _0807D93E _0807D948: pop {r4} pop {r0} bx r0 .align 2, 0 _0807D950: .4byte gUnknown_83C2BBC _0807D954: .4byte 0x000006d2 thumb_func_end Bubbles_InitAll thumb_func_start Bubbles_Main Bubbles_Main: @ 807D958 push {r4-r7,lr} bl Fog1_Main ldr r0, _0807D9B8 @ =gUnknown_83C2BBC ldr r5, [r0] ldr r0, _0807D9BC @ =0x00000726 adds r4, r5, r0 ldrh r0, [r4] adds r0, 0x1 movs r6, 0 strh r0, [r4] ldr r1, _0807D9C0 @ =0x0000ffff adds r7, r1, 0 ldr r2, _0807D9C4 @ =gUnknown_83C6868 movs r1, 0xE5 lsls r1, 3 adds r3, r5, r1 ldrh r1, [r3] adds r1, r2 lsls r0, 16 lsrs r0, 16 ldrb r1, [r1] cmp r0, r1 bls _0807D9B0 strh r6, [r4] ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] ands r0, r7 cmp r0, 0x7 bls _0807D998 strh r6, [r3] _0807D998: ldr r0, _0807D9C8 @ =0x0000072a adds r4, r5, r0 ldrh r0, [r4] bl sub_807D9E8 ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] ands r0, r7 cmp r0, 0xC bls _0807D9B0 strh r6, [r4] _0807D9B0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _0807D9B8: .4byte gUnknown_83C2BBC _0807D9BC: .4byte 0x00000726 _0807D9C0: .4byte 0x0000ffff _0807D9C4: .4byte gUnknown_83C6868 _0807D9C8: .4byte 0x0000072a thumb_func_end Bubbles_Main thumb_func_start Bubbles_Finish Bubbles_Finish: @ 807D9CC push {lr} bl Fog1_Finish lsls r0, 24 cmp r0, 0 beq _0807D9DC movs r0, 0x1 b _0807D9E2 _0807D9DC: bl sub_807DA70 movs r0, 0 _0807D9E2: pop {r1} bx r1 thumb_func_end Bubbles_Finish thumb_func_start sub_807D9E8 sub_807D9E8: @ 807D9E8 push {r4,lr} lsls r0, 16 ldr r1, _0807DA58 @ =gUnknown_83C6878 lsrs r0, 14 adds r3, r0, r1 adds r1, 0x2 adds r0, r1 ldr r1, _0807DA5C @ =gSpriteCoordOffsetY ldrh r2, [r0] ldrh r0, [r1] subs r2, r0 ldr r0, _0807DA60 @ =gUnknown_83C68BC movs r4, 0 ldrsh r1, [r3, r4] lsls r2, 16 asrs r2, 16 movs r3, 0 bl CreateSpriteAtEnd lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x40 beq _0807DA50 ldr r0, _0807DA64 @ =gSprites lsls r1, r2, 4 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r2, [r1, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 movs r2, 0x4 orrs r0, r2 strb r0, [r1, 0x5] adds r3, r1, 0 adds r3, 0x3E ldrb r0, [r3] movs r2, 0x2 orrs r0, r2 strb r0, [r3] movs r0, 0 strh r0, [r1, 0x2E] strh r0, [r1, 0x30] strh r0, [r1, 0x32] ldr r0, _0807DA68 @ =gUnknown_83C2BBC ldr r1, [r0] ldr r0, _0807DA6C @ =0x0000072c adds r1, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] _0807DA50: pop {r4} pop {r0} bx r0 .align 2, 0 _0807DA58: .4byte gUnknown_83C6878 _0807DA5C: .4byte gSpriteCoordOffsetY _0807DA60: .4byte gUnknown_83C68BC _0807DA64: .4byte gSprites _0807DA68: .4byte gUnknown_83C2BBC _0807DA6C: .4byte 0x0000072c thumb_func_end sub_807D9E8 thumb_func_start sub_807DA70 sub_807DA70: @ 807DA70 push {r4,r5,lr} movs r4, 0 ldr r5, _0807DAA8 @ =gSprites _0807DA76: lsls r0, r4, 4 adds r0, r4 lsls r2, r0, 2 adds r0, r5, 0 adds r0, 0x14 adds r0, r2, r0 ldr r1, [r0] ldr r0, _0807DAAC @ =gUnknown_83C68BC cmp r1, r0 bne _0807DA90 adds r0, r2, r5 bl DestroySprite _0807DA90: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x3F bls _0807DA76 ldr r0, _0807DAB0 @ =0x00001205 bl FreeSpriteTilesByTag pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0807DAA8: .4byte gSprites _0807DAAC: .4byte gUnknown_83C68BC _0807DAB0: .4byte 0x00001205 thumb_func_end sub_807DA70 thumb_func_start unc_0807DAB4 unc_0807DAB4: @ 807DAB4 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x2E] movs r2, 0 adds r0, 0x2 strh r0, [r1, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0x8 ble _0807DAF4 strh r2, [r1, 0x2E] movs r3, 0x30 ldrsh r0, [r1, r3] cmp r0, 0 bne _0807DAE6 ldrh r0, [r1, 0x24] adds r0, 0x1 strh r0, [r1, 0x24] lsls r0, 16 asrs r0, 16 cmp r0, 0x4 ble _0807DAF4 movs r0, 0x1 strh r0, [r1, 0x30] b _0807DAF4 _0807DAE6: ldrh r0, [r1, 0x24] subs r0, 0x1 strh r0, [r1, 0x24] lsls r0, 16 cmp r0, 0 bgt _0807DAF4 strh r2, [r1, 0x30] _0807DAF4: ldrh r0, [r1, 0x22] subs r0, 0x3 strh r0, [r1, 0x22] ldrh r0, [r1, 0x32] adds r0, 0x1 strh r0, [r1, 0x32] lsls r0, 16 asrs r0, 16 cmp r0, 0x77 ble _0807DB0E adds r0, r1, 0 bl DestroySprite _0807DB0E: pop {r0} bx r0 thumb_func_end unc_0807DAB4 .align 2, 0 @ Don't pad with nop.