diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-11-11 15:39:43 -0500 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-11-11 15:39:43 -0500 |
commit | b6f9e2178088f31d8cfea38a97b01c988f36ebe5 (patch) | |
tree | 41ce7bf8eeeb0dc73c34a5cc93419ab1ec98c3fd | |
parent | 9974fd77611d0321ebe51750427e1ec273c1c7af (diff) | |
parent | ca8275a362d8f00c681ca3b0ace7ef472560de2a (diff) |
merge
-rw-r--r-- | asm/field_weather.s | 5252 | ||||
-rw-r--r-- | data/field_weather.s | 34 | ||||
-rwxr-xr-x | include/ewram.h | 1 | ||||
-rw-r--r-- | include/field_weather.h | 7 | ||||
-rw-r--r-- | include/songs.h | 20 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/field/field_weather.c | 1859 |
7 files changed, 1834 insertions, 5340 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s index 7d30bbdb8..d42926db8 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -5,5258 +5,6 @@ .text - thumb_func_start sub_807CEBC -sub_807CEBC: @ 807CEBC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - 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 - bgt _0807CEDE - b _0807D048 -_0807CEDE: - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r5, r3, 4 - adds r0, r1, r3 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r4, r9 - bcc _0807CEF6 - b _0807D1A2 -_0807CEF6: - ldr r1, [sp] - lsls r0, r1, 24 - asrs r0, 19 - str r0, [sp, 0x4] -_0807CEFE: - ldr r0, _0807CF30 @ =gUnknown_030006DC - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807CF3C - lsls r1, r5, 1 - ldr r0, _0807CF34 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _0807CF38 @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x8 - bl CpuFastSet - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - mov r2, r9 - lsls r2, 16 - mov r8, r2 - adds r4, 0x1 - mov r12, r4 - b _0807D032 - .align 2, 0 -_0807CF30: .4byte gUnknown_030006DC -_0807CF34: .4byte gPlttBufferUnfaded -_0807CF38: .4byte gPlttBufferFaded -_0807CF3C: - cmp r0, 0x2 - beq _0807CF50 - adds r1, r4, 0 - subs r1, 0x10 - ldr r2, _0807CF54 @ =gUnknown_0202F7E8 - ldr r3, _0807CF58 @ =0x000006d5 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - bne _0807CF60 -_0807CF50: - ldr r0, _0807CF5C @ =gUnknown_0202FC48 - b _0807CF66 - .align 2, 0 -_0807CF54: .4byte gUnknown_0202F7E8 -_0807CF58: .4byte 0x000006d5 -_0807CF5C: .4byte gUnknown_0202FC48 -_0807CF60: - movs r3, 0x80 - lsls r3, 2 - adds r0, r2, r3 -_0807CF66: - ldr r1, [sp, 0x4] - adds r6, r1, r0 - cmp r4, 0x10 - beq _0807CF72 - cmp r4, 0x1B - bls _0807CFE2 -_0807CF72: - movs r7, 0 - mov r2, r9 - lsls r2, 16 - mov r8, r2 - adds r4, 0x1 - mov r12, r4 - ldr r3, _0807CF9C @ =gPlttBufferFaded - mov r10, r3 -_0807CF82: - adds r2, r5, 0 - lsls r0, r5, 1 - ldr r4, _0807CFA0 @ =gPlttBufferUnfaded - adds r1, r0, r4 - ldrh r0, [r1] - ldr r3, _0807CFA4 @ =0x00002d9f - cmp r0, r3 - bne _0807CFA8 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - b _0807CFD6 - .align 2, 0 -_0807CF9C: .4byte gPlttBufferFaded -_0807CFA0: .4byte gPlttBufferUnfaded -_0807CFA4: .4byte 0x00002d9f -_0807CFA8: - ldr r1, [r1] - lsls r0, r1, 27 - lsrs r0, 27 - adds r0, r6, r0 - ldrb r4, [r0] - lsls r0, r1, 22 - lsrs r0, 27 - adds r0, r6, r0 - ldrb r3, [r0] - lsls r1, 17 - lsrs r1, 27 - adds r1, r6, r1 - ldrb r1, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r2, 1 - add r2, r10 - lsls r0, r1, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r0, r4 - strh r0, [r2] -_0807CFD6: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807CF82 - b _0807D032 -_0807CFE2: - movs r7, 0 - mov r0, r9 - lsls r0, 16 - mov r8, r0 - adds r4, 0x1 - mov r12, r4 - ldr r1, _0807D040 @ =gPlttBufferFaded - mov r10, r1 -_0807CFF2: - adds r2, r5, 0 - lsls r0, r2, 1 - ldr r3, _0807D044 @ =gPlttBufferUnfaded - adds r0, r3 - ldr r1, [r0] - lsls r0, r1, 27 - lsrs r0, 27 - adds r0, r6, r0 - ldrb r4, [r0] - lsls r0, r1, 22 - lsrs r0, 27 - adds r0, r6, r0 - ldrb r3, [r0] - lsls r1, 17 - lsrs r1, 27 - adds r1, r6, r1 - ldrb r1, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r2, 1 - add r2, r10 - lsls r0, r1, 10 - lsls r1, r3, 5 - orrs r0, r1 - orrs r0, r4 - strh r0, [r2] - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807CFF2 -_0807D032: - mov r4, r12 - lsls r0, r4, 16 - lsrs r4, r0, 16 - cmp r0, r8 - bcs _0807D03E - b _0807CEFE -_0807D03E: - b _0807D1A2 - .align 2, 0 -_0807D040: .4byte gPlttBufferFaded -_0807D044: .4byte gPlttBufferUnfaded -_0807D048: - cmp r0, 0 - blt _0807D04E - b _0807D190 -_0807D04E: - mvns r0, r0 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r5, r3, 4 - adds r0, r1, r3 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - adds r4, r3, 0 - cmp r4, r9 - bcc _0807D068 - b _0807D1A2 -_0807D068: - ldr r0, _0807D098 @ =gUnknown_030006DC - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807D0A4 - lsls r1, r5, 1 - ldr r0, _0807D09C @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _0807D0A0 @ =gPlttBufferFaded - adds r1, r2 - movs r2, 0x8 - bl CpuFastSet - adds r0, r5, 0 - adds r0, 0x10 - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r9 - lsls r0, 16 - mov r8, r0 - adds r4, 0x1 - mov r12, r4 - b _0807D174 - .align 2, 0 -_0807D098: .4byte gUnknown_030006DC -_0807D09C: .4byte gPlttBufferUnfaded -_0807D0A0: .4byte gPlttBufferFaded -_0807D0A4: - cmp r4, 0x10 - beq _0807D0AC - cmp r4, 0x1B - bls _0807D11C -_0807D0AC: - movs r7, 0 - mov r1, r9 - lsls r1, 16 - mov r8, r1 - adds r4, 0x1 - mov r12, r4 - ldr r2, _0807D10C @ =gSharedMem - mov r10, r2 - ldr r3, [sp] - lsls r0, r3, 24 - asrs r6, r0, 11 -_0807D0C2: - lsls r1, r5, 1 - ldr r4, _0807D110 @ =gPlttBufferUnfaded - adds r0, r1, r4 - ldrh r0, [r0] - lsls r4, r0, 16 - ldr r2, _0807D114 @ =0x00002d9f - cmp r0, r2 - beq _0807D0FA - ldr r3, _0807D118 @ =gPlttBufferFaded - adds r3, r1, r3 - lsrs r0, r4, 17 - movs r1, 0xF - ands r0, r1 - lsrs r1, r4, 18 - movs r2, 0xF0 - ands r1, r2 - orrs r0, r1 - lsrs r1, r4, 19 - movs r4, 0xF0 - lsls r4, 4 - adds r2, r4, 0 - ands r1, r2 - orrs r0, r1 - lsls r0, 1 - adds r0, r6 - add r0, r10 - ldrh r0, [r0] - strh r0, [r3] -_0807D0FA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807D0C2 - b _0807D174 - .align 2, 0 -_0807D10C: .4byte gSharedMem -_0807D110: .4byte gPlttBufferUnfaded -_0807D114: .4byte 0x00002d9f -_0807D118: .4byte gPlttBufferFaded -_0807D11C: - movs r7, 0 - ldr r1, [sp] - lsls r0, r1, 24 - mov r2, r9 - lsls r2, 16 - mov r8, r2 - adds r4, 0x1 - mov r12, r4 - ldr r3, _0807D184 @ =gSharedMem - mov r10, r3 - asrs r6, r0, 11 -_0807D132: - lsls r0, r5, 1 - ldr r1, _0807D188 @ =gPlttBufferFaded - adds r4, r0, r1 - ldr r2, _0807D18C @ =gPlttBufferUnfaded - adds r0, r2 - ldrh r3, [r0] - lsls r3, 16 - lsrs r0, r3, 17 - movs r1, 0xF - ands r0, r1 - lsrs r1, r3, 18 - movs r2, 0xF0 - ands r1, r2 - orrs r0, r1 - lsrs r3, 19 - movs r2, 0xF0 - lsls r2, 4 - adds r1, r2, 0 - ands r3, r1 - orrs r0, r3 - lsls r0, 1 - adds r0, r6 - add r0, r10 - ldrh r0, [r0] - strh r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xF - bls _0807D132 -_0807D174: - mov r3, r12 - lsls r0, r3, 16 - lsrs r4, r0, 16 - cmp r0, r8 - bcs _0807D180 - b _0807D068 -_0807D180: - b _0807D1A2 - .align 2, 0 -_0807D184: .4byte gSharedMem -_0807D188: .4byte gPlttBufferFaded -_0807D18C: .4byte gPlttBufferUnfaded -_0807D190: - lsls r1, r4, 5 - ldr r0, _0807D1B4 @ =gPlttBufferUnfaded - adds r0, r1, r0 - ldr r2, _0807D1B8 @ =gPlttBufferFaded - adds r1, r2 - mov r4, r9 - lsls r2, r4, 3 - bl CpuFastSet -_0807D1A2: - 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 -_0807D1B4: .4byte gPlttBufferUnfaded -_0807D1B8: .4byte gPlttBufferFaded - thumb_func_end sub_807CEBC - - thumb_func_start sub_807D1BC -sub_807D1BC: @ 807D1BC - 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 _0807D2E8 - lsls r0, r2, 24 - asrs r0, 19 - str r0, [sp, 0x10] -_0807D214: - ldr r0, _0807D244 @ =gUnknown_030006DC - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807D248 - 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 _0807D2DE - .align 2, 0 -_0807D244: .4byte gUnknown_030006DC -_0807D248: - cmp r0, 0x1 - bne _0807D258 - ldr r0, _0807D254 @ =gUnknown_0202F9E8 - ldr r1, [sp, 0x10] - adds r5, r1, r0 - b _0807D25E - .align 2, 0 -_0807D254: .4byte gUnknown_0202F9E8 -_0807D258: - ldr r0, _0807D2F8 @ =gUnknown_0202FC48 - ldr r3, [sp, 0x10] - adds r5, r3, r0 -_0807D25E: - movs r7, 0 - mov r0, r10 - lsls r0, 16 - mov r9, r0 - adds r4, 0x1 - mov r12, r4 -_0807D26A: - adds r4, r6, 0 - lsls r0, r4, 1 - ldr r1, _0807D2FC @ =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, _0807D300 @ =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 _0807D26A -_0807D2DE: - mov r1, r12 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r0, r9 - bcc _0807D214 -_0807D2E8: - 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 -_0807D2F8: .4byte gUnknown_0202FC48 -_0807D2FC: .4byte gPlttBufferUnfaded -_0807D300: .4byte gPlttBufferFaded - thumb_func_end sub_807D1BC - - thumb_func_start sub_807D304 -sub_807D304: @ 807D304 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r1, 24 - lsrs r6, r1, 24 - mov r1, sp - strh r2, [r1] - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - eors r0, r1 - lsrs r0, 24 - str r0, [sp, 0x4] - ldr r0, [sp] - lsls r1, r0, 27 - lsrs r1, 27 - str r1, [sp, 0x8] - lsls r1, r0, 22 - lsrs r1, 27 - str r1, [sp, 0xC] - lsls r0, 17 - lsrs r0, 27 - mov r10, r0 - movs r5, 0 - movs r4, 0 -_0807D33C: - ldr r0, _0807D364 @ =gUnknown_030006DC - ldr r0, [r0] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _0807D368 - 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 r8, r4 - b _0807D3FE - .align 2, 0 -_0807D364: .4byte gUnknown_030006DC -_0807D368: - movs r0, 0 - mov r12, r0 - ldr r1, [sp, 0x4] - lsls r0, r1, 24 - adds r4, 0x1 - mov r8, r4 - movs r7, 0x1E - asrs r0, 11 - mov r9, r0 -_0807D37A: - adds r4, r5, 0 - lsls r0, r4, 1 - ldr r5, _0807D418 @ =gPlttBufferUnfaded - adds r0, r5 - ldr r0, [r0] - lsls r2, r0, 27 - lsrs r2, 27 - lsls r1, r0, 22 - lsrs r1, 27 - lsls r0, 17 - lsrs r0, 27 - ands r0, r7 - lsls r0, 7 - ands r1, r7 - lsls r1, 3 - orrs r0, r1 - ands r2, r7 - lsls r0, 1 - orrs r0, r2 - add r0, r9 - ldr r1, _0807D41C @ =gSharedMem - 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, 0x8] - subs r0, r5, r3 - muls r0, r6 - asrs r0, 4 - adds r3, r0 - lsls r3, 24 - lsrs r3, 24 - ldr r5, [sp, 0xC] - subs r0, r5, r2 - muls r0, r6 - asrs r0, 4 - adds r2, r0 - lsls r2, 24 - mov r5, r10 - 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 - ldr r0, _0807D420 @ =gPlttBufferFaded - adds r4, r0 - lsrs r1, 14 - lsrs r2, 19 - orrs r1, r2 - orrs r1, r3 - strh r1, [r4] - mov r0, r12 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - cmp r0, 0xF - bls _0807D37A -_0807D3FE: - mov r1, r8 - lsls r0, r1, 16 - lsrs r4, r0, 16 - cmp r4, 0x1F - bls _0807D33C - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807D418: .4byte gPlttBufferUnfaded -_0807D41C: .4byte gSharedMem -_0807D420: .4byte gPlttBufferFaded - thumb_func_end sub_807D304 - - 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 @ =gSharedMem - 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 gSharedMem -_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} - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x9 - bhi _0807DD46 - lsls r0, 2 - ldr r1, _0807DCCC @ =_0807DCD0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807DCCC: .4byte _0807DCD0 - .align 2, 0 -_0807DCD0: - .4byte _0807DCF8 - .4byte _0807DD00 - .4byte _0807DD08 - .4byte _0807DD10 - .4byte _0807DD18 - .4byte _0807DD20 - .4byte _0807DD28 - .4byte _0807DD30 - .4byte _0807DD38 - .4byte _0807DD40 -_0807DCF8: - movs r0, 0x1 - bl SetWeather - b _0807DD46 -_0807DD00: - movs r0, 0x2 - bl SetWeather - b _0807DD46 -_0807DD08: - movs r0, 0x3 - bl SetWeather - b _0807DD46 -_0807DD10: - movs r0, 0x4 - bl SetWeather - b _0807DD46 -_0807DD18: - movs r0, 0x5 - bl SetWeather - b _0807DD46 -_0807DD20: - movs r0, 0x6 - bl SetWeather - b _0807DD46 -_0807DD28: - movs r0, 0x9 - bl SetWeather - b _0807DD46 -_0807DD30: - movs r0, 0x7 - bl SetWeather - b _0807DD46 -_0807DD38: - movs r0, 0x8 - bl SetWeather - b _0807DD46 -_0807DD40: - movs r0, 0xB - bl SetWeather -_0807DD46: - pop {r0} - bx r0 - thumb_func_end unref_sub_807DCB4 - - thumb_func_start weather_get_current -weather_get_current: @ 807DD4C - ldr r0, _0807DD58 @ =gUnknown_0202F7E8 - movs r1, 0xDA - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0807DD58: .4byte gUnknown_0202F7E8 - thumb_func_end weather_get_current - - thumb_func_start sub_807DD5C -sub_807DD5C: @ 807DD5C - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r1, _0807DD7C @ =gUnknown_0202F7E8 - ldr r3, _0807DD80 @ =0x000006c6 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0807DDAE - cmp r2, 0x53 - beq _0807DD94 - cmp r2, 0x53 - bgt _0807DD84 - cmp r2, 0x51 - beq _0807DDA0 - b _0807DDAE - .align 2, 0 -_0807DD7C: .4byte gUnknown_0202F7E8 -_0807DD80: .4byte 0x000006c6 -_0807DD84: - cmp r2, 0x55 - bne _0807DDAE - ldr r0, _0807DD90 @ =0x000006dd - adds r1, r0 - movs r0, 0 - b _0807DDA6 - .align 2, 0 -_0807DD90: .4byte 0x000006dd -_0807DD94: - ldr r3, _0807DD9C @ =0x000006dd - adds r1, r3 - movs r0, 0x1 - b _0807DDA6 - .align 2, 0 -_0807DD9C: .4byte 0x000006dd -_0807DDA0: - ldr r0, _0807DDB4 @ =0x000006dd - adds r1, r0 - movs r0, 0x2 -_0807DDA6: - strb r0, [r1] - adds r0, r2, 0 - bl PlaySE -_0807DDAE: - pop {r0} - bx r0 - .align 2, 0 -_0807DDB4: .4byte 0x000006dd - thumb_func_end sub_807DD5C - - thumb_func_start PlayRainSoundEffect -PlayRainSoundEffect: @ 807DDB8 - push {lr} - bl IsSpecialSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _0807DDF6 - ldr r0, _0807DDE0 @ =gUnknown_0202F7E8 - ldr r1, _0807DDE4 @ =0x000006dd - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807DDE8 - cmp r0, 0x1 - bgt _0807DDF0 - cmp r0, 0 - bne _0807DDF0 - movs r0, 0x56 - bl PlaySE - b _0807DDF6 - .align 2, 0 -_0807DDE0: .4byte gUnknown_0202F7E8 -_0807DDE4: .4byte 0x000006dd -_0807DDE8: - movs r0, 0x54 - bl PlaySE - b _0807DDF6 -_0807DDF0: - movs r0, 0x52 - bl PlaySE -_0807DDF6: - pop {r0} - bx r0 - thumb_func_end PlayRainSoundEffect - - thumb_func_start sub_807DDFC -sub_807DDFC: @ 807DDFC - ldr r0, _0807DE08 @ =gUnknown_0202F7E8 - ldr r1, _0807DE0C @ =0x000006d3 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0807DE08: .4byte gUnknown_0202F7E8 -_0807DE0C: .4byte 0x000006d3 - thumb_func_end sub_807DDFC - - thumb_func_start sub_807DE10 -sub_807DE10: @ 807DE10 - ldr r0, _0807DE1C @ =gUnknown_0202F7E8 - ldr r1, _0807DE20 @ =0x000006c6 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - bx lr - .align 2, 0 -_0807DE1C: .4byte gUnknown_0202F7E8 -_0807DE20: .4byte 0x000006c6 - thumb_func_end sub_807DE10 - - thumb_func_start unref_sub_807DE24 -unref_sub_807DE24: @ 807DE24 - ldr r0, _0807DE30 @ =gUnknown_0202F7E8 - ldr r1, _0807DE34 @ =0x000006c6 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - bx lr - .align 2, 0 -_0807DE30: .4byte gUnknown_0202F7E8 -_0807DE34: .4byte 0x000006c6 - thumb_func_end unref_sub_807DE24 - - thumb_func_start sub_807DE38 -sub_807DE38: @ 807DE38 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0807DE5C @ =gUnknown_083970C8 - ldr r5, _0807DE60 @ =gUnknown_0202FF38 - adds r1, r5, 0 - movs r2, 0x10 - bl CpuSet - adds r4, r5 - movs r0, 0 - strb r0, [r4] - ldr r0, _0807DE64 @ =gUnknown_030006DC - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807DE5C: .4byte gUnknown_083970C8 -_0807DE60: .4byte gUnknown_0202FF38 -_0807DE64: .4byte gUnknown_030006DC - thumb_func_end sub_807DE38 - - thumb_func_start sub_807DE68 -sub_807DE68: @ 807DE68 - ldr r1, _0807DE70 @ =gUnknown_030006DC - ldr r0, _0807DE74 @ =gUnknown_083970C8 - str r0, [r1] - bx lr - .align 2, 0 -_0807DE70: .4byte gUnknown_030006DC -_0807DE74: .4byte gUnknown_083970C8 - thumb_func_end sub_807DE68 - - thumb_func_start sub_807DE78 -sub_807DE78: @ 807DE78 - push {lr} - ldr r0, _0807DEB0 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r2, _0807DEB4 @ =0x000006c1 - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r1, _0807DEB8 @ =0x000006c2 - adds r3, r0, r1 - movs r1, 0x14 - strb r1, [r3] - ldr r3, _0807DEBC @ =0x000006d2 - adds r1, r0, r3 - strb r2, [r1] - subs r3, 0x6 - adds r1, r0, r3 - strh r2, [r1] - ldr r1, _0807DEC0 @ =0x000006de - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0807DEAC - movs r0, 0 - movs r1, 0x10 - bl sub_807DB64 -_0807DEAC: - pop {r0} - bx r0 - .align 2, 0 -_0807DEB0: .4byte gUnknown_08396FC4 -_0807DEB4: .4byte 0x000006c1 -_0807DEB8: .4byte 0x000006c2 -_0807DEBC: .4byte 0x000006d2 -_0807DEC0: .4byte 0x000006de - thumb_func_end sub_807DE78 - - thumb_func_start sub_807DEC4 -sub_807DEC4: @ 807DEC4 - push {r4,lr} - bl sub_807DE78 - ldr r0, _0807DEEC @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807DEF0 @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807DEE4 - adds r4, r1, r2 -_0807DEDA: - bl sub_807DEF4 - ldrb r0, [r4] - cmp r0, 0 - beq _0807DEDA -_0807DEE4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807DEEC: .4byte gUnknown_08396FC4 -_0807DEF0: .4byte 0x000006d2 - thumb_func_end sub_807DEC4 - - thumb_func_start sub_807DEF4 -sub_807DEF4: @ 807DEF4 - push {r4,r5,lr} - ldr r0, _0807DF10 @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r0, _0807DF14 @ =0x000006cc - adds r4, r5, r0 - ldrh r0, [r4] - cmp r0, 0x1 - beq _0807DF24 - cmp r0, 0x1 - bgt _0807DF18 - cmp r0, 0 - beq _0807DF1E - b _0807DF48 - .align 2, 0 -_0807DF10: .4byte gUnknown_08396FC4 -_0807DF14: .4byte 0x000006cc -_0807DF18: - cmp r0, 0x2 - beq _0807DF30 - b _0807DF48 -_0807DF1E: - bl sub_807DFD4 - b _0807DF42 -_0807DF24: - movs r0, 0xC - movs r1, 0x8 - movs r2, 0x1 - bl sub_807DBA4 - b _0807DF42 -_0807DF30: - bl sub_807DBE8 - lsls r0, 24 - cmp r0, 0 - beq _0807DF48 - ldr r0, _0807DF50 @ =0x000006d2 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] -_0807DF42: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0807DF48: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807DF50: .4byte 0x000006d2 - thumb_func_end sub_807DEF4 - - thumb_func_start sub_807DF54 -sub_807DF54: @ 807DF54 - push {r4,lr} - ldr r0, _0807DF6C @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807DF70 @ =0x000006ce - adds r4, r0, r1 - ldrh r0, [r4] - cmp r0, 0 - beq _0807DF74 - cmp r0, 0x1 - beq _0807DF80 - movs r0, 0 - b _0807DF96 - .align 2, 0 -_0807DF6C: .4byte gUnknown_08396FC4 -_0807DF70: .4byte 0x000006ce -_0807DF74: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1 - bl sub_807DBA4 - b _0807DF8E -_0807DF80: - bl sub_807DBE8 - lsls r0, 24 - cmp r0, 0 - beq _0807DF94 - bl sub_807E0A0 -_0807DF8E: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0807DF94: - movs r0, 0x1 -_0807DF96: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807DF54 - - thumb_func_start sub_807DF9C -sub_807DF9C: @ 807DF9C - ldr r0, _0807DFB4 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807DFB8 @ =0x000006c1 - adds r2, r1, r0 - movs r0, 0 - strb r0, [r2] - ldr r0, _0807DFBC @ =0x000006c2 - adds r1, r0 - movs r0, 0x14 - strb r0, [r1] - bx lr - .align 2, 0 -_0807DFB4: .4byte gUnknown_08396FC4 -_0807DFB8: .4byte 0x000006c1 -_0807DFBC: .4byte 0x000006c2 - thumb_func_end sub_807DF9C - - thumb_func_start sub_807DFC0 -sub_807DFC0: @ 807DFC0 - push {lr} - bl sub_807DF9C - pop {r0} - bx r0 - thumb_func_end sub_807DFC0 - - thumb_func_start nullsub_55 -nullsub_55: @ 807DFCC - bx lr - thumb_func_end nullsub_55 - - thumb_func_start sub_807DFD0 -sub_807DFD0: @ 807DFD0 - movs r0, 0 - bx lr - thumb_func_end sub_807DFD0 - - thumb_func_start sub_807DFD4 -sub_807DFD4: @ 807DFD4 - push {r4,r5,lr} - ldr r0, _0807E04C @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807E050 @ =0x000006de - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807E090 - ldr r0, _0807E054 @ =gUnknown_0839A9D4 - bl LoadSpriteSheet - ldr r0, _0807E058 @ =gUnknown_08397108 - bl sub_807D8C0 - movs r5, 0 -_0807DFF2: - ldr r0, _0807E05C @ =gSpriteTemplate_839A9F0 - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _0807E068 - ldr r0, _0807E04C @ =gUnknown_08396FC4 - ldr r1, [r0] - lsls r2, r5, 2 - movs r0, 0xFA - lsls r0, 1 - adds r1, r0 - adds r1, r2 - lsls r4, r3, 4 - adds r4, r3 - lsls r4, 2 - ldr r0, _0807E060 @ =gSprites - adds r4, r0 - str r4, [r1] - ldr r0, _0807E064 @ =gUnknown_0839A9C8 - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r2, 0x2] - adds r1, 0x7 - lsls r1, 16 - asrs r1, 16 - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - bl sub_80603CC - adds r4, 0x3E - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - b _0807E07A - .align 2, 0 -_0807E04C: .4byte gUnknown_08396FC4 -_0807E050: .4byte 0x000006de -_0807E054: .4byte gUnknown_0839A9D4 -_0807E058: .4byte gUnknown_08397108 -_0807E05C: .4byte gSpriteTemplate_839A9F0 -_0807E060: .4byte gSprites -_0807E064: .4byte gUnknown_0839A9C8 -_0807E068: - ldr r0, _0807E098 @ =gUnknown_08396FC4 - ldr r1, [r0] - lsls r0, r5, 2 - movs r2, 0xFA - lsls r2, 1 - adds r1, r2 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_0807E07A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x2 - bls _0807DFF2 - ldr r0, _0807E098 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807E09C @ =0x000006de - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_0807E090: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E098: .4byte gUnknown_08396FC4 -_0807E09C: .4byte 0x000006de - thumb_func_end sub_807DFD4 - - thumb_func_start sub_807E0A0 -sub_807E0A0: @ 807E0A0 - push {r4,r5,lr} - ldr r0, _0807E0EC @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E0F0 @ =0x000006de - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807E0E4 - movs r4, 0 - movs r0, 0xFA - lsls r0, 1 - adds r5, r1, r0 -_0807E0B8: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0807E0C6 - bl DestroySprite -_0807E0C6: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _0807E0B8 - movs r0, 0x90 - lsls r0, 5 - bl FreeSpriteTilesByTag - ldr r0, _0807E0EC @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807E0F0 @ =0x000006de - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0807E0E4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E0EC: .4byte gUnknown_08396FC4 -_0807E0F0: .4byte 0x000006de - thumb_func_end sub_807E0A0 - - thumb_func_start sub_807E0F4 -sub_807E0F4: @ 807E0F4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - movs r1, 0x1 - ands r0, r1 - strh r0, [r2, 0x2E] - cmp r0, 0 - beq _0807E10C - ldrh r0, [r2, 0x20] - subs r0, 0x1 - strh r0, [r2, 0x20] -_0807E10C: - pop {r0} - bx r0 - thumb_func_end sub_807E0F4 - - thumb_func_start sub_807E110 -sub_807E110: @ 807E110 - ldr r0, _0807E134 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807E138 @ =0x000006cc - adds r3, r1, r0 - movs r2, 0 - movs r0, 0 - strh r0, [r3] - ldr r3, _0807E13C @ =0x000006d2 - adds r0, r1, r3 - strb r2, [r0] - subs r3, 0x11 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _0807E140 @ =0x000006c2 - adds r1, r0 - strb r2, [r1] - bx lr - .align 2, 0 -_0807E134: .4byte gUnknown_08396FC4 -_0807E138: .4byte 0x000006cc -_0807E13C: .4byte 0x000006d2 -_0807E140: .4byte 0x000006c2 - thumb_func_end sub_807E110 - - thumb_func_start sub_807E144 -sub_807E144: @ 807E144 - push {r4,lr} - bl sub_807E110 - ldr r0, _0807E16C @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E170 @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807E164 - adds r4, r1, r2 -_0807E15A: - bl sub_807E174 - ldrb r0, [r4] - cmp r0, 0 - beq _0807E15A -_0807E164: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807E16C: .4byte gUnknown_08396FC4 -_0807E170: .4byte 0x000006d2 - thumb_func_end sub_807E144 - - thumb_func_start sub_807E174 -sub_807E174: @ 807E174 - push {lr} - ldr r1, _0807E190 @ =gUnknown_08396FC4 - ldr r0, [r1] - ldr r2, _0807E194 @ =0x000006cc - adds r0, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _0807E250 - lsls r0, 2 - ldr r1, _0807E198 @ =_0807E19C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807E190: .4byte gUnknown_08396FC4 -_0807E194: .4byte 0x000006cc -_0807E198: .4byte _0807E19C - .align 2, 0 -_0807E19C: - .4byte _0807E1B0 - .4byte _0807E1CC - .4byte _0807E1E4 - .4byte _0807E200 - .4byte _0807E218 -_0807E1B0: - ldr r1, [r2] - ldr r2, _0807E1C4 @ =0x000006c6 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807E254 - ldr r0, _0807E1C8 @ =0x000006cc - adds r1, r0 - b _0807E238 - .align 2, 0 -_0807E1C4: .4byte 0x000006c6 -_0807E1C8: .4byte 0x000006cc -_0807E1CC: - bl sub_807D9A8 - ldr r0, _0807E1DC @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E1E0 @ =0x000006cc - adds r1, r2 - b _0807E238 - .align 2, 0 -_0807E1DC: .4byte gUnknown_08396FC4 -_0807E1E0: .4byte 0x000006cc -_0807E1E4: - bl sub_807D9C8 - lsls r0, 24 - cmp r0, 0 - bne _0807E254 - ldr r0, _0807E1F8 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807E1FC @ =0x000006cc - adds r1, r0 - b _0807E238 - .align 2, 0 -_0807E1F8: .4byte gUnknown_08396FC4 -_0807E1FC: .4byte 0x000006cc -_0807E200: - bl sub_807DA14 - ldr r0, _0807E210 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E214 @ =0x000006cc - adds r1, r2 - b _0807E238 - .align 2, 0 -_0807E210: .4byte gUnknown_08396FC4 -_0807E214: .4byte 0x000006cc -_0807E218: - bl sub_807DA4C - ldr r0, _0807E240 @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r1, _0807E244 @ =0x0000073c - adds r0, r2, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x6 - bne _0807E254 - ldr r0, _0807E248 @ =0x000006d2 - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0807E24C @ =0x000006cc - adds r1, r2, r0 -_0807E238: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0807E254 - .align 2, 0 -_0807E240: .4byte gUnknown_08396FC4 -_0807E244: .4byte 0x0000073c -_0807E248: .4byte 0x000006d2 -_0807E24C: .4byte 0x000006cc -_0807E250: - bl sub_807DA4C -_0807E254: - pop {r0} - bx r0 - thumb_func_end sub_807E174 - - thumb_func_start sub_807E258 -sub_807E258: @ 807E258 - movs r0, 0 - bx lr - thumb_func_end sub_807E258 - - thumb_func_start sub_807E25C -sub_807E25C: @ 807E25C - push {lr} - ldr r0, _0807E26C @ =task50_0807B6D4 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807E26C: .4byte task50_0807B6D4 - thumb_func_end sub_807E25C - - thumb_func_start task50_0807B6D4 -task50_0807B6D4: @ 807E270 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0807E294 @ =gTasks - adds r3, r0, r1 - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0x4 - bhi _0807E35E - lsls r0, 2 - ldr r1, _0807E298 @ =_0807E29C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807E294: .4byte gTasks -_0807E298: .4byte _0807E29C - .align 2, 0 -_0807E29C: - .4byte _0807E2B0 - .4byte _0807E2D2 - .4byte _0807E300 - .4byte _0807E334 - .4byte _0807E354 -_0807E2B0: - movs r2, 0 - strh r2, [r3, 0xA] - strh r2, [r3, 0xC] - ldr r1, _0807E2F4 @ =REG_WININ - ldrh r0, [r1] - strh r0, [r3, 0xE] - ldr r4, _0807E2F8 @ =0x00003f3f - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x8 - movs r0, 0x9E - strh r0, [r1] - ldr r0, _0807E2FC @ =REG_BLDY - strh r2, [r0] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_0807E2D2: - ldrh r0, [r3, 0xA] - adds r0, 0x3 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _0807E2E4 - movs r0, 0x10 - strh r0, [r3, 0xA] -_0807E2E4: - ldr r0, _0807E2FC @ =REG_BLDY - ldrh r1, [r3, 0xA] - strh r1, [r0] - movs r1, 0xA - ldrsh r0, [r3, r1] - cmp r0, 0xF - ble _0807E35E - b _0807E344 - .align 2, 0 -_0807E2F4: .4byte REG_WININ -_0807E2F8: .4byte 0x00003f3f -_0807E2FC: .4byte REG_BLDY -_0807E300: - ldrh r0, [r3, 0xC] - adds r0, 0x1 - movs r1, 0 - strh r0, [r3, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _0807E35E - strh r1, [r3, 0xC] - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - cmp r0, 0 - bgt _0807E326 - strh r1, [r3, 0xA] - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] -_0807E326: - ldr r1, _0807E330 @ =REG_BLDY - ldrh r0, [r3, 0xA] - strh r0, [r1] - b _0807E35E - .align 2, 0 -_0807E330: .4byte REG_BLDY -_0807E334: - ldr r0, _0807E34C @ =REG_BLDCNT - movs r1, 0 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - ldr r1, _0807E350 @ =REG_WININ - ldrh r0, [r3, 0xE] - strh r0, [r1] -_0807E344: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _0807E35E - .align 2, 0 -_0807E34C: .4byte REG_BLDCNT -_0807E350: .4byte REG_WININ -_0807E354: - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_0807E35E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task50_0807B6D4 - - thumb_func_start sub_807E364 -sub_807E364: @ 807E364 - push {r4,lr} - ldr r0, _0807E3B4 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E3B8 @ =0x000006cc - adds r0, r1, r2 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - ldr r4, _0807E3BC @ =0x000006d2 - adds r0, r1, r4 - strb r3, [r0] - adds r4, 0x4 - adds r0, r1, r4 - strh r2, [r0] - ldr r0, _0807E3C0 @ =0x000006db - adds r2, r1, r0 - movs r0, 0x8 - strb r0, [r2] - ldr r2, _0807E3C4 @ =0x000006dc - adds r0, r1, r2 - strb r3, [r0] - adds r4, 0x3 - adds r2, r1, r4 - movs r0, 0xA - strb r0, [r2] - ldr r0, _0807E3C8 @ =0x000006c1 - adds r2, r1, r0 - movs r0, 0x3 - strb r0, [r2] - ldr r2, _0807E3CC @ =0x000006c2 - adds r1, r2 - movs r0, 0x14 - strb r0, [r1] - movs r0, 0x55 - bl sub_807DD5C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807E3B4: .4byte gUnknown_08396FC4 -_0807E3B8: .4byte 0x000006cc -_0807E3BC: .4byte 0x000006d2 -_0807E3C0: .4byte 0x000006db -_0807E3C4: .4byte 0x000006dc -_0807E3C8: .4byte 0x000006c1 -_0807E3CC: .4byte 0x000006c2 - thumb_func_end sub_807E364 - - thumb_func_start sub_807E3D0 -sub_807E3D0: @ 807E3D0 - push {r4,lr} - bl sub_807E364 - ldr r0, _0807E3F8 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807E3FC @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807E3F0 - adds r4, r1, r2 -_0807E3E6: - bl sub_807E400 - ldrb r0, [r4] - cmp r0, 0 - beq _0807E3E6 -_0807E3F0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807E3F8: .4byte gUnknown_08396FC4 -_0807E3FC: .4byte 0x000006d2 - thumb_func_end sub_807E3D0 - - thumb_func_start sub_807E400 -sub_807E400: @ 807E400 - push {r4,r5,lr} - ldr r0, _0807E41C @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r0, _0807E420 @ =0x000006cc - adds r4, r5, r0 - ldrh r0, [r4] - cmp r0, 0x1 - beq _0807E430 - cmp r0, 0x1 - bgt _0807E424 - cmp r0, 0 - beq _0807E42A - b _0807E454 - .align 2, 0 -_0807E41C: .4byte gUnknown_08396FC4 -_0807E420: .4byte 0x000006cc -_0807E424: - cmp r0, 0x2 - beq _0807E43C - b _0807E454 -_0807E42A: - bl sub_807E7A4 - b _0807E44E -_0807E430: - bl sub_807E7B4 - lsls r0, 24 - cmp r0, 0 - bne _0807E454 - b _0807E44E -_0807E43C: - bl sub_807E8E8 - lsls r0, 24 - cmp r0, 0 - bne _0807E454 - ldr r0, _0807E45C @ =0x000006d2 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] -_0807E44E: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0807E454: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807E45C: .4byte 0x000006d2 - thumb_func_end sub_807E400 - - thumb_func_start sub_807E460 -sub_807E460: @ 807E460 - push {r4,r5,lr} - ldr r0, _0807E47C @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r1, _0807E480 @ =0x000006ce - adds r3, r2, r1 - ldrh r1, [r3] - adds r4, r0, 0 - cmp r1, 0 - beq _0807E484 - cmp r1, 0x1 - beq _0807E4B8 - movs r0, 0 - b _0807E4E6 - .align 2, 0 -_0807E47C: .4byte gUnknown_08396FC4 -_0807E480: .4byte 0x000006ce -_0807E484: - ldr r5, _0807E4A4 @ =0x000006d1 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0x3 - beq _0807E496 - cmp r0, 0x5 - beq _0807E496 - cmp r0, 0xD - bne _0807E4AC -_0807E496: - ldr r0, [r4] - ldr r1, _0807E4A8 @ =0x000006ce - adds r0, r1 - movs r1, 0xFF - strh r1, [r0] - movs r0, 0 - b _0807E4E6 - .align 2, 0 -_0807E4A4: .4byte 0x000006d1 -_0807E4A8: .4byte 0x000006ce -_0807E4AC: - ldr r4, _0807E4D8 @ =0x000006d9 - adds r0, r2, r4 - strb r1, [r0] - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_0807E4B8: - bl sub_807E8E8 - lsls r0, 24 - cmp r0, 0 - bne _0807E4E4 - bl sub_807E974 - ldr r0, _0807E4DC @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r5, _0807E4E0 @ =0x000006ce - adds r1, r5 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - b _0807E4E6 - .align 2, 0 -_0807E4D8: .4byte 0x000006d9 -_0807E4DC: .4byte gUnknown_08396FC4 -_0807E4E0: .4byte 0x000006ce -_0807E4E4: - movs r0, 0x1 -_0807E4E6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807E460 - - thumb_func_start sub_807E4EC -sub_807E4EC: @ 807E4EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - movs r1, 0x30 - ldrsh r0, [r7, r1] - cmp r0, 0 - bne _0807E500 - ldr r0, _0807E5A4 @ =0x00000169 - strh r0, [r7, 0x30] -_0807E500: - movs r2, 0x30 - ldrsh r1, [r7, r2] - ldr r0, _0807E5A8 @ =0x41c64e6d - muls r0, r1 - ldr r3, _0807E5AC @ =0x00003039 - adds r0, r3 - lsls r0, 1 - lsrs r0, 17 - movs r1, 0x96 - lsls r1, 2 - bl __umodsi3 - movs r1, 0 - mov r8, r1 - strh r0, [r7, 0x30] - ldr r1, _0807E5B0 @ =gUnknown_0839AAC4 - ldr r0, _0807E5B4 @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r2, _0807E5B8 @ =0x000006dc - adds r5, r2 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldrh r6, [r0] - movs r3, 0x30 - ldrsh r0, [r7, r3] - movs r1, 0x1E - bl __modsi3 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - lsls r0, r4, 3 - strh r0, [r7, 0x32] - movs r1, 0x30 - ldrsh r0, [r7, r1] - movs r1, 0x1E - bl __divsi3 - lsls r0, 16 - lsls r4, 7 - strh r4, [r7, 0x32] - asrs r0, 9 - strh r0, [r7, 0x34] - ldr r2, _0807E5BC @ =gUnknown_0839AABC - ldrb r1, [r5] - lsls r1, 2 - adds r1, r2 - movs r3, 0 - ldrsh r1, [r1, r3] - muls r1, r6 - subs r4, r1 - strh r4, [r7, 0x32] - ldrb r1, [r5] - lsls r1, 2 - adds r2, 0x2 - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - muls r1, r6 - subs r0, r1 - strh r0, [r7, 0x34] - adds r0, r7, 0 - movs r1, 0 - bl StartSpriteAnim - mov r3, r8 - strh r3, [r7, 0x36] - adds r2, r7, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - strh r6, [r7, 0x2E] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807E5A4: .4byte 0x00000169 -_0807E5A8: .4byte 0x41c64e6d -_0807E5AC: .4byte 0x00003039 -_0807E5B0: .4byte gUnknown_0839AAC4 -_0807E5B4: .4byte gUnknown_08396FC4 -_0807E5B8: .4byte 0x000006dc -_0807E5BC: .4byte gUnknown_0839AABC - thumb_func_end sub_807E4EC - - thumb_func_start sub_807E5C0 -sub_807E5C0: @ 807E5C0 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x36 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0807E69C - ldr r3, _0807E634 @ =gUnknown_0839AABC - ldr r4, _0807E638 @ =gUnknown_08396FC4 - ldr r2, [r4] - ldr r0, _0807E63C @ =0x000006dc - adds r2, r0 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0] - ldrh r0, [r5, 0x32] - adds r1, r0 - strh r1, [r5, 0x32] - ldrb r0, [r2] - lsls r0, 2 - adds r3, 0x2 - adds r0, r3 - ldrh r0, [r0] - ldrh r2, [r5, 0x34] - adds r0, r2 - strh r0, [r5, 0x34] - lsls r1, 16 - asrs r1, 20 - strh r1, [r5, 0x20] - lsls r0, 16 - asrs r2, r0, 20 - strh r2, [r5, 0x22] - movs r3, 0x38 - ldrsh r0, [r5, r3] - adds r3, r4, 0 - cmp r0, 0 - beq _0807E640 - adds r0, r1, 0 - adds r0, 0x8 - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bhi _0807E640 - adds r1, r2, 0 - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - blt _0807E640 - cmp r1, 0xB0 - bgt _0807E640 - adds r0, r5, 0 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - b _0807E64A - .align 2, 0 -_0807E634: .4byte gUnknown_0839AABC -_0807E638: .4byte gUnknown_08396FC4 -_0807E63C: .4byte 0x000006dc -_0807E640: - adds r0, r5, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 -_0807E64A: - strb r1, [r0] - adds r4, r0, 0 - ldrh r0, [r5, 0x2E] - subs r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - cmp r0, 0 - bne _0807E6BC - ldr r0, [r3] - ldr r1, _0807E690 @ =0x000006dc - adds r0, r1 - ldrb r1, [r0] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - movs r0, 0x1 - strh r0, [r5, 0x36] - ldr r1, _0807E694 @ =gSpriteCoordOffsetX - ldrh r0, [r5, 0x20] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r5, 0x20] - ldr r1, _0807E698 @ =gSpriteCoordOffsetY - ldrh r0, [r5, 0x22] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r5, 0x22] - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - b _0807E6BC - .align 2, 0 -_0807E690: .4byte 0x000006dc -_0807E694: .4byte gSpriteCoordOffsetX -_0807E698: .4byte gSpriteCoordOffsetY -_0807E69C: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0807E6BC - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl sub_807E4EC -_0807E6BC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807E5C0 - - thumb_func_start sub_807E6C4 -sub_807E6C4: @ 807E6C4 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x2E] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0807E6E4 - adds r0, r4, 0 - bl sub_807E4EC - ldr r0, _0807E6E0 @ =sub_807E5C0 - str r0, [r4, 0x1C] - b _0807E6E8 - .align 2, 0 -_0807E6E0: .4byte sub_807E5C0 -_0807E6E4: - subs r0, r1, 0x1 - strh r0, [r4, 0x2E] -_0807E6E8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807E6C4 - - thumb_func_start sub_807E6F0 -sub_807E6F0: @ 807E6F0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - lsls r5, r1, 16 - lsrs r5, 16 - ldr r2, _0807E774 @ =gUnknown_0839AAC4 - ldr r0, _0807E778 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807E77C @ =0x000006dc - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r1, r0, r2 - ldrh r1, [r1] - mov r8, r1 - adds r2, 0x2 - adds r0, r2 - ldrh r4, [r0] - add r4, r8 - adds r0, r5, 0 - adds r1, r4, 0 - bl __divsi3 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 16 - lsrs r4, r0, 16 - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _0807E780 @ =0x0000ffff - cmp r6, r0 - beq _0807E74E - adds r5, r0, 0 -_0807E73E: - adds r0, r7, 0 - bl sub_807E4EC - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r5 - bne _0807E73E -_0807E74E: - cmp r4, r8 - bcs _0807E784 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _0807E780 @ =0x0000ffff - cmp r4, r0 - beq _0807E770 - adds r5, r0, 0 -_0807E760: - adds r0, r7, 0 - bl sub_807E5C0 - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - bne _0807E760 -_0807E770: - movs r0, 0 - b _0807E798 - .align 2, 0 -_0807E774: .4byte gUnknown_0839AAC4 -_0807E778: .4byte gUnknown_08396FC4 -_0807E77C: .4byte 0x000006dc -_0807E780: .4byte 0x0000ffff -_0807E784: - mov r1, r8 - subs r0, r4, r1 - strh r0, [r7, 0x2E] - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_0807E798: - strh r0, [r7, 0x3A] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807E6F0 - - thumb_func_start sub_807E7A4 -sub_807E7A4: @ 807E7A4 - push {lr} - ldr r0, _0807E7B0 @ =gUnknown_0839AACC - bl LoadSpriteSheet - pop {r0} - bx r0 - .align 2, 0 -_0807E7B0: .4byte gUnknown_0839AACC - thumb_func_end sub_807E7A4 - - thumb_func_start sub_807E7B4 -sub_807E7B4: @ 807E7B4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0807E860 @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r0, _0807E864 @ =0x000006da - adds r2, r4, r0 - ldrb r0, [r2] - cmp r0, 0x18 - bne _0807E7CE - b _0807E8D4 -_0807E7CE: - ldrb r7, [r2] - ldr r0, _0807E868 @ =gSpriteTemplate_839AAA4 - ldr r2, _0807E86C @ =gUnknown_0839AA08 - lsls r6, r7, 2 - adds r2, r6, r2 - movs r3, 0 - ldrsh r1, [r2, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - movs r3, 0x4E - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _0807E87C - ldr r3, _0807E870 @ =gSprites - lsls r4, r5, 4 - adds r1, r4, r5 - lsls r1, 2 - adds r1, r3 - movs r0, 0 - strh r0, [r1, 0x38] - lsls r2, r7, 3 - adds r0, r2, r7 - lsls r0, 4 - adds r0, r7 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - ldr r1, _0807E874 @ =0x00000257 - mov r10, r6 - mov r9, r3 - mov r12, r4 - mov r8, r2 - cmp r0, r1 - ble _0807E832 - adds r2, r1, 0 -_0807E81A: - adds r0, r4, r5 - lsls r0, 2 - ldr r6, _0807E870 @ =gSprites - adds r0, r6 - ldr r3, _0807E878 @ =0xfffffda8 - ldrh r6, [r0, 0x30] - adds r1, r3, r6 - strh r1, [r0, 0x30] - lsls r1, 16 - asrs r1, 16 - cmp r1, r2 - bgt _0807E81A -_0807E832: - mov r0, r12 - adds r4, r0, r5 - lsls r4, 2 - add r4, r9 - adds r0, r4, 0 - bl sub_807E4EC - mov r3, r8 - adds r1, r3, r7 - adds r0, r4, 0 - bl sub_807E6F0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0807E860 @ =gUnknown_08396FC4 - ldr r0, [r0] - add r0, r10 - str r4, [r0] - b _0807E882 - .align 2, 0 -_0807E860: .4byte gUnknown_08396FC4 -_0807E864: .4byte 0x000006da -_0807E868: .4byte gSpriteTemplate_839AAA4 -_0807E86C: .4byte gUnknown_0839AA08 -_0807E870: .4byte gSprites -_0807E874: .4byte 0x00000257 -_0807E878: .4byte 0xfffffda8 -_0807E87C: - adds r1, r4, r6 - movs r0, 0 - str r0, [r1] -_0807E882: - ldr r0, _0807E8B8 @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r6, _0807E8BC @ =0x000006da - adds r1, r2, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - bne _0807E8D8 - movs r3, 0 - adds r1, r2, 0 - ldr r5, _0807E8C0 @ =sub_807E5C0 - ldr r4, _0807E8C4 @ =sub_807E6C4 -_0807E8A0: - lsls r0, r3, 2 - adds r0, r1, r0 - ldr r2, [r0] - cmp r2, 0 - beq _0807E8CA - movs r6, 0x3A - ldrsh r0, [r2, r6] - cmp r0, 0 - bne _0807E8C8 - str r5, [r2, 0x1C] - b _0807E8CA - .align 2, 0 -_0807E8B8: .4byte gUnknown_08396FC4 -_0807E8BC: .4byte 0x000006da -_0807E8C0: .4byte sub_807E5C0 -_0807E8C4: .4byte sub_807E6C4 -_0807E8C8: - str r4, [r2, 0x1C] -_0807E8CA: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x17 - bls _0807E8A0 -_0807E8D4: - movs r0, 0 - b _0807E8DA -_0807E8D8: - movs r0, 0x1 -_0807E8DA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_807E7B4 - - thumb_func_start sub_807E8E8 -sub_807E8E8: @ 807E8E8 - push {r4-r7,lr} - ldr r0, _0807E904 @ =gUnknown_08396FC4 - ldr r3, [r0] - movs r0, 0xDB - lsls r0, 3 - adds r4, r3, r0 - ldr r1, _0807E908 @ =0x000006d9 - adds r5, r3, r1 - ldrb r0, [r4] - ldrb r7, [r5] - cmp r0, r7 - bne _0807E90C - movs r0, 0 - b _0807E96E - .align 2, 0 -_0807E904: .4byte gUnknown_08396FC4 -_0807E908: .4byte 0x000006d9 -_0807E90C: - ldr r0, _0807E944 @ =0x000006d6 - adds r2, r3, r0 - ldrh r0, [r2] - adds r0, 0x1 - movs r6, 0 - strh r0, [r2] - ldr r7, _0807E948 @ =0x000006db - adds r1, r3, r7 - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1] - cmp r0, r1 - bls _0807E96C - strh r6, [r2] - ldrb r0, [r4] - adds r1, r0, 0 - ldrb r5, [r5] - cmp r1, r5 - bcs _0807E94C - adds r0, 0x1 - strb r0, [r4] - lsls r0, r1, 2 - adds r0, r3, r0 - ldr r1, [r0] - movs r0, 0x1 - strh r0, [r1, 0x38] - b _0807E96C - .align 2, 0 -_0807E944: .4byte 0x000006d6 -_0807E948: .4byte 0x000006db -_0807E94C: - subs r0, 0x1 - strb r0, [r4] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3, r0 - ldr r0, [r0] - strh r6, [r0, 0x38] - ldrb r0, [r4] - lsls r0, 2 - adds r0, r3, r0 - ldr r1, [r0] - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] -_0807E96C: - movs r0, 0x1 -_0807E96E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_807E8E8 - - thumb_func_start sub_807E974 -sub_807E974: @ 807E974 - push {r4-r7,lr} - movs r4, 0 - ldr r0, _0807E9BC @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r3, _0807E9C0 @ =0x000006da - adds r1, r2, r3 - adds r7, r0, 0 - ldrb r1, [r1] - cmp r4, r1 - bcs _0807E9A6 - adds r5, r2, 0 - adds r6, r5, r3 -_0807E98C: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - cmp r0, 0 - beq _0807E99A - bl DestroySprite -_0807E99A: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r0, [r6] - cmp r4, r0 - bcc _0807E98C -_0807E9A6: - ldr r0, [r7] - ldr r1, _0807E9C0 @ =0x000006da - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _0807E9C4 @ =0x00001206 - bl FreeSpriteTilesByTag - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807E9BC: .4byte gUnknown_08396FC4 -_0807E9C0: .4byte 0x000006da -_0807E9C4: .4byte 0x00001206 - thumb_func_end sub_807E974 - - thumb_func_start sub_807E9C8 -sub_807E9C8: @ 807E9C8 - push {r4,lr} - ldr r0, _0807EA04 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807EA08 @ =0x000006cc - adds r0, r1, r2 - movs r2, 0 - movs r3, 0 - strh r3, [r0] - ldr r4, _0807EA0C @ =0x000006d2 - adds r0, r1, r4 - strb r2, [r0] - ldr r0, _0807EA10 @ =0x000006c1 - adds r2, r1, r0 - movs r0, 0x3 - strb r0, [r2] - subs r4, 0x10 - adds r2, r1, r4 - movs r0, 0x14 - strb r0, [r2] - ldr r0, _0807EA14 @ =0x000006e5 - adds r2, r1, r0 - movs r0, 0x10 - strb r0, [r2] - movs r2, 0xDC - lsls r2, 3 - adds r1, r2 - strh r3, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807EA04: .4byte gUnknown_08396FC4 -_0807EA08: .4byte 0x000006cc -_0807EA0C: .4byte 0x000006d2 -_0807EA10: .4byte 0x000006c1 -_0807EA14: .4byte 0x000006e5 - thumb_func_end sub_807E9C8 - - thumb_func_start sub_807EA18 -sub_807EA18: @ 807EA18 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl sub_807E9C8 - ldr r2, _0807EA78 @ =gUnknown_08396FC4 - ldr r1, [r2] - ldr r3, _0807EA7C @ =0x000006d2 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _0807EA6E - mov r8, r2 - adds r7, r1, r3 -_0807EA34: - bl snowflakes_progress2 - movs r4, 0 - mov r1, r8 - ldr r0, [r1] - ldr r3, _0807EA80 @ =0x000006e4 - adds r0, r3 - ldrb r0, [r0] - cmp r4, r0 - bcs _0807EA68 - ldr r0, _0807EA78 @ =gUnknown_08396FC4 - ldr r5, [r0] - adds r6, r5, r3 -_0807EA4E: - lsls r1, r4, 2 - adds r0, r5, 0 - adds r0, 0x60 - adds r0, r1 - ldr r0, [r0] - bl sub_807ED48 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r0, [r6] - cmp r4, r0 - bcc _0807EA4E -_0807EA68: - ldrb r0, [r7] - cmp r0, 0 - beq _0807EA34 -_0807EA6E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807EA78: .4byte gUnknown_08396FC4 -_0807EA7C: .4byte 0x000006d2 -_0807EA80: .4byte 0x000006e4 - thumb_func_end sub_807EA18 - - thumb_func_start snowflakes_progress2 -snowflakes_progress2: @ 807EA84 - push {r4,r5,lr} - ldr r0, _0807EAB4 @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r0, _0807EAB8 @ =0x000006cc - adds r4, r5, r0 - ldrh r0, [r4] - cmp r0, 0 - bne _0807EAAC - bl snowflakes_progress - lsls r0, 24 - cmp r0, 0 - bne _0807EAAC - ldr r0, _0807EABC @ =0x000006d2 - adds r1, r5, r0 - movs r0, 0x1 - strb r0, [r1] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0807EAAC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807EAB4: .4byte gUnknown_08396FC4 -_0807EAB8: .4byte 0x000006cc -_0807EABC: .4byte 0x000006d2 - thumb_func_end snowflakes_progress2 - - thumb_func_start sub_807EAC0 -sub_807EAC0: @ 807EAC0 - push {r4,lr} - ldr r0, _0807EAD8 @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r0, _0807EADC @ =0x000006ce - adds r3, r2, r0 - ldrh r1, [r3] - cmp r1, 0 - beq _0807EAE0 - cmp r1, 0x1 - beq _0807EAF2 - movs r0, 0 - b _0807EB1E - .align 2, 0 -_0807EAD8: .4byte gUnknown_08396FC4 -_0807EADC: .4byte 0x000006ce -_0807EAE0: - ldr r4, _0807EB10 @ =0x000006e5 - adds r0, r2, r4 - strb r1, [r0] - subs r4, 0x5 - adds r0, r2, r4 - strh r1, [r0] - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_0807EAF2: - bl snowflakes_progress - lsls r0, 24 - cmp r0, 0 - bne _0807EB1C - ldr r0, _0807EB14 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807EB18 @ =0x000006ce - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - b _0807EB1E - .align 2, 0 -_0807EB10: .4byte 0x000006e5 -_0807EB14: .4byte gUnknown_08396FC4 -_0807EB18: .4byte 0x000006ce -_0807EB1C: - movs r0, 0x1 -_0807EB1E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807EAC0 - - thumb_func_start snowflakes_progress -snowflakes_progress: @ 807EB24 - push {r4,lr} - ldr r0, _0807EB40 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807EB44 @ =0x000006e4 - adds r3, r1, r0 - ldr r4, _0807EB48 @ =0x000006e5 - adds r2, r1, r4 - ldrb r0, [r3] - ldrb r4, [r2] - cmp r0, r4 - bne _0807EB4C - movs r0, 0 - b _0807EB8E - .align 2, 0 -_0807EB40: .4byte gUnknown_08396FC4 -_0807EB44: .4byte 0x000006e4 -_0807EB48: .4byte 0x000006e5 -_0807EB4C: - movs r0, 0xDC - lsls r0, 3 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x24 - bls _0807EB76 - movs r0, 0 - strh r0, [r1] - ldrb r0, [r3] - ldrb r2, [r2] - cmp r0, r2 - bcs _0807EB72 - bl snowflake_add - b _0807EB76 -_0807EB72: - bl snowflake_remove -_0807EB76: - ldr r0, _0807EB94 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r2, _0807EB98 @ =0x000006e4 - adds r1, r0, r2 - ldr r4, _0807EB9C @ =0x000006e5 - adds r0, r4 - ldrb r1, [r1] - ldrb r0, [r0] - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_0807EB8E: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0807EB94: .4byte gUnknown_08396FC4 -_0807EB98: .4byte 0x000006e4 -_0807EB9C: .4byte 0x000006e5 - thumb_func_end snowflakes_progress - - thumb_func_start snowflake_add -snowflake_add: @ 807EBA0 - push {r4-r6,lr} - ldr r0, _0807EBF4 @ =gSpriteTemplate_839AB04 - movs r1, 0 - movs r2, 0 - movs r3, 0x4E - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _0807EC04 - ldr r0, _0807EBF8 @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r0 - ldr r0, _0807EBFC @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r0, _0807EC00 @ =0x000006e4 - adds r6, r5, r0 - ldrb r0, [r6] - strh r0, [r4, 0x36] - adds r0, r4, 0 - bl sub_807EC40 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r6] - adds r1, r0, 0x1 - strb r1, [r6] - lsls r0, 24 - lsrs r0, 22 - adds r5, 0x60 - adds r5, r0 - str r4, [r5] - movs r0, 0x1 - b _0807EC06 - .align 2, 0 -_0807EBF4: .4byte gSpriteTemplate_839AB04 -_0807EBF8: .4byte gSprites -_0807EBFC: .4byte gUnknown_08396FC4 -_0807EC00: .4byte 0x000006e4 -_0807EC04: - movs r0, 0 -_0807EC06: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end snowflake_add - - thumb_func_start snowflake_remove -snowflake_remove: @ 807EC0C - push {lr} - ldr r0, _0807EC20 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807EC24 @ =0x000006e4 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _0807EC28 - movs r0, 0 - b _0807EC3C - .align 2, 0 -_0807EC20: .4byte gUnknown_08396FC4 -_0807EC24: .4byte 0x000006e4 -_0807EC28: - subs r0, 0x1 - strb r0, [r2] - lsls r0, 24 - lsrs r0, 22 - adds r1, 0x60 - adds r1, r0 - ldr r0, [r1] - bl DestroySprite - movs r0, 0x1 -_0807EC3C: - pop {r1} - bx r1 - thumb_func_end snowflake_remove - - thumb_func_start sub_807EC40 -sub_807EC40: @ 807EC40 - push {r4-r7,lr} - adds r5, r0, 0 - bl Random - movs r1, 0x36 - ldrsh r2, [r5, r1] - lsls r1, r2, 2 - adds r1, r2 - movs r2, 0x7 - ands r1, r2 - lsls r4, r1, 4 - subs r4, r1 - lsls r4, 1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1E - bl __umodsi3 - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - ldr r1, _0807ECE4 @ =gSpriteCoordOffsetY - adds r0, r5, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - movs r2, 0x3 - negs r2, r2 - adds r1, r2, 0 - subs r1, r0 - movs r7, 0 - strh r1, [r5, 0x22] - ldr r1, _0807ECE8 @ =gSpriteCoordOffsetX - adds r0, r5, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - subs r4, r0 - strh r4, [r5, 0x20] - movs r1, 0x22 - ldrsh r0, [r5, r1] - lsls r0, 7 - strh r0, [r5, 0x2E] - strh r7, [r5, 0x24] - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r6, r0, 0 - movs r4, 0x3 - ands r4, r6 - lsls r0, r4, 2 - adds r0, r4 - adds r0, 0x40 - strh r0, [r5, 0x30] - strh r0, [r5, 0x3C] - movs r1, 0x1 - bics r1, r6 - adds r0, r5, 0 - bl StartSpriteAnim - strh r7, [r5, 0x34] - movs r0, 0x1 - cmp r4, 0 - bne _0807ECD0 - movs r0, 0x2 -_0807ECD0: - strh r0, [r5, 0x32] - movs r0, 0x1F - ands r0, r6 - adds r0, 0xD2 - strh r0, [r5, 0x3A] - strh r7, [r5, 0x38] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807ECE4: .4byte gSpriteCoordOffsetY -_0807ECE8: .4byte gSpriteCoordOffsetX - thumb_func_end sub_807EC40 - - thumb_func_start sub_807ECEC -sub_807ECEC: @ 807ECEC - push {r4,lr} - adds r3, r0, 0 - ldr r0, _0807ED38 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807ED3C @ =0x000006e2 - adds r4, r0, r1 - ldrh r0, [r4] - cmp r0, 0x12 - bls _0807ED32 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r0, _0807ED40 @ =sub_807ED48 - str r0, [r3, 0x1C] - ldr r1, _0807ED44 @ =gSpriteCoordOffsetY - adds r0, r3, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r1] - adds r0, r1 - movs r1, 0xFA - subs r1, r0 - movs r2, 0 - strh r1, [r3, 0x22] - movs r1, 0x22 - ldrsh r0, [r3, r1] - lsls r0, 7 - strh r0, [r3, 0x2E] - strh r2, [r4] -_0807ED32: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807ED38: .4byte gUnknown_08396FC4 -_0807ED3C: .4byte 0x000006e2 -_0807ED40: .4byte sub_807ED48 -_0807ED44: .4byte gSpriteCoordOffsetY - thumb_func_end sub_807ECEC - - thumb_func_start sub_807ED48 -sub_807ED48: @ 807ED48 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 23 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x34] - adds r0, r2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x34] - ldr r1, _0807EDC0 @ =gSineTable - movs r3, 0x34 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0807ED7A - adds r0, 0x3F -_0807ED7A: - asrs r0, 6 - strh r0, [r4, 0x24] - adds r0, r4, 0 - adds r0, 0x28 - movs r5, 0 - ldrsb r5, [r0, r5] - ldrh r0, [r4, 0x20] - adds r0, r5 - ldr r1, _0807EDC4 @ =gSpriteCoordOffsetX - ldrh r1, [r1] - adds r3, r1, r0 - ldr r2, _0807EDC8 @ =0x000001ff - adds r0, r2, 0 - ands r3, r0 - adds r2, r3, 0 - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0807EDAC - ldr r3, _0807EDCC @ =0xffffff00 - adds r0, r3, 0 - orrs r2, r0 - lsls r0, r2, 16 - lsrs r3, r0, 16 -_0807EDAC: - lsls r0, r3, 16 - asrs r0, 16 - movs r2, 0x3 - negs r2, r2 - cmp r0, r2 - bge _0807EDD0 - adds r1, r5 - movs r0, 0xF2 - subs r0, r1 - b _0807EDD8 - .align 2, 0 -_0807EDC0: .4byte gSineTable -_0807EDC4: .4byte gSpriteCoordOffsetX -_0807EDC8: .4byte 0x000001ff -_0807EDCC: .4byte 0xffffff00 -_0807EDD0: - cmp r0, 0xF2 - ble _0807EDDA - adds r0, r1, r5 - subs r0, r2, r0 -_0807EDD8: - strh r0, [r4, 0x20] -_0807EDDA: - adds r0, r4, 0 - adds r0, 0x29 - movs r3, 0 - ldrsb r3, [r0, r3] - ldrh r0, [r4, 0x22] - adds r0, r3 - ldr r1, _0807EE18 @ =gSpriteCoordOffsetY - ldrh r1, [r1] - adds r2, r1, r0 - movs r0, 0xFF - ands r2, r0 - adds r0, r2, 0 - subs r0, 0xA4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bhi _0807EE1C - adds r1, r3 - movs r0, 0xFA - subs r0, r1 - movs r1, 0 - strh r0, [r4, 0x22] - movs r2, 0x22 - ldrsh r0, [r4, r2] - lsls r0, 7 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x38] - movs r0, 0xDC - strh r0, [r4, 0x3A] - b _0807EE48 - .align 2, 0 -_0807EE18: .4byte gSpriteCoordOffsetY -_0807EE1C: - adds r0, r2, 0 - subs r0, 0xF3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bhi _0807EE48 - movs r1, 0 - movs r0, 0xA3 - strh r0, [r4, 0x22] - lsls r0, 7 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x38] - movs r0, 0xDC - strh r0, [r4, 0x3A] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0807EE7C @ =sub_807ECEC - str r0, [r4, 0x1C] -_0807EE48: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x3A - ldrsh r1, [r4, r3] - cmp r0, r1 - bne _0807EE74 - adds r0, r4, 0 - bl sub_807EC40 - movs r0, 0xFA - strh r0, [r4, 0x22] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0807EE7C @ =sub_807ECEC - str r0, [r4, 0x1C] -_0807EE74: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807EE7C: .4byte sub_807ECEC - thumb_func_end sub_807ED48 - - thumb_func_start sub_807EE80 -sub_807EE80: @ 807EE80 - push {r4,r5,lr} - ldr r0, _0807EED8 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807EEDC @ =0x000006cc - adds r0, r1, r2 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - ldr r5, _0807EEE0 @ =0x000006d2 - adds r4, r1, r5 - strb r3, [r4] - adds r5, 0x4 - adds r0, r1, r5 - strh r2, [r0] - ldr r0, _0807EEE4 @ =0x000006db - adds r2, r1, r0 - movs r0, 0x4 - strb r0, [r2] - ldr r2, _0807EEE8 @ =0x000006dc - adds r0, r1, r2 - strb r3, [r0] - adds r5, 0x3 - adds r2, r1, r5 - movs r0, 0x10 - strb r0, [r2] - ldr r0, _0807EEEC @ =0x000006c1 - adds r2, r1, r0 - movs r0, 0x3 - strb r0, [r2] - subs r5, 0x17 - adds r2, r1, r5 - movs r0, 0x14 - strb r0, [r2] - strb r3, [r4] - ldr r0, _0807EEF0 @ =0x000006ed - adds r1, r0 - strb r3, [r1] - movs r0, 0x51 - bl sub_807DD5C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807EED8: .4byte gUnknown_08396FC4 -_0807EEDC: .4byte 0x000006cc -_0807EEE0: .4byte 0x000006d2 -_0807EEE4: .4byte 0x000006db -_0807EEE8: .4byte 0x000006dc -_0807EEEC: .4byte 0x000006c1 -_0807EEF0: .4byte 0x000006ed - thumb_func_end sub_807EE80 - - thumb_func_start sub_807EEF4 -sub_807EEF4: @ 807EEF4 - push {r4,lr} - bl sub_807EE80 - ldr r0, _0807EF1C @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807EF20 @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807EF14 - adds r4, r1, r2 -_0807EF0A: - bl sub_807EFC0 - ldrb r0, [r4] - cmp r0, 0 - beq _0807EF0A -_0807EF14: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807EF1C: .4byte gUnknown_08396FC4 -_0807EF20: .4byte 0x000006d2 - thumb_func_end sub_807EEF4 - - thumb_func_start sub_807EF24 -sub_807EF24: @ 807EF24 - push {r4,r5,lr} - ldr r0, _0807EF78 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807EF7C @ =0x000006cc - adds r0, r1, r2 - movs r4, 0 - movs r2, 0 - strh r2, [r0] - ldr r5, _0807EF80 @ =0x000006d2 - adds r3, r1, r5 - strb r4, [r3] - adds r5, 0x4 - adds r0, r1, r5 - strh r2, [r0] - ldr r0, _0807EF84 @ =0x000006db - adds r2, r1, r0 - movs r0, 0x4 - strb r0, [r2] - adds r5, 0x6 - adds r2, r1, r5 - movs r0, 0x1 - strb r0, [r2] - ldr r0, _0807EF88 @ =0x000006d9 - adds r2, r1, r0 - movs r0, 0x18 - strb r0, [r2] - subs r5, 0x1B - adds r2, r1, r5 - movs r0, 0x3 - strb r0, [r2] - ldr r0, _0807EF8C @ =0x000006c2 - adds r1, r0 - movs r0, 0x14 - strb r0, [r1] - strb r4, [r3] - movs r0, 0x53 - bl sub_807DD5C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807EF78: .4byte gUnknown_08396FC4 -_0807EF7C: .4byte 0x000006cc -_0807EF80: .4byte 0x000006d2 -_0807EF84: .4byte 0x000006db -_0807EF88: .4byte 0x000006d9 -_0807EF8C: .4byte 0x000006c2 - thumb_func_end sub_807EF24 - - thumb_func_start sub_807EF90 -sub_807EF90: @ 807EF90 - push {r4,lr} - bl sub_807EF24 - ldr r0, _0807EFB8 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807EFBC @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807EFB0 - adds r4, r1, r2 -_0807EFA6: - bl sub_807EFC0 - ldrb r0, [r4] - cmp r0, 0 - beq _0807EFA6 -_0807EFB0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807EFB8: .4byte gUnknown_08396FC4 -_0807EFBC: .4byte 0x000006d2 - thumb_func_end sub_807EF90 - - thumb_func_start sub_807EFC0 -sub_807EFC0: @ 807EFC0 - push {r4,r5,lr} - bl sub_807F434 - ldr r0, _0807EFE0 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807EFE4 @ =0x000006cc - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0xE - bls _0807EFD6 - b _0807F336 -_0807EFD6: - lsls r0, 2 - ldr r1, _0807EFE8 @ =_0807EFEC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807EFE0: .4byte gUnknown_08396FC4 -_0807EFE4: .4byte 0x000006cc -_0807EFE8: .4byte _0807EFEC - .align 2, 0 -_0807EFEC: - .4byte _0807F028 - .4byte _0807F044 - .4byte _0807F068 - .4byte _0807F098 - .4byte _0807F0BC - .4byte _0807F0EC - .4byte _0807F11C - .4byte _0807F148 - .4byte _0807F166 - .4byte _0807F1C4 - .4byte _0807F248 - .4byte _0807F270 - .4byte _0807F2A0 - .4byte _0807F2E4 - .4byte _0807F318 -_0807F028: - bl sub_807E7A4 - ldr r0, _0807F03C @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807F040 @ =0x000006cc - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F03C: .4byte gUnknown_08396FC4 -_0807F040: .4byte 0x000006cc -_0807F044: - bl sub_807E7B4 - lsls r0, 24 - cmp r0, 0 - beq _0807F050 - b _0807F336 -_0807F050: - ldr r0, _0807F060 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r3, _0807F064 @ =0x000006cc - adds r1, r3 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F060: .4byte gUnknown_08396FC4 -_0807F064: .4byte 0x000006cc -_0807F068: - bl sub_807E8E8 - lsls r0, 24 - cmp r0, 0 - beq _0807F074 - b _0807F336 -_0807F074: - ldr r0, _0807F08C @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807F090 @ =0x000006d2 - adds r2, r1, r0 - movs r0, 0x1 - strb r0, [r2] - ldr r2, _0807F094 @ =0x000006cc - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F08C: .4byte gUnknown_08396FC4 -_0807F090: .4byte 0x000006d2 -_0807F094: .4byte 0x000006cc -_0807F098: - ldr r0, _0807F0B0 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r3, _0807F0B4 @ =0x000006c6 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _0807F0A8 - b _0807F336 -_0807F0A8: - ldr r0, _0807F0B8 @ =0x000006cc - adds r1, r0 - movs r0, 0x6 - b _0807F334 - .align 2, 0 -_0807F0B0: .4byte gUnknown_08396FC4 -_0807F0B4: .4byte 0x000006c6 -_0807F0B8: .4byte 0x000006cc -_0807F0BC: - ldr r0, _0807F10C @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r2, _0807F110 @ =0x000006ea - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r5, 0xB4 - lsls r5, 1 - adds r1, r5, 0 - bl __umodsi3 - adds r0, r5 - ldr r3, _0807F114 @ =0x000006e6 - adds r1, r4, r3 - strh r0, [r1] - ldr r0, _0807F118 @ =0x000006cc - adds r4, r0 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_0807F0EC: - ldr r0, _0807F10C @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r3, _0807F114 @ =0x000006e6 - adds r1, r2, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - beq _0807F102 - b _0807F336 -_0807F102: - ldr r0, _0807F118 @ =0x000006cc - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F10C: .4byte gUnknown_08396FC4 -_0807F110: .4byte 0x000006ea -_0807F114: .4byte 0x000006e6 -_0807F118: .4byte 0x000006cc -_0807F11C: - ldr r0, _0807F13C @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r1, _0807F140 @ =0x000006ea - adds r0, r4, r1 - movs r5, 0x1 - strb r5, [r0] - bl Random - lsls r0, 16 - lsrs r0, 16 - ands r0, r5 - ldr r2, _0807F144 @ =0x000006eb - adds r1, r4, r2 - strb r0, [r1] - b _0807F1A4 - .align 2, 0 -_0807F13C: .4byte gUnknown_08396FC4 -_0807F140: .4byte 0x000006ea -_0807F144: .4byte 0x000006eb -_0807F148: - bl Random - ldr r1, _0807F1B0 @ =gUnknown_08396FC4 - ldr r2, [r1] - movs r1, 0x1 - ands r1, r0 - adds r1, 0x1 - ldr r3, _0807F1B4 @ =0x000006ec - adds r0, r2, r3 - strb r1, [r0] - ldr r0, _0807F1B8 @ =0x000006cc - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] -_0807F166: - movs r0, 0x13 - bl sub_807D5BC - ldr r0, _0807F1B0 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807F1BC @ =0x000006eb - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807F18A - ldr r3, _0807F1B4 @ =0x000006ec - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807F18A - movs r0, 0x14 - bl sub_807F3F8 -_0807F18A: - bl Random - ldr r1, _0807F1B0 @ =gUnknown_08396FC4 - ldr r4, [r1] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x6 - ldr r2, _0807F1C0 @ =0x000006e6 - adds r1, r4, r2 - strh r0, [r1] -_0807F1A4: - ldr r3, _0807F1B8 @ =0x000006cc - adds r4, r3 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0807F336 - .align 2, 0 -_0807F1B0: .4byte gUnknown_08396FC4 -_0807F1B4: .4byte 0x000006ec -_0807F1B8: .4byte 0x000006cc -_0807F1BC: .4byte 0x000006eb -_0807F1C0: .4byte 0x000006e6 -_0807F1C4: - ldr r0, _0807F210 @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r0, _0807F214 @ =0x000006e6 - adds r5, r4, r0 - ldrh r0, [r5] - subs r0, 0x1 - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - beq _0807F1DA - b _0807F336 -_0807F1DA: - movs r0, 0x3 - bl sub_807D5BC - ldr r2, _0807F218 @ =0x000006ea - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - ldr r3, _0807F21C @ =0x000006ec - adds r1, r4, r3 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - beq _0807F224 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - adds r0, 0x3C - strh r0, [r5] - ldr r0, _0807F220 @ =0x000006cc - adds r1, r4, r0 - movs r0, 0xA - b _0807F334 - .align 2, 0 -_0807F210: .4byte gUnknown_08396FC4 -_0807F214: .4byte 0x000006e6 -_0807F218: .4byte 0x000006ea -_0807F21C: .4byte 0x000006ec -_0807F220: .4byte 0x000006cc -_0807F224: - ldr r1, _0807F234 @ =0x000006eb - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0807F23C - ldr r2, _0807F238 @ =0x000006cc - adds r1, r4, r2 - b _0807F332 - .align 2, 0 -_0807F234: .4byte 0x000006eb -_0807F238: .4byte 0x000006cc -_0807F23C: - ldr r3, _0807F244 @ =0x000006cc - adds r1, r4, r3 - movs r0, 0xB - b _0807F334 - .align 2, 0 -_0807F244: .4byte 0x000006cc -_0807F248: - ldr r0, _0807F264 @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r0, _0807F268 @ =0x000006e6 - adds r1, r2, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _0807F336 - ldr r3, _0807F26C @ =0x000006cc - adds r1, r2, r3 - movs r0, 0x8 - b _0807F334 - .align 2, 0 -_0807F264: .4byte gUnknown_08396FC4 -_0807F268: .4byte 0x000006e6 -_0807F26C: .4byte 0x000006cc -_0807F270: - bl Random - ldr r1, _0807F294 @ =gUnknown_08396FC4 - ldr r2, [r1] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xF - ands r0, r1 - adds r0, 0x3C - ldr r3, _0807F298 @ =0x000006e6 - adds r1, r2, r3 - strh r0, [r1] - ldr r0, _0807F29C @ =0x000006cc - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - b _0807F336 - .align 2, 0 -_0807F294: .4byte gUnknown_08396FC4 -_0807F298: .4byte 0x000006e6 -_0807F29C: .4byte 0x000006cc -_0807F2A0: - ldr r0, _0807F2D8 @ =gUnknown_08396FC4 - ldr r5, [r0] - ldr r1, _0807F2DC @ =0x000006e6 - adds r4, r5, r1 - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - bne _0807F336 - movs r0, 0x64 - bl sub_807F3F8 - movs r0, 0x13 - bl sub_807D5BC - bl Random - movs r1, 0xF - ands r1, r0 - adds r1, 0x1E - strh r1, [r4] - ldr r2, _0807F2E0 @ =0x000006cc - adds r1, r5, r2 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F2D8: .4byte gUnknown_08396FC4 -_0807F2DC: .4byte 0x000006e6 -_0807F2E0: .4byte 0x000006cc -_0807F2E4: - ldr r0, _0807F30C @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r3, _0807F310 @ =0x000006e6 - adds r1, r4, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _0807F336 - movs r0, 0x13 - movs r1, 0x3 - movs r2, 0x5 - bl sub_807D5F0 - ldr r0, _0807F314 @ =0x000006cc - adds r1, r4, r0 - ldrh r0, [r1] - adds r0, 0x1 - b _0807F334 - .align 2, 0 -_0807F30C: .4byte gUnknown_08396FC4 -_0807F310: .4byte 0x000006e6 -_0807F314: .4byte 0x000006cc -_0807F318: - ldr r0, _0807F33C @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r1, _0807F340 @ =0x000006c6 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bne _0807F336 - ldr r3, _0807F344 @ =0x000006ea - adds r1, r2, r3 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0807F348 @ =0x000006cc - adds r1, r2, r0 -_0807F332: - movs r0, 0x4 -_0807F334: - strh r0, [r1] -_0807F336: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807F33C: .4byte gUnknown_08396FC4 -_0807F340: .4byte 0x000006c6 -_0807F344: .4byte 0x000006ea -_0807F348: .4byte 0x000006cc - thumb_func_end sub_807EFC0 - - thumb_func_start sub_807F34C -sub_807F34C: @ 807F34C - push {r4-r6,lr} - ldr r0, _0807F368 @ =gUnknown_08396FC4 - ldr r6, [r0] - ldr r0, _0807F36C @ =0x000006ce - adds r5, r6, r0 - ldrh r1, [r5] - cmp r1, 0x1 - beq _0807F382 - cmp r1, 0x1 - bgt _0807F370 - cmp r1, 0 - beq _0807F376 - b _0807F3E8 - .align 2, 0 -_0807F368: .4byte gUnknown_08396FC4 -_0807F36C: .4byte 0x000006ce -_0807F370: - cmp r1, 0x2 - beq _0807F3CC - b _0807F3E8 -_0807F376: - ldr r2, _0807F3BC @ =0x000006ea - adds r0, r6, r2 - strb r1, [r0] - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_0807F382: - bl sub_807EFC0 - ldr r0, _0807F3C0 @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r1, _0807F3BC @ =0x000006ea - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0807F3F0 - subs r1, 0x19 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _0807F3E8 - cmp r0, 0x5 - beq _0807F3E8 - cmp r0, 0xD - beq _0807F3E8 - ldr r0, _0807F3C4 @ =0x000006d9 - adds r1, r2, r0 - movs r0, 0 - strb r0, [r1] - ldr r0, _0807F3C8 @ =0x000006ce - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0807F3F0 - .align 2, 0 -_0807F3BC: .4byte 0x000006ea -_0807F3C0: .4byte gUnknown_08396FC4 -_0807F3C4: .4byte 0x000006d9 -_0807F3C8: .4byte 0x000006ce -_0807F3CC: - bl sub_807E8E8 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0807F3F0 - bl sub_807E974 - ldr r1, _0807F3EC @ =0x000006ed - adds r0, r6, r1 - strb r4, [r0] - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_0807F3E8: - movs r0, 0 - b _0807F3F2 - .align 2, 0 -_0807F3EC: .4byte 0x000006ed -_0807F3F0: - movs r0, 0x1 -_0807F3F2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_807F34C - - thumb_func_start sub_807F3F8 -sub_807F3F8: @ 807F3F8 - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _0807F42C @ =gUnknown_08396FC4 - ldr r4, [r0] - ldr r0, _0807F430 @ =0x000006ed - adds r5, r4, r0 - ldrb r0, [r5] - cmp r0, 0 - bne _0807F426 - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl __umodsi3 - movs r2, 0xDD - lsls r2, 3 - adds r1, r4, r2 - strh r0, [r1] - movs r0, 0x1 - strb r0, [r5] -_0807F426: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807F42C: .4byte gUnknown_08396FC4 -_0807F430: .4byte 0x000006ed - thumb_func_end sub_807F3F8 - - thumb_func_start sub_807F434 -sub_807F434: @ 807F434 - push {r4,lr} - ldr r0, _0807F46C @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807F470 @ =0x000006ed - adds r0, r1, r2 - ldrb r4, [r0] - cmp r4, 0x1 - bne _0807F494 - movs r0, 0xDD - lsls r0, 3 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0807F490 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _0807F494 - bl Random - ands r4, r0 - cmp r4, 0 - beq _0807F474 - movs r0, 0x57 - bl PlaySE - b _0807F47A - .align 2, 0 -_0807F46C: .4byte gUnknown_08396FC4 -_0807F470: .4byte 0x000006ed -_0807F474: - movs r0, 0x58 - bl PlaySE -_0807F47A: - ldr r0, _0807F488 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807F48C @ =0x000006ed - adds r0, r1 - movs r1, 0 - strb r1, [r0] - b _0807F494 - .align 2, 0 -_0807F488: .4byte gUnknown_08396FC4 -_0807F48C: .4byte 0x000006ed -_0807F490: - subs r0, 0x1 - strh r0, [r1] -_0807F494: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807F434 - - thumb_func_start sub_807F49C -sub_807F49C: @ 807F49C - push {lr} - ldr r0, _0807F4E8 @ =gUnknown_08396FC4 - ldr r3, [r0] - ldr r0, _0807F4EC @ =0x000006cc - adds r1, r3, r0 - movs r2, 0 - movs r0, 0 - strh r0, [r1] - ldr r1, _0807F4F0 @ =0x000006d2 - adds r0, r3, r1 - strb r2, [r0] - subs r1, 0x11 - adds r0, r3, r1 - strb r2, [r0] - ldr r2, _0807F4F4 @ =0x000006c2 - adds r1, r3, r2 - movs r0, 0x14 - strb r0, [r1] - ldr r1, _0807F4F8 @ =0x000006fb - adds r0, r3, r1 - ldrb r1, [r0] - cmp r1, 0 - bne _0807F4E4 - adds r2, 0x2E - adds r0, r3, r2 - strh r1, [r0] - adds r2, 0x2 - adds r0, r3, r2 - strh r1, [r0] - subs r2, 0x4 - adds r0, r3, r2 - strh r1, [r0] - movs r0, 0 - movs r1, 0x10 - bl sub_807DB64 -_0807F4E4: - pop {r0} - bx r0 - .align 2, 0 -_0807F4E8: .4byte gUnknown_08396FC4 -_0807F4EC: .4byte 0x000006cc -_0807F4F0: .4byte 0x000006d2 -_0807F4F4: .4byte 0x000006c2 -_0807F4F8: .4byte 0x000006fb - thumb_func_end sub_807F49C - - thumb_func_start sub_807F4FC -sub_807F4FC: @ 807F4FC - push {r4,lr} - bl sub_807F49C - ldr r0, _0807F524 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r2, _0807F528 @ =0x000006d2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0807F51C - adds r4, r1, r2 -_0807F512: - bl sub_807F52C - ldrb r0, [r4] - cmp r0, 0 - beq _0807F512 -_0807F51C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807F524: .4byte gUnknown_08396FC4 -_0807F528: .4byte 0x000006d2 - thumb_func_end sub_807F4FC - - thumb_func_start sub_807F52C -sub_807F52C: @ 807F52C - push {r4-r6,lr} - ldr r0, _0807F578 @ =gUnknown_08396FC4 - ldr r6, [r0] - ldr r0, _0807F57C @ =gSpriteCoordOffsetX - ldr r1, _0807F580 @ =0x000006f2 - adds r2, r6, r1 - ldrh r0, [r0] - ldrh r1, [r2] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - ldr r3, _0807F584 @ =0x000006ee - adds r1, r6, r3 - strh r0, [r1] - movs r0, 0xDE - lsls r0, 3 - adds r1, r6, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3 - bls _0807F566 - movs r0, 0 - strh r0, [r1] - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] -_0807F566: - ldr r1, _0807F588 @ =0x000006cc - adds r5, r6, r1 - ldrh r4, [r5] - cmp r4, 0 - beq _0807F58C - cmp r4, 0x1 - beq _0807F5CC - b _0807F5E2 - .align 2, 0 -_0807F578: .4byte gUnknown_08396FC4 -_0807F57C: .4byte gSpriteCoordOffsetX -_0807F580: .4byte 0x000006f2 -_0807F584: .4byte 0x000006ee -_0807F588: .4byte 0x000006cc -_0807F58C: - bl sub_807F6E8 - movs r3, 0xDA - lsls r3, 3 - adds r0, r6, r3 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0807F5A8 - movs r0, 0xC - movs r1, 0x8 - movs r2, 0x3 - bl sub_807DBA4 - b _0807F5B2 -_0807F5A8: - movs r0, 0x4 - movs r1, 0x10 - movs r2, 0 - bl sub_807DBA4 -_0807F5B2: - ldr r0, _0807F5C4 @ =gUnknown_08396FC4 - ldr r1, [r0] - ldr r0, _0807F5C8 @ =0x000006cc - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0807F5E2 - .align 2, 0 -_0807F5C4: .4byte gUnknown_08396FC4 -_0807F5C8: .4byte 0x000006cc -_0807F5CC: - bl sub_807DBE8 - lsls r0, 24 - cmp r0, 0 - beq _0807F5E2 - ldr r1, _0807F5E8 @ =0x000006d2 - adds r0, r6, r1 - strb r4, [r0] - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_0807F5E2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807F5E8: .4byte 0x000006d2 - thumb_func_end sub_807F52C - - thumb_func_start sub_807F5EC -sub_807F5EC: @ 807F5EC - push {r4,lr} - ldr r0, _0807F63C @ =gUnknown_08396FC4 - ldr r2, [r0] - ldr r0, _0807F640 @ =gSpriteCoordOffsetX - ldr r1, _0807F644 @ =0x000006f2 - adds r3, r2, r1 - ldrh r0, [r0] - ldrh r1, [r3] - subs r0, r1 - movs r1, 0xFF - ands r0, r1 - ldr r4, _0807F648 @ =0x000006ee - adds r1, r2, r4 - strh r0, [r1] - movs r0, 0xDE - lsls r0, 3 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3 - bls _0807F626 - movs r0, 0 - strh r0, [r1] - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_0807F626: - ldr r1, _0807F64C @ =0x000006ce - adds r4, r2, r1 - ldrh r0, [r4] - cmp r0, 0x1 - beq _0807F662 - cmp r0, 0x1 - bgt _0807F650 - cmp r0, 0 - beq _0807F656 - b _0807F67A - .align 2, 0 -_0807F63C: .4byte gUnknown_08396FC4 -_0807F640: .4byte gSpriteCoordOffsetX -_0807F644: .4byte 0x000006f2 -_0807F648: .4byte 0x000006ee -_0807F64C: .4byte 0x000006ce -_0807F650: - cmp r0, 0x2 - beq _0807F66E - b _0807F67A -_0807F656: - movs r0, 0 - movs r1, 0x10 - movs r2, 0x3 - bl sub_807DBA4 - b _0807F672 -_0807F662: - bl sub_807DBE8 - lsls r0, 24 - cmp r0, 0 - beq _0807F67E - b _0807F672 -_0807F66E: - bl sub_807F7A4 -_0807F672: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _0807F67E -_0807F67A: - movs r0, 0 - b _0807F680 -_0807F67E: - movs r0, 0x1 -_0807F680: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_807F5EC - - thumb_func_start sub_807F688 -sub_807F688: @ 807F688 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _0807F6D4 @ =gSpriteCoordOffsetY - ldrb r0, [r0] - strh r0, [r3, 0x26] - ldr r0, _0807F6D8 @ =gUnknown_08396FC4 - ldr r0, [r0] - ldr r1, _0807F6DC @ =0x000006ee - adds r2, r0, r1 - ldrh r1, [r2] - adds r1, 0x20 - movs r4, 0x2E - ldrsh r0, [r3, r4] - lsls r0, 6 - adds r1, r0 - strh r1, [r3, 0x20] - lsls r1, 16 - ldr r0, _0807F6E0 @ =0x010f0000 - cmp r1, r0 - ble _0807F6CC - movs r0, 0xF0 - lsls r0, 1 - adds r1, r0, 0 - ldrh r2, [r2] - adds r1, r2 - movs r4, 0x2E - ldrsh r2, [r3, r4] - movs r0, 0x4 - subs r0, r2 - lsls r0, 6 - subs r1, r0 - ldr r0, _0807F6E4 @ =0x000001ff - ands r1, r0 - strh r1, [r3, 0x20] -_0807F6CC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807F6D4: .4byte gSpriteCoordOffsetY -_0807F6D8: .4byte gUnknown_08396FC4 -_0807F6DC: .4byte 0x000006ee -_0807F6E0: .4byte 0x010f0000 -_0807F6E4: .4byte 0x000001ff - thumb_func_end sub_807F688 - thumb_func_start sub_807F6E8 sub_807F6E8: @ 807F6E8 push {r4,r5,lr} diff --git a/data/field_weather.s b/data/field_weather.s index 86a7351bc..1b0076451 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -4,40 +4,6 @@ .section .rodata .align 2 -DroughtPaletteData_0: @ 8393FE8 - .incbin "graphics/weather/drought0.bin.lz" - - .align 2 -DroughtPaletteData_1: @ 839480C - .incbin "graphics/weather/drought1.bin.lz" - - .align 2 -DroughtPaletteData_2: @ 8395004 - .incbin "graphics/weather/drought2.bin.lz" - - .align 2 -DroughtPaletteData_3: @ 83957A0 - .incbin "graphics/weather/drought3.bin.lz" - - .align 2 -DroughtPaletteData_4: @ 8395FBC - .incbin "graphics/weather/drought4.bin.lz" - - .align 2 -DroughtPaletteData_5: @ 8396784 - .incbin "graphics/weather/drought5.bin.lz" - - .align 2 -gUnknown_08396FA8:: @ 8396FA8 - .4byte DroughtPaletteData_0 - .4byte DroughtPaletteData_1 - .4byte DroughtPaletteData_2 - .4byte DroughtPaletteData_3 - .4byte DroughtPaletteData_4 - .4byte DroughtPaletteData_5 - .4byte gSharedMem - - .align 2 gUnknown_08396FC4:: @ 8396FC4 .4byte gUnknown_0202F7E8 diff --git a/include/ewram.h b/include/ewram.h index ed7ceea16..b02799f1e 100755 --- a/include/ewram.h +++ b/include/ewram.h @@ -25,6 +25,7 @@ extern u8 gSharedMem[]; #define eVoidSharedArr2 (u32)(ewram_addr) // ew(ram) #define ewram0_8 ((struct UnkStruct2000000 *)(gSharedMem + 0x0)) #define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20)) +#define ewram0_10 (*(struct Struct2000000_2 *)(gSharedMem + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(gSharedMem + 0x4)) #define ewram520 ((struct UnknownStruct7 *)(gSharedMem + 0x00520)) #define ewram520_2 (u8 *)(ewram_addr + 0x520) diff --git a/include/field_weather.h b/include/field_weather.h index 409f76028..b711f91d6 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -20,8 +20,9 @@ void nullsub_39(void); // ASM void sub_807CEBC(u8, u8, s8); -void sub_807D1BC(u8, u8, u8, u8, u16); -void sub_807D304(int, u8, u16); +//void sub_807D1BC(u8, u8, u8, u8, u16); +void sub_807D1BC(u8 a, u8 a2, s8 c, u8 d, u16 e); +void sub_807D304(s8 a, u8 arg2, u16 c); void sub_807D424(u8, u16); // ... void fade_screen(u8, u8); @@ -42,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/include/songs.h b/include/songs.h index afd26d683..d22d311ab 100644 --- a/include/songs.h +++ b/include/songs.h @@ -83,16 +83,16 @@ enum SE_TOY_KABE, SE_TOY_DANGO, SE_DOKU, - SE_ESUKA, - SE_T_AME, - SE_T_AME_E, - SE_T_OOAME, - SE_T_OOAME_E, - SE_T_KOAME, - SE_T_KOAME_E, - SE_T_KAMI, - SE_T_KAMI2, - SE_ELEBETA, + /*0x50*/ SE_ESUKA, + /*0x51*/ SE_T_AME, + /*0x52*/ SE_T_AME_E, + /*0x53*/ SE_T_OOAME, + /*0x54*/ SE_T_OOAME_E, + /*0x55*/ SE_T_KOAME, + /*0x56*/ SE_T_KOAME_E, + /*0x57*/ SE_T_KAMI, + /*0x58*/ SE_T_KAMI2, + /*0x59*/ SE_ELEBETA, /*0x5A*/ SE_HINSI, /*0x5B*/ SE_EXPMAX, /*0x5C*/ SE_TAMAKORO, diff --git a/ld_script.txt b/ld_script.txt index c2d20d313..1c798f94c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -359,6 +359,7 @@ SECTIONS { src/engine/task.o(.rodata); src/battle/battle_anim_807B69C.o(.rodata); src/scene/title_screen.o(.rodata); + src/field/field_weather.o(.rodata); data/field_weather.o(.rodata); src/field/field_screen_effect.o(.rodata); src/battle/battle_setup.o(.rodata); diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 443a38357..cc7b898dc 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1,14 +1,42 @@ #include "global.h" +#include "blend_palette.h" +#include "field_map_obj.h" #include "field_weather.h" #include "palette.h" +#include "rng.h" +#include "script.h" +#include "songs.h" +#include "sound.h" #include "sprite.h" #include "task.h" +#include "trig.h" +#include "ewram.h" + +#define MACRO1(a) ((((a) >> 1) & 0xF) | (((a) >> 2) & 0xF0) | (((a) >> 3) & 0xF00)) + +struct RGBColor +{ + u16 r:5; + u16 g:5; + u16 b:5; +}; + +struct Struct2000000_2 +{ + u16 data[0][0x1000]; // unknown length +}; struct Weather { - u8 filler_000[0x200]; + struct Sprite *unknown_0[24]; + struct Sprite *unknown_60[0x65]; // snowflakes? + struct Sprite *unknown_1F4[3]; u8 unknown_200[2][32]; - u8 filler_240[0x480]; + u8 filler_240[0x460-0x240]; + u8 unk460[2][32]; + u8 filler4A0[0x6B6-0x4A0]; + s8 unknown_6B6; + u8 filler_6B7[0xC0-0xB7]; s8 unknown_6C0; s8 unknown_6C1; u8 unknown_6C2; @@ -20,23 +48,37 @@ struct Weather u8 unknown_6C9; u8 unknown_6CA; u8 unknown_6CB; - u8 filler_6CC[2]; + u16 unknown_6CC; u16 unknown_6CE; u8 unknown_6D0; u8 unknown_6D1; - u8 filler_6D2[1]; + u8 unknown_6D2; u8 unknown_6D3; u8 unknown_6D4; u8 unknown_6D5; - u8 filler_6D6[2]; + u16 unknown_6D6; u8 unknown_6D8; - u8 filler_6D9[1]; + u8 unknown_6D9; u8 unknown_6DA; - u8 filler_6DB[3]; + u8 unknown_6DB; + u8 unknown_6DC; + u8 unknown_6DD; u8 unknown_6DE; - u8 filler_6DF[5]; + u8 filler_6DF[1]; + u16 unknown_6E0; + u16 unknown_6E2; u8 unknown_6E4; - u8 filler_6E5[0x15]; + u8 unknown_6E5; + u16 unknown_6E6; + u16 unknown_6E8; + u8 unknown_6EA; + u8 unknown_6EB; + u8 unknown_6EC; + u8 unknown_6ED; + u16 unknown_6EE; + u16 unknown_6F0; + u16 unknown_6F2; + u8 unknown_6F4[6]; u8 unknown_6FA; u8 unknown_6FB; u8 filler_6FC[4]; @@ -48,18 +90,66 @@ 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 u8 gUnknown_0202FF38[]; +extern u16 gUnknown_0202FF58; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); -IWRAM_DATA u8 *gUnknown_030006DC; -extern u8 gUnknown_083970C8; +IWRAM_DATA const u8 *gUnknown_030006DC; +extern const u8 gUnknown_083970C8[]; + +// This is a pointer to gWeather. All code sub_807DE78 and below uses this pointer, +// while everything above accesses gWeather directly. +extern struct Weather *const gUnknown_08396FC4; + +extern const struct SpriteSheet gUnknown_0839A9D4; +extern const struct SpriteTemplate gSpriteTemplate_839A9F0; +extern const u16 gUnknown_08397108[]; +//extern const s16 gUnknown_0839A9C8[][2]; +extern const struct Coords16 gUnknown_0839A9C8[]; +extern const struct SpriteSheet gUnknown_0839AACC; +extern const struct SpriteTemplate gSpriteTemplate_839AAA4; +extern const struct SpriteTemplate gSpriteTemplate_839AB04; + +const u8 DroughtPaletteData_0[] = INCBIN_U8("graphics/weather/drought0.bin.lz"); +const u8 DroughtPaletteData_1[] = INCBIN_U8("graphics/weather/drought1.bin.lz"); +const u8 DroughtPaletteData_2[] = INCBIN_U8("graphics/weather/drought2.bin.lz"); +const u8 DroughtPaletteData_3[] = INCBIN_U8("graphics/weather/drought3.bin.lz"); +const u8 DroughtPaletteData_4[] = INCBIN_U8("graphics/weather/drought4.bin.lz"); +const u8 DroughtPaletteData_5[] = INCBIN_U8("graphics/weather/drought5.bin.lz"); extern u8 (*gUnknown_0202FC48)[32]; extern u8 gUnknown_0202F9E8[32]; +const u8 *const gUnknown_08396FA8[] = +{ + DroughtPaletteData_0, + DroughtPaletteData_1, + DroughtPaletteData_2, + DroughtPaletteData_3, + DroughtPaletteData_4, + DroughtPaletteData_5, + gSharedMem, +}; void sub_807C828(void) { @@ -87,7 +177,7 @@ void sub_807C828(void) gWeather.unknown_6C6 = 3; gWeather.unknown_6C8 = 0; gWeather.unknown_6D3 = 1; - gWeather.unknown_6C9 = CreateTask(&sub_807C9E4, 80); + gWeather.unknown_6C9 = CreateTask(sub_807C9E4, 80); } } @@ -121,12 +211,12 @@ void sub_807C9B4(u8 effect) gWeather.unknown_6C8 = 1; } -void sub_807C9E4(u8 task) +void sub_807C9E4(u8 taskId) { if (gWeather.unknown_6C8) { gUnknown_08396FC8[gWeather.unknown_6D0][2](); - gTasks[task].func = &sub_807CA34; + gTasks[taskId].func = sub_807CA34; } } @@ -170,7 +260,7 @@ u32 sub_807CB0C(void) void sub_807CB10(void) { u16 v0; - u8(*v1)[32]; + u8 (*v1)[32]; u16 v2; u16 v4; u16 v5; @@ -180,30 +270,22 @@ void sub_807CB10(void) u16 v11; s16 dunno; - gUnknown_030006DC = &gUnknown_083970C8; + gUnknown_030006DC = gUnknown_083970C8; for (v0 = 0; v0 <= 1; v0++) { if (v0 == 0) - { - v1 = &gUnknown_0202F9E8; - } + v1 = gWeather.unknown_200; else - { - v1 = &gUnknown_0202F9E8 + 19; - } + v1 = gWeather.unk460; + for (v2 = 0; (u16)v2 <= 0x1f; v2++) { v4 = v2 << 8; if (v0 == 0) - { v5 = (v2 << 8) / 16; - } else - { v5 = 0; - } - v6 = 0; - for (; v6 <= 2; v6++) + for (v6 = 0; v6 <= 2; v6++) { v4 = (v4 - v5); v1[v6][v2] = v4 >> 8; @@ -260,13 +342,9 @@ void sub_807CC24(void) { gWeather.unknown_6C3 = 0; if (gWeather.unknown_6C0 < gWeather.unknown_6C1) - { gWeather.unknown_6C0++; - } else - { gWeather.unknown_6C0--; - } sub_807CEBC(0, 0x20, gWeather.unknown_6C0); } } @@ -275,9 +353,7 @@ void sub_807CC24(void) void sub_807CCAC(void) { if (++gWeather.unknown_6CB > 1) - { gWeather.unknown_6CA = 0; - } switch (gWeather.unknown_6D0) { case 3: @@ -322,9 +398,7 @@ void sub_807CCAC(void) u8 sub_807CDC4(void) { if (gWeather.unknown_6C7 == 0x10) - { return 0; - } if (++gWeather.unknown_6C7 >= 0x10) { sub_807CEBC(0, 0x20, 3); @@ -338,9 +412,7 @@ u8 sub_807CDC4(void) u8 sub_807CE24(void) { if (gWeather.unknown_6C7 == 0x10) - { return 0; - } if (++gWeather.unknown_6C7 >= 0x10) { sub_807CEBC(0, 0x20, -6); @@ -354,9 +426,7 @@ u8 sub_807CE24(void) u8 sub_807CE7C(void) { if (gWeather.unknown_6C7 == 0x10) - { return 0; - } ++gWeather.unknown_6C7; sub_807D424(0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); return 1; @@ -365,3 +435,1710 @@ u8 sub_807CE7C(void) void nullsub_39(void) { } + +void sub_807CEBC(u8 a, u8 b, s8 c) +{ + u16 r4; + u16 palOffset; + u8 *r6; + u16 i; + + if (c > 0) + { + c = c - 1; + palOffset = a * 16; + b += a; + r4 = a; + while (r4 < b) + { + if (gUnknown_030006DC[r4] == 0) + { + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + palOffset += 16; + } + else + { + u8 r, g, b; + + if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeather.unknown_6D5) + r6 = gWeather.unk460[c]; + else + r6 = gWeather.unknown_200[c]; + if (r4 == 16 || r4 > 0x1B) + { + for (i = 0; i < 16; i++) + { + if (gPlttBufferUnfaded[palOffset] == 0x2D9F) + { + palOffset++; + } + else + { + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + + r = r6[color.r]; + g = r6[color.g]; + b = r6[color.b]; + gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; + } + } + } + else + { + for (i = 0; i < 16; i++) + { + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + + r = r6[color.r]; + g = r6[color.g]; + b = r6[color.b]; + gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; + } + } + } + r4++; + } + } + else if (c < 0) + { + c = -c - 1; + palOffset = a * 16; + b += a; + r4 = a; + while (r4 < b) + { + if (gUnknown_030006DC[r4] == 0) + { + CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); + palOffset += 16; + } + else + { + if (r4 == 16 || r4 > 0x1B) + { + for (i = 0; i < 16; i++) + { + if (gPlttBufferUnfaded[palOffset] != 0x2D9F) + gPlttBufferFaded[palOffset] = ewram0_10.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + palOffset++; + } + } + else + { + for (i = 0; i < 16; i++) + { + gPlttBufferFaded[palOffset] = ewram0_10.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + palOffset++; + } + } + } + r4++; + } + } + else + { + CpuFastCopy(gPlttBufferUnfaded + a * 16, gPlttBufferFaded + a * 16, b * 16 * sizeof(u16)); + } +} + +void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) +{ + u16 palOffset; + u16 r4; + u16 i; + struct RGBColor color = *(struct RGBColor *)&e; + u8 r_ = color.r; + u8 g_ = color.g; + u8 b_ = color.b; + + palOffset = a1 * 16; + a2 += a1; + c = c - 1; + r4 = a1; + while (r4 < a2) + { + if (gUnknown_030006DC[r4] == 0) + { + BlendPalette(palOffset, 16, d, e); + palOffset += 16; + } + else + { + u8 *r5; + + if (gUnknown_030006DC[r4] == 1) + r5 = gWeather.unknown_200[c]; + else + r5 = gWeather.unk460[c]; + + for (i = 0; i < 16; i++) + { + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + u8 r = r5[color.r]; + u8 g = r5[color.g]; + u8 b = r5[color.b]; + + r += ((r_ - r) * d) >> 4; + g += ((g_ - g) * d) >> 4; + b += ((b_ - b) * d) >> 4; + gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; + } + } + r4++; + } +} + +void sub_807D304(s8 a, u8 arg2, u16 c) +{ + struct RGBColor color; + u8 r_; + u8 g_; + u8 b_; + u16 r4; + u16 r5; + u16 r12; + + a = -a - 1; + color = *(struct RGBColor *)&c; + r_ = color.r; + g_ = color.g; + b_ = color.b; + r5 = 0; + for (r4 = 0; r4 < 32; r4++) + { + if (gUnknown_030006DC[r4] == 0) + { + BlendPalette(r5, 16, arg2, c); + r5 += 16; + } + else + { + for (r12 = 0; r12 < 16; r12++) + { + u32 offset; + struct RGBColor color1; + struct RGBColor color2; + u8 r1, g1, b1; + u8 r2, g2, b2; + + color1 = *(struct RGBColor *)&gPlttBufferUnfaded[r5]; + r1 = color1.r; + g1 = color1.g; + b1 = color1.b; + + offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1); + color2 = *(struct RGBColor *)&ewram0_10.data[a][offset]; + r2 = color2.r; + g2 = color2.g; + b2 = color2.b; + + r2 += ((r_ - r2) * arg2) >> 4; + g2 += ((g_ - g2) * arg2) >> 4; + b2 += ((b_ - b2) * arg2) >> 4; + + gPlttBufferFaded[r5++] = (b2 << 10) | (g2 << 5) | r2; + } + } + } +} + +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_10.data[r4]); + if (r4 == 0) + { + ewram0_10.data[r4][0] = 0x421; + for (i = 1; i < 0x1000; i++) + ewram0_10.data[r4][i] += ewram0_10.data[r4][i - 1]; + } + else + { + for (i = 0; i < 0x1000; i++) + ewram0_10.data[r4][i] += ewram0_10.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; +} + +void unref_sub_807DCB4(u8 a) +{ + switch (a) + { + case 1: + SetWeather(1); + break; + case 2: + SetWeather(2); + break; + case 3: + SetWeather(3); + break; + case 4: + SetWeather(4); + break; + case 5: + SetWeather(5); + break; + case 6: + SetWeather(6); + break; + case 7: + SetWeather(9); + break; + case 8: + SetWeather(7); + break; + case 9: + SetWeather(8); + break; + case 10: + SetWeather(11); + break; + } +} + +u8 weather_get_current(void) +{ + return gWeather.unknown_6D0; +} + +void sub_807DD5C(u16 sndEff) +{ + if (gUnknown_0202F7E8.unknown_6C6 != 2) + { + switch (sndEff) + { + case SE_T_KOAME: + gUnknown_0202F7E8.unknown_6DD = 0; + break; + case SE_T_OOAME: + gUnknown_0202F7E8.unknown_6DD = 1; + break; + case SE_T_AME: + gUnknown_0202F7E8.unknown_6DD = 2; + break; + default: + return; + } + PlaySE(sndEff); + } +} + +void PlayRainSoundEffect(void) +{ + if (IsSpecialSEPlaying()) + { + switch (gUnknown_0202F7E8.unknown_6DD) + { + case 0: + PlaySE(0x56); + break; + case 1: + PlaySE(0x54); + break; + case 2: + default: + PlaySE(0x52); + break; + } + } +} + +u8 sub_807DDFC(void) +{ + return gUnknown_0202F7E8.unknown_6D3; +} + +void sub_807DE10(void) +{ + gUnknown_0202F7E8.unknown_6C6 = 2; +} + +void unref_sub_807DE24(void) +{ + gUnknown_0202F7E8.unknown_6C6 = 3; +} + +void sub_807DE38(u8 a) +{ + CpuCopy16(gUnknown_083970C8, gUnknown_0202FF38, 32); + gUnknown_0202FF38[a] = 0; + gUnknown_030006DC = gUnknown_0202FF38; +} + +void sub_807DE68(void) +{ + gUnknown_030006DC = gUnknown_083970C8; +} + +void sub_807DE78(void) +{ + gUnknown_08396FC4->unknown_6C1 = 0; + gUnknown_08396FC4->unknown_6C2 = 20; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6CC = 0; + if (gUnknown_08396FC4->unknown_6DE == 0) + sub_807DB64(0, 16); +} + +void sub_807DEF4(void); + +void sub_807DEC4(void) +{ + sub_807DE78(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807DEF4(); +} + +void sub_807DFD4(void); + +void sub_807DEF4(void) +{ + switch (gUnknown_08396FC4->unknown_6CC) + { + case 0: + sub_807DFD4(); + gUnknown_08396FC4->unknown_6CC++; + break; + case 1: + sub_807DBA4(12, 8, 1); + gUnknown_08396FC4->unknown_6CC++; + break; + case 2: + if (sub_807DBE8()) + { + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + } + break; + } +} + +void sub_807E0A0(void); + +bool8 sub_807DF54(void) +{ + switch (gUnknown_08396FC4->unknown_6CE) + { + case 0: + sub_807DBA4(0, 16, 1); + gUnknown_08396FC4->unknown_6CE++; + return TRUE; + case 1: + if (sub_807DBE8()) + { + sub_807E0A0(); + gUnknown_08396FC4->unknown_6CE++; + } + return TRUE; + } + return FALSE; +} + +void sub_807DF9C(void) +{ + gUnknown_08396FC4->unknown_6C1 = 0; + gUnknown_08396FC4->unknown_6C2 = 20; +} + +void sub_807DFC0(void) +{ + sub_807DF9C(); +} + +void nullsub_55(void) +{ +} + +int sub_807DFD0(void) +{ + return 0; +} + +void sub_807DFD4(void) +{ + u16 i; + + if (gUnknown_08396FC4->unknown_6DE == 1) + return; + LoadSpriteSheet(&gUnknown_0839A9D4); + sub_807D8C0(gUnknown_08397108); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_839A9F0, 0, 0, 0xFF); + + if (spriteId != 64) + { + struct Sprite *sprite; + + gUnknown_08396FC4->unknown_1F4[i] = &gSprites[spriteId]; + sprite = gUnknown_08396FC4->unknown_1F4[i]; + sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); + sprite->coordOffsetEnabled = TRUE; + } + else + { + gUnknown_08396FC4->unknown_1F4[i] = NULL; + } + } + gUnknown_08396FC4->unknown_6DE = 1; +} + +void sub_807E0A0(void) +{ + u16 i; + + if (gUnknown_08396FC4->unknown_6DE == 0) + return; + for (i = 0; i < 3; i++) + { + if (gUnknown_08396FC4->unknown_1F4[i] != NULL) + DestroySprite(gUnknown_08396FC4->unknown_1F4[i]); + } + FreeSpriteTilesByTag(0x1200); + gUnknown_08396FC4->unknown_6DE = 0; +} + +void sub_807E0F4(struct Sprite *sprite) +{ + sprite->data0 = (sprite->data0 + 1) & 1; + if (sprite->data0 != 0) + sprite->pos1.x--; +} + +void sub_807E110(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6C1 = 0; + gUnknown_08396FC4->unknown_6C2 = 0; +} + +void sub_807E174(void); + +void sub_807E144(void) +{ + sub_807E110(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807E174(); +} + +void sub_807E174(void) +{ + switch (gUnknown_08396FC4->unknown_6CC) + { + case 0: + if (gUnknown_08396FC4->unknown_6C6 != 0) + gUnknown_08396FC4->unknown_6CC++; + break; + case 1: + sub_807D9A8(); + gUnknown_08396FC4->unknown_6CC++; + break; + case 2: + if (sub_807D9C8() == FALSE) + gUnknown_08396FC4->unknown_6CC++; + break; + case 3: + sub_807DA14(); + gUnknown_08396FC4->unknown_6CC++; + break; + case 4: + sub_807DA4C(); + if (gUnknown_08396FC4->unknown_73C == 6) + { + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + } + break; + default: + sub_807DA4C(); + break; + } +} + +int sub_807E258(void) +{ + return 0; +} + +void task50_0807B6D4(u8); + +void sub_807E25C(void) +{ + CreateTask(task50_0807B6D4, 0x50); +} + +#define tState data[0] +#define tBlendY data[1] +#define tBlendDelay data[2] +#define tWinRange data[3] + +void task50_0807B6D4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + task->tBlendY = 0; + task->tBlendDelay = 0; + task->tWinRange = REG_WININ; + REG_WININ = WIN_RANGE(63, 63); + REG_BLDCNT = 0x9E; + REG_BLDY = 0; + task->tState++; + // fall through + case 1: + task->tBlendY += 3; + if (task->tBlendY > 16) + task->tBlendY = 16; + REG_BLDY = task->tBlendY; + if (task->tBlendY >= 16) + task->tState++; + break; + case 2: + task->tBlendDelay++; + if (task->tBlendDelay > 9) + { + task->tBlendDelay = 0; + task->tBlendY--; + if (task->tBlendY <= 0) + { + task->tBlendY = 0; + task->tState++; + } + REG_BLDY = task->tBlendY; + } + break; + case 3: + REG_BLDCNT = 0; + REG_BLDY = 0; + REG_WININ = task->tWinRange; + task->tState++; + break; + case 4: + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +#undef tState +#undef tBlendY +#undef tBlendDelay +#undef tWinRange + +void sub_807E364(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6D6 = 0; + gUnknown_08396FC4->unknown_6DB = 8; + gUnknown_08396FC4->unknown_6DC = 0; + gUnknown_08396FC4->unknown_6D9 = 10; + gUnknown_08396FC4->unknown_6C1 = 3; + gUnknown_08396FC4->unknown_6C2 = 20; + sub_807DD5C(SE_T_KOAME); +} + +void sub_807E400(void); + +void sub_807E3D0(void) +{ + sub_807E364(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807E400(); +} + +void sub_807E7A4(void); +u8 sub_807E7B4(void); +u8 sub_807E8E8(void); + +void sub_807E400(void) +{ + switch (gUnknown_08396FC4->unknown_6CC) + { + case 0: + sub_807E7A4(); + gUnknown_08396FC4->unknown_6CC++; + break; + case 1: + if (sub_807E7B4() == 0) + gUnknown_08396FC4->unknown_6CC++; + break; + case 2: + if (sub_807E8E8() == FALSE) + { + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + } + break; + } +} + +void sub_807E974(void); + +bool8 sub_807E460(void) +{ + switch (gUnknown_08396FC4->unknown_6CE) + { + case 0: + if (gUnknown_08396FC4->unknown_6D1 == 3 + || gUnknown_08396FC4->unknown_6D1 == 5 + || gUnknown_08396FC4->unknown_6D1 == 13) + { + gUnknown_08396FC4->unknown_6CE = 0xFF; + return FALSE; + } + else + { + gUnknown_08396FC4->unknown_6D9 = 0; + gUnknown_08396FC4->unknown_6CE++; + } + // fall through + case 1: + if (sub_807E8E8() == FALSE) + { + sub_807E974(); + gUnknown_08396FC4->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +//extern const struct Coords16 gUnknown_0839AAC4[]; +extern const u16 gUnknown_0839AAC4[][2]; +//extern const struct Coords16 gUnknown_0839AABC[]; +extern const s16 gUnknown_0839AABC[][2]; + +void sub_807E4EC(struct Sprite *sprite) +{ + u32 randVal; + u16 r6; + s32 r4; + s32 r0; + + if (sprite->data1 == 0) + sprite->data1 = 361; + randVal = sprite->data1 * 1103515245 + 12345; + sprite->data1 = ((randVal & 0x7FFF0000) >> 16) % 600; + + r6 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][0]; + + r4 = sprite->data1 % 30; + sprite->data2 = r4 * 8; // useless assignment + + r0 = sprite->data1 / 30; + sprite->data3 = r0 * 8; // useless assignment + + sprite->data2 = r4; + sprite->data2 <<= 7; + + sprite->data3 = r0; + sprite->data3 <<= 7; + + sprite->data2 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0] * r6; + sprite->data3 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1] * r6; + + StartSpriteAnim(sprite, 0); + sprite->data4 = 0; + sprite->coordOffsetEnabled = FALSE; + sprite->data0 = r6; +} + +void sub_807E5C0(struct Sprite *sprite) +{ + if (sprite->data4 == 0) + { + sprite->data2 += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0]; + sprite->data3 += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1]; + sprite->pos1.x = sprite->data2 >> 4; + sprite->pos1.y = sprite->data3 >> 4; + + if (sprite->data5 != 0 + && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) + && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) + sprite->invisible = FALSE; + else + sprite->invisible = TRUE; + + sprite->data0--; + if (sprite->data0 == 0) + { + StartSpriteAnim(sprite, gUnknown_08396FC4->unknown_6DC + 1); + sprite->data4 = 1; + sprite->pos1.x -= gSpriteCoordOffsetX; + sprite->pos1.y -= gSpriteCoordOffsetY; + sprite->coordOffsetEnabled = TRUE; + } + } + else if (sprite->animEnded) + { + sprite->invisible = TRUE; + sub_807E4EC(sprite); + } +} + +void sub_807E6C4(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + sub_807E4EC(sprite); + sprite->callback = sub_807E5C0; + } + else + { + sprite->data0--; + } +} + +void sub_807E6F0(struct Sprite *sprite, u16 b) +{ + u16 r8 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][0]; + u16 r6 = b / (gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][1] + r8); + u16 r4 = b % (gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][1] + r8); + + while (--r6 != 0xFFFF) + sub_807E4EC(sprite); + if (r4 < r8) + { + while (--r4 != 0xFFFF) + sub_807E5C0(sprite); + sprite->data6 = 0; + } + else + { + sprite->data0 = r4 - r8; + sprite->invisible = TRUE; + sprite->data6 = 1; + } +} + +void sub_807E7A4(void) +{ + LoadSpriteSheet(&gUnknown_0839AACC); +} + +extern const struct Coords16 gUnknown_0839AA08[]; + +bool8 sub_807E7B4(void) +{ + u8 r7; + u8 spriteId; + + if (gUnknown_08396FC4->unknown_6DA == 24) + return FALSE; + + r7 = gUnknown_08396FC4->unknown_6DA; + spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AAA4, + gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); + if (spriteId != 64) + { + gSprites[spriteId].data5 = 0; + gSprites[spriteId].data1 = r7 * 145; + while (gSprites[spriteId].data1 >= 600) + gSprites[spriteId].data1 -= 600; + sub_807E4EC(&gSprites[spriteId]); + sub_807E6F0(&gSprites[spriteId], r7 * 9); + gSprites[spriteId].invisible = TRUE; + gUnknown_08396FC4->unknown_0[r7] = &gSprites[spriteId]; + } + else + { + gUnknown_08396FC4->unknown_0[r7] = NULL; + } + + if (++gUnknown_08396FC4->unknown_6DA == 24) + { + u16 i; + + for (i = 0; i < 24; i++) + { + if (gUnknown_08396FC4->unknown_0[i] != NULL) + { + if (gUnknown_08396FC4->unknown_0[i]->data6 == 0) + gUnknown_08396FC4->unknown_0[i]->callback = sub_807E5C0; + else + gUnknown_08396FC4->unknown_0[i]->callback = sub_807E6C4; + } + } + return FALSE; + } + return TRUE; +} + +bool8 sub_807E8E8(void) +{ + if (gUnknown_08396FC4->unknown_6D8 == gUnknown_08396FC4->unknown_6D9) + return FALSE; + + if (++gUnknown_08396FC4->unknown_6D6 > gUnknown_08396FC4->unknown_6DB) + { + gUnknown_08396FC4->unknown_6D6 = 0; + if (gUnknown_08396FC4->unknown_6D8 < gUnknown_08396FC4->unknown_6D9) + { + gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8++]->data5 = 1; + } + else + { + gUnknown_08396FC4->unknown_6D8--; + gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->data5 = 0; + gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->invisible = TRUE; + } + } + return TRUE; +} + +void sub_807E974(void) +{ + u16 i; + + for (i = 0; i < gUnknown_08396FC4->unknown_6DA; i++) + { + if (gUnknown_08396FC4->unknown_0[i] != NULL) + DestroySprite(gUnknown_08396FC4->unknown_0[i]); + } + gUnknown_08396FC4->unknown_6DA = 0; + FreeSpriteTilesByTag(0x1206); +} + +void sub_807E9C8(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6C1 = 3; + gUnknown_08396FC4->unknown_6C2 = 20; + gUnknown_08396FC4->unknown_6E5 = 16; + gUnknown_08396FC4->unknown_6E0 = 0; +} + +void snowflakes_progress2(void); +void sub_807ED48(struct Sprite *); + +void sub_807EA18(void) +{ + sub_807E9C8(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + { + u16 i; + + snowflakes_progress2(); + for (i = 0; i < gUnknown_08396FC4->unknown_6E4; i++) + { + sub_807ED48(gUnknown_08396FC4->unknown_60[i]); + } + } +} + +u8 snowflakes_progress(void); + +void snowflakes_progress2(void) +{ + if (gUnknown_08396FC4->unknown_6CC == 0 && snowflakes_progress() == FALSE) + { + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + } +} + +bool8 sub_807EAC0(void) +{ + switch (gUnknown_08396FC4->unknown_6CE) + { + case 0: + gUnknown_08396FC4->unknown_6E5 = 0; + gUnknown_08396FC4->unknown_6E0 = 0; + gUnknown_08396FC4->unknown_6CE++; + // fall through + case 1: + if (snowflakes_progress() == FALSE) + { + gUnknown_08396FC4->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 snowflake_add(void); +bool8 snowflake_remove(void); + +bool8 snowflakes_progress(void) +{ + if (gUnknown_08396FC4->unknown_6E4 == gUnknown_08396FC4->unknown_6E5) + return FALSE; + + gUnknown_08396FC4->unknown_6E0++; + if (gUnknown_08396FC4->unknown_6E0 > 36) + { + gUnknown_08396FC4->unknown_6E0 = 0; + if (gUnknown_08396FC4->unknown_6E4 < gUnknown_08396FC4->unknown_6E5) + snowflake_add(); + else + snowflake_remove(); + } + return (gUnknown_08396FC4->unknown_6E4 != gUnknown_08396FC4->unknown_6E5); +} + +void sub_807EC40(struct Sprite *); + +bool8 snowflake_add(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AB04, 0, 0, 78); + + if (spriteId == 64) + return FALSE; + gSprites[spriteId].data4 = gUnknown_08396FC4->unknown_6E4; + sub_807EC40(&gSprites[spriteId]); + gSprites[spriteId].coordOffsetEnabled = TRUE; + gUnknown_08396FC4->unknown_60[gUnknown_08396FC4->unknown_6E4++] = &gSprites[spriteId]; + return TRUE; +} + +bool8 snowflake_remove(void) +{ + if (gUnknown_08396FC4->unknown_6E4 != 0) + { + DestroySprite(gUnknown_08396FC4->unknown_60[--gUnknown_08396FC4->unknown_6E4]); + return TRUE; + } + return FALSE; +} + +void sub_807EC40(struct Sprite *sprite) +{ + u16 r4 = ((sprite->data4 * 5) & 7) * 30 + (Random() % 30); + u16 r6; + + sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + sprite->data0 = sprite->pos1.y * 128; + sprite->pos2.x = 0; + r6 = Random(); + sprite->data1 = (r6 & 3) * 5 + 64; + sprite->data7 = (r6 & 3) * 5 + 64; + StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); + sprite->data3 = 0; + sprite->data2 = ((r6 & 3) == 0) ? 2 : 1; + sprite->data6 = (r6 & 0x1F) + 210; + sprite->data5 = 0; +} + +void sub_807ECEC(struct Sprite *sprite) +{ + if (gUnknown_08396FC4->unknown_6E2 > 18) + { + sprite->invisible = FALSE; + sprite->callback = sub_807ED48; + sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data0 = sprite->pos1.y * 128; + gUnknown_08396FC4->unknown_6E2 = 0; + } +} + +void sub_807ED48(struct Sprite *sprite) +{ + s16 r3; + s16 r2; + + sprite->data0 += sprite->data1; + sprite->pos1.y = sprite->data0 >> 7; + sprite->data3 = (sprite->data3 + sprite->data2) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data3] / 64; + + r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; + if (r3 & 0x100) + r3 = -0x100 | r3; // hmm... what is this? + if (r3 < -3) + sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + else if (r3 > 242) + sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + + r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF; + if (r2 > 163 && r2 < 171) + { + sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data0 = sprite->pos1.y * 128; + sprite->data5 = 0; + sprite->data6 = 220; + } + else if (r2 > 242 && r2 < 250) + { + sprite->pos1.y = 163; + sprite->data0 = sprite->pos1.y * 128; + sprite->data5 = 0; + sprite->data6 = 220; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } + + sprite->data5++; + if (sprite->data5 == sprite->data6) + { + sub_807EC40(sprite); + sprite->pos1.y = 250; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } +} + +void sub_807EE80(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6D6 = 0; + gUnknown_08396FC4->unknown_6DB = 4; + gUnknown_08396FC4->unknown_6DC = 0; + gUnknown_08396FC4->unknown_6D9 = 16; + gUnknown_08396FC4->unknown_6C1 = 3; + gUnknown_08396FC4->unknown_6C2 = 20; + gUnknown_08396FC4->unknown_6D2 = 0; // duplicate assignment + gUnknown_08396FC4->unknown_6ED = 0; + sub_807DD5C(0x51); +} + +void sub_807EFC0(void); + +void sub_807EEF4(void) +{ + sub_807EE80(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807EFC0(); +} + +void sub_807EF24(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6D6 = 0; + gUnknown_08396FC4->unknown_6DB = 4; + gUnknown_08396FC4->unknown_6DC = 1; + gUnknown_08396FC4->unknown_6D9 = 24; + gUnknown_08396FC4->unknown_6C1 = 3; + gUnknown_08396FC4->unknown_6C2 = 20; + gUnknown_08396FC4->unknown_6D2 = 0; // duplicate assignment + sub_807DD5C(0x53); +} + +void sub_807EF90(void) +{ + sub_807EF24(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807EFC0(); +} + +void sub_807F434(void); +void sub_807F3F8(u16); + +void sub_807EFC0(void) +{ + sub_807F434(); + switch (gUnknown_08396FC4->unknown_6CC) + { + case 0: + sub_807E7A4(); + gUnknown_08396FC4->unknown_6CC++; + break; + case 1: + if (sub_807E7B4()) + break; + gUnknown_08396FC4->unknown_6CC++; + break; + case 2: + if (sub_807E8E8()) + break; + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + break; + case 3: + if (gUnknown_08396FC4->unknown_6C6 == 0) + break; + gUnknown_08396FC4->unknown_6CC = 6; + break; + case 4: + gUnknown_08396FC4->unknown_6EA = 1; + gUnknown_08396FC4->unknown_6E6 = (Random() % 360) + 360; + gUnknown_08396FC4->unknown_6CC++; + // fall through + case 5: + if (--gUnknown_08396FC4->unknown_6E6 != 0) + break; + gUnknown_08396FC4->unknown_6CC++; + break; + case 6: + gUnknown_08396FC4->unknown_6EA = 1; + gUnknown_08396FC4->unknown_6EB = Random() % 2; + gUnknown_08396FC4->unknown_6CC++; + break; + case 7: + gUnknown_08396FC4->unknown_6EC = (Random() & 1) + 1; + gUnknown_08396FC4->unknown_6CC++; + // fall through + case 8: + sub_807D5BC(19); + if (gUnknown_08396FC4->unknown_6EB == 0 && gUnknown_08396FC4->unknown_6EC == 1) + sub_807F3F8(20); + gUnknown_08396FC4->unknown_6E6 = (Random() % 3) + 6; + gUnknown_08396FC4->unknown_6CC++; + break; + case 9: + if (--gUnknown_08396FC4->unknown_6E6 != 0) + break; + sub_807D5BC(3); + gUnknown_08396FC4->unknown_6EA = 1; + if (--gUnknown_08396FC4->unknown_6EC != 0) + { + gUnknown_08396FC4->unknown_6E6 = (Random() % 16) + 60; + gUnknown_08396FC4->unknown_6CC = 10; + } + else if (gUnknown_08396FC4->unknown_6EB == 0) + { + gUnknown_08396FC4->unknown_6CC = 4; + } + else + { + gUnknown_08396FC4->unknown_6CC = 11; + } + break; + case 10: + if (--gUnknown_08396FC4->unknown_6E6 != 0) + break; + gUnknown_08396FC4->unknown_6CC = 8; + break; + case 11: + gUnknown_08396FC4->unknown_6E6 = (Random() % 16) + 60; + gUnknown_08396FC4->unknown_6CC++; + break; + case 12: + if (--gUnknown_08396FC4->unknown_6E6 != 0) + break; + sub_807F3F8(100); + sub_807D5BC(19); + // Why use "% 16" everywhere else and "& 0xF" here. So dumb. + gUnknown_08396FC4->unknown_6E6 = (Random() & 0xF) + 30; + gUnknown_08396FC4->unknown_6CC++; + break; + case 13: + if (--gUnknown_08396FC4->unknown_6E6 != 0) + break; + sub_807D5F0(19, 3, 5); + gUnknown_08396FC4->unknown_6CC++; + break; + case 14: + if (gUnknown_08396FC4->unknown_6C6 != 3) + break; + gUnknown_08396FC4->unknown_6EA = 1; + gUnknown_08396FC4->unknown_6CC = 4; + break; + } +} + +bool8 sub_807F34C(void) +{ + switch (gUnknown_08396FC4->unknown_6CE) + { + case 0: + gUnknown_08396FC4->unknown_6EA = 0; + gUnknown_08396FC4->unknown_6CE++; + // fall through + case 1: + sub_807EFC0(); + if (gUnknown_08396FC4->unknown_6EA != 0) + { + if (gUnknown_08396FC4->unknown_6D1 == 3 + || gUnknown_08396FC4->unknown_6D1 == 5 + || gUnknown_08396FC4->unknown_6D1 == 13) + return FALSE; + gUnknown_08396FC4->unknown_6D9 = 0; + gUnknown_08396FC4->unknown_6CE++; + } + break; + case 2: + if (sub_807E8E8()) + break; + sub_807E974(); + gUnknown_08396FC4->unknown_6ED = 0; + gUnknown_08396FC4->unknown_6CE++; + return FALSE; + default: + return FALSE; + } + return TRUE; +} + +void sub_807F3F8(u16 a) +{ + if (gUnknown_08396FC4->unknown_6ED == 0) + { + gUnknown_08396FC4->unknown_6E8 = Random() % a; + gUnknown_08396FC4->unknown_6ED = 1; + } +} + +void sub_807F434(void) +{ + if (gUnknown_08396FC4->unknown_6ED == 1) + { + if (gUnknown_08396FC4->unknown_6E8 == 0) + { + if (IsSEPlaying()) + return; + if (Random() & 1) + PlaySE(0x57); + else + PlaySE(0x58); + gUnknown_08396FC4->unknown_6ED = 0; + } + else + { + gUnknown_08396FC4->unknown_6E8--; + } + } +} + +void sub_807F49C(void) +{ + gUnknown_08396FC4->unknown_6CC = 0; + gUnknown_08396FC4->unknown_6D2 = 0; + gUnknown_08396FC4->unknown_6C1 = 0; + gUnknown_08396FC4->unknown_6C2 = 20; + if (gUnknown_08396FC4->unknown_6FB == 0) + { + gUnknown_08396FC4->unknown_6F0 = 0; + gUnknown_08396FC4->unknown_6F2 = 0; + gUnknown_08396FC4->unknown_6EE = 0; + sub_807DB64(0, 16); + } +} + +void sub_807F52C(void); + +void sub_807F4FC(void) +{ + sub_807F49C(); + while (gUnknown_08396FC4->unknown_6D2 == 0) + sub_807F52C(); +} + +void sub_807F6E8(void); + +void sub_807F52C(void) +{ + gUnknown_08396FC4->unknown_6EE = (gSpriteCoordOffsetX - gUnknown_08396FC4->unknown_6F2) & 0xFF; + if (++gUnknown_08396FC4->unknown_6F0 > 3) + { + gUnknown_08396FC4->unknown_6F0 = 0; + gUnknown_08396FC4->unknown_6F2++; + } + switch (gUnknown_08396FC4->unknown_6CC) + { + case 0: + sub_807F6E8(); + if (gUnknown_08396FC4->unknown_6D0 == 6) + sub_807DBA4(12, 8, 3); + else + sub_807DBA4(4, 16, 0); + gUnknown_08396FC4->unknown_6CC++; + break; + case 1: + if (sub_807DBE8()) + { + gUnknown_08396FC4->unknown_6D2 = 1; + gUnknown_08396FC4->unknown_6CC++; + } + break; + } +} + +void sub_807F7A4(void); + +bool8 sub_807F5EC(void) +{ + gUnknown_08396FC4->unknown_6EE = (gSpriteCoordOffsetX - gUnknown_08396FC4->unknown_6F2) & 0xFF; + if (++gUnknown_08396FC4->unknown_6F0 > 3) + { + gUnknown_08396FC4->unknown_6F0 = 0; + gUnknown_08396FC4->unknown_6F2++; + } + switch (gUnknown_08396FC4->unknown_6CE) + { + case 0: + sub_807DBA4(0, 16, 3); + gUnknown_08396FC4->unknown_6CE++; + break; + case 1: + if (!sub_807DBE8()) + break; + gUnknown_08396FC4->unknown_6CE++; + break; + case 2: + sub_807F7A4(); + gUnknown_08396FC4->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_807F688(struct Sprite *sprite) +{ + sprite->pos2.y = (u8)gSpriteCoordOffsetY; + sprite->pos1.x = gUnknown_08396FC4->unknown_6EE + 32 + sprite->data0 * 64; + if (sprite->pos1.x > 0x10F) + { + sprite->pos1.x = 480 + gUnknown_08396FC4->unknown_6EE - (4 - sprite->data0) * 64; + sprite->pos1.x &= 0x1FF; + } +} |