diff --git a/asm/code_800D090.s b/asm/code_800D090.s deleted file mode 100644 index a6f1c4b42..000000000 --- a/asm/code_800D090.s +++ /dev/null @@ -1,1088 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_800D224 -sub_800D224: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - str r0, [sp] - movs r6, 0 - ldr r0, _0800D280 - mov r12, r0 - ldr r1, _0800D284 - mov r10, r1 - movs r2, 0x2 - mov r9, r2 -_0800D240: - ldr r1, [sp] - asrs r1, r6 - movs r0, 0x1 - ands r1, r0 - adds r3, r6, 0x1 - mov r8, r3 - cmp r1, 0 - beq _0800D2CE - lsls r0, r6, 2 - ldr r1, _0800D288 - adds r2, r0, r1 - ldr r1, [r2] - adds r5, r0, 0 - cmp r1, 0x1 - bne _0800D2CE - lsls r0, r6, 5 - adds r0, r6 - lsls r0, 3 - ldr r1, _0800D28C - adds r7, r0, r1 - movs r4, 0 - mov r3, r12 - adds r0, r5, r3 - ldr r1, [r0] - mov r3, r10 - ldr r0, [r3] - lsrs r0, 1 - cmp r1, r0 - bcc _0800D290 - mov r0, r9 - str r0, [r2] - b _0800D2C4 - .align 2, 0 -_0800D280: .4byte gUnknown_202DB58 -_0800D284: .4byte gUnknown_202DB74 -_0800D288: .4byte gUnknown_202DB60 -_0800D28C: .4byte gUnknown_202D910 -_0800D290: - mov r1, r12 - adds r0, r5, r1 - ldr r3, [r0] - adds r2, r3, r4 - lsls r2, 1 - adds r2, r7 - lsls r0, r4, 1 - lsls r1, r6, 4 - adds r0, r1 - ldr r1, _0800D2E4 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - adds r4, 0x1 - cmp r4, 0x7 - bhi _0800D2C4 - adds r1, r3, r4 - mov r2, r10 - ldr r0, [r2] - lsrs r0, 1 - cmp r1, r0 - bcc _0800D290 - ldr r3, _0800D2E8 - adds r0, r5, r3 - mov r1, r9 - str r1, [r0] -_0800D2C4: - mov r2, r12 - adds r1, r5, r2 - ldr r0, [r1] - adds r0, 0x8 - str r0, [r1] -_0800D2CE: - mov r6, r8 - cmp r6, 0x1 - ble _0800D240 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800D2E4: .4byte gUnknown_202DB30 -_0800D2E8: .4byte gUnknown_202DB60 - thumb_func_end sub_800D224 - - thumb_func_start sub_800D2EC -sub_800D2EC: - push {r4-r7,lr} - ldr r0, _0800D318 - mov r12, r0 - ldr r3, _0800D31C - adds r7, r3, 0 - ldr r6, _0800D320 - ldr r2, _0800D324 - adds r5, r2, 0 - adds r5, 0xE - ldr r4, _0800D328 -_0800D300: - ldr r0, [r4] - lsrs r0, 1 - ldr r1, [r7] - cmp r1, r0 - bcs _0800D32C - lsls r0, r1, 1 - add r0, r12 - ldrh r0, [r0] - strh r0, [r2] - adds r0, r1, 0x1 - str r0, [r3] - b _0800D32E - .align 2, 0 -_0800D318: .4byte gUnknown_202D808 -_0800D31C: .4byte gUnknown_202DB50 -_0800D320: .4byte 0x0000fcfc -_0800D324: .4byte gUnknown_202DB20 -_0800D328: .4byte gUnknown_202DB74 -_0800D32C: - strh r6, [r2] -_0800D32E: - adds r2, 0x2 - cmp r2, r5 - bls _0800D300 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_800D2EC - - thumb_func_start sub_800D33C -sub_800D33C: - push {r4,r5,lr} - movs r5, 0 - ldr r1, _0800D370 - ldr r4, _0800D374 - ldr r0, [r4] - str r0, [r1] - ldr r0, _0800D378 - ldr r1, _0800D37C - bl sub_800D820 - adds r2, r0, 0 - str r2, [r4] - ldr r1, _0800D380 - ldrb r0, [r1] - cmp r0, 0 - bne _0800D384 - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0800D36A - movs r0, 0x1 - strb r0, [r1] -_0800D36A: - movs r0, 0 - b _0800D40E - .align 2, 0 -_0800D370: .4byte gUnknown_202DB6C -_0800D374: .4byte gUnknown_202DB68 -_0800D378: .4byte gUnknown_202DB20 -_0800D37C: .4byte gUnknown_202DB30 -_0800D380: .4byte gUnknown_202DB70 -_0800D384: - movs r0, 0x80 - lsls r0, 5 - ands r0, r2 - cmp r0, 0 - beq _0800D392 - movs r0, 0x3 - b _0800D40E -_0800D392: - movs r0, 0x80 - lsls r0, 6 - ands r0, r2 - cmp r0, 0 - beq _0800D3A0 - movs r0, 0x4 - b _0800D40E -_0800D3A0: - movs r0, 0x80 - lsls r0, 8 - ands r0, r2 - cmp r0, 0 - beq _0800D3BA - lsls r1, r2, 28 - lsrs r1, 28 - lsls r0, r2, 20 - lsrs r0, 28 - cmp r1, r0 - beq _0800D3BA - movs r0, 0x5 - b _0800D40E -_0800D3BA: - ldr r4, _0800D3F8 - ldr r0, _0800D3FC - ldr r2, [r4] - ldr r0, [r0] - orrs r0, r2 - movs r1, 0xE - ands r0, r1 - cmp r0, 0 - beq _0800D40C - ldr r0, _0800D400 - ldr r1, [r0] - lsls r1, 26 - lsrs r1, 30 - movs r0, 0x1 - lsls r0, r1 - ands r2, r0 - cmp r2, 0 - beq _0800D40C - bl sub_800D1E0 - ldr r0, [r4] - bl sub_800D224 - ldr r0, [r4] - bl sub_800D1C0 - lsls r0, 24 - cmp r0, 0 - beq _0800D404 - movs r0, 0x2 - b _0800D40E - .align 2, 0 -_0800D3F8: .4byte gUnknown_202DB68 -_0800D3FC: .4byte gUnknown_202DB6C -_0800D400: .4byte 0x04000128 -_0800D404: - ldr r0, [r4] - bl sub_800D2EC - movs r5, 0x1 -_0800D40C: - adds r0, r5, 0 -_0800D40E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_800D33C - - thumb_func_start sub_800D414 -sub_800D414: - push {r4,lr} - ldr r0, _0800D468 - movs r4, 0 - str r4, [r0] - ldr r0, _0800D46C - str r4, [r0] - ldr r0, _0800D470 - strb r4, [r0] - ldr r0, _0800D474 - str r4, [r0] - ldr r0, _0800D478 - str r4, [r0] - str r4, [r0, 0x4] - ldr r0, _0800D47C - movs r1, 0x10 - bl MemoryClear16 - ldr r0, _0800D480 - movs r1, 0x20 - bl MemoryClear16 - ldr r0, _0800D484 - str r4, [r0] - ldr r0, _0800D488 - str r4, [r0] - str r4, [r0, 0x4] - ldr r0, _0800D48C - movs r1, 0x84 - lsls r1, 1 - bl MemoryClear16 - ldr r0, _0800D490 - movs r1, 0x84 - lsls r1, 2 - bl MemoryClear16 - bl sub_800D6AC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800D468: .4byte gUnknown_202DB68 -_0800D46C: .4byte gUnknown_202DB6C -_0800D470: .4byte gUnknown_202DB70 -_0800D474: .4byte gUnknown_202DB74 -_0800D478: .4byte gUnknown_202DB60 -_0800D47C: .4byte gUnknown_202DB20 -_0800D480: .4byte gUnknown_202DB30 -_0800D484: .4byte gUnknown_202DB50 -_0800D488: .4byte gUnknown_202DB58 -_0800D48C: .4byte gUnknown_202D808 -_0800D490: .4byte gUnknown_202D910 - thumb_func_end sub_800D414 - - thumb_func_start sub_800D494 -sub_800D494: - push {r4,lr} - ldr r0, _0800D4E4 - movs r4, 0 - str r4, [r0] - ldr r0, _0800D4E8 - str r4, [r0] - ldr r0, _0800D4EC - strb r4, [r0] - ldr r0, _0800D4F0 - str r4, [r0] - ldr r0, _0800D4F4 - str r4, [r0] - str r4, [r0, 0x4] - ldr r0, _0800D4F8 - movs r1, 0x10 - bl MemoryClear16 - ldr r0, _0800D4FC - movs r1, 0x20 - bl MemoryClear16 - ldr r0, _0800D500 - str r4, [r0] - ldr r0, _0800D504 - str r4, [r0] - str r4, [r0, 0x4] - ldr r0, _0800D508 - movs r1, 0x84 - lsls r1, 1 - bl MemoryClear16 - ldr r0, _0800D50C - movs r1, 0x84 - lsls r1, 2 - bl MemoryClear16 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800D4E4: .4byte gUnknown_202DB68 -_0800D4E8: .4byte gUnknown_202DB6C -_0800D4EC: .4byte gUnknown_202DB70 -_0800D4F0: .4byte gUnknown_202DB74 -_0800D4F4: .4byte gUnknown_202DB60 -_0800D4F8: .4byte gUnknown_202DB20 -_0800D4FC: .4byte gUnknown_202DB30 -_0800D500: .4byte gUnknown_202DB50 -_0800D504: .4byte gUnknown_202DB58 -_0800D508: .4byte gUnknown_202D808 -_0800D50C: .4byte gUnknown_202D910 - thumb_func_end sub_800D494 - - thumb_func_start sub_800D510 -sub_800D510: - ldr r1, _0800D51C - movs r2, 0x80 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_0800D51C: .4byte 0x04000134 - thumb_func_end sub_800D510 - - thumb_func_start sub_800D520 -sub_800D520: - push {r4,r5,lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0x1 - strh r0, [r1] - ldr r0, _0800D568 - ldrb r1, [r0] - movs r0, 0x30 - ands r0, r1 - cmp r0, 0 - bne _0800D55C - mov r1, sp - mov r0, sp - ldrh r0, [r0] - subs r0, 0x1 - strh r0, [r1] - ldrh r0, [r1] - ldr r1, _0800D56C - cmp r0, r1 - beq _0800D55C - mov r4, sp - adds r5, r1, 0 -_0800D54C: - bl VBlankIntrWait - ldrh r0, [r4] - subs r0, 0x1 - strh r0, [r4] - ldrh r0, [r4] - cmp r0, r5 - bne _0800D54C -_0800D55C: - bl sub_800D7D0 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800D568: .4byte 0x04000128 -_0800D56C: .4byte 0x0000ffff - thumb_func_end sub_800D520 - - thumb_func_start sub_800D570 -sub_800D570: - push {lr} - bl sub_800D7B8 - pop {r0} - bx r0 - thumb_func_end sub_800D570 - - thumb_func_start sub_800D57C -sub_800D57C: - ldr r0, _0800D584 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0800D584: .4byte gUnknown_202DB70 - thumb_func_end sub_800D57C - - thumb_func_start sub_800D588 -sub_800D588: - ldr r0, _0800D598 - ldr r0, [r0] - movs r1, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - bx lr - .align 2, 0 -_0800D598: .4byte gUnknown_202DB68 - thumb_func_end sub_800D588 - - thumb_func_start sub_800D59C -sub_800D59C: - push {r4-r6,lr} - adds r3, r0, 0 - adds r2, r1, 0 - movs r5, 0 - ldr r6, _0800D5F4 - ldr r4, _0800D5F8 - adds r0, r2, 0x1 - movs r1, 0x2 - negs r1, r1 - ands r0, r1 - adds r0, 0x8 - str r0, [r4] - adds r0, r6, 0x4 - adds r1, r3, 0 - bl CpuCopy - ldr r0, _0800D5FC - strh r0, [r6] - strh r5, [r6, 0x2] - movs r2, 0 - ldr r0, [r4] - lsrs r0, 1 - subs r0, 0x2 - cmp r5, r0 - bcs _0800D5DE - adds r3, r0, 0 - adds r1, r6, 0 -_0800D5D2: - ldrh r0, [r1] - adds r5, r0 - adds r1, 0x2 - adds r2, 0x1 - cmp r2, r3 - bcc _0800D5D2 -_0800D5DE: - ldr r2, _0800D5F4 - mvns r1, r5 - ldr r0, _0800D5F8 - ldr r0, [r0] - lsrs r0, 1 - subs r1, r0 - strh r1, [r2, 0x2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800D5F4: .4byte gUnknown_202D808 -_0800D5F8: .4byte gUnknown_202DB74 -_0800D5FC: .4byte 0x0000fdfd - thumb_func_end sub_800D59C - - thumb_func_start sub_800D600 -sub_800D600: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, _0800D64C - mov r8, r0 - ldr r7, _0800D650 - ldr r0, [r7] - lsrs r0, 1 - subs r0, 0x2 - mov r12, r0 - movs r5, 0 -_0800D618: - movs r4, 0 - mov r2, r8 - adds r1, r5, r2 - movs r3, 0 - cmp r4, r12 - bcs _0800D636 - ldr r0, [r7] - lsrs r0, 1 - subs r2, r0, 0x2 -_0800D62A: - ldrh r0, [r1] - adds r4, r0 - adds r1, 0x2 - adds r3, 0x1 - cmp r3, r2 - bcc _0800D62A -_0800D636: - ldr r0, [r7] - lsrs r0, 1 - ldr r2, _0800D654 - adds r1, r2, 0 - subs r1, r0 - lsls r0, r4, 16 - lsls r1, 16 - cmp r0, r1 - beq _0800D658 - movs r0, 0 - b _0800D666 - .align 2, 0 -_0800D64C: .4byte gUnknown_202D910 -_0800D650: .4byte gUnknown_202DB74 -_0800D654: .4byte 0x0000ffff -_0800D658: - movs r0, 0x84 - lsls r0, 1 - adds r5, r0 - adds r6, 0x1 - cmp r6, 0x1 - bls _0800D618 - movs r0, 0x1 -_0800D666: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_800D600 - - thumb_func_start sub_800D670 -sub_800D670: - push {lr} - adds r3, r1, 0 - lsls r1, r0, 5 - adds r1, r0 - lsls r1, 3 - ldr r0, _0800D688 - adds r1, r0 - adds r0, r3, 0 - bl CpuCopy - pop {r0} - bx r0 - .align 2, 0 -_0800D688: .4byte gUnknown_202D914 - thumb_func_end sub_800D670 - - thumb_func_start sub_800D68C -sub_800D68C: - push {lr} - adds r1, r0, 0 - lsls r0, r1, 5 - adds r0, r1 - lsls r0, 3 - ldr r1, _0800D6A8 - adds r0, r1 - movs r2, 0x84 - lsls r2, 1 - movs r1, 0 - bl MemoryFill8 - pop {r0} - bx r0 - .align 2, 0 -_0800D6A8: .4byte gUnknown_202D910 - thumb_func_end sub_800D68C - - thumb_func_start sub_800D6AC -sub_800D6AC: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - ldr r3, _0800D784 - movs r4, 0 - strh r4, [r3] - ldr r2, _0800D788 - ldrh r1, [r2] - ldr r0, _0800D78C - ands r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r3] - ldr r0, _0800D790 - strh r4, [r0] - subs r2, 0xD8 - movs r0, 0x80 - lsls r0, 6 - str r0, [r2] - ldrh r0, [r2] - ldr r3, _0800D794 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - movs r0, 0 - str r0, [sp] - ldr r4, _0800D798 - ldr r2, _0800D79C - mov r0, sp - adds r1, r4, 0 - bl CpuSet - ldr r0, _0800D7A0 - ldr r1, _0800D7A4 - ldr r2, _0800D7A8 - bl CpuSet - ldr r0, _0800D7AC - ldr r1, _0800D7B0 - ldr r2, _0800D7B4 - bl CpuSet - movs r0, 0x1 - negs r0, r0 - str r0, [r4, 0x14] - adds r0, r4, 0 - adds r0, 0x60 - str r0, [r4, 0x28] - adds r0, 0x18 - str r0, [r4, 0x2C] - movs r3, 0 - adds r5, r4, 0 - adds r5, 0xC0 - movs r2, 0 - movs r7, 0x30 - adds r7, r4 - mov r8, r7 - movs r0, 0x90 - adds r0, r4 - mov r12, r0 - adds r6, r4, 0 - adds r6, 0xA8 - movs r7, 0x40 - adds r7, r4 - mov r9, r7 -_0800D732: - lsls r1, r3, 2 - mov r7, r12 - adds r0, r2, r7 - mov r7, r8 - adds r7, 0x4 - mov r8, r7 - subs r7, 0x4 - stm r7!, {r0} - adds r0, r2, r6 - mov r7, r9 - adds r7, 0x4 - mov r9, r7 - subs r7, 0x4 - stm r7!, {r0} - adds r0, r4, 0 - adds r0, 0x50 - adds r1, r0 - str r5, [r1] - adds r5, 0x48 - adds r2, 0x48 - adds r3, 0x1 - cmp r3, 0x1 - ble _0800D732 - movs r0, 0 - ldr r3, _0800D784 - strh r0, [r3] - ldr r2, _0800D788 - ldrh r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r3] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800D784: .4byte 0x04000208 -_0800D788: .4byte 0x04000200 -_0800D78C: .4byte 0x0000ff3f -_0800D790: .4byte 0x04000134 -_0800D794: .4byte 0x00004003 -_0800D798: .4byte gUnknown_202DCF8 -_0800D79C: .4byte 0x05000048 -_0800D7A0: .4byte sub_80001E8 -_0800D7A4: .4byte gUnknown_202DB78 -_0800D7A8: .4byte 0x04000010 -_0800D7AC: .4byte sub_8000228 -_0800D7B0: .4byte gUnknown_202DBB8 -_0800D7B4: .4byte 0x04000050 - thumb_func_end sub_800D6AC - - thumb_func_start sub_800D7B8 -sub_800D7B8: - push {lr} - ldr r1, _0800D7CC - ldrb r0, [r1] - cmp r0, 0 - beq _0800D7C6 - movs r0, 0x1 - strb r0, [r1, 0x8] -_0800D7C6: - pop {r0} - bx r0 - .align 2, 0 -_0800D7CC: .4byte gUnknown_202DCF8 - thumb_func_end sub_800D7B8 - - thumb_func_start sub_800D7D0 -sub_800D7D0: - push {r4,lr} - ldr r3, _0800D804 - movs r4, 0 - strh r4, [r3] - ldr r2, _0800D808 - ldrh r1, [r2] - ldr r0, _0800D80C - ands r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r3] - ldr r1, _0800D810 - ldr r2, _0800D814 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x1C - ldr r0, _0800D818 - str r0, [r1] - adds r1, 0xF6 - movs r0, 0xC0 - strh r0, [r1] - ldr r0, _0800D81C - strb r4, [r0, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800D804: .4byte 0x04000208 -_0800D808: .4byte 0x04000200 -_0800D80C: .4byte 0x0000ff3f -_0800D810: .4byte 0x04000128 -_0800D814: .4byte 0x00002003 -_0800D818: .4byte 0x0000b1fc -_0800D81C: .4byte gUnknown_202DCF8 - thumb_func_end sub_800D7D0 - - thumb_func_start sub_800D820 -sub_800D820: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - mov r12, r1 - ldr r5, _0800D844 - ldr r6, [r5] - ldr r0, _0800D848 - ldrb r2, [r0, 0x1] - adds r7, r0, 0 - cmp r2, 0x1 - beq _0800D8AA - cmp r2, 0x1 - bgt _0800D84C - cmp r2, 0 - beq _0800D852 - b _0800D8E8 - .align 2, 0 -_0800D844: .4byte 0x04000128 -_0800D848: .4byte gUnknown_202DCF8 -_0800D84C: - cmp r2, 0x2 - beq _0800D8DC - b _0800D8E8 -_0800D852: - ldr r1, [r7, 0x14] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0800D8A6 - movs r0, 0x88 - adds r4, r6, 0 - ands r4, r0 - cmp r4, 0x8 - bne _0800D8E8 - movs r1, 0x4 - adds r0, r6, 0 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0800D8A6 - ldr r3, _0800D8C0 - strh r0, [r3] - ldr r2, _0800D8C4 - ldrh r1, [r2] - ldr r0, _0800D8C8 - ands r0, r1 - strh r0, [r2] - ldrh r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r3] - ldrb r1, [r5, 0x1] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - ldr r1, _0800D8CC - movs r0, 0xC0 - strh r0, [r1] - subs r1, 0xF6 - ldr r0, _0800D8D0 - str r0, [r1] - strb r4, [r7] -_0800D8A6: - movs r0, 0x1 - strb r0, [r7, 0x1] -_0800D8AA: - ldr r1, _0800D8D4 - ldrb r0, [r1, 0x2] - cmp r0, 0 - beq _0800D8DC - ldrb r0, [r1, 0xA] - cmp r0, 0x7 - bhi _0800D8D8 - adds r0, 0x1 - strb r0, [r1, 0xA] - b _0800D8DC - .align 2, 0 -_0800D8C0: .4byte 0x04000208 -_0800D8C4: .4byte 0x04000200 -_0800D8C8: .4byte 0x0000ff7f -_0800D8CC: .4byte 0x04000202 -_0800D8D0: .4byte 0x0000b1fc -_0800D8D4: .4byte gUnknown_202DCF8 -_0800D8D8: - movs r0, 0x2 - strb r0, [r1, 0x1] -_0800D8DC: - mov r0, r12 - bl sub_800D9B8 - mov r0, r8 - bl sub_800D944 -_0800D8E8: - ldr r1, _0800D908 - ldrb r0, [r1, 0xB] - adds r0, 0x1 - strb r0, [r1, 0xB] - ldrb r3, [r1, 0x3] - ldrb r0, [r1, 0x2] - lsls r2, r0, 8 - ldrb r0, [r1] - adds r7, r1, 0 - cmp r0, 0x8 - bne _0800D90C - movs r0, 0x80 - orrs r0, r2 - orrs r0, r3 - b _0800D910 - .align 2, 0 -_0800D908: .4byte gUnknown_202DCF8 -_0800D90C: - adds r0, r3, 0 - orrs r0, r2 -_0800D910: - adds r2, r0, 0 - ldrb r0, [r7, 0x9] - cmp r0, 0 - beq _0800D91E - movs r0, 0x80 - lsls r0, 5 - orrs r2, r0 -_0800D91E: - ldrb r0, [r7, 0xA] - lsrs r0, 3 - lsls r1, r0, 15 - lsls r0, r6, 26 - lsrs r0, 30 - cmp r0, 0x1 - bls _0800D936 - movs r0, 0x80 - lsls r0, 6 - orrs r0, r1 - orrs r0, r2 - b _0800D93A -_0800D936: - adds r0, r2, 0 - orrs r0, r1 -_0800D93A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_800D820 - - thumb_func_start sub_800D944 -sub_800D944: - push {r4,r5,lr} - movs r5, 0 - ldr r4, _0800D9AC - ldr r2, [r4, 0x28] - ldrb r1, [r4, 0xB] - strb r1, [r2] - ldr r3, [r4, 0x28] - ldrb r1, [r4, 0x2] - ldrb r2, [r4, 0x3] - eors r1, r2 - strb r1, [r3, 0x1] - ldr r1, [r4, 0x28] - strh r5, [r1, 0x2] - ldr r1, [r4, 0x28] - adds r1, 0x4 - ldr r2, _0800D9B0 - bl CpuSet - movs r2, 0 - ldr r1, [r4, 0x28] -_0800D96C: - ldrh r0, [r1] - adds r5, r0 - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x9 - bls _0800D96C - adds r2, r4, 0 - ldr r1, [r2, 0x28] - mvns r0, r5 - subs r0, 0xC - strh r0, [r1, 0x2] - ldrb r0, [r2] - cmp r0, 0 - beq _0800D98E - ldr r1, _0800D9B4 - movs r0, 0 - strh r0, [r1] -_0800D98E: - movs r0, 0x1 - negs r0, r0 - str r0, [r4, 0x14] - ldrb r0, [r4] - cmp r0, 0 - beq _0800D9A6 - ldrb r0, [r4, 0x8] - cmp r0, 0 - beq _0800D9A6 - ldr r1, _0800D9B4 - movs r0, 0xC0 - strh r0, [r1] -_0800D9A6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800D9AC: .4byte gUnknown_202DCF8 -_0800D9B0: .4byte 0x04000004 -_0800D9B4: .4byte 0x0400010e - thumb_func_end sub_800D944 - - thumb_func_start sub_800D9B8 -sub_800D9B8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r0, [sp, 0x8] - ldr r0, _0800DA68 - bl _call_via_r0 - str r0, [sp] - ldr r1, _0800DA6C - movs r0, 0 - strb r0, [r1, 0x3] - movs r6, 0 - add r0, sp, 0x4 - mov r10, r0 - mov r9, r1 - movs r1, 0x50 - add r1, r9 - mov r8, r1 -_0800D9E2: - movs r3, 0 - movs r2, 0 - lsls r5, r6, 2 - mov r0, sp - adds r4, r0, r6 - adds r7, r6, 0x1 - mov r1, r8 - adds r0, r5, r1 - ldr r1, [r0] -_0800D9F4: - ldrh r0, [r1] - adds r3, r0 - adds r1, 0x2 - adds r2, 0x1 - cmp r2, 0x9 - bls _0800D9F4 - ldrb r0, [r4] - cmp r0, 0 - beq _0800DA32 - lsls r0, r3, 16 - asrs r0, 16 - movs r2, 0xD - negs r2, r2 - cmp r0, r2 - bne _0800DA32 - mov r1, r8 - adds r0, r5, r1 - ldr r0, [r0] - adds r0, 0x4 - lsls r1, r6, 4 - ldr r2, [sp, 0x8] - adds r1, r2, r1 - ldr r2, _0800DA70 - bl CpuSet - movs r0, 0x1 - lsls r0, r6 - mov r2, r9 - ldrb r1, [r2, 0x3] - orrs r0, r1 - strb r0, [r2, 0x3] -_0800DA32: - movs r0, 0 - str r0, [sp, 0x4] - mov r1, r8 - adds r0, r5, r1 - ldr r1, [r0] - adds r1, 0x4 - mov r0, r10 - ldr r2, _0800DA74 - bl CpuSet - adds r6, r7, 0 - cmp r6, 0x1 - ble _0800D9E2 - ldr r1, _0800DA6C - ldrb r0, [r1, 0x2] - ldrb r2, [r1, 0x3] - orrs r0, r2 - strb r0, [r1, 0x2] - ldrb r0, [r1, 0x3] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800DA68: .4byte gUnknown_202DB78 -_0800DA6C: .4byte gUnknown_202DCF8 -_0800DA70: .4byte 0x04000004 -_0800DA74: .4byte 0x05000004 - thumb_func_end sub_800D9B8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_8099360.s b/asm/code_8099360.s deleted file mode 100644 index df6619244..000000000 --- a/asm/code_8099360.s +++ /dev/null @@ -1,1908 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8099708 -sub_8099708: - push {lr} - sub sp, 0x4 - str r1, [sp] - lsls r0, 16 - lsrs r0, 16 - bl sub_8003810 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8099708 - - thumb_func_start sub_809971C -sub_809971C: - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r2, 0 - ble _0809973E - adds r4, r2, 0 -_0809972A: - adds r0, r5, 0 - adds r1, r0, 0x1 - lsls r1, 16 - lsrs r5, r1, 16 - ldm r6!, {r1} - bl sub_8003810 - subs r4, 0x1 - cmp r4, 0 - bne _0809972A -_0809973E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809971C - - thumb_func_start sub_8099744 -sub_8099744: - push {lr} - bl sub_80039B8 - pop {r0} - bx r0 - thumb_func_end sub_8099744 - - thumb_func_start sub_8099750 -sub_8099750: - push {lr} - bl TransferBGPaletteBuffer - pop {r0} - bx r0 - thumb_func_end sub_8099750 - - thumb_func_start sub_809975C -sub_809975C: - push {lr} - bl sub_809977C - pop {r0} - bx r0 - thumb_func_end sub_809975C - - thumb_func_start sub_8099768 -sub_8099768: - push {lr} - bl sub_809977C - bl sub_8099744 - bl sub_8099750 - pop {r0} - bx r0 - thumb_func_end sub_8099768 - - thumb_func_start sub_809977C -sub_809977C: - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r1, _080997DC - movs r0, 0 - strb r0, [r1] - ldr r1, _080997E0 - movs r0, 0 - strh r0, [r1] - ldr r6, _080997E4 - adds r0, r6, 0 - bl sub_8099838 - ldr r0, _080997E8 - mov r8, r0 - bl sub_8099838 - ldr r4, _080997EC - adds r0, r4, 0 - bl sub_8099838 - subs r4, 0x8 - movs r0, 0 - str r0, [r4] - movs r5, 0x80 - lsls r5, 1 - strh r5, [r4, 0x14] - strh r0, [r6, 0xC] - bl sub_8099DD0 - mov r0, r8 - strh r5, [r0, 0xC] - adds r0, r5, 0 - bl sub_8099E58 - ldr r1, _080997F0 - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x40 -_080997CA: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080997CA - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080997DC: .4byte gUnknown_2039990 -_080997E0: .4byte gUnknown_2039992 -_080997E4: .4byte gUnknown_2039958 -_080997E8: .4byte gUnknown_2039968 -_080997EC: .4byte gUnknown_2039980 -_080997F0: .4byte gUnknown_2039998 - thumb_func_end sub_809977C - - thumb_func_start sub_80997F4 -sub_80997F4: - push {lr} - lsls r0, 16 - ldr r2, _08099818 - lsrs r0, 15 - adds r0, r2 - strh r1, [r0] - ldr r0, _0809981C - bl sub_8099848 - ldr r0, _08099820 - bl sub_8099848 - ldr r0, _08099824 - bl sub_8099848 - pop {r0} - bx r0 - .align 2, 0 -_08099818: .4byte gUnknown_2039998 -_0809981C: .4byte gUnknown_2039958 -_08099820: .4byte gUnknown_2039968 -_08099824: .4byte gUnknown_2039980 - thumb_func_end sub_80997F4 - - thumb_func_start sub_8099828 -sub_8099828: - lsls r0, 16 - ldr r1, _08099834 - lsrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_08099834: .4byte gUnknown_2039998 - thumb_func_end sub_8099828 - - thumb_func_start sub_8099838 -sub_8099838: - movs r1, 0x1 - str r1, [r0] - movs r1, 0 - strh r1, [r0, 0xC] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - bx lr - thumb_func_end sub_8099838 - - thumb_func_start sub_8099848 -sub_8099848: - push {lr} - adds r1, r0, 0 - ldr r0, [r1] - cmp r0, 0 - bne _08099856 - movs r0, 0x1 - str r0, [r1] -_08099856: - pop {r0} - bx r0 - thumb_func_end sub_8099848 - - thumb_func_start sub_809985C -sub_809985C: - push {lr} - adds r2, r0, 0 - cmp r1, 0 - blt _08099872 - cmp r1, 0 - bne _08099874 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r2, 0xC] - movs r0, 0x1 - b _08099876 -_08099872: - movs r1, 0x1E -_08099874: - movs r0, 0x2 -_08099876: - str r0, [r2] - strh r1, [r2, 0x4] - strh r1, [r2, 0x6] - pop {r0} - bx r0 - thumb_func_end sub_809985C - - thumb_func_start sub_8099880 -sub_8099880: - push {lr} - adds r2, r0, 0 - cmp r1, 0 - blt _08099892 - cmp r1, 0 - bne _08099894 - strh r1, [r2, 0xC] - movs r0, 0x1 - b _08099896 -_08099892: - movs r1, 0x1E -_08099894: - movs r0, 0x3 -_08099896: - str r0, [r2] - strh r1, [r2, 0x4] - strh r1, [r2, 0x6] - pop {r0} - bx r0 - thumb_func_end sub_8099880 - - thumb_func_start sub_80998A0 -sub_80998A0: - push {r4,lr} - adds r4, r0, 0 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - cmp r1, 0 - bge _080998B2 - movs r1, 0x1E -_080998B2: - cmp r2, r3 - bls _080998BE - movs r0, 0x5 - str r0, [r4] - subs r0, r2, r3 - b _080998D0 -_080998BE: - cmp r2, r3 - bcs _080998CA - movs r0, 0x4 - str r0, [r4] - subs r0, r3, r2 - b _080998D0 -_080998CA: - movs r0, 0x1 - str r0, [r4] - movs r0, 0 -_080998D0: - strh r0, [r4, 0xA] - strh r1, [r4, 0x4] - strh r1, [r4, 0x6] - strh r2, [r4, 0xC] - strh r3, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80998A0 - - thumb_func_start sub_80998E0 -sub_80998E0: - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4] - cmp r0, 0x5 - bhi _080999CA - lsls r0, 2 - ldr r1, _080998F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080998F4: .4byte _080998F8 - .align 2, 0 -_080998F8: - .4byte _080999CA - .4byte _080999C2 - .4byte _08099910 - .4byte _08099946 - .4byte _08099976 - .4byte _0809999A -_08099910: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _08099940 - movs r1, 0x4 - ldrsh r0, [r4, r1] - lsls r0, 8 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldrh r0, [r4, 0xC] - cmp r0, r1 - bcs _080999C6 - strh r1, [r4, 0xC] - b _080999C6 -_08099940: - movs r0, 0x80 - lsls r0, 1 - b _080999C0 -_08099946: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _08099970 - movs r1, 0x4 - ldrsh r0, [r4, r1] - lsls r0, 8 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r0, [r4, 0xC] - cmp r0, r1 - bls _080999C6 - strh r1, [r4, 0xC] - b _080999C6 -_08099970: - strh r1, [r4, 0xC] - str r1, [r4] - b _080999C6 -_08099976: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _080999BE - movs r0, 0x4 - ldrsh r1, [r4, r0] - ldrh r0, [r4, 0xA] - muls r0, r1 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x8] - subs r1, r0 - strh r1, [r4, 0xC] - b _080999C6 -_0809999A: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _080999BE - movs r0, 0x4 - ldrsh r1, [r4, r0] - ldrh r0, [r4, 0xA] - muls r0, r1 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x8] - adds r1, r0 - strh r1, [r4, 0xC] - b _080999C6 -_080999BE: - ldrh r0, [r4, 0x8] -_080999C0: - strh r0, [r4, 0xC] -_080999C2: - movs r0, 0 - str r0, [r4] -_080999C6: - movs r0, 0x1 - b _080999CC -_080999CA: - movs r0, 0 -_080999CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80998E0 - - thumb_func_start sub_80999D4 -sub_80999D4: - ldr r2, _080999E0 - movs r1, 0x1 - strb r1, [r2] - ldr r1, _080999E4 - strh r0, [r1] - bx lr - .align 2, 0 -_080999E0: .4byte gUnknown_2039990 -_080999E4: .4byte gUnknown_2039992 - thumb_func_end sub_80999D4 - - thumb_func_start sub_80999E8 -sub_80999E8: - push {lr} - adds r1, r0, 0 - ldr r0, _080999F8 - bl sub_809985C - pop {r0} - bx r0 - .align 2, 0 -_080999F8: .4byte gUnknown_2039958 - thumb_func_end sub_80999E8 - - thumb_func_start sub_80999FC -sub_80999FC: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A0C - bl sub_8099880 - pop {r0} - bx r0 - .align 2, 0 -_08099A0C: .4byte gUnknown_2039958 - thumb_func_end sub_80999FC - - thumb_func_start sub_8099A10 -sub_8099A10: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _08099A30 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_80998A0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099A30: .4byte gUnknown_2039958 - thumb_func_end sub_8099A10 - - thumb_func_start sub_8099A34 -sub_8099A34: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A44 - bl sub_809985C - pop {r0} - bx r0 - .align 2, 0 -_08099A44: .4byte gUnknown_2039968 - thumb_func_end sub_8099A34 - - thumb_func_start sub_8099A48 -sub_8099A48: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A58 - bl sub_8099880 - pop {r0} - bx r0 - .align 2, 0 -_08099A58: .4byte gUnknown_2039968 - thumb_func_end sub_8099A48 - - thumb_func_start sub_8099A5C -sub_8099A5C: - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - str r2, [sp] - ldr r0, _08099A88 - str r4, [r0] - ldr r2, [sp] - str r2, [r0, 0x4] - movs r2, 0 - strh r2, [r0, 0x14] - adds r0, 0x8 - bl sub_809985C - subs r0, r4, 0x1 - cmp r0, 0xD - bhi _08099AF0 - lsls r0, 2 - ldr r1, _08099A8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099A88: .4byte gUnknown_2039978 -_08099A8C: .4byte _08099A90 - .align 2, 0 -_08099A90: - .4byte _08099AC8 - .4byte _08099AF0 - .4byte _08099AC8 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AF0 - .4byte _08099AE0 - .4byte _08099AF0 - .4byte _08099AE0 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AE8 -_08099AC8: - ldr r0, _08099AD8 - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0xC] - ldr r0, _08099ADC - strh r1, [r0, 0xC] - b _08099AF0 - .align 2, 0 -_08099AD8: .4byte gUnknown_2039968 -_08099ADC: .4byte gUnknown_2039958 -_08099AE0: - ldr r1, _08099AE4 - b _08099AEA - .align 2, 0 -_08099AE4: .4byte gUnknown_2039968 -_08099AE8: - ldr r1, _08099AF8 -_08099AEA: - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1, 0xC] -_08099AF0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08099AF8: .4byte gUnknown_2039958 - thumb_func_end sub_8099A5C - - thumb_func_start sub_8099AFC -sub_8099AFC: - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - str r2, [sp] - ldr r0, _08099B28 - str r4, [r0] - ldr r2, [sp] - str r2, [r0, 0x4] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r0, 0x14] - adds r0, 0x8 - bl sub_8099880 - subs r0, r4, 0x2 - cmp r0, 0xC - bhi _08099B86 - lsls r0, 2 - ldr r1, _08099B2C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099B28: .4byte gUnknown_2039978 -_08099B2C: .4byte _08099B30 - .align 2, 0 -_08099B30: - .4byte _08099B64 - .4byte _08099B86 - .4byte _08099B64 - .4byte _08099B86 - .4byte _08099B80 - .4byte _08099B86 - .4byte _08099B80 - .4byte _08099B86 - .4byte _08099B78 - .4byte _08099B86 - .4byte _08099B78 - .4byte _08099B80 - .4byte _08099B80 -_08099B64: - ldr r0, _08099B70 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r0, _08099B74 - strh r1, [r0, 0xC] - b _08099B86 - .align 2, 0 -_08099B70: .4byte gUnknown_2039968 -_08099B74: .4byte gUnknown_2039958 -_08099B78: - ldr r1, _08099B7C - b _08099B82 - .align 2, 0 -_08099B7C: .4byte gUnknown_2039968 -_08099B80: - ldr r1, _08099B90 -_08099B82: - movs r0, 0 - strh r0, [r1, 0xC] -_08099B86: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08099B90: .4byte gUnknown_2039958 - thumb_func_end sub_8099AFC - - thumb_func_start sub_8099B94 -sub_8099B94: - push {lr} - ldr r0, _08099BA4 - ldrb r0, [r0] - cmp r0, 0 - beq _08099BA8 - movs r0, 0x1 - b _08099BD6 - .align 2, 0 -_08099BA4: .4byte gUnknown_2039990 -_08099BA8: - ldr r1, _08099BBC - ldr r0, [r1] - cmp r0, 0 - beq _08099BC0 - ldr r0, [r1, 0x8] - cmp r0, 0 - beq _08099BD6 - movs r0, 0x1 - b _08099BD6 - .align 2, 0 -_08099BBC: .4byte gUnknown_2039978 -_08099BC0: - movs r1, 0 - ldr r0, _08099BDC - ldr r0, [r0] - cmp r0, 0 - bne _08099BD2 - ldr r0, _08099BE0 - ldr r0, [r0] - cmp r0, 0 - beq _08099BD4 -_08099BD2: - movs r1, 0x1 -_08099BD4: - adds r0, r1, 0 -_08099BD6: - pop {r1} - bx r1 - .align 2, 0 -_08099BDC: .4byte gUnknown_2039958 -_08099BE0: .4byte gUnknown_2039968 - thumb_func_end sub_8099B94 - - thumb_func_start sub_8099BE4 -sub_8099BE4: - push {r4,r5,lr} - ldr r4, _08099C10 - ldr r0, [r4] - cmp r0, 0 - bne _08099BF6 - ldr r0, [r4, 0x8] - cmp r0, 0 - bne _08099BF6 - b _08099D08 -_08099BF6: - adds r0, r4, 0 - adds r0, 0x8 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099C14 - ldrh r0, [r4, 0x14] - ldr r1, [r4, 0x4] - bl sub_8099E80 - b _08099DC0 - .align 2, 0 -_08099C10: .4byte gUnknown_2039978 -_08099C14: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08099C1C - b _08099DC0 -_08099C1C: - ldr r0, [r4] - cmp r0, 0xE - bls _08099C24 - b _08099DC0 -_08099C24: - lsls r0, 2 - ldr r1, _08099C30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099C30: .4byte _08099C34 - .align 2, 0 -_08099C34: - .4byte _08099DC0 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099CD8 - .4byte _08099CD8 -_08099C70: - ldr r0, _08099C80 - ldrh r1, [r0, 0x14] - adds r3, r0, 0 - cmp r1, 0xFF - bls _08099C84 - movs r0, 0 - str r0, [r3] - b _08099DC0 - .align 2, 0 -_08099C80: .4byte gUnknown_2039978 -_08099C84: - ldr r0, _08099CA0 - ldrb r0, [r0] - cmp r0, 0 - bne _08099C8E - b _08099DC0 -_08099C8E: - movs r2, 0 - ldr r0, [r3] - cmp r0, 0x3 - beq _08099CB2 - cmp r0, 0x3 - bhi _08099CA4 - cmp r0, 0x1 - beq _08099CAE - b _08099CBC - .align 2, 0 -_08099CA0: .4byte gUnknown_2039990 -_08099CA4: - cmp r0, 0x5 - beq _08099CB6 - cmp r0, 0x7 - beq _08099CBA - b _08099CBC -_08099CAE: - movs r2, 0x2 - b _08099CC0 -_08099CB2: - movs r2, 0x4 - b _08099CC0 -_08099CB6: - movs r2, 0x6 - b _08099CC0 -_08099CBA: - movs r2, 0x8 -_08099CBC: - cmp r2, 0 - beq _08099CD4 -_08099CC0: - ldr r0, _08099CD0 - movs r4, 0 - ldrsh r1, [r0, r4] - adds r0, r2, 0 - ldr r2, [r3, 0x4] - bl sub_8099AFC - b _08099DC0 - .align 2, 0 -_08099CD0: .4byte gUnknown_2039992 -_08099CD4: - str r2, [r3] - b _08099DC0 -_08099CD8: - ldr r2, _08099CE4 - ldrh r0, [r2, 0x14] - cmp r0, 0 - bne _08099CE8 - str r0, [r2] - b _08099DC0 - .align 2, 0 -_08099CE4: .4byte gUnknown_2039978 -_08099CE8: - ldr r0, _08099D00 - ldrb r0, [r0] - cmp r0, 0 - beq _08099DC0 - ldr r0, [r2] - ldr r1, _08099D04 - movs r3, 0 - ldrsh r1, [r1, r3] - ldr r2, [r2, 0x4] - bl sub_8099AFC - b _08099DC0 - .align 2, 0 -_08099D00: .4byte gUnknown_2039990 -_08099D04: .4byte gUnknown_2039992 -_08099D08: - ldr r0, _08099D88 - ldrb r0, [r0] - cmp r0, 0 - beq _08099D98 - movs r5, 0x1 - ldr r4, _08099D8C - ldrh r0, [r4, 0xC] - cmp r0, 0 - bne _08099D20 - ldr r0, [r4] - cmp r0, 0 - beq _08099D46 -_08099D20: - movs r5, 0 - ldr r0, [r4] - cmp r0, 0x3 - beq _08099D34 - ldr r0, _08099D90 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_8099880 -_08099D34: - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099D46 - ldrh r0, [r4, 0xC] - bl sub_8099DD0 -_08099D46: - ldr r4, _08099D94 - ldrh r0, [r4, 0xC] - cmp r0, 0 - bne _08099D54 - ldr r0, [r4] - cmp r0, 0 - beq _08099D7A -_08099D54: - movs r5, 0 - ldr r0, [r4] - cmp r0, 0x3 - beq _08099D68 - ldr r0, _08099D90 - movs r3, 0 - ldrsh r1, [r0, r3] - adds r0, r4, 0 - bl sub_8099880 -_08099D68: - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099D7A - ldrh r0, [r4, 0xC] - bl sub_8099E58 -_08099D7A: - cmp r5, 0 - beq _08099DC0 - ldr r1, _08099D88 - movs r0, 0 - strb r0, [r1] - b _08099DC0 - .align 2, 0 -_08099D88: .4byte gUnknown_2039990 -_08099D8C: .4byte gUnknown_2039958 -_08099D90: .4byte gUnknown_2039992 -_08099D94: .4byte gUnknown_2039968 -_08099D98: - ldr r4, _08099DC8 - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099DAC - ldrh r0, [r4, 0xC] - bl sub_8099DD0 -_08099DAC: - ldr r4, _08099DCC - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099DC0 - ldrh r0, [r4, 0xC] - bl sub_8099E58 -_08099DC0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099DC8: .4byte gUnknown_2039958 -_08099DCC: .4byte gUnknown_2039968 - thumb_func_end sub_8099BE4 - - thumb_func_start sub_8099DD0 -sub_8099DD0: - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - movs r4, 0 - ldr r6, _08099DF4 - movs r5, 0xD -_08099DDC: - ldrh r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08099DF8 - lsrs r0, r4, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099E00 - .align 2, 0 -_08099DF4: .4byte gUnknown_2039998 -_08099DF8: - lsrs r0, r4, 16 - adds r1, r7, 0 - bl sub_8003664 -_08099E00: - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _08099DDC - ldr r0, _08099E30 - movs r4, 0x80 - lsls r4, 13 - adds r6, r0, 0 - adds r6, 0x20 - movs r5, 0xE -_08099E1A: - ldrh r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08099E34 - lsrs r0, r4, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099E3C - .align 2, 0 -_08099E30: .4byte gUnknown_2039998 -_08099E34: - lsrs r0, r4, 16 - adds r1, r7, 0 - bl sub_8003664 -_08099E3C: - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _08099E1A - movs r0, 0x20 - adds r1, r7, 0 - bl sub_8003664 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8099DD0 - - thumb_func_start sub_8099E58 -sub_8099E58: - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xF - adds r1, r4, 0 - bl sub_8003664 - movs r0, 0xE - adds r1, r4, 0 - bl sub_8003664 - movs r0, 0x1F - adds r1, r4, 0 - bl sub_8003664 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8099E58 - - thumb_func_start sub_8099E80 -sub_8099E80: - push {r4-r7,lr} - sub sp, 0x4 - str r1, [sp] - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _08099EA0 - ldr r1, [r0] - adds r2, r0, 0 - cmp r1, 0xE - bls _08099E96 - b _0809A558 -_08099E96: - lsls r0, r1, 2 - ldr r1, _08099EA4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099EA0: .4byte gUnknown_2039978 -_08099EA4: .4byte _08099EA8 - .align 2, 0 -_08099EA8: - .4byte _0809A558 - .4byte _08099EE4 - .4byte _0809A05A - .4byte _0809A1D2 - .4byte _0809A34A - .4byte _08099FDE - .4byte _0809A156 - .4byte _0809A2CE - .4byte _0809A4BC - .4byte _08099F5E - .4byte _0809A0D6 - .4byte _0809A24E - .4byte _0809A3EA - .4byte _0809A48A - .4byte _0809A48A -_08099EE4: - movs r4, 0 - movs r5, 0 - ldr r7, _08099F00 -_08099EEA: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F04 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F0E - .align 2, 0 -_08099F00: .4byte gUnknown_2039998 -_08099F04: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F0E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _08099EEA - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _08099F40 - adds r7, r0, 0 - adds r7, 0x20 -_08099F28: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F44 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F4E - .align 2, 0 -_08099F40: .4byte gUnknown_2039998 -_08099F44: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F4E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _08099F28 - b _0809A558 -_08099F5E: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _08099F80 - adds r7, r0, 0 - adds r7, 0x1C -_08099F6A: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F84 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F8E - .align 2, 0 -_08099F80: .4byte gUnknown_2039998 -_08099F84: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F8E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _08099F6A - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _08099FC0 - adds r7, r0, 0 - adds r7, 0x3E -_08099FA8: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099FC4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099FCE - .align 2, 0 -_08099FC0: .4byte gUnknown_2039998 -_08099FC4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099FCE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _08099FA8 - b _0809A558 -_08099FDE: - movs r4, 0 - movs r5, 0 - ldr r7, _08099FFC -_08099FE4: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A000 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A00A - .align 2, 0 -_08099FFC: .4byte gUnknown_2039998 -_0809A000: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_0809A00A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _08099FE4 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A03C - adds r7, r0, 0 - adds r7, 0x20 -_0809A024: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A040 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A04A - .align 2, 0 -_0809A03C: .4byte gUnknown_2039998 -_0809A040: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_0809A04A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A024 - b _0809A558 -_0809A05A: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A078 -_0809A060: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A07C - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A086 - .align 2, 0 -_0809A078: .4byte gUnknown_2039998 -_0809A07C: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A086: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A060 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A0B8 - adds r7, r0, 0 - adds r7, 0x20 -_0809A0A0: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A0BC - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A0C6 - .align 2, 0 -_0809A0B8: .4byte gUnknown_2039998 -_0809A0BC: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A0C6: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A0A0 - b _0809A558 -_0809A0D6: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _0809A0F8 - adds r7, r0, 0 - adds r7, 0x1C -_0809A0E2: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A0FC - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A106 - .align 2, 0 -_0809A0F8: .4byte gUnknown_2039998 -_0809A0FC: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A106: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A0E2 - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _0809A138 - adds r7, r0, 0 - adds r7, 0x3E -_0809A120: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A13C - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A146 - .align 2, 0 -_0809A138: .4byte gUnknown_2039998 -_0809A13C: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A146: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A120 - b _0809A558 -_0809A156: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A174 -_0809A15C: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A178 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A182 - .align 2, 0 -_0809A174: .4byte gUnknown_2039998 -_0809A178: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A182: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A15C - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A1B4 - adds r7, r0, 0 - adds r7, 0x20 -_0809A19C: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A1B8 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A1C2 - .align 2, 0 -_0809A1B4: .4byte gUnknown_2039998 -_0809A1B8: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A1C2: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A19C - b _0809A558 -_0809A1D2: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A1F0 -_0809A1D8: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A1F4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A1FE - .align 2, 0 -_0809A1F0: .4byte gUnknown_2039998 -_0809A1F4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A1FE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A1D8 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A230 - adds r7, r0, 0 - adds r7, 0x20 -_0809A218: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A234 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A23E - .align 2, 0 -_0809A230: .4byte gUnknown_2039998 -_0809A234: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A23E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A218 - b _0809A558 -_0809A24E: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _0809A270 - adds r7, r0, 0 - adds r7, 0x1C -_0809A25A: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A274 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A27E - .align 2, 0 -_0809A270: .4byte gUnknown_2039998 -_0809A274: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A27E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A25A - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _0809A2B0 - adds r7, r0, 0 - adds r7, 0x3E -_0809A298: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A2B4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A2BE - .align 2, 0 -_0809A2B0: .4byte gUnknown_2039998 -_0809A2B4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A2BE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A298 - b _0809A558 -_0809A2CE: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A2EC -_0809A2D4: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A2F0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A2FA - .align 2, 0 -_0809A2EC: .4byte gUnknown_2039998 -_0809A2F0: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A2FA: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A2D4 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A32C - adds r7, r0, 0 - adds r7, 0x20 -_0809A314: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A330 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A33A - .align 2, 0 -_0809A32C: .4byte gUnknown_2039998 -_0809A330: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A33A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A314 - b _0809A558 -_0809A34A: - movs r4, 0 - movs r5, 0 -_0809A34E: - ldr r0, _0809A36C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A370 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A38C - .align 2, 0 -_0809A36C: .4byte gUnknown_2039998 -_0809A370: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A382 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A38C -_0809A382: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A38C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A34E - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 -_0809A39E: - ldr r0, _0809A3BC - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A3C0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A3DC - .align 2, 0 -_0809A3BC: .4byte gUnknown_2039998 -_0809A3C0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A3D2 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A3DC -_0809A3D2: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A3DC: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A39E - b _0809A558 -_0809A3EA: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 -_0809A3F0: - ldr r0, _0809A40C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A410 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A42C - .align 2, 0 -_0809A40C: .4byte gUnknown_2039998 -_0809A410: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A422 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A42C -_0809A422: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A42C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A3F0 - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 -_0809A43E: - ldr r0, _0809A45C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A460 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A47C - .align 2, 0 -_0809A45C: .4byte gUnknown_2039998 -_0809A460: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A472 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A47C -_0809A472: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A47C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A43E - b _0809A558 -_0809A48A: - ldr r0, [r2] - cmp r0, 0xD - beq _0809A496 - cmp r0, 0xE - beq _0809A4AA - b _0809A4BC -_0809A496: - mov r0, sp - movs r1, 0x90 - strb r1, [r0] - strb r1, [r0, 0x1] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x2] - movs r0, 0x1 - negs r0, r0 - b _0809A4BA -_0809A4AA: - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - movs r0, 0xC0 - strb r0, [r1, 0x1] - movs r0, 0x80 - strb r0, [r1, 0x2] - subs r0, 0x81 -_0809A4BA: - strb r0, [r1, 0x3] -_0809A4BC: - movs r4, 0 - movs r5, 0 -_0809A4C0: - ldr r0, _0809A4DC - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A4E0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A4FC - .align 2, 0 -_0809A4DC: .4byte gUnknown_2039998 -_0809A4E0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A4F2 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A4FC -_0809A4F2: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A4FC: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A4C0 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 -_0809A50E: - ldr r0, _0809A52C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A530 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A54C - .align 2, 0 -_0809A52C: .4byte gUnknown_2039998 -_0809A530: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A542 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A54C -_0809A542: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A54C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A50E -_0809A558: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8099E80 - - .align 2,0 diff --git a/asm/ground_effect.s b/asm/ground_effect.s index 1c501e18b..88c6350c7 100644 --- a/asm/ground_effect.s +++ b/asm/ground_effect.s @@ -5,69 +5,6 @@ .text - thumb_func_start GroundEffect_CancelBlank -GroundEffect_CancelBlank: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r1, _080ACD7C - movs r0, 0 - bl Log - movs r6, 0 - ldr r0, _080ACD80 - ldr r4, [r0] - movs r0, 0x1 - negs r0, r0 - mov r8, r0 - movs r1, 0x92 - lsls r1, 1 - adds r5, r4, r1 - mov r7, sp -_080ACD2C: - movs r1, 0x6 - ldrsh r0, [r4, r1] - cmp r0, r8 - beq _080ACD5C - ldr r0, [r5] - ldr r1, [r4, 0x14] - adds r0, r1 - str r0, [sp] - ldr r0, [r5, 0x4] - ldr r1, [r4, 0x18] - adds r0, r1 - str r0, [r7, 0x4] - movs r1, 0xA2 - lsls r1, 1 - adds r0, r4, r1 - mov r1, sp - bl IsOnscreen_80A675C - lsls r0, 24 - cmp r0, 0 - bne _080ACD5C - adds r0, r6, 0 - bl GroundEffect_Delete -_080ACD5C: - adds r0, r6, 0x1 - lsls r0, 16 - asrs r6, r0, 16 - movs r0, 0xE2 - lsls r0, 1 - adds r5, r0 - adds r4, r0 - cmp r6, 0xF - ble _080ACD2C - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ACD7C: .4byte gUnknown_8118658 -_080ACD80: .4byte gGroundEffects - thumb_func_end GroundEffect_CancelBlank - thumb_func_start sub_80ACD84 sub_80ACD84: push {r4-r7,lr} diff --git a/include/ground_script.h b/include/ground_script.h index bb33812f6..82f647016 100644 --- a/include/ground_script.h +++ b/include/ground_script.h @@ -234,4 +234,7 @@ const ScriptCommand *FindLabel(Action *action, s32 r1); const ScriptCommand *ResolveJump(Action *action, s32 r1); void InitActionWithParams(Action *action, const CallbackData *callbacks, void *parent, s32 group, s32 sector); +// For gScriptLocks, gScriptLockConds, gUnlockBranchLabels +#define SCRIPT_LOCKS_ARR_COUNT 129 + #endif // GUARD_GROUND_SCRIPT_H diff --git a/include/pokemon.h b/include/pokemon.h index 3cf1b8d91..9f617557e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -40,6 +40,7 @@ void InitializeRecruitedPokemon(void); u8 GetBodySize(s32 index); void CopyMonsterNameToBuffer(u8 * buffer, s32 index); void CopyYellowMonsterNametoBuffer(u8 *buffer, s16 index); +void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index_); void PrintColoredPokeNameToBuffer(u8 *buffer, PokemonStruct1 *pokemon, s32 colorNum); void sub_808D930(u8 *buffer, s32 index); void sub_808D9DC(u8 *buffer, PokemonStruct2 *, s32 colorNum); diff --git a/include/pokemon_mid.h b/include/pokemon_mid.h deleted file mode 100644 index 46e2dee28..000000000 --- a/include/pokemon_mid.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef GUARD_POKEMON_MID_H -#define GUARD_POKEMON_MID_H - -#include "pokemon.h" - -// NOTE: this is kept separate since TransferOrbAction needs index to be s32 -// and I haven't had the time to fix matching -void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index); - -#endif // GUARD_POKEMON_MID_H diff --git a/ld_script.ld b/ld_script.ld index 91d6b46ad..99e396318 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -48,7 +48,7 @@ SECTIONS { { asm/crt0.o(.text); src/code_80001DC.o(.text); - asm/arm_func.o(.text); + src/arm_funcs.o(.text); src/main_loops.o(.text); src/event_flag.o(.text); src/code_8002774.o(.text); @@ -80,7 +80,6 @@ SECTIONS { src/cpu.o(.text); src/flash.o(.text); src/code_800D090.o(.text); - asm/code_800D090.o(.text); src/code_800D090_1.o(.text); src/code_800DAC0.o(.text); asm/code_800DAC0.o(.text); @@ -330,7 +329,6 @@ SECTIONS { src/ground_main.o(.text); src/code_8099328.o(.text); src/code_8099360.o(.text); - asm/code_8099360.o(.text); src/code_809A560.o(.text); src/code_809C5C4.o(.text); src/code_809D148.o(.text); diff --git a/ld_script_modern.ld b/ld_script_modern.ld index adcfd4059..4cba17eae 100644 --- a/ld_script_modern.ld +++ b/ld_script_modern.ld @@ -48,7 +48,6 @@ SECTIONS { { asm/crt0.o(.text); src/code_80001DC.o(.text); - asm/arm_func.o(.text); src/main_loops.o(.text); src/*.o(.text*); asm/*.o(.text*); diff --git a/asm/arm_func.s b/src/arm_funcs.s similarity index 98% rename from asm/arm_func.s rename to src/arm_funcs.s index f10e34275..2dbdc27ee 100644 --- a/asm/arm_func.s +++ b/src/arm_funcs.s @@ -1,11 +1,11 @@ #include "asm/constants/gba_constants.inc" #include "asm/macros.inc" - + .syntax unified .text - arm_func_start sub_80001E8 + arm_func_start sub_80001E8 sub_80001E8: stmdb sp!, {r4-r11} mov r12, 0x4000000 @ REG_BASE diff --git a/src/code_800D090.c b/src/code_800D090.c index b81f9c73e..b39a41cfa 100644 --- a/src/code_800D090.c +++ b/src/code_800D090.c @@ -1,8 +1,7 @@ #include "global.h" #include "music.h" - -extern u32 gUnknown_202DB60[2]; -extern u16 gUnknown_202DB30[2][8]; +#include "memory.h" +#include "cpu.h" void Hang(void) { @@ -113,16 +112,75 @@ void nullsub_187(void) { } -u32 sub_800D1C0(void) +// New file? +union PtrU16U8 +{ + u16 *asU16; + u8 *asU8; +}; + +// Important note: This struct is used in arm_funcs.s, which means the offsets of this struct's memebers CANNOT be changed, unless sub_80001E8 and sub_8000228 are accordingly changed. +struct UnkStruct_202DCF8 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + s32 unk4; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 fillC[0x14-0xC]; + s32 unk14; + s32 unk18[4]; + union PtrU16U8 unk28; + u16 *unk2C; + u16 *unk30[4]; + u16 *unk40[4]; + u16 *unk50[4]; + u16 unk60[12]; + u16 unk78[12]; + u16 unk90[2][3][12]; +}; + +EWRAM_DATA static u16 gUnknown_202D808[132] = {0}; +EWRAM_DATA static u16 gUnknown_202D910[2][132] = {0}; +EWRAM_DATA static u16 gUnknown_202DB20[8] = {0}; +EWRAM_DATA static u16 gUnknown_202DB30[2][8] = {0}; +EWRAM_DATA static u32 gUnknown_202DB50[2] = {0}; // Only first index used +EWRAM_DATA static u32 gUnknown_202DB58[2] = {0}; +EWRAM_DATA static u32 gUnknown_202DB60[2] = {0}; +EWRAM_DATA static u32 gUnknown_202DB68 = 0; +EWRAM_DATA static s32 gUnknown_202DB6C = 0; +EWRAM_DATA static u8 gUnknown_202DB70 = 0; +EWRAM_DATA static u32 gUnknown_202DB74 = 0; +// These should not be in EWRAM, but in IWRAM... +EWRAM_DATA u32 gUnknown_202DB78[16] = {0}; +EWRAM_DATA u32 gUnknown_202DBB8[80] = {0}; + +EWRAM_DATA struct UnkStruct_202DCF8 gUnknown_202DCF8 = {0}; + +extern u32 sub_80001E8(void); +extern void sub_8000228(void); + +void sub_800D6AC(void); +void sub_800D7D0(void); +static u32 sub_800D820(u16 *a0, u16 a1[2][8]); +static void sub_800D7B8(void); +static void sub_800D944(u16 *a0); +static u32 sub_800D9B8(u16 dst[2][8]); + +bool8 sub_800D1C0(u32 unused) { if(gUnknown_202DB60[0] != 2) - return 0; + return FALSE; if(gUnknown_202DB60[1] != 2) - return 0; - return 1; + return FALSE; + return TRUE; } -void sub_800D1E0(void) +static void sub_800D1E0(void) { s32 iVar1; u32 iVar2; @@ -137,3 +195,362 @@ void sub_800D1E0(void) } } } + +static void sub_800D224(s32 a0) +{ + s32 i; + + for (i = 0; i < 2; i++) { + if (((a0 >> i) & 1) && gUnknown_202DB60[i] == 1) { + u32 j; + u16 *ptr = gUnknown_202D910[i]; + + for (j = 0; j < 8; j++) { + if (gUnknown_202DB58[i] + j >= gUnknown_202DB74 / 2) { + gUnknown_202DB60[i] = 2; + break; + } + ptr[gUnknown_202DB58[i] + j] = gUnknown_202DB30[i][j]; + } + + gUnknown_202DB58[i] += 8; + } + } +} + +static void sub_800D2EC(u32 unused) +{ + u32 i; + u16 *ptr = gUnknown_202D808; + + for (i = 0; i < 8; i++) { + if (gUnknown_202DB50[0] < (gUnknown_202DB74 / 2)) { + gUnknown_202DB20[i] = ptr[gUnknown_202DB50[0]++]; + } + else { + gUnknown_202DB20[i] = 0xFCFC; + } + } +} + +s32 sub_800D33C(void) +{ + s32 ret = 0; + + gUnknown_202DB6C = gUnknown_202DB68; + gUnknown_202DB68 = sub_800D820(gUnknown_202DB20, gUnknown_202DB30); + if (gUnknown_202DB70 == 0) { + if (gUnknown_202DB68 & 0x100) { + gUnknown_202DB70 = 1; + } + return 0; + } + else if (gUnknown_202DB68 & 0x1000) { + return 3; + } + else if (gUnknown_202DB68 & 0x2000) { + return 4; + } + else if (gUnknown_202DB68 & 0x8000) { + u32 bits1, bits2; + + bits1 = gUnknown_202DB68 << 28; + bits1 >>= 28; + + bits2 = gUnknown_202DB68 << 20; + bits2 >>= 28; + if (bits1 != bits2) + return 5; + } + + if (((gUnknown_202DB68 | gUnknown_202DB6C) & 0xE)) { + u32 si0Cnt = (*(vu32 *)REG_ADDR_SIOCNT); + si0Cnt <<= 26; + si0Cnt >>= 30; + if ((gUnknown_202DB68 & (1 << si0Cnt))) { + sub_800D1E0(); + sub_800D224(gUnknown_202DB68); + if (sub_800D1C0(gUnknown_202DB68)) { + return 2; + } + sub_800D2EC(gUnknown_202DB68); + ret = 1; + } + } + + return ret; +} + +static inline void ClearUnkMemory(void) +{ + gUnknown_202DB68 = 0; + gUnknown_202DB6C = 0; + gUnknown_202DB70 = 0; + gUnknown_202DB74 = 0; + gUnknown_202DB60[0] = 0; + gUnknown_202DB60[1] = 0; + MemoryClear16(gUnknown_202DB20, sizeof(gUnknown_202DB20)); + MemoryClear16(gUnknown_202DB30[0], sizeof(gUnknown_202DB30)); + gUnknown_202DB50[0] = 0; + gUnknown_202DB58[0] = 0; + gUnknown_202DB58[1] = 0; + MemoryClear16(gUnknown_202D808, sizeof(gUnknown_202D808)); + MemoryClear16(gUnknown_202D910[0], sizeof(gUnknown_202D910)); +} + +// These two are the same, except sub_800D414 calls an additional func +void sub_800D414(void) +{ + ClearUnkMemory(); + sub_800D6AC(); +} + +void sub_800D494(void) +{ + ClearUnkMemory(); +} + +void sub_800D510(void) +{ + REG_RCNT = 0x8000; +} + +void sub_800D520(void) +{ + vu16 var = 1; // Has to be u16, not s16 + u8 si0Cnt = (*(vu8 *)REG_ADDR_SIOCNT); // First 8 bits + + if (!(si0Cnt & 0x30)) { + while (--var != (u16) -1) { + VBlankIntrWait(); + } + } + sub_800D7D0(); +} + +void sub_800D570(void) +{ + sub_800D7B8(); +} + +UNUSED static u8 sub_800D57C(void) +{ + return gUnknown_202DB70; +} + +u8 sub_800D588(void) +{ + return (gUnknown_202DB68 & 0x80); +} + +void sub_800D59C(u16 *src, u32 size) +{ + u32 i; + u16 bits; + s32 count = 0; + u16 *dst = gUnknown_202D808; + + gUnknown_202DB74 = ((size + 1) & ~(1)) + 8; + CpuCopy(&dst[2], src, size); + bits = 0xFDFD; + dst[0] = bits; + dst[1] = 0; + for (i = 0; i < (gUnknown_202DB74 / 2) - 2; i++) { + count += dst[i]; + } + + gUnknown_202D808[1] = ~count - (gUnknown_202DB74 / 2); +} + +bool8 sub_800D600(void) +{ + u32 i, j; + + for (i = 0; i < 2; i++) { + s32 count = 0; + u16 *ptr = gUnknown_202D910[i]; + + for (j = 0; j < (gUnknown_202DB74 / 2) - 2; j++) { + count += ptr[j]; + } + + // Interesting casts and arithmetics here. + if ((s16) count != (s16) (-1 - (gUnknown_202DB74 / 2))) + return FALSE; + } + + return TRUE; +} + +void sub_800D670(u32 id, void *dst, u32 size) +{ + CpuCopy(dst, &gUnknown_202D910[id][2], size); +} + +void sub_800D68C(u32 id) +{ + MemoryFill8(gUnknown_202D910[id], 0, sizeof(gUnknown_202D910[0])); +} + +void sub_800D6AC(void) +{ + s32 i; + + REG_IME = 0; + REG_IE &= 0xFF3F; + REG_IME = 1; + REG_RCNT = 0; + (*(vu32 *)REG_ADDR_SIOCNT) = 0x2000; + REG_SIOCNT |= 0x4003; + CpuFill32(0, &gUnknown_202DCF8, 0x120); + CpuCopy32(sub_80001E8, gUnknown_202DB78, sizeof(gUnknown_202DB78)); + CpuCopy32(sub_8000228, gUnknown_202DBB8, sizeof(gUnknown_202DBB8)); + gUnknown_202DCF8.unk14 = -1; + gUnknown_202DCF8.unk28.asU16 = gUnknown_202DCF8.unk60; + gUnknown_202DCF8.unk2C = gUnknown_202DCF8.unk78; + + for (i = 0; i < 2; i++) { + gUnknown_202DCF8.unk30[i] = gUnknown_202DCF8.unk90[i][0]; + gUnknown_202DCF8.unk40[i] = gUnknown_202DCF8.unk90[i][1]; + gUnknown_202DCF8.unk50[i] = gUnknown_202DCF8.unk90[i][2]; + } + + REG_IME = 0; + REG_IE |= 0x80; + REG_IME = 1; +} + +static void sub_800D7B8(void) +{ + if (gUnknown_202DCF8.unk0 != 0) { + gUnknown_202DCF8.unk8 = 1; + } +} + +void sub_800D7D0(void) +{ + REG_IME = 0; + REG_IE &= 0xFF3F; + REG_IME = 1; + REG_SIOCNT = 0x2003; + REG_TM3CNT = 0xB1FC; + REG_IF = 0xC0; + gUnknown_202DCF8.unk8 = 0; +} + +static u32 sub_800D820(u16 *a0, u16 a1[2][8]) +{ + u32 ret, var; + u32 bits1, bits2, b; + u32 r3, r2; + u32 si0cnt = (*(vu32 *)REG_ADDR_SIOCNT); + + switch (gUnknown_202DCF8.unk1) { + case 0: + if (gUnknown_202DCF8.unk14 == -1) { + u16 bits = si0cnt & 0x88; + if (bits != 8) + break; + if (!((u8)(si0cnt & 0x4))) { + vu8 *sioPtru8; + u32 sioBits; + + REG_IME = 0; + REG_IE &= 0xFF7F; + REG_IE |= 0x40; + REG_IME = 1; + sioPtru8 = ((vu8 *)REG_ADDR_SIOCNT); + sioBits = sioPtru8[1] & ~0x40; + sioPtru8[1] = sioBits; + REG_IF = 0xC0; + REG_TM3CNT = 0xB1FC; + gUnknown_202DCF8.unk0 = 8; + } + } + gUnknown_202DCF8.unk1 = 1; + // fallthrough + case 1: + if (gUnknown_202DCF8.unk2 != 0) { + if (gUnknown_202DCF8.unkA < 8) { + gUnknown_202DCF8.unkA++; + } + else { + gUnknown_202DCF8.unk1 = 2; + } + } + // fallthrough + case 2: + sub_800D9B8(a1); + sub_800D944(a0); + break; + } + + gUnknown_202DCF8.unkB++; + r3 = gUnknown_202DCF8.unk3; + r2 = gUnknown_202DCF8.unk2 << 8; + b = ((gUnknown_202DCF8.unk0 == 8) ? 0x80 : 0) | r3 | r2; + var = b; + if (gUnknown_202DCF8.unk9 != 0) { + var |= 0x1000; + } + + bits1 = (gUnknown_202DCF8.unkA >> 3) << 15; + bits2 = (si0cnt << 26) >> 30; + if (bits2 >= 2) { + ret = 0x2000 | var | bits1; + } + else { + ret = var | bits1; + } + return ret; +} + +static void sub_800D944(u16 *src) +{ + u32 i; + s32 count = 0; + + gUnknown_202DCF8.unk28.asU8[0] = gUnknown_202DCF8.unkB; + gUnknown_202DCF8.unk28.asU8[1] = gUnknown_202DCF8.unk2 ^ gUnknown_202DCF8.unk3; + gUnknown_202DCF8.unk28.asU16[1] = 0; + CpuCopy32(src, &gUnknown_202DCF8.unk28.asU16[2], 0x10); + for (i = 0; i < 10; i++) { + count += gUnknown_202DCF8.unk28.asU16[i]; + } + + gUnknown_202DCF8.unk28.asU16[1] = ~count - 12; + if (gUnknown_202DCF8.unk0 != 0) { + REG_TM3CNT_H = 0; + } + gUnknown_202DCF8.unk14 = -1; + if (gUnknown_202DCF8.unk0 != 0 && gUnknown_202DCF8.unk8 != 0) { + REG_TM3CNT_H = 0xC0; + } +} + +static u32 sub_800D9B8(u16 dst[2][8]) +{ + s32 i; + u8 sp0[4]; + u32 (*func)(void) = (void *)gUnknown_202DB78; + u32 *spAsU32 = (u32 *)sp0; + + *spAsU32 = func(); + gUnknown_202DCF8.unk3 = 0; + for (i = 0; i < 2; i++) { + u32 j; + s32 count = 0; + + for (j = 0; j < 10; j++) { + count += gUnknown_202DCF8.unk50[i][j]; + } + + if (sp0[i] != 0 && (s16)(count) == (s16)(-13)) { + CpuCopy32(&gUnknown_202DCF8.unk50[i][2], dst[i], 0x10); + gUnknown_202DCF8.unk3 |= (1 << i); + } + CpuFill32(0, &gUnknown_202DCF8.unk50[i][2], 0x10); + } + gUnknown_202DCF8.unk2 |= gUnknown_202DCF8.unk3; + return gUnknown_202DCF8.unk3; +} diff --git a/src/code_806FDF4.c b/src/code_806FDF4.c index 4ef8de5b9..e995c5d4f 100644 --- a/src/code_806FDF4.c +++ b/src/code_806FDF4.c @@ -18,7 +18,6 @@ #include "friend_area.h" #include "pokemon.h" #include "pokemon_3.h" -#include "pokemon_mid.h" #include "position_util.h" #include "text_util.h" #include "dungeon_util_1.h" diff --git a/src/code_80718D8.c b/src/code_80718D8.c index 4e0b9ccce..25fd1ca69 100644 --- a/src/code_80718D8.c +++ b/src/code_80718D8.c @@ -21,7 +21,6 @@ #include "code_803E668.h" #include "code_806CD90.h" #include "moves.h" -#include "pokemon_mid.h" #include "structs/dungeon_entity.h" #include "structs/map.h" #include "structs/str_pokemon.h" diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index c30b073b9..89406b5ba 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -19,7 +19,6 @@ #include "math.h" #include "pokemon.h" #include "pokemon_3.h" -#include "pokemon_mid.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "dungeon_map_access.h" diff --git a/src/code_8099360.c b/src/code_8099360.c index 9365f79fe..d2292369e 100644 --- a/src/code_8099360.c +++ b/src/code_8099360.c @@ -389,3 +389,743 @@ void sub_8099690(u32 param_1) } CloseFile(temp); } + +// TODO: figure out if a new file starts here... + +typedef struct unkStruct_3000400 +{ + // size: 0x4 + u8 unk0[0x4]; +} unkStruct_3000400; + +extern void sub_8003810(u16 idx, unkStruct_3000400 param_2); +extern void sub_80039B8(void); +extern void TransferBGPaletteBuffer(void); +extern void sub_80037C8(u16, u32, unkStruct_3000400); +extern void sub_8003664(u16 param_1, u16 param_2); +extern void sub_80036AC(u16, u32, unkStruct_3000400); +extern void sub_80036F4(u16, u32, unkStruct_3000400); +extern void sub_8003780(u16, u32, unkStruct_3000400); + +void sub_809977C(void); + +UNUSED static void sub_8099708(u16 a0, unkStruct_3000400 a1) +{ + sub_8003810(a0, a1); +} + +void sub_809971C(u16 idx, unkStruct_3000400 *strPtrs, s32 n) +{ + s32 i; + + for (i = 0; i < n; i++) { + sub_8003810(idx++, *strPtrs++); + } +} + +void sub_8099744(void) +{ + sub_80039B8(); +} + +void sub_8099750(void) +{ + TransferBGPaletteBuffer(); +} + +void sub_809975C(void) +{ + sub_809977C(); +} + +void sub_8099768(void) +{ + sub_809977C(); + sub_8099744(); + sub_8099750(); +} + +struct UnkStruct_2039958 +{ + s32 unk0; + s16 unk4; + s16 unk6; + u16 unk8; + u16 unkA; + u16 unkC; +}; + +struct UnkStruct_2039978 +{ + u32 unk0; + unkStruct_3000400 unk4; + struct UnkStruct_2039958 unk8; +}; + +static EWRAM_DATA struct UnkStruct_2039958 gUnknown_2039958 = {0}; +static EWRAM_DATA struct UnkStruct_2039958 gUnknown_2039968 = {0}; +static EWRAM_DATA struct UnkStruct_2039978 gUnknown_2039978 = {0}; +static EWRAM_DATA u8 gUnknown_2039990 = FALSE; +static EWRAM_DATA s16 gUnknown_2039992 = 0; +UNUSED static EWRAM_DATA s32 sUnused = 0; +#define ARR_COUNT_2039998 33 +static EWRAM_DATA u16 gUnknown_2039998[ARR_COUNT_2039998] = {0}; + +void sub_8099838(struct UnkStruct_2039958 *a0); +void sub_8099848(struct UnkStruct_2039958 *a0); +void sub_8099DD0(u16 a0); +void sub_8099E58(u16 a0); +void sub_8099E80(u16 a0, unkStruct_3000400 a1); + +void sub_809977C(void) +{ + s32 i; + + gUnknown_2039990 = FALSE; + gUnknown_2039992 = 0; + sub_8099838(&gUnknown_2039958); + sub_8099838(&gUnknown_2039968); + sub_8099838(&gUnknown_2039978.unk8); + gUnknown_2039978.unk0 = 0; + gUnknown_2039978.unk8.unkC = 0x100; + gUnknown_2039958.unkC = 0; + sub_8099DD0(0); + gUnknown_2039968.unkC = 0x100; + sub_8099E58(0x100); + for (i = 0; i < ARR_COUNT_2039998; i++) { + gUnknown_2039998[i] = 0; + } +} + +void sub_80997F4(u16 a0, u32 a1) +{ + gUnknown_2039998[a0] = a1; + sub_8099848(&gUnknown_2039958); + sub_8099848(&gUnknown_2039968); + sub_8099848(&gUnknown_2039978.unk8); +} + +UNUSED static u32 sub_8099828(u16 a0) +{ + return gUnknown_2039998[a0]; +} + +void sub_8099838(struct UnkStruct_2039958 *a0) +{ + a0->unk0 = 1; + a0->unkC = 0; + a0->unk4 = 0; + a0->unk6 = 0; +} + +void sub_8099848(struct UnkStruct_2039958 *a0) +{ + if (a0->unk0 == 0) { + a0->unk0 = 1; + } +} + +void sub_809985C(struct UnkStruct_2039958 *a0, s32 a1) +{ + if (a1 >= 0) { + if (a1 == 0) { + a0->unkC = 0x100; + a0->unk0 = 1; + } + else { + a0->unk0 = 2; + } + } + else { + a1 = 30; + a0->unk0 = 2; + } + + a0->unk4 = a1; + a0->unk6 = a1; +} + +void sub_8099880(struct UnkStruct_2039958 *a0, s32 a1) +{ + if (a1 >= 0) { + if (a1 == 0) { + a0->unkC = a1; + a0->unk0 = 1; + } + else { + a0->unk0 = 3; + } + } + else { + a1 = 30; + a0->unk0 = 3; + } + + a0->unk4 = a1; + a0->unk6 = a1; +} + +void sub_80998A0(struct UnkStruct_2039958 *a0, s32 a1, u16 a2, u16 a3) +{ + if (a1 < 0) a1 = 30; + + if (a2 > a3) { + a0->unk0 = 5; + a0->unkA = a2 - a3; + } + else if (a2 < a3) { + a0->unk0 = 4; + a0->unkA = a3 - a2; + } + else { + a0->unk0 = 1; + a0->unkA = 0; + } + + a0->unk4 = a1; + a0->unk6 = a1; + a0->unkC = a2; + a0->unk8 = a3; +} + +bool8 sub_80998E0(struct UnkStruct_2039958 *a0) +{ + switch (a0->unk0) { + case 0: + break; + case 1: + a0->unk0 = 0; + return TRUE; + case 2: + if (--a0->unk4 > 0) { + u16 var = 0x100 - ((a0->unk4 << 8) / a0->unk6); + if (a0->unkC < var) { + a0->unkC = var; + } + } + else { + a0->unkC = 0x100; + a0->unk0 = 0; + } + return TRUE; + case 3: + if (--a0->unk4 > 0) { + u16 var = (a0->unk4 << 8) / a0->unk6; + if (a0->unkC > var) { + a0->unkC = var; + } + } + else { + a0->unkC = 0; + a0->unk0 = 0; + } + return TRUE; + case 4: + if (--a0->unk4 > 0) { + a0->unkC = a0->unk8 - ((a0->unk4 * a0->unkA) / a0->unk6); + } + else { + a0->unkC = a0->unk8; + a0->unk0 = 0; + } + return TRUE; + case 5: + if (--a0->unk4 > 0) { + a0->unkC = a0->unk8 + ((a0->unk4 * a0->unkA) / a0->unk6); + } + else { + a0->unkC = a0->unk8; + a0->unk0 = 0; + } + return TRUE; + } + + return FALSE; +} + +void sub_80999D4(s32 a0) +{ + gUnknown_2039990 = TRUE; + gUnknown_2039992 = a0; +} + +void sub_80999E8(s32 a0) +{ + sub_809985C(&gUnknown_2039958, a0); +} + +void sub_80999FC(s32 a0) +{ + sub_8099880(&gUnknown_2039958, a0); +} + +void sub_8099A10(s32 a1, u16 a2, u16 a3) +{ + sub_80998A0(&gUnknown_2039958, a1, a2, a3); +} + +void sub_8099A34(s32 a0) +{ + sub_809985C(&gUnknown_2039968, a0); +} + +void sub_8099A48(s32 a0) +{ + sub_8099880(&gUnknown_2039968, a0); +} + +void sub_8099A5C(s32 a0, s32 a1, unkStruct_3000400 a2) +{ + gUnknown_2039978.unk0 = a0; + gUnknown_2039978.unk4 = a2; + gUnknown_2039978.unk8.unkC = 0; + sub_809985C(&gUnknown_2039978.unk8, a1); + + switch (a0) { + case 1: + case 3: + gUnknown_2039968.unkC = 0x100; + gUnknown_2039958.unkC = 0x100; + break; + case 9: + case 11: + gUnknown_2039968.unkC = 0x100; + break; + case 5: + case 7: + case 13: + case 14: + gUnknown_2039958.unkC = 0x100; + break; + } +} + +void sub_8099AFC(s32 a0, s32 a1, unkStruct_3000400 a2) +{ + gUnknown_2039978.unk0 = a0; + gUnknown_2039978.unk4 = a2; + gUnknown_2039978.unk8.unkC = 0x100; + sub_8099880(&gUnknown_2039978.unk8, a1); + + switch (a0) { + case 2: + case 4: + gUnknown_2039968.unkC = 0; + gUnknown_2039958.unkC = 0; + break; + case 10: + case 12: + gUnknown_2039968.unkC = 0; + break; + case 6: + case 8: + case 13: + case 14: + gUnknown_2039958.unkC = 0; + break; + } +} + +bool8 sub_8099B94(void) +{ + if (gUnknown_2039990) + return TRUE; + if (gUnknown_2039978.unk0 != 0) { + return (gUnknown_2039978.unk8.unk0 != 0); + } + return (gUnknown_2039958.unk0 != 0 || gUnknown_2039968.unk0 != 0); +} + +void sub_8099BE4(void) +{ + if (gUnknown_2039978.unk0 != 0 || gUnknown_2039978.unk8.unk0 != 0) { + if (sub_80998E0(&gUnknown_2039978.unk8)) { + sub_8099E80(gUnknown_2039978.unk8.unkC, gUnknown_2039978.unk4); + } + else if (gUnknown_2039978.unk8.unk0 == 0) { + switch (gUnknown_2039978.unk0) { + case 0: + break; + case 1: + case 3: + case 5: + case 7: + case 9: + case 11: + if (gUnknown_2039978.unk8.unkC >= 256) { + gUnknown_2039978.unk0 = 0; + } + else if (gUnknown_2039990) { + s32 var = 0; + switch (gUnknown_2039978.unk0) { + case 1: var = 2; break; + case 3: var = 4; break; + case 5: var = 6; break; + case 7: var = 8; break; + } + + if (var != 0) { + sub_8099AFC(var, gUnknown_2039992, gUnknown_2039978.unk4); + } + else { + gUnknown_2039978.unk0 = 0; + } + } + break; + case 2: + case 4: + case 6: + case 8: + case 10: + case 12: + case 13: + case 14: + if (gUnknown_2039978.unk8.unkC == 0) { + gUnknown_2039978.unk0 = 0; + } + else if (gUnknown_2039990) { + sub_8099AFC(gUnknown_2039978.unk0, gUnknown_2039992, gUnknown_2039978.unk4); + } + break; + } + } + } + else if (gUnknown_2039990) { + bool8 r5 = TRUE; + if (gUnknown_2039958.unkC != 0 || gUnknown_2039958.unk0 != 0) { + r5 = FALSE; + if (gUnknown_2039958.unk0 != 3) { + sub_8099880(&gUnknown_2039958, gUnknown_2039992); + } + if (sub_80998E0(&gUnknown_2039958)) { + sub_8099DD0(gUnknown_2039958.unkC); + } + } + if (gUnknown_2039968.unkC != 0 || gUnknown_2039968.unk0 != 0) { + r5 = FALSE; + if (gUnknown_2039968.unk0 != 3) { + sub_8099880(&gUnknown_2039968, gUnknown_2039992); + } + if (sub_80998E0(&gUnknown_2039968)) { + sub_8099E58(gUnknown_2039968.unkC); + } + } + + if (r5) { + gUnknown_2039990 = FALSE; + } + } + else { + if (sub_80998E0(&gUnknown_2039958)) { + sub_8099DD0(gUnknown_2039958.unkC); + } + if (sub_80998E0(&gUnknown_2039968)) { + sub_8099E58(gUnknown_2039968.unkC); + } + } +} + +void sub_8099DD0(u16 a0) +{ + s32 i; + + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i, 0x100); + } + else { + sub_8003664(i, a0); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i, 0x100); + } + else { + sub_8003664(i, a0); + } + } + + sub_8003664(32, a0); +} + +void sub_8099E58(u16 a0) +{ + sub_8003664(15, a0); + sub_8003664(14, a0); + sub_8003664(31, a0); +} + +void sub_8099E80(u16 param_1,unkStruct_3000400 param_2) +{ + s32 i; + + switch (gUnknown_2039978.unk0) { + case 0: + break; + case 1: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 9: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 5: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 2: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 10: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 6: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 3: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 11: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 7: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 4: + for (i = 0; i < 16; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + case 12: + for (i = 14; i < 16; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + case 13: + case 14: + switch (gUnknown_2039978.unk0) { + case 13: + param_2.unk0[0] = 0x90; + param_2.unk0[1] = 0x90; + param_2.unk0[2] = 0xFF; + param_2.unk0[3] = 0xFF; + break; + case 14: + param_2.unk0[0] = 0xFF; + param_2.unk0[1] = 0xC0; + param_2.unk0[2] = 0x80; + param_2.unk0[3] = 0xFF; + break; + } + // NOTE: fallthrough needed here + case 8: + for (i = 0; i < 14; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + } +} diff --git a/src/code_809A560.c b/src/code_809A560.c index fade4f978..33c4c08b5 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -25,7 +25,6 @@ #include "memory.h" #include "personality_test1.h" #include "pokemon.h" -#include "pokemon_mid.h" #include "string_format.h" #include "text_1.h" #include "text_2.h" @@ -35,9 +34,6 @@ IWRAM_INIT struct unkStruct_3001B64 *gUnknown_3001B64 = { NULL }; -extern u16 gUnknown_20399DC; -extern u16 gUnknown_20399DE; - extern bool8 sub_802FCF0(void); u8 ScriptPrintText_809B2B8(struct unkStruct_3001B64_unkC *, s32, s32, const char *); bool8 IsTextboxOpen_809B40C(struct unkStruct_3001B64_unkC *); @@ -126,6 +122,9 @@ ALIGNED(4) static const u8 sYellowStringText[] = _("{COLOR YELLOW_N}%s{RESET}"); // TODO: Convert to actual string ALIGNED(4) static const u8 gUnknown_8116190[] = {0x25, 0x73, 0x23, 0x5b, 0x49, 0x5d, 0x23, 0x7e, 0x20, 0x81, 0x40, 0x23, 0x57, 0x0a, 0x23, 0x5b, 0x4f, 0x5d, 0x23, 0x7e, 0x20, 0x81, 0x40, 0x00}; +EWRAM_DATA u16 gUnknown_20399DC = 0; +EWRAM_DATA u16 gUnknown_20399DE = 0; + void sub_809A560(void) { sub_8014144(); diff --git a/src/code_809C5C4.c b/src/code_809C5C4.c index 16a8b92d0..d0fad5e61 100644 --- a/src/code_809C5C4.c +++ b/src/code_809C5C4.c @@ -39,7 +39,7 @@ struct unkStruct_20399E0 u32 unk8; }; -extern struct unkStruct_20399E0 *gUnknown_20399E0; +EWRAM_DATA struct unkStruct_20399E0 *gUnknown_20399E0 = {0}; void sub_809C63C(); diff --git a/src/code_809D148.c b/src/code_809D148.c index 4c5a06c4d..8643f50cb 100644 --- a/src/code_809D148.c +++ b/src/code_809D148.c @@ -4,6 +4,7 @@ #include "math.h" #include "memory.h" #include "other_random.h" +#include "ground_script.h" struct unkStruct_20399E8 { @@ -24,7 +25,7 @@ struct unkStruct_20399E8 u8 unk44; }; -extern struct unkStruct_20399E8 gUnknown_20399E8; +EWRAM_DATA struct unkStruct_20399E8 gUnknown_20399E8 = {0}; void sub_809D0BC(void); void sub_809D4B0(void); @@ -396,7 +397,7 @@ void sub_809D4B0(void) gUnknown_2039A32 = -1; gUnknown_2039A34 = -1; gAnyScriptLocked = 0; - for (i = 0; i < 0x81; i++) { + for (i = 0; i < SCRIPT_LOCKS_ARR_COUNT; i++) { gScriptLocks[i] = 0; gScriptLockConds[i] = 0; gUnlockBranchLabels[i] = 0; diff --git a/src/dungeon.c b/src/dungeon.c index 0ce2209b7..6879dafc7 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -8,7 +8,6 @@ #include "items.h" #include "moves.h" #include "pokemon.h" -#include "pokemon_mid.h" #include "random.h" #include "string_format.h" #include "strings.h" diff --git a/src/dungeon_jobs.c b/src/dungeon_jobs.c index c21326b4f..0912e9669 100644 --- a/src/dungeon_jobs.c +++ b/src/dungeon_jobs.c @@ -10,7 +10,6 @@ #include "string_format.h" #include "code_80958E8.h" #include "mailbox.h" -#include "pokemon_mid.h" #include "structs/str_dungeon.h" #include "constants/dungeon.h" diff --git a/src/dungeon_logic.c b/src/dungeon_logic.c index 25cf204b6..89c8d8873 100644 --- a/src/dungeon_logic.c +++ b/src/dungeon_logic.c @@ -22,7 +22,6 @@ #include "dungeon_move_util.h" #include "code_800D090.h" #include "dungeon_message.h" -#include "pokemon_mid.h" #include "dungeon_strings.h" #include "constants/move_id.h" #include "moves.h" diff --git a/src/ground_effect.c b/src/ground_effect.c index 337a74de3..49c1705f0 100644 --- a/src/ground_effect.c +++ b/src/ground_effect.c @@ -1,5 +1,6 @@ #include "global.h" #include "ground_script.h" +#include "ground_sprite.h" #include "debug.h" #include "memory.h" @@ -11,7 +12,12 @@ typedef struct GroundEffect { s16 unk6; s16 unk8; s8 unkA; - u8 fillB[0x1c4 - 0xB]; + u8 fillB[0x14 - 0xB]; + PixelPos unkPixelPos14; + u8 fill1C[0x124 - 0x1C]; + PixelPos unkPixelPos124; + u8 fill12C[0x144 - 0x12C]; + struct UnkGroundSpriteStruct unk144; } GroundEffect; IWRAM_INIT GroundEffect* gGroundEffects = NULL; // size 16 array @@ -100,7 +106,7 @@ void GroundEffect_Cancel(s32 scriptID, s32 sector) index = 0; ptr = &gGroundEffects[0]; - for(; index < 0x10; index = (s16)(index + 1), ptr++) + for(; index < 16; index = (s16)(index + 1), ptr++) { if((ptr->unk6 != -1) && (ptr->unk8 == scriptID_s32)) if(sector_s32 < 0 || ptr->unkA == sector_s32) @@ -108,3 +114,28 @@ void GroundEffect_Cancel(s32 scriptID, s32 sector) } } +extern const char gUnknown_8118658[]; + +void GroundEffect_CancelBlank() +{ + s32 index; + GroundEffect *ptr; + PixelPos pos; + + Log(0, gUnknown_8118658); // "GroundEffect CancelBlank" + + index = 0; + ptr = &gGroundEffects[0]; + for (; index < 16; index = (s16)(index + 1), ptr++) + { + if (ptr->unk6 != -1) + { + pos.x = ptr->unkPixelPos124.x + ptr->unkPixelPos14.x; + pos.y = ptr->unkPixelPos124.y + ptr->unkPixelPos14.y; + if (!IsOnscreen_80A675C(&ptr->unk144, &pos)) + { + GroundEffect_Delete(index); + } + } + } +} diff --git a/src/ground_script.c b/src/ground_script.c index 6e64035c5..ab2ae30a6 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -132,11 +132,8 @@ bool8 sub_8099B94(void); PixelPos SetVecFromDirectionSpeed(s8, s32); bool8 sub_8098DCC(u32 speed); extern const PixelPos gUnknown_81164DC; -extern u32 gUnknown_2039DA4; extern char *gUnknown_203B4B0; -extern char gUnknown_2039D98[]; void sub_8099220(void *param_1, s32 param_2); -extern u32 gUnlockBranchLabels[]; s16 sub_8002694(u8 param_1); // value -> GroundEnter lookup bool8 sub_809B260(void *dst); bool8 sub_809B18C(s32 *sp); @@ -145,12 +142,6 @@ bool8 sub_809D234(void); s32 sub_80A14E8(Action *, u8, u32, s32); u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s32 param_2); -extern s16 gCurrentMap; -extern s16 gUnknown_2039A32; -extern s16 gUnknown_2039A34; - -extern MenuItem gChoices[9]; - extern char gUnknown_81165D4[]; extern char gUnknown_81165F4[]; extern char gUnknown_811660C[]; @@ -167,10 +158,6 @@ extern DebugLocation gUnknown_81166F8; extern DebugLocation gUnknown_8116704; extern ScriptCommand gUnknown_81164E4; -extern u8 gAnyScriptLocked; -extern u8 gScriptLocks[]; -extern u8 gScriptLockConds[]; - extern const DebugLocation gUnknown_8116588; extern const DebugLocation gUnknown_8116538; extern const DebugLocation gUnknown_8116560; @@ -224,7 +211,6 @@ extern DungeonLocation gUnknown_81167E8; extern DungeonLocation gUnknown_8116788; extern DungeonLocation gUnknown_811678C; extern DungeonLocation gUnknown_8116790; -extern u16 gUnknown_2039DA8; PokemonStruct1 *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID); bool8 HasRecruitedMon(s32 species); @@ -247,6 +233,19 @@ extern void sub_80997F4(u16, u16); s32 sub_809CFE8(u16 param_1); extern bool8 sub_80A579C(PixelPos *a0, PixelPos *a1); +// TODO: make these static maybe? +EWRAM_DATA s16 gCurrentMap = 0; +EWRAM_DATA s16 gUnknown_2039A32 = 0; +EWRAM_DATA s16 gUnknown_2039A34 = 0; +EWRAM_DATA u8 gAnyScriptLocked = 0; +// Hard to say why the arrays are larger than SCRIPT_LOCKS_ARR_COUNT. Could be unused EWRAM variables or special case indexes. +ALIGNED(4) EWRAM_DATA u8 gScriptLocks[SCRIPT_LOCKS_ARR_COUNT + 7] = {0}; +ALIGNED(4) EWRAM_DATA u8 gScriptLockConds[SCRIPT_LOCKS_ARR_COUNT + 7] = {0}; +EWRAM_DATA u32 gUnlockBranchLabels[SCRIPT_LOCKS_ARR_COUNT + 1] = {0}; +EWRAM_DATA MenuItem gChoices[9] = {0}; +EWRAM_DATA char gUnknown_2039D98[POKEMON_NAME_LENGTH + 2] = {0}; +EWRAM_DATA u32 gUnknown_2039DA4 = 0; +EWRAM_DATA u16 gUnknown_2039DA8 = 0; EWRAM_INIT static int sNumChoices = 0; // -1 didn't match @@ -3899,7 +3898,7 @@ void GroundScript_Unlock(void) gAnyScriptLocked = 0; index = 0; - for (index = 0; index <= 0x80; index++) { + for (index = 0; index < SCRIPT_LOCKS_ARR_COUNT; index++) { if(gScriptLocks[index] != 0) { Log(1, gUnknown_8116848, index); cond = GroundMapNotifyAll(index); diff --git a/src/move_orb_actions_4.c b/src/move_orb_actions_4.c index 96a8e6a53..120a8deca 100644 --- a/src/move_orb_actions_4.c +++ b/src/move_orb_actions_4.c @@ -54,9 +54,6 @@ extern void DealDamageToEntity(Entity *, s32, u32, u32); extern u32 gUnknown_8106A50; extern u32 gUnknown_8106A4C; -// TODO The parameters don't match the function definition in pokemon_mid.h (u8*, s16). -extern void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index); - bool8 ProtectMoveAction(Entity * pokemon,Entity * target,Move *move, s32 param_4) { ProtectStatusTarget(pokemon, target); diff --git a/src/move_orb_effects_2.c b/src/move_orb_effects_2.c index 0721272c9..0e9b5337e 100644 --- a/src/move_orb_effects_2.c +++ b/src/move_orb_effects_2.c @@ -24,7 +24,6 @@ #include "dungeon_strings.h" #include "dungeon_random.h" #include "dungeon_misc.h" -#include "pokemon_mid.h" extern u32 gUnknown_8106A4C; diff --git a/src/move_orb_effects_3.c b/src/move_orb_effects_3.c index da749b519..f9d02790f 100644 --- a/src/move_orb_effects_3.c +++ b/src/move_orb_effects_3.c @@ -20,7 +20,6 @@ #include "math.h" #include "pokemon.h" #include "pokemon_3.h" -#include "pokemon_mid.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "dungeon_map_access.h" diff --git a/src/move_orb_effects_4.c b/src/move_orb_effects_4.c index a76ae9e3f..9286f41d1 100644 --- a/src/move_orb_effects_4.c +++ b/src/move_orb_effects_4.c @@ -20,7 +20,6 @@ #include "math.h" #include "pokemon.h" #include "pokemon_3.h" -#include "pokemon_mid.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "dungeon_map_access.h" diff --git a/src/move_orb_effects_5.c b/src/move_orb_effects_5.c index 9ff148a16..8779f9aab 100644 --- a/src/move_orb_effects_5.c +++ b/src/move_orb_effects_5.c @@ -19,7 +19,6 @@ #include "math.h" #include "pokemon.h" #include "pokemon_3.h" -#include "pokemon_mid.h" #include "structs/dungeon_entity.h" #include "structs/str_dungeon.h" #include "dungeon_map_access.h" diff --git a/src/pokemon.c b/src/pokemon.c index c3fddc7f5..a06d9a422 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -656,10 +656,10 @@ void CopyYellowMonsterNametoBuffer(u8 *buffer, s16 index) sprintfStatic(buffer, gUnknown_8107600, gMonsterParameters[new_index].species); // {color YELLOW}%s{reset} } -void CopyCyanMonsterNametoBuffer(u8 *buffer, s16 index) +void CopyCyanMonsterNametoBuffer(u8 *buffer, s32 index_) { - s32 new_index = index; - sprintfStatic(buffer, gUnknown_8107608, gMonsterParameters[new_index].species); // {color CYAN}%s{reset} + s32 index = (s16) index_; + sprintfStatic(buffer, gUnknown_8107608, gMonsterParameters[index].species); // {color CYAN}%s{reset} } void sub_808D930(u8 *buffer, s32 index) @@ -1132,7 +1132,7 @@ bool8 CanMonLearnMove(u16 moveID, s16 _species) { u16 levelUpMoveID; u16 HMTMMoveID; - s32 species = _species; // r4 + s32 species = _species; const u8* learnsetPtr; if (species == MONSTER_DECOY) return 0; diff --git a/sym_ewram.txt b/sym_ewram.txt index 36534ad61..4bcd6b581 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,8 +1,6 @@ - .include "src/m4a.o" .include "src/main_loops.o" - .space 0x4 - + .space 4 .include "src/event_flag.o" .include "src/memory.o" .include "src/bg_palette_buffer.o" @@ -18,41 +16,8 @@ .include "src/music.o" .include "src/bg_control.o" .include "src/cpu.o" - .space 0x4 - -gUnknown_202D808: /* 202D808 (sub_800D2EC - sub_800D59C) */ - .space 0x108 -gUnknown_202D910: /* 202D910 (sub_800D224 - sub_800D68C) */ - .space 0x4 -gUnknown_202D914: /* 202D914 (sub_800D670) */ - .space 0x20C -gUnknown_202DB20: /* 202DB20 (sub_800D2EC - sub_800D494) */ - .space 0x10 -gUnknown_202DB30: /* 202DB30 (sub_800D1E0 - sub_800D494) */ - .space 0x20 -gUnknown_202DB50: /* 202DB50 (sub_800D2EC - sub_800D494) */ - .space 0x8 -gUnknown_202DB58: /* 202DB58 (sub_800D224 - sub_800D494) */ - .space 0x8 -gUnknown_202DB60: /* 202DB60 (sub_800D1C0 - sub_800D494) */ - .space 0x8 -gUnknown_202DB68: /* 202DB68 (sub_800D33C - sub_800D588) */ - .space 0x4 -gUnknown_202DB6C: /* 202DB6C (sub_800D33C - sub_800D494) */ - .space 0x4 -gUnknown_202DB70: /* 202DB70 (sub_800D33C - sub_800D57C) */ - .space 0x4 -gUnknown_202DB74: /* 202DB74 (sub_800D224 - sub_800D600) */ - .space 0x4 - -gUnknown_202DB78: /* 202DB78 (sub_800D6AC - sub_800D9B8) */ - .space 0x40 -gUnknown_202DBB8: /* 202DBB8 (sub_800D6AC / data_80B9BB8) */ - .space 0x140 - -gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ - .space 0x120 - + .space 4 + .include "src/code_800D090.o" .include "src/friend_areas_map.o" .include "src/code_80118A4.o" .include "src/save.o" @@ -74,13 +39,13 @@ gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ .include "src/dungeon_message_log.o" .include "src/dungeon_move.o" .include "src/dungeon_main.o" - .space 0x4 + .space 4 .include "src/dungeon_menu_items.o" - .space 0x4 + .space 4 .include "src/dungeon_menu_team.o" - .space 0x4 + .space 4 .include "src/dungeon_menu_moves.o" - .space 0x4 + .space 4 .include "src/dungeon_menu_others.o" .include "src/dungeon_menu_recruitment.o" .include "src/code_8066D04.o" @@ -91,80 +56,34 @@ gUnknown_202DCF8: /* 202DCF8 (sub_80001E8 - sub_800D9B8) */ .include "src/dungeon_ai_items.o" .include "src/code_8073CF0.o" .include "src/code_8075708.o" - .space 0x4 + .space 4 .include "src/dungeon_ai_attack.o" .include "src/code_80848F0.o" - .space 0x4 + .space 4 .include "src/pokemon.o" .include "src/items.o" .include "src/rescue_team_info.o" - .space 0x4 - + .space 4 .include "src/friend_area.o" .include "src/moves.o" .include "src/game_options.o" .include "src/play_time.o" .include "src/code_8094F88.o" - .space 0x4 + .space 4 .include "src/code_80958E8.o" - .space 0x4 + .space 4 .include "src/code_8097670.o" - .space 0x4 + .space 4 .include "src/exclusive_pokemon.o" - .space 0x4 + .space 4 .include "src/ground_main.o" - - .space 0x7 - -gUnknown_2039958: /* 2039958 (sub_809977C - sub_8099BE4) */ - .space 0x10 -gUnknown_2039968: /* 2039968 (sub_809977C - sub_8099BE4) */ - .space 0x10 -gUnknown_2039978: /* 2039978 (sub_8099A5C - sub_8099E80) */ - .space 0x8 -gUnknown_2039980: /* 2039980 (sub_809977C - sub_80997F4) */ - .space 0x10 -gUnknown_2039990: /* 2039990 (sub_809977C - sub_8099BE4) */ - .space 0x2 -gUnknown_2039992: /* 2039992 (sub_809977C - sub_8099BE4) */ - .space 0x6 -gUnknown_2039998: /* 2039998 (sub_809977C - sub_8099E80) */ - .space 0x44 - -gUnknown_20399DC: /* 20399DC (sub_809A560 - sub_809B614) */ - .space 0x2 -gUnknown_20399DE: /* 20399DE (sub_809A560 - sub_809B614) */ - .space 0x2 - -gUnknown_20399E0: /* 20399E0 (sub_809CB50 - sub_809CCDC) */ - .space 0x8 - -gUnknown_20399E8: /* 20399E8 (sub_809D0BC - sub_809D25C) */ - .space 0x14 -gUnknown_20399FC: /* 20399FC (sub_809D25C) */ - .space 0x34 -gCurrentMap: /* 2039A30 (sub_809D4B0 - ExecuteScriptCommand) */ - .space 0x2 -gUnknown_2039A32: /* 2039A32 (sub_809D4B0 - ExecuteScriptCommand) */ - .space 0x2 -gUnknown_2039A34: /* 2039A34 (sub_809D4B0 - ExecuteScriptCommand) */ - .space 0x2 -gAnyScriptLocked: /* 2039A36 (sub_809D4B0 - GroundScript_Unlock) */ - .space 0x2 -gScriptLocks: /* 2039A38 (sub_809D4B0 - GroundScript_Unlock) */ - .space 0x88 -gScriptLockConds: /* 2039AC0 (sub_809D4B0 - GroundScript_Unlock) */ - .space 0x88 -gUnlockBranchLabels: /* 2039B48 (sub_809D4B0 - HandleAction) */ - .space 0x208 -gChoices: /* 2039D50 (ExecuteScriptCommand) */ - .space 0x48 -gUnknown_2039D98: /* 2039D98 (HandleAction - sub_80A14E8) [seems to be storage for strings.. used for both Team Name and Player Name] */ - .space 0xC -gUnknown_2039DA4: /* 2039DA4 (HandleAction) */ - .space 0x4 -gUnknown_2039DA8: /* 2039DA8 (sub_80A14E8) */ - .space 0x8 - + .space 4 + .include "src/code_8099360.o" + .include "src/code_809A560.o" + .include "src/code_809C5C4.o" + .space 4 + .include "src/code_809D148.o" + .include "src/ground_script.o" + .space 4 .include "src/ground_sprite.o" .include "src/ground_script_file.o"