diff --git a/asm/code_8015080.s b/asm/code_8015080.s deleted file mode 100644 index 43e1d7e94..000000000 --- a/asm/code_8015080.s +++ /dev/null @@ -1,843 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80158BC -sub_80158BC: - push {r4-r6,lr} - ldr r6, _080158D4 - bl sub_8012AE8 - cmp r0, 0x8 - beq _08015908 - cmp r0, 0x8 - bgt _080158D8 - cmp r0, 0x7 - beq _080158E2 - b _08015980 - .align 2, 0 -_080158D4: .4byte gUnknown_2027370 -_080158D8: - cmp r0, 0x9 - beq _08015930 - cmp r0, 0xA - beq _08015958 - b _08015980 -_080158E2: - ldr r4, _08015900 - ldr r3, _08015904 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015900: .4byte gUnknown_80DB0F8 -_08015904: .4byte gUnknown_203B1FC -_08015908: - ldr r4, _08015928 - ldr r3, _0801592C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x1] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015928: .4byte gUnknown_80DB0F8 -_0801592C: .4byte gUnknown_203B1FC -_08015930: - ldr r4, _08015950 - ldr r3, _08015954 - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x2] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015950: .4byte gUnknown_80DB0F8 -_08015954: .4byte gUnknown_203B1FC -_08015958: - ldr r4, _08015978 - ldr r3, _0801597C - ldr r2, [r3] - ldrb r0, [r2, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r2, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - adds r5, r3, 0 - b _08015988 - .align 2, 0 -_08015978: .4byte gUnknown_80DB0F8 -_0801597C: .4byte gUnknown_203B1FC -_08015980: - ldr r1, _080159F8 - ldr r0, [r1] - ldrb r0, [r0, 0x1A] - adds r5, r1, 0 -_08015988: - adds r4, r5, 0 - ldr r1, [r4] - ldrb r2, [r1, 0x1A] - cmp r0, r2 - beq _080159A0 - strb r0, [r1, 0x1A] - movs r0, 0x3 - bl PlayMenuSoundEffect - ldr r1, [r4] - movs r0, 0x8 - strb r0, [r1, 0x17] -_080159A0: - ldr r3, _080159FC - ldr r4, [r5] - ldrb r0, [r4, 0x1A] - lsls r1, r0, 1 - adds r1, r0 - ldrb r2, [r4, 0x19] - lsls r0, r2, 8 - subs r0, r2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r3, 0 - ldrsh r1, [r6, r3] - lsls r1, 3 - ldrb r2, [r0, 0x4] - adds r1, r2 - subs r1, 0x5 - movs r3, 0x2 - ldrsh r2, [r6, r3] - lsls r2, 3 - ldrb r0, [r0, 0x5] - adds r2, r0 - adds r2, 0x1 - ldr r0, _08015A00 - ands r1, r0 - adds r4, 0xE - ldrh r3, [r4, 0x2] - movs r0, 0xFE - lsls r0, 8 - ands r0, r3 - orrs r0, r1 - strh r0, [r4, 0x2] - ldr r0, _08015A04 - ands r2, r0 - lsls r2, 4 - ldrh r1, [r4, 0x6] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strh r0, [r4, 0x6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080159F8: .4byte gUnknown_203B1FC -_080159FC: .4byte gUnknown_80DB0F8 -_08015A00: .4byte 0x000001ff -_08015A04: .4byte 0x00000fff - thumb_func_end sub_80158BC - - thumb_func_start sub_8015A08 -sub_8015A08: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - movs r0, 0 - bl CallPrepareTextbox_8008C54 - movs r0, 0 - bl sub_80073B8 - ldr r3, _08015A68 - ldr r2, _08015A6C - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015A70 - cmp r4, r0 - bne _08015A3E - b _08015BC0 -_08015A3E: - mov r8, r2 - adds r7, r3, 0 - add r0, sp, 0x14 - mov r10, r0 - movs r6, 0 - mov r9, r6 -_08015A4A: - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r0, r3 - ldrb r0, [r0, 0x6] - cmp r0, 0x2 - beq _08015AAA - cmp r0, 0x2 - bgt _08015A74 - cmp r0, 0x1 - beq _08015A7A - b _08015A82 - .align 2, 0 -_08015A68: .4byte gUnknown_80DB0F8 -_08015A6C: .4byte gUnknown_203B1FC -_08015A70: .4byte 0x00000109 -_08015A74: - cmp r0, 0x3 - beq _08015A7E - b _08015A82 -_08015A7A: - movs r5, 0x5 - b _08015AAC -_08015A7E: - movs r5, 0x7 - b _08015AAC -_08015A82: - movs r5, 0x7 - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015AAC - cmp r4, 0xFF - bgt _08015AA4 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_803D0F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08015AAC - b _08015AAA -_08015AA4: - ldr r0, _08015ADC - cmp r4, r0 - bgt _08015AAC -_08015AAA: - movs r5, 0x2 -_08015AAC: - movs r0, 0x84 - lsls r0, 1 - cmp r4, r0 - beq _08015B9E - subs r0, 0x1 - cmp r4, r0 - bne _08015B04 - mov r2, r8 - ldr r0, [r2] - ldrb r2, [r0, 0x18] - cmp r2, 0 - bne _08015AE4 - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - str r2, [sp] - ldr r2, _08015AE0 - b _08015B6A - .align 2, 0 -_08015ADC: .4byte 0x00000101 -_08015AE0: .4byte gUnknown_80DB598 -_08015AE4: - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r3, r9 - str r3, [sp] - ldr r2, _08015B00 - b _08015B6A - .align 2, 0 -_08015B00: .4byte gUnknown_80DB5A4 -_08015B04: - cmp r4, 0x20 - bne _08015B34 - add r0, sp, 0x4 - ldr r1, _08015B30 - adds r2, r5, 0 - bl sprintfStatic - mov r1, r8 - ldr r0, [r1] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x1 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - add r2, sp, 0x4 - b _08015B6A - .align 2, 0 -_08015B30: .4byte gUnknown_80DB5B0 -_08015B34: - cmp r4, 0xFF - ble _08015B7C - ldr r1, _08015B74 - movs r0, 0xFF - ands r4, r0 - lsls r0, r4, 2 - adds r0, r1 - ldr r3, [r0] - mov r0, r10 - ldr r1, _08015B78 - adds r2, r5, 0 - bl sprintfStatic - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - adds r0, 0x3 - ldrb r1, [r1, 0x5] - mov r2, r9 - str r2, [sp] - mov r2, r10 -_08015B6A: - movs r3, 0 - bl PrintStringOnWindow - b _08015B9E - .align 2, 0 -_08015B74: .4byte gUnknown_80DB4F4 -_08015B78: .4byte gUnknown_80DB5B8 -_08015B7C: - mov r3, r8 - ldr r0, [r3] - ldrb r0, [r0, 0x19] - lsls r1, r0, 8 - subs r1, r0 - lsls r1, 2 - adds r1, r6, r1 - adds r1, r7 - ldrb r0, [r1, 0x4] - ldrb r1, [r1, 0x5] - lsls r2, r4, 24 - lsrs r2, 24 - mov r3, r9 - str r3, [sp] - adds r3, r5, 0 - bl sub_8012C60 -_08015B9E: - adds r6, 0xC - ldr r3, _08015C10 - ldr r2, _08015C14 - ldr r0, [r2] - ldrb r1, [r0, 0x19] - lsls r0, r1, 8 - subs r0, r1 - lsls r0, 2 - adds r0, r6, r0 - adds r1, r3, 0 - adds r1, 0x8 - adds r0, r1 - ldr r4, [r0] - ldr r0, _08015C18 - cmp r4, r0 - beq _08015BC0 - b _08015A4A -_08015BC0: - movs r4, 0xE - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0x47 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - str r4, [sp] - movs r0, 0 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x48 - bl sub_8007A78 - movs r0, 0 - bl sub_80073E0 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015C10: .4byte gUnknown_80DB0F8 -_08015C14: .4byte gUnknown_203B1FC -_08015C18: .4byte 0x00000109 - thumb_func_end sub_8015A08 - - thumb_func_start sub_8015C1C -sub_8015C1C: - push {r4,r5,lr} - sub sp, 0x54 - movs r0, 0x1 - bl CallPrepareTextbox_8008C54 - movs r0, 0x1 - bl sub_80073B8 - ldr r0, _08015C74 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0 - beq _08015C78 - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x37 - movs r3, 0xE0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xDF - movs r2, 0 - movs r3, 0x38 - bl sub_8007A78 - b _08015CB2 - .align 2, 0 -_08015C74: .4byte gUnknown_203B1FC -_08015C78: - movs r4, 0xE - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x27 - movs r3, 0xB0 - bl sub_800792C - str r4, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 - str r4, [sp] - movs r0, 0x1 - movs r1, 0xAF - movs r2, 0 - movs r3, 0x28 - bl sub_8007A78 -_08015CB2: - ldr r0, _08015CC8 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x5 - bhi _08015D50 - lsls r0, 2 - ldr r1, _08015CCC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08015CC8: .4byte gUnknown_203B1FC -_08015CCC: .4byte _08015CD0 - .align 2, 0 -_08015CD0: - .4byte _08015CE8 - .4byte _08015D18 - .4byte _08015CF8 - .4byte _08015D08 - .4byte _08015D28 - .4byte _08015D40 -_08015CE8: - ldr r2, _08015CF4 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015CF4: .4byte gUnknown_80DB5C0 -_08015CF8: - ldr r2, _08015D04 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D04: .4byte gUnknown_80DB5D4 -_08015D08: - ldr r2, _08015D14 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D14: .4byte gUnknown_80DB5F8 -_08015D18: - ldr r2, _08015D24 - movs r0, 0 - str r0, [sp] - movs r0, 0x8 - movs r1, 0x5 - b _08015D32 - .align 2, 0 -_08015D24: .4byte gUnknown_80DB61C -_08015D28: - ldr r2, _08015D3C - movs r0, 0 - str r0, [sp] - movs r0, 0x36 - movs r1, 0x2 -_08015D32: - movs r3, 0x1 - bl PrintStringOnWindow - b _08015D50 - .align 2, 0 -_08015D3C: .4byte gUnknown_80DB638 -_08015D40: - ldr r2, _08015D64 - movs r0, 0 - str r0, [sp] - movs r0, 0x30 - movs r1, 0x4 - movs r3, 0x1 - bl PrintStringOnWindow -_08015D50: - ldr r5, _08015D68 - ldr r0, [r5] - ldr r1, [r0] - cmp r1, 0x4 - beq _08015D6C - cmp r1, 0x4 - bcc _08015D88 - cmp r1, 0x5 - beq _08015D7A - b _08015DFE - .align 2, 0 -_08015D64: .4byte gUnknown_80DB638 -_08015D68: .4byte gUnknown_203B1FC -_08015D6C: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015E10 - b _08015DFE -_08015D7A: - adds r0, 0xF8 - ldr r0, [r0] - movs r1, 0x1 - movs r2, 0 - bl sub_8015EB4 - b _08015DFE -_08015D88: - bl sub_8016028 - adds r3, r0, 0 - movs r0, 0x4 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x26 - movs r2, 0x21 - bl sub_80078A4 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0xF8 - ldr r0, [r0] - ldrb r1, [r1, 0x1B] - bl sub_8015FEC - adds r4, r0, 0 - bl sub_8016028 - cmp r4, r0 - ble _08015DC0 - ldr r1, _08015DBC - ldr r0, [r5] - b _08015DD0 - .align 2, 0 -_08015DBC: .4byte gUnknown_80DB654 -_08015DC0: - bl sub_8015F44 - ldr r2, [r5] - ldrb r1, [r2, 0x1B] - cmp r0, r1 - bne _08015DE0 - ldr r1, _08015DDC - adds r0, r2, 0 -_08015DD0: - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic - b _08015DEE - .align 2, 0 -_08015DDC: .4byte gUnknown_80DB65C -_08015DE0: - ldr r1, _08015E0C - adds r0, r2, 0 - adds r0, 0xF8 - ldr r2, [r0] - add r0, sp, 0x4 - bl sprintfStatic -_08015DEE: - movs r0, 0 - str r0, [sp] - movs r0, 0x26 - movs r1, 0x16 - add r2, sp, 0x4 - movs r3, 0x1 - bl PrintStringOnWindow -_08015DFE: - movs r0, 0x1 - bl sub_80073E0 - add sp, 0x54 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08015E0C: .4byte gUnknown_80DB664 - thumb_func_end sub_8015C1C - - thumb_func_start sub_8015E10 -sub_8015E10: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015EB0 - movs r4, 0x35 -_08015E24: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xB - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015E24 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015EA4 - mov r5, r8 -_08015E52: - movs r3, 0x7 - cmp r4, 0x4 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0xC - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x11 - ble _08015E7E - cmp r4, 0x16 - ble _08015E7E - movs r3, 0x6 - cmp r4, 0x1E - ble _08015E7E - movs r3, 0x7 - cmp r4, 0x23 - ble _08015E7E - cmp r4, 0x28 - ble _08015E7E - cmp r4, 0x30 - bgt _08015E7E - movs r3, 0x6 -_08015E7E: - ldr r0, _08015EB0 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x35 - bgt _08015EA4 - ldrb r0, [r5] - cmp r0, 0 - bne _08015E52 -_08015EA4: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015EB0: .4byte gUnknown_80DAFC0 - thumb_func_end sub_8015E10 - - thumb_func_start sub_8015EB4 -sub_8015EB4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r7, r1, 0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r5, _08015F40 - movs r4, 0x17 -_08015EC8: - movs r0, 0 - ldrsh r1, [r5, r0] - movs r0, 0x2 - ldrsh r2, [r5, r0] - adds r0, r6, 0 - adds r0, 0xB - adds r2, r0 - movs r0, 0x5 - str r0, [sp] - adds r0, r7, 0 - movs r3, 0xC - bl sub_80078A4 - adds r5, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08015EC8 - movs r4, 0 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0 - beq _08015F34 - mov r5, r8 -_08015EF6: - movs r3, 0x7 - cmp r4, 0x3 - ble _08015F0E - movs r3, 0x6 - cmp r4, 0x7 - ble _08015F0E - movs r3, 0x7 - cmp r4, 0xF - ble _08015F0E - cmp r4, 0x13 - bgt _08015F0E - movs r3, 0x6 -_08015F0E: - ldr r0, _08015F40 - lsls r1, r4, 2 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - adds r1, r6 - ldrb r2, [r5] - str r7, [sp] - bl sub_8012C60 - adds r5, 0x1 - adds r4, 0x1 - cmp r4, 0x17 - bgt _08015F34 - ldrb r0, [r5] - cmp r0, 0 - bne _08015EF6 -_08015F34: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08015F40: .4byte gUnknown_80DB098 - thumb_func_end sub_8015EB4 - - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index 33461a75e..0ec6b938e 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -103,7 +103,6 @@ SECTIONS { src/menu_input.o(.text); src/string_format.o(.text); src/code_8015080.o(.text); - asm/code_8015080.o(.text); src/code_8012A18_1.o(.text); src/code_801602C.o(.text); src/felicity_bank.o(.text); diff --git a/src/code_8015080.c b/src/code_8015080.c index cef6704c9..999b0e6da 100644 --- a/src/code_8015080.c +++ b/src/code_8015080.c @@ -6,6 +6,7 @@ #include "menu_input.h" #include "text.h" #include "sprite.h" +#include "code_800D090.h" #include "code_80118A4.h" #include "code_803D0D8.h" #include "text.h" @@ -128,10 +129,16 @@ extern UnkTextStruct2 gUnknown_80DB580; extern UnkTextStruct2 gUnknown_80DB538; s32 sub_8015F44(void); void sub_8015A08(u32); -void sub_8015C1C(); +void sub_8015C1C(void); void sub_8015F84(); void sub_80157D8(void); void sub_80158BC(void); +void sub_8015E10(u8 *a0, s32 a1, s32 _a2); +void sub_8015EB4(u8 *a0, s32 a1, s32 _a2); +s32 sub_8016028(void); +s32 sub_8015FEC(u8 *buffer, s32 size); +u32 sub_801560C(void); +bool8 sub_8015748(void); u32 sub_80151C0(u32 r0, u8 *buffer) { @@ -251,9 +258,6 @@ u32 sub_80151C0(u32 r0, u8 *buffer) return 1; } -u32 sub_801560C(void); -bool8 sub_8015748(void); - u32 sub_80154F0(void) { gUnknown_203B1FC->unk16++; @@ -325,6 +329,21 @@ struct Struct80DB0F8 }; extern const struct Struct80DB0F8 gUnknown_80DB0F8[][85]; +extern const DungeonPos gUnknown_80DB098[]; +extern const DungeonPos gUnknown_80DAFC0[]; +extern const u8 gUnknown_80DB598[]; +extern const u8 gUnknown_80DB5A4[]; +extern const u8 gUnknown_80DB5B0[]; +extern const u8 gUnknown_80DB5B8[]; +extern const u8 gUnknown_80DB5C0[]; +extern const u8 gUnknown_80DB5D4[]; +extern const u8 gUnknown_80DB5F8[]; +extern const u8 gUnknown_80DB61C[]; +extern const u8 gUnknown_80DB638[]; +extern const u8 gUnknown_80DB654[]; +extern const u8 gUnknown_80DB65C[]; +extern const u8 gUnknown_80DB664[]; +extern const u8 *const gUnknown_80DB4F4[]; u32 sub_801560C(void) { @@ -416,9 +435,6 @@ bool8 sub_8015748(void) return FALSE; } -extern const DungeonPos gUnknown_80DB098[]; -extern const DungeonPos gUnknown_80DAFC0[]; - void sub_80157D8(void) { UnkTextStruct1 *txtPtr = &gUnknown_2027370[1]; @@ -453,3 +469,222 @@ void sub_80157D8(void) } } +void sub_80158BC(void) +{ + s32 x, y; + UnkTextStruct1 *txtPtr = &gUnknown_2027370[0]; + u32 var; + + switch (sub_8012AE8()) { + case 7: + var = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk0; + break; + case 8: + var = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk1; + break; + case 9: + var = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk2; + break; + case 10: + var = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk3; + break; + default: + var = gUnknown_203B1FC->unk1A; + break; + } + + if (var != gUnknown_203B1FC->unk1A) { + gUnknown_203B1FC->unk1A = var; + PlayMenuSoundEffect(3); + gUnknown_203B1FC->unk17 = 8; + } + + x = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk4 + (txtPtr->unk0 * 8) - 5; + y = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][gUnknown_203B1FC->unk1A].unk5 + (txtPtr->unk2 * 8) + 1; + SpriteSetX((SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs, x); + SpriteSetY((SpriteOAM *) &gUnknown_203B1FC->sprite2Attribs, y); +} + +void sub_8015A08(u32 unused) +{ + s32 r4; + s32 i; + u8 text1[16]; + u8 text2[16]; + + CallPrepareTextbox_8008C54(0); + sub_80073B8(0); + + for (i = 0; (r4 = gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk8) != 0x109; i++) { + s32 r5; + + switch (gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk6) { + case 1: + r5 = 5; + break; + case 2: + r5 = 2; + break; + case 3: + r5 = 7; + break; + default: + r5 = 7; + if (gUnknown_203B1FC->unk4 != 0) { + if (r4 <= 0xFF) { + if (sub_803D0F0(r4) == 0xFF) { + r5 = 2; + } + } + else if (r4 < 0x102) { + r5 = 2; + } + } + break; + } + + if (r4 != 0x108) { + if (r4 == 0x107) { + if (gUnknown_203B1FC->unk18 == 0) { + PrintStringOnWindow(gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk4 + 3, gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk5, gUnknown_80DB598, 0, '\0'); + } + else { + PrintStringOnWindow(gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk4 + 3, gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk5, gUnknown_80DB5A4, 0, '\0'); + } + } + else if (r4 == 0x20) { + sprintfStatic(text1, gUnknown_80DB5B0, r5); + PrintStringOnWindow(gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk4 + 1, gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk5, text1, 0, '\0'); + } + else if (r4 > 0xFF) { + sprintfStatic(text2, gUnknown_80DB5B8, r5, gUnknown_80DB4F4[r4 & 0xFF]); + PrintStringOnWindow(gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk4 + 3, gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk5, text2, 0, '\0'); + } + else { + sub_8012C60(gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk4, gUnknown_80DB0F8[gUnknown_203B1FC->unk19][i].unk5, (u8) r4, r5, 0); + } + } + } + + sub_800792C(0, 0, 0, 0xE0, 0xE); + sub_800792C(0, 0, 0x47, 0xE0, 0xE); + sub_8007A78(0, 0, 0, 0x48, 0xE); + sub_8007A78(0, 0xDF, 0, 0x48, 0xE); + sub_80073E0(0); +} + +void sub_8015C1C(void) +{ + u8 text[80]; + + CallPrepareTextbox_8008C54(1); + sub_80073B8(1); + if (gUnknown_203B1FC->unk4 != 0) { + sub_800792C(1, 0, 0, 0xE0, 0xE); + sub_800792C(1, 0, 0x37, 0xE0, 0xE); + sub_8007A78(1, 0, 0, 0x38, 0xE); + sub_8007A78(1, 0xDF, 0, 0x38, 0xE); + } + else { + sub_800792C(1, 0, 0, 0xB0, 0xE); + sub_800792C(1, 0, 0x27, 0xB0, 0xE); + sub_8007A78(1, 0, 0, 0x28, 0xE); + sub_8007A78(1, 0xAF, 0, 0x28, 0xE); + } + + switch (gUnknown_203B1FC->unk0) { + case 0: + PrintStringOnWindow(8, 5, gUnknown_80DB5C0, 1, '\0'); + break; + case 2: + PrintStringOnWindow(8, 5, gUnknown_80DB5D4, 1, '\0'); + break; + case 3: + PrintStringOnWindow(8, 5, gUnknown_80DB5F8, 1, '\0'); + break; + case 1: + PrintStringOnWindow(8, 5, gUnknown_80DB61C, 1, '\0'); + break; + case 4: + PrintStringOnWindow(54, 2, gUnknown_80DB638, 1, '\0'); + break; + case 5: + PrintStringOnWindow(48, 4, gUnknown_80DB638, 1, '\0'); + break; + } + + switch (gUnknown_203B1FC->unk0) { + case 4: + sub_8015E10(gUnknown_203B1FC->unkF8, 1, 0); + break; + case 5: + sub_8015EB4(gUnknown_203B1FC->unkF8, 1, 0); + break; + case 0: + case 1: + case 2: + case 3: + sub_80078A4(1, 38, 33, sub_8016028(), 4); + if (sub_8015FEC(gUnknown_203B1FC->unkF8, gUnknown_203B1FC->unk1B) > sub_8016028()) { + sprintfStatic(text, gUnknown_80DB654, gUnknown_203B1FC->unkF8); + } + else if (sub_8015F44() == gUnknown_203B1FC->unk1B) { + sprintfStatic(text, gUnknown_80DB65C, gUnknown_203B1FC->unkF8); + } + else { + sprintfStatic(text, gUnknown_80DB664, gUnknown_203B1FC->unkF8); + } + PrintStringOnWindow(38, 22, text, 1, '\0'); + break; + } + + sub_80073E0(1); +} + +void sub_8015E10(u8 *a0, s32 a1, s32 _a2) +{ + s32 i; + s32 a2 = (s16) _a2; + + for (i = 0; i < 54; i++) { + sub_80078A4(a1, gUnknown_80DAFC0[i].x, gUnknown_80DAFC0[i].y + 11 + a2, 11, 5); + } + + for (i = 0; i < 54 && a0[i] != 0; i++) { + s32 arg3; + + if (i <= 4) arg3 = 7; + else if (i <= 12) arg3 = 6; + else if (i <= 17) arg3 = 7; + else if (i <= 22) arg3 = 7; + else if (i <= 30) arg3 = 6; + else if (i <= 35) arg3 = 7; + else if (i <= 40) arg3 = 7; + else if (i <= 48) arg3 = 6; + else arg3 = 7; + + sub_8012C60(gUnknown_80DAFC0[i].x, gUnknown_80DAFC0[i].y + a2, a0[i], arg3, a1); + } +} + +void sub_8015EB4(u8 *a0, s32 a1, s32 _a2) +{ + s32 i; + s32 a2 = (s16) _a2; + + for (i = 0; i < 24; i++) { + sub_80078A4(a1, gUnknown_80DB098[i].x, gUnknown_80DB098[i].y + 11 + a2, 12, 5); + } + + for (i = 0; i < 24 && a0[i] != 0; i++) { + s32 arg3; + + if (i <= 3) arg3 = 7; + else if (i <= 7) arg3 = 6; + else if (i <= 15) arg3 = 7; + else if (i <= 19) arg3 = 6; + else arg3 = 7; + + sub_8012C60(gUnknown_80DB098[i].x, gUnknown_80DB098[i].y + a2, a0[i], arg3, a1); + } +}