diff options
-rw-r--r-- | asm/weather.s | 1693 | ||||
-rw-r--r-- | data/data2.s | 75 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/weather.c | 322 |
4 files changed, 1184 insertions, 907 deletions
diff --git a/asm/weather.s b/asm/weather.s index f32813762..7128440a9 100644 --- a/asm/weather.s +++ b/asm/weather.s @@ -1,857 +1,856 @@ .include "constants/gba_constants.s" - .include "constants/species_constants.s" .include "asm/macros.s" .syntax unified .text - thumb_func_start sub_807C828 -sub_807C828: @ 807C828 - push {r4-r6,lr} - ldr r0, _0807C8EC @ =sub_807CA34 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0807C8E4 - movs r0, 0x90 - lsls r0, 5 - bl AllocSpritePalette - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0807C8F0 @ =gUnknown_083970E8 - lsls r1, r5, 5 - ldr r2, _0807C8F4 @ =gPlttBufferUnfaded + 0x200 - adds r1, r2 - ldr r2, _0807C8F8 @ =REG_BG0CNT - bl CpuSet - bl sub_807CB10 - ldr r4, _0807C8FC @ =gUnknown_0202F7E8 - ldr r1, _0807C900 @ =0x000006d5 - adds r0, r4, r1 - strb r5, [r0] - ldr r0, _0807C904 @ =0x00001201 - bl AllocSpritePalette - ldr r2, _0807C908 @ =0x000006d4 - adds r1, r4, r2 - strb r0, [r1] - ldr r1, _0807C90C @ =0x000006da - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0x4 - adds r0, r4, r2 - strb r6, [r0] - adds r1, 0x4 - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0xC - adds r0, r4, r2 - strb r6, [r0] - adds r1, 0x22 - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0x17 - adds r0, r4, r2 - strb r6, [r0] - adds r1, 0x24 - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0x1B - adds r0, r4, r2 - strb r6, [r0] - subs r1, 0xD - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0x18 - adds r0, r4, r2 - strb r6, [r0] - subs r1, 0x1D - adds r0, r4, r1 - strb r6, [r0] - movs r0, 0x10 - movs r1, 0 - bl sub_807DB64 - movs r2, 0xDA - lsls r2, 3 - adds r0, r4, r2 - strb r6, [r0] - ldr r0, _0807C910 @ =0x000006c6 - adds r1, r4, r0 - movs r0, 0x3 - strb r0, [r1] - movs r1, 0xD9 - lsls r1, 3 - adds r0, r4, r1 - strb r6, [r0] - adds r2, 0x3 - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0807C914 @ =sub_807C9E4 - movs r1, 0x50 - bl CreateTask - ldr r1, _0807C918 @ =0x000006c9 - adds r4, r1 - strb r0, [r4] -_0807C8E4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807C8EC: .4byte sub_807CA34 -_0807C8F0: .4byte gUnknown_083970E8 -_0807C8F4: .4byte gPlttBufferUnfaded + 0x200 -_0807C8F8: .4byte REG_BG0CNT -_0807C8FC: .4byte gUnknown_0202F7E8 -_0807C900: .4byte 0x000006d5 -_0807C904: .4byte 0x00001201 -_0807C908: .4byte 0x000006d4 -_0807C90C: .4byte 0x000006da -_0807C910: .4byte 0x000006c6 -_0807C914: .4byte sub_807C9E4 -_0807C918: .4byte 0x000006c9 - thumb_func_end sub_807C828 - - thumb_func_start DoWeatherEffect -DoWeatherEffect: @ 807C91C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - beq _0807C932 - cmp r4, 0x5 - beq _0807C932 - cmp r4, 0xD - beq _0807C932 - bl PlayRainSoundEffect -_0807C932: - ldr r1, _0807C974 @ =gUnknown_0202F7E8 - ldr r2, _0807C978 @ =0x000006d1 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, r4 - beq _0807C956 - movs r3, 0xDA - lsls r3, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _0807C956 - ldr r0, _0807C97C @ =gUnknown_08396FC8 - lsls r1, r4, 4 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_0807C956: - ldr r1, _0807C974 @ =gUnknown_0202F7E8 - ldr r2, _0807C980 @ =0x000006d3 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _0807C978 @ =0x000006d1 - adds r0, r1, r3 - strb r4, [r0] - ldr r0, _0807C984 @ =0x000006ce - adds r1, r0 - strh r2, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807C974: .4byte gUnknown_0202F7E8 -_0807C978: .4byte 0x000006d1 -_0807C97C: .4byte gUnknown_08396FC8 -_0807C980: .4byte 0x000006d3 -_0807C984: .4byte 0x000006ce - thumb_func_end DoWeatherEffect - - thumb_func_start sub_807C988 -sub_807C988: @ 807C988 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl PlayRainSoundEffect - ldr r0, _0807C9AC @ =gUnknown_0202F7E8 - movs r2, 0xDA - lsls r2, 3 - adds r1, r0, r2 - strb r4, [r1] - ldr r1, _0807C9B0 @ =0x000006d1 - adds r0, r1 - strb r4, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807C9AC: .4byte gUnknown_0202F7E8 -_0807C9B0: .4byte 0x000006d1 - thumb_func_end sub_807C988 - - thumb_func_start sub_807C9B4 -sub_807C9B4: @ 807C9B4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl PlayRainSoundEffect - ldr r1, _0807C9E0 @ =gUnknown_0202F7E8 - movs r2, 0xDA - lsls r2, 3 - adds r0, r1, r2 - strb r4, [r0] - adds r2, 0x1 - adds r0, r1, r2 - strb r4, [r0] - movs r0, 0xD9 - lsls r0, 3 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807C9E0: .4byte gUnknown_0202F7E8 - thumb_func_end sub_807C9B4 - - thumb_func_start sub_807C9E4 -sub_807C9E4: @ 807C9E4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _0807CA24 @ =gUnknown_0202F7E8 - movs r1, 0xD9 - lsls r1, 3 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0807CA1C - ldr r1, _0807CA28 @ =gUnknown_08396FC8 - movs r3, 0xDA - lsls r3, 3 - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 4 - adds r1, 0x8 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - ldr r1, _0807CA2C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0807CA30 @ =sub_807CA34 - str r1, [r0] -_0807CA1C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807CA24: .4byte gUnknown_0202F7E8 -_0807CA28: .4byte gUnknown_08396FC8 -_0807CA2C: .4byte gTasks -_0807CA30: .4byte sub_807CA34 - thumb_func_end sub_807C9E4 - - thumb_func_start sub_807CA34 -sub_807CA34: @ 807CA34 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _0807CA90 @ =gUnknown_0202F7E8 - movs r0, 0xDA - lsls r0, 3 - adds r6, r5, r0 - ldr r1, _0807CA94 @ =0x000006d1 - adds r7, r5, r1 - ldrb r0, [r6] - ldrb r2, [r7] - cmp r0, r2 - beq _0807CAA8 - ldr r0, _0807CA98 @ =gUnknown_08396FC8 - mov r8, r0 - ldrb r0, [r6] - lsls r0, 4 - mov r1, r8 - adds r1, 0xC - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0807CAB8 - ldrb r0, [r7] - lsls r0, 4 - add r0, r8 - ldr r0, [r0] - bl _call_via_r0 - ldr r1, _0807CA9C @ =0x000006c3 - adds r0, r5, r1 - strb r4, [r0] - ldr r2, _0807CAA0 @ =0x000006c6 - adds r0, r5, r2 - strb r4, [r0] - ldrb r0, [r7] - strb r0, [r6] - ldr r0, _0807CAA4 @ =0x000006d3 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] - b _0807CAB8 - .align 2, 0 -_0807CA90: .4byte gUnknown_0202F7E8 -_0807CA94: .4byte 0x000006d1 -_0807CA98: .4byte gUnknown_08396FC8 -_0807CA9C: .4byte 0x000006c3 -_0807CAA0: .4byte 0x000006c6 -_0807CAA4: .4byte 0x000006d3 -_0807CAA8: - ldr r0, _0807CAD8 @ =gUnknown_08396FC8 - ldrb r1, [r6] - lsls r1, 4 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_0807CAB8: - ldr r1, _0807CADC @ =gUnknown_083970B8 - ldr r0, _0807CAE0 @ =gUnknown_0202F7E8 - ldr r2, _0807CAE4 @ =0x000006c6 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807CAD8: .4byte gUnknown_08396FC8 -_0807CADC: .4byte gUnknown_083970B8 -_0807CAE0: .4byte gUnknown_0202F7E8 -_0807CAE4: .4byte 0x000006c6 - thumb_func_end sub_807CA34 - - thumb_func_start sub_807CAE8 -sub_807CAE8: @ 807CAE8 - ldr r0, _0807CAFC @ =gUnknown_0202F7E8 - ldr r2, _0807CB00 @ =0x000006c1 - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r1, _0807CB04 @ =0x000006c2 - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_0807CAFC: .4byte gUnknown_0202F7E8 -_0807CB00: .4byte 0x000006c1 -_0807CB04: .4byte 0x000006c2 - thumb_func_end sub_807CAE8 - - thumb_func_start nullsub_38 -nullsub_38: @ 807CB08 - bx lr - thumb_func_end nullsub_38 - - thumb_func_start sub_807CB0C -sub_807CB0C: @ 807CB0C - movs r0, 0 - bx lr - thumb_func_end sub_807CB0C - - thumb_func_start sub_807CB10 -sub_807CB10: @ 807CB10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _0807CB50 @ =gUnknown_030006DC - ldr r0, _0807CB54 @ =gUnknown_083970C8 - str r0, [r1] - movs r0, 0 - mov r12, r0 - ldr r1, _0807CB58 @ =gUnknown_0202FC48 - mov r10, r1 -_0807CB28: - mov r7, r10 - mov r0, r12 - cmp r0, 0 - bne _0807CB34 - ldr r1, _0807CB5C @ =0xfffffda0 - adds r7, r1 -_0807CB34: - movs r5, 0 - movs r0, 0x1 - add r0, r12 - mov r9, r0 -_0807CB3C: - lsls r1, r5, 8 - lsls r0, r5, 24 - lsrs r2, r0, 16 - mov r0, r12 - cmp r0, 0 - bne _0807CB60 - adds r0, r1, 0 - lsls r0, 12 - lsrs r4, r0, 16 - b _0807CB62 - .align 2, 0 -_0807CB50: .4byte gUnknown_030006DC -_0807CB54: .4byte gUnknown_083970C8 -_0807CB58: .4byte gUnknown_0202FC48 -_0807CB5C: .4byte 0xfffffda0 -_0807CB60: - movs r4, 0 -_0807CB62: - movs r3, 0 - adds r1, r5, 0x1 - mov r8, r1 -_0807CB68: - subs r1, r2, r4 - lsls r1, 16 - lsrs r2, r1, 16 - lsls r0, r3, 5 - adds r0, r7 - adds r0, r5 - lsrs r1, 24 - strb r1, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x2 - bls _0807CB68 - adds r6, r2, 0 - movs r0, 0xF8 - lsls r0, 5 - subs r0, r2 - cmp r0, 0 - bge _0807CB90 - adds r0, 0xF -_0807CB90: - lsls r0, 12 - lsrs r4, r0, 16 - cmp r5, 0xB - bhi _0807CBDA - cmp r3, 0x12 - bhi _0807CC00 -_0807CB9C: - adds r0, r2, r4 - lsls r0, 16 - lsrs r2, r0, 16 - subs r0, r2, r6 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - ble _0807CBB8 - lsrs r0, 31 - adds r0, r1, r0 - asrs r0, 1 - subs r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_0807CBB8: - lsls r0, r3, 5 - adds r0, r7 - adds r1, r0, r5 - lsrs r0, r2, 8 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _0807CBCE - movs r0, 0x1F - strb r0, [r1] -_0807CBCE: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x12 - bls _0807CB9C - b _0807CC00 -_0807CBDA: - cmp r3, 0x12 - bhi _0807CC00 - movs r6, 0x1F -_0807CBE0: - adds r1, r2, r4 - lsls r1, 16 - lsrs r2, r1, 16 - lsls r0, r3, 5 - adds r0, r7 - adds r0, r5 - lsrs r1, 24 - strb r1, [r0] - cmp r1, 0x1F - bls _0807CBF6 - strb r6, [r0] -_0807CBF6: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x12 - bls _0807CBE0 -_0807CC00: - mov r1, r8 - lsls r0, r1, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _0807CB3C - mov r1, r9 - lsls r0, r1, 16 - lsrs r0, 16 - mov r12, r0 - cmp r0, 0x1 - bls _0807CB28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807CB10 - - thumb_func_start sub_807CC24 -sub_807CC24: @ 807CC24 - push {r4-r7,lr} - ldr r0, _0807CC50 @ =gUnknown_0202F7E8 - movs r1, 0xD8 - lsls r1, 3 - adds r4, r0, r1 - ldr r2, _0807CC54 @ =0x000006c1 - adds r1, r0, r2 - ldrb r7, [r4] - mov r12, r7 - movs r6, 0 - ldrsb r6, [r4, r6] - movs r5, 0 - ldrsb r5, [r1, r5] - adds r3, r0, 0 - cmp r6, r5 - bne _0807CC5C - ldr r0, _0807CC58 @ =0x000006c6 - adds r1, r3, r0 - movs r0, 0x3 - strb r0, [r1] - b _0807CCA4 - .align 2, 0 -_0807CC50: .4byte gUnknown_0202F7E8 -_0807CC54: .4byte 0x000006c1 -_0807CC58: .4byte 0x000006c6 -_0807CC5C: - ldr r1, _0807CC84 @ =0x000006c3 - adds r2, r3, r1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r7, _0807CC88 @ =0x000006c2 - adds r1, r3, r7 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0807CCA4 - movs r0, 0 - strb r0, [r2] - mov r0, r12 - cmp r6, r5 - bge _0807CC8C - adds r0, 0x1 - b _0807CC90 - .align 2, 0 -_0807CC84: .4byte 0x000006c3 -_0807CC88: .4byte 0x000006c2 -_0807CC8C: - mov r0, r12 - subs r0, 0x1 -_0807CC90: - strb r0, [r4] - movs r1, 0xD8 - lsls r1, 3 - adds r0, r3, r1 - movs r2, 0 - ldrsb r2, [r0, r2] - movs r0, 0 - movs r1, 0x20 - bl sub_807CEBC -_0807CCA4: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807CC24 - - thumb_func_start sub_807CCAC -sub_807CCAC: @ 807CCAC - push {lr} - ldr r2, _0807CCE4 @ =gUnknown_0202F7E8 - ldr r0, _0807CCE8 @ =0x000006cb - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0807CCCA - ldr r3, _0807CCEC @ =0x000006ca - adds r1, r2, r3 - movs r0, 0 - strb r0, [r1] -_0807CCCA: - movs r1, 0xDA - lsls r1, 3 - adds r0, r2, r1 - ldrb r0, [r0] - subs r0, 0x3 - cmp r0, 0xA - bhi _0807CD94 - lsls r0, 2 - ldr r1, _0807CCF0 @ =_0807CCF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807CCE4: .4byte gUnknown_0202F7E8 -_0807CCE8: .4byte 0x000006cb -_0807CCEC: .4byte 0x000006ca -_0807CCF0: .4byte _0807CCF4 - .align 2, 0 -_0807CCF4: - .4byte _0807CD20 - .4byte _0807CD20 - .4byte _0807CD20 - .4byte _0807CD6C - .4byte _0807CD94 - .4byte _0807CD94 - .4byte _0807CD94 - .4byte _0807CD94 - .4byte _0807CD20 - .4byte _0807CD48 - .4byte _0807CD20 -_0807CD20: - bl sub_807CDC4 - lsls r0, 24 - cmp r0, 0 - bne _0807CDB4 - ldr r0, _0807CD40 @ =gUnknown_0202F7E8 - movs r2, 0xD8 - lsls r2, 3 - adds r1, r0, r2 - movs r2, 0x3 - strb r2, [r1] - ldr r3, _0807CD44 @ =0x000006c6 - adds r0, r3 - strb r2, [r0] - b _0807CDB4 - .align 2, 0 -_0807CD40: .4byte gUnknown_0202F7E8 -_0807CD44: .4byte 0x000006c6 -_0807CD48: - bl sub_807CE24 - lsls r0, 24 - cmp r0, 0 - bne _0807CDB4 - ldr r1, _0807CD64 @ =gUnknown_0202F7E8 - movs r0, 0xD8 - lsls r0, 3 - adds r2, r1, r0 - movs r0, 0xFA - strb r0, [r2] - ldr r2, _0807CD68 @ =0x000006c6 - adds r1, r2 - b _0807CDB0 - .align 2, 0 -_0807CD64: .4byte gUnknown_0202F7E8 -_0807CD68: .4byte 0x000006c6 -_0807CD6C: - bl sub_807CE7C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0807CDB4 - ldr r0, _0807CD8C @ =gUnknown_0202F7E8 - movs r3, 0xD8 - lsls r3, 3 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0807CD90 @ =0x000006c6 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - b _0807CDB4 - .align 2, 0 -_0807CD8C: .4byte gUnknown_0202F7E8 -_0807CD90: .4byte 0x000006c6 -_0807CD94: - ldr r0, _0807CDB8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807CDB4 - ldr r3, _0807CDBC @ =0x000006c1 - adds r0, r2, r3 - ldrb r1, [r0] - subs r3, 0x1 - adds r0, r2, r3 - strb r1, [r0] - ldr r0, _0807CDC0 @ =0x000006c6 - adds r1, r2, r0 -_0807CDB0: - movs r0, 0x3 - strb r0, [r1] -_0807CDB4: - pop {r0} - bx r0 - .align 2, 0 -_0807CDB8: .4byte gPaletteFade -_0807CDBC: .4byte 0x000006c1 -_0807CDC0: .4byte 0x000006c6 - thumb_func_end sub_807CCAC - - thumb_func_start sub_807CDC4 -sub_807CDC4: @ 807CDC4 - push {r4,lr} - sub sp, 0x4 - ldr r2, _0807CE00 @ =gUnknown_0202F7E8 - ldr r0, _0807CE04 @ =0x000006c7 - adds r4, r2, r0 - ldrb r0, [r4] - cmp r0, 0x10 - beq _0807CE1A - adds r1, r0, 0x1 - strb r1, [r4] - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _0807CE0C - movs r3, 0x10 - subs r3, r1 - lsls r3, 24 - lsrs r3, 24 - ldr r1, _0807CE08 @ =0x000006c4 - adds r0, r2, r1 - ldrh r0, [r0] - str r0, [sp] - movs r0, 0 - movs r1, 0x20 - movs r2, 0x3 - bl sub_807D1BC - movs r0, 0x1 - b _0807CE1C - .align 2, 0 -_0807CE00: .4byte gUnknown_0202F7E8 -_0807CE04: .4byte 0x000006c7 -_0807CE08: .4byte 0x000006c4 -_0807CE0C: - movs r0, 0 - movs r1, 0x20 - movs r2, 0x3 - bl sub_807CEBC - movs r0, 0x10 - strb r0, [r4] -_0807CE1A: - movs r0, 0 -_0807CE1C: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807CDC4 - - thumb_func_start sub_807CE24 -sub_807CE24: @ 807CE24 - push {r4,lr} - ldr r2, _0807CE58 @ =gUnknown_0202F7E8 - ldr r0, _0807CE5C @ =0x000006c7 - adds r4, r2, r0 - ldrb r0, [r4] - cmp r0, 0x10 - beq _0807CE74 - adds r3, r0, 0x1 - strb r3, [r4] - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _0807CE64 - movs r0, 0x6 - negs r0, r0 - movs r1, 0x10 - subs r1, r3 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807CE60 @ =0x000006c4 - adds r2, r3 - ldrh r2, [r2] - bl sub_807D304 - movs r0, 0x1 - b _0807CE76 - .align 2, 0 -_0807CE58: .4byte gUnknown_0202F7E8 -_0807CE5C: .4byte 0x000006c7 -_0807CE60: .4byte 0x000006c4 -_0807CE64: - movs r2, 0x6 - negs r2, r2 - movs r0, 0 - movs r1, 0x20 - bl sub_807CEBC - movs r0, 0x10 - strb r0, [r4] -_0807CE74: - movs r0, 0 -_0807CE76: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807CE24 - - thumb_func_start sub_807CE7C -sub_807CE7C: @ 807CE7C - push {lr} - ldr r2, _0807CEA4 @ =gUnknown_0202F7E8 - ldr r1, _0807CEA8 @ =0x000006c7 - adds r0, r2, r1 - ldrb r1, [r0] - cmp r1, 0x10 - beq _0807CEB0 - adds r1, 0x1 - strb r1, [r0] - movs r0, 0x10 - subs r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0807CEAC @ =0x000006c4 - adds r1, r2, r3 - ldrh r1, [r1] - bl sub_807D424 - movs r0, 0x1 - b _0807CEB2 - .align 2, 0 -_0807CEA4: .4byte gUnknown_0202F7E8 -_0807CEA8: .4byte 0x000006c7 -_0807CEAC: .4byte 0x000006c4 -_0807CEB0: - movs r0, 0 -_0807CEB2: - pop {r1} - bx r1 - thumb_func_end sub_807CE7C - - thumb_func_start nullsub_39 -nullsub_39: @ 807CEB8 - bx lr - thumb_func_end nullsub_39 +@ thumb_func_start sub_807C828 +@sub_807C828: @ 807C828 +@ push {r4-r6,lr} +@ ldr r0, _0807C8EC @ =sub_807CA34 +@ bl FuncIsActiveTask +@ lsls r0, 24 +@ lsrs r6, r0, 24 +@ cmp r6, 0 +@ bne _0807C8E4 +@ movs r0, 0x90 +@ lsls r0, 5 +@ bl AllocSpritePalette +@ adds r5, r0, 0 +@ lsls r5, 24 +@ lsrs r5, 24 +@ ldr r0, _0807C8F0 @ =gUnknown_083970E8 +@ lsls r1, r5, 5 +@ ldr r2, _0807C8F4 @ =gPlttBufferUnfaded + 0x200 +@ adds r1, r2 +@ ldr r2, _0807C8F8 @ =REG_BG0CNT +@ bl CpuSet +@ bl sub_807CB10 +@ ldr r4, _0807C8FC @ =gUnknown_0202F7E8 +@ ldr r1, _0807C900 @ =0x000006d5 +@ adds r0, r4, r1 +@ strb r5, [r0] +@ ldr r0, _0807C904 @ =0x00001201 +@ bl AllocSpritePalette +@ ldr r2, _0807C908 @ =0x000006d4 +@ adds r1, r4, r2 +@ strb r0, [r1] +@ ldr r1, _0807C90C @ =0x000006da +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0x4 +@ adds r0, r4, r2 +@ strb r6, [r0] +@ adds r1, 0x4 +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0xC +@ adds r0, r4, r2 +@ strb r6, [r0] +@ adds r1, 0x22 +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0x17 +@ adds r0, r4, r2 +@ strb r6, [r0] +@ adds r1, 0x24 +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0x1B +@ adds r0, r4, r2 +@ strb r6, [r0] +@ subs r1, 0xD +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0x18 +@ adds r0, r4, r2 +@ strb r6, [r0] +@ subs r1, 0x1D +@ adds r0, r4, r1 +@ strb r6, [r0] +@ movs r0, 0x10 +@ movs r1, 0 +@ bl sub_807DB64 +@ movs r2, 0xDA +@ lsls r2, 3 +@ adds r0, r4, r2 +@ strb r6, [r0] +@ ldr r0, _0807C910 @ =0x000006c6 +@ adds r1, r4, r0 +@ movs r0, 0x3 +@ strb r0, [r1] +@ movs r1, 0xD9 +@ lsls r1, 3 +@ adds r0, r4, r1 +@ strb r6, [r0] +@ adds r2, 0x3 +@ adds r1, r4, r2 +@ movs r0, 0x1 +@ strb r0, [r1] +@ ldr r0, _0807C914 @ =sub_807C9E4 +@ movs r1, 0x50 +@ bl CreateTask +@ ldr r1, _0807C918 @ =0x000006c9 +@ adds r4, r1 +@ strb r0, [r4] +@_0807C8E4: +@ pop {r4-r6} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807C8EC: .4byte sub_807CA34 +@_0807C8F0: .4byte gUnknown_083970E8 +@_0807C8F4: .4byte gPlttBufferUnfaded + 0x200 +@_0807C8F8: .4byte REG_BG0CNT +@_0807C8FC: .4byte gUnknown_0202F7E8 +@_0807C900: .4byte 0x000006d5 +@_0807C904: .4byte 0x00001201 +@_0807C908: .4byte 0x000006d4 +@_0807C90C: .4byte 0x000006da +@_0807C910: .4byte 0x000006c6 +@_0807C914: .4byte sub_807C9E4 +@_0807C918: .4byte 0x000006c9 +@ thumb_func_end sub_807C828 + +@ thumb_func_start DoWeatherEffect +@DoWeatherEffect: @ 807C91C +@ push {r4,lr} +@ lsls r0, 24 +@ lsrs r4, r0, 24 +@ cmp r4, 0x3 +@ beq _0807C932 +@ cmp r4, 0x5 +@ beq _0807C932 +@ cmp r4, 0xD +@ beq _0807C932 +@ bl PlayRainSoundEffect +@_0807C932: +@ ldr r1, _0807C974 @ =gUnknown_0202F7E8 +@ ldr r2, _0807C978 @ =0x000006d1 +@ adds r0, r1, r2 +@ ldrb r0, [r0] +@ cmp r0, r4 +@ beq _0807C956 +@ movs r3, 0xDA +@ lsls r3, 3 +@ adds r0, r1, r3 +@ ldrb r0, [r0] +@ cmp r0, r4 +@ bne _0807C956 +@ ldr r0, _0807C97C @ =gUnknown_08396FC8 +@ lsls r1, r4, 4 +@ adds r1, r0 +@ ldr r0, [r1] +@ bl _call_via_r0 +@_0807C956: +@ ldr r1, _0807C974 @ =gUnknown_0202F7E8 +@ ldr r2, _0807C980 @ =0x000006d3 +@ adds r0, r1, r2 +@ movs r2, 0 +@ strb r2, [r0] +@ ldr r3, _0807C978 @ =0x000006d1 +@ adds r0, r1, r3 +@ strb r4, [r0] +@ ldr r0, _0807C984 @ =0x000006ce +@ adds r1, r0 +@ strh r2, [r1] +@ pop {r4} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807C974: .4byte gUnknown_0202F7E8 +@_0807C978: .4byte 0x000006d1 +@_0807C97C: .4byte gUnknown_08396FC8 +@_0807C980: .4byte 0x000006d3 +@_0807C984: .4byte 0x000006ce +@ thumb_func_end DoWeatherEffect + +@ thumb_func_start sub_807C988 +@sub_807C988: @ 807C988 +@ push {r4,lr} +@ adds r4, r0, 0 +@ lsls r4, 24 +@ lsrs r4, 24 +@ bl PlayRainSoundEffect +@ ldr r0, _0807C9AC @ =gUnknown_0202F7E8 +@ movs r2, 0xDA +@ lsls r2, 3 +@ adds r1, r0, r2 +@ strb r4, [r1] +@ ldr r1, _0807C9B0 @ =0x000006d1 +@ adds r0, r1 +@ strb r4, [r0] +@ pop {r4} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807C9AC: .4byte gUnknown_0202F7E8 +@_0807C9B0: .4byte 0x000006d1 +@ thumb_func_end sub_807C988 + +@ thumb_func_start sub_807C9B4 +@sub_807C9B4: @ 807C9B4 +@ push {r4,lr} +@ adds r4, r0, 0 +@ lsls r4, 24 +@ lsrs r4, 24 +@ bl PlayRainSoundEffect +@ ldr r1, _0807C9E0 @ =gUnknown_0202F7E8 +@ movs r2, 0xDA +@ lsls r2, 3 +@ adds r0, r1, r2 +@ strb r4, [r0] +@ adds r2, 0x1 +@ adds r0, r1, r2 +@ strb r4, [r0] +@ movs r0, 0xD9 +@ lsls r0, 3 +@ adds r1, r0 +@ movs r0, 0x1 +@ strb r0, [r1] +@ pop {r4} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807C9E0: .4byte gUnknown_0202F7E8 +@ thumb_func_end sub_807C9B4 + +@ thumb_func_start sub_807C9E4 +@sub_807C9E4: @ 807C9E4 +@ push {r4,lr} +@ lsls r0, 24 +@ lsrs r4, r0, 24 +@ ldr r2, _0807CA24 @ =gUnknown_0202F7E8 +@ movs r1, 0xD9 +@ lsls r1, 3 +@ adds r0, r2, r1 +@ ldrb r0, [r0] +@ cmp r0, 0 +@ beq _0807CA1C +@ ldr r1, _0807CA28 @ =gUnknown_08396FC8 +@ movs r3, 0xDA +@ lsls r3, 3 +@ adds r0, r2, r3 +@ ldrb r0, [r0] +@ lsls r0, 4 +@ adds r1, 0x8 +@ adds r0, r1 +@ ldr r0, [r0] +@ bl _call_via_r0 +@ ldr r1, _0807CA2C @ =gTasks +@ lsls r0, r4, 2 +@ adds r0, r4 +@ lsls r0, 3 +@ adds r0, r1 +@ ldr r1, _0807CA30 @ =sub_807CA34 +@ str r1, [r0] +@_0807CA1C: +@ pop {r4} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807CA24: .4byte gUnknown_0202F7E8 +@_0807CA28: .4byte gUnknown_08396FC8 +@_0807CA2C: .4byte gTasks +@_0807CA30: .4byte sub_807CA34 +@ thumb_func_end sub_807C9E4 + +@ thumb_func_start sub_807CA34 +@sub_807CA34: @ 807CA34 +@ push {r4-r7,lr} +@ mov r7, r8 +@ push {r7} +@ ldr r5, _0807CA90 @ =gUnknown_0202F7E8 +@ movs r0, 0xDA +@ lsls r0, 3 +@ adds r6, r5, r0 +@ ldr r1, _0807CA94 @ =0x000006d1 +@ adds r7, r5, r1 +@ ldrb r0, [r6] +@ ldrb r2, [r7] +@ cmp r0, r2 +@ beq _0807CAA8 +@ ldr r0, _0807CA98 @ =gUnknown_08396FC8 +@ mov r8, r0 +@ ldrb r0, [r6] +@ lsls r0, 4 +@ mov r1, r8 +@ adds r1, 0xC +@ adds r0, r1 +@ ldr r0, [r0] +@ bl _call_via_r0 +@ lsls r0, 24 +@ lsrs r4, r0, 24 +@ cmp r4, 0 +@ bne _0807CAB8 +@ ldrb r0, [r7] +@ lsls r0, 4 +@ add r0, r8 +@ ldr r0, [r0] +@ bl _call_via_r0 +@ ldr r1, _0807CA9C @ =0x000006c3 +@ adds r0, r5, r1 +@ strb r4, [r0] +@ ldr r2, _0807CAA0 @ =0x000006c6 +@ adds r0, r5, r2 +@ strb r4, [r0] +@ ldrb r0, [r7] +@ strb r0, [r6] +@ ldr r0, _0807CAA4 @ =0x000006d3 +@ adds r1, r5, r0 +@ movs r0, 0x1 +@ strb r0, [r1] +@ b _0807CAB8 +@ .align 2, 0 +@_0807CA90: .4byte gUnknown_0202F7E8 +@_0807CA94: .4byte 0x000006d1 +@_0807CA98: .4byte gUnknown_08396FC8 +@_0807CA9C: .4byte 0x000006c3 +@_0807CAA0: .4byte 0x000006c6 +@_0807CAA4: .4byte 0x000006d3 +@_0807CAA8: +@ ldr r0, _0807CAD8 @ =gUnknown_08396FC8 +@ ldrb r1, [r6] +@ lsls r1, 4 +@ adds r0, 0x4 +@ adds r1, r0 +@ ldr r0, [r1] +@ bl _call_via_r0 +@_0807CAB8: +@ ldr r1, _0807CADC @ =gUnknown_083970B8 +@ ldr r0, _0807CAE0 @ =gUnknown_0202F7E8 +@ ldr r2, _0807CAE4 @ =0x000006c6 +@ adds r0, r2 +@ ldrb r0, [r0] +@ lsls r0, 2 +@ adds r0, r1 +@ ldr r0, [r0] +@ bl _call_via_r0 +@ pop {r3} +@ mov r8, r3 +@ pop {r4-r7} +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807CAD8: .4byte gUnknown_08396FC8 +@_0807CADC: .4byte gUnknown_083970B8 +@_0807CAE0: .4byte gUnknown_0202F7E8 +@_0807CAE4: .4byte 0x000006c6 +@ thumb_func_end sub_807CA34 + +@ thumb_func_start sub_807CAE8 +@sub_807CAE8: @ 807CAE8 +@ ldr r0, _0807CAFC @ =gUnknown_0202F7E8 +@ ldr r2, _0807CB00 @ =0x000006c1 +@ adds r1, r0, r2 +@ movs r2, 0 +@ strb r2, [r1] +@ ldr r1, _0807CB04 @ =0x000006c2 +@ adds r0, r1 +@ strb r2, [r0] +@ bx lr +@ .align 2, 0 +@_0807CAFC: .4byte gUnknown_0202F7E8 +@_0807CB00: .4byte 0x000006c1 +@_0807CB04: .4byte 0x000006c2 +@ thumb_func_end sub_807CAE8 + +@ thumb_func_start nullsub_38 +@nullsub_38: @ 807CB08 +@ bx lr +@ thumb_func_end nullsub_38 + +@ thumb_func_start sub_807CB0C +@sub_807CB0C: @ 807CB0C +@ movs r0, 0 +@ bx lr +@ thumb_func_end sub_807CB0C + +@ thumb_func_start sub_807CB10 +@sub_807CB10: @ 807CB10 +@ push {r4-r7,lr} +@ mov r7, r10 +@ mov r6, r9 +@ mov r5, r8 +@ push {r5-r7} +@ ldr r1, _0807CB50 @ =gUnknown_030006DC +@ ldr r0, _0807CB54 @ =gUnknown_083970C8 +@ str r0, [r1] +@ movs r0, 0 +@ mov r12, r0 +@ ldr r1, _0807CB58 @ =gUnknown_0202FC48 +@ mov r10, r1 +@_0807CB28: +@ mov r7, r10 +@ mov r0, r12 +@ cmp r0, 0 +@ bne _0807CB34 +@ ldr r1, _0807CB5C @ =0xfffffda0 +@ adds r7, r1 +@_0807CB34: +@ movs r5, 0 +@ movs r0, 0x1 +@ add r0, r12 +@ mov r9, r0 +@_0807CB3C: +@ lsls r1, r5, 8 +@ lsls r0, r5, 24 +@ lsrs r2, r0, 16 +@ mov r0, r12 +@ cmp r0, 0 +@ bne _0807CB60 +@ adds r0, r1, 0 +@ lsls r0, 12 +@ lsrs r4, r0, 16 +@ b _0807CB62 +@ .align 2, 0 +@_0807CB50: .4byte gUnknown_030006DC +@_0807CB54: .4byte gUnknown_083970C8 +@_0807CB58: .4byte gUnknown_0202FC48 +@_0807CB5C: .4byte 0xfffffda0 +@_0807CB60: +@ movs r4, 0 +@_0807CB62: +@ movs r3, 0 +@ adds r1, r5, 0x1 +@ mov r8, r1 +@_0807CB68: +@ subs r1, r2, r4 +@ lsls r1, 16 +@ lsrs r2, r1, 16 +@ lsls r0, r3, 5 +@ adds r0, r7 +@ adds r0, r5 +@ lsrs r1, 24 +@ strb r1, [r0] +@ adds r0, r3, 0x1 +@ lsls r0, 16 +@ lsrs r3, r0, 16 +@ cmp r3, 0x2 +@ bls _0807CB68 +@ adds r6, r2, 0 +@ movs r0, 0xF8 +@ lsls r0, 5 +@ subs r0, r2 +@ cmp r0, 0 +@ bge _0807CB90 +@ adds r0, 0xF +@_0807CB90: +@ lsls r0, 12 +@ lsrs r4, r0, 16 +@ cmp r5, 0xB +@ bhi _0807CBDA +@ cmp r3, 0x12 +@ bhi _0807CC00 +@_0807CB9C: +@ adds r0, r2, r4 +@ lsls r0, 16 +@ lsrs r2, r0, 16 +@ subs r0, r2, r6 +@ lsls r0, 16 +@ asrs r1, r0, 16 +@ cmp r1, 0 +@ ble _0807CBB8 +@ lsrs r0, 31 +@ adds r0, r1, r0 +@ asrs r0, 1 +@ subs r0, r2, r0 +@ lsls r0, 16 +@ lsrs r2, r0, 16 +@_0807CBB8: +@ lsls r0, r3, 5 +@ adds r0, r7 +@ adds r1, r0, r5 +@ lsrs r0, r2, 8 +@ strb r0, [r1] +@ lsls r0, 24 +@ lsrs r0, 24 +@ cmp r0, 0x1F +@ bls _0807CBCE +@ movs r0, 0x1F +@ strb r0, [r1] +@_0807CBCE: +@ adds r0, r3, 0x1 +@ lsls r0, 16 +@ lsrs r3, r0, 16 +@ cmp r3, 0x12 +@ bls _0807CB9C +@ b _0807CC00 +@_0807CBDA: +@ cmp r3, 0x12 +@ bhi _0807CC00 +@ movs r6, 0x1F +@_0807CBE0: +@ adds r1, r2, r4 +@ lsls r1, 16 +@ lsrs r2, r1, 16 +@ lsls r0, r3, 5 +@ adds r0, r7 +@ adds r0, r5 +@ lsrs r1, 24 +@ strb r1, [r0] +@ cmp r1, 0x1F +@ bls _0807CBF6 +@ strb r6, [r0] +@_0807CBF6: +@ adds r0, r3, 0x1 +@ lsls r0, 16 +@ lsrs r3, r0, 16 +@ cmp r3, 0x12 +@ bls _0807CBE0 +@_0807CC00: +@ mov r1, r8 +@ lsls r0, r1, 16 +@ lsrs r5, r0, 16 +@ cmp r5, 0x1F +@ bls _0807CB3C +@ mov r1, r9 +@ lsls r0, r1, 16 +@ lsrs r0, 16 +@ mov r12, r0 +@ cmp r0, 0x1 +@ bls _0807CB28 +@ pop {r3-r5} +@ mov r8, r3 +@ mov r9, r4 +@ mov r10, r5 +@ pop {r4-r7} +@ pop {r0} +@ bx r0 +@ thumb_func_end sub_807CB10 + +@ thumb_func_start sub_807CC24 +@sub_807CC24: @ 807CC24 +@ push {r4-r7,lr} +@ ldr r0, _0807CC50 @ =gUnknown_0202F7E8 +@ movs r1, 0xD8 +@ lsls r1, 3 +@ adds r4, r0, r1 +@ ldr r2, _0807CC54 @ =0x000006c1 +@ adds r1, r0, r2 +@ ldrb r7, [r4] +@ mov r12, r7 +@ movs r6, 0 +@ ldrsb r6, [r4, r6] +@ movs r5, 0 +@ ldrsb r5, [r1, r5] +@ adds r3, r0, 0 +@ cmp r6, r5 +@ bne _0807CC5C +@ ldr r0, _0807CC58 @ =0x000006c6 +@ adds r1, r3, r0 +@ movs r0, 0x3 +@ strb r0, [r1] +@ b _0807CCA4 +@ .align 2, 0 +@_0807CC50: .4byte gUnknown_0202F7E8 +@_0807CC54: .4byte 0x000006c1 +@_0807CC58: .4byte 0x000006c6 +@_0807CC5C: +@ ldr r1, _0807CC84 @ =0x000006c3 +@ adds r2, r3, r1 +@ ldrb r0, [r2] +@ adds r0, 0x1 +@ strb r0, [r2] +@ ldr r7, _0807CC88 @ =0x000006c2 +@ adds r1, r3, r7 +@ lsls r0, 24 +@ lsrs r0, 24 +@ ldrb r1, [r1] +@ cmp r0, r1 +@ bcc _0807CCA4 +@ movs r0, 0 +@ strb r0, [r2] +@ mov r0, r12 +@ cmp r6, r5 +@ bge _0807CC8C +@ adds r0, 0x1 +@ b _0807CC90 +@ .align 2, 0 +@_0807CC84: .4byte 0x000006c3 +@_0807CC88: .4byte 0x000006c2 +@_0807CC8C: +@ mov r0, r12 +@ subs r0, 0x1 +@_0807CC90: +@ strb r0, [r4] +@ movs r1, 0xD8 +@ lsls r1, 3 +@ adds r0, r3, r1 +@ movs r2, 0 +@ ldrsb r2, [r0, r2] +@ movs r0, 0 +@ movs r1, 0x20 +@ bl sub_807CEBC +@_0807CCA4: +@ pop {r4-r7} +@ pop {r0} +@ bx r0 +@ thumb_func_end sub_807CC24 + +@ thumb_func_start sub_807CCAC +@sub_807CCAC: @ 807CCAC +@ push {lr} +@ ldr r2, _0807CCE4 @ =gUnknown_0202F7E8 +@ ldr r0, _0807CCE8 @ =0x000006cb +@ adds r1, r2, r0 +@ ldrb r0, [r1] +@ adds r0, 0x1 +@ strb r0, [r1] +@ lsls r0, 24 +@ lsrs r0, 24 +@ cmp r0, 0x1 +@ bls _0807CCCA +@ ldr r3, _0807CCEC @ =0x000006ca +@ adds r1, r2, r3 +@ movs r0, 0 +@ strb r0, [r1] +@_0807CCCA: +@ movs r1, 0xDA +@ lsls r1, 3 +@ adds r0, r2, r1 +@ ldrb r0, [r0] +@ subs r0, 0x3 +@ cmp r0, 0xA +@ bhi _0807CD94 +@ lsls r0, 2 +@ ldr r1, _0807CCF0 @ =_0807CCF4 +@ adds r0, r1 +@ ldr r0, [r0] +@ mov pc, r0 +@ .align 2, 0 +@_0807CCE4: .4byte gUnknown_0202F7E8 +@_0807CCE8: .4byte 0x000006cb +@_0807CCEC: .4byte 0x000006ca +@_0807CCF0: .4byte _0807CCF4 +@ .align 2, 0 +@_0807CCF4: +@ .4byte _0807CD20 +@ .4byte _0807CD20 +@ .4byte _0807CD20 +@ .4byte _0807CD6C +@ .4byte _0807CD94 +@ .4byte _0807CD94 +@ .4byte _0807CD94 +@ .4byte _0807CD94 +@ .4byte _0807CD20 +@ .4byte _0807CD48 +@ .4byte _0807CD20 +@_0807CD20: +@ bl sub_807CDC4 +@ lsls r0, 24 +@ cmp r0, 0 +@ bne _0807CDB4 +@ ldr r0, _0807CD40 @ =gUnknown_0202F7E8 +@ movs r2, 0xD8 +@ lsls r2, 3 +@ adds r1, r0, r2 +@ movs r2, 0x3 +@ strb r2, [r1] +@ ldr r3, _0807CD44 @ =0x000006c6 +@ adds r0, r3 +@ strb r2, [r0] +@ b _0807CDB4 +@ .align 2, 0 +@_0807CD40: .4byte gUnknown_0202F7E8 +@_0807CD44: .4byte 0x000006c6 +@_0807CD48: +@ bl sub_807CE24 +@ lsls r0, 24 +@ cmp r0, 0 +@ bne _0807CDB4 +@ ldr r1, _0807CD64 @ =gUnknown_0202F7E8 +@ movs r0, 0xD8 +@ lsls r0, 3 +@ adds r2, r1, r0 +@ movs r0, 0xFA +@ strb r0, [r2] +@ ldr r2, _0807CD68 @ =0x000006c6 +@ adds r1, r2 +@ b _0807CDB0 +@ .align 2, 0 +@_0807CD64: .4byte gUnknown_0202F7E8 +@_0807CD68: .4byte 0x000006c6 +@_0807CD6C: +@ bl sub_807CE7C +@ lsls r0, 24 +@ lsrs r2, r0, 24 +@ cmp r2, 0 +@ bne _0807CDB4 +@ ldr r0, _0807CD8C @ =gUnknown_0202F7E8 +@ movs r3, 0xD8 +@ lsls r3, 3 +@ adds r1, r0, r3 +@ strb r2, [r1] +@ ldr r1, _0807CD90 @ =0x000006c6 +@ adds r0, r1 +@ movs r1, 0x3 +@ strb r1, [r0] +@ b _0807CDB4 +@ .align 2, 0 +@_0807CD8C: .4byte gUnknown_0202F7E8 +@_0807CD90: .4byte 0x000006c6 +@_0807CD94: +@ ldr r0, _0807CDB8 @ =gPaletteFade +@ ldrb r1, [r0, 0x7] +@ movs r0, 0x80 +@ ands r0, r1 +@ cmp r0, 0 +@ bne _0807CDB4 +@ ldr r3, _0807CDBC @ =0x000006c1 +@ adds r0, r2, r3 +@ ldrb r1, [r0] +@ subs r3, 0x1 +@ adds r0, r2, r3 +@ strb r1, [r0] +@ ldr r0, _0807CDC0 @ =0x000006c6 +@ adds r1, r2, r0 +@_0807CDB0: +@ movs r0, 0x3 +@ strb r0, [r1] +@_0807CDB4: +@ pop {r0} +@ bx r0 +@ .align 2, 0 +@_0807CDB8: .4byte gPaletteFade +@_0807CDBC: .4byte 0x000006c1 +@_0807CDC0: .4byte 0x000006c6 +@ thumb_func_end sub_807CCAC + +@ thumb_func_start sub_807CDC4 +@sub_807CDC4: @ 807CDC4 +@ push {r4,lr} +@ sub sp, 0x4 +@ ldr r2, _0807CE00 @ =gUnknown_0202F7E8 +@ ldr r0, _0807CE04 @ =0x000006c7 +@ adds r4, r2, r0 +@ ldrb r0, [r4] +@ cmp r0, 0x10 +@ beq _0807CE1A +@ adds r1, r0, 0x1 +@ strb r1, [r4] +@ lsls r0, r1, 24 +@ lsrs r0, 24 +@ cmp r0, 0xF +@ bhi _0807CE0C +@ movs r3, 0x10 +@ subs r3, r1 +@ lsls r3, 24 +@ lsrs r3, 24 +@ ldr r1, _0807CE08 @ =0x000006c4 +@ adds r0, r2, r1 +@ ldrh r0, [r0] +@ str r0, [sp] +@ movs r0, 0 +@ movs r1, 0x20 +@ movs r2, 0x3 +@ bl sub_807D1BC +@ movs r0, 0x1 +@ b _0807CE1C +@ .align 2, 0 +@_0807CE00: .4byte gUnknown_0202F7E8 +@_0807CE04: .4byte 0x000006c7 +@_0807CE08: .4byte 0x000006c4 +@_0807CE0C: +@ movs r0, 0 +@ movs r1, 0x20 +@ movs r2, 0x3 +@ bl sub_807CEBC +@ movs r0, 0x10 +@ strb r0, [r4] +@_0807CE1A: +@ movs r0, 0 +@_0807CE1C: +@ add sp, 0x4 +@ pop {r4} +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_807CDC4 + +@ thumb_func_start sub_807CE24 +@sub_807CE24: @ 807CE24 +@ push {r4,lr} +@ ldr r2, _0807CE58 @ =gUnknown_0202F7E8 +@ ldr r0, _0807CE5C @ =0x000006c7 +@ adds r4, r2, r0 +@ ldrb r0, [r4] +@ cmp r0, 0x10 +@ beq _0807CE74 +@ adds r3, r0, 0x1 +@ strb r3, [r4] +@ lsls r0, r3, 24 +@ lsrs r0, 24 +@ cmp r0, 0xF +@ bhi _0807CE64 +@ movs r0, 0x6 +@ negs r0, r0 +@ movs r1, 0x10 +@ subs r1, r3 +@ lsls r1, 24 +@ lsrs r1, 24 +@ ldr r3, _0807CE60 @ =0x000006c4 +@ adds r2, r3 +@ ldrh r2, [r2] +@ bl sub_807D304 +@ movs r0, 0x1 +@ b _0807CE76 +@ .align 2, 0 +@_0807CE58: .4byte gUnknown_0202F7E8 +@_0807CE5C: .4byte 0x000006c7 +@_0807CE60: .4byte 0x000006c4 +@_0807CE64: +@ movs r2, 0x6 +@ negs r2, r2 +@ movs r0, 0 +@ movs r1, 0x20 +@ bl sub_807CEBC +@ movs r0, 0x10 +@ strb r0, [r4] +@_0807CE74: +@ movs r0, 0 +@_0807CE76: +@ pop {r4} +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_807CE24 + +@ thumb_func_start sub_807CE7C +@sub_807CE7C: @ 807CE7C +@ push {lr} +@ ldr r2, _0807CEA4 @ =gUnknown_0202F7E8 +@ ldr r1, _0807CEA8 @ =0x000006c7 +@ adds r0, r2, r1 +@ ldrb r1, [r0] +@ cmp r1, 0x10 +@ beq _0807CEB0 +@ adds r1, 0x1 +@ strb r1, [r0] +@ movs r0, 0x10 +@ subs r0, r1 +@ lsls r0, 24 +@ lsrs r0, 24 +@ ldr r3, _0807CEAC @ =0x000006c4 +@ adds r1, r2, r3 +@ ldrh r1, [r1] +@ bl sub_807D424 +@ movs r0, 0x1 +@ b _0807CEB2 +@ .align 2, 0 +@_0807CEA4: .4byte gUnknown_0202F7E8 +@_0807CEA8: .4byte 0x000006c7 +@_0807CEAC: .4byte 0x000006c4 +@_0807CEB0: +@ movs r0, 0 +@_0807CEB2: +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_807CE7C + +@ thumb_func_start nullsub_39 +@nullsub_39: @ 807CEB8 +@ bx lr +@ thumb_func_end nullsub_39 thumb_func_start sub_807CEBC sub_807CEBC: @ 807CEBC diff --git a/data/data2.s b/data/data2.s index a5a979625..6da232e0f 100644 --- a/data/data2.s +++ b/data/data2.s @@ -10502,66 +10502,21 @@ gUnknown_08396FC4:: @ 8396FC4 .align 2 gUnknown_08396FC8:: @ 8396FC8 - .4byte sub_807CAE8 - .4byte nullsub_38 - .4byte sub_807CAE8 - .4byte sub_807CB0C - .4byte sub_807DE78 - .4byte sub_807DEF4 - .4byte sub_807DEC4 - .4byte sub_807DF54 - .4byte sub_807DF9C - .4byte nullsub_55 - .4byte sub_807DFC0 - .4byte sub_807DFD0 - .4byte sub_807E364 - .4byte sub_807E400 - .4byte sub_807E3D0 - .4byte sub_807E460 - .4byte sub_807E9C8 - .4byte snowflakes_progress2 - .4byte sub_807EA18 - .4byte sub_807EAC0 - .4byte sub_807EE80 - .4byte sub_807EFC0 - .4byte sub_807EEF4 - .4byte sub_807F34C - .4byte sub_807F49C - .4byte sub_807F52C - .4byte sub_807F4FC - .4byte sub_807F5EC - .4byte sub_807F7F8 - .4byte sub_807F888 - .4byte sub_807F858 - .4byte sub_807F934 - .4byte sub_807FE9C - .4byte sub_807FF4C - .4byte sub_807FF1C - .4byte sub_807FFC8 - .4byte sub_807FB24 - .4byte sub_807FBD8 - .4byte sub_807FBA8 - .4byte sub_807FC3C - .4byte sub_807F49C - .4byte sub_807F52C - .4byte sub_807F4FC - .4byte sub_807F5EC - .4byte sub_8080430 - .4byte nullsub_56 - .4byte sub_8080460 - .4byte sub_8080470 - .4byte sub_807E110 - .4byte sub_807E174 - .4byte sub_807E144 - .4byte sub_807E258 - .4byte sub_807EF24 - .4byte sub_807EFC0 - .4byte sub_807EF90 - .4byte sub_807F34C - .4byte sub_8080474 - .4byte sub_80804F8 - .4byte sub_80804C8 - .4byte sub_808056C + .4byte sub_807CAE8, nullsub_38, sub_807CAE8, sub_807CB0C + .4byte sub_807DE78, sub_807DEF4, sub_807DEC4, sub_807DF54 + .4byte sub_807DF9C, nullsub_55, sub_807DFC0, sub_807DFD0 + .4byte sub_807E364, sub_807E400, sub_807E3D0, sub_807E460 + .4byte sub_807E9C8, snowflakes_progress2, sub_807EA18, sub_807EAC0 + .4byte sub_807EE80, sub_807EFC0, sub_807EEF4, sub_807F34C + .4byte sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC + .4byte sub_807F7F8, sub_807F888, sub_807F858, sub_807F934 + .4byte sub_807FE9C, sub_807FF4C, sub_807FF1C, sub_807FFC8 + .4byte sub_807FB24, sub_807FBD8, sub_807FBA8, sub_807FC3C + .4byte sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC + .4byte sub_8080430, nullsub_56, sub_8080460, sub_8080470 + .4byte sub_807E110, sub_807E174, sub_807E144, sub_807E258 + .4byte sub_807EF24, sub_807EFC0, sub_807EF90, sub_807F34C + .4byte sub_8080474, sub_80804F8, sub_80804C8, sub_808056C .align 2 gUnknown_083970B8:: @ 83970B8 diff --git a/ld_script.txt b/ld_script.txt index a0d6fd441..a30c3382d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,6 +92,7 @@ SECTIONS { src/task.o(.text); asm/rom5.o(.text); asm/title_screen.o(.text); + src/weather.o(.text); asm/weather.o(.text); asm/rom_8080874.o(.text); asm/battle_setup.o(.text); diff --git a/src/weather.c b/src/weather.c new file mode 100644 index 000000000..5dddb6614 --- /dev/null +++ b/src/weather.c @@ -0,0 +1,322 @@ +#include "global.h" +#include "task.h" +#include "sprite.h" +#include "palette.h" + +struct Weather { + u8 filler_000[0x200]; + u8 unknown_200[2][32]; + u8 filler_240[0x480]; + s8 unknown_6C0; + s8 unknown_6C1; + u8 unknown_6C2; + u8 unknown_6C3; + u16 unknown_6C4; + u8 unknown_6C6; + u8 unknown_6C7; + u8 unknown_6C8; + u8 unknown_6C9; + u8 unknown_6CA; + u8 unknown_6CB; + u8 filler_6CC[2]; + u16 unknown_6CE; + u8 unknown_6D0; + u8 unknown_6D1; + u8 filler_6D2[1]; + u8 unknown_6D3; + u8 unknown_6D4; + u8 unknown_6D5; + u8 filler_6D6[2]; + u8 unknown_6D8; + u8 filler_6D9[1]; + u8 unknown_6DA; + u8 filler_6DB[3]; + u8 unknown_6DE; + u8 filler_6DF[5]; + u8 unknown_6E4; + u8 filler_6E5[0x15]; + u8 unknown_6FA; + u8 unknown_6FB; + u8 filler_6FC[4]; + u8 unknown_700; + u8 filler_701[0x15]; + u8 unknown_716; + u8 unknown_717; + u8 filler_718[0xc]; + u8 unknown_724; + u8 filler_725[9]; + u8 unknown_72E; +}; + +#define gWeather gUnknown_0202F7E8 +extern struct Weather gWeather; +extern u8 *gUnknown_083970E8; +extern u8 (*gUnknown_08396FC8[][4])(void); +extern u8 (*gUnknown_083970B8[])(void); +extern u8 *gUnknown_030006DC; +extern u8 gUnknown_083970C8; +extern u8 (*gUnknown_0202FC48)[32]; +extern u8 (*gUnknown_0202F9E8)[32]; + +void sub_807CA34(u8); +void sub_807C9E4(u8); +void sub_807CB10(void); +extern void sub_807DB64(u8, u8); +u8 sub_807CDC4(void); +u8 sub_807CE24(void); +u8 sub_807CE7C(void); +void sub_807CEBC(u8, u8, s8); + +extern void sub_807D1BC(u8, u8, u8, u8, u16); +extern void sub_807D304(int, u8, u16); +extern void sub_807D424(u8, u16); + +void PlayRainSoundEffect(void); + +void sub_807C828(void) { + u8 index; + if (!FuncIsActiveTask(&sub_807CA34)) { + index = AllocSpritePalette(0x1200); + CpuSet(&gUnknown_083970E8, + &gPlttBufferUnfaded[0x100 + index * 16], + ®_BG0CNT); + sub_807CB10(); + gWeather.unknown_6D5 = index; + gWeather.unknown_6D4 = AllocSpritePalette(0x1201); + gWeather.unknown_6DA = 0; + gWeather.unknown_6D8 = 0; + gWeather.unknown_6DE = 0; + gWeather.unknown_6E4 = 0; + gWeather.unknown_700 = 0; + gWeather.unknown_6FB = 0; + gWeather.unknown_724 = 0; + gWeather.unknown_716 = 0; + gWeather.unknown_717 = 0; + gWeather.unknown_72E = 0; + gWeather.unknown_6FA = 0; + sub_807DB64(16, 0); + gWeather.unknown_6D0 = 0; + gWeather.unknown_6C6 = 3; + gWeather.unknown_6C8 = 0; + gWeather.unknown_6D3 = 1; + gWeather.unknown_6C9 = CreateTask(&sub_807C9E4, 80); + } +} + +void DoWeatherEffect(u8 effect) { + if (effect != 3 && effect != 5 && effect != 13) { + PlayRainSoundEffect(); + } + if (gWeather.unknown_6D1 != effect && gWeather.unknown_6D0 == effect) { + gUnknown_08396FC8[effect][0](); + } + gWeather.unknown_6D3 = 0; + gWeather.unknown_6D1 = effect; + gWeather.unknown_6CE = 0; +} + +void sub_807C988(u8 effect) { + PlayRainSoundEffect(); + gWeather.unknown_6D0 = effect; + gWeather.unknown_6D1 = effect; +} + +void sub_807C9B4(u8 effect) { + PlayRainSoundEffect(); + gWeather.unknown_6D0 = effect; + gWeather.unknown_6D1 = effect; + gWeather.unknown_6C8 = 1; +} + +void sub_807C9E4(u8 task) { + if (gWeather.unknown_6C8) { + gUnknown_08396FC8[gWeather.unknown_6D0][2](); + gTasks[task].func = &sub_807CA34; + } +} + +void sub_807CA34(u8 task) { + u8 v1; + if (gWeather.unknown_6D0 != gWeather.unknown_6D1) { + v1 = gUnknown_08396FC8[gWeather.unknown_6D0][3](); + if (!v1) { + gUnknown_08396FC8[gWeather.unknown_6D1][0](); + gWeather.unknown_6C3 = 0; // compiler reuses v1 + gWeather.unknown_6C6 = 0; // compiler reuses v1 + gWeather.unknown_6D0 = gWeather.unknown_6D1; + gWeather.unknown_6D3 = 1; + } + } else { + gUnknown_08396FC8[gWeather.unknown_6D0][1](); + } + gUnknown_083970B8[gWeather.unknown_6C6](); +} + +void sub_807CAE8(void) { + gWeather.unknown_6C1 = 0; + gWeather.unknown_6C2 = 0; +} + +void nullsub_38(void) { +} + +u32 sub_807CB0C(void) { + return 0; +} + +void sub_807CB10(void) { + u16 v0; + u8 (*v1)[32]; + u16 v2; + u16 v4; + u16 v5; + u16 v6; + u16 v9; + u32 v10; + u16 v11; + s16 dunno; + + gUnknown_030006DC = &gUnknown_083970C8; + for (v0 = 0; v0 <= 1; v0++) { + if (v0 == 0) { + v1 = &gUnknown_0202F9E8; + } else { + v1 = &gUnknown_0202F9E8 + 0x260/4; + //v1 = &gUnknown_0202FC48; + } + for (v2 = 0; (u16)v2 <= 0x1f; v2++) { + v4 = v2 << 8; + if (v0 == 0) { + v5 = (v2 << 8) / 16; + } else { + v5 = 0; + } + v6 = 0; + for (; v6 <= 2; v6++) { + v4 = (v4 - v5); + v1[v6][v2] = v4 >> 8; + } + v9 = v4; + v10 = 0x1f00 - v4; + if ((0x1f00 - v4) < 0) { + v10 += 0xf; + } + v11 = v10 >> 4; + if (v2 <= 0xb) { + for (; v6 <= 0x12; v6++) { + v4 += v11; + dunno = v4 - v9; + if (dunno > 0) { + v4 -= dunno + ((u16)dunno >> 15) >> 1; + } + v1[v6][v2] = v4 >> 8; + if (v1[v6][v2] > 0x1f) { + v1[v6][v2] = 0x1f; + } + } + } else { + for (; v6 <= 0x12; v6++) { + v4 += v11; + v1[v6][v2] = v4 >> 8; + if (v1[v6][v2] > 0x1f) { + v1[v6][v2] = 0x1f; + } + } + } + } + } +} + +void sub_807CC24(void) { + if (gWeather.unknown_6C0 == gWeather.unknown_6C1) { + gWeather.unknown_6C6 = 3; + } else { + if (++gWeather.unknown_6C3 >= gWeather.unknown_6C2) { + gWeather.unknown_6C3 = 0; + if (gWeather.unknown_6C0 < gWeather.unknown_6C1) { + gWeather.unknown_6C0++; + } else { + gWeather.unknown_6C0--; + } + sub_807CEBC(0, 0x20, gWeather.unknown_6C0); + } + } +} + +void sub_807CCAC(void) { + if (++gWeather.unknown_6CB > 1) { + gWeather.unknown_6CA = 0; + } + switch (gWeather.unknown_6D0) { + case 3: + case 4: + case 5: + case 11: + case 13: + if (sub_807CDC4() == 0) { + gWeather.unknown_6C0 = 3; + gWeather.unknown_6C6 = 3; + } + break; + case 12: + if (sub_807CE24() == 0) { + gWeather.unknown_6C0 = -6; + gWeather.unknown_6C6 = 3; + } + break; + case 6: + if (sub_807CE7C() == 0) { + gWeather.unknown_6C0 = 0; + gWeather.unknown_6C6 = 3; + } + break; + case 7: + case 8: + case 9: + case 10: + default: + if (!gPaletteFade.active) { + gWeather.unknown_6C0 = gWeather.unknown_6C1; + gWeather.unknown_6C6 = 3; + } + break; + } +} + +u8 sub_807CDC4(void) { + if (gWeather.unknown_6C7 == 0x10) { + return 0; + } + if (++gWeather.unknown_6C7 >= 0x10) { + sub_807CEBC(0, 0x20, 3); + gWeather.unknown_6C7 = 0x10; + return 0; + } + sub_807D1BC(0, 0x20, 3, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + return 1; +} + +u8 sub_807CE24(void) { + if (gWeather.unknown_6C7 == 0x10) { + return 0; + } + if (++gWeather.unknown_6C7 >= 0x10) { + sub_807CEBC(0, 0x20, -6); + gWeather.unknown_6C7 = 0x10; + return 0; + } + sub_807D304(-6, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + return 1; +} + +u8 sub_807CE7C(void) { + if (gWeather.unknown_6C7 == 0x10) { + return 0; + } + ++gWeather.unknown_6C7; + sub_807D424(0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + return 1; +} + +void nullsub_39(void) { +} |