diff --git a/asm/code_809447C.s b/asm/code_809447C.s deleted file mode 100644 index 3d03a7a5d..000000000 --- a/asm/code_809447C.s +++ /dev/null @@ -1,335 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8094558 -sub_8094558: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xCC - adds r7, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - bl sub_80073B8 - movs r5, 0 - str r5, [sp] - movs r0, 0x10 - movs r1, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - ldr r4, _080945D0 - adds r1, r6, 0 - adds r1, 0x18 - adds r0, r4, 0 - bl PrintYellowDungeonNametoBuffer - ldr r0, _080945D4 - ldr r2, [r0] - str r5, [sp] - movs r0, 0x4 - movs r1, 0x10 - adds r3, r7, 0 - bl xxx_format_and_draw - movs r5, 0x1A - adds r0, r4, 0 - adds r1, r6, 0 - movs r2, 0xA - bl sub_80922B4 - adds r4, 0x50 - adds r1, r6, 0 - adds r1, 0xA - adds r0, r4, 0 - movs r2, 0xA - bl sub_80922B4 - movs r1, 0x14 - ldrsh r0, [r6, r1] - bl sub_8094528 - lsls r0, 24 - cmp r0, 0 - beq _080945DC - ldr r0, _080945D8 - ldr r0, [r0] - add r2, sp, 0xCC - add r1, sp, 0x4 - movs r3, 0 - bl xxx_format_string - b _080945EA - .align 2, 0 -_080945D0: .4byte gAvailablePokemonNames -_080945D4: .4byte gUnknown_8113850 -_080945D8: .4byte gUnknown_8113868 -_080945DC: - ldr r0, _0809465C - ldr r0, [r0] - add r2, sp, 0xCC - add r1, sp, 0x4 - movs r3, 0 - bl xxx_format_string -_080945EA: - add r0, sp, 0x4 - bl sub_8008ED0 - movs r4, 0xB0 - subs r0, r4, r0 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - movs r1, 0 - mov r8, r1 - str r1, [sp] - adds r1, r5, 0 - add r2, sp, 0x4 - adds r3, r7, 0 - bl xxx_format_and_draw - adds r5, 0xA - movs r1, 0x14 - ldrsh r0, [r6, r1] - add r1, sp, 0x4 - bl sub_80944BC - add r0, sp, 0x4 - bl sub_8008ED0 - subs r4, r0 - lsrs r0, r4, 31 - adds r4, r0 - asrs r0, r4, 1 - mov r1, r8 - str r1, [sp] - adds r1, r5, 0 - add r2, sp, 0x4 - adds r3, r7, 0 - bl xxx_format_and_draw - adds r5, 0x10 - ldr r1, _08094660 - ldr r0, [r6, 0x20] - str r0, [r1] - adds r0, r6, 0 - adds r0, 0x2A - ldrb r0, [r0] - str r0, [r1, 0x4] - cmp r0, 0x63 - ble _08094668 - ldr r0, _08094664 - ldr r2, [r0] - mov r0, r8 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - b _0809467A - .align 2, 0 -_0809465C: .4byte gUnknown_8113870 -_08094660: .4byte gUnknown_202DE30 -_08094664: .4byte gUnknown_81138C0 -_08094668: - ldr r0, _080946CC - ldr r2, [r0] - mov r1, r8 - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw -_0809467A: - adds r5, 0xA - ldr r4, _080946D0 - movs r1, 0x24 - ldrsh r0, [r6, r1] - str r0, [r4] - ldr r0, _080946D4 - ldr r2, [r0] - movs r0, 0 - mov r8, r0 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - adds r5, 0xA - adds r0, r6, 0 - adds r0, 0x26 - ldrb r2, [r0] - str r2, [r4] - adds r0, 0x2 - ldrb r0, [r0] - str r0, [r4, 0x4] - adds r0, r6, 0 - adds r0, 0x2B - ldrb r1, [r0] - cmp r1, 0 - beq _080946DC - adds r0, r1, 0 - adds r0, r2, r0 - str r0, [r4] - ldr r0, _080946D8 - ldr r2, [r0] - mov r1, r8 - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - b _080946EC - .align 2, 0 -_080946CC: .4byte gUnknown_8113898 -_080946D0: .4byte gUnknown_202DE30 -_080946D4: .4byte gUnknown_81138D0 -_080946D8: .4byte gUnknown_8113950 -_080946DC: - ldr r0, _08094714 - ldr r2, [r0] - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw -_080946EC: - adds r0, r6, 0 - adds r0, 0x2D - ldrb r1, [r0] - cmp r1, 0 - beq _08094720 - ldr r2, _08094718 - ldr r0, [r2, 0x4] - adds r0, r1 - str r0, [r2, 0x4] - ldr r0, _0809471C - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - b _08094730 - .align 2, 0 -_08094714: .4byte gUnknown_81138E4 -_08094718: .4byte gUnknown_202DE30 -_0809471C: .4byte gUnknown_8113974 -_08094720: - ldr r0, _08094768 - ldr r2, [r0] - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw -_08094730: - adds r5, 0xA - ldr r2, _0809476C - adds r0, r6, 0 - adds r0, 0x27 - ldrb r3, [r0] - str r3, [r2] - adds r0, 0x2 - ldrb r0, [r0] - str r0, [r2, 0x4] - adds r0, r6, 0 - adds r0, 0x2C - ldrb r1, [r0] - cmp r1, 0 - beq _08094774 - adds r0, r1, 0 - adds r0, r3, r0 - str r0, [r2] - ldr r0, _08094770 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - b _08094784 - .align 2, 0 -_08094768: .4byte gUnknown_8113900 -_0809476C: .4byte gUnknown_202DE30 -_08094770: .4byte gUnknown_8113990 -_08094774: - ldr r0, _080947AC - ldr r2, [r0] - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw -_08094784: - adds r0, r6, 0 - adds r0, 0x2E - ldrb r1, [r0] - cmp r1, 0 - beq _080947B8 - ldr r2, _080947B0 - ldr r0, [r2, 0x4] - adds r0, r1 - str r0, [r2, 0x4] - ldr r0, _080947B4 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - b _080947C8 - .align 2, 0 -_080947AC: .4byte gUnknown_8113918 -_080947B0: .4byte gUnknown_202DE30 -_080947B4: .4byte gUnknown_81139B4 -_080947B8: - ldr r0, _080947E4 - ldr r2, [r0] - str r1, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw -_080947C8: - adds r5, 0x10 - adds r2, r6, 0 - adds r2, 0x1C - ldrb r1, [r6, 0x1C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080947EC - ldr r0, _080947E8 - adds r1, r2, 0 - movs r2, 0 - bl sub_8090E14 - b _080947F6 - .align 2, 0 -_080947E4: .4byte gUnknown_8113934 -_080947E8: .4byte gUnknown_202DE58 -_080947EC: - ldr r0, _0809481C - ldr r1, _08094820 - ldr r1, [r1] - bl strcpy -_080947F6: - ldr r0, _08094824 - ldr r2, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x4 - adds r1, r5, 0 - adds r3, r7, 0 - bl xxx_format_and_draw - adds r0, r7, 0 - bl sub_80073E0 - add sp, 0xCC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809481C: .4byte gUnknown_202DE58 -_08094820: .4byte gUnknown_81139B8 -_08094824: .4byte gUnknown_81139CC - thumb_func_end sub_8094558 - - .align 2,0 diff --git a/asm/other_menus.s b/asm/other_menus.s index 1bd67d082..2e4350635 100644 --- a/asm/other_menus.s +++ b/asm/other_menus.s @@ -5,505 +5,6 @@ .text - thumb_func_start sub_8037400 -sub_8037400: - push {r4-r6,lr} - movs r6, 0 - movs r5, 0 - bl sub_8037810 - bl sub_8011830 - ldr r4, _08037434 - ldr r0, [r4] - ldr r0, [r0] - bl sub_8037B28 - ldr r4, [r4] - str r0, [r4, 0x4] - cmp r0, 0 - beq _08037422 - b _080376BE -_08037422: - ldr r0, [r4] - cmp r0, 0xA - bls _0803742A - b _080375E8 -_0803742A: - lsls r0, 2 - ldr r1, _08037438 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08037434: .4byte gUnknown_203B35C -_08037438: .4byte _0803743C - .align 2, 0 -_0803743C: - .4byte _08037494 - .4byte _080374B8 - .4byte _08037534 - .4byte _0803751C - .4byte _0803756C - .4byte _080375D8 - .4byte _080374E4 - .4byte _080374D0 - .4byte _080375E8 - .4byte _08037480 - .4byte _08037468 -_08037468: - ldr r0, _0803747C - ldr r0, [r0] - movs r1, 0xE7 - lsls r1, 2 - adds r6, r0, r1 - movs r2, 0x8A - lsls r2, 3 - adds r5, r0, r2 - b _080375E8 - .align 2, 0 -_0803747C: .4byte gUnknown_203B35C -_08037480: - ldr r0, _08037490 - ldr r0, [r0] - movs r3, 0xE7 - lsls r3, 2 - adds r6, r0, r3 - movs r4, 0x8A - lsls r4, 3 - b _080375E6 - .align 2, 0 -_08037490: .4byte gUnknown_203B35C -_08037494: - bl sub_8035D94 - ldr r1, _080374B4 - ldr r3, [r1] - movs r5, 0xDE - lsls r5, 1 - adds r2, r3, r5 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - adds r6, r2, 0 - movs r0, 0xE2 - lsls r0, 1 - adds r5, r3, r0 - b _080375E8 - .align 2, 0 -_080374B4: .4byte gUnknown_203B35C -_080374B8: - ldr r0, _080374CC - ldr r0, [r0] - movs r1, 0xDE - lsls r1, 1 - adds r6, r0, r1 - movs r2, 0xE2 - lsls r2, 1 - adds r5, r0, r2 - b _080375E8 - .align 2, 0 -_080374CC: .4byte gUnknown_203B35C -_080374D0: - ldr r0, _080374E0 - ldr r0, [r0] - movs r3, 0xE6 - lsls r3, 1 - adds r6, r0, r3 - movs r4, 0xFE - lsls r4, 1 - b _080375E6 - .align 2, 0 -_080374E0: .4byte gUnknown_203B35C -_080374E4: - bl sub_8035D74 - lsls r0, 24 - lsrs r0, 24 - bl GetMailatIndex - ldr r3, _08037518 - ldr r1, [r3] - movs r2, 0xE6 - lsls r2, 1 - adds r1, r2 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r3] - adds r6, r0, r2 - movs r1, 0xFE - lsls r1, 1 - adds r5, r0, r1 - b _080375E8 - .align 2, 0 -_08037518: .4byte gUnknown_203B35C -_0803751C: - ldr r0, _08037530 - ldr r0, [r0] - movs r2, 0x8B - lsls r2, 2 - adds r6, r0, r2 - movs r3, 0x97 - lsls r3, 2 - adds r5, r0, r3 - b _080375E8 - .align 2, 0 -_08037530: .4byte gUnknown_203B35C -_08037534: - bl sub_8035D74 - lsls r0, 24 - lsrs r0, 24 - bl GetMailatIndex - ldr r3, _08037568 - ldr r1, [r3] - movs r2, 0x8B - lsls r2, 2 - adds r1, r2 - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldm r0!, {r4-r6} - stm r1!, {r4-r6} - ldr r0, [r3] - adds r6, r0, r2 - movs r1, 0x97 - lsls r1, 2 - adds r5, r0, r1 - b _080375E8 - .align 2, 0 -_08037568: .4byte gUnknown_203B35C -_0803756C: - bl sub_8035D74 - lsls r0, 24 - lsrs r0, 24 - bl GetMailatIndex - ldr r4, _080375CC - ldr r1, [r4] - movs r5, 0xA3 - lsls r5, 2 - adds r1, r5 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - bl sub_8035D3C - lsls r0, 16 - ldr r1, _080375D0 - cmp r0, r1 - beq _080375BE - bl sub_8035D3C - ldr r3, [r4] - movs r1, 0xAF - lsls r1, 2 - adds r3, r1 - ldr r1, _080375D4 - ldr r1, [r1] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x58 - muls r0, r2 - adds r1, r0 - adds r0, r3, 0 - bl memcpy -_080375BE: - ldr r0, [r4] - adds r6, r0, r5 - movs r2, 0xC5 - lsls r2, 2 - adds r5, r0, r2 - b _080375E8 - .align 2, 0 -_080375CC: .4byte gUnknown_203B35C -_080375D0: .4byte 0xffff0000 -_080375D4: .4byte gRecruitedPokemonRef -_080375D8: - ldr r0, _08037610 - ldr r0, [r0] - movs r3, 0xA3 - lsls r3, 2 - adds r6, r0, r3 - movs r4, 0xC5 - lsls r4, 2 -_080375E6: - adds r5, r0, r4 -_080375E8: - ldr r4, _08037610 - ldr r0, [r4] - ldr r0, [r0] - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_8037D64 - ldr r1, [r4] - str r0, [r1, 0x4] - cmp r0, 0 - bne _080376BE - ldr r0, [r1] - cmp r0, 0xA - bhi _080376AE - lsls r0, 2 - ldr r1, _08037614 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08037610: .4byte gUnknown_203B35C -_08037614: .4byte _08037618 - .align 2, 0 -_08037618: - .4byte _08037644 - .4byte _08037644 - .4byte _08037658 - .4byte _08037658 - .4byte _0803766C - .4byte _0803766C - .4byte _08037684 - .4byte _08037684 - .4byte _080376AE - .4byte _0803769C - .4byte _0803769C -_08037644: - ldr r0, _08037654 - ldr r2, [r0] - movs r5, 0xDE - lsls r5, 1 - adds r6, r2, r5 - movs r1, 0xE2 - lsls r1, 1 - b _0803767A - .align 2, 0 -_08037654: .4byte gUnknown_203B35C -_08037658: - ldr r0, _08037668 - ldr r2, [r0] - movs r3, 0x8B - lsls r3, 2 - adds r6, r2, r3 - movs r4, 0x97 - lsls r4, 2 - b _08037692 - .align 2, 0 -_08037668: .4byte gUnknown_203B35C -_0803766C: - ldr r0, _08037680 - ldr r2, [r0] - movs r5, 0xA3 - lsls r5, 2 - adds r6, r2, r5 - movs r1, 0xC5 - lsls r1, 2 -_0803767A: - adds r5, r2, r1 - adds r4, r0, 0 - b _080376AE - .align 2, 0 -_08037680: .4byte gUnknown_203B35C -_08037684: - ldr r0, _08037698 - ldr r2, [r0] - movs r3, 0xE6 - lsls r3, 1 - adds r6, r2, r3 - movs r4, 0xFE - lsls r4, 1 -_08037692: - adds r5, r2, r4 - adds r4, r0, 0 - b _080376AE - .align 2, 0 -_08037698: .4byte gUnknown_203B35C -_0803769C: - ldr r1, _080376C8 - ldr r0, [r1] - movs r5, 0xE7 - lsls r5, 2 - adds r6, r0, r5 - movs r2, 0x8A - lsls r2, 3 - adds r5, r0, r2 - adds r4, r1, 0 -_080376AE: - ldr r0, [r4] - ldr r0, [r0] - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_80381F4 - ldr r1, [r4] - str r0, [r1, 0x4] -_080376BE: - bl xxx_call_start_bg_music - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080376C8: .4byte gUnknown_203B35C - thumb_func_end sub_8037400 - - thumb_func_start sub_80376CC -sub_80376CC: - push {r4,lr} - ldr r0, _08037728 - ldr r3, [r0] - ldrh r1, [r3, 0xC] - ldr r0, _0803772C - ands r0, r1 - ldr r1, _08037730 - ands r0, r1 - ldr r4, _08037734 - ands r0, r4 - ldr r1, _08037738 - ands r0, r1 - ldr r1, _0803773C - ands r0, r1 - movs r2, 0x80 - lsls r2, 7 - ldr r1, _08037740 - ands r0, r1 - orrs r0, r2 - strh r0, [r3, 0xC] - movs r2, 0xFC - lsls r2, 2 - ldrh r1, [r3, 0x10] - movs r0, 0xFC - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - ands r0, r4 - movs r2, 0xF - movs r4, 0xF0 - lsls r4, 8 - ldr r1, _08037744 - ands r0, r1 - orrs r0, r4 - strh r0, [r3, 0x10] - movs r0, 0 - strh r0, [r3, 0xE] - movs r1, 0xC0 - lsls r1, 4 - ldrh r0, [r3, 0x12] - ands r2, r0 - orrs r2, r1 - strh r2, [r3, 0x12] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08037728: .4byte gUnknown_203B35C -_0803772C: .4byte 0x0000feff -_08037730: .4byte 0x0000fdff -_08037734: .4byte 0x0000f3ff -_08037738: .4byte 0x0000efff -_0803773C: .4byte 0x0000dfff -_08037740: .4byte 0x00003fff -_08037744: .4byte 0x00000fff - thumb_func_end sub_80376CC - - thumb_func_start sub_8037748 -sub_8037748: - push {r4,lr} - ldr r4, _08037794 - ldr r3, [r4] - ldrh r1, [r3, 0xE] - movs r0, 0xFE - lsls r0, 8 - ands r0, r1 - movs r1, 0x70 - orrs r0, r1 - strh r0, [r3, 0xE] - movs r2, 0xD0 - lsls r2, 3 - ldrh r1, [r3, 0x12] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strh r0, [r3, 0x12] - ldr r0, [r3, 0x14] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08037782 - adds r0, r3, 0 - adds r0, 0xC - adds r1, 0xF8 - movs r2, 0 - movs r3, 0 - bl AddSprite -_08037782: - bl xxx_draw_string_80144C4 - ldr r1, [r4] - ldr r0, [r1, 0x14] - adds r0, 0x1 - str r0, [r1, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08037794: .4byte gUnknown_203B35C - thumb_func_end sub_8037748 - - thumb_func_start sub_8037798 -sub_8037798: - push {lr} - ldr r2, _080377B4 - ldr r1, _080377B8 - ldr r0, [r1] - ldr r0, [r0] - adds r3, r1, 0 - cmp r0, 0xA - bhi _0803780A - lsls r0, 2 - ldr r1, _080377BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080377B4: .4byte 0x0000ffdc -_080377B8: .4byte gUnknown_203B35C -_080377BC: .4byte _080377C0 - .align 2, 0 -_080377C0: - .4byte _080377EC - .4byte _080377EC - .4byte _080377F0 - .4byte _080377F0 - .4byte _080377F0 - .4byte _080377F0 - .4byte _080377F0 - .4byte _080377F0 - .4byte _0803780A - .4byte _080377FE - .4byte _080377FE -_080377EC: - movs r2, 0x1 - b _0803780A -_080377F0: - ldr r0, [r3] - ldr r0, [r0, 0x4] - movs r2, 0x1 - cmp r0, 0 - bne _0803780A - movs r2, 0x2A - b _0803780A -_080377FE: - ldr r0, [r3] - ldr r0, [r0, 0x4] - movs r2, 0xD - cmp r0, 0 - bne _0803780A - movs r2, 0x2B -_0803780A: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_8037798 - thumb_func_start sub_8037810 sub_8037810: push {r4-r6,lr} diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index 34096917b..27823b476 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -34,8 +34,8 @@ struct unkDungeonGlobal_unk1CE98_sub { /* 0x0 */ u8 buffer1[10]; /* 0xA */ u8 buffer2[10]; - s16 unk14; - u8 fill16[0x18 - 0x16]; + /* 0x14 */ s16 moveID; + /* 0x16 */ u8 fill16[0x2]; /* 0x18 */ struct DungeonLocation dungeonLocation; /* 0x1C */ struct Item heldItem; /* 0x20 */ u32 exp; diff --git a/ld_script.txt b/ld_script.txt index 3a93386a8..700f231d3 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -284,7 +284,6 @@ SECTIONS { asm/code_8094148.o(.text); src/number_util.o(.text); src/code_809447C.o(.text); - asm/code_809447C.o(.text); src/code_8092334.o(.text); src/game_options.o(.text); asm/code_8094D28.o(.text); diff --git a/src/code_809447C.c b/src/code_809447C.c index 1281f2cd5..ef86245ee 100644 --- a/src/code_809447C.c +++ b/src/code_809447C.c @@ -3,20 +3,46 @@ #include "code_809447C.h" #include "item.h" #include "moves.h" +#include "dungeon_global_data.h" struct unkStruct_8113080 { u8 unk0; - u8 *unk4; // some string + u8 *text; }; extern u8 gUnknown_202DE58[]; extern u8 gAvailablePokemonNames[]; +extern s32 gUnknown_202DE30[2]; + extern u8 *gUnknown_811383C[]; +extern u8 *gUnknown_8113850[]; +extern u8 *gUnknown_8113868[]; +extern u8 *gUnknown_8113898[]; +extern u8 *gUnknown_81138C0[]; +extern u8 *gUnknown_81138D0[]; +extern u8 *gUnknown_81138E4[]; +extern u8 *gUnknown_8113950[]; +extern u8 *gUnknown_8113900[]; +extern u8 *gUnknown_8113974[]; +extern u8 *gUnknown_8113918[]; +extern u8 *gUnknown_8113990[]; +extern u8 *gUnknown_8113934[]; +extern u8 *gUnknown_81139B4[]; +extern u8 *gUnknown_81139B8[]; +extern u8 *gUnknown_81139CC[]; +extern u8 *gUnknown_8113870[]; + extern struct unkStruct_8113080 gUnknown_8113080[]; void sub_80928C0(u8 *buffer, struct Move *move, struct unkStruct_80928C0 *param_3); extern void xxx_format_string(const char *, u8 *, void *, u32); +void PrintYellowDungeonNametoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation); +extern void sub_80073B8(u32); +extern void xxx_format_and_draw(s32, s32, const u8 *, ...); +extern s32 sub_8008ED0(u8 *); +void sub_80922B4(u8 *buffer, u8 *string, s32 size); +extern void sub_80073E0(u32); void sub_809447C(struct unkStruct_8094924 *r0, u8 *r1) { @@ -30,24 +56,24 @@ void sub_809449C(struct unkStruct_8094924 *r0, u8 *r1) SaveIntegerBits(r0, r1 + 2, 0x10); } -void sub_80944BC(s16 moveID, u8 *arg2) +static void sub_80944BC(s16 moveID, u8 *buffer) { u16 moveID_u16; s32 moveID_s32 = moveID; - struct Move stack; + struct Move move; if (moveID_s32 < 0x1F4) { // Needed this cast/variable to match moveID_u16 = moveID_s32; - sub_8092AA8(&stack, moveID_u16); - sub_80928C0(gUnknown_202DE58, &stack, NULL); - xxx_format_string(*gUnknown_811383C, arg2, arg2 + 200, 0); + sub_8092AA8(&move, moveID_u16); + sub_80928C0(gUnknown_202DE58, &move, NULL); + xxx_format_string(*gUnknown_811383C, buffer, buffer + 200, 0); // $m0's $i0 } else { - strncpy(arg2, gUnknown_8113080[moveID - 0x1F4].unk4, 200); + strncpy(buffer, gUnknown_8113080[moveID - 0x1F4].text, 200); } } -u8 sub_8094528(s16 moveID) +static u8 sub_8094528(s16 moveID) { if(moveID < 0x1F4) { @@ -59,3 +85,95 @@ u8 sub_8094528(s16 moveID) } } +void sub_8094558(u32 param_1,u8 *param_2,struct unkDungeonGlobal_unk1CE98_sub *param_3) +{ + int iVar2; + u8 buffer [200]; + s32 y; + struct Item *item; + s32 var; + + sub_80073B8(param_1); + xxx_format_and_draw(0x10,0,param_2,param_1,0); + PrintYellowDungeonNametoBuffer(gAvailablePokemonNames, ¶m_3->dungeonLocation); + xxx_format_and_draw(4,0x10,*gUnknown_8113850,param_1,0); // #+Place: $m0 + y = 0x1A; + sub_80922B4(gAvailablePokemonNames, param_3->buffer1, POKEMON_NAME_LENGTH); + sub_80922B4(gAvailablePokemonNames + 0x50, param_3->buffer2, POKEMON_NAME_LENGTH); + if (sub_8094528(param_3->moveID) != 0) { + // $m1 was defeated by + xxx_format_string(*gUnknown_8113868,buffer,(u32 **)&buffer + 50,0); // TODO: fix this hack + } + else { + // $m1 + xxx_format_string(*gUnknown_8113870,buffer,(u32 **)&buffer + 50,0); // TODO: fix this hack + } + iVar2 = sub_8008ED0(buffer); + xxx_format_and_draw(((0xb0 - iVar2) / 2),y,buffer,param_1,0); + y += 0xA; + sub_80944BC(param_3->moveID, buffer); +#ifndef NONMATCHING + var = 0xb0 - sub_8008ED0(buffer); + var += (var < 0); + xxx_format_and_draw(var >> 1,y,buffer,param_1,0); + asm(""::"r"(var)); +#else + xxx_format_and_draw((0xb0 - sub_8008ED0(buffer) / 2),y,buffer,param_1,0); +#endif + y += 0x10; + gUnknown_202DE30[0] = param_3->exp; + gUnknown_202DE30[1] = param_3->level; + if (gUnknown_202DE30[1] >= 100) { + xxx_format_and_draw(4,y,*gUnknown_81138C0,param_1,0); + } + else { + xxx_format_and_draw(4,y,*gUnknown_8113898,param_1,0); + } + y += 0xA; + gUnknown_202DE30[0] = param_3->maxHPStat; + xxx_format_and_draw(4,y,*gUnknown_81138D0,param_1,0); + y += 0xA; + gUnknown_202DE30[0] = param_3->atk; + gUnknown_202DE30[1] = param_3->def; + if (param_3->attBoost) { + gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->attBoost; + xxx_format_and_draw(4,y,*gUnknown_8113950,param_1,0); + } + else { + xxx_format_and_draw(4,y,*gUnknown_81138E4,param_1,0); + } + if (param_3->defBoost) { + gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->defBoost; + xxx_format_and_draw(4,y,*gUnknown_8113974,param_1,0); + } + else { + xxx_format_and_draw(4,y,*gUnknown_8113900,param_1,0); + } + y += 0xA; + gUnknown_202DE30[0] = param_3->spAtk; + gUnknown_202DE30[1] = param_3->spDef; + if (param_3->spAttBoost) { + gUnknown_202DE30[0] = gUnknown_202DE30[0] + param_3->spAttBoost; + xxx_format_and_draw(4,y,*gUnknown_8113990,param_1,0); + } + else { + xxx_format_and_draw(4,y,*gUnknown_8113918,param_1,0); + } + if (param_3->spDefBoost) { + gUnknown_202DE30[1] = gUnknown_202DE30[1] + param_3->spDefBoost; + xxx_format_and_draw(4,y,*gUnknown_81139B4,param_1,0); + } + else { + xxx_format_and_draw(4,y,*gUnknown_8113934,param_1,0); + } + y += 0x10; + item = &(param_3->heldItem); + if ((param_3->heldItem.flags & ITEM_FLAG_EXISTS)) { + sub_8090E14(gUnknown_202DE58,item,0); + } + else { + strcpy(gUnknown_202DE58,*gUnknown_81139B8); + } + xxx_format_and_draw(4,y,*gUnknown_81139CC,param_1,0); + sub_80073E0(param_1); +} diff --git a/src/dungeon_music.c b/src/dungeon_music.c index 6ddb74f58..da2ea13bd 100644 --- a/src/dungeon_music.c +++ b/src/dungeon_music.c @@ -61,7 +61,7 @@ void sub_8083AB0(s16 param_0, struct Entity * target, struct Entity * entity) } sub_80709C8(buffer,entityInfo); CopyStringtoBuffer(temp->buffer2, buffer); - temp->unk14 = param_0_s32; + temp->moveID = param_0_s32; temp->heldItem = entityInfo->heldItem; temp->exp = entityInfo->exp; temp->level = entityInfo->level; @@ -108,7 +108,7 @@ bool8 sub_8083C24(void) temp = &gDungeon->unk1CE98; - if (temp->unk14 < 0x226) { + if (temp->moveID < 0x226) { return TRUE; } else { @@ -122,7 +122,7 @@ bool8 sub_8083C50(void) temp = &gDungeon->unk1CE98; - if ((temp->unk14 == 0x227) || (temp->unk14 == 0x22A) || (temp->unk14 == 0x228)) { + if ((temp->moveID == 0x227) || (temp->moveID == 0x22A) || (temp->moveID == 0x228)) { return TRUE; } else { @@ -138,7 +138,7 @@ bool8 sub_8083C88(u8 param_1) if ((!HasCheckpoint(gDungeon->dungeonLocation.id) && ((gDungeon->unk65C != 0) || (param_1 != 0))) || - (temp->unk14 != 0x227)) { + (temp->moveID != 0x227)) { return TRUE; } else { diff --git a/src/other_menus.c b/src/other_menus.c index 79c5c9892..336daae3f 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -8,6 +8,18 @@ #include "memory.h" #include "text.h" #include "menu_input.h" +#include "dungeon_global_data.h" +#include "pokemon.h" +#include "code_8094F88.h" + +struct unkSprite +{ + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; +}; + struct unkStruct_203B35C { @@ -15,11 +27,23 @@ struct unkStruct_203B35C u32 unk0; u32 linkStatus; u32 state; - u8 fillC[0x1C - 0xC]; + struct unkSprite unkC; + u32 unk14; + u8 fill18[0x1C - 0x18]; struct MenuStruct unk1C[4]; struct UnkTextStruct2 unk15C[4]; - u8 unk1BC[4]; - u32 unk1C0[9]; + struct unkStruct_8035D94 unk1BC[2]; + struct unkStruct_203B480 unk1CC; + struct unkStruct_203B480 unk1FC; + struct unkStruct_203B480 unk22C; + struct unkStruct_203B480 unk25C; + struct unkStruct_203B480 unk28C; + struct PokemonStruct unk2BC; + struct unkStruct_203B480 unk314; + struct PokemonStruct unk344; + s32 unk39C; + u8 fill3A0[0x450 - 0x3A0]; + s32 unk450; }; extern struct unkStruct_203B35C *gUnknown_203B35C; @@ -440,13 +464,21 @@ extern void TransferBGPaletteBuffer(); extern void xxx_call_update_bg_vram(); extern void sub_8009908(); extern void xxx_call_update_bg_sound_input(); +extern s32 sub_8037D64(u32, void *, void *); +extern s32 sub_80381F4(u32, void *, void *); +extern void sub_8037810(void); +extern void sub_8011830(void); +extern s32 sub_8037B28(u32); +s32 sub_8035D3C(void); +extern s32 sub_8035D74(void); +extern void xxx_call_start_bg_music(void); +extern void xxx_draw_string_80144C4(void); +extern void AddSprite(struct unkSprite *, u32, u32, u32); - -#ifdef NONMATCHING void sub_8036FDC(s32 param_1) { - int iVar3; - int iVar4; + int index1; + int index2; ResetUnusedInputStruct(); sub_800641C(0,1,1); @@ -457,143 +489,22 @@ void sub_8036FDC(s32 param_1) } gUnknown_203B35C->unk0 = param_1; - gUnknown_203B35C->linkStatus = 0; + gUnknown_203B35C->linkStatus = COMMS_GOOD; gUnknown_203B35C->state = 0; - iVar3 = 0; - do { - gUnknown_203B35C->unk1C0[iVar3 * 2] = 0; - // Add statements of index flip but ends in same result - gUnknown_203B35C->unk1BC[iVar3 * 8] = 0; - iVar3 = iVar3 + 1; - } while (iVar3 < 2); - for(iVar4 = 0; iVar4 < 4; iVar4++){ - gUnknown_203B35C->unk15C[iVar4] = gUnknown_80E653C; + for(index1 = 0; index1 < 2; index1++) + { + gUnknown_203B35C->unk1BC[index1].numItems = 0; + gUnknown_203B35C->unk1BC[index1].itemIndex.itemIndex_u8 = ITEM_NOTHING; + } + for(index2 = 0; index2 < 4; index2++){ + gUnknown_203B35C->unk15C[index2] = gUnknown_80E653C; } ResetUnusedInputStruct(); sub_800641C(gUnknown_203B35C->unk15C,1,1); - SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0, - 6,0); + SetMenuItems(gUnknown_203B35C->unk1C,gUnknown_203B35C->unk15C,0,&gUnknown_80E6CD0,gUnknown_80E6CE8,0,6,0); sub_8035CF4(gUnknown_203B35C->unk1C,0,1); sub_80376CC(); } -#else -NAKED -void sub_8036FDC(s32 param_1) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tsub sp, 0x10\n" - "\tadds r6, r0, 0\n" - "\tbl ResetUnusedInputStruct\n" - "\tmovs r0, 0\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tmovs r0, 0\n" - "\tbl ResetSprites\n" - "\tldr r5, _080370C0\n" - "\tldr r0, [r5]\n" - "\tcmp r0, 0\n" - "\tbne _08037016\n" - "\tldr r4, _080370C4\n" - "\tadds r0, r4, 0\n" - "\tmovs r1, 0x8\n" - "\tbl MemoryAlloc\n" - "\tstr r0, [r5]\n" - "\tmovs r1, 0\n" - "\tadds r2, r4, 0\n" - "\tbl MemoryFill8\n" -"_08037016:\n" - "\tldr r0, [r5]\n" - "\tstr r6, [r0]\n" - "\tmovs r1, 0\n" - "\tstr r1, [r0, 0x4]\n" - "\tstr r1, [r0, 0x8]\n" - "\tmovs r3, 0\n" - "\tadds r7, r5, 0\n" - "\tmovs r6, 0xE0\n" - "\tlsls r6, 1\n" - "\tmovs r4, 0\n" - "\tmovs r5, 0xDE\n" - "\tlsls r5, 1\n" -"_0803702E:\n" - "\tldr r0, [r7]\n" - "\tlsls r2, r3, 3\n" - "\tadds r1, r0, r6\n" - "\tadds r1, r2\n" - "\tstr r4, [r1]\n" - "\tadds r0, r2\n" - "\tadds r0, r5\n" - "\tstrb r4, [r0]\n" - "\tadds r3, 0x1\n" - "\tcmp r3, 0x1\n" - "\tble _0803702E\n" - "\tldr r0, _080370C0\n" - "\tmov r12, r0\n" - "\tmovs r5, 0xAE\n" - "\tlsls r5, 1\n" - "\tmov r8, r5\n" - "\tldr r4, _080370C8\n" - "\tmovs r3, 0\n" - "\tmovs r2, 0x3\n" -"_08037054:\n" - "\tmov r6, r12\n" - "\tldr r1, [r6]\n" - "\tadds r1, r3\n" - "\tadd r1, r8\n" - "\tadds r0, r4, 0\n" - "\tldm r0!, {r5-r7}\n" - "\tstm r1!, {r5-r7}\n" - "\tldm r0!, {r5-r7}\n" - "\tstm r1!, {r5-r7}\n" - "\tadds r3, 0x18\n" - "\tsubs r2, 0x1\n" - "\tcmp r2, 0\n" - "\tbge _08037054\n" - "\tmovs r6, 0\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r5, _080370C0\n" - "\tldr r0, [r5]\n" - "\tmovs r4, 0xAE\n" - "\tlsls r4, 1\n" - "\tadds r0, r4\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tldr r1, [r5]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x1C\n" - "\tadds r1, r4\n" - "\tldr r3, _080370CC\n" - "\tldr r2, _080370D0\n" - "\tstr r2, [sp]\n" - "\tstr r6, [sp, 0x4]\n" - "\tmovs r2, 0x6\n" - "\tstr r2, [sp, 0x8]\n" - "\tstr r6, [sp, 0xC]\n" - "\tmovs r2, 0\n" - "\tbl SetMenuItems\n" - "\tldr r0, [r5]\n" - "\tadds r0, 0x1C\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0x1\n" - "\tbl sub_8035CF4\n" - "\tbl sub_80376CC\n" - "\tadd sp, 0x10\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_080370C0: .4byte gUnknown_203B35C\n" -"_080370C4: .4byte 0x00000504\n" -"_080370C8: .4byte gUnknown_80E653C\n" -"_080370CC: .4byte gUnknown_80E6CD0\n" -"_080370D0: .4byte gUnknown_80E6CE8"); -} -#endif void sub_80370D4(void) { @@ -753,3 +664,209 @@ struct unkStruct_203B35C *sub_80373F4(void) { return gUnknown_203B35C; } + +void sub_8037400(void) +{ + u8 mailIndex; + void *r5; + void *r6; + s32 species; + struct unkStruct_8035D94 *puVar5; + struct unkStruct_8035D94 *puVar6; + + r6 = NULL; + r5 = NULL; + sub_8037810(); + sub_8011830(); + gUnknown_203B35C->linkStatus = sub_8037B28(gUnknown_203B35C->unk0); + if (gUnknown_203B35C->linkStatus == COMMS_GOOD) + { + switch(gUnknown_203B35C->unk0) { + case 10: + r6 = &gUnknown_203B35C->unk39C; + r5 = &gUnknown_203B35C->unk450; + break; + case 9: + r6 = &gUnknown_203B35C->unk39C; + r5 = &gUnknown_203B35C->unk450; + break; + case 0: + { +#ifndef NONMATCING + register u32 temp1 asm("r1"); +#else + u32 temp1; +#endif + puVar5 = sub_8035D94(); + puVar6 = &gUnknown_203B35C->unk1BC[0]; + temp1 = puVar5->numItems; + puVar6->itemIndex.itemIndex_u32 = puVar5->itemIndex.itemIndex_u32; + puVar6->numItems = temp1; + } + r6 = &gUnknown_203B35C->unk1BC[0]; + r5 = &gUnknown_203B35C->unk1BC[1]; + break; + case 1: + r6 = &gUnknown_203B35C->unk1BC[0]; + r5 = &gUnknown_203B35C->unk1BC[1]; + break; + case 7: + r6 = &gUnknown_203B35C->unk1CC; + r5 = &gUnknown_203B35C->unk1FC; + break; + case 6: + mailIndex = sub_8035D74(); + gUnknown_203B35C->unk1CC = *GetMailatIndex(mailIndex); + r6 = &gUnknown_203B35C->unk1CC; + r5 = &gUnknown_203B35C->unk1FC; + break; + case 3: + r6 = &gUnknown_203B35C->unk22C; + r5 = &gUnknown_203B35C->unk25C; + break; + case 2: + mailIndex = sub_8035D74(); + gUnknown_203B35C->unk22C = *GetMailatIndex(mailIndex); + r6 = &gUnknown_203B35C->unk22C; + r5 = &gUnknown_203B35C->unk25C; + break; + case 4: + mailIndex = sub_8035D74(); + gUnknown_203B35C->unk28C = *GetMailatIndex(mailIndex); + if( sub_8035D3C() << 0x10 != 0xffff0000) + { + species = sub_8035D3C(); + gUnknown_203B35C->unk2BC = gRecruitedPokemonRef->pokemon[(s16)species]; + } + r6 = &gUnknown_203B35C->unk28C; + r5 = &gUnknown_203B35C->unk314; + break; + case 5: + r6 = &gUnknown_203B35C->unk28C; + r5 = &gUnknown_203B35C->unk314; + break; + } + gUnknown_203B35C->linkStatus = sub_8037D64(gUnknown_203B35C->unk0, r6, r5); + + if (gUnknown_203B35C->linkStatus == COMMS_GOOD) + { + switch(gUnknown_203B35C->unk0) { + case 0: + case 1: + r6 = &gUnknown_203B35C->unk1BC[0]; + r5 = &gUnknown_203B35C->unk1BC[1]; + break; + case 2: + case 3: + r6 = &gUnknown_203B35C->unk22C; + r5 = &gUnknown_203B35C->unk25C; + break; + case 4: + case 5: + r6 = &gUnknown_203B35C->unk28C; + r5 = &gUnknown_203B35C->unk314; + break; + case 6: + case 7: + r6 = &gUnknown_203B35C->unk1CC; + r5 = &gUnknown_203B35C->unk1FC; + break; + case 9: + case 10: + r6 = &gUnknown_203B35C->unk39C; + r5 = &gUnknown_203B35C->unk450; + break; + } + gUnknown_203B35C->linkStatus = sub_80381F4(gUnknown_203B35C->unk0, r6, r5); + } + } + xxx_call_start_bg_music(); +} + +void sub_80376CC(void) +{ +#ifdef NONMATCHING + u32 r0; + u32 r2; +#else + register u32 r0 asm("r0"); + register u32 r2 asm("r2"); +#endif + u32 r1; + u32 r4; + + + r1 = gUnknown_203B35C->unkC.unk0; + r0 = 0xfeff; + r0 &= r1; + r0 &= 0xfdff; + r0 &= 0xf3ff; + r0 &= 0xefff; + r0 &= 0xdfff; + r2 = 0x4000; + r0 &= 0x3fff; + r0 |= r2; + gUnknown_203B35C->unkC.unk0 = r0; + + r2 = 0x3F0; + r1 = gUnknown_203B35C->unkC.unk4; + r0 = 0xFC00; + r0 &= r1; + r0 |= r2; + r0 &= 0xf3ff; + r2 = 0xF; + r4 = 0xF000; + r0 &= 0xfff; + r0 |= r4; + + gUnknown_203B35C->unkC.unk4 = r0; + r0 = 0; + gUnknown_203B35C->unkC.unk2 = r0; + + r1 = 0xC00; + r0 = gUnknown_203B35C->unkC.unk6; + r2 &= r0; + r2 |= r1; + gUnknown_203B35C->unkC.unk6 = r2; + +} + +void sub_8037748(void) +{ + u32 temp2; + + gUnknown_203B35C->unkC.unk2 = (gUnknown_203B35C->unkC.unk2 & 0xfe00) | 0x70; + + temp2 = 0x680; + gUnknown_203B35C->unkC.unk6 = (gUnknown_203B35C->unkC.unk6 & 0xf) | temp2; + + if ((gUnknown_203B35C->unk14 & 8) != 0) { + AddSprite(&gUnknown_203B35C->unkC,0x100,0,0x0); + } + xxx_draw_string_80144C4(); + gUnknown_203B35C->unk14++; +} + +u32 sub_8037798(void) +{ + u32 nextMenu = MENU_NO_SCREEN_CHANGE; + switch(gUnknown_203B35C->unk0) { + case 0: + case 1: + nextMenu = MENU_MAIN_SCREEN; + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2A : MENU_MAIN_SCREEN; + break; + case 9: + case 10: + nextMenu = (gUnknown_203B35C->linkStatus == COMMS_GOOD) ? 0x2B : MENU_WONDER_MAIL; + break; + } + return nextMenu; +}