From 061f1efaeabc3f6caaa1bf93c5586772b0526bba Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 26 Jul 2025 12:12:04 -0700 Subject: [PATCH] initial work on ground_map_1 --- asm/ground_map_1.s | 821 ---------------------------- include/ground_bg.h | 3 + include/ground_map.h | 1 + include/ground_map_1.h | 3 - include/structs/str_ground_script.h | 3 +- src/code_801D014.c | 4 +- src/friend_list.c | 4 +- src/friend_list_menu.c | 4 +- src/ground_map.c | 749 ++++++++++++++++++++++++- src/ground_map_1.c | 12 +- src/ground_script.c | 20 +- 11 files changed, 769 insertions(+), 855 deletions(-) diff --git a/asm/ground_map_1.s b/asm/ground_map_1.s index 39710745e..41ac1fc3e 100644 --- a/asm/ground_map_1.s +++ b/asm/ground_map_1.s @@ -5,827 +5,6 @@ .text - thumb_func_start sub_80A5204 -sub_80A5204: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp] - mov r8, r1 - str r2, [sp, 0x4] - str r3, [sp, 0x8] - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bgt _080A5222 - b _080A53EA -_080A5222: - mov r5, r8 - ldr r2, [sp] - mov r12, r2 - movs r0, 0 - ldr r3, [sp, 0x4] - ldrb r3, [r3, 0x1] - str r3, [sp, 0x10] - ldr r1, [sp, 0x4] - ldrh r2, [r1, 0xA] - mov r1, sp - strh r2, [r1, 0xC] - movs r1, 0xFF -_080A523A: - adds r0, 0x1 - mov r10, r0 - movs r3, 0xFF - mov r9, r3 -_080A5242: - mov r0, r12 - strb r1, [r0] - movs r2, 0x1 - add r12, r2 - movs r3, 0x1 - negs r3, r3 - add r9, r3 - mov r0, r9 - cmp r0, 0 - bge _080A5242 - mov r0, r10 - cmp r0, 0x3 - ble _080A523A - movs r1, 0 - ldr r2, [sp, 0x10] - cmp r1, r2 - blt _080A5266 - b _080A53BA -_080A5266: - ldr r3, [sp, 0x4] - ldrb r7, [r3] -_080A526A: - adds r0, 0x1 - mov r10, r0 - adds r0, r1, 0x1 - str r0, [sp, 0x14] - movs r0, 0xFF - movs r2, 0x4 - mov r9, r2 -_080A5278: - mov r3, r12 - strb r0, [r3] - movs r2, 0x1 - add r12, r2 - movs r3, 0x1 - negs r3, r3 - add r9, r3 - mov r2, r9 - cmp r2, 0 - bge _080A5278 - movs r3, 0x5 - mov r9, r3 - movs r0, 0 - cmp r1, 0 - bne _080A5308 - cmp r1, r7 - bge _080A5394 -_080A529A: - ldrb r1, [r5] - adds r5, 0x1 - cmp r1, 0xBF - ble _080A52C2 - adds r6, r0, 0 - subs r6, 0xBF - cmp r1, 0xBF - ble _080A5300 - adds r2, r1, 0 - subs r2, 0xBF -_080A52AE: - ldrb r0, [r5] - mov r3, r12 - strb r0, [r3] - adds r5, 0x1 - movs r0, 0x1 - add r12, r0 - subs r2, 0x1 - cmp r2, 0 - bne _080A52AE - b _080A5300 -_080A52C2: - cmp r1, 0x7F - ble _080A52E6 - ldrb r4, [r5] - adds r5, 0x1 - adds r6, r0, 0 - subs r6, 0x7F - cmp r1, 0x7F - ble _080A5300 - adds r2, r1, 0 - subs r2, 0x7F -_080A52D6: - mov r3, r12 - strb r4, [r3] - movs r0, 0x1 - add r12, r0 - subs r2, 0x1 - cmp r2, 0 - bne _080A52D6 - b _080A5300 -_080A52E6: - movs r2, 0 - adds r6, r0, 0x1 - cmp r2, r1 - bgt _080A5300 - movs r0, 0 - adds r2, r1, 0x1 -_080A52F2: - mov r3, r12 - strb r0, [r3] - movs r3, 0x1 - add r12, r3 - subs r2, 0x1 - cmp r2, 0 - bne _080A52F2 -_080A5300: - adds r0, r6, r1 - cmp r0, r7 - blt _080A529A - b _080A5394 -_080A5308: - ldr r4, _080A5340 - add r4, r12 - cmp r0, r7 - bge _080A5394 -_080A5310: - ldrb r3, [r5] - adds r5, 0x1 - cmp r3, 0xBF - ble _080A5344 - adds r6, r0, 0 - subs r6, 0xBF - cmp r3, 0xBF - ble _080A538E - adds r2, r3, 0 - subs r2, 0xBF -_080A5324: - ldrb r1, [r5] - ldrb r0, [r4] - eors r1, r0 - mov r0, r12 - strb r1, [r0] - adds r4, 0x1 - adds r5, 0x1 - movs r1, 0x1 - add r12, r1 - subs r2, 0x1 - cmp r2, 0 - bne _080A5324 - b _080A538E - .align 2, 0 -_080A5340: .4byte 0xffffff00 -_080A5344: - cmp r3, 0x7F - ble _080A5372 - ldrb r2, [r5] - mov r8, r2 - adds r5, 0x1 - adds r6, r0, 0 - subs r6, 0x7F - cmp r3, 0x7F - ble _080A538E - adds r2, r3, 0 - subs r2, 0x7F -_080A535A: - ldrb r1, [r4] - mov r0, r8 - eors r0, r1 - mov r1, r12 - strb r0, [r1] - adds r4, 0x1 - movs r0, 0x1 - add r12, r0 - subs r2, 0x1 - cmp r2, 0 - bne _080A535A - b _080A538E -_080A5372: - movs r2, 0 - adds r6, r0, 0x1 - cmp r2, r3 - bgt _080A538E - adds r2, r3, 0x1 -_080A537C: - ldrb r0, [r4] - mov r1, r12 - strb r0, [r1] - adds r4, 0x1 - movs r0, 0x1 - add r12, r0 - subs r2, 0x1 - cmp r2, 0 - bne _080A537C -_080A538E: - adds r0, r6, r3 - cmp r0, r7 - blt _080A5310 -_080A5394: - add r9, r7 - mov r1, r9 - cmp r1, 0xFF - bgt _080A53AE - movs r0, 0xFF -_080A539E: - mov r2, r12 - strb r0, [r2] - movs r3, 0x1 - add r12, r3 - add r9, r3 - mov r1, r9 - cmp r1, 0xFF - ble _080A539E -_080A53AE: - ldr r1, [sp, 0x14] - mov r0, r10 - ldr r2, [sp, 0x10] - cmp r1, r2 - bge _080A53BA - b _080A526A -_080A53BA: - ldr r3, [sp, 0x8] - cmp r0, r3 - bge _080A53E6 - movs r1, 0xFF -_080A53C2: - adds r0, 0x1 - mov r10, r0 - movs r0, 0xFF - mov r9, r0 -_080A53CA: - mov r2, r12 - strb r1, [r2] - movs r3, 0x1 - add r12, r3 - movs r0, 0x1 - negs r0, r0 - add r9, r0 - mov r2, r9 - cmp r2, 0 - bge _080A53CA - mov r0, r10 - ldr r3, [sp, 0x8] - cmp r0, r3 - blt _080A53C2 -_080A53E6: - mov r8, r5 - b _080A547E -_080A53EA: - ldr r1, [sp] - movs r0, 0 - ldr r2, [sp, 0x4] - ldrb r2, [r2, 0x1] - str r2, [sp, 0x10] - ldr r3, [sp, 0x4] - ldrh r2, [r3, 0xA] - mov r3, sp - strh r2, [r3, 0xC] - movs r6, 0xFF -_080A53FE: - adds r5, r0, 0x1 - movs r4, 0xFF -_080A5402: - strb r6, [r1] - adds r1, 0x1 - subs r4, 0x1 - cmp r4, 0 - bge _080A5402 - adds r0, r5, 0 - cmp r0, 0x3 - ble _080A53FE - movs r4, 0 - ldr r3, [sp, 0x10] - cmp r4, r3 - bge _080A5460 - ldr r2, [sp, 0x4] - ldrb r7, [r2] - movs r3, 0xFF -_080A5420: - adds r5, r0, 0x1 - adds r2, r4, 0x1 - movs r4, 0x4 -_080A5426: - strb r3, [r1] - adds r1, 0x1 - subs r4, 0x1 - cmp r4, 0 - bge _080A5426 - movs r4, 0x5 - cmp r7, 0 - beq _080A5444 - movs r6, 0 - adds r0, r7, 0 -_080A543A: - strb r6, [r1] - adds r1, 0x1 - subs r0, 0x1 - cmp r0, 0 - bne _080A543A -_080A5444: - adds r4, r7 - cmp r4, 0xFF - bgt _080A5456 - movs r0, 0xFF -_080A544C: - strb r0, [r1] - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0xFF - ble _080A544C -_080A5456: - adds r4, r2, 0 - adds r0, r5, 0 - ldr r2, [sp, 0x10] - cmp r4, r2 - blt _080A5420 -_080A5460: - ldr r3, [sp, 0x8] - cmp r0, r3 - bge _080A547E - movs r6, 0xFF -_080A5468: - adds r5, r0, 0x1 - movs r4, 0xFF -_080A546C: - strb r6, [r1] - adds r1, 0x1 - subs r4, 0x1 - cmp r4, 0 - bge _080A546C - adds r0, r5, 0 - ldr r2, [sp, 0x8] - cmp r0, r2 - blt _080A5468 -_080A547E: - mov r3, sp - ldrh r3, [r3, 0xC] - lsls r0, r3, 16 - cmp r0, 0 - bgt _080A548A - b _080A5590 -_080A548A: - mov r6, r8 - ldr r0, [sp] - movs r1, 0x80 - lsls r1, 3 - adds r2, r0, r1 - movs r0, 0 - ldr r3, [sp, 0x10] - cmp r0, r3 - bge _080A5586 - movs r1, 0xFB - mov r10, r1 -_080A54A0: - adds r2, 0x5 - movs r4, 0 - cmp r0, 0 - bne _080A54EC - ldr r3, [sp, 0x4] - ldrb r7, [r3] - movs r1, 0x1 - mov r9, r1 - cmp r0, r7 - bge _080A5574 -_080A54B4: - ldrb r1, [r6] - adds r6, 0x1 - cmp r1, 0x7F - ble _080A54DE - subs r4, 0x7F - cmp r1, 0x7F - ble _080A54D6 - movs r5, 0x80 - adds r3, r1, 0 - subs r3, 0x7F -_080A54C8: - ldrb r0, [r2] - orrs r0, r5 - strb r0, [r2] - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A54C8 -_080A54D6: - adds r4, r1 - ldr r3, [sp, 0x4] - ldrb r7, [r3] - b _080A54E6 -_080A54DE: - adds r0, r1, 0x1 - adds r2, r0 - adds r0, r4, 0x1 - adds r4, r0, r1 -_080A54E6: - cmp r4, r7 - blt _080A54B4 - b _080A5574 -_080A54EC: - ldr r1, _080A5538 - adds r1, r2 - mov r12, r1 - ldr r3, [sp, 0x4] - ldrb r7, [r3] - adds r0, 0x1 - mov r9, r0 - cmp r4, r7 - bge _080A5574 -_080A54FE: - ldrb r5, [r6] - adds r6, 0x1 - cmp r5, 0x7F - ble _080A553C - subs r4, 0x7F - cmp r5, 0x7F - ble _080A556A - movs r7, 0x80 - movs r0, 0x80 - mov r8, r0 - adds r3, r5, 0 - subs r3, 0x7F -_080A5516: - mov r0, r12 - ldrb r1, [r0] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - add r12, r1 - cmp r0, 0 - bne _080A552C - ldrb r0, [r2] - orrs r0, r7 - strb r0, [r2] -_080A552C: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A5516 - b _080A556A - .align 2, 0 -_080A5538: .4byte 0xffffff00 -_080A553C: - movs r3, 0 - adds r4, 0x1 - cmp r3, r5 - bgt _080A556A - movs r7, 0x80 - movs r3, 0x80 - mov r8, r3 - adds r3, r5, 0x1 -_080A554C: - mov r0, r12 - ldrb r1, [r0] - mov r0, r8 - ands r0, r1 - movs r1, 0x1 - add r12, r1 - cmp r0, 0 - beq _080A5562 - ldrb r0, [r2] - orrs r0, r7 - strb r0, [r2] -_080A5562: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A554C -_080A556A: - adds r4, r5 - ldr r3, [sp, 0x4] - ldrb r7, [r3] - cmp r4, r7 - blt _080A54FE -_080A5574: - mov r1, r10 - subs r0, r1, r7 - adds r2, r0 - mov r0, r9 - ldr r3, [sp, 0x4] - ldrb r3, [r3, 0x1] - str r3, [sp, 0x10] - cmp r0, r3 - blt _080A54A0 -_080A5586: - mov r8, r6 - ldr r0, [sp, 0x4] - ldrh r1, [r0, 0xA] - mov r0, sp - strh r1, [r0, 0xC] -_080A5590: - mov r2, sp - ldrh r2, [r2, 0xC] - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080A568C - mov r6, r8 - ldr r3, [sp] - movs r0, 0x80 - lsls r0, 3 - adds r2, r3, r0 - movs r0, 0 - b _080A5684 -_080A55AA: - adds r2, 0x5 - movs r4, 0 - cmp r0, 0 - bne _080A55F2 - ldr r3, [sp, 0x4] - ldrb r7, [r3] - movs r1, 0x1 - mov r10, r1 - cmp r0, r7 - bge _080A567C -_080A55BE: - ldrb r1, [r6] - adds r6, 0x1 - cmp r1, 0x7F - ble _080A55E4 - subs r4, 0x7F - cmp r1, 0x7F - ble _080A55E0 - movs r5, 0x40 - adds r3, r1, 0 - subs r3, 0x7F -_080A55D2: - ldrb r0, [r2] - orrs r0, r5 - strb r0, [r2] - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A55D2 -_080A55E0: - adds r4, r1 - b _080A55EC -_080A55E4: - adds r0, r1, 0x1 - adds r2, r0 - adds r0, r4, 0x1 - adds r4, r0, r1 -_080A55EC: - cmp r4, r7 - blt _080A55BE - b _080A567C -_080A55F2: - ldr r3, _080A5640 - adds r3, r2 - mov r12, r3 - ldr r1, [sp, 0x4] - ldrb r7, [r1] - adds r0, 0x1 - mov r10, r0 - cmp r4, r7 - bge _080A567C -_080A5604: - ldrb r5, [r6] - adds r6, 0x1 - cmp r5, 0x7F - ble _080A5644 - subs r4, 0x7F - cmp r5, 0x7F - ble _080A5676 - movs r3, 0x40 - mov r8, r3 - movs r0, 0x40 - mov r9, r0 - adds r3, r5, 0 - subs r3, 0x7F -_080A561E: - mov r0, r12 - ldrb r1, [r0] - mov r0, r9 - ands r0, r1 - movs r1, 0x1 - add r12, r1 - cmp r0, 0 - bne _080A5636 - ldrb r0, [r2] - mov r1, r8 - orrs r0, r1 - strb r0, [r2] -_080A5636: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A561E - b _080A5676 - .align 2, 0 -_080A5640: .4byte 0xffffff00 -_080A5644: - movs r3, 0 - adds r4, 0x1 - cmp r3, r5 - bgt _080A5676 - movs r3, 0x40 - mov r8, r3 - movs r0, 0x40 - mov r9, r0 - adds r3, r5, 0x1 -_080A5656: - mov r0, r12 - ldrb r1, [r0] - mov r0, r9 - ands r0, r1 - movs r1, 0x1 - add r12, r1 - cmp r0, 0 - beq _080A566E - ldrb r0, [r2] - mov r1, r8 - orrs r0, r1 - strb r0, [r2] -_080A566E: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bne _080A5656 -_080A5676: - adds r4, r5 - cmp r4, r7 - blt _080A5604 -_080A567C: - movs r3, 0xFB - subs r0, r3, r7 - adds r2, r0 - mov r0, r10 -_080A5684: - ldr r1, [sp, 0x10] - cmp r0, r1 - blt _080A55AA - mov r8, r6 -_080A568C: - mov r0, r8 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A5204 - - thumb_func_start sub_80A56A0 -sub_80A56A0: - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _080A56BC - ldr r0, [r0] - adds r1, r3, 0 - bl sub_80A3B80 - pop {r0} - bx r0 - .align 2, 0 -_080A56BC: .4byte gGroundMapDungeon_3001B70 - thumb_func_end sub_80A56A0 - - thumb_func_start sub_80A56C0 -sub_80A56C0: - push {lr} - adds r2, r0, 0 - ldr r0, _080A56D4 - ldr r0, [r0] - movs r1, 0 - bl sub_80A4558 - pop {r0} - bx r0 - .align 2, 0 -_080A56D4: .4byte gGroundMapDungeon_3001B70 - thumb_func_end sub_80A56C0 - - thumb_func_start sub_80A56D8 -sub_80A56D8: - push {lr} - adds r2, r0, 0 - ldr r0, _080A56EC - ldr r0, [r0] - movs r1, 0 - bl sub_80A456C - pop {r0} - bx r0 - .align 2, 0 -_080A56EC: .4byte gGroundMapDungeon_3001B70 - thumb_func_end sub_80A56D8 - - thumb_func_start sub_80A56F0 -sub_80A56F0: - ldr r1, _080A5700 - ldr r2, [r1] - adds r2, 0xE8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080A5700: .4byte gGroundMapAction - thumb_func_end sub_80A56F0 - - thumb_func_start sub_80A5704 -sub_80A5704: - ldr r1, _080A5724 - ldr r3, [r1] - adds r2, r3, 0 - adds r2, 0xF8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - adds r0, r3, 0 - adds r0, 0xF0 - movs r1, 0 - str r1, [r0] - adds r0, 0x4 - str r1, [r0] - bx lr - .align 2, 0 -_080A5724: .4byte gGroundMapAction - thumb_func_end sub_80A5704 - - thumb_func_start sub_80A5728 -sub_80A5728: - ldr r0, _080A5734 - ldr r0, [r0] - adds r0, 0xE4 - movs r1, 0 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_080A5734: .4byte gGroundMapAction - thumb_func_end sub_80A5728 - - thumb_func_start sub_80A5738 -sub_80A5738: - ldr r0, _080A5750 - ldr r0, [r0] - adds r0, 0xE4 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080A5754 - adds r0, r1 - bx lr - .align 2, 0 -_080A5750: .4byte gGroundMapAction -_080A5754: .4byte gGroundMapConversionTable - thumb_func_end sub_80A5738 - - thumb_func_start sub_80A5758 -sub_80A5758: - push {lr} - adds r1, r0, 0 - ldr r0, _080A5768 - ldr r0, [r0] - cmp r0, 0 - bne _080A576C - movs r0, 0 - b _080A5772 - .align 2, 0 -_080A5768: .4byte gGroundMapDungeon_3001B70 -_080A576C: - bl sub_80A4608 - movs r0, 0x1 -_080A5772: - pop {r1} - bx r1 - thumb_func_end sub_80A5758 - - thumb_func_start GetCurrentDungeonBounds -GetCurrentDungeonBounds: - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldr r0, _080A578C - ldr r0, [r0] - cmp r0, 0 - bne _080A5790 - movs r0, 0 - b _080A5798 - .align 2, 0 -_080A578C: .4byte gGroundMapDungeon_3001B70 -_080A5790: - adds r1, r3, 0 - bl GetDungeonBounds - movs r0, 0x1 -_080A5798: - pop {r1} - bx r1 - thumb_func_end GetCurrentDungeonBounds - thumb_func_start sub_80A579C sub_80A579C: push {r4-r7,lr} diff --git a/include/ground_bg.h b/include/ground_bg.h index 43de6aff1..b02b89c99 100644 --- a/include/ground_bg.h +++ b/include/ground_bg.h @@ -10,5 +10,8 @@ void sub_80A2FBC(GroundBg *groundBg, s32 mapFileId_); void sub_80A3440(GroundBg *groundBg, s32 mapFileId_, const DungeonLocation *dungLoc, s32 a3); void sub_80A3B80(GroundBg *groundBg, u8 a1, u8 a2); void sub_80A3BB0(GroundBg *groundBg, s32 a0_); +void sub_80A4558(GroundBg *groundBg, s32 id, PixelPos *dstPos); +void sub_80A4608(GroundBg *groundBg, PixelPos *dstPos); +void GetDungeonBounds(GroundBg *groundBg, PixelPos *dstPos1, PixelPos *dstPos2); #endif // GUARD_GROUND_BG_H diff --git a/include/ground_map.h b/include/ground_map.h index 35c2ec7f3..5ad9b20ae 100644 --- a/include/ground_map.h +++ b/include/ground_map.h @@ -7,5 +7,6 @@ void FreeGroundMapAction(void); void sub_80A4B38(void); void sub_80A4B54(void); s16 GetAdjustedGroundMap(s32 mapId); +s16 GetGroundMapID(void); #endif // GUARD_GROUND_MAP_H diff --git a/include/ground_map_1.h b/include/ground_map_1.h index 9000d073e..1b3a1f3df 100644 --- a/include/ground_map_1.h +++ b/include/ground_map_1.h @@ -8,7 +8,4 @@ void GroundMap_ExecuteStation(s32 _map, s32 _group, s32 _sector, bool32 _setScri bool8 GroundMapNotifyAll(s16); bool8 sub_80A4D48(s16 index); -// ground_map_1.s -extern s16 sub_80A5728(void); - #endif // GUARD_GROUND_MAP_1_H diff --git a/include/structs/str_ground_script.h b/include/structs/str_ground_script.h index 4296e0684..a31a5f6ac 100644 --- a/include/structs/str_ground_script.h +++ b/include/structs/str_ground_script.h @@ -117,8 +117,7 @@ typedef struct GroundMapAction /* 0x00 */ Action action; /* 0xE4 */ s16 groundMapId; u16 fillE6; - u32 unkE8; - u32 unkEC; + PixelPos unkE8; s32 unkF0; s32 unkF4; PixelPos unkF8; diff --git a/src/code_801D014.c b/src/code_801D014.c index 4ee49f395..7b36fb649 100644 --- a/src/code_801D014.c +++ b/src/code_801D014.c @@ -16,7 +16,7 @@ #include "friend_list_menu.h" #include "ground_lives.h" #include "ground_main.h" -#include "ground_map_1.h" +#include "ground_map.h" #include "input.h" #include "iq_skill_menu.h" #include "memory.h" @@ -82,7 +82,7 @@ bool8 sub_801D014(Pokemon *a0) else sUnknown_203B250->index = NUM_MONSTERS; - sUnknown_203B250->currFriendAreaLocation = MapIdToFriendAreaId(sub_80A5728()); + sUnknown_203B250->currFriendAreaLocation = MapIdToFriendAreaId(GetGroundMapID()); sUnknown_203B250->unk8 = 0; sUnknown_203B250->unk9 = 0; sUnknown_203B250->unkC = GetPlayerPokemonStruct(); diff --git a/src/friend_list.c b/src/friend_list.c index 4776e7e7a..3e6e958ff 100644 --- a/src/friend_list.c +++ b/src/friend_list.c @@ -14,7 +14,7 @@ #include "rescue_team_info.h" #include "input.h" #include "memory.h" -#include "ground_map_1.h" +#include "ground_map.h" #include "constants/input.h" extern bool8 sub_808D750(s32 index_); @@ -95,7 +95,7 @@ bool8 FriendList_Init(u32 r5, u32 windowId, DungeonPos *pos, u32 r10) } if (sFriendList->unk0 == 4) { - sFriendList->unk354 = MapIdToFriendAreaId(sub_80A5728()); + sFriendList->unk354 = MapIdToFriendAreaId(GetGroundMapID()); } else { sFriendList->unk354 = 0; diff --git a/src/friend_list_menu.c b/src/friend_list_menu.c index 1d2f0e031..dc10d1686 100644 --- a/src/friend_list_menu.c +++ b/src/friend_list_menu.c @@ -12,7 +12,7 @@ #include "common_strings.h" #include "event_flag.h" #include "friend_list_menu.h" -#include "ground_map_1.h" +#include "ground_map.h" #include "input.h" #include "iq_skill_menu.h" #include "items.h" @@ -62,7 +62,7 @@ bool8 CreateFriendListMenu(s32 param_1) gUnknown_203B2B4 = MemoryAlloc(sizeof(unkStruct_203B2B4),8); gUnknown_203B2B4->menuAction1 = 0; gUnknown_203B2B4->unk0 = param_1; - gUnknown_203B2B4->unkC = MapIdToFriendAreaId(sub_80A5728()); + gUnknown_203B2B4->unkC = MapIdToFriendAreaId(GetGroundMapID()); gUnknown_203B2B4->unkD = 0; if (gUnknown_203B2B4->unk0 == 2) { SetFriendListMenuState(0); diff --git a/src/ground_map.c b/src/ground_map.c index c5ab861a7..61bbb1302 100644 --- a/src/ground_map.c +++ b/src/ground_map.c @@ -220,11 +220,11 @@ extern const u8 gUnknown_81176DC[]; extern const u8 gUnknown_8117740[]; extern const DebugLocation gUnknown_81176D0; extern const DebugLocation gUnknown_8117734; -extern const u32 gUnknown_81176F8[]; -extern const u32 gUnknown_8117754[]; +extern const PixelPos gUnknown_81176F8; +extern const PixelPos gUnknown_8117754; void GroundMap_SelectDungeon(s32 mapId, const DungeonLocation *loc, u32 param_2); -void sub_80A56D8(const void *); +void sub_80A56D8(const PixelPos*); void GroundMap_Select(s32 mapId_) { @@ -277,8 +277,8 @@ void GroundMap_Select(s32 mapId_) } sub_80A2FBC(gGroundMapDungeon_3001B70, ptr->mapFileTableId); - gGroundMapAction->unkE8 = 0; - gGroundMapAction->unkEC = 0; + gGroundMapAction->unkE8.x = 0; + gGroundMapAction->unkE8.y = 0; gGroundMapAction->unkF0 = 0; gGroundMapAction->unkF4 = 0; gGroundMapAction->unkF8.x = 0; @@ -368,8 +368,8 @@ void GroundMap_SelectDungeon(s32 mapId_, const DungeonLocation *loc, u32 param_2 GroundBg_Init(gGroundMapDungeon_3001B70, &gUnknown_8117354); sub_80A5EDC(1); sub_80A3440(gGroundMapDungeon_3001B70, ptr->mapFileTableId, loc, param_2); - gGroundMapAction->unkE8 = 0; - gGroundMapAction->unkEC = 0; + gGroundMapAction->unkE8.x = 0; + gGroundMapAction->unkE8.y = 0; gGroundMapAction->unkF0 = 0; gGroundMapAction->unkF4 = 0; gGroundMapAction->unkF8.x = 0; @@ -378,3 +378,738 @@ void GroundMap_SelectDungeon(s32 mapId_, const DungeonLocation *loc, u32 param_2 sub_80A56D8(&gUnknown_8117754); } + +NAKED +void sub_80A5204(void) +{ + asm_unified( +" push {r4-r7,lr} \n" +" mov r7, r10 \n" +" mov r6, r9 \n" +" mov r5, r8 \n" +" push {r5-r7} \n" +" sub sp, 0x18 \n" +" str r0, [sp] \n" +" mov r8, r1 \n" +" str r2, [sp, 0x4] \n" +" str r3, [sp, 0x8] \n" +" movs r1, 0x8 \n" +" ldrsh r0, [r2, r1] \n" +" cmp r0, 0 \n" +" bgt _080A5222 \n" +" b _080A53EA \n" +"_080A5222: \n" +" mov r5, r8 \n" +" ldr r2, [sp] \n" +" mov r12, r2 \n" +" movs r0, 0 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r3, [r3, 0x1] \n" +" str r3, [sp, 0x10] \n" +" ldr r1, [sp, 0x4] \n" +" ldrh r2, [r1, 0xA] \n" +" mov r1, sp \n" +" strh r2, [r1, 0xC] \n" +" movs r1, 0xFF \n" +"_080A523A: \n" +" adds r0, 0x1 \n" +" mov r10, r0 \n" +" movs r3, 0xFF \n" +" mov r9, r3 \n" +"_080A5242: \n" +" mov r0, r12 \n" +" strb r1, [r0] \n" +" movs r2, 0x1 \n" +" add r12, r2 \n" +" movs r3, 0x1 \n" +" negs r3, r3 \n" +" add r9, r3 \n" +" mov r0, r9 \n" +" cmp r0, 0 \n" +" bge _080A5242 \n" +" mov r0, r10 \n" +" cmp r0, 0x3 \n" +" ble _080A523A \n" +" movs r1, 0 \n" +" ldr r2, [sp, 0x10] \n" +" cmp r1, r2 \n" +" blt _080A5266 \n" +" b _080A53BA \n" +"_080A5266: \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +"_080A526A: \n" +" adds r0, 0x1 \n" +" mov r10, r0 \n" +" adds r0, r1, 0x1 \n" +" str r0, [sp, 0x14] \n" +" movs r0, 0xFF \n" +" movs r2, 0x4 \n" +" mov r9, r2 \n" +"_080A5278: \n" +" mov r3, r12 \n" +" strb r0, [r3] \n" +" movs r2, 0x1 \n" +" add r12, r2 \n" +" movs r3, 0x1 \n" +" negs r3, r3 \n" +" add r9, r3 \n" +" mov r2, r9 \n" +" cmp r2, 0 \n" +" bge _080A5278 \n" +" movs r3, 0x5 \n" +" mov r9, r3 \n" +" movs r0, 0 \n" +" cmp r1, 0 \n" +" bne _080A5308 \n" +" cmp r1, r7 \n" +" bge _080A5394 \n" +"_080A529A: \n" +" ldrb r1, [r5] \n" +" adds r5, 0x1 \n" +" cmp r1, 0xBF \n" +" ble _080A52C2 \n" +" adds r6, r0, 0 \n" +" subs r6, 0xBF \n" +" cmp r1, 0xBF \n" +" ble _080A5300 \n" +" adds r2, r1, 0 \n" +" subs r2, 0xBF \n" +"_080A52AE: \n" +" ldrb r0, [r5] \n" +" mov r3, r12 \n" +" strb r0, [r3] \n" +" adds r5, 0x1 \n" +" movs r0, 0x1 \n" +" add r12, r0 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A52AE \n" +" b _080A5300 \n" +"_080A52C2: \n" +" cmp r1, 0x7F \n" +" ble _080A52E6 \n" +" ldrb r4, [r5] \n" +" adds r5, 0x1 \n" +" adds r6, r0, 0 \n" +" subs r6, 0x7F \n" +" cmp r1, 0x7F \n" +" ble _080A5300 \n" +" adds r2, r1, 0 \n" +" subs r2, 0x7F \n" +"_080A52D6: \n" +" mov r3, r12 \n" +" strb r4, [r3] \n" +" movs r0, 0x1 \n" +" add r12, r0 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A52D6 \n" +" b _080A5300 \n" +"_080A52E6: \n" +" movs r2, 0 \n" +" adds r6, r0, 0x1 \n" +" cmp r2, r1 \n" +" bgt _080A5300 \n" +" movs r0, 0 \n" +" adds r2, r1, 0x1 \n" +"_080A52F2: \n" +" mov r3, r12 \n" +" strb r0, [r3] \n" +" movs r3, 0x1 \n" +" add r12, r3 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A52F2 \n" +"_080A5300: \n" +" adds r0, r6, r1 \n" +" cmp r0, r7 \n" +" blt _080A529A \n" +" b _080A5394 \n" +"_080A5308: \n" +" ldr r4, _080A5340 \n" +" add r4, r12 \n" +" cmp r0, r7 \n" +" bge _080A5394 \n" +"_080A5310: \n" +" ldrb r3, [r5] \n" +" adds r5, 0x1 \n" +" cmp r3, 0xBF \n" +" ble _080A5344 \n" +" adds r6, r0, 0 \n" +" subs r6, 0xBF \n" +" cmp r3, 0xBF \n" +" ble _080A538E \n" +" adds r2, r3, 0 \n" +" subs r2, 0xBF \n" +"_080A5324: \n" +" ldrb r1, [r5] \n" +" ldrb r0, [r4] \n" +" eors r1, r0 \n" +" mov r0, r12 \n" +" strb r1, [r0] \n" +" adds r4, 0x1 \n" +" adds r5, 0x1 \n" +" movs r1, 0x1 \n" +" add r12, r1 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A5324 \n" +" b _080A538E \n" +" .align 2, 0 \n" +"_080A5340: .4byte 0xffffff00\n" +"_080A5344: \n" +" cmp r3, 0x7F \n" +" ble _080A5372 \n" +" ldrb r2, [r5] \n" +" mov r8, r2 \n" +" adds r5, 0x1 \n" +" adds r6, r0, 0 \n" +" subs r6, 0x7F \n" +" cmp r3, 0x7F \n" +" ble _080A538E \n" +" adds r2, r3, 0 \n" +" subs r2, 0x7F \n" +"_080A535A: \n" +" ldrb r1, [r4] \n" +" mov r0, r8 \n" +" eors r0, r1 \n" +" mov r1, r12 \n" +" strb r0, [r1] \n" +" adds r4, 0x1 \n" +" movs r0, 0x1 \n" +" add r12, r0 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A535A \n" +" b _080A538E \n" +"_080A5372: \n" +" movs r2, 0 \n" +" adds r6, r0, 0x1 \n" +" cmp r2, r3 \n" +" bgt _080A538E \n" +" adds r2, r3, 0x1 \n" +"_080A537C: \n" +" ldrb r0, [r4] \n" +" mov r1, r12 \n" +" strb r0, [r1] \n" +" adds r4, 0x1 \n" +" movs r0, 0x1 \n" +" add r12, r0 \n" +" subs r2, 0x1 \n" +" cmp r2, 0 \n" +" bne _080A537C \n" +"_080A538E: \n" +" adds r0, r6, r3 \n" +" cmp r0, r7 \n" +" blt _080A5310 \n" +"_080A5394: \n" +" add r9, r7 \n" +" mov r1, r9 \n" +" cmp r1, 0xFF \n" +" bgt _080A53AE \n" +" movs r0, 0xFF \n" +"_080A539E: \n" +" mov r2, r12 \n" +" strb r0, [r2] \n" +" movs r3, 0x1 \n" +" add r12, r3 \n" +" add r9, r3 \n" +" mov r1, r9 \n" +" cmp r1, 0xFF \n" +" ble _080A539E \n" +"_080A53AE: \n" +" ldr r1, [sp, 0x14] \n" +" mov r0, r10 \n" +" ldr r2, [sp, 0x10] \n" +" cmp r1, r2 \n" +" bge _080A53BA \n" +" b _080A526A \n" +"_080A53BA: \n" +" ldr r3, [sp, 0x8] \n" +" cmp r0, r3 \n" +" bge _080A53E6 \n" +" movs r1, 0xFF \n" +"_080A53C2: \n" +" adds r0, 0x1 \n" +" mov r10, r0 \n" +" movs r0, 0xFF \n" +" mov r9, r0 \n" +"_080A53CA: \n" +" mov r2, r12 \n" +" strb r1, [r2] \n" +" movs r3, 0x1 \n" +" add r12, r3 \n" +" movs r0, 0x1 \n" +" negs r0, r0 \n" +" add r9, r0 \n" +" mov r2, r9 \n" +" cmp r2, 0 \n" +" bge _080A53CA \n" +" mov r0, r10 \n" +" ldr r3, [sp, 0x8] \n" +" cmp r0, r3 \n" +" blt _080A53C2 \n" +"_080A53E6: \n" +" mov r8, r5 \n" +" b _080A547E \n" +"_080A53EA: \n" +" ldr r1, [sp] \n" +" movs r0, 0 \n" +" ldr r2, [sp, 0x4] \n" +" ldrb r2, [r2, 0x1] \n" +" str r2, [sp, 0x10] \n" +" ldr r3, [sp, 0x4] \n" +" ldrh r2, [r3, 0xA] \n" +" mov r3, sp \n" +" strh r2, [r3, 0xC] \n" +" movs r6, 0xFF \n" +"_080A53FE: \n" +" adds r5, r0, 0x1 \n" +" movs r4, 0xFF \n" +"_080A5402: \n" +" strb r6, [r1] \n" +" adds r1, 0x1 \n" +" subs r4, 0x1 \n" +" cmp r4, 0 \n" +" bge _080A5402 \n" +" adds r0, r5, 0 \n" +" cmp r0, 0x3 \n" +" ble _080A53FE \n" +" movs r4, 0 \n" +" ldr r3, [sp, 0x10] \n" +" cmp r4, r3 \n" +" bge _080A5460 \n" +" ldr r2, [sp, 0x4] \n" +" ldrb r7, [r2] \n" +" movs r3, 0xFF \n" +"_080A5420: \n" +" adds r5, r0, 0x1 \n" +" adds r2, r4, 0x1 \n" +" movs r4, 0x4 \n" +"_080A5426: \n" +" strb r3, [r1] \n" +" adds r1, 0x1 \n" +" subs r4, 0x1 \n" +" cmp r4, 0 \n" +" bge _080A5426 \n" +" movs r4, 0x5 \n" +" cmp r7, 0 \n" +" beq _080A5444 \n" +" movs r6, 0 \n" +" adds r0, r7, 0 \n" +"_080A543A: \n" +" strb r6, [r1] \n" +" adds r1, 0x1 \n" +" subs r0, 0x1 \n" +" cmp r0, 0 \n" +" bne _080A543A \n" +"_080A5444: \n" +" adds r4, r7 \n" +" cmp r4, 0xFF \n" +" bgt _080A5456 \n" +" movs r0, 0xFF \n" +"_080A544C: \n" +" strb r0, [r1] \n" +" adds r1, 0x1 \n" +" adds r4, 0x1 \n" +" cmp r4, 0xFF \n" +" ble _080A544C \n" +"_080A5456: \n" +" adds r4, r2, 0 \n" +" adds r0, r5, 0 \n" +" ldr r2, [sp, 0x10] \n" +" cmp r4, r2 \n" +" blt _080A5420 \n" +"_080A5460: \n" +" ldr r3, [sp, 0x8] \n" +" cmp r0, r3 \n" +" bge _080A547E \n" +" movs r6, 0xFF \n" +"_080A5468: \n" +" adds r5, r0, 0x1 \n" +" movs r4, 0xFF \n" +"_080A546C: \n" +" strb r6, [r1] \n" +" adds r1, 0x1 \n" +" subs r4, 0x1 \n" +" cmp r4, 0 \n" +" bge _080A546C \n" +" adds r0, r5, 0 \n" +" ldr r2, [sp, 0x8] \n" +" cmp r0, r2 \n" +" blt _080A5468 \n" +"_080A547E: \n" +" mov r3, sp \n" +" ldrh r3, [r3, 0xC] \n" +" lsls r0, r3, 16 \n" +" cmp r0, 0 \n" +" bgt _080A548A \n" +" b _080A5590 \n" +"_080A548A: \n" +" mov r6, r8 \n" +" ldr r0, [sp] \n" +" movs r1, 0x80 \n" +" lsls r1, 3 \n" +" adds r2, r0, r1 \n" +" movs r0, 0 \n" +" ldr r3, [sp, 0x10] \n" +" cmp r0, r3 \n" +" bge _080A5586 \n" +" movs r1, 0xFB \n" +" mov r10, r1 \n" +"_080A54A0: \n" +" adds r2, 0x5 \n" +" movs r4, 0 \n" +" cmp r0, 0 \n" +" bne _080A54EC \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +" movs r1, 0x1 \n" +" mov r9, r1 \n" +" cmp r0, r7 \n" +" bge _080A5574 \n" +"_080A54B4: \n" +" ldrb r1, [r6] \n" +" adds r6, 0x1 \n" +" cmp r1, 0x7F \n" +" ble _080A54DE \n" +" subs r4, 0x7F \n" +" cmp r1, 0x7F \n" +" ble _080A54D6 \n" +" movs r5, 0x80 \n" +" adds r3, r1, 0 \n" +" subs r3, 0x7F \n" +"_080A54C8: \n" +" ldrb r0, [r2] \n" +" orrs r0, r5 \n" +" strb r0, [r2] \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A54C8 \n" +"_080A54D6: \n" +" adds r4, r1 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +" b _080A54E6 \n" +"_080A54DE: \n" +" adds r0, r1, 0x1 \n" +" adds r2, r0 \n" +" adds r0, r4, 0x1 \n" +" adds r4, r0, r1 \n" +"_080A54E6: \n" +" cmp r4, r7 \n" +" blt _080A54B4 \n" +" b _080A5574 \n" +"_080A54EC: \n" +" ldr r1, _080A5538 \n" +" adds r1, r2 \n" +" mov r12, r1 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +" adds r0, 0x1 \n" +" mov r9, r0 \n" +" cmp r4, r7 \n" +" bge _080A5574 \n" +"_080A54FE: \n" +" ldrb r5, [r6] \n" +" adds r6, 0x1 \n" +" cmp r5, 0x7F \n" +" ble _080A553C \n" +" subs r4, 0x7F \n" +" cmp r5, 0x7F \n" +" ble _080A556A \n" +" movs r7, 0x80 \n" +" movs r0, 0x80 \n" +" mov r8, r0 \n" +" adds r3, r5, 0 \n" +" subs r3, 0x7F \n" +"_080A5516: \n" +" mov r0, r12 \n" +" ldrb r1, [r0] \n" +" mov r0, r8 \n" +" ands r0, r1 \n" +" movs r1, 0x1 \n" +" add r12, r1 \n" +" cmp r0, 0 \n" +" bne _080A552C \n" +" ldrb r0, [r2] \n" +" orrs r0, r7 \n" +" strb r0, [r2] \n" +"_080A552C: \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A5516 \n" +" b _080A556A \n" +" .align 2, 0 \n" +"_080A5538: .4byte 0xffffff00\n" +"_080A553C: \n" +" movs r3, 0 \n" +" adds r4, 0x1 \n" +" cmp r3, r5 \n" +" bgt _080A556A \n" +" movs r7, 0x80 \n" +" movs r3, 0x80 \n" +" mov r8, r3 \n" +" adds r3, r5, 0x1 \n" +"_080A554C: \n" +" mov r0, r12 \n" +" ldrb r1, [r0] \n" +" mov r0, r8 \n" +" ands r0, r1 \n" +" movs r1, 0x1 \n" +" add r12, r1 \n" +" cmp r0, 0 \n" +" beq _080A5562 \n" +" ldrb r0, [r2] \n" +" orrs r0, r7 \n" +" strb r0, [r2] \n" +"_080A5562: \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A554C \n" +"_080A556A: \n" +" adds r4, r5 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +" cmp r4, r7 \n" +" blt _080A54FE \n" +"_080A5574: \n" +" mov r1, r10 \n" +" subs r0, r1, r7 \n" +" adds r2, r0 \n" +" mov r0, r9 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r3, [r3, 0x1] \n" +" str r3, [sp, 0x10] \n" +" cmp r0, r3 \n" +" blt _080A54A0 \n" +"_080A5586: \n" +" mov r8, r6 \n" +" ldr r0, [sp, 0x4] \n" +" ldrh r1, [r0, 0xA] \n" +" mov r0, sp \n" +" strh r1, [r0, 0xC] \n" +"_080A5590: \n" +" mov r2, sp \n" +" ldrh r2, [r2, 0xC] \n" +" lsls r0, r2, 16 \n" +" asrs r0, 16 \n" +" cmp r0, 0x1 \n" +" ble _080A568C \n" +" mov r6, r8 \n" +" ldr r3, [sp] \n" +" movs r0, 0x80 \n" +" lsls r0, 3 \n" +" adds r2, r3, r0 \n" +" movs r0, 0 \n" +" b _080A5684 \n" +"_080A55AA: \n" +" adds r2, 0x5 \n" +" movs r4, 0 \n" +" cmp r0, 0 \n" +" bne _080A55F2 \n" +" ldr r3, [sp, 0x4] \n" +" ldrb r7, [r3] \n" +" movs r1, 0x1 \n" +" mov r10, r1 \n" +" cmp r0, r7 \n" +" bge _080A567C \n" +"_080A55BE: \n" +" ldrb r1, [r6] \n" +" adds r6, 0x1 \n" +" cmp r1, 0x7F \n" +" ble _080A55E4 \n" +" subs r4, 0x7F \n" +" cmp r1, 0x7F \n" +" ble _080A55E0 \n" +" movs r5, 0x40 \n" +" adds r3, r1, 0 \n" +" subs r3, 0x7F \n" +"_080A55D2: \n" +" ldrb r0, [r2] \n" +" orrs r0, r5 \n" +" strb r0, [r2] \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A55D2 \n" +"_080A55E0: \n" +" adds r4, r1 \n" +" b _080A55EC \n" +"_080A55E4: \n" +" adds r0, r1, 0x1 \n" +" adds r2, r0 \n" +" adds r0, r4, 0x1 \n" +" adds r4, r0, r1 \n" +"_080A55EC: \n" +" cmp r4, r7 \n" +" blt _080A55BE \n" +" b _080A567C \n" +"_080A55F2: \n" +" ldr r3, _080A5640 \n" +" adds r3, r2 \n" +" mov r12, r3 \n" +" ldr r1, [sp, 0x4] \n" +" ldrb r7, [r1] \n" +" adds r0, 0x1 \n" +" mov r10, r0 \n" +" cmp r4, r7 \n" +" bge _080A567C \n" +"_080A5604: \n" +" ldrb r5, [r6] \n" +" adds r6, 0x1 \n" +" cmp r5, 0x7F \n" +" ble _080A5644 \n" +" subs r4, 0x7F \n" +" cmp r5, 0x7F \n" +" ble _080A5676 \n" +" movs r3, 0x40 \n" +" mov r8, r3 \n" +" movs r0, 0x40 \n" +" mov r9, r0 \n" +" adds r3, r5, 0 \n" +" subs r3, 0x7F \n" +"_080A561E: \n" +" mov r0, r12 \n" +" ldrb r1, [r0] \n" +" mov r0, r9 \n" +" ands r0, r1 \n" +" movs r1, 0x1 \n" +" add r12, r1 \n" +" cmp r0, 0 \n" +" bne _080A5636 \n" +" ldrb r0, [r2] \n" +" mov r1, r8 \n" +" orrs r0, r1 \n" +" strb r0, [r2] \n" +"_080A5636: \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A561E \n" +" b _080A5676 \n" +" .align 2, 0 \n" +"_080A5640: .4byte 0xffffff00\n" +"_080A5644: \n" +" movs r3, 0 \n" +" adds r4, 0x1 \n" +" cmp r3, r5 \n" +" bgt _080A5676 \n" +" movs r3, 0x40 \n" +" mov r8, r3 \n" +" movs r0, 0x40 \n" +" mov r9, r0 \n" +" adds r3, r5, 0x1 \n" +"_080A5656: \n" +" mov r0, r12 \n" +" ldrb r1, [r0] \n" +" mov r0, r9 \n" +" ands r0, r1 \n" +" movs r1, 0x1 \n" +" add r12, r1 \n" +" cmp r0, 0 \n" +" beq _080A566E \n" +" ldrb r0, [r2] \n" +" mov r1, r8 \n" +" orrs r0, r1 \n" +" strb r0, [r2] \n" +"_080A566E: \n" +" adds r2, 0x1 \n" +" subs r3, 0x1 \n" +" cmp r3, 0 \n" +" bne _080A5656 \n" +"_080A5676: \n" +" adds r4, r5 \n" +" cmp r4, r7 \n" +" blt _080A5604 \n" +"_080A567C: \n" +" movs r3, 0xFB \n" +" subs r0, r3, r7 \n" +" adds r2, r0 \n" +" mov r0, r10 \n" +"_080A5684: \n" +" ldr r1, [sp, 0x10] \n" +" cmp r0, r1 \n" +" blt _080A55AA \n" +" mov r8, r6 \n" +"_080A568C: \n" +" mov r0, r8 \n" +" add sp, 0x18 \n" +" pop {r3-r5} \n" +" mov r8, r3 \n" +" mov r9, r4 \n" +" mov r10, r5 \n" +" pop {r4-r7} \n" +" pop {r1} \n" +" bx r1 "); +} + +void sub_80A56A0(u8 param_1, u8 param_2) +{ + sub_80A3B80(gGroundMapDungeon_3001B70, param_1, param_2); +} + +void sub_80A56C0(PixelPos *pos) +{ + sub_80A4558(gGroundMapDungeon_3001B70, 0, pos); +} + +void sub_80A456C(GroundBg *groundBg, s32 id, const PixelPos *srcPos); + +void sub_80A56D8(const PixelPos *pos) +{ + sub_80A456C(gGroundMapDungeon_3001B70, 0, pos); +} + +void sub_80A56F0(PixelPos *pos) +{ + gGroundMapAction->unkE8 = *pos; +} + +void sub_80A5704(PixelPos *pos) +{ + gGroundMapAction->unkF8 = *pos; + gGroundMapAction->unkF0 = 0; + gGroundMapAction->unkF4 = 0; +} + +s16 GetGroundMapID(void) +{ + return gGroundMapAction->groundMapId; +} + +UNUSED static const GroundConversionStruct *GetGroundConversionStruct(void) +{ + return &gGroundMapConversionTable[gGroundMapAction->groundMapId]; +} + +bool8 sub_80A5758(PixelPos *pos) +{ + if(gGroundMapDungeon_3001B70 != NULL) + { + sub_80A4608(gGroundMapDungeon_3001B70, pos); + return TRUE; + + } + else { + return FALSE; + } +} + +bool8 GetCurrentDungeonBounds(PixelPos *pos1, PixelPos *pos2) +{ + if(gGroundMapDungeon_3001B70 != NULL) + { + GetDungeonBounds(gGroundMapDungeon_3001B70, pos1, pos2); + return TRUE; + + } + else { + return FALSE; + } +} + diff --git a/src/ground_map_1.c b/src/ground_map_1.c index f03947cbe..4f26d94a5 100644 --- a/src/ground_map_1.c +++ b/src/ground_map_1.c @@ -82,7 +82,7 @@ void sub_80A59DC(void) case 0xAA: { PixelPos pixPos2; - gGroundMapAction->unkF0 += gGroundMapAction->unkE8; + gGroundMapAction->unkF0 += gGroundMapAction->unkE8.x; gGroundMapAction->unkF8.x += gGroundMapAction->unkF0 / 8; gGroundMapAction->unkF0 %= 8; sub_80A4580(gGroundMapDungeon_3001B70, 0, &gGroundMapAction->unkF8); @@ -94,7 +94,7 @@ void sub_80A59DC(void) case 0xAE: { PixelPos pixPos2; - gGroundMapAction->unkF0 += gGroundMapAction->unkE8; + gGroundMapAction->unkF0 += gGroundMapAction->unkE8.x; gGroundMapAction->unkF8.x += gGroundMapAction->unkF0 / 8; gGroundMapAction->unkF0 %= 8; sub_80A4580(gGroundMapDungeon_3001B70, 0, &gGroundMapAction->unkF8); @@ -115,8 +115,8 @@ void sub_80A59DC(void) PixelPos pixPos2; sub_80A456C(gGroundMapDungeon_3001B70, 0, &pixPos); - gGroundMapAction->unkF0 += gGroundMapAction->unkE8; - gGroundMapAction->unkF4 += gGroundMapAction->unkEC; + gGroundMapAction->unkF0 += gGroundMapAction->unkE8.x; + gGroundMapAction->unkF4 += gGroundMapAction->unkE8.y; gGroundMapAction->unkF8.x += gGroundMapAction->unkF0 / 8; gGroundMapAction->unkF8.y += gGroundMapAction->unkF4 / 8; gGroundMapAction->unkF0 %= 8; @@ -130,8 +130,8 @@ void sub_80A59DC(void) case 0xB0: { PixelPos pixPos2; - gGroundMapAction->unkF0 += gGroundMapAction->unkE8; - gGroundMapAction->unkF4 += gGroundMapAction->unkEC; + gGroundMapAction->unkF0 += gGroundMapAction->unkE8.x; + gGroundMapAction->unkF4 += gGroundMapAction->unkE8.y; gGroundMapAction->unkF8.x += gGroundMapAction->unkF0 / 8; gGroundMapAction->unkF8.y += gGroundMapAction->unkF4 / 8; gGroundMapAction->unkF0 %= 8; diff --git a/src/ground_script.c b/src/ground_script.c index 13c50f1b7..6b97d2971 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -160,8 +160,8 @@ bool8 sub_80A87E0(); s16 sub_80A8BFC(s16); void sub_80A8F50(const u8 *buffer, s32, s32 size); void sub_80A56A0(s32, s32); -void sub_80A56F0(s32 *); -void sub_80A5704(s32 *); +void sub_80A56F0(PixelPos *); +void sub_80A5704(PixelPos *); void sub_80A86C8(s16, s32); void sub_80AC1B0(s16, s32); void sub_80AD0C8(s16, s32); @@ -3720,17 +3720,17 @@ s32 sub_80A14E8(Action *action, u8 idx, u32 r2, s32 r3) sub_80A56A0(0, 1); return 0; case 0x36: { - s32 sp_328[2]; - sp_328[0] = r2; - sp_328[1] = r3; - sub_80A56F0(sp_328); + PixelPos sp_328; + sp_328.x = r2; + sp_328.y = r3; + sub_80A56F0(&sp_328); return 0; } case 0x37: { - s32 sp_330[2]; - sp_330[0] = r2; - sp_330[1] = r3; - sub_80A5704(sp_330); + PixelPos sp_330; + sp_330.x = r2; + sp_330.y = r3; + sub_80A5704(&sp_330); return 0; } case 0x39: