diff --git a/asm/code_803D110.s b/asm/code_803D110.s index f202f0675..6f7f3ab9c 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -2379,3531 +2379,3 @@ _0803E460: .4byte 0x00018218 _0803E464: .4byte gUnknown_202EDC8 _0803E468: .4byte gUnknown_202D058 thumb_func_end sub_803E250 - -@ https://decomp.me/scratch/5arGc (kermalis 100%) `void sub_803E46C(u32)` - thumb_func_start sub_803E46C -sub_803E46C: - push {lr} - adds r1, r0, 0 - ldr r0, _0803E480 - ldrb r0, [r0] - cmp r0, 0 - beq _0803E484 - adds r0, r1, 0 - bl sub_803E490 - b _0803E48A - .align 2, 0 -_0803E480: .4byte gUnknown_203B40C -_0803E484: - adds r0, r1, 0 - bl sub_803E668 -_0803E48A: - pop {r0} - bx r0 - thumb_func_end sub_803E46C - - thumb_func_start sub_803E490 -sub_803E490: - push {r4,r5,lr} - sub sp, 0x8 - ldr r1, _0803E4D8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - bl xxx_draw_string_80524F0 - bl sub_8085F78 - movs r0, 0x1 - bl sub_803F580 - ldr r2, _0803E4DC - ldr r1, [r2] - ldr r3, _0803E4E0 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0803E4EC - ldr r4, _0803E4E4 - adds r1, r4 - movs r0, 0x2 - strb r0, [r1] - ldr r1, [r2] - ldr r2, _0803E4E8 - adds r0, r1, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - subs r4, 0x16 - adds r1, r4 - movs r2, 0 - ldrsh r1, [r1, r2] - bl SetBG2RegOffsets - b _0803E4FC - .align 2, 0 -_0803E4D8: .4byte gUnknown_202EDD4 -_0803E4DC: .4byte gDungeon -_0803E4E0: .4byte 0x0001821a -_0803E4E4: .4byte 0x00018208 -_0803E4E8: .4byte 0x000181f0 -_0803E4EC: - ldr r3, _0803E628 - adds r1, r3 - movs r0, 0x3 - strb r0, [r1] - movs r0, 0 - movs r1, 0 - bl SetBG2RegOffsets -_0803E4FC: - ldr r4, _0803E62C - ldr r2, [r4] - ldr r5, _0803E630 - adds r0, r2, r5 - movs r1, 0 - ldrsh r0, [r0, r1] - ldr r3, _0803E634 - adds r1, r2, r3 - movs r3, 0 - ldrsh r1, [r1, r3] - ldr r3, _0803E638 - adds r2, r3 - ldr r2, [r2] - subs r1, r2 - bl SetBG3RegOffsets - bl sub_806CC10 - bl sub_804522C - bl sub_803F9CC - ldr r0, [r4] - adds r0, r5 - bl sub_800F7D0 - ldr r1, [r4] - ldrh r2, [r1, 0x12] - movs r3, 0x12 - ldrsh r0, [r1, r3] - cmp r0, 0x63 - bgt _0803E540 - adds r0, r2, 0x1 - strh r0, [r1, 0x12] -_0803E540: - ldr r0, [r4] - adds r0, r5 - bl sub_800E90C - bl sub_8042E5C - ldr r0, _0803E63C - ldr r0, [r0] - cmp r0, 0 - beq _0803E562 - cmp r0, 0x3 - beq _0803E562 - ldr r0, _0803E640 - ldr r0, [r0] - ldrb r0, [r0, 0x4] - cmp r0, 0x6 - bne _0803E566 -_0803E562: - bl sub_8040894 -_0803E566: - bl sub_803ECE0 - bl sub_803EDF0 - ldr r0, _0803E62C - ldr r3, [r0] - ldr r4, _0803E644 - adds r0, r3, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0803E5A2 - ldr r1, _0803E648 - adds r0, r3, r1 - ldr r0, [r0] - cmp r0, 0x3 - beq _0803E5A2 - ldr r0, _0803E64C - ldrb r0, [r0] - ldr r1, _0803E650 - ldr r2, _0803E654 - ldr r2, [r2] - str r2, [sp] - movs r4, 0xBE - lsls r4, 1 - adds r2, r3, r4 - str r2, [sp, 0x4] - movs r2, 0xA0 - movs r3, 0x20 - bl sub_8004AF0 -_0803E5A2: - ldr r0, _0803E640 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - bl nullsub_8 - bl sub_8005180 - bl nullsub_12 - bl sub_80060EC - ldr r1, _0803E658 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _0803E65C - ldr r0, [r0] - bl IncrementPlayTime - bl sub_800CB20 - bl LoadBufferedInputs - bl CopySpritesToOam - bl nullsub_13 - bl sub_8005304 - bl nullsub_14 - bl TransferBGPaletteBuffer - bl sub_8009908 - bl xxx_call_update_bg_vram - bl sub_8040788 - bl xxx_call_update_bg_sound_input - ldr r0, _0803E62C - ldr r0, [r0] - ldr r1, _0803E660 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - bl UpdateDungeonMusic - bl sub_8011860 - bl sub_8040B60 - movs r0, 0 - bl ResetSprites - movs r0, 0 - bl nullsub_10 - ldr r1, _0803E664 - ldr r0, [r1] - subs r0, 0x1 - str r0, [r1] - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803E628: .4byte 0x00018208 -_0803E62C: .4byte gDungeon -_0803E630: .4byte 0x000181f0 -_0803E634: .4byte 0x000181f2 -_0803E638: .4byte 0x000181fc -_0803E63C: .4byte gUnknown_202EDD0 -_0803E640: .4byte gGameOptionsRef -_0803E644: .4byte 0x00018215 -_0803E648: .4byte 0x0001c06c -_0803E64C: .4byte gUnknown_203B40D -_0803E650: .4byte gUnknown_202EE8C -_0803E654: .4byte gUnknown_202EDC8 -_0803E658: .4byte gUnknown_202EDCC -_0803E65C: .4byte gPlayTimeRef -_0803E660: .4byte 0x00018213 -_0803E664: .4byte gUnknown_202EDD4 - thumb_func_end sub_803E490 - -@ https://decomp.me/scratch/biQXr (kermalis 100%) `void sub_803E668(u32)` - thumb_func_start sub_803E668 -sub_803E668: - push {r4,lr} - ldr r4, _0803E6F0 - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - ldr r0, _0803E6F4 - ldr r0, [r0] - ldrb r0, [r0, 0xA] - bl nullsub_8 - bl sub_8005180 - bl nullsub_12 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - bl sub_80060EC - ldr r1, _0803E6F8 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - ldr r0, _0803E6FC - ldr r0, [r0] - bl IncrementPlayTime - bl sub_800CB20 - bl LoadBufferedInputs - bl CopySpritesToOam - bl nullsub_13 - bl sub_8005304 - bl nullsub_14 - bl TransferBGPaletteBuffer - bl sub_8009908 - bl xxx_call_update_bg_vram - bl xxx_call_update_bg_sound_input - ldr r0, _0803E700 - ldr r0, [r0] - ldr r1, _0803E704 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - bl sub_8011860 - movs r0, 0 - bl ResetSprites - movs r0, 0 - bl nullsub_10 - ldr r0, [r4] - subs r0, 0x1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803E6F0: .4byte gUnknown_202EDD4 -_0803E6F4: .4byte gGameOptionsRef -_0803E6F8: .4byte gUnknown_202EDCC -_0803E6FC: .4byte gPlayTimeRef -_0803E700: .4byte gDungeon -_0803E704: .4byte 0x00018213 - thumb_func_end sub_803E668 - -@ https://decomp.me/scratch/bDSdY (kermalis 100%) `void sub_803E708(s32, u32)` - thumb_func_start sub_803E708 -sub_803E708: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - cmp r4, 0 - beq _0803E71E -_0803E712: - adds r0, r5, 0 - bl sub_803E46C - subs r4, 0x1 - cmp r4, 0 - bne _0803E712 -_0803E71E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_803E708 - - thumb_func_start sub_803E724 -sub_803E724: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, _0803E744 - movs r6, 0xF0 -_0803E72C: - adds r0, r4, 0 - bl sub_803E46C - ldrh r1, [r5] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _0803E72C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803E744: .4byte gRealInputs - thumb_func_end sub_803E724 - - thumb_func_start sub_803E748 -sub_803E748: - push {r4,r5,lr} - movs r5, 0x1F - ldr r1, _0803E7B8 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0803E7BC - movs r0, 0 - str r0, [r1] - movs r0, 0x1 - movs r1, 0x1F - bl sub_803E874 - movs r4, 0 -_0803E762: - cmp r4, 0x1F - bgt _0803E780 - subs r5, 0x2 - cmp r5, 0 - bgt _0803E780 - movs r5, 0 - movs r0, 0x1 - movs r1, 0 - bl sub_803EAF0 - ldr r0, _0803E7C0 - ldr r0, [r0] - ldr r1, _0803E7C4 - adds r0, r1 - strb r5, [r0] -_0803E780: - cmp r4, 0xB - ble _0803E790 - ldr r1, _0803E7BC - ldr r0, [r1] - cmp r0, 0x1E - bgt _0803E790 - adds r0, 0x1 - str r0, [r1] -_0803E790: - movs r0, 0x1 - adds r1, r5, 0 - bl sub_803E874 - movs r0, 0x5 - bl sub_803E46C - adds r4, 0x1 - cmp r4, 0x2B - ble _0803E762 - ldr r1, _0803E7B8 - movs r0, 0 - strb r0, [r1] - ldr r1, _0803E7BC - movs r0, 0x1F - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803E7B8: .4byte gUnknown_203B40D -_0803E7BC: .4byte gUnknown_202EDC8 -_0803E7C0: .4byte gDungeon -_0803E7C4: .4byte 0x00018217 - thumb_func_end sub_803E748 - - thumb_func_start sub_803E7C8 -sub_803E7C8: - push {r4,r5,lr} - movs r4, 0x1F - ldr r1, _0803E820 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _0803E824 - movs r0, 0 - str r0, [r1] - movs r0, 0x5 - bl sub_803E46C - movs r5, 0 -_0803E7E0: - movs r0, 0x1 - adds r1, r4, 0 - bl sub_803E874 - cmp r5, 0x1F - bgt _0803E806 - subs r4, 0x2 - cmp r4, 0 - bgt _0803E806 - movs r4, 0 - movs r0, 0x1 - movs r1, 0 - bl sub_803EAF0 - ldr r0, _0803E828 - ldr r0, [r0] - ldr r1, _0803E82C - adds r0, r1 - strb r4, [r0] -_0803E806: - movs r0, 0x5 - bl sub_803E46C - adds r5, 0x1 - cmp r5, 0x2B - ble _0803E7E0 - ldr r1, _0803E820 - movs r0, 0 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803E820: .4byte gUnknown_203B40D -_0803E824: .4byte gUnknown_202EDC8 -_0803E828: .4byte gDungeon -_0803E82C: .4byte 0x00018217 - thumb_func_end sub_803E7C8 - - thumb_func_start sub_803E830 -sub_803E830: - push {r4,r5,lr} - ldr r1, _0803E86C - movs r0, 0x1 - strb r0, [r1] - ldr r5, _0803E870 - movs r4, 0x1F -_0803E83C: - movs r0, 0 - movs r1, 0 - bl sub_803E874 - movs r0, 0x5 - bl sub_803E46C - ldr r0, [r5] - cmp r0, 0 - ble _0803E854 - subs r0, 0x1 - str r0, [r5] -_0803E854: - subs r4, 0x1 - cmp r4, 0 - bge _0803E83C - ldr r0, _0803E870 - movs r1, 0 - str r1, [r0] - ldr r0, _0803E86C - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803E86C: .4byte gUnknown_203B40D -_0803E870: .4byte gUnknown_202EDC8 - thumb_func_end sub_803E830 - - thumb_func_start sub_803E874 -sub_803E874: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, _0803E9A4 - ldr r0, [r0] - ldr r5, [r0, 0x4] - ldr r1, _0803E9A8 - ldr r0, _0803E9AC - ldr r2, [r0] - ldr r0, _0803E9B0 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - movs r0, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - movs r6, 0x1 - movs r4, 0x9F -_0803E8AA: - ldr r1, _0803E9AC - mov r8, r1 - ldr r2, [r1] - ldr r7, _0803E9B0 - ldr r3, [r7] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r6, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _0803E8AA - ldr r3, [r7] - ldr r1, _0803E9B4 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803E8E2 - ldr r2, _0803E9B8 - adds r0, r3, r2 - ldr r0, [r0] - cmp r0, 0x3 - bne _0803E8FC -_0803E8E2: - ldr r1, _0803E9BC - mov r2, r8 - ldr r0, [r2] - str r0, [sp] - movs r2, 0xBE - lsls r2, 1 - adds r0, r3, r2 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0xA0 - movs r3, 0x20 - bl sub_8004AF0 -_0803E8FC: - adds r6, 0x20 - ldr r5, _0803E9C0 - movs r4, 0x20 -_0803E902: - ldr r0, _0803E9AC - ldr r2, [r0] - ldr r0, _0803E9B0 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r6, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _0803E902 - mov r1, r10 - cmp r1, 0 - beq _0803E948 - movs r6, 0xE0 - ldr r0, _0803E9C4 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r4, 0x10 -_0803E932: - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, r9 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - adds r6, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _0803E932 -_0803E948: - ldr r1, _0803E9C8 - ldr r4, _0803E9AC - ldr r2, [r4] - movs r0, 0xF8 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - ldr r0, _0803E9B0 - ldr r0, [r0] - ldr r2, _0803E9CC - adds r0, r2 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r6, 0x80 - lsls r6, 1 - adds r7, r4, 0 - movs r4, 0xD0 -_0803E96A: - ldr r2, [r7] - ldr r0, _0803E9B0 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetBGPaletteBufferColorRGB - ldr r2, [r7] - adds r0, r6, 0 - adds r1, r5, 0 - movs r3, 0 - bl nullsub_4 - adds r5, 0x4 - adds r6, 0x1 - subs r4, 0x1 - cmp r4, 0 - bne _0803E96A - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803E9A4: .4byte gDungeonPaletteFile -_0803E9A8: .4byte gUnknown_80F62AC -_0803E9AC: .4byte gUnknown_202EDC8 -_0803E9B0: .4byte gDungeon -_0803E9B4: .4byte 0x00018215 -_0803E9B8: .4byte 0x0001c06c -_0803E9BC: .4byte gUnknown_202EE8C -_0803E9C0: .4byte gUnknown_202ECA4 -_0803E9C4: .4byte gDungeonNameBannerPalette -_0803E9C8: .4byte gUnknown_202D058 -_0803E9CC: .4byte 0x000181e4 - thumb_func_end sub_803E874 - - thumb_func_start sub_803E9D0 -sub_803E9D0: - push {r4-r7,lr} - ldr r0, _0803EA04 - ldr r0, [r0] - ldr r1, _0803EA08 - adds r0, r1 - ldr r0, [r0] - ldr r4, [r0, 0x4] - movs r6, 0x80 - lsls r6, 1 - ldr r7, _0803EA0C - movs r5, 0xD0 -_0803E9E6: - ldr r2, [r7] - adds r0, r6, 0 - adds r1, r4, 0 - movs r3, 0 - bl nullsub_4 - adds r4, 0x4 - adds r6, 0x1 - subs r5, 0x1 - cmp r5, 0 - bne _0803E9E6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803EA04: .4byte gDungeon -_0803EA08: .4byte 0x000181e4 -_0803EA0C: .4byte gUnknown_202EDC8 - thumb_func_end sub_803E9D0 - - thumb_func_start sub_803EA10 -sub_803EA10: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r0, _0803EACC - ldr r0, [r0] - ldr r4, [r0, 0x4] - ldr r1, _0803EAD0 - ldr r0, _0803EAD4 - ldr r2, [r0] - ldr r0, _0803EAD8 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - movs r0, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x4 - movs r6, 0x1 - movs r5, 0x9F -_0803EA3A: - ldr r1, _0803EAD4 - mov r8, r1 - ldr r2, [r1] - ldr r7, _0803EAD8 - ldr r3, [r7] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - adds r0, r6, 0 - adds r1, r4, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x4 - adds r6, 0x1 - subs r5, 0x1 - cmp r5, 0 - bne _0803EA3A - ldr r3, [r7] - ldr r1, _0803EADC - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EA72 - ldr r2, _0803EAE0 - adds r0, r3, r2 - ldr r0, [r0] - cmp r0, 0x3 - bne _0803EA8C -_0803EA72: - ldr r1, _0803EAE4 - mov r2, r8 - ldr r0, [r2] - str r0, [sp] - movs r2, 0xBE - lsls r2, 1 - adds r0, r3, r2 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r2, 0xA0 - movs r3, 0x20 - bl sub_8004AF0 -_0803EA8C: - adds r6, 0x20 - ldr r4, _0803EAE8 - movs r5, 0x20 -_0803EA92: - ldr r7, _0803EAD4 - ldr r2, [r7] - ldr r0, _0803EAD8 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - adds r0, r6, 0 - adds r1, r4, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x4 - adds r6, 0x1 - subs r5, 0x1 - cmp r5, 0 - bne _0803EA92 - ldr r1, _0803EAEC - ldr r2, [r7] - movs r0, 0xF8 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803EACC: .4byte gDungeonPaletteFile -_0803EAD0: .4byte gUnknown_80F62AC -_0803EAD4: .4byte gUnknown_202EDC8 -_0803EAD8: .4byte gDungeon -_0803EADC: .4byte 0x00018215 -_0803EAE0: .4byte 0x0001c06c -_0803EAE4: .4byte gUnknown_202EE8C -_0803EAE8: .4byte gUnknown_202ECA4 -_0803EAEC: .4byte gUnknown_202D058 - thumb_func_end sub_803EA10 - - thumb_func_start sub_803EAF0 -sub_803EAF0: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0803EB20 - ldr r0, [r0] - cmp r4, r0 - bne _0803EB00 - b _0803EC88 -_0803EB00: - cmp r4, 0x5 - bne _0803EB06 - b _0803EC1C -_0803EB06: - cmp r4, 0x5 - bhi _0803EB2E - cmp r4, 0x2 - bne _0803EB10 - b _0803EBFC -_0803EB10: - cmp r4, 0x2 - bhi _0803EB24 - cmp r4, 0 - beq _0803EB70 - cmp r4, 0x1 - beq _0803EB50 - b _0803EC84 - .align 2, 0 -_0803EB20: .4byte gUnknown_202EDD0 -_0803EB24: - cmp r4, 0x3 - beq _0803EB98 - cmp r4, 0x4 - beq _0803EBFC - b _0803EC84 -_0803EB2E: - cmp r4, 0x8 - bne _0803EB34 - b _0803EC34 -_0803EB34: - cmp r4, 0x8 - bhi _0803EB42 - cmp r4, 0x6 - beq _0803EBBC - cmp r4, 0x7 - beq _0803EBDC - b _0803EC84 -_0803EB42: - cmp r4, 0xA - bne _0803EB48 - b _0803EC80 -_0803EB48: - cmp r4, 0xA - bcs _0803EB4E - b _0803EC54 -_0803EB4E: - b _0803EC84 -_0803EB50: - ldr r0, _0803EB6C - ldrb r0, [r0] - cmp r0, 0 - beq _0803EB5E - movs r0, 0 - bl sub_8052210 -_0803EB5E: - bl ResetUnusedInputStruct - bl sub_803EC94 - movs r0, 0 - movs r1, 0x1 - b _0803EC6E - .align 2, 0 -_0803EB6C: .4byte gUnknown_203B40C -_0803EB70: - bl sub_803EC94 - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, _0803EB94 - ldrb r0, [r0] - cmp r0, 0 - bne _0803EB88 - b _0803EC84 -_0803EB88: - bl sub_8040A84 - movs r0, 0 - bl sub_8040ABC - b _0803EC84 - .align 2, 0 -_0803EB94: .4byte gUnknown_203B40C -_0803EB98: - ldr r0, _0803EBB4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, _0803EBB8 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EC84 - movs r0, 0x1 - bl sub_8040ABC - b _0803EC84 - .align 2, 0 -_0803EBB4: .4byte gUnknown_80F62B0 -_0803EBB8: .4byte gUnknown_203B40C -_0803EBBC: - ldr r0, _0803EBD4 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EBCA - movs r0, 0 - bl sub_8052210 -_0803EBCA: - bl ResetUnusedInputStruct - ldr r0, _0803EBD8 - movs r1, 0x1 - b _0803EC6E - .align 2, 0 -_0803EBD4: .4byte gUnknown_203B40C -_0803EBD8: .4byte gUnknown_80F6310 -_0803EBDC: - ldr r0, _0803EBF4 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EBEA - movs r0, 0 - bl sub_8052210 -_0803EBEA: - bl ResetUnusedInputStruct - ldr r0, _0803EBF8 - movs r1, 0x1 - b _0803EC6E - .align 2, 0 -_0803EBF4: .4byte gUnknown_203B40C -_0803EBF8: .4byte gUnknown_80F6370 -_0803EBFC: - ldr r0, _0803EC18 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EC0A - movs r0, 0 - bl sub_8052210 -_0803EC0A: - bl ResetUnusedInputStruct - bl sub_803EC94 - movs r0, 0 - movs r1, 0x1 - b _0803EC6E - .align 2, 0 -_0803EC18: .4byte gUnknown_203B40C -_0803EC1C: - ldr r0, _0803EC30 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EC2A - movs r0, 0 - bl sub_8052210 -_0803EC2A: - movs r0, 0 - movs r1, 0x1 - b _0803EC6E - .align 2, 0 -_0803EC30: .4byte gUnknown_203B40C -_0803EC34: - ldr r0, _0803EC50 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EC46 - bl sub_8083D44 - movs r0, 0 - bl sub_8052210 -_0803EC46: - movs r0, 0x2 - adds r1, r5, 0 - bl CreateConfirmNameMenu - b _0803EC84 - .align 2, 0 -_0803EC50: .4byte gUnknown_203B40C -_0803EC54: - ldr r0, _0803EC78 - ldrb r0, [r0] - cmp r0, 0 - beq _0803EC66 - movs r0, 0 - bl sub_8052210 - bl sub_8083D44 -_0803EC66: - bl ResetUnusedInputStruct - ldr r0, _0803EC7C - movs r1, 0 -_0803EC6E: - movs r2, 0x1 - bl sub_800641C - b _0803EC84 - .align 2, 0 -_0803EC78: .4byte gUnknown_203B40C -_0803EC7C: .4byte gUnknown_80F63D0 -_0803EC80: - bl sub_8083D44 -_0803EC84: - ldr r0, _0803EC90 - str r4, [r0] -_0803EC88: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803EC90: .4byte gUnknown_202EDD0 - thumb_func_end sub_803EAF0 - - thumb_func_start sub_803EC94 -sub_803EC94: - push {lr} - ldr r0, _0803ECB0 - movs r1, 0 - strh r1, [r0, 0x1E] - strh r1, [r0, 0x20] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x14] - adds r0, 0x28 - bl sub_801317C - pop {r0} - bx r0 - .align 2, 0 -_0803ECB0: .4byte gUnknown_202EE10 - thumb_func_end sub_803EC94 - - thumb_func_start sub_803ECB4 -sub_803ECB4: - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - ldr r1, _0803ECDC - movs r0, 0xA - str r0, [r1] - movs r0, 0 - bl sub_8052210 - bl ResetUnusedInputStruct - adds r0, r5, 0 - movs r1, 0x1 - adds r2, r4, 0 - bl sub_800641C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803ECDC: .4byte gUnknown_202EDD0 - thumb_func_end sub_803ECB4 - - thumb_func_start sub_803ECE0 -sub_803ECE0: - push {lr} - ldr r1, _0803ED24 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0 - bge _0803ECF2 - movs r0, 0 - str r0, [r1] -_0803ECF2: - ldr r0, [r1] - cmp r0, 0xB - ble _0803ECFC - movs r0, 0 - str r0, [r1] -_0803ECFC: - ldr r0, _0803ED28 - ldr r2, [r0] - ldr r0, [r1] - cmp r0, 0 - bge _0803ED08 - adds r0, 0x3 -_0803ED08: - asrs r1, r0, 2 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 6 - ldr r1, [r2, 0x4] - adds r1, r0 - movs r2, 0x90 - lsls r2, 2 - ldr r0, _0803ED2C - bl sub_80098BC - pop {r0} - bx r0 - .align 2, 0 -_0803ED24: .4byte gUnknown_202EDD8 -_0803ED28: .4byte gUnknown_202EC94 -_0803ED2C: .4byte 0x06014400 - thumb_func_end sub_803ECE0 - - thumb_func_start sub_803ED30 -sub_803ED30: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - adds r7, r1, 0 - mov r9, r3 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - cmp r5, 0 - beq _0803EDDA - ldr r0, _0803EDAC - ldr r0, [r0] - ldr r1, _0803EDB0 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803EDDA - movs r4, 0 - ldr r1, _0803EDB4 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0803ED78 - adds r6, r1, 0 -_0803ED64: - movs r0, 0x29 - bl sub_803E46C - adds r4, 0x1 - cmp r4, 0x13 - bgt _0803ED78 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0803ED64 -_0803ED78: - adds r0, r5, 0 - mov r1, r8 - bl sub_803EF90 - ldr r3, _0803EDB4 - movs r2, 0 - movs r1, 0x3C - strh r1, [r3] - str r7, [r3, 0x4] - ldrh r1, [r7, 0x26] - str r1, [r3, 0x8] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 8 - negs r1, r1 - str r1, [r3, 0xC] - str r2, [r3, 0x10] - mov r2, r9 - cmp r2, 0 - bge _0803EDC8 - ldr r0, _0803EDB8 - cmp r5, r0 - bge _0803EDBC - movs r0, 0x6 - b _0803EDCA - .align 2, 0 -_0803EDAC: .4byte gDungeon -_0803EDB0: .4byte 0x0001820a -_0803EDB4: .4byte gUnknown_202EDE8 -_0803EDB8: .4byte 0xfffffc19 -_0803EDBC: - cmp r5, 0 - blt _0803EDC4 - movs r0, 0xA - b _0803EDCA -_0803EDC4: - movs r0, 0x3 - b _0803EDCA -_0803EDC8: - mov r0, r9 -_0803EDCA: - strh r0, [r3, 0x2] - ldr r0, _0803EDE8 - ldr r1, _0803EDEC - ldr r1, [r1] - adds r1, 0x18 - movs r2, 0x80 - bl sub_80098BC -_0803EDDA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803EDE8: .4byte 0x060142c0 -_0803EDEC: .4byte gDungeon - thumb_func_end sub_803ED30 - - thumb_func_start sub_803EDF0 -sub_803EDF0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r6, _0803EE18 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _0803EE06 - b _0803EF42 -_0803EE06: - ldr r0, [r6, 0x4] - bl EntityExists - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0803EE1C - strh r0, [r6] - b _0803EF42 - .align 2, 0 -_0803EE18: .4byte gUnknown_202EDE8 -_0803EE1C: - ldr r1, [r6, 0x4] - ldr r0, [r6, 0x8] - ldrh r2, [r1, 0x26] - cmp r0, r2 - beq _0803EE2C - movs r0, 0 - strh r0, [r6] - b _0803EF42 -_0803EE2C: - ldrh r0, [r6] - subs r0, 0x1 - strh r0, [r6] - ldr r4, [r6, 0x10] - adds r3, r4, 0 - subs r3, 0x2E - str r3, [r6, 0x10] - ldr r2, [r1, 0x70] - movs r5, 0xB8 - lsls r5, 1 - adds r0, r2, r5 - movs r1, 0 - ldrsh r0, [r0, r1] - ldr r1, [r6, 0xC] - cmp r1, 0 - bge _0803EE4E - adds r1, 0xFF -_0803EE4E: - asrs r1, 8 - adds r1, r0, r1 - ldr r0, _0803EF50 - ldr r0, [r0] - mov r12, r0 - ldr r0, _0803EF54 - add r0, r12 - movs r5, 0 - ldrsh r0, [r0, r5] - subs r7, r1, r0 - movs r1, 0xB9 - lsls r1, 1 - adds r0, r2, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r1, r3, 0 - cmp r1, 0 - bge _0803EE76 - adds r1, r4, 0 - adds r1, 0xD1 -_0803EE76: - asrs r1, 8 - adds r1, r0, r1 - ldr r0, _0803EF58 - add r0, r12 - movs r3, 0 - ldrsh r0, [r0, r3] - adds r0, 0x18 - subs r2, r1, r0 - movs r0, 0x20 - negs r0, r0 - cmp r7, r0 - blt _0803EF42 - adds r0, 0x18 - cmp r2, r0 - blt _0803EF42 - cmp r7, 0xEF - bgt _0803EF42 - cmp r2, 0x9F - bgt _0803EF42 - ldr r1, _0803EF5C - ands r1, r2 - lsls r1, 4 - ldr r0, _0803EF60 - ldrh r2, [r0, 0x6] - movs r4, 0xF - mov r8, r4 - mov r3, r8 - ands r3, r2 - orrs r3, r1 - strh r3, [r0, 0x6] - ldrh r2, [r0] - ldr r1, _0803EF64 - ands r1, r2 - ldr r2, _0803EF68 - ands r1, r2 - movs r5, 0x3 - mov r9, r5 - ldr r2, _0803EF6C - mov r10, r2 - ands r1, r2 - ldr r2, _0803EF70 - ands r1, r2 - ldr r2, _0803EF74 - ands r1, r2 - movs r5, 0x80 - lsls r5, 7 - ldr r4, _0803EF78 - ands r1, r4 - orrs r1, r5 - strh r1, [r0] - ldr r1, _0803EF7C - ands r7, r1 - ldrh r2, [r0, 0x2] - movs r1, 0xFE - lsls r1, 8 - ands r1, r2 - orrs r1, r7 - ldr r2, _0803EF80 - ands r1, r2 - ands r1, r4 - orrs r1, r5 - strh r1, [r0, 0x2] - ldr r4, _0803EF84 - ldrh r2, [r0, 0x4] - movs r1, 0xFC - lsls r1, 8 - ands r1, r2 - orrs r1, r4 - movs r2, 0 - orrs r1, r2 - strh r1, [r0, 0x4] - ldr r2, _0803EF88 - add r2, r12 - ldrb r2, [r2] - mov r4, r9 - ands r2, r4 - lsls r2, 10 - mov r5, r10 - ands r1, r5 - orrs r1, r2 - movs r4, 0x2 - ldrsh r2, [r6, r4] - mov r5, r8 - ands r2, r5 - lsls r2, 12 - ldr r4, _0803EF5C - ands r1, r4 - orrs r1, r2 - strh r1, [r0, 0x4] - ldr r1, _0803EF8C - ands r3, r1 - subs r1, 0x1 - ands r3, r1 - subs r1, 0x2 - ands r3, r1 - strh r3, [r0, 0x6] - movs r1, 0x80 - lsls r1, 1 - movs r2, 0 - movs r3, 0 - bl AddSprite -_0803EF42: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803EF50: .4byte gDungeon -_0803EF54: .4byte 0x000181f0 -_0803EF58: .4byte 0x000181f2 -_0803EF5C: .4byte 0x00000fff -_0803EF60: .4byte gUnknown_202EDDC -_0803EF64: .4byte 0x0000feff -_0803EF68: .4byte 0x0000fdff -_0803EF6C: .4byte 0x0000f3ff -_0803EF70: .4byte 0x0000efff -_0803EF74: .4byte 0x0000dfff -_0803EF78: .4byte 0x00003fff -_0803EF7C: .4byte 0x000001ff -_0803EF80: .4byte 0x0000c1ff -_0803EF84: .4byte 0x00000216 -_0803EF88: .4byte 0x00018208 -_0803EF8C: .4byte 0x0000fffe - thumb_func_end sub_803EDF0 - - thumb_func_start sub_803EF90 -sub_803EF90: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x58 - str r0, [sp, 0x48] - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _0803F060 - ldr r0, [r0] - adds r0, 0x18 - mov r8, r0 - ldr r0, _0803F064 - ldr r1, [r0] - ldr r0, [r1, 0x4] - movs r2, 0x92 - lsls r2, 1 - adds r0, r2 - str r0, [sp, 0x24] - ldr r0, [r1, 0x4] - movs r3, 0x82 - lsls r3, 1 - adds r0, r3 - str r0, [sp, 0x28] - ldr r0, [r1, 0x4] - adds r0, 0xE4 - str r0, [sp, 0x2C] - ldr r0, [r1, 0x4] - adds r0, 0xC4 - str r0, [sp, 0x30] - ldr r0, [r1, 0x4] - adds r0, 0xA4 - str r0, [sp, 0x34] - ldr r0, [r1, 0x4] - adds r0, 0x84 - str r0, [sp, 0x38] - ldr r0, [r1, 0x4] - adds r0, 0x64 - str r0, [sp, 0x3C] - ldr r0, [r1, 0x4] - adds r0, 0x44 - str r0, [sp, 0x40] - ldr r0, [r1, 0x4] - adds r0, 0x24 - str r0, [sp, 0x44] - add r4, sp, 0x24 - mov r0, sp - adds r1, r4, 0 - movs r2, 0x24 - bl memcpy - movs r1, 0 - movs r6, 0x3 - mov r0, r8 -_0803EFFE: - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - stm r0!, {r1} - subs r6, 0x1 - cmp r6, 0 - bge _0803EFFE - ldr r0, _0803F068 - ldr r1, [sp, 0x48] - cmp r1, r0 - bne _0803F0A6 - adds r0, r4, 0 - ldr r1, _0803F06C - ldm r1!, {r2,r3,r5} - stm r0!, {r2,r3,r5} - ldr r1, [r1] - str r1, [r0] - movs r5, 0 - movs r2, 0 - mov r12, r4 - movs r0, 0x20 - mov r10, r0 -_0803F032: - mov r3, r8 - ldr r0, _0803F064 - ldr r1, [r0] - lsls r0, r2, 2 - add r0, r12 - ldr r0, [r0] - lsls r0, 5 - adds r0, 0x4 - ldr r1, [r1, 0x4] - adds r4, r1, r0 - movs r1, 0x18 - adds r1, r5 - mov r9, r1 - adds r2, 0x1 - str r2, [sp, 0x54] - mov r2, r10 - subs r7, r2, r5 - movs r6, 0x7 -_0803F056: - cmp r5, 0 - bne _0803F070 - movs r1, 0 - ldr r2, [r4] - b _0803F07A - .align 2, 0 -_0803F060: .4byte gDungeon -_0803F064: .4byte gUnknown_202EC9C -_0803F068: .4byte 0x0000270f -_0803F06C: .4byte gUnknown_80F6478 -_0803F070: - ldr r0, [r4] - adds r1, r0, 0 - lsrs r1, r7 - adds r2, r0, 0 - lsls r2, r5 -_0803F07A: - adds r4, 0x4 - ldr r0, [r3] - orrs r0, r2 - str r0, [r3] - ldr r0, [r3, 0x20] - orrs r0, r1 - str r0, [r3, 0x20] - adds r3, 0x4 - subs r6, 0x1 - cmp r6, 0 - bge _0803F056 - mov r5, r9 - cmp r5, 0x1F - ble _0803F09C - subs r5, 0x20 - movs r3, 0x20 - add r8, r3 -_0803F09C: - ldr r2, [sp, 0x54] - cmp r2, 0x3 - ble _0803F032 - movs r0, 0x4 - b _0803F26A -_0803F0A6: - ldr r0, _0803F0D8 - ldr r1, [sp, 0x48] - cmp r1, r0 - ble _0803F0B0 - str r0, [sp, 0x48] -_0803F0B0: - ldr r0, _0803F0DC - ldr r2, [sp, 0x48] - cmp r2, r0 - bge _0803F0BA - str r0, [sp, 0x48] -_0803F0BA: - ldr r1, _0803F0E0 - ldr r0, [r1] - ldr r0, [r0, 0x4] - movs r3, 0xC2 - lsls r3, 1 - adds r2, r0, r3 - cmp r5, 0 - beq _0803F0F4 - ldr r5, [sp, 0x48] - cmp r5, 0 - ble _0803F0E4 - movs r1, 0xA2 - lsls r1, 1 - adds r2, r0, r1 - b _0803F0F4 - .align 2, 0 -_0803F0D8: .4byte 0x000003e7 -_0803F0DC: .4byte 0xfffffc19 -_0803F0E0: .4byte gUnknown_202EC9C -_0803F0E4: - ldr r3, [sp, 0x48] - cmp r3, 0 - bge _0803F0F4 - movs r5, 0xB2 - lsls r5, 1 - adds r2, r0, r5 - negs r3, r3 - str r3, [sp, 0x48] -_0803F0F4: - ldm r2!, {r0} - mov r1, r8 - str r0, [r1] - ldm r2!, {r0} - str r0, [r1, 0x4] - ldm r2!, {r0} - str r0, [r1, 0x8] - ldm r2!, {r0} - str r0, [r1, 0xC] - ldm r2!, {r0} - str r0, [r1, 0x10] - ldm r2!, {r0} - str r0, [r1, 0x14] - ldm r2!, {r0} - str r0, [r1, 0x18] - ldr r0, [r2] - str r0, [r1, 0x1C] - movs r5, 0x18 - movs r2, 0x1 - str r2, [sp, 0x4C] - movs r3, 0 - str r3, [sp, 0x50] - movs r2, 0 -_0803F122: - movs r0, 0 - mov r10, r0 - adds r1, r2, 0x1 - str r1, [sp, 0x54] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - mov r1, sp - ldr r2, _0803F15C - adds r7, r0, r2 -_0803F136: - ldr r0, [r7] - ldr r3, [sp, 0x48] - cmp r0, r3 - bgt _0803F1A2 - ldr r4, [r1] - mov r2, r8 - movs r0, 0x18 - adds r0, r5 - mov r9, r0 - movs r1, 0x20 - subs r1, r5 - mov r12, r1 - movs r6, 0x7 -_0803F150: - cmp r5, 0 - bne _0803F160 - movs r3, 0 - ldr r1, [r4] - b _0803F16C - .align 2, 0 -_0803F15C: .4byte gUnknown_80F6430 -_0803F160: - ldr r0, [r4] - adds r3, r0, 0 - mov r1, r12 - lsrs r3, r1 - adds r1, r0, 0 - lsls r1, r5 -_0803F16C: - adds r4, 0x4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r0, [r2, 0x20] - orrs r0, r3 - str r0, [r2, 0x20] - adds r2, 0x4 - movs r3, 0x1 - str r3, [sp, 0x50] - subs r6, 0x1 - cmp r6, 0 - bge _0803F150 - mov r5, r9 - cmp r5, 0x1F - ble _0803F192 - subs r5, 0x20 - movs r0, 0x20 - add r8, r0 -_0803F192: - ldr r0, [r7] - ldr r1, [sp, 0x48] - subs r1, r0 - str r1, [sp, 0x48] - ldr r2, [sp, 0x4C] - adds r2, 0x1 - str r2, [sp, 0x4C] - b _0803F1B0 -_0803F1A2: - adds r1, 0x4 - adds r7, 0x4 - movs r3, 0x1 - add r10, r3 - mov r0, r10 - cmp r0, 0x8 - ble _0803F136 -_0803F1B0: - mov r1, r10 - cmp r1, 0x9 - bne _0803F212 - ldr r2, [sp, 0x50] - cmp r2, 0 - beq _0803F212 - ldr r3, _0803F1DC - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r4, r0, 0x4 - mov r2, r8 - movs r0, 0x18 - adds r0, r5 - mov r9, r0 - movs r1, 0x20 - subs r7, r1, r5 - movs r6, 0x7 -_0803F1D2: - cmp r5, 0 - bne _0803F1E0 - movs r3, 0 - ldr r1, [r4] - b _0803F1EA - .align 2, 0 -_0803F1DC: .4byte gUnknown_202EC9C -_0803F1E0: - ldr r0, [r4] - adds r3, r0, 0 - lsrs r3, r7 - adds r1, r0, 0 - lsls r1, r5 -_0803F1EA: - adds r4, 0x4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - ldr r0, [r2, 0x20] - orrs r0, r3 - str r0, [r2, 0x20] - adds r2, 0x4 - subs r6, 0x1 - cmp r6, 0 - bge _0803F1D2 - mov r5, r9 - cmp r5, 0x1F - ble _0803F20C - subs r5, 0x20 - movs r2, 0x20 - add r8, r2 -_0803F20C: - ldr r3, [sp, 0x4C] - adds r3, 0x1 - str r3, [sp, 0x4C] -_0803F212: - ldr r2, [sp, 0x54] - cmp r2, 0x1 - ble _0803F122 - ldr r0, _0803F240 - ldr r1, [r0] - ldr r2, [sp, 0x48] - lsls r0, r2, 5 - adds r0, 0x4 - ldr r1, [r1, 0x4] - adds r1, r0 - mov r3, r8 - ldr r0, [sp, 0x4C] - adds r0, 0x1 - mov r8, r0 - movs r0, 0x20 - subs r7, r0, r5 - movs r6, 0x7 -_0803F234: - cmp r5, 0 - bne _0803F244 - movs r4, 0 - ldr r2, [r1] - b _0803F24E - .align 2, 0 -_0803F240: .4byte gUnknown_202EC9C -_0803F244: - ldr r0, [r1] - adds r4, r0, 0 - lsrs r4, r7 - adds r2, r0, 0 - lsls r2, r5 -_0803F24E: - adds r1, 0x4 - ldr r0, [r3] - orrs r0, r2 - str r0, [r3] - ldr r0, [r3, 0x20] - orrs r0, r4 - str r0, [r3, 0x20] - adds r3, 0x4 - subs r6, 0x1 - cmp r6, 0 - bge _0803F234 - mov r1, r8 - str r1, [sp, 0x4C] - adds r0, r1, 0 -_0803F26A: - add sp, 0x58 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_803EF90 - - thumb_func_start sub_803F27C -sub_803F27C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - ldr r0, _0803F360 - mov r8, r0 - ldr r4, [r0] - ldr r2, _0803F364 - adds r1, r4, r2 - movs r2, 0 - movs r3, 0 - strh r3, [r1, 0x8] - strh r3, [r1, 0xA] - strh r3, [r1] - strh r3, [r1, 0x2] - strh r3, [r1, 0xC] - strh r3, [r1, 0xE] - strh r3, [r1, 0x4] - strh r3, [r1, 0x6] - str r3, [r1, 0x14] - ldr r5, _0803F368 - adds r0, r4, r5 - strb r2, [r0] - ldr r6, _0803F36C - adds r0, r4, r6 - movs r5, 0x1 - strb r5, [r0] - adds r6, 0x1 - adds r0, r4, r6 - strb r5, [r0] - adds r6, 0x1 - adds r0, r4, r6 - strb r2, [r0] - str r3, [r1, 0x18] - str r3, [r1, 0x1C] - cmp r7, 0 - bne _0803F2FA - subs r6, 0xF - adds r0, r4, r6 - strb r2, [r0] - adds r6, 0x6 - adds r0, r4, r6 - strb r2, [r0] - subs r6, 0x1 - adds r0, r4, r6 - strb r2, [r0] - subs r6, 0x2 - adds r0, r4, r6 - strb r2, [r0] - adds r6, 0x4 - adds r0, r4, r6 - strb r2, [r0] - subs r6, 0x3 - adds r0, r4, r6 - strb r2, [r0] - subs r6, 0x3 - adds r0, r4, r6 - strb r2, [r0] - adds r6, 0x1 - adds r0, r4, r6 - strb r2, [r0] -_0803F2FA: - str r3, [r1, 0x10] - ldr r1, _0803F370 - adds r0, r4, r1 - movs r6, 0x3 - strb r6, [r0] - adds r1, 0x12 - adds r0, r4, r1 - strb r2, [r0] - subs r1, 0x8 - adds r0, r4, r1 - strb r2, [r0] - adds r1, 0x9 - adds r0, r4, r1 - strb r2, [r0] - adds r1, 0x1 - adds r0, r4, r1 - strb r2, [r0] - subs r1, 0x8 - adds r0, r4, r1 - strb r2, [r0] - ldr r2, _0803F374 - adds r0, r4, r2 - strb r5, [r0] - bl sub_803F38C - ldr r1, _0803F378 - ldr r0, _0803F37C - str r0, [r1] - cmp r7, 0 - bne _0803F354 - mov r1, r8 - ldr r0, [r1] - ldr r2, _0803F380 - adds r0, r2 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - ldr r6, _0803F384 - adds r1, r4, r6 - strb r0, [r1] - cmp r0, 0 - bne _0803F354 - ldr r1, _0803F388 - adds r0, r4, r1 - strb r5, [r0] -_0803F354: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803F360: .4byte gDungeon -_0803F364: .4byte 0x000181e8 -_0803F368: .4byte 0x00018216 -_0803F36C: .4byte 0x00018217 -_0803F370: .4byte 0x00018208 -_0803F374: .4byte 0x00018215 -_0803F378: .4byte gUnknown_202EDFC -_0803F37C: .4byte 0x0000ffff -_0803F380: .4byte 0x0001c58a -_0803F384: .4byte 0x00018209 -_0803F388: .4byte 0x0001820c - thumb_func_end sub_803F27C - - thumb_func_start sub_803F38C -sub_803F38C: - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r0, _0803F410 - ldr r1, [r0] - ldr r0, _0803F414 - adds r2, r1, r0 - ldr r0, _0803F418 - strh r0, [r2, 0x3A] - movs r0, 0x1 - negs r0, r0 - strh r0, [r2, 0x3C] - strh r0, [r2, 0x3E] - ldr r0, _0803F41C - adds r1, r0 - movs r0, 0x1 - negs r0, r0 - strh r0, [r1] - strh r0, [r2, 0x36] - strh r0, [r2, 0x38] - ldr r0, _0803F420 - ldr r0, [r0] - ldrb r0, [r0, 0xB] - negs r4, r0 - orrs r4, r0 - asrs r4, 31 - movs r0, 0x80 - lsls r0, 1 - ands r4, r0 - ldr r5, _0803F424 - adds r0, r4, r5 - mov r8, r0 - movs r0, 0xFD - mov r1, r8 - bl SetBGPaletteBufferColorArray - adds r6, r5, 0x4 - adds r6, r4, r6 - movs r0, 0xFE - adds r1, r6, 0 - bl SetBGPaletteBufferColorArray - adds r5, 0x8 - adds r4, r5 - movs r0, 0xFF - adds r1, r4, 0 - bl SetBGPaletteBufferColorArray - movs r0, 0xFD - mov r1, r8 - bl nullsub_5 - movs r0, 0xFE - adds r1, r6, 0 - bl nullsub_5 - movs r0, 0xFF - adds r1, r4, 0 - bl nullsub_5 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803F410: .4byte gDungeon -_0803F414: .4byte 0x000181e8 -_0803F418: .4byte 0x0000ffff -_0803F41C: .4byte 0x00018228 -_0803F420: .4byte gGameOptionsRef -_0803F424: .4byte gUnknown_202D06C - thumb_func_end sub_803F38C - - thumb_func_start sub_803F428 -sub_803F428: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _0803F484 - ldr r3, [r0] - ldr r0, _0803F488 - adds r2, r3, r0 - ldr r5, [r2, 0x10] - movs r6, 0 - ldrsh r1, [r2, r6] - movs r6, 0 - ldrsh r0, [r4, r6] - subs r1, r0 - cmp r1, 0 - bge _0803F446 - negs r1, r1 -_0803F446: - cmp r1, 0x6 - bgt _0803F498 - movs r0, 0x2 - ldrsh r1, [r2, r0] - movs r6, 0x2 - ldrsh r0, [r4, r6] - subs r1, r0 - cmp r1, 0 - bge _0803F45A - negs r1, r1 -_0803F45A: - cmp r1, 0x5 - bgt _0803F498 - ldr r1, _0803F48C - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F494 - ldr r6, _0803F490 - adds r0, r3, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F494 - cmp r5, 0 - beq _0803F494 - adds r0, r2, 0 - adds r1, r4, 0 - bl IsPositionActuallyInSight - lsls r0, 24 - lsrs r0, 24 - b _0803F49A - .align 2, 0 -_0803F484: .4byte gDungeon -_0803F488: .4byte 0x000181e8 -_0803F48C: .4byte 0x0001820b -_0803F490: .4byte 0x0001820c -_0803F494: - movs r0, 0x1 - b _0803F49A -_0803F498: - movs r0, 0 -_0803F49A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_803F428 - - thumb_func_start sub_803F4A0 -sub_803F4A0: - push {lr} - adds r2, r0, 0 - ldr r0, _0803F4B8 - ldr r1, [r0] - ldr r3, _0803F4BC - adds r0, r1, r3 - str r2, [r0, 0x10] - cmp r2, 0 - bne _0803F4C0 - adds r3, 0x2E - b _0803F4CA - .align 2, 0 -_0803F4B8: .4byte gDungeon -_0803F4BC: .4byte 0x000181e8 -_0803F4C0: - ldr r0, [r2, 0x70] - ldrb r2, [r0, 0x7] - cmp r2, 0 - bne _0803F4D4 - ldr r3, _0803F4D0 -_0803F4CA: - adds r0, r1, r3 - strb r2, [r0] - b _0803F4DC - .align 2, 0 -_0803F4D0: .4byte 0x00018216 -_0803F4D4: - ldr r0, _0803F4FC - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] -_0803F4DC: - movs r0, 0 - bl sub_803F580 - bl sub_803F38C - ldr r0, _0803F500 - ldr r0, [r0] - ldr r1, _0803F504 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F4F8 - bl sub_806CD90 -_0803F4F8: - pop {r0} - bx r0 - .align 2, 0 -_0803F4FC: .4byte 0x00018216 -_0803F500: .4byte gDungeon -_0803F504: .4byte 0x0001356c - thumb_func_end sub_803F4A0 - - thumb_func_start sub_803F508 -sub_803F508: - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _0803F520 - ldr r1, [r0] - ldr r0, _0803F524 - adds r4, r1, r0 - cmp r3, 0 - bne _0803F52C - ldr r2, _0803F528 - adds r0, r1, r2 - strb r3, [r0] - b _0803F548 - .align 2, 0 -_0803F520: .4byte gDungeon -_0803F524: .4byte 0x000181e8 -_0803F528: .4byte 0x00018216 -_0803F52C: - ldr r0, [r3, 0x70] - ldrb r2, [r0, 0x7] - cmp r2, 0 - bne _0803F540 - ldr r5, _0803F53C - adds r0, r1, r5 - strb r2, [r0] - b _0803F548 - .align 2, 0 -_0803F53C: .4byte 0x00018216 -_0803F540: - ldr r0, _0803F574 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] -_0803F548: - str r3, [r4, 0x10] - movs r0, 0 - bl sub_803F580 - bl sub_803F38C - ldr r0, _0803F578 - ldr r0, [r0] - ldr r1, _0803F57C - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F566 - bl sub_806CD90 -_0803F566: - bl sub_8049ED4 - bl sub_8040A84 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803F574: .4byte 0x00018216 -_0803F578: .4byte gDungeon -_0803F57C: .4byte 0x0001356c - thumb_func_end sub_803F508 - - thumb_func_start sub_803F580 -sub_803F580: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _0803F600 - ldr r4, [r0] - ldr r0, _0803F604 - adds r5, r4, r0 - ldr r6, [r5, 0x10] - cmp r6, 0 - bne _0803F59E - b _0803F7A0 -_0803F59E: - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0803F5AC - b _0803F7A0 -_0803F5AC: - ldr r7, [r6, 0x70] - ldr r0, [r5, 0x8] - str r0, [r5, 0xC] - ldr r0, [r5] - str r0, [r5, 0x4] - ldrh r0, [r6, 0x4] - strh r0, [r5] - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2] - ldr r0, [r6, 0xC] - cmp r0, 0 - bge _0803F5C6 - adds r0, 0xFF -_0803F5C6: - asrs r0, 8 - subs r0, 0x78 - strh r0, [r5, 0x8] - ldr r0, [r6, 0x10] - cmp r0, 0 - bge _0803F5D4 - adds r0, 0xFF -_0803F5D4: - asrs r0, 8 - subs r0, 0x60 - strh r0, [r5, 0xA] - adds r0, r6, 0 - movs r1, 0x11 - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _0803F610 - ldrb r0, [r7, 0x7] - cmp r0, 0 - beq _0803F610 - ldr r1, _0803F608 - adds r0, r4, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r2, _0803F60C - adds r0, r4, r2 - strb r1, [r0] - b _0803F626 - .align 2, 0 -_0803F600: .4byte gDungeon -_0803F604: .4byte 0x000181e8 -_0803F608: .4byte 0x0001820d -_0803F60C: .4byte 0x0001820e -_0803F610: - adds r0, r7, 0 - adds r0, 0xF0 - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x25 - strb r0, [r1] - adds r0, r7, 0 - adds r0, 0xF1 - ldrb r0, [r0] - adds r1, 0x1 - strb r0, [r1] -_0803F626: - adds r0, r7, 0 - adds r0, 0xF2 - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x29 - strb r0, [r1] - subs r1, 0x7 - ldrb r0, [r1] - mov r8, r0 - adds r0, r5, 0 - adds r0, 0x2C - ldrb r2, [r0] - adds r4, r1, 0 - cmp r2, 0 - bne _0803F670 - adds r0, r7, 0 - adds r0, 0xE8 - ldrb r1, [r0] - adds r7, r0, 0 - cmp r1, 0x1 - bne _0803F656 - strb r1, [r4] - movs r1, 0xE - b _0803F65A -_0803F656: - strb r2, [r4] - movs r1, 0 -_0803F65A: - ldr r2, _0803F66C - ldr r0, [r2] - cmp r0, r1 - beq _0803F678 - str r1, [r2] - adds r0, r1, 0 - bl SetBGOBJEnableFlags - b _0803F678 - .align 2, 0 -_0803F66C: .4byte gUnknown_202EDFC -_0803F670: - ldr r1, _0803F698 - ldr r0, _0803F69C - str r0, [r1] - adds r7, 0xE8 -_0803F678: - ldrb r4, [r4] - cmp r8, r4 - beq _0803F684 - movs r0, 0 - bl sub_8041888 -_0803F684: - adds r0, r5, 0 - adds r0, 0x28 - ldrb r1, [r0] - mov r8, r1 - ldrb r1, [r7] - adds r2, r0, 0 - cmp r1, 0x2 - bne _0803F6A0 - movs r0, 0x1 - b _0803F6A2 - .align 2, 0 -_0803F698: .4byte gUnknown_202EDFC -_0803F69C: .4byte 0x0000ffff -_0803F6A0: - movs r0, 0 -_0803F6A2: - strb r0, [r2] - ldrb r2, [r2] - cmp r8, r2 - beq _0803F6B4 - bl sub_806CC70 - movs r0, 0 - bl sub_8041888 -_0803F6B4: - adds r4, r5, 0 - adds r4, 0x27 - ldrb r2, [r4] - mov r8, r2 - adds r0, r6, 0 - bl CanSeeInvisibleMonsters - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0803F6CC - movs r0, 0x1 -_0803F6CC: - strb r0, [r4] - ldrb r4, [r4] - cmp r8, r4 - beq _0803F6E2 - bl sub_8049ED4 - bl sub_8040A84 - movs r0, 0 - bl sub_8041888 -_0803F6E2: - mov r0, r9 - cmp r0, 0 - beq _0803F76A - adds r0, r5, 0 - adds r0, 0x2B - ldrb r1, [r0] - adds r4, r0, 0 - cmp r1, 0 - bne _0803F76A - movs r2, 0xC - ldrsh r1, [r5, r2] - movs r2, 0x8 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0803F704 - negs r1, r1 -_0803F704: - cmp r1, 0x7 - bgt _0803F71C - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r2, 0xA - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0803F718 - negs r1, r1 -_0803F718: - cmp r1, 0x7 - ble _0803F726 -_0803F71C: - bl sub_8049ED4 - movs r0, 0x1 - strb r0, [r4] - b _0803F76A -_0803F726: - movs r0, 0xC - ldrsh r1, [r5, r0] - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _0803F73C - movs r0, 0xF0 - movs r1, 0 - bl sub_804A1F0 - b _0803F748 -_0803F73C: - cmp r1, r0 - ble _0803F748 - movs r0, 0 - movs r1, 0 - bl sub_804A1F0 -_0803F748: - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r2, 0xA - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _0803F75E - movs r0, 0 - movs r1, 0xA0 - bl sub_804A49C - b _0803F76A -_0803F75E: - cmp r1, r0 - ble _0803F76A - movs r0, 0 - movs r1, 0 - bl sub_804A49C -_0803F76A: - ldr r1, [r5] - ldr r0, [r5, 0x4] - cmp r1, r0 - beq _0803F7A0 - movs r5, 0 -_0803F774: - ldr r0, _0803F7B4 - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _0803F7B8 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0803F79A - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl sub_80402AC -_0803F79A: - adds r5, 0x1 - cmp r5, 0x13 - ble _0803F774 -_0803F7A0: - bl sub_80400D4 - bl sub_803F7BC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803F7B4: .4byte gDungeon -_0803F7B8: .4byte 0x000135cc - thumb_func_end sub_803F580 - - thumb_func_start sub_803F7BC -sub_803F7BC: - push {r4-r6,lr} - sub sp, 0x10 - ldr r6, _0803F800 - ldr r4, [r6] - ldr r0, _0803F804 - adds r5, r4, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r2, 0x2 - ldrsh r1, [r5, r2] - bl GetTile - ldrb r1, [r0, 0x9] - ldr r2, _0803F808 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F7F4 - adds r2, 0x1 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803F7F4 - adds r2, 0xB - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0803F80C -_0803F7F4: - movs r0, 0 - movs r1, 0 - bl sub_8005838 - b _0803F86A - .align 2, 0 -_0803F800: .4byte gDungeon -_0803F804: .4byte 0x000181e8 -_0803F808: .4byte 0x0001820b -_0803F80C: - cmp r1, 0xFF - bne _0803F82C - ldr r1, _0803F828 - adds r0, r4, r1 - ldrb r0, [r0] - movs r1, 0x2 - cmp r0, 0x2 - bne _0803F81E - movs r1, 0x1 -_0803F81E: - movs r0, 0 - bl sub_8005838 - b _0803F86A - .align 2, 0 -_0803F828: .4byte 0x00018209 -_0803F82C: - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _0803F874 - adds r0, r2 - ldr r2, [r6] - adds r2, r0 - movs r0, 0x8 - ldrsh r1, [r5, r0] - ldr r0, [r2, 0xC] - subs r0, r1 - str r0, [sp] - movs r0, 0xA - ldrsh r1, [r5, r0] - ldr r0, [r2, 0x10] - subs r0, r1 - str r0, [sp, 0x4] - movs r0, 0x8 - ldrsh r1, [r5, r0] - ldr r0, [r2, 0x14] - subs r0, r1 - str r0, [sp, 0x8] - movs r0, 0xA - ldrsh r1, [r5, r0] - ldr r0, [r2, 0x18] - subs r0, r1 - str r0, [sp, 0xC] - mov r0, sp - movs r1, 0x3 - bl sub_8005838 -_0803F86A: - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803F874: .4byte 0x000104c4 - thumb_func_end sub_803F7BC - - thumb_func_start sub_803F878 -sub_803F878: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r2, r0, 0 - adds r6, r1, 0 - ldr r0, _0803F92C - ldr r7, [r0] - ldr r0, _0803F930 - adds r5, r7, r0 - ldr r0, [r5, 0x8] - str r0, [r5, 0xC] - ldr r0, [r5] - str r0, [r5, 0x4] - adds r0, r2, 0 - cmp r2, 0 - bge _0803F89A - adds r0, 0xFF -_0803F89A: - asrs r0, 8 - subs r0, 0x78 - movs r1, 0 - mov r8, r1 - strh r0, [r5, 0x8] - adds r0, r6, 0 - cmp r6, 0 - bge _0803F8AC - adds r0, 0xFF -_0803F8AC: - asrs r0, 8 - subs r0, 0x60 - strh r0, [r5, 0xA] - movs r4, 0xC0 - lsls r4, 5 - adds r0, r2, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r5] - adds r0, r6, 0 - adds r1, r4, 0 - bl __divsi3 - strh r0, [r5, 0x2] - ldr r2, _0803F934 - adds r0, r7, r2 - mov r1, r8 - strb r1, [r0] - adds r2, 0x1 - adds r0, r7, r2 - strb r1, [r0] - ldr r1, _0803F938 - adds r0, r7, r1 - mov r2, r8 - strb r2, [r0] - adds r1, 0x5 - adds r0, r7, r1 - strb r2, [r0] - ldr r1, _0803F93C - ldr r0, [r1] - cmp r0, 0 - beq _0803F8F6 - movs r0, 0 - str r0, [r1] - bl SetBGOBJEnableFlags -_0803F8F6: - movs r2, 0xC - ldrsh r1, [r5, r2] - movs r2, 0x8 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0803F906 - negs r1, r1 -_0803F906: - cmp r1, 0x7 - bgt _0803F91E - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r2, 0xA - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0803F91A - negs r1, r1 -_0803F91A: - cmp r1, 0x7 - ble _0803F940 -_0803F91E: - bl sub_8049ED4 - adds r1, r5, 0 - adds r1, 0x2B - movs r0, 0x1 - strb r0, [r1] - b _0803F984 - .align 2, 0 -_0803F92C: .4byte gDungeon -_0803F930: .4byte 0x000181e8 -_0803F934: .4byte 0x0001820d -_0803F938: .4byte 0x00018211 -_0803F93C: .4byte gUnknown_202EDFC -_0803F940: - movs r0, 0xC - ldrsh r1, [r5, r0] - movs r2, 0x8 - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _0803F956 - movs r0, 0xF0 - movs r1, 0 - bl sub_804A1F0 - b _0803F962 -_0803F956: - cmp r1, r0 - ble _0803F962 - movs r0, 0 - movs r1, 0 - bl sub_804A1F0 -_0803F962: - movs r0, 0xE - ldrsh r1, [r5, r0] - movs r2, 0xA - ldrsh r0, [r5, r2] - cmp r1, r0 - bge _0803F978 - movs r0, 0 - movs r1, 0xA0 - bl sub_804A49C - b _0803F984 -_0803F978: - cmp r1, r0 - ble _0803F984 - movs r0, 0 - movs r1, 0 - bl sub_804A49C -_0803F984: - bl sub_803F7BC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_803F878 - - thumb_func_start GetCameraXPos -GetCameraXPos: - ldr r0, _0803F9A8 - ldr r0, [r0] - ldr r1, _0803F9AC - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - adds r0, 0x78 - lsls r0, 8 - bx lr - .align 2, 0 -_0803F9A8: .4byte gDungeon -_0803F9AC: .4byte 0x000181e8 - thumb_func_end GetCameraXPos - - thumb_func_start GetCameraYPos -GetCameraYPos: - ldr r0, _0803F9C4 - ldr r0, [r0] - ldr r1, _0803F9C8 - adds r0, r1 - movs r1, 0xA - ldrsh r0, [r0, r1] - adds r0, 0x60 - lsls r0, 8 - bx lr - .align 2, 0 -_0803F9C4: .4byte gDungeon -_0803F9C8: .4byte 0x000181e8 - thumb_func_end GetCameraYPos - - thumb_func_start sub_803F9CC -sub_803F9CC: - push {r4,r5,lr} - ldr r0, _0803FA24 - ldr r1, [r0] - ldr r2, _0803FA28 - adds r0, r1, r2 - ldr r4, [r0] - movs r5, 0 - ldr r2, _0803FA2C - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803FA0C - ldr r2, _0803FA30 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0803FA0C - bl sub_800EC74 - lsls r0, 24 - cmp r0, 0 - bne _0803FA0C - cmp r4, 0 - beq _0803FA08 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - bne _0803FA08 - movs r5, 0x1 -_0803FA08: - cmp r5, 0 - bne _0803FA38 -_0803FA0C: - ldr r0, _0803FA34 - movs r2, 0 - adds r0, 0x2 - movs r1, 0x1C -_0803FA14: - strh r2, [r0] - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _0803FA14 - bl sub_803F38C - b _0803FA3C - .align 2, 0 -_0803FA24: .4byte gDungeon -_0803FA28: .4byte 0x000181f8 -_0803FA2C: .4byte 0x0001356c -_0803FA30: .4byte 0x00018218 -_0803FA34: .4byte gUnknown_202B038 -_0803FA38: - bl sub_803FB74 -_0803FA3C: - ldr r1, _0803FA48 - movs r0, 0x1 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803FA48: .4byte gUnknown_20274A5 - thumb_func_end sub_803F9CC - - thumb_func_start sub_803FA4C -sub_803FA4C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - adds r4, r0, 0 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r12, r2 - ldr r0, _0803FB4C - ldr r3, [r0] - ldr r0, _0803FB50 - adds r0, r3, r0 - str r0, [sp, 0x24] - ldr r7, _0803FB54 - mov r1, sp - ldr r0, _0803FB58 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, _0803FB5C - mov r10, r0 - ldr r1, _0803FB60 - mov r9, r1 - ldr r2, [sp, 0x24] - movs r5, 0x3E - ldrsh r0, [r2, r5] - cmp r4, r0 - bne _0803FA9C - ldr r6, _0803FB64 - adds r0, r3, r6 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r8, r0 - beq _0803FB3A -_0803FA9C: - mov r2, r12 - cmp r2, 0 - bne _0803FAA6 - ldr r5, _0803FB68 - mov r9, r5 -_0803FAA6: - ldr r6, [sp, 0x24] - strh r4, [r6, 0x3E] - ldr r1, _0803FB64 - adds r0, r3, r1 - mov r2, r8 - strh r2, [r0] - mov r5, r8 - cmp r5, 0x5F - ble _0803FAC8 - movs r5, 0x60 - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 5 - mov r1, r8 - bl __divsi3 - adds r4, r0, 0 -_0803FAC8: - movs r3, 0 - mov r8, r3 - movs r6, 0x58 - mov r12, r6 -_0803FAD0: - ldr r6, _0803FB6C - adds r2, r4, 0 - adds r0, r5, 0 - cmp r4, 0x7 - ble _0803FADC - movs r2, 0x8 -_0803FADC: - cmp r5, 0x7 - ble _0803FAE2 - movs r0, 0x8 -_0803FAE2: - lsls r0, 2 - mov r3, sp - adds r1, r3, r0 - lsls r0, r2, 2 - add r0, sp - ldr r2, [r0] - ldr r3, [r1] - adds r1, r3, 0 - bics r1, r2 - mov r0, r10 - ands r1, r0 - mov r0, r9 - ands r0, r2 - orrs r0, r1 - ands r6, r3 - mov r1, r8 - stm r7!, {r1} - stm r7!, {r6} - stm r7!, {r0} - stm r7!, {r0} - stm r7!, {r0} - stm r7!, {r0} - stm r7!, {r6} - stm r7!, {r1} - subs r4, 0x8 - subs r5, 0x8 - cmp r4, 0 - bge _0803FB1C - movs r4, 0 -_0803FB1C: - cmp r5, 0 - bge _0803FB22 - movs r5, 0 -_0803FB22: - movs r2, 0x8 - negs r2, r2 - add r12, r2 - mov r3, r12 - cmp r3, 0 - bge _0803FAD0 - ldr r0, _0803FB70 - movs r2, 0xC0 - lsls r2, 1 - ldr r1, _0803FB54 - bl sub_80098BC -_0803FB3A: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803FB4C: .4byte gDungeon -_0803FB50: .4byte 0x000181e8 -_0803FB54: .4byte gUnknown_3001018 -_0803FB58: .4byte gUnknown_80F6490 -_0803FB5C: .4byte 0x22222222 -_0803FB60: .4byte 0x44444444 -_0803FB64: .4byte 0x00018228 -_0803FB68: .4byte 0x55555555 -_0803FB6C: .4byte 0x77777777 -_0803FB70: .4byte 0x06005980 - thumb_func_end sub_803FA4C - - thumb_func_start sub_803FB74 -sub_803FB74: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0803FBE8 - ldr r0, [r0] - ldr r1, _0803FBEC - adds r7, r0, r1 - movs r4, 0 - movs r2, 0 - str r2, [sp] - ldr r0, [r7, 0x10] - ldr r0, [r0, 0x70] - movs r1, 0xE - ldrsh r3, [r0, r1] - mov r9, r3 - movs r3, 0x10 - ldrsh r2, [r0, r3] - mov r8, r2 - ldrb r1, [r0, 0x9] - mov r10, r1 - movs r2, 0xE - ldrsh r1, [r0, r2] - cmp r1, 0 - ble _0803FBBA - mov r0, r8 - cmp r0, 0 - bge _0803FBB2 - adds r0, 0x3 -_0803FBB2: - asrs r0, 2 - cmp r1, r0 - bgt _0803FBBA - movs r4, 0x1 -_0803FBBA: - ldr r0, [r7, 0x10] - ldr r0, [r0, 0x70] - movs r3, 0x9E - lsls r3, 1 - adds r0, r3 - ldr r0, [r0] - bl RoundUpFixedPoint - cmp r0, 0 - bne _0803FBD2 - movs r0, 0x1 - str r0, [sp] -_0803FBD2: - cmp r4, 0 - beq _0803FBF4 - ldr r0, _0803FBF0 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0803FBF4 - movs r5, 0x20 - movs r6, 0x20 - b _0803FBF8 - .align 2, 0 -_0803FBE8: .4byte gDungeon -_0803FBEC: .4byte 0x000181e8 -_0803FBF0: .4byte gUnknown_202EDCC -_0803FBF4: - movs r5, 0 - movs r6, 0 -_0803FBF8: - ldr r1, [sp] - cmp r1, 0 - beq _0803FC0E - ldr r0, _0803FC20 - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0803FC0E - movs r5, 0x30 - movs r6, 0x30 -_0803FC0E: - cmp r5, 0 - bne _0803FC30 - adds r0, r7, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, 0 - beq _0803FC24 - movs r5, 0x60 - b _0803FC30 - .align 2, 0 -_0803FC20: .4byte gUnknown_202EDCC -_0803FC24: - ldr r0, _0803FCE4 - ldr r0, [r0] - ldrb r0, [r0, 0xB] - cmp r0, 0 - beq _0803FC30 - movs r5, 0x40 -_0803FC30: - cmp r6, 0 - bne _0803FC40 - ldr r0, _0803FCE4 - ldr r0, [r0] - ldrb r0, [r0, 0xB] - cmp r0, 0 - beq _0803FC40 - movs r6, 0x40 -_0803FC40: - movs r2, 0x36 - ldrsh r0, [r7, r2] - cmp r0, r5 - beq _0803FC78 - strh r5, [r7, 0x36] - lsls r5, 2 - ldr r4, _0803FCE8 - adds r1, r5, r4 - movs r0, 0xFC - bl SetBGPaletteBufferColorArray - adds r1, r4, 0x4 - adds r1, r5, r1 - movs r0, 0xFD - bl SetBGPaletteBufferColorArray - adds r1, r4, 0 - adds r1, 0x8 - adds r1, r5, r1 - movs r0, 0xFE - bl SetBGPaletteBufferColorArray - adds r4, 0xC - adds r5, r4 - movs r0, 0xFF - adds r1, r5, 0 - bl SetBGPaletteBufferColorArray -_0803FC78: - movs r3, 0x38 - ldrsh r0, [r7, r3] - cmp r0, r6 - beq _0803FCB0 - strh r6, [r7, 0x38] - lsls r5, r6, 2 - ldr r4, _0803FCE8 - adds r1, r5, r4 - movs r0, 0xFC - bl nullsub_5 - adds r1, r4, 0x4 - adds r1, r5, r1 - movs r0, 0xFD - bl nullsub_5 - adds r1, r4, 0 - adds r1, 0x8 - adds r1, r5, r1 - movs r0, 0xFE - bl nullsub_5 - adds r4, 0xC - adds r5, r4 - movs r0, 0xFF - adds r1, r5, 0 - bl nullsub_5 -_0803FCB0: - ldr r5, _0803FCEC - ldr r0, _0803FCF0 - ldr r2, [r0] - ldr r0, _0803FCF4 - adds r1, r2, r0 - movs r3, 0x14 - ldrsh r0, [r2, r3] - ldrb r1, [r1] - adds r6, r0, r1 - movs r1, 0x3A - ldrsh r0, [r7, r1] - adds r4, r7, 0 - adds r4, 0x2E - cmp r0, r6 - beq _0803FD3E - strh r6, [r7, 0x3A] - ldr r3, _0803FCF8 - adds r0, r2, r3 - ldrb r0, [r0] - bl IsStairDirectionUp - lsls r0, 24 - cmp r0, 0 - beq _0803FCFC - movs r0, 0 - b _0803FD00 - .align 2, 0 -_0803FCE4: .4byte gGameOptionsRef -_0803FCE8: .4byte gUnknown_202D068 -_0803FCEC: .4byte gUnknown_202B038 -_0803FCF0: .4byte gDungeon -_0803FCF4: .4byte 0x00000645 -_0803FCF8: .4byte 0x00000644 -_0803FCFC: - ldr r1, _0803FD20 - adds r0, r1, 0 -_0803FD00: - strh r0, [r5, 0x2] - cmp r6, 0x9 - bgt _0803FD28 - adds r1, r5, 0x4 - adds r4, r7, 0 - adds r4, 0x2E - ldrb r2, [r4] - adds r0, r6, 0 - movs r3, 0x1 - bl sub_803FE30 - ldr r2, _0803FD24 - adds r0, r2, 0 - strh r0, [r5, 0x6] - b _0803FD3E - .align 2, 0 -_0803FD20: .4byte 0x0000f2be -_0803FD24: .4byte 0x0000f2b8 -_0803FD28: - adds r1, r5, 0x4 - adds r4, r7, 0 - adds r4, 0x2E - ldrb r2, [r4] - adds r0, r6, 0 - movs r3, 0 - bl sub_803FE30 - ldr r3, _0803FE10 - adds r0, r3, 0 - strh r0, [r5, 0x8] -_0803FD3E: - movs r1, 0x3C - ldrsh r0, [r7, r1] - cmp r0, r10 - beq _0803FD64 - mov r2, r10 - strh r2, [r7, 0x3C] - ldr r3, _0803FE14 - adds r0, r3, 0 - strh r0, [r5, 0xA] - ldr r1, _0803FE18 - adds r0, r1, 0 - strh r0, [r5, 0xC] - adds r1, r5, 0 - adds r1, 0xE - ldrb r2, [r4] - mov r0, r10 - movs r3, 0 - bl sub_803FE30 -_0803FD64: - movs r2, 0x3E - ldrsh r0, [r7, r2] - cmp r0, r9 - beq _0803FD84 - ldr r3, _0803FE1C - adds r0, r3, 0 - strh r0, [r5, 0x12] - ldr r1, _0803FE20 - adds r0, r1, 0 - strh r0, [r5, 0x14] - adds r1, r5, 0 - adds r1, 0x16 - ldrb r2, [r4] - mov r0, r9 - bl sub_803FF18 -_0803FD84: - adds r6, r7, 0 - adds r6, 0x40 - movs r2, 0 - ldrsh r0, [r6, r2] - cmp r0, r8 - beq _0803FDA2 - ldr r3, _0803FE24 - adds r0, r3, 0 - strh r0, [r5, 0x1C] - adds r1, r5, 0 - adds r1, 0x1E - ldrb r2, [r4] - mov r0, r8 - bl sub_803FF18 -_0803FDA2: - ldrb r2, [r4] - mov r0, r9 - mov r1, r8 - bl sub_803FA4C - mov r0, r8 - strh r0, [r6] - mov r1, r9 - strh r1, [r7, 0x3E] - mov r0, r8 - cmp r0, 0 - bge _0803FDBC - adds r0, 0x7 -_0803FDBC: - asrs r1, r0, 3 - adds r4, r7, 0 - adds r4, 0x42 - strh r1, [r4] - movs r0, 0x7 - mov r2, r8 - ands r2, r0 - cmp r2, 0 - beq _0803FDD2 - adds r0, r1, 0x1 - strh r0, [r4] -_0803FDD2: - movs r3, 0 - ldrsh r0, [r4, r3] - cmp r0, 0xB - ble _0803FDDE - movs r0, 0xC - strh r0, [r4] -_0803FDDE: - movs r1, 0 - ldr r0, _0803FE28 - movs r2, 0xB3 - lsls r2, 2 - adds r4, r2, 0 - ldr r2, _0803FE2C - adds r3, r2, 0 - adds r2, r0, 0 - adds r2, 0x24 -_0803FDF0: - adds r0, r1, r4 - orrs r0, r3 - strh r0, [r2] - adds r2, 0x2 - adds r1, 0x1 - cmp r1, 0xB - ble _0803FDF0 - 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 -_0803FE10: .4byte 0x0000f2b8 -_0803FE14: .4byte 0x0000f2b9 -_0803FE18: .4byte 0x0000f2ba -_0803FE1C: .4byte 0x0000f2bb -_0803FE20: .4byte 0x0000f2bc -_0803FE24: .4byte 0x0000f2bd -_0803FE28: .4byte gUnknown_202B038 -_0803FE2C: .4byte 0xfffff000 - thumb_func_end sub_803FB74 - - thumb_func_start sub_803FE30 -sub_803FE30: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - adds r1, r2, 0 - lsls r3, 24 - lsrs r3, 24 - mov r12, r3 - movs r0, 0 - cmp r2, 0 - bne _0803FE4E - movs r0, 0x37 -_0803FE4E: - cmp r5, 0x64 - ble _0803FE70 - cmp r2, 0 - beq _0803FE60 - ldr r1, _0803FE5C - adds r0, r1, 0 - b _0803FE64 - .align 2, 0 -_0803FE5C: .4byte 0x0000f291 -_0803FE60: - ldr r2, _0803FE6C - adds r0, r2, 0 -_0803FE64: - strh r0, [r4] - strh r0, [r4, 0x2] - b _0803FF00 - .align 2, 0 -_0803FE6C: .4byte 0x0000f2c8 -_0803FE70: - cmp r5, 0x64 - bne _0803FEBC - ldr r1, _0803FE84 - adds r0, r1, 0 - strh r0, [r4] - ldr r2, _0803FE88 - adds r0, r2, 0 - strh r0, [r4, 0x2] - b _0803FF00 - .align 2, 0 -_0803FE84: .4byte 0x0000f294 -_0803FE88: .4byte 0x0000f295 -_0803FE8C: - ldr r1, _0803FEB4 - lsls r0, r6, 3 - adds r0, r6 - adds r0, r2 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r4] - subs r0, r5, r3 - adds r0, r7 - movs r1, 0x96 - lsls r1, 2 - adds r0, r1 - ldr r2, _0803FEB8 - adds r1, r2, 0 - orrs r0, r1 - mov r1, r8 - strh r0, [r1] - b _0803FF00 - .align 2, 0 -_0803FEB4: .4byte gUnknown_80F64D8 -_0803FEB8: .4byte 0xfffff000 -_0803FEBC: - adds r2, r4, 0x2 - mov r8, r2 - adds r7, r0, 0 - adds r7, 0x30 - cmp r5, 0x9 - ble _0803FEE2 - movs r6, 0 - cmp r1, 0 - bne _0803FED0 - movs r6, 0x1 -_0803FED0: - movs r2, 0 - ldr r0, _0803FF0C -_0803FED4: - ldr r3, [r0] - cmp r3, r5 - ble _0803FE8C - adds r0, 0x4 - adds r2, 0x1 - cmp r2, 0x8 - ble _0803FED4 -_0803FEE2: - mov r0, r12 - cmp r0, 0 - bne _0803FEF0 - ldr r1, _0803FF10 - adds r0, r1, 0 - strh r0, [r4] - adds r4, 0x2 -_0803FEF0: - adds r0, r5, r7 - movs r2, 0x96 - lsls r2, 2 - adds r0, r2 - ldr r2, _0803FF14 - adds r1, r2, 0 - orrs r0, r1 - strh r0, [r4] -_0803FF00: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803FF0C: .4byte gUnknown_80F64B4 -_0803FF10: .4byte 0x0000f278 -_0803FF14: .4byte 0xfffff000 - thumb_func_end sub_803FE30 - - thumb_func_start sub_803FF18 -sub_803FF18: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r3, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r6, 0 - cmp r2, 0 - bne _0803FF2E - movs r6, 0x1 -_0803FF2E: - movs r1, 0 - cmp r2, 0 - bne _0803FF36 - movs r1, 0x37 -_0803FF36: - ldr r0, _0803FF54 - cmp r5, r0 - ble _0803FF7C - ldr r0, _0803FF58 - lsls r1, r6, 3 - adds r1, r6 - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r3] - adds r3, 0x2 - strh r0, [r3] - strh r0, [r3, 0x2] - b _0804001A - .align 2, 0 -_0803FF54: .4byte 0x000003e7 -_0803FF58: .4byte gUnknown_80F6544 -_0803FF5C: - ldr r1, _0803FF78 - lsls r0, r6, 3 - adds r0, r6 - adds r0, r4 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3] - adds r3, 0x2 - subs r5, r2 - mov r1, r8 - lsls r0, r1, 24 - lsrs r7, r0, 24 - b _0803FF98 - .align 2, 0 -_0803FF78: .4byte gUnknown_80F6544 -_0803FF7C: - movs r7, 0x20 - movs r4, 0 - adds r1, 0x30 - mov r8, r1 - ldr r2, _0803FFC0 - mov r12, r2 - ldr r0, _0803FFC4 -_0803FF8A: - ldr r2, [r0] - cmp r2, r5 - ble _0803FF5C - adds r0, 0x4 - adds r4, 0x1 - cmp r4, 0x8 - ble _0803FF8A -_0803FF98: - cmp r4, 0x9 - bne _0803FFAC - movs r1, 0x96 - lsls r1, 2 - adds r0, r7, r1 - ldr r2, _0803FFC8 - adds r1, r2, 0 - orrs r0, r1 - strh r0, [r3] - adds r3, 0x2 -_0803FFAC: - movs r4, 0 - mov r0, r12 - ldr r2, [r0] - cmp r2, r5 - bgt _0803FFD0 - ldr r0, _0803FFCC - lsls r1, r6, 3 - adds r1, r6 - b _0803FFE8 - .align 2, 0 -_0803FFC0: .4byte gUnknown_80F6520 -_0803FFC4: .4byte gUnknown_80F64FC -_0803FFC8: .4byte 0xfffff000 -_0803FFCC: .4byte gUnknown_80F6544 -_0803FFD0: - adds r4, 0x1 - cmp r4, 0x8 - bgt _0803FFF4 - lsls r0, r4, 2 - add r0, r12 - ldr r2, [r0] - cmp r2, r5 - bgt _0803FFD0 - ldr r0, _08040024 - lsls r1, r6, 3 - adds r1, r6 - adds r1, r4 -_0803FFE8: - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r3] - adds r3, 0x2 - subs r5, r2 -_0803FFF4: - cmp r4, 0x9 - bne _08040008 - movs r1, 0x96 - lsls r1, 2 - adds r0, r7, r1 - ldr r2, _08040028 - adds r1, r2, 0 - orrs r0, r1 - strh r0, [r3] - adds r3, 0x2 -_08040008: - mov r1, r8 - adds r0, r5, r1 - movs r2, 0x96 - lsls r2, 2 - adds r0, r2 - ldr r2, _08040028 - adds r1, r2, 0 - orrs r0, r1 - strh r0, [r3] -_0804001A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08040024: .4byte gUnknown_80F6544 -_08040028: .4byte 0xfffff000 - thumb_func_end sub_803FF18 - - .align 2,0 @ Don't pad with nop diff --git a/asm/code_803E490.s b/asm/code_803E490.s new file mode 100644 index 000000000..702b3a139 --- /dev/null +++ b/asm/code_803E490.s @@ -0,0 +1,199 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_803E490 +sub_803E490: + push {r4,r5,lr} + sub sp, 0x8 + ldr r1, _0803E4D8 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + bl xxx_draw_string_80524F0 + bl sub_8085F78 + movs r0, 0x1 + bl sub_803F580 + ldr r2, _0803E4DC + ldr r1, [r2] + ldr r3, _0803E4E0 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, 0 + beq _0803E4EC + ldr r4, _0803E4E4 + adds r1, r4 + movs r0, 0x2 + strb r0, [r1] + ldr r1, [r2] + ldr r2, _0803E4E8 + adds r0, r1, r2 + movs r3, 0 + ldrsh r0, [r0, r3] + subs r4, 0x16 + adds r1, r4 + movs r2, 0 + ldrsh r1, [r1, r2] + bl SetBG2RegOffsets + b _0803E4FC + .align 2, 0 +_0803E4D8: .4byte gUnknown_202EDD4 +_0803E4DC: .4byte gDungeon +_0803E4E0: .4byte 0x0001821a +_0803E4E4: .4byte 0x00018208 +_0803E4E8: .4byte 0x000181f0 +_0803E4EC: + ldr r3, _0803E628 + adds r1, r3 + movs r0, 0x3 + strb r0, [r1] + movs r0, 0 + movs r1, 0 + bl SetBG2RegOffsets +_0803E4FC: + ldr r4, _0803E62C + ldr r2, [r4] + ldr r5, _0803E630 + adds r0, r2, r5 + movs r1, 0 + ldrsh r0, [r0, r1] + ldr r3, _0803E634 + adds r1, r2, r3 + movs r3, 0 + ldrsh r1, [r1, r3] + ldr r3, _0803E638 + adds r2, r3 + ldr r2, [r2] + subs r1, r2 + bl SetBG3RegOffsets + bl sub_806CC10 + bl sub_804522C + bl sub_803F9CC + ldr r0, [r4] + adds r0, r5 + bl sub_800F7D0 + ldr r1, [r4] + ldrh r2, [r1, 0x12] + movs r3, 0x12 + ldrsh r0, [r1, r3] + cmp r0, 0x63 + bgt _0803E540 + adds r0, r2, 0x1 + strh r0, [r1, 0x12] +_0803E540: + ldr r0, [r4] + adds r0, r5 + bl sub_800E90C + bl sub_8042E5C + ldr r0, _0803E63C + ldr r0, [r0] + cmp r0, 0 + beq _0803E562 + cmp r0, 0x3 + beq _0803E562 + ldr r0, _0803E640 + ldr r0, [r0] + ldrb r0, [r0, 0x4] + cmp r0, 0x6 + bne _0803E566 +_0803E562: + bl sub_8040894 +_0803E566: + bl sub_803ECE0 + bl sub_803EDF0 + ldr r0, _0803E62C + ldr r3, [r0] + ldr r4, _0803E644 + adds r0, r3, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0803E5A2 + ldr r1, _0803E648 + adds r0, r3, r1 + ldr r0, [r0] + cmp r0, 0x3 + beq _0803E5A2 + ldr r0, _0803E64C + ldrb r0, [r0] + ldr r1, _0803E650 + ldr r2, _0803E654 + ldr r2, [r2] + str r2, [sp] + movs r4, 0xBE + lsls r4, 1 + adds r2, r3, r4 + str r2, [sp, 0x4] + movs r2, 0xA0 + movs r3, 0x20 + bl sub_8004AF0 +_0803E5A2: + ldr r0, _0803E640 + ldr r0, [r0] + ldrb r0, [r0, 0xA] + bl nullsub_8 + bl sub_8005180 + bl nullsub_12 + bl sub_80060EC + ldr r1, _0803E658 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + ldr r0, _0803E65C + ldr r0, [r0] + bl IncrementPlayTime + bl sub_800CB20 + bl LoadBufferedInputs + bl CopySpritesToOam + bl nullsub_13 + bl sub_8005304 + bl nullsub_14 + bl TransferBGPaletteBuffer + bl sub_8009908 + bl xxx_call_update_bg_vram + bl sub_8040788 + bl xxx_call_update_bg_sound_input + ldr r0, _0803E62C + ldr r0, [r0] + ldr r1, _0803E660 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + bl UpdateDungeonMusic + bl sub_8011860 + bl sub_8040B60 + movs r0, 0 + bl ResetSprites + movs r0, 0 + bl nullsub_10 + ldr r1, _0803E664 + ldr r0, [r1] + subs r0, 0x1 + str r0, [r1] + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803E628: .4byte 0x00018208 +_0803E62C: .4byte gDungeon +_0803E630: .4byte 0x000181f0 +_0803E634: .4byte 0x000181f2 +_0803E638: .4byte 0x000181fc +_0803E63C: .4byte gUnknown_202EDD0 +_0803E640: .4byte gGameOptionsRef +_0803E644: .4byte 0x00018215 +_0803E648: .4byte 0x0001c06c +_0803E64C: .4byte gUnknown_203B40D +_0803E650: .4byte gUnknown_202EE8C +_0803E654: .4byte gUnknown_202EDC8 +_0803E658: .4byte gUnknown_202EDCC +_0803E65C: .4byte gPlayTimeRef +_0803E660: .4byte 0x00018213 +_0803E664: .4byte gUnknown_202EDD4 + thumb_func_end sub_803E490 + +@ https://decomp.me/scratch/biQXr (kermalis 100%) `void sub_803E668(u32)` + .align 2, 0 \ No newline at end of file diff --git a/asm/code_803E724.s b/asm/code_803E724.s new file mode 100644 index 000000000..c880ddb81 --- /dev/null +++ b/asm/code_803E724.s @@ -0,0 +1,3241 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_803E724 +sub_803E724: + push {r4-r6,lr} + adds r4, r0, 0 + ldr r5, _0803E744 + movs r6, 0xF0 +_0803E72C: + adds r0, r4, 0 + bl sub_803E46C + ldrh r1, [r5] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _0803E72C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803E744: .4byte gRealInputs + thumb_func_end sub_803E724 + + thumb_func_start sub_803E748 +sub_803E748: + push {r4,r5,lr} + movs r5, 0x1F + ldr r1, _0803E7B8 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0803E7BC + movs r0, 0 + str r0, [r1] + movs r0, 0x1 + movs r1, 0x1F + bl sub_803E874 + movs r4, 0 +_0803E762: + cmp r4, 0x1F + bgt _0803E780 + subs r5, 0x2 + cmp r5, 0 + bgt _0803E780 + movs r5, 0 + movs r0, 0x1 + movs r1, 0 + bl sub_803EAF0 + ldr r0, _0803E7C0 + ldr r0, [r0] + ldr r1, _0803E7C4 + adds r0, r1 + strb r5, [r0] +_0803E780: + cmp r4, 0xB + ble _0803E790 + ldr r1, _0803E7BC + ldr r0, [r1] + cmp r0, 0x1E + bgt _0803E790 + adds r0, 0x1 + str r0, [r1] +_0803E790: + movs r0, 0x1 + adds r1, r5, 0 + bl sub_803E874 + movs r0, 0x5 + bl sub_803E46C + adds r4, 0x1 + cmp r4, 0x2B + ble _0803E762 + ldr r1, _0803E7B8 + movs r0, 0 + strb r0, [r1] + ldr r1, _0803E7BC + movs r0, 0x1F + str r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803E7B8: .4byte gUnknown_203B40D +_0803E7BC: .4byte gUnknown_202EDC8 +_0803E7C0: .4byte gDungeon +_0803E7C4: .4byte 0x00018217 + thumb_func_end sub_803E748 + + thumb_func_start sub_803E7C8 +sub_803E7C8: + push {r4,r5,lr} + movs r4, 0x1F + ldr r1, _0803E820 + movs r0, 0x1 + strb r0, [r1] + ldr r1, _0803E824 + movs r0, 0 + str r0, [r1] + movs r0, 0x5 + bl sub_803E46C + movs r5, 0 +_0803E7E0: + movs r0, 0x1 + adds r1, r4, 0 + bl sub_803E874 + cmp r5, 0x1F + bgt _0803E806 + subs r4, 0x2 + cmp r4, 0 + bgt _0803E806 + movs r4, 0 + movs r0, 0x1 + movs r1, 0 + bl sub_803EAF0 + ldr r0, _0803E828 + ldr r0, [r0] + ldr r1, _0803E82C + adds r0, r1 + strb r4, [r0] +_0803E806: + movs r0, 0x5 + bl sub_803E46C + adds r5, 0x1 + cmp r5, 0x2B + ble _0803E7E0 + ldr r1, _0803E820 + movs r0, 0 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803E820: .4byte gUnknown_203B40D +_0803E824: .4byte gUnknown_202EDC8 +_0803E828: .4byte gDungeon +_0803E82C: .4byte 0x00018217 + thumb_func_end sub_803E7C8 + + thumb_func_start sub_803E830 +sub_803E830: + push {r4,r5,lr} + ldr r1, _0803E86C + movs r0, 0x1 + strb r0, [r1] + ldr r5, _0803E870 + movs r4, 0x1F +_0803E83C: + movs r0, 0 + movs r1, 0 + bl sub_803E874 + movs r0, 0x5 + bl sub_803E46C + ldr r0, [r5] + cmp r0, 0 + ble _0803E854 + subs r0, 0x1 + str r0, [r5] +_0803E854: + subs r4, 0x1 + cmp r4, 0 + bge _0803E83C + ldr r0, _0803E870 + movs r1, 0 + str r1, [r0] + ldr r0, _0803E86C + strb r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803E86C: .4byte gUnknown_203B40D +_0803E870: .4byte gUnknown_202EDC8 + thumb_func_end sub_803E830 + + thumb_func_start sub_803E874 +sub_803E874: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r9, r1 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + ldr r0, _0803E9A4 + ldr r0, [r0] + ldr r5, [r0, 0x4] + ldr r1, _0803E9A8 + ldr r0, _0803E9AC + ldr r2, [r0] + ldr r0, _0803E9B0 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + movs r0, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + movs r6, 0x1 + movs r4, 0x9F +_0803E8AA: + ldr r1, _0803E9AC + mov r8, r1 + ldr r2, [r1] + ldr r7, _0803E9B0 + ldr r3, [r7] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + adds r0, r6, 0 + adds r1, r5, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r6, 0x1 + subs r4, 0x1 + cmp r4, 0 + bne _0803E8AA + ldr r3, [r7] + ldr r1, _0803E9B4 + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803E8E2 + ldr r2, _0803E9B8 + adds r0, r3, r2 + ldr r0, [r0] + cmp r0, 0x3 + bne _0803E8FC +_0803E8E2: + ldr r1, _0803E9BC + mov r2, r8 + ldr r0, [r2] + str r0, [sp] + movs r2, 0xBE + lsls r2, 1 + adds r0, r3, r2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0xA0 + movs r3, 0x20 + bl sub_8004AF0 +_0803E8FC: + adds r6, 0x20 + ldr r5, _0803E9C0 + movs r4, 0x20 +_0803E902: + ldr r0, _0803E9AC + ldr r2, [r0] + ldr r0, _0803E9B0 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + adds r0, r6, 0 + adds r1, r5, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r6, 0x1 + subs r4, 0x1 + cmp r4, 0 + bne _0803E902 + mov r1, r10 + cmp r1, 0 + beq _0803E948 + movs r6, 0xE0 + ldr r0, _0803E9C4 + ldr r0, [r0] + ldr r5, [r0, 0x4] + movs r4, 0x10 +_0803E932: + adds r0, r6, 0 + adds r1, r5, 0 + mov r2, r9 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + adds r6, 0x1 + subs r4, 0x1 + cmp r4, 0 + bne _0803E932 +_0803E948: + ldr r1, _0803E9C8 + ldr r4, _0803E9AC + ldr r2, [r4] + movs r0, 0xF8 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + ldr r0, _0803E9B0 + ldr r0, [r0] + ldr r2, _0803E9CC + adds r0, r2 + ldr r0, [r0] + ldr r5, [r0, 0x4] + movs r6, 0x80 + lsls r6, 1 + adds r7, r4, 0 + movs r4, 0xD0 +_0803E96A: + ldr r2, [r7] + ldr r0, _0803E9B0 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + adds r0, r6, 0 + adds r1, r5, 0 + bl SetBGPaletteBufferColorRGB + ldr r2, [r7] + adds r0, r6, 0 + adds r1, r5, 0 + movs r3, 0 + bl nullsub_4 + adds r5, 0x4 + adds r6, 0x1 + subs r4, 0x1 + cmp r4, 0 + bne _0803E96A + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803E9A4: .4byte gDungeonPaletteFile +_0803E9A8: .4byte gUnknown_80F62AC +_0803E9AC: .4byte gUnknown_202EDC8 +_0803E9B0: .4byte gDungeon +_0803E9B4: .4byte 0x00018215 +_0803E9B8: .4byte 0x0001c06c +_0803E9BC: .4byte gUnknown_202EE8C +_0803E9C0: .4byte gUnknown_202ECA4 +_0803E9C4: .4byte gDungeonNameBannerPalette +_0803E9C8: .4byte gUnknown_202D058 +_0803E9CC: .4byte 0x000181e4 + thumb_func_end sub_803E874 + + thumb_func_start sub_803E9D0 +sub_803E9D0: + push {r4-r7,lr} + ldr r0, _0803EA04 + ldr r0, [r0] + ldr r1, _0803EA08 + adds r0, r1 + ldr r0, [r0] + ldr r4, [r0, 0x4] + movs r6, 0x80 + lsls r6, 1 + ldr r7, _0803EA0C + movs r5, 0xD0 +_0803E9E6: + ldr r2, [r7] + adds r0, r6, 0 + adds r1, r4, 0 + movs r3, 0 + bl nullsub_4 + adds r4, 0x4 + adds r6, 0x1 + subs r5, 0x1 + cmp r5, 0 + bne _0803E9E6 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EA04: .4byte gDungeon +_0803EA08: .4byte 0x000181e4 +_0803EA0C: .4byte gUnknown_202EDC8 + thumb_func_end sub_803E9D0 + + thumb_func_start sub_803EA10 +sub_803EA10: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r0, _0803EACC + ldr r0, [r0] + ldr r4, [r0, 0x4] + ldr r1, _0803EAD0 + ldr r0, _0803EAD4 + ldr r2, [r0] + ldr r0, _0803EAD8 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + movs r0, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x4 + movs r6, 0x1 + movs r5, 0x9F +_0803EA3A: + ldr r1, _0803EAD4 + mov r8, r1 + ldr r2, [r1] + ldr r7, _0803EAD8 + ldr r3, [r7] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + adds r0, r6, 0 + adds r1, r4, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x4 + adds r6, 0x1 + subs r5, 0x1 + cmp r5, 0 + bne _0803EA3A + ldr r3, [r7] + ldr r1, _0803EADC + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EA72 + ldr r2, _0803EAE0 + adds r0, r3, r2 + ldr r0, [r0] + cmp r0, 0x3 + bne _0803EA8C +_0803EA72: + ldr r1, _0803EAE4 + mov r2, r8 + ldr r0, [r2] + str r0, [sp] + movs r2, 0xBE + lsls r2, 1 + adds r0, r3, r2 + str r0, [sp, 0x4] + movs r0, 0x1 + movs r2, 0xA0 + movs r3, 0x20 + bl sub_8004AF0 +_0803EA8C: + adds r6, 0x20 + ldr r4, _0803EAE8 + movs r5, 0x20 +_0803EA92: + ldr r7, _0803EAD4 + ldr r2, [r7] + ldr r0, _0803EAD8 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + adds r0, r6, 0 + adds r1, r4, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x4 + adds r6, 0x1 + subs r5, 0x1 + cmp r5, 0 + bne _0803EA92 + ldr r1, _0803EAEC + ldr r2, [r7] + movs r0, 0xF8 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EACC: .4byte gDungeonPaletteFile +_0803EAD0: .4byte gUnknown_80F62AC +_0803EAD4: .4byte gUnknown_202EDC8 +_0803EAD8: .4byte gDungeon +_0803EADC: .4byte 0x00018215 +_0803EAE0: .4byte 0x0001c06c +_0803EAE4: .4byte gUnknown_202EE8C +_0803EAE8: .4byte gUnknown_202ECA4 +_0803EAEC: .4byte gUnknown_202D058 + thumb_func_end sub_803EA10 + + thumb_func_start sub_803EAF0 +sub_803EAF0: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0803EB20 + ldr r0, [r0] + cmp r4, r0 + bne _0803EB00 + b _0803EC88 +_0803EB00: + cmp r4, 0x5 + bne _0803EB06 + b _0803EC1C +_0803EB06: + cmp r4, 0x5 + bhi _0803EB2E + cmp r4, 0x2 + bne _0803EB10 + b _0803EBFC +_0803EB10: + cmp r4, 0x2 + bhi _0803EB24 + cmp r4, 0 + beq _0803EB70 + cmp r4, 0x1 + beq _0803EB50 + b _0803EC84 + .align 2, 0 +_0803EB20: .4byte gUnknown_202EDD0 +_0803EB24: + cmp r4, 0x3 + beq _0803EB98 + cmp r4, 0x4 + beq _0803EBFC + b _0803EC84 +_0803EB2E: + cmp r4, 0x8 + bne _0803EB34 + b _0803EC34 +_0803EB34: + cmp r4, 0x8 + bhi _0803EB42 + cmp r4, 0x6 + beq _0803EBBC + cmp r4, 0x7 + beq _0803EBDC + b _0803EC84 +_0803EB42: + cmp r4, 0xA + bne _0803EB48 + b _0803EC80 +_0803EB48: + cmp r4, 0xA + bcs _0803EB4E + b _0803EC54 +_0803EB4E: + b _0803EC84 +_0803EB50: + ldr r0, _0803EB6C + ldrb r0, [r0] + cmp r0, 0 + beq _0803EB5E + movs r0, 0 + bl sub_8052210 +_0803EB5E: + bl ResetUnusedInputStruct + bl sub_803EC94 + movs r0, 0 + movs r1, 0x1 + b _0803EC6E + .align 2, 0 +_0803EB6C: .4byte gUnknown_203B40C +_0803EB70: + bl sub_803EC94 + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, _0803EB94 + ldrb r0, [r0] + cmp r0, 0 + bne _0803EB88 + b _0803EC84 +_0803EB88: + bl sub_8040A84 + movs r0, 0 + bl sub_8040ABC + b _0803EC84 + .align 2, 0 +_0803EB94: .4byte gUnknown_203B40C +_0803EB98: + ldr r0, _0803EBB4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, _0803EBB8 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EC84 + movs r0, 0x1 + bl sub_8040ABC + b _0803EC84 + .align 2, 0 +_0803EBB4: .4byte gUnknown_80F62B0 +_0803EBB8: .4byte gUnknown_203B40C +_0803EBBC: + ldr r0, _0803EBD4 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EBCA + movs r0, 0 + bl sub_8052210 +_0803EBCA: + bl ResetUnusedInputStruct + ldr r0, _0803EBD8 + movs r1, 0x1 + b _0803EC6E + .align 2, 0 +_0803EBD4: .4byte gUnknown_203B40C +_0803EBD8: .4byte gUnknown_80F6310 +_0803EBDC: + ldr r0, _0803EBF4 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EBEA + movs r0, 0 + bl sub_8052210 +_0803EBEA: + bl ResetUnusedInputStruct + ldr r0, _0803EBF8 + movs r1, 0x1 + b _0803EC6E + .align 2, 0 +_0803EBF4: .4byte gUnknown_203B40C +_0803EBF8: .4byte gUnknown_80F6370 +_0803EBFC: + ldr r0, _0803EC18 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EC0A + movs r0, 0 + bl sub_8052210 +_0803EC0A: + bl ResetUnusedInputStruct + bl sub_803EC94 + movs r0, 0 + movs r1, 0x1 + b _0803EC6E + .align 2, 0 +_0803EC18: .4byte gUnknown_203B40C +_0803EC1C: + ldr r0, _0803EC30 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EC2A + movs r0, 0 + bl sub_8052210 +_0803EC2A: + movs r0, 0 + movs r1, 0x1 + b _0803EC6E + .align 2, 0 +_0803EC30: .4byte gUnknown_203B40C +_0803EC34: + ldr r0, _0803EC50 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EC46 + bl sub_8083D44 + movs r0, 0 + bl sub_8052210 +_0803EC46: + movs r0, 0x2 + adds r1, r5, 0 + bl CreateConfirmNameMenu + b _0803EC84 + .align 2, 0 +_0803EC50: .4byte gUnknown_203B40C +_0803EC54: + ldr r0, _0803EC78 + ldrb r0, [r0] + cmp r0, 0 + beq _0803EC66 + movs r0, 0 + bl sub_8052210 + bl sub_8083D44 +_0803EC66: + bl ResetUnusedInputStruct + ldr r0, _0803EC7C + movs r1, 0 +_0803EC6E: + movs r2, 0x1 + bl sub_800641C + b _0803EC84 + .align 2, 0 +_0803EC78: .4byte gUnknown_203B40C +_0803EC7C: .4byte gUnknown_80F63D0 +_0803EC80: + bl sub_8083D44 +_0803EC84: + ldr r0, _0803EC90 + str r4, [r0] +_0803EC88: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803EC90: .4byte gUnknown_202EDD0 + thumb_func_end sub_803EAF0 + + thumb_func_start sub_803EC94 +sub_803EC94: + push {lr} + ldr r0, _0803ECB0 + movs r1, 0 + strh r1, [r0, 0x1E] + strh r1, [r0, 0x20] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x14] + adds r0, 0x28 + bl sub_801317C + pop {r0} + bx r0 + .align 2, 0 +_0803ECB0: .4byte gUnknown_202EE10 + thumb_func_end sub_803EC94 + + thumb_func_start sub_803ECB4 +sub_803ECB4: + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + ldr r1, _0803ECDC + movs r0, 0xA + str r0, [r1] + movs r0, 0 + bl sub_8052210 + bl ResetUnusedInputStruct + adds r0, r5, 0 + movs r1, 0x1 + adds r2, r4, 0 + bl sub_800641C + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803ECDC: .4byte gUnknown_202EDD0 + thumb_func_end sub_803ECB4 + + thumb_func_start sub_803ECE0 +sub_803ECE0: + push {lr} + ldr r1, _0803ED24 + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + cmp r0, 0 + bge _0803ECF2 + movs r0, 0 + str r0, [r1] +_0803ECF2: + ldr r0, [r1] + cmp r0, 0xB + ble _0803ECFC + movs r0, 0 + str r0, [r1] +_0803ECFC: + ldr r0, _0803ED28 + ldr r2, [r0] + ldr r0, [r1] + cmp r0, 0 + bge _0803ED08 + adds r0, 0x3 +_0803ED08: + asrs r1, r0, 2 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 6 + ldr r1, [r2, 0x4] + adds r1, r0 + movs r2, 0x90 + lsls r2, 2 + ldr r0, _0803ED2C + bl sub_80098BC + pop {r0} + bx r0 + .align 2, 0 +_0803ED24: .4byte gUnknown_202EDD8 +_0803ED28: .4byte gUnknown_202EC94 +_0803ED2C: .4byte 0x06014400 + thumb_func_end sub_803ECE0 + + thumb_func_start sub_803ED30 +sub_803ED30: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + adds r7, r1, 0 + mov r9, r3 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + cmp r5, 0 + beq _0803EDDA + ldr r0, _0803EDAC + ldr r0, [r0] + ldr r1, _0803EDB0 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803EDDA + movs r4, 0 + ldr r1, _0803EDB4 + movs r2, 0 + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0803ED78 + adds r6, r1, 0 +_0803ED64: + movs r0, 0x29 + bl sub_803E46C + adds r4, 0x1 + cmp r4, 0x13 + bgt _0803ED78 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _0803ED64 +_0803ED78: + adds r0, r5, 0 + mov r1, r8 + bl sub_803EF90 + ldr r3, _0803EDB4 + movs r2, 0 + movs r1, 0x3C + strh r1, [r3] + str r7, [r3, 0x4] + ldrh r1, [r7, 0x26] + str r1, [r3, 0x8] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 8 + negs r1, r1 + str r1, [r3, 0xC] + str r2, [r3, 0x10] + mov r2, r9 + cmp r2, 0 + bge _0803EDC8 + ldr r0, _0803EDB8 + cmp r5, r0 + bge _0803EDBC + movs r0, 0x6 + b _0803EDCA + .align 2, 0 +_0803EDAC: .4byte gDungeon +_0803EDB0: .4byte 0x0001820a +_0803EDB4: .4byte gUnknown_202EDE8 +_0803EDB8: .4byte 0xfffffc19 +_0803EDBC: + cmp r5, 0 + blt _0803EDC4 + movs r0, 0xA + b _0803EDCA +_0803EDC4: + movs r0, 0x3 + b _0803EDCA +_0803EDC8: + mov r0, r9 +_0803EDCA: + strh r0, [r3, 0x2] + ldr r0, _0803EDE8 + ldr r1, _0803EDEC + ldr r1, [r1] + adds r1, 0x18 + movs r2, 0x80 + bl sub_80098BC +_0803EDDA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EDE8: .4byte 0x060142c0 +_0803EDEC: .4byte gDungeon + thumb_func_end sub_803ED30 + + thumb_func_start sub_803EDF0 +sub_803EDF0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r6, _0803EE18 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0 + bne _0803EE06 + b _0803EF42 +_0803EE06: + ldr r0, [r6, 0x4] + bl EntityExists + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _0803EE1C + strh r0, [r6] + b _0803EF42 + .align 2, 0 +_0803EE18: .4byte gUnknown_202EDE8 +_0803EE1C: + ldr r1, [r6, 0x4] + ldr r0, [r6, 0x8] + ldrh r2, [r1, 0x26] + cmp r0, r2 + beq _0803EE2C + movs r0, 0 + strh r0, [r6] + b _0803EF42 +_0803EE2C: + ldrh r0, [r6] + subs r0, 0x1 + strh r0, [r6] + ldr r4, [r6, 0x10] + adds r3, r4, 0 + subs r3, 0x2E + str r3, [r6, 0x10] + ldr r2, [r1, 0x70] + movs r5, 0xB8 + lsls r5, 1 + adds r0, r2, r5 + movs r1, 0 + ldrsh r0, [r0, r1] + ldr r1, [r6, 0xC] + cmp r1, 0 + bge _0803EE4E + adds r1, 0xFF +_0803EE4E: + asrs r1, 8 + adds r1, r0, r1 + ldr r0, _0803EF50 + ldr r0, [r0] + mov r12, r0 + ldr r0, _0803EF54 + add r0, r12 + movs r5, 0 + ldrsh r0, [r0, r5] + subs r7, r1, r0 + movs r1, 0xB9 + lsls r1, 1 + adds r0, r2, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + adds r1, r3, 0 + cmp r1, 0 + bge _0803EE76 + adds r1, r4, 0 + adds r1, 0xD1 +_0803EE76: + asrs r1, 8 + adds r1, r0, r1 + ldr r0, _0803EF58 + add r0, r12 + movs r3, 0 + ldrsh r0, [r0, r3] + adds r0, 0x18 + subs r2, r1, r0 + movs r0, 0x20 + negs r0, r0 + cmp r7, r0 + blt _0803EF42 + adds r0, 0x18 + cmp r2, r0 + blt _0803EF42 + cmp r7, 0xEF + bgt _0803EF42 + cmp r2, 0x9F + bgt _0803EF42 + ldr r1, _0803EF5C + ands r1, r2 + lsls r1, 4 + ldr r0, _0803EF60 + ldrh r2, [r0, 0x6] + movs r4, 0xF + mov r8, r4 + mov r3, r8 + ands r3, r2 + orrs r3, r1 + strh r3, [r0, 0x6] + ldrh r2, [r0] + ldr r1, _0803EF64 + ands r1, r2 + ldr r2, _0803EF68 + ands r1, r2 + movs r5, 0x3 + mov r9, r5 + ldr r2, _0803EF6C + mov r10, r2 + ands r1, r2 + ldr r2, _0803EF70 + ands r1, r2 + ldr r2, _0803EF74 + ands r1, r2 + movs r5, 0x80 + lsls r5, 7 + ldr r4, _0803EF78 + ands r1, r4 + orrs r1, r5 + strh r1, [r0] + ldr r1, _0803EF7C + ands r7, r1 + ldrh r2, [r0, 0x2] + movs r1, 0xFE + lsls r1, 8 + ands r1, r2 + orrs r1, r7 + ldr r2, _0803EF80 + ands r1, r2 + ands r1, r4 + orrs r1, r5 + strh r1, [r0, 0x2] + ldr r4, _0803EF84 + ldrh r2, [r0, 0x4] + movs r1, 0xFC + lsls r1, 8 + ands r1, r2 + orrs r1, r4 + movs r2, 0 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r2, _0803EF88 + add r2, r12 + ldrb r2, [r2] + mov r4, r9 + ands r2, r4 + lsls r2, 10 + mov r5, r10 + ands r1, r5 + orrs r1, r2 + movs r4, 0x2 + ldrsh r2, [r6, r4] + mov r5, r8 + ands r2, r5 + lsls r2, 12 + ldr r4, _0803EF5C + ands r1, r4 + orrs r1, r2 + strh r1, [r0, 0x4] + ldr r1, _0803EF8C + ands r3, r1 + subs r1, 0x1 + ands r3, r1 + subs r1, 0x2 + ands r3, r1 + strh r3, [r0, 0x6] + movs r1, 0x80 + lsls r1, 1 + movs r2, 0 + movs r3, 0 + bl AddSprite +_0803EF42: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803EF50: .4byte gDungeon +_0803EF54: .4byte 0x000181f0 +_0803EF58: .4byte 0x000181f2 +_0803EF5C: .4byte 0x00000fff +_0803EF60: .4byte gUnknown_202EDDC +_0803EF64: .4byte 0x0000feff +_0803EF68: .4byte 0x0000fdff +_0803EF6C: .4byte 0x0000f3ff +_0803EF70: .4byte 0x0000efff +_0803EF74: .4byte 0x0000dfff +_0803EF78: .4byte 0x00003fff +_0803EF7C: .4byte 0x000001ff +_0803EF80: .4byte 0x0000c1ff +_0803EF84: .4byte 0x00000216 +_0803EF88: .4byte 0x00018208 +_0803EF8C: .4byte 0x0000fffe + thumb_func_end sub_803EDF0 + + thumb_func_start sub_803EF90 +sub_803EF90: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x58 + str r0, [sp, 0x48] + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _0803F060 + ldr r0, [r0] + adds r0, 0x18 + mov r8, r0 + ldr r0, _0803F064 + ldr r1, [r0] + ldr r0, [r1, 0x4] + movs r2, 0x92 + lsls r2, 1 + adds r0, r2 + str r0, [sp, 0x24] + ldr r0, [r1, 0x4] + movs r3, 0x82 + lsls r3, 1 + adds r0, r3 + str r0, [sp, 0x28] + ldr r0, [r1, 0x4] + adds r0, 0xE4 + str r0, [sp, 0x2C] + ldr r0, [r1, 0x4] + adds r0, 0xC4 + str r0, [sp, 0x30] + ldr r0, [r1, 0x4] + adds r0, 0xA4 + str r0, [sp, 0x34] + ldr r0, [r1, 0x4] + adds r0, 0x84 + str r0, [sp, 0x38] + ldr r0, [r1, 0x4] + adds r0, 0x64 + str r0, [sp, 0x3C] + ldr r0, [r1, 0x4] + adds r0, 0x44 + str r0, [sp, 0x40] + ldr r0, [r1, 0x4] + adds r0, 0x24 + str r0, [sp, 0x44] + add r4, sp, 0x24 + mov r0, sp + adds r1, r4, 0 + movs r2, 0x24 + bl memcpy + movs r1, 0 + movs r6, 0x3 + mov r0, r8 +_0803EFFE: + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + stm r0!, {r1} + subs r6, 0x1 + cmp r6, 0 + bge _0803EFFE + ldr r0, _0803F068 + ldr r1, [sp, 0x48] + cmp r1, r0 + bne _0803F0A6 + adds r0, r4, 0 + ldr r1, _0803F06C + ldm r1!, {r2,r3,r5} + stm r0!, {r2,r3,r5} + ldr r1, [r1] + str r1, [r0] + movs r5, 0 + movs r2, 0 + mov r12, r4 + movs r0, 0x20 + mov r10, r0 +_0803F032: + mov r3, r8 + ldr r0, _0803F064 + ldr r1, [r0] + lsls r0, r2, 2 + add r0, r12 + ldr r0, [r0] + lsls r0, 5 + adds r0, 0x4 + ldr r1, [r1, 0x4] + adds r4, r1, r0 + movs r1, 0x18 + adds r1, r5 + mov r9, r1 + adds r2, 0x1 + str r2, [sp, 0x54] + mov r2, r10 + subs r7, r2, r5 + movs r6, 0x7 +_0803F056: + cmp r5, 0 + bne _0803F070 + movs r1, 0 + ldr r2, [r4] + b _0803F07A + .align 2, 0 +_0803F060: .4byte gDungeon +_0803F064: .4byte gUnknown_202EC9C +_0803F068: .4byte 0x0000270f +_0803F06C: .4byte gUnknown_80F6478 +_0803F070: + ldr r0, [r4] + adds r1, r0, 0 + lsrs r1, r7 + adds r2, r0, 0 + lsls r2, r5 +_0803F07A: + adds r4, 0x4 + ldr r0, [r3] + orrs r0, r2 + str r0, [r3] + ldr r0, [r3, 0x20] + orrs r0, r1 + str r0, [r3, 0x20] + adds r3, 0x4 + subs r6, 0x1 + cmp r6, 0 + bge _0803F056 + mov r5, r9 + cmp r5, 0x1F + ble _0803F09C + subs r5, 0x20 + movs r3, 0x20 + add r8, r3 +_0803F09C: + ldr r2, [sp, 0x54] + cmp r2, 0x3 + ble _0803F032 + movs r0, 0x4 + b _0803F26A +_0803F0A6: + ldr r0, _0803F0D8 + ldr r1, [sp, 0x48] + cmp r1, r0 + ble _0803F0B0 + str r0, [sp, 0x48] +_0803F0B0: + ldr r0, _0803F0DC + ldr r2, [sp, 0x48] + cmp r2, r0 + bge _0803F0BA + str r0, [sp, 0x48] +_0803F0BA: + ldr r1, _0803F0E0 + ldr r0, [r1] + ldr r0, [r0, 0x4] + movs r3, 0xC2 + lsls r3, 1 + adds r2, r0, r3 + cmp r5, 0 + beq _0803F0F4 + ldr r5, [sp, 0x48] + cmp r5, 0 + ble _0803F0E4 + movs r1, 0xA2 + lsls r1, 1 + adds r2, r0, r1 + b _0803F0F4 + .align 2, 0 +_0803F0D8: .4byte 0x000003e7 +_0803F0DC: .4byte 0xfffffc19 +_0803F0E0: .4byte gUnknown_202EC9C +_0803F0E4: + ldr r3, [sp, 0x48] + cmp r3, 0 + bge _0803F0F4 + movs r5, 0xB2 + lsls r5, 1 + adds r2, r0, r5 + negs r3, r3 + str r3, [sp, 0x48] +_0803F0F4: + ldm r2!, {r0} + mov r1, r8 + str r0, [r1] + ldm r2!, {r0} + str r0, [r1, 0x4] + ldm r2!, {r0} + str r0, [r1, 0x8] + ldm r2!, {r0} + str r0, [r1, 0xC] + ldm r2!, {r0} + str r0, [r1, 0x10] + ldm r2!, {r0} + str r0, [r1, 0x14] + ldm r2!, {r0} + str r0, [r1, 0x18] + ldr r0, [r2] + str r0, [r1, 0x1C] + movs r5, 0x18 + movs r2, 0x1 + str r2, [sp, 0x4C] + movs r3, 0 + str r3, [sp, 0x50] + movs r2, 0 +_0803F122: + movs r0, 0 + mov r10, r0 + adds r1, r2, 0x1 + str r1, [sp, 0x54] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + mov r1, sp + ldr r2, _0803F15C + adds r7, r0, r2 +_0803F136: + ldr r0, [r7] + ldr r3, [sp, 0x48] + cmp r0, r3 + bgt _0803F1A2 + ldr r4, [r1] + mov r2, r8 + movs r0, 0x18 + adds r0, r5 + mov r9, r0 + movs r1, 0x20 + subs r1, r5 + mov r12, r1 + movs r6, 0x7 +_0803F150: + cmp r5, 0 + bne _0803F160 + movs r3, 0 + ldr r1, [r4] + b _0803F16C + .align 2, 0 +_0803F15C: .4byte gUnknown_80F6430 +_0803F160: + ldr r0, [r4] + adds r3, r0, 0 + mov r1, r12 + lsrs r3, r1 + adds r1, r0, 0 + lsls r1, r5 +_0803F16C: + adds r4, 0x4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r0, [r2, 0x20] + orrs r0, r3 + str r0, [r2, 0x20] + adds r2, 0x4 + movs r3, 0x1 + str r3, [sp, 0x50] + subs r6, 0x1 + cmp r6, 0 + bge _0803F150 + mov r5, r9 + cmp r5, 0x1F + ble _0803F192 + subs r5, 0x20 + movs r0, 0x20 + add r8, r0 +_0803F192: + ldr r0, [r7] + ldr r1, [sp, 0x48] + subs r1, r0 + str r1, [sp, 0x48] + ldr r2, [sp, 0x4C] + adds r2, 0x1 + str r2, [sp, 0x4C] + b _0803F1B0 +_0803F1A2: + adds r1, 0x4 + adds r7, 0x4 + movs r3, 0x1 + add r10, r3 + mov r0, r10 + cmp r0, 0x8 + ble _0803F136 +_0803F1B0: + mov r1, r10 + cmp r1, 0x9 + bne _0803F212 + ldr r2, [sp, 0x50] + cmp r2, 0 + beq _0803F212 + ldr r3, _0803F1DC + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r4, r0, 0x4 + mov r2, r8 + movs r0, 0x18 + adds r0, r5 + mov r9, r0 + movs r1, 0x20 + subs r7, r1, r5 + movs r6, 0x7 +_0803F1D2: + cmp r5, 0 + bne _0803F1E0 + movs r3, 0 + ldr r1, [r4] + b _0803F1EA + .align 2, 0 +_0803F1DC: .4byte gUnknown_202EC9C +_0803F1E0: + ldr r0, [r4] + adds r3, r0, 0 + lsrs r3, r7 + adds r1, r0, 0 + lsls r1, r5 +_0803F1EA: + adds r4, 0x4 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + ldr r0, [r2, 0x20] + orrs r0, r3 + str r0, [r2, 0x20] + adds r2, 0x4 + subs r6, 0x1 + cmp r6, 0 + bge _0803F1D2 + mov r5, r9 + cmp r5, 0x1F + ble _0803F20C + subs r5, 0x20 + movs r2, 0x20 + add r8, r2 +_0803F20C: + ldr r3, [sp, 0x4C] + adds r3, 0x1 + str r3, [sp, 0x4C] +_0803F212: + ldr r2, [sp, 0x54] + cmp r2, 0x1 + ble _0803F122 + ldr r0, _0803F240 + ldr r1, [r0] + ldr r2, [sp, 0x48] + lsls r0, r2, 5 + adds r0, 0x4 + ldr r1, [r1, 0x4] + adds r1, r0 + mov r3, r8 + ldr r0, [sp, 0x4C] + adds r0, 0x1 + mov r8, r0 + movs r0, 0x20 + subs r7, r0, r5 + movs r6, 0x7 +_0803F234: + cmp r5, 0 + bne _0803F244 + movs r4, 0 + ldr r2, [r1] + b _0803F24E + .align 2, 0 +_0803F240: .4byte gUnknown_202EC9C +_0803F244: + ldr r0, [r1] + adds r4, r0, 0 + lsrs r4, r7 + adds r2, r0, 0 + lsls r2, r5 +_0803F24E: + adds r1, 0x4 + ldr r0, [r3] + orrs r0, r2 + str r0, [r3] + ldr r0, [r3, 0x20] + orrs r0, r4 + str r0, [r3, 0x20] + adds r3, 0x4 + subs r6, 0x1 + cmp r6, 0 + bge _0803F234 + mov r1, r8 + str r1, [sp, 0x4C] + adds r0, r1, 0 +_0803F26A: + add sp, 0x58 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_803EF90 + + thumb_func_start sub_803F27C +sub_803F27C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + adds r7, r0, 0 + ldr r0, _0803F360 + mov r8, r0 + ldr r4, [r0] + ldr r2, _0803F364 + adds r1, r4, r2 + movs r2, 0 + movs r3, 0 + strh r3, [r1, 0x8] + strh r3, [r1, 0xA] + strh r3, [r1] + strh r3, [r1, 0x2] + strh r3, [r1, 0xC] + strh r3, [r1, 0xE] + strh r3, [r1, 0x4] + strh r3, [r1, 0x6] + str r3, [r1, 0x14] + ldr r5, _0803F368 + adds r0, r4, r5 + strb r2, [r0] + ldr r6, _0803F36C + adds r0, r4, r6 + movs r5, 0x1 + strb r5, [r0] + adds r6, 0x1 + adds r0, r4, r6 + strb r5, [r0] + adds r6, 0x1 + adds r0, r4, r6 + strb r2, [r0] + str r3, [r1, 0x18] + str r3, [r1, 0x1C] + cmp r7, 0 + bne _0803F2FA + subs r6, 0xF + adds r0, r4, r6 + strb r2, [r0] + adds r6, 0x6 + adds r0, r4, r6 + strb r2, [r0] + subs r6, 0x1 + adds r0, r4, r6 + strb r2, [r0] + subs r6, 0x2 + adds r0, r4, r6 + strb r2, [r0] + adds r6, 0x4 + adds r0, r4, r6 + strb r2, [r0] + subs r6, 0x3 + adds r0, r4, r6 + strb r2, [r0] + subs r6, 0x3 + adds r0, r4, r6 + strb r2, [r0] + adds r6, 0x1 + adds r0, r4, r6 + strb r2, [r0] +_0803F2FA: + str r3, [r1, 0x10] + ldr r1, _0803F370 + adds r0, r4, r1 + movs r6, 0x3 + strb r6, [r0] + adds r1, 0x12 + adds r0, r4, r1 + strb r2, [r0] + subs r1, 0x8 + adds r0, r4, r1 + strb r2, [r0] + adds r1, 0x9 + adds r0, r4, r1 + strb r2, [r0] + adds r1, 0x1 + adds r0, r4, r1 + strb r2, [r0] + subs r1, 0x8 + adds r0, r4, r1 + strb r2, [r0] + ldr r2, _0803F374 + adds r0, r4, r2 + strb r5, [r0] + bl sub_803F38C + ldr r1, _0803F378 + ldr r0, _0803F37C + str r0, [r1] + cmp r7, 0 + bne _0803F354 + mov r1, r8 + ldr r0, [r1] + ldr r2, _0803F380 + adds r0, r2 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + ldr r6, _0803F384 + adds r1, r4, r6 + strb r0, [r1] + cmp r0, 0 + bne _0803F354 + ldr r1, _0803F388 + adds r0, r4, r1 + strb r5, [r0] +_0803F354: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F360: .4byte gDungeon +_0803F364: .4byte 0x000181e8 +_0803F368: .4byte 0x00018216 +_0803F36C: .4byte 0x00018217 +_0803F370: .4byte 0x00018208 +_0803F374: .4byte 0x00018215 +_0803F378: .4byte gUnknown_202EDFC +_0803F37C: .4byte 0x0000ffff +_0803F380: .4byte 0x0001c58a +_0803F384: .4byte 0x00018209 +_0803F388: .4byte 0x0001820c + thumb_func_end sub_803F27C + + thumb_func_start sub_803F38C +sub_803F38C: + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r0, _0803F410 + ldr r1, [r0] + ldr r0, _0803F414 + adds r2, r1, r0 + ldr r0, _0803F418 + strh r0, [r2, 0x3A] + movs r0, 0x1 + negs r0, r0 + strh r0, [r2, 0x3C] + strh r0, [r2, 0x3E] + ldr r0, _0803F41C + adds r1, r0 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + strh r0, [r2, 0x36] + strh r0, [r2, 0x38] + ldr r0, _0803F420 + ldr r0, [r0] + ldrb r0, [r0, 0xB] + negs r4, r0 + orrs r4, r0 + asrs r4, 31 + movs r0, 0x80 + lsls r0, 1 + ands r4, r0 + ldr r5, _0803F424 + adds r0, r4, r5 + mov r8, r0 + movs r0, 0xFD + mov r1, r8 + bl SetBGPaletteBufferColorArray + adds r6, r5, 0x4 + adds r6, r4, r6 + movs r0, 0xFE + adds r1, r6, 0 + bl SetBGPaletteBufferColorArray + adds r5, 0x8 + adds r4, r5 + movs r0, 0xFF + adds r1, r4, 0 + bl SetBGPaletteBufferColorArray + movs r0, 0xFD + mov r1, r8 + bl nullsub_5 + movs r0, 0xFE + adds r1, r6, 0 + bl nullsub_5 + movs r0, 0xFF + adds r1, r4, 0 + bl nullsub_5 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803F410: .4byte gDungeon +_0803F414: .4byte 0x000181e8 +_0803F418: .4byte 0x0000ffff +_0803F41C: .4byte 0x00018228 +_0803F420: .4byte gGameOptionsRef +_0803F424: .4byte gUnknown_202D06C + thumb_func_end sub_803F38C + + thumb_func_start sub_803F428 +sub_803F428: + push {r4-r6,lr} + adds r4, r0, 0 + ldr r0, _0803F484 + ldr r3, [r0] + ldr r0, _0803F488 + adds r2, r3, r0 + ldr r5, [r2, 0x10] + movs r6, 0 + ldrsh r1, [r2, r6] + movs r6, 0 + ldrsh r0, [r4, r6] + subs r1, r0 + cmp r1, 0 + bge _0803F446 + negs r1, r1 +_0803F446: + cmp r1, 0x6 + bgt _0803F498 + movs r0, 0x2 + ldrsh r1, [r2, r0] + movs r6, 0x2 + ldrsh r0, [r4, r6] + subs r1, r0 + cmp r1, 0 + bge _0803F45A + negs r1, r1 +_0803F45A: + cmp r1, 0x5 + bgt _0803F498 + ldr r1, _0803F48C + adds r0, r3, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F494 + ldr r6, _0803F490 + adds r0, r3, r6 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F494 + cmp r5, 0 + beq _0803F494 + adds r0, r2, 0 + adds r1, r4, 0 + bl IsPositionActuallyInSight + lsls r0, 24 + lsrs r0, 24 + b _0803F49A + .align 2, 0 +_0803F484: .4byte gDungeon +_0803F488: .4byte 0x000181e8 +_0803F48C: .4byte 0x0001820b +_0803F490: .4byte 0x0001820c +_0803F494: + movs r0, 0x1 + b _0803F49A +_0803F498: + movs r0, 0 +_0803F49A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_803F428 + + thumb_func_start sub_803F4A0 +sub_803F4A0: + push {lr} + adds r2, r0, 0 + ldr r0, _0803F4B8 + ldr r1, [r0] + ldr r3, _0803F4BC + adds r0, r1, r3 + str r2, [r0, 0x10] + cmp r2, 0 + bne _0803F4C0 + adds r3, 0x2E + b _0803F4CA + .align 2, 0 +_0803F4B8: .4byte gDungeon +_0803F4BC: .4byte 0x000181e8 +_0803F4C0: + ldr r0, [r2, 0x70] + ldrb r2, [r0, 0x7] + cmp r2, 0 + bne _0803F4D4 + ldr r3, _0803F4D0 +_0803F4CA: + adds r0, r1, r3 + strb r2, [r0] + b _0803F4DC + .align 2, 0 +_0803F4D0: .4byte 0x00018216 +_0803F4D4: + ldr r0, _0803F4FC + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] +_0803F4DC: + movs r0, 0 + bl sub_803F580 + bl sub_803F38C + ldr r0, _0803F500 + ldr r0, [r0] + ldr r1, _0803F504 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F4F8 + bl sub_806CD90 +_0803F4F8: + pop {r0} + bx r0 + .align 2, 0 +_0803F4FC: .4byte 0x00018216 +_0803F500: .4byte gDungeon +_0803F504: .4byte 0x0001356c + thumb_func_end sub_803F4A0 + + thumb_func_start sub_803F508 +sub_803F508: + push {r4,r5,lr} + adds r3, r0, 0 + ldr r0, _0803F520 + ldr r1, [r0] + ldr r0, _0803F524 + adds r4, r1, r0 + cmp r3, 0 + bne _0803F52C + ldr r2, _0803F528 + adds r0, r1, r2 + strb r3, [r0] + b _0803F548 + .align 2, 0 +_0803F520: .4byte gDungeon +_0803F524: .4byte 0x000181e8 +_0803F528: .4byte 0x00018216 +_0803F52C: + ldr r0, [r3, 0x70] + ldrb r2, [r0, 0x7] + cmp r2, 0 + bne _0803F540 + ldr r5, _0803F53C + adds r0, r1, r5 + strb r2, [r0] + b _0803F548 + .align 2, 0 +_0803F53C: .4byte 0x00018216 +_0803F540: + ldr r0, _0803F574 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] +_0803F548: + str r3, [r4, 0x10] + movs r0, 0 + bl sub_803F580 + bl sub_803F38C + ldr r0, _0803F578 + ldr r0, [r0] + ldr r1, _0803F57C + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F566 + bl sub_806CD90 +_0803F566: + bl sub_8049ED4 + bl sub_8040A84 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803F574: .4byte 0x00018216 +_0803F578: .4byte gDungeon +_0803F57C: .4byte 0x0001356c + thumb_func_end sub_803F508 + + thumb_func_start sub_803F580 +sub_803F580: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r0, _0803F600 + ldr r4, [r0] + ldr r0, _0803F604 + adds r5, r4, r0 + ldr r6, [r5, 0x10] + cmp r6, 0 + bne _0803F59E + b _0803F7A0 +_0803F59E: + adds r0, r6, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + bne _0803F5AC + b _0803F7A0 +_0803F5AC: + ldr r7, [r6, 0x70] + ldr r0, [r5, 0x8] + str r0, [r5, 0xC] + ldr r0, [r5] + str r0, [r5, 0x4] + ldrh r0, [r6, 0x4] + strh r0, [r5] + ldrh r0, [r6, 0x6] + strh r0, [r5, 0x2] + ldr r0, [r6, 0xC] + cmp r0, 0 + bge _0803F5C6 + adds r0, 0xFF +_0803F5C6: + asrs r0, 8 + subs r0, 0x78 + strh r0, [r5, 0x8] + ldr r0, [r6, 0x10] + cmp r0, 0 + bge _0803F5D4 + adds r0, 0xFF +_0803F5D4: + asrs r0, 8 + subs r0, 0x60 + strh r0, [r5, 0xA] + adds r0, r6, 0 + movs r1, 0x11 + bl HasHeldItem + lsls r0, 24 + cmp r0, 0 + beq _0803F610 + ldrb r0, [r7, 0x7] + cmp r0, 0 + beq _0803F610 + ldr r1, _0803F608 + adds r0, r4, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r2, _0803F60C + adds r0, r4, r2 + strb r1, [r0] + b _0803F626 + .align 2, 0 +_0803F600: .4byte gDungeon +_0803F604: .4byte 0x000181e8 +_0803F608: .4byte 0x0001820d +_0803F60C: .4byte 0x0001820e +_0803F610: + adds r0, r7, 0 + adds r0, 0xF0 + ldrb r0, [r0] + adds r1, r5, 0 + adds r1, 0x25 + strb r0, [r1] + adds r0, r7, 0 + adds r0, 0xF1 + ldrb r0, [r0] + adds r1, 0x1 + strb r0, [r1] +_0803F626: + adds r0, r7, 0 + adds r0, 0xF2 + ldrb r0, [r0] + adds r1, r5, 0 + adds r1, 0x29 + strb r0, [r1] + subs r1, 0x7 + ldrb r0, [r1] + mov r8, r0 + adds r0, r5, 0 + adds r0, 0x2C + ldrb r2, [r0] + adds r4, r1, 0 + cmp r2, 0 + bne _0803F670 + adds r0, r7, 0 + adds r0, 0xE8 + ldrb r1, [r0] + adds r7, r0, 0 + cmp r1, 0x1 + bne _0803F656 + strb r1, [r4] + movs r1, 0xE + b _0803F65A +_0803F656: + strb r2, [r4] + movs r1, 0 +_0803F65A: + ldr r2, _0803F66C + ldr r0, [r2] + cmp r0, r1 + beq _0803F678 + str r1, [r2] + adds r0, r1, 0 + bl SetBGOBJEnableFlags + b _0803F678 + .align 2, 0 +_0803F66C: .4byte gUnknown_202EDFC +_0803F670: + ldr r1, _0803F698 + ldr r0, _0803F69C + str r0, [r1] + adds r7, 0xE8 +_0803F678: + ldrb r4, [r4] + cmp r8, r4 + beq _0803F684 + movs r0, 0 + bl sub_8041888 +_0803F684: + adds r0, r5, 0 + adds r0, 0x28 + ldrb r1, [r0] + mov r8, r1 + ldrb r1, [r7] + adds r2, r0, 0 + cmp r1, 0x2 + bne _0803F6A0 + movs r0, 0x1 + b _0803F6A2 + .align 2, 0 +_0803F698: .4byte gUnknown_202EDFC +_0803F69C: .4byte 0x0000ffff +_0803F6A0: + movs r0, 0 +_0803F6A2: + strb r0, [r2] + ldrb r2, [r2] + cmp r8, r2 + beq _0803F6B4 + bl sub_806CC70 + movs r0, 0 + bl sub_8041888 +_0803F6B4: + adds r4, r5, 0 + adds r4, 0x27 + ldrb r2, [r4] + mov r8, r2 + adds r0, r6, 0 + bl CanSeeInvisibleMonsters + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0803F6CC + movs r0, 0x1 +_0803F6CC: + strb r0, [r4] + ldrb r4, [r4] + cmp r8, r4 + beq _0803F6E2 + bl sub_8049ED4 + bl sub_8040A84 + movs r0, 0 + bl sub_8041888 +_0803F6E2: + mov r0, r9 + cmp r0, 0 + beq _0803F76A + adds r0, r5, 0 + adds r0, 0x2B + ldrb r1, [r0] + adds r4, r0, 0 + cmp r1, 0 + bne _0803F76A + movs r2, 0xC + ldrsh r1, [r5, r2] + movs r2, 0x8 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0803F704 + negs r1, r1 +_0803F704: + cmp r1, 0x7 + bgt _0803F71C + movs r0, 0xE + ldrsh r1, [r5, r0] + movs r2, 0xA + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0803F718 + negs r1, r1 +_0803F718: + cmp r1, 0x7 + ble _0803F726 +_0803F71C: + bl sub_8049ED4 + movs r0, 0x1 + strb r0, [r4] + b _0803F76A +_0803F726: + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r2, 0x8 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _0803F73C + movs r0, 0xF0 + movs r1, 0 + bl sub_804A1F0 + b _0803F748 +_0803F73C: + cmp r1, r0 + ble _0803F748 + movs r0, 0 + movs r1, 0 + bl sub_804A1F0 +_0803F748: + movs r0, 0xE + ldrsh r1, [r5, r0] + movs r2, 0xA + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _0803F75E + movs r0, 0 + movs r1, 0xA0 + bl sub_804A49C + b _0803F76A +_0803F75E: + cmp r1, r0 + ble _0803F76A + movs r0, 0 + movs r1, 0 + bl sub_804A49C +_0803F76A: + ldr r1, [r5] + ldr r0, [r5, 0x4] + cmp r1, r0 + beq _0803F7A0 + movs r5, 0 +_0803F774: + ldr r0, _0803F7B4 + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _0803F7B8 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0803F79A + movs r1, 0x4 + ldrsh r0, [r4, r1] + movs r2, 0x6 + ldrsh r1, [r4, r2] + bl sub_80402AC +_0803F79A: + adds r5, 0x1 + cmp r5, 0x13 + ble _0803F774 +_0803F7A0: + bl sub_80400D4 + bl sub_803F7BC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803F7B4: .4byte gDungeon +_0803F7B8: .4byte 0x000135cc + thumb_func_end sub_803F580 + + thumb_func_start sub_803F7BC +sub_803F7BC: + push {r4-r6,lr} + sub sp, 0x10 + ldr r6, _0803F800 + ldr r4, [r6] + ldr r0, _0803F804 + adds r5, r4, r0 + movs r1, 0 + ldrsh r0, [r5, r1] + movs r2, 0x2 + ldrsh r1, [r5, r2] + bl GetTile + ldrb r1, [r0, 0x9] + ldr r2, _0803F808 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F7F4 + adds r2, 0x1 + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0803F7F4 + adds r2, 0xB + adds r0, r4, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _0803F80C +_0803F7F4: + movs r0, 0 + movs r1, 0 + bl sub_8005838 + b _0803F86A + .align 2, 0 +_0803F800: .4byte gDungeon +_0803F804: .4byte 0x000181e8 +_0803F808: .4byte 0x0001820b +_0803F80C: + cmp r1, 0xFF + bne _0803F82C + ldr r1, _0803F828 + adds r0, r4, r1 + ldrb r0, [r0] + movs r1, 0x2 + cmp r0, 0x2 + bne _0803F81E + movs r1, 0x1 +_0803F81E: + movs r0, 0 + bl sub_8005838 + b _0803F86A + .align 2, 0 +_0803F828: .4byte 0x00018209 +_0803F82C: + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r2, _0803F874 + adds r0, r2 + ldr r2, [r6] + adds r2, r0 + movs r0, 0x8 + ldrsh r1, [r5, r0] + ldr r0, [r2, 0xC] + subs r0, r1 + str r0, [sp] + movs r0, 0xA + ldrsh r1, [r5, r0] + ldr r0, [r2, 0x10] + subs r0, r1 + str r0, [sp, 0x4] + movs r0, 0x8 + ldrsh r1, [r5, r0] + ldr r0, [r2, 0x14] + subs r0, r1 + str r0, [sp, 0x8] + movs r0, 0xA + ldrsh r1, [r5, r0] + ldr r0, [r2, 0x18] + subs r0, r1 + str r0, [sp, 0xC] + mov r0, sp + movs r1, 0x3 + bl sub_8005838 +_0803F86A: + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0803F874: .4byte 0x000104c4 + thumb_func_end sub_803F7BC + + thumb_func_start sub_803F878 +sub_803F878: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r2, r0, 0 + adds r6, r1, 0 + ldr r0, _0803F92C + ldr r7, [r0] + ldr r0, _0803F930 + adds r5, r7, r0 + ldr r0, [r5, 0x8] + str r0, [r5, 0xC] + ldr r0, [r5] + str r0, [r5, 0x4] + adds r0, r2, 0 + cmp r2, 0 + bge _0803F89A + adds r0, 0xFF +_0803F89A: + asrs r0, 8 + subs r0, 0x78 + movs r1, 0 + mov r8, r1 + strh r0, [r5, 0x8] + adds r0, r6, 0 + cmp r6, 0 + bge _0803F8AC + adds r0, 0xFF +_0803F8AC: + asrs r0, 8 + subs r0, 0x60 + strh r0, [r5, 0xA] + movs r4, 0xC0 + lsls r4, 5 + adds r0, r2, 0 + adds r1, r4, 0 + bl __divsi3 + strh r0, [r5] + adds r0, r6, 0 + adds r1, r4, 0 + bl __divsi3 + strh r0, [r5, 0x2] + ldr r2, _0803F934 + adds r0, r7, r2 + mov r1, r8 + strb r1, [r0] + adds r2, 0x1 + adds r0, r7, r2 + strb r1, [r0] + ldr r1, _0803F938 + adds r0, r7, r1 + mov r2, r8 + strb r2, [r0] + adds r1, 0x5 + adds r0, r7, r1 + strb r2, [r0] + ldr r1, _0803F93C + ldr r0, [r1] + cmp r0, 0 + beq _0803F8F6 + movs r0, 0 + str r0, [r1] + bl SetBGOBJEnableFlags +_0803F8F6: + movs r2, 0xC + ldrsh r1, [r5, r2] + movs r2, 0x8 + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0803F906 + negs r1, r1 +_0803F906: + cmp r1, 0x7 + bgt _0803F91E + movs r0, 0xE + ldrsh r1, [r5, r0] + movs r2, 0xA + ldrsh r0, [r5, r2] + subs r1, r0 + cmp r1, 0 + bge _0803F91A + negs r1, r1 +_0803F91A: + cmp r1, 0x7 + ble _0803F940 +_0803F91E: + bl sub_8049ED4 + adds r1, r5, 0 + adds r1, 0x2B + movs r0, 0x1 + strb r0, [r1] + b _0803F984 + .align 2, 0 +_0803F92C: .4byte gDungeon +_0803F930: .4byte 0x000181e8 +_0803F934: .4byte 0x0001820d +_0803F938: .4byte 0x00018211 +_0803F93C: .4byte gUnknown_202EDFC +_0803F940: + movs r0, 0xC + ldrsh r1, [r5, r0] + movs r2, 0x8 + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _0803F956 + movs r0, 0xF0 + movs r1, 0 + bl sub_804A1F0 + b _0803F962 +_0803F956: + cmp r1, r0 + ble _0803F962 + movs r0, 0 + movs r1, 0 + bl sub_804A1F0 +_0803F962: + movs r0, 0xE + ldrsh r1, [r5, r0] + movs r2, 0xA + ldrsh r0, [r5, r2] + cmp r1, r0 + bge _0803F978 + movs r0, 0 + movs r1, 0xA0 + bl sub_804A49C + b _0803F984 +_0803F978: + cmp r1, r0 + ble _0803F984 + movs r0, 0 + movs r1, 0 + bl sub_804A49C +_0803F984: + bl sub_803F7BC + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_803F878 + + thumb_func_start GetCameraXPos +GetCameraXPos: + ldr r0, _0803F9A8 + ldr r0, [r0] + ldr r1, _0803F9AC + adds r0, r1 + movs r1, 0x8 + ldrsh r0, [r0, r1] + adds r0, 0x78 + lsls r0, 8 + bx lr + .align 2, 0 +_0803F9A8: .4byte gDungeon +_0803F9AC: .4byte 0x000181e8 + thumb_func_end GetCameraXPos + + thumb_func_start GetCameraYPos +GetCameraYPos: + ldr r0, _0803F9C4 + ldr r0, [r0] + ldr r1, _0803F9C8 + adds r0, r1 + movs r1, 0xA + ldrsh r0, [r0, r1] + adds r0, 0x60 + lsls r0, 8 + bx lr + .align 2, 0 +_0803F9C4: .4byte gDungeon +_0803F9C8: .4byte 0x000181e8 + thumb_func_end GetCameraYPos + + thumb_func_start sub_803F9CC +sub_803F9CC: + push {r4,r5,lr} + ldr r0, _0803FA24 + ldr r1, [r0] + ldr r2, _0803FA28 + adds r0, r1, r2 + ldr r4, [r0] + movs r5, 0 + ldr r2, _0803FA2C + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0803FA0C + ldr r2, _0803FA30 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0803FA0C + bl sub_800EC74 + lsls r0, 24 + cmp r0, 0 + bne _0803FA0C + cmp r4, 0 + beq _0803FA08 + adds r0, r4, 0 + bl GetEntityType + cmp r0, 0x1 + bne _0803FA08 + movs r5, 0x1 +_0803FA08: + cmp r5, 0 + bne _0803FA38 +_0803FA0C: + ldr r0, _0803FA34 + movs r2, 0 + adds r0, 0x2 + movs r1, 0x1C +_0803FA14: + strh r2, [r0] + adds r0, 0x2 + subs r1, 0x1 + cmp r1, 0 + bge _0803FA14 + bl sub_803F38C + b _0803FA3C + .align 2, 0 +_0803FA24: .4byte gDungeon +_0803FA28: .4byte 0x000181f8 +_0803FA2C: .4byte 0x0001356c +_0803FA30: .4byte 0x00018218 +_0803FA34: .4byte gUnknown_202B038 +_0803FA38: + bl sub_803FB74 +_0803FA3C: + ldr r1, _0803FA48 + movs r0, 0x1 + strb r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0803FA48: .4byte gUnknown_20274A5 + thumb_func_end sub_803F9CC + + thumb_func_start sub_803FA4C +sub_803FA4C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + adds r4, r0, 0 + mov r8, r1 + lsls r2, 24 + lsrs r2, 24 + mov r12, r2 + ldr r0, _0803FB4C + ldr r3, [r0] + ldr r0, _0803FB50 + adds r0, r3, r0 + str r0, [sp, 0x24] + ldr r7, _0803FB54 + mov r1, sp + ldr r0, _0803FB58 + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldm r0!, {r2,r5,r6} + stm r1!, {r2,r5,r6} + ldr r0, _0803FB5C + mov r10, r0 + ldr r1, _0803FB60 + mov r9, r1 + ldr r2, [sp, 0x24] + movs r5, 0x3E + ldrsh r0, [r2, r5] + cmp r4, r0 + bne _0803FA9C + ldr r6, _0803FB64 + adds r0, r3, r6 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r8, r0 + beq _0803FB3A +_0803FA9C: + mov r2, r12 + cmp r2, 0 + bne _0803FAA6 + ldr r5, _0803FB68 + mov r9, r5 +_0803FAA6: + ldr r6, [sp, 0x24] + strh r4, [r6, 0x3E] + ldr r1, _0803FB64 + adds r0, r3, r1 + mov r2, r8 + strh r2, [r0] + mov r5, r8 + cmp r5, 0x5F + ble _0803FAC8 + movs r5, 0x60 + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 5 + mov r1, r8 + bl __divsi3 + adds r4, r0, 0 +_0803FAC8: + movs r3, 0 + mov r8, r3 + movs r6, 0x58 + mov r12, r6 +_0803FAD0: + ldr r6, _0803FB6C + adds r2, r4, 0 + adds r0, r5, 0 + cmp r4, 0x7 + ble _0803FADC + movs r2, 0x8 +_0803FADC: + cmp r5, 0x7 + ble _0803FAE2 + movs r0, 0x8 +_0803FAE2: + lsls r0, 2 + mov r3, sp + adds r1, r3, r0 + lsls r0, r2, 2 + add r0, sp + ldr r2, [r0] + ldr r3, [r1] + adds r1, r3, 0 + bics r1, r2 + mov r0, r10 + ands r1, r0 + mov r0, r9 + ands r0, r2 + orrs r0, r1 + ands r6, r3 + mov r1, r8 + stm r7!, {r1} + stm r7!, {r6} + stm r7!, {r0} + stm r7!, {r0} + stm r7!, {r0} + stm r7!, {r0} + stm r7!, {r6} + stm r7!, {r1} + subs r4, 0x8 + subs r5, 0x8 + cmp r4, 0 + bge _0803FB1C + movs r4, 0 +_0803FB1C: + cmp r5, 0 + bge _0803FB22 + movs r5, 0 +_0803FB22: + movs r2, 0x8 + negs r2, r2 + add r12, r2 + mov r3, r12 + cmp r3, 0 + bge _0803FAD0 + ldr r0, _0803FB70 + movs r2, 0xC0 + lsls r2, 1 + ldr r1, _0803FB54 + bl sub_80098BC +_0803FB3A: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803FB4C: .4byte gDungeon +_0803FB50: .4byte 0x000181e8 +_0803FB54: .4byte gUnknown_3001018 +_0803FB58: .4byte gUnknown_80F6490 +_0803FB5C: .4byte 0x22222222 +_0803FB60: .4byte 0x44444444 +_0803FB64: .4byte 0x00018228 +_0803FB68: .4byte 0x55555555 +_0803FB6C: .4byte 0x77777777 +_0803FB70: .4byte 0x06005980 + thumb_func_end sub_803FA4C + + thumb_func_start sub_803FB74 +sub_803FB74: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r0, _0803FBE8 + ldr r0, [r0] + ldr r1, _0803FBEC + adds r7, r0, r1 + movs r4, 0 + movs r2, 0 + str r2, [sp] + ldr r0, [r7, 0x10] + ldr r0, [r0, 0x70] + movs r1, 0xE + ldrsh r3, [r0, r1] + mov r9, r3 + movs r3, 0x10 + ldrsh r2, [r0, r3] + mov r8, r2 + ldrb r1, [r0, 0x9] + mov r10, r1 + movs r2, 0xE + ldrsh r1, [r0, r2] + cmp r1, 0 + ble _0803FBBA + mov r0, r8 + cmp r0, 0 + bge _0803FBB2 + adds r0, 0x3 +_0803FBB2: + asrs r0, 2 + cmp r1, r0 + bgt _0803FBBA + movs r4, 0x1 +_0803FBBA: + ldr r0, [r7, 0x10] + ldr r0, [r0, 0x70] + movs r3, 0x9E + lsls r3, 1 + adds r0, r3 + ldr r0, [r0] + bl RoundUpFixedPoint + cmp r0, 0 + bne _0803FBD2 + movs r0, 0x1 + str r0, [sp] +_0803FBD2: + cmp r4, 0 + beq _0803FBF4 + ldr r0, _0803FBF0 + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803FBF4 + movs r5, 0x20 + movs r6, 0x20 + b _0803FBF8 + .align 2, 0 +_0803FBE8: .4byte gDungeon +_0803FBEC: .4byte 0x000181e8 +_0803FBF0: .4byte gUnknown_202EDCC +_0803FBF4: + movs r5, 0 + movs r6, 0 +_0803FBF8: + ldr r1, [sp] + cmp r1, 0 + beq _0803FC0E + ldr r0, _0803FC20 + ldr r0, [r0] + movs r1, 0x10 + ands r0, r1 + cmp r0, 0 + beq _0803FC0E + movs r5, 0x30 + movs r6, 0x30 +_0803FC0E: + cmp r5, 0 + bne _0803FC30 + adds r0, r7, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, 0 + beq _0803FC24 + movs r5, 0x60 + b _0803FC30 + .align 2, 0 +_0803FC20: .4byte gUnknown_202EDCC +_0803FC24: + ldr r0, _0803FCE4 + ldr r0, [r0] + ldrb r0, [r0, 0xB] + cmp r0, 0 + beq _0803FC30 + movs r5, 0x40 +_0803FC30: + cmp r6, 0 + bne _0803FC40 + ldr r0, _0803FCE4 + ldr r0, [r0] + ldrb r0, [r0, 0xB] + cmp r0, 0 + beq _0803FC40 + movs r6, 0x40 +_0803FC40: + movs r2, 0x36 + ldrsh r0, [r7, r2] + cmp r0, r5 + beq _0803FC78 + strh r5, [r7, 0x36] + lsls r5, 2 + ldr r4, _0803FCE8 + adds r1, r5, r4 + movs r0, 0xFC + bl SetBGPaletteBufferColorArray + adds r1, r4, 0x4 + adds r1, r5, r1 + movs r0, 0xFD + bl SetBGPaletteBufferColorArray + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r5, r1 + movs r0, 0xFE + bl SetBGPaletteBufferColorArray + adds r4, 0xC + adds r5, r4 + movs r0, 0xFF + adds r1, r5, 0 + bl SetBGPaletteBufferColorArray +_0803FC78: + movs r3, 0x38 + ldrsh r0, [r7, r3] + cmp r0, r6 + beq _0803FCB0 + strh r6, [r7, 0x38] + lsls r5, r6, 2 + ldr r4, _0803FCE8 + adds r1, r5, r4 + movs r0, 0xFC + bl nullsub_5 + adds r1, r4, 0x4 + adds r1, r5, r1 + movs r0, 0xFD + bl nullsub_5 + adds r1, r4, 0 + adds r1, 0x8 + adds r1, r5, r1 + movs r0, 0xFE + bl nullsub_5 + adds r4, 0xC + adds r5, r4 + movs r0, 0xFF + adds r1, r5, 0 + bl nullsub_5 +_0803FCB0: + ldr r5, _0803FCEC + ldr r0, _0803FCF0 + ldr r2, [r0] + ldr r0, _0803FCF4 + adds r1, r2, r0 + movs r3, 0x14 + ldrsh r0, [r2, r3] + ldrb r1, [r1] + adds r6, r0, r1 + movs r1, 0x3A + ldrsh r0, [r7, r1] + adds r4, r7, 0 + adds r4, 0x2E + cmp r0, r6 + beq _0803FD3E + strh r6, [r7, 0x3A] + ldr r3, _0803FCF8 + adds r0, r2, r3 + ldrb r0, [r0] + bl IsStairDirectionUp + lsls r0, 24 + cmp r0, 0 + beq _0803FCFC + movs r0, 0 + b _0803FD00 + .align 2, 0 +_0803FCE4: .4byte gGameOptionsRef +_0803FCE8: .4byte gUnknown_202D068 +_0803FCEC: .4byte gUnknown_202B038 +_0803FCF0: .4byte gDungeon +_0803FCF4: .4byte 0x00000645 +_0803FCF8: .4byte 0x00000644 +_0803FCFC: + ldr r1, _0803FD20 + adds r0, r1, 0 +_0803FD00: + strh r0, [r5, 0x2] + cmp r6, 0x9 + bgt _0803FD28 + adds r1, r5, 0x4 + adds r4, r7, 0 + adds r4, 0x2E + ldrb r2, [r4] + adds r0, r6, 0 + movs r3, 0x1 + bl sub_803FE30 + ldr r2, _0803FD24 + adds r0, r2, 0 + strh r0, [r5, 0x6] + b _0803FD3E + .align 2, 0 +_0803FD20: .4byte 0x0000f2be +_0803FD24: .4byte 0x0000f2b8 +_0803FD28: + adds r1, r5, 0x4 + adds r4, r7, 0 + adds r4, 0x2E + ldrb r2, [r4] + adds r0, r6, 0 + movs r3, 0 + bl sub_803FE30 + ldr r3, _0803FE10 + adds r0, r3, 0 + strh r0, [r5, 0x8] +_0803FD3E: + movs r1, 0x3C + ldrsh r0, [r7, r1] + cmp r0, r10 + beq _0803FD64 + mov r2, r10 + strh r2, [r7, 0x3C] + ldr r3, _0803FE14 + adds r0, r3, 0 + strh r0, [r5, 0xA] + ldr r1, _0803FE18 + adds r0, r1, 0 + strh r0, [r5, 0xC] + adds r1, r5, 0 + adds r1, 0xE + ldrb r2, [r4] + mov r0, r10 + movs r3, 0 + bl sub_803FE30 +_0803FD64: + movs r2, 0x3E + ldrsh r0, [r7, r2] + cmp r0, r9 + beq _0803FD84 + ldr r3, _0803FE1C + adds r0, r3, 0 + strh r0, [r5, 0x12] + ldr r1, _0803FE20 + adds r0, r1, 0 + strh r0, [r5, 0x14] + adds r1, r5, 0 + adds r1, 0x16 + ldrb r2, [r4] + mov r0, r9 + bl sub_803FF18 +_0803FD84: + adds r6, r7, 0 + adds r6, 0x40 + movs r2, 0 + ldrsh r0, [r6, r2] + cmp r0, r8 + beq _0803FDA2 + ldr r3, _0803FE24 + adds r0, r3, 0 + strh r0, [r5, 0x1C] + adds r1, r5, 0 + adds r1, 0x1E + ldrb r2, [r4] + mov r0, r8 + bl sub_803FF18 +_0803FDA2: + ldrb r2, [r4] + mov r0, r9 + mov r1, r8 + bl sub_803FA4C + mov r0, r8 + strh r0, [r6] + mov r1, r9 + strh r1, [r7, 0x3E] + mov r0, r8 + cmp r0, 0 + bge _0803FDBC + adds r0, 0x7 +_0803FDBC: + asrs r1, r0, 3 + adds r4, r7, 0 + adds r4, 0x42 + strh r1, [r4] + movs r0, 0x7 + mov r2, r8 + ands r2, r0 + cmp r2, 0 + beq _0803FDD2 + adds r0, r1, 0x1 + strh r0, [r4] +_0803FDD2: + movs r3, 0 + ldrsh r0, [r4, r3] + cmp r0, 0xB + ble _0803FDDE + movs r0, 0xC + strh r0, [r4] +_0803FDDE: + movs r1, 0 + ldr r0, _0803FE28 + movs r2, 0xB3 + lsls r2, 2 + adds r4, r2, 0 + ldr r2, _0803FE2C + adds r3, r2, 0 + adds r2, r0, 0 + adds r2, 0x24 +_0803FDF0: + adds r0, r1, r4 + orrs r0, r3 + strh r0, [r2] + adds r2, 0x2 + adds r1, 0x1 + cmp r1, 0xB + ble _0803FDF0 + 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 +_0803FE10: .4byte 0x0000f2b8 +_0803FE14: .4byte 0x0000f2b9 +_0803FE18: .4byte 0x0000f2ba +_0803FE1C: .4byte 0x0000f2bb +_0803FE20: .4byte 0x0000f2bc +_0803FE24: .4byte 0x0000f2bd +_0803FE28: .4byte gUnknown_202B038 +_0803FE2C: .4byte 0xfffff000 + thumb_func_end sub_803FB74 + + thumb_func_start sub_803FE30 +sub_803FE30: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + adds r1, r2, 0 + lsls r3, 24 + lsrs r3, 24 + mov r12, r3 + movs r0, 0 + cmp r2, 0 + bne _0803FE4E + movs r0, 0x37 +_0803FE4E: + cmp r5, 0x64 + ble _0803FE70 + cmp r2, 0 + beq _0803FE60 + ldr r1, _0803FE5C + adds r0, r1, 0 + b _0803FE64 + .align 2, 0 +_0803FE5C: .4byte 0x0000f291 +_0803FE60: + ldr r2, _0803FE6C + adds r0, r2, 0 +_0803FE64: + strh r0, [r4] + strh r0, [r4, 0x2] + b _0803FF00 + .align 2, 0 +_0803FE6C: .4byte 0x0000f2c8 +_0803FE70: + cmp r5, 0x64 + bne _0803FEBC + ldr r1, _0803FE84 + adds r0, r1, 0 + strh r0, [r4] + ldr r2, _0803FE88 + adds r0, r2, 0 + strh r0, [r4, 0x2] + b _0803FF00 + .align 2, 0 +_0803FE84: .4byte 0x0000f294 +_0803FE88: .4byte 0x0000f295 +_0803FE8C: + ldr r1, _0803FEB4 + lsls r0, r6, 3 + adds r0, r6 + adds r0, r2 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r4] + subs r0, r5, r3 + adds r0, r7 + movs r1, 0x96 + lsls r1, 2 + adds r0, r1 + ldr r2, _0803FEB8 + adds r1, r2, 0 + orrs r0, r1 + mov r1, r8 + strh r0, [r1] + b _0803FF00 + .align 2, 0 +_0803FEB4: .4byte gUnknown_80F64D8 +_0803FEB8: .4byte 0xfffff000 +_0803FEBC: + adds r2, r4, 0x2 + mov r8, r2 + adds r7, r0, 0 + adds r7, 0x30 + cmp r5, 0x9 + ble _0803FEE2 + movs r6, 0 + cmp r1, 0 + bne _0803FED0 + movs r6, 0x1 +_0803FED0: + movs r2, 0 + ldr r0, _0803FF0C +_0803FED4: + ldr r3, [r0] + cmp r3, r5 + ble _0803FE8C + adds r0, 0x4 + adds r2, 0x1 + cmp r2, 0x8 + ble _0803FED4 +_0803FEE2: + mov r0, r12 + cmp r0, 0 + bne _0803FEF0 + ldr r1, _0803FF10 + adds r0, r1, 0 + strh r0, [r4] + adds r4, 0x2 +_0803FEF0: + adds r0, r5, r7 + movs r2, 0x96 + lsls r2, 2 + adds r0, r2 + ldr r2, _0803FF14 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r4] +_0803FF00: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0803FF0C: .4byte gUnknown_80F64B4 +_0803FF10: .4byte 0x0000f278 +_0803FF14: .4byte 0xfffff000 + thumb_func_end sub_803FE30 + + thumb_func_start sub_803FF18 +sub_803FF18: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r3, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r6, 0 + cmp r2, 0 + bne _0803FF2E + movs r6, 0x1 +_0803FF2E: + movs r1, 0 + cmp r2, 0 + bne _0803FF36 + movs r1, 0x37 +_0803FF36: + ldr r0, _0803FF54 + cmp r5, r0 + ble _0803FF7C + ldr r0, _0803FF58 + lsls r1, r6, 3 + adds r1, r6 + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strh r0, [r3] + adds r3, 0x2 + strh r0, [r3] + strh r0, [r3, 0x2] + b _0804001A + .align 2, 0 +_0803FF54: .4byte 0x000003e7 +_0803FF58: .4byte gUnknown_80F6544 +_0803FF5C: + ldr r1, _0803FF78 + lsls r0, r6, 3 + adds r0, r6 + adds r0, r4 + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3] + adds r3, 0x2 + subs r5, r2 + mov r1, r8 + lsls r0, r1, 24 + lsrs r7, r0, 24 + b _0803FF98 + .align 2, 0 +_0803FF78: .4byte gUnknown_80F6544 +_0803FF7C: + movs r7, 0x20 + movs r4, 0 + adds r1, 0x30 + mov r8, r1 + ldr r2, _0803FFC0 + mov r12, r2 + ldr r0, _0803FFC4 +_0803FF8A: + ldr r2, [r0] + cmp r2, r5 + ble _0803FF5C + adds r0, 0x4 + adds r4, 0x1 + cmp r4, 0x8 + ble _0803FF8A +_0803FF98: + cmp r4, 0x9 + bne _0803FFAC + movs r1, 0x96 + lsls r1, 2 + adds r0, r7, r1 + ldr r2, _0803FFC8 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r3] + adds r3, 0x2 +_0803FFAC: + movs r4, 0 + mov r0, r12 + ldr r2, [r0] + cmp r2, r5 + bgt _0803FFD0 + ldr r0, _0803FFCC + lsls r1, r6, 3 + adds r1, r6 + b _0803FFE8 + .align 2, 0 +_0803FFC0: .4byte gUnknown_80F6520 +_0803FFC4: .4byte gUnknown_80F64FC +_0803FFC8: .4byte 0xfffff000 +_0803FFCC: .4byte gUnknown_80F6544 +_0803FFD0: + adds r4, 0x1 + cmp r4, 0x8 + bgt _0803FFF4 + lsls r0, r4, 2 + add r0, r12 + ldr r2, [r0] + cmp r2, r5 + bgt _0803FFD0 + ldr r0, _08040024 + lsls r1, r6, 3 + adds r1, r6 + adds r1, r4 +_0803FFE8: + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + strh r0, [r3] + adds r3, 0x2 + subs r5, r2 +_0803FFF4: + cmp r4, 0x9 + bne _08040008 + movs r1, 0x96 + lsls r1, 2 + adds r0, r7, r1 + ldr r2, _08040028 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r3] + adds r3, 0x2 +_08040008: + mov r1, r8 + adds r0, r5, r1 + movs r2, 0x96 + lsls r2, 2 + adds r0, r2 + ldr r2, _08040028 + adds r1, r2, 0 + orrs r0, r1 + strh r0, [r3] +_0804001A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08040024: .4byte gUnknown_80F6544 +_08040028: .4byte 0xfffff000 + thumb_func_end sub_803FF18 + + .align 2,0 @ Don't pad with nop diff --git a/asm/code_808417C.s b/asm/code_808417C.s index de1f87c1a..9a765506d 100644 --- a/asm/code_808417C.s +++ b/asm/code_808417C.s @@ -692,117 +692,3 @@ _08084768: .align 2, 0 _08084774: .4byte gUnknown_80FA3B8 thumb_func_end sub_80845E0 - -@ https://decomp.me/scratch/vELLj (kermalis 100%) `void sub_8084778(void)` - thumb_func_start sub_8084778 -sub_8084778: - push {r4,lr} - ldr r0, _080847B8 - ldr r1, _080847BC - bl strcpy - movs r4, 0 -_08084784: - lsls r0, r4, 24 - lsrs r0, 24 - bl GetJobSlotInfo - adds r1, r0, 0 - ldrb r0, [r1] - cmp r0, 0x6 - bne _080847C8 - ldr r0, _080847C0 - ldr r0, [r0] - ldr r2, _080847C4 - adds r0, r2 - ldrb r0, [r0] - ldrb r2, [r1, 0x4] - cmp r0, r2 - bne _080847C8 - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - bne _080847C8 - movs r0, 0xE - ldrsh r1, [r1, r0] - ldr r0, _080847B8 - bl CopyCyanMonsterNametoBuffer - b _080847CE - .align 2, 0 -_080847B8: .4byte gUnknown_202E088 -_080847BC: .4byte gUnknown_8107224 -_080847C0: .4byte gDungeon -_080847C4: .4byte 0x00000644 -_080847C8: - adds r4, 0x1 - cmp r4, 0x7 - ble _08084784 -_080847CE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8084778 - - thumb_func_start sub_80847D4 -sub_80847D4: - push {r4,r5,lr} - ldr r2, _08084820 - ldr r0, [r2] - ldr r1, _08084824 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - ldr r2, _08084828 - adds r0, r2 - strb r1, [r0] - bl sub_8040A84 - movs r4, 0 - ldr r0, _0808482C - ldrb r0, [r0] - cmp r0, 0 - beq _08084846 - movs r3, 0 -_080847FA: - ldr r0, _08084820 - ldr r0, [r0] - ldr r5, _08084830 - adds r0, r5 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r1, 0 - subs r0, 0x1C - cmp r0, 0x15 - bhi _08084810 - movs r1, 0x1B -_08084810: - ldr r2, _0808482C - adds r0, r3, r2 - ldrb r5, [r0] - cmp r1, r5 - bne _08084834 - bl sub_8084854 - b _08084846 - .align 2, 0 -_08084820: .4byte gDungeon -_08084824: .4byte 0x00003a0d -_08084828: .4byte 0x0001356c -_0808482C: .4byte gUnknown_8107234 -_08084830: .4byte 0x00003a14 -_08084834: - adds r3, 0x8 - adds r4, 0x1 - ldr r0, _08084850 - cmp r4, r0 - bgt _08084846 - adds r0, r3, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080847FA -_08084846: - bl sub_8097FF8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08084850: .4byte 0x000003e6 - thumb_func_end sub_80847D4 - - .align 2,0 diff --git a/asm/code_80847D4.s b/asm/code_80847D4.s new file mode 100644 index 000000000..7ec4a2d81 --- /dev/null +++ b/asm/code_80847D4.s @@ -0,0 +1,73 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80847D4 +sub_80847D4: + push {r4,r5,lr} + ldr r2, _08084820 + ldr r0, [r2] + ldr r1, _08084824 + adds r0, r1 + movs r1, 0 + strb r1, [r0] + ldr r0, [r2] + ldr r2, _08084828 + adds r0, r2 + strb r1, [r0] + bl sub_8040A84 + movs r4, 0 + ldr r0, _0808482C + ldrb r0, [r0] + cmp r0, 0 + beq _08084846 + movs r3, 0 +_080847FA: + ldr r0, _08084820 + ldr r0, [r0] + ldr r5, _08084830 + adds r0, r5 + movs r2, 0 + ldrsh r1, [r0, r2] + adds r0, r1, 0 + subs r0, 0x1C + cmp r0, 0x15 + bhi _08084810 + movs r1, 0x1B +_08084810: + ldr r2, _0808482C + adds r0, r3, r2 + ldrb r5, [r0] + cmp r1, r5 + bne _08084834 + bl sub_8084854 + b _08084846 + .align 2, 0 +_08084820: .4byte gDungeon +_08084824: .4byte 0x00003a0d +_08084828: .4byte 0x0001356c +_0808482C: .4byte gUnknown_8107234 +_08084830: .4byte 0x00003a14 +_08084834: + adds r3, 0x8 + adds r4, 0x1 + ldr r0, _08084850 + cmp r4, r0 + bgt _08084846 + adds r0, r3, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080847FA +_08084846: + bl sub_8097FF8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08084850: .4byte 0x000003e6 + thumb_func_end sub_80847D4 + + .align 2,0 diff --git a/asm/code_8085B0C.s b/asm/code_8085B0C.s deleted file mode 100644 index cd4442a4e..000000000 --- a/asm/code_8085B0C.s +++ /dev/null @@ -1,942 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - -@ https://decomp.me/scratch/GE070 (kermalis 100%) `void sub_8085B4C(struct_8085B80 *, s16 **, Entity **, s32)` idk the structs - thumb_func_start sub_8085B4C -sub_8085B4C: - push {r4-r6,lr} - adds r5, r0, 0 - ldr r0, _08085B7C - str r3, [r0] - cmp r3, 0 - ble _08085B76 - movs r6, 0x1 - adds r4, r1, 0 - adds r1, r5, 0 -_08085B5E: - strb r6, [r1] - ldm r2!, {r0} - str r0, [r1, 0x4] - ldm r4!, {r0} - str r0, [r1, 0xC] - movs r5, 0x4 - ldrsh r0, [r0, r5] - str r0, [r1, 0x8] - adds r1, 0x10 - subs r3, 0x1 - cmp r3, 0 - bne _08085B5E -_08085B76: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08085B7C: .4byte gUnknown_202F3D8 - thumb_func_end sub_8085B4C - -@ https://decomp.me/scratch/lb4jF (kermalis 87.53%) `bool8 sub_8085B80(struct_8085B80 *)` - thumb_func_start sub_8085B80 -sub_8085B80: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r1, r0, 0 - movs r0, 0 - mov r8, r0 - movs r7, 0 - ldr r0, _08085BE4 - ldr r0, [r0] - cmp r8, r0 - bge _08085C3E - adds r5, r1, 0 -_08085B98: - ldr r6, [r5, 0x4] - ldr r2, [r6, 0x70] - adds r3, r2, 0 - ldr r4, [r5, 0xC] - ldrb r0, [r5] - cmp r0, 0 - beq _08085C32 - movs r1, 0x1 - mov r8, r1 - ldr r0, [r5, 0x8] - cmp r0, 0 - bne _08085C08 - adds r4, 0x8 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08085BE8 - strb r0, [r5] - ldrb r1, [r4] - movs r0, 0x7 - ands r0, r1 - adds r1, r2, 0 - adds r1, 0x46 - strb r0, [r1] - movs r3, 0 - ldrsh r2, [r4, r3] - adds r0, r6, 0 - movs r1, 0x7 - bl sub_806CDD4 - movs r0, 0xA - ldrsh r1, [r4, r0] - movs r3, 0xC - ldrsh r2, [r4, r3] - adds r0, r6, 0 - bl sub_80856C8 - b _08085C32 - .align 2, 0 -_08085BE4: .4byte gUnknown_202F3D8 -_08085BE8: - movs r1, 0x4 - ldrsh r0, [r4, r1] - str r0, [r5, 0x8] - str r4, [r5, 0xC] - ldrb r1, [r4] - movs r0, 0x7 - ands r0, r1 - adds r1, r3, 0 - adds r1, 0x46 - strb r0, [r1] - movs r3, 0 - ldrsh r2, [r4, r3] - adds r0, r6, 0 - movs r1, 0 - bl sub_806CDD4 -_08085C08: - ldr r0, [r5, 0x8] - subs r0, 0x1 - str r0, [r5, 0x8] - ldr r1, _08085C4C - movs r2, 0 - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x2 - ldrsh r2, [r4, r3] - muls r1, r2 - lsls r1, 8 - movs r3, 0x2 - ldrsh r0, [r0, r3] - muls r2, r0 - lsls r2, 8 - adds r0, r6, 0 - bl IncreaseEntityPixelPos -_08085C32: - adds r5, 0x10 - adds r7, 0x1 - ldr r0, _08085C50 - ldr r0, [r0] - cmp r7, r0 - blt _08085B98 -_08085C3E: - mov r0, r8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08085C4C: .4byte gAdjacentTileOffsets -_08085C50: .4byte gUnknown_202F3D8 - thumb_func_end sub_8085B80 - - thumb_func_start SetDungeonBGColorRGB -SetDungeonBGColorRGB: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x28 - str r0, [sp, 0x14] - mov r10, r1 - mov r9, r2 - ldr r4, [sp, 0x48] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - bl sub_8085E98 - movs r0, 0 - mov r8, r0 - ldr r0, _08085E70 - ldr r0, [r0] - ldr r5, [r0, 0x4] - cmp r4, 0 - beq _08085CAE - ldr r1, [sp, 0x14] - cmp r1, 0 - blt _08085C92 - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - str r0, [sp, 0x14] -_08085C92: - mov r2, r10 - cmp r2, 0 - blt _08085CA0 - lsrs r0, r2, 31 - add r0, r10 - asrs r0, 1 - mov r10, r0 -_08085CA0: - mov r3, r9 - cmp r3, 0 - blt _08085CAE - lsrs r0, r3, 31 - add r0, r9 - asrs r0, 1 - mov r9, r0 -_08085CAE: - ldr r1, _08085E74 - ldr r0, [sp, 0x8] - ands r0, r1 - ldr r1, _08085E78 - ands r0, r1 - ldr r1, _08085E7C - ands r0, r1 - str r0, [sp, 0x8] - ldr r0, _08085E80 - ldr r2, [r0] - ldr r0, _08085E84 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - mov r0, r8 - add r1, sp, 0x8 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 - ldr r2, [sp, 0x14] - lsls r2, 16 - str r2, [sp, 0x1C] - mov r3, r10 - lsls r3, 16 - str r3, [sp, 0x20] - mov r0, r9 - lsls r0, 16 - str r0, [sp, 0x24] - add r7, sp, 0xC - movs r1, 0xA0 - cmp r1, 0x1 - ble _08085D56 - add r6, sp, 0x8 - movs r4, 0xA0 - subs r4, 0x1 -_08085CFA: - ldrb r0, [r5] - ldr r3, [sp, 0x14] - adds r2, r0, r3 - ldrb r0, [r5, 0x1] - mov r3, r10 - adds r1, r0, r3 - ldrb r0, [r5, 0x2] - add r0, r9 - cmp r2, 0xFF - ble _08085D10 - movs r2, 0xFF -_08085D10: - cmp r1, 0xFF - ble _08085D16 - movs r1, 0xFF -_08085D16: - cmp r0, 0xFF - ble _08085D1C - movs r0, 0xFF -_08085D1C: - cmp r2, 0 - bge _08085D22 - movs r2, 0 -_08085D22: - cmp r1, 0 - bge _08085D28 - movs r1, 0 -_08085D28: - cmp r0, 0 - bge _08085D2E - movs r0, 0 -_08085D2E: - strb r2, [r6] - strb r1, [r6, 0x1] - strb r0, [r6, 0x2] - ldr r0, _08085E80 - ldr r2, [r0] - ldr r0, _08085E84 - ldr r3, [r0] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - mov r0, r8 - add r1, sp, 0x8 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 - subs r4, 0x1 - cmp r4, 0 - bne _08085CFA -_08085D56: - ldr r2, _08085E88 - ldr r3, [sp, 0x1C] - lsrs r0, r3, 16 - ldr r1, [sp, 0x20] - orrs r0, r1 - str r0, [sp, 0xC] - ldr r3, [sp, 0x24] - lsrs r1, r3, 16 - ldr r0, [r7, 0x4] - ands r0, r2 - orrs r0, r1 - str r0, [r7, 0x4] - ldr r0, _08085E8C - ldr r1, _08085E80 - ldr r3, [r1] - ldr r1, _08085E84 - ldr r1, [r1] - movs r2, 0xBE - lsls r2, 1 - adds r1, r2 - str r1, [sp] - str r7, [sp, 0x4] - movs r1, 0xA0 - movs r2, 0x20 - bl sub_8004C00 - movs r3, 0x20 - add r8, r3 - ldr r5, _08085E90 - add r6, sp, 0x8 - movs r4, 0x20 -_08085D94: - ldrb r0, [r5] - ldr r1, [sp, 0x14] - adds r2, r0, r1 - ldrb r0, [r5, 0x1] - mov r3, r10 - adds r1, r0, r3 - ldrb r0, [r5, 0x2] - add r0, r9 - cmp r2, 0xFF - ble _08085DAA - movs r2, 0xFF -_08085DAA: - cmp r1, 0xFF - ble _08085DB0 - movs r1, 0xFF -_08085DB0: - cmp r0, 0xFF - ble _08085DB6 - movs r0, 0xFF -_08085DB6: - cmp r2, 0 - bge _08085DBC - movs r2, 0 -_08085DBC: - cmp r1, 0 - bge _08085DC2 - movs r1, 0 -_08085DC2: - cmp r0, 0 - bge _08085DC8 - movs r0, 0 -_08085DC8: - strb r2, [r6] - strb r1, [r6, 0x1] - strb r0, [r6, 0x2] - ldr r0, _08085E80 - ldr r2, [r0] - ldr r7, _08085E84 - ldr r3, [r7] - movs r0, 0xBE - lsls r0, 1 - adds r3, r0 - mov r0, r8 - add r1, sp, 0x8 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 - subs r4, 0x1 - cmp r4, 0 - bne _08085D94 - ldr r2, [sp, 0x18] - cmp r2, 0 - beq _08085E5E - ldr r0, [r7] - ldr r3, _08085E94 - adds r0, r3 - ldr r0, [r0] - ldr r5, [r0, 0x4] - movs r0, 0x80 - lsls r0, 1 - mov r8, r0 - add r6, sp, 0x8 - movs r4, 0xD0 -_08085E0A: - ldrb r0, [r5] - ldr r1, [sp, 0x14] - adds r2, r0, r1 - ldrb r0, [r5, 0x1] - mov r3, r10 - adds r1, r0, r3 - ldrb r0, [r5, 0x2] - add r0, r9 - cmp r2, 0xFF - ble _08085E20 - movs r2, 0xFF -_08085E20: - cmp r1, 0xFF - ble _08085E26 - movs r1, 0xFF -_08085E26: - cmp r0, 0xFF - ble _08085E2C - movs r0, 0xFF -_08085E2C: - cmp r2, 0 - bge _08085E32 - movs r2, 0 -_08085E32: - cmp r1, 0 - bge _08085E38 - movs r1, 0 -_08085E38: - cmp r0, 0 - bge _08085E3E - movs r0, 0 -_08085E3E: - strb r2, [r6] - strb r1, [r6, 0x1] - strb r0, [r6, 0x2] - ldr r0, _08085E80 - ldr r2, [r0] - mov r0, r8 - add r1, sp, 0x8 - movs r3, 0 - bl SetBGPaletteBufferColorRGB - adds r5, 0x4 - movs r0, 0x1 - add r8, r0 - subs r4, 0x1 - cmp r4, 0 - bne _08085E0A -_08085E5E: - add sp, 0x28 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08085E70: .4byte gDungeonPaletteFile -_08085E74: .4byte 0xffffff00 -_08085E78: .4byte 0xffff00ff -_08085E7C: .4byte 0xff00ffff -_08085E80: .4byte gUnknown_202EDC8 -_08085E84: .4byte gDungeon -_08085E88: .4byte 0xffff0000 -_08085E8C: .4byte gUnknown_202EE8C -_08085E90: .4byte gUnknown_202ECA4 -_08085E94: .4byte 0x000181e4 - thumb_func_end SetDungeonBGColorRGB - -@ gDungeon->field_0x18215 = 0; - thumb_func_start sub_8085E98 -sub_8085E98: - ldr r0, _08085EA8 - ldr r0, [r0] - ldr r1, _08085EAC - adds r0, r1 - movs r1, 0 - strb r1, [r0] - bx lr - .align 2, 0 -_08085EA8: .4byte gDungeon -_08085EAC: .4byte 0x00018215 - thumb_func_end sub_8085E98 - - thumb_func_start sub_8085EB0 -sub_8085EB0: - ldr r0, _08085EC0 - ldr r0, [r0] - ldr r1, _08085EC4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - bx lr - .align 2, 0 -_08085EC0: .4byte gDungeon -_08085EC4: .4byte 0x00018215 - thumb_func_end sub_8085EB0 - - thumb_func_start sub_8085EC8 -sub_8085EC8: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x28 - adds r4, r0, 0 - mov r8, r1 - mov r9, r2 - adds r6, r3, 0 - ldr r5, [sp, 0x40] - lsls r4, 16 - asrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - adds r0, r4, 0 - bl sub_800EE5C - bl sub_800EF64 - movs r0, 0x46 - bl sub_803E46C - str r4, [sp] - mov r0, r8 - str r0, [sp, 0x4] - mov r2, r9 - str r2, [sp, 0x8] - mov r1, sp - ldrh r0, [r6] - movs r2, 0 - strh r0, [r1, 0xC] - ldrh r0, [r6, 0x2] - strh r0, [r1, 0xE] - mov r0, sp - strh r2, [r0, 0x10] - strh r2, [r0, 0x12] - ldr r0, _08085F3C - str r0, [sp, 0x18] - add r1, sp, 0x1C - ldr r0, _08085F40 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - mov r0, sp - bl sub_800E890 - cmp r5, 0 - beq _08085F2E - bl sub_8085F44 - movs r0, 0x1 - negs r0, r0 -_08085F2E: - add sp, 0x28 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08085F3C: .4byte 0x0000ffff -_08085F40: .4byte gUnknown_8107374 - thumb_func_end sub_8085EC8 - - thumb_func_start sub_8085F44 -sub_8085F44: - push {r4,lr} - adds r4, r0, 0 - b _08085F5C -_08085F4A: - ldr r0, _08085F70 - ldr r0, [r0] - ldr r1, _08085F74 - adds r0, r1 - bl sub_800E90C - movs r0, 0x46 - bl sub_803E46C -_08085F5C: - adds r0, r4, 0 - bl sub_800E9A8 - lsls r0, 24 - cmp r0, 0 - bne _08085F4A - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08085F70: .4byte gDungeon -_08085F74: .4byte 0x000181f0 - thumb_func_end sub_8085F44 - - thumb_func_start sub_8085F78 -sub_8085F78: - push {lr} - ldr r0, _08085F94 - ldr r0, [r0] - ldr r1, _08085F98 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3C - bls _08085F8A - b _080860A4 -_08085F8A: - lsls r0, 2 - ldr r1, _08085F9C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08085F94: .4byte gDungeon -_08085F98: .4byte 0x00003a0d -_08085F9C: .4byte _08085FA0 - .align 2, 0 -_08085FA0: - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _08086094 - .4byte _08086094 - .4byte _08086094 - .4byte _0808609A - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A0 - .4byte _080860A0 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 - .4byte _080860A4 -_08086094: - bl sub_8088848 - b _080860A4 -_0808609A: - bl sub_8088EE8 - b _080860A4 -_080860A0: - bl sub_808A718 -_080860A4: - pop {r0} - bx r0 - thumb_func_end sub_8085F78 - - thumb_func_start sub_80860A8 -sub_80860A8: - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _08086108 - ldr r2, [r0] - movs r3, 0x1 -_080860B6: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080860C6 - ldrb r0, [r2, 0x2] - cmp r0, r6 - beq _08086104 -_080860C6: - adds r2, 0x4 - adds r5, 0x1 - cmp r5, 0x13 - ble _080860B6 - movs r5, 0 -_080860D0: - ldr r0, _0808610C - ldr r0, [r0] - lsls r1, r5, 2 - ldr r2, _08086110 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08086114 - ldr r2, [r4, 0x70] - adds r0, r2, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08086114 - adds r0, r2, 0 - adds r0, 0x62 - ldrb r0, [r0] - cmp r0, r6 - bne _08086114 -_08086104: - movs r0, 0x1 - b _0808611C - .align 2, 0 -_08086108: .4byte gTeamInventoryRef -_0808610C: .4byte gDungeon -_08086110: .4byte 0x0001357c -_08086114: - adds r5, 0x1 - cmp r5, 0x3 - ble _080860D0 - movs r0, 0 -_0808611C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80860A8 - - thumb_func_start sub_8086124 -sub_8086124: - ldr r0, [r0, 0x70] - movs r2, 0xB0 - lsls r2, 1 - adds r0, r2 - strb r1, [r0] - bx lr - thumb_func_end sub_8086124 - - thumb_func_start sub_8086130 -sub_8086130: - push {lr} - movs r0, 0x3C - bl DungeonFadeOutBGM - movs r0, 0x3C - movs r1, 0x46 - bl sub_803E708 - ldr r0, _08086194 - ldr r0, [r0] - bl sub_8052FB8 - movs r0, 0x1E - movs r1, 0x46 - bl sub_803E708 - ldr r0, _08086198 - ldr r0, [r0] - bl sub_8052FB8 - movs r0, 0x1E - movs r1, 0x46 - bl sub_803E708 - ldr r0, _0808619C - ldr r0, [r0] - bl sub_8052FB8 - movs r0, 0x1E - movs r1, 0x46 - bl sub_803E708 - ldr r0, _080861A0 - ldr r0, [r0] - bl sub_8052FB8 - movs r0, 0x1E - movs r1, 0x46 - bl sub_803E708 - ldr r0, _080861A4 - ldr r0, [r0] - bl sub_8052FB8 - movs r0, 0x1E - movs r1, 0x46 - bl sub_803E708 - pop {r0} - bx r0 - .align 2, 0 -_08086194: .4byte gUnknown_810665C -_08086198: .4byte gUnknown_810668C -_0808619C: .4byte gUnknown_81066D4 -_080861A0: .4byte gUnknown_81066F0 -_080861A4: .4byte gUnknown_810671C - thumb_func_end sub_8086130 - -@ `sub_806CDD4(a0, 0, 8);` - thumb_func_start sub_80861A8 -sub_80861A8: - push {lr} - movs r1, 0 - movs r2, 0x8 - bl sub_806CDD4 - pop {r0} - bx r0 - thumb_func_end sub_80861A8 - - thumb_func_start sub_80861B8 -sub_80861B8: - push {r4,r5,lr} - adds r4, r1, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, [r0, 0x70] - adds r1, r4, 0 - bl sub_806CDD4 - adds r5, 0xFE - strb r4, [r5] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80861B8 - - thumb_func_start sub_80861D4 -sub_80861D4: - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - bl sub_806CDD4 - adds r0, r4, 0 - bl sub_80861EC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80861D4 - - thumb_func_start sub_80861EC -sub_80861EC: - ldr r0, [r0, 0x70] - adds r0, 0xFE - movs r1, 0x63 - strb r1, [r0] - bx lr - thumb_func_end sub_80861EC - - thumb_func_start sub_80861F8 -sub_80861F8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - adds r6, r1, 0 - lsls r0, 16 - asrs r0, 16 - adds r5, r0, 0 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - bl sub_800EE5C - bl sub_800EF64 - movs r0, 0x46 - bl sub_803E46C - ldr r0, [r6, 0x70] - mov r8, r0 - movs r1, 0 - mov r9, r1 - str r1, [sp, 0x28] - adds r0, r5, 0 - bl sub_800E700 - adds r7, r0, 0 - add r4, sp, 0x28 - movs r2, 0x1 - negs r2, r2 - cmp r7, r2 - beq _0808624A - adds r1, r6, 0 - adds r1, 0x28 - lsls r2, r7, 24 - lsrs r2, 24 - adds r0, r4, 0 - bl sub_800569C -_0808624A: - str r5, [sp] - mov r3, r9 - str r3, [sp, 0x4] - mov r0, r8 - adds r0, 0x46 - ldrb r0, [r0] - str r0, [sp, 0x8] - mov r1, sp - ldr r0, [r6, 0xC] - cmp r0, 0 - bge _08086262 - adds r0, 0xFF -_08086262: - asrs r0, 8 - strh r0, [r1, 0xC] - mov r1, sp - ldr r0, [r6, 0x10] - cmp r0, 0 - bge _08086270 - adds r0, 0xFF -_08086270: - asrs r0, 8 - strh r0, [r1, 0xE] - mov r1, sp - ldrh r0, [r4] - strh r0, [r1, 0x10] - add r0, sp, 0x28 - ldrh r0, [r0, 0x2] - strh r0, [r1, 0x12] - str r7, [sp, 0x14] - ldr r0, _080862B4 - str r0, [sp, 0x18] - add r1, sp, 0x1C - ldr r0, _080862B8 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - mov r0, sp - bl sub_800E890 - mov r4, r10 - cmp r4, 0 - beq _080862A2 - bl sub_8085F44 - movs r0, 0x1 - negs r0, r0 -_080862A2: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080862B4: .4byte 0x0000ffff -_080862B8: .4byte gUnknown_8107380 - thumb_func_end sub_80861F8 - - .align 2,0 diff --git a/asm/code_8085B80.s b/asm/code_8085B80.s new file mode 100644 index 000000000..b79af6f97 --- /dev/null +++ b/asm/code_8085B80.s @@ -0,0 +1,420 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + +@ https://decomp.me/scratch/lb4jF (kermalis 87.53%) `bool8 sub_8085B80(struct_8085B80 *)` + thumb_func_start sub_8085B80 +sub_8085B80: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r1, r0, 0 + movs r0, 0 + mov r8, r0 + movs r7, 0 + ldr r0, _08085BE4 + ldr r0, [r0] + cmp r8, r0 + bge _08085C3E + adds r5, r1, 0 +_08085B98: + ldr r6, [r5, 0x4] + ldr r2, [r6, 0x70] + adds r3, r2, 0 + ldr r4, [r5, 0xC] + ldrb r0, [r5] + cmp r0, 0 + beq _08085C32 + movs r1, 0x1 + mov r8, r1 + ldr r0, [r5, 0x8] + cmp r0, 0 + bne _08085C08 + adds r4, 0x8 + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _08085BE8 + strb r0, [r5] + ldrb r1, [r4] + movs r0, 0x7 + ands r0, r1 + adds r1, r2, 0 + adds r1, 0x46 + strb r0, [r1] + movs r3, 0 + ldrsh r2, [r4, r3] + adds r0, r6, 0 + movs r1, 0x7 + bl sub_806CDD4 + movs r0, 0xA + ldrsh r1, [r4, r0] + movs r3, 0xC + ldrsh r2, [r4, r3] + adds r0, r6, 0 + bl sub_80856C8 + b _08085C32 + .align 2, 0 +_08085BE4: .4byte gUnknown_202F3D8 +_08085BE8: + movs r1, 0x4 + ldrsh r0, [r4, r1] + str r0, [r5, 0x8] + str r4, [r5, 0xC] + ldrb r1, [r4] + movs r0, 0x7 + ands r0, r1 + adds r1, r3, 0 + adds r1, 0x46 + strb r0, [r1] + movs r3, 0 + ldrsh r2, [r4, r3] + adds r0, r6, 0 + movs r1, 0 + bl sub_806CDD4 +_08085C08: + ldr r0, [r5, 0x8] + subs r0, 0x1 + str r0, [r5, 0x8] + ldr r1, _08085C4C + movs r2, 0 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r1 + movs r3, 0 + ldrsh r1, [r0, r3] + movs r3, 0x2 + ldrsh r2, [r4, r3] + muls r1, r2 + lsls r1, 8 + movs r3, 0x2 + ldrsh r0, [r0, r3] + muls r2, r0 + lsls r2, 8 + adds r0, r6, 0 + bl IncreaseEntityPixelPos +_08085C32: + adds r5, 0x10 + adds r7, 0x1 + ldr r0, _08085C50 + ldr r0, [r0] + cmp r7, r0 + blt _08085B98 +_08085C3E: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08085C4C: .4byte gAdjacentTileOffsets +_08085C50: .4byte gUnknown_202F3D8 + thumb_func_end sub_8085B80 + + thumb_func_start SetDungeonBGColorRGB +SetDungeonBGColorRGB: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + str r0, [sp, 0x14] + mov r10, r1 + mov r9, r2 + ldr r4, [sp, 0x48] + lsls r3, 24 + lsrs r3, 24 + str r3, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + bl sub_8085E98 + movs r0, 0 + mov r8, r0 + ldr r0, _08085E70 + ldr r0, [r0] + ldr r5, [r0, 0x4] + cmp r4, 0 + beq _08085CAE + ldr r1, [sp, 0x14] + cmp r1, 0 + blt _08085C92 + lsrs r0, r1, 31 + adds r0, r1, r0 + asrs r0, 1 + str r0, [sp, 0x14] +_08085C92: + mov r2, r10 + cmp r2, 0 + blt _08085CA0 + lsrs r0, r2, 31 + add r0, r10 + asrs r0, 1 + mov r10, r0 +_08085CA0: + mov r3, r9 + cmp r3, 0 + blt _08085CAE + lsrs r0, r3, 31 + add r0, r9 + asrs r0, 1 + mov r9, r0 +_08085CAE: + ldr r1, _08085E74 + ldr r0, [sp, 0x8] + ands r0, r1 + ldr r1, _08085E78 + ands r0, r1 + ldr r1, _08085E7C + ands r0, r1 + str r0, [sp, 0x8] + ldr r0, _08085E80 + ldr r2, [r0] + ldr r0, _08085E84 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + mov r0, r8 + add r1, sp, 0x8 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 + ldr r2, [sp, 0x14] + lsls r2, 16 + str r2, [sp, 0x1C] + mov r3, r10 + lsls r3, 16 + str r3, [sp, 0x20] + mov r0, r9 + lsls r0, 16 + str r0, [sp, 0x24] + add r7, sp, 0xC + movs r1, 0xA0 + cmp r1, 0x1 + ble _08085D56 + add r6, sp, 0x8 + movs r4, 0xA0 + subs r4, 0x1 +_08085CFA: + ldrb r0, [r5] + ldr r3, [sp, 0x14] + adds r2, r0, r3 + ldrb r0, [r5, 0x1] + mov r3, r10 + adds r1, r0, r3 + ldrb r0, [r5, 0x2] + add r0, r9 + cmp r2, 0xFF + ble _08085D10 + movs r2, 0xFF +_08085D10: + cmp r1, 0xFF + ble _08085D16 + movs r1, 0xFF +_08085D16: + cmp r0, 0xFF + ble _08085D1C + movs r0, 0xFF +_08085D1C: + cmp r2, 0 + bge _08085D22 + movs r2, 0 +_08085D22: + cmp r1, 0 + bge _08085D28 + movs r1, 0 +_08085D28: + cmp r0, 0 + bge _08085D2E + movs r0, 0 +_08085D2E: + strb r2, [r6] + strb r1, [r6, 0x1] + strb r0, [r6, 0x2] + ldr r0, _08085E80 + ldr r2, [r0] + ldr r0, _08085E84 + ldr r3, [r0] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + mov r0, r8 + add r1, sp, 0x8 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 + subs r4, 0x1 + cmp r4, 0 + bne _08085CFA +_08085D56: + ldr r2, _08085E88 + ldr r3, [sp, 0x1C] + lsrs r0, r3, 16 + ldr r1, [sp, 0x20] + orrs r0, r1 + str r0, [sp, 0xC] + ldr r3, [sp, 0x24] + lsrs r1, r3, 16 + ldr r0, [r7, 0x4] + ands r0, r2 + orrs r0, r1 + str r0, [r7, 0x4] + ldr r0, _08085E8C + ldr r1, _08085E80 + ldr r3, [r1] + ldr r1, _08085E84 + ldr r1, [r1] + movs r2, 0xBE + lsls r2, 1 + adds r1, r2 + str r1, [sp] + str r7, [sp, 0x4] + movs r1, 0xA0 + movs r2, 0x20 + bl sub_8004C00 + movs r3, 0x20 + add r8, r3 + ldr r5, _08085E90 + add r6, sp, 0x8 + movs r4, 0x20 +_08085D94: + ldrb r0, [r5] + ldr r1, [sp, 0x14] + adds r2, r0, r1 + ldrb r0, [r5, 0x1] + mov r3, r10 + adds r1, r0, r3 + ldrb r0, [r5, 0x2] + add r0, r9 + cmp r2, 0xFF + ble _08085DAA + movs r2, 0xFF +_08085DAA: + cmp r1, 0xFF + ble _08085DB0 + movs r1, 0xFF +_08085DB0: + cmp r0, 0xFF + ble _08085DB6 + movs r0, 0xFF +_08085DB6: + cmp r2, 0 + bge _08085DBC + movs r2, 0 +_08085DBC: + cmp r1, 0 + bge _08085DC2 + movs r1, 0 +_08085DC2: + cmp r0, 0 + bge _08085DC8 + movs r0, 0 +_08085DC8: + strb r2, [r6] + strb r1, [r6, 0x1] + strb r0, [r6, 0x2] + ldr r0, _08085E80 + ldr r2, [r0] + ldr r7, _08085E84 + ldr r3, [r7] + movs r0, 0xBE + lsls r0, 1 + adds r3, r0 + mov r0, r8 + add r1, sp, 0x8 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 + subs r4, 0x1 + cmp r4, 0 + bne _08085D94 + ldr r2, [sp, 0x18] + cmp r2, 0 + beq _08085E5E + ldr r0, [r7] + ldr r3, _08085E94 + adds r0, r3 + ldr r0, [r0] + ldr r5, [r0, 0x4] + movs r0, 0x80 + lsls r0, 1 + mov r8, r0 + add r6, sp, 0x8 + movs r4, 0xD0 +_08085E0A: + ldrb r0, [r5] + ldr r1, [sp, 0x14] + adds r2, r0, r1 + ldrb r0, [r5, 0x1] + mov r3, r10 + adds r1, r0, r3 + ldrb r0, [r5, 0x2] + add r0, r9 + cmp r2, 0xFF + ble _08085E20 + movs r2, 0xFF +_08085E20: + cmp r1, 0xFF + ble _08085E26 + movs r1, 0xFF +_08085E26: + cmp r0, 0xFF + ble _08085E2C + movs r0, 0xFF +_08085E2C: + cmp r2, 0 + bge _08085E32 + movs r2, 0 +_08085E32: + cmp r1, 0 + bge _08085E38 + movs r1, 0 +_08085E38: + cmp r0, 0 + bge _08085E3E + movs r0, 0 +_08085E3E: + strb r2, [r6] + strb r1, [r6, 0x1] + strb r0, [r6, 0x2] + ldr r0, _08085E80 + ldr r2, [r0] + mov r0, r8 + add r1, sp, 0x8 + movs r3, 0 + bl SetBGPaletteBufferColorRGB + adds r5, 0x4 + movs r0, 0x1 + add r8, r0 + subs r4, 0x1 + cmp r4, 0 + bne _08085E0A +_08085E5E: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08085E70: .4byte gDungeonPaletteFile +_08085E74: .4byte 0xffffff00 +_08085E78: .4byte 0xffff00ff +_08085E7C: .4byte 0xff00ffff +_08085E80: .4byte gUnknown_202EDC8 +_08085E84: .4byte gDungeon +_08085E88: .4byte 0xffff0000 +_08085E8C: .4byte gUnknown_202EE8C +_08085E90: .4byte gUnknown_202ECA4 +_08085E94: .4byte 0x000181e4 + thumb_func_end SetDungeonBGColorRGB diff --git a/asm/code_8085EB0.s b/asm/code_8085EB0.s new file mode 100644 index 000000000..efd4ee11f --- /dev/null +++ b/asm/code_8085EB0.s @@ -0,0 +1,331 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8085EB0 +sub_8085EB0: + ldr r0, _08085EC0 + ldr r0, [r0] + ldr r1, _08085EC4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + bx lr + .align 2, 0 +_08085EC0: .4byte gDungeon +_08085EC4: .4byte 0x00018215 + thumb_func_end sub_8085EB0 + + thumb_func_start sub_8085EC8 +sub_8085EC8: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x28 + adds r4, r0, 0 + mov r8, r1 + mov r9, r2 + adds r6, r3, 0 + ldr r5, [sp, 0x40] + lsls r4, 16 + asrs r4, 16 + lsls r5, 24 + lsrs r5, 24 + adds r0, r4, 0 + bl sub_800EE5C + bl sub_800EF64 + movs r0, 0x46 + bl sub_803E46C + str r4, [sp] + mov r0, r8 + str r0, [sp, 0x4] + mov r2, r9 + str r2, [sp, 0x8] + mov r1, sp + ldrh r0, [r6] + movs r2, 0 + strh r0, [r1, 0xC] + ldrh r0, [r6, 0x2] + strh r0, [r1, 0xE] + mov r0, sp + strh r2, [r0, 0x10] + strh r2, [r0, 0x12] + ldr r0, _08085F3C + str r0, [sp, 0x18] + add r1, sp, 0x1C + ldr r0, _08085F40 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + mov r0, sp + bl sub_800E890 + cmp r5, 0 + beq _08085F2E + bl sub_8085F44 + movs r0, 0x1 + negs r0, r0 +_08085F2E: + add sp, 0x28 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08085F3C: .4byte 0x0000ffff +_08085F40: .4byte gUnknown_8107374 + thumb_func_end sub_8085EC8 + + thumb_func_start sub_8085F44 +sub_8085F44: + push {r4,lr} + adds r4, r0, 0 + b _08085F5C +_08085F4A: + ldr r0, _08085F70 + ldr r0, [r0] + ldr r1, _08085F74 + adds r0, r1 + bl sub_800E90C + movs r0, 0x46 + bl sub_803E46C +_08085F5C: + adds r0, r4, 0 + bl sub_800E9A8 + lsls r0, 24 + cmp r0, 0 + bne _08085F4A + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08085F70: .4byte gDungeon +_08085F74: .4byte 0x000181f0 + thumb_func_end sub_8085F44 + + thumb_func_start sub_8085F78 +sub_8085F78: + push {lr} + ldr r0, _08085F94 + ldr r0, [r0] + ldr r1, _08085F98 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x3C + bls _08085F8A + b _080860A4 +_08085F8A: + lsls r0, 2 + ldr r1, _08085F9C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08085F94: .4byte gDungeon +_08085F98: .4byte 0x00003a0d +_08085F9C: .4byte _08085FA0 + .align 2, 0 +_08085FA0: + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _08086094 + .4byte _08086094 + .4byte _08086094 + .4byte _0808609A + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A0 + .4byte _080860A0 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 + .4byte _080860A4 +_08086094: + bl sub_8088848 + b _080860A4 +_0808609A: + bl sub_8088EE8 + b _080860A4 +_080860A0: + bl sub_808A718 +_080860A4: + pop {r0} + bx r0 + thumb_func_end sub_8085F78 + + thumb_func_start sub_80860A8 +sub_80860A8: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + ldr r0, _08086108 + ldr r2, [r0] + movs r3, 0x1 +_080860B6: + ldrb r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _080860C6 + ldrb r0, [r2, 0x2] + cmp r0, r6 + beq _08086104 +_080860C6: + adds r2, 0x4 + adds r5, 0x1 + cmp r5, 0x13 + ble _080860B6 + movs r5, 0 +_080860D0: + ldr r0, _0808610C + ldr r0, [r0] + lsls r1, r5, 2 + ldr r2, _08086110 + adds r0, r2 + adds r0, r1 + ldr r4, [r0] + adds r0, r4, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _08086114 + ldr r2, [r4, 0x70] + adds r0, r2, 0 + adds r0, 0x60 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08086114 + adds r0, r2, 0 + adds r0, 0x62 + ldrb r0, [r0] + cmp r0, r6 + bne _08086114 +_08086104: + movs r0, 0x1 + b _0808611C + .align 2, 0 +_08086108: .4byte gTeamInventoryRef +_0808610C: .4byte gDungeon +_08086110: .4byte 0x0001357c +_08086114: + adds r5, 0x1 + cmp r5, 0x3 + ble _080860D0 + movs r0, 0 +_0808611C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80860A8 + + thumb_func_start sub_8086124 +sub_8086124: + ldr r0, [r0, 0x70] + movs r2, 0xB0 + lsls r2, 1 + adds r0, r2 + strb r1, [r0] + bx lr + thumb_func_end sub_8086124 + + thumb_func_start sub_8086130 +sub_8086130: + push {lr} + movs r0, 0x3C + bl DungeonFadeOutBGM + movs r0, 0x3C + movs r1, 0x46 + bl sub_803E708 + ldr r0, _08086194 + ldr r0, [r0] + bl sub_8052FB8 + movs r0, 0x1E + movs r1, 0x46 + bl sub_803E708 + ldr r0, _08086198 + ldr r0, [r0] + bl sub_8052FB8 + movs r0, 0x1E + movs r1, 0x46 + bl sub_803E708 + ldr r0, _0808619C + ldr r0, [r0] + bl sub_8052FB8 + movs r0, 0x1E + movs r1, 0x46 + bl sub_803E708 + ldr r0, _080861A0 + ldr r0, [r0] + bl sub_8052FB8 + movs r0, 0x1E + movs r1, 0x46 + bl sub_803E708 + ldr r0, _080861A4 + ldr r0, [r0] + bl sub_8052FB8 + movs r0, 0x1E + movs r1, 0x46 + bl sub_803E708 + pop {r0} + bx r0 + .align 2, 0 +_08086194: .4byte gUnknown_810665C +_08086198: .4byte gUnknown_810668C +_0808619C: .4byte gUnknown_81066D4 +_080861A0: .4byte gUnknown_81066F0 +_080861A4: .4byte gUnknown_810671C + thumb_func_end sub_8086130 diff --git a/asm/code_80861B8.s b/asm/code_80861B8.s new file mode 100644 index 000000000..538eed05c --- /dev/null +++ b/asm/code_80861B8.s @@ -0,0 +1,144 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_80861B8 +sub_80861B8: + push {r4,r5,lr} + adds r4, r1, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, [r0, 0x70] + adds r1, r4, 0 + bl sub_806CDD4 + adds r5, 0xFE + strb r4, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80861B8 + + thumb_func_start sub_80861D4 +sub_80861D4: + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + bl sub_806CDD4 + adds r0, r4, 0 + bl sub_80861EC + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80861D4 + + thumb_func_start sub_80861EC +sub_80861EC: + ldr r0, [r0, 0x70] + adds r0, 0xFE + movs r1, 0x63 + strb r1, [r0] + bx lr + thumb_func_end sub_80861EC + + thumb_func_start sub_80861F8 +sub_80861F8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x2C + adds r6, r1, 0 + lsls r0, 16 + asrs r0, 16 + adds r5, r0, 0 + lsls r2, 24 + lsrs r2, 24 + mov r10, r2 + bl sub_800EE5C + bl sub_800EF64 + movs r0, 0x46 + bl sub_803E46C + ldr r0, [r6, 0x70] + mov r8, r0 + movs r1, 0 + mov r9, r1 + str r1, [sp, 0x28] + adds r0, r5, 0 + bl sub_800E700 + adds r7, r0, 0 + add r4, sp, 0x28 + movs r2, 0x1 + negs r2, r2 + cmp r7, r2 + beq _0808624A + adds r1, r6, 0 + adds r1, 0x28 + lsls r2, r7, 24 + lsrs r2, 24 + adds r0, r4, 0 + bl sub_800569C +_0808624A: + str r5, [sp] + mov r3, r9 + str r3, [sp, 0x4] + mov r0, r8 + adds r0, 0x46 + ldrb r0, [r0] + str r0, [sp, 0x8] + mov r1, sp + ldr r0, [r6, 0xC] + cmp r0, 0 + bge _08086262 + adds r0, 0xFF +_08086262: + asrs r0, 8 + strh r0, [r1, 0xC] + mov r1, sp + ldr r0, [r6, 0x10] + cmp r0, 0 + bge _08086270 + adds r0, 0xFF +_08086270: + asrs r0, 8 + strh r0, [r1, 0xE] + mov r1, sp + ldrh r0, [r4] + strh r0, [r1, 0x10] + add r0, sp, 0x28 + ldrh r0, [r0, 0x2] + strh r0, [r1, 0x12] + str r7, [sp, 0x14] + ldr r0, _080862B4 + str r0, [sp, 0x18] + add r1, sp, 0x1C + ldr r0, _080862B8 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + mov r0, sp + bl sub_800E890 + mov r4, r10 + cmp r4, 0 + beq _080862A2 + bl sub_8085F44 + movs r0, 0x1 + negs r0, r0 +_080862A2: + add sp, 0x2C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080862B4: .4byte 0x0000ffff +_080862B8: .4byte gUnknown_8107380 + thumb_func_end sub_80861F8 + + .align 2,0 diff --git a/include/code_800558C.h b/include/code_800558C.h index e10e7a450..abb8d2bd9 100644 --- a/include/code_800558C.h +++ b/include/code_800558C.h @@ -15,6 +15,7 @@ struct unkStructFor800561C extern s16 *gUnknown_203B078; void nullsub_7(s16 *); +void nullsub_8(u32); void nullsub_9(void); void nullsub_10(bool8); void nullsub_12(void); diff --git a/include/code_803E46C.h b/include/code_803E46C.h new file mode 100644 index 000000000..270af6573 --- /dev/null +++ b/include/code_803E46C.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CODE_803E46C_H +#define GUARD_CODE_803E46C_H + +void sub_803E46C(u32); + +#endif diff --git a/include/code_803E668.h b/include/code_803E668.h new file mode 100644 index 000000000..37cdb7655 --- /dev/null +++ b/include/code_803E668.h @@ -0,0 +1,7 @@ +#ifndef GUARD_CODE_803E668_H +#define GUARD_CODE_803E668_H + +void sub_803E668(u32); +void sub_803E708(s32, u32); + +#endif diff --git a/include/code_8084778.h b/include/code_8084778.h new file mode 100644 index 000000000..e28b078ce --- /dev/null +++ b/include/code_8084778.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CODE_8084778_H +#define GUARD_CODE_8084778_H + +void sub_8084778(void); + +#endif diff --git a/include/code_8085E98.h b/include/code_8085E98.h new file mode 100644 index 000000000..e0131f824 --- /dev/null +++ b/include/code_8085E98.h @@ -0,0 +1,6 @@ +#ifndef GUARD_CODE_8085E98_H +#define GUARD_CODE_8085E98_H + +void sub_8085E98(void); + +#endif diff --git a/include/code_80861A8.h b/include/code_80861A8.h new file mode 100644 index 000000000..193d34224 --- /dev/null +++ b/include/code_80861A8.h @@ -0,0 +1,8 @@ +#ifndef GUARD_CODE_80861A8_H +#define GUARD_CODE_80861A8_H + +#include "structs/dungeon_entity.h" + +void sub_80861A8(Entity *a0); + +#endif diff --git a/include/dungeon_util_1.h b/include/dungeon_util_1.h index 43c55d0a9..73fd7edaa 100644 --- a/include/dungeon_util_1.h +++ b/include/dungeon_util_1.h @@ -4,6 +4,12 @@ #include "structs/dungeon_entity.h" typedef void (*DungeonCallback)(Entity *); +typedef struct struct_8085B80 { + u8 unk0; + Entity *unk4; + s32 unk8; + s16 *unkC; +} struct_8085B80; Entity *xxx_call_GetLeader(void); Entity *GetPartnerEntity(void); diff --git a/include/pokemon.h b/include/pokemon.h index 747091ff1..d5956aea5 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -36,7 +36,6 @@ void InitializeRecruitedPokemon(void); // These two need to be overridden in status_actions.c // Uncomment when fixed -//void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); //u8 GetBodySize(s16 index); diff --git a/include/pokemon_mid.h b/include/pokemon_mid.h index 293c4a49c..b4191ee6d 100644 --- a/include/pokemon_mid.h +++ b/include/pokemon_mid.h @@ -4,6 +4,7 @@ #include "pokemon.h" bool8 ComparePokemonNames(s16, s16); +void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); void PrintPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon); void GetPokemonLevelData(LevelData* a1, s16 _id, s32 level); const u8* DecompressMoveID(const u8* a1, u16* moveID); diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index a1f79ed86..42fb035b7 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -150,17 +150,17 @@ typedef struct Dungeon s32 unk690; s32 unk694; u8 fill698; - u8 unk699; + u8 unk699; u8 fill69A[0x69C - 0x69A]; EntityInfo unk69C[4]; EntityInfo unkEBC[1]; // Unsure about the size... See sub_8082A08() - u8 fill10C4[0x363C - 0x10C4]; + u8 fill10C4[0x363C - 0x10C4]; /* 0x363C */ u8 expYieldRankings[NUM_MONSTERS]; u8 fill37D9[0x37F0 - 0x37D9]; /* 0x37F0 */ u32 unk37F0; /* 0x37F4 */ s32 unk37F4; /* 0x37F8 */ bool8 plusIsActive[2]; // Index 0: Enemy , Index 1: Team - /* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team + /* 0x37FA */ bool8 minusIsActive[2]; // Index 0: Enemy , Index 1: Team /* 0x37FC */ bool8 decoyActive; u8 fill37FD; /* 0x37FE */ bool8 deoxysDefeat; // Flag set for deoxys in Meteor Cave @@ -247,7 +247,9 @@ typedef struct Dungeon u8 unk18211; u8 unk18212; u8 unk18213; - u8 fill18214[3]; + u8 fill18214; + u8 unk18215; + u8 fill18216; u8 unk18217; u8 fill18218[0x1821A - 0x18218]; u8 unk1821A; diff --git a/ld_script.txt b/ld_script.txt index 6a62971de..b95314b4f 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -202,6 +202,10 @@ SECTIONS { src/personality_test2.o(.text); src/code_803D0D8.o(.text); asm/code_803D110.o(.text); + src/code_803E46C.o(.text); + asm/code_803E490.o(.text); + src/code_803E668.o(.text); + asm/code_803E724.o(.text); src/code_8040094.o(.text); asm/code_8040094.o(.text); src/code_8041AD0.o(.text); @@ -290,10 +294,16 @@ SECTIONS { src/dungeon_random.o(.text); src/code_808417C.o(.text); asm/code_808417C.o(.text); + src/code_8084778.o(.text); + asm/code_80847D4.o(.text); src/code_80848F0.o(.text); asm/code_80848F0.o(.text); src/dungeon_util_1.o(.text); - asm/code_8085B0C.o(.text); + asm/code_8085B80.o(.text); + src/code_8085E98.o(.text); + asm/code_8085EB0.o(.text); + src/code_80861A8.o(.text); + asm/code_80861B8.o(.text); src/code_80869E4.o(.text); src/code_8086A3C.o(.text); asm/code_8086A3C.o(.text); diff --git a/src/code_2.c b/src/code_2.c index 403413e0e..9c511cb77 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -25,8 +25,8 @@ #include "play_time.h" #include "pokemon.h" #include "rescue_team_info.h" -#include "save.h" #include "save_read.h" +#include "save.h" #include "sprite.h" #include "text1.h" #include "text2.h" @@ -41,8 +41,6 @@ extern void sub_80095CC(u32, u32); extern void nullsub_33(void); extern u32 sub_80009D0(u32); -extern void nullsub_8(u32); -extern void sub_80060EC(void); extern void xxx_call_update_bg_vram(void); extern u32 gUnknown_203B03C; diff --git a/src/code_800558C.c b/src/code_800558C.c index a5cd6e78a..0d0ba2f41 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -170,7 +170,7 @@ void sub_8005770(s32 param_1, u8 *colorArray, s32 a1, u8 *a2) void nullsub_7(s16 *a0) {} -void nullsub_8(void) +void nullsub_8(u32 a0) {} void nullsub_9(void) diff --git a/src/code_80118A4.c b/src/code_80118A4.c index fd52b9d99..ea9549427 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -38,7 +38,6 @@ EWRAM_DATA s16 gUnknown_202DE20 = {0}; EWRAM_DATA s16 gUnknown_202DE22 = {0}; EWRAM_DATA s16 gUnknown_202DE24 = {0}; -void nullsub_8(u32); extern void xxx_call_update_bg_vram(void); extern bool8 sub_80111C4(); extern void sub_8010F28(); diff --git a/src/code_8012A18.c b/src/code_8012A18.c index 50f3e28df..1f3506f34 100644 --- a/src/code_8012A18.c +++ b/src/code_8012A18.c @@ -8,7 +8,6 @@ #include "game_options.h" #include "sprite.h" -extern void nullsub_8(u8); extern void xxx_call_update_bg_vram(); void sub_8012A18() diff --git a/src/code_803E46C.c b/src/code_803E46C.c new file mode 100644 index 000000000..c0e2105dc --- /dev/null +++ b/src/code_803E46C.c @@ -0,0 +1,16 @@ +#include "global.h" +#include "code_803E46C.h" + +#include "code_803E668.h" + +extern u8 gUnknown_203B40C; + +extern void sub_803E490(u32); + +void sub_803E46C(u32 a0) +{ + if (gUnknown_203B40C != 0) + sub_803E490(a0); + else + sub_803E668(a0); +} diff --git a/src/code_803E668.c b/src/code_803E668.c new file mode 100644 index 000000000..54da6759c --- /dev/null +++ b/src/code_803E668.c @@ -0,0 +1,54 @@ +#include "global.h" +#include "code_803E668.h" + +#include "bg_palette_buffer.h" +#include "code_800558C.h" +#include "code_8009804.h" +#include "code_800C9CC.h" +#include "code_80118A4.h" +#include "code_803E46C.h" +#include "game_options.h" +#include "input.h" +#include "play_time.h" +#include "sprite.h" +#include "structs/str_dungeon.h" + +extern s32 gUnknown_202EDCC; +extern s32 gUnknown_202EDD4; + +extern void xxx_call_update_bg_vram(void); + +void sub_803E668(u32 a0) +{ + gUnknown_202EDD4++; + nullsub_8(gGameOptionsRef->unkA); + sub_8005180(); + nullsub_12(); + sub_8005838(NULL, 0); + sub_80060EC(); + gUnknown_202EDCC++; + IncrementPlayTime(gPlayTimeRef); + sub_800CB20(); + LoadBufferedInputs(); + CopySpritesToOam(); + nullsub_13(); + sub_8005304(); + nullsub_14(); + TransferBGPaletteBuffer(); + sub_8009908(); + xxx_call_update_bg_vram(); + xxx_call_update_bg_sound_input(); + gDungeon->unk18213 = 0; + sub_8011860(); + ResetSprites(FALSE); + nullsub_10(FALSE); + gUnknown_202EDD4--; +} + +void sub_803E708(s32 a0, u32 a1) +{ + while (a0 != 0) { + sub_803E46C(a1); + a0--; + } +} \ No newline at end of file diff --git a/src/code_8041AD0.c b/src/code_8041AD0.c index 8326f4596..7b6ce8559 100644 --- a/src/code_8041AD0.c +++ b/src/code_8041AD0.c @@ -1,14 +1,16 @@ #include "global.h" -#include "code_806CD90.h" +#include "code_800E9A8.h" +#include "code_803E46C.h" #include "code_804267C.h" +#include "code_806CD90.h" #include "constants/direction.h" #include "constants/status.h" #include "constants/type.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_util.h" #include "items.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" // size: 0xC struct unkStruct_80420E8 @@ -66,10 +68,8 @@ extern u8 sub_800E9FC(u8); extern void sub_800DBBC(void); extern void sub_803EA10(void); extern void sub_8042E98(void); -extern void sub_803E46C(u32); extern void sub_800EE5C(u32); extern void sub_800EF64(void); -extern bool8 sub_800E9A8(s32); extern u32 sub_800E890(unkStruct_80416E0 *); u32 sub_8041764(unkStruct_80416E0 *param_1, bool8 param_2); diff --git a/src/code_804267C.c b/src/code_804267C.c index 366ef5817..f7773bbeb 100644 --- a/src/code_804267C.c +++ b/src/code_804267C.c @@ -1,5 +1,8 @@ #include "global.h" #include "code_804267C.h" + +#include "code_803E46C.h" +#include "code_803E668.h" #include "code_8045A00.h" #include "code_806CD90.h" #include "dungeon.h" @@ -18,8 +21,6 @@ extern const u32 gUnknown_80F680C[8]; extern const u16 gUnknown_80F682C[8]; extern const u8 *gPtrFeralFoundItemMessage[]; -extern void sub_803E46C(u32); -extern void sub_803E708(u32 r0, u32 r1); extern void sub_8040238(void); extern void sub_804151C(Entity *pokemon, u32 r1, u8 r2); extern void sub_804178C(u32); diff --git a/src/code_8048480.c b/src/code_8048480.c index 88624fc3f..403980f7e 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -1,4 +1,5 @@ #include "global.h" +#include "code_803E668.h" #include "code_8045A00.h" #include "code_80521D0.h" #include "code_8077274_1.h" @@ -115,7 +116,6 @@ extern void sub_8078A58(Entity *, Entity *, s16, u32); extern s32 sub_8042520(Entity *); Entity *sub_80696FC(Entity *); extern void sub_80943A0(void*, s32); -extern void sub_803E708(u32 r0, u32 r1); extern void sub_806A7E8(EntityInfo *, s32); extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32); diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 7f31e33ad..acd9aeeca 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -1,5 +1,10 @@ #include "global.h" +#include "code_800E9A8.h" +#include "code_803E46C.h" +#include "code_803E668.h" +#include "code_804267C.h" #include "code_8045A00.h" +#include "code_80861A8.h" #include "code_806CD90.h" #include "code_80869E4.h" #include "constants/bg_music.h" @@ -314,16 +319,13 @@ extern const u8 gUnknown_81058A8[]; extern const u8 gUnknown_81074FC[]; -extern bool8 sub_800E9A8(s32); extern void sub_800DC14(u32); extern void sub_8086A3C(Entity *r0); extern void sub_8068FE0(Entity *, u32, u32); -extern void sub_803E708(u32, u32); extern void sub_8086448(void); extern void sub_8042B0C(Entity *); -extern void sub_803E708(u32, u32); extern u8 sub_806FD18(Entity *); extern void sub_80861D4(Entity *, u32, s32 direction); extern void sub_806FDF4(Entity *, Entity *, Entity **); @@ -362,7 +364,6 @@ extern void sub_806BFC0(EntityInfo *, u32); extern void sub_808BBA8(Entity * ); extern void sub_8041888(u32); extern void sub_80861B8(Entity *, u32, u32); -extern void sub_803E708(u32, u32); extern void DisplayDungeonDialogue(const u8 *r0); extern u32 sub_80861F8(u32, Entity *, u32); @@ -382,10 +383,8 @@ extern void sub_80421C0(Entity *, u32); extern void sub_808B1CC(u8); extern void sub_80464C8(Entity *, u32 *, Item *); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); -extern void sub_803E46C(u32); extern u32 sub_8085EC8(u32, u32, u32, Position *, u32); -extern void sub_80426C8(u32, u32); extern void sub_807EAA0(u32, u32); extern void CreateJirachiWishWarpTile(void); @@ -438,7 +437,6 @@ void ZapdosDropInEffect(Entity *param_1); void ZapdosScreenFlash(int param_1); extern s32 sub_8052C68(u32, const u8 *, const u8 *, u32); -extern void sub_80861A8(Entity *); extern void sub_8045C28(Item *, u8 , u8 *); extern void EnableJirachiWishWarpTile(void); extern void sub_808BB3C(Position *); diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index f92891064..536cd22e1 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -1,4 +1,6 @@ #include "global.h" +#include "code_803E46C.h" +#include "code_803E668.h" #include "code_8045A00.h" #include "constants/ability.h" #include "constants/move_id.h" @@ -42,8 +44,6 @@ extern bool8 sub_8045888(Entity *); extern void sub_806A2BC(Entity *, u8); extern void sub_804178C(u32); extern void sub_803F508(Entity *); -extern void sub_803E46C(u32); -extern void sub_803E708(u32 r0, u32 r1); void sub_8069E0C(Entity *pokemon) { diff --git a/src/code_806CD90.c b/src/code_806CD90.c index 49f74198d..404855be9 100644 --- a/src/code_806CD90.c +++ b/src/code_806CD90.c @@ -1,21 +1,20 @@ #include "global.h" -#include "code_805D8C8.h" #include "code_806CD90.h" + +#include "code_803E46C.h" +#include "code_805D8C8.h" #include "constants/direction.h" #include "constants/status.h" -#include "structs/str_dungeon.h" #include "dungeon_util.h" -#include "pokemon.h" #include "pokemon_mid.h" +#include "pokemon.h" #include "random.h" #include "sprite.h" +#include "structs/str_dungeon.h" #include "tile_types.h" const u8 gUnknown_8106EEF[] = {0x03, 0x04, 0x05, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 }; -// code_803D110.s -extern void sub_803E46C(u32); - void sub_806CC10(void) { EntityInfo *entityInfo; @@ -176,7 +175,7 @@ void sub_806CF18(Entity *entity) if (!EntityExists(entity)) return; - + entityInfo = entity->info; for (i = 0; i < 100; i++) { sub_803E46C(33); diff --git a/src/code_8072B78.c b/src/code_8072B78.c index 5dfea6bca..20a08d93d 100644 --- a/src/code_8072B78.c +++ b/src/code_8072B78.c @@ -1,15 +1,16 @@ #include "global.h" -#include "structs/dungeon_entity.h" -#include "structs/map.h" -#include "structs/str_pokemon.h" +#include "code_805D8C8.h" +#include "code_806CD90.h" #include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_random.h" -#include "code_805D8C8.h" -#include "code_806CD90.h" #include "moves.h" #include "pokemon_mid.h" +#include "pokemon_mid.h" #include "status_checks_1.h" +#include "structs/dungeon_entity.h" +#include "structs/map.h" +#include "structs/str_pokemon.h" extern u8 gAvailablePokemonNames[]; extern u8 gUnknown_202DFE8[]; @@ -35,8 +36,6 @@ void sub_8042A44(Entity *r0); void sub_8083D78(void); extern bool8 sub_803D930(u32); -void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); - void sub_8072AC8(s16 *param_1, s16 species, s32 param_3) { const u8 *levelUpMoves; diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index 1d661c6e8..b014f9c3c 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -1,4 +1,5 @@ #include "global.h" +#include "code_803E46C.h" #include "code_8045A00.h" #include "code_80521D0.h" #include "code_805D8C8.h" @@ -17,6 +18,7 @@ #include "move_effects_target.h" #include "moves.h" #include "pokemon.h" +#include "pokemon_mid.h" #include "status_checks_1.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" @@ -167,7 +169,6 @@ extern u8 *gUnknown_80FBF84[]; extern void sub_8049ED4(); extern void sub_8040A84(); -extern void sub_803E46C(u32); extern void sub_80522F4(Entity *pokemon, Entity *r1, const char[]); extern void EntityUpdateStatusSprites(Entity *); extern void sub_8042A74(Entity *r0); @@ -211,7 +212,6 @@ extern void sub_8041DD8(Entity *r0, s32 r1); // NOTE: is s16 in another file extern s32 sub_803D870(void *, u32); extern bool8 sub_806AA0C(s32, u32); u32 ExtractSpeciesIndex(PokemonStruct1 **r0); // TODO: look more into this and fix it. -void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); void MuzzleTarget(Entity *pokemon, Entity *target) { diff --git a/src/code_807CD9C.c b/src/code_807CD9C.c index 5901728c0..feed949e2 100644 --- a/src/code_807CD9C.c +++ b/src/code_807CD9C.c @@ -1,5 +1,6 @@ #include "global.h" +#include "code_804267C.h" #include "code_8045A00.h" #include "code_80521D0.h" #include "constants/ability.h" @@ -17,7 +18,6 @@ extern u8 UseAttack(Entity *); extern void sub_805E804(void); void sub_806A2BC(Entity *pokemon, u8 param_2); extern u8 sub_8044B28(void); -extern void sub_80426C8(u32, u32); extern void sub_8068FE0(Entity *, u32, Entity *r2); extern void nullsub_93(Position *); extern void sub_80522F4(Entity *, Entity *, u8 *); diff --git a/src/code_8084778.c b/src/code_8084778.c new file mode 100644 index 000000000..6a4074375 --- /dev/null +++ b/src/code_8084778.c @@ -0,0 +1,27 @@ +#include "global.h" +#include "code_8084778.h" + +#include "code_80958E8.h" +#include "mailbox.h" +#include "pokemon_mid.h" +#include "structs/str_dungeon.h" + +extern u8 gUnknown_202E088[]; + +extern const u8 gUnknown_8107224[]; + +void sub_8084778(void) +{ + s32 i; + WonderMail *wm; + + strcpy(gUnknown_202E088, gUnknown_8107224); + + for (i = 0; i < MAX_ACCEPTED_JOBS; i++) { + wm = GetJobSlotInfo(i); + if (wm->mailType == MAIL_TYPE_TAKEN_JOB && gDungeon->dungeonLocation.id == wm->unk4.dungeon.id && wm->missionType == WONDER_MAIL_MISSION_TYPE_ESCORT_CLIENT) { + CopyCyanMonsterNametoBuffer(gUnknown_202E088, wm->targetSpecies); + break; + } + } +} diff --git a/src/code_8085E98.c b/src/code_8085E98.c new file mode 100644 index 000000000..5aee47f6b --- /dev/null +++ b/src/code_8085E98.c @@ -0,0 +1,9 @@ +#include "global.h" +#include "code_8085E98.h" + +#include "structs/str_dungeon.h" + +void sub_8085E98(void) +{ + gDungeon->unk18215 = 0; +} diff --git a/src/code_80861A8.c b/src/code_80861A8.c new file mode 100644 index 000000000..2098f7090 --- /dev/null +++ b/src/code_80861A8.c @@ -0,0 +1,9 @@ +#include "global.h" +#include "code_80861A8.h" + +#include "code_806CD90.h" + +void sub_80861A8(Entity *a0) +{ + sub_806CDD4(a0, 0, 8); +} diff --git a/src/code_80869E4.c b/src/code_80869E4.c index 3def370f6..28a4caa5b 100644 --- a/src/code_80869E4.c +++ b/src/code_80869E4.c @@ -1,11 +1,13 @@ #include "global.h" +#include "code_803E46C.h" +#include "code_803E668.h" #include "code_806CD90.h" #include "code_80869E4.h" #include "constants/direction.h" -#include "structs/str_dungeon.h" #include "dungeon_util.h" #include "dungeon_util_1.h" #include "random.h" +#include "structs/str_dungeon.h" // This file may originally be merged with code_8086A3C.c and code_8057824_1.c @@ -18,8 +20,6 @@ EWRAM_DATA unkStruct_202F3D0 gUnknown_202F3D0 = {0}; extern u32 gUnknown_8107314[]; s8 sub_8002984(s8, u8); -void sub_803E708(u32, u32); -extern void sub_803E46C(u32); extern void sub_803E9D0(void); extern void SetDungeonBGColorRGB(u32, u32, u32, u32, u32); extern void PlaySoundEffect(u32); diff --git a/src/code_8086A3C.c b/src/code_8086A3C.c index f5324013e..2f60f0116 100644 --- a/src/code_8086A3C.c +++ b/src/code_8086A3C.c @@ -1,33 +1,34 @@ #include "global.h" +#include "code_803E46C.h" +#include "code_803E668.h" #include "code_806CD90.h" #include "code_80869E4.h" #include "constants/bg_music.h" #include "constants/direction.h" #include "constants/monster.h" -#include "structs/dungeon_entity.h" -#include "structs/str_dungeon.h" #include "dungeon_music.h" #include "dungeon_pokemon_attributes.h" -#include "dungeon_util.h" #include "dungeon_util_1.h" +#include "dungeon_util.h" #include "exclusive_pokemon.h" -#include "pokemon.h" #include "pokemon_3.h" +#include "pokemon.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" extern u8 sub_8044B28(void); extern u8 gUnknown_202E038[]; extern void sub_8085374(); extern void sub_8068FE0(Entity *, u32, u32); extern void DisplayDungeonDialogue(const u8 *); -extern void sub_803E708(u32, u32); extern void sub_8086448(void); extern void SkarmoryEntry(Entity *); extern void sub_8086A54(Entity *); extern void sub_8087144(); extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32); extern bool8 sub_8085B80(u8 *); +// TODO The parameters don't match the function definition in dungeon_util_1.h (struct_8085B80*, s16**, Entity**, s32). extern void sub_8085B4C(u8 *, void *, Entity **, u32); -extern void sub_803E46C(u32); extern const u8 gUnknown_810739C[]; extern const u8 gUnknown_81073D4[]; @@ -298,14 +299,14 @@ void sub_8086F00(void) // From @jiangzhengwenjz: // Matches this way for -O2 but can match w/o this hack on -O1 -// https://decomp.me/scratch/BTqWo +// https://decomp.me/scratch/BTqWo void sub_8086F54(u8 param_1, u8 param_2) { Entity *entity; s32 index; u32 unk1 = 0; - + if (param_2 == 4 || param_2 == 5) { void *labels[2]; labels[0] = labels[1] = &&label; @@ -452,7 +453,7 @@ void sub_808729C(void) { Entity *LeaderEntity; Entity *ZapdosEntity; - + LeaderEntity = xxx_call_GetLeader(); ZapdosEntity = GetEntityFromClientType(8); sub_80854D4(); diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index a3aabeb9d..a93e6e4c7 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -1,6 +1,7 @@ #include "global.h" #include "dungeon_ai.h" +#include "code_803E668.h" #include "code_8045A00.h" #include "code_80521D0.h" #include "code_8077274_1.h" @@ -42,7 +43,6 @@ extern u8 sub_8044B28(void); extern void sub_807AB38(Entity *, u32); extern void sub_8041888(u32); extern u8 sub_803F428(s16 *); -extern void sub_803E708(u32, u32); void sub_8075900(Entity *pokemon, u8 r1) { diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index 9098f0820..086629fb8 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -2,6 +2,7 @@ #include "dungeon_ai_leader.h" #include "charge_move.h" +#include "code_803E46C.h" #include "code_804267C.h" #include "code_8045A00.h" #include "code_80521D0.h" @@ -72,7 +73,6 @@ extern u8 sub_8044B28(void); extern u8 UseAttack(Entity *); void sub_8052740(u32); void sub_806A1E8(Entity *pokemon); -extern void sub_803E46C(u32); extern void sub_80694C0(Entity *, s32, s32, u32); bool8 sub_804AE08(Position *pos); void HandlePickUpAIAction(Entity *pokemon); diff --git a/src/dungeon_engine.c b/src/dungeon_engine.c index ed5424650..24911f16f 100644 --- a/src/dungeon_engine.c +++ b/src/dungeon_engine.c @@ -1,13 +1,15 @@ #include "global.h" -#include "structs/dungeon_entity.h" #include "dungeon_engine.h" + +#include "code_803E46C.h" #include "constants/dungeon.h" -#include "structs/str_dungeon.h" -#include "dungeon_ai.h" #include "dungeon_ai_leader.h" +#include "dungeon_ai.h" #include "dungeon_leader.h" #include "dungeon_movement.h" #include "dungeon_util.h" +#include "structs/dungeon_entity.h" +#include "structs/str_dungeon.h" extern s16 gSpeedTurns[2][25]; @@ -25,7 +27,6 @@ extern void sub_8071DA4(Entity *); extern void TriggerWeatherAbilities(void); extern void sub_805D8C8(void); extern void sub_805F02C(void); -extern void sub_803E46C(u32); static void sub_8044454(void); static bool8 xxx_dungeon_80442D0(bool8); @@ -60,7 +61,7 @@ bool8 IsMakuhitaTrainingMaze(void) void RunFractionalTurn(bool8 param_1) { bool8 cVar2; - + if (!sub_8044B28()) { TrySpawnMonsterAndActivatePlusMinus(); if (!sub_8044B28()) { @@ -95,7 +96,7 @@ static bool8 xxx_dungeon_80442D0(bool8 param_1) EntityInfo *entityInfo; Entity *entity; s32 movSpeed; - + entity = GetLeader(); if (entity == NULL) { return FALSE; @@ -175,10 +176,10 @@ static void sub_8044454(void) Entity *entity; EntityInfo *entityInfo; s32 index; - + if (gDungeon->unkE) { gDungeon->unkE = 0; - + for(index = 0; index < DUNGEON_MAX_POKEMON; index++) { entity = gDungeon->allPokemon[index]; @@ -203,10 +204,10 @@ void sub_80444F4(Entity *pokemon) Entity *entity; EntityInfo *entityInfo; s32 index; - + if (pokemon == GetLeader() && gDungeon->unkE) { gDungeon->unkE = 0; - + for(index = 0; index < DUNGEON_MAX_POKEMON; index++) { entity = gDungeon->allPokemon[index]; diff --git a/src/dungeon_items.c b/src/dungeon_items.c index e723dafad..71215abd2 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -1,7 +1,9 @@ #include "global.h" #include "dungeon_items.h" +#include "code_803E668.h" #include "code_8045A00.h" +#include "code_80861A8.h" #include "code_80869E4.h" #include "dungeon_capabilities.h" #include "dungeon_leader.h" @@ -19,9 +21,7 @@ extern u8 *gUnknown_81053A8[]; extern u8 *gUnknown_8105434[]; extern s32 sub_8052B8C(u32, u8 *, u32); -extern void sub_80861A8(void); extern void PrintFieldMessage(u32, u8 *, u32); -extern void sub_803E708(u32, u32); extern void sub_80416E0(Position32 *r0, u32, bool8); extern void sub_80421C0(Entity *, u32); extern void sub_80855E4(void *); diff --git a/src/dungeon_util_1.c b/src/dungeon_util_1.c index 5b81fe1a9..6bf5d94b1 100644 --- a/src/dungeon_util_1.c +++ b/src/dungeon_util_1.c @@ -1,22 +1,23 @@ #include "global.h" -#include "code_806CD90.h" #include "dungeon_util_1.h" +#include "code_803E46C.h" +#include "code_803E668.h" +#include "code_806CD90.h" #include "constants/direction.h" #include "constants/dungeon.h" -#include "structs/str_dungeon.h" #include "dungeon_leader.h" #include "dungeon_util.h" #include "random.h" +#include "structs/str_dungeon.h" +extern s32 gUnknown_202F3D8; extern const u8 gUnknown_8107358[25]; extern s32 GetCameraXPos(void); extern s32 GetCameraYPos(void); extern void sub_803F4A0(u32); extern void sub_803F878(s32, s32); -extern void sub_803E46C(u32); -extern void sub_803E708(u32, u32); extern void sub_8068FE0(Entity *, u32, Entity*); extern void sub_80457DC(Entity *); @@ -55,7 +56,7 @@ void sub_80854D4(void) Entity *entity3; Entity *entity4; Entity *entity5; - + for(index = 0; index < MAX_TEAM_MEMBERS; index++) { entity = gDungeon->teamPokemon[index]; @@ -402,3 +403,17 @@ void sub_8085B0C(Entity *pokemon) index++; } } + +void sub_8085B4C(struct_8085B80 *a0, s16 **a1, Entity **a2, s32 a3) +{ + s32 i; + + gUnknown_202F3D8 = a3; + + for (i = 0; i < a3; i++) { + a0[i].unk0 = 1; + a0[i].unk4 = a2[i]; + a0[i].unkC = a1[i]; + a0[i].unk8 = a1[i][2]; + } +} diff --git a/src/move_actions.c b/src/move_actions.c index 84aac6439..9bca1e46f 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -1,5 +1,6 @@ #include "global.h" #include "charge_move.h" +#include "code_803E46C.h" #include "code_8045A00.h" #include "code_806CD90.h" #include "code_8077274_1.h" @@ -193,7 +194,6 @@ void sub_8075900(Entity *pokemon, u8 r1); extern void sub_80943A0(void*, s32); extern u8 sub_8044B28(void); extern u8 sub_803F428(Position *pos); -extern void sub_803E46C(u32); extern void sub_807EC28(bool8); extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_804652C(Entity *, Entity *, Item *, u32, Position *); diff --git a/src/status.c b/src/status.c index c2e7b4a65..8e129371f 100644 --- a/src/status.c +++ b/src/status.c @@ -1,6 +1,7 @@ #include "global.h" #include "status.h" +#include "code_803E46C.h" #include "code_8045A00.h" #include "code_806CD90.h" #include "code_8077274_1.h" @@ -131,7 +132,6 @@ extern void RaiseAttackStageTarget(Entity *, Entity *, u32, u32); extern void RaiseDefenseStageTarget(Entity *, Entity *, u32, u32); extern void sub_8041D48(Entity *); extern void sub_8041D38(Entity * pokemon); -extern void sub_803E46C(u32); extern u8 sub_8043D10(void); extern void sub_8041CDC(Entity *pokemon); extern void sub_8041CEC(Entity *pokemon); diff --git a/src/status_actions.c b/src/status_actions.c index fe1c89d3c..757baff53 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -88,6 +88,7 @@ extern void sub_807CD9C(Entity *, Entity *, u32 direction); // NOTE: Override pokemon.c types for these two funcs // GetSize is ok extern u8 GetBodySize(s32 index); +// TODO The parameters don't match the function definition in pokemon_mid.h (u8*, s16). extern void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index); extern u32 GetSize(s16 index); diff --git a/src/status_checks_1.c b/src/status_checks_1.c index 83edee2ac..944531dee 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -1,20 +1,21 @@ #include "global.h" #include "status_checks_1.h" +#include "code_800D090.h" +#include "code_80521D0.h" #include "constants/ability.h" #include "constants/iq_skill.h" #include "constants/status.h" #include "constants/weather.h" #include "dungeon_engine.h" -#include "structs/str_dungeon.h" #include "dungeon_items.h" +#include "dungeon_map_access.h" #include "dungeon_movement.h" #include "dungeon_pokemon_attributes.h" -#include "dungeon_map_access.h" #include "dungeon_util.h" -#include "code_800D090.h" -#include "code_80521D0.h" +#include "pokemon_mid.h" #include "pokemon.h" +#include "structs/str_dungeon.h" #include "weather.h" extern void sub_80429B4(Entity *r0); @@ -25,7 +26,6 @@ extern u8 *gUnknown_80F8994[]; extern u8 *gUnknown_80F8968[]; extern u8 *gUnknown_80F8988[]; extern u8 gUnknown_8106FA4[]; -void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); s32 sub_8070828(Entity *pokemon, bool8 displayMessage) { diff --git a/src/trap.c b/src/trap.c index 25d627e8a..d3c678406 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,6 +1,7 @@ #include "global.h" #include "trap.h" +#include "code_803E668.h" #include "code_8045A00.h" #include "code_80521D0.h" #include "code_8077274_1.h" @@ -70,7 +71,6 @@ bool8 sub_806AA0C(s32, s32); void sub_80421EC(Position *, u32); bool8 sub_8045888(Entity *); -void sub_803E708(u32, u32); u8 sub_8043D10(void); void sub_8068FE0(Entity *, u32, Entity *); void sub_805239C(Entity *, u8 *); diff --git a/src/trap_1.c b/src/trap_1.c index 9b3a7f7fa..391d61f03 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -2,6 +2,7 @@ #include "structs/dungeon_entity.h" #include "structs/map.h" #include "trap.h" +#include "code_803E668.h" #include "code_806CD90.h" #include "code_8092334.h" #include "items.h" @@ -68,7 +69,6 @@ void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2); void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2); void SaveSpeedCounters(unkStruct_8094924 *param_1, u8 *speedCounters, u32 numCounters); void SaveClientType(unkStruct_8094924 *param_1, u8 param_2); -void sub_803E708(u32, u32); void sub_80421C0(Entity *, u16); void sub_804687C(Entity *, Position *, Position *, Item *, u32);