summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_weather.s5252
-rw-r--r--data/field_weather.s34
-rw-r--r--include/field_weather.h7
-rw-r--r--include/songs.h20
-rw-r--r--ld_script.txt1
-rw-r--r--src/field/field_weather.c1862
6 files changed, 1836 insertions, 5340 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s
index 92d2ffab2..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 @ =0x02000000
- 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 0x02000000
-_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 @ =0x02000000
- 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 0x02000000
-_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 @ =0x02000000
- 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 0x02000000
-_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 @ =0x02000000
- adds r1, r6, r5
- bl LZ77UnCompWram
- subs r0, r4, 0x1
- cmp r4, 0
- bne _0807D95C
- ldr r0, _0807D954 @ =0x00000421
- strh r0, [r5]
- movs r2, 0x1
- adds r4, r5, 0
- movs r3, 0
- ldr r5, _0807D958 @ =0x00000fff
-_0807D92A:
- lsls r1, r2, 1
- adds r1, r3
- adds r1, r4
- subs r0, r2, 0x1
- lsls r0, 1
- adds r0, r3
- adds r0, r4
- ldrh r0, [r0]
- ldrh r6, [r1]
- adds r0, r6
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r5
- bls _0807D92A
- b _0807D984
- .align 2, 0
-_0807D94C: .4byte gUnknown_08396FA8
-_0807D950: .4byte 0x02000000
-_0807D954: .4byte 0x00000421
-_0807D958: .4byte 0x00000fff
-_0807D95C:
- movs r2, 0
- adds r3, r5, 0
- adds r5, r6, 0
- lsls r4, r0, 13
- ldr r0, _0807D9A4 @ =0x00000fff
- mov r12, r0
-_0807D968:
- lsls r0, r2, 1
- adds r1, r0, r5
- adds r1, r3
- adds r0, r4
- adds r0, r3
- ldrh r0, [r0]
- ldrh r6, [r1]
- adds r0, r6
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r12
- bls _0807D968
-_0807D984:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bne _0807D99A
- movs r0, 0x20
- strb r0, [r7]
- mov r1, r8
- strb r0, [r1]
-_0807D99A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807D9A4: .4byte 0x00000fff
- thumb_func_end sub_807D8F0
-
- thumb_func_start sub_807D9A8
-sub_807D9A8: @ 807D9A8
- ldr r0, _0807D9BC @ =gUnknown_0202F7E8
- ldr r2, _0807D9C0 @ =0x0000074d
- adds r1, r0, r2
- movs r2, 0x1
- strb r2, [r1]
- ldr r1, _0807D9C4 @ =0x0000074e
- adds r0, r1
- strb r2, [r0]
- bx lr
- .align 2, 0
-_0807D9BC: .4byte gUnknown_0202F7E8
-_0807D9C0: .4byte 0x0000074d
-_0807D9C4: .4byte 0x0000074e
- thumb_func_end sub_807D9A8
-
- thumb_func_start sub_807D9C8
-sub_807D9C8: @ 807D9C8
- push {r4,lr}
- ldr r1, _0807D9F0 @ =gUnknown_0202F7E8
- ldr r0, _0807D9F4 @ =0x0000074d
- adds r4, r1, r0
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1F
- bgt _0807D9FC
- ldr r0, _0807D9F8 @ =0x0000074e
- adds r1, r0
- adds r0, r4, 0
- bl sub_807D8F0
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1F
- bgt _0807D9FC
- movs r0, 0x1
- b _0807D9FE
- .align 2, 0
-_0807D9F0: .4byte gUnknown_0202F7E8
-_0807D9F4: .4byte 0x0000074d
-_0807D9F8: .4byte 0x0000074e
-_0807D9FC:
- movs r0, 0
-_0807D9FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_807D9C8
-
- thumb_func_start sub_807DA04
-sub_807DA04: @ 807DA04
- push {lr}
- lsls r0, 24
- asrs r0, 24
- mvns r0, r0
- bl sub_807D5BC
- pop {r0}
- bx r0
- thumb_func_end sub_807DA04
-
- thumb_func_start sub_807DA14
-sub_807DA14: @ 807DA14
- ldr r1, _0807DA3C @ =gUnknown_0202F7E8
- ldr r2, _0807DA40 @ =0x0000073c
- adds r0, r1, r2
- movs r2, 0
- strh r2, [r0]
- movs r3, 0xE8
- lsls r3, 3
- adds r0, r1, r3
- strh r2, [r0]
- adds r3, 0x2
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, _0807DA44 @ =0x0000073e
- adds r1, r0
- strh r2, [r1]
- ldr r1, _0807DA48 @ =gUnknown_0202FF58
- movs r0, 0x5
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0807DA3C: .4byte gUnknown_0202F7E8
-_0807DA40: .4byte 0x0000073c
-_0807DA44: .4byte 0x0000073e
-_0807DA48: .4byte gUnknown_0202FF58
- thumb_func_end sub_807DA14
-
- thumb_func_start sub_807DA4C
-sub_807DA4C: @ 807DA4C
- push {r4-r7,lr}
- ldr r5, _0807DA68 @ =gUnknown_0202F7E8
- ldr r0, _0807DA6C @ =0x00000742
- adds r7, r5, r0
- movs r1, 0
- ldrsh r2, [r7, r1]
- cmp r2, 0x1
- beq _0807DAC8
- cmp r2, 0x1
- bgt _0807DA70
- cmp r2, 0
- beq _0807DA76
- b _0807DB54
- .align 2, 0
-_0807DA68: .4byte gUnknown_0202F7E8
-_0807DA6C: .4byte 0x00000742
-_0807DA70:
- cmp r2, 0x2
- beq _0807DB1C
- b _0807DB54
-_0807DA76:
- movs r3, 0xE8
- lsls r3, 3
- adds r6, r5, r3
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- lsls r0, 16
- asrs r0, 16
- ldr r1, _0807DABC @ =gUnknown_0202FF58
- ldrh r1, [r1]
- cmp r0, r1
- ble _0807DB54
- strh r2, [r6]
- ldr r0, _0807DAC0 @ =0x0000073c
- adds r4, r5, r0
- ldrh r0, [r4]
- adds r1, r0, 0x1
- strh r1, [r4]
- lsls r0, 24
- asrs r0, 24
- bl sub_807DA04
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- ble _0807DB54
- ldr r3, _0807DAC4 @ =0x0000073e
- adds r0, r5, r3
- strh r1, [r0]
- movs r0, 0x1
- strh r0, [r7]
- movs r0, 0x3C
- strh r0, [r6]
- b _0807DB54
- .align 2, 0
-_0807DABC: .4byte gUnknown_0202FF58
-_0807DAC0: .4byte 0x0000073c
-_0807DAC4: .4byte 0x0000073e
-_0807DAC8:
- movs r0, 0xE8
- lsls r0, 3
- adds r2, r5, r0
- ldrh r0, [r2]
- adds r0, 0x3
- movs r1, 0x7F
- ands r0, r1
- strh r0, [r2]
- ldr r1, _0807DB10 @ =gSineTable
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- subs r0, 0x1
- asrs r0, 6
- adds r0, 0x2
- ldr r2, _0807DB14 @ =0x0000073c
- adds r6, r5, r2
- adds r2, r0, 0
- strh r0, [r6]
- ldr r3, _0807DB18 @ =0x0000073e
- adds r4, r5, r3
- movs r3, 0
- ldrsh r1, [r4, r3]
- cmp r0, r1
- beq _0807DB08
- lsls r0, r2, 24
- asrs r0, 24
- bl sub_807DA04
-_0807DB08:
- ldrh r0, [r6]
- strh r0, [r4]
- b _0807DB54
- .align 2, 0
-_0807DB10: .4byte gSineTable
-_0807DB14: .4byte 0x0000073c
-_0807DB18: .4byte 0x0000073e
-_0807DB1C:
- movs r0, 0xE8
- lsls r0, 3
- adds r2, r5, r0
- ldrh r0, [r2]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- ldr r1, _0807DB5C @ =gUnknown_0202FF58
- ldrh r1, [r1]
- cmp r0, r1
- ble _0807DB54
- strh r6, [r2]
- ldr r1, _0807DB60 @ =0x0000073c
- adds r4, r5, r1
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- lsls r0, 24
- asrs r0, 24
- bl sub_807DA04
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bne _0807DB54
- strh r6, [r7]
-_0807DB54:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807DB5C: .4byte gUnknown_0202FF58
-_0807DB60: .4byte 0x0000073c
- thumb_func_end sub_807DA4C
-
- thumb_func_start sub_807DB64
-sub_807DB64: @ 807DB64
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0807DB98 @ =gUnknown_0202F7E8
- movs r4, 0xE6
- lsls r4, 3
- adds r2, r3, r4
- strh r0, [r2]
- adds r4, 0x2
- adds r2, r3, r4
- strh r1, [r2]
- adds r4, 0x2
- adds r2, r3, r4
- strh r0, [r2]
- ldr r2, _0807DB9C @ =0x00000736
- adds r3, r2
- strh r1, [r3]
- ldr r2, _0807DBA0 @ =REG_BLDALPHA
- lsls r1, 8
- orrs r1, r0
- strh r1, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807DB98: .4byte gUnknown_0202F7E8
-_0807DB9C: .4byte 0x00000736
-_0807DBA0: .4byte REG_BLDALPHA
- thumb_func_end sub_807DB64
-
- thumb_func_start sub_807DBA4
-sub_807DBA4: @ 807DBA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0807DBD8 @ =gUnknown_0202F7E8
- ldr r5, _0807DBDC @ =0x00000734
- adds r4, r3, r5
- movs r5, 0
- strh r0, [r4]
- ldr r4, _0807DBE0 @ =0x00000736
- adds r0, r3, r4
- strh r1, [r0]
- ldr r1, _0807DBE4 @ =0x0000073a
- adds r0, r3, r1
- strb r2, [r0]
- adds r4, 0x3
- adds r0, r3, r4
- strb r5, [r0]
- movs r0, 0xE7
- lsls r0, 3
- adds r3, r0
- strb r5, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807DBD8: .4byte gUnknown_0202F7E8
-_0807DBDC: .4byte 0x00000734
-_0807DBE0: .4byte 0x00000736
-_0807DBE4: .4byte 0x0000073a
- thumb_func_end sub_807DBA4
-
- thumb_func_start sub_807DBE8
-sub_807DBE8: @ 807DBE8
- push {r4-r6,lr}
- ldr r0, _0807DC40 @ =gUnknown_0202F7E8
- movs r1, 0xE6
- lsls r1, 3
- adds r3, r0, r1
- ldr r2, [r3]
- ldr r6, _0807DC44 @ =0x00000734
- adds r5, r0, r6
- ldr r1, [r5]
- adds r4, r0, 0
- cmp r2, r1
- beq _0807DCAC
- ldr r0, _0807DC48 @ =0x00000739
- adds r2, r4, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r6, _0807DC4C @ =0x0000073a
- adds r1, r4, r6
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bls _0807DC78
- movs r0, 0
- strb r0, [r2]
- movs r0, 0xE7
- lsls r0, 3
- adds r1, r4, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0807DC50
- ldrh r1, [r3]
- adds r2, r1, 0
- ldrh r0, [r5]
- cmp r2, r0
- bcs _0807DC70
- adds r0, r1, 0x1
- b _0807DC76
- .align 2, 0
-_0807DC40: .4byte gUnknown_0202F7E8
-_0807DC44: .4byte 0x00000734
-_0807DC48: .4byte 0x00000739
-_0807DC4C: .4byte 0x0000073a
-_0807DC50:
- ldr r1, _0807DC68 @ =0x00000732
- adds r3, r4, r1
- ldr r2, _0807DC6C @ =0x00000736
- adds r0, r4, r2
- ldrh r1, [r3]
- adds r2, r1, 0
- ldrh r0, [r0]
- cmp r2, r0
- bcs _0807DC70
- adds r0, r1, 0x1
- b _0807DC76
- .align 2, 0
-_0807DC68: .4byte 0x00000732
-_0807DC6C: .4byte 0x00000736
-_0807DC70:
- cmp r2, r0
- bls _0807DC78
- subs r0, r1, 0x1
-_0807DC76:
- strh r0, [r3]
-_0807DC78:
- ldr r3, _0807DCA0 @ =REG_BLDALPHA
- ldr r6, _0807DCA4 @ =0x00000732
- adds r0, r4, r6
- ldrh r0, [r0]
- lsls r0, 8
- movs r1, 0xE6
- lsls r1, 3
- adds r2, r4, r1
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r3]
- ldr r1, [r2]
- ldr r2, _0807DCA8 @ =0x00000734
- adds r0, r4, r2
- ldr r0, [r0]
- cmp r1, r0
- beq _0807DCAC
- movs r0, 0
- b _0807DCAE
- .align 2, 0
-_0807DCA0: .4byte REG_BLDALPHA
-_0807DCA4: .4byte 0x00000732
-_0807DCA8: .4byte 0x00000734
-_0807DCAC:
- movs r0, 0x1
-_0807DCAE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_807DBE8
-
- thumb_func_start unref_sub_807DCB4
-unref_sub_807DCB4: @ 807DCB4
- push {lr}
- 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 836bfbe99..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 0x2000000
-
- .align 2
gUnknown_08396FC4:: @ 8396FC4
.4byte gUnknown_0202F7E8
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 e208d5749..56f001359 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..a2abf7623 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -1,14 +1,41 @@
#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"
+
+#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
+{
+ 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 +47,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 +89,70 @@ 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;
};
+extern u8 ewram[];
+
+#define ewram0 (*(struct Struct2000000 *)ewram)
+
#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,
+ ewram,
+};
void sub_807C828(void)
{
@@ -87,7 +180,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 +214,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 +263,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 +273,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 +345,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 +356,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 +401,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 +415,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 +429,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 +438,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.data[c][MACRO1(gPlttBufferUnfaded[palOffset])];
+ palOffset++;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 16; i++)
+ {
+ gPlttBufferFaded[palOffset] = ewram0.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.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.data[r4]);
+ if (r4 == 0)
+ {
+ ewram0.data[r4][0] = 0x421;
+ for (i = 1; i < 0x1000; i++)
+ ewram0.data[r4][i] += ewram0.data[r4][i - 1];
+ }
+ else
+ {
+ for (i = 0; i < 0x1000; i++)
+ ewram0.data[r4][i] += ewram0.data[r4 - 1][i];
+ }
+ (*a)++;
+ if (*a == 7)
+ {
+ *a = 32;
+ *b = 32;
+ }
+ }
+}
+
+void sub_807D9A8(void)
+{
+ gWeather.unknown_74D = 1;
+ gWeather.unknown_74E = 1;
+}
+
+bool8 sub_807D9C8(void)
+{
+ if (gWeather.unknown_74D < 32)
+ {
+ sub_807D8F0(&gWeather.unknown_74D, &gWeather.unknown_74E);
+ if (gWeather.unknown_74D < 32)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_807DA04(s8 a)
+{
+ sub_807D5BC(-a - 1);
+}
+
+void sub_807DA14(void)
+{
+ gWeather.unknown_73C = 0;
+ gWeather.unknown_740 = 0;
+ gWeather.unknown_742 = 0;
+ gWeather.unknown_73E = 0;
+ gUnknown_0202FF58 = 5;
+}
+
+void sub_807DA4C(void)
+{
+ switch (gWeather.unknown_742)
+ {
+ case 0:
+ if (++gWeather.unknown_740 > gUnknown_0202FF58)
+ {
+ gWeather.unknown_740 = 0;
+ sub_807DA04(gWeather.unknown_73C++);
+ if (gWeather.unknown_73C > 5)
+ {
+ gWeather.unknown_73E = gWeather.unknown_73C;
+ gWeather.unknown_742 = 1;
+ gWeather.unknown_740 = 0x3C;
+ }
+ }
+ break;
+ case 1:
+ gWeather.unknown_740 = (gWeather.unknown_740 + 3) & 0x7F;
+ gWeather.unknown_73C = ((gSineTable[gWeather.unknown_740] - 1) >> 6) + 2;
+ if (gWeather.unknown_73C != gWeather.unknown_73E)
+ sub_807DA04(gWeather.unknown_73C);
+ gWeather.unknown_73E = gWeather.unknown_73C;
+ break;
+ case 2:
+ if (++gWeather.unknown_740 > gUnknown_0202FF58)
+ {
+ gWeather.unknown_740 = 0;
+ sub_807DA04(--gWeather.unknown_73C);
+ if (gWeather.unknown_73C == 3)
+ gWeather.unknown_742 = 0;
+ }
+ break;
+ }
+}
+
+void sub_807DB64(u8 a, u8 b)
+{
+ gWeather.unknown_730 = a;
+ gWeather.unknown_732 = b;
+ gWeather.unknown_734 = a;
+ gWeather.unknown_736 = b;
+ REG_BLDALPHA = (b << 8) | a;
+}
+
+void sub_807DBA4(u8 a, u8 b, int c)
+{
+ gWeather.unknown_734 = a;
+ gWeather.unknown_736 = b;
+ gWeather.unknown_73A = c;
+ gWeather.unknown_739 = 0;
+ gWeather.unknown_738 = 0;
+}
+
+bool8 sub_807DBE8(void)
+{
+ if (gWeather.unknown_730 == gWeather.unknown_734
+ && gWeather.unknown_732 == gWeather.unknown_736)
+ return TRUE;
+ if (++gWeather.unknown_739 > gWeather.unknown_73A)
+ {
+ gWeather.unknown_739 = 0;
+ gWeather.unknown_738++;
+ if (gWeather.unknown_738 & 1)
+ {
+ if (gWeather.unknown_730 < gWeather.unknown_734)
+ gWeather.unknown_730++;
+ else if (gWeather.unknown_730 > gWeather.unknown_734)
+ gWeather.unknown_730--;
+ }
+ else
+ {
+ if (gWeather.unknown_732 < gWeather.unknown_736)
+ gWeather.unknown_732++;
+ else if (gWeather.unknown_732 > gWeather.unknown_736)
+ gWeather.unknown_732--;
+ }
+ }
+ REG_BLDALPHA = (gWeather.unknown_732 << 8) | gWeather.unknown_730;
+ if (gWeather.unknown_730 == gWeather.unknown_734
+ && gWeather.unknown_732 == gWeather.unknown_736)
+ return TRUE;
+ return FALSE;
+}
+
+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;
+ }
+}