diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-01-07 16:10:24 -0600 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2021-01-09 10:33:29 -0600 |
commit | ec192a8fa80c389c67878d3da9f9faeb07b1451f (patch) | |
tree | ce0ee74fdae92286e4ae091196bb5044c6a1f768 | |
parent | 469212f7ee42d04e3160d357ed1f088f12edd391 (diff) |
5% wooo
-rw-r--r-- | asm/code_800B5F0.s | 222 | ||||
-rw-r--r-- | asm/code_8012A18.s | 172 | ||||
-rw-r--r-- | asm/code_801D760.s | 4 | ||||
-rw-r--r-- | asm/code_8040094.s | 68 | ||||
-rw-r--r-- | asm/code_8048480.s | 32 | ||||
-rw-r--r-- | asm/code_80521D0.s | 405 | ||||
-rw-r--r-- | asm/code_809D148.s | 10 | ||||
-rw-r--r-- | asm/event_flag.s | 76 | ||||
-rw-r--r-- | asm/fatal_system.s | 38 | ||||
-rw-r--r-- | asm/music.s | 28 | ||||
-rw-r--r-- | asm/personality_test.s | 44 | ||||
-rw-r--r-- | include/constants/bg_music.h | 13 | ||||
-rw-r--r-- | include/crt0.h | 11 | ||||
-rw-r--r-- | include/event_flag.h | 13 | ||||
-rw-r--r-- | include/music.h | 20 | ||||
-rwxr-xr-x | ld_script.txt | 4 | ||||
-rw-r--r-- | sound/music_player_table.inc | 4 | ||||
-rw-r--r-- | src/code_2.c | 5 | ||||
-rw-r--r-- | src/code_80118A4.c | 23 | ||||
-rw-r--r-- | src/code_803C190.c | 34 | ||||
-rw-r--r-- | src/code_8040094.c | 47 | ||||
-rw-r--r-- | src/code_8048480.c | 31 | ||||
-rw-r--r-- | src/code_80521D0_1.c | 200 | ||||
-rw-r--r-- | src/code_8094F88.c | 24 | ||||
-rw-r--r-- | src/event_flag.c | 58 | ||||
-rw-r--r-- | src/fatal_system.c | 26 | ||||
-rw-r--r-- | src/main.c | 12 | ||||
-rw-r--r-- | src/more_input.c | 132 | ||||
-rw-r--r-- | src/music.c | 38 | ||||
-rw-r--r-- | src/music_pre.c | 225 | ||||
-rw-r--r-- | src/save.c | 2 | ||||
-rw-r--r-- | src/save1.c | 72 | ||||
-rw-r--r-- | sym_ewram.txt | 6 |
33 files changed, 821 insertions, 1278 deletions
diff --git a/asm/code_800B5F0.s b/asm/code_800B5F0.s index b30e371..fd2f643 100644 --- a/asm/code_800B5F0.s +++ b/asm/code_800B5F0.s @@ -429,226 +429,4 @@ _0800BA54: .4byte gUnknown_202D648 _0800BA58: .4byte 0x04000004 thumb_func_end VCountIntr - thumb_func_start sub_800BA5C -sub_800BA5C: - push {r4,lr} - ldr r4, _0800BAA4 - ldrb r0, [r4] - cmp r0, 0 - beq _0800BA72 - ldr r1, _0800BAA8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bl xxx_update_bg_sound_input -_0800BA72: - movs r0, 0x1 - strb r0, [r4] - ldr r1, _0800BAAC - movs r0, 0 - strb r0, [r1] - ldr r1, _0800BAA8 - movs r0, 0 - str r0, [r1] - bl nullsub_25 - ldr r1, _0800BAB0 -_0800BA88: - ldrh r0, [r1] - cmp r0, 0x9F - bhi _0800BA88 - ldr r1, _0800BAB4 - movs r0, 0x1 - strb r0, [r1] - bl VBlankIntrWait - bl nullsub_18 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800BAA4: .4byte gUnknown_203B09A -_0800BAA8: .4byte gUnknown_203B09C -_0800BAAC: .4byte gUnknown_203B09B -_0800BAB0: .4byte 0x04000006 -_0800BAB4: .4byte gUnknown_203B099 - thumb_func_end sub_800BA5C - - thumb_func_start xxx_update_bg_sound_input -xxx_update_bg_sound_input: - push {r4,r5,lr} - ldr r1, _0800BACC - ldrb r4, [r1] - cmp r4, 0 - beq _0800BAD4 - ldr r1, _0800BAD0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - b _0800BAFE - .align 2, 0 -_0800BACC: .4byte gUnknown_203B09B -_0800BAD0: .4byte gUnknown_203B09C -_0800BAD4: - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0800BB04 - strb r4, [r0] - ldr r0, _0800BB08 - str r4, [r0] - bl UpdateBGControlRegisters - ldr r5, _0800BB0C - ldrb r0, [r5] - cmp r0, 0 - beq _0800BAF0 - bl UpdateSound -_0800BAF0: - bl UpdateInput - strb r4, [r5] - ldr r0, _0800BB10 - ldr r1, _0800BB14 - ldr r1, [r1] - str r1, [r0] -_0800BAFE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800BB04: .4byte gUnknown_203B09A -_0800BB08: .4byte gUnknown_203B09C -_0800BB0C: .4byte gUnknown_203B099 -_0800BB10: .4byte gUnknown_203B0A4 -_0800BB14: .4byte gUnknown_203B0A0 - thumb_func_end xxx_update_bg_sound_input - - thumb_func_start Timer3Intr -Timer3Intr: - push {lr} - ldr r0, _0800BB30 - ldr r0, [r0, 0x10] - cmp r0, 0 - beq _0800BB26 - bl _call_via_r0 -_0800BB26: - movs r0, 0x40 - bl SetInterruptFlag - pop {r0} - bx r0 - .align 2, 0 -_0800BB30: .4byte gUnknown_202D5F0 - thumb_func_end Timer3Intr - - thumb_func_start sub_800BB34 -sub_800BB34: - ldr r0, _0800BB3C - ldr r0, [r0] - bx lr - .align 2, 0 -_0800BB3C: .4byte gUnknown_203B0A0 - thumb_func_end sub_800BB34 - - thumb_func_start nullsub_178 -nullsub_178: - bx lr - thumb_func_end nullsub_178 - - thumb_func_start sub_800BB44 -sub_800BB44: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r2, _0800BBF0 - ldrh r0, [r2] - ldr r1, _0800BBF4 - cmp r0, r1 - beq _0800BB60 -_0800BB5A: - ldrh r0, [r2] - cmp r0, r1 - bne _0800BB5A -_0800BB60: - bl DisableInterrupts - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - ldr r1, _0800BBF8 -_0800BB6C: - ldrh r0, [r1] - cmp r0, 0x9F - bls _0800BB6C - movs r0, 0x80 - lsls r0, 19 - mov r9, r0 - ldrh r1, [r0] - mov r8, r1 - movs r0, 0x80 - mov r2, r9 - strh r0, [r2] - movs r7, 0xA0 - lsls r7, 19 - ldr r1, _0800BBFC - adds r0, r1, 0 - strh r0, [r7] - ldr r5, _0800BC00 - ldrh r4, [r5] - movs r2, 0xC0 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r5] - ldr r0, _0800BC04 - mov r10, r0 - ldr r1, _0800BC08 - adds r0, r1, 0 - mov r2, r10 - strh r0, [r2] - ldr r6, _0800BC0C - movs r0, 0x1 - strh r0, [r6] - bl SoundBiasReset - swi 0x3 - bl SoundBiasSet - movs r0, 0 - strh r0, [r6] - strh r4, [r5] - mov r1, r10 - strh r0, [r1] - mov r1, r8 - mov r2, r9 - strh r1, [r2] - strh r0, [r7] - ldr r2, [sp] - cmp r2, 0 - beq _0800BBD0 - bl EnableInterrupts -_0800BBD0: - ldr r2, _0800BBF0 - ldrh r0, [r2] - ldr r1, _0800BBF4 - cmp r0, r1 - beq _0800BBE0 -_0800BBDA: - ldrh r0, [r2] - cmp r0, r1 - bne _0800BBDA -_0800BBE0: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800BBF0: .4byte 0x04000130 -_0800BBF4: .4byte 0x000003ff -_0800BBF8: .4byte 0x04000006 -_0800BBFC: .4byte 0x00007fff -_0800BC00: .4byte 0x04000200 -_0800BC04: .4byte 0x04000132 -_0800BC08: .4byte 0x00008304 -_0800BC0C: .4byte 0x04000208 - thumb_func_end sub_800BB44 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_8012A18.s b/asm/code_8012A18.s index 90b3ebd..c430037 100644 --- a/asm/code_8012A18.s +++ b/asm/code_8012A18.s @@ -5,178 +5,6 @@ .text - thumb_func_start GetKeyPress -GetKeyPress: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - beq _08012ADE - adds r0, 0x29 - ldrb r0, [r0] - cmp r0, 0 - beq _08012AB4 - movs r0, 0x1 - b _08012AE2 -_08012AB4: - adds r0, r1, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - beq _08012AC2 - movs r0, 0x2 - b _08012AE2 -_08012AC2: - adds r0, r1, 0 - adds r0, 0x2C - ldrb r0, [r0] - cmp r0, 0 - beq _08012AD0 - movs r0, 0x9 - b _08012AE2 -_08012AD0: - adds r0, r1, 0 - adds r0, 0x2B - ldrb r0, [r0] - cmp r0, 0 - beq _08012ADE - movs r0, 0xA - b _08012AE2 -_08012ADE: - bl sub_8012AE8 -_08012AE2: - pop {r1} - bx r1 - thumb_func_end GetKeyPress - - thumb_func_start sub_8012AE8 -sub_8012AE8: - push {lr} - ldr r2, _08012B08 - ldrh r1, [r2] - movs r3, 0x80 - lsls r3, 1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08012B4A - ldrh r1, [r2, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08012B0C - movs r0, 0xB - b _08012BBE - .align 2, 0 -_08012B08: .4byte gRealInputs -_08012B0C: - ldrh r1, [r2, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08012B1A - movs r0, 0xC - b _08012BBE -_08012B1A: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08012B26 - movs r0, 0xD - b _08012BBE -_08012B26: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08012B32 - movs r0, 0xE - b _08012BBE -_08012B32: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08012B3E - movs r0, 0xF - b _08012BBE -_08012B3E: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08012BBC - movs r0, 0x6 - b _08012BBE -_08012B4A: - ldrh r1, [r2, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08012B58 - movs r0, 0x1 - b _08012BBE -_08012B58: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08012B64 - movs r0, 0x2 - b _08012BBE -_08012B64: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08012B70 - movs r0, 0x3 - b _08012BBE -_08012B70: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08012B7C - movs r0, 0x4 - b _08012BBE -_08012B7C: - ldrh r1, [r2, 0x4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08012B8A - movs r0, 0x7 - b _08012BBE -_08012B8A: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08012B96 - movs r0, 0x8 - b _08012BBE -_08012B96: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08012BA2 - movs r0, 0x9 - b _08012BBE -_08012BA2: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08012BAE - movs r0, 0xA - b _08012BBE -_08012BAE: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _08012BBC - movs r0, 0x5 - b _08012BBE -_08012BBC: - movs r0, 0 -_08012BBE: - pop {r1} - bx r1 - thumb_func_end sub_8012AE8 - thumb_func_start sub_8012BC4 sub_8012BC4: push {r4-r7,lr} diff --git a/asm/code_801D760.s b/asm/code_801D760.s index d74e5af..563f19a 100644 --- a/asm/code_801D760.s +++ b/asm/code_801D760.s @@ -14300,7 +14300,7 @@ _080249F8: str r0, [r1, 0x24] movs r0, 0x8 movs r1, 0x3C - bl sub_8011900 + bl xxx_call_fade_in_new_bgm ldr r0, _08024A0C ldr r3, _08024A10 b _08024CB0 @@ -14620,7 +14620,7 @@ _08024C98: .4byte gUnknown_80DD0E0 _08024C9C: movs r0, 0x8 movs r1, 0x3C - bl sub_8011900 + bl xxx_call_fade_in_new_bgm ldr r0, _08024CBC ldr r1, [r0] movs r0, 0x15 diff --git a/asm/code_8040094.s b/asm/code_8040094.s index c37111c..b81ce2f 100644 --- a/asm/code_8040094.s +++ b/asm/code_8040094.s @@ -5,74 +5,6 @@ .text - thumb_func_start sub_80400D4 -sub_80400D4: - push {r4,lr} - ldr r0, _08040114 - ldr r4, [r0] - movs r0, 0xC1 - lsls r0, 9 - adds r3, r4, r0 - ldr r0, [r3] - cmp r0, 0 - beq _0804010C - cmp r0, 0x1E - ble _080400EC - movs r0, 0x1F -_080400EC: - ldr r1, _08040118 - adds r2, r4, r1 - ldr r1, _0804011C - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r3] - subs r0, 0x1 - str r0, [r3] - cmp r0, 0 - bne _0804010C - ldr r1, _08040120 - adds r0, r4, r1 - ldr r0, [r0] - str r0, [r3] -_0804010C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08040114: .4byte gUnknown_203B418 -_08040118: .4byte 0x000181fc -_0804011C: .4byte gUnknown_80F6568 -_08040120: .4byte 0x00018204 - thumb_func_end sub_80400D4 - - thumb_func_start sub_8040124 -sub_8040124: - ldr r1, _0804012C - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_0804012C: .4byte gUnknown_202EE01 - thumb_func_end sub_8040124 - - thumb_func_start sub_8040130 -sub_8040130: - push {lr} - ldr r0, _08040144 - ldr r1, _08040148 - bl OpenFileAndGetFileDataPtr - ldr r1, _0804014C - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08040144: .4byte gUnknown_80F6604 -_08040148: .4byte gUnknown_83B0000 -_0804014C: .4byte gUnknown_202EE04 - thumb_func_end sub_8040130 - thumb_func_start sub_8040150 sub_8040150: push {r4-r7,lr} diff --git a/asm/code_8048480.s b/asm/code_8048480.s index 35b6f10..3e85d20 100644 --- a/asm/code_8048480.s +++ b/asm/code_8048480.s @@ -5,38 +5,6 @@ .text - thumb_func_start sub_80484E8 -sub_80484E8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldr r0, [r4, 0x70] - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x1 - bne _08048500 - adds r0, r5, 0 - bl sub_807A290 - b _08048516 -_08048500: - ldr r0, _0804851C - adds r1, r4, 0 - movs r2, 0 - bl sub_8045B94 - ldr r0, _08048520 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08048516: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804851C: .4byte gUnknown_202DF98 -_08048520: .4byte gUnknown_80FB580 - thumb_func_end sub_80484E8 - thumb_func_start sub_8048524 sub_8048524: push {r4-r6,lr} diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index c15397c..5cad05c 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -100060,7 +100060,7 @@ sub_8083F14: thumb_func_start sub_8083F24 sub_8083F24: push {lr} - bl sub_800C068 + bl GetCurrentBGSong lsls r0, 16 lsrs r0, 16 pop {r1} @@ -100189,7 +100189,7 @@ _08084018: beq _08084030 ldr r0, _0808402C ands r0, r1 - bl sub_800BDFC + bl StartNewBGM b _0808403A .align 2, 0 _0808402C: .4byte 0x00007fff @@ -115935,405 +115935,4 @@ sub_808C9B0: bx r0 thumb_func_end sub_808C9B0 - thumb_func_start sub_808C9C4 -sub_808C9C4: - push {r4,r5,lr} - bl sub_8085480 - adds r5, r0, 0 - movs r0, 0x7 - bl sub_8085680 - adds r4, r0, 0 - movs r0, 0x72 - bl sub_8083E88 - bl sub_80854D4 - movs r0, 0x4 - bl sub_8085930 - ldr r0, _0808CA10 - bl sub_80855E4 - adds r0, r4, 0 - movs r1, 0 - bl sub_8085918 - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - subs r1, 0x3 - bl sub_8085860 - ldr r0, _0808CA14 - ldr r1, _0808CA18 - bl sub_808D8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CA10: .4byte sub_8086A3C -_0808CA14: .4byte gUnknown_202E038 -_0808CA18: .4byte 0x0000014d - thumb_func_end sub_808C9C4 - - thumb_func_start sub_808CA1C -sub_808CA1C: - push {r4,r5,lr} - movs r0, 0x7 - bl sub_8085680 - adds r5, r0, 0 - bl sub_808696C - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CB44 - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x2 - movs r3, 0x4 - bl sub_80869E4 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CB48 - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - bl sub_8086448 - bl sub_8086598 - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - bl sub_80862BC - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x2 - movs r3, 0 - bl sub_80869E4 - ldr r0, _0808CB4C - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r4, _0808CB50 - adds r0, r4, 0 - bl sub_8083E38 - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0 - bl sub_806CDD4 - movs r0, 0x14 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0 - bl sub_806CE68 - movs r0, 0x4 - movs r1, 0x46 - bl sub_803E708 - adds r0, r4, 0 - bl sub_8083E38 - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0 - bl sub_806CDD4 - movs r0, 0x14 - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CB54 - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_806CDD4 - movs r4, 0x17 -_0808CAF6: - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x80 - lsls r2, 1 - bl sub_804539C - movs r0, 0x46 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _0808CAF6 - adds r0, r5, 0 - movs r1, 0 - bl sub_806CE68 - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - bl sub_8042B0C - movs r1, 0x87 - lsls r1, 2 - adds r0, r5, 0 - movs r2, 0 - bl sub_8068FE0 - ldr r2, _0808CB58 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r1, [r2] - movs r0, 0x4 - strb r0, [r1, 0x11] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CB44: .4byte gUnknown_8106778 -_0808CB48: .4byte gUnknown_81067BC -_0808CB4C: .4byte gUnknown_81067E0 -_0808CB50: .4byte 0x000001c7 -_0808CB54: .4byte gUnknown_8106834 -_0808CB58: .4byte gUnknown_203B418 - thumb_func_end sub_808CA1C - - thumb_func_start sub_808CB5C -sub_808CB5C: - push {r4,r5,lr} - bl sub_8085480 - adds r5, r0, 0 - movs r0, 0x7 - bl sub_8085680 - adds r4, r0, 0 - movs r0, 0x72 - bl sub_8083E88 - bl sub_80854D4 - movs r0, 0x4 - bl sub_8085930 - movs r1, 0x87 - lsls r1, 2 - adds r0, r4, 0 - movs r2, 0 - bl sub_8068FE0 - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - bl sub_8085860 - ldr r0, _0808CBA4 - ldr r1, _0808CBA8 - bl sub_808D8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CBA4: .4byte gUnknown_202E038 -_0808CBA8: .4byte 0x0000014d - thumb_func_end sub_808CB5C - - thumb_func_start nullsub_101 -nullsub_101: - bx lr - thumb_func_end nullsub_101 - - thumb_func_start sub_808CBB0 -sub_808CBB0: - push {r4,r5,lr} - bl sub_8085480 - adds r5, r0, 0 - movs r0, 0x1F - bl sub_8085680 - adds r4, r0, 0 - movs r0, 0x72 - bl sub_8083E88 - bl sub_80854D4 - movs r0, 0x4 - bl sub_8085930 - ldr r0, _0808CBFC - bl sub_80855E4 - adds r0, r4, 0 - movs r1, 0 - bl sub_8085918 - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - subs r1, 0x3 - bl sub_8085860 - ldr r0, _0808CC00 - movs r1, 0x82 - lsls r1, 1 - bl sub_808D8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CBFC: .4byte sub_8086A3C -_0808CC00: .4byte gUnknown_202E038 - thumb_func_end sub_808CBB0 - - thumb_func_start sub_808CC04 -sub_808CC04: - push {r4,r5,lr} - movs r0, 0x1F - bl sub_8085680 - adds r5, r0, 0 - bl sub_808696C - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CD2C - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x2 - movs r3, 0x4 - bl sub_80869E4 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CD30 - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - bl sub_8086448 - bl sub_8086598 - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - bl sub_80862BC - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x2 - movs r3, 0 - bl sub_80869E4 - ldr r0, _0808CD34 - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - ldr r4, _0808CD38 - adds r0, r4, 0 - bl sub_8083E38 - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0 - bl sub_806CDD4 - movs r0, 0x14 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0 - bl sub_806CE68 - movs r0, 0x4 - movs r1, 0x46 - bl sub_803E708 - adds r0, r4, 0 - bl sub_8083E38 - adds r0, r5, 0 - movs r1, 0xA - movs r2, 0 - bl sub_806CDD4 - movs r0, 0x14 - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808CD3C - bl sub_8052910 - movs r0, 0xA - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_806CDD4 - movs r4, 0x17 -_0808CCDE: - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x80 - lsls r2, 1 - bl sub_804539C - movs r0, 0x46 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bge _0808CCDE - adds r0, r5, 0 - movs r1, 0 - bl sub_806CE68 - movs r0, 0x20 - movs r1, 0x46 - bl sub_803E708 - adds r0, r5, 0 - bl sub_8042B0C - movs r1, 0x87 - lsls r1, 2 - adds r0, r5, 0 - movs r2, 0 - bl sub_8068FE0 - ldr r2, _0808CD40 - ldr r1, [r2] - movs r0, 0x1 - strb r0, [r1, 0x4] - ldr r1, [r2] - movs r0, 0x4 - strb r0, [r1, 0x11] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CD2C: .4byte gUnknown_810688C -_0808CD30: .4byte gUnknown_81068D0 -_0808CD34: .4byte gUnknown_8106918 -_0808CD38: .4byte 0x000001c7 -_0808CD3C: .4byte gUnknown_8106934 -_0808CD40: .4byte gUnknown_203B418 - thumb_func_end sub_808CC04 - - thumb_func_start sub_808CD44 -sub_808CD44: - push {r4,r5,lr} - bl sub_8085480 - adds r5, r0, 0 - movs r0, 0x1F - bl sub_8085680 - adds r4, r0, 0 - movs r0, 0x72 - bl sub_8083E88 - bl sub_80854D4 - movs r0, 0x4 - bl sub_8085930 - ldr r0, _0808CD94 - bl sub_80855E4 - movs r1, 0x87 - lsls r1, 2 - adds r0, r4, 0 - movs r2, 0 - bl sub_8068FE0 - movs r1, 0x4 - ldrsh r0, [r5, r1] - movs r2, 0x6 - ldrsh r1, [r5, r2] - subs r1, 0x3 - bl sub_8085860 - ldr r0, _0808CD98 - movs r1, 0x82 - lsls r1, 1 - bl sub_808D8BC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808CD94: .4byte sub_8086A3C -_0808CD98: .4byte gUnknown_202E038 - thumb_func_end sub_808CD44 - .align 2,0 @ Don't pad with nop diff --git a/asm/code_809D148.s b/asm/code_809D148.s index 5a0f8ec..2473525 100644 --- a/asm/code_809D148.s +++ b/asm/code_809D148.s @@ -4953,7 +4953,7 @@ _0809FD20: cmp r1, r0 beq _0809FDA0 adds r0, r1, 0 - bl sub_80118F0 + bl xxx_call_start_new_bgm bl _0809EAE0 .align 2, 0 _0809FD34: .4byte 0x000003e7 @@ -4978,7 +4978,7 @@ _0809FD4E: add r0, sp, 0x8 ldrh r1, [r0, 0x2] adds r0, r2, 0 - bl sub_8011900 + bl xxx_call_fade_in_new_bgm bl _0809EAE0 .align 2, 0 _0809FD68: .4byte 0x000003e7 @@ -9479,7 +9479,7 @@ _080A229E: bl sub_80118C4 b _080A236A _080A22AE: - bl sub_800C068 + bl GetCurrentBGSong ldr r1, _080A22C4 strh r0, [r1] lsls r0, 16 @@ -9498,7 +9498,7 @@ _080A22CC: ldr r5, _080A22E0 cmp r0, r5 beq _080A236A - bl sub_80118F0 + bl xxx_call_start_new_bgm b _080A2312 .align 2, 0 _080A22DC: .4byte gUnknown_2039DA8 @@ -9511,7 +9511,7 @@ _080A22E4: beq _080A236A lsls r1, r5, 16 lsrs r1, 16 - bl sub_8011900 + bl xxx_call_fade_in_new_bgm strh r6, [r4] b _080A1EBE .align 2, 0 diff --git a/asm/event_flag.s b/asm/event_flag.s index 3995181..a07621c 100644 --- a/asm/event_flag.s +++ b/asm/event_flag.s @@ -2489,80 +2489,4 @@ _080026C6: bx r1 thumb_func_end sub_8002694 - thumb_func_start sub_80026CC -sub_80026CC: - push {lr} - lsls r0, 16 - asrs r0, 16 - bl sub_8002658 - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80026CC - - thumb_func_start sub_80026E8 -sub_80026E8: - push {lr} - lsls r0, 16 - asrs r0, 16 - bl sub_8002658 - lsls r0, 24 - lsrs r0, 24 - bl UnlockFriendArea - pop {r0} - bx r0 - thumb_func_end sub_80026E8 - - thumb_func_start sub_8002700 -sub_8002700: - push {lr} - ldr r1, _08002714 - movs r2, 0x80 - lsls r2, 3 - bl MemoryCopy8 - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_08002714: .4byte gUnknown_2000A88 - thumb_func_end sub_8002700 - - thumb_func_start sub_8002718 -sub_8002718: - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - mov r0, sp - movs r1, 0 - movs r2, 0 - bl sub_800160C - ldr r0, _08002748 - movs r2, 0x80 - lsls r2, 3 - adds r1, r4, 0 - bl MemoryCopy8 - ldr r0, [sp] - movs r2, 0xA - ldrsh r1, [r0, r2] - ldr r0, [sp, 0x4] - ldr r0, [r0] - cmp r1, r0 - bne _0800274C - movs r0, 0x1 - b _0800274E - .align 2, 0 -_08002748: .4byte gUnknown_2000A88 -_0800274C: - movs r0, 0 -_0800274E: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8002718 - .align 2, 0 @ Don't pad with nop. diff --git a/asm/fatal_system.s b/asm/fatal_system.s deleted file mode 100644 index e4da05e..0000000 --- a/asm/fatal_system.s +++ /dev/null @@ -1,38 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start FatalErrorFormatMessage -FatalErrorFormatMessage: - push {r0-r3} - push {lr} - sub sp, 0x100 - ldr r1, [sp, 0x104] - add r2, sp, 0x108 - mov r0, sp - bl vsprintf - add sp, 0x100 - pop {r3} - add sp, 0x10 - bx r3 - thumb_func_end FatalErrorFormatMessage - - thumb_func_start sub_8011B88 -sub_8011B88: - push {r0-r3} - push {lr} - sub sp, 0x100 - ldr r1, [sp, 0x104] - add r2, sp, 0x108 - mov r0, sp - bl vsprintf - add sp, 0x100 - pop {r3} - add sp, 0x10 - bx r3 - thumb_func_end sub_8011B88 - - .align 2,0 diff --git a/asm/music.s b/asm/music.s index 78ff17d..0e13f2c 100644 --- a/asm/music.s +++ b/asm/music.s @@ -78,9 +78,9 @@ _0800C0B4: _0800C0FC: .4byte 0x000003e5 _0800C100: .4byte gUnknown_202D68E _0800C104: .4byte gUnknown_202D690 -_0800C108: .4byte gUnknown_202D68A +_0800C108: .4byte gCurrentBGSong _0800C10C: .4byte 0x000003e7 -_0800C110: .4byte gUnknown_202D688 +_0800C110: .4byte gBGMusicPlayerState _0800C114: .4byte gUnknown_202D692 _0800C118: .4byte gUnknown_202D694 _0800C11C: .4byte gUnknown_20008F0 @@ -132,7 +132,7 @@ _0800C15E: b _0800C19A .align 2, 0 _0800C17C: .4byte gUnknown_20008F0 -_0800C180: .4byte gUnknown_202D68A +_0800C180: .4byte gCurrentBGSong _0800C184: cmp r0, 0x7A beq _0800C19A @@ -817,7 +817,7 @@ _0800C6E4: strh r0, [r4] b _0800C8A2 .align 2, 0 -_0800C6F0: .4byte gUnknown_202D68A +_0800C6F0: .4byte gCurrentBGSong _0800C6F4: .4byte 0x000003e7 _0800C6F8: .4byte gUnknown_202D68E _0800C6FC: .4byte 0x000003e5 @@ -893,9 +893,9 @@ _0800C774: bl m4aSongNumStart b _0800C7BE .align 2, 0 -_0800C794: .4byte gUnknown_202D68A +_0800C794: .4byte gCurrentBGSong _0800C798: .4byte 0x000003e7 -_0800C79C: .4byte gUnknown_202D688 +_0800C79C: .4byte gBGMusicPlayerState _0800C7A0: .4byte gUnknown_202D694 _0800C7A4: ldr r0, _0800C7B0 @@ -917,7 +917,7 @@ _0800C7BE: ldr r2, _0800C7DC b _0800C84C .align 2, 0 -_0800C7CC: .4byte gUnknown_202D688 +_0800C7CC: .4byte gBGMusicPlayerState _0800C7D0: .4byte gUnknown_20008F0 _0800C7D4: .4byte gUnknown_202D690 _0800C7D8: .4byte gUnknown_202D68E @@ -948,8 +948,8 @@ _0800C80A: strh r0, [r5] b _0800C8A2 .align 2, 0 -_0800C810: .4byte gUnknown_202D688 -_0800C814: .4byte gUnknown_202D68A +_0800C810: .4byte gBGMusicPlayerState +_0800C814: .4byte gCurrentBGSong _0800C818: .4byte 0x000003e7 _0800C81C: ldr r0, _0800C834 @@ -964,7 +964,7 @@ _0800C81C: bne _0800C8A2 b _0800C842 .align 2, 0 -_0800C834: .4byte gUnknown_202D68A +_0800C834: .4byte gCurrentBGSong _0800C838: .4byte 0x000003e7 _0800C83C: ldr r0, _0800C854 @@ -981,8 +981,8 @@ _0800C84C: b _0800C8A2 .align 2, 0 _0800C854: .4byte gUnknown_20008F0 -_0800C858: .4byte gUnknown_202D688 -_0800C85C: .4byte gUnknown_202D68A +_0800C858: .4byte gBGMusicPlayerState +_0800C85C: .4byte gCurrentBGSong _0800C860: .4byte 0x000003e7 _0800C864: movs r0, 0 @@ -1008,7 +1008,7 @@ _0800C864: .align 2, 0 _0800C890: .4byte gUnknown_202D68C _0800C894: .4byte 0x000003e7 -_0800C898: .4byte gUnknown_202D68A +_0800C898: .4byte gCurrentBGSong _0800C89C: strh r0, [r5] ldr r0, _0800C8C4 @@ -1033,7 +1033,7 @@ _0800C8AE: beq _0800C8F0 b _0800C926 .align 2, 0 -_0800C8C4: .4byte gUnknown_202D68A +_0800C8C4: .4byte gCurrentBGSong _0800C8C8: .4byte gUnknown_3000FE8 _0800C8CC: .4byte 0x000003e5 _0800C8D0: diff --git a/asm/personality_test.s b/asm/personality_test.s index 545c45a..4f4746d 100644 --- a/asm/personality_test.s +++ b/asm/personality_test.s @@ -5,50 +5,6 @@ .text - thumb_func_start sub_803C190 -sub_803C190: - lsls r0, 24 - ldr r1, _0803C19C - lsrs r0, 21 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_0803C19C: .4byte gUnknown_80EBA18 - thumb_func_end sub_803C190 - - thumb_func_start sub_803C1A0 -sub_803C1A0: - lsls r0, 24 - ldr r1, _0803C1B0 - lsrs r0, 21 - adds r1, 0x4 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_0803C1B0: .4byte gUnknown_80EBA18 - thumb_func_end sub_803C1A0 - - thumb_func_start sub_803C1B4 -sub_803C1B4: - push {r4,lr} - lsls r4, r1, 24 - lsrs r4, 24 - bl sub_80908D8 - cmp r4, 0x2 - bne _0803C1C4 - adds r0, 0x2 -_0803C1C4: - cmp r0, 0xF - ble _0803C1CA - movs r0, 0xF -_0803C1CA: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_803C1B4 - thumb_func_start sub_803C1D0 sub_803C1D0: push {lr} diff --git a/include/constants/bg_music.h b/include/constants/bg_music.h index 0e6f416..df4c318 100644 --- a/include/constants/bg_music.h +++ b/include/constants/bg_music.h @@ -1,6 +1,15 @@ #ifndef GUARD_BG_MUSIC_H #define GUARD_BG_MUSIC_H -#define MUS_TINY_WOODS 1 +#define MUS_POKEMON_SQUARE 7 +#define MUS_LOADING_SCREEN 8 +#define MUS_THERES_TROUBLE 10 +#define MUS_KECLEON_SHOP 17 +#define MUS_STOP_THIEF 18 +#define MUS_WORLD_CALAMITY 19 +#define MUS_INTRO 40 +#define MUS_TITLE_SCREEN 43 -#endif //GUARD_BG_MUSIC_H +#define NUM_BG_SONGS 128 + +#endif //GUARD_BG_MUSIC_H diff --git a/include/crt0.h b/include/crt0.h new file mode 100644 index 0000000..3121eea --- /dev/null +++ b/include/crt0.h @@ -0,0 +1,11 @@ +#ifndef GUARD_CRT0_H +#define GUARD_CRT0_H + +// Exported type declarations + +// Exported RAM declarations + +// Exported ROM declarations +extern u32 IntrMain[]; + +#endif //GUARD_CRT0_H diff --git a/include/event_flag.h b/include/event_flag.h new file mode 100644 index 0000000..c9bab15 --- /dev/null +++ b/include/event_flag.h @@ -0,0 +1,13 @@ +struct UnkEventStruct +{ + /* 0x0 */ s16 *unk0; + /* 0x4 */ u32 *unk4; +}; + + +bool8 sub_80026CC(s16 r0); +void sub_80026E8(s16 r0); +bool8 sub_8002700(void *r0); +bool8 sub_8002718(u8 *r0); +void sub_8002758(u32 *r0); +u8 sub_800276C(void); diff --git a/include/music.h b/include/music.h new file mode 100644 index 0000000..3a83946 --- /dev/null +++ b/include/music.h @@ -0,0 +1,20 @@ +#ifndef GUARD_MUSIC_H +#define GUARD_MUSIC_H + +void sub_800C93C(void); +void sub_800C9CC(void); +u8 sub_800CA38(u32 songIndex); +void StartNewBGM(u16 songIndex); +bool8 IsBGSong(u32 songIndex); +bool8 sub_800CAAC(u32 songIndex); +bool8 sub_800CACC(u32 songIndex); +u16 sub_800CAE0(u16 songIndex); +bool8 sub_800CAF0(u16 songIndex); +void StartNewBGM(u16 songIndex); +void FadeInNewBGM(u16 SongIndex, u16 speed); +u16 GetCurrentBGSong(void); + +void nullsub_19(void); +void nullsub_20(u16 songIndex); + +#endif //GUARD_MUSIC_H diff --git a/ld_script.txt b/ld_script.txt index 1d675cd..7cc6262 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -80,7 +80,6 @@ SECTIONS { src/code_80118A4.o(.text); asm/code_80118A4.o(.text); src/code_80118A4_1.o(.text); - asm/fatal_system.o(.text); src/fatal_system.o(.text); asm/fatal_system_1.o(.text); src/save.o(.text); @@ -88,6 +87,7 @@ SECTIONS { src/save_mid.o(.text); asm/save1.o(.text); src/save1.o(.text); + src/more_input.o(.text); asm/code_8012A18.o(.text); src/code_801D760.o(.text); asm/code_801D760.o(.text); @@ -95,6 +95,7 @@ SECTIONS { asm/code_8027C84.o(.text); src/wonder_mail.o(.text); asm/wonder_mail.o(.text); + src/code_803C190.o(.text); asm/personality_test.o(.text); src/personality_test.o(.text); asm/code_803D110.o(.text); @@ -108,6 +109,7 @@ SECTIONS { asm/code_8048480.o(.text); src/code_80521D0.o(.text); asm/code_80521D0.o(.text); + src/code_80521D0_1.o(.text); src/pokemon.o(.text); asm/pokemon.o(.text); src/pokemon_mid.o(.text); diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc index 86c4795..7c5eb33 100644 --- a/sound/music_player_table.inc +++ b/sound/music_player_table.inc @@ -1,7 +1,7 @@ .align 2 gMPlayTable:: @ 9E8665C - music_player 0x20008F0, 0x2000000, 12, 0 - music_player 0x2000970, 0x20003C0, 6, 0 + music_player 0x20008F0, 0x2000000, 12, 0 @ BGM + music_player 0x2000970, 0x20003C0, 6, 0 @ SE? music_player 0x20009B0, 0x20005A0, 1, 0 music_player 0x2000A40, 0x20005F0, 1, 0 music_player 0x20009F0, 0x2000640, 2, 0 diff --git a/src/code_2.c b/src/code_2.c index fcec96d..ef469c8 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -3,6 +3,8 @@ #include "friend_area.h" #include "input.h" #include "bg.h" +#include "music.h" +#include "constants/bg_music.h" extern void InitHeap(void); extern void NDS_DebugInit(void); @@ -39,7 +41,6 @@ extern void sub_800CDA8(u32); extern void sub_800641C(u32, u32, u32); extern void LoadTitleScreen(void); extern void SetBGPaletteBufferColorRGB(s32, u8 *, s32, u8 *); -extern void sub_800BDFC(u32); extern void sub_80095CC(u32, u32); extern void InitMainMenu(void); extern void sub_8012468(void); @@ -149,7 +150,7 @@ void GameLoop(void) sub_8012558(); } tmp3 = 1; - sub_800BDFC(8); + StartNewBGM(MUS_LOADING_SCREEN); flag = TRUE; sub_80095CC(0, 20); InitMainMenu(); diff --git a/src/code_80118A4.c b/src/code_80118A4.c index 73cb8b2..c4022da 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -1,22 +1,19 @@ #include "global.h" +#include "music.h" +#include "constants/bg_music.h" void sub_8011924(void); void nullsub_26(void); extern u8 sub_80023E4(u8); -extern void sub_800BDFC(u16 r0); -extern void FadeInNewBGM(u16 r0, u16 r1); extern void sub_800BF48(u16 r0); extern void sub_800BF80(void); extern void sub_800BFD0(u16 r0); extern void sub_800C3F8(u16 r0, u16 r1); extern void sub_801199C(u16 r0); -extern u16 sub_800C068(); extern void sub_800C074(u16 r0, u16 r1); extern void sub_800C298(u16 r0); -extern void sub_800C93C(); extern u8 sub_800C5D0(u16 r0); -extern void sub_800C9CC(); extern void nullsub_27(void); extern void nullsub_29(void); @@ -49,12 +46,12 @@ void sub_8011760(void) { if(sub_80023E4(0xD) != 0) { - sub_800BDFC(0x13); + StartNewBGM(MUS_WORLD_CALAMITY); return; } if(sub_80023E4(0xC) != 0) { - sub_800BDFC(0x7); // Pokemon Square Theme + StartNewBGM(MUS_POKEMON_SQUARE); } } @@ -62,10 +59,10 @@ void sub_801178C(void) { if(sub_80023E4(0xD) != 0) { - sub_800BDFC(0x13); + StartNewBGM(MUS_WORLD_CALAMITY); return; } - sub_800BDFC(0x7); // Pokemon Square Theme + StartNewBGM(MUS_POKEMON_SQUARE); } void sub_80117AC(void) @@ -147,12 +144,12 @@ void sub_80118C4(u16 r0) sub_800C3F8(0x3e5, r0); } -void sub_80118F0(u16 r0) +void xxx_call_start_new_bgm(u16 songIndex) { - sub_800BDFC(r0); + StartNewBGM(songIndex); } -void sub_8011900(u16 songIndex, u16 speed) +void xxx_call_fade_in_new_bgm(u16 songIndex, u16 speed) { FadeInNewBGM(songIndex, speed); } @@ -175,7 +172,7 @@ void sub_8011930(u16 r0) u32 sub_8011940(u16 r0) { u32 temp; - temp = sub_800C068(); + temp = GetCurrentBGSong(); if(r0 == 999) return temp != 999; diff --git a/src/code_803C190.c b/src/code_803C190.c new file mode 100644 index 0000000..26565c0 --- /dev/null +++ b/src/code_803C190.c @@ -0,0 +1,34 @@ +#include "global.h" + +struct unkStruct_80EBA18 +{ + u32 unk0; + u32 unk4; +}; + +extern struct unkStruct_80EBA18 gUnknown_80EBA18[]; +extern s32 sub_80908D8(u32); + +u32 sub_803C190(u8 r0) +{ + return gUnknown_80EBA18[r0].unk0; +} + + +u32 sub_803C1A0(u8 r0) +{ + return gUnknown_80EBA18[r0].unk4; +} + +s32 sub_803C1B4(s32 r0, u8 r1) +{ + s32 temp; + temp = sub_80908D8(r0); + if(r1 == 2) + { + temp += 2; + } + if(temp > 0xF) + temp = 0xF; + return temp; +} diff --git a/src/code_8040094.c b/src/code_8040094.c index 97458c9..f322fa9 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -1,8 +1,27 @@ #include "global.h" #include "time.h" +#include "file_system.h" + +struct unkStruct_203B418 +{ + u8 padding[0x181FB]; + u32 unk181FC; + u32 unk18200; + u32 unk18204; + u32 unk18208; + u32 unk1820C; + u32 unk18210; + u8 padding2[3]; + u8 unk18217; +}; -extern u8 *gUnknown_203B418; extern struct PlayTimeStruct *gUnknown_203B47C; +extern struct unkStruct_203B418 *gUnknown_203B418; +extern s32 gUnknown_80F6568[]; +extern u8 gUnknown_202EE01; +extern const char gUnknown_80F6604; // "zmappat" +extern struct FileArchive gUnknown_83B0000; +extern struct OpenedFile *gUnknown_202EE04; extern void sub_803F7BC(void); extern void sub_80060EC(void); @@ -14,7 +33,7 @@ extern void sub_8011860(void); void sub_8040094(u8 r0) { - gUnknown_203B418[0x18217] = r0; + gUnknown_203B418->unk18217 = r0; sub_803F7BC(); sub_80060EC(); IncrementPlayTime(gUnknown_203B47C); @@ -24,3 +43,27 @@ void sub_8040094(u8 r0) sub_8083F58(); sub_8011860(); } + +void sub_80400D4(void) +{ + s32 temp; + temp = gUnknown_203B418->unk18200; + if(temp == 0) + return; + if(temp > 0x1E) + temp = 0x1F; + gUnknown_203B418->unk181FC = gUnknown_80F6568[temp]; + gUnknown_203B418->unk18200--; + if(gUnknown_203B418->unk18200 == 0) + gUnknown_203B418->unk18200 = gUnknown_203B418->unk18204; +} + +void sub_8040124(void) +{ + gUnknown_202EE01 = 0; +} + +void sub_8040130(void) +{ + gUnknown_202EE04 = OpenFileAndGetFileDataPtr(&gUnknown_80F6604, &gUnknown_83B0000); +} diff --git a/src/code_8048480.c b/src/code_8048480.c index aac957a..8ede564 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -1,13 +1,25 @@ #include "global.h" +struct unkDungeon_8041D5C +{ + u8 padding[0x70]; + u8 *unk70[100]; +}; + +extern u32 gUnknown_80F89F4; +extern u32 gUnknown_202DF98; +extern u32 gUnknown_80FB580; + extern void sub_807D148(u32 r0, u32 r1, u32 r2, u32 r3); extern void sub_8075FCC(void); extern void sub_8077AE4(u32 r0, u32 r1, u32 r2); extern void sub_8072008(u32 r0, u32 r1, u32 r2, u8 r3); extern void sub_8076D10(void); -extern void sub_80522F4(u32 r0, u32 r1, u32 r2); extern void sub_807232C(u32 r0, u32 r1, u32 r2); -extern u32 gUnknown_80F89F4; + +extern void sub_8045B94(u32 *r0, struct unkDungeon_8041D5C *r1, u32); +extern void sub_807A290(u32); +extern void sub_80522F4(u32 r0, struct unkDungeon_8041D5C *r1, u32); void sub_8048480(u32 r0, u32 r1) { @@ -36,7 +48,7 @@ void sub_80484BC(void) sub_8076D10(); } -void sub_80484C8(u32 r0, u32 r1) +void sub_80484C8(u32 r0, struct unkDungeon_8041D5C *r1) { sub_80522F4(r0, r1, gUnknown_80F89F4); } @@ -45,3 +57,16 @@ void sub_80484DC(u32 r0, u32 r1) { sub_807232C(r0, r1, 1); } + +void sub_80484E8(u32 r0, struct unkDungeon_8041D5C *r1) +{ + u8 *temp; + temp = r1->unk70[0]; + if(temp[0xAC] == 1) + { + sub_807A290(r0); + return; + } + sub_8045B94(&gUnknown_202DF98, r1, 0); + sub_80522F4(r0, r1, gUnknown_80FB580); +} diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c new file mode 100644 index 0000000..dd6dc7c --- /dev/null +++ b/src/code_80521D0_1.c @@ -0,0 +1,200 @@ +#include "global.h" + +extern s16 *sub_8085480(void); +extern u32 sub_8085680(u32); +extern u32 gUnknown_202E038; +extern u8* gUnknown_203B418; + +extern u32 gUnknown_8106778; +extern u32 gUnknown_81067BC; +extern u32 gUnknown_81067E0; +extern u32 gUnknown_8106834; +extern u32 gUnknown_810688C; +extern u32 gUnknown_81068D0; +extern u32 gUnknown_8106918; +extern u32 gUnknown_8106934; + +extern void sub_8086A3C(void); +extern void sub_808D8BC(u32 *r0, u32 r1); +extern void sub_8083E88(u32); +extern void sub_80854D4(void); +extern void sub_80855E4(void *); +extern void sub_8085930(u32); +extern void sub_8068FE0(u32, u32, u32); +extern void sub_8085860(s16 r0, u32 r1); + +extern void sub_803E708(u32, u32); +extern void sub_8052910(u32 *r0); +extern void sub_8086448(void); +extern void sub_8086598(void); +extern void sub_808696C(); +extern void sub_80862BC(u32); +extern void sub_8083E38(u32); +extern void sub_806CDD4(u32, u32, u32); +extern void sub_80869E4(u32, u32, u32, u32); +extern void sub_806CE68(u32, u32); +extern void sub_804539C(u32, u32, u32); +extern void sub_803E46C(u32); +extern void sub_8042B0C(u32); +extern void sub_8085918(u32, u32); + +void sub_808C9C4(void) +{ + s16 *array; + u32 temp_2; + + array = sub_8085480(); + temp_2 = sub_8085680(7); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(0x4); + sub_80855E4(sub_8086A3C); + sub_8085918(temp_2, 0); + sub_8085860(array[2], array[3] - 3); + sub_808D8BC(&gUnknown_202E038, 0x14d); +} + +void sub_808CA1C(void) +{ + u32 temp; + s32 counter; + + temp = sub_8085680(7); + sub_808696C(); + sub_803E708(0xA, 0x46); + sub_8052910(&gUnknown_8106778); + sub_803E708(0xA, 0x46); + sub_80869E4(temp, 4, 2, 4); + sub_803E708(0xA, 0x46); + sub_8052910(&gUnknown_81067BC); + sub_803E708(0xA, 0x46); + sub_8086448(); + sub_8086598(); + sub_803E708(0x20, 0x46); + sub_80862BC(temp); + sub_803E708(0x20, 0x46); + sub_80869E4(temp, 4, 2, 0); + sub_8052910(&gUnknown_81067E0); + sub_803E708(0xA, 0x46); + sub_8083E38(0x1c7); + sub_806CDD4(temp, 0xA, 0); + sub_803E708(0x14, 0x46); + sub_806CE68(temp, 0); + sub_803E708(0x4, 0x46); + sub_8083E38(0x1c7); + sub_806CDD4(temp, 0xA, 0); + sub_803E708(0x14, 0x46); + sub_8052910(&gUnknown_8106834); + sub_803E708(0xA, 0x46); + sub_806CDD4(temp, 0, 0); + for(counter = 0x17; counter >= 0; counter--) + { + sub_804539C(temp, 0, 0x80 << 1); + sub_803E46C(0x46); + } + sub_806CE68(temp, 0); + sub_803E708(0x20, 0x46); + sub_8042B0C(temp); + sub_8068FE0(temp, 0x87 << 2, 0); + gUnknown_203B418[4] = 1; + gUnknown_203B418[0x11] = 4; +} + +void sub_808CB5C(void) +{ + s16 *array; + u32 temp_2; + + array = sub_8085480(); + temp_2 = sub_8085680(7); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(0x4); + sub_8068FE0(temp_2, 0x87 << 2, 0); + sub_8085860(array[2], array[3]); + sub_808D8BC(&gUnknown_202E038, 0x14d); +} + +void nullsub_101(void) +{ +} + +void sub_808CBB0(void) +{ + s16 *array; + u32 temp_2; + + array = sub_8085480(); + temp_2 = sub_8085680(0x1F); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(4); + sub_80855E4(sub_8086A3C); + sub_8085918(temp_2, 0); + sub_8085860(array[2], array[3] - 3); + sub_808D8BC(&gUnknown_202E038, 0x82 << 1); +} + +void sub_808CC04(void) +{ + u32 temp; + s32 counter; + + temp = sub_8085680(0x1F); + sub_808696C(); + sub_803E708(0xA, 0x46); + sub_8052910(&gUnknown_810688C); + sub_803E708(0xA, 0x46); + sub_80869E4(temp, 4, 2, 4); + sub_803E708(0xA, 0x46); + sub_8052910(&gUnknown_81068D0); + sub_803E708(0xA, 0x46); + sub_8086448(); + sub_8086598(); + sub_803E708(0x20, 0x46); + sub_80862BC(temp); + sub_803E708(0x20, 0x46); + sub_80869E4(temp, 4, 2, 0); + sub_8052910(&gUnknown_8106918); + sub_803E708(0xA, 0x46); + sub_8083E38(0x1c7); + sub_806CDD4(temp, 0xA, 0); + sub_803E708(0x14, 0x46); + sub_806CE68(temp, 0); + sub_803E708(0x4, 0x46); + sub_8083E38(0x1c7); + sub_806CDD4(temp, 0xA, 0); + sub_803E708(0x14, 0x46); + sub_8052910(&gUnknown_8106934); + sub_803E708(0xA, 0x46); + sub_806CDD4(temp, 0, 0); + for(counter = 0x17; counter >= 0; counter--) + { + sub_804539C(temp, 0, 0x80 << 1); + sub_803E46C(0x46); + } + sub_806CE68(temp, 0); + sub_803E708(0x20, 0x46); + sub_8042B0C(temp); + sub_8068FE0(temp, 0x87 << 2, 0); + gUnknown_203B418[4] = 1; + gUnknown_203B418[0x11] = 4; + +} + +void sub_808CD44(void) +{ + s16 *array; + u32 temp_2; + + array = sub_8085480(); + temp_2 = sub_8085680(0x1F); + sub_8083E88(0x72); + sub_80854D4(); + sub_8085930(0x4); + sub_80855E4(sub_8086A3C); + sub_8068FE0(temp_2, 0x87 << 2, 0); + sub_8085860(array[2], array[3] - 3); + sub_808D8BC(&gUnknown_202E038, 0x82 << 1); +} + diff --git a/src/code_8094F88.c b/src/code_8094F88.c index 95854d3..54da9b2 100644 --- a/src/code_8094F88.c +++ b/src/code_8094F88.c @@ -14,8 +14,8 @@ extern u32 *gUnknown_203B488; extern u32 *gUnknown_203B48C; -extern void sub_809488C(u32, u32, u32); -extern void sub_8094924(u32, u32, u32); +extern void sub_809488C(u32 *r0, u32 *r1, u32); +extern void sub_8094924(u32 *r0, u32 *r1, u32); // Forward Declaration @@ -91,20 +91,20 @@ void DeconstructPlayTime(struct PlayTimeStruct *r0, u32 *outHours, u32 *outMinut } } -void sub_8095044(u32 r0) +void sub_8095044(u32 *r0) { - sub_809488C(r0, (u32)(gUnknown_203B47C) + 4, 0x6); - sub_809488C(r0, (u32)(gUnknown_203B47C) + 3, 0x6); - sub_809488C(r0, (u32)(gUnknown_203B47C) + 2, 0x6); - sub_809488C(r0, (u32)(gUnknown_203B47C), 0xE); + sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->frames)), 6); + sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->seconds)), 6); + sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->minutes)), 6); + sub_809488C(r0, (u32 *)(&(gUnknown_203B47C->hours)), 14); } -void sub_8095080(u32 r0) +void sub_8095080(u32 *r0) { - sub_8094924(r0, (u32)(gUnknown_203B47C) + 4, 0x6); - sub_8094924(r0, (u32)(gUnknown_203B47C) + 3, 0x6); - sub_8094924(r0, (u32)(gUnknown_203B47C) + 2, 0x6); - sub_8094924(r0, (u32)(gUnknown_203B47C), 0xE); + sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->frames)), 6); + sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->seconds)), 6); + sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->minutes)), 6); + sub_8094924(r0, (u32 *)(&(gUnknown_203B47C->hours)), 14); } void sub_80950BC(void) diff --git a/src/event_flag.c b/src/event_flag.c index 501b1af..a19d3db 100644 --- a/src/event_flag.c +++ b/src/event_flag.c @@ -1,41 +1,39 @@ #include "global.h" +#include "event_flag.h" #include "memory.h" - -struct UnkEventStruct -{ - /* 0x0 */ u32 unk0; - /* 0x4 */ s16 unk4; - /* 0x6 */ u16 unk6; - /* 0x8 */ u16 unk8; - /* 0xA */ s16 unkA; -}; - -struct UnkEventStruct2 -{ - /* 0x0 */ u32 unk0; - /* 0x4 */ u32 *unk4; - /* 0x8 */ u16 unk8; - /* 0xA */ s16 unkA; -}; +#include "friend_area.h" extern void sub_800226C(u8 r0, u8 r1, u32* r2, u8 u3); -extern void sub_800160C(struct UnkEventStruct2 *r0, u32 r1, u32 r2); +extern void sub_800160C(struct UnkEventStruct *r0, u32 r1, u32 r2); +extern u8 sub_8002658(s32); extern u8 gUnknown_2000A88; +bool8 sub_80026CC(s16 r0) +{ + return GetFriendAreaStatus(sub_8002658(r0)); +} -// TODO fix stack allocation from 0xC to 0x8 to make this match -//u8 sub_8002718(struct UnkEventStruct *r0) -//{ -// struct UnkEventStruct2 temp; -// sub_800160C(&temp, 0, 0); -// MemoryCopy8(&gUnknown_2000A88, (u8 *)r0, (0x80 << 3)); -// -// // TODO fix this comparison to make it match -// if(temp.unkA != *(temp.unk4)) -// return 0; -// return 1; -//} +void sub_80026E8(s16 r0) +{ + UnlockFriendArea(sub_8002658(r0)); +} + +bool8 sub_8002700(void *r0) +{ + MemoryCopy8(r0, &gUnknown_2000A88, 0x80 << 3); + return 1; +} + +bool8 sub_8002718(u8 *r0) +{ + struct UnkEventStruct temp; + sub_800160C(&temp, 0, 0); + MemoryCopy8(&gUnknown_2000A88, r0, 0x80 << 3); + if (temp.unk0[5] != temp.unk4[0]) + return 0; + return 1; +} void sub_8002758(u32 *r0) { diff --git a/src/fatal_system.c b/src/fatal_system.c index 2079a38..3d5bb25 100644 --- a/src/fatal_system.c +++ b/src/fatal_system.c @@ -1,8 +1,30 @@ -#include "global.h" +#include <stdarg.h> +#include <stdio.h> +#include "gba/gba.h" +#include "config.h" extern const char gNotMountText; extern void Hang(); +void FatalErrorFormatMessage(const char *text, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, text); + vsprintf(bufPrint, text, vArgv); + va_end(vArgv); +} + + +void sub_8011B88(const char *text, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, text); + vsprintf(bufPrint, text, vArgv); + va_end(vArgv); +} + void nullsub_28(void) { } @@ -25,7 +47,7 @@ const char *sub_8011BAC(void) } // Unused -void sub_8011BB4(void) +void UnusedHang(void) { Hang(); } @@ -1,19 +1,21 @@ #include "global.h" +#include "crt0.h" #include "random.h" #include "flash.h" #include "text.h" extern char ewram_start[]; -extern u8 gUnknown_202D4B8; -extern void *gUnknown_202D5F0[6]; +typedef void (*IntrCallback)(void); + +extern u8 IntrMain_Buffer[0x120]; +extern IntrCallback gUnknown_202D5F0[6]; extern u16 gUnknown_202D7FC; extern u8 gUnknown_202D7FE; extern u8 gInterruptsEnabled; extern u16 gUnknown_203B0AC; extern s16 gUnknown_203B0AE; extern u32 gIntrTable[]; -extern u32 IntrMain; extern char alt_203B038[]; @@ -226,8 +228,8 @@ void SetInterruptFlag(u16 flag) void InitIntrTable(const u32 *interrupt_table) { CpuCopy32(interrupt_table, &gIntrTable, 0x18); // 0x18 = 0x6 * 4 (0x4f00 is 32 bits) - CpuCopy32(&IntrMain, &gUnknown_202D4B8, 0x120); // 0x120 = 0x48 * 4 (0x4f00 is 32 bits) - INTR_VECTOR = &gUnknown_202D4B8; + CpuCopy32(&IntrMain, &IntrMain_Buffer, 0x120); // 0x120 = 0x48 * 4 (0x4f00 is 32 bits) + INTR_VECTOR = &IntrMain_Buffer; } u32 *sub_800B6E8(u32 r0) diff --git a/src/more_input.c b/src/more_input.c new file mode 100644 index 0000000..9ab4c97 --- /dev/null +++ b/src/more_input.c @@ -0,0 +1,132 @@ +#include "global.h" +#include "input.h" + +struct UnkInputStruct +{ + /* 0x0 */ u8 unk0; + /* 0x1 */ u8 unk1; + /* 0x2 */ u8 unk2; + /* 0x3 */ u8 unk3; + /* 0x4 */ u8 unk4; + /* 0x5 */ u32 unk5; + /* 0x9 */ u32 unk9; + /* 0xD */ u32 unkD; + /* 0x12 */ u32 unk11; + /* 0x16 */ u32 unk15; + /* 0x1A */ u32 unk19; + /* 0x1E */ u32 unk1D; + /* 0x24 */ u32 unk24; + /* 0x28 */ u8 unk28; + /* 0x29 */ u8 a_button; + /* 0x2A */ u8 b_button; + /* 0x2B */ u8 dpad_right; + /* 0x2C */ u8 dpad_left; +}; + + +extern void nullsub_34(struct UnkInputStruct *r0); +extern struct Inputs gRealInputs; +u32 sub_8012AE8(void); + +u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1) +{ + if(r0 == NULL) + { + return sub_8012AE8(); + } + if(r1 != -1) + { + nullsub_34(r0); + } + if(r0->unk1 != 0) + { + r0->unk1 = 0; + return 1; + } + if(r0->unk2 == 0) + { + return sub_8012AE8(); + } + r0->unk2 = r0->unk1; + return 2; +} + +u32 GetKeyPress(struct UnkInputStruct *r0) +{ + if(r0 != NULL) + { + if(r0->a_button != 0) + { + return 1; + } + if(r0->b_button != 0) + { + return 2; + } + if(r0->dpad_left != 0) + { + return 9; + } + if(r0->dpad_right != 0) + { + return 10; + } + } + return sub_8012AE8(); +} + +u32 sub_8012AE8(void) +{ + if ((gRealInputs.held & R_BUTTON) != 0) { + if ((gRealInputs.pressed & A_BUTTON) != 0) { + return 11; + } + if ((gRealInputs.repeated & DPAD_UP) != 0) { + return 12; + } + if ((gRealInputs.repeated & DPAD_DOWN) != 0) { + return 13; + } + if ((gRealInputs.repeated & DPAD_LEFT) != 0) { + return 14; + } + if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { + return 15; + } + if ((gRealInputs.repeated & R_BUTTON) != 0) { + return 6; + } + } + else + { + if ((gRealInputs.pressed & A_BUTTON) != 0) { + return 1; + } + if ((gRealInputs.pressed & B_BUTTON) != 0) { + return 2; + } + if ((gRealInputs.pressed & SELECT_BUTTON) != 0) { + return 3; + } + if ((gRealInputs.pressed & START_BUTTON) != 0) { + return 4; + } + if ((gRealInputs.repeated & DPAD_UP) != 0) { + return 7; + } + if ((gRealInputs.repeated & DPAD_DOWN) != 0) { + return 8; + } + if ((gRealInputs.repeated & DPAD_LEFT) != 0) { + return 9; + } + if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { + return 10; + } + if ((gRealInputs.repeated & L_BUTTON) != 0) { + return 5; + } + } + return 0; +} + diff --git a/src/music.c b/src/music.c index 1017b47..8f02775 100644 --- a/src/music.c +++ b/src/music.c @@ -1,7 +1,6 @@ #include "global.h" #include "m4a.h" - -#define NUM_BG_SONGS 128 +#include "constants/bg_music.h" extern u8 sub_80023E4(u32); extern void sub_80118C4(u16); @@ -15,8 +14,14 @@ extern void Random(); extern void sub_800BA5C(); extern void xxx_update_bg_sound_input(); -extern u16 gUnknown_202D688; -extern u16 gUnknown_202D68A; +// 0 - Only seen it initialized +// 1 - Playing +// 2 - +// 3 - Fade Out? +// 4 - Stopped +extern u16 gBGMusicPlayerState; + +extern u16 gCurrentBGSong; extern u16 gUnknown_202D690; extern u8 gUnknown_202D694; extern u32 gUnknown_203B0B8; @@ -38,23 +43,20 @@ void sub_800C93C(void) interrupt_flag = DisableInterrupts(); if(gUnknown_202D690 == 0) { - if(gUnknown_202D68A != 0x3e7) + if(gCurrentBGSong != 999) { - temp = gUnknown_202D688 - 1; + temp = gBGMusicPlayerState - 1; if(temp <= 1) { - if(gUnknown_202D688 == 2) + if(gBGMusicPlayerState == 2) { gUnknown_202D694 = gUnknown_202D690; } - else + else if(gBGMusicPlayerState == 1) { - if(gUnknown_202D688 == 1) - { - gUnknown_202D694 = 1; - } + gUnknown_202D694 = 1; } - gUnknown_202D688 = 4; + gBGMusicPlayerState = 4; } } } @@ -72,14 +74,14 @@ void sub_800C9CC(void) m4aSoundVSyncOn(); if(gUnknown_202D690 == 0) { - if(gUnknown_202D68A != 0x3e7) + if(gCurrentBGSong != 999) { - if(gUnknown_202D688 == 4) + if(gBGMusicPlayerState == 4) { - gUnknown_202D688 = 1; + gBGMusicPlayerState = 1; if(gUnknown_202D694 != 0) { - m4aSongNumStart(gUnknown_202D68A); + m4aSongNumStart(gCurrentBGSong); } else { @@ -99,6 +101,7 @@ void nullsub_179(void) { } +// Unused u8 sub_800CA38(u32 songIndex) { if(IsBGSong(songIndex)) @@ -190,6 +193,7 @@ void sub_800CB20(void) Random(); } +// Unused u32 sub_800CB50(void) { return gUnknown_203B0B8; diff --git a/src/music_pre.c b/src/music_pre.c index 4260ea1..42a8cb0 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -2,24 +2,33 @@ #include "gba/io_reg.h" #include "m4a.h" #include "bg.h" +#include "music.h" -extern void nullsub_19(void); -extern void nullsub_20(u16 songIndex); extern bool8 EnableInterrupts(void); extern bool8 DisableInterrupts(void); -extern bool8 IsBGSong(u32); +extern void SoundBiasReset(); +extern void SoundBiasSet(); +extern void SetInterruptFlag(u16); +extern void nullsub_25(); +extern void nullsub_18(); extern void sub_800C298(u16 r0); -extern u16 sub_800CAE0(u16); -extern u32 gUnknown_202D5F0[]; -extern u16 gUnknown_202D688; -extern u16 gUnknown_202D68A; +typedef void (*IntrCallback)(void); +extern IntrCallback gUnknown_202D5F0[]; + +extern u32 gUnknown_203B0A0; +extern u16 gBGMusicPlayerState; +extern u16 gCurrentBGSong; extern u16 gUnknown_202D68C; extern u16 gUnknown_202D68E; extern u16 gUnknown_202D690; extern u16 gUnknown_202D692; extern u8 gUnknown_202D694; +extern u8 gUnknown_203B099; +extern u8 gUnknown_203B09B; +extern u32 gUnknown_203B09C; +extern u8 gUnknown_203B09A; struct unkStruct_3000FD8 { @@ -40,6 +49,152 @@ extern struct BGControlStruct gUnknown_202D6A8; extern struct BGControlStruct gUnknown_202D6B0; void sub_800BF80(void); +void xxx_update_bg_sound_input(void); + +void sub_800BA5C(void) +{ + if(gUnknown_203B09A != 0) + { + gUnknown_203B09C++; + xxx_update_bg_sound_input(); + } + gUnknown_203B09A = 1; + gUnknown_203B09B = 0; + gUnknown_203B09C = 0; + nullsub_25(); + + while(REG_VCOUNT > 159){} + + gUnknown_203B099 = 1; + VBlankIntrWait(); + nullsub_18(); +} + +#ifdef NONMATCHING +void xxx_update_bg_sound_input(void) +{ + u8 store; + store = gUnknown_203B09B; + if(gUnknown_203B09B != 0){ + gUnknown_203B09C++; + } + else { + gUnknown_203B09B = 1; + gUnknown_203B09A = store; + gUnknown_203B09C = store; + UpdateBGControlRegisters(); + if(gUnknown_203B099 != 0) + UpdateSound(); + UpdateInput(); + gUnknown_203B099 = store; + gUnknown_203B0A4 = gUnknown_203B0A0; + } +} +#else +NAKED +void xxx_update_bg_sound_input(void) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tldr r1, _0800BACC\n" + "\tldrb r4, [r1]\n" + "\tcmp r4, 0\n" + "\tbeq _0800BAD4\n" + "\tldr r1, _0800BAD0\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstr r0, [r1]\n" + "\tb _0800BAFE\n" + "\t.align 2, 0\n" +"_0800BACC: .4byte gUnknown_203B09B\n" +"_0800BAD0: .4byte gUnknown_203B09C\n" +"_0800BAD4:\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0800BB04\n" + "\tstrb r4, [r0]\n" + "\tldr r0, _0800BB08\n" + "\tstr r4, [r0]\n" + "\tbl UpdateBGControlRegisters\n" + "\tldr r5, _0800BB0C\n" + "\tldrb r0, [r5]\n" + "\tcmp r0, 0\n" + "\tbeq _0800BAF0\n" + "\tbl UpdateSound\n" +"_0800BAF0:\n" + "\tbl UpdateInput\n" + "\tstrb r4, [r5]\n" + "\tldr r0, _0800BB10\n" + "\tldr r1, _0800BB14\n" + "\tldr r1, [r1]\n" + "\tstr r1, [r0]\n" +"_0800BAFE:\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0800BB04: .4byte gUnknown_203B09A\n" +"_0800BB08: .4byte gUnknown_203B09C\n" +"_0800BB0C: .4byte gUnknown_203B099\n" +"_0800BB10: .4byte gUnknown_203B0A4\n" +"_0800BB14: .4byte gUnknown_203B0A0"); +} +#endif + +void Timer3Intr(void) +{ + if(gUnknown_202D5F0[4]) + gUnknown_202D5F0[4](); + SetInterruptFlag(INTR_FLAG_TIMER3); +} + +// Unused +u32 sub_800BB34(void) +{ + return gUnknown_203B0A0; +} + +void nullsub_178(void) +{ +} + +// Unused +void sub_800BB44(void) +{ + u16 ie_store; + u16 dispcnt_store; + bool8 interrupt_flag; + + while(REG_KEYINPUT != 0x3ff){} + + interrupt_flag = DisableInterrupts(); + + while(REG_VCOUNT <= 159){} + + dispcnt_store = REG_DISPCNT; + REG_DISPCNT = 0x80; + + *(vu16 *)BG_PLTT = 0x7fff; + + ie_store = REG_IE; + REG_IE = INTR_FLAG_KEYPAD | INTR_FLAG_GAMEPAK; + + REG_KEYCNT = 0x8304; + REG_IME = 1; + + SoundBiasReset(); + asm("swi 0x3"); + SoundBiasSet(); + + REG_IME = 0; + REG_IE = ie_store; + REG_KEYCNT = 0; + REG_DISPCNT = dispcnt_store; + *(vu16 *)BG_PLTT = 0; + + if(interrupt_flag) + EnableInterrupts(); + while(REG_KEYINPUT != 0x3ff){} +} void nullsub_17(void) { @@ -104,9 +259,9 @@ void sub_800BD08(void) m4aSoundInit(); - gUnknown_202D688 = 0; - gUnknown_202D68A = 0x3e7; - gUnknown_202D68C = 0x3e7; + gBGMusicPlayerState = 0; + gCurrentBGSong = 999; + gUnknown_202D68C = 999; gUnknown_202D68E = 0x3e5; gUnknown_202D690 = 0; gUnknown_202D692 = 0; @@ -138,18 +293,18 @@ void sub_800BDDC(void) } -void sub_800BDFC(u16 songIndex) +void StartNewBGM(u16 songIndex) { bool8 interrupt_flag; u16 temp_store; if(!IsBGSong(songIndex)) return; - if(songIndex == 0x3e7) + if(songIndex == 999) return; - if(songIndex == gUnknown_202D68A) + if(songIndex == gCurrentBGSong) { - temp_store = gUnknown_202D688 - 1; + temp_store = gBGMusicPlayerState - 1; if(temp_store <= 1) return; } @@ -159,12 +314,12 @@ void sub_800BDFC(u16 songIndex) return; } interrupt_flag = DisableInterrupts(); - gUnknown_202D68A = songIndex; + gCurrentBGSong = songIndex; gUnknown_202D694 = 1; if(gUnknown_202D690 == 0) { - gUnknown_202D688 = 1; + gBGMusicPlayerState = 1; m4aSongNumStart(songIndex); } if(interrupt_flag) @@ -178,11 +333,11 @@ void FadeInNewBGM(u16 SongIndex, u16 speed) if(!IsBGSong(SongIndex)) return; - if(SongIndex == 0x3e7) + if(SongIndex == 999) return; - if(SongIndex == gUnknown_202D68A) + if(SongIndex == gCurrentBGSong) { - temp_store = gUnknown_202D688 - 1; + temp_store = gBGMusicPlayerState - 1; if((temp_store) <= 1) return; } @@ -201,12 +356,12 @@ void FadeInNewBGM(u16 SongIndex, u16 speed) } interrupt_flag = DisableInterrupts(); - gUnknown_202D68A = SongIndex; + gCurrentBGSong = SongIndex; gUnknown_202D694 = 1; if(gUnknown_202D690 == 0) { - gUnknown_202D688 = 1; + gBGMusicPlayerState = 1; m4aSongNumStart(SongIndex); m4aMPlayImmInit(&gUnknown_20008F0); m4aMPlayVolumeControl(&gUnknown_20008F0, 0xFF, 0); @@ -219,10 +374,10 @@ void FadeInNewBGM(u16 SongIndex, u16 speed) void sub_800BF48(u16 SongIndex) { - u16 preload = gUnknown_202D68A; - if(preload == 0x3e7) + u16 preload = gCurrentBGSong; + if(preload == 999) { - sub_800BDFC(SongIndex); + StartNewBGM(SongIndex); gUnknown_202D68C = preload; return; } @@ -234,13 +389,13 @@ void sub_800BF80(void) bool8 interrupt_flag = DisableInterrupts(); if(gUnknown_202D690 == 0) { - if(gUnknown_202D68A != 0x3e7) + if(gCurrentBGSong != 999) { m4aMPlayStop(&gUnknown_20008F0); } } - gUnknown_202D68A = 0x3e7; - gUnknown_202D68C = 0x3e7; + gCurrentBGSong = 999; + gUnknown_202D68C = 999; if(interrupt_flag) EnableInterrupts(); } @@ -267,30 +422,30 @@ void sub_800BFD0(u16 speed) interrupt_flag = DisableInterrupts(); if(gUnknown_202D690 == 0) { - if(gUnknown_202D68A != 0x3e7) + if(gCurrentBGSong != 999) { - if(gUnknown_202D688 == 2) + if(gBGMusicPlayerState == 2) { - gUnknown_202D688 = 3; + gBGMusicPlayerState = 3; m4aMPlayFadeOut(&gUnknown_20008F0, speed); } else { - gUnknown_202D68A = 0x3e7; + gCurrentBGSong = 999; m4aMPlayStop(&gUnknown_20008F0); } } } else { - gUnknown_202D68A = 0x3e7; + gCurrentBGSong = 999; } - gUnknown_202D68C = 0x3e7; + gUnknown_202D68C = 999; if(interrupt_flag) EnableInterrupts(); } -u16 sub_800C068(void) +u16 GetCurrentBGSong(void) { - return gUnknown_202D68A; + return gCurrentBGSong; } @@ -2,6 +2,7 @@ #include "flash.h" #include "memory.h" #include "save.h" +#include "event_flag.h" struct UnkStruct_sub_8011DAC { u8 fill000[0x4]; @@ -44,7 +45,6 @@ extern volatile struct UnkStruct_203B184 *gUnknown_203B184; extern void* MemoryAlloc(u32 a, u32 b); extern void MemoryFree(void* a); extern void SetRngState(s32 state); -extern bool8 sub_8002718(u8 *a); extern bool8 sub_800DAB0(u16, u8*, s32); extern bool8 sub_800DAB4(u16, u8*, s32); extern bool8 sub_800DAB8(void); diff --git a/src/save1.c b/src/save1.c index dd0fc45..e8f844c 100644 --- a/src/save1.c +++ b/src/save1.c @@ -11,27 +11,6 @@ struct UnkSaveStruct1 /* 0xA */ u8 unkA; }; -struct UnkStruct -{ - /* 0x0 */ u8 unk0; - /* 0x1 */ u8 unk1; - /* 0x2 */ u8 unk2; - /* 0x3 */ u8 unk3; - /* 0x4 */ u8 unk4; - /* 0x5 */ u32 unk5; - /* 0x9 */ u32 unk9; - /* 0xD */ u32 unkD; - /* 0x12 */ u32 unk11; - /* 0x16 */ u32 unk15; - /* 0x1A */ u32 unk19; - /* 0x1E */ u32 unk1D; - /* 0x24 */ u32 unk24; - /* 0x28 */ u8 unk28; - /* 0x29 */ u8 unk29; - /* 0x2A */ u8 unk2A; - /* 0x2B */ u8 unk2B; - /* 0x2C */ u8 unk2C; -}; extern void MemoryFree(void *); extern void sub_8011860(); @@ -46,8 +25,6 @@ extern void xxx_call_update_bg_vram(); extern void sub_8009908(); extern void xxx_call_update_bg_sound_input(); extern void ResetSprites(u8 r0); -extern u32 sub_8012AE8(void); -extern void nullsub_34(struct UnkStruct *r0); extern struct UnkSaveStruct1 *gUnknown_203B46C; @@ -79,52 +56,3 @@ void sub_8012A18() ResetSprites(0); } -u32 sub_8012A64(struct UnkStruct *r0, u32 r1) -{ - if(r0 == NULL) - { - return sub_8012AE8(); - } - if(r1 != -1) - { - nullsub_34(r0); - } - if(r0->unk1 != 0) - { - r0->unk1 = 0; - return 1; - } - if(r0->unk2 == 0) - { - return sub_8012AE8(); - } - r0->unk2 = r0->unk1; - return 2; -} - -// TODO match that one line -//u32 GetKeyPress(struct UnkStruct *r0) -//{ -// if(r0 == NULL) -// { -// return sub_8012AE8(); -// } -// // TODO it's not a struct access.. -// if(r0->unk29 != 0) -// { -// return 1; -// } -// if(r0->unk2A != 0) -// { -// return 2; -// } -// if(r0->unk2C != 0) -// { -// return 9; -// } -// if(r0->unk2B == 0) -// { -// return sub_8012AE8(); -// } -// return 0xA; -//} diff --git a/sym_ewram.txt b/sym_ewram.txt index 25e3605..f5dd6a1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -256,7 +256,7 @@ gDecompressBufferCurrent = .; /* 202D4B0 */ gDecompressBufferByteInInt = .; /* 202D4B4 */ . += 0x4; -gUnknown_202D4B8 = .; /* 202D4B8 */ +IntrMain_Buffer = .; /* 202D4B8 */ . += 0x120; gIntrTable = .; /* 202D5D8 */ @@ -271,10 +271,10 @@ gUnknown_202D608 = .; /* 202D608 */ gUnknown_202D648 = .; /* 202D648 */ . += 0x40; -gUnknown_202D688 = .; /* 202D688 */ +gBGMusicPlayerState = .; /* 202D688 */ . += 0x2; -gUnknown_202D68A = .; /* 202D68A */ +gCurrentBGSong = .; /* 202D68A */ . += 0x2; gUnknown_202D68C = .; /* 202D68C */ |