diff options
author | camthesaxman <cameronghall@cox.net> | 2017-09-21 13:00:04 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-09-21 13:00:04 -0500 |
commit | 8fe982335e26911dcb6842d27c3d6bd5cd74c292 (patch) | |
tree | 63c33c711584fcab9d19eeb420b92a9a22f5aafd | |
parent | d81ba931cc138074187924a5d3e88bb0a619f9f5 (diff) |
decompile sub_807D424 - sub_807DBE8
-rw-r--r-- | asm/field_weather.s | 1132 | ||||
-rw-r--r-- | include/field_weather.h | 2 | ||||
-rw-r--r-- | src/field_weather.c | 413 |
3 files changed, 400 insertions, 1147 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s index b6384cbe1..2d0d9a1d1 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -5,1138 +5,6 @@ .text - thumb_func_start sub_807D424 -sub_807D424: @ 807D424 - 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 -_0807D460: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_807D574 - lsls r0, 24 - cmp r0, 0 - beq _0807D510 - 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 _0807D524 - movs r0, 0x1C - mov r8, r0 -_0807D484: - lsls r5, r6, 1 - ldr r0, _0807D508 @ =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, _0807D50C @ =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 _0807D484 - b _0807D524 - .align 2, 0 -_0807D508: .4byte gPlttBufferUnfaded -_0807D50C: .4byte gPlttBufferFaded -_0807D510: - 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 -_0807D524: - mov r1, r9 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x1F - bls _0807D460 - 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_807D424 - - thumb_func_start sub_807D540 -sub_807D540: @ 807D540 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _0807D568 @ =gUnknown_0202F7E8 - ldr r0, _0807D56C @ =0x000006fa - adds r1, r3, r0 - ldrb r0, [r1] - cmp r0, 0x5 - bhi _0807D562 - ldr r4, _0807D570 @ =0x000006f4 - adds r0, r3, r4 - ldrb r3, [r1] - adds r0, r3 - strb r2, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0807D562: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807D568: .4byte gUnknown_0202F7E8 -_0807D56C: .4byte 0x000006fa -_0807D570: .4byte 0x000006f4 - thumb_func_end sub_807D540 - - thumb_func_start sub_807D574 -sub_807D574: @ 807D574 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r1, 0 - ldr r2, _0807D59C @ =gUnknown_0202F7E8 - ldr r4, _0807D5A0 @ =0x000006fa - adds r0, r2, r4 - ldrb r0, [r0] - cmp r1, r0 - bcs _0807D5B2 - ldr r5, _0807D5A4 @ =0x000006f4 - adds r4, r2, r5 - adds r2, r0, 0 -_0807D58E: - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _0807D5A8 - movs r0, 0x1 - b _0807D5B4 - .align 2, 0 -_0807D59C: .4byte gUnknown_0202F7E8 -_0807D5A0: .4byte 0x000006fa -_0807D5A4: .4byte 0x000006f4 -_0807D5A8: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _0807D58E -_0807D5B2: - movs r0, 0 -_0807D5B4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807D574 - - thumb_func_start sub_807D5BC -sub_807D5BC: @ 807D5BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _0807D5E8 @ =gUnknown_0202F7E8 - ldr r1, _0807D5EC @ =0x000006c6 - adds r0, r5, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0807D5E2 - lsls r2, r4, 24 - asrs r2, 24 - movs r0, 0 - movs r1, 0x20 - bl sub_807CEBC - movs r1, 0xD8 - lsls r1, 3 - adds r0, r5, r1 - strb r4, [r0] -_0807D5E2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807D5E8: .4byte gUnknown_0202F7E8 -_0807D5EC: .4byte 0x000006c6 - thumb_func_end sub_807D5BC - - thumb_func_start sub_807D5F0 -sub_807D5F0: @ 807D5F0 - 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, _0807D638 @ =gUnknown_0202F7E8 - ldr r0, _0807D63C @ =0x000006c6 - adds r2, r3, r0 - ldrb r0, [r2] - cmp r0, 0x3 - bne _0807D630 - 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, _0807D640 @ =0x000006c2 - adds r0, r3, r1 - strb r6, [r0] - lsls r0, r4, 24 - asrs r0, 24 - bl sub_807D5BC -_0807D630: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807D638: .4byte gUnknown_0202F7E8 -_0807D63C: .4byte 0x000006c6 -_0807D640: .4byte 0x000006c2 - thumb_func_end sub_807D5F0 - - thumb_func_start fade_screen -fade_screen: @ 807D644 - 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 _0807D67C - cmp r0, 0x1 - bgt _0807D660 - cmp r0, 0 - beq _0807D66A - b _0807D758 -_0807D660: - cmp r2, 0x2 - beq _0807D670 - cmp r2, 0x3 - beq _0807D680 - b _0807D758 -_0807D66A: - movs r4, 0 - movs r1, 0 - b _0807D684 -_0807D670: - ldr r4, _0807D678 @ =0x0000ffff - movs r1, 0 - b _0807D684 - .align 2, 0 -_0807D678: .4byte 0x0000ffff -_0807D67C: - movs r4, 0 - b _0807D682 -_0807D680: - ldr r4, _0807D6A4 @ =0x0000ffff -_0807D682: - movs r1, 0x1 -_0807D684: - ldr r0, _0807D6A8 @ =gUnknown_0202F7E8 - movs r2, 0xDA - lsls r2, 3 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x3 - blt _0807D6AC - cmp r0, 0x6 - ble _0807D69E - cmp r0, 0xD - bgt _0807D6AC - cmp r0, 0xB - blt _0807D6AC -_0807D69E: - movs r2, 0x1 - b _0807D6AE - .align 2, 0 -_0807D6A4: .4byte 0x0000ffff -_0807D6A8: .4byte gUnknown_0202F7E8 -_0807D6AC: - movs r2, 0 -_0807D6AE: - cmp r1, 0 - beq _0807D6F0 - cmp r2, 0 - beq _0807D6C2 - ldr r0, _0807D6E0 @ =gPlttBufferFaded - ldr r1, _0807D6E4 @ =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet -_0807D6C2: - 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, _0807D6E8 @ =gUnknown_0202F7E8 - ldr r3, _0807D6EC @ =0x000006c6 - adds r0, r3 - movs r1, 0x2 - strb r1, [r0] - b _0807D758 - .align 2, 0 -_0807D6E0: .4byte gPlttBufferFaded -_0807D6E4: .4byte gPlttBufferUnfaded -_0807D6E8: .4byte gUnknown_0202F7E8 -_0807D6EC: .4byte 0x000006c6 -_0807D6F0: - ldr r1, _0807D708 @ =gUnknown_0202F7E8 - ldr r3, _0807D70C @ =0x000006c4 - adds r0, r1, r3 - strh r4, [r0] - cmp r2, 0 - beq _0807D714 - ldr r0, _0807D710 @ =0x000006c7 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - b _0807D726 - .align 2, 0 -_0807D708: .4byte gUnknown_0202F7E8 -_0807D70C: .4byte 0x000006c4 -_0807D710: .4byte 0x000006c7 -_0807D714: - movs r0, 0x1 - negs r0, r0 - lsls r1, r5, 24 - asrs r1, 24 - str r4, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0807D726: - ldr r4, _0807D760 @ =gUnknown_0202F7E8 - ldr r1, _0807D764 @ =0x000006c6 - adds r0, r4, r1 - movs r1, 0 - movs r5, 0x1 - strb r5, [r0] - ldr r2, _0807D768 @ =0x000006ca - adds r0, r4, r2 - strb r5, [r0] - ldr r3, _0807D76C @ =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 sub_807DB64 - movs r3, 0xD9 - lsls r3, 3 - adds r4, r3 - strb r5, [r4] -_0807D758: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807D760: .4byte gUnknown_0202F7E8 -_0807D764: .4byte 0x000006c6 -_0807D768: .4byte 0x000006ca -_0807D76C: .4byte 0x000006cb - thumb_func_end fade_screen - - thumb_func_start sub_807D770 -sub_807D770: @ 807D770 - ldr r0, _0807D784 @ =gUnknown_0202F7E8 - ldr r1, _0807D788 @ =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 -_0807D784: .4byte gUnknown_0202F7E8 -_0807D788: .4byte 0x000006c6 - thumb_func_end sub_807D770 - - thumb_func_start sub_807D78C -sub_807D78C: @ 807D78C - 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, _0807D7CC @ =gUnknown_0202F7E8 - ldr r2, _0807D7D0 @ =0x000006c6 - adds r0, r5, r2 - ldrb r0, [r0] - adds r1, r5, 0 - cmp r0, 0x1 - beq _0807D7D4 - cmp r0, 0x2 - beq _0807D820 - adds r2, 0xA - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x6 - beq _0807D858 - 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_807CEBC - b _0807D868 - .align 2, 0 -_0807D7CC: .4byte gUnknown_0202F7E8 -_0807D7D0: .4byte 0x000006c6 -_0807D7D4: - ldr r2, _0807D814 @ =0x000006ca - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807D868 - adds r2, 0x6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0807D7F0 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_807D540 -_0807D7F0: - lsls r0, r4, 20 - lsrs r4, r0, 16 - movs r2, 0 - ldr r6, _0807D818 @ =gPlttBufferFaded - ldr r0, _0807D81C @ =0x000006c4 - adds r3, r5, r0 -_0807D7FC: - 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 _0807D7FC - b _0807D868 - .align 2, 0 -_0807D814: .4byte 0x000006ca -_0807D818: .4byte gPlttBufferFaded -_0807D81C: .4byte 0x000006c4 -_0807D820: - lsls r0, r4, 20 - lsrs r4, r0, 16 - lsls r1, r4, 1 - ldr r0, _0807D84C @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _0807D850 @ =gPlttBufferUnfaded - adds r1, r2 - movs r2, 0x8 - bl CpuFastSet - ldr r0, _0807D854 @ =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 _0807D868 - .align 2, 0 -_0807D84C: .4byte gPlttBufferFaded -_0807D850: .4byte gPlttBufferUnfaded -_0807D854: .4byte gPaletteFade -_0807D858: - lsls r0, r4, 20 - lsrs r4, r0, 16 - ldr r3, _0807D870 @ =0x000073fc - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0xC - bl BlendPalette -_0807D868: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807D870: .4byte 0x000073fc - thumb_func_end sub_807D78C - - thumb_func_start sub_807D874 -sub_807D874: @ 807D874 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0807D890 @ =gUnknown_0202F7E8 - movs r2, 0xD8 - lsls r2, 3 - adds r1, r2 - movs r2, 0 - ldrsb r2, [r1, r2] - movs r1, 0x1 - bl sub_807CEBC - pop {r0} - bx r0 - .align 2, 0 -_0807D890: .4byte gUnknown_0202F7E8 - thumb_func_end sub_807D874 - - thumb_func_start unref_sub_807D894 -unref_sub_807D894: @ 807D894 - push {lr} - ldr r1, _0807D8A8 @ =gUnknown_0202F7E8 - ldr r2, _0807D8AC @ =0x000006c6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807D8B0 - movs r0, 0 - b _0807D8B6 - .align 2, 0 -_0807D8A8: .4byte gUnknown_0202F7E8 -_0807D8AC: .4byte 0x000006c6 -_0807D8B0: - ldr r2, _0807D8BC @ =0x000006ca - adds r0, r1, r2 - ldrb r0, [r0] -_0807D8B6: - pop {r1} - bx r1 - .align 2, 0 -_0807D8BC: .4byte 0x000006ca - thumb_func_end unref_sub_807D894 - - thumb_func_start sub_807D8C0 -sub_807D8C0: @ 807D8C0 - push {r4,lr} - ldr r4, _0807D8E8 @ =gUnknown_0202F7E8 - ldr r1, _0807D8EC @ =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 sub_807D78C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807D8E8: .4byte gUnknown_0202F7E8 -_0807D8EC: .4byte 0x000006d4 - thumb_func_end sub_807D8C0 - - thumb_func_start sub_807D8F0 -sub_807D8F0: @ 807D8F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - mov r8, r1 - ldrb r4, [r7] - cmp r4, 0x6 - bhi _0807D99A - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0807D94C @ =gUnknown_08396FA8 - lsls r0, r4, 2 - adds r0, r1 - ldr r0, [r0] - lsls r6, r4, 13 - ldr r5, _0807D950 @ =0x02000000 - adds r1, r6, r5 - bl LZ77UnCompWram - subs r0, r4, 0x1 - cmp r4, 0 - bne _0807D95C - ldr r0, _0807D954 @ =0x00000421 - strh r0, [r5] - movs r2, 0x1 - adds r4, r5, 0 - movs r3, 0 - ldr r5, _0807D958 @ =0x00000fff -_0807D92A: - lsls r1, r2, 1 - adds r1, r3 - adds r1, r4 - subs r0, r2, 0x1 - lsls r0, 1 - adds r0, r3 - adds r0, r4 - ldrh r0, [r0] - ldrh r6, [r1] - adds r0, r6 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r5 - bls _0807D92A - b _0807D984 - .align 2, 0 -_0807D94C: .4byte gUnknown_08396FA8 -_0807D950: .4byte 0x02000000 -_0807D954: .4byte 0x00000421 -_0807D958: .4byte 0x00000fff -_0807D95C: - movs r2, 0 - adds r3, r5, 0 - adds r5, r6, 0 - lsls r4, r0, 13 - ldr r0, _0807D9A4 @ =0x00000fff - mov r12, r0 -_0807D968: - lsls r0, r2, 1 - adds r1, r0, r5 - adds r1, r3 - adds r0, r4 - adds r0, r3 - ldrh r0, [r0] - ldrh r6, [r1] - adds r0, r6 - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r12 - bls _0807D968 -_0807D984: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bne _0807D99A - movs r0, 0x20 - strb r0, [r7] - mov r1, r8 - strb r0, [r1] -_0807D99A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807D9A4: .4byte 0x00000fff - thumb_func_end sub_807D8F0 - - thumb_func_start sub_807D9A8 -sub_807D9A8: @ 807D9A8 - ldr r0, _0807D9BC @ =gUnknown_0202F7E8 - ldr r2, _0807D9C0 @ =0x0000074d - adds r1, r0, r2 - movs r2, 0x1 - strb r2, [r1] - ldr r1, _0807D9C4 @ =0x0000074e - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_0807D9BC: .4byte gUnknown_0202F7E8 -_0807D9C0: .4byte 0x0000074d -_0807D9C4: .4byte 0x0000074e - thumb_func_end sub_807D9A8 - - thumb_func_start sub_807D9C8 -sub_807D9C8: @ 807D9C8 - push {r4,lr} - ldr r1, _0807D9F0 @ =gUnknown_0202F7E8 - ldr r0, _0807D9F4 @ =0x0000074d - adds r4, r1, r0 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1F - bgt _0807D9FC - ldr r0, _0807D9F8 @ =0x0000074e - adds r1, r0 - adds r0, r4, 0 - bl sub_807D8F0 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x1F - bgt _0807D9FC - movs r0, 0x1 - b _0807D9FE - .align 2, 0 -_0807D9F0: .4byte gUnknown_0202F7E8 -_0807D9F4: .4byte 0x0000074d -_0807D9F8: .4byte 0x0000074e -_0807D9FC: - movs r0, 0 -_0807D9FE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807D9C8 - - thumb_func_start sub_807DA04 -sub_807DA04: @ 807DA04 - push {lr} - lsls r0, 24 - asrs r0, 24 - mvns r0, r0 - bl sub_807D5BC - pop {r0} - bx r0 - thumb_func_end sub_807DA04 - - thumb_func_start sub_807DA14 -sub_807DA14: @ 807DA14 - ldr r1, _0807DA3C @ =gUnknown_0202F7E8 - ldr r2, _0807DA40 @ =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, _0807DA44 @ =0x0000073e - adds r1, r0 - strh r2, [r1] - ldr r1, _0807DA48 @ =gUnknown_0202FF58 - movs r0, 0x5 - strh r0, [r1] - bx lr - .align 2, 0 -_0807DA3C: .4byte gUnknown_0202F7E8 -_0807DA40: .4byte 0x0000073c -_0807DA44: .4byte 0x0000073e -_0807DA48: .4byte gUnknown_0202FF58 - thumb_func_end sub_807DA14 - - thumb_func_start sub_807DA4C -sub_807DA4C: @ 807DA4C - push {r4-r7,lr} - ldr r5, _0807DA68 @ =gUnknown_0202F7E8 - ldr r0, _0807DA6C @ =0x00000742 - adds r7, r5, r0 - movs r1, 0 - ldrsh r2, [r7, r1] - cmp r2, 0x1 - beq _0807DAC8 - cmp r2, 0x1 - bgt _0807DA70 - cmp r2, 0 - beq _0807DA76 - b _0807DB54 - .align 2, 0 -_0807DA68: .4byte gUnknown_0202F7E8 -_0807DA6C: .4byte 0x00000742 -_0807DA70: - cmp r2, 0x2 - beq _0807DB1C - b _0807DB54 -_0807DA76: - 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, _0807DABC @ =gUnknown_0202FF58 - ldrh r1, [r1] - cmp r0, r1 - ble _0807DB54 - strh r2, [r6] - ldr r0, _0807DAC0 @ =0x0000073c - adds r4, r5, r0 - ldrh r0, [r4] - adds r1, r0, 0x1 - strh r1, [r4] - lsls r0, 24 - asrs r0, 24 - bl sub_807DA04 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x5 - ble _0807DB54 - ldr r3, _0807DAC4 @ =0x0000073e - adds r0, r5, r3 - strh r1, [r0] - movs r0, 0x1 - strh r0, [r7] - movs r0, 0x3C - strh r0, [r6] - b _0807DB54 - .align 2, 0 -_0807DABC: .4byte gUnknown_0202FF58 -_0807DAC0: .4byte 0x0000073c -_0807DAC4: .4byte 0x0000073e -_0807DAC8: - 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, _0807DB10 @ =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, _0807DB14 @ =0x0000073c - adds r6, r5, r2 - adds r2, r0, 0 - strh r0, [r6] - ldr r3, _0807DB18 @ =0x0000073e - adds r4, r5, r3 - movs r3, 0 - ldrsh r1, [r4, r3] - cmp r0, r1 - beq _0807DB08 - lsls r0, r2, 24 - asrs r0, 24 - bl sub_807DA04 -_0807DB08: - ldrh r0, [r6] - strh r0, [r4] - b _0807DB54 - .align 2, 0 -_0807DB10: .4byte gSineTable -_0807DB14: .4byte 0x0000073c -_0807DB18: .4byte 0x0000073e -_0807DB1C: - 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, _0807DB5C @ =gUnknown_0202FF58 - ldrh r1, [r1] - cmp r0, r1 - ble _0807DB54 - strh r6, [r2] - ldr r1, _0807DB60 @ =0x0000073c - adds r4, r5, r1 - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - lsls r0, 24 - asrs r0, 24 - bl sub_807DA04 - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bne _0807DB54 - strh r6, [r7] -_0807DB54: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807DB5C: .4byte gUnknown_0202FF58 -_0807DB60: .4byte 0x0000073c - thumb_func_end sub_807DA4C - - thumb_func_start sub_807DB64 -sub_807DB64: @ 807DB64 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807DB98 @ =gUnknown_0202F7E8 - 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, _0807DB9C @ =0x00000736 - adds r3, r2 - strh r1, [r3] - ldr r2, _0807DBA0 @ =REG_BLDALPHA - lsls r1, 8 - orrs r1, r0 - strh r1, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807DB98: .4byte gUnknown_0202F7E8 -_0807DB9C: .4byte 0x00000736 -_0807DBA0: .4byte REG_BLDALPHA - thumb_func_end sub_807DB64 - - thumb_func_start sub_807DBA4 -sub_807DBA4: @ 807DBA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0807DBD8 @ =gUnknown_0202F7E8 - ldr r5, _0807DBDC @ =0x00000734 - adds r4, r3, r5 - movs r5, 0 - strh r0, [r4] - ldr r4, _0807DBE0 @ =0x00000736 - adds r0, r3, r4 - strh r1, [r0] - ldr r1, _0807DBE4 @ =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 -_0807DBD8: .4byte gUnknown_0202F7E8 -_0807DBDC: .4byte 0x00000734 -_0807DBE0: .4byte 0x00000736 -_0807DBE4: .4byte 0x0000073a - thumb_func_end sub_807DBA4 - - thumb_func_start sub_807DBE8 -sub_807DBE8: @ 807DBE8 - push {r4-r6,lr} - ldr r0, _0807DC40 @ =gUnknown_0202F7E8 - movs r1, 0xE6 - lsls r1, 3 - adds r3, r0, r1 - ldr r2, [r3] - ldr r6, _0807DC44 @ =0x00000734 - adds r5, r0, r6 - ldr r1, [r5] - adds r4, r0, 0 - cmp r2, r1 - beq _0807DCAC - ldr r0, _0807DC48 @ =0x00000739 - adds r2, r4, r0 - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r2] - ldr r6, _0807DC4C @ =0x0000073a - adds r1, r4, r6 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bls _0807DC78 - movs r0, 0 - strb r0, [r2] - movs r0, 0xE7 - lsls r0, 3 - adds r1, r4, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807DC50 - ldrh r1, [r3] - adds r2, r1, 0 - ldrh r0, [r5] - cmp r2, r0 - bcs _0807DC70 - adds r0, r1, 0x1 - b _0807DC76 - .align 2, 0 -_0807DC40: .4byte gUnknown_0202F7E8 -_0807DC44: .4byte 0x00000734 -_0807DC48: .4byte 0x00000739 -_0807DC4C: .4byte 0x0000073a -_0807DC50: - ldr r1, _0807DC68 @ =0x00000732 - adds r3, r4, r1 - ldr r2, _0807DC6C @ =0x00000736 - adds r0, r4, r2 - ldrh r1, [r3] - adds r2, r1, 0 - ldrh r0, [r0] - cmp r2, r0 - bcs _0807DC70 - adds r0, r1, 0x1 - b _0807DC76 - .align 2, 0 -_0807DC68: .4byte 0x00000732 -_0807DC6C: .4byte 0x00000736 -_0807DC70: - cmp r2, r0 - bls _0807DC78 - subs r0, r1, 0x1 -_0807DC76: - strh r0, [r3] -_0807DC78: - ldr r3, _0807DCA0 @ =REG_BLDALPHA - ldr r6, _0807DCA4 @ =0x00000732 - adds r0, r4, r6 - ldrh r0, [r0] - lsls r0, 8 - movs r1, 0xE6 - lsls r1, 3 - adds r2, r4, r1 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r3] - ldr r1, [r2] - ldr r2, _0807DCA8 @ =0x00000734 - adds r0, r4, r2 - ldr r0, [r0] - cmp r1, r0 - beq _0807DCAC - movs r0, 0 - b _0807DCAE - .align 2, 0 -_0807DCA0: .4byte REG_BLDALPHA -_0807DCA4: .4byte 0x00000732 -_0807DCA8: .4byte 0x00000734 -_0807DCAC: - movs r0, 0x1 -_0807DCAE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807DBE8 - thumb_func_start unref_sub_807DCB4 unref_sub_807DCB4: @ 807DCB4 push {lr} diff --git a/include/field_weather.h b/include/field_weather.h index 128f6c661..b711f91d6 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -43,7 +43,7 @@ void sub_80806E4(void); void DoCurrentWeather(void); void sub_8080750(); -u8 sub_807D770(void); +bool8 sub_807D770(void); bool8 sub_807DDFC(void); void SetWeather(u32); void UpdateWeatherPerDay(u16); diff --git a/src/field_weather.c b/src/field_weather.c index 9460110be..9dc2560cc 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -4,6 +4,7 @@ #include "palette.h" #include "sprite.h" #include "task.h" +#include "trig.h" #define MACRO1(a) ((((a) >> 1) & 0xF) | (((a) >> 2) & 0xF0) | (((a) >> 3) & 0xF00)) @@ -13,7 +14,9 @@ struct Weather u8 unknown_200[2][32]; u8 filler_240[0x460-0x240]; u8 unk460[2][32]; - u8 filler4A0[0x6C0-0x4A0]; + u8 filler4A0[0x6B6-0x4A0]; + s8 unknown_6B6; + u8 filler_6B7[0xC0-0xB7]; s8 unknown_6C0; s8 unknown_6C1; u8 unknown_6C2; @@ -41,7 +44,8 @@ struct Weather u8 unknown_6DE; u8 filler_6DF[5]; u8 unknown_6E4; - u8 filler_6E5[0x15]; + u8 filler_6E5[0xF]; + u8 unknown_6F4[6]; u8 unknown_6FA; u8 unknown_6FB; u8 filler_6FC[4]; @@ -53,18 +57,34 @@ struct Weather u8 unknown_724; u8 filler_725[9]; u8 unknown_72E; + u8 filler_72F; + u16 unknown_730; + u16 unknown_732; + u16 unknown_734; + u16 unknown_736; + u8 unknown_738; + u8 unknown_739; + u8 unknown_73A; + u8 filler_73B[0x3C-0x3B]; + s16 unknown_73C; + s16 unknown_73E; + s16 unknown_740; + s16 unknown_742; + u8 filler_744[0xD-4]; + s8 unknown_74D; + u8 unknown_74E; }; #define gWeather gUnknown_0202F7E8 -extern struct Weather gWeather; +extern struct Weather gUnknown_0202F7E8; +extern u16 gUnknown_0202FF58; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); extern u8 *gUnknown_030006DC; extern u8 gUnknown_083970C8; -//extern u8 (*gUnknown_0202FC48)[32]; -extern u8 gUnknown_0202FC48[][32]; -extern u8 gUnknown_0202F9E8[][32]; + +extern const u8 *const gUnknown_08396FA8[]; void sub_807C828(void) @@ -176,7 +196,7 @@ u32 sub_807CB0C(void) void sub_807CB10(void) { u16 v0; - u8(*v1)[32]; + u8 (*v1)[32]; u16 v2; u16 v4; u16 v5; @@ -190,9 +210,9 @@ void sub_807CB10(void) for (v0 = 0; v0 <= 1; v0++) { if (v0 == 0) - v1 = (void *)&gUnknown_0202F9E8; + v1 = gWeather.unknown_200; else - v1 = &gUnknown_0202F9E8[19]; + v1 = gWeather.unk460; for (v2 = 0; (u16)v2 <= 0x1f; v2++) { @@ -392,10 +412,10 @@ void sub_807CEBC(u8 a, u8 b, s8 c) { u8 r, g, b; - if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gUnknown_0202F7E8.unknown_6D5) - r6 = gUnknown_0202F7E8.unk460[c]; + if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeather.unknown_6D5) + r6 = gWeather.unk460[c]; else - r6 = gUnknown_0202F7E8.unknown_200[c]; + r6 = gWeather.unknown_200[c]; if (r4 == 16 || r4 > 0x1B) { for (i = 0; i < 16; i++) @@ -499,9 +519,9 @@ void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) u8 *r5; if (gUnknown_030006DC[r4] == 1) - r5 = gUnknown_0202F9E8[c]; + r5 = gWeather.unknown_200[c]; else - r5 = gUnknown_0202F9E8[c + 19]; + r5 = gWeather.unk460[c]; for (i = 0; i < 16; i++) { @@ -573,3 +593,368 @@ void sub_807D304(s8 a, u8 arg2, u16 c) } } } + +bool8 sub_807D574(u8); + +void sub_807D424(u8 a, u16 b) +{ + struct RGBColor color; + u8 r_; + u8 g_; + u8 b_; + u16 r4; + + BlendPalette(0, 0x100, a, b); + color = *(struct RGBColor *)&b; + r_ = color.r; + g_ = color.g; + b_ = color.b; + + r4 = 16; + while (r4 < 32) + { + if (sub_807D574(r4)) + { + u16 r12 = (r4 + 1) * 16; + u16 r6 = r4 * 16; + + while (r6 < r12) + { + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[r6]; + 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 += ((r_ - r) * a) >> 4; + g += ((g_ - g) * a) >> 4; + b += ((b_ - b) * a) >> 4; + + gPlttBufferFaded[r6] = (b << 10) | (g << 5) | r; + r6++; + } + } + else + { + BlendPalette(r4 * 16, 16, a, b); + } + r4++; + } +} + +void sub_807D540(u8 a) +{ + if (gWeather.unknown_6FA < 6) + { + gWeather.unknown_6F4[gWeather.unknown_6FA] = a; + gWeather.unknown_6FA++; + } +} + +bool8 sub_807D574(u8 a) +{ + u16 i; + + for (i = 0; i < gWeather.unknown_6FA; i++) + { + if (gWeather.unknown_6F4[i] == a) + return TRUE; + } + return FALSE; +} + +void sub_807D5BC(s8 a) +{ + if (gWeather.unknown_6C6 == 3) + { + sub_807CEBC(0, 32, a); + gWeather.unknown_6C0 = a; + } +} + +void sub_807D5F0(u8 a, u8 b, u8 c) +{ + if (gWeather.unknown_6C6 == 3) + { + gWeather.unknown_6C6 = 0; + gWeather.unknown_6C0 = a; + gWeather.unknown_6C1 = b; + gWeather.unknown_6C3 = 0; + gWeather.unknown_6C2 = c; + sub_807D5BC(a); + } +} + +void fade_screen(u8 a, u8 b) +{ + u32 r4; + u32 r1; + u32 r2; + + switch (a) + { + case 0: + r4 = 0; + r1 = 0; + break; + case 2: + r4 = 0xFFFF; + r1 = 0; + break; + case 1: + r4 = 0; + r1 = 1; + break; + case 3: + r4 = 0xFFFF; + r1 = 1; + break; + default: + return; + } + + switch (gWeather.unknown_6D0) + { + case 3: + case 4: + case 5: + case 6: + case 11: + case 12: + case 13: + r2 = 1; + break; + default: + r2 = 0; + break; + } + + if (r1 != 0) + { + if (r2 != 0) + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + BeginNormalPaletteFade(0xFFFFFFFF, b, 0, 16, r4); + gWeather.unknown_6C6 = 2; + } + else + { + gWeather.unknown_6C4 = r4; + if (r2 != 0) + gWeather.unknown_6C7 = 0; + else + BeginNormalPaletteFade(0xFFFFFFFF, b, 16, 0, r4); + gWeather.unknown_6C6 = 1; + gWeather.unknown_6CA = 1; + gWeather.unknown_6CB = 0; + sub_807DB64(gWeather.unknown_730, gWeather.unknown_732); + gWeather.unknown_6C8 = 1; + } +} + +bool8 sub_807D770(void) +{ + return gWeather.unknown_6C6 ^ 1 ? TRUE : FALSE; +} + +void sub_807D78C(u8 a) +{ + u16 r4 = 16 + a; + u16 i; + + switch (gWeather.unknown_6C6) + { + case 1: + if (gWeather.unknown_6CA != 0) + { + if (gWeather.unknown_6D0 == 6) + sub_807D540(r4); + r4 *= 16; + for (i = 0; i < 16; i++) + gPlttBufferFaded[r4 + i] = gWeather.unknown_6C4; + } + break; + case 2: + r4 *= 16; + CpuFastCopy(gPlttBufferFaded + r4, gPlttBufferUnfaded + r4, 32); + BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor); + break; + default: + if (gWeather.unknown_6D0 != 6) + { + sub_807CEBC(r4, 1, gWeather.unknown_6C0); + } + else + { + r4 *= 16; + BlendPalette(r4, 16, 12, 0x73FC); + } + break; + } +} + +void sub_807D874(u8 a) +{ + sub_807CEBC(a, 1, gWeather.unknown_6C0); +} + +u8 unref_sub_807D894(void) +{ + if (gWeather.unknown_6C6 == 1) + return gWeather.unknown_6CA; + else + return 0; +} + +void sub_807D8C0(const u16 *palette) +{ + LoadPalette(palette, 0x100 + gWeather.unknown_6D4 * 16, 32); + sub_807D78C(gWeather.unknown_6D4); +} + +void sub_807D8F0(u8 *a, u8 *b) +{ + u8 r4 = *a; + u16 i; + + if (r4 < 7) + { + r4--; + LZ77UnCompWram(gUnknown_08396FA8[r4], ewram0.data[r4]); + if (r4 == 0) + { + ewram0.data[r4][0] = 0x421; + for (i = 1; i < 0x1000; i++) + ewram0.data[r4][i] += ewram0.data[r4][i - 1]; + } + else + { + for (i = 0; i < 0x1000; i++) + ewram0.data[r4][i] += ewram0.data[r4 - 1][i]; + } + (*a)++; + if (*a == 7) + { + *a = 32; + *b = 32; + } + } +} + +void sub_807D9A8(void) +{ + gWeather.unknown_74D = 1; + gWeather.unknown_74E = 1; +} + +bool8 sub_807D9C8(void) +{ + if (gWeather.unknown_74D < 32) + { + sub_807D8F0(&gWeather.unknown_74D, &gWeather.unknown_74E); + if (gWeather.unknown_74D < 32) + return TRUE; + } + return FALSE; +} + +void sub_807DA04(s8 a) +{ + sub_807D5BC(-a - 1); +} + +void sub_807DA14(void) +{ + gWeather.unknown_73C = 0; + gWeather.unknown_740 = 0; + gWeather.unknown_742 = 0; + gWeather.unknown_73E = 0; + gUnknown_0202FF58 = 5; +} + +void sub_807DA4C(void) +{ + switch (gWeather.unknown_742) + { + case 0: + if (++gWeather.unknown_740 > gUnknown_0202FF58) + { + gWeather.unknown_740 = 0; + sub_807DA04(gWeather.unknown_73C++); + if (gWeather.unknown_73C > 5) + { + gWeather.unknown_73E = gWeather.unknown_73C; + gWeather.unknown_742 = 1; + gWeather.unknown_740 = 0x3C; + } + } + break; + case 1: + gWeather.unknown_740 = (gWeather.unknown_740 + 3) & 0x7F; + gWeather.unknown_73C = ((gSineTable[gWeather.unknown_740] - 1) >> 6) + 2; + if (gWeather.unknown_73C != gWeather.unknown_73E) + sub_807DA04(gWeather.unknown_73C); + gWeather.unknown_73E = gWeather.unknown_73C; + break; + case 2: + if (++gWeather.unknown_740 > gUnknown_0202FF58) + { + gWeather.unknown_740 = 0; + sub_807DA04(--gWeather.unknown_73C); + if (gWeather.unknown_73C == 3) + gWeather.unknown_742 = 0; + } + break; + } +} + +void sub_807DB64(u8 a, u8 b) +{ + gWeather.unknown_730 = a; + gWeather.unknown_732 = b; + gWeather.unknown_734 = a; + gWeather.unknown_736 = b; + REG_BLDALPHA = (b << 8) | a; +} + +void sub_807DBA4(u8 a, u8 b, int c) +{ + gWeather.unknown_734 = a; + gWeather.unknown_736 = b; + gWeather.unknown_73A = c; + gWeather.unknown_739 = 0; + gWeather.unknown_738 = 0; +} + +bool8 sub_807DBE8(void) +{ + if (gWeather.unknown_730 == gWeather.unknown_734 + && gWeather.unknown_732 == gWeather.unknown_736) + return TRUE; + if (++gWeather.unknown_739 > gWeather.unknown_73A) + { + gWeather.unknown_739 = 0; + gWeather.unknown_738++; + if (gWeather.unknown_738 & 1) + { + if (gWeather.unknown_730 < gWeather.unknown_734) + gWeather.unknown_730++; + else if (gWeather.unknown_730 > gWeather.unknown_734) + gWeather.unknown_730--; + } + else + { + if (gWeather.unknown_732 < gWeather.unknown_736) + gWeather.unknown_732++; + else if (gWeather.unknown_732 > gWeather.unknown_736) + gWeather.unknown_732--; + } + } + REG_BLDALPHA = (gWeather.unknown_732 << 8) | gWeather.unknown_730; + if (gWeather.unknown_730 == gWeather.unknown_734 + && gWeather.unknown_732 == gWeather.unknown_736) + return TRUE; + return FALSE; +} |