diff options
author | YamaArashi <shadow962@live.com> | 2016-11-24 10:00:14 -0800 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-11-24 10:00:14 -0800 |
commit | bc912a7a7378dce12ebea75b82bbcf6d7c1e3524 (patch) | |
tree | c2ce4837f69cfbf33e946b8f61adfe607a87caa7 | |
parent | 32b056d5041d54539c75a14774a32d82e898501c (diff) | |
parent | e343c5cc0d839914c55f0dd35ca31cc711dac7be (diff) |
Merge branch 'yenatch-weather'
-rw-r--r-- | asm/weather.s | 848 | ||||
-rw-r--r-- | data/data2.s | 75 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/weather.c | 322 |
4 files changed, 338 insertions, 908 deletions
diff --git a/asm/weather.s b/asm/weather.s index fbcc61b6f..cd0a646a7 100644 --- a/asm/weather.s +++ b/asm/weather.s @@ -1,858 +1,10 @@ .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" .include "asm/macros.inc" .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_807CEBC sub_807CEBC: @ 807CEBC push {r4-r7,lr} diff --git a/data/data2.s b/data/data2.s index dfb4773dc..4a3b246cb 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 893eca8dd..f410daf32 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -95,6 +95,7 @@ SECTIONS { src/task.o(.text); asm/rom5.o(.text); src/title_screen.o(.text); + src/weather.o(.text); asm/weather.o(.text); asm/rom_8080874.o(.text); src/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) { +} |