diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-16 20:12:37 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2020-03-16 20:12:37 -0400 |
commit | 6e00e822101c4c3f68bce0789ba56133b24b586b (patch) | |
tree | a9130de6de36a81db21c87a3522bcc79728a1f49 | |
parent | f8915246a77a4453135ac3a4e6a61c098d557451 (diff) |
Port field_weather from Emerald
-rw-r--r-- | asm/field_weather.s | 3016 | ||||
-rw-r--r-- | asm/field_weather_effects.s | 452 | ||||
-rw-r--r-- | asm/field_weather_util.s | 295 | ||||
-rw-r--r-- | asm/overworld.s | 8 | ||||
-rw-r--r-- | data/field_weather.s | 133 | ||||
-rw-r--r-- | include/field_weather.h | 2 | ||||
-rw-r--r-- | include/field_weather_util.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 5 | ||||
-rw-r--r-- | src/credits.c | 4 | ||||
-rw-r--r-- | src/field_weather.c | 1320 | ||||
-rw-r--r-- | src/field_weather_util.c | 12 | ||||
-rw-r--r-- | sym_ewram.txt | 21 |
12 files changed, 1872 insertions, 3402 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s index c5204def2..2428f2984 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -5,3020 +5,4 @@ .text - thumb_func_start sub_8079C08 -sub_8079C08: @ 8079C08 - push {r4-r6,lr} - ldr r0, _08079CCC @ =Task_WeatherMain - bl FuncIsActiveTask - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08079CC4 - movs r0, 0x90 - lsls r0, 5 - bl AllocSpritePalette - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08079CD0 @ =gUnknown_83C2CE0 - lsls r1, r5, 5 - ldr r2, _08079CD4 @ =gPlttBufferUnfaded + 0x200 - adds r1, r2 - ldr r2, _08079CD8 @ =0x04000008 - bl CpuSet - adds r0, r5, 0 - bl sub_8083598 - bl sub_8079EE8 - ldr r4, _08079CDC @ =gUnknown_2037F34 - ldr r1, _08079CE0 @ =0x000006d5 - adds r0, r4, r1 - strb r5, [r0] - subs r1, 0x1 - adds r0, r4, r1 - strb r5, [r0] - adds r1, 0x6 - adds r0, r4, r1 - strb r6, [r0] - subs r1, 0x2 - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x6 - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x6 - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x1C - adds r0, r4, r1 - strb r6, [r0] - subs r1, 0x5 - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x29 - adds r0, r4, r1 - strb r6, [r0] - subs r1, 0xE - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strb r6, [r0] - adds r1, 0x17 - adds r0, r4, r1 - strb r6, [r0] - subs r1, 0x34 - adds r0, r4, r1 - strb r6, [r0] - movs r0, 0x10 - movs r1, 0 - bl Weather_SetBlendCoeffs - movs r1, 0xDA - lsls r1, 3 - adds r0, r4, r1 - strb r6, [r0] - ldr r0, _08079CE4 @ =0x000006c6 - adds r1, r4, r0 - movs r0, 0x3 - strb r0, [r1] - movs r1, 0xD9 - lsls r1, 3 - adds r0, r4, r1 - strb r6, [r0] - ldr r0, _08079CE8 @ =0x000006d3 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _08079CEC @ =Task_WeatherInit - movs r1, 0x50 - bl CreateTask - ldr r1, _08079CF0 @ =0x000006c9 - adds r4, r1 - strb r0, [r4] -_08079CC4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079CCC: .4byte Task_WeatherMain -_08079CD0: .4byte gUnknown_83C2CE0 -_08079CD4: .4byte gPlttBufferUnfaded + 0x200 -_08079CD8: .4byte 0x04000008 -_08079CDC: .4byte gUnknown_2037F34 -_08079CE0: .4byte 0x000006d5 -_08079CE4: .4byte 0x000006c6 -_08079CE8: .4byte 0x000006d3 -_08079CEC: .4byte Task_WeatherInit -_08079CF0: .4byte 0x000006c9 - thumb_func_end sub_8079C08 - - thumb_func_start weather_set -weather_set: @ 8079CF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - beq _08079D0A - cmp r4, 0x5 - beq _08079D0A - cmp r4, 0xD - beq _08079D0A - bl PlayRainStoppingSoundEffect -_08079D0A: - ldr r1, _08079D4C @ =gUnknown_2037F34 - ldr r2, _08079D50 @ =0x000006d1 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, r4 - beq _08079D2E - movs r3, 0xDA - lsls r3, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r4 - bne _08079D2E - ldr r0, _08079D54 @ =gUnknown_83C2BC0 - lsls r1, r4, 4 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_08079D2E: - ldr r1, _08079D4C @ =gUnknown_2037F34 - ldr r2, _08079D58 @ =0x000006d3 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _08079D50 @ =0x000006d1 - adds r0, r1, r3 - strb r4, [r0] - ldr r0, _08079D5C @ =0x000006ce - adds r1, r0 - strh r2, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08079D4C: .4byte gUnknown_2037F34 -_08079D50: .4byte 0x000006d1 -_08079D54: .4byte gUnknown_83C2BC0 -_08079D58: .4byte 0x000006d3 -_08079D5C: .4byte 0x000006ce - thumb_func_end weather_set - - thumb_func_start sub_8079D60 -sub_8079D60: @ 8079D60 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl PlayRainStoppingSoundEffect - ldr r0, _08079D84 @ =gUnknown_2037F34 - movs r2, 0xDA - lsls r2, 3 - adds r1, r0, r2 - strb r4, [r1] - ldr r1, _08079D88 @ =0x000006d1 - adds r0, r1 - strb r4, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08079D84: .4byte gUnknown_2037F34 -_08079D88: .4byte 0x000006d1 - thumb_func_end sub_8079D60 - - thumb_func_start sub_8079D8C -sub_8079D8C: @ 8079D8C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl PlayRainStoppingSoundEffect - ldr r1, _08079DB8 @ =gUnknown_2037F34 - 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 -_08079DB8: .4byte gUnknown_2037F34 - thumb_func_end sub_8079D8C - - thumb_func_start Task_WeatherInit -Task_WeatherInit: @ 8079DBC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _08079DFC @ =gUnknown_2037F34 - movs r1, 0xD9 - lsls r1, 3 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08079DF4 - ldr r1, _08079E00 @ =gUnknown_83C2BC0 - 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, _08079E04 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08079E08 @ =Task_WeatherMain - str r1, [r0] -_08079DF4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08079DFC: .4byte gUnknown_2037F34 -_08079E00: .4byte gUnknown_83C2BC0 -_08079E04: .4byte gTasks -_08079E08: .4byte Task_WeatherMain - thumb_func_end Task_WeatherInit - - thumb_func_start Task_WeatherMain -Task_WeatherMain: @ 8079E0C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _08079E68 @ =gUnknown_2037F34 - movs r0, 0xDA - lsls r0, 3 - adds r6, r5, r0 - ldr r1, _08079E6C @ =0x000006d1 - adds r7, r5, r1 - ldrb r0, [r6] - ldrb r2, [r7] - cmp r0, r2 - beq _08079E80 - ldr r0, _08079E70 @ =gUnknown_83C2BC0 - 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 _08079E90 - ldrb r0, [r7] - lsls r0, 4 - add r0, r8 - ldr r0, [r0] - bl _call_via_r0 - ldr r1, _08079E74 @ =0x000006c3 - adds r0, r5, r1 - strb r4, [r0] - ldr r2, _08079E78 @ =0x000006c6 - adds r0, r5, r2 - strb r4, [r0] - ldrb r0, [r7] - strb r0, [r6] - ldr r0, _08079E7C @ =0x000006d3 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] - b _08079E90 - .align 2, 0 -_08079E68: .4byte gUnknown_2037F34 -_08079E6C: .4byte 0x000006d1 -_08079E70: .4byte gUnknown_83C2BC0 -_08079E74: .4byte 0x000006c3 -_08079E78: .4byte 0x000006c6 -_08079E7C: .4byte 0x000006d3 -_08079E80: - ldr r0, _08079EB0 @ =gUnknown_83C2BC0 - ldrb r1, [r6] - lsls r1, 4 - adds r0, 0x4 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 -_08079E90: - ldr r1, _08079EB4 @ =gUnknown_83C2CB0 - ldr r0, _08079EB8 @ =gUnknown_2037F34 - ldr r2, _08079EBC @ =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 -_08079EB0: .4byte gUnknown_83C2BC0 -_08079EB4: .4byte gUnknown_83C2CB0 -_08079EB8: .4byte gUnknown_2037F34 -_08079EBC: .4byte 0x000006c6 - thumb_func_end Task_WeatherMain - - thumb_func_start sub_8079EC0 -sub_8079EC0: @ 8079EC0 - ldr r0, _08079ED4 @ =gUnknown_2037F34 - ldr r2, _08079ED8 @ =0x000006c1 - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r1, _08079EDC @ =0x000006c2 - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_08079ED4: .4byte gUnknown_2037F34 -_08079ED8: .4byte 0x000006c1 -_08079EDC: .4byte 0x000006c2 - thumb_func_end sub_8079EC0 - - thumb_func_start nullsub_45 -nullsub_45: @ 8079EE0 - bx lr - thumb_func_end nullsub_45 - - thumb_func_start sub_8079EE4 -sub_8079EE4: @ 8079EE4 - movs r0, 0 - bx lr - thumb_func_end sub_8079EE4 - - thumb_func_start sub_8079EE8 -sub_8079EE8: @ 8079EE8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _08079F28 @ =gUnknown_20386A4 - ldr r0, _08079F2C @ =gUnknown_83C2CC0 - str r0, [r1] - movs r0, 0 - mov r12, r0 - ldr r1, _08079F30 @ =gUnknown_2038394 - mov r10, r1 -_08079F00: - mov r7, r10 - mov r0, r12 - cmp r0, 0 - bne _08079F0C - ldr r1, _08079F34 @ =0xfffffda0 - adds r7, r1 -_08079F0C: - movs r5, 0 - movs r0, 0x1 - add r0, r12 - mov r9, r0 -_08079F14: - lsls r1, r5, 8 - lsls r0, r5, 24 - lsrs r2, r0, 16 - mov r0, r12 - cmp r0, 0 - bne _08079F38 - adds r0, r1, 0 - lsls r0, 12 - lsrs r4, r0, 16 - b _08079F3A - .align 2, 0 -_08079F28: .4byte gUnknown_20386A4 -_08079F2C: .4byte gUnknown_83C2CC0 -_08079F30: .4byte gUnknown_2038394 -_08079F34: .4byte 0xfffffda0 -_08079F38: - movs r4, 0 -_08079F3A: - movs r3, 0 - adds r1, r5, 0x1 - mov r8, r1 -_08079F40: - 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 _08079F40 - adds r6, r2, 0 - movs r0, 0xF8 - lsls r0, 5 - subs r0, r2 - cmp r0, 0 - bge _08079F68 - adds r0, 0xF -_08079F68: - lsls r0, 12 - lsrs r4, r0, 16 - cmp r5, 0xB - bhi _08079FB2 - cmp r3, 0x12 - bhi _08079FD8 -_08079F74: - 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 _08079F90 - lsrs r0, 31 - adds r0, r1, r0 - asrs r0, 1 - subs r0, r2, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_08079F90: - 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 _08079FA6 - movs r0, 0x1F - strb r0, [r1] -_08079FA6: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x12 - bls _08079F74 - b _08079FD8 -_08079FB2: - cmp r3, 0x12 - bhi _08079FD8 - movs r6, 0x1F -_08079FB8: - 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 _08079FCE - strb r6, [r0] -_08079FCE: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x12 - bls _08079FB8 -_08079FD8: - mov r1, r8 - lsls r0, r1, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _08079F14 - mov r1, r9 - lsls r0, r1, 16 - lsrs r0, 16 - mov r12, r0 - cmp r0, 0x1 - bls _08079F00 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8079EE8 - - thumb_func_start sub_8079FFC -sub_8079FFC: @ 8079FFC - push {r4-r7,lr} - ldr r0, _0807A028 @ =gUnknown_2037F34 - movs r1, 0xD8 - lsls r1, 3 - adds r4, r0, r1 - ldr r2, _0807A02C @ =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 _0807A034 - ldr r0, _0807A030 @ =0x000006c6 - adds r1, r3, r0 - movs r0, 0x3 - strb r0, [r1] - b _0807A07C - .align 2, 0 -_0807A028: .4byte gUnknown_2037F34 -_0807A02C: .4byte 0x000006c1 -_0807A030: .4byte 0x000006c6 -_0807A034: - ldr r1, _0807A05C @ =0x000006c3 - adds r2, r3, r1 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r7, _0807A060 @ =0x000006c2 - adds r1, r3, r7 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0807A07C - movs r0, 0 - strb r0, [r2] - mov r0, r12 - cmp r6, r5 - bge _0807A064 - adds r0, 0x1 - b _0807A068 - .align 2, 0 -_0807A05C: .4byte 0x000006c3 -_0807A060: .4byte 0x000006c2 -_0807A064: - mov r0, r12 - subs r0, 0x1 -_0807A068: - 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_807A294 -_0807A07C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8079FFC - - thumb_func_start sub_807A084 -sub_807A084: @ 807A084 - push {lr} - ldr r2, _0807A0BC @ =gUnknown_2037F34 - ldr r0, _0807A0C0 @ =0x000006cb - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0807A0A2 - ldr r3, _0807A0C4 @ =0x000006ca - adds r1, r2, r3 - movs r0, 0 - strb r0, [r1] -_0807A0A2: - movs r1, 0xDA - lsls r1, 3 - adds r0, r2, r1 - ldrb r0, [r0] - subs r0, 0x3 - cmp r0, 0xA - bhi _0807A16C - lsls r0, 2 - ldr r1, _0807A0C8 @ =_0807A0CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A0BC: .4byte gUnknown_2037F34 -_0807A0C0: .4byte 0x000006cb -_0807A0C4: .4byte 0x000006ca -_0807A0C8: .4byte _0807A0CC - .align 2, 0 -_0807A0CC: - .4byte _0807A0F8 - .4byte _0807A0F8 - .4byte _0807A0F8 - .4byte _0807A144 - .4byte _0807A16C - .4byte _0807A16C - .4byte _0807A16C - .4byte _0807A16C - .4byte _0807A0F8 - .4byte _0807A120 - .4byte _0807A0F8 -_0807A0F8: - bl sub_807A19C - lsls r0, 24 - cmp r0, 0 - bne _0807A18C - ldr r0, _0807A118 @ =gUnknown_2037F34 - movs r2, 0xD8 - lsls r2, 3 - adds r1, r0, r2 - movs r2, 0x3 - strb r2, [r1] - ldr r3, _0807A11C @ =0x000006c6 - adds r0, r3 - strb r2, [r0] - b _0807A18C - .align 2, 0 -_0807A118: .4byte gUnknown_2037F34 -_0807A11C: .4byte 0x000006c6 -_0807A120: - bl sub_807A1FC - lsls r0, 24 - cmp r0, 0 - bne _0807A18C - ldr r1, _0807A13C @ =gUnknown_2037F34 - movs r0, 0xD8 - lsls r0, 3 - adds r2, r1, r0 - movs r0, 0xFA - strb r0, [r2] - ldr r2, _0807A140 @ =0x000006c6 - adds r1, r2 - b _0807A188 - .align 2, 0 -_0807A13C: .4byte gUnknown_2037F34 -_0807A140: .4byte 0x000006c6 -_0807A144: - bl sub_807A254 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _0807A18C - ldr r0, _0807A164 @ =gUnknown_2037F34 - movs r3, 0xD8 - lsls r3, 3 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0807A168 @ =0x000006c6 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - b _0807A18C - .align 2, 0 -_0807A164: .4byte gUnknown_2037F34 -_0807A168: .4byte 0x000006c6 -_0807A16C: - ldr r0, _0807A190 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0807A18C - ldr r3, _0807A194 @ =0x000006c1 - adds r0, r2, r3 - ldrb r1, [r0] - subs r3, 0x1 - adds r0, r2, r3 - strb r1, [r0] - ldr r0, _0807A198 @ =0x000006c6 - adds r1, r2, r0 -_0807A188: - movs r0, 0x3 - strb r0, [r1] -_0807A18C: - pop {r0} - bx r0 - .align 2, 0 -_0807A190: .4byte gPaletteFade -_0807A194: .4byte 0x000006c1 -_0807A198: .4byte 0x000006c6 - thumb_func_end sub_807A084 - - thumb_func_start sub_807A19C -sub_807A19C: @ 807A19C - push {r4,lr} - sub sp, 0x4 - ldr r2, _0807A1D8 @ =gUnknown_2037F34 - ldr r0, _0807A1DC @ =0x000006c7 - adds r4, r2, r0 - ldrb r0, [r4] - cmp r0, 0x10 - beq _0807A1F2 - adds r1, r0, 0x1 - strb r1, [r4] - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _0807A1E4 - movs r3, 0x10 - subs r3, r1 - lsls r3, 24 - lsrs r3, 24 - ldr r1, _0807A1E0 @ =0x000006c4 - adds r0, r2, r1 - ldrh r0, [r0] - str r0, [sp] - movs r0, 0 - movs r1, 0x20 - movs r2, 0x3 - bl sub_807A3D0 - movs r0, 0x1 - b _0807A1F4 - .align 2, 0 -_0807A1D8: .4byte gUnknown_2037F34 -_0807A1DC: .4byte 0x000006c7 -_0807A1E0: .4byte 0x000006c4 -_0807A1E4: - movs r0, 0 - movs r1, 0x20 - movs r2, 0x3 - bl sub_807A294 - movs r0, 0x10 - strb r0, [r4] -_0807A1F2: - movs r0, 0 -_0807A1F4: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807A19C - - thumb_func_start sub_807A1FC -sub_807A1FC: @ 807A1FC - push {r4,lr} - ldr r2, _0807A230 @ =gUnknown_2037F34 - ldr r0, _0807A234 @ =0x000006c7 - adds r4, r2, r0 - ldrb r0, [r4] - cmp r0, 0x10 - beq _0807A24C - adds r3, r0, 0x1 - strb r3, [r4] - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _0807A23C - movs r0, 0x6 - negs r0, r0 - movs r1, 0x10 - subs r1, r3 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807A238 @ =0x000006c4 - adds r2, r3 - ldrh r2, [r2] - bl sub_807A518 - movs r0, 0x1 - b _0807A24E - .align 2, 0 -_0807A230: .4byte gUnknown_2037F34 -_0807A234: .4byte 0x000006c7 -_0807A238: .4byte 0x000006c4 -_0807A23C: - movs r2, 0x6 - negs r2, r2 - movs r0, 0 - movs r1, 0x20 - bl sub_807A294 - movs r0, 0x10 - strb r0, [r4] -_0807A24C: - movs r0, 0 -_0807A24E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807A1FC - - thumb_func_start sub_807A254 -sub_807A254: @ 807A254 - push {lr} - ldr r2, _0807A27C @ =gUnknown_2037F34 - ldr r1, _0807A280 @ =0x000006c7 - adds r0, r2, r1 - ldrb r1, [r0] - cmp r1, 0x10 - beq _0807A288 - adds r1, 0x1 - strb r1, [r0] - movs r0, 0x10 - subs r0, r1 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0807A284 @ =0x000006c4 - adds r1, r2, r3 - ldrh r1, [r1] - bl sub_807A5F8 - movs r0, 0x1 - b _0807A28A - .align 2, 0 -_0807A27C: .4byte gUnknown_2037F34 -_0807A280: .4byte 0x000006c7 -_0807A284: .4byte 0x000006c4 -_0807A288: - movs r0, 0 -_0807A28A: - pop {r1} - bx r1 - thumb_func_end sub_807A254 - - thumb_func_start nullsub_46 -nullsub_46: @ 807A290 - bx lr - thumb_func_end nullsub_46 - - thumb_func_start sub_807A294 -sub_807A294: @ 807A294 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - adds r4, r3, 0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - asrs r0, r2, 24 - cmp r0, 0 - ble _0807A3A0 - subs r0, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r6, r3, 4 - adds r0, r1, r3 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r4, r9 - bcs _0807A3B6 - lsls r0, r2, 24 - asrs r0, 19 - str r0, [sp] -_0807A2CE: - ldr r0, _0807A300 @ =gUnknown_20386A4 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807A30C - lsls r1, r6, 1 - ldr r0, _0807A304 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _0807A308 @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x8 - bl CpuFastSet - adds r0, r6, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - mov r0, r9 - lsls r0, 16 - mov r8, r0 - adds r4, 0x1 - mov r12, r4 - b _0807A38A - .align 2, 0 -_0807A300: .4byte gUnknown_20386A4 -_0807A304: .4byte gPlttBufferUnfaded -_0807A308: .4byte gPlttBufferFaded -_0807A30C: - cmp r0, 0x2 - beq _0807A320 - adds r1, r4, 0 - subs r1, 0x10 - ldr r2, _0807A324 @ =gUnknown_2037F34 - ldr r3, _0807A328 @ =0x000006d5 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _0807A330 -_0807A320: - ldr r0, _0807A32C @ =gUnknown_2038394 - b _0807A336 - .align 2, 0 -_0807A324: .4byte gUnknown_2037F34 -_0807A328: .4byte 0x000006d5 -_0807A32C: .4byte gUnknown_2038394 -_0807A330: - movs r3, 0x80 - lsls r3, 2 - adds r0, r2, r3 -_0807A336: - ldr r1, [sp] - adds r5, r1, r0 - movs r7, 0 - mov r3, r9 - lsls r3, 16 - mov r8, r3 - adds r4, 0x1 - mov r12, r4 - ldr r0, _0807A398 @ =gPlttBufferFaded - mov r10, r0 -_0807A34A: - adds r2, r6, 0 - lsls r0, r2, 1 - ldr r1, _0807A39C @ =gPlttBufferUnfaded - adds r0, r1 - ldr r1, [r0] - lsls r0, r1, 27 - lsrs r0, 27 - adds r0, r5, r0 - ldrb r4, [r0] - lsls r0, r1, 22 - lsrs r0, 27 - adds r0, r5, r0 - ldrb r3, [r0] - lsls r1, 17 - lsrs r1, 27 - adds r1, r5, r1 - ldrb r1, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r2, 1 - add r2, r10 - lsls r1, 10 - lsls r3, 5 - orrs r1, r3 - orrs r1, r4 - strh r1, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807A34A -_0807A38A: - mov r3, r12 - lsls r0, r3, 16 - lsrs r4, r0, 16 - cmp r0, r8 - bcc _0807A2CE - b _0807A3B6 - .align 2, 0 -_0807A398: .4byte gPlttBufferFaded -_0807A39C: .4byte gPlttBufferUnfaded -_0807A3A0: - cmp r0, 0 - blt _0807A3B6 - lsls r1, r4, 5 - ldr r0, _0807A3C8 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _0807A3CC @ =gPlttBufferFaded - adds r1, r2 - mov r3, r9 - lsls r2, r3, 3 - bl CpuFastSet -_0807A3B6: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A3C8: .4byte gPlttBufferUnfaded -_0807A3CC: .4byte gPlttBufferFaded - thumb_func_end sub_807A294 - - thumb_func_start sub_807A3D0 -sub_807A3D0: @ 807A3D0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r4, [sp, 0x34] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - mov r1, sp - strh r4, [r1] - ldr r1, [sp] - lsls r3, r1, 27 - lsrs r3, 27 - str r3, [sp, 0x4] - lsls r3, r1, 22 - lsrs r3, 27 - str r3, [sp, 0x8] - lsls r1, 17 - lsrs r1, 27 - str r1, [sp, 0xC] - lsls r6, r0, 4 - mov r3, r10 - adds r1, r3, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - movs r1, 0xFF - lsls r1, 24 - adds r2, r1 - lsrs r2, 24 - adds r4, r0, 0 - cmp r4, r10 - bcs _0807A4FC - lsls r0, r2, 24 - asrs r0, 19 - str r0, [sp, 0x10] -_0807A428: - ldr r0, _0807A458 @ =gUnknown_20386A4 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807A45C - mov r0, sp - ldrh r3, [r0] - adds r0, r6, 0 - movs r1, 0x10 - mov r2, r8 - bl BlendPalette - adds r0, r6, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - mov r3, r10 - lsls r3, 16 - mov r9, r3 - adds r4, 0x1 - mov r12, r4 - b _0807A4F2 - .align 2, 0 -_0807A458: .4byte gUnknown_20386A4 -_0807A45C: - cmp r0, 0x1 - bne _0807A46C - ldr r0, _0807A468 @ =gUnknown_2038134 - ldr r1, [sp, 0x10] - adds r5, r1, r0 - b _0807A472 - .align 2, 0 -_0807A468: .4byte gUnknown_2038134 -_0807A46C: - ldr r0, _0807A50C @ =gUnknown_2038394 - ldr r3, [sp, 0x10] - adds r5, r3, r0 -_0807A472: - movs r7, 0 - mov r0, r10 - lsls r0, 16 - mov r9, r0 - adds r4, 0x1 - mov r12, r4 -_0807A47E: - adds r4, r6, 0 - lsls r0, r4, 1 - ldr r1, _0807A510 @ =gPlttBufferUnfaded - adds r0, r1 - ldr r1, [r0] - lsls r0, r1, 27 - lsrs r0, 27 - adds r0, r5, r0 - ldrb r3, [r0] - lsls r0, r1, 22 - lsrs r0, 27 - adds r0, r5, r0 - ldrb r2, [r0] - lsls r1, 17 - lsrs r1, 27 - adds r1, r5, r1 - ldrb r1, [r1] - ldr r6, [sp, 0x4] - subs r0, r6, r3 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - asrs r0, 4 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - ldr r6, [sp, 0x8] - subs r0, r6, r2 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - asrs r0, 4 - adds r2, r0 - lsls r2, 24 - ldr r6, [sp, 0xC] - subs r0, r6, r1 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - asrs r0, 4 - adds r1, r0 - lsls r1, 24 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r4, 1 - ldr r0, _0807A514 @ =gPlttBufferFaded - adds r4, r0 - lsrs r1, 14 - lsrs r2, 19 - orrs r1, r2 - orrs r1, r3 - strh r1, [r4] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807A47E -_0807A4F2: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r0, r9 - bcc _0807A428 -_0807A4FC: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A50C: .4byte gUnknown_2038394 -_0807A510: .4byte gPlttBufferUnfaded -_0807A514: .4byte gPlttBufferFaded - thumb_func_end sub_807A3D0 - - thumb_func_start sub_807A518 -sub_807A518: @ 807A518 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r1, 24 - lsrs r6, r1, 24 - mov r0, sp - strh r2, [r0] - ldr r0, [sp] - lsls r1, r0, 27 - lsrs r1, 27 - str r1, [sp, 0x4] - lsls r1, r0, 22 - lsrs r1, 27 - mov r10, r1 - lsls r0, 17 - lsrs r0, 27 - mov r8, r0 - movs r5, 0 - movs r4, 0 -_0807A544: - ldr r0, _0807A56C @ =gUnknown_20386A4 - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807A570 - mov r0, sp - ldrh r3, [r0] - adds r0, r5, 0 - movs r1, 0x10 - adds r2, r6, 0 - bl BlendPalette - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - adds r4, 0x1 - mov r12, r4 - b _0807A5D4 - .align 2, 0 -_0807A56C: .4byte gUnknown_20386A4 -_0807A570: - movs r7, 0 - adds r4, 0x1 - mov r12, r4 - ldr r0, _0807A5F0 @ =gPlttBufferFaded - mov r9, r0 -_0807A57A: - adds r4, r5, 0 - lsls r0, r4, 1 - ldr r1, _0807A5F4 @ =gPlttBufferUnfaded - adds r0, r1 - ldr r1, [r0] - lsls r3, r1, 27 - lsrs r3, 27 - lsls r2, r1, 22 - lsrs r2, 27 - lsls r1, 17 - lsrs r1, 27 - ldr r5, [sp, 0x4] - subs r0, r5, r3 - muls r0, r6 - asrs r0, 4 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - mov r5, r10 - subs r0, r5, r2 - muls r0, r6 - asrs r0, 4 - adds r2, r0 - lsls r2, 24 - mov r5, r8 - subs r0, r5, r1 - muls r0, r6 - asrs r0, 4 - adds r1, r0 - lsls r1, 24 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r4, 1 - add r4, r9 - lsrs r1, 14 - lsrs r2, 19 - orrs r1, r2 - orrs r1, r3 - strh r1, [r4] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807A57A -_0807A5D4: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x1F - bls _0807A544 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A5F0: .4byte gPlttBufferFaded -_0807A5F4: .4byte gPlttBufferUnfaded - thumb_func_end sub_807A518 - - thumb_func_start sub_807A5F8 -sub_807A5F8: @ 807A5F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - adds r3, r1, 0 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r3, 16 - lsrs r3, 16 - mov r0, sp - strh r3, [r0] - movs r1, 0x80 - lsls r1, 1 - movs r0, 0 - adds r2, r7, 0 - bl BlendPalette - ldr r0, [sp] - lsls r1, r0, 27 - lsrs r1, 27 - str r1, [sp, 0x4] - lsls r1, r0, 22 - lsrs r1, 27 - str r1, [sp, 0x8] - lsls r0, 17 - lsrs r0, 27 - mov r10, r0 - movs r4, 0x10 -_0807A634: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_807A748 - lsls r0, 24 - cmp r0, 0 - beq _0807A6E4 - adds r0, r4, 0x1 - lsls r1, r0, 20 - lsrs r1, 16 - mov r12, r1 - lsls r1, r4, 20 - lsrs r6, r1, 16 - mov r9, r0 - cmp r6, r12 - bcs _0807A6F8 - movs r0, 0x1C - mov r8, r0 -_0807A658: - lsls r5, r6, 1 - ldr r0, _0807A6DC @ =gPlttBufferUnfaded - adds r0, r5, r0 - ldr r2, [r0] - lsls r4, r2, 27 - lsrs r4, 27 - lsls r3, r2, 22 - lsrs r3, 27 - lsls r2, 17 - lsrs r2, 27 - mov r0, r8 - subs r1, r0, r4 - lsls r0, r1, 1 - adds r0, r1 - asrs r0, 2 - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - movs r1, 0x1F - subs r1, r3 - lsls r0, r1, 1 - adds r0, r1 - asrs r0, 2 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - subs r1, r0, r2 - lsls r0, r1, 1 - adds r0, r1 - asrs r0, 2 - adds r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldr r1, [sp, 0x4] - subs r0, r1, r4 - muls r0, r7 - asrs r0, 4 - adds r4, r0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, [sp, 0x8] - subs r0, r1, r3 - muls r0, r7 - asrs r0, 4 - adds r3, r0 - lsls r3, 24 - mov r1, r10 - subs r0, r1, r2 - muls r0, r7 - asrs r0, 4 - adds r2, r0 - lsls r2, 24 - ldr r0, _0807A6E0 @ =gPlttBufferFaded - adds r5, r0 - lsrs r2, 14 - lsrs r3, 19 - orrs r2, r3 - orrs r2, r4 - strh r2, [r5] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r12 - bcc _0807A658 - b _0807A6F8 - .align 2, 0 -_0807A6DC: .4byte gPlttBufferUnfaded -_0807A6E0: .4byte gPlttBufferFaded -_0807A6E4: - lsls r0, r4, 20 - lsrs r0, 16 - mov r1, sp - ldrh r3, [r1] - movs r1, 0x10 - adds r2, r7, 0 - bl BlendPalette - adds r4, 0x1 - mov r9, r4 -_0807A6F8: - mov r1, r9 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x1F - bls _0807A634 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807A5F8 - - thumb_func_start sub_807A714 -sub_807A714: @ 807A714 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _0807A73C @ =gUnknown_2037F34 - ldr r0, _0807A740 @ =0x000006fa - adds r1, r3, r0 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _0807A736 - ldr r4, _0807A744 @ =0x000006f4 - adds r0, r3, r4 - ldrb r3, [r1] - adds r0, r3 - strb r2, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0807A736: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807A73C: .4byte gUnknown_2037F34 -_0807A740: .4byte 0x000006fa -_0807A744: .4byte 0x000006f4 - thumb_func_end sub_807A714 - - thumb_func_start sub_807A748 -sub_807A748: @ 807A748 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r1, 0 - ldr r2, _0807A770 @ =gUnknown_2037F34 - ldr r4, _0807A774 @ =0x000006fa - adds r0, r2, r4 - ldrb r0, [r0] - cmp r1, r0 - bcs _0807A786 - ldr r5, _0807A778 @ =0x000006f4 - adds r4, r2, r5 - adds r2, r0, 0 -_0807A762: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _0807A77C - movs r0, 0x1 - b _0807A788 - .align 2, 0 -_0807A770: .4byte gUnknown_2037F34 -_0807A774: .4byte 0x000006fa -_0807A778: .4byte 0x000006f4 -_0807A77C: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _0807A762 -_0807A786: - movs r0, 0 -_0807A788: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807A748 - - thumb_func_start sub_807A790 -sub_807A790: @ 807A790 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0807A7BC @ =gUnknown_2037F34 - ldr r1, _0807A7C0 @ =0x000006c6 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0807A7B6 - lsls r2, r4, 24 - asrs r2, 24 - movs r0, 0 - movs r1, 0x20 - bl sub_807A294 - movs r1, 0xD8 - lsls r1, 3 - adds r0, r5, r1 - strb r4, [r0] -_0807A7B6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A7BC: .4byte gUnknown_2037F34 -_0807A7C0: .4byte 0x000006c6 - thumb_func_end sub_807A790 - - thumb_func_start sub_807A7C4 -sub_807A7C4: @ 807A7C4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r3, _0807A80C @ =gUnknown_2037F34 - ldr r0, _0807A810 @ =0x000006c6 - adds r2, r3, r0 - ldrb r0, [r2] - cmp r0, 0x3 - bne _0807A804 - movs r1, 0 - strb r1, [r2] - movs r2, 0xD8 - lsls r2, 3 - adds r0, r3, r2 - strb r4, [r0] - adds r2, 0x1 - adds r0, r3, r2 - strb r5, [r0] - adds r2, 0x2 - adds r0, r3, r2 - strb r1, [r0] - ldr r1, _0807A814 @ =0x000006c2 - adds r0, r3, r1 - strb r6, [r0] - lsls r0, r4, 24 - asrs r0, 24 - bl sub_807A790 -_0807A804: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A80C: .4byte gUnknown_2037F34 -_0807A810: .4byte 0x000006c6 -_0807A814: .4byte 0x000006c2 - thumb_func_end sub_807A7C4 - - thumb_func_start FadeScreen -FadeScreen: @ 807A818 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0x1 - beq _0807A850 - cmp r0, 0x1 - bgt _0807A834 - cmp r0, 0 - beq _0807A83E - b _0807A92C -_0807A834: - cmp r2, 0x2 - beq _0807A844 - cmp r2, 0x3 - beq _0807A854 - b _0807A92C -_0807A83E: - movs r4, 0 - movs r1, 0 - b _0807A858 -_0807A844: - ldr r4, _0807A84C @ =0x0000ffff - movs r1, 0 - b _0807A858 - .align 2, 0 -_0807A84C: .4byte 0x0000ffff -_0807A850: - movs r4, 0 - b _0807A856 -_0807A854: - ldr r4, _0807A878 @ =0x0000ffff -_0807A856: - movs r1, 0x1 -_0807A858: - ldr r0, _0807A87C @ =gUnknown_2037F34 - movs r2, 0xDA - lsls r2, 3 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x3 - blt _0807A880 - cmp r0, 0x6 - ble _0807A872 - cmp r0, 0xD - bgt _0807A880 - cmp r0, 0xB - blt _0807A880 -_0807A872: - movs r2, 0x1 - b _0807A882 - .align 2, 0 -_0807A878: .4byte 0x0000ffff -_0807A87C: .4byte gUnknown_2037F34 -_0807A880: - movs r2, 0 -_0807A882: - cmp r1, 0 - beq _0807A8C4 - cmp r2, 0 - beq _0807A896 - ldr r0, _0807A8B4 @ =gPlttBufferFaded - ldr r1, _0807A8B8 @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet -_0807A896: - movs r0, 0x1 - negs r0, r0 - lsls r1, r5, 24 - asrs r1, 24 - str r4, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0807A8BC @ =gUnknown_2037F34 - ldr r3, _0807A8C0 @ =0x000006c6 - adds r0, r3 - movs r1, 0x2 - strb r1, [r0] - b _0807A92C - .align 2, 0 -_0807A8B4: .4byte gPlttBufferFaded -_0807A8B8: .4byte gPlttBufferUnfaded -_0807A8BC: .4byte gUnknown_2037F34 -_0807A8C0: .4byte 0x000006c6 -_0807A8C4: - ldr r1, _0807A8DC @ =gUnknown_2037F34 - ldr r3, _0807A8E0 @ =0x000006c4 - adds r0, r1, r3 - strh r4, [r0] - cmp r2, 0 - beq _0807A8E8 - ldr r0, _0807A8E4 @ =0x000006c7 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - b _0807A8FA - .align 2, 0 -_0807A8DC: .4byte gUnknown_2037F34 -_0807A8E0: .4byte 0x000006c4 -_0807A8E4: .4byte 0x000006c7 -_0807A8E8: - movs r0, 0x1 - negs r0, r0 - lsls r1, r5, 24 - asrs r1, 24 - str r4, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0807A8FA: - ldr r4, _0807A934 @ =gUnknown_2037F34 - ldr r1, _0807A938 @ =0x000006c6 - adds r0, r4, r1 - movs r1, 0 - movs r5, 0x1 - strb r5, [r0] - ldr r2, _0807A93C @ =0x000006ca - adds r0, r4, r2 - strb r5, [r0] - ldr r3, _0807A940 @ =0x000006cb - adds r0, r4, r3 - strb r1, [r0] - movs r1, 0xE6 - lsls r1, 3 - adds r0, r4, r1 - ldrb r0, [r0] - adds r2, 0x68 - adds r1, r4, r2 - ldrb r1, [r1] - bl Weather_SetBlendCoeffs - movs r3, 0xD9 - lsls r3, 3 - adds r4, r3 - strb r5, [r4] -_0807A92C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A934: .4byte gUnknown_2037F34 -_0807A938: .4byte 0x000006c6 -_0807A93C: .4byte 0x000006ca -_0807A940: .4byte 0x000006cb - thumb_func_end FadeScreen - - thumb_func_start FieldWeather_StartFadingOutCreditsMap -FieldWeather_StartFadingOutCreditsMap: @ 807A944 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0x1 - beq _0807A97C - cmp r0, 0x1 - bgt _0807A962 - cmp r0, 0 - beq _0807A96C - b _0807AA56 -_0807A962: - cmp r2, 0x2 - beq _0807A972 - cmp r2, 0x3 - beq _0807A980 - b _0807AA56 -_0807A96C: - movs r4, 0 - movs r1, 0 - b _0807A984 -_0807A972: - ldr r4, _0807A978 @ =0x0000ffff - movs r1, 0 - b _0807A984 - .align 2, 0 -_0807A978: .4byte 0x0000ffff -_0807A97C: - movs r4, 0 - b _0807A982 -_0807A980: - ldr r4, _0807A9A4 @ =0x0000ffff -_0807A982: - movs r1, 0x1 -_0807A984: - ldr r0, _0807A9A8 @ =gUnknown_2037F34 - movs r2, 0xDA - lsls r2, 3 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x3 - blt _0807A9AC - cmp r0, 0x6 - ble _0807A99E - cmp r0, 0xD - bgt _0807A9AC - cmp r0, 0xB - blt _0807A9AC -_0807A99E: - movs r2, 0x1 - b _0807A9AE - .align 2, 0 -_0807A9A4: .4byte 0x0000ffff -_0807A9A8: .4byte gUnknown_2037F34 -_0807A9AC: - movs r2, 0 -_0807A9AE: - cmp r1, 0 - beq _0807A9F0 - cmp r2, 0 - beq _0807A9C2 - ldr r0, _0807A9E0 @ =gPlttBufferFaded - ldr r1, _0807A9E4 @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet -_0807A9C2: - lsls r1, r5, 24 - asrs r1, 24 - str r4, [sp] - adds r0, r6, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0807A9E8 @ =gUnknown_2037F34 - ldr r3, _0807A9EC @ =0x000006c6 - adds r0, r3 - movs r1, 0x2 - strb r1, [r0] - b _0807AA56 - .align 2, 0 -_0807A9E0: .4byte gPlttBufferFaded -_0807A9E4: .4byte gPlttBufferUnfaded -_0807A9E8: .4byte gUnknown_2037F34 -_0807A9EC: .4byte 0x000006c6 -_0807A9F0: - ldr r1, _0807AA08 @ =gUnknown_2037F34 - ldr r3, _0807AA0C @ =0x000006c4 - adds r0, r1, r3 - strh r4, [r0] - cmp r2, 0 - beq _0807AA14 - ldr r0, _0807AA10 @ =0x000006c7 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - b _0807AA24 - .align 2, 0 -_0807AA08: .4byte gUnknown_2037F34 -_0807AA0C: .4byte 0x000006c4 -_0807AA10: .4byte 0x000006c7 -_0807AA14: - lsls r1, r5, 24 - asrs r1, 24 - str r4, [sp] - adds r0, r6, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0807AA24: - ldr r4, _0807AA60 @ =gUnknown_2037F34 - ldr r1, _0807AA64 @ =0x000006c6 - adds r0, r4, r1 - movs r1, 0 - movs r5, 0x1 - strb r5, [r0] - ldr r2, _0807AA68 @ =0x000006ca - adds r0, r4, r2 - strb r5, [r0] - ldr r3, _0807AA6C @ =0x000006cb - adds r0, r4, r3 - strb r1, [r0] - movs r1, 0xE6 - lsls r1, 3 - adds r0, r4, r1 - ldrb r0, [r0] - adds r2, 0x68 - adds r1, r4, r2 - ldrb r1, [r1] - bl Weather_SetBlendCoeffs - movs r3, 0xD9 - lsls r3, 3 - adds r4, r3 - strb r5, [r4] -_0807AA56: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807AA60: .4byte gUnknown_2037F34 -_0807AA64: .4byte 0x000006c6 -_0807AA68: .4byte 0x000006ca -_0807AA6C: .4byte 0x000006cb - thumb_func_end FieldWeather_StartFadingOutCreditsMap - - thumb_func_start IsWeatherNotFadingIn -IsWeatherNotFadingIn: @ 807AA70 - ldr r0, _0807AA84 @ =gUnknown_2037F34 - ldr r1, _0807AA88 @ =0x000006c6 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bx lr - .align 2, 0 -_0807AA84: .4byte gUnknown_2037F34 -_0807AA88: .4byte 0x000006c6 - thumb_func_end IsWeatherNotFadingIn - - thumb_func_start UpdateSpritePaletteWithWeather -UpdateSpritePaletteWithWeather: @ 807AA8C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 8 - movs r1, 0x80 - lsls r1, 13 - adds r0, r1 - lsrs r4, r0, 16 - ldr r5, _0807AACC @ =gUnknown_2037F34 - ldr r2, _0807AAD0 @ =0x000006c6 - adds r0, r5, r2 - ldrb r0, [r0] - adds r1, r5, 0 - cmp r0, 0x1 - beq _0807AAD4 - cmp r0, 0x2 - beq _0807AB20 - adds r2, 0xA - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x6 - beq _0807AB58 - lsls r0, r4, 24 - lsrs r0, 24 - subs r2, 0x10 - adds r1, r2 - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x1 - bl sub_807A294 - b _0807AB68 - .align 2, 0 -_0807AACC: .4byte gUnknown_2037F34 -_0807AAD0: .4byte 0x000006c6 -_0807AAD4: - ldr r2, _0807AB14 @ =0x000006ca - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807AB68 - adds r2, 0x6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0807AAF0 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_807A714 -_0807AAF0: - lsls r0, r4, 20 - lsrs r4, r0, 16 - movs r2, 0 - ldr r6, _0807AB18 @ =gPlttBufferFaded - ldr r0, _0807AB1C @ =0x000006c4 - adds r3, r5, r0 -_0807AAFC: - adds r0, r4, r2 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r3] - strh r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _0807AAFC - b _0807AB68 - .align 2, 0 -_0807AB14: .4byte 0x000006ca -_0807AB18: .4byte gPlttBufferFaded -_0807AB1C: .4byte 0x000006c4 -_0807AB20: - lsls r0, r4, 20 - lsrs r4, r0, 16 - lsls r1, r4, 1 - ldr r0, _0807AB4C @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _0807AB50 @ =gPlttBufferUnfaded - adds r1, r2 - movs r2, 0x8 - bl CpuFastSet - ldr r0, _0807AB54 @ =gPaletteFade - ldrh r2, [r0, 0x4] - lsls r2, 21 - lsrs r2, 27 - ldrh r3, [r0, 0x6] - lsls r3, 17 - lsrs r3, 17 - adds r0, r4, 0 - movs r1, 0x10 - bl BlendPalette - b _0807AB68 - .align 2, 0 -_0807AB4C: .4byte gPlttBufferFaded -_0807AB50: .4byte gPlttBufferUnfaded -_0807AB54: .4byte gPaletteFade -_0807AB58: - lsls r0, r4, 20 - lsrs r4, r0, 16 - ldr r3, _0807AB70 @ =0x000073fc - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0xC - bl BlendPalette -_0807AB68: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807AB70: .4byte 0x000073fc - thumb_func_end UpdateSpritePaletteWithWeather - - thumb_func_start sub_807AB74 -sub_807AB74: @ 807AB74 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0807AB90 @ =gUnknown_2037F34 - movs r2, 0xD8 - lsls r2, 3 - adds r1, r2 - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x1 - bl sub_807A294 - pop {r0} - bx r0 - .align 2, 0 -_0807AB90: .4byte gUnknown_2037F34 - thumb_func_end sub_807AB74 - - thumb_func_start sub_807AB94 -sub_807AB94: @ 807AB94 - push {lr} - ldr r1, _0807ABA8 @ =gUnknown_2037F34 - ldr r2, _0807ABAC @ =0x000006c6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807ABB0 - movs r0, 0 - b _0807ABB6 - .align 2, 0 -_0807ABA8: .4byte gUnknown_2037F34 -_0807ABAC: .4byte 0x000006c6 -_0807ABB0: - ldr r2, _0807ABBC @ =0x000006ca - adds r0, r1, r2 - ldrb r0, [r0] -_0807ABB6: - pop {r1} - bx r1 - .align 2, 0 -_0807ABBC: .4byte 0x000006ca - thumb_func_end sub_807AB94 - - thumb_func_start sub_807ABC0 -sub_807ABC0: @ 807ABC0 - push {r4,lr} - ldr r4, _0807ABE8 @ =gUnknown_2037F34 - ldr r1, _0807ABEC @ =0x000006d4 - adds r4, r1 - ldrb r1, [r4] - lsls r1, 20 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl LoadPalette - ldrb r0, [r4] - bl UpdateSpritePaletteWithWeather - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807ABE8: .4byte gUnknown_2037F34 -_0807ABEC: .4byte 0x000006d4 - thumb_func_end sub_807ABC0 - - thumb_func_start nullsub_47 -nullsub_47: @ 807ABF0 - bx lr - thumb_func_end nullsub_47 - - thumb_func_start sub_807ABF4 -sub_807ABF4: @ 807ABF4 - ldr r0, _0807AC08 @ =gUnknown_2037F34 - ldr r2, _0807AC0C @ =0x0000074d - adds r1, r0, r2 - movs r2, 0x1 - strb r2, [r1] - ldr r1, _0807AC10 @ =0x0000074e - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_0807AC08: .4byte gUnknown_2037F34 -_0807AC0C: .4byte 0x0000074d -_0807AC10: .4byte 0x0000074e - thumb_func_end sub_807ABF4 - - thumb_func_start sub_807AC14 -sub_807AC14: @ 807AC14 - push {r4,lr} - ldr r1, _0807AC3C @ =gUnknown_2037F34 - ldr r0, _0807AC40 @ =0x0000074d - adds r4, r1, r0 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1F - bgt _0807AC48 - ldr r0, _0807AC44 @ =0x0000074e - adds r1, r0 - adds r0, r4, 0 - bl nullsub_47 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1F - bgt _0807AC48 - movs r0, 0x1 - b _0807AC4A - .align 2, 0 -_0807AC3C: .4byte gUnknown_2037F34 -_0807AC40: .4byte 0x0000074d -_0807AC44: .4byte 0x0000074e -_0807AC48: - movs r0, 0 -_0807AC4A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807AC14 - - thumb_func_start sub_807AC50 -sub_807AC50: @ 807AC50 - push {lr} - lsls r0, 24 - asrs r0, 24 - mvns r0, r0 - bl sub_807A790 - pop {r0} - bx r0 - thumb_func_end sub_807AC50 - - thumb_func_start sub_807AC60 -sub_807AC60: @ 807AC60 - ldr r1, _0807AC88 @ =gUnknown_2037F34 - ldr r2, _0807AC8C @ =0x0000073c - adds r0, r1, r2 - movs r2, 0 - strh r2, [r0] - movs r3, 0xE8 - lsls r3, 3 - adds r0, r1, r3 - strh r2, [r0] - adds r3, 0x2 - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _0807AC90 @ =0x0000073e - adds r1, r0 - strh r2, [r1] - ldr r1, _0807AC94 @ =gUnknown_20386A8 - movs r0, 0x5 - strh r0, [r1] - bx lr - .align 2, 0 -_0807AC88: .4byte gUnknown_2037F34 -_0807AC8C: .4byte 0x0000073c -_0807AC90: .4byte 0x0000073e -_0807AC94: .4byte gUnknown_20386A8 - thumb_func_end sub_807AC60 - - thumb_func_start sub_807AC98 -sub_807AC98: @ 807AC98 - push {r4-r7,lr} - ldr r5, _0807ACB4 @ =gUnknown_2037F34 - ldr r0, _0807ACB8 @ =0x00000742 - adds r7, r5, r0 - movs r1, 0 - ldrsh r2, [r7, r1] - cmp r2, 0x1 - beq _0807AD14 - cmp r2, 0x1 - bgt _0807ACBC - cmp r2, 0 - beq _0807ACC2 - b _0807ADA0 - .align 2, 0 -_0807ACB4: .4byte gUnknown_2037F34 -_0807ACB8: .4byte 0x00000742 -_0807ACBC: - cmp r2, 0x2 - beq _0807AD68 - b _0807ADA0 -_0807ACC2: - movs r3, 0xE8 - lsls r3, 3 - adds r6, r5, r3 - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - lsls r0, 16 - asrs r0, 16 - ldr r1, _0807AD08 @ =gUnknown_20386A8 - ldrh r1, [r1] - cmp r0, r1 - ble _0807ADA0 - strh r2, [r6] - ldr r0, _0807AD0C @ =0x0000073c - adds r4, r5, r0 - ldrh r0, [r4] - adds r1, r0, 0x1 - strh r1, [r4] - lsls r0, 24 - asrs r0, 24 - bl sub_807AC50 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x5 - ble _0807ADA0 - ldr r3, _0807AD10 @ =0x0000073e - adds r0, r5, r3 - strh r1, [r0] - movs r0, 0x1 - strh r0, [r7] - movs r0, 0x3C - strh r0, [r6] - b _0807ADA0 - .align 2, 0 -_0807AD08: .4byte gUnknown_20386A8 -_0807AD0C: .4byte 0x0000073c -_0807AD10: .4byte 0x0000073e -_0807AD14: - movs r0, 0xE8 - lsls r0, 3 - adds r2, r5, r0 - ldrh r0, [r2] - adds r0, 0x3 - movs r1, 0x7F - ands r0, r1 - strh r0, [r2] - ldr r1, _0807AD5C @ =gSineTable - movs r3, 0 - ldrsh r0, [r2, r3] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r0, 0x1 - asrs r0, 6 - adds r0, 0x2 - ldr r2, _0807AD60 @ =0x0000073c - adds r6, r5, r2 - adds r2, r0, 0 - strh r0, [r6] - ldr r3, _0807AD64 @ =0x0000073e - adds r4, r5, r3 - movs r3, 0 - ldrsh r1, [r4, r3] - cmp r0, r1 - beq _0807AD54 - lsls r0, r2, 24 - asrs r0, 24 - bl sub_807AC50 -_0807AD54: - ldrh r0, [r6] - strh r0, [r4] - b _0807ADA0 - .align 2, 0 -_0807AD5C: .4byte gSineTable -_0807AD60: .4byte 0x0000073c -_0807AD64: .4byte 0x0000073e -_0807AD68: - movs r0, 0xE8 - lsls r0, 3 - adds r2, r5, r0 - ldrh r0, [r2] - adds r0, 0x1 - movs r6, 0 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - ldr r1, _0807ADA8 @ =gUnknown_20386A8 - ldrh r1, [r1] - cmp r0, r1 - ble _0807ADA0 - strh r6, [r2] - ldr r1, _0807ADAC @ =0x0000073c - adds r4, r5, r1 - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - lsls r0, 24 - asrs r0, 24 - bl sub_807AC50 - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bne _0807ADA0 - strh r6, [r7] -_0807ADA0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807ADA8: .4byte gUnknown_20386A8 -_0807ADAC: .4byte 0x0000073c - thumb_func_end sub_807AC98 - - thumb_func_start Weather_SetBlendCoeffs -Weather_SetBlendCoeffs: @ 807ADB0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807ADE8 @ =gUnknown_2037F34 - movs r4, 0xE6 - lsls r4, 3 - adds r2, r3, r4 - strh r0, [r2] - adds r4, 0x2 - adds r2, r3, r4 - strh r1, [r2] - adds r4, 0x2 - adds r2, r3, r4 - strh r0, [r2] - ldr r2, _0807ADEC @ =0x00000736 - adds r3, r2 - strh r1, [r3] - lsls r1, 8 - orrs r1, r0 - movs r0, 0x52 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807ADE8: .4byte gUnknown_2037F34 -_0807ADEC: .4byte 0x00000736 - thumb_func_end Weather_SetBlendCoeffs - - thumb_func_start Weather_SetTargetBlendCoeffs -Weather_SetTargetBlendCoeffs: @ 807ADF0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807AE24 @ =gUnknown_2037F34 - ldr r5, _0807AE28 @ =0x00000734 - adds r4, r3, r5 - movs r5, 0 - strh r0, [r4] - ldr r4, _0807AE2C @ =0x00000736 - adds r0, r3, r4 - strh r1, [r0] - ldr r1, _0807AE30 @ =0x0000073a - adds r0, r3, r1 - strb r2, [r0] - adds r4, 0x3 - adds r0, r3, r4 - strb r5, [r0] - movs r0, 0xE7 - lsls r0, 3 - adds r3, r0 - strb r5, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807AE24: .4byte gUnknown_2037F34 -_0807AE28: .4byte 0x00000734 -_0807AE2C: .4byte 0x00000736 -_0807AE30: .4byte 0x0000073a - thumb_func_end Weather_SetTargetBlendCoeffs - - thumb_func_start Weather_UpdateBlend -Weather_UpdateBlend: @ 807AE34 - push {r4-r6,lr} - ldr r0, _0807AE8C @ =gUnknown_2037F34 - movs r1, 0xE6 - lsls r1, 3 - adds r3, r0, r1 - ldr r2, [r3] - ldr r6, _0807AE90 @ =0x00000734 - adds r4, r0, r6 - ldr r1, [r4] - adds r5, r0, 0 - cmp r2, r1 - beq _0807AEF8 - ldr r0, _0807AE94 @ =0x00000739 - adds r2, r5, r0 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r6, _0807AE98 @ =0x0000073a - adds r1, r5, r6 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bls _0807AEC4 - movs r0, 0 - strb r0, [r2] - movs r0, 0xE7 - lsls r0, 3 - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807AE9C - ldrh r1, [r3] - adds r2, r1, 0 - ldrh r0, [r4] - cmp r2, r0 - bcs _0807AEBC - adds r0, r1, 0x1 - b _0807AEC2 - .align 2, 0 -_0807AE8C: .4byte gUnknown_2037F34 -_0807AE90: .4byte 0x00000734 -_0807AE94: .4byte 0x00000739 -_0807AE98: .4byte 0x0000073a -_0807AE9C: - ldr r1, _0807AEB4 @ =0x00000732 - adds r3, r5, r1 - ldr r2, _0807AEB8 @ =0x00000736 - adds r0, r5, r2 - ldrh r1, [r3] - adds r2, r1, 0 - ldrh r0, [r0] - cmp r2, r0 - bcs _0807AEBC - adds r0, r1, 0x1 - b _0807AEC2 - .align 2, 0 -_0807AEB4: .4byte 0x00000732 -_0807AEB8: .4byte 0x00000736 -_0807AEBC: - cmp r2, r0 - bls _0807AEC4 - subs r0, r1, 0x1 -_0807AEC2: - strh r0, [r3] -_0807AEC4: - ldr r6, _0807AEF0 @ =0x00000732 - adds r0, r5, r6 - ldrh r1, [r0] - lsls r1, 8 - movs r0, 0xE6 - lsls r0, 3 - adds r4, r5, r0 - ldrh r0, [r4] - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x52 - bl SetGpuReg - ldr r1, [r4] - ldr r2, _0807AEF4 @ =0x00000734 - adds r0, r5, r2 - ldr r0, [r0] - cmp r1, r0 - beq _0807AEF8 - movs r0, 0 - b _0807AEFA - .align 2, 0 -_0807AEF0: .4byte 0x00000732 -_0807AEF4: .4byte 0x00000734 -_0807AEF8: - movs r0, 0x1 -_0807AEFA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end Weather_UpdateBlend - - thumb_func_start sub_807AF00 -sub_807AF00: @ 807AF00 - push {lr} - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x9 - bhi _0807AF92 - lsls r0, 2 - ldr r1, _0807AF18 @ =_0807AF1C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807AF18: .4byte _0807AF1C - .align 2, 0 -_0807AF1C: - .4byte _0807AF44 - .4byte _0807AF4C - .4byte _0807AF54 - .4byte _0807AF5C - .4byte _0807AF64 - .4byte _0807AF6C - .4byte _0807AF74 - .4byte _0807AF7C - .4byte _0807AF84 - .4byte _0807AF8C -_0807AF44: - movs r0, 0x1 - bl SetWeather - b _0807AF92 -_0807AF4C: - movs r0, 0x2 - bl SetWeather - b _0807AF92 -_0807AF54: - movs r0, 0x3 - bl SetWeather - b _0807AF92 -_0807AF5C: - movs r0, 0x4 - bl SetWeather - b _0807AF92 -_0807AF64: - movs r0, 0x5 - bl SetWeather - b _0807AF92 -_0807AF6C: - movs r0, 0x6 - bl SetWeather - b _0807AF92 -_0807AF74: - movs r0, 0x9 - bl SetWeather - b _0807AF92 -_0807AF7C: - movs r0, 0x7 - bl SetWeather - b _0807AF92 -_0807AF84: - movs r0, 0x8 - bl SetWeather - b _0807AF92 -_0807AF8C: - movs r0, 0xB - bl SetWeather -_0807AF92: - pop {r0} - bx r0 - thumb_func_end sub_807AF00 - - thumb_func_start GetCurrentWeather -GetCurrentWeather: @ 807AF98 - ldr r0, _0807AFA4 @ =gUnknown_2037F34 - movs r1, 0xDA - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0807AFA4: .4byte gUnknown_2037F34 - thumb_func_end GetCurrentWeather - - thumb_func_start SetRainStrengthFromSoundEffect -SetRainStrengthFromSoundEffect: @ 807AFA8 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r1, _0807AFC8 @ =gUnknown_2037F34 - ldr r3, _0807AFCC @ =0x000006c6 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0807AFFA - cmp r2, 0x4C - beq _0807AFE0 - cmp r2, 0x4C - bgt _0807AFD0 - cmp r2, 0x4A - beq _0807AFEC - b _0807AFFA - .align 2, 0 -_0807AFC8: .4byte gUnknown_2037F34 -_0807AFCC: .4byte 0x000006c6 -_0807AFD0: - cmp r2, 0x4E - bne _0807AFFA - ldr r0, _0807AFDC @ =0x000006dd - adds r1, r0 - movs r0, 0 - b _0807AFF2 - .align 2, 0 -_0807AFDC: .4byte 0x000006dd -_0807AFE0: - ldr r3, _0807AFE8 @ =0x000006dd - adds r1, r3 - movs r0, 0x1 - b _0807AFF2 - .align 2, 0 -_0807AFE8: .4byte 0x000006dd -_0807AFEC: - ldr r0, _0807B000 @ =0x000006dd - adds r1, r0 - movs r0, 0x2 -_0807AFF2: - strb r0, [r1] - adds r0, r2, 0 - bl PlaySE -_0807AFFA: - pop {r0} - bx r0 - .align 2, 0 -_0807B000: .4byte 0x000006dd - thumb_func_end SetRainStrengthFromSoundEffect - - thumb_func_start PlayRainStoppingSoundEffect -PlayRainStoppingSoundEffect: @ 807B004 - push {lr} - bl IsSpecialSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _0807B042 - ldr r0, _0807B02C @ =gUnknown_2037F34 - ldr r1, _0807B030 @ =0x000006dd - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807B034 - cmp r0, 0x1 - bgt _0807B03C - cmp r0, 0 - bne _0807B03C - movs r0, 0x4F - bl PlaySE - b _0807B042 - .align 2, 0 -_0807B02C: .4byte gUnknown_2037F34 -_0807B030: .4byte 0x000006dd -_0807B034: - movs r0, 0x4D - bl PlaySE - b _0807B042 -_0807B03C: - movs r0, 0x4B - bl PlaySE -_0807B042: - pop {r0} - bx r0 - thumb_func_end PlayRainStoppingSoundEffect - - thumb_func_start sub_807B048 -sub_807B048: @ 807B048 - ldr r0, _0807B054 @ =gUnknown_2037F34 - ldr r1, _0807B058 @ =0x000006d3 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0807B054: .4byte gUnknown_2037F34 -_0807B058: .4byte 0x000006d3 - thumb_func_end sub_807B048 - - thumb_func_start SetWeatherScreenFadeOut -SetWeatherScreenFadeOut: @ 807B05C - ldr r0, _0807B068 @ =gUnknown_2037F34 - ldr r1, _0807B06C @ =0x000006c6 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - bx lr - .align 2, 0 -_0807B068: .4byte gUnknown_2037F34 -_0807B06C: .4byte 0x000006c6 - thumb_func_end SetWeatherScreenFadeOut - - thumb_func_start sub_807B070 -sub_807B070: @ 807B070 - ldr r0, _0807B07C @ =gUnknown_2037F34 - ldr r1, _0807B080 @ =0x000006c6 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - bx lr - .align 2, 0 -_0807B07C: .4byte gUnknown_2037F34 -_0807B080: .4byte 0x000006c6 - thumb_func_end sub_807B070 - - thumb_func_start PreservePaletteInWeather -PreservePaletteInWeather: @ 807B084 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0807B0A8 @ =gUnknown_83C2CC0 - ldr r5, _0807B0AC @ =gUnknown_2038684 - adds r1, r5, 0 - movs r2, 0x10 - bl CpuSet - adds r4, r5 - movs r0, 0 - strb r0, [r4] - ldr r0, _0807B0B0 @ =gUnknown_20386A4 - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807B0A8: .4byte gUnknown_83C2CC0 -_0807B0AC: .4byte gUnknown_2038684 -_0807B0B0: .4byte gUnknown_20386A4 - thumb_func_end PreservePaletteInWeather - - thumb_func_start ResetPreservedPalettesInWeather -ResetPreservedPalettesInWeather: @ 807B0B4 - ldr r1, _0807B0BC @ =gUnknown_20386A4 - ldr r0, _0807B0C0 @ =gUnknown_83C2CC0 - str r0, [r1] - bx lr - .align 2, 0 -_0807B0BC: .4byte gUnknown_20386A4 -_0807B0C0: .4byte gUnknown_83C2CC0 - thumb_func_end ResetPreservedPalettesInWeather - - thumb_func_start sub_807B0C4 -sub_807B0C4: @ 807B0C4 - push {lr} - adds r1, r0, 0 - adds r3, r2, 0 - ldr r0, _0807B0E8 @ =gUnknown_2037F34 - movs r2, 0xDA - lsls r2, 3 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xB - beq _0807B0F0 - cmp r0, 0xB - bgt _0807B0EC - cmp r0, 0x5 - bgt _0807B0FA - cmp r0, 0x3 - blt _0807B0FA - b _0807B0F0 - .align 2, 0 -_0807B0E8: .4byte gUnknown_2037F34 -_0807B0EC: - cmp r0, 0xD - bne _0807B0FA -_0807B0F0: - adds r0, r1, 0 - movs r1, 0 - movs r2, 0x3 - bl sub_8045314 -_0807B0FA: - pop {r0} - bx r0 - thumb_func_end sub_807B0C4 - - thumb_func_start SetSav1Weather -SetSav1Weather: @ 807B100 - push {r4,r5,lr} - ldr r4, _0807B12C @ =gSaveBlock1Ptr - ldr r1, [r4] - adds r1, 0x2E - ldrb r5, [r1] - lsls r0, 24 - lsrs r0, 24 - bl TranslateWeatherNum - ldr r1, [r4] - adds r1, 0x2E - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x2E - ldrb r0, [r0] - adds r1, r5, 0 - bl UpdateRainCounter - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807B12C: .4byte gSaveBlock1Ptr - thumb_func_end SetSav1Weather - - thumb_func_start sav1_get_weather_probably -sav1_get_weather_probably: @ 807B130 - ldr r0, _0807B13C @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x2E - ldrb r0, [r0] - bx lr - .align 2, 0 -_0807B13C: .4byte gSaveBlock1Ptr - thumb_func_end sav1_get_weather_probably - - thumb_func_start SetSav1WeatherFromCurrMapHeader -SetSav1WeatherFromCurrMapHeader: @ 807B140 - push {r4,r5,lr} - ldr r4, _0807B16C @ =gSaveBlock1Ptr - ldr r0, [r4] - adds r0, 0x2E - ldrb r5, [r0] - ldr r0, _0807B170 @ =gMapHeader - ldrb r0, [r0, 0x16] - bl TranslateWeatherNum - ldr r1, [r4] - adds r1, 0x2E - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x2E - ldrb r0, [r0] - adds r1, r5, 0 - bl UpdateRainCounter - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807B16C: .4byte gSaveBlock1Ptr -_0807B170: .4byte gMapHeader - thumb_func_end SetSav1WeatherFromCurrMapHeader - - thumb_func_start SetWeather -SetWeather: @ 807B174 - push {lr} - bl SetSav1Weather - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - bl weather_set - pop {r0} - bx r0 - thumb_func_end SetWeather - - thumb_func_start sub_807B18C -sub_807B18C: @ 807B18C - push {lr} - bl SetSav1Weather - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - bl sub_8079D60 - pop {r0} - bx r0 - thumb_func_end sub_807B18C - - thumb_func_start DoCurrentWeather -DoCurrentWeather: @ 807B1A4 - push {lr} - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - bl weather_set - pop {r0} - bx r0 - thumb_func_end DoCurrentWeather - - thumb_func_start sub_807B1B8 -sub_807B1B8: @ 807B1B8 - push {lr} - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - bl sub_8079D60 - pop {r0} - bx r0 - thumb_func_end sub_807B1B8 - - thumb_func_start TranslateWeatherNum -TranslateWeatherNum: @ 807B1CC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x15 - bhi _0807B294 - lsls r0, 2 - ldr r1, _0807B1E0 @ =_0807B1E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807B1E0: .4byte _0807B1E4 - .align 2, 0 -_0807B1E4: - .4byte _0807B294 - .4byte _0807B23C - .4byte _0807B240 - .4byte _0807B244 - .4byte _0807B248 - .4byte _0807B24C - .4byte _0807B250 - .4byte _0807B254 - .4byte _0807B258 - .4byte _0807B25C - .4byte _0807B260 - .4byte _0807B264 - .4byte _0807B268 - .4byte _0807B26C - .4byte _0807B270 - .4byte _0807B294 - .4byte _0807B294 - .4byte _0807B294 - .4byte _0807B294 - .4byte _0807B294 - .4byte _0807B274 - .4byte _0807B27C -_0807B23C: - movs r0, 0x1 - b _0807B296 -_0807B240: - movs r0, 0x2 - b _0807B296 -_0807B244: - movs r0, 0x3 - b _0807B296 -_0807B248: - movs r0, 0x4 - b _0807B296 -_0807B24C: - movs r0, 0x5 - b _0807B296 -_0807B250: - movs r0, 0x6 - b _0807B296 -_0807B254: - movs r0, 0x7 - b _0807B296 -_0807B258: - movs r0, 0x8 - b _0807B296 -_0807B25C: - movs r0, 0x9 - b _0807B296 -_0807B260: - movs r0, 0xA - b _0807B296 -_0807B264: - movs r0, 0xB - b _0807B296 -_0807B268: - movs r0, 0xC - b _0807B296 -_0807B26C: - movs r0, 0xD - b _0807B296 -_0807B270: - movs r0, 0xE - b _0807B296 -_0807B274: - ldr r1, _0807B278 @ =gUnknown_83C65C0 - b _0807B27E - .align 2, 0 -_0807B278: .4byte gUnknown_83C65C0 -_0807B27C: - ldr r1, _0807B28C @ =gUnknown_83C65C4 -_0807B27E: - ldr r0, _0807B290 @ =gSaveBlock1Ptr - ldr r0, [r0] - adds r0, 0x2F - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - b _0807B296 - .align 2, 0 -_0807B28C: .4byte gUnknown_83C65C4 -_0807B290: .4byte gSaveBlock1Ptr -_0807B294: - movs r0, 0 -_0807B296: - pop {r1} - bx r1 - thumb_func_end TranslateWeatherNum - - thumb_func_start UpdateWeatherPerDay -UpdateWeatherPerDay: @ 807B29C - lsls r0, 16 - ldr r1, _0807B2B8 @ =gSaveBlock1Ptr - ldr r2, [r1] - adds r2, 0x2F - lsrs r0, 16 - ldrb r1, [r2] - adds r0, r1 - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r0 - lsrs r1, 16 - strb r1, [r2] - bx lr - .align 2, 0 -_0807B2B8: .4byte gSaveBlock1Ptr - thumb_func_end UpdateWeatherPerDay - - thumb_func_start UpdateRainCounter -UpdateRainCounter: @ 807B2BC - push {lr} - lsls r0, 24 - lsls r1, 24 - lsrs r2, r0, 24 - cmp r0, r1 - beq _0807B2D6 - cmp r2, 0x3 - beq _0807B2D0 - cmp r2, 0x5 - bne _0807B2D6 -_0807B2D0: - movs r0, 0x28 - bl IncrementGameStat -_0807B2D6: - pop {r0} - bx r0 - thumb_func_end UpdateRainCounter - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_weather_effects.s b/asm/field_weather_effects.s index decfe4078..23b5a111c 100644 --- a/asm/field_weather_effects.s +++ b/asm/field_weather_effects.s @@ -8,7 +8,7 @@ thumb_func_start Clouds_InitVars Clouds_InitVars: @ 807B2DC push {lr} - ldr r0, _0807B314 @ =gUnknown_83C2BBC + ldr r0, _0807B314 @ =gWeatherPtr ldr r0, [r0] ldr r2, _0807B318 @ =0x000006c1 adds r1, r0, r2 @@ -36,7 +36,7 @@ _0807B310: pop {r0} bx r0 .align 2, 0 -_0807B314: .4byte gUnknown_83C2BBC +_0807B314: .4byte gWeatherPtr _0807B318: .4byte 0x000006c1 _0807B31C: .4byte 0x000006c2 _0807B320: .4byte 0x000006d2 @@ -47,7 +47,7 @@ _0807B324: .4byte 0x000006de Clouds_InitAll: @ 807B328 push {r4,lr} bl Clouds_InitVars - ldr r0, _0807B350 @ =gUnknown_83C2BBC + ldr r0, _0807B350 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B354 @ =0x000006d2 adds r0, r1, r2 @@ -65,14 +65,14 @@ _0807B348: pop {r0} bx r0 .align 2, 0 -_0807B350: .4byte gUnknown_83C2BBC +_0807B350: .4byte gWeatherPtr _0807B354: .4byte 0x000006d2 thumb_func_end Clouds_InitAll thumb_func_start Clouds_Main Clouds_Main: @ 807B358 push {r4,r5,lr} - ldr r0, _0807B374 @ =gUnknown_83C2BBC + ldr r0, _0807B374 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807B378 @ =0x000006cc adds r4, r5, r0 @@ -85,7 +85,7 @@ Clouds_Main: @ 807B358 beq _0807B382 b _0807B3AC .align 2, 0 -_0807B374: .4byte gUnknown_83C2BBC +_0807B374: .4byte gWeatherPtr _0807B378: .4byte 0x000006cc _0807B37C: cmp r0, 0x2 @@ -124,7 +124,7 @@ _0807B3B4: .4byte 0x000006d2 thumb_func_start Clouds_Finish Clouds_Finish: @ 807B3B8 push {r4,lr} - ldr r0, _0807B3D0 @ =gUnknown_83C2BBC + ldr r0, _0807B3D0 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807B3D4 @ =0x000006ce adds r4, r0, r1 @@ -136,7 +136,7 @@ Clouds_Finish: @ 807B3B8 movs r0, 0 b _0807B3FA .align 2, 0 -_0807B3D0: .4byte gUnknown_83C2BBC +_0807B3D0: .4byte gWeatherPtr _0807B3D4: .4byte 0x000006ce _0807B3D8: movs r0, 0 @@ -164,7 +164,7 @@ _0807B3FA: thumb_func_start Weather2_InitVars Weather2_InitVars: @ 807B400 - ldr r0, _0807B418 @ =gUnknown_83C2BBC + ldr r0, _0807B418 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807B41C @ =0x000006c1 adds r2, r1, r0 @@ -176,7 +176,7 @@ Weather2_InitVars: @ 807B400 strb r0, [r1] bx lr .align 2, 0 -_0807B418: .4byte gUnknown_83C2BBC +_0807B418: .4byte gWeatherPtr _0807B41C: .4byte 0x000006c1 _0807B420: .4byte 0x000006c2 thumb_func_end Weather2_InitVars @@ -203,7 +203,7 @@ sub_807B434: @ 807B434 thumb_func_start CreateCloudSprites CreateCloudSprites: @ 807B438 push {r4,r5,lr} - ldr r0, _0807B4B0 @ =gUnknown_83C2BBC + ldr r0, _0807B4B0 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807B4B4 @ =0x000006de adds r0, r1 @@ -213,7 +213,7 @@ CreateCloudSprites: @ 807B438 ldr r0, _0807B4B8 @ =gUnknown_83C65D4 bl LoadSpriteSheet ldr r0, _0807B4BC @ =gUnknown_83C2D00 - bl sub_807ABC0 + bl LoadCustomWeatherSpritePalette movs r5, 0 _0807B456: ldr r0, _0807B4C0 @ =gUnknown_83C65F0 @@ -225,7 +225,7 @@ _0807B456: lsrs r3, r0, 24 cmp r3, 0x40 beq _0807B4CC - ldr r0, _0807B4B0 @ =gUnknown_83C2BBC + ldr r0, _0807B4B0 @ =gWeatherPtr ldr r1, [r0] lsls r2, r5, 2 movs r0, 0xFA @@ -260,7 +260,7 @@ _0807B456: strb r0, [r4] b _0807B4DE .align 2, 0 -_0807B4B0: .4byte gUnknown_83C2BBC +_0807B4B0: .4byte gWeatherPtr _0807B4B4: .4byte 0x000006de _0807B4B8: .4byte gUnknown_83C65D4 _0807B4BC: .4byte gUnknown_83C2D00 @@ -268,7 +268,7 @@ _0807B4C0: .4byte gUnknown_83C65F0 _0807B4C4: .4byte gSprites _0807B4C8: .4byte gUnknown_83C65C8 _0807B4CC: - ldr r0, _0807B4FC @ =gUnknown_83C2BBC + ldr r0, _0807B4FC @ =gWeatherPtr ldr r1, [r0] lsls r0, r5, 2 movs r2, 0xFA @@ -283,7 +283,7 @@ _0807B4DE: lsrs r5, r0, 16 cmp r5, 0x2 bls _0807B456 - ldr r0, _0807B4FC @ =gUnknown_83C2BBC + ldr r0, _0807B4FC @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807B500 @ =0x000006de adds r0, r1 @@ -294,14 +294,14 @@ _0807B4F4: pop {r0} bx r0 .align 2, 0 -_0807B4FC: .4byte gUnknown_83C2BBC +_0807B4FC: .4byte gWeatherPtr _0807B500: .4byte 0x000006de thumb_func_end CreateCloudSprites thumb_func_start sub_807B504 sub_807B504: @ 807B504 push {r4,r5,lr} - ldr r0, _0807B550 @ =gUnknown_83C2BBC + ldr r0, _0807B550 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B554 @ =0x000006de adds r0, r1, r2 @@ -328,7 +328,7 @@ _0807B52A: movs r0, 0x90 lsls r0, 5 bl FreeSpriteTilesByTag - ldr r0, _0807B550 @ =gUnknown_83C2BBC + ldr r0, _0807B550 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807B554 @ =0x000006de adds r0, r1 @@ -339,7 +339,7 @@ _0807B548: pop {r0} bx r0 .align 2, 0 -_0807B550: .4byte gUnknown_83C2BBC +_0807B550: .4byte gWeatherPtr _0807B554: .4byte 0x000006de thumb_func_end sub_807B504 @@ -364,7 +364,7 @@ _0807B570: thumb_func_start Drought_InitVars Drought_InitVars: @ 807B574 - ldr r0, _0807B598 @ =gUnknown_83C2BBC + ldr r0, _0807B598 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807B59C @ =0x000006cc adds r3, r1, r0 @@ -382,7 +382,7 @@ Drought_InitVars: @ 807B574 strb r2, [r1] bx lr .align 2, 0 -_0807B598: .4byte gUnknown_83C2BBC +_0807B598: .4byte gWeatherPtr _0807B59C: .4byte 0x000006cc _0807B5A0: .4byte 0x000006d2 _0807B5A4: .4byte 0x000006c2 @@ -392,7 +392,7 @@ _0807B5A4: .4byte 0x000006c2 Drought_InitAll: @ 807B5A8 push {r4,lr} bl Drought_InitVars - ldr r0, _0807B5D0 @ =gUnknown_83C2BBC + ldr r0, _0807B5D0 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B5D4 @ =0x000006d2 adds r0, r1, r2 @@ -410,14 +410,14 @@ _0807B5C8: pop {r0} bx r0 .align 2, 0 -_0807B5D0: .4byte gUnknown_83C2BBC +_0807B5D0: .4byte gWeatherPtr _0807B5D4: .4byte 0x000006d2 thumb_func_end Drought_InitAll thumb_func_start Drought_Main Drought_Main: @ 807B5D8 push {lr} - ldr r1, _0807B5F4 @ =gUnknown_83C2BBC + ldr r1, _0807B5F4 @ =gWeatherPtr ldr r0, [r1] ldr r2, _0807B5F8 @ =0x000006cc adds r0, r2 @@ -431,7 +431,7 @@ Drought_Main: @ 807B5D8 ldr r0, [r0] mov pc, r0 .align 2, 0 -_0807B5F4: .4byte gUnknown_83C2BBC +_0807B5F4: .4byte gWeatherPtr _0807B5F8: .4byte 0x000006cc _0807B5FC: .4byte _0807B600 .align 2, 0 @@ -455,41 +455,41 @@ _0807B614: _0807B628: .4byte 0x000006c6 _0807B62C: .4byte 0x000006cc _0807B630: - bl sub_807ABF4 - ldr r0, _0807B640 @ =gUnknown_83C2BBC + bl ResetDroughtWeatherPaletteLoading + ldr r0, _0807B640 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B644 @ =0x000006cc adds r1, r2 b _0807B69C .align 2, 0 -_0807B640: .4byte gUnknown_83C2BBC +_0807B640: .4byte gWeatherPtr _0807B644: .4byte 0x000006cc _0807B648: - bl sub_807AC14 + bl LoadDroughtWeatherPalettes lsls r0, 24 cmp r0, 0 bne _0807B6B8 - ldr r0, _0807B65C @ =gUnknown_83C2BBC + ldr r0, _0807B65C @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807B660 @ =0x000006cc adds r1, r0 b _0807B69C .align 2, 0 -_0807B65C: .4byte gUnknown_83C2BBC +_0807B65C: .4byte gWeatherPtr _0807B660: .4byte 0x000006cc _0807B664: bl sub_807AC60 - ldr r0, _0807B674 @ =gUnknown_83C2BBC + ldr r0, _0807B674 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B678 @ =0x000006cc adds r1, r2 b _0807B69C .align 2, 0 -_0807B674: .4byte gUnknown_83C2BBC +_0807B674: .4byte gWeatherPtr _0807B678: .4byte 0x000006cc _0807B67C: bl sub_807AC98 - ldr r0, _0807B6A4 @ =gUnknown_83C2BBC + ldr r0, _0807B6A4 @ =gWeatherPtr ldr r2, [r0] ldr r1, _0807B6A8 @ =0x0000073c adds r0, r2, r1 @@ -509,7 +509,7 @@ _0807B69C: strh r0, [r1] b _0807B6B8 .align 2, 0 -_0807B6A4: .4byte gUnknown_83C2BBC +_0807B6A4: .4byte gWeatherPtr _0807B6A8: .4byte 0x0000073c _0807B6AC: .4byte 0x000006d2 _0807B6B0: .4byte 0x000006cc @@ -660,7 +660,7 @@ _0807B7C2: thumb_func_start LightRain_InitVars LightRain_InitVars: @ 807B7C8 push {r4,lr} - ldr r0, _0807B818 @ =gUnknown_83C2BBC + ldr r0, _0807B818 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B81C @ =0x000006cc adds r0, r1, r2 @@ -698,7 +698,7 @@ LightRain_InitVars: @ 807B7C8 pop {r0} bx r0 .align 2, 0 -_0807B818: .4byte gUnknown_83C2BBC +_0807B818: .4byte gWeatherPtr _0807B81C: .4byte 0x000006cc _0807B820: .4byte 0x000006d2 _0807B824: .4byte 0x000006db @@ -711,7 +711,7 @@ _0807B830: .4byte 0x000006c2 LightRain_InitAll: @ 807B834 push {r4,lr} bl LightRain_InitVars - ldr r0, _0807B85C @ =gUnknown_83C2BBC + ldr r0, _0807B85C @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807B860 @ =0x000006d2 adds r0, r1, r2 @@ -729,14 +729,14 @@ _0807B854: pop {r0} bx r0 .align 2, 0 -_0807B85C: .4byte gUnknown_83C2BBC +_0807B85C: .4byte gWeatherPtr _0807B860: .4byte 0x000006d2 thumb_func_end LightRain_InitAll thumb_func_start LightRain_Main LightRain_Main: @ 807B864 push {r4,r5,lr} - ldr r0, _0807B880 @ =gUnknown_83C2BBC + ldr r0, _0807B880 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807B884 @ =0x000006cc adds r4, r5, r0 @@ -749,7 +749,7 @@ LightRain_Main: @ 807B864 beq _0807B88E b _0807B8B8 .align 2, 0 -_0807B880: .4byte gUnknown_83C2BBC +_0807B880: .4byte gWeatherPtr _0807B884: .4byte 0x000006cc _0807B888: cmp r0, 0x2 @@ -788,7 +788,7 @@ _0807B8C0: .4byte 0x000006d2 thumb_func_start LightRain_Finish LightRain_Finish: @ 807B8C4 push {r4,r5,lr} - ldr r0, _0807B8E0 @ =gUnknown_83C2BBC + ldr r0, _0807B8E0 @ =gWeatherPtr ldr r2, [r0] ldr r1, _0807B8E4 @ =0x000006ce adds r3, r2, r1 @@ -801,7 +801,7 @@ LightRain_Finish: @ 807B8C4 movs r0, 0 b _0807B94A .align 2, 0 -_0807B8E0: .4byte gUnknown_83C2BBC +_0807B8E0: .4byte gWeatherPtr _0807B8E4: .4byte 0x000006ce _0807B8E8: ldr r5, _0807B908 @ =0x000006d1 @@ -837,7 +837,7 @@ _0807B91C: cmp r0, 0 bne _0807B948 bl DestroyRainSprites - ldr r0, _0807B940 @ =gUnknown_83C2BBC + ldr r0, _0807B940 @ =gWeatherPtr ldr r1, [r0] ldr r5, _0807B944 @ =0x000006ce adds r1, r5 @@ -848,7 +848,7 @@ _0807B91C: b _0807B94A .align 2, 0 _0807B93C: .4byte 0x000006d9 -_0807B940: .4byte gUnknown_83C2BBC +_0807B940: .4byte gWeatherPtr _0807B944: .4byte 0x000006ce _0807B948: movs r0, 0x1 @@ -886,7 +886,7 @@ _0807B964: mov r8, r1 strh r0, [r7, 0x30] ldr r1, _0807BA14 @ =gUnknown_83C66C4 - ldr r0, _0807BA18 @ =gUnknown_83C2BBC + ldr r0, _0807BA18 @ =gWeatherPtr ldr r5, [r0] ldr r2, _0807BA1C @ =0x000006dc adds r5, r2 @@ -953,7 +953,7 @@ _0807BA08: .4byte 0x00000169 _0807BA0C: .4byte 0x41c64e6d _0807BA10: .4byte 0x00003039 _0807BA14: .4byte gUnknown_83C66C4 -_0807BA18: .4byte gUnknown_83C2BBC +_0807BA18: .4byte gWeatherPtr _0807BA1C: .4byte 0x000006dc _0807BA20: .4byte gUnknown_83C66BC thumb_func_end sub_807B950 @@ -967,7 +967,7 @@ sub_807BA24: @ 807BA24 cmp r0, 0 bne _0807BB00 ldr r3, _0807BA98 @ =gUnknown_83C66BC - ldr r4, _0807BA9C @ =gUnknown_83C2BBC + ldr r4, _0807BA9C @ =gWeatherPtr ldr r2, [r4] ldr r0, _0807BAA0 @ =0x000006dc adds r2, r0 @@ -1020,7 +1020,7 @@ sub_807BA24: @ 807BA24 b _0807BAAE .align 2, 0 _0807BA98: .4byte gUnknown_83C66BC -_0807BA9C: .4byte gUnknown_83C2BBC +_0807BA9C: .4byte gWeatherPtr _0807BAA0: .4byte 0x000006dc _0807BAA4: adds r0, r5, 0 @@ -1123,7 +1123,7 @@ sub_807BB54: @ 807BB54 lsls r5, r1, 16 lsrs r5, 16 ldr r2, _0807BBD8 @ =gUnknown_83C66C4 - ldr r0, _0807BBDC @ =gUnknown_83C2BBC + ldr r0, _0807BBDC @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807BBE0 @ =0x000006dc adds r0, r1 @@ -1184,7 +1184,7 @@ _0807BBD4: b _0807BBFC .align 2, 0 _0807BBD8: .4byte gUnknown_83C66C4 -_0807BBDC: .4byte gUnknown_83C2BBC +_0807BBDC: .4byte gWeatherPtr _0807BBE0: .4byte 0x000006dc _0807BBE4: .4byte 0x0000ffff _0807BBE8: @@ -1225,7 +1225,7 @@ CreateRainSprite: @ 807BC18 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r0, _0807BCC4 @ =gUnknown_83C2BBC + ldr r0, _0807BCC4 @ =gWeatherPtr ldr r4, [r0] ldr r0, _0807BCC8 @ =0x000006da adds r2, r4, r0 @@ -1301,13 +1301,13 @@ _0807BC96: movs r1, 0x4 orrs r0, r1 strb r0, [r2] - ldr r0, _0807BCC4 @ =gUnknown_83C2BBC + ldr r0, _0807BCC4 @ =gWeatherPtr ldr r0, [r0] add r0, r10 str r4, [r0] b _0807BCE6 .align 2, 0 -_0807BCC4: .4byte gUnknown_83C2BBC +_0807BCC4: .4byte gWeatherPtr _0807BCC8: .4byte 0x000006da _0807BCCC: .4byte gUnknown_83C66A4 _0807BCD0: .4byte gUnknown_83C6608 @@ -1319,7 +1319,7 @@ _0807BCE0: movs r0, 0 str r0, [r1] _0807BCE6: - ldr r0, _0807BD1C @ =gUnknown_83C2BBC + ldr r0, _0807BD1C @ =gWeatherPtr ldr r2, [r0] ldr r6, _0807BD20 @ =0x000006da adds r1, r2, r6 @@ -1347,7 +1347,7 @@ _0807BD04: str r5, [r2, 0x1C] b _0807BD2E .align 2, 0 -_0807BD1C: .4byte gUnknown_83C2BBC +_0807BD1C: .4byte gWeatherPtr _0807BD20: .4byte 0x000006da _0807BD24: .4byte sub_807BA24 _0807BD28: .4byte sub_807BB28 @@ -1377,7 +1377,7 @@ _0807BD3E: thumb_func_start sub_807BD4C sub_807BD4C: @ 807BD4C push {r4-r7,lr} - ldr r0, _0807BD68 @ =gUnknown_83C2BBC + ldr r0, _0807BD68 @ =gWeatherPtr ldr r3, [r0] movs r0, 0xDB lsls r0, 3 @@ -1391,7 +1391,7 @@ sub_807BD4C: @ 807BD4C movs r0, 0 b _0807BDD2 .align 2, 0 -_0807BD68: .4byte gUnknown_83C2BBC +_0807BD68: .4byte gWeatherPtr _0807BD6C: .4byte 0x000006d9 _0807BD70: ldr r0, _0807BDA8 @ =0x000006d6 @@ -1453,7 +1453,7 @@ _0807BDD2: DestroyRainSprites: @ 807BDD8 push {r4-r7,lr} movs r4, 0 - ldr r0, _0807BE20 @ =gUnknown_83C2BBC + ldr r0, _0807BE20 @ =gWeatherPtr ldr r2, [r0] ldr r3, _0807BE24 @ =0x000006da adds r1, r2, r3 @@ -1489,7 +1489,7 @@ _0807BE0A: pop {r0} bx r0 .align 2, 0 -_0807BE20: .4byte gUnknown_83C2BBC +_0807BE20: .4byte gWeatherPtr _0807BE24: .4byte 0x000006da _0807BE28: .4byte 0x00001206 thumb_func_end DestroyRainSprites @@ -1497,7 +1497,7 @@ _0807BE28: .4byte 0x00001206 thumb_func_start Snow_InitVars Snow_InitVars: @ 807BE2C push {r4,lr} - ldr r0, _0807BE68 @ =gUnknown_83C2BBC + ldr r0, _0807BE68 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807BE6C @ =0x000006cc adds r0, r1, r2 @@ -1527,7 +1527,7 @@ Snow_InitVars: @ 807BE2C pop {r0} bx r0 .align 2, 0 -_0807BE68: .4byte gUnknown_83C2BBC +_0807BE68: .4byte gWeatherPtr _0807BE6C: .4byte 0x000006cc _0807BE70: .4byte 0x000006d2 _0807BE74: .4byte 0x000006c1 @@ -1540,7 +1540,7 @@ Snow_InitAll: @ 807BE7C mov r7, r8 push {r7} bl Snow_InitVars - ldr r2, _0807BEDC @ =gUnknown_83C2BBC + ldr r2, _0807BEDC @ =gWeatherPtr ldr r1, [r2] ldr r3, _0807BEE0 @ =0x000006d2 adds r0, r1, r3 @@ -1559,7 +1559,7 @@ _0807BE98: ldrb r0, [r0] cmp r4, r0 bcs _0807BECC - ldr r0, _0807BEDC @ =gUnknown_83C2BBC + ldr r0, _0807BEDC @ =gWeatherPtr ldr r5, [r0] adds r6, r5, r3 _0807BEB2: @@ -1586,7 +1586,7 @@ _0807BED2: pop {r0} bx r0 .align 2, 0 -_0807BEDC: .4byte gUnknown_83C2BBC +_0807BEDC: .4byte gWeatherPtr _0807BEE0: .4byte 0x000006d2 _0807BEE4: .4byte 0x000006e4 thumb_func_end Snow_InitAll @@ -1594,7 +1594,7 @@ _0807BEE4: .4byte 0x000006e4 thumb_func_start snowflakes_progress2 snowflakes_progress2: @ 807BEE8 push {r4,r5,lr} - ldr r0, _0807BF18 @ =gUnknown_83C2BBC + ldr r0, _0807BF18 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807BF1C @ =0x000006cc adds r4, r5, r0 @@ -1617,7 +1617,7 @@ _0807BF10: pop {r0} bx r0 .align 2, 0 -_0807BF18: .4byte gUnknown_83C2BBC +_0807BF18: .4byte gWeatherPtr _0807BF1C: .4byte 0x000006cc _0807BF20: .4byte 0x000006d2 thumb_func_end snowflakes_progress2 @@ -1625,7 +1625,7 @@ _0807BF20: .4byte 0x000006d2 thumb_func_start Snow_Finish Snow_Finish: @ 807BF24 push {r4,lr} - ldr r0, _0807BF3C @ =gUnknown_83C2BBC + ldr r0, _0807BF3C @ =gWeatherPtr ldr r2, [r0] ldr r0, _0807BF40 @ =0x000006ce adds r3, r2, r0 @@ -1637,7 +1637,7 @@ Snow_Finish: @ 807BF24 movs r0, 0 b _0807BF82 .align 2, 0 -_0807BF3C: .4byte gUnknown_83C2BBC +_0807BF3C: .4byte gWeatherPtr _0807BF40: .4byte 0x000006ce _0807BF44: ldr r4, _0807BF74 @ =0x000006e5 @@ -1654,7 +1654,7 @@ _0807BF56: lsls r0, 24 cmp r0, 0 bne _0807BF80 - ldr r0, _0807BF78 @ =gUnknown_83C2BBC + ldr r0, _0807BF78 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807BF7C @ =0x000006ce adds r1, r0 @@ -1665,7 +1665,7 @@ _0807BF56: b _0807BF82 .align 2, 0 _0807BF74: .4byte 0x000006e5 -_0807BF78: .4byte gUnknown_83C2BBC +_0807BF78: .4byte gWeatherPtr _0807BF7C: .4byte 0x000006ce _0807BF80: movs r0, 0x1 @@ -1678,7 +1678,7 @@ _0807BF82: thumb_func_start snowflakes_progress snowflakes_progress: @ 807BF88 push {r4,lr} - ldr r0, _0807BFA4 @ =gUnknown_83C2BBC + ldr r0, _0807BFA4 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807BFA8 @ =0x000006e4 adds r3, r1, r0 @@ -1691,7 +1691,7 @@ snowflakes_progress: @ 807BF88 movs r0, 0 b _0807BFF2 .align 2, 0 -_0807BFA4: .4byte gUnknown_83C2BBC +_0807BFA4: .4byte gWeatherPtr _0807BFA8: .4byte 0x000006e4 _0807BFAC: .4byte 0x000006e5 _0807BFB0: @@ -1716,7 +1716,7 @@ _0807BFB0: _0807BFD6: bl snowflake_remove _0807BFDA: - ldr r0, _0807BFF8 @ =gUnknown_83C2BBC + ldr r0, _0807BFF8 @ =gWeatherPtr ldr r0, [r0] ldr r2, _0807BFFC @ =0x000006e4 adds r1, r0, r2 @@ -1733,7 +1733,7 @@ _0807BFF2: pop {r1} bx r1 .align 2, 0 -_0807BFF8: .4byte gUnknown_83C2BBC +_0807BFF8: .4byte gWeatherPtr _0807BFFC: .4byte 0x000006e4 _0807C000: .4byte 0x000006e5 thumb_func_end snowflakes_progress @@ -1755,7 +1755,7 @@ snowflake_add: @ 807C004 adds r4, r1 lsls r4, 2 adds r4, r0 - ldr r0, _0807C060 @ =gUnknown_83C2BBC + ldr r0, _0807C060 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807C064 @ =0x000006e4 adds r6, r5, r0 @@ -1782,7 +1782,7 @@ snowflake_add: @ 807C004 .align 2, 0 _0807C058: .4byte gUnknown_83C6704 _0807C05C: .4byte gSprites -_0807C060: .4byte gUnknown_83C2BBC +_0807C060: .4byte gWeatherPtr _0807C064: .4byte 0x000006e4 _0807C068: movs r0, 0 @@ -1795,7 +1795,7 @@ _0807C06A: thumb_func_start snowflake_remove snowflake_remove: @ 807C070 push {lr} - ldr r0, _0807C084 @ =gUnknown_83C2BBC + ldr r0, _0807C084 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807C088 @ =0x000006e4 adds r2, r1, r0 @@ -1805,7 +1805,7 @@ snowflake_remove: @ 807C070 movs r0, 0 b _0807C0A0 .align 2, 0 -_0807C084: .4byte gUnknown_83C2BBC +_0807C084: .4byte gWeatherPtr _0807C088: .4byte 0x000006e4 _0807C08C: subs r0, 0x1 @@ -1911,7 +1911,7 @@ _0807C14C: .4byte gSpriteCoordOffsetX sub_807C150: @ 807C150 push {r4,lr} adds r3, r0, 0 - ldr r0, _0807C19C @ =gUnknown_83C2BBC + ldr r0, _0807C19C @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807C1A0 @ =0x000006e2 adds r4, r0, r1 @@ -1949,7 +1949,7 @@ _0807C196: pop {r0} bx r0 .align 2, 0 -_0807C19C: .4byte gUnknown_83C2BBC +_0807C19C: .4byte gWeatherPtr _0807C1A0: .4byte 0x000006e2 _0807C1A4: .4byte sub_807C1AC _0807C1A8: .4byte gSpriteCoordOffsetY @@ -2120,7 +2120,7 @@ _0807C2E0: .4byte sub_807C150 thumb_func_start sub_807C2E4 sub_807C2E4: @ 807C2E4 push {r4,r5,lr} - ldr r0, _0807C33C @ =gUnknown_83C2BBC + ldr r0, _0807C33C @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C340 @ =0x000006cc adds r0, r1, r2 @@ -2162,7 +2162,7 @@ sub_807C2E4: @ 807C2E4 pop {r0} bx r0 .align 2, 0 -_0807C33C: .4byte gUnknown_83C2BBC +_0807C33C: .4byte gWeatherPtr _0807C340: .4byte 0x000006cc _0807C344: .4byte 0x000006d2 _0807C348: .4byte 0x000006db @@ -2175,7 +2175,7 @@ _0807C354: .4byte 0x000006ed sub_807C358: @ 807C358 push {r4,lr} bl sub_807C2E4 - ldr r0, _0807C380 @ =gUnknown_83C2BBC + ldr r0, _0807C380 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C384 @ =0x000006d2 adds r0, r1, r2 @@ -2193,14 +2193,14 @@ _0807C378: pop {r0} bx r0 .align 2, 0 -_0807C380: .4byte gUnknown_83C2BBC +_0807C380: .4byte gWeatherPtr _0807C384: .4byte 0x000006d2 thumb_func_end sub_807C358 thumb_func_start sub_807C388 sub_807C388: @ 807C388 push {r4,r5,lr} - ldr r0, _0807C3DC @ =gUnknown_83C2BBC + ldr r0, _0807C3DC @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C3E0 @ =0x000006cc adds r0, r1, r2 @@ -2240,7 +2240,7 @@ sub_807C388: @ 807C388 pop {r0} bx r0 .align 2, 0 -_0807C3DC: .4byte gUnknown_83C2BBC +_0807C3DC: .4byte gWeatherPtr _0807C3E0: .4byte 0x000006cc _0807C3E4: .4byte 0x000006d2 _0807C3E8: .4byte 0x000006db @@ -2252,7 +2252,7 @@ _0807C3F0: .4byte 0x000006c2 sub_807C3F4: @ 807C3F4 push {r4,lr} bl sub_807C388 - ldr r0, _0807C41C @ =gUnknown_83C2BBC + ldr r0, _0807C41C @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C420 @ =0x000006d2 adds r0, r1, r2 @@ -2270,7 +2270,7 @@ _0807C414: pop {r0} bx r0 .align 2, 0 -_0807C41C: .4byte gUnknown_83C2BBC +_0807C41C: .4byte gWeatherPtr _0807C420: .4byte 0x000006d2 thumb_func_end sub_807C3F4 @@ -2278,7 +2278,7 @@ _0807C420: .4byte 0x000006d2 Rain_Main: @ 807C424 push {r4,r5,lr} bl UpdateThunderSound - ldr r0, _0807C444 @ =gUnknown_83C2BBC + ldr r0, _0807C444 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807C448 @ =0x000006cc adds r0, r1 @@ -2293,7 +2293,7 @@ _0807C43A: ldr r0, [r0] mov pc, r0 .align 2, 0 -_0807C444: .4byte gUnknown_83C2BBC +_0807C444: .4byte gWeatherPtr _0807C448: .4byte 0x000006cc _0807C44C: .4byte _0807C450 .align 2, 0 @@ -2315,7 +2315,7 @@ _0807C450: .4byte _0807C77C _0807C48C: bl LoadRainSpriteSheet - ldr r0, _0807C4A0 @ =gUnknown_83C2BBC + ldr r0, _0807C4A0 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C4A4 @ =0x000006cc adds r1, r2 @@ -2323,7 +2323,7 @@ _0807C48C: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C4A0: .4byte gUnknown_83C2BBC +_0807C4A0: .4byte gWeatherPtr _0807C4A4: .4byte 0x000006cc _0807C4A8: bl CreateRainSprite @@ -2332,7 +2332,7 @@ _0807C4A8: beq _0807C4B4 b _0807C79A _0807C4B4: - ldr r0, _0807C4C4 @ =gUnknown_83C2BBC + ldr r0, _0807C4C4 @ =gWeatherPtr ldr r1, [r0] ldr r3, _0807C4C8 @ =0x000006cc adds r1, r3 @@ -2340,7 +2340,7 @@ _0807C4B4: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C4C4: .4byte gUnknown_83C2BBC +_0807C4C4: .4byte gWeatherPtr _0807C4C8: .4byte 0x000006cc _0807C4CC: bl sub_807BD4C @@ -2349,7 +2349,7 @@ _0807C4CC: beq _0807C4D8 b _0807C79A _0807C4D8: - ldr r0, _0807C4F0 @ =gUnknown_83C2BBC + ldr r0, _0807C4F0 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807C4F4 @ =0x000006d2 adds r2, r1, r0 @@ -2361,11 +2361,11 @@ _0807C4D8: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C4F0: .4byte gUnknown_83C2BBC +_0807C4F0: .4byte gWeatherPtr _0807C4F4: .4byte 0x000006d2 _0807C4F8: .4byte 0x000006cc _0807C4FC: - ldr r0, _0807C514 @ =gUnknown_83C2BBC + ldr r0, _0807C514 @ =gWeatherPtr ldr r1, [r0] ldr r3, _0807C518 @ =0x000006c6 adds r0, r1, r3 @@ -2379,11 +2379,11 @@ _0807C50C: movs r0, 0x6 b _0807C798 .align 2, 0 -_0807C514: .4byte gUnknown_83C2BBC +_0807C514: .4byte gWeatherPtr _0807C518: .4byte 0x000006c6 _0807C51C: .4byte 0x000006cc _0807C520: - ldr r0, _0807C570 @ =gUnknown_83C2BBC + ldr r0, _0807C570 @ =gWeatherPtr ldr r4, [r0] ldr r2, _0807C574 @ =0x000006ea adds r1, r4, r2 @@ -2406,7 +2406,7 @@ _0807C520: adds r0, 0x1 strh r0, [r4] _0807C550: - ldr r0, _0807C570 @ =gUnknown_83C2BBC + ldr r0, _0807C570 @ =gWeatherPtr ldr r2, [r0] ldr r3, _0807C578 @ =0x000006e6 adds r1, r2, r3 @@ -2424,12 +2424,12 @@ _0807C566: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C570: .4byte gUnknown_83C2BBC +_0807C570: .4byte gWeatherPtr _0807C574: .4byte 0x000006ea _0807C578: .4byte 0x000006e6 _0807C57C: .4byte 0x000006cc _0807C580: - ldr r0, _0807C5A0 @ =gUnknown_83C2BBC + ldr r0, _0807C5A0 @ =gWeatherPtr ldr r4, [r0] ldr r1, _0807C5A4 @ =0x000006ea adds r0, r4, r1 @@ -2444,12 +2444,12 @@ _0807C580: strb r0, [r1] b _0807C608 .align 2, 0 -_0807C5A0: .4byte gUnknown_83C2BBC +_0807C5A0: .4byte gWeatherPtr _0807C5A4: .4byte 0x000006ea _0807C5A8: .4byte 0x000006eb _0807C5AC: bl Random - ldr r1, _0807C614 @ =gUnknown_83C2BBC + ldr r1, _0807C614 @ =gWeatherPtr ldr r2, [r1] movs r1, 0x1 ands r1, r0 @@ -2465,7 +2465,7 @@ _0807C5AC: _0807C5CA: movs r0, 0x13 bl sub_807A790 - ldr r0, _0807C614 @ =gUnknown_83C2BBC + ldr r0, _0807C614 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C620 @ =0x000006eb adds r0, r1, r2 @@ -2481,7 +2481,7 @@ _0807C5CA: bl SetThunderCounter _0807C5EE: bl Random - ldr r1, _0807C614 @ =gUnknown_83C2BBC + ldr r1, _0807C614 @ =gWeatherPtr ldr r4, [r1] lsls r0, 16 lsrs r0, 16 @@ -2499,13 +2499,13 @@ _0807C608: strh r0, [r4] b _0807C79A .align 2, 0 -_0807C614: .4byte gUnknown_83C2BBC +_0807C614: .4byte gWeatherPtr _0807C618: .4byte 0x000006ec _0807C61C: .4byte 0x000006cc _0807C620: .4byte 0x000006eb _0807C624: .4byte 0x000006e6 _0807C628: - ldr r0, _0807C674 @ =gUnknown_83C2BBC + ldr r0, _0807C674 @ =gWeatherPtr ldr r4, [r0] ldr r0, _0807C678 @ =0x000006e6 adds r5, r4, r0 @@ -2543,7 +2543,7 @@ _0807C63E: movs r0, 0xA b _0807C798 .align 2, 0 -_0807C674: .4byte gUnknown_83C2BBC +_0807C674: .4byte gWeatherPtr _0807C678: .4byte 0x000006e6 _0807C67C: .4byte 0x000006ea _0807C680: .4byte 0x000006ec @@ -2568,7 +2568,7 @@ _0807C6A0: .align 2, 0 _0807C6A8: .4byte 0x000006cc _0807C6AC: - ldr r0, _0807C6C8 @ =gUnknown_83C2BBC + ldr r0, _0807C6C8 @ =gWeatherPtr ldr r2, [r0] ldr r0, _0807C6CC @ =0x000006e6 adds r1, r2, r0 @@ -2583,12 +2583,12 @@ _0807C6AC: movs r0, 0x8 b _0807C798 .align 2, 0 -_0807C6C8: .4byte gUnknown_83C2BBC +_0807C6C8: .4byte gWeatherPtr _0807C6CC: .4byte 0x000006e6 _0807C6D0: .4byte 0x000006cc _0807C6D4: bl Random - ldr r1, _0807C6F8 @ =gUnknown_83C2BBC + ldr r1, _0807C6F8 @ =gWeatherPtr ldr r2, [r1] lsls r0, 16 lsrs r0, 16 @@ -2605,11 +2605,11 @@ _0807C6D4: strh r0, [r2] b _0807C79A .align 2, 0 -_0807C6F8: .4byte gUnknown_83C2BBC +_0807C6F8: .4byte gWeatherPtr _0807C6FC: .4byte 0x000006e6 _0807C700: .4byte 0x000006cc _0807C704: - ldr r0, _0807C73C @ =gUnknown_83C2BBC + ldr r0, _0807C73C @ =gWeatherPtr ldr r5, [r0] ldr r1, _0807C740 @ =0x000006e6 adds r4, r5, r1 @@ -2634,11 +2634,11 @@ _0807C704: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C73C: .4byte gUnknown_83C2BBC +_0807C73C: .4byte gWeatherPtr _0807C740: .4byte 0x000006e6 _0807C744: .4byte 0x000006cc _0807C748: - ldr r0, _0807C770 @ =gUnknown_83C2BBC + ldr r0, _0807C770 @ =gWeatherPtr ldr r4, [r0] ldr r3, _0807C774 @ =0x000006e6 adds r1, r4, r3 @@ -2658,11 +2658,11 @@ _0807C748: adds r0, 0x1 b _0807C798 .align 2, 0 -_0807C770: .4byte gUnknown_83C2BBC +_0807C770: .4byte gWeatherPtr _0807C774: .4byte 0x000006e6 _0807C778: .4byte 0x000006cc _0807C77C: - ldr r0, _0807C7A0 @ =gUnknown_83C2BBC + ldr r0, _0807C7A0 @ =gWeatherPtr ldr r2, [r0] ldr r1, _0807C7A4 @ =0x000006c6 adds r0, r2, r1 @@ -2684,7 +2684,7 @@ _0807C79A: pop {r0} bx r0 .align 2, 0 -_0807C7A0: .4byte gUnknown_83C2BBC +_0807C7A0: .4byte gWeatherPtr _0807C7A4: .4byte 0x000006c6 _0807C7A8: .4byte 0x000006ea _0807C7AC: .4byte 0x000006cc @@ -2693,7 +2693,7 @@ _0807C7AC: .4byte 0x000006cc thumb_func_start Rain_Finish Rain_Finish: @ 807C7B0 push {r4-r6,lr} - ldr r0, _0807C7CC @ =gUnknown_83C2BBC + ldr r0, _0807C7CC @ =gWeatherPtr ldr r6, [r0] ldr r0, _0807C7D0 @ =0x000006ce adds r5, r6, r0 @@ -2706,7 +2706,7 @@ Rain_Finish: @ 807C7B0 beq _0807C7DA b _0807C84C .align 2, 0 -_0807C7CC: .4byte gUnknown_83C2BBC +_0807C7CC: .4byte gWeatherPtr _0807C7D0: .4byte 0x000006ce _0807C7D4: cmp r1, 0x2 @@ -2721,7 +2721,7 @@ _0807C7DA: strh r0, [r5] _0807C7E6: bl Rain_Main - ldr r0, _0807C824 @ =gUnknown_83C2BBC + ldr r0, _0807C824 @ =gWeatherPtr ldr r2, [r0] ldr r1, _0807C820 @ =0x000006ea adds r0, r2, r1 @@ -2749,7 +2749,7 @@ _0807C7E6: b _0807C854 .align 2, 0 _0807C820: .4byte 0x000006ea -_0807C824: .4byte gUnknown_83C2BBC +_0807C824: .4byte gWeatherPtr _0807C828: .4byte 0x000006d9 _0807C82C: .4byte 0x000006ce _0807C830: @@ -2783,7 +2783,7 @@ SetThunderCounter: @ 807C85C push {r4-r6,lr} lsls r0, 16 lsrs r6, r0, 16 - ldr r0, _0807C890 @ =gUnknown_83C2BBC + ldr r0, _0807C890 @ =gWeatherPtr ldr r4, [r0] ldr r0, _0807C894 @ =0x000006ed adds r5, r4, r0 @@ -2806,14 +2806,14 @@ _0807C88A: pop {r0} bx r0 .align 2, 0 -_0807C890: .4byte gUnknown_83C2BBC +_0807C890: .4byte gWeatherPtr _0807C894: .4byte 0x000006ed thumb_func_end SetThunderCounter thumb_func_start UpdateThunderSound UpdateThunderSound: @ 807C898 push {r4,lr} - ldr r0, _0807C8D0 @ =gUnknown_83C2BBC + ldr r0, _0807C8D0 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C8D4 @ =0x000006ed adds r0, r1, r2 @@ -2838,13 +2838,13 @@ UpdateThunderSound: @ 807C898 bl PlaySE b _0807C8DE .align 2, 0 -_0807C8D0: .4byte gUnknown_83C2BBC +_0807C8D0: .4byte gWeatherPtr _0807C8D4: .4byte 0x000006ed _0807C8D8: movs r0, 0x51 bl PlaySE _0807C8DE: - ldr r0, _0807C8EC @ =gUnknown_83C2BBC + ldr r0, _0807C8EC @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807C8F0 @ =0x000006ed adds r0, r1 @@ -2852,7 +2852,7 @@ _0807C8DE: strb r1, [r0] b _0807C8F8 .align 2, 0 -_0807C8EC: .4byte gUnknown_83C2BBC +_0807C8EC: .4byte gWeatherPtr _0807C8F0: .4byte 0x000006ed _0807C8F4: subs r0, 0x1 @@ -2866,7 +2866,7 @@ _0807C8F8: thumb_func_start Fog1_InitVars Fog1_InitVars: @ 807C900 push {lr} - ldr r0, _0807C94C @ =gUnknown_83C2BBC + ldr r0, _0807C94C @ =gWeatherPtr ldr r3, [r0] ldr r0, _0807C950 @ =0x000006cc adds r1, r3, r0 @@ -2904,7 +2904,7 @@ _0807C948: pop {r0} bx r0 .align 2, 0 -_0807C94C: .4byte gUnknown_83C2BBC +_0807C94C: .4byte gWeatherPtr _0807C950: .4byte 0x000006cc _0807C954: .4byte 0x000006d2 _0807C958: .4byte 0x000006c2 @@ -2915,7 +2915,7 @@ _0807C95C: .4byte 0x000006fb Fog1_InitAll: @ 807C960 push {r4,lr} bl Fog1_InitVars - ldr r0, _0807C988 @ =gUnknown_83C2BBC + ldr r0, _0807C988 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807C98C @ =0x000006d2 adds r0, r1, r2 @@ -2933,14 +2933,14 @@ _0807C980: pop {r0} bx r0 .align 2, 0 -_0807C988: .4byte gUnknown_83C2BBC +_0807C988: .4byte gWeatherPtr _0807C98C: .4byte 0x000006d2 thumb_func_end Fog1_InitAll thumb_func_start Fog1_Main Fog1_Main: @ 807C990 push {r4-r6,lr} - ldr r0, _0807C9DC @ =gUnknown_83C2BBC + ldr r0, _0807C9DC @ =gWeatherPtr ldr r6, [r0] ldr r0, _0807C9E0 @ =gSpriteCoordOffsetX ldr r1, _0807C9E4 @ =0x000006f2 @@ -2978,7 +2978,7 @@ _0807C9CA: beq _0807CA30 b _0807CA46 .align 2, 0 -_0807C9DC: .4byte gUnknown_83C2BBC +_0807C9DC: .4byte gWeatherPtr _0807C9E0: .4byte gSpriteCoordOffsetX _0807C9E4: .4byte 0x000006f2 _0807C9E8: .4byte 0x000006ee @@ -3002,7 +3002,7 @@ _0807CA0C: movs r2, 0 bl Weather_SetTargetBlendCoeffs _0807CA16: - ldr r0, _0807CA28 @ =gUnknown_83C2BBC + ldr r0, _0807CA28 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807CA2C @ =0x000006cc adds r1, r0 @@ -3011,7 +3011,7 @@ _0807CA16: strh r0, [r1] b _0807CA46 .align 2, 0 -_0807CA28: .4byte gUnknown_83C2BBC +_0807CA28: .4byte gWeatherPtr _0807CA2C: .4byte 0x000006cc _0807CA30: bl Weather_UpdateBlend @@ -3035,7 +3035,7 @@ _0807CA4C: .4byte 0x000006d2 thumb_func_start Fog1_Finish Fog1_Finish: @ 807CA50 push {r4,lr} - ldr r0, _0807CAA0 @ =gUnknown_83C2BBC + ldr r0, _0807CAA0 @ =gWeatherPtr ldr r2, [r0] ldr r0, _0807CAA4 @ =gSpriteCoordOffsetX ldr r1, _0807CAA8 @ =0x000006f2 @@ -3075,7 +3075,7 @@ _0807CA8A: beq _0807CABA b _0807CADE .align 2, 0 -_0807CAA0: .4byte gUnknown_83C2BBC +_0807CAA0: .4byte gWeatherPtr _0807CAA4: .4byte gSpriteCoordOffsetX _0807CAA8: .4byte 0x000006f2 _0807CAAC: .4byte 0x000006ee @@ -3121,7 +3121,7 @@ Fog1SpriteCallback: @ 807CAEC ldr r0, _0807CB38 @ =gSpriteCoordOffsetY ldrb r0, [r0] strh r0, [r3, 0x26] - ldr r0, _0807CB3C @ =gUnknown_83C2BBC + ldr r0, _0807CB3C @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807CB40 @ =0x000006ee adds r2, r0, r1 @@ -3156,7 +3156,7 @@ _0807CB30: bx r0 .align 2, 0 _0807CB38: .4byte gSpriteCoordOffsetY -_0807CB3C: .4byte gUnknown_83C2BBC +_0807CB3C: .4byte gWeatherPtr _0807CB40: .4byte 0x000006ee _0807CB44: .4byte 0x010f0000 _0807CB48: .4byte 0x000001ff @@ -3166,7 +3166,7 @@ _0807CB48: .4byte 0x000001ff CreateFog1Sprites: @ 807CB4C push {r4,r5,lr} sub sp, 0x8 - ldr r0, _0807CBC0 @ =gUnknown_83C2BBC + ldr r0, _0807CBC0 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807CBC4 @ =0x000006fb adds r0, r1 @@ -3211,7 +3211,7 @@ _0807CB70: lsrs r0, 10 adds r0, 0x20 strh r0, [r4, 0x22] - ldr r2, _0807CBC0 @ =gUnknown_83C2BBC + ldr r2, _0807CBC0 @ =gWeatherPtr ldr r0, [r2] lsls r1, r5, 2 adds r0, 0xA0 @@ -3219,13 +3219,13 @@ _0807CB70: str r4, [r0] b _0807CBE2 .align 2, 0 -_0807CBC0: .4byte gUnknown_83C2BBC +_0807CBC0: .4byte gWeatherPtr _0807CBC4: .4byte 0x000006fb _0807CBC8: .4byte gUnknown_83C67A8 _0807CBCC: .4byte gUnknown_83C6790 _0807CBD0: .4byte gSprites _0807CBD4: - ldr r2, _0807CC00 @ =gUnknown_83C2BBC + ldr r2, _0807CC00 @ =gWeatherPtr ldr r1, [r2] lsls r0, r5, 2 adds r1, 0xA0 @@ -3249,14 +3249,14 @@ _0807CBF6: pop {r0} bx r0 .align 2, 0 -_0807CC00: .4byte gUnknown_83C2BBC +_0807CC00: .4byte gWeatherPtr _0807CC04: .4byte 0x000006fb thumb_func_end CreateFog1Sprites thumb_func_start DestroyFog1Sprites DestroyFog1Sprites: @ 807CC08 push {r4,r5,lr} - ldr r0, _0807CC50 @ =gUnknown_83C2BBC + ldr r0, _0807CC50 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807CC54 @ =0x000006fb adds r0, r1, r2 @@ -3281,7 +3281,7 @@ _0807CC2C: bls _0807CC1E ldr r0, _0807CC58 @ =0x00001201 bl FreeSpriteTilesByTag - ldr r0, _0807CC50 @ =gUnknown_83C2BBC + ldr r0, _0807CC50 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807CC54 @ =0x000006fb adds r0, r1 @@ -3292,7 +3292,7 @@ _0807CC48: pop {r0} bx r0 .align 2, 0 -_0807CC50: .4byte gUnknown_83C2BBC +_0807CC50: .4byte gWeatherPtr _0807CC54: .4byte 0x000006fb _0807CC58: .4byte 0x00001201 thumb_func_end DestroyFog1Sprites @@ -3300,7 +3300,7 @@ _0807CC58: .4byte 0x00001201 thumb_func_start Ash_InitVars Ash_InitVars: @ 807CC5C push {lr} - ldr r0, _0807CCA8 @ =gUnknown_83C2BBC + ldr r0, _0807CCA8 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807CCAC @ =0x000006cc adds r2, r1, r0 @@ -3337,7 +3337,7 @@ _0807CCA4: pop {r0} bx r0 .align 2, 0 -_0807CCA8: .4byte gUnknown_83C2BBC +_0807CCA8: .4byte gWeatherPtr _0807CCAC: .4byte 0x000006cc _0807CCB0: .4byte 0x000006d2 _0807CCB4: .4byte 0x000006c2 @@ -3347,7 +3347,7 @@ _0807CCB4: .4byte 0x000006c2 Ash_InitAll: @ 807CCB8 push {r4,lr} bl Ash_InitVars - ldr r0, _0807CCE0 @ =gUnknown_83C2BBC + ldr r0, _0807CCE0 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807CCE4 @ =0x000006d2 adds r0, r1, r2 @@ -3365,14 +3365,14 @@ _0807CCD8: pop {r0} bx r0 .align 2, 0 -_0807CCE0: .4byte gUnknown_83C2BBC +_0807CCE0: .4byte gWeatherPtr _0807CCE4: .4byte 0x000006d2 thumb_func_end Ash_InitAll thumb_func_start Ash_Main Ash_Main: @ 807CCE8 push {r4,r5,lr} - ldr r2, _0807CD2C @ =gUnknown_83C2BBC + ldr r2, _0807CD2C @ =gWeatherPtr ldr r1, [r2] ldr r0, _0807CD30 @ =gSpriteCoordOffsetX ldrh r0, [r0] @@ -3407,7 +3407,7 @@ _0807CD14: beq _0807CD46 b _0807CD88 .align 2, 0 -_0807CD2C: .4byte gUnknown_83C2BBC +_0807CD2C: .4byte gWeatherPtr _0807CD30: .4byte gSpriteCoordOffsetX _0807CD34: .4byte 0x000001ff _0807CD38: .4byte 0x000006fc @@ -3460,7 +3460,7 @@ _0807CD8C: thumb_func_start Ash_Finish Ash_Finish: @ 807CD94 push {r4,lr} - ldr r0, _0807CDB0 @ =gUnknown_83C2BBC + ldr r0, _0807CDB0 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807CDB4 @ =0x000006ce adds r4, r0, r1 @@ -3473,7 +3473,7 @@ Ash_Finish: @ 807CD94 beq _0807CDBE b _0807CDEE .align 2, 0 -_0807CDB0: .4byte gUnknown_83C2BBC +_0807CDB0: .4byte gWeatherPtr _0807CDB4: .4byte 0x000006ce _0807CDB8: cmp r0, 0x2 @@ -3528,7 +3528,7 @@ _0807CE08: .4byte gUnknown_83C67B0 thumb_func_start CreateAshSprites CreateAshSprites: @ 807CE0C push {r4,r5,lr} - ldr r0, _0807CE78 @ =gUnknown_83C2BBC + ldr r0, _0807CE78 @ =gWeatherPtr ldr r0, [r0] movs r1, 0xE0 lsls r1, 3 @@ -3571,7 +3571,7 @@ _0807CE20: lsls r0, 6 adds r0, 0x20 strh r0, [r4, 0x2E] - ldr r2, _0807CE78 @ =gUnknown_83C2BBC + ldr r2, _0807CE78 @ =gWeatherPtr ldr r0, [r2] lsls r1, r5, 2 adds r0, 0xF0 @@ -3579,11 +3579,11 @@ _0807CE20: str r4, [r0] b _0807CE92 .align 2, 0 -_0807CE78: .4byte gUnknown_83C2BBC +_0807CE78: .4byte gWeatherPtr _0807CE7C: .4byte gUnknown_83C67D0 _0807CE80: .4byte gSprites _0807CE84: - ldr r2, _0807CEB0 @ =gUnknown_83C2BBC + ldr r2, _0807CEB0 @ =gWeatherPtr ldr r1, [r2] lsls r0, r5, 2 adds r1, 0xF0 @@ -3607,13 +3607,13 @@ _0807CEA8: pop {r0} bx r0 .align 2, 0 -_0807CEB0: .4byte gUnknown_83C2BBC +_0807CEB0: .4byte gWeatherPtr thumb_func_end CreateAshSprites thumb_func_start DestroyAshSprites DestroyAshSprites: @ 807CEB4 push {r4,r5,lr} - ldr r0, _0807CF00 @ =gUnknown_83C2BBC + ldr r0, _0807CF00 @ =gWeatherPtr ldr r1, [r0] movs r2, 0xE0 lsls r2, 3 @@ -3639,7 +3639,7 @@ _0807CEDA: bls _0807CECC ldr r0, _0807CF04 @ =0x00001202 bl FreeSpriteTilesByTag - ldr r0, _0807CF00 @ =gUnknown_83C2BBC + ldr r0, _0807CF00 @ =gWeatherPtr ldr r0, [r0] movs r1, 0xE0 lsls r1, 3 @@ -3651,7 +3651,7 @@ _0807CEF8: pop {r0} bx r0 .align 2, 0 -_0807CF00: .4byte gUnknown_83C2BBC +_0807CF00: .4byte gWeatherPtr _0807CF04: .4byte 0x00001202 thumb_func_end DestroyAshSprites @@ -3677,7 +3677,7 @@ _0807CF24: ldrh r1, [r1] adds r0, r1 strh r0, [r3, 0x22] - ldr r0, _0807CF74 @ =gUnknown_83C2BBC + ldr r0, _0807CF74 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807CF78 @ =0x000006fc adds r2, r0, r1 @@ -3712,7 +3712,7 @@ _0807CF68: bx r0 .align 2, 0 _0807CF70: .4byte gSpriteCoordOffsetY -_0807CF74: .4byte gUnknown_83C2BBC +_0807CF74: .4byte gWeatherPtr _0807CF78: .4byte 0x000006fc _0807CF7C: .4byte 0x010f0000 _0807CF80: .4byte 0x000001ff @@ -3721,7 +3721,7 @@ _0807CF80: .4byte 0x000001ff thumb_func_start Fog2_InitVars Fog2_InitVars: @ 807CF84 push {r4,lr} - ldr r0, _0807CFF4 @ =gUnknown_83C2BBC + ldr r0, _0807CFF4 @ =gWeatherPtr ldr r3, [r0] ldr r1, _0807CFF8 @ =0x000006cc adds r0, r3, r1 @@ -3777,7 +3777,7 @@ _0807CFEE: pop {r0} bx r0 .align 2, 0 -_0807CFF4: .4byte gUnknown_83C2BBC +_0807CFF4: .4byte gWeatherPtr _0807CFF8: .4byte 0x000006cc _0807CFFC: .4byte 0x000006d2 _0807D000: .4byte 0x000006c2 @@ -3788,7 +3788,7 @@ _0807D004: .4byte 0x00000724 Fog2_InitAll: @ 807D008 push {r4,lr} bl Fog2_InitVars - ldr r0, _0807D030 @ =gUnknown_83C2BBC + ldr r0, _0807D030 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D034 @ =0x000006d2 adds r0, r1, r2 @@ -3806,7 +3806,7 @@ _0807D028: pop {r0} bx r0 .align 2, 0 -_0807D030: .4byte gUnknown_83C2BBC +_0807D030: .4byte gWeatherPtr _0807D034: .4byte 0x000006d2 thumb_func_end Fog2_InitAll @@ -3814,7 +3814,7 @@ _0807D034: .4byte 0x000006d2 Fog2_Main: @ 807D038 push {r4,r5,lr} bl sub_807D0FC - ldr r0, _0807D058 @ =gUnknown_83C2BBC + ldr r0, _0807D058 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807D05C @ =0x000006cc adds r4, r5, r0 @@ -3827,7 +3827,7 @@ Fog2_Main: @ 807D038 beq _0807D066 b _0807D090 .align 2, 0 -_0807D058: .4byte gUnknown_83C2BBC +_0807D058: .4byte gWeatherPtr _0807D05C: .4byte 0x000006cc _0807D060: cmp r0, 0x2 @@ -3867,7 +3867,7 @@ _0807D098: .4byte 0x000006d2 Fog2_Finish: @ 807D09C push {r4,lr} bl sub_807D0FC - ldr r0, _0807D0BC @ =gUnknown_83C2BBC + ldr r0, _0807D0BC @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D0C0 @ =0x000006ce adds r4, r0, r1 @@ -3880,7 +3880,7 @@ Fog2_Finish: @ 807D09C beq _0807D0CA b _0807D0EE .align 2, 0 -_0807D0BC: .4byte gUnknown_83C2BBC +_0807D0BC: .4byte gWeatherPtr _0807D0C0: .4byte 0x000006ce _0807D0C4: cmp r0, 0x2 @@ -3919,7 +3919,7 @@ _0807D0F4: thumb_func_start sub_807D0FC sub_807D0FC: @ 807D0FC push {r4,r5,lr} - ldr r0, _0807D174 @ =gUnknown_83C2BBC + ldr r0, _0807D174 @ =gWeatherPtr ldr r3, [r0] ldr r0, _0807D178 @ =0x0000071c adds r2, r3, r0 @@ -3981,7 +3981,7 @@ _0807D144: pop {r0} bx r0 .align 2, 0 -_0807D174: .4byte gUnknown_83C2BBC +_0807D174: .4byte gWeatherPtr _0807D178: .4byte 0x0000071c _0807D17C: .4byte 0x0000ffff _0807D180: .4byte 0x0000071e @@ -3994,7 +3994,7 @@ _0807D18C: .4byte gSpriteCoordOffsetY CreateFog2Sprites: @ 807D190 push {r4-r6,lr} sub sp, 0x8 - ldr r0, _0807D1FC @ =gUnknown_83C2BBC + ldr r0, _0807D1FC @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D200 @ =0x00000724 adds r0, r1 @@ -4034,7 +4034,7 @@ _0807D1B4: bl __umodsi3 strh r0, [r4, 0x2E] strh r5, [r4, 0x30] - ldr r2, _0807D1FC @ =gUnknown_83C2BBC + ldr r2, _0807D1FC @ =gWeatherPtr ldr r0, [r2] lsls r1, r6, 2 movs r3, 0xA0 @@ -4044,13 +4044,13 @@ _0807D1B4: str r4, [r0] b _0807D222 .align 2, 0 -_0807D1FC: .4byte gUnknown_83C2BBC +_0807D1FC: .4byte gWeatherPtr _0807D200: .4byte 0x00000724 _0807D204: .4byte gUnknown_83C67E8 _0807D208: .4byte gUnknown_83C6804 _0807D20C: .4byte gSprites _0807D210: - ldr r2, _0807D240 @ =gUnknown_83C2BBC + ldr r2, _0807D240 @ =gWeatherPtr ldr r1, [r2] lsls r0, r6, 2 movs r3, 0xA0 @@ -4076,14 +4076,14 @@ _0807D236: pop {r0} bx r0 .align 2, 0 -_0807D240: .4byte gUnknown_83C2BBC +_0807D240: .4byte gWeatherPtr _0807D244: .4byte 0x00000724 thumb_func_end CreateFog2Sprites thumb_func_start DestroyFog2Sprites DestroyFog2Sprites: @ 807D248 push {r4,r5,lr} - ldr r0, _0807D290 @ =gUnknown_83C2BBC + ldr r0, _0807D290 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D294 @ =0x00000724 adds r0, r1, r2 @@ -4109,7 +4109,7 @@ _0807D26E: bls _0807D260 ldr r0, _0807D298 @ =0x00001203 bl FreeSpriteTilesByTag - ldr r0, _0807D290 @ =gUnknown_83C2BBC + ldr r0, _0807D290 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D294 @ =0x00000724 adds r0, r1 @@ -4120,7 +4120,7 @@ _0807D28A: pop {r0} bx r0 .align 2, 0 -_0807D290: .4byte gUnknown_83C2BBC +_0807D290: .4byte gWeatherPtr _0807D294: .4byte 0x00000724 _0807D298: .4byte 0x00001203 thumb_func_end DestroyFog2Sprites @@ -4129,7 +4129,7 @@ _0807D298: .4byte 0x00001203 Fog2SpriteCallback: @ 807D29C push {r4,lr} adds r3, r0, 0 - ldr r0, _0807D2EC @ =gUnknown_83C2BBC + ldr r0, _0807D2EC @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D2F0 @ =0x0000071a adds r0, r1, r2 @@ -4168,7 +4168,7 @@ _0807D2E4: pop {r0} bx r0 .align 2, 0 -_0807D2EC: .4byte gUnknown_83C2BBC +_0807D2EC: .4byte gWeatherPtr _0807D2F0: .4byte 0x0000071a _0807D2F4: .4byte 0x010f0000 _0807D2F8: .4byte 0x000001ff @@ -4177,7 +4177,7 @@ _0807D2F8: .4byte 0x000001ff thumb_func_start Sandstorm_InitVars Sandstorm_InitVars: @ 807D2FC push {r4,lr} - ldr r0, _0807D360 @ =gUnknown_83C2BBC + ldr r0, _0807D360 @ =gWeatherPtr ldr r3, [r0] ldr r0, _0807D364 @ =0x000006cc adds r1, r3, r0 @@ -4227,7 +4227,7 @@ _0807D358: pop {r0} bx r0 .align 2, 0 -_0807D360: .4byte gUnknown_83C2BBC +_0807D360: .4byte gWeatherPtr _0807D364: .4byte 0x000006cc _0807D368: .4byte 0x000006d2 _0807D36C: .4byte 0x000006c1 @@ -4240,7 +4240,7 @@ _0807D378: .4byte 0x00000712 Sandstorm_InitAll: @ 807D37C push {r4,lr} bl Sandstorm_InitVars - ldr r0, _0807D3A4 @ =gUnknown_83C2BBC + ldr r0, _0807D3A4 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D3A8 @ =0x000006d2 adds r0, r1, r2 @@ -4258,7 +4258,7 @@ _0807D39C: pop {r0} bx r0 .align 2, 0 -_0807D3A4: .4byte gUnknown_83C2BBC +_0807D3A4: .4byte gWeatherPtr _0807D3A8: .4byte 0x000006d2 thumb_func_end Sandstorm_InitAll @@ -4267,7 +4267,7 @@ Sandstorm_Main: @ 807D3AC push {r4,r5,lr} bl sub_807D4C4 bl sub_807D48C - ldr r0, _0807D3DC @ =gUnknown_83C2BBC + ldr r0, _0807D3DC @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807D3E0 @ =0x00000712 adds r1, r5, r0 @@ -4288,7 +4288,7 @@ _0807D3C8: beq _0807D3EE b _0807D41C .align 2, 0 -_0807D3DC: .4byte gUnknown_83C2BBC +_0807D3DC: .4byte gWeatherPtr _0807D3E0: .4byte 0x00000712 _0807D3E4: .4byte 0x000006cc _0807D3E8: @@ -4331,7 +4331,7 @@ Sandstorm_Finish: @ 807D428 push {r4,lr} bl sub_807D4C4 bl sub_807D48C - ldr r0, _0807D44C @ =gUnknown_83C2BBC + ldr r0, _0807D44C @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D450 @ =0x000006ce adds r4, r0, r1 @@ -4344,7 +4344,7 @@ Sandstorm_Finish: @ 807D428 beq _0807D45A b _0807D47E .align 2, 0 -_0807D44C: .4byte gUnknown_83C2BBC +_0807D44C: .4byte gWeatherPtr _0807D450: .4byte 0x000006ce _0807D454: cmp r0, 0x2 @@ -4383,7 +4383,7 @@ _0807D484: thumb_func_start sub_807D48C sub_807D48C: @ 807D48C push {lr} - ldr r0, _0807D4B8 @ =gUnknown_83C2BBC + ldr r0, _0807D4B8 @ =gWeatherPtr ldr r2, [r0] ldr r0, _0807D4BC @ =0x00000714 adds r3, r2, r0 @@ -4405,7 +4405,7 @@ _0807D4B2: pop {r0} bx r0 .align 2, 0 -_0807D4B8: .4byte gUnknown_83C2BBC +_0807D4B8: .4byte gWeatherPtr _0807D4BC: .4byte 0x00000714 _0807D4C0: .4byte 0x00000712 thumb_func_end sub_807D48C @@ -4413,7 +4413,7 @@ _0807D4C0: .4byte 0x00000712 thumb_func_start sub_807D4C4 sub_807D4C4: @ 807D4C4 push {r4-r6,lr} - ldr r0, _0807D528 @ =gUnknown_83C2BBC + ldr r0, _0807D528 @ =gWeatherPtr ldr r2, [r0] ldr r0, _0807D52C @ =0x00000704 adds r4, r2, r0 @@ -4463,7 +4463,7 @@ sub_807D4C4: @ 807D4C4 pop {r0} bx r0 .align 2, 0 -_0807D528: .4byte gUnknown_83C2BBC +_0807D528: .4byte gWeatherPtr _0807D52C: .4byte 0x00000704 _0807D530: .4byte gSineTable _0807D534: .4byte 0x00000712 @@ -4475,7 +4475,7 @@ _0807D540: .4byte gSpriteCoordOffsetY thumb_func_start sub_807D544 sub_807D544: @ 807D544 push {r4,r5,lr} - ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, _0807D5C8 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D5CC @ =0x00000716 adds r0, r1, r2 @@ -4499,7 +4499,7 @@ _0807D56A: lsrs r4, r0, 16 cmp r4, 0x13 bls _0807D55C - ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, _0807D5C8 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D5CC @ =0x00000716 adds r0, r1 @@ -4508,7 +4508,7 @@ _0807D56A: ldr r0, _0807D5D0 @ =0x00001204 bl FreeSpriteTilesByTag _0807D586: - ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, _0807D5C8 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D5D4 @ =0x00000717 adds r0, r1, r2 @@ -4532,7 +4532,7 @@ _0807D5AA: lsrs r4, r0, 16 cmp r4, 0x4 bls _0807D59C - ldr r0, _0807D5C8 @ =gUnknown_83C2BBC + ldr r0, _0807D5C8 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D5D4 @ =0x00000717 adds r0, r1 @@ -4543,7 +4543,7 @@ _0807D5C0: pop {r0} bx r0 .align 2, 0 -_0807D5C8: .4byte gUnknown_83C2BBC +_0807D5C8: .4byte gWeatherPtr _0807D5CC: .4byte 0x00000716 _0807D5D0: .4byte 0x00001204 _0807D5D4: .4byte 0x00000717 @@ -4553,7 +4553,7 @@ _0807D5D4: .4byte 0x00000717 CreateSandstormSprites_1: @ 807D5D8 push {r4-r7,lr} sub sp, 0x4 - ldr r0, _0807D648 @ =gUnknown_83C2BBC + ldr r0, _0807D648 @ =gWeatherPtr ldr r0, [r0] ldr r1, _0807D64C @ =0x00000716 adds r0, r1 @@ -4563,7 +4563,7 @@ CreateSandstormSprites_1: @ 807D5D8 ldr r0, _0807D650 @ =gUnknown_83C6854 bl LoadSpriteSheet ldr r0, _0807D654 @ =gUnknown_83C2D20 - bl sub_807ABC0 + bl LoadCustomWeatherSpritePalette movs r7, 0 _0807D5F8: adds r0, r7, 0 @@ -4580,7 +4580,7 @@ _0807D5F8: lsrs r1, r0, 24 cmp r1, 0x40 beq _0807D660 - ldr r2, _0807D648 @ =gUnknown_83C2BBC + ldr r2, _0807D648 @ =gWeatherPtr ldr r5, [r2] lsls r0, r7, 2 movs r3, 0xC8 @@ -4603,14 +4603,14 @@ _0807D5F8: ldr r2, [sp] b _0807D672 .align 2, 0 -_0807D648: .4byte gUnknown_83C2BBC +_0807D648: .4byte gWeatherPtr _0807D64C: .4byte 0x00000716 _0807D650: .4byte gUnknown_83C6854 _0807D654: .4byte gUnknown_83C2D20 _0807D658: .4byte gUnknown_83C683C _0807D65C: .4byte gSprites _0807D660: - ldr r2, _0807D690 @ =gUnknown_83C2BBC + ldr r2, _0807D690 @ =gWeatherPtr ldr r1, [r2] lsls r0, r7, 2 movs r3, 0xC8 @@ -4636,7 +4636,7 @@ _0807D686: pop {r0} bx r0 .align 2, 0 -_0807D690: .4byte gUnknown_83C2BBC +_0807D690: .4byte gWeatherPtr _0807D694: .4byte 0x00000716 thumb_func_end CreateSandstormSprites_1 @@ -4647,7 +4647,7 @@ CreateSandstormSprites_2: @ 807D698 mov r6, r9 mov r5, r8 push {r5-r7} - ldr r4, _0807D740 @ =gUnknown_83C2BBC + ldr r4, _0807D740 @ =gWeatherPtr ldr r0, [r4] ldr r1, _0807D744 @ =0x00000717 adds r0, r1 @@ -4724,7 +4724,7 @@ _0807D6B8: str r0, [r1, 0x1C] b _0807D76E .align 2, 0 -_0807D740: .4byte gUnknown_83C2BBC +_0807D740: .4byte gWeatherPtr _0807D744: .4byte 0x00000717 _0807D748: .4byte gUnknown_83C683C _0807D74C: .4byte gSprites @@ -4769,7 +4769,7 @@ _0807D794: .4byte 0x00000717 SandstormSpriteCallback1: @ 807D798 push {r4,lr} adds r3, r0, 0 - ldr r0, _0807D7E8 @ =gUnknown_83C2BBC + ldr r0, _0807D7E8 @ =gWeatherPtr ldr r1, [r0] movs r2, 0xE2 lsls r2, 3 @@ -4808,7 +4808,7 @@ _0807D7E0: pop {r0} bx r0 .align 2, 0 -_0807D7E8: .4byte gUnknown_83C2BBC +_0807D7E8: .4byte gWeatherPtr _0807D7EC: .4byte 0x0000070e _0807D7F0: .4byte 0x010f0000 _0807D7F4: .4byte 0x000001ff @@ -4902,7 +4902,7 @@ _0807D88C: .4byte gSineTable thumb_func_start Weather11_InitVars Weather11_InitVars: @ 807D890 - ldr r0, _0807D8B0 @ =gUnknown_83C2BBC + ldr r0, _0807D8B0 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807D8B4 @ =0x000006cc adds r2, r1, r0 @@ -4918,7 +4918,7 @@ Weather11_InitVars: @ 807D890 strb r0, [r1] bx lr .align 2, 0 -_0807D8B0: .4byte gUnknown_83C2BBC +_0807D8B0: .4byte gWeatherPtr _0807D8B4: .4byte 0x000006cc _0807D8B8: .4byte 0x000006c1 _0807D8BC: .4byte 0x000006c2 @@ -4947,7 +4947,7 @@ sub_807D8D0: @ 807D8D0 Bubbles_InitVars: @ 807D8D4 push {r4,r5,lr} bl Fog1_InitVars - ldr r0, _0807D914 @ =gUnknown_83C2BBC + ldr r0, _0807D914 @ =gWeatherPtr ldr r4, [r0] ldr r1, _0807D918 @ =0x0000072e adds r0, r4, r1 @@ -4976,7 +4976,7 @@ _0807D90C: pop {r0} bx r0 .align 2, 0 -_0807D914: .4byte gUnknown_83C2BBC +_0807D914: .4byte gWeatherPtr _0807D918: .4byte 0x0000072e _0807D91C: .4byte gUnknown_83C6870 _0807D920: .4byte gUnknown_83C6868 @@ -4987,7 +4987,7 @@ _0807D924: .4byte 0x0000072a Bubbles_InitAll: @ 807D928 push {r4,lr} bl Bubbles_InitVars - ldr r0, _0807D950 @ =gUnknown_83C2BBC + ldr r0, _0807D950 @ =gWeatherPtr ldr r1, [r0] ldr r2, _0807D954 @ =0x000006d2 adds r0, r1, r2 @@ -5005,7 +5005,7 @@ _0807D948: pop {r0} bx r0 .align 2, 0 -_0807D950: .4byte gUnknown_83C2BBC +_0807D950: .4byte gWeatherPtr _0807D954: .4byte 0x000006d2 thumb_func_end Bubbles_InitAll @@ -5013,7 +5013,7 @@ _0807D954: .4byte 0x000006d2 Bubbles_Main: @ 807D958 push {r4-r7,lr} bl Fog1_Main - ldr r0, _0807D9B8 @ =gUnknown_83C2BBC + ldr r0, _0807D9B8 @ =gWeatherPtr ldr r5, [r0] ldr r0, _0807D9BC @ =0x00000726 adds r4, r5, r0 @@ -5059,7 +5059,7 @@ _0807D9B0: pop {r0} bx r0 .align 2, 0 -_0807D9B8: .4byte gUnknown_83C2BBC +_0807D9B8: .4byte gWeatherPtr _0807D9BC: .4byte 0x00000726 _0807D9C0: .4byte 0x0000ffff _0807D9C4: .4byte gUnknown_83C6868 @@ -5129,7 +5129,7 @@ sub_807D9E8: @ 807D9E8 strh r0, [r1, 0x2E] strh r0, [r1, 0x30] strh r0, [r1, 0x32] - ldr r0, _0807DA68 @ =gUnknown_83C2BBC + ldr r0, _0807DA68 @ =gWeatherPtr ldr r1, [r0] ldr r0, _0807DA6C @ =0x0000072c adds r1, r0 @@ -5145,7 +5145,7 @@ _0807DA58: .4byte gUnknown_83C6878 _0807DA5C: .4byte gSpriteCoordOffsetY _0807DA60: .4byte gUnknown_83C68BC _0807DA64: .4byte gSprites -_0807DA68: .4byte gUnknown_83C2BBC +_0807DA68: .4byte gWeatherPtr _0807DA6C: .4byte 0x0000072c thumb_func_end sub_807D9E8 diff --git a/asm/field_weather_util.s b/asm/field_weather_util.s new file mode 100644 index 000000000..c31f35763 --- /dev/null +++ b/asm/field_weather_util.s @@ -0,0 +1,295 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_807B0C4 +sub_807B0C4: @ 807B0C4 + push {lr} + adds r1, r0, 0 + adds r3, r2, 0 + ldr r0, _0807B0E8 @ =gWeather + movs r2, 0xDA + lsls r2, 3 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0xB + beq _0807B0F0 + cmp r0, 0xB + bgt _0807B0EC + cmp r0, 0x5 + bgt _0807B0FA + cmp r0, 0x3 + blt _0807B0FA + b _0807B0F0 + .align 2, 0 +_0807B0E8: .4byte gWeather +_0807B0EC: + cmp r0, 0xD + bne _0807B0FA +_0807B0F0: + adds r0, r1, 0 + movs r1, 0 + movs r2, 0x3 + bl sub_8045314 +_0807B0FA: + pop {r0} + bx r0 + thumb_func_end sub_807B0C4 + + thumb_func_start SetSav1Weather +SetSav1Weather: @ 807B100 + push {r4,r5,lr} + ldr r4, _0807B12C @ =gSaveBlock1Ptr + ldr r1, [r4] + adds r1, 0x2E + ldrb r5, [r1] + lsls r0, 24 + lsrs r0, 24 + bl TranslateWeatherNum + ldr r1, [r4] + adds r1, 0x2E + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x2E + ldrb r0, [r0] + adds r1, r5, 0 + bl UpdateRainCounter + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B12C: .4byte gSaveBlock1Ptr + thumb_func_end SetSav1Weather + + thumb_func_start sav1_get_weather_probably +sav1_get_weather_probably: @ 807B130 + ldr r0, _0807B13C @ =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x2E + ldrb r0, [r0] + bx lr + .align 2, 0 +_0807B13C: .4byte gSaveBlock1Ptr + thumb_func_end sav1_get_weather_probably + + thumb_func_start SetSav1WeatherFromCurrMapHeader +SetSav1WeatherFromCurrMapHeader: @ 807B140 + push {r4,r5,lr} + ldr r4, _0807B16C @ =gSaveBlock1Ptr + ldr r0, [r4] + adds r0, 0x2E + ldrb r5, [r0] + ldr r0, _0807B170 @ =gMapHeader + ldrb r0, [r0, 0x16] + bl TranslateWeatherNum + ldr r1, [r4] + adds r1, 0x2E + strb r0, [r1] + ldr r0, [r4] + adds r0, 0x2E + ldrb r0, [r0] + adds r1, r5, 0 + bl UpdateRainCounter + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0807B16C: .4byte gSaveBlock1Ptr +_0807B170: .4byte gMapHeader + thumb_func_end SetSav1WeatherFromCurrMapHeader + + thumb_func_start SetWeather +SetWeather: @ 807B174 + push {lr} + bl SetSav1Weather + bl sav1_get_weather_probably + lsls r0, 24 + lsrs r0, 24 + bl SetNextWeather + pop {r0} + bx r0 + thumb_func_end SetWeather + + thumb_func_start sub_807B18C +sub_807B18C: @ 807B18C + push {lr} + bl SetSav1Weather + bl sav1_get_weather_probably + lsls r0, 24 + lsrs r0, 24 + bl SetCurrentAndNextWeather + pop {r0} + bx r0 + thumb_func_end sub_807B18C + + thumb_func_start DoCurrentWeather +DoCurrentWeather: @ 807B1A4 + push {lr} + bl sav1_get_weather_probably + lsls r0, 24 + lsrs r0, 24 + bl SetNextWeather + pop {r0} + bx r0 + thumb_func_end DoCurrentWeather + + thumb_func_start sub_807B1B8 +sub_807B1B8: @ 807B1B8 + push {lr} + bl sav1_get_weather_probably + lsls r0, 24 + lsrs r0, 24 + bl SetCurrentAndNextWeather + pop {r0} + bx r0 + thumb_func_end sub_807B1B8 + + thumb_func_start TranslateWeatherNum +TranslateWeatherNum: @ 807B1CC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x15 + bhi _0807B294 + lsls r0, 2 + ldr r1, _0807B1E0 @ =_0807B1E4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807B1E0: .4byte _0807B1E4 + .align 2, 0 +_0807B1E4: + .4byte _0807B294 + .4byte _0807B23C + .4byte _0807B240 + .4byte _0807B244 + .4byte _0807B248 + .4byte _0807B24C + .4byte _0807B250 + .4byte _0807B254 + .4byte _0807B258 + .4byte _0807B25C + .4byte _0807B260 + .4byte _0807B264 + .4byte _0807B268 + .4byte _0807B26C + .4byte _0807B270 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B294 + .4byte _0807B274 + .4byte _0807B27C +_0807B23C: + movs r0, 0x1 + b _0807B296 +_0807B240: + movs r0, 0x2 + b _0807B296 +_0807B244: + movs r0, 0x3 + b _0807B296 +_0807B248: + movs r0, 0x4 + b _0807B296 +_0807B24C: + movs r0, 0x5 + b _0807B296 +_0807B250: + movs r0, 0x6 + b _0807B296 +_0807B254: + movs r0, 0x7 + b _0807B296 +_0807B258: + movs r0, 0x8 + b _0807B296 +_0807B25C: + movs r0, 0x9 + b _0807B296 +_0807B260: + movs r0, 0xA + b _0807B296 +_0807B264: + movs r0, 0xB + b _0807B296 +_0807B268: + movs r0, 0xC + b _0807B296 +_0807B26C: + movs r0, 0xD + b _0807B296 +_0807B270: + movs r0, 0xE + b _0807B296 +_0807B274: + ldr r1, _0807B278 @ =gUnknown_83C65C0 + b _0807B27E + .align 2, 0 +_0807B278: .4byte gUnknown_83C65C0 +_0807B27C: + ldr r1, _0807B28C @ =gUnknown_83C65C4 +_0807B27E: + ldr r0, _0807B290 @ =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x2F + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + b _0807B296 + .align 2, 0 +_0807B28C: .4byte gUnknown_83C65C4 +_0807B290: .4byte gSaveBlock1Ptr +_0807B294: + movs r0, 0 +_0807B296: + pop {r1} + bx r1 + thumb_func_end TranslateWeatherNum + + thumb_func_start UpdateWeatherPerDay +UpdateWeatherPerDay: @ 807B29C + lsls r0, 16 + ldr r1, _0807B2B8 @ =gSaveBlock1Ptr + ldr r2, [r1] + adds r2, 0x2F + lsrs r0, 16 + ldrb r1, [r2] + adds r0, r1 + lsls r0, 16 + movs r1, 0xC0 + lsls r1, 10 + ands r1, r0 + lsrs r1, 16 + strb r1, [r2] + bx lr + .align 2, 0 +_0807B2B8: .4byte gSaveBlock1Ptr + thumb_func_end UpdateWeatherPerDay + + thumb_func_start UpdateRainCounter +UpdateRainCounter: @ 807B2BC + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r0, 24 + cmp r0, r1 + beq _0807B2D6 + cmp r2, 0x3 + beq _0807B2D0 + cmp r2, 0x5 + bne _0807B2D6 +_0807B2D0: + movs r0, 0x28 + bl IncrementGameStat +_0807B2D6: + pop {r0} + bx r0 + thumb_func_end UpdateRainCounter + + .align 2, 0 @ Don't pad with nop diff --git a/asm/overworld.s b/asm/overworld.s index 27235fa18..504fecbf1 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1728,7 +1728,7 @@ sub_8055864: @ 8055864 _080558D4: lsls r0, r4, 24 lsrs r0, 24 - bl sub_807AB74 + bl ApplyWeatherGammaShiftToPal adds r4, 0x1 cmp r4, 0xC ble _080558D4 @@ -4644,7 +4644,7 @@ _08057050: bl InitObjectEventPalettes _08057056: bl FieldEffectActiveListClear - bl sub_8079C08 + bl StartWeather bl sub_807B1B8 cmp r4, 0 bne _0805706A @@ -5400,7 +5400,7 @@ _0805769C: bl ResetCameraUpdateInfo bl InstallCameraPanAheadCallback bl FieldEffectActiveListClear - bl sub_8079C08 + bl StartWeather bl sub_807B1B8 bl SetUpFieldTasks bl mapheader_run_script_with_tag_x5 @@ -5451,7 +5451,7 @@ _08057712: ldr r2, _08057738 @ =0x3fffffff movs r0, 0 movs r1, 0 - bl FieldWeather_StartFadingOutCreditsMap + bl FadeSelectedPals _0805772A: ldrb r0, [r4] adds r0, 0x1 diff --git a/data/field_weather.s b/data/field_weather.s index d872998bf..7e40ea747 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -7,139 +7,6 @@ .section .rodata .align 2 -gUnknown_83BFBE4:: @ 83BFBE4 - .incbin "graphics/field_effects/unk_83BFBE4.bin.lz" - -gUnknown_83C0408:: - .incbin "graphics/field_effects/unk_83C0408.bin.lz" - -gUnknown_83C0C00:: - .incbin "graphics/field_effects/unk_83C0C00.bin.lz" - -gUnknown_83C139C:: - .incbin "graphics/field_effects/unk_83C139C.bin.lz" - -gUnknown_83C1BB8:: - .incbin "graphics/field_effects/unk_83C1BB8.bin.lz" - -gUnknown_83C2380:: - .incbin "graphics/field_effects/unk_83C2380.bin.lz" - -gUnknown_83C2BA4:: - .4byte gUnknown_83BFBE4 - .4byte gUnknown_83C0408 - .4byte gUnknown_83C0C00 - .4byte gUnknown_83C139C - .4byte gUnknown_83C1BB8 - .4byte gUnknown_83C2380 - -gUnknown_83C2BBC:: @ 83C2BBC - .4byte gUnknown_2037F34 - -gUnknown_83C2BC0:: @ 83C2BC0 - .4byte sub_8079EC0 - .4byte nullsub_45 - .4byte sub_8079EC0 - .4byte sub_8079EE4 - .4byte Clouds_InitVars - .4byte Clouds_Main - .4byte Clouds_InitAll - .4byte Clouds_Finish - .4byte Weather2_InitVars - .4byte nullsub_48 - .4byte Weather2_InitAll - .4byte sub_807B434 - .4byte LightRain_InitVars - .4byte LightRain_Main - .4byte LightRain_InitAll - .4byte LightRain_Finish - .4byte Snow_InitVars - .4byte snowflakes_progress2 - .4byte Snow_InitAll - .4byte Snow_Finish - .4byte sub_807C2E4 - .4byte Rain_Main - .4byte sub_807C358 - .4byte Rain_Finish - .4byte Fog1_InitVars - .4byte Fog1_Main - .4byte Fog1_InitAll - .4byte Fog1_Finish - .4byte Ash_InitVars - .4byte Ash_Main - .4byte Ash_InitAll - .4byte Ash_Finish - .4byte Sandstorm_InitVars - .4byte Sandstorm_Main - .4byte Sandstorm_InitAll - .4byte Sandstorm_Finish - .4byte Fog2_InitVars - .4byte Fog2_Main - .4byte Fog2_InitAll - .4byte Fog2_Finish - .4byte Fog1_InitVars - .4byte Fog1_Main - .4byte Fog1_InitAll - .4byte Fog1_Finish - .4byte Weather11_InitVars - .4byte nullsub_49 - .4byte Weather11_InitAll - .4byte sub_807D8D0 - .4byte Drought_InitVars - .4byte Drought_Main - .4byte Drought_InitAll - .4byte sub_807B6BC - .4byte sub_807C388 - .4byte Rain_Main - .4byte sub_807C3F4 - .4byte Rain_Finish - .4byte Bubbles_InitVars - .4byte Bubbles_Main - .4byte Bubbles_InitAll - .4byte Bubbles_Finish - -gUnknown_83C2CB0:: @ 83C2CB0 - .4byte sub_8079FFC - .4byte sub_807A084 - .4byte nullsub_46 - .4byte nullsub_46 - -gUnknown_83C2CC0:: @ 83C2CC0 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 - -gUnknown_83C2CE0:: @ 83C2CE0 - .incbin "graphics/field_effects/unk_83C2CE0.gbapal" - -gUnknown_83C2D00:: @ 83C2D00 - .incbin "graphics/field_effects/unk_83C2D00.gbapal" - -gUnknown_83C2D20:: @ 83C2D20 - .incbin "graphics/field_effects/unk_83C2D20.gbapal" - -gUnknown_83C2D40:: - .incbin "graphics/field_effects/unk_83C2D40.4bpp" - -gWeatherFog1Tiles:: @ 83C3540 - .incbin "graphics/field_effects/unk_83C3540.4bpp" - -gUnknown_83C3D40:: - .incbin "graphics/field_effects/unk_83C3D40.4bpp" - -gUnknown_83C4540:: - .incbin "graphics/field_effects/unk_83C4540.4bpp" - -gUnknown_83C4580:: - .incbin "graphics/field_effects/unk_83C4580.4bpp" - -gUnknown_83C45C0:: - .incbin "graphics/field_effects/unk_83C45C0.4bpp" - -gUnknown_83C55C0:: - .incbin "graphics/field_effects/unk_83C55C0.4bpp" - -gUnknown_83C5BC0:: - .incbin "graphics/field_effects/unk_83C5BC0.4bpp" - gUnknown_83C65C0:: @ 83C65C0 .byte 0x02, 0x03, 0x05, 0x03 diff --git a/include/field_weather.h b/include/field_weather.h index 6b62f0edd..1f2d9902e 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -17,7 +17,7 @@ bool8 IsWeatherNotFadingIn(void); void SetWeatherScreenFadeOut(void); void sub_807B070(void); u8 GetCurrentWeather(void); -void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32); +void delay(u8, u8, u32); void UpdateSpritePaletteWithWeather(u8 palIdx); void ResetPreservedPalettesInWeather(void); void PreservePaletteInWeather(u8 palIdx); diff --git a/include/field_weather_util.h b/include/field_weather_util.h new file mode 100644 index 000000000..da49d3869 --- /dev/null +++ b/include/field_weather_util.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FIELD_WEATHER_UTIL_H +#define GUARD_FIELD_WEATHER_UTIL_H + +void SetWeather(u8 weather); + +#endif //GUARD_FIELD_WEATHER_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 4538c714e..854604f8a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -114,7 +114,10 @@ SECTIONS { src/battle_anim_status_effects.o(.text); src/title_screen.o(.text); src/reset_save_heap.o(.text); + src/field_weather.o(.text); asm/field_weather.o(.text); + src/field_weather_util.o(.text); + asm/field_weather_util.o(.text); asm/field_weather_effects.o(.text); src/field_fadetransition.o(.text); src/field_screen_effect.o(.text); @@ -446,6 +449,8 @@ SECTIONS { data/map_events.o(.rodata); src/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); + src/field_weather.o(.rodata); + src/field_weather_util.o(.rodata); data/field_weather.o(.rodata); src/field_screen_effect.o(.rodata); src/battle_setup.o(.rodata); diff --git a/src/credits.c b/src/credits.c index e0d57a2a4..4d7bbd67b 100644 --- a/src/credits.c +++ b/src/credits.c @@ -910,7 +910,7 @@ static s32 RollCredits(void) case CREDITSSCRCMD_MAPNEXT: sCreditsMgr->mainseqno = CREDITSSCENE_MAPNEXT_DESTROYWINDOW; sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param; - FieldWeather_StartFadingOutCreditsMap(1, 0, 0x3FFFFFFF); + FadeSelectedPals(1, 0, 0x3FFFFFFF); break; case CREDITSSCRCMD_MAP: sCreditsMgr->mainseqno = CREDITSSCENE_MAP_LOADMAP_CREATESPRITES; @@ -1305,7 +1305,7 @@ static s32 RollCredits(void) "\tldr r2, _080F3E0C @ =0x3fffffff\n" "\tmovs r0, 0x1\n" "\tmovs r1, 0\n" - "\tbl FieldWeather_StartFadingOutCreditsMap\n" + "\tbl FadeSelectedPals\n" "\tb _080F3E94\n" "\t.align 2, 0\n" "_080F3E04: .4byte sCreditsMgr\n" diff --git a/src/field_weather.c b/src/field_weather.c new file mode 100644 index 000000000..fb5f4eee7 --- /dev/null +++ b/src/field_weather.c @@ -0,0 +1,1320 @@ +#include "global.h" +#include "gflib.h" +#include "blend_palette.h" +#include "field_effect.h" +#include "field_weather.h" +#include "field_weather_util.h" +#include "task.h" +#include "trig.h" +#include "constants/field_weather.h" +#include "constants/weather.h" +#include "constants/songs.h" + +#define DROUGHT_COLOR_INDEX(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) + +enum +{ + GAMMA_NONE, + GAMMA_NORMAL, + GAMMA_ALT, +}; + +struct RGBColor +{ + u16 r:5; + u16 g:5; + u16 b:5; +}; + +struct WeatherPaletteData +{ + u16 gammaShiftColors[8][0x1000]; // 0x1000 is the number of bytes that make up all palettes. +}; + +struct WeatherCallbacks +{ + void (*initVars)(void); + void (*main)(void); + void (*initAll)(void); + bool8 (*finish)(void); +}; + +struct Weather +{ + union + { + struct + { + struct Sprite *rainSprites[MAX_RAIN_SPRITES]; + struct Sprite *snowflakeSprites[101]; + struct Sprite *cloudSprites[NUM_CLOUD_SPRITES]; + } s1; + struct + { + u8 filler0[0xA0]; + struct Sprite *fogHSprites[NUM_FOG_HORIZONTAL_SPRITES]; + struct Sprite *ashSprites[NUM_ASH_SPRITES]; + struct Sprite *fogDSprites[NUM_FOG_DIAGONAL_SPRITES]; + struct Sprite *sandstormSprites1[NUM_SANDSTORM_SPRITES]; + struct Sprite *sandstormSprites2[NUM_SWIRL_SANDSTORM_SPRITES]; + } s2; + } sprites; + u8 gammaShifts[19][32]; + u8 altGammaShifts[19][32]; + s8 gammaIndex; + s8 gammaTargetIndex; + u8 gammaStepDelay; + u8 gammaStepFrameCounter; + u16 fadeDestColor; + /*0x6C6*/ u8 palProcessingState; + /*0x6C7*/ u8 fadeScreenCounter; + /*0x6C8*/ bool8 readyForInit; + /*0x6C9*/ u8 taskId; + /*0x6CA*/ u8 unknown_6CA; + u8 unknown_6CB; + u16 initStep; + u16 finishStep; + u8 currWeather; + u8 nextWeather; + u8 weatherGfxLoaded; + bool8 weatherChangeComplete; + u8 weatherPicSpritePalIndex; + u8 altGammaSpritePalIndex; + u16 rainSpriteVisibleCounter; + u8 curRainSpriteIndex; + u8 targetRainSpriteCount; + u8 rainSpriteCount; + u8 rainSpriteVisibleDelay; + u8 isDownpour; + u8 rainStrength; + /*0x6DE*/ u8 cloudSpritesCreated; + u8 filler_6DF[1]; + u16 snowflakeVisibleCounter; + u16 unknown_6E2; + u8 snowflakeSpriteCount; + u8 targetSnowflakeSpriteCount; + u16 unknown_6E6; + u16 thunderCounter; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 thunderTriggered; + u16 fogHScrollPosX; + u16 fogHScrollCounter; + u16 fogHScrollOffset; + u8 lightenedFogSpritePals[6]; + u8 lightenedFogSpritePalsCount; + u8 fogHSpritesCreated; + u16 ashBaseSpritesX; + u16 unknown_6FE; + u8 ashSpritesCreated; + u8 filler_701[3]; + u32 sandstormXOffset; + u32 sandstormYOffset; + u8 filler_70C[2]; + u16 sandstormBaseSpritesX; + u16 sandstormPosY; + u16 sandstormWaveIndex; + u16 sandstormWaveCounter; + u8 sandstormSpritesCreated; + u8 sandstormSwirlSpritesCreated; + u16 fogDBaseSpritesX; + u16 fogDPosY; + u16 fogDScrollXCounter; + u16 fogDScrollYCounter; + u16 fogDXOffset; + u16 fogDYOffset; + u8 fogDSpritesCreated; + u8 filler_725[1]; + u16 bubblesDelayCounter; + u16 bubblesDelayIndex; + u16 bubblesCoordsIndex; + u16 bubblesSpriteCount; + u8 bubblesSpritesCreated; + u8 filler_72F; + u16 currBlendEVA; + u16 currBlendEVB; + u16 targetBlendEVA; + u16 targetBlendEVB; + u8 blendUpdateCounter; + u8 blendFrameCounter; + u8 blendDelay; + u8 filler_73B[0x3C-0x3B]; + s16 unknown_73C; + s16 unknown_73E; + s16 unknown_740; + s16 unknown_742; + u8 filler_744[0xD-4]; + s8 loadDroughtPalsIndex; + u8 loadDroughtPalsOffset; +}; + +EWRAM_DATA struct Weather gWeather = {}; +EWRAM_DATA u8 sFieldEffectPaletteGammaTypes[32] = {}; +EWRAM_DATA const u8 *sPaletteGammaTypes = NULL; +EWRAM_DATA u16 gUnknown_20386A8 = 0; + +void Task_WeatherMain(u8 taskId); +void Task_WeatherInit(u8 taskId); +void None_Init(void); +void None_Main(void); +bool8 None_Finish(void); +void BuildGammaShiftTables(void); +void UpdateWeatherGammaShift(void); +void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex); +void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor); +void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +void FadeInScreenWithWeather(void); +bool8 FadeInScreen_RainShowShade(void); +bool8 FadeInScreen_Drought(void); +bool8 FadeInScreen_FogHorizontal(void); +void DoNothing(void); +void ApplyFogBlend(u8 blendCoeff, u16 blendColor); +bool8 LightenSpritePaletteInFog(u8 paletteIndex); +void Weather_SetBlendCoeffs(u8, u8); +bool8 Ash_Finish(void); +bool8 Bubbles_Finish(void); +bool8 Clouds_Finish(void); +bool8 Fog1_Finish(void); +bool8 Fog2_Finish(void); +bool8 LightRain_Finish(void); +bool8 Rain_Finish(void); +bool8 Sandstorm_Finish(void); +bool8 Snow_Finish(void); +bool8 sub_807B434(void); +bool8 sub_807B6BC(void); +bool8 sub_807D8D0(void); +void Ash_InitAll(void); +void Ash_InitVars(void); +void Ash_Main(void); +void Bubbles_InitAll(void); +void Bubbles_InitVars(void); +void Bubbles_Main(void); +void Clouds_InitAll(void); +void Clouds_InitVars(void); +void Clouds_Main(void); +void Drought_InitAll(void); +void Drought_InitVars(void); +void Drought_Main(void); +void Fog1_InitAll(void); +void Fog1_InitVars(void); +void Fog1_Main(void); +void Fog2_InitAll(void); +void Fog2_InitVars(void); +void Fog2_Main(void); +void LightRain_InitAll(void); +void LightRain_InitVars(void); +void LightRain_Main(void); +void Rain_Main(void); +void Sandstorm_InitAll(void); +void Sandstorm_InitVars(void); +void Sandstorm_Main(void); +void Snow_InitAll(void); +void Snow_InitVars(void); +void Weather11_InitAll(void); +void Weather11_InitVars(void); +void Weather2_InitAll(void); +void Weather2_InitVars(void); +void nullsub_48(void); +void nullsub_49(void); +void snowflakes_progress2(void); +void sub_807C2E4(void); +void sub_807C358(void); +void sub_807C388(void); +void sub_807C3F4(void); + +const u32 gUnknown_83BFBE4[] = INCBIN_U32("graphics/field_effects/unk_83BFBE4.bin.lz"); +const u32 gUnknown_83C0408[] = INCBIN_U32("graphics/field_effects/unk_83C0408.bin.lz"); +const u32 gUnknown_83C0C00[] = INCBIN_U32("graphics/field_effects/unk_83C0C00.bin.lz"); +const u32 gUnknown_83C139C[] = INCBIN_U32("graphics/field_effects/unk_83C139C.bin.lz"); +const u32 gUnknown_83C1BB8[] = INCBIN_U32("graphics/field_effects/unk_83C1BB8.bin.lz"); +const u32 gUnknown_83C2380[] = INCBIN_U32("graphics/field_effects/unk_83C2380.bin.lz"); + +const u32 *const gUnknown_83C2BA4[] = { + gUnknown_83BFBE4, + gUnknown_83C0408, + gUnknown_83C0C00, + gUnknown_83C139C, + gUnknown_83C1BB8, + gUnknown_83C2380 +}; + +struct Weather *const gWeatherPtr = &gWeather; + +const struct WeatherCallbacks sWeatherFuncs[] = { + {None_Init, None_Main, None_Init, None_Finish}, + {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish}, + {Weather2_InitVars, nullsub_48, Weather2_InitAll, sub_807B434}, + {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, + {Snow_InitVars, snowflakes_progress2, Snow_InitAll, Snow_Finish}, + {sub_807C2E4, Rain_Main, sub_807C358, Rain_Finish}, + {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, + {Ash_InitVars, Ash_Main, Ash_InitAll, Ash_Finish}, + {Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish}, + {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, + {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, + {Weather11_InitVars, nullsub_49, Weather11_InitAll, sub_807D8D0}, + {Drought_InitVars, Drought_Main, Drought_InitAll, sub_807B6BC}, + {sub_807C388, Rain_Main, sub_807C3F4, Rain_Finish}, + {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, +}; + +void (*const gWeatherPalStateFuncs[])(void) = { + UpdateWeatherGammaShift, + FadeInScreenWithWeather, + DoNothing, + DoNothing +}; + +const u8 sBasePaletteGammaTypes[32] = { + // background palettes + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NONE, + GAMMA_NONE, + GAMMA_NONE, + // sprite palettes + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, +}; + +const u16 gUnknown_83C2CE0[] = INCBIN_U16("graphics/field_effects/unk_83C2CE0.gbapal"); + +// code +void StartWeather(void) +{ + if (!FuncIsActiveTask(Task_WeatherMain)) + { + u8 index = AllocSpritePalette(0x1200); + CpuCopy32(gUnknown_83C2CE0, &gPlttBufferUnfaded[0x100 + index * 16], 32); + sub_8083598(index); + BuildGammaShiftTables(); + gWeatherPtr->altGammaSpritePalIndex = index; + gWeatherPtr->weatherPicSpritePalIndex = index; + gWeatherPtr->rainSpriteCount = 0; + gWeatherPtr->curRainSpriteIndex = 0; + gWeatherPtr->cloudSpritesCreated = 0; + gWeatherPtr->snowflakeSpriteCount = 0; + gWeatherPtr->ashSpritesCreated = 0; + gWeatherPtr->fogHSpritesCreated = 0; + gWeatherPtr->fogDSpritesCreated = 0; + gWeatherPtr->sandstormSpritesCreated = 0; + gWeatherPtr->sandstormSwirlSpritesCreated = 0; + gWeatherPtr->bubblesSpritesCreated = 0; + gWeatherPtr->lightenedFogSpritePalsCount = 0; + Weather_SetBlendCoeffs(16, 0); + gWeatherPtr->currWeather = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + gWeatherPtr->readyForInit = FALSE; + gWeatherPtr->weatherChangeComplete = TRUE; + gWeatherPtr->taskId = CreateTask(Task_WeatherInit, 80); + } +} + +void SetNextWeather(u8 weather) +{ + if (weather != WEATHER_RAIN && weather != WEATHER_RAIN_THUNDERSTORM && weather != WEATHER_DOWNPOUR) + { + PlayRainStoppingSoundEffect(); + } + + if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather) + { + sWeatherFuncs[weather].initVars(); + } + + gWeatherPtr->weatherChangeComplete = FALSE; + gWeatherPtr->nextWeather = weather; + gWeatherPtr->finishStep = 0; +} + + +void SetCurrentAndNextWeather(u8 weather) +{ + PlayRainStoppingSoundEffect(); + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; +} + +void SetCurrentAndNextWeatherNoDelay(u8 weather) +{ + PlayRainStoppingSoundEffect(); + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; + // Overrides the normal delay during screen fading. + gWeatherPtr->readyForInit = TRUE; +} + +void Task_WeatherInit(u8 taskId) +{ + // Waits until it's ok to initialize weather. + // When the screen fades in, this is set to TRUE. + if (gWeatherPtr->readyForInit) + { + sWeatherFuncs[gWeatherPtr->currWeather].initAll(); + gTasks[taskId].func = Task_WeatherMain; + } +} + +void Task_WeatherMain(u8 taskId) +{ + if (gWeatherPtr->currWeather != gWeatherPtr->nextWeather) + { + if (!sWeatherFuncs[gWeatherPtr->currWeather].finish() + /*&& gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT*/) + { + // Finished cleaning up previous weather. Now transition to next weather. + sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); + gWeatherPtr->gammaStepFrameCounter = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; + gWeatherPtr->currWeather = gWeatherPtr->nextWeather; + gWeatherPtr->weatherChangeComplete = TRUE; + } + } + else + { + sWeatherFuncs[gWeatherPtr->currWeather].main(); + } + + gWeatherPalStateFuncs[gWeatherPtr->palProcessingState](); +} + + +void None_Init(void) +{ + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 0; +} + +void None_Main(void) +{ +} + +u8 None_Finish(void) +{ + return 0; +} + +// Builds two tables that contain gamma shifts for palette colors. +// It's unclear why the two tables aren't declared as const arrays, since +// this function always builds the same two tables. +void BuildGammaShiftTables(void) +{ + u16 v0; + u8 (*gammaTable)[32]; + u16 v2; + u16 v4; + u16 v5; + u16 gammaIndex; + u16 v9; + u32 v10; + u16 v11; + s16 dunno; + + sPaletteGammaTypes = sBasePaletteGammaTypes; + for (v0 = 0; v0 <= 1; v0++) + { + if (v0 == 0) + gammaTable = gWeatherPtr->gammaShifts; + else + gammaTable = gWeatherPtr->altGammaShifts; + + for (v2 = 0; v2 < 32; v2++) + { + v4 = v2 << 8; + if (v0 == 0) + v5 = (v2 << 8) / 16; + else + v5 = 0; + for (gammaIndex = 0; gammaIndex <= 2; gammaIndex++) + { + v4 = (v4 - v5); + gammaTable[gammaIndex][v2] = v4 >> 8; + } + v9 = v4; + v10 = 0x1f00 - v4; + if ((0x1f00 - v4) < 0) + { + v10 += 0xf; + } + v11 = v10 >> 4; + if (v2 < 12) + { + for (; gammaIndex < 19; gammaIndex++) + { + v4 += v11; + dunno = v4 - v9; + if (dunno > 0) + v4 -= (dunno + ((u16)dunno >> 15)) >> 1; + gammaTable[gammaIndex][v2] = v4 >> 8; + if (gammaTable[gammaIndex][v2] > 0x1f) + gammaTable[gammaIndex][v2] = 0x1f; + } + } + else + { + for (; gammaIndex < 19; gammaIndex++) + { + v4 += v11; + gammaTable[gammaIndex][v2] = v4 >> 8; + if (gammaTable[gammaIndex][v2] > 0x1f) + gammaTable[gammaIndex][v2] = 0x1f; + } + } + } + } +} + +// When the weather is changing, it gradually updates the palettes +// towards the desired gamma shift. +void UpdateWeatherGammaShift(void) +{ + if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) + { + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + } + else + { + if (++gWeatherPtr->gammaStepFrameCounter >= gWeatherPtr->gammaStepDelay) + { + gWeatherPtr->gammaStepFrameCounter = 0; + if (gWeatherPtr->gammaIndex < gWeatherPtr->gammaTargetIndex) + gWeatherPtr->gammaIndex++; + else + gWeatherPtr->gammaIndex--; + + ApplyGammaShift(0, 32, gWeatherPtr->gammaIndex); + } + } +} + +void FadeInScreenWithWeather(void) +{ + if (++gWeatherPtr->unknown_6CB > 1) + gWeatherPtr->unknown_6CA = 0; + + switch (gWeatherPtr->currWeather) + { + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + case WEATHER_SNOW: + case WEATHER_SHADE: + if (FadeInScreen_RainShowShade() == FALSE) + { + gWeatherPtr->gammaIndex = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + } + break; + case WEATHER_DROUGHT: + if (FadeInScreen_Drought() == FALSE) + { + gWeatherPtr->gammaIndex = -6; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + } + break; + case WEATHER_FOG_HORIZONTAL: + if (FadeInScreen_FogHorizontal() == FALSE) + { + gWeatherPtr->gammaIndex = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + } + break; + case WEATHER_VOLCANIC_ASH: + case WEATHER_SANDSTORM: + case WEATHER_FOG_DIAGONAL: + case WEATHER_UNDERWATER: + default: + if (!gPaletteFade.active) + { + gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + } + break; + } +} + +bool8 FadeInScreen_RainShowShade(void) +{ + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) + { + ApplyGammaShift(0, 32, 3); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; + } + + ApplyGammaShiftWithBlend(0, 32, 3, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; +} + +bool8 FadeInScreen_Drought(void) +{ + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) + { + ApplyGammaShift(0, 32, -6); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; + } + + ApplyDroughtGammaShiftWithBlend(-6, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; +} + +bool8 FadeInScreen_FogHorizontal(void) +{ + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + gWeatherPtr->fadeScreenCounter++; + ApplyFogBlend(16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; +} + +void DoNothing(void) +{ } + +void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) +{ + u16 curPalIndex; + u16 palOffset; + u8 *gammaTable; + u16 i; + + if (gammaIndex > 0) + { + gammaIndex--; + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + curPalIndex = startPalIndex; + + // Loop through the speficied palette range and apply necessary gamma shifts to the colors. + while (curPalIndex < numPalettes) + { + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) + { + // No palette change. + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + palOffset += 16; + } + else + { + u8 r, g, b; + + if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex) + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; + else + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; + + for (i = 0; i < 16; i++) + { + // Apply gamma shift to the original color. + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r = gammaTable[baseColor.r]; + g = gammaTable[baseColor.g]; + b = gammaTable[baseColor.b]; + gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; + } + } + + curPalIndex++; + } + } + else if (gammaIndex < 0) + { + // A negative gammIndex value means that the blending will come from the special Drought weather's palette tables. + // Dummied out in FRLG + + // gammaIndex = -gammaIndex - 1; + // palOffset = startPalIndex * 16; + // numPalettes += startPalIndex; + // curPalIndex = startPalIndex; + // + // CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + // while (curPalIndex < numPalettes) + // { + // if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) + // { + // // No palette change. + // palOffset += 16; + // } + // else + // { + // + // for (i = 0; i < 16; i++) + // { + // gPlttBufferFaded[palOffset] = sDroughtWeatherColors[gammaIndex][DROUGHT_COLOR_INDEX(gPlttBufferUnfaded[palOffset])]; + // palOffset++; + // } + // } + // + // curPalIndex++; + // } + } + else + { + // No palette blending. + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); + } +} + +void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) +{ + u16 palOffset; + u16 curPalIndex; + u16 i; + struct RGBColor color = *(struct RGBColor *)&blendColor; + u8 rBlend = color.r; + u8 gBlend = color.g; + u8 bBlend = color.b; + + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + gammaIndex--; + curPalIndex = startPalIndex; + + while (curPalIndex < numPalettes) + { + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) + { + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); + palOffset += 16; + } + else + { + u8 *gammaTable; + + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NORMAL) + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; + else + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; + + for (i = 0; i < 16; i++) + { + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + u8 r = gammaTable[baseColor.r]; + u8 g = gammaTable[baseColor.g]; + u8 b = gammaTable[baseColor.b]; + + // Apply gamma shift and target blend color to the original color. + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; + gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; + } + } + + curPalIndex++; + } +} + +void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor) +{ + struct RGBColor color; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; + u16 palOffset; + u16 i; + + gammaIndex = -gammaIndex - 1; + color = *(struct RGBColor *)&blendColor; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; + palOffset = 0; + for (curPalIndex = 0; curPalIndex < 32; curPalIndex++) + { + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) + { + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); + palOffset += 16; + } + else + { + for (i = 0; i < 16; i++) + { + u32 offset; + struct RGBColor color1; + struct RGBColor color2; + u8 r1, g1, b1; + u8 r2, g2, b2; + + color1 = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r1 = color1.r; + g1 = color1.g; + b1 = color1.b; + + r1 += ((rBlend - r1) * blendCoeff) >> 4; + g1 += ((gBlend - g1) * blendCoeff) >> 4; + b1 += ((bBlend - b1) * blendCoeff) >> 4; + + gPlttBufferFaded[palOffset++] = (b1 << 10) | (g1 << 5) | r1; + } + } + } +} + +void ApplyFogBlend(u8 blendCoeff, u16 blendColor) +{ + struct RGBColor color; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; + + BlendPalette(0, 256, blendCoeff, blendColor); + color = *(struct RGBColor *)&blendColor; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; + + for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) + { + if (LightenSpritePaletteInFog(curPalIndex)) + { + u16 palEnd = (curPalIndex + 1) * 16; + u16 palOffset = curPalIndex * 16; + + while (palOffset < palEnd) + { + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + u8 r = color.r; + u8 g = color.g; + u8 b = color.b; + + r += ((28 - r) * 3) >> 2; + g += ((31 - g) * 3) >> 2; + b += ((28 - b) * 3) >> 2; + + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; + + gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r; + palOffset++; + } + } + else + { + BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor); + } + } +} + +void MarkFogSpritePalToLighten(u8 paletteIndex) +{ + if (gWeatherPtr->lightenedFogSpritePalsCount < 6) + { + gWeatherPtr->lightenedFogSpritePals[gWeatherPtr->lightenedFogSpritePalsCount] = paletteIndex; + gWeatherPtr->lightenedFogSpritePalsCount++; + } +} + +bool8 LightenSpritePaletteInFog(u8 paletteIndex) +{ + u16 i; + + for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++) + { + if (gWeatherPtr->lightenedFogSpritePals[i] == paletteIndex) + return TRUE; + } + + return FALSE; +} + +void sub_807A790(s8 gammaIndex) +{ + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) + { + ApplyGammaShift(0, 32, gammaIndex); + gWeatherPtr->gammaIndex = gammaIndex; + } +} + +void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) +{ + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) + { + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; + gWeatherPtr->gammaIndex = gammaIndex; + gWeatherPtr->gammaTargetIndex = gammaTargetIndex; + gWeatherPtr->gammaStepFrameCounter = 0; + gWeatherPtr->gammaStepDelay = gammaStepDelay; + sub_807A790(gammaIndex); + } +} + +void FadeScreen(u8 mode, s8 delay) +{ + u32 fadeColor; + bool8 fadeOut; + bool8 useWeatherPal; + + switch (mode) + { + case FADE_FROM_BLACK: + fadeColor = RGB_BLACK; + fadeOut = FALSE; + break; + case FADE_FROM_WHITE: + fadeColor = RGB_WHITEALPHA; + fadeOut = FALSE; + break; + case FADE_TO_BLACK: + fadeColor = RGB_BLACK; + fadeOut = TRUE; + break; + case FADE_TO_WHITE: + fadeColor = RGB_WHITEALPHA; + fadeOut = TRUE; + break; + default: + return; + } + + switch (gWeatherPtr->currWeather) + { + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + case WEATHER_SNOW: + case WEATHER_FOG_HORIZONTAL: + case WEATHER_SHADE: + case WEATHER_DROUGHT: + useWeatherPal = TRUE; + break; + default: + useWeatherPal = FALSE; + break; + } + + if (fadeOut) + { + if (useWeatherPal) + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + + BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; + } + else + { + gWeatherPtr->fadeDestColor = fadeColor; + if (useWeatherPal) + gWeatherPtr->fadeScreenCounter = 0; + else + BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); + + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; + gWeatherPtr->unknown_6CA = 1; + gWeatherPtr->unknown_6CB = 0; + Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); + gWeatherPtr->readyForInit = TRUE; + } +} + +void FadeSelectedPals(u8 mode, s8 delay, u32 selectedPalettes) +{ + u32 fadeColor; + bool8 fadeOut; + bool8 useWeatherPal; + + switch (mode) + { + case FADE_FROM_BLACK: + fadeColor = RGB_BLACK; + fadeOut = FALSE; + break; + case FADE_FROM_WHITE: + fadeColor = RGB_WHITEALPHA; + fadeOut = FALSE; + break; + case FADE_TO_BLACK: + fadeColor = RGB_BLACK; + fadeOut = TRUE; + break; + case FADE_TO_WHITE: + fadeColor = RGB_WHITEALPHA; + fadeOut = TRUE; + break; + default: + return; + } + + switch (gWeatherPtr->currWeather) + { + case WEATHER_RAIN: + case WEATHER_RAIN_THUNDERSTORM: + case WEATHER_DOWNPOUR: + case WEATHER_SNOW: + case WEATHER_FOG_HORIZONTAL: + case WEATHER_SHADE: + case WEATHER_DROUGHT: + useWeatherPal = TRUE; + break; + default: + useWeatherPal = FALSE; + break; + } + + if (fadeOut) + { + if (useWeatherPal) + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + + BeginNormalPaletteFade(selectedPalettes, delay, 0, 16, fadeColor); + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; + } + else + { + gWeatherPtr->fadeDestColor = fadeColor; + if (useWeatherPal) + gWeatherPtr->fadeScreenCounter = 0; + else + BeginNormalPaletteFade(selectedPalettes, delay, 16, 0, fadeColor); + + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; + gWeatherPtr->unknown_6CA = 1; + gWeatherPtr->unknown_6CB = 0; + Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); + gWeatherPtr->readyForInit = TRUE; + } +} + + +bool8 IsWeatherNotFadingIn(void) +{ + return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN); +} + +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) +{ + u16 paletteIndex = 16 + spritePaletteIndex; + u16 i; + + switch (gWeatherPtr->palProcessingState) + { + case WEATHER_PAL_STATE_SCREEN_FADING_IN: + if (gWeatherPtr->unknown_6CA != 0) + { + if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) + MarkFogSpritePalToLighten(paletteIndex); + paletteIndex *= 16; + for (i = 0; i < 16; i++) + gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; + } + break; + case WEATHER_PAL_STATE_SCREEN_FADING_OUT: + paletteIndex *= 16; + CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); + BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); + break; + // WEATHER_PAL_STATE_CHANGING_WEATHER + // WEATHER_PAL_STATE_CHANGING_IDLE + default: + if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) + { + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); + } + else + { + paletteIndex *= 16; + BlendPalette(paletteIndex, 16, 12, RGB(28, 31, 28)); + } + break; + } +} + +void ApplyWeatherGammaShiftToPal(u8 paletteIndex) +{ + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); +} + +u8 sub_80ABF20(void) +{ + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN) + return gWeatherPtr->unknown_6CA; + else + return 0; +} + +void LoadCustomWeatherSpritePalette(const u16 *palette) +{ + LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); +} + +static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *a1) +{ + // Dummied out in FRLG + // *gammaIndexPtr = 0x20; + // *a1 = 0x20; +} + +void ResetDroughtWeatherPaletteLoading(void) +{ + gWeatherPtr->loadDroughtPalsIndex = 1; + gWeatherPtr->loadDroughtPalsOffset = 1; +} + +bool8 LoadDroughtWeatherPalettes(void) +{ + if (gWeatherPtr->loadDroughtPalsIndex < 32) + { + LoadDroughtWeatherPalette(&gWeatherPtr->loadDroughtPalsIndex, &gWeatherPtr->loadDroughtPalsOffset); + if (gWeatherPtr->loadDroughtPalsIndex < 32) + return TRUE; + } + return FALSE; +} + +void sub_807AC50(s8 gammaIndex) +{ + sub_807A790(-gammaIndex - 1); +} + +void sub_807AC60(void) +{ + gWeatherPtr->unknown_73C = 0; + gWeatherPtr->unknown_740 = 0; + gWeatherPtr->unknown_742 = 0; + gWeatherPtr->unknown_73E = 0; + gUnknown_20386A8 = 5; +} + +void sub_807AC98(void) +{ + switch (gWeatherPtr->unknown_742) + { + case 0: + if (++gWeatherPtr->unknown_740 > gUnknown_20386A8) + { + gWeatherPtr->unknown_740 = 0; + sub_807AC50(gWeatherPtr->unknown_73C++); + if (gWeatherPtr->unknown_73C > 5) + { + gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C; + gWeatherPtr->unknown_742 = 1; + gWeatherPtr->unknown_740 = 0x3C; + } + } + break; + case 1: + gWeatherPtr->unknown_740 = (gWeatherPtr->unknown_740 + 3) & 0x7F; + gWeatherPtr->unknown_73C = ((gSineTable[gWeatherPtr->unknown_740] - 1) >> 6) + 2; + if (gWeatherPtr->unknown_73C != gWeatherPtr->unknown_73E) + sub_807AC50(gWeatherPtr->unknown_73C); + gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C; + break; + case 2: + if (++gWeatherPtr->unknown_740 > gUnknown_20386A8) + { + gWeatherPtr->unknown_740 = 0; + sub_807AC50(--gWeatherPtr->unknown_73C); + if (gWeatherPtr->unknown_73C == 3) + gWeatherPtr->unknown_742 = 0; + } + break; + } +} + +void Weather_SetBlendCoeffs(u8 eva, u8 evb) +{ + gWeatherPtr->currBlendEVA = eva; + gWeatherPtr->currBlendEVB = evb; + gWeatherPtr->targetBlendEVA = eva; + gWeatherPtr->targetBlendEVB = evb; + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(eva, evb)); +} + +void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay) +{ + gWeatherPtr->targetBlendEVA = eva; + gWeatherPtr->targetBlendEVB = evb; + gWeatherPtr->blendDelay = delay; + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter = 0; +} + +bool8 Weather_UpdateBlend(void) +{ + if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA + && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) + return TRUE; + + if (++gWeatherPtr->blendFrameCounter > gWeatherPtr->blendDelay) + { + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter++; + + // Update currBlendEVA and currBlendEVB on alternate frames + if (gWeatherPtr->blendUpdateCounter & 1) + { + if (gWeatherPtr->currBlendEVA < gWeatherPtr->targetBlendEVA) + gWeatherPtr->currBlendEVA++; + else if (gWeatherPtr->currBlendEVA > gWeatherPtr->targetBlendEVA) + gWeatherPtr->currBlendEVA--; + } + else + { + if (gWeatherPtr->currBlendEVB < gWeatherPtr->targetBlendEVB) + gWeatherPtr->currBlendEVB++; + else if (gWeatherPtr->currBlendEVB > gWeatherPtr->targetBlendEVB) + gWeatherPtr->currBlendEVB--; + } + } + + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB)); + + if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA + && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) + return TRUE; + + return FALSE; +} + +void sub_807AF00(u8 a) +{ + switch (a) + { + case 1: + SetWeather(WEATHER_SUNNY_CLOUDS); + break; + case 2: + SetWeather(WEATHER_SUNNY); + break; + case 3: + SetWeather(WEATHER_RAIN); + break; + case 4: + SetWeather(WEATHER_SNOW); + break; + case 5: + SetWeather(WEATHER_RAIN_THUNDERSTORM); + break; + case 6: + SetWeather(WEATHER_FOG_HORIZONTAL); + break; + case 7: + SetWeather(WEATHER_FOG_DIAGONAL); + break; + case 8: + SetWeather(WEATHER_VOLCANIC_ASH); + break; + case 9: + SetWeather(WEATHER_SANDSTORM); + break; + case 10: + SetWeather(WEATHER_SHADE); + break; + } +} + +u8 GetCurrentWeather(void) +{ + return gWeatherPtr->currWeather; +} + +void SetRainStrengthFromSoundEffect(u16 soundEffect) +{ + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT) + { + switch (soundEffect) + { + case SE_T_KOAME: + gWeatherPtr->rainStrength = 0; + break; + case SE_T_OOAME: + gWeatherPtr->rainStrength = 1; + break; + case SE_T_AME: + gWeatherPtr->rainStrength = 2; + break; + default: + return; + } + + PlaySE(soundEffect); + } +} + +void PlayRainStoppingSoundEffect(void) +{ + if (IsSpecialSEPlaying()) + { + switch (gWeatherPtr->rainStrength) + { + case 0: + PlaySE(SE_T_KOAME_E); + break; + case 1: + PlaySE(SE_T_OOAME_E); + break; + case 2: + default: + PlaySE(SE_T_AME_E); + break; + } + } +} + +u8 IsWeatherChangeComplete(void) +{ + return gWeatherPtr->weatherChangeComplete; +} + +void SetWeatherScreenFadeOut(void) +{ + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; +} + +void sub_807B070(void) +{ + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; +} + +void PreservePaletteInWeather(u8 preservedPalIndex) +{ + CpuCopy16(sBasePaletteGammaTypes, sFieldEffectPaletteGammaTypes, 32); + sFieldEffectPaletteGammaTypes[preservedPalIndex] = GAMMA_NONE; + sPaletteGammaTypes = sFieldEffectPaletteGammaTypes; +} + +void ResetPreservedPalettesInWeather(void) +{ + sPaletteGammaTypes = sBasePaletteGammaTypes; +} diff --git a/src/field_weather_util.c b/src/field_weather_util.c new file mode 100644 index 000000000..ed1ce5236 --- /dev/null +++ b/src/field_weather_util.c @@ -0,0 +1,12 @@ +#include "global.h" + +const u16 gUnknown_83C2D00[] = INCBIN_U16("graphics/field_effects/unk_83C2D00.gbapal"); +const u16 gUnknown_83C2D20[] = INCBIN_U16("graphics/field_effects/unk_83C2D20.gbapal"); +const u16 gUnknown_83C2D40[] = INCBIN_U16("graphics/field_effects/unk_83C2D40.4bpp"); +const u16 gWeatherFog1Tiles[] = INCBIN_U16("graphics/field_effects/unk_83C3540.4bpp"); +const u16 gUnknown_83C3D40[] = INCBIN_U16("graphics/field_effects/unk_83C3D40.4bpp"); +const u16 gUnknown_83C4540[] = INCBIN_U16("graphics/field_effects/unk_83C4540.4bpp"); +const u16 gUnknown_83C4580[] = INCBIN_U16("graphics/field_effects/unk_83C4580.4bpp"); +const u16 gUnknown_83C45C0[] = INCBIN_U16("graphics/field_effects/unk_83C45C0.4bpp"); +const u16 gUnknown_83C55C0[] = INCBIN_U16("graphics/field_effects/unk_83C55C0.4bpp"); +const u16 gUnknown_83C5BC0[] = INCBIN_U16("graphics/field_effects/unk_83C5BC0.4bpp"); diff --git a/sym_ewram.txt b/sym_ewram.txt index 531ae1434..3da5bb78f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -117,27 +117,8 @@ gPlayerAvatar: @ 2037078 .include "src/battle_anim_mons.o" .align 2 .include "src/title_screen.o" - .align 2 - @ .include "src/field_weather.o" -gUnknown_2037F34: @ 2037F34 - .space 0x200 - -gUnknown_2038134: @ 2038134 - .space 0x260 - -gUnknown_2038394: @ 2038394 - .space 0x2F0 - -gUnknown_2038684: @ 2038684 - .space 0x20 - -gUnknown_20386A4: @ 20386A4 - .space 0x4 - -gUnknown_20386A8: @ 20386A8 - .space 0x4 - + .include "src/field_weather.o" .align 2 .include "src/battle_setup.o" .align 2 |