From f629cd20a1af09b425c092d2b085286eb584c013 Mon Sep 17 00:00:00 2001 From: Dennis H Date: Thu, 12 Jan 2023 22:11:35 +0100 Subject: [PATCH] split moves_1.s and some work on functions --- asm/moves_1.s | 2003 ---------------------------------------------- asm/moves_2.s | 1782 +++++++++++++++++++++++++++++++++++++++++ include/global.h | 1 + ld_script.txt | 2 + src/dungeon_2.c | 15 + src/moves.c | 27 + src/moves_1.c | 152 ++-- src/moves_2.c | 100 +++ 8 files changed, 2007 insertions(+), 2075 deletions(-) create mode 100644 asm/moves_2.s create mode 100644 src/moves_2.c diff --git a/asm/moves_1.s b/asm/moves_1.s index 969c450de..08495d3e5 100644 --- a/asm/moves_1.s +++ b/asm/moves_1.s @@ -783,2008 +783,5 @@ _080932CC: bx r1 thumb_func_end sub_809324C - thumb_func_start sub_80932E0 -sub_80932E0: - push {lr} - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080932F4 - movs r0, 0 - b _080932F6 -_080932F4: - movs r0, 0x1 -_080932F6: - pop {r1} - bx r1 - thumb_func_end sub_80932E0 - - thumb_func_start sub_80932FC -sub_80932FC: - push {lr} - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08093310 - movs r0, 0 - b _08093312 -_08093310: - movs r0, 0x1 -_08093312: - pop {r1} - bx r1 - thumb_func_end sub_80932FC - - thumb_func_start sub_8093318 -sub_8093318: - push {r4,lr} - sub sp, 0x40 - adds r4, r0, 0 - mov r0, sp - movs r2, 0x40 - bl MemoryCopy8 - adds r0, r4, 0 - mov r1, sp - bl sub_8093400 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x40 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8093318 - - thumb_func_start sub_809333C -sub_809333C: - push {r4,lr} - sub sp, 0x40 - adds r4, r0, 0 - mov r0, sp - movs r2, 0x40 - bl MemoryCopy8 - adds r0, r4, 0 - mov r1, sp - bl sub_8093468 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x40 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809333C - - thumb_func_start sub_8093360 -sub_8093360: - push {r4,lr} - sub sp, 0x40 - adds r4, r0, 0 - mov r0, sp - movs r2, 0x40 - bl MemoryCopy8 - adds r0, r4, 0 - mov r1, sp - bl sub_80933D8 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x40 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8093360 - - thumb_func_start sub_8093384 -sub_8093384: - push {lr} - lsls r0, 3 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08093398 - movs r0, 0x1 - b _0809339A -_08093398: - movs r0, 0 -_0809339A: - pop {r1} - bx r1 - thumb_func_end sub_8093384 - - thumb_func_start sub_80933A0 -sub_80933A0: - push {r4-r6,lr} - movs r4, 0 - movs r6, 0x1 - movs r5, 0x2 - movs r3, 0x7 -_080933AA: - ldrb r2, [r1] - adds r0, r6, 0 - ands r0, r2 - cmp r0, 0 - beq _080933BE - adds r0, r5, 0 - ands r0, r2 - cmp r0, 0 - bne _080933BE - adds r4, 0x1 -_080933BE: - adds r1, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _080933AA - cmp r4, 0x1 - bgt _080933CE - movs r0, 0 - b _080933D0 -_080933CE: - movs r0, 0x1 -_080933D0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80933A0 - - thumb_func_start sub_80933D8 -sub_80933D8: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8093400 - lsls r0, 24 - cmp r0, 0 - bne _080933F6 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8093468 - lsls r0, 24 - lsrs r0, 24 - b _080933F8 -_080933F6: - movs r0, 0x1 -_080933F8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80933D8 - - thumb_func_start sub_8093400 -sub_8093400: - push {r4-r7,lr} - adds r4, r0, 0 - adds r7, r1, 0 - lsls r0, r4, 3 - adds r0, r7, r0 - ldrh r0, [r0, 0x2] - bl DoesMoveCharge - lsls r0, 24 - cmp r0, 0 - beq _08093428 - b _08093460 -_08093418: - adds r0, r1, 0 - orrs r0, r2 - strb r0, [r6] - adds r0, r7, 0 - bl sub_809371C - movs r0, 0x1 - b _08093462 -_08093428: - adds r5, r4, 0x1 - cmp r5, 0x7 - bgt _08093460 - lsls r0, r5, 3 - adds r4, r0, r7 - adds r6, r4, 0 -_08093434: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093460 - ldrh r0, [r4, 0x2] - bl DoesMoveCharge - lsls r0, 24 - cmp r0, 0 - bne _08093460 - ldrb r1, [r4] - movs r2, 0x2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08093418 - adds r4, 0x8 - adds r6, 0x8 - adds r5, 0x1 - cmp r5, 0x7 - ble _08093434 -_08093460: - movs r0, 0 -_08093462: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093400 - - thumb_func_start sub_8093468 -sub_8093468: - push {r4-r7,lr} - adds r6, r1, 0 - movs r5, 0 - adds r1, r0, 0x1 - movs r4, 0 - cmp r1, 0x7 - bgt _080934A0 - movs r0, 0x2 - mov r12, r0 - movs r7, 0xFD - lsls r0, r1, 3 - adds r3, r0, r6 -_08093480: - ldrb r2, [r3] - mov r0, r12 - ands r0, r2 - cmp r0, 0 - beq _080934A0 - adds r0, r7, 0 - ands r0, r2 - strb r0, [r3] - movs r5, 0x1 - adds r3, 0x8 - adds r1, 0x1 - adds r4, 0x1 - cmp r4, 0x7 - bgt _080934A0 - cmp r1, 0x7 - ble _08093480 -_080934A0: - adds r0, r6, 0 - bl sub_809371C - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093468 - - thumb_func_start sub_80934B0 -sub_80934B0: - push {lr} - adds r2, r0, 0 - adds r0, r2, 0x1 - cmp r0, 0x7 - bgt _080934D2 - lsls r0, r2, 3 - adds r0, 0x8 - adds r0, r1, r0 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080934D2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080934D6 -_080934D2: - movs r0, 0 - b _080934D8 -_080934D6: - movs r0, 0x1 -_080934D8: - pop {r1} - bx r1 - thumb_func_end sub_80934B0 - - thumb_func_start sub_80934DC -sub_80934DC: - push {r4-r7,lr} - adds r5, r1, 0 - lsls r0, 3 - adds r4, r5, r0 - ldrb r1, [r4] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080934F4 - movs r0, 0xF7 - ands r0, r1 - b _0809351A -_080934F4: - movs r7, 0x1 - movs r6, 0xF7 - adds r1, r5, 0 - movs r3, 0x3 -_080934FC: - ldrb r2, [r1] - adds r0, r7, 0 - ands r0, r2 - cmp r0, 0 - beq _0809350C - adds r0, r6, 0 - ands r0, r2 - strb r0, [r1] -_0809350C: - adds r1, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _080934FC - ldrb r1, [r4] - movs r0, 0x8 - orrs r0, r1 -_0809351A: - strb r0, [r4] - adds r0, r5, 0 - bl sub_809371C - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80934DC - - thumb_func_start sub_809352C -sub_809352C: - push {lr} - lsls r0, 3 - adds r0, r1, r0 - ldrb r3, [r0] - movs r2, 0xF7 - ands r2, r3 - strb r2, [r0] - adds r0, r1, 0 - bl sub_809371C - pop {r0} - bx r0 - thumb_func_end sub_809352C - - thumb_func_start sub_8093544 -sub_8093544: - push {lr} - lsls r0, 3 - adds r0, r1, r0 - ldrb r2, [r0] - movs r3, 0x4 - eors r2, r3 - strb r2, [r0] - adds r0, r1, 0 - bl sub_809371C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8093544 - - thumb_func_start sub_8093560 -sub_8093560: - push {r4-r7,lr} - adds r4, r0, 0 - adds r6, r1, 0 - movs r5, 0x1 - lsls r0, r4, 3 - adds r0, r6, r0 - ldrh r0, [r0, 0x2] - strh r0, [r2] - movs r1, 0 - adds r0, r2, 0x2 - movs r3, 0x2 -_08093576: - strh r1, [r0] - adds r0, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _08093576 - adds r4, 0x1 - adds r2, 0x2 - cmp r4, 0x7 - bgt _080935B0 - cmp r5, 0x3 - bgt _080935B0 - movs r7, 0x2 - lsls r0, r4, 3 - adds r3, r0, r6 -_08093592: - ldrb r1, [r3] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _080935B0 - ldrh r0, [r3, 0x2] - strh r0, [r2] - adds r2, 0x2 - adds r5, 0x1 - adds r3, 0x8 - adds r4, 0x1 - cmp r4, 0x7 - bgt _080935B0 - cmp r5, 0x3 - ble _08093592 -_080935B0: - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093560 - - thumb_func_start sub_80935B8 -sub_80935B8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - movs r0, 0x63 - mov r12, r0 - movs r0, 0 - mov r8, r0 - movs r6, 0 - adds r4, r1, 0 - cmp r4, 0 - blt _08093606 - lsls r0, r4, 3 - adds r2, r5, r0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093606 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08093606 - movs r7, 0x1 - movs r3, 0x2 -_080935EC: - subs r2, 0x8 - subs r4, 0x1 - cmp r4, 0 - blt _08093606 - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08093606 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080935EC -_08093606: - adds r2, r4, 0x1 - mov r9, r2 - cmp r2, 0x3 - bgt _08093642 - lsls r0, r2, 3 - adds r3, r5, r0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093642 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08093642 - movs r6, 0x1 - movs r7, 0x2 -_08093628: - adds r3, 0x8 - adds r2, 0x1 - cmp r2, 0x3 - bgt _08093642 - ldrb r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08093642 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08093628 -_08093642: - cmp r6, 0 - bne _0809364A - movs r0, 0x63 - b _080936CC -_0809364A: - movs r6, 0 - b _08093668 -_0809364E: - ldrb r0, [r3, 0x4] - cmp r12, r0 - ble _08093656 - mov r12, r0 -_08093656: - cmp r0, 0 - bne _0809365C - movs r6, 0x1 -_0809365C: - ldrb r1, [r3, 0x1] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08093668 - movs r6, 0x1 -_08093668: - subs r2, 0x1 - cmp r2, r4 - blt _0809367C - lsls r0, r2, 3 - adds r3, r5, r0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809364E -_0809367C: - cmp r6, 0 - beq _080936C6 - mov r2, r9 - cmp r2, 0x3 - bgt _080936C0 - lsls r0, r2, 3 - adds r3, r5, r0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080936C0 - movs r6, 0x2 - movs r4, 0xFD -_08093698: - ldrb r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _080936C0 - adds r0, r4, 0 - ands r0, r1 - strb r0, [r3] - movs r0, 0x1 - mov r8, r0 - adds r2, 0x1 - cmp r2, 0x3 - bgt _080936C0 - lsls r0, r2, 3 - adds r3, r5, r0 - ldrb r1, [r3] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - bne _08093698 -_080936C0: - mov r0, r8 - cmp r0, 0 - bne _080936CA -_080936C6: - mov r0, r12 - b _080936CC -_080936CA: - movs r0, 0 -_080936CC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80935B8 - - thumb_func_start sub_80936D8 -sub_80936D8: - push {r4,lr} - sub sp, 0x80 - adds r4, r0, 0 - mov r1, sp - bl sub_8093784 - adds r0, r4, 0 - mov r1, sp - bl sub_80937E0 - add sp, 0x80 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80936D8 - - thumb_func_start sub_80936F4 -sub_80936F4: - push {r4,lr} - ldr r4, _08093718 - add sp, r4 - adds r4, r0, 0 - mov r1, sp - bl sub_8093974 - adds r0, r4, 0 - mov r1, sp - bl sub_8093A2C - movs r3, 0x80 - lsls r3, 2 - add sp, r3 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08093718: .4byte 0xfffffe00 - thumb_func_end sub_80936F4 - - thumb_func_start sub_809371C -sub_809371C: - push {r4,lr} - ldr r4, _08093740 - add sp, r4 - adds r4, r0, 0 - mov r1, sp - bl sub_80939D0 - adds r0, r4, 0 - mov r1, sp - bl sub_8093B40 - movs r3, 0x80 - lsls r3, 2 - add sp, r3 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08093740: .4byte 0xfffffe00 - thumb_func_end sub_809371C - - thumb_func_start sub_8093744 -sub_8093744: - push {r4-r7,lr} - adds r7, r0, 0 - movs r4, 0 - movs r6, 0x1 - movs r5, 0x80 -_0809374E: - movs r3, 0 - lsls r0, r4, 5 - adds r2, r0, r7 -_08093754: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0809376A - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0809376A - adds r0, r4, 0 - b _0809377C -_0809376A: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - ble _08093754 - adds r4, 0x1 - cmp r4, 0x3 - ble _0809374E - movs r0, 0x1 - negs r0, r0 -_0809377C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093744 - - thumb_func_start sub_8093784 -sub_8093784: - push {r4-r7,lr} - adds r6, r0, 0 - movs r2, 0 - movs r4, 0 -_0809378C: - lsls r0, r2, 5 - adds r2, 0x1 - movs r3, 0x3 - adds r0, r1 - adds r0, 0x18 -_08093796: - strb r4, [r0] - subs r0, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08093796 - cmp r2, 0x3 - ble _0809378C - movs r3, 0 - movs r5, 0 - adds r4, r1, 0 - subs r4, 0x20 - movs r7, 0x2 -_080937AE: - cmp r5, 0 - beq _080937BC - ldrb r1, [r6] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080937C0 -_080937BC: - adds r4, 0x20 - movs r3, 0 -_080937C0: - lsls r2, r3, 3 - adds r2, r4 - ldm r6!, {r0,r1} - str r0, [r2] - str r1, [r2, 0x4] - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - strb r0, [r2] - adds r3, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _080937AE - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093784 - - thumb_func_start sub_80937E0 -sub_80937E0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r0, [sp, 0x8] - mov r9, r1 - movs r0, 0 - mov r8, r0 - movs r6, 0 - add r1, sp, 0x4 - mov r10, r1 - mov r12, r6 - movs r3, 0x1 -_080937FE: - mov r2, sp - adds r0, r2, r6 - mov r7, r12 - strb r7, [r0] - mov r1, sp - adds r1, r6 - adds r1, 0x4 - mov r2, r12 - strb r2, [r1] - adds r7, r0, 0 - lsls r0, r6, 5 - adds r6, 0x1 - adds r5, r1, 0 - mov r1, r9 - adds r2, r0, r1 - movs r4, 0x3 -_0809381E: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0809383E - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08093832 - strb r3, [r7] -_08093832: - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0809383E - strb r3, [r5] -_0809383E: - adds r2, 0x8 - subs r4, 0x1 - cmp r4, 0 - bge _0809381E - cmp r6, 0x3 - ble _080937FE - movs r6, 0 - mov r2, r8 - lsls r2, 3 - str r2, [sp, 0xC] -_08093852: - movs r4, 0 - lsls r0, r6, 5 - mov r7, r9 - adds r5, r0, r7 - ldr r0, [sp, 0xC] - ldr r1, [sp, 0x8] - adds r2, r0, r1 - mov r7, r10 - adds r7, r6 - mov r12, r7 -_08093866: - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080938D6 - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - cmp r4, 0 - bne _08093884 - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - b _0809388A -_08093884: - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 -_0809388A: - strb r0, [r2] - ldrb r0, [r2] - movs r3, 0xF7 - ands r3, r0 - movs r1, 0 - movs r0, 0xFB - ands r3, r0 - strb r3, [r2] - mov r7, sp - adds r0, r7, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _080938B0 - cmp r4, 0 - bne _080938B0 - movs r1, 0x8 - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2] -_080938B0: - mov r1, r12 - ldrb r0, [r1] - cmp r0, 0 - beq _080938C4 - cmp r4, 0 - bne _080938C4 - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080938C4: - adds r2, 0x8 - ldr r7, [sp, 0xC] - adds r7, 0x8 - str r7, [sp, 0xC] - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x4 - beq _080938E4 -_080938D6: - adds r5, 0x8 - adds r4, 0x1 - cmp r4, 0x3 - ble _08093866 - adds r6, 0x1 - cmp r6, 0x3 - ble _08093852 -_080938E4: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80937E0 - - thumb_func_start sub_80938F4 -sub_80938F4: - push {r4-r7,lr} - adds r7, r0, 0 - movs r4, 0 - movs r6, 0x1 - movs r5, 0x80 -_080938FE: - movs r3, 0 - lsls r0, r4, 6 - adds r2, r0, r7 -_08093904: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0809391A - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0809391A - adds r0, r4, 0 - b _0809392C -_0809391A: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x7 - ble _08093904 - adds r4, 0x1 - cmp r4, 0x7 - ble _080938FE - movs r0, 0x1 - negs r0, r0 -_0809392C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80938F4 - - thumb_func_start sub_8093934 -sub_8093934: - push {r4-r7,lr} - adds r7, r0, 0 - movs r4, 0 - movs r6, 0x1 - movs r5, 0x80 -_0809393E: - movs r3, 0 - lsls r0, r4, 6 - adds r2, r0, r7 -_08093944: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0809395A - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0809395A - adds r0, r4, 0 - b _0809396C -_0809395A: - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x7 - ble _08093944 - adds r4, 0x1 - cmp r4, 0x7 - ble _0809393E - movs r0, 0x1 - negs r0, r0 -_0809396C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8093934 - - thumb_func_start sub_8093974 -sub_8093974: - push {r4-r7,lr} - adds r6, r0, 0 - movs r2, 0 - movs r4, 0 -_0809397C: - lsls r0, r2, 6 - adds r2, 0x1 - movs r3, 0x7 - adds r0, r1 - adds r0, 0x38 -_08093986: - strb r4, [r0] - subs r0, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08093986 - cmp r2, 0x7 - ble _0809397C - movs r3, 0 - movs r5, 0 - adds r4, r1, 0 - subs r4, 0x40 - movs r7, 0x2 -_0809399E: - cmp r5, 0 - beq _080939AC - ldrb r1, [r6] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080939B0 -_080939AC: - adds r4, 0x40 - movs r3, 0 -_080939B0: - lsls r2, r3, 3 - adds r2, r4 - ldm r6!, {r0,r1} - str r0, [r2] - str r1, [r2, 0x4] - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - strb r0, [r2] - adds r3, 0x1 - adds r5, 0x1 - cmp r5, 0x7 - ble _0809399E - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093974 - - thumb_func_start sub_80939D0 -sub_80939D0: - push {r4-r7,lr} - adds r6, r0, 0 - movs r2, 0 - movs r4, 0 -_080939D8: - lsls r0, r2, 6 - adds r2, 0x1 - movs r3, 0x7 - adds r0, r1 - adds r0, 0x38 -_080939E2: - strb r4, [r0] - subs r0, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _080939E2 - cmp r2, 0x7 - ble _080939D8 - movs r3, 0 - movs r5, 0 - adds r4, r1, 0 - subs r4, 0x40 - movs r7, 0x2 -_080939FA: - cmp r5, 0 - beq _08093A08 - ldrb r1, [r6] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08093A0C -_08093A08: - adds r4, 0x40 - movs r3, 0 -_08093A0C: - lsls r2, r3, 3 - adds r2, r4 - ldm r6!, {r0,r1} - str r0, [r2] - str r1, [r2, 0x4] - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - strb r0, [r2] - adds r3, 0x1 - adds r5, 0x1 - cmp r5, 0x7 - ble _080939FA - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80939D0 - - thumb_func_start sub_8093A2C -sub_8093A2C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0x10] - mov r9, r1 - movs r0, 0 - mov r8, r0 - movs r6, 0 - add r1, sp, 0x8 - mov r10, r1 - mov r12, r6 - movs r3, 0x1 -_08093A4A: - mov r2, sp - adds r0, r2, r6 - mov r7, r12 - strb r7, [r0] - mov r1, sp - adds r1, r6 - adds r1, 0x8 - mov r2, r12 - strb r2, [r1] - adds r7, r0, 0 - lsls r0, r6, 6 - adds r6, 0x1 - adds r5, r1, 0 - mov r1, r9 - adds r2, r0, r1 - movs r4, 0x7 -_08093A6A: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08093A8A - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08093A7E - strb r3, [r7] -_08093A7E: - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08093A8A - strb r3, [r5] -_08093A8A: - adds r2, 0x8 - subs r4, 0x1 - cmp r4, 0 - bge _08093A6A - cmp r6, 0x7 - ble _08093A4A - movs r6, 0 - mov r2, r8 - lsls r2, 3 - str r2, [sp, 0x14] -_08093A9E: - movs r4, 0 - lsls r0, r6, 6 - mov r7, r9 - adds r5, r0, r7 - ldr r0, [sp, 0x14] - ldr r1, [sp, 0x10] - adds r2, r0, r1 - mov r7, r10 - adds r7, r6 - mov r12, r7 -_08093AB2: - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093B22 - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - cmp r4, 0 - bne _08093AD0 - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - b _08093AD6 -_08093AD0: - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 -_08093AD6: - strb r0, [r2] - ldrb r0, [r2] - movs r3, 0xF7 - ands r3, r0 - movs r1, 0 - movs r0, 0xFB - ands r3, r0 - strb r3, [r2] - mov r7, sp - adds r0, r7, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _08093AFC - cmp r4, 0 - bne _08093AFC - movs r1, 0x8 - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2] -_08093AFC: - mov r1, r12 - ldrb r0, [r1] - cmp r0, 0 - beq _08093B10 - cmp r4, 0 - bne _08093B10 - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08093B10: - adds r2, 0x8 - ldr r7, [sp, 0x14] - adds r7, 0x8 - str r7, [sp, 0x14] - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x8 - beq _08093B30 -_08093B22: - adds r5, 0x8 - adds r4, 0x1 - cmp r4, 0x7 - ble _08093AB2 - adds r6, 0x1 - cmp r6, 0x7 - ble _08093A9E -_08093B30: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093A2C - - thumb_func_start sub_8093B40 -sub_8093B40: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - str r0, [sp, 0x10] - mov r9, r1 - movs r0, 0 - mov r8, r0 - movs r6, 0 - add r1, sp, 0x8 - mov r10, r1 - mov r12, r6 - movs r3, 0x1 -_08093B5E: - mov r2, sp - adds r0, r2, r6 - mov r7, r12 - strb r7, [r0] - mov r1, sp - adds r1, r6 - adds r1, 0x8 - mov r2, r12 - strb r2, [r1] - adds r7, r0, 0 - lsls r0, r6, 6 - adds r6, 0x1 - adds r5, r1, 0 - mov r1, r9 - adds r2, r0, r1 - movs r4, 0x7 -_08093B7E: - ldrb r1, [r2] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08093B9E - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08093B92 - strb r3, [r7] -_08093B92: - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08093B9E - strb r3, [r5] -_08093B9E: - adds r2, 0x8 - subs r4, 0x1 - cmp r4, 0 - bge _08093B7E - cmp r6, 0x7 - ble _08093B5E - movs r6, 0 - mov r2, r8 - lsls r2, 3 - str r2, [sp, 0x14] -_08093BB2: - movs r4, 0 - lsls r0, r6, 6 - mov r7, r9 - adds r5, r0, r7 - ldr r0, [sp, 0x14] - ldr r1, [sp, 0x10] - adds r2, r0, r1 - mov r7, r10 - adds r7, r6 - mov r12, r7 -_08093BC6: - ldrb r1, [r5] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093C36 - ldr r0, [r5] - ldr r1, [r5, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - cmp r4, 0 - bne _08093BE4 - ldrb r1, [r2] - movs r0, 0xFD - ands r0, r1 - b _08093BEA -_08093BE4: - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 -_08093BEA: - strb r0, [r2] - ldrb r0, [r2] - movs r3, 0xF7 - ands r3, r0 - movs r1, 0 - movs r0, 0xFB - ands r3, r0 - strb r3, [r2] - mov r7, sp - adds r0, r7, r6 - ldrb r0, [r0] - cmp r0, 0 - beq _08093C10 - cmp r4, 0 - bne _08093C10 - movs r1, 0x8 - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2] -_08093C10: - mov r1, r12 - ldrb r0, [r1] - cmp r0, 0 - beq _08093C24 - cmp r4, 0 - bne _08093C24 - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_08093C24: - adds r2, 0x8 - ldr r7, [sp, 0x14] - adds r7, 0x8 - str r7, [sp, 0x14] - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x8 - beq _08093C44 -_08093C36: - adds r5, 0x8 - adds r4, 0x1 - cmp r4, 0x7 - ble _08093BC6 - adds r6, 0x1 - cmp r6, 0x7 - ble _08093BB2 -_08093C44: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093B40 - - thumb_func_start sub_8093C54 -sub_8093C54: - push {r4-r7,lr} - sub sp, 0x40 - adds r6, r0, 0 - lsls r0, r1, 3 - adds r0, r6 - movs r2, 0 - strb r2, [r0] - adds r3, r1, 0x1 - cmp r3, 0x7 - bgt _08093CA6 - lsls r0, r3, 3 - adds r4, r6, r0 - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093CA6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08093CA6 - mov r12, r2 - movs r7, 0x1 - adds r2, r4, 0 - movs r5, 0x2 -_08093C86: - mov r0, r12 - strb r0, [r4] - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x7 - bgt _08093CA6 - adds r4, r2, 0 - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08093CA6 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08093C86 -_08093CA6: - movs r4, 0 - movs r7, 0x1 - adds r2, r6, 0 - mov r5, sp - movs r3, 0x7 -_08093CB0: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08093CC2 - ldr r0, [r2] - ldr r1, [r2, 0x4] - stm r5!, {r0,r1} - adds r4, 0x1 -_08093CC2: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08093CB0 - cmp r4, 0x7 - bgt _08093CDE - movs r1, 0 - lsls r0, r4, 3 - add r0, sp -_08093CD4: - strb r1, [r0] - adds r0, 0x8 - adds r4, 0x1 - cmp r4, 0x7 - ble _08093CD4 -_08093CDE: - mov r4, sp - adds r2, r6, 0 - movs r3, 0x7 -_08093CE4: - ldm r4!, {r0,r1} - stm r2!, {r0,r1} - subs r3, 0x1 - cmp r3, 0 - bge _08093CE4 - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093C54 - - thumb_func_start sub_8093CF8 -sub_8093CF8: - push {r4-r7,lr} - sub sp, 0x40 - adds r6, r0, 0 - lsls r0, r1, 3 - adds r0, r6 - movs r2, 0 - strb r2, [r0] - adds r3, r1, 0x1 - cmp r3, 0x7 - bgt _08093D4A - lsls r0, r3, 3 - adds r4, r6, r0 - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093D4A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08093D4A - mov r12, r2 - movs r7, 0x1 - adds r2, r4, 0 - movs r5, 0x2 -_08093D2A: - mov r0, r12 - strb r0, [r4] - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x7 - bgt _08093D4A - adds r4, r2, 0 - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08093D4A - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08093D2A -_08093D4A: - movs r4, 0 - movs r7, 0x1 - adds r2, r6, 0 - mov r5, sp - movs r3, 0x7 -_08093D54: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _08093D66 - ldr r0, [r2] - ldr r1, [r2, 0x4] - stm r5!, {r0,r1} - adds r4, 0x1 -_08093D66: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08093D54 - cmp r4, 0x7 - bgt _08093D82 - movs r1, 0 - lsls r0, r4, 3 - add r0, sp -_08093D78: - strb r1, [r0] - adds r0, 0x8 - adds r4, 0x1 - cmp r4, 0x7 - ble _08093D78 -_08093D82: - mov r4, sp - adds r2, r6, 0 - movs r3, 0x7 -_08093D88: - ldm r4!, {r0,r1} - stm r2!, {r0,r1} - subs r3, 0x1 - cmp r3, 0 - bge _08093D88 - add sp, 0x40 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093CF8 - - thumb_func_start sub_8093D9C -sub_8093D9C: - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r1, 16 - lsrs r1, 16 - mov r0, sp - bl InitPokemonMove - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8093DE8 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8093D9C - - thumb_func_start sub_8093DC4 -sub_8093DC4: - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r2, 0 - adds r6, r3, 0 - mov r0, sp - bl sub_8093F10 - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8093DE8 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8093DC4 - - thumb_func_start sub_8093DE8 -sub_8093DE8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _08093E80 - add sp, r4 - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - mov r8, r3 - adds r0, r5, 0 - bl sub_80073B8 - ldr r0, _08093E84 - adds r1, r6, 0 - movs r2, 0 - bl sub_80928C0 - lsls r4, 3 - adds r4, 0x10 - ldr r2, _08093E88 - movs r7, 0 - str r7, [sp] - adds r0, r4, 0 - movs r1, 0 - adds r3, r5, 0 - bl xxx_format_and_draw - movs r3, 0x13 - ldrh r1, [r6, 0x2] - ldr r4, _08093E8C - ldr r2, [r4] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r2, [r0, 0x1C] - ldrb r0, [r2] - cmp r0, 0x2A - bne _08093E3A - movs r3, 0x10 - adds r2, 0x1 -_08093E3A: - str r7, [sp] - movs r0, 0x4 - adds r1, r3, 0 - adds r3, r5, 0 - bl xxx_format_and_draw - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8093E90 - adds r0, r5, 0 - bl sub_80073E0 - ldrh r1, [r6, 0x2] - ldr r2, [r4] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, [r0, 0x1C] - add r0, sp, 0x4 - bl strcpy - add r0, sp, 0x4 - mov r1, r8 - bl sub_8097DF0 - movs r3, 0xC9 - lsls r3, 2 - add sp, r3 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08093E80: .4byte 0xfffffcdc -_08093E84: .4byte gAvailablePokemonNames -_08093E88: .4byte gUnknown_8109930 -_08093E8C: .4byte gMovesData - thumb_func_end sub_8093DE8 - - thumb_func_start sub_8093E90 -sub_8093E90: - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - movs r0, 0x7 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x48 - movs r3, 0xC8 - bl sub_80078A4 - ldr r0, _08093F00 - adds r1, r6, 0 - bl sub_8092D54 - ldr r0, _08093F04 - ldr r2, [r0] - movs r4, 0 - str r4, [sp] - movs r0, 0x4 - movs r1, 0x4A - adds r3, r5, 0 - bl xxx_format_and_draw - ldr r0, _08093F08 - ldr r2, [r0] - str r4, [sp] - movs r0, 0x4 - movs r1, 0x56 - adds r3, r5, 0 - bl xxx_format_and_draw - adds r0, r6, 0 - bl GetMoveType - lsls r0, 24 - lsrs r0, 24 - bl GetUnformattedTypeString - adds r2, r0, 0 - str r4, [sp] - movs r0, 0x40 - movs r1, 0x56 - adds r3, r5, 0 - bl xxx_format_and_draw - adds r0, r6, 0 - bl GetMovePower - ldr r1, _08093F0C - str r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08093F00: .4byte gAvailablePokemonNames -_08093F04: .4byte gUnknown_810CF00 -_08093F08: .4byte gPtrTypeText -_08093F0C: .4byte gUnknown_202DE30 - thumb_func_end sub_8093E90 - - thumb_func_start sub_8093F10 -sub_8093F10: - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093F48 - movs r0, 0 - strb r1, [r3] - strb r0, [r3, 0x1] - ldrh r0, [r4, 0x2] - strh r0, [r3, 0x2] - ldrh r1, [r4, 0x2] - ldr r0, _08093F44 - ldr r2, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0xC] - strb r0, [r3, 0x4] - ldrb r0, [r4, 0x4] - strb r0, [r3, 0x5] - b _08093F4A - .align 2, 0 -_08093F44: .4byte gMovesData -_08093F48: - strb r0, [r3] -_08093F4A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8093F10 - - thumb_func_start sub_8093F50 -sub_8093F50: - push {r4-r7,lr} - adds r6, r0, 0 - movs r7, 0 - adds r3, r6, 0 - adds r4, r1, 0 - movs r5, 0x3 -_08093F5C: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08093F8C - strb r1, [r3] - strb r7, [r3, 0x1] - ldrh r0, [r4, 0x2] - strh r0, [r3, 0x2] - ldrh r1, [r4, 0x2] - ldr r0, _08093F88 - ldr r2, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0xC] - strb r0, [r3, 0x4] - ldrb r0, [r4, 0x4] - strb r0, [r3, 0x5] - b _08093F8E - .align 2, 0 -_08093F88: .4byte gMovesData -_08093F8C: - strb r0, [r3] -_08093F8E: - adds r3, 0x8 - adds r4, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _08093F5C - adds r1, r6, 0 - adds r1, 0x20 - movs r0, 0 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093F50 - - thumb_func_start sub_8093FA8 -sub_8093FA8: - push {lr} - adds r2, r0, 0 - movs r3, 0x3 -_08093FAE: - ldrb r0, [r1] - strb r0, [r2] - ldrh r0, [r1, 0x2] - strh r0, [r2, 0x2] - ldrb r0, [r1, 0x5] - strb r0, [r2, 0x4] - adds r2, 0x8 - adds r1, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08093FAE - pop {r0} - bx r0 - thumb_func_end sub_8093FA8 - - thumb_func_start sub_8093FC8 -sub_8093FC8: - push {r4-r7,lr} - adds r5, r0, 0 - adds r2, r1, 0 - movs r3, 0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094002 - movs r7, 0xFB - movs r6, 0x1 - adds r4, r2, 0 - adds r2, r5, 0 -_08093FE2: - ldm r4!, {r0,r1} - str r0, [r2] - str r1, [r2, 0x4] - ldrb r1, [r2, 0x1] - adds r0, r7, 0 - ands r0, r1 - strb r0, [r2, 0x1] - adds r2, 0x8 - adds r3, 0x1 - cmp r3, 0x3 - bgt _08094002 - ldrb r1, [r4] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _08093FE2 -_08094002: - cmp r3, 0x7 - bgt _08094016 - movs r1, 0 - lsls r0, r3, 3 - adds r0, r5 -_0809400C: - strb r1, [r0] - adds r0, 0x8 - adds r3, 0x1 - cmp r3, 0x7 - ble _0809400C -_08094016: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8093FC8 - - thumb_func_start sub_809401C -sub_809401C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r3, r1, 0 - movs r2, 0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094046 - movs r6, 0x1 - adds r4, r5, 0 -_08094032: - ldm r3!, {r0,r1} - stm r4!, {r0,r1} - adds r2, 0x1 - cmp r2, 0x3 - bgt _08094046 - ldrb r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _08094032 -_08094046: - cmp r2, 0x7 - bgt _0809405A - movs r1, 0 - lsls r0, r2, 3 - adds r0, r5 -_08094050: - strb r1, [r0] - adds r0, 0x8 - adds r2, 0x1 - cmp r2, 0x7 - ble _08094050 -_0809405A: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809401C - - thumb_func_start sub_8094060 -sub_8094060: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - movs r4, 0 - movs r5, 0 - adds r3, r6, 0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094084 -_08094076: - lsls r2, r4, 3 - adds r2, r7, r2 - ldr r0, [r3] - ldr r1, [r3, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - adds r4, 0x1 -_08094084: - adds r5, 0x1 - cmp r5, 0x7 - bgt _0809409C - lsls r0, r5, 3 - adds r3, r6, r0 - ldrb r1, [r3] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08094084 - cmp r4, 0x3 - ble _08094076 -_0809409C: - cmp r4, 0x3 - bgt _080940B0 - movs r1, 0 - lsls r0, r4, 3 - adds r0, r7 -_080940A6: - strb r1, [r0] - adds r0, 0x8 - adds r4, 0x1 - cmp r4, 0x3 - ble _080940A6 -_080940B0: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8094060 .align 2,0 diff --git a/asm/moves_2.s b/asm/moves_2.s new file mode 100644 index 000000000..7541a386a --- /dev/null +++ b/asm/moves_2.s @@ -0,0 +1,1782 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8093468 +sub_8093468: + push {r4-r7,lr} + adds r6, r1, 0 + movs r5, 0 + adds r1, r0, 0x1 + movs r4, 0 + cmp r1, 0x7 + bgt _080934A0 + movs r0, 0x2 + mov r12, r0 + movs r7, 0xFD + lsls r0, r1, 3 + adds r3, r0, r6 +_08093480: + ldrb r2, [r3] + mov r0, r12 + ands r0, r2 + cmp r0, 0 + beq _080934A0 + adds r0, r7, 0 + ands r0, r2 + strb r0, [r3] + movs r5, 0x1 + adds r3, 0x8 + adds r1, 0x1 + adds r4, 0x1 + cmp r4, 0x7 + bgt _080934A0 + cmp r1, 0x7 + ble _08093480 +_080934A0: + adds r0, r6, 0 + bl sub_809371C + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8093468 + + thumb_func_start sub_80934B0 +sub_80934B0: + push {lr} + adds r2, r0, 0 + adds r0, r2, 0x1 + cmp r0, 0x7 + bgt _080934D2 + lsls r0, r2, 3 + adds r0, 0x8 + adds r0, r1, r0 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080934D2 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080934D6 +_080934D2: + movs r0, 0 + b _080934D8 +_080934D6: + movs r0, 0x1 +_080934D8: + pop {r1} + bx r1 + thumb_func_end sub_80934B0 + + thumb_func_start sub_80934DC +sub_80934DC: + push {r4-r7,lr} + adds r5, r1, 0 + lsls r0, 3 + adds r4, r5, r0 + ldrb r1, [r4] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _080934F4 + movs r0, 0xF7 + ands r0, r1 + b _0809351A +_080934F4: + movs r7, 0x1 + movs r6, 0xF7 + adds r1, r5, 0 + movs r3, 0x3 +_080934FC: + ldrb r2, [r1] + adds r0, r7, 0 + ands r0, r2 + cmp r0, 0 + beq _0809350C + adds r0, r6, 0 + ands r0, r2 + strb r0, [r1] +_0809350C: + adds r1, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _080934FC + ldrb r1, [r4] + movs r0, 0x8 + orrs r0, r1 +_0809351A: + strb r0, [r4] + adds r0, r5, 0 + bl sub_809371C + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80934DC + + thumb_func_start sub_809352C +sub_809352C: + push {lr} + lsls r0, 3 + adds r0, r1, r0 + ldrb r3, [r0] + movs r2, 0xF7 + ands r2, r3 + strb r2, [r0] + adds r0, r1, 0 + bl sub_809371C + pop {r0} + bx r0 + thumb_func_end sub_809352C + + thumb_func_start sub_8093544 +sub_8093544: + push {lr} + lsls r0, 3 + adds r0, r1, r0 + ldrb r2, [r0] + movs r3, 0x4 + eors r2, r3 + strb r2, [r0] + adds r0, r1, 0 + bl sub_809371C + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8093544 + + thumb_func_start sub_8093560 +sub_8093560: + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + movs r5, 0x1 + lsls r0, r4, 3 + adds r0, r6, r0 + ldrh r0, [r0, 0x2] + strh r0, [r2] + movs r1, 0 + adds r0, r2, 0x2 + movs r3, 0x2 +_08093576: + strh r1, [r0] + adds r0, 0x2 + subs r3, 0x1 + cmp r3, 0 + bge _08093576 + adds r4, 0x1 + adds r2, 0x2 + cmp r4, 0x7 + bgt _080935B0 + cmp r5, 0x3 + bgt _080935B0 + movs r7, 0x2 + lsls r0, r4, 3 + adds r3, r0, r6 +_08093592: + ldrb r1, [r3] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _080935B0 + ldrh r0, [r3, 0x2] + strh r0, [r2] + adds r2, 0x2 + adds r5, 0x1 + adds r3, 0x8 + adds r4, 0x1 + cmp r4, 0x7 + bgt _080935B0 + cmp r5, 0x3 + ble _08093592 +_080935B0: + adds r0, r5, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8093560 + + thumb_func_start sub_80935B8 +sub_80935B8: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + movs r0, 0x63 + mov r12, r0 + movs r0, 0 + mov r8, r0 + movs r6, 0 + adds r4, r1, 0 + cmp r4, 0 + blt _08093606 + lsls r0, r4, 3 + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093606 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08093606 + movs r7, 0x1 + movs r3, 0x2 +_080935EC: + subs r2, 0x8 + subs r4, 0x1 + cmp r4, 0 + blt _08093606 + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08093606 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080935EC +_08093606: + adds r2, r4, 0x1 + mov r9, r2 + cmp r2, 0x3 + bgt _08093642 + lsls r0, r2, 3 + adds r3, r5, r0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093642 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08093642 + movs r6, 0x1 + movs r7, 0x2 +_08093628: + adds r3, 0x8 + adds r2, 0x1 + cmp r2, 0x3 + bgt _08093642 + ldrb r1, [r3] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _08093642 + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _08093628 +_08093642: + cmp r6, 0 + bne _0809364A + movs r0, 0x63 + b _080936CC +_0809364A: + movs r6, 0 + b _08093668 +_0809364E: + ldrb r0, [r3, 0x4] + cmp r12, r0 + ble _08093656 + mov r12, r0 +_08093656: + cmp r0, 0 + bne _0809365C + movs r6, 0x1 +_0809365C: + ldrb r1, [r3, 0x1] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _08093668 + movs r6, 0x1 +_08093668: + subs r2, 0x1 + cmp r2, r4 + blt _0809367C + lsls r0, r2, 3 + adds r3, r5, r0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0809364E +_0809367C: + cmp r6, 0 + beq _080936C6 + mov r2, r9 + cmp r2, 0x3 + bgt _080936C0 + lsls r0, r2, 3 + adds r3, r5, r0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080936C0 + movs r6, 0x2 + movs r4, 0xFD +_08093698: + ldrb r1, [r3] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _080936C0 + adds r0, r4, 0 + ands r0, r1 + strb r0, [r3] + movs r0, 0x1 + mov r8, r0 + adds r2, 0x1 + cmp r2, 0x3 + bgt _080936C0 + lsls r0, r2, 3 + adds r3, r5, r0 + ldrb r1, [r3] + mov r0, r8 + ands r0, r1 + cmp r0, 0 + bne _08093698 +_080936C0: + mov r0, r8 + cmp r0, 0 + bne _080936CA +_080936C6: + mov r0, r12 + b _080936CC +_080936CA: + movs r0, 0 +_080936CC: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80935B8 + + thumb_func_start sub_80936D8 +sub_80936D8: + push {r4,lr} + sub sp, 0x80 + adds r4, r0, 0 + mov r1, sp + bl sub_8093784 + adds r0, r4, 0 + mov r1, sp + bl sub_80937E0 + add sp, 0x80 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80936D8 + + thumb_func_start sub_80936F4 +sub_80936F4: + push {r4,lr} + ldr r4, _08093718 + add sp, r4 + adds r4, r0, 0 + mov r1, sp + bl sub_8093974 + adds r0, r4, 0 + mov r1, sp + bl sub_8093A2C + movs r3, 0x80 + lsls r3, 2 + add sp, r3 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08093718: .4byte 0xfffffe00 + thumb_func_end sub_80936F4 + + thumb_func_start sub_809371C +sub_809371C: + push {r4,lr} + ldr r4, _08093740 + add sp, r4 + adds r4, r0, 0 + mov r1, sp + bl sub_80939D0 + adds r0, r4, 0 + mov r1, sp + bl sub_8093B40 + movs r3, 0x80 + lsls r3, 2 + add sp, r3 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08093740: .4byte 0xfffffe00 + thumb_func_end sub_809371C + + thumb_func_start sub_8093744 +sub_8093744: + push {r4-r7,lr} + adds r7, r0, 0 + movs r4, 0 + movs r6, 0x1 + movs r5, 0x80 +_0809374E: + movs r3, 0 + lsls r0, r4, 5 + adds r2, r0, r7 +_08093754: + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0809376A + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0809376A + adds r0, r4, 0 + b _0809377C +_0809376A: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x3 + ble _08093754 + adds r4, 0x1 + cmp r4, 0x3 + ble _0809374E + movs r0, 0x1 + negs r0, r0 +_0809377C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8093744 + + thumb_func_start sub_8093784 +sub_8093784: + push {r4-r7,lr} + adds r6, r0, 0 + movs r2, 0 + movs r4, 0 +_0809378C: + lsls r0, r2, 5 + adds r2, 0x1 + movs r3, 0x3 + adds r0, r1 + adds r0, 0x18 +_08093796: + strb r4, [r0] + subs r0, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08093796 + cmp r2, 0x3 + ble _0809378C + movs r3, 0 + movs r5, 0 + adds r4, r1, 0 + subs r4, 0x20 + movs r7, 0x2 +_080937AE: + cmp r5, 0 + beq _080937BC + ldrb r1, [r6] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080937C0 +_080937BC: + adds r4, 0x20 + movs r3, 0 +_080937C0: + lsls r2, r3, 3 + adds r2, r4 + ldm r6!, {r0,r1} + str r0, [r2] + str r1, [r2, 0x4] + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + strb r0, [r2] + adds r3, 0x1 + adds r5, 0x1 + cmp r5, 0x3 + ble _080937AE + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093784 + + thumb_func_start sub_80937E0 +sub_80937E0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + str r0, [sp, 0x8] + mov r9, r1 + movs r0, 0 + mov r8, r0 + movs r6, 0 + add r1, sp, 0x4 + mov r10, r1 + mov r12, r6 + movs r3, 0x1 +_080937FE: + mov r2, sp + adds r0, r2, r6 + mov r7, r12 + strb r7, [r0] + mov r1, sp + adds r1, r6 + adds r1, 0x4 + mov r2, r12 + strb r2, [r1] + adds r7, r0, 0 + lsls r0, r6, 5 + adds r6, 0x1 + adds r5, r1, 0 + mov r1, r9 + adds r2, r0, r1 + movs r4, 0x3 +_0809381E: + ldrb r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _0809383E + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08093832 + strb r3, [r7] +_08093832: + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _0809383E + strb r3, [r5] +_0809383E: + adds r2, 0x8 + subs r4, 0x1 + cmp r4, 0 + bge _0809381E + cmp r6, 0x3 + ble _080937FE + movs r6, 0 + mov r2, r8 + lsls r2, 3 + str r2, [sp, 0xC] +_08093852: + movs r4, 0 + lsls r0, r6, 5 + mov r7, r9 + adds r5, r0, r7 + ldr r0, [sp, 0xC] + ldr r1, [sp, 0x8] + adds r2, r0, r1 + mov r7, r10 + adds r7, r6 + mov r12, r7 +_08093866: + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _080938D6 + ldr r0, [r5] + ldr r1, [r5, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + cmp r4, 0 + bne _08093884 + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + b _0809388A +_08093884: + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 +_0809388A: + strb r0, [r2] + ldrb r0, [r2] + movs r3, 0xF7 + ands r3, r0 + movs r1, 0 + movs r0, 0xFB + ands r3, r0 + strb r3, [r2] + mov r7, sp + adds r0, r7, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _080938B0 + cmp r4, 0 + bne _080938B0 + movs r1, 0x8 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_080938B0: + mov r1, r12 + ldrb r0, [r1] + cmp r0, 0 + beq _080938C4 + cmp r4, 0 + bne _080938C4 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_080938C4: + adds r2, 0x8 + ldr r7, [sp, 0xC] + adds r7, 0x8 + str r7, [sp, 0xC] + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x4 + beq _080938E4 +_080938D6: + adds r5, 0x8 + adds r4, 0x1 + cmp r4, 0x3 + ble _08093866 + adds r6, 0x1 + cmp r6, 0x3 + ble _08093852 +_080938E4: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80937E0 + + thumb_func_start sub_80938F4 +sub_80938F4: + push {r4-r7,lr} + adds r7, r0, 0 + movs r4, 0 + movs r6, 0x1 + movs r5, 0x80 +_080938FE: + movs r3, 0 + lsls r0, r4, 6 + adds r2, r0, r7 +_08093904: + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0809391A + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0809391A + adds r0, r4, 0 + b _0809392C +_0809391A: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x7 + ble _08093904 + adds r4, 0x1 + cmp r4, 0x7 + ble _080938FE + movs r0, 0x1 + negs r0, r0 +_0809392C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80938F4 + + thumb_func_start sub_8093934 +sub_8093934: + push {r4-r7,lr} + adds r7, r0, 0 + movs r4, 0 + movs r6, 0x1 + movs r5, 0x80 +_0809393E: + movs r3, 0 + lsls r0, r4, 6 + adds r2, r0, r7 +_08093944: + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0809395A + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0809395A + adds r0, r4, 0 + b _0809396C +_0809395A: + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x7 + ble _08093944 + adds r4, 0x1 + cmp r4, 0x7 + ble _0809393E + movs r0, 0x1 + negs r0, r0 +_0809396C: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8093934 + + thumb_func_start sub_8093974 +sub_8093974: + push {r4-r7,lr} + adds r6, r0, 0 + movs r2, 0 + movs r4, 0 +_0809397C: + lsls r0, r2, 6 + adds r2, 0x1 + movs r3, 0x7 + adds r0, r1 + adds r0, 0x38 +_08093986: + strb r4, [r0] + subs r0, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08093986 + cmp r2, 0x7 + ble _0809397C + movs r3, 0 + movs r5, 0 + adds r4, r1, 0 + subs r4, 0x40 + movs r7, 0x2 +_0809399E: + cmp r5, 0 + beq _080939AC + ldrb r1, [r6] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _080939B0 +_080939AC: + adds r4, 0x40 + movs r3, 0 +_080939B0: + lsls r2, r3, 3 + adds r2, r4 + ldm r6!, {r0,r1} + str r0, [r2] + str r1, [r2, 0x4] + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + strb r0, [r2] + adds r3, 0x1 + adds r5, 0x1 + cmp r5, 0x7 + ble _0809399E + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093974 + + thumb_func_start sub_80939D0 +sub_80939D0: + push {r4-r7,lr} + adds r6, r0, 0 + movs r2, 0 + movs r4, 0 +_080939D8: + lsls r0, r2, 6 + adds r2, 0x1 + movs r3, 0x7 + adds r0, r1 + adds r0, 0x38 +_080939E2: + strb r4, [r0] + subs r0, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _080939E2 + cmp r2, 0x7 + ble _080939D8 + movs r3, 0 + movs r5, 0 + adds r4, r1, 0 + subs r4, 0x40 + movs r7, 0x2 +_080939FA: + cmp r5, 0 + beq _08093A08 + ldrb r1, [r6] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + bne _08093A0C +_08093A08: + adds r4, 0x40 + movs r3, 0 +_08093A0C: + lsls r2, r3, 3 + adds r2, r4 + ldm r6!, {r0,r1} + str r0, [r2] + str r1, [r2, 0x4] + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + strb r0, [r2] + adds r3, 0x1 + adds r5, 0x1 + cmp r5, 0x7 + ble _080939FA + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80939D0 + + thumb_func_start sub_8093A2C +sub_8093A2C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + str r0, [sp, 0x10] + mov r9, r1 + movs r0, 0 + mov r8, r0 + movs r6, 0 + add r1, sp, 0x8 + mov r10, r1 + mov r12, r6 + movs r3, 0x1 +_08093A4A: + mov r2, sp + adds r0, r2, r6 + mov r7, r12 + strb r7, [r0] + mov r1, sp + adds r1, r6 + adds r1, 0x8 + mov r2, r12 + strb r2, [r1] + adds r7, r0, 0 + lsls r0, r6, 6 + adds r6, 0x1 + adds r5, r1, 0 + mov r1, r9 + adds r2, r0, r1 + movs r4, 0x7 +_08093A6A: + ldrb r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08093A8A + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08093A7E + strb r3, [r7] +_08093A7E: + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08093A8A + strb r3, [r5] +_08093A8A: + adds r2, 0x8 + subs r4, 0x1 + cmp r4, 0 + bge _08093A6A + cmp r6, 0x7 + ble _08093A4A + movs r6, 0 + mov r2, r8 + lsls r2, 3 + str r2, [sp, 0x14] +_08093A9E: + movs r4, 0 + lsls r0, r6, 6 + mov r7, r9 + adds r5, r0, r7 + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x10] + adds r2, r0, r1 + mov r7, r10 + adds r7, r6 + mov r12, r7 +_08093AB2: + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093B22 + ldr r0, [r5] + ldr r1, [r5, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + cmp r4, 0 + bne _08093AD0 + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + b _08093AD6 +_08093AD0: + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 +_08093AD6: + strb r0, [r2] + ldrb r0, [r2] + movs r3, 0xF7 + ands r3, r0 + movs r1, 0 + movs r0, 0xFB + ands r3, r0 + strb r3, [r2] + mov r7, sp + adds r0, r7, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _08093AFC + cmp r4, 0 + bne _08093AFC + movs r1, 0x8 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_08093AFC: + mov r1, r12 + ldrb r0, [r1] + cmp r0, 0 + beq _08093B10 + cmp r4, 0 + bne _08093B10 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_08093B10: + adds r2, 0x8 + ldr r7, [sp, 0x14] + adds r7, 0x8 + str r7, [sp, 0x14] + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x8 + beq _08093B30 +_08093B22: + adds r5, 0x8 + adds r4, 0x1 + cmp r4, 0x7 + ble _08093AB2 + adds r6, 0x1 + cmp r6, 0x7 + ble _08093A9E +_08093B30: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093A2C + + thumb_func_start sub_8093B40 +sub_8093B40: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + str r0, [sp, 0x10] + mov r9, r1 + movs r0, 0 + mov r8, r0 + movs r6, 0 + add r1, sp, 0x8 + mov r10, r1 + mov r12, r6 + movs r3, 0x1 +_08093B5E: + mov r2, sp + adds r0, r2, r6 + mov r7, r12 + strb r7, [r0] + mov r1, sp + adds r1, r6 + adds r1, 0x8 + mov r2, r12 + strb r2, [r1] + adds r7, r0, 0 + lsls r0, r6, 6 + adds r6, 0x1 + adds r5, r1, 0 + mov r1, r9 + adds r2, r0, r1 + movs r4, 0x7 +_08093B7E: + ldrb r1, [r2] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08093B9E + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08093B92 + strb r3, [r7] +_08093B92: + ldrb r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08093B9E + strb r3, [r5] +_08093B9E: + adds r2, 0x8 + subs r4, 0x1 + cmp r4, 0 + bge _08093B7E + cmp r6, 0x7 + ble _08093B5E + movs r6, 0 + mov r2, r8 + lsls r2, 3 + str r2, [sp, 0x14] +_08093BB2: + movs r4, 0 + lsls r0, r6, 6 + mov r7, r9 + adds r5, r0, r7 + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x10] + adds r2, r0, r1 + mov r7, r10 + adds r7, r6 + mov r12, r7 +_08093BC6: + ldrb r1, [r5] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093C36 + ldr r0, [r5] + ldr r1, [r5, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + cmp r4, 0 + bne _08093BE4 + ldrb r1, [r2] + movs r0, 0xFD + ands r0, r1 + b _08093BEA +_08093BE4: + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 +_08093BEA: + strb r0, [r2] + ldrb r0, [r2] + movs r3, 0xF7 + ands r3, r0 + movs r1, 0 + movs r0, 0xFB + ands r3, r0 + strb r3, [r2] + mov r7, sp + adds r0, r7, r6 + ldrb r0, [r0] + cmp r0, 0 + beq _08093C10 + cmp r4, 0 + bne _08093C10 + movs r1, 0x8 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_08093C10: + mov r1, r12 + ldrb r0, [r1] + cmp r0, 0 + beq _08093C24 + cmp r4, 0 + bne _08093C24 + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_08093C24: + adds r2, 0x8 + ldr r7, [sp, 0x14] + adds r7, 0x8 + str r7, [sp, 0x14] + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x8 + beq _08093C44 +_08093C36: + adds r5, 0x8 + adds r4, 0x1 + cmp r4, 0x7 + ble _08093BC6 + adds r6, 0x1 + cmp r6, 0x7 + ble _08093BB2 +_08093C44: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093B40 + + thumb_func_start sub_8093C54 +sub_8093C54: + push {r4-r7,lr} + sub sp, 0x40 + adds r6, r0, 0 + lsls r0, r1, 3 + adds r0, r6 + movs r2, 0 + strb r2, [r0] + adds r3, r1, 0x1 + cmp r3, 0x7 + bgt _08093CA6 + lsls r0, r3, 3 + adds r4, r6, r0 + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093CA6 + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08093CA6 + mov r12, r2 + movs r7, 0x1 + adds r2, r4, 0 + movs r5, 0x2 +_08093C86: + mov r0, r12 + strb r0, [r4] + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x7 + bgt _08093CA6 + adds r4, r2, 0 + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08093CA6 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08093C86 +_08093CA6: + movs r4, 0 + movs r7, 0x1 + adds r2, r6, 0 + mov r5, sp + movs r3, 0x7 +_08093CB0: + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08093CC2 + ldr r0, [r2] + ldr r1, [r2, 0x4] + stm r5!, {r0,r1} + adds r4, 0x1 +_08093CC2: + adds r2, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08093CB0 + cmp r4, 0x7 + bgt _08093CDE + movs r1, 0 + lsls r0, r4, 3 + add r0, sp +_08093CD4: + strb r1, [r0] + adds r0, 0x8 + adds r4, 0x1 + cmp r4, 0x7 + ble _08093CD4 +_08093CDE: + mov r4, sp + adds r2, r6, 0 + movs r3, 0x7 +_08093CE4: + ldm r4!, {r0,r1} + stm r2!, {r0,r1} + subs r3, 0x1 + cmp r3, 0 + bge _08093CE4 + add sp, 0x40 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093C54 + + thumb_func_start sub_8093CF8 +sub_8093CF8: + push {r4-r7,lr} + sub sp, 0x40 + adds r6, r0, 0 + lsls r0, r1, 3 + adds r0, r6 + movs r2, 0 + strb r2, [r0] + adds r3, r1, 0x1 + cmp r3, 0x7 + bgt _08093D4A + lsls r0, r3, 3 + adds r4, r6, r0 + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093D4A + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08093D4A + mov r12, r2 + movs r7, 0x1 + adds r2, r4, 0 + movs r5, 0x2 +_08093D2A: + mov r0, r12 + strb r0, [r4] + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x7 + bgt _08093D4A + adds r4, r2, 0 + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08093D4A + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + bne _08093D2A +_08093D4A: + movs r4, 0 + movs r7, 0x1 + adds r2, r6, 0 + mov r5, sp + movs r3, 0x7 +_08093D54: + ldrb r1, [r2] + adds r0, r7, 0 + ands r0, r1 + cmp r0, 0 + beq _08093D66 + ldr r0, [r2] + ldr r1, [r2, 0x4] + stm r5!, {r0,r1} + adds r4, 0x1 +_08093D66: + adds r2, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08093D54 + cmp r4, 0x7 + bgt _08093D82 + movs r1, 0 + lsls r0, r4, 3 + add r0, sp +_08093D78: + strb r1, [r0] + adds r0, 0x8 + adds r4, 0x1 + cmp r4, 0x7 + ble _08093D78 +_08093D82: + mov r4, sp + adds r2, r6, 0 + movs r3, 0x7 +_08093D88: + ldm r4!, {r0,r1} + stm r2!, {r0,r1} + subs r3, 0x1 + cmp r3, 0 + bge _08093D88 + add sp, 0x40 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093CF8 + + thumb_func_start sub_8093D9C +sub_8093D9C: + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r1, 16 + lsrs r1, 16 + mov r0, sp + bl InitPokemonMove + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8093DE8 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8093D9C + + thumb_func_start sub_8093DC4 +sub_8093DC4: + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r2, 0 + adds r6, r3, 0 + mov r0, sp + bl sub_8093F10 + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8093DE8 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8093DC4 + + thumb_func_start sub_8093DE8 +sub_8093DE8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r4, _08093E80 + add sp, r4 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + mov r8, r3 + adds r0, r5, 0 + bl sub_80073B8 + ldr r0, _08093E84 + adds r1, r6, 0 + movs r2, 0 + bl sub_80928C0 + lsls r4, 3 + adds r4, 0x10 + ldr r2, _08093E88 + movs r7, 0 + str r7, [sp] + adds r0, r4, 0 + movs r1, 0 + adds r3, r5, 0 + bl xxx_format_and_draw + movs r3, 0x13 + ldrh r1, [r6, 0x2] + ldr r4, _08093E8C + ldr r2, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r2, [r0, 0x1C] + ldrb r0, [r2] + cmp r0, 0x2A + bne _08093E3A + movs r3, 0x10 + adds r2, 0x1 +_08093E3A: + str r7, [sp] + movs r0, 0x4 + adds r1, r3, 0 + adds r3, r5, 0 + bl xxx_format_and_draw + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_8093E90 + adds r0, r5, 0 + bl sub_80073E0 + ldrh r1, [r6, 0x2] + ldr r2, [r4] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldr r1, [r0, 0x1C] + add r0, sp, 0x4 + bl strcpy + add r0, sp, 0x4 + mov r1, r8 + bl sub_8097DF0 + movs r3, 0xC9 + lsls r3, 2 + add sp, r3 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08093E80: .4byte 0xfffffcdc +_08093E84: .4byte gAvailablePokemonNames +_08093E88: .4byte gUnknown_8109930 +_08093E8C: .4byte gMovesData + thumb_func_end sub_8093DE8 + + thumb_func_start sub_8093E90 +sub_8093E90: + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + movs r0, 0x7 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0x4 + movs r2, 0x48 + movs r3, 0xC8 + bl sub_80078A4 + ldr r0, _08093F00 + adds r1, r6, 0 + bl sub_8092D54 + ldr r0, _08093F04 + ldr r2, [r0] + movs r4, 0 + str r4, [sp] + movs r0, 0x4 + movs r1, 0x4A + adds r3, r5, 0 + bl xxx_format_and_draw + ldr r0, _08093F08 + ldr r2, [r0] + str r4, [sp] + movs r0, 0x4 + movs r1, 0x56 + adds r3, r5, 0 + bl xxx_format_and_draw + adds r0, r6, 0 + bl GetMoveType + lsls r0, 24 + lsrs r0, 24 + bl GetUnformattedTypeString + adds r2, r0, 0 + str r4, [sp] + movs r0, 0x40 + movs r1, 0x56 + adds r3, r5, 0 + bl xxx_format_and_draw + adds r0, r6, 0 + bl GetMovePower + ldr r1, _08093F0C + str r0, [r1] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08093F00: .4byte gAvailablePokemonNames +_08093F04: .4byte gUnknown_810CF00 +_08093F08: .4byte gPtrTypeText +_08093F0C: .4byte gUnknown_202DE30 + thumb_func_end sub_8093E90 + + thumb_func_start sub_8093F10 +sub_8093F10: + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093F48 + movs r0, 0 + strb r1, [r3] + strb r0, [r3, 0x1] + ldrh r0, [r4, 0x2] + strh r0, [r3, 0x2] + ldrh r1, [r4, 0x2] + ldr r0, _08093F44 + ldr r2, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0xC] + strb r0, [r3, 0x4] + ldrb r0, [r4, 0x4] + strb r0, [r3, 0x5] + b _08093F4A + .align 2, 0 +_08093F44: .4byte gMovesData +_08093F48: + strb r0, [r3] +_08093F4A: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8093F10 + + thumb_func_start sub_8093F50 +sub_8093F50: + push {r4-r7,lr} + adds r6, r0, 0 + movs r7, 0 + adds r3, r6, 0 + adds r4, r1, 0 + movs r5, 0x3 +_08093F5C: + ldrb r1, [r4] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08093F8C + strb r1, [r3] + strb r7, [r3, 0x1] + ldrh r0, [r4, 0x2] + strh r0, [r3, 0x2] + ldrh r1, [r4, 0x2] + ldr r0, _08093F88 + ldr r2, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0xC] + strb r0, [r3, 0x4] + ldrb r0, [r4, 0x4] + strb r0, [r3, 0x5] + b _08093F8E + .align 2, 0 +_08093F88: .4byte gMovesData +_08093F8C: + strb r0, [r3] +_08093F8E: + adds r3, 0x8 + adds r4, 0x8 + subs r5, 0x1 + cmp r5, 0 + bge _08093F5C + adds r1, r6, 0 + adds r1, 0x20 + movs r0, 0 + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093F50 + + thumb_func_start sub_8093FA8 +sub_8093FA8: + push {lr} + adds r2, r0, 0 + movs r3, 0x3 +_08093FAE: + ldrb r0, [r1] + strb r0, [r2] + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x2] + ldrb r0, [r1, 0x5] + strb r0, [r2, 0x4] + adds r2, 0x8 + adds r1, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08093FAE + pop {r0} + bx r0 + thumb_func_end sub_8093FA8 + + thumb_func_start sub_8093FC8 +sub_8093FC8: + push {r4-r7,lr} + adds r5, r0, 0 + adds r2, r1, 0 + movs r3, 0 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094002 + movs r7, 0xFB + movs r6, 0x1 + adds r4, r2, 0 + adds r2, r5, 0 +_08093FE2: + ldm r4!, {r0,r1} + str r0, [r2] + str r1, [r2, 0x4] + ldrb r1, [r2, 0x1] + adds r0, r7, 0 + ands r0, r1 + strb r0, [r2, 0x1] + adds r2, 0x8 + adds r3, 0x1 + cmp r3, 0x3 + bgt _08094002 + ldrb r1, [r4] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _08093FE2 +_08094002: + cmp r3, 0x7 + bgt _08094016 + movs r1, 0 + lsls r0, r3, 3 + adds r0, r5 +_0809400C: + strb r1, [r0] + adds r0, 0x8 + adds r3, 0x1 + cmp r3, 0x7 + ble _0809400C +_08094016: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8093FC8 + + thumb_func_start sub_809401C +sub_809401C: + push {r4-r6,lr} + adds r5, r0, 0 + adds r3, r1, 0 + movs r2, 0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094046 + movs r6, 0x1 + adds r4, r5, 0 +_08094032: + ldm r3!, {r0,r1} + stm r4!, {r0,r1} + adds r2, 0x1 + cmp r2, 0x3 + bgt _08094046 + ldrb r1, [r3] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + bne _08094032 +_08094046: + cmp r2, 0x7 + bgt _0809405A + movs r1, 0 + lsls r0, r2, 3 + adds r0, r5 +_08094050: + strb r1, [r0] + adds r0, 0x8 + adds r2, 0x1 + cmp r2, 0x7 + ble _08094050 +_0809405A: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_809401C + + thumb_func_start sub_8094060 +sub_8094060: + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + movs r4, 0 + movs r5, 0 + adds r3, r6, 0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094084 +_08094076: + lsls r2, r4, 3 + adds r2, r7, r2 + ldr r0, [r3] + ldr r1, [r3, 0x4] + str r0, [r2] + str r1, [r2, 0x4] + adds r4, 0x1 +_08094084: + adds r5, 0x1 + cmp r5, 0x7 + bgt _0809409C + lsls r0, r5, 3 + adds r3, r6, r0 + ldrb r1, [r3] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08094084 + cmp r4, 0x3 + ble _08094076 +_0809409C: + cmp r4, 0x3 + bgt _080940B0 + movs r1, 0 + lsls r0, r4, 3 + adds r0, r7 +_080940A6: + strb r1, [r0] + adds r0, 0x8 + adds r4, 0x1 + cmp r4, 0x3 + ble _080940A6 +_080940B0: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8094060 + + .align 2,0 diff --git a/include/global.h b/include/global.h index 5c7100996..c42962c5c 100644 --- a/include/global.h +++ b/include/global.h @@ -35,6 +35,7 @@ struct DungeonLocation { u8 dungeonIndex; u8 dungeonFloor; + s16 unk3; // this has to be there because it would not be padded enough for some array }; #endif // GUARD_GLOBAL_H diff --git a/ld_script.txt b/ld_script.txt index 2ddeeb517..c1007521a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -305,6 +305,8 @@ SECTIONS { src/moves.o(.text); asm/moves_1.o(.text); src/moves_1.o(.text); + asm/moves_2.o(.text); + src/moves_2.o(.text); asm/code_8094148.o(.text); src/number_util.o(.text); src/code_809447C.o(.text); diff --git a/src/dungeon_2.c b/src/dungeon_2.c index 8308e340e..bd5c4a61a 100644 --- a/src/dungeon_2.c +++ b/src/dungeon_2.c @@ -8,9 +8,24 @@ extern const char gUnknown_8108F10[]; extern const char gUnknown_8108F18[]; extern const char gUnknown_8108F2C[]; +extern struct DungeonLocation gUnknown_8107828[]; extern u8 gDungeonFloorCount[]; extern u8 gUnknown_81077E8[]; +// this one just does not want to get right +// int sub_809017C(int a1) { +// struct DungeonLocation location; +// int i; +// sub_80901D8(&location, a1); +// for (i = 0; i < 999 && gUnknown_8107828[i].dungeonIndex != 63; ++i) { +// if (location.dungeonIndex == gUnknown_8107828[i].dungeonIndex && +// location.dungeonFloor == gUnknown_8107828[i].dungeonFloor) { +// return 1; +// } +// } +// return 0; +// } + void sub_80901D8(struct DungeonLocation *param_1,struct DungeonLocation *param_2) { if ((u8)(param_2->dungeonIndex - DUNGEON_NORMAL_MAZE_2) < NUM_DUNGEON_MAZE) { diff --git a/src/moves.c b/src/moves.c index 6c1cd6e5d..61a5c4f2d 100644 --- a/src/moves.c +++ b/src/moves.c @@ -333,3 +333,30 @@ void sub_8092D54(u8 *buffer, struct PokemonMove *move) { sprintf_2(buffer, gUnknown_810992C, gRangeNames[GetMoveRangeType(move)]); } + + +// really close +// int sub_8092D80(struct PokemonMove *movePtr, int index) +// { +// register struct PokemonMove *currentMove asm("r1"); +// int i; // r5 + +// i = 0; +// currentMove = &movePtr[index]; +// do +// { +// unsigned int flags; // r2 + +// ++currentMove; +// if (++index == 4) +// break; + +// flags = currentMove->moveFlags; +// if ((1 & flags) == 0) +// break; +// if ((1 & (flags >> 1)) == 0) +// return index; +// } +// while (++i <= 3); +// return 0; +// } \ No newline at end of file diff --git a/src/moves_1.c b/src/moves_1.c index b3127474e..c0402b571 100644 --- a/src/moves_1.c +++ b/src/moves_1.c @@ -1,100 +1,108 @@ #include "global.h" #include "code_8092334.h" +#include "memory.h" #include "moves.h" #include "pokemon.h" -void SavePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move) -{ - SaveIntegerBits(r0, &move->moveFlags, 4); - SaveIntegerBits(r0, &move->moveID, 9); - SaveIntegerBits(r0, &move->PP, 7); -} +u8 sub_8093468(int param_1, void* src_struct); +u8 sub_8093400(int param_1, struct PokemonMove* src_struct); +u8 sub_80933D8(int param_1, void* src_struct); +bool8 DoesMoveCharge(u16 move); +void sub_809371C(struct PokemonMove*); -void RestorePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move) +int sub_80932E0(int index, struct PokemonMove* struct_ptr) { - RestoreIntegerBits(r0, &move->moveFlags, 4); - RestoreIntegerBits(r0, &move->moveID, 9); - RestoreIntegerBits(r0, &move->PP, 7); -} - -void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet) -{ - s32 iVar4; - for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) - { - SavePokemonMove(r0, &moveSet[iVar4]); + if ((struct_ptr[index].moveFlags & 8) != 0) { + return 1; } + return 0; } -void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet) +int sub_80932FC(int index, struct PokemonMove* struct_ptr) { - s32 iVar4; - for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) - { - RestorePokemonMove(r0, &moveSet[iVar4]); + if ((struct_ptr[index].moveFlags & 4) != 0) { + return 1; } + return 0; } -void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move) +int sub_8093318(int param_1, void* src_struct) { - SaveIntegerBits(r0, &move->moveFlags, 4); - SaveIntegerBits(r0, &move->moveFlags2, 1); - SaveIntegerBits(r0, &move->moveID, 9); - SaveIntegerBits(r0, &move->PP, 7); - SaveIntegerBits(r0, &move->powerBoost, 7); + struct PokemonMove dest_struct[8]; + MemoryCopy8((void*)dest_struct, src_struct, 64); + return sub_8093400(param_1, (struct PokemonMove*)dest_struct); } -void sub_8094184(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1) +int sub_809333C(int param_1, void* src_struct) { - s32 r4; + u8 dest_struct[64]; + MemoryCopy8(dest_struct, src_struct, 64); + return sub_8093468(param_1, dest_struct); +} - for(r4 = 0; r4 < MAX_MON_MOVES; r4++) - { - sub_8094148(r0, &r1->moves[r4]); +int sub_8093360(int param_1, void* src_struct) +{ + u8 dest_struct[64]; + MemoryCopy8(dest_struct, src_struct, 64); + return sub_80933D8(param_1, dest_struct); +} + +int sub_8093384(int index, struct PokemonMove* struct_ptr) +{ + if ((struct_ptr[index].moveFlags & 8) != 0) { + return 0; } - SaveIntegerBits(r0, &r1->unk20, 8); + return 1; } -void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move) -{ - memset(move, 0, sizeof(struct PokemonMove)); - RestoreIntegerBits(r0, &move->moveFlags, 4); - RestoreIntegerBits(r0, &move->moveFlags2, 1); - RestoreIntegerBits(r0, &move->moveID, 9); - RestoreIntegerBits(r0, &move->PP, 7); - RestoreIntegerBits(r0, &move->powerBoost, 7); -} +int sub_80933A0(int unused, struct PokemonMove* moves) { + int i; + int counter; -void sub_80941FC(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1) -{ - s32 iVar4; - for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) - { - sub_80941B0(r0, &r1->moves[iVar4]); + counter = 0; + for (i = 0; i < 8; i++) { + if ((moves[i].moveFlags & 1) && !(moves[i].moveFlags & 2)) { + counter++; + } } - r1->unk20 = 0; - RestoreIntegerBits(r0, &r1->unk20, 8); + if (counter > 1) { + return 1; + } + return 0; } -bool8 DoesMoveCharge(u16 move) +u8 sub_80933D8(int param_1, void* src_struct) { - if(move == MOVE_SOLARBEAM) - return TRUE; - if(move == MOVE_SKY_ATTACK) - return TRUE; - if(move == MOVE_RAZOR_WIND) - return TRUE; - if(move == MOVE_FOCUS_PUNCH) - return TRUE; - if(move == MOVE_SKULL_BASH) - return TRUE; - if(move == MOVE_FLY) - return TRUE; - if(move == MOVE_BOUNCE) - return TRUE; - if(move == MOVE_DIVE) - return TRUE; - if(move == MOVE_DIG) - return TRUE; - return FALSE; + int result; // r0 + + if (!sub_8093400(param_1, src_struct)) { + result = sub_8093468(param_1, src_struct); + } + else { + result = 1; + } + return result; +} + +u8 sub_8093400(int index, struct PokemonMove* moves) { + int i; + const struct PokemonMove *move = &moves[index]; + if (DoesMoveCharge(move->moveID)) { + return 0; + } + + for (i = index + 1; i < 8; i++) { + if (!(moves[i].moveFlags & 1)) { + return 0; + } + if (DoesMoveCharge(moves[i].moveID)) { + return 0; + } + if (!(moves[i].moveFlags & 2)) { + moves[i].moveFlags |= 2; + sub_809371C(moves); + return 1; + } + } + return 0; } diff --git a/src/moves_2.c b/src/moves_2.c new file mode 100644 index 000000000..b3127474e --- /dev/null +++ b/src/moves_2.c @@ -0,0 +1,100 @@ +#include "global.h" +#include "code_8092334.h" +#include "moves.h" +#include "pokemon.h" + +void SavePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move) +{ + SaveIntegerBits(r0, &move->moveFlags, 4); + SaveIntegerBits(r0, &move->moveID, 9); + SaveIntegerBits(r0, &move->PP, 7); +} + +void RestorePokemonMove(struct unkStruct_8094924 *r0, struct PokemonMove *move) +{ + RestoreIntegerBits(r0, &move->moveFlags, 4); + RestoreIntegerBits(r0, &move->moveID, 9); + RestoreIntegerBits(r0, &move->PP, 7); +} + +void SavePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet) +{ + s32 iVar4; + for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) + { + SavePokemonMove(r0, &moveSet[iVar4]); + } +} + +void RestorePokemonMoves(struct unkStruct_8094924 *r0, struct PokemonMove *moveSet) +{ + s32 iVar4; + for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) + { + RestorePokemonMove(r0, &moveSet[iVar4]); + } +} + +void sub_8094148(struct unkStruct_8094924 *r0, struct PokemonMove *move) +{ + SaveIntegerBits(r0, &move->moveFlags, 4); + SaveIntegerBits(r0, &move->moveFlags2, 1); + SaveIntegerBits(r0, &move->moveID, 9); + SaveIntegerBits(r0, &move->PP, 7); + SaveIntegerBits(r0, &move->powerBoost, 7); +} + +void sub_8094184(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1) +{ + s32 r4; + + for(r4 = 0; r4 < MAX_MON_MOVES; r4++) + { + sub_8094148(r0, &r1->moves[r4]); + } + SaveIntegerBits(r0, &r1->unk20, 8); +} + +void sub_80941B0(struct unkStruct_8094924 *r0, struct PokemonMove *move) +{ + memset(move, 0, sizeof(struct PokemonMove)); + RestoreIntegerBits(r0, &move->moveFlags, 4); + RestoreIntegerBits(r0, &move->moveFlags2, 1); + RestoreIntegerBits(r0, &move->moveID, 9); + RestoreIntegerBits(r0, &move->PP, 7); + RestoreIntegerBits(r0, &move->powerBoost, 7); +} + +void sub_80941FC(struct unkStruct_8094924 *r0, struct unkStruct_8094184 *r1) +{ + s32 iVar4; + for(iVar4 = 0; iVar4 < MAX_MON_MOVES; iVar4++) + { + sub_80941B0(r0, &r1->moves[iVar4]); + } + r1->unk20 = 0; + RestoreIntegerBits(r0, &r1->unk20, 8); +} + +bool8 DoesMoveCharge(u16 move) +{ + if(move == MOVE_SOLARBEAM) + return TRUE; + if(move == MOVE_SKY_ATTACK) + return TRUE; + if(move == MOVE_RAZOR_WIND) + return TRUE; + if(move == MOVE_FOCUS_PUNCH) + return TRUE; + if(move == MOVE_SKULL_BASH) + return TRUE; + if(move == MOVE_FLY) + return TRUE; + if(move == MOVE_BOUNCE) + return TRUE; + if(move == MOVE_DIVE) + return TRUE; + if(move == MOVE_DIG) + return TRUE; + return FALSE; +}