diff options
author | camthesaxman <cameronghall@cox.net> | 2017-09-21 15:24:12 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-09-21 15:24:12 -0500 |
commit | 61e8416b6e7d1b309b7382169c3fe47bc46f7c90 (patch) | |
tree | e21cd47ada51e053b7faa9c648dc9f2040af2445 | |
parent | 8fe982335e26911dcb6842d27c3d6bd5cd74c292 (diff) |
decompile unref_sub_807DCB4 - sub_807E460
-rw-r--r-- | asm/field_weather.s | 1102 | ||||
-rw-r--r-- | data/field_weather.s | 34 | ||||
-rw-r--r-- | include/songs.h | 20 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/field_weather.c | 570 |
5 files changed, 550 insertions, 1177 deletions
diff --git a/asm/field_weather.s b/asm/field_weather.s index 2d0d9a1d1..abc714c55 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -5,1108 +5,6 @@ .text - 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} 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/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 7648f98c7..9240cb191 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -371,6 +371,7 @@ SECTIONS { src/task.o(.rodata); src/battle_anim_807B69C.o(.rodata); src/title_screen.o(.rodata); + src/field_weather.o(.rodata); data/field_weather.o(.rodata); src/field_screen_effect.o(.rodata); src/battle_setup.o(.rodata); diff --git a/src/field_weather.c b/src/field_weather.c index 9dc2560cc..f1b4d4391 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -1,16 +1,33 @@ #include "global.h" #include "blend_palette.h" +#include "field_map_obj.h" #include "field_weather.h" #include "palette.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]; + u8 filler_000[0x1F4]; + struct Sprite *unknown_1F4[3]; u8 unknown_200[2][32]; u8 filler_240[0x460-0x240]; u8 unk460[2][32]; @@ -28,19 +45,21 @@ 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 unknown_6E4; @@ -75,17 +94,43 @@ struct Weather u8 unknown_74E; }; +extern u8 ewram[]; + +#define ewram0 (*(struct Struct2000000 *)ewram) + #define gWeather gUnknown_0202F7E8 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); -extern u8 *gUnknown_030006DC; -extern u8 gUnknown_083970C8; - -extern const u8 *const gUnknown_08396FA8[]; - +extern const u8 *gUnknown_030006DC; +extern const u8 gUnknown_083970C8[]; +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[]; + +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"); + +const u8 *const gUnknown_08396FA8[] = +{ + DroughtPaletteData_0, + DroughtPaletteData_1, + DroughtPaletteData_2, + DroughtPaletteData_3, + DroughtPaletteData_4, + DroughtPaletteData_5, + ewram, +}; void sub_807C828(void) { @@ -113,7 +158,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); } } @@ -147,12 +192,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; } } @@ -206,7 +251,7 @@ 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) @@ -372,22 +417,6 @@ void nullsub_39(void) { } -struct RGBColor -{ - u16 r:5; - u16 g:5; - u16 b:5; -}; - -extern u8 ewram[]; - -struct Struct2000000 -{ - u16 data[0][0x1000]; // unknown length -}; - -#define ewram0 (*(struct Struct2000000 *)ewram) - void sub_807CEBC(u8 a, u8 b, s8 c) { u16 r4; @@ -958,3 +987,482 @@ bool8 sub_807DBE8(void) 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() == 0) + { + 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() == 0) + { + sub_807E974(); + gUnknown_08396FC4->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +extern const struct Coords16 gUnknown_0839AAC4[]; +extern const struct Coords16 gUnknown_0839AABC[]; + +/* +void sub_807E4EC(struct Sprite *sprite) +{ + u32 randVal; + u16 r6; + s16 r4; + s16 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].x; + r4 = sprite->data1 % 31; + sprite->data2 = r4 * 8; + r0 = sprite->data1 / 31; + sprite->data2 = r4 * 128; + sprite->data3 = r0 * 128; + sprite->data2 = r4 * 128 - gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC].x * r6; + sprite->data3 = r0 * 128 - gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC].y * r6; + StartSpriteAnim(sprite, 0); + sprite->data4 = 0; + sprite->invisible = FALSE; + sprite->data0 = r6; +} +*/
\ No newline at end of file |