summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-11-24 10:00:14 -0800
committerYamaArashi <shadow962@live.com>2016-11-24 10:00:14 -0800
commitbc912a7a7378dce12ebea75b82bbcf6d7c1e3524 (patch)
treec2ce4837f69cfbf33e946b8f61adfe607a87caa7
parent32b056d5041d54539c75a14774a32d82e898501c (diff)
parente343c5cc0d839914c55f0dd35ca31cc711dac7be (diff)
Merge branch 'yenatch-weather'
-rw-r--r--asm/weather.s848
-rw-r--r--data/data2.s75
-rw-r--r--ld_script.txt1
-rw-r--r--src/weather.c322
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],
+ &REG_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) {
+}