From cbd0b7e6c96a8f33ca792d77d93c835d9826b6a9 Mon Sep 17 00:00:00 2001 From: theo3 Date: Tue, 28 Dec 2021 23:33:10 -0800 Subject: [PATCH] rename files --- asm/{code_0801967C.s => beanstalkSubtask.s} | 0 asm/code_0801C1D4.s | 196 -- asm/code_0801C370.s | 151 -- asm/code_0801C5E0.s | 112 -- asm/code_0801C85C.s | 869 --------- asm/code_08056418.s | 25 - asm/code_0805EC04.s | 1197 ------------ asm/code_080AD90C.s | 157 -- asm/{code_0806FA6C.s => coord.s} | 0 asm/drawHealth.s | 204 -- asm/drawRupees.s | 160 -- asm/drawUI.s | 26 - asm/{code_080011C4.s => enemy.s} | 0 asm/{code_0804A720.s => enemyUtils.s} | 0 asm/{code_0804AA84.s => enterPortalSubtask.s} | 0 asm/{code_08018500.s => kinstone.s} | 0 asm/{ => lib}/libagbsyscall.s | 0 asm/{ => lib}/libgcc.s | 0 asm/{ => lib}/m4a_asm.s | 0 asm/{code_080ADD30.s => movement.s} | 1079 ----------- .../playerItemPacciCane/sub_080705AC.inc} | 22 +- .../vram/sub_080AD8F0.inc} | 11 +- asm/non_matching/vram/sub_080AD918.inc | 76 + asm/{code_080A29BC.s => objectUtils.s} | 0 asm/{code_0800857C.s => player.s} | 0 asm/{code_08077698.s => playerUtils.s} | 0 asm/{code_08016984.s => script.s} | 0 asm/{code_0807F0D8.s => scroll.s} | 0 asm/{code_080A3480.s => staffroll.s} | 0 asm/sub_0801C824.s | 38 - asm/sub_0804AA30.s | 31 - asm/sub_080A276C.s | 106 - asm/{code_080A3BD0.s => subtask.s} | 0 asm/{code_080A5574.s => subtask2.s} | 0 asm/text.s | 1203 ++++++++++++ asm/ui.s | 1708 +++++++++++++++++ asm/{code_0801D79C.s => utils.s} | 0 asm/{code_08000108.s => veneer.s} | 0 asm/vram.s | 1083 +++++++++++ include/main.h | 17 +- include/room.h | 5 +- include/save.h | 4 +- include/structures.h | 28 +- linker.ld | 97 +- src/affine.c | 72 + src/code_0805EC04.c | 21 +- src/code_0808091C.c | 131 -- src/createEnemy.c | 11 +- src/{code_0804AA84.c => enterPortalSubtask.c} | 0 src/entity.c | 7 +- src/fade.c | 8 +- src/interrupts.c | 10 +- src/{code_08018C58.c => kinstone.c} | 0 src/main.c | 2 +- src/manager/manager14.c | 2 +- src/message.c | 8 + src/objectUtils.c | 30 + src/playerItem/playerItemPacciCane.c | 29 + src/screenTilemap.c | 7 + src/scroll.c | 127 +- src/{sub_080A3B84.c => subtask.c} | 0 src/{sub_080A554C.c => subtask2.c} | 0 src/{code_0805F9A0.c => text.c} | 1 - src/{intro.c => title.c} | 0 src/{ezloNag.c => ui.c} | 0 65 files changed, 4442 insertions(+), 4629 deletions(-) rename asm/{code_0801967C.s => beanstalkSubtask.s} (100%) delete mode 100644 asm/code_0801C1D4.s delete mode 100644 asm/code_0801C370.s delete mode 100644 asm/code_0801C5E0.s delete mode 100644 asm/code_0801C85C.s delete mode 100644 asm/code_08056418.s delete mode 100644 asm/code_080AD90C.s rename asm/{code_0806FA6C.s => coord.s} (100%) delete mode 100644 asm/drawHealth.s delete mode 100644 asm/drawRupees.s delete mode 100644 asm/drawUI.s rename asm/{code_080011C4.s => enemy.s} (100%) rename asm/{code_0804A720.s => enemyUtils.s} (100%) rename asm/{code_0804AA84.s => enterPortalSubtask.s} (100%) rename asm/{code_08018500.s => kinstone.s} (100%) rename asm/{ => lib}/libagbsyscall.s (100%) rename asm/{ => lib}/libgcc.s (100%) rename asm/{ => lib}/m4a_asm.s (100%) rename asm/{code_080ADD30.s => movement.s} (65%) rename asm/{code_0807059C.s => non_matching/playerItemPacciCane/sub_080705AC.inc} (83%) rename asm/{sub_080AD8F0.s => non_matching/vram/sub_080AD8F0.inc} (61%) create mode 100644 asm/non_matching/vram/sub_080AD918.inc rename asm/{code_080A29BC.s => objectUtils.s} (100%) rename asm/{code_0800857C.s => player.s} (100%) rename asm/{code_08077698.s => playerUtils.s} (100%) rename asm/{code_08016984.s => script.s} (100%) rename asm/{code_0807F0D8.s => scroll.s} (100%) rename asm/{code_080A3480.s => staffroll.s} (100%) delete mode 100644 asm/sub_0801C824.s delete mode 100644 asm/sub_0804AA30.s delete mode 100644 asm/sub_080A276C.s rename asm/{code_080A3BD0.s => subtask.s} (100%) rename asm/{code_080A5574.s => subtask2.s} (100%) create mode 100644 asm/text.s create mode 100644 asm/ui.s rename asm/{code_0801D79C.s => utils.s} (100%) rename asm/{code_08000108.s => veneer.s} (100%) create mode 100644 asm/vram.s create mode 100644 src/affine.c delete mode 100644 src/code_0808091C.c rename src/{code_0804AA84.c => enterPortalSubtask.c} (100%) rename src/{code_08018C58.c => kinstone.c} (100%) create mode 100644 src/screenTilemap.c rename src/{sub_080A3B84.c => subtask.c} (100%) rename src/{sub_080A554C.c => subtask2.c} (100%) rename src/{code_0805F9A0.c => text.c} (99%) rename src/{intro.c => title.c} (100%) rename src/{ezloNag.c => ui.c} (100%) diff --git a/asm/code_0801967C.s b/asm/beanstalkSubtask.s similarity index 100% rename from asm/code_0801967C.s rename to asm/beanstalkSubtask.s diff --git a/asm/code_0801C1D4.s b/asm/code_0801C1D4.s deleted file mode 100644 index 0432cd6d..00000000 --- a/asm/code_0801C1D4.s +++ /dev/null @@ -1,196 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C1D4 -sub_0801C1D4: @ 0x0801C1D4 - push {r4, lr} - movs r4, #0 -_0801C1D8: - lsls r1, r4, #5 - ldr r0, _0801C200 @ =gUnk_0200AF34 - adds r2, r1, r0 - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0801C1F8 - ldrb r0, [r2, #1] - lsls r0, r0, #4 - ldr r1, _0801C204 @ =gUnk_080C8F8C - adds r0, r0, r1 - ldr r1, [r0, #8] - adds r0, r2, #0 - bl _call_via_r1 -_0801C1F8: - adds r4, #1 - cmp r4, #0x17 - bls _0801C1D8 - pop {r4, pc} - .align 2, 0 -_0801C200: .4byte gUnk_0200AF34 -_0801C204: .4byte gUnk_080C8F8C - - thumb_func_start sub_0801C208 -sub_0801C208: @ 0x0801C208 - push {r4, r5, lr} - movs r5, #0 - ldr r4, _0801C250 @ =gOamCmd -_0801C20E: - lsls r1, r5, #5 - ldr r0, _0801C254 @ =gUnk_0200AF34 - adds r3, r1, r0 - ldrb r1, [r3] - movs r0, #3 - ands r0, r1 - cmp r0, #3 - bne _0801C248 - ldrh r0, [r3, #0xc] - strh r0, [r4] - ldrh r0, [r3, #0xe] - strh r0, [r4, #2] - ldrb r2, [r3, #1] - lsls r2, r2, #4 - ldr r0, _0801C258 @ =gUnk_080C8F8C - adds r2, r2, r0 - ldrh r0, [r2] - strh r0, [r4, #4] - ldrh r0, [r2, #2] - strh r0, [r4, #6] - ldrb r0, [r3, #0x18] - lsls r0, r0, #0xc - ldrh r1, [r3, #0x1a] - orrs r0, r1 - strh r0, [r4, #8] - ldrh r0, [r2, #6] - ldrb r1, [r3, #0x10] - bl sub_080ADA14 -_0801C248: - adds r5, #1 - cmp r5, #0x17 - bls _0801C20E - pop {r4, r5, pc} - .align 2, 0 -_0801C250: .4byte gOamCmd -_0801C254: .4byte gUnk_0200AF34 -_0801C258: .4byte gUnk_080C8F8C - - thumb_func_start sub_0801C25C -sub_0801C25C: @ 0x0801C25C - push {r4, r5, r6, r7, lr} - movs r4, #0 - ldr r5, _0801C2E4 @ =gUnk_0200AF34 - adds r6, r5, #0 - subs r6, #0x34 - movs r7, #0xd - rsbs r7, r7, #0 - ldr r3, _0801C2E8 @ =0x040000D4 -_0801C26C: - lsls r0, r4, #5 - adds r2, r0, r5 - ldrb r1, [r2] - movs r0, #3 - ands r0, r1 - cmp r0, #3 - bne _0801C2A8 - lsls r0, r1, #0x1c - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _0801C2A8 - adds r0, r7, #0 - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r2] - ldr r0, [r2, #0x1c] - str r0, [r3] - ldrh r0, [r2, #0x1a] - lsls r0, r0, #5 - ldr r1, _0801C2EC @ =0x06010000 - adds r0, r0, r1 - str r0, [r3, #4] - ldrb r0, [r2, #0x19] - lsls r0, r0, #3 - movs r1, #0x84 - lsls r1, r1, #0x18 - orrs r0, r1 - str r0, [r3, #8] - ldr r0, [r3, #8] -_0801C2A8: - adds r4, #1 - cmp r4, #0x17 - ble _0801C26C - adds r2, r6, #0 - ldrb r3, [r2, #0x13] - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #0 - bge _0801C2C8 - movs r1, #0x7f - ands r1, r3 - strb r1, [r2, #0x13] - movs r0, #0x8d - lsls r0, r0, #1 - bl sub_0801C2F0 -_0801C2C8: - ldrb r2, [r6, #0x14] - movs r0, #0x14 - ldrsb r0, [r6, r0] - cmp r0, #0 - bge _0801C2E0 - movs r1, #0x7f - ands r1, r2 - strb r1, [r6, #0x14] - movs r0, #0x93 - lsls r0, r0, #1 - bl sub_0801C2F0 -_0801C2E0: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801C2E4: .4byte gUnk_0200AF34 -_0801C2E8: .4byte 0x040000D4 -_0801C2EC: .4byte 0x06010000 - - thumb_func_start sub_0801C2F0 -sub_0801C2F0: @ 0x0801C2F0 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, r1, #0 - lsls r5, r4, #5 - ldr r1, _0801C330 @ =0x06010000 - adds r4, r5, r1 - movs r1, #0xa - bl Div - cmp r0, #9 - bls _0801C308 - movs r0, #9 -_0801C308: - ldr r2, _0801C334 @ =0x040000D4 - lsls r0, r0, #5 - ldr r3, _0801C338 @ =gUnk_085C4620 - adds r0, r0, r3 - str r0, [r2] - str r4, [r2, #4] - ldr r4, _0801C33C @ =0x84000008 - str r4, [r2, #8] - ldr r0, [r2, #8] - adds r1, #0xa - lsls r1, r1, #5 - adds r1, r1, r3 - str r1, [r2] - ldr r1, _0801C340 @ =0x06010020 - adds r0, r5, r1 - str r0, [r2, #4] - str r4, [r2, #8] - ldr r0, [r2, #8] - pop {r4, r5, pc} - .align 2, 0 -_0801C330: .4byte 0x06010000 -_0801C334: .4byte 0x040000D4 -_0801C338: .4byte gUnk_085C4620 -_0801C33C: .4byte 0x84000008 -_0801C340: .4byte 0x06010020 diff --git a/asm/code_0801C370.s b/asm/code_0801C370.s deleted file mode 100644 index f9c6146d..00000000 --- a/asm/code_0801C370.s +++ /dev/null @@ -1,151 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C370 -sub_0801C370: @ 0x0801C370 - push {r4, r5, r6, lr} - cmp r0, #0 - bne _0801C390 - ldr r0, _0801C388 @ =gSave - adds r1, r0, #0 - adds r1, #0xaa - ldrb r1, [r1] - lsrs r6, r1, #1 - adds r0, #0xc0 - ldrh r4, [r0] - ldr r5, _0801C38C @ =gUnk_0200AF00 - b _0801C398 - .align 2, 0 -_0801C388: .4byte gSave -_0801C38C: .4byte gUnk_0200AF00 -_0801C390: - ldr r0, _0801C470 @ =gUnk_0200AF00 - ldrb r6, [r0, #3] - ldrh r4, [r0, #0xe] - adds r5, r0, #0 -_0801C398: - movs r1, #0xcd - lsls r1, r1, #2 - adds r0, r5, #0 - bl MemClear - strb r6, [r5, #3] - strh r4, [r5, #0xe] - ldr r0, _0801C474 @ =gSave - adds r0, #0xab - ldrb r0, [r0] - lsrs r0, r0, #1 - strb r0, [r5, #4] - movs r0, #0xc - bl LoadPaletteGroup - movs r0, #0x10 - bl LoadGfxGroup - ldr r4, _0801C478 @ =gBG0Buffer - movs r1, #0x80 - lsls r1, r1, #4 - adds r0, r4, #0 - bl MemClear - ldr r1, _0801C47C @ =gScreen - str r4, [r1, #0x10] - ldr r0, _0801C480 @ =0x00001F0C - strh r0, [r1, #8] - ldrh r2, [r1] - movs r3, #0x80 - lsls r3, r3, #1 - adds r0, r3, #0 - orrs r0, r2 - strh r0, [r1] - ldr r1, _0801C484 @ =gUnk_03000000 - ldr r2, _0801C488 @ =0x00000427 - adds r0, r1, r2 - movs r2, #1 - strb r2, [r0] - ldr r3, _0801C48C @ =0x00000426 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _0801C490 @ =0x0000042E - adds r1, r1, r0 - strb r2, [r1] - movs r0, #0x7f - strb r0, [r5, #0x13] - strb r0, [r5, #0x14] - strb r0, [r5, #8] - bl sub_0801C6B0 - bl sub_0801C4B0 - bl sub_0801C85C - bl sub_0801C99C - movs r0, #0xd0 - strh r0, [r5, #0x16] - movs r0, #0xb8 - strh r0, [r5, #0x18] - movs r0, #0xd8 - strh r0, [r5, #0x1a] - movs r0, #0x1c - strh r0, [r5, #0x1c] - strh r0, [r5, #0x1e] - movs r0, #0xe - strh r0, [r5, #0x20] - adds r0, r5, #0 - adds r0, #0x34 - movs r1, #0xc0 - lsls r1, r1, #2 - bl MemClear - movs r0, #5 - movs r1, #9 - bl sub_0801CA6C - movs r0, #3 - movs r1, #0 - bl sub_0801CA6C - movs r0, #4 - movs r1, #0 - bl sub_0801CA6C - movs r0, #2 - movs r1, #0 - bl sub_0801CA6C - movs r0, #1 - movs r1, #0 - bl sub_0801CA6C - movs r0, #0 - movs r1, #0 - bl sub_0801CA6C - movs r0, #7 - movs r1, #0 - bl sub_0801CA6C - movs r0, #6 - movs r1, #0 - bl sub_0801CA6C - pop {r4, r5, r6, pc} - .align 2, 0 -_0801C470: .4byte gUnk_0200AF00 -_0801C474: .4byte gSave -_0801C478: .4byte gBG0Buffer -_0801C47C: .4byte gScreen -_0801C480: .4byte 0x00001F0C -_0801C484: .4byte gUnk_03000000 -_0801C488: .4byte 0x00000427 -_0801C48C: .4byte 0x00000426 -_0801C490: .4byte 0x0000042E - - thumb_func_start RefreshUI -RefreshUI: @ 0x0801C494 - ldr r1, _0801C49C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] - bx lr - .align 2, 0 -_0801C49C: .4byte gScreen - - thumb_func_start RecoverUI -RecoverUI: @ 0x0801C4A0 - ldr r1, _0801C4AC @ =gUnk_0200AF00 - movs r0, #0 - strb r0, [r1, #2] - strb r0, [r1, #0x10] - strb r0, [r1, #0xa] - bx lr - .align 2, 0 -_0801C4AC: .4byte gUnk_0200AF00 diff --git a/asm/code_0801C5E0.s b/asm/code_0801C5E0.s deleted file mode 100644 index 3d499d5f..00000000 --- a/asm/code_0801C5E0.s +++ /dev/null @@ -1,112 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C5E0 -sub_0801C5E0: @ 0x0801C5E0 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldr r7, _0801C650 @ =gUnk_085C4B20 - cmp r2, #0 - bne _0801C5F0 - ldr r0, _0801C654 @ =0xFFFFFD80 - adds r7, r7, r0 -_0801C5F0: - ldr r0, _0801C658 @ =0x000003FF - ands r0, r4 - lsls r6, r0, #5 - ldr r0, _0801C65C @ =0x0600C000 - adds r4, r6, r0 - cmp r3, #2 - beq _0801C620 - cmp r3, #3 - bne _0801C63C - adds r0, r5, #0 - movs r1, #0x64 - bl Div - adds r5, r1, #0 - ldr r1, _0801C660 @ =0x040000D4 - lsls r0, r0, #6 - adds r0, r7, r0 - str r0, [r1] - str r4, [r1, #4] - ldr r0, _0801C664 @ =0x84000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldr r0, _0801C668 @ =0x0600C040 - adds r4, r6, r0 -_0801C620: - adds r0, r5, #0 - movs r1, #0xa - bl Div - adds r5, r1, #0 - ldr r1, _0801C660 @ =0x040000D4 - lsls r0, r0, #6 - adds r0, r7, r0 - str r0, [r1] - str r4, [r1, #4] - ldr r0, _0801C664 @ =0x84000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - adds r4, #0x40 -_0801C63C: - ldr r1, _0801C660 @ =0x040000D4 - lsls r0, r5, #6 - adds r0, r7, r0 - str r0, [r1] - str r4, [r1, #4] - ldr r0, _0801C664 @ =0x84000010 - str r0, [r1, #8] - ldr r0, [r1, #8] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801C650: .4byte gUnk_085C4B20 -_0801C654: .4byte 0xFFFFFD80 -_0801C658: .4byte 0x000003FF -_0801C65C: .4byte 0x0600C000 -_0801C660: .4byte 0x040000D4 -_0801C664: .4byte 0x84000010 -_0801C668: .4byte 0x0600C040 - - thumb_func_start sub_0801C66C -sub_0801C66C: @ 0x0801C66C - push {lr} - ldr r1, _0801C6A4 @ =gUnk_0200AF00 - ldrb r0, [r1, #2] - cmp r0, #0 - beq _0801C6A2 - movs r0, #0 - strb r0, [r1, #2] - ldrb r0, [r1, #4] - movs r2, #1 - cmp r0, #0x28 - bls _0801C684 - movs r2, #2 -_0801C684: - ldr r0, _0801C6A8 @ =gUnk_02034CF0 - ldr r3, _0801C6AC @ =gScreen - movs r1, #0 -_0801C68A: - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - str r1, [r0, #0xc] - str r1, [r0, #0x10] - str r1, [r0, #0x14] - adds r0, #0x40 - subs r2, #1 - cmp r2, #0 - bgt _0801C68A - movs r0, #1 - strh r0, [r3, #0xe] -_0801C6A2: - pop {pc} - .align 2, 0 -_0801C6A4: .4byte gUnk_0200AF00 -_0801C6A8: .4byte gUnk_02034CF0 -_0801C6AC: .4byte gScreen diff --git a/asm/code_0801C85C.s b/asm/code_0801C85C.s deleted file mode 100644 index 9cfb23ac..00000000 --- a/asm/code_0801C85C.s +++ /dev/null @@ -1,869 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C85C -sub_0801C85C: @ 0x0801C85C - push {r4, r5, r6, lr} - movs r2, #0 - ldr r5, _0801C884 @ =gUnk_0200AF00 - ldrb r1, [r5, #1] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _0801C878 - ldr r0, _0801C888 @ =gPlayerState - adds r0, #0xa0 - ldrb r1, [r0] - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r2, r0, #0x1f -_0801C878: - cmp r2, #0 - bne _0801C88C - bl sub_0801C824 - b _0801C984 - .align 2, 0 -_0801C884: .4byte gUnk_0200AF00 -_0801C888: .4byte gPlayerState -_0801C88C: - ldrb r0, [r5, #4] - ldr r4, _0801C92C @ =gUnk_02034D30 - cmp r0, #0x28 - bls _0801C896 - adds r4, #0x40 -_0801C896: - ldr r0, _0801C930 @ =gPlayerState - adds r0, #0xa4 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r0, #0x13 - movs r1, #0x14 - bl Div - adds r1, r0, #0 - cmp r1, #0x28 - bls _0801C8AE - movs r1, #0x28 -_0801C8AE: - ldrb r0, [r5, #6] - cmp r0, #0 - beq _0801C8BA - ldrb r0, [r5, #7] - cmp r0, r1 - beq _0801C910 -_0801C8BA: - movs r6, #1 - strb r6, [r5, #6] - strb r1, [r5, #7] - adds r0, r1, #0 - movs r1, #4 - bl Div - adds r3, r0, #0 - adds r5, r1, #0 - ldr r1, _0801C934 @ =0x0000F016 - adds r0, r1, #0 - strh r0, [r4] - ldr r1, _0801C938 @ =0x0000F416 - adds r0, r1, #0 - strh r0, [r4, #0x16] - ldr r2, _0801C93C @ =0x040000D4 - movs r0, #0xa - subs r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0801C940 @ =gUnk_080C8F54 - adds r0, r0, r1 - str r0, [r2] - adds r0, r4, #2 - str r0, [r2, #4] - ldr r0, _0801C944 @ =0x8000000A - str r0, [r2, #8] - ldr r0, [r2, #8] - cmp r5, #0 - beq _0801C90C - lsls r2, r3, #1 - adds r2, r2, r4 - adds r0, r5, #0 - adds r0, #0x17 - ldr r3, _0801C948 @ =0x000003FF - adds r1, r3, #0 - ands r0, r1 - movs r3, #0xf0 - lsls r3, r3, #8 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2, #2] -_0801C90C: - ldr r0, _0801C94C @ =gScreen - strh r6, [r0, #0xe] -_0801C910: - ldr r0, _0801C930 @ =gPlayerState - adds r0, #0xa0 - ldrb r0, [r0] - cmp r0, #5 - bgt _0801C962 - cmp r0, #4 - blt _0801C962 - ldr r2, _0801C950 @ =gUnk_0200AF00 - ldrb r1, [r2, #9] - adds r4, r2, #0 - cmp r0, #4 - bne _0801C954 - adds r0, r1, #2 - b _0801C956 - .align 2, 0 -_0801C92C: .4byte gUnk_02034D30 -_0801C930: .4byte gPlayerState -_0801C934: .4byte 0x0000F016 -_0801C938: .4byte 0x0000F416 -_0801C93C: .4byte 0x040000D4 -_0801C940: .4byte gUnk_080C8F54 -_0801C944: .4byte 0x8000000A -_0801C948: .4byte 0x000003FF -_0801C94C: .4byte gScreen -_0801C950: .4byte gUnk_0200AF00 -_0801C954: - adds r0, r1, #1 -_0801C956: - strb r0, [r2, #9] - ldrb r0, [r4, #9] - lsrs r3, r0, #4 - movs r0, #3 - ands r3, r0 - b _0801C966 -_0801C962: - movs r3, #0 - ldr r4, _0801C988 @ =gUnk_0200AF00 -_0801C966: - ldrb r0, [r4, #8] - cmp r3, r0 - beq _0801C984 - strb r3, [r4, #8] - ldr r4, _0801C98C @ =0x0600C2C0 - ldr r1, _0801C990 @ =0x040000D4 - ldr r2, _0801C994 @ =gUnk_080C8F7C - lsls r0, r3, #2 - adds r0, r0, r2 - ldr r0, [r0] - str r0, [r1] - str r4, [r1, #4] - ldr r0, _0801C998 @ =0x84000030 - str r0, [r1, #8] - ldr r0, [r1, #8] -_0801C984: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801C988: .4byte gUnk_0200AF00 -_0801C98C: .4byte 0x0600C2C0 -_0801C990: .4byte 0x040000D4 -_0801C994: .4byte gUnk_080C8F7C -_0801C998: .4byte 0x84000030 - - thumb_func_start sub_0801C99C -sub_0801C99C: @ 0x0801C99C - push {r4, r5, lr} - ldr r4, _0801C9E0 @ =gUnk_0200AF00 - ldrb r1, [r4, #1] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0801C9B2 - bl sub_08052724 - cmp r0, #0 - bne _0801C9EC -_0801C9B2: - ldrb r0, [r4, #0x10] - cmp r0, #0 - beq _0801CA50 - movs r0, #0 - strb r0, [r4, #0x10] - ldr r2, _0801C9E4 @ =gUnk_020350E2 - strh r0, [r2] - strh r0, [r2, #2] - strh r0, [r2, #4] - strh r0, [r2, #6] - adds r1, r2, #0 - adds r1, #0x40 - strh r0, [r1] - adds r1, #2 - strh r0, [r1] - adds r1, #2 - strh r0, [r1] - adds r1, #2 - strh r0, [r1] - ldr r1, _0801C9E8 @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] - b _0801CA50 - .align 2, 0 -_0801C9E0: .4byte gUnk_0200AF00 -_0801C9E4: .4byte gUnk_020350E2 -_0801C9E8: .4byte gScreen -_0801C9EC: - ldrb r0, [r4, #0x10] - cmp r0, #0 - bne _0801CA1E - ldr r2, _0801CA54 @ =gUnk_020350E2 - adds r1, r2, #0 - adds r1, #0x40 - ldr r3, _0801CA58 @ =0x0000F01C - strh r3, [r2] - adds r0, r3, #1 - strh r0, [r2, #2] - adds r0, r3, #2 - strh r0, [r1] - adds r0, r3, #3 - strh r0, [r1, #2] - adds r3, #0x5a - strh r3, [r2, #4] - adds r0, r3, #1 - strh r0, [r1, #4] - adds r0, r3, #2 - strh r0, [r2, #6] - adds r0, r3, #3 - strh r0, [r1, #6] - ldr r1, _0801CA5C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_0801CA1E: - ldr r0, _0801CA60 @ =gSave - ldr r3, _0801CA64 @ =gArea - ldrb r1, [r3, #3] - ldr r5, _0801CA68 @ =0x0000045C - adds r2, r0, r5 - adds r1, r1, r2 - ldrb r0, [r4, #0x12] - ldrb r1, [r1] - cmp r0, r1 - bne _0801CA38 - ldrb r0, [r4, #0x10] - cmp r0, #0 - bne _0801CA50 -_0801CA38: - movs r0, #2 - strb r0, [r4, #0x10] - ldrb r0, [r3, #3] - adds r0, r0, r2 - ldrb r0, [r0] - strb r0, [r4, #0x12] - ldrb r1, [r4, #0x12] - movs r0, #0x76 - movs r2, #0 - movs r3, #2 - bl sub_0801C5E0 -_0801CA50: - pop {r4, r5, pc} - .align 2, 0 -_0801CA54: .4byte gUnk_020350E2 -_0801CA58: .4byte 0x0000F01C -_0801CA5C: .4byte gScreen -_0801CA60: .4byte gSave -_0801CA64: .4byte gArea -_0801CA68: .4byte 0x0000045C - - thumb_func_start sub_0801CA6C -sub_0801CA6C: @ 0x0801CA6C - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r6, r1, #0 - movs r3, #0 - ldr r7, _0801CAA8 @ =gUnk_0200AF34 - movs r0, #1 - mov ip, r0 - ldr r1, _0801CAAC @ =gUnk_080C8F8C - lsls r0, r5, #4 - adds r4, r0, r1 -_0801CA80: - lsls r0, r3, #5 - adds r1, r0, r7 - ldrb r2, [r1] - movs r0, #1 - ands r0, r2 - cmp r0, #0 - bne _0801CAB0 - strb r5, [r1, #1] - strb r6, [r1, #2] - movs r0, #0xff - strb r0, [r1, #0x10] - mov r0, ip - orrs r0, r2 - strb r0, [r1] - ldrh r0, [r4, #4] - strh r0, [r1, #0x1a] - ldrb r0, [r4, #0xc] - strb r0, [r1, #3] - b _0801CAB6 - .align 2, 0 -_0801CAA8: .4byte gUnk_0200AF34 -_0801CAAC: .4byte gUnk_080C8F8C -_0801CAB0: - adds r3, #1 - cmp r3, #0x17 - bls _0801CA80 -_0801CAB6: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0801CAB8 -sub_0801CAB8: @ 0x0801CAB8 - push {lr} - str r1, [r0, #0x14] - ldrb r2, [r1, #1] - strb r2, [r0, #0x11] - ldrb r2, [r1, #2] - strb r2, [r0, #0x12] - ldrb r2, [r1, #3] - strb r2, [r0, #0x13] - ldrb r1, [r1] - bl sub_0801CAFC - pop {pc} - - thumb_func_start sub_0801CAD0 -sub_0801CAD0: @ 0x0801CAD0 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0x11] - subs r0, #1 - strb r0, [r2, #0x11] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0801CAF8 - ldr r1, [r2, #0x14] - movs r0, #3 - ldrsb r0, [r1, r0] - cmp r0, #0 - bge _0801CAF0 - ldrb r0, [r1, #4] - lsls r0, r0, #2 - subs r1, r1, r0 -_0801CAF0: - adds r1, #4 - adds r0, r2, #0 - bl sub_0801CAB8 -_0801CAF8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801CAFC -sub_0801CAFC: @ 0x0801CAFC - push {lr} - adds r2, r0, #0 - adds r3, r1, #0 - ldrb r0, [r2, #1] - lsls r0, r0, #4 - ldr r1, _0801CB1C @ =gUnk_080C8F8C - adds r1, r0, r1 - ldrb r0, [r2, #0x10] - cmp r3, r0 - beq _0801CB18 - strb r3, [r2, #0x10] - adds r0, r2, #0 - bl sub_0801CB20 -_0801CB18: - pop {pc} - .align 2, 0 -_0801CB1C: .4byte gUnk_080C8F8C - - thumb_func_start sub_0801CB20 -sub_0801CB20: @ 0x0801CB20 - push {lr} - adds r3, r0, #0 - ldrb r0, [r1, #0xe] - cmp r0, #0 - bne _0801CB76 - ldrh r1, [r1, #6] - lsls r1, r1, #4 - ldr r0, _0801CB54 @ =gSpritePtrs - adds r1, r1, r0 - ldrb r0, [r3, #0x10] - lsls r0, r0, #2 - ldr r2, [r1, #4] - adds r2, r2, r0 - ldrh r0, [r2, #2] - lsls r0, r0, #5 - ldr r1, [r1, #8] - adds r1, r1, r0 - ldrb r2, [r2] - cmp r2, #0 - bne _0801CB58 - ldrb r1, [r3] - movs r0, #0xd - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r3] - b _0801CB74 - .align 2, 0 -_0801CB54: .4byte gSpritePtrs -_0801CB58: - ldrb r0, [r3, #0x19] - cmp r0, r2 - bne _0801CB64 - ldr r0, [r3, #0x1c] - cmp r0, r1 - beq _0801CB74 -_0801CB64: - str r1, [r3, #0x1c] - ldrb r0, [r3] - movs r1, #0xd - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #4 - orrs r1, r0 - strb r1, [r3] -_0801CB74: - strb r2, [r3, #0x19] -_0801CB76: - pop {pc} - - thumb_func_start sub_0801CB78 -sub_0801CB78: @ 0x0801CB78 - push {lr} - ldr r2, _0801CB8C @ =gUnk_080C903C - ldrb r1, [r0, #4] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801CB8C: .4byte gUnk_080C903C - - thumb_func_start sub_0801CB90 -sub_0801CB90: @ 0x0801CB90 - push {lr} - ldr r3, _0801CBC4 @ =gUnk_0200AF00 - ldrb r1, [r0, #1] - lsls r1, r1, #1 - adds r2, r3, #0 - adds r2, #0x16 - adds r1, r1, r2 - ldrh r1, [r1] - strh r1, [r0, #0xc] - ldrb r1, [r0, #1] - lsls r1, r1, #1 - adds r3, #0x1c - adds r1, r1, r3 - ldrh r1, [r1] - subs r1, #0x20 - strh r1, [r0, #0xe] - movs r1, #1 - strb r1, [r0, #4] - ldrb r1, [r0] - movs r2, #2 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r0, #1] - bl sub_0801CAFC - pop {pc} - .align 2, 0 -_0801CBC4: .4byte gUnk_0200AF00 - - thumb_func_start sub_0801CBC8 -sub_0801CBC8: @ 0x0801CBC8 - push {r4, r5, r6, lr} - adds r5, r0, #0 - ldrb r0, [r5, #2] - movs r6, #8 - cmp r0, #0 - bne _0801CC10 - movs r6, #4 - cmp r0, #0 - bne _0801CC10 - ldr r3, _0801CC08 @ =gUnk_0200AF00 - ldrb r0, [r3, #1] - ldrb r2, [r5, #1] - asrs r0, r2 - movs r1, #1 - ands r0, r1 - cmp r0, #0 - bne _0801CBF6 - ldr r0, _0801CC0C @ =gMessage - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _0801CC10 -_0801CBF6: - lsls r0, r2, #1 - adds r1, r3, #0 - adds r1, #0x1c - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - adds r1, r0, #0 - subs r1, #0x28 - b _0801CC1E - .align 2, 0 -_0801CC08: .4byte gUnk_0200AF00 -_0801CC0C: .4byte gMessage -_0801CC10: - ldr r1, _0801CC7C @ =gUnk_0200AF00 - ldrb r0, [r5, #1] - lsls r0, r0, #1 - adds r1, #0x1c - adds r0, r0, r1 - movs r2, #0 - ldrsh r1, [r0, r2] -_0801CC1E: - movs r2, #0xe - ldrsh r0, [r5, r2] - subs r4, r1, r0 - adds r1, r4, #0 - cmp r4, #0 - bge _0801CC2C - rsbs r4, r4, #0 -_0801CC2C: - cmp r6, r4 - bgt _0801CC32 - adds r4, r6, #0 -_0801CC32: - adds r0, r1, #0 - bl sub_08000E44 - muls r4, r0, r4 - cmp r4, #0 - beq _0801CC44 - ldrh r0, [r5, #0xe] - adds r0, r0, r4 - strh r0, [r5, #0xe] -_0801CC44: - ldr r0, _0801CC7C @ =gUnk_0200AF00 - ldrb r1, [r5, #1] - lsls r1, r1, #1 - adds r0, #0x16 - adds r1, r1, r0 - movs r0, #0 - ldrsh r1, [r1, r0] - movs r2, #0xc - ldrsh r0, [r5, r2] - subs r4, r1, r0 - adds r1, r4, #0 - cmp r4, #0 - bge _0801CC60 - rsbs r4, r4, #0 -_0801CC60: - cmp r6, r4 - bgt _0801CC66 - adds r4, r6, #0 -_0801CC66: - adds r0, r1, #0 - bl sub_08000E44 - muls r4, r0, r4 - cmp r4, #0 - beq _0801CC78 - ldrh r0, [r5, #0xc] - adds r0, r0, r4 - strh r0, [r5, #0xc] -_0801CC78: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801CC7C: .4byte gUnk_0200AF00 - - thumb_func_start sub_0801CC80 -sub_0801CC80: @ 0x0801CC80 - push {r4, r5, lr} - ldrb r1, [r0, #1] - movs r0, #3 - eors r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - ldr r5, _0801CCAC @ =gSave - adds r1, r5, #0 - adds r1, #0xb4 - adds r0, r0, r1 - ldrb r4, [r0] - adds r0, r4, #0 - bl ItemIsBottle - cmp r0, #0 - beq _0801CCA8 - adds r0, r5, r4 - adds r0, #0x9a - ldrb r4, [r0] -_0801CCA8: - adds r0, r4, #0 - pop {r4, r5, pc} - .align 2, 0 -_0801CCAC: .4byte gSave - - thumb_func_start sub_0801CCB0 -sub_0801CCB0: @ 0x0801CCB0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r1, [r4] - movs r0, #3 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - adds r0, r4, #0 - bl sub_0801CC80 - adds r1, r0, #0 - cmp r1, #0 - beq _0801CD90 - ldrb r0, [r4, #8] - cmp r0, r1 - beq _0801CCE0 - strb r1, [r4, #8] - ldr r0, _0801CD1C @ =gSpriteAnimations_322 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl sub_0801CAB8 -_0801CCE0: - ldrb r0, [r4, #1] - movs r1, #3 - eors r0, r1 - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r6, r1, #0x1f - ldr r3, _0801CD20 @ =gUnk_0200AF13 - cmp r6, #0 - beq _0801CCF4 - adds r3, #1 -_0801CCF4: - ldrb r0, [r4, #8] - cmp r0, #7 - blt _0801CD60 - cmp r0, #8 - ble _0801CD28 - cmp r0, #0xa - bgt _0801CD60 - ldr r1, _0801CD24 @ =gSave - adds r0, r1, #0 - adds r0, #0xad - ldrb r2, [r0] - ldrb r0, [r3] - adds r5, r1, #0 - cmp r0, r2 - beq _0801CD4C - adds r0, r2, #0 - adds r0, #0x80 - strb r0, [r3] - b _0801CD4C - .align 2, 0 -_0801CD1C: .4byte gSpriteAnimations_322 -_0801CD20: .4byte gUnk_0200AF13 -_0801CD24: .4byte gSave -_0801CD28: - ldr r5, _0801CD44 @ =gSave - adds r0, r5, #0 - adds r0, #0xac - ldrb r2, [r0] - ldrb r0, [r3] - cmp r0, r2 - beq _0801CD3C - adds r0, r2, #0 - adds r0, #0x80 - strb r0, [r3] -_0801CD3C: - ldr r1, _0801CD48 @ =gBombBagSizes - adds r0, r5, #0 - adds r0, #0xae - b _0801CD52 - .align 2, 0 -_0801CD44: .4byte gSave -_0801CD48: .4byte gBombBagSizes -_0801CD4C: - ldr r1, _0801CD5C @ =gQuiverSizes - adds r0, r5, #0 - adds r0, #0xaf -_0801CD52: - ldrb r0, [r0] - adds r0, r0, r1 - ldrb r0, [r0] - b _0801CD64 - .align 2, 0 -_0801CD5C: .4byte gQuiverSizes -_0801CD60: - movs r0, #1 - movs r2, #0 -_0801CD64: - movs r1, #3 - cmp r0, r2 - bhi _0801CD6C - movs r1, #4 -_0801CD6C: - strb r1, [r4, #0x18] - adds r0, r6, #0 - bl sub_0801CE24 - adds r1, r0, #0 - cmp r1, #0 - beq _0801CD90 - ldrh r0, [r1, #0xc] - strh r0, [r4, #0xc] - ldrh r0, [r1, #0xe] - strh r0, [r4, #0xe] - ldrb r0, [r4] - movs r1, #2 - orrs r0, r1 - strb r0, [r4] - adds r0, r4, #0 - bl sub_0801CAD0 -_0801CD90: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0801CD94 -sub_0801CD94: @ 0x0801CD94 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #2] - ldr r1, _0801CDC0 @ =gUnk_0200AF00 - cmp r0, #9 - bne _0801CDD4 - adds r0, r1, #0 - adds r0, #0x2f - ldrb r2, [r0] - cmp r2, #0 - bne _0801CDCE - ldr r0, _0801CDC4 @ =gArea - ldrb r0, [r0, #0x18] - cmp r0, #2 - beq _0801CDC8 - cmp r0, #3 - beq _0801CDCC - adds r0, r1, #0 - adds r0, #0x2c - ldrb r2, [r0] - b _0801CDCE - .align 2, 0 -_0801CDC0: .4byte gUnk_0200AF00 -_0801CDC4: .4byte gArea -_0801CDC8: - movs r2, #0xb - b _0801CDCE -_0801CDCC: - movs r2, #0xa -_0801CDCE: - adds r0, r1, #0 - adds r0, #0x32 - strb r2, [r0] -_0801CDD4: - adds r0, r1, #0 - adds r0, #0x30 - ldrb r1, [r4, #3] - adds r0, r0, r1 - ldrb r2, [r0] - ldrb r1, [r4] - movs r0, #3 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4] - cmp r2, #0 - beq _0801CE1E - ldr r1, _0801CE20 @ =gUnk_080C9044 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - adds r0, r0, r1 - ldrb r0, [r0] - adds r2, r2, r0 - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_0801CAFC - ldrb r0, [r4, #3] - bl sub_0801CE24 - adds r1, r0, #0 - cmp r1, #0 - beq _0801CE1E - ldrh r0, [r1, #0xc] - strh r0, [r4, #0xc] - ldrh r0, [r1, #0xe] - strh r0, [r4, #0xe] - ldrb r0, [r4] - movs r1, #2 - orrs r0, r1 - strb r0, [r4] -_0801CE1E: - pop {r4, pc} - .align 2, 0 -_0801CE20: .4byte gUnk_080C9044 - - thumb_func_start sub_0801CE24 -sub_0801CE24: @ 0x0801CE24 - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r4, #0 - movs r6, #1 - ldr r3, _0801CE44 @ =gUnk_0200AF34 - adds r2, r3, #0 -_0801CE30: - ldrb r1, [r2] - adds r0, r6, #0 - ands r0, r1 - cmp r0, #0 - beq _0801CE48 - ldrb r0, [r2, #1] - cmp r5, r0 - bne _0801CE48 - adds r0, r3, #0 - b _0801CE54 - .align 2, 0 -_0801CE44: .4byte gUnk_0200AF34 -_0801CE48: - adds r2, #0x20 - adds r3, #0x20 - adds r4, #1 - cmp r4, #0x17 - bls _0801CE30 - movs r0, #0 -_0801CE54: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0801CE58 -sub_0801CE58: @ 0x0801CE58 - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3] - movs r4, #3 - rsbs r4, r4, #0 - ands r4, r0 - strb r4, [r3] - ldr r2, _0801CEB8 @ =gUnk_0200AF00 - ldrb r1, [r2, #1] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - bne _0801CEB4 - ldr r0, _0801CEBC @ =gMessage - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0801CEB4 - ldrb r2, [r2, #3] - cmp r2, #0 - beq _0801CEB4 - movs r0, #2 - adds r1, r4, #0 - orrs r1, r0 - strb r1, [r3] - adds r0, r2, #3 - lsrs r0, r0, #2 - lsls r0, r0, #3 - adds r1, r0, #3 - movs r4, #0xc - cmp r2, #0x28 - bls _0801CE9E - movs r4, #0x14 - subs r1, #0x50 -_0801CE9E: - strh r1, [r3, #0xc] - strh r4, [r3, #0xe] - movs r1, #3 - ands r1, r2 - cmp r1, #0 - bne _0801CEAC - movs r1, #4 -_0801CEAC: - adds r1, #0x71 - adds r0, r3, #0 - bl sub_0801CAFC -_0801CEB4: - pop {r4, pc} - .align 2, 0 -_0801CEB8: .4byte gUnk_0200AF00 -_0801CEBC: .4byte gMessage diff --git a/asm/code_08056418.s b/asm/code_08056418.s deleted file mode 100644 index c83ed8a8..00000000 --- a/asm/code_08056418.s +++ /dev/null @@ -1,25 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_08057044 -sub_08057044: @ 0x08057044 - push {r4, r5, lr} - sub sp, #8 - adds r5, r1, #0 - adds r4, r2, #0 - mov r1, sp - bl sub_08056FEC - ldr r2, [sp] - movs r1, #3 - subs r1, r1, r0 - lsls r1, r1, #3 - lsls r2, r1 - orrs r2, r4 - str r2, [r5] - add sp, #8 - pop {r4, r5, pc} diff --git a/asm/code_0805EC04.s b/asm/code_0805EC04.s index 9b095c0e..58307ec8 100644 --- a/asm/code_0805EC04.s +++ b/asm/code_0805EC04.s @@ -221,1200 +221,3 @@ _0805EEAC: .align 2, 0 _0805EEB0: .4byte gScreenTransition - thumb_func_start sub_0805EEB4 -sub_0805EEB4: @ 0x0805EEB4 - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - adds r3, r1, #0 - strh r3, [r7, #8] - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r1, [r0, #7] - cmp r1, #1 - bls _0805EED6 - lsrs r0, r3, #8 - cmp r0, #1 - bne _0805EED6 - movs r0, #0x8c - lsls r0, r0, #1 - cmp r3, r0 - bhi _0805EED6 - movs r1, #3 -_0805EED6: - ldr r0, _0805EF14 @ =gUnk_08109214 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r2, [r1] - lsrs r0, r3, #8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x16 - adds r0, r0, r2 - ldr r4, [r0] - adds r2, r2, r4 - lsls r0, r3, #0x18 - lsrs r0, r0, #0x16 - adds r0, r0, r2 - ldr r4, [r0] - ldr r0, [r1] - ldr r1, [r0] - lsrs r1, r1, #2 - ldr r0, [r2] - lsrs r6, r0, #2 - movs r5, #0 - ldrh r3, [r7, #8] - lsrs r0, r3, #8 - cmp r0, r1 - bhs _0805EF0E - lsls r0, r3, #0x18 - lsrs r0, r0, #0x18 - cmp r0, r6 - blo _0805EF18 -_0805EF0E: - movs r5, #1 - b _0805EF22 - .align 2, 0 -_0805EF14: .4byte gUnk_08109214 -_0805EF18: - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, #0 - bne _0805EF22 - movs r5, #2 -_0805EF22: - cmp r5, #2 - bhi _0805EF2E - cmp r5, #1 - blo _0805EF2E - ldr r2, _0805EF3C @ =gUnk_08109244 - movs r4, #0 -_0805EF2E: - adds r2, r2, r4 - adds r0, r7, #0 - adds r1, r2, #0 - bl sub_0805EF40 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805EF3C: .4byte gUnk_08109244 - - thumb_func_start sub_0805EF40 -sub_0805EF40: @ 0x0805EF40 - push {r4, lr} - adds r3, r0, #0 - adds r4, r1, #0 - ldrb r2, [r3] - movs r0, #1 - ands r0, r2 - cmp r0, #0 - beq _0805EF70 - lsls r1, r2, #0x1b - lsrs r0, r1, #0x1c - cmp r0, #6 - bls _0805EF5C - movs r0, #0 - b _0805EF8A -_0805EF5C: - lsrs r0, r1, #0x1c - adds r0, #1 - movs r1, #0xf - ands r0, r1 - lsls r0, r0, #1 - movs r1, #0x1f - rsbs r1, r1, #0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] -_0805EF70: - ldrb r0, [r3] - lsls r0, r0, #0x1b - lsrs r0, r0, #0x1c - lsls r0, r0, #2 - adds r1, r3, #0 - adds r1, #0x10 - adds r1, r1, r0 - str r4, [r1] - ldrb r0, [r3] - movs r1, #1 - orrs r0, r1 - strb r0, [r3] - movs r0, #1 -_0805EF8A: - pop {r4, pc} - - thumb_func_start sub_0805EF8C -sub_0805EF8C: @ 0x0805EF8C - push {lr} - adds r2, r0, #0 - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0805EFAE - lsls r0, r1, #0x1b - lsrs r0, r0, #0x1c - lsls r0, r0, #2 - adds r2, #0x10 - adds r2, r2, r0 - ldr r1, [r2] - ldrb r0, [r1] - adds r1, #1 - str r1, [r2] - b _0805EFB0 -_0805EFAE: - movs r0, #0 -_0805EFB0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0805EFB4 -sub_0805EFB4: @ 0x0805EFB4 - push {r4, lr} - adds r3, r0, #0 - ldrb r2, [r3] - lsls r1, r2, #0x1b - lsrs r4, r1, #0x1c - movs r0, #0x1e - ands r0, r2 - cmp r0, #0 - beq _0805EFDC - adds r0, r4, #0 - subs r0, #1 - movs r1, #0xf - ands r0, r1 - lsls r0, r0, #1 - movs r1, #0x1f - rsbs r1, r1, #0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] - b _0805EFE4 -_0805EFDC: - movs r0, #2 - rsbs r0, r0, #0 - ands r0, r2 - strb r0, [r3] -_0805EFE4: - adds r0, r4, #0 - pop {r4, pc} - - thumb_func_start GetCharacter -GetCharacter: @ 0x0805EFE8 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 -_0805EFEC: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - strb r5, [r6, #1] - movs r7, #0 - cmp r5, #0xf - bls _0805EFFE - b _0805F22C -_0805EFFE: - lsls r0, r5, #2 - ldr r1, _0805F008 @ =_0805F00C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805F008: .4byte _0805F00C -_0805F00C: @ jump table - .4byte _0805F04C @ case 0 - .4byte _0805F058 @ case 1 - .4byte _0805F06E @ case 2 - .4byte _0805F07A @ case 3 - .4byte _0805F090 @ case 4 - .4byte _0805F130 @ case 5 - .4byte _0805F150 @ case 6 - .4byte _0805F196 @ case 7 - .4byte _0805F1C0 @ case 8 - .4byte _0805F1CC @ case 9 - .4byte _0805F1D8 @ case 10 - .4byte _0805F1DC @ case 11 - .4byte _0805F1EC @ case 12 - .4byte _0805F1FC @ case 13 - .4byte _0805F20C @ case 14 - .4byte _0805F21C @ case 15 -_0805F04C: - adds r0, r6, #0 - bl sub_0805EFB4 - adds r7, r0, #0 - movs r5, #0 - b _0805F232 -_0805F058: - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r0, #0 - strh r4, [r6, #2] - movs r5, #6 - cmp r4, #0xa - bls _0805F06A - b _0805F232 -_0805F06A: - movs r5, #5 - b _0805F232 -_0805F06E: - adds r0, r6, #0 - bl sub_0805EF8C - strh r0, [r6, #2] - movs r5, #7 - b _0805F232 -_0805F07A: - adds r0, r6, #0 - bl sub_0805EF8C - lsls r4, r0, #8 - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r4, r0 - strh r4, [r6, #2] - movs r5, #8 - b _0805F232 -_0805F090: - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r0, #0 - cmp r4, #0x15 - bhi _0805F12C - lsls r0, r4, #2 - ldr r1, _0805F0A8 @ =_0805F0AC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805F0A8: .4byte _0805F0AC -_0805F0AC: @ jump table - .4byte _0805F104 @ case 0 - .4byte _0805F104 @ case 1 - .4byte _0805F104 @ case 2 - .4byte _0805F104 @ case 3 - .4byte _0805F104 @ case 4 - .4byte _0805F104 @ case 5 - .4byte _0805F104 @ case 6 - .4byte _0805F104 @ case 7 - .4byte _0805F104 @ case 8 - .4byte _0805F104 @ case 9 - .4byte _0805F104 @ case 10 - .4byte _0805F104 @ case 11 - .4byte _0805F104 @ case 12 - .4byte _0805F104 @ case 13 - .4byte _0805F104 @ case 14 - .4byte _0805F104 @ case 15 - .4byte _0805F108 @ case 16 - .4byte _0805F114 @ case 17 - .4byte _0805F118 @ case 18 - .4byte _0805F11C @ case 19 - .4byte _0805F120 @ case 20 - .4byte _0805F120 @ case 21 -_0805F104: - movs r5, #9 - b _0805F12C -_0805F108: - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r0, #0 - movs r5, #0xa - b _0805F12C -_0805F114: - movs r5, #2 - b _0805F12C -_0805F118: - movs r5, #3 - b _0805F12C -_0805F11C: - movs r5, #4 - b _0805F12C -_0805F120: - movs r5, #0xb - movs r1, #0x14 - eors r1, r4 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r4, r0, #0x1f -_0805F12C: - strh r4, [r6, #2] - b _0805F232 -_0805F130: - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r0, #0 - cmp r4, #0xff - bne _0805F140 - movs r4, #0 - b _0805F14A -_0805F140: - lsls r4, r4, #8 - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r4, r0 -_0805F14A: - strh r4, [r6, #6] - movs r5, #0xc - b _0805F232 -_0805F150: - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r0, #0 - cmp r4, #4 - bls _0805F162 - cmp r4, #5 - beq _0805F17C - b _0805EFEC -_0805F162: - ldr r1, [r6, #0xc] - cmp r1, #0 - bne _0805F16A - ldr r1, _0805F178 @ =gUnk_08109230 -_0805F16A: - lsls r0, r4, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r6, #0 - bl sub_0805EF40 - b _0805EFEC - .align 2, 0 -_0805F178: .4byte gUnk_08109230 -_0805F17C: - adds r0, r6, #0 - bl sub_0805EF8C - lsls r4, r0, #8 - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r4, r0 - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_0805EEB4 - b _0805EFEC -_0805F196: - adds r0, r6, #0 - bl sub_0805EF8C - lsls r4, r0, #8 - adds r0, r6, #0 - bl sub_0805EF8C - adds r4, r4, r0 - ldrb r1, [r6] - movs r0, #2 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #0x1f - rsbs r1, r1, #0 - ands r0, r1 - strb r0, [r6] - adds r0, r6, #0 - adds r1, r4, #0 - bl sub_0805EEB4 - b _0805EFEC -_0805F1C0: - adds r0, r6, #0 - bl sub_0805EF8C - strh r0, [r6, #2] - movs r5, #0xd - b _0805F232 -_0805F1CC: - adds r0, r6, #0 - bl sub_0805EF8C - strh r0, [r6, #2] - movs r5, #0xe - b _0805F232 -_0805F1D8: - movs r5, #1 - b _0805F232 -_0805F1DC: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - movs r0, #0x80 - lsls r0, r0, #3 - orrs r5, r0 - b _0805F232 -_0805F1EC: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - movs r0, #0xe0 - lsls r0, r0, #3 - orrs r5, r0 - b _0805F232 -_0805F1FC: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - movs r0, #0xa0 - lsls r0, r0, #3 - orrs r5, r0 - b _0805F232 -_0805F20C: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - movs r0, #0xc0 - lsls r0, r0, #3 - orrs r5, r0 - b _0805F232 -_0805F21C: - adds r0, r6, #0 - bl sub_0805EF8C - adds r5, r0, #0 - movs r0, #0xc0 - lsls r0, r0, #2 - orrs r5, r0 - b _0805F232 -_0805F22C: - movs r0, #0x80 - lsls r0, r0, #1 - adds r5, r5, r0 -_0805F232: - cmp r7, #0 - beq _0805F238 - b _0805EFEC -_0805F238: - lsrs r0, r5, #8 - cmp r0, #0 - beq _0805F256 - ldrb r0, [r6] - lsls r0, r0, #0x19 - lsrs r0, r0, #0x1e - cmp r0, #0 - beq _0805F254 - cmp r0, #1 - bne _0805F254 - adds r0, r5, #0 - bl sub_0805F9A0 - adds r5, r0, #0 -_0805F254: - strh r5, [r6, #4] -_0805F256: - adds r0, r5, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_0805F25C -sub_0805F25C: @ 0x0805F25C - push {lr} - adds r2, r0, #0 - lsrs r3, r2, #8 - movs r0, #0xf - ands r3, r0 - movs r0, #0xff - ands r2, r0 - cmp r3, #8 - bhi _0805F2B6 - lsls r0, r3, #2 - ldr r1, _0805F278 @ =_0805F27C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805F278: .4byte _0805F27C -_0805F27C: @ jump table - .4byte _0805F2A0 @ case 0 - .4byte _0805F2A0 @ case 1 - .4byte _0805F2B6 @ case 2 - .4byte _0805F2B6 @ case 3 - .4byte _0805F2B6 @ case 4 - .4byte _0805F2B4 @ case 5 - .4byte _0805F2B4 @ case 6 - .4byte _0805F2B4 @ case 7 - .4byte _0805F2B4 @ case 8 -_0805F2A0: - cmp r2, #0x7f - bls _0805F2B6 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - cmp r0, #0 - beq _0805F2B6 - subs r2, #0x80 - movs r3, #2 - b _0805F2B6 -_0805F2B4: - lsls r2, r2, #1 -_0805F2B6: - ldr r1, _0805F2C4 @ =gUnk_08109248 - lsls r0, r3, #2 - adds r0, r0, r1 - lsls r1, r2, #6 - ldr r0, [r0] - adds r0, r0, r1 - pop {pc} - .align 2, 0 -_0805F2C4: .4byte gUnk_08109248 - - thumb_func_start sub_0805F2C8 -sub_0805F2C8: @ 0x0805F2C8 - push {r4, r5, lr} - movs r1, #0 - ldr r4, _0805F2EC @ =gUnk_02036540 - adds r5, r4, #0 -_0805F2D0: - ldrb r0, [r4] - lsls r0, r0, #0x1f - cmp r0, #0 - bne _0805F2F0 - adds r0, r5, #0 - movs r1, #0xc - bl MemClear - ldrb r0, [r4] - movs r1, #1 - orrs r0, r1 - strb r0, [r4] - adds r0, r5, #0 - b _0805F2FC - .align 2, 0 -_0805F2EC: .4byte gUnk_02036540 -_0805F2F0: - adds r4, #0xc - adds r5, #0xc - adds r1, #1 - cmp r1, #3 - bls _0805F2D0 - movs r0, #0 -_0805F2FC: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0805F300 -sub_0805F300: @ 0x0805F300 - push {lr} - adds r2, r0, #0 - movs r1, #0 - ldr r0, _0805F314 @ =gUnk_02036540 -_0805F308: - cmp r0, r2 - bne _0805F318 - movs r1, #0xc - bl MemClear - b _0805F320 - .align 2, 0 -_0805F314: .4byte gUnk_02036540 -_0805F318: - adds r0, #0xc - adds r1, #1 - cmp r1, #3 - bls _0805F308 -_0805F320: - pop {pc} - .align 2, 0 - - thumb_func_start GetFontStrWith -GetFontStrWith: @ 0xGetFontStrWidth - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #0x38 - adds r7, r1, #0 - mov r1, sp - movs r2, #0x30 - bl MemCopy - movs r0, #0 - str r0, [sp, #0x34] - movs r1, #0 - str r1, [sp, #0x30] - mov sl, r1 - mov r8, r1 - b _0805F34C -_0805F348: - cmp r6, #0 - beq _0805F41E -_0805F34C: - movs r5, #0 - movs r2, #1 - mov sb, r2 -_0805F352: - mov r0, sp - bl GetCharacter - adds r6, r0, #0 - cmp r6, #0xe - bhi _0805F3B4 - lsls r0, r6, #2 - ldr r1, _0805F368 @ =_0805F36C - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805F368: .4byte _0805F36C -_0805F36C: @ jump table - .4byte _0805F402 @ case 0 - .4byte _0805F402 @ case 1 - .4byte _0805F3FC @ case 2 - .4byte _0805F3FC @ case 3 - .4byte _0805F3FC @ case 4 - .4byte _0805F3FC @ case 5 - .4byte _0805F3FC @ case 6 - .4byte _0805F3FC @ case 7 - .4byte _0805F3FC @ case 8 - .4byte _0805F3FC @ case 9 - .4byte _0805F3FC @ case 10 - .4byte _0805F3AC @ case 11 - .4byte _0805F3A8 @ case 12 - .4byte _0805F3FC @ case 13 - .4byte _0805F3FC @ case 14 -_0805F3A8: - adds r5, #8 - b _0805F3FC -_0805F3AC: - mov r0, sp - ldrh r0, [r0, #2] - mov r8, r0 - b _0805F3FC -_0805F3B4: - mov r0, r8 - cmp r0, #0 - bne _0805F3DE - adds r0, r6, #0 - bl sub_0805F25C - adds r4, r0, #0 - lsrs r0, r6, #8 - cmp r0, #4 - bls _0805F3D2 - ldr r0, [r4, #0x40] - bl sub_0805F7A0 - lsrs r0, r0, #8 - adds r5, r5, r0 -_0805F3D2: - ldr r0, [r4] - bl sub_0805F7A0 - lsrs r0, r0, #8 - adds r5, r5, r0 - b _0805F3EA -_0805F3DE: - lsrs r0, r6, #8 - cmp r0, #4 - bls _0805F3E8 - adds r5, #0x10 - b _0805F3EA -_0805F3E8: - adds r5, #8 -_0805F3EA: - mov r0, sp - ldrb r1, [r0] - movs r0, #0x60 - ands r0, r1 - cmp r0, #0x20 - bne _0805F3FC - cmp r5, #1 - bls _0805F3FC - subs r5, #1 -_0805F3FC: - mov r1, sb - cmp r1, #0 - bne _0805F352 -_0805F402: - cmp r5, sl - bls _0805F408 - mov sl, r5 -_0805F408: - cmp r5, #0 - beq _0805F414 - ldr r2, [sp, #0x30] - adds r2, #1 - str r2, [sp, #0x30] - b _0805F41A -_0805F414: - ldr r0, [sp, #0x34] - adds r0, #1 - str r0, [sp, #0x34] -_0805F41A: - cmp r7, #0 - bne _0805F348 -_0805F41E: - cmp r7, #0 - bne _0805F426 - mov r0, sl - b _0805F434 -_0805F426: - ldr r1, [sp, #0x34] - lsls r0, r1, #0x18 - ldr r2, [sp, #0x30] - lsls r1, r2, #0x10 - orrs r0, r1 - mov r1, sl - orrs r0, r1 -_0805F434: - add sp, #0x38 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0805F440 -sub_0805F440: @ 0x0805F440 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r1, #0x30 - bl MemClear - ldr r0, _0805F45C @ =0x0000FFFF - cmp r5, r0 - bls _0805F460 - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805EF40 - b _0805F468 - .align 2, 0 -_0805F45C: .4byte 0x0000FFFF -_0805F460: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805EEB4 -_0805F468: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0805F46C -sub_0805F46C: @ 0x0805F46C - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - sub sp, #0x48 - adds r6, r0, #0 - adds r5, r1, #0 - bl sub_0805F2C8 - mov r8, r0 - cmp r0, #0 - bne _0805F486 - b _0805F5BC -_0805F486: - add r4, sp, #0x30 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0x18 - bl MemCopy - mov r0, sp - adds r1, r6, #0 - bl sub_0805F440 - mov r3, sp - ldrb r0, [r4, #0x17] - movs r1, #3 - ands r1, r0 - lsls r1, r1, #5 - ldrb r2, [r3] - movs r0, #0x61 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r4, #0x17] - lsls r1, r1, #4 - mov r0, r8 - ldrb r2, [r0] - movs r0, #0xf - ands r0, r2 - orrs r0, r1 - mov r1, r8 - strb r0, [r1] - ldrb r0, [r4, #0x12] - strh r0, [r1, #4] - ldr r0, [r4, #8] - str r0, [r1, #8] - ldrb r0, [r4, #0x15] - strb r0, [r1, #2] - ldrb r0, [r4, #0x14] - strb r0, [r1, #3] - ldrb r1, [r4, #0x13] - movs r0, #8 - ands r0, r1 - mov sb, r4 - cmp r0, #0 - beq _0805F59E - lsrs r0, r1, #4 - ldrb r1, [r4, #0x14] - ldr r2, [r4, #4] - bl sub_0805F918 - ldr r0, [r4, #4] - adds r0, #0xe0 - str r0, [r4, #4] - mov r0, sp - movs r1, #1 - bl GetFontStrWith - lsrs r2, r0, #0x18 - ldrb r1, [r4, #0x16] - muls r2, r1, r2 - asrs r1, r0, #0x10 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x17 - adds r7, r2, r1 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - adds r1, r4, #0 - mov r2, sb - ldrb r3, [r2, #0x12] - cmp r3, r1 - bge _0805F514 - adds r1, r3, #0 -_0805F514: - adds r4, r1, #7 - movs r2, #8 - rsbs r2, r2, #0 - mov r0, sb - ldrb r1, [r0, #0x13] - movs r0, #2 - ands r0, r1 - ands r4, r2 - cmp r0, #0 - bne _0805F52A - adds r4, r3, #0 -_0805F52A: - ldr r5, [sp, #0x30] - adds r0, r5, #0 - adds r0, #0x40 - str r0, [sp, #0x30] - mov r2, sb - ldrb r1, [r2, #0x13] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0805F54E - adds r4, #0xf - movs r0, #0x10 - rsbs r0, r0, #0 - ands r4, r0 - lsrs r0, r4, #3 - adds r0, #2 - subs r5, r5, r0 - b _0805F554 -_0805F54E: - adds r0, r5, #0 - adds r0, #0x42 - str r0, [sp, #0x30] -_0805F554: - lsrs r4, r4, #3 - mov r3, sb - ldrh r6, [r3, #0x10] - adds r0, r5, #0 - adds r1, r4, #0 - adds r2, r7, #0 - adds r3, r6, #0 - bl DispMessageFrame - adds r5, #2 - mov r1, sb - ldrh r0, [r1, #0x10] - adds r0, #7 - strh r0, [r1, #0x10] - ldrh r0, [r1, #0x10] - subs r6, r0, #1 - adds r0, r7, #0 - subs r7, #1 - cmp r0, #0 - beq _0805F59E -_0805F57C: - adds r1, r5, #0 - adds r1, #0x40 - adds r5, r1, #0 - subs r2, r4, #1 - subs r3, r7, #1 - cmp r4, #0 - ble _0805F596 -_0805F58A: - strh r6, [r1] - adds r1, #2 - adds r0, r2, #0 - subs r2, #1 - cmp r0, #0 - bgt _0805F58A -_0805F596: - adds r0, r7, #0 - adds r7, r3, #0 - cmp r0, #0 - bne _0805F57C -_0805F59E: - ldr r0, _0805F5C8 @ =gUnk_02034330 - movs r1, #0x18 - bl MemClear -_0805F5A6: - mov r0, sb - mov r1, sp - mov r2, r8 - bl sub_0805F5CC - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0805F5A6 - mov r0, r8 - bl sub_0805F300 -_0805F5BC: - movs r0, #0 - add sp, #0x48 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0805F5C8: .4byte gUnk_02034330 - - thumb_func_start sub_0805F5CC -sub_0805F5CC: @ 0x0805F5CC - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r6, r1, #0 - adds r5, r2, #0 - ldrb r0, [r4, #0x14] - bl sub_0805F8F8 - ldr r1, [r4, #8] - ldrb r2, [r4, #0x12] - adds r2, #7 - movs r3, #0xfc - lsls r3, r3, #1 - ands r2, r3 - lsls r2, r2, #3 - bl MemFill32 - adds r0, r6, #0 - movs r1, #0 - bl GetFontStrWith - adds r2, r0, #0 - ldrb r1, [r4, #0x13] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0805F60E - adds r0, r2, #1 - lsrs r0, r0, #1 - movs r1, #8 - subs r1, r1, r0 - movs r0, #7 - ands r0, r1 - b _0805F610 -_0805F60E: - movs r0, #0 -_0805F610: - strh r0, [r5, #6] - adds r0, r6, #0 - adds r1, r5, #0 - bl sub_0805F6A4 - adds r2, r0, #0 - cmp r2, #0 - beq _0805F660 - ldrh r1, [r5, #6] - adds r0, r1, #7 - asrs r5, r0, #3 - ldr r2, [r4] - ldrb r1, [r4, #0x13] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0805F63A - adds r0, r5, #1 - lsrs r0, r0, #1 - lsls r0, r0, #1 - subs r2, r2, r0 -_0805F63A: - ldrh r1, [r4, #0x10] - adds r0, r2, #0 - adds r2, r5, #0 - bl sub_0805F67C - strh r0, [r4, #0x10] - ldr r0, [r4] - adds r0, #0x80 - str r0, [r4] - lsls r5, r5, #6 - ldr r0, [r4, #8] - ldr r1, [r4, #4] - adds r2, r5, #0 - bl MemCopy - ldr r0, [r4, #4] - adds r0, r0, r5 - str r0, [r4, #4] - b _0805F670 -_0805F660: - ldrb r0, [r6, #1] - cmp r0, #0xa - bne _0805F670 - ldrb r1, [r4, #0x16] - lsls r1, r1, #6 - ldr r0, [r4] - adds r0, r0, r1 - str r0, [r4] -_0805F670: - ldrb r1, [r6, #1] - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r0, r0, #0x1f - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0805F67C -sub_0805F67C: @ 0x0805F67C - push {r4, lr} - adds r3, r0, #0 - subs r2, #1 - movs r0, #1 - rsbs r0, r0, #0 - cmp r2, r0 - beq _0805F6A0 - adds r4, r0, #0 -_0805F68C: - strh r1, [r3] - adds r1, #1 - adds r0, r3, #0 - adds r0, #0x40 - strh r1, [r0] - adds r1, #1 - adds r3, #2 - subs r2, #1 - cmp r2, r4 - bne _0805F68C -_0805F6A0: - adds r0, r1, #0 - pop {r4, pc} - - thumb_func_start sub_0805F6A4 -sub_0805F6A4: @ 0x0805F6A4 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r4, r1, #0 - movs r6, #0 -_0805F6AC: - adds r0, r5, #0 - bl GetCharacter - movs r7, #1 - cmp r0, #0xe - bhi _0805F746 - lsls r0, r0, #2 - ldr r1, _0805F6C4 @ =_0805F6C8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0805F6C4: .4byte _0805F6C8 -_0805F6C8: @ jump table - .4byte _0805F768 @ case 0 - .4byte _0805F768 @ case 1 - .4byte _0805F764 @ case 2 - .4byte _0805F764 @ case 3 - .4byte _0805F764 @ case 4 - .4byte _0805F764 @ case 5 - .4byte _0805F764 @ case 6 - .4byte _0805F704 @ case 7 - .4byte _0805F764 @ case 8 - .4byte _0805F764 @ case 9 - .4byte _0805F764 @ case 10 - .4byte _0805F740 @ case 11 - .4byte _0805F70E @ case 12 - .4byte _0805F764 @ case 13 - .4byte _0805F764 @ case 14 -_0805F704: - ldrh r0, [r5, #2] - cmp r0, #0xd - bhi _0805F764 - strb r0, [r4, #2] - b _0805F764 -_0805F70E: - ldr r3, _0805F73C @ =gUnk_02034330 - movs r2, #2 - ldrsb r2, [r3, r2] - cmp r2, #3 - bhi _0805F732 - adds r0, r2, #1 - strb r0, [r3, #2] - lsls r2, r2, #1 - adds r0, r3, #0 - adds r0, #0x10 - adds r0, r2, r0 - ldrh r1, [r5, #6] - strh r1, [r0] - adds r0, r3, #0 - adds r0, #8 - adds r2, r2, r0 - ldrh r0, [r4, #6] - strh r0, [r2] -_0805F732: - ldrh r0, [r4, #6] - adds r0, #8 - strh r0, [r4, #6] - adds r6, #8 - b _0805F764 - .align 2, 0 -_0805F73C: .4byte gUnk_02034330 -_0805F740: - ldrh r0, [r5, #2] - strb r0, [r4, #1] - b _0805F764 -_0805F746: - adds r1, r4, #0 - bl sub_0805F7DC - adds r6, r6, r0 - ldrb r1, [r5] - movs r0, #0x60 - ands r0, r1 - cmp r0, #0x20 - bne _0805F764 - ldrh r0, [r4, #6] - cmp r0, #1 - bls _0805F764 - subs r6, #1 - subs r0, #1 - strh r0, [r4, #6] -_0805F764: - cmp r7, #0 - bne _0805F6AC -_0805F768: - adds r0, r6, #0 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0805F76C -sub_0805F76C: @ 0x0805F76C - push {r4, lr} - sub sp, #0x30 - adds r2, r0, #0 - adds r4, r1, #0 - mov r0, sp - adds r1, r2, #0 - bl sub_0805F440 - mov r3, sp - ldrb r0, [r4] - lsrs r0, r0, #4 - movs r1, #3 - ands r1, r0 - lsls r1, r1, #5 - ldrb r2, [r3] - movs r0, #0x61 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - mov r0, sp - adds r1, r4, #0 - bl sub_0805F6A4 - add sp, #0x30 - pop {r4, pc} - - thumb_func_start sub_0805F7A0 -sub_0805F7A0: @ 0x0805F7A0 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0xf - movs r2, #0 - b _0805F7B4 -_0805F7AA: - lsls r1, r1, #4 - adds r2, #1 - cmp r2, #7 - bhi _0805F7BA - adds r0, r4, #0 -_0805F7B4: - ands r0, r1 - cmp r1, r0 - beq _0805F7AA -_0805F7BA: - adds r3, r2, #0 - cmp r3, #7 - bhi _0805F7D2 - b _0805F7CA -_0805F7C2: - lsls r1, r1, #4 - adds r2, #1 - cmp r2, #7 - bhi _0805F7D2 -_0805F7CA: - adds r0, r4, #0 - ands r0, r1 - cmp r1, r0 - bne _0805F7C2 -_0805F7D2: - subs r2, r2, r3 - lsls r0, r2, #8 - orrs r0, r3 - pop {r4, pc} - .align 2, 0 - diff --git a/asm/code_080AD90C.s b/asm/code_080AD90C.s deleted file mode 100644 index 2a3a1036..00000000 --- a/asm/code_080AD90C.s +++ /dev/null @@ -1,157 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start FlushSprites -FlushSprites: @ 0x080AD90C - ldr r1, _080AD914 @ =gUnk_03000000 - movs r0, #0 - strb r0, [r1, #3] - bx lr - .align 2, 0 -_080AD914: .4byte gUnk_03000000 - - thumb_func_start sub_080AD918 -sub_080AD918: @ 0x080AD918 - push {r4, lr} - ldr r1, _080AD948 @ =gMain - ldrb r0, [r1, #0xb] - adds r2, r0, #0 - cmp r2, #0 - bne _080AD958 - ldr r1, _080AD94C @ =gUnk_03000000 - movs r3, #0xa4 - lsls r3, r3, #3 - adds r0, r1, r3 - strb r2, [r0] - ldr r3, _080AD950 @ =0x00000664 - adds r0, r1, r3 - strb r2, [r0] - movs r3, #0xf5 - lsls r3, r3, #3 - adds r0, r1, r3 - strb r2, [r0] - ldr r3, _080AD954 @ =0x000008EC - adds r0, r1, r3 - strb r2, [r0] - adds r4, r1, #0 - b _080AD95E - .align 2, 0 -_080AD948: .4byte gMain -_080AD94C: .4byte gUnk_03000000 -_080AD950: .4byte 0x00000664 -_080AD954: .4byte 0x000008EC -_080AD958: - subs r0, #1 - strb r0, [r1, #0xb] - ldr r4, _080AD9A8 @ =gUnk_03000000 -_080AD95E: - ldrb r1, [r4, #3] - movs r0, #0x80 - subs r2, r0, r1 - cmp r2, #0 - ble _080AD980 - lsls r1, r1, #3 - adds r0, r4, #0 - adds r0, #0x20 - adds r1, r1, r0 - movs r3, #0xa8 - lsls r3, r3, #2 - adds r0, r3, #0 -_080AD976: - strh r0, [r1] - adds r1, #8 - subs r2, #1 - cmp r2, #0 - bne _080AD976 -_080AD980: - adds r1, r4, #0 - ldr r0, _080AD9AC @ =0x00000427 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, #0 - beq _080AD9A0 - movs r0, #0 - strb r0, [r2] - movs r2, #0x84 - lsls r2, r2, #3 - adds r0, r1, r2 - adds r1, #0x26 - movs r2, #0x20 - movs r3, #8 - bl ObjAffineSet -_080AD9A0: - movs r0, #1 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_080AD9A8: .4byte gUnk_03000000 -_080AD9AC: .4byte 0x00000427 - - thumb_func_start sub_080AD9B0 -sub_080AD9B0: @ 0x080AD9B0 - push {lr} - ldr r2, _080AD9F4 @ =gUnk_03000000 - ldr r0, _080AD9F8 @ =gScreenTransition - adds r0, #0x2f - ldrb r0, [r0] - movs r1, #0 - cmp r0, #0 - beq _080AD9C2 - movs r1, #0xf -_080AD9C2: - strb r1, [r2, #0xe] - ldr r1, _080AD9FC @ =gRoomControls - adds r0, r1, #0 - adds r0, #0x24 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r1, #0xa] - adds r0, r0, r3 - strh r0, [r2, #4] - adds r0, r1, #0 - adds r0, #0x25 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r1, #0xc] - adds r0, r0, r1 - strh r0, [r2, #6] - ldrb r0, [r2, #1] - adds r0, #1 - strb r0, [r2, #1] - ldr r0, _080ADA00 @ =gUnk_03006164 - bl _call_via_r0 - pop {pc} - .align 2, 0 -_080AD9F4: .4byte gUnk_03000000 -_080AD9F8: .4byte gScreenTransition -_080AD9FC: .4byte gRoomControls -_080ADA00: .4byte gUnk_03006164 - - thumb_func_start sub_080ADA04 -sub_080ADA04: @ 0x080ADA04 - push {lr} - ldr r2, _080ADA10 @ =gUnk_0300659C - bl _call_via_r2 - pop {pc} - .align 2, 0 -_080ADA10: .4byte gUnk_0300659C - - thumb_func_start sub_080ADA14 -sub_080ADA14: @ 0x080ADA14 - push {r4, lr} - adds r3, r0, #0 - adds r2, r1, #0 - ldr r4, _080ADA28 @ =gUnk_03006580 - ldr r0, _080ADA2C @ =gOamCmd - adds r1, r3, #0 - bl _call_via_r4 - pop {r4, pc} - .align 2, 0 -_080ADA28: .4byte gUnk_03006580 -_080ADA2C: .4byte gOamCmd diff --git a/asm/code_0806FA6C.s b/asm/coord.s similarity index 100% rename from asm/code_0806FA6C.s rename to asm/coord.s diff --git a/asm/drawHealth.s b/asm/drawHealth.s deleted file mode 100644 index 97712ac3..00000000 --- a/asm/drawHealth.s +++ /dev/null @@ -1,204 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C6B0 -sub_0801C6B0: @ 0x0801C6B0 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r2, _0801C6CC @ =gUnk_0200AF00 - ldrb r1, [r2, #1] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _0801C6D0 - bl sub_0801C824 - bl sub_0801C66C - b _0801C802 - .align 2, 0 -_0801C6CC: .4byte gUnk_0200AF00 -_0801C6D0: - ldr r5, _0801C6F8 @ =gSave - adds r0, r5, #0 - adds r0, #0xab - ldrb r0, [r0] - lsrs r4, r0, #1 - ldrb r0, [r2, #4] - cmp r4, r0 - beq _0801C6EA - strb r4, [r2, #4] - bl sub_0801C824 - bl sub_0801C66C -_0801C6EA: - adds r1, r5, #0 - adds r1, #0xaa - ldrb r0, [r1] - cmp r0, #1 - beq _0801C6FC - lsrs r1, r0, #1 - b _0801C6FE - .align 2, 0 -_0801C6F8: .4byte gSave -_0801C6FC: - movs r1, #1 -_0801C6FE: - cmp r1, r4 - ble _0801C704 - adds r1, r4, #0 -_0801C704: - movs r4, #0 - ldr r0, _0801C748 @ =gUnk_0200AF00 - ldrb r2, [r0, #3] - adds r7, r0, #0 - cmp r1, r2 - beq _0801C718 - movs r4, #1 - cmp r1, r2 - ble _0801C718 - movs r4, #2 -_0801C718: - cmp r4, #1 - beq _0801C750 - cmp r4, #2 - bne _0801C756 - ldrb r0, [r7, #5] - adds r1, r0, #1 - strb r1, [r7, #5] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0801C74C - movs r0, #7 - ands r1, r0 - cmp r1, #0 - bne _0801C740 - movs r0, #0x71 - bl SoundReq -_0801C740: - ldrb r0, [r7, #3] - adds r0, #1 - strb r0, [r7, #3] - b _0801C75A - .align 2, 0 -_0801C748: .4byte gUnk_0200AF00 -_0801C74C: - movs r4, #0 - b _0801C75A -_0801C750: - ldrb r0, [r7, #3] - subs r0, #1 - strb r0, [r7, #3] -_0801C756: - movs r0, #0 - strb r0, [r7, #5] -_0801C75A: - ldrb r0, [r7, #2] - cmp r0, #0 - beq _0801C764 - cmp r4, #0 - beq _0801C802 -_0801C764: - movs r0, #2 - strb r0, [r7, #2] - ldrb r0, [r7, #3] - lsrs r3, r0, #2 - cmp r3, #0xa - ble _0801C77A - movs r1, #0xa - mov r8, r1 - adds r6, r3, #0 - subs r6, #0xa - b _0801C77E -_0801C77A: - mov r8, r3 - movs r6, #0 -_0801C77E: - ldrb r0, [r7, #4] - lsrs r4, r0, #2 - adds r1, r4, #0 - cmp r4, #0xa - ble _0801C78A - movs r4, #0xa -_0801C78A: - adds r2, r1, #0 - subs r2, #0xa - ldr r0, _0801C808 @ =gUnk_080C8F2C - mov ip, r0 - cmp r2, #0 - ble _0801C7B8 - ldr r5, _0801C80C @ =gUnk_02034D30 - ldr r1, _0801C810 @ =0x0000F010 - adds r0, r1, #0 - strh r0, [r5] - ldr r1, _0801C814 @ =0x040000D4 - movs r0, #0xa - subs r0, r0, r6 - lsls r0, r0, #1 - add r0, ip - str r0, [r1] - adds r0, r5, #2 - str r0, [r1, #4] - movs r0, #0x80 - lsls r0, r0, #0x18 - orrs r2, r0 - str r2, [r1, #8] - ldr r0, [r1, #8] -_0801C7B8: - ldr r5, _0801C818 @ =gUnk_02034CF0 - ldr r2, _0801C810 @ =0x0000F010 - adds r0, r2, #0 - strh r0, [r5] - ldr r1, _0801C814 @ =0x040000D4 - movs r0, #0xa - mov r2, r8 - subs r0, r0, r2 - lsls r0, r0, #1 - add r0, ip - str r0, [r1] - adds r0, r5, #2 - str r0, [r1, #4] - movs r0, #0x80 - lsls r0, r0, #0x18 - orrs r4, r0 - str r4, [r1, #8] - ldr r0, [r1, #8] - ldrb r0, [r7, #3] - movs r1, #3 - ands r1, r0 - cmp r1, #0 - beq _0801C7FC - cmp r3, #9 - ble _0801C7EE - subs r3, #0xa - adds r5, #0x40 -_0801C7EE: - lsls r0, r3, #1 - adds r0, r0, r5 - adds r1, #0x11 - ldr r3, _0801C81C @ =0xFFFFF000 - adds r2, r3, #0 - orrs r1, r2 - strh r1, [r0, #2] -_0801C7FC: - ldr r1, _0801C820 @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_0801C802: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801C808: .4byte gUnk_080C8F2C -_0801C80C: .4byte gUnk_02034D30 -_0801C810: .4byte 0x0000F010 -_0801C814: .4byte 0x040000D4 -_0801C818: .4byte gUnk_02034CF0 -_0801C81C: .4byte 0xFFFFF000 -_0801C820: .4byte gScreen diff --git a/asm/drawRupees.s b/asm/drawRupees.s deleted file mode 100644 index 50ab1577..00000000 --- a/asm/drawRupees.s +++ /dev/null @@ -1,160 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C4B0 -sub_0801C4B0: @ 0x0801C4B0 - push {r4, r5, r6, lr} - ldr r2, _0801C4F0 @ =gUnk_0200AF00 - ldrb r1, [r2, #1] - movs r0, #0x40 - ands r0, r1 - adds r6, r2, #0 - cmp r0, #0 - beq _0801C4FC - ldrb r0, [r6, #0xa] - cmp r0, #0 - bne _0801C4C8 - b _0801C5D0 -_0801C4C8: - movs r0, #0 - strb r0, [r6, #0xa] - ldr r3, _0801C4F4 @ =gUnk_02035160 - strh r0, [r3] - strh r0, [r3, #2] - strh r0, [r3, #4] - strh r0, [r3, #6] - strh r0, [r3, #8] - adds r4, r3, #0 - adds r4, #0x40 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - ldr r1, _0801C4F8 @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] - b _0801C5D0 - .align 2, 0 -_0801C4F0: .4byte gUnk_0200AF00 -_0801C4F4: .4byte gUnk_02035160 -_0801C4F8: .4byte gScreen -_0801C4FC: - ldrb r0, [r6, #0xa] - cmp r0, #0 - bne _0801C560 - movs r0, #2 - strb r0, [r6, #0xa] - ldr r3, _0801C54C @ =gUnk_02035160 - adds r4, r3, #0 - adds r4, #0x40 - ldr r1, _0801C550 @ =gWalletSizes - ldr r2, _0801C554 @ =gSave - adds r0, r2, #0 - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrh r1, [r0, #2] - strh r1, [r3] - adds r0, r1, #1 - strh r0, [r3, #2] - adds r0, r1, #2 - strh r0, [r4] - adds r0, r1, #3 - strh r0, [r4, #2] - ldr r1, _0801C558 @ =0x0000F070 - strh r1, [r3, #4] - adds r0, r1, #1 - strh r0, [r4, #4] - adds r0, r1, #2 - strh r0, [r3, #6] - adds r0, r1, #3 - strh r0, [r4, #6] - adds r0, r1, #4 - strh r0, [r3, #8] - adds r0, r1, #5 - strh r0, [r4, #8] - ldr r1, _0801C55C @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] - movs r4, #1 - b _0801C564 - .align 2, 0 -_0801C54C: .4byte gUnk_02035160 -_0801C550: .4byte gWalletSizes -_0801C554: .4byte gSave -_0801C558: .4byte 0x0000F070 -_0801C55C: .4byte gScreen -_0801C560: - movs r4, #0 - ldr r2, _0801C580 @ =gSave -_0801C564: - adds r5, r6, #0 - adds r0, r2, #0 - adds r0, #0xc0 - ldrh r1, [r5, #0xe] - adds r3, r1, #0 - ldrh r0, [r0] - cmp r3, r0 - beq _0801C58A - cmp r3, r0 - bhs _0801C584 - adds r0, r1, #1 - strh r0, [r5, #0xe] - b _0801C588 - .align 2, 0 -_0801C580: .4byte gSave -_0801C584: - subs r0, r1, #1 - strh r0, [r6, #0xe] -_0801C588: - movs r4, #2 -_0801C58A: - cmp r4, #1 - beq _0801C5A4 - cmp r4, #2 - bne _0801C5CC - ldr r0, _0801C5D4 @ =gUnk_0200AF00 - ldrb r0, [r0, #0xc] - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _0801C5A4 - movs r0, #0x6f - bl SoundReq -_0801C5A4: - ldr r4, _0801C5D4 @ =gUnk_0200AF00 - ldrh r3, [r4, #0xe] - movs r2, #0 - ldr r1, _0801C5D8 @ =gWalletSizes - ldr r0, _0801C5DC @ =gSave - adds r0, #0xa8 - ldrb r0, [r0] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrh r0, [r0] - cmp r0, r3 - bhi _0801C5BE - movs r2, #1 -_0801C5BE: - movs r0, #0x70 - adds r1, r3, #0 - movs r3, #3 - bl sub_0801C5E0 - ldrb r0, [r4, #0xc] - adds r4, r0, #1 -_0801C5CC: - ldr r0, _0801C5D4 @ =gUnk_0200AF00 - strb r4, [r0, #0xc] -_0801C5D0: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801C5D4: .4byte gUnk_0200AF00 -_0801C5D8: .4byte gWalletSizes -_0801C5DC: .4byte gSave diff --git a/asm/drawUI.s b/asm/drawUI.s deleted file mode 100644 index 489f02ca..00000000 --- a/asm/drawUI.s +++ /dev/null @@ -1,26 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C344 -sub_0801C344: @ 0x0801C344 - push {r4, r5, lr} - ldr r4, _0801C36C @ =gUnk_0200AF00 - ldrb r1, [r4, #1] - ldrb r0, [r4] - bics r0, r1 - movs r5, #0 - strb r0, [r4] - bl sub_0801C6B0 - bl sub_0801C85C - bl sub_0801C4B0 - bl sub_0801C99C - strb r5, [r4] - bl sub_0801C1D4 - pop {r4, r5, pc} - .align 2, 0 -_0801C36C: .4byte gUnk_0200AF00 diff --git a/asm/code_080011C4.s b/asm/enemy.s similarity index 100% rename from asm/code_080011C4.s rename to asm/enemy.s diff --git a/asm/code_0804A720.s b/asm/enemyUtils.s similarity index 100% rename from asm/code_0804A720.s rename to asm/enemyUtils.s diff --git a/asm/code_0804AA84.s b/asm/enterPortalSubtask.s similarity index 100% rename from asm/code_0804AA84.s rename to asm/enterPortalSubtask.s diff --git a/asm/code_08018500.s b/asm/kinstone.s similarity index 100% rename from asm/code_08018500.s rename to asm/kinstone.s diff --git a/asm/libagbsyscall.s b/asm/lib/libagbsyscall.s similarity index 100% rename from asm/libagbsyscall.s rename to asm/lib/libagbsyscall.s diff --git a/asm/libgcc.s b/asm/lib/libgcc.s similarity index 100% rename from asm/libgcc.s rename to asm/lib/libgcc.s diff --git a/asm/m4a_asm.s b/asm/lib/m4a_asm.s similarity index 100% rename from asm/m4a_asm.s rename to asm/lib/m4a_asm.s diff --git a/asm/code_080ADD30.s b/asm/movement.s similarity index 65% rename from asm/code_080ADD30.s rename to asm/movement.s index ed420750..6adfcac0 100644 --- a/asm/code_080ADD30.s +++ b/asm/movement.s @@ -5,1085 +5,6 @@ .text - - - - thumb_func_start ResetPalettes -ResetPalettes: @ 0x080ADD30 - push {r4, r5, r6, lr} - ldr r4, _080ADD6C @ =gGFXSlots - movs r1, #0x85 - lsls r1, r1, #2 - adds r0, r4, #0 - bl MemClear - movs r5, #0 - adds r4, #4 - movs r0, #0x10 - rsbs r0, r0, #0 - adds r6, r0, #0 -_080ADD48: - adds r0, r5, #0 - movs r1, #0 - movs r2, #1 - bl ReserveGFXSlots - ldrb r0, [r4] - ands r0, r6 - movs r1, #6 - orrs r0, r1 - strb r0, [r4] - movs r0, #0x80 - strb r0, [r4, #2] - adds r4, #0xc - adds r5, #1 - cmp r5, #3 - bls _080ADD48 - pop {r4, r5, r6, pc} - .align 2, 0 -_080ADD6C: .4byte gGFXSlots - - thumb_func_start sub_080ADD70 -sub_080ADD70: @ 0x080ADD70 -.ifdef EU - push {r4, r5, lr} - ldr r0, _080AD540 @ =gGFXSlots - ldrb r0, [r0] - cmp r0, #0 - beq _080AD56A - movs r4, #0 - movs r5, #0 -_080AD522: - ldr r0, _080AD544 @ =gUnk_02024494 - adds r2, r5, r0 - ldrb r1, [r2] - lsls r0, r1, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #2 - bne _080AD548 - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r3, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - b _080AD562 - .align 2, 0 -_080AD540: .4byte gGFXSlots -_080AD544: .4byte gUnk_02024494 -_080AD548: - cmp r0, #2 - blt _080AD562 - cmp r0, #6 - bgt _080AD562 - cmp r0, #4 - blt _080AD562 - movs r0, #0xf0 - ands r0, r1 - cmp r0, #0x30 - bne _080AD562 - adds r0, r4, #0 - bl sub_080ADE74 -_080AD562: - adds r5, #0xc - adds r4, #1 - cmp r4, #0x2b - bls _080AD522 -_080AD56A: - pop {r4, r5, pc} - -.else - push {r4, r5, lr} - ldr r1, _080ADD88 @ =gGFXSlots - ldrb r0, [r1] - cmp r0, #0 - beq _080ADDD6 - ldrb r0, [r1, #3] - cmp r0, #0 - beq _080ADD8C - bl sub_080ADE24 - b _080ADDD6 - .align 2, 0 -_080ADD88: .4byte gGFXSlots -_080ADD8C: - movs r4, #0 - movs r5, #0 -_080ADD90: - ldr r0, _080ADDB0 @ =gUnk_02024494 - adds r2, r5, r0 - ldrb r1, [r2] - lsls r0, r1, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #2 - bne _080ADDB4 - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r3, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2] - b _080ADDCE - .align 2, 0 -_080ADDB0: .4byte gUnk_02024494 -_080ADDB4: - cmp r0, #2 - blt _080ADDCE - cmp r0, #6 - bgt _080ADDCE - cmp r0, #4 - blt _080ADDCE - movs r0, #0xf0 - ands r0, r1 - cmp r0, #0x30 - bne _080ADDCE - adds r0, r4, #0 - bl sub_080ADE74 -_080ADDCE: - adds r5, #0xc - adds r4, #1 - cmp r4, #0x2b - bls _080ADD90 -_080ADDD6: - pop {r4, r5, pc} -.endif - - thumb_func_start sub_080ADDD8 -sub_080ADDD8: @ 0x080ADDD8 - push {lr} - adds r2, r1, #0 - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _080ADDFC @ =gUnk_02024494 - adds r3, r1, r0 - ldr r0, _080ADE00 @ =0x00FFFFFC - ands r0, r2 - ldr r1, _080ADE04 @ =gGlobalGfxAndPalettes - adds r0, r0, r1 - str r0, [r3, #8] - movs r0, #1 - ands r0, r2 - cmp r0, #0 - beq _080ADE0C - ldr r0, _080ADE08 @ =0x0000FFFF - b _080ADE14 - .align 2, 0 -_080ADDFC: .4byte gUnk_02024494 -_080ADE00: .4byte 0x00FFFFFC -_080ADE04: .4byte gGlobalGfxAndPalettes -_080ADE08: .4byte 0x0000FFFF -_080ADE0C: - movs r0, #0xfe - lsls r0, r0, #0x17 - ands r0, r2 - lsrs r0, r0, #0x14 -_080ADE14: - strh r0, [r3, #6] - ldrb r0, [r3] - movs r1, #0xf - ands r1, r0 - movs r0, #0x30 - orrs r1, r0 - strb r1, [r3] - pop {pc} - - thumb_func_start sub_080ADE24 -sub_080ADE24: @ 0x080ADE24 - push {r4, r5, lr} - ldr r1, _080ADE50 @ =gGFXSlots - movs r0, #1 - strb r0, [r1, #3] - movs r4, #0 - movs r5, #0 -_080ADE30: - ldr r0, _080ADE54 @ =gUnk_02024494 - adds r1, r5, r0 - ldrb r0, [r1] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #3 - beq _080ADE60 - cmp r0, #3 - blt _080ADE58 - cmp r0, #6 - bgt _080ADE58 - adds r0, r4, #0 - bl sub_080ADE74 - b _080ADE60 - .align 2, 0 -_080ADE50: .4byte gGFXSlots -_080ADE54: .4byte gUnk_02024494 -_080ADE58: - adds r0, r1, #0 - movs r1, #0xc - bl MemClear -_080ADE60: - adds r5, #0xc - adds r4, #1 - cmp r4, #0x2b - bls _080ADE30 - movs r1, #0 - ldr r0, _080ADE70 @ =gGFXSlots - strb r1, [r0, #3] - pop {r4, r5, pc} - .align 2, 0 -_080ADE70: .4byte gGFXSlots - - thumb_func_start sub_080ADE74 -sub_080ADE74: @ 0x080ADE74 - push {r4, r5, r6, lr} - adds r2, r0, #0 - lsls r0, r2, #1 - adds r0, r0, r2 - lsls r0, r0, #2 - ldr r1, _080ADF00 @ =gUnk_02024494 - adds r3, r0, r1 - ldrb r1, [r3] - movs r0, #0xf0 - ands r0, r1 - cmp r0, #0 - beq _080ADF7C - movs r0, #0xf - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r3] - ldrh r1, [r3, #6] - ldr r0, _080ADF04 @ =0x0000FFFF - cmp r1, r0 - beq _080ADF18 - ldrb r0, [r3, #3] - cmp r0, #0 - beq _080ADF18 - lsls r0, r0, #6 - ldr r1, _080ADF08 @ =gUnk_020000C0 - adds r4, r0, r1 - movs r5, #4 - movs r6, #9 - rsbs r6, r6, #0 -_080ADEB0: - ldrb r1, [r4] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080ADEF6 - ldr r0, _080ADF0C @ =gGFXSlots - ldrb r0, [r0, #3] - cmp r0, #0 - bne _080ADECA - movs r0, #8 - ands r0, r1 - cmp r0, #0 - beq _080ADEF6 -_080ADECA: - adds r0, r6, #0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r4, #9] - lsls r2, r0, #5 - cmp r2, #0 - beq _080ADEF6 - ldrh r0, [r4, #0xa] - lsls r0, r0, #5 - ldr r3, _080ADF10 @ =0x06010000 - adds r1, r0, r3 - ldr r3, _080ADF14 @ =0x040000D4 - ldr r0, [r4, #0xc] - str r0, [r3] - str r1, [r3, #4] - adds r0, r2, #0 - asrs r0, r0, #2 - movs r1, #0x84 - lsls r1, r1, #0x18 - orrs r0, r1 - str r0, [r3, #8] - ldr r0, [r3, #8] -_080ADEF6: - adds r4, #0x10 - subs r5, #1 - cmp r5, #0 - bgt _080ADEB0 - b _080ADF7C - .align 2, 0 -_080ADF00: .4byte gUnk_02024494 -_080ADF04: .4byte 0x0000FFFF -_080ADF08: .4byte gUnk_020000C0 -_080ADF0C: .4byte gGFXSlots -_080ADF10: .4byte 0x06010000 -_080ADF14: .4byte 0x040000D4 -_080ADF18: - lsls r0, r2, #9 - ldr r2, _080ADF4C @ =0x06012800 - adds r1, r0, r2 - ldrh r2, [r3, #6] - cmp r2, #0 - beq _080ADF58 - ldr r0, _080ADF50 @ =0x0000FFFF - cmp r2, r0 - beq _080ADF62 - ldr r2, _080ADF54 @ =0x040000D4 - ldr r0, [r3, #8] - str r0, [r2] - str r1, [r2, #4] - ldrh r0, [r3, #6] - lsls r0, r0, #3 - movs r1, #0x84 - lsls r1, r1, #0x18 - orrs r0, r1 - str r0, [r2, #8] - ldr r0, [r2, #8] - ldrh r2, [r3, #6] - subs r2, #0x10 - cmp r2, #0 - ble _080ADF7C - b _080ADF70 - .align 2, 0 -_080ADF4C: .4byte 0x06012800 -_080ADF50: .4byte 0x0000FFFF -_080ADF54: .4byte 0x040000D4 -_080ADF58: - ldrb r1, [r3] - movs r0, #0xf - ands r0, r1 - strb r0, [r3] - b _080ADF7C -_080ADF62: - ldrb r0, [r3, #3] - cmp r0, #0 - bne _080ADF7C - ldr r0, [r3, #8] - bl LZ77UnCompVram - b _080ADF7C -_080ADF70: - adds r3, #0xc - movs r0, #0 - strh r0, [r3, #6] - subs r2, #0x10 - cmp r2, #0 - bgt _080ADF70 -_080ADF7C: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start LoadFixedGFX -LoadFixedGFX: @ 0x080ADF80 -.ifdef EU - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r5, r1, #0 - cmp r5, #0 - bne _080AD726 - movs r0, #1 - b _080AD77E -_080AD726: - movs r4, #4 - ldr r0, _080AD774 @ =gGFXSlots - adds r0, #0x30 -_080AD72C: - ldrh r1, [r0, #8] - cmp r5, r1 - beq _080AD766 - adds r0, #0xc - adds r4, #1 - cmp r4, #0x2b - bls _080AD72C - ldr r0, _080AD778 @ =gFixedTypeGfxData - lsls r1, r5, #2 - adds r1, r1, r0 - ldr r7, [r1] - movs r0, #0xfe - lsls r0, r0, #0x17 - ands r0, r7 - lsrs r6, r0, #0x18 - adds r0, r6, #0 - bl FindFreeGFXSlot - adds r4, r0, #0 - cmp r4, #0 - beq _080AD77C - adds r1, r5, #0 - adds r2, r6, #0 - bl ReserveGFXSlots - adds r0, r4, #0 - adds r1, r7, #0 - bl sub_080ADDD8 -_080AD766: - adds r0, r4, #0 - mov r1, r8 - movs r2, #4 - bl sub_080AE0C8 - movs r0, #1 - b _080AD77E - .align 2, 0 -_080AD774: .4byte gGFXSlots -_080AD778: .4byte gFixedTypeGfxData -_080AD77C: - movs r0, #0 -_080AD77E: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - -.else - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, #0 - cmp r7, #0 - beq _080ADFFC - movs r5, #4 - ldr r0, _080ADFD4 @ =gGFXSlots - adds r0, #0x30 -_080ADF94: - ldrh r1, [r0, #8] - cmp r7, r1 - beq _080ADFF2 - adds r0, #0xc - adds r5, #1 - cmp r5, #0x2b - bls _080ADF94 - ldr r0, _080ADFD8 @ =gFixedTypeGfxData - lsls r4, r7, #2 - adds r0, r4, r0 - ldr r0, [r0] - movs r1, #0xfe - lsls r1, r1, #0x17 - ands r0, r1 - lsrs r6, r0, #0x18 - adds r0, r6, #0 - bl FindFreeGFXSlot - adds r5, r0, #0 - cmp r5, #0 - bne _080ADFDC - bl CleanUpGFXSlots - adds r0, r6, #0 - bl FindFreeGFXSlot - adds r5, r0, #0 - cmp r5, #0 - bne _080ADFDC - movs r0, #0 - b _080ADFFE - .align 2, 0 -_080ADFD4: .4byte gGFXSlots -_080ADFD8: .4byte gFixedTypeGfxData -_080ADFDC: - adds r0, r5, #0 - adds r1, r7, #0 - adds r2, r6, #0 - bl ReserveGFXSlots - ldr r0, _080AE004 @ =gFixedTypeGfxData - adds r0, r4, r0 - ldr r1, [r0] - adds r0, r5, #0 - bl sub_080ADDD8 -_080ADFF2: - adds r0, r5, #0 - mov r1, r8 - movs r2, #4 - bl sub_080AE0C8 -_080ADFFC: - movs r0, #1 -_080ADFFE: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AE004: .4byte gFixedTypeGfxData -.endif - - thumb_func_start LoadSwapGFX -LoadSwapGFX: @ 0x080AE008 -.ifdef EU - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - adds r4, r2, #0 - cmp r4, #0 - bne _080AD79C - adds r0, r5, #0 - bl FindFreeGFXSlot - adds r4, r0, #0 - cmp r4, #0 - beq _080AD7C4 -_080AD79C: - ldr r0, _080AD7D0 @ =gGFXSlots - lsls r1, r4, #1 - adds r1, r1, r4 - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r0, [r1, #4] - lsls r0, r0, #0x1c - lsrs r2, r0, #0x1c - cmp r2, #6 - beq _080AD7BC - adds r0, r4, #0 - movs r1, #0 - adds r2, r5, #0 - bl ReserveGFXSlots - movs r2, #5 -_080AD7BC: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080AE0C8 -_080AD7C4: - adds r0, r4, #0 - cmp r0, #0 - beq _080AD7CC - movs r0, #1 -_080AD7CC: - pop {r4, r5, r6, pc} - .align 2, 0 -_080AD7D0: .4byte gGFXSlots - -.else - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r5, r1, #0 - adds r4, r2, #0 - cmp r4, #0 - bne _080AE030 - adds r0, r5, #0 - bl FindFreeGFXSlot - adds r4, r0, #0 - cmp r4, #0 - bne _080AE030 - bl CleanUpGFXSlots - adds r0, r5, #0 - bl FindFreeGFXSlot - adds r4, r0, #0 - cmp r4, #0 - beq _080AE058 -_080AE030: - ldr r0, _080AE064 @ =gGFXSlots - lsls r1, r4, #1 - adds r1, r1, r4 - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r0, [r1, #4] - lsls r0, r0, #0x1c - lsrs r2, r0, #0x1c - cmp r2, #6 - beq _080AE050 - adds r0, r4, #0 - movs r1, #0 - adds r2, r5, #0 - bl ReserveGFXSlots - movs r2, #5 -_080AE050: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080AE0C8 -_080AE058: - adds r0, r4, #0 - cmp r0, #0 - beq _080AE060 - movs r0, #1 -_080AE060: - pop {r4, r5, r6, pc} - .align 2, 0 -_080AE064: .4byte gGFXSlots -.endif - - thumb_func_start sub_080AE068 -sub_080AE068: @ 0x080AE068 - push {r4, r5, lr} - adds r0, #0x26 - ldrb r2, [r0] - movs r1, #0 - strb r1, [r0] - cmp r2, #0 - beq _080AE0C2 - lsls r0, r2, #1 - adds r0, r0, r2 - lsls r0, r0, #2 - ldr r1, _080AE0C4 @ =gUnk_02024494 - adds r3, r0, r1 - ldrb r0, [r3] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #5 - bgt _080AE0C2 - cmp r0, #4 - blt _080AE0C2 - ldrb r0, [r3, #2] - cmp r0, #0 - beq _080AE0C2 - subs r0, #1 - strb r0, [r3, #2] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080AE0C2 - ldrb r2, [r3, #1] - adds r0, r2, #0 - subs r2, #1 - cmp r0, #0 - ble _080AE0C2 - movs r5, #0x10 - rsbs r5, r5, #0 - movs r4, #1 -_080AE0AE: - ldrb r0, [r3] - adds r1, r5, #0 - ands r1, r0 - orrs r1, r4 - strb r1, [r3] - adds r3, #0xc - adds r0, r2, #0 - subs r2, #1 - cmp r0, #0 - bgt _080AE0AE -_080AE0C2: - pop {r4, r5, pc} - .align 2, 0 -_080AE0C4: .4byte gUnk_02024494 - - thumb_func_start sub_080AE0C8 -sub_080AE0C8: @ 0x080AE0C8 - push {r4, lr} - adds r4, r2, #0 - lsls r2, r0, #4 - movs r3, #0xa0 - lsls r3, r3, #1 - adds r2, r2, r3 - adds r3, r1, #0 - adds r3, #0x60 - strh r2, [r3] - adds r1, #0x26 - strb r0, [r1] - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - ldr r0, _080AE100 @ =gUnk_02024494 - adds r1, r1, r0 - ldrb r2, [r1, #2] - movs r0, #2 - ldrsb r0, [r1, r0] - cmp r0, #0 - blt _080AE0F6 - adds r0, r2, #1 - strb r0, [r1, #2] -_080AE0F6: - adds r0, r1, #0 - adds r1, r4, #0 - bl sub_080AE134 - pop {r4, pc} - .align 2, 0 -_080AE100: .4byte gUnk_02024494 - - thumb_func_start ReserveGFXSlots -ReserveGFXSlots: @ 0x080AE104 - push {r4, r5, r6, lr} - adds r6, r1, #0 - adds r5, r2, #0 - lsls r4, r0, #1 - adds r4, r4, r0 - lsls r4, r4, #2 - ldr r0, _080AE130 @ =gUnk_02024494 - adds r4, r4, r0 - lsls r1, r5, #1 - adds r1, r1, r5 - lsls r1, r1, #2 - adds r0, r4, #0 - bl MemClear - strb r5, [r4, #1] - strh r6, [r4, #4] - adds r0, r4, #0 - movs r1, #4 - bl sub_080AE134 - pop {r4, r5, r6, pc} - .align 2, 0 -_080AE130: .4byte gUnk_02024494 - - thumb_func_start sub_080AE134 -sub_080AE134: @ 0x080AE134 - push {r4, r5, r6, lr} - adds r3, r0, #0 - adds r4, r1, #0 - movs r6, #0xf - adds r0, r4, #0 - ands r0, r6 - ldrb r2, [r3] - movs r5, #0x10 - rsbs r5, r5, #0 - adds r1, r5, #0 - ands r1, r2 - orrs r1, r0 - strb r1, [r3] - ldrb r2, [r3, #1] - cmp r4, #6 - beq _080AE156 - movs r4, #3 -_080AE156: - subs r2, #1 - cmp r2, #0 - ble _080AE170 - ands r4, r6 -_080AE15E: - adds r3, #0xc - ldrb r1, [r3] - adds r0, r5, #0 - ands r0, r1 - orrs r0, r4 - strb r0, [r3] - subs r2, #1 - cmp r2, #0 - bgt _080AE15E -_080AE170: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start FindFreeGFXSlot -FindFreeGFXSlot: @ 0x080AE174 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r2, #4 - ldr r0, _080AE194 @ =gGFXSlots - adds r3, r0, #0 - adds r3, #0x30 -_080AE182: - ldrb r0, [r3, #4] - lsls r0, r0, #0x1c - cmp r0, #0 - bne _080AE198 - adds r1, #1 - cmp r4, r1 - bhi _080AE19A - b _080AE1BC - .align 2, 0 -_080AE194: .4byte gGFXSlots -_080AE198: - movs r1, #0 -_080AE19A: - adds r3, #0xc - adds r2, #1 - cmp r2, #0x2b - bls _080AE182 - movs r1, #0 - movs r2, #4 - ldr r0, _080AE1C4 @ =gGFXSlots - adds r3, r0, #0 - adds r3, #0x30 -_080AE1AC: - ldrb r0, [r3, #4] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 -.ifdef EU - bne _080AE1C8 -.else - bhi _080AE1C8 -.endif - adds r1, #1 - cmp r4, r1 - bhi _080AE1CA -_080AE1BC: - subs r0, r2, r1 - adds r0, #1 - b _080AE1D4 - .align 2, 0 -_080AE1C4: .4byte gGFXSlots -_080AE1C8: - movs r1, #0 -_080AE1CA: - adds r3, #0xc - adds r2, #1 - cmp r2, #0x2b - bls _080AE1AC - movs r0, #0 -_080AE1D4: - pop {r4, pc} - .align 2, 0 - -.ifndef EU - thumb_func_start CleanUpGFXSlots -CleanUpGFXSlots: @ 0x080AE1D8 - push {r4, r5, lr} - ldr r0, _080AE1E8 @ =gGFXSlots - ldrb r0, [r0] - cmp r0, #0 - beq _080AE216 - movs r5, #4 - b _080AE20A - .align 2, 0 -_080AE1E8: .4byte gGFXSlots -_080AE1EC: - bl sub_080AE3B8 - adds r4, r0, #0 - cmp r4, r5 - bhi _080AE208 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080AE218 - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_080AE324 - adds r5, r4, #0 -_080AE208: - adds r5, #1 -_080AE20A: - adds r0, r5, #0 - bl sub_080AE384 - adds r5, r0, #0 - cmp r5, #0 - bne _080AE1EC -_080AE216: - pop {r4, r5, pc} - - thumb_func_start sub_080AE218 -sub_080AE218: @ 0x080AE218 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - mov sl, r0 - mov r8, r1 - lsls r0, r1, #4 - movs r1, #0xa0 - lsls r1, r1, #1 - adds r0, r0, r1 - mov ip, r0 - mov r2, sl - lsls r0, r2, #4 - adds r3, r0, r1 - ldr r1, _080AE30C @ =gGFXSlots - lsls r0, r2, #1 - add r0, sl - lsls r0, r0, #2 - adds r0, r0, r1 - ldrb r0, [r0, #5] - lsls r0, r0, #4 - adds r7, r3, r0 - movs r4, #0 - ldr r6, _080AE310 @ =gUnk_020000C0 - mov sb, r6 - ldr r0, _080AE314 @ =gPlayerEntity - adds r2, r0, #0 - adds r2, #0x26 - adds r5, r0, #0 -_080AE254: - ldr r0, [r5, #4] - cmp r0, #0 - beq _080AE276 - ldrb r0, [r2] - cmp sl, r0 - bne _080AE264 - mov r1, r8 - strb r1, [r2] -_080AE264: - ldrh r0, [r2, #0x3a] - cmp r3, r0 - bhi _080AE276 - cmp r7, r0 - bls _080AE276 - subs r0, r0, r3 - mov r6, ip - adds r1, r0, r6 - strh r1, [r2, #0x3a] -_080AE276: - adds r2, #0x88 - adds r5, #0x88 - adds r4, #1 - cmp r4, #0x4f - bls _080AE254 - movs r0, #0 -_080AE282: - movs r4, #0 - adds r1, r0, #1 - mov r8, r1 - lsls r5, r0, #6 -_080AE28A: - lsls r0, r4, #4 - add r0, sb - adds r2, r5, r0 - ldrb r1, [r2] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _080AE2B4 - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _080AE2B4 - ldrh r1, [r2, #0xa] - cmp r3, r1 - bhi _080AE2B4 - cmp r7, r1 - bls _080AE2B4 - subs r0, r1, r3 - mov r6, ip - adds r1, r0, r6 - strh r1, [r2, #0xa] -_080AE2B4: - adds r4, #1 - cmp r4, #3 - bls _080AE28A - mov r0, r8 - cmp r0, #0x2f - bls _080AE282 - movs r4, #0 - ldr r0, _080AE318 @ =0xFFFFFC00 - mov sl, r0 - ldr r5, _080AE31C @ =gUnk_03000000 - adds r5, #0x24 - ldr r1, _080AE320 @ =0x000003FF - mov sb, r1 - movs r2, #1 - mov r8, r2 -_080AE2D2: - ldrh r2, [r5] - lsls r0, r2, #0x16 - lsrs r1, r0, #0x16 - cmp r3, r1 - bhi _080AE2F8 - cmp r7, r1 - bls _080AE2F8 - subs r0, r1, r3 - mov r6, ip - adds r1, r0, r6 - mov r0, sb - ands r1, r0 - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r5] - mov r2, r8 - ldr r1, _080AE31C @ =gUnk_03000000 - strb r2, [r1] -_080AE2F8: - adds r5, #8 - adds r4, #1 - cmp r4, #0x7f - bls _080AE2D2 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AE30C: .4byte gGFXSlots -_080AE310: .4byte gUnk_020000C0 -_080AE314: .4byte gPlayerEntity -_080AE318: .4byte 0xFFFFFC00 -_080AE31C: .4byte gUnk_03000000 -_080AE320: .4byte 0x000003FF - - thumb_func_start sub_080AE324 -sub_080AE324: @ 0x080AE324 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r3, r1, #0 - ldr r2, _080AE380 @ =gGFXSlots - lsls r1, r0, #1 - adds r1, r1, r0 - lsls r1, r1, #2 - adds r5, r1, r2 - ldrb r4, [r5, #5] - subs r4, #1 - movs r0, #1 - rsbs r0, r0, #0 - cmp r4, r0 - beq _080AE372 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #2 - adds r0, r0, r2 - mov r8, r0 - adds r0, r1, #4 - adds r6, r0, r2 -_080AE350: - mov r0, r8 - adds r0, #4 - adds r1, r5, #4 - ldm r1!, {r2, r3, r7} - stm r0!, {r2, r3, r7} - adds r0, r6, #0 - movs r1, #0xc - bl MemClear - adds r6, #0xc - adds r5, #0xc - movs r0, #0xc - add r8, r0 - subs r4, #1 - subs r0, #0xd - cmp r4, r0 - bne _080AE350 -_080AE372: - ldr r1, _080AE380 @ =gGFXSlots - movs r0, #1 - strb r0, [r1, #3] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080AE380: .4byte gGFXSlots - - thumb_func_start sub_080AE384 -sub_080AE384: @ 0x080AE384 - push {lr} - adds r2, r0, #0 - cmp r2, #0x2a - bhi _080AE3B4 - ldr r1, _080AE3A8 @ =gGFXSlots - lsls r0, r2, #1 - adds r0, r0, r2 - lsls r0, r0, #2 - adds r1, r0, r1 -_080AE396: - ldrb r0, [r1, #4] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #5 - bgt _080AE3AC - cmp r0, #4 - blt _080AE3AC - adds r0, r2, #0 - b _080AE3B6 - .align 2, 0 -_080AE3A8: .4byte gGFXSlots -_080AE3AC: - adds r1, #0xc - adds r2, #1 - cmp r2, #0x2a - bls _080AE396 -_080AE3B4: - movs r0, #0 -_080AE3B6: - pop {pc} - - thumb_func_start sub_080AE3B8 -sub_080AE3B8: @ 0x080AE3B8 - push {lr} - movs r1, #4 - ldr r0, _080AE3D4 @ =gGFXSlots - adds r2, r0, #0 - adds r2, #0x30 -_080AE3C2: - ldrb r0, [r2, #4] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 - bgt _080AE3D8 - cmp r0, #0 - blt _080AE3D8 - adds r0, r1, #0 - b _080AE3E2 - .align 2, 0 -_080AE3D4: .4byte gGFXSlots -_080AE3D8: - adds r2, #0xc - adds r1, #1 - cmp r1, #0x2b - bls _080AE3C2 - movs r0, #0 -_080AE3E2: - pop {pc} -.endif - thumb_func_start sub_080AE3E4 sub_080AE3E4: @ 0x080AE3E4 movs r0, #0 diff --git a/asm/code_0807059C.s b/asm/non_matching/playerItemPacciCane/sub_080705AC.inc similarity index 83% rename from asm/code_0807059C.s rename to asm/non_matching/playerItemPacciCane/sub_080705AC.inc index 370d8b49..ecc53f93 100644 --- a/asm/code_0807059C.s +++ b/asm/non_matching/playerItemPacciCane/sub_080705AC.inc @@ -1,23 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0807059C -sub_0807059C: @ 0x0807059C - push {lr} - ldr r0, _080705A8 @ =gUnk_02034490 - movs r1, #0x18 - bl MemClear - pop {pc} - .align 2, 0 -_080705A8: .4byte gUnk_02034490 - - thumb_func_start sub_080705AC -sub_080705AC: @ 0x080705AC + .syntax unified push {lr} ldr r0, _08070614 @ =gInput ldrh r1, [r0, #2] @@ -110,3 +91,4 @@ _08070678: movs r0, #1 _0807067E: pop {pc} + .syntax divided diff --git a/asm/sub_080AD8F0.s b/asm/non_matching/vram/sub_080AD8F0.inc similarity index 61% rename from asm/sub_080AD8F0.s rename to asm/non_matching/vram/sub_080AD8F0.inc index 840d2646..ab23cf55 100644 --- a/asm/sub_080AD8F0.s +++ b/asm/non_matching/vram/sub_080AD8F0.inc @@ -1,12 +1,4 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_080AD8F0 -sub_080AD8F0: @ 0x080AD8F0 + .syntax unified ldr r2, _080AD908 @ =gFrameObjLists lsls r0, r0, #2 adds r0, r0, r2 @@ -20,3 +12,4 @@ sub_080AD8F0: @ 0x080AD8F0 bx lr .align 2, 0 _080AD908: .4byte gFrameObjLists + .syntax divided diff --git a/asm/non_matching/vram/sub_080AD918.inc b/asm/non_matching/vram/sub_080AD918.inc new file mode 100644 index 00000000..6b2c5705 --- /dev/null +++ b/asm/non_matching/vram/sub_080AD918.inc @@ -0,0 +1,76 @@ + .syntax unified + push {r4, lr} + ldr r1, _080AD948 @ =gMain + ldrb r0, [r1, #0xb] + adds r2, r0, #0 + cmp r2, #0 + bne _080AD958 + ldr r1, _080AD94C @ =gUnk_03000000 + movs r3, #0xa4 + lsls r3, r3, #3 + adds r0, r1, r3 + strb r2, [r0] + ldr r3, _080AD950 @ =0x00000664 + adds r0, r1, r3 + strb r2, [r0] + movs r3, #0xf5 + lsls r3, r3, #3 + adds r0, r1, r3 + strb r2, [r0] + ldr r3, _080AD954 @ =0x000008EC + adds r0, r1, r3 + strb r2, [r0] + adds r4, r1, #0 + b _080AD95E + .align 2, 0 +_080AD948: .4byte gMain +_080AD94C: .4byte gUnk_03000000 +_080AD950: .4byte 0x00000664 +_080AD954: .4byte 0x000008EC +_080AD958: + subs r0, #1 + strb r0, [r1, #0xb] + ldr r4, _080AD9A8 @ =gUnk_03000000 +_080AD95E: + ldrb r1, [r4, #3] + movs r0, #0x80 + subs r2, r0, r1 + cmp r2, #0 + ble _080AD980 + lsls r1, r1, #3 + adds r0, r4, #0 + adds r0, #0x20 + adds r1, r1, r0 + movs r3, #0xa8 + lsls r3, r3, #2 + adds r0, r3, #0 +_080AD976: + strh r0, [r1] + adds r1, #8 + subs r2, #1 + cmp r2, #0 + bne _080AD976 +_080AD980: + adds r1, r4, #0 + ldr r0, _080AD9AC @ =0x00000427 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080AD9A0 + movs r0, #0 + strb r0, [r2] + movs r2, #0x84 + lsls r2, r2, #3 + adds r0, r1, r2 + adds r1, #0x26 + movs r2, #0x20 + movs r3, #8 + bl ObjAffineSet +_080AD9A0: + movs r0, #1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_080AD9A8: .4byte gUnk_03000000 +_080AD9AC: .4byte 0x00000427 + .syntax divided diff --git a/asm/code_080A29BC.s b/asm/objectUtils.s similarity index 100% rename from asm/code_080A29BC.s rename to asm/objectUtils.s diff --git a/asm/code_0800857C.s b/asm/player.s similarity index 100% rename from asm/code_0800857C.s rename to asm/player.s diff --git a/asm/code_08077698.s b/asm/playerUtils.s similarity index 100% rename from asm/code_08077698.s rename to asm/playerUtils.s diff --git a/asm/code_08016984.s b/asm/script.s similarity index 100% rename from asm/code_08016984.s rename to asm/script.s diff --git a/asm/code_0807F0D8.s b/asm/scroll.s similarity index 100% rename from asm/code_0807F0D8.s rename to asm/scroll.s diff --git a/asm/code_080A3480.s b/asm/staffroll.s similarity index 100% rename from asm/code_080A3480.s rename to asm/staffroll.s diff --git a/asm/sub_0801C824.s b/asm/sub_0801C824.s deleted file mode 100644 index 2a0beaee..00000000 --- a/asm/sub_0801C824.s +++ /dev/null @@ -1,38 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0801C824 -sub_0801C824: @ 0x0801C824 - push {lr} - ldr r1, _0801C850 @ =gUnk_0200AF00 - ldrb r0, [r1, #6] - cmp r0, #0 - beq _0801C84E - movs r2, #0 - strb r2, [r1, #6] - ldrb r0, [r1, #4] - ldr r1, _0801C854 @ =gUnk_02034D30 - cmp r0, #0x28 - bls _0801C83C - adds r1, #0x40 -_0801C83C: - str r2, [r1] - str r2, [r1, #4] - str r2, [r1, #8] - str r2, [r1, #0xc] - str r2, [r1, #0x10] - str r2, [r1, #0x14] - ldr r1, _0801C858 @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_0801C84E: - pop {pc} - .align 2, 0 -_0801C850: .4byte gUnk_0200AF00 -_0801C854: .4byte gUnk_02034D30 -_0801C858: .4byte gScreen diff --git a/asm/sub_0804AA30.s b/asm/sub_0804AA30.s deleted file mode 100644 index 2233766d..00000000 --- a/asm/sub_0804AA30.s +++ /dev/null @@ -1,31 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_0804AA30 -sub_0804AA30: @ 0x0804AA30 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r6, r4, #0 - adds r6, #0x41 - ldrb r1, [r6] - movs r0, #0x7f - ands r0, r1 - strb r0, [r6] - adds r0, r4, #0 - bl GetNextFunction - ldrb r2, [r6] - movs r1, #0x80 - orrs r1, r2 - strb r1, [r6] - lsls r0, r0, #2 - adds r0, r0, r5 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - pop {r4, r5, r6, pc} - .align 2, 0 diff --git a/asm/sub_080A276C.s b/asm/sub_080A276C.s deleted file mode 100644 index 3ba2ceab..00000000 --- a/asm/sub_080A276C.s +++ /dev/null @@ -1,106 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_080A276C -sub_080A276C: @ 0x080A276C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - adds r4, r1, #0 - adds r7, r2, #0 - bl sub_0805E744 - adds r6, r0, #0 - cmp r6, #0 - beq _080A2820 - movs r0, #0xc1 - strb r0, [r6, #9] - movs r0, #6 - mov r8, r0 - mov r1, r8 - strb r1, [r6, #8] - strb r4, [r6, #0xa] - strb r7, [r6, #0xb] - str r5, [r6, #0x50] - adds r0, r6, #0 - movs r1, #6 - bl AppendEntityToList - adds r0, r6, #0 - movs r1, #6 - bl PrependEntityToList - ldr r4, _080A2828 @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r6, #0 - bl CopyPosition - ldr r0, _080A282C @ =gPriorityHandler - mov r1, r8 - strb r1, [r0] - ldr r1, _080A2830 @ =gUnk_02034490 - movs r0, #1 - strb r0, [r1] - ldrb r0, [r4, #0x10] - adds r1, r6, #0 - adds r1, #0x69 - strb r0, [r1] - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - subs r1, #1 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x3d - ldrb r0, [r0] - adds r1, #2 - strb r0, [r1] - ldr r1, _080A2834 @ =gPlayerState - ldrb r0, [r1, #7] - adds r2, r6, #0 - adds r2, #0x6b - strb r0, [r2] - ldrb r2, [r1, #0xb] - adds r0, r6, #0 - adds r0, #0x6c - strb r2, [r0] - ldrb r0, [r1, #0xa] - adds r2, r6, #0 - adds r2, #0x6d - strb r0, [r2] - adds r0, r1, #0 - adds r0, #0x27 - ldrb r0, [r0] - adds r2, #1 - strb r0, [r2] - ldrb r0, [r1, #0x1a] - adds r2, #1 - strb r0, [r2] - ldr r0, [r1, #0x30] - str r0, [r6, #0x70] - adds r1, #0x8a - ldrb r1, [r1] - adds r0, r6, #0 - adds r0, #0x74 - strb r1, [r0] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_080A2820: - adds r0, r6, #0 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A2828: .4byte gPlayerEntity -_080A282C: .4byte gPriorityHandler -_080A2830: .4byte gUnk_02034490 -_080A2834: .4byte gPlayerState diff --git a/asm/code_080A3BD0.s b/asm/subtask.s similarity index 100% rename from asm/code_080A3BD0.s rename to asm/subtask.s diff --git a/asm/code_080A5574.s b/asm/subtask2.s similarity index 100% rename from asm/code_080A5574.s rename to asm/subtask2.s diff --git a/asm/text.s b/asm/text.s new file mode 100644 index 00000000..63c05280 --- /dev/null +++ b/asm/text.s @@ -0,0 +1,1203 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_0805EEB4 +sub_0805EEB4: @ 0x0805EEB4 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r3, r1, #0 + strh r3, [r7, #8] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #7] + cmp r1, #1 + bls _0805EED6 + lsrs r0, r3, #8 + cmp r0, #1 + bne _0805EED6 + movs r0, #0x8c + lsls r0, r0, #1 + cmp r3, r0 + bhi _0805EED6 + movs r1, #3 +_0805EED6: + ldr r0, _0805EF14 @ =gUnk_08109214 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + lsrs r0, r3, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r4, [r0] + adds r2, r2, r4 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, [r1] + ldr r1, [r0] + lsrs r1, r1, #2 + ldr r0, [r2] + lsrs r6, r0, #2 + movs r5, #0 + ldrh r3, [r7, #8] + lsrs r0, r3, #8 + cmp r0, r1 + bhs _0805EF0E + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r6 + blo _0805EF18 +_0805EF0E: + movs r5, #1 + b _0805EF22 + .align 2, 0 +_0805EF14: .4byte gUnk_08109214 +_0805EF18: + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0805EF22 + movs r5, #2 +_0805EF22: + cmp r5, #2 + bhi _0805EF2E + cmp r5, #1 + blo _0805EF2E + ldr r2, _0805EF3C @ =gUnk_08109244 + movs r4, #0 +_0805EF2E: + adds r2, r2, r4 + adds r0, r7, #0 + adds r1, r2, #0 + bl sub_0805EF40 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805EF3C: .4byte gUnk_08109244 + + thumb_func_start sub_0805EF40 +sub_0805EF40: @ 0x0805EF40 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldrb r2, [r3] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0805EF70 + lsls r1, r2, #0x1b + lsrs r0, r1, #0x1c + cmp r0, #6 + bls _0805EF5C + movs r0, #0 + b _0805EF8A +_0805EF5C: + lsrs r0, r1, #0x1c + adds r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_0805EF70: + ldrb r0, [r3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1c + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r1, r1, r0 + str r4, [r1] + ldrb r0, [r3] + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + movs r0, #1 +_0805EF8A: + pop {r4, pc} + + thumb_func_start sub_0805EF8C +sub_0805EF8C: @ 0x0805EF8C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805EFAE + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1c + lsls r0, r0, #2 + adds r2, #0x10 + adds r2, r2, r0 + ldr r1, [r2] + ldrb r0, [r1] + adds r1, #1 + str r1, [r2] + b _0805EFB0 +_0805EFAE: + movs r0, #0 +_0805EFB0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805EFB4 +sub_0805EFB4: @ 0x0805EFB4 + push {r4, lr} + adds r3, r0, #0 + ldrb r2, [r3] + lsls r1, r2, #0x1b + lsrs r4, r1, #0x1c + movs r0, #0x1e + ands r0, r2 + cmp r0, #0 + beq _0805EFDC + adds r0, r4, #0 + subs r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + b _0805EFE4 +_0805EFDC: + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] +_0805EFE4: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start GetCharacter +GetCharacter: @ 0x0805EFE8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 +_0805EFEC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + strb r5, [r6, #1] + movs r7, #0 + cmp r5, #0xf + bls _0805EFFE + b _0805F22C +_0805EFFE: + lsls r0, r5, #2 + ldr r1, _0805F008 @ =_0805F00C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F008: .4byte _0805F00C +_0805F00C: @ jump table + .4byte _0805F04C @ case 0 + .4byte _0805F058 @ case 1 + .4byte _0805F06E @ case 2 + .4byte _0805F07A @ case 3 + .4byte _0805F090 @ case 4 + .4byte _0805F130 @ case 5 + .4byte _0805F150 @ case 6 + .4byte _0805F196 @ case 7 + .4byte _0805F1C0 @ case 8 + .4byte _0805F1CC @ case 9 + .4byte _0805F1D8 @ case 10 + .4byte _0805F1DC @ case 11 + .4byte _0805F1EC @ case 12 + .4byte _0805F1FC @ case 13 + .4byte _0805F20C @ case 14 + .4byte _0805F21C @ case 15 +_0805F04C: + adds r0, r6, #0 + bl sub_0805EFB4 + adds r7, r0, #0 + movs r5, #0 + b _0805F232 +_0805F058: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + strh r4, [r6, #2] + movs r5, #6 + cmp r4, #0xa + bls _0805F06A + b _0805F232 +_0805F06A: + movs r5, #5 + b _0805F232 +_0805F06E: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #7 + b _0805F232 +_0805F07A: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + strh r4, [r6, #2] + movs r5, #8 + b _0805F232 +_0805F090: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #0x15 + bhi _0805F12C + lsls r0, r4, #2 + ldr r1, _0805F0A8 @ =_0805F0AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F0A8: .4byte _0805F0AC +_0805F0AC: @ jump table + .4byte _0805F104 @ case 0 + .4byte _0805F104 @ case 1 + .4byte _0805F104 @ case 2 + .4byte _0805F104 @ case 3 + .4byte _0805F104 @ case 4 + .4byte _0805F104 @ case 5 + .4byte _0805F104 @ case 6 + .4byte _0805F104 @ case 7 + .4byte _0805F104 @ case 8 + .4byte _0805F104 @ case 9 + .4byte _0805F104 @ case 10 + .4byte _0805F104 @ case 11 + .4byte _0805F104 @ case 12 + .4byte _0805F104 @ case 13 + .4byte _0805F104 @ case 14 + .4byte _0805F104 @ case 15 + .4byte _0805F108 @ case 16 + .4byte _0805F114 @ case 17 + .4byte _0805F118 @ case 18 + .4byte _0805F11C @ case 19 + .4byte _0805F120 @ case 20 + .4byte _0805F120 @ case 21 +_0805F104: + movs r5, #9 + b _0805F12C +_0805F108: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + movs r5, #0xa + b _0805F12C +_0805F114: + movs r5, #2 + b _0805F12C +_0805F118: + movs r5, #3 + b _0805F12C +_0805F11C: + movs r5, #4 + b _0805F12C +_0805F120: + movs r5, #0xb + movs r1, #0x14 + eors r1, r4 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r4, r0, #0x1f +_0805F12C: + strh r4, [r6, #2] + b _0805F232 +_0805F130: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #0xff + bne _0805F140 + movs r4, #0 + b _0805F14A +_0805F140: + lsls r4, r4, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 +_0805F14A: + strh r4, [r6, #6] + movs r5, #0xc + b _0805F232 +_0805F150: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #4 + bls _0805F162 + cmp r4, #5 + beq _0805F17C + b _0805EFEC +_0805F162: + ldr r1, [r6, #0xc] + cmp r1, #0 + bne _0805F16A + ldr r1, _0805F178 @ =gUnk_08109230 +_0805F16A: + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_0805EF40 + b _0805EFEC + .align 2, 0 +_0805F178: .4byte gUnk_08109230 +_0805F17C: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805EEB4 + b _0805EFEC +_0805F196: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + ldrb r1, [r6] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r6] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805EEB4 + b _0805EFEC +_0805F1C0: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #0xd + b _0805F232 +_0805F1CC: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #0xe + b _0805F232 +_0805F1D8: + movs r5, #1 + b _0805F232 +_0805F1DC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0x80 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F1EC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xe0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F1FC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xa0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F20C: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F21C: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + orrs r5, r0 + b _0805F232 +_0805F22C: + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r5, r0 +_0805F232: + cmp r7, #0 + beq _0805F238 + b _0805EFEC +_0805F238: + lsrs r0, r5, #8 + cmp r0, #0 + beq _0805F256 + ldrb r0, [r6] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1e + cmp r0, #0 + beq _0805F254 + cmp r0, #1 + bne _0805F254 + adds r0, r5, #0 + bl sub_0805F9A0 + adds r5, r0, #0 +_0805F254: + strh r5, [r6, #4] +_0805F256: + adds r0, r5, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0805F25C +sub_0805F25C: @ 0x0805F25C + push {lr} + adds r2, r0, #0 + lsrs r3, r2, #8 + movs r0, #0xf + ands r3, r0 + movs r0, #0xff + ands r2, r0 + cmp r3, #8 + bhi _0805F2B6 + lsls r0, r3, #2 + ldr r1, _0805F278 @ =_0805F27C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F278: .4byte _0805F27C +_0805F27C: @ jump table + .4byte _0805F2A0 @ case 0 + .4byte _0805F2A0 @ case 1 + .4byte _0805F2B6 @ case 2 + .4byte _0805F2B6 @ case 3 + .4byte _0805F2B6 @ case 4 + .4byte _0805F2B4 @ case 5 + .4byte _0805F2B4 @ case 6 + .4byte _0805F2B4 @ case 7 + .4byte _0805F2B4 @ case 8 +_0805F2A0: + cmp r2, #0x7f + bls _0805F2B6 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0805F2B6 + subs r2, #0x80 + movs r3, #2 + b _0805F2B6 +_0805F2B4: + lsls r2, r2, #1 +_0805F2B6: + ldr r1, _0805F2C4 @ =gUnk_08109248 + lsls r0, r3, #2 + adds r0, r0, r1 + lsls r1, r2, #6 + ldr r0, [r0] + adds r0, r0, r1 + pop {pc} + .align 2, 0 +_0805F2C4: .4byte gUnk_08109248 + + thumb_func_start sub_0805F2C8 +sub_0805F2C8: @ 0x0805F2C8 + push {r4, r5, lr} + movs r1, #0 + ldr r4, _0805F2EC @ =gUnk_02036540 + adds r5, r4, #0 +_0805F2D0: + ldrb r0, [r4] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0805F2F0 + adds r0, r5, #0 + movs r1, #0xc + bl MemClear + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + strb r0, [r4] + adds r0, r5, #0 + b _0805F2FC + .align 2, 0 +_0805F2EC: .4byte gUnk_02036540 +_0805F2F0: + adds r4, #0xc + adds r5, #0xc + adds r1, #1 + cmp r1, #3 + bls _0805F2D0 + movs r0, #0 +_0805F2FC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805F300 +sub_0805F300: @ 0x0805F300 + push {lr} + adds r2, r0, #0 + movs r1, #0 + ldr r0, _0805F314 @ =gUnk_02036540 +_0805F308: + cmp r0, r2 + bne _0805F318 + movs r1, #0xc + bl MemClear + b _0805F320 + .align 2, 0 +_0805F314: .4byte gUnk_02036540 +_0805F318: + adds r0, #0xc + adds r1, #1 + cmp r1, #3 + bls _0805F308 +_0805F320: + pop {pc} + .align 2, 0 + + thumb_func_start GetFontStrWith +GetFontStrWith: @ 0xGetFontStrWidth + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + adds r7, r1, #0 + mov r1, sp + movs r2, #0x30 + bl MemCopy + movs r0, #0 + str r0, [sp, #0x34] + movs r1, #0 + str r1, [sp, #0x30] + mov sl, r1 + mov r8, r1 + b _0805F34C +_0805F348: + cmp r6, #0 + beq _0805F41E +_0805F34C: + movs r5, #0 + movs r2, #1 + mov sb, r2 +_0805F352: + mov r0, sp + bl GetCharacter + adds r6, r0, #0 + cmp r6, #0xe + bhi _0805F3B4 + lsls r0, r6, #2 + ldr r1, _0805F368 @ =_0805F36C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F368: .4byte _0805F36C +_0805F36C: @ jump table + .4byte _0805F402 @ case 0 + .4byte _0805F402 @ case 1 + .4byte _0805F3FC @ case 2 + .4byte _0805F3FC @ case 3 + .4byte _0805F3FC @ case 4 + .4byte _0805F3FC @ case 5 + .4byte _0805F3FC @ case 6 + .4byte _0805F3FC @ case 7 + .4byte _0805F3FC @ case 8 + .4byte _0805F3FC @ case 9 + .4byte _0805F3FC @ case 10 + .4byte _0805F3AC @ case 11 + .4byte _0805F3A8 @ case 12 + .4byte _0805F3FC @ case 13 + .4byte _0805F3FC @ case 14 +_0805F3A8: + adds r5, #8 + b _0805F3FC +_0805F3AC: + mov r0, sp + ldrh r0, [r0, #2] + mov r8, r0 + b _0805F3FC +_0805F3B4: + mov r0, r8 + cmp r0, #0 + bne _0805F3DE + adds r0, r6, #0 + bl sub_0805F25C + adds r4, r0, #0 + lsrs r0, r6, #8 + cmp r0, #4 + bls _0805F3D2 + ldr r0, [r4, #0x40] + bl sub_0805F7A0 + lsrs r0, r0, #8 + adds r5, r5, r0 +_0805F3D2: + ldr r0, [r4] + bl sub_0805F7A0 + lsrs r0, r0, #8 + adds r5, r5, r0 + b _0805F3EA +_0805F3DE: + lsrs r0, r6, #8 + cmp r0, #4 + bls _0805F3E8 + adds r5, #0x10 + b _0805F3EA +_0805F3E8: + adds r5, #8 +_0805F3EA: + mov r0, sp + ldrb r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + bne _0805F3FC + cmp r5, #1 + bls _0805F3FC + subs r5, #1 +_0805F3FC: + mov r1, sb + cmp r1, #0 + bne _0805F352 +_0805F402: + cmp r5, sl + bls _0805F408 + mov sl, r5 +_0805F408: + cmp r5, #0 + beq _0805F414 + ldr r2, [sp, #0x30] + adds r2, #1 + str r2, [sp, #0x30] + b _0805F41A +_0805F414: + ldr r0, [sp, #0x34] + adds r0, #1 + str r0, [sp, #0x34] +_0805F41A: + cmp r7, #0 + bne _0805F348 +_0805F41E: + cmp r7, #0 + bne _0805F426 + mov r0, sl + b _0805F434 +_0805F426: + ldr r1, [sp, #0x34] + lsls r0, r1, #0x18 + ldr r2, [sp, #0x30] + lsls r1, r2, #0x10 + orrs r0, r1 + mov r1, sl + orrs r0, r1 +_0805F434: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F440 +sub_0805F440: @ 0x0805F440 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x30 + bl MemClear + ldr r0, _0805F45C @ =0x0000FFFF + cmp r5, r0 + bls _0805F460 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805EF40 + b _0805F468 + .align 2, 0 +_0805F45C: .4byte 0x0000FFFF +_0805F460: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805EEB4 +_0805F468: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805F46C +sub_0805F46C: @ 0x0805F46C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x48 + adds r6, r0, #0 + adds r5, r1, #0 + bl sub_0805F2C8 + mov r8, r0 + cmp r0, #0 + bne _0805F486 + b _0805F5BC +_0805F486: + add r4, sp, #0x30 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x18 + bl MemCopy + mov r0, sp + adds r1, r6, #0 + bl sub_0805F440 + mov r3, sp + ldrb r0, [r4, #0x17] + movs r1, #3 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0x17] + lsls r1, r1, #4 + mov r0, r8 + ldrb r2, [r0] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + ldrb r0, [r4, #0x12] + strh r0, [r1, #4] + ldr r0, [r4, #8] + str r0, [r1, #8] + ldrb r0, [r4, #0x15] + strb r0, [r1, #2] + ldrb r0, [r4, #0x14] + strb r0, [r1, #3] + ldrb r1, [r4, #0x13] + movs r0, #8 + ands r0, r1 + mov sb, r4 + cmp r0, #0 + beq _0805F59E + lsrs r0, r1, #4 + ldrb r1, [r4, #0x14] + ldr r2, [r4, #4] + bl sub_0805F918 + ldr r0, [r4, #4] + adds r0, #0xe0 + str r0, [r4, #4] + mov r0, sp + movs r1, #1 + bl GetFontStrWith + lsrs r2, r0, #0x18 + ldrb r1, [r4, #0x16] + muls r2, r1, r2 + asrs r1, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r7, r2, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r1, r4, #0 + mov r2, sb + ldrb r3, [r2, #0x12] + cmp r3, r1 + bge _0805F514 + adds r1, r3, #0 +_0805F514: + adds r4, r1, #7 + movs r2, #8 + rsbs r2, r2, #0 + mov r0, sb + ldrb r1, [r0, #0x13] + movs r0, #2 + ands r0, r1 + ands r4, r2 + cmp r0, #0 + bne _0805F52A + adds r4, r3, #0 +_0805F52A: + ldr r5, [sp, #0x30] + adds r0, r5, #0 + adds r0, #0x40 + str r0, [sp, #0x30] + mov r2, sb + ldrb r1, [r2, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F54E + adds r4, #0xf + movs r0, #0x10 + rsbs r0, r0, #0 + ands r4, r0 + lsrs r0, r4, #3 + adds r0, #2 + subs r5, r5, r0 + b _0805F554 +_0805F54E: + adds r0, r5, #0 + adds r0, #0x42 + str r0, [sp, #0x30] +_0805F554: + lsrs r4, r4, #3 + mov r3, sb + ldrh r6, [r3, #0x10] + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + adds r3, r6, #0 + bl DispMessageFrame + adds r5, #2 + mov r1, sb + ldrh r0, [r1, #0x10] + adds r0, #7 + strh r0, [r1, #0x10] + ldrh r0, [r1, #0x10] + subs r6, r0, #1 + adds r0, r7, #0 + subs r7, #1 + cmp r0, #0 + beq _0805F59E +_0805F57C: + adds r1, r5, #0 + adds r1, #0x40 + adds r5, r1, #0 + subs r2, r4, #1 + subs r3, r7, #1 + cmp r4, #0 + ble _0805F596 +_0805F58A: + strh r6, [r1] + adds r1, #2 + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bgt _0805F58A +_0805F596: + adds r0, r7, #0 + adds r7, r3, #0 + cmp r0, #0 + bne _0805F57C +_0805F59E: + ldr r0, _0805F5C8 @ =gUnk_02034330 + movs r1, #0x18 + bl MemClear +_0805F5A6: + mov r0, sb + mov r1, sp + mov r2, r8 + bl sub_0805F5CC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805F5A6 + mov r0, r8 + bl sub_0805F300 +_0805F5BC: + movs r0, #0 + add sp, #0x48 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805F5C8: .4byte gUnk_02034330 + + thumb_func_start sub_0805F5CC +sub_0805F5CC: @ 0x0805F5CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + ldrb r0, [r4, #0x14] + bl sub_0805F8F8 + ldr r1, [r4, #8] + ldrb r2, [r4, #0x12] + adds r2, #7 + movs r3, #0xfc + lsls r3, r3, #1 + ands r2, r3 + lsls r2, r2, #3 + bl MemFill32 + adds r0, r6, #0 + movs r1, #0 + bl GetFontStrWith + adds r2, r0, #0 + ldrb r1, [r4, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F60E + adds r0, r2, #1 + lsrs r0, r0, #1 + movs r1, #8 + subs r1, r1, r0 + movs r0, #7 + ands r0, r1 + b _0805F610 +_0805F60E: + movs r0, #0 +_0805F610: + strh r0, [r5, #6] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0805F6A4 + adds r2, r0, #0 + cmp r2, #0 + beq _0805F660 + ldrh r1, [r5, #6] + adds r0, r1, #7 + asrs r5, r0, #3 + ldr r2, [r4] + ldrb r1, [r4, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F63A + adds r0, r5, #1 + lsrs r0, r0, #1 + lsls r0, r0, #1 + subs r2, r2, r0 +_0805F63A: + ldrh r1, [r4, #0x10] + adds r0, r2, #0 + adds r2, r5, #0 + bl sub_0805F67C + strh r0, [r4, #0x10] + ldr r0, [r4] + adds r0, #0x80 + str r0, [r4] + lsls r5, r5, #6 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + adds r2, r5, #0 + bl MemCopy + ldr r0, [r4, #4] + adds r0, r0, r5 + str r0, [r4, #4] + b _0805F670 +_0805F660: + ldrb r0, [r6, #1] + cmp r0, #0xa + bne _0805F670 + ldrb r1, [r4, #0x16] + lsls r1, r1, #6 + ldr r0, [r4] + adds r0, r0, r1 + str r0, [r4] +_0805F670: + ldrb r1, [r6, #1] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805F67C +sub_0805F67C: @ 0x0805F67C + push {r4, lr} + adds r3, r0, #0 + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0805F6A0 + adds r4, r0, #0 +_0805F68C: + strh r1, [r3] + adds r1, #1 + adds r0, r3, #0 + adds r0, #0x40 + strh r1, [r0] + adds r1, #1 + adds r3, #2 + subs r2, #1 + cmp r2, r4 + bne _0805F68C +_0805F6A0: + adds r0, r1, #0 + pop {r4, pc} + + thumb_func_start sub_0805F6A4 +sub_0805F6A4: @ 0x0805F6A4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r6, #0 +_0805F6AC: + adds r0, r5, #0 + bl GetCharacter + movs r7, #1 + cmp r0, #0xe + bhi _0805F746 + lsls r0, r0, #2 + ldr r1, _0805F6C4 @ =_0805F6C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F6C4: .4byte _0805F6C8 +_0805F6C8: @ jump table + .4byte _0805F768 @ case 0 + .4byte _0805F768 @ case 1 + .4byte _0805F764 @ case 2 + .4byte _0805F764 @ case 3 + .4byte _0805F764 @ case 4 + .4byte _0805F764 @ case 5 + .4byte _0805F764 @ case 6 + .4byte _0805F704 @ case 7 + .4byte _0805F764 @ case 8 + .4byte _0805F764 @ case 9 + .4byte _0805F764 @ case 10 + .4byte _0805F740 @ case 11 + .4byte _0805F70E @ case 12 + .4byte _0805F764 @ case 13 + .4byte _0805F764 @ case 14 +_0805F704: + ldrh r0, [r5, #2] + cmp r0, #0xd + bhi _0805F764 + strb r0, [r4, #2] + b _0805F764 +_0805F70E: + ldr r3, _0805F73C @ =gUnk_02034330 + movs r2, #2 + ldrsb r2, [r3, r2] + cmp r2, #3 + bhi _0805F732 + adds r0, r2, #1 + strb r0, [r3, #2] + lsls r2, r2, #1 + adds r0, r3, #0 + adds r0, #0x10 + adds r0, r2, r0 + ldrh r1, [r5, #6] + strh r1, [r0] + adds r0, r3, #0 + adds r0, #8 + adds r2, r2, r0 + ldrh r0, [r4, #6] + strh r0, [r2] +_0805F732: + ldrh r0, [r4, #6] + adds r0, #8 + strh r0, [r4, #6] + adds r6, #8 + b _0805F764 + .align 2, 0 +_0805F73C: .4byte gUnk_02034330 +_0805F740: + ldrh r0, [r5, #2] + strb r0, [r4, #1] + b _0805F764 +_0805F746: + adds r1, r4, #0 + bl sub_0805F7DC + adds r6, r6, r0 + ldrb r1, [r5] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + bne _0805F764 + ldrh r0, [r4, #6] + cmp r0, #1 + bls _0805F764 + subs r6, #1 + subs r0, #1 + strh r0, [r4, #6] +_0805F764: + cmp r7, #0 + bne _0805F6AC +_0805F768: + adds r0, r6, #0 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F76C +sub_0805F76C: @ 0x0805F76C + push {r4, lr} + sub sp, #0x30 + adds r2, r0, #0 + adds r4, r1, #0 + mov r0, sp + adds r1, r2, #0 + bl sub_0805F440 + mov r3, sp + ldrb r0, [r4] + lsrs r0, r0, #4 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + mov r0, sp + adds r1, r4, #0 + bl sub_0805F6A4 + add sp, #0x30 + pop {r4, pc} + + thumb_func_start sub_0805F7A0 +sub_0805F7A0: @ 0x0805F7A0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xf + movs r2, #0 + b _0805F7B4 +_0805F7AA: + lsls r1, r1, #4 + adds r2, #1 + cmp r2, #7 + bhi _0805F7BA + adds r0, r4, #0 +_0805F7B4: + ands r0, r1 + cmp r1, r0 + beq _0805F7AA +_0805F7BA: + adds r3, r2, #0 + cmp r3, #7 + bhi _0805F7D2 + b _0805F7CA +_0805F7C2: + lsls r1, r1, #4 + adds r2, #1 + cmp r2, #7 + bhi _0805F7D2 +_0805F7CA: + adds r0, r4, #0 + ands r0, r1 + cmp r1, r0 + bne _0805F7C2 +_0805F7D2: + subs r2, r2, r3 + lsls r0, r2, #8 + orrs r0, r3 + pop {r4, pc} + .align 2, 0 diff --git a/asm/ui.s b/asm/ui.s new file mode 100644 index 00000000..8cb7208b --- /dev/null +++ b/asm/ui.s @@ -0,0 +1,1708 @@ + .include "asm/macros.inc" + + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_0801C1D4 +sub_0801C1D4: @ 0x0801C1D4 + push {r4, lr} + movs r4, #0 +_0801C1D8: + lsls r1, r4, #5 + ldr r0, _0801C200 @ =gUnk_0200AF34 + adds r2, r1, r0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801C1F8 + ldrb r0, [r2, #1] + lsls r0, r0, #4 + ldr r1, _0801C204 @ =gUnk_080C8F8C + adds r0, r0, r1 + ldr r1, [r0, #8] + adds r0, r2, #0 + bl _call_via_r1 +_0801C1F8: + adds r4, #1 + cmp r4, #0x17 + bls _0801C1D8 + pop {r4, pc} + .align 2, 0 +_0801C200: .4byte gUnk_0200AF34 +_0801C204: .4byte gUnk_080C8F8C + + thumb_func_start sub_0801C208 +sub_0801C208: @ 0x0801C208 + push {r4, r5, lr} + movs r5, #0 + ldr r4, _0801C250 @ =gOamCmd +_0801C20E: + lsls r1, r5, #5 + ldr r0, _0801C254 @ =gUnk_0200AF34 + adds r3, r1, r0 + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + bne _0801C248 + ldrh r0, [r3, #0xc] + strh r0, [r4] + ldrh r0, [r3, #0xe] + strh r0, [r4, #2] + ldrb r2, [r3, #1] + lsls r2, r2, #4 + ldr r0, _0801C258 @ =gUnk_080C8F8C + adds r2, r2, r0 + ldrh r0, [r2] + strh r0, [r4, #4] + ldrh r0, [r2, #2] + strh r0, [r4, #6] + ldrb r0, [r3, #0x18] + lsls r0, r0, #0xc + ldrh r1, [r3, #0x1a] + orrs r0, r1 + strh r0, [r4, #8] + ldrh r0, [r2, #6] + ldrb r1, [r3, #0x10] + bl sub_080ADA14 +_0801C248: + adds r5, #1 + cmp r5, #0x17 + bls _0801C20E + pop {r4, r5, pc} + .align 2, 0 +_0801C250: .4byte gOamCmd +_0801C254: .4byte gUnk_0200AF34 +_0801C258: .4byte gUnk_080C8F8C + + thumb_func_start sub_0801C25C +sub_0801C25C: @ 0x0801C25C + push {r4, r5, r6, r7, lr} + movs r4, #0 + ldr r5, _0801C2E4 @ =gUnk_0200AF34 + adds r6, r5, #0 + subs r6, #0x34 + movs r7, #0xd + rsbs r7, r7, #0 + ldr r3, _0801C2E8 @ =0x040000D4 +_0801C26C: + lsls r0, r4, #5 + adds r2, r0, r5 + ldrb r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + bne _0801C2A8 + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _0801C2A8 + adds r0, r7, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r2, #0x1c] + str r0, [r3] + ldrh r0, [r2, #0x1a] + lsls r0, r0, #5 + ldr r1, _0801C2EC @ =0x06010000 + adds r0, r0, r1 + str r0, [r3, #4] + ldrb r0, [r2, #0x19] + lsls r0, r0, #3 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r3, #8] + ldr r0, [r3, #8] +_0801C2A8: + adds r4, #1 + cmp r4, #0x17 + ble _0801C26C + adds r2, r6, #0 + ldrb r3, [r2, #0x13] + movs r0, #0x13 + ldrsb r0, [r2, r0] + cmp r0, #0 + bge _0801C2C8 + movs r1, #0x7f + ands r1, r3 + strb r1, [r2, #0x13] + movs r0, #0x8d + lsls r0, r0, #1 + bl sub_0801C2F0 +_0801C2C8: + ldrb r2, [r6, #0x14] + movs r0, #0x14 + ldrsb r0, [r6, r0] + cmp r0, #0 + bge _0801C2E0 + movs r1, #0x7f + ands r1, r2 + strb r1, [r6, #0x14] + movs r0, #0x93 + lsls r0, r0, #1 + bl sub_0801C2F0 +_0801C2E0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801C2E4: .4byte gUnk_0200AF34 +_0801C2E8: .4byte 0x040000D4 +_0801C2EC: .4byte 0x06010000 + + thumb_func_start sub_0801C2F0 +sub_0801C2F0: @ 0x0801C2F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + lsls r5, r4, #5 + ldr r1, _0801C330 @ =0x06010000 + adds r4, r5, r1 + movs r1, #0xa + bl Div + cmp r0, #9 + bls _0801C308 + movs r0, #9 +_0801C308: + ldr r2, _0801C334 @ =0x040000D4 + lsls r0, r0, #5 + ldr r3, _0801C338 @ =gUnk_085C4620 + adds r0, r0, r3 + str r0, [r2] + str r4, [r2, #4] + ldr r4, _0801C33C @ =0x84000008 + str r4, [r2, #8] + ldr r0, [r2, #8] + adds r1, #0xa + lsls r1, r1, #5 + adds r1, r1, r3 + str r1, [r2] + ldr r1, _0801C340 @ =0x06010020 + adds r0, r5, r1 + str r0, [r2, #4] + str r4, [r2, #8] + ldr r0, [r2, #8] + pop {r4, r5, pc} + .align 2, 0 +_0801C330: .4byte 0x06010000 +_0801C334: .4byte 0x040000D4 +_0801C338: .4byte gUnk_085C4620 +_0801C33C: .4byte 0x84000008 +_0801C340: .4byte 0x06010020 + + thumb_func_start sub_0801C344 +sub_0801C344: @ 0x0801C344 + push {r4, r5, lr} + ldr r4, _0801C36C @ =gUnk_0200AF00 + ldrb r1, [r4, #1] + ldrb r0, [r4] + bics r0, r1 + movs r5, #0 + strb r0, [r4] + bl sub_0801C6B0 + bl sub_0801C85C + bl sub_0801C4B0 + bl sub_0801C99C + strb r5, [r4] + bl sub_0801C1D4 + pop {r4, r5, pc} + .align 2, 0 +_0801C36C: .4byte gUnk_0200AF00 + + thumb_func_start sub_0801C370 +sub_0801C370: @ 0x0801C370 + push {r4, r5, r6, lr} + cmp r0, #0 + bne _0801C390 + ldr r0, _0801C388 @ =gSave + adds r1, r0, #0 + adds r1, #0xaa + ldrb r1, [r1] + lsrs r6, r1, #1 + adds r0, #0xc0 + ldrh r4, [r0] + ldr r5, _0801C38C @ =gUnk_0200AF00 + b _0801C398 + .align 2, 0 +_0801C388: .4byte gSave +_0801C38C: .4byte gUnk_0200AF00 +_0801C390: + ldr r0, _0801C470 @ =gUnk_0200AF00 + ldrb r6, [r0, #3] + ldrh r4, [r0, #0xe] + adds r5, r0, #0 +_0801C398: + movs r1, #0xcd + lsls r1, r1, #2 + adds r0, r5, #0 + bl MemClear + strb r6, [r5, #3] + strh r4, [r5, #0xe] + ldr r0, _0801C474 @ =gSave + adds r0, #0xab + ldrb r0, [r0] + lsrs r0, r0, #1 + strb r0, [r5, #4] + movs r0, #0xc + bl LoadPaletteGroup + movs r0, #0x10 + bl LoadGfxGroup + ldr r4, _0801C478 @ =gBG0Buffer + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r4, #0 + bl MemClear + ldr r1, _0801C47C @ =gScreen + str r4, [r1, #0x10] + ldr r0, _0801C480 @ =0x00001F0C + strh r0, [r1, #8] + ldrh r2, [r1] + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] + ldr r1, _0801C484 @ =gUnk_03000000 + ldr r2, _0801C488 @ =0x00000427 + adds r0, r1, r2 + movs r2, #1 + strb r2, [r0] + ldr r3, _0801C48C @ =0x00000426 + adds r0, r1, r3 + strb r2, [r0] + ldr r0, _0801C490 @ =0x0000042E + adds r1, r1, r0 + strb r2, [r1] + movs r0, #0x7f + strb r0, [r5, #0x13] + strb r0, [r5, #0x14] + strb r0, [r5, #8] + bl sub_0801C6B0 + bl sub_0801C4B0 + bl sub_0801C85C + bl sub_0801C99C + movs r0, #0xd0 + strh r0, [r5, #0x16] + movs r0, #0xb8 + strh r0, [r5, #0x18] + movs r0, #0xd8 + strh r0, [r5, #0x1a] + movs r0, #0x1c + strh r0, [r5, #0x1c] + strh r0, [r5, #0x1e] + movs r0, #0xe + strh r0, [r5, #0x20] + adds r0, r5, #0 + adds r0, #0x34 + movs r1, #0xc0 + lsls r1, r1, #2 + bl MemClear + movs r0, #5 + movs r1, #9 + bl sub_0801CA6C + movs r0, #3 + movs r1, #0 + bl sub_0801CA6C + movs r0, #4 + movs r1, #0 + bl sub_0801CA6C + movs r0, #2 + movs r1, #0 + bl sub_0801CA6C + movs r0, #1 + movs r1, #0 + bl sub_0801CA6C + movs r0, #0 + movs r1, #0 + bl sub_0801CA6C + movs r0, #7 + movs r1, #0 + bl sub_0801CA6C + movs r0, #6 + movs r1, #0 + bl sub_0801CA6C + pop {r4, r5, r6, pc} + .align 2, 0 +_0801C470: .4byte gUnk_0200AF00 +_0801C474: .4byte gSave +_0801C478: .4byte gBG0Buffer +_0801C47C: .4byte gScreen +_0801C480: .4byte 0x00001F0C +_0801C484: .4byte gUnk_03000000 +_0801C488: .4byte 0x00000427 +_0801C48C: .4byte 0x00000426 +_0801C490: .4byte 0x0000042E + + thumb_func_start RefreshUI +RefreshUI: @ 0x0801C494 + ldr r1, _0801C49C @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] + bx lr + .align 2, 0 +_0801C49C: .4byte gScreen + + thumb_func_start RecoverUI +RecoverUI: @ 0x0801C4A0 + ldr r1, _0801C4AC @ =gUnk_0200AF00 + movs r0, #0 + strb r0, [r1, #2] + strb r0, [r1, #0x10] + strb r0, [r1, #0xa] + bx lr + .align 2, 0 +_0801C4AC: .4byte gUnk_0200AF00 + + thumb_func_start sub_0801C4B0 +sub_0801C4B0: @ 0x0801C4B0 + push {r4, r5, r6, lr} + ldr r2, _0801C4F0 @ =gUnk_0200AF00 + ldrb r1, [r2, #1] + movs r0, #0x40 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0801C4FC + ldrb r0, [r6, #0xa] + cmp r0, #0 + bne _0801C4C8 + b _0801C5D0 +_0801C4C8: + movs r0, #0 + strb r0, [r6, #0xa] + ldr r3, _0801C4F4 @ =gUnk_02035160 + strh r0, [r3] + strh r0, [r3, #2] + strh r0, [r3, #4] + strh r0, [r3, #6] + strh r0, [r3, #8] + adds r4, r3, #0 + adds r4, #0x40 + strh r0, [r4] + strh r0, [r4, #2] + strh r0, [r4, #4] + strh r0, [r4, #6] + strh r0, [r4, #8] + ldr r1, _0801C4F8 @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] + b _0801C5D0 + .align 2, 0 +_0801C4F0: .4byte gUnk_0200AF00 +_0801C4F4: .4byte gUnk_02035160 +_0801C4F8: .4byte gScreen +_0801C4FC: + ldrb r0, [r6, #0xa] + cmp r0, #0 + bne _0801C560 + movs r0, #2 + strb r0, [r6, #0xa] + ldr r3, _0801C54C @ =gUnk_02035160 + adds r4, r3, #0 + adds r4, #0x40 + ldr r1, _0801C550 @ =gWalletSizes + ldr r2, _0801C554 @ =gSave + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r1, [r0, #2] + strh r1, [r3] + adds r0, r1, #1 + strh r0, [r3, #2] + adds r0, r1, #2 + strh r0, [r4] + adds r0, r1, #3 + strh r0, [r4, #2] + ldr r1, _0801C558 @ =0x0000F070 + strh r1, [r3, #4] + adds r0, r1, #1 + strh r0, [r4, #4] + adds r0, r1, #2 + strh r0, [r3, #6] + adds r0, r1, #3 + strh r0, [r4, #6] + adds r0, r1, #4 + strh r0, [r3, #8] + adds r0, r1, #5 + strh r0, [r4, #8] + ldr r1, _0801C55C @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] + movs r4, #1 + b _0801C564 + .align 2, 0 +_0801C54C: .4byte gUnk_02035160 +_0801C550: .4byte gWalletSizes +_0801C554: .4byte gSave +_0801C558: .4byte 0x0000F070 +_0801C55C: .4byte gScreen +_0801C560: + movs r4, #0 + ldr r2, _0801C580 @ =gSave +_0801C564: + adds r5, r6, #0 + adds r0, r2, #0 + adds r0, #0xc0 + ldrh r1, [r5, #0xe] + adds r3, r1, #0 + ldrh r0, [r0] + cmp r3, r0 + beq _0801C58A + cmp r3, r0 + bhs _0801C584 + adds r0, r1, #1 + strh r0, [r5, #0xe] + b _0801C588 + .align 2, 0 +_0801C580: .4byte gSave +_0801C584: + subs r0, r1, #1 + strh r0, [r6, #0xe] +_0801C588: + movs r4, #2 +_0801C58A: + cmp r4, #1 + beq _0801C5A4 + cmp r4, #2 + bne _0801C5CC + ldr r0, _0801C5D4 @ =gUnk_0200AF00 + ldrb r0, [r0, #0xc] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0801C5A4 + movs r0, #0x6f + bl SoundReq +_0801C5A4: + ldr r4, _0801C5D4 @ =gUnk_0200AF00 + ldrh r3, [r4, #0xe] + movs r2, #0 + ldr r1, _0801C5D8 @ =gWalletSizes + ldr r0, _0801C5DC @ =gSave + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, r3 + bhi _0801C5BE + movs r2, #1 +_0801C5BE: + movs r0, #0x70 + adds r1, r3, #0 + movs r3, #3 + bl sub_0801C5E0 + ldrb r0, [r4, #0xc] + adds r4, r0, #1 +_0801C5CC: + ldr r0, _0801C5D4 @ =gUnk_0200AF00 + strb r4, [r0, #0xc] +_0801C5D0: + pop {r4, r5, r6, pc} + .align 2, 0 +_0801C5D4: .4byte gUnk_0200AF00 +_0801C5D8: .4byte gWalletSizes +_0801C5DC: .4byte gSave + + thumb_func_start sub_0801C5E0 +sub_0801C5E0: @ 0x0801C5E0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r7, _0801C650 @ =gUnk_085C4B20 + cmp r2, #0 + bne _0801C5F0 + ldr r0, _0801C654 @ =0xFFFFFD80 + adds r7, r7, r0 +_0801C5F0: + ldr r0, _0801C658 @ =0x000003FF + ands r0, r4 + lsls r6, r0, #5 + ldr r0, _0801C65C @ =0x0600C000 + adds r4, r6, r0 + cmp r3, #2 + beq _0801C620 + cmp r3, #3 + bne _0801C63C + adds r0, r5, #0 + movs r1, #0x64 + bl Div + adds r5, r1, #0 + ldr r1, _0801C660 @ =0x040000D4 + lsls r0, r0, #6 + adds r0, r7, r0 + str r0, [r1] + str r4, [r1, #4] + ldr r0, _0801C664 @ =0x84000010 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r0, _0801C668 @ =0x0600C040 + adds r4, r6, r0 +_0801C620: + adds r0, r5, #0 + movs r1, #0xa + bl Div + adds r5, r1, #0 + ldr r1, _0801C660 @ =0x040000D4 + lsls r0, r0, #6 + adds r0, r7, r0 + str r0, [r1] + str r4, [r1, #4] + ldr r0, _0801C664 @ =0x84000010 + str r0, [r1, #8] + ldr r0, [r1, #8] + adds r4, #0x40 +_0801C63C: + ldr r1, _0801C660 @ =0x040000D4 + lsls r0, r5, #6 + adds r0, r7, r0 + str r0, [r1] + str r4, [r1, #4] + ldr r0, _0801C664 @ =0x84000010 + str r0, [r1, #8] + ldr r0, [r1, #8] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801C650: .4byte gUnk_085C4B20 +_0801C654: .4byte 0xFFFFFD80 +_0801C658: .4byte 0x000003FF +_0801C65C: .4byte 0x0600C000 +_0801C660: .4byte 0x040000D4 +_0801C664: .4byte 0x84000010 +_0801C668: .4byte 0x0600C040 + + thumb_func_start sub_0801C66C +sub_0801C66C: @ 0x0801C66C + push {lr} + ldr r1, _0801C6A4 @ =gUnk_0200AF00 + ldrb r0, [r1, #2] + cmp r0, #0 + beq _0801C6A2 + movs r0, #0 + strb r0, [r1, #2] + ldrb r0, [r1, #4] + movs r2, #1 + cmp r0, #0x28 + bls _0801C684 + movs r2, #2 +_0801C684: + ldr r0, _0801C6A8 @ =gUnk_02034CF0 + ldr r3, _0801C6AC @ =gScreen + movs r1, #0 +_0801C68A: + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r1, [r0, #0x14] + adds r0, #0x40 + subs r2, #1 + cmp r2, #0 + bgt _0801C68A + movs r0, #1 + strh r0, [r3, #0xe] +_0801C6A2: + pop {pc} + .align 2, 0 +_0801C6A4: .4byte gUnk_0200AF00 +_0801C6A8: .4byte gUnk_02034CF0 +_0801C6AC: .4byte gScreen + + thumb_func_start sub_0801C6B0 +sub_0801C6B0: @ 0x0801C6B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r2, _0801C6CC @ =gUnk_0200AF00 + ldrb r1, [r2, #1] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0801C6D0 + bl sub_0801C824 + bl sub_0801C66C + b _0801C802 + .align 2, 0 +_0801C6CC: .4byte gUnk_0200AF00 +_0801C6D0: + ldr r5, _0801C6F8 @ =gSave + adds r0, r5, #0 + adds r0, #0xab + ldrb r0, [r0] + lsrs r4, r0, #1 + ldrb r0, [r2, #4] + cmp r4, r0 + beq _0801C6EA + strb r4, [r2, #4] + bl sub_0801C824 + bl sub_0801C66C +_0801C6EA: + adds r1, r5, #0 + adds r1, #0xaa + ldrb r0, [r1] + cmp r0, #1 + beq _0801C6FC + lsrs r1, r0, #1 + b _0801C6FE + .align 2, 0 +_0801C6F8: .4byte gSave +_0801C6FC: + movs r1, #1 +_0801C6FE: + cmp r1, r4 + ble _0801C704 + adds r1, r4, #0 +_0801C704: + movs r4, #0 + ldr r0, _0801C748 @ =gUnk_0200AF00 + ldrb r2, [r0, #3] + adds r7, r0, #0 + cmp r1, r2 + beq _0801C718 + movs r4, #1 + cmp r1, r2 + ble _0801C718 + movs r4, #2 +_0801C718: + cmp r4, #1 + beq _0801C750 + cmp r4, #2 + bne _0801C756 + ldrb r0, [r7, #5] + adds r1, r0, #1 + strb r1, [r7, #5] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0801C74C + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0801C740 + movs r0, #0x71 + bl SoundReq +_0801C740: + ldrb r0, [r7, #3] + adds r0, #1 + strb r0, [r7, #3] + b _0801C75A + .align 2, 0 +_0801C748: .4byte gUnk_0200AF00 +_0801C74C: + movs r4, #0 + b _0801C75A +_0801C750: + ldrb r0, [r7, #3] + subs r0, #1 + strb r0, [r7, #3] +_0801C756: + movs r0, #0 + strb r0, [r7, #5] +_0801C75A: + ldrb r0, [r7, #2] + cmp r0, #0 + beq _0801C764 + cmp r4, #0 + beq _0801C802 +_0801C764: + movs r0, #2 + strb r0, [r7, #2] + ldrb r0, [r7, #3] + lsrs r3, r0, #2 + cmp r3, #0xa + ble _0801C77A + movs r1, #0xa + mov r8, r1 + adds r6, r3, #0 + subs r6, #0xa + b _0801C77E +_0801C77A: + mov r8, r3 + movs r6, #0 +_0801C77E: + ldrb r0, [r7, #4] + lsrs r4, r0, #2 + adds r1, r4, #0 + cmp r4, #0xa + ble _0801C78A + movs r4, #0xa +_0801C78A: + adds r2, r1, #0 + subs r2, #0xa + ldr r0, _0801C808 @ =gUnk_080C8F2C + mov ip, r0 + cmp r2, #0 + ble _0801C7B8 + ldr r5, _0801C80C @ =gUnk_02034D30 + ldr r1, _0801C810 @ =0x0000F010 + adds r0, r1, #0 + strh r0, [r5] + ldr r1, _0801C814 @ =0x040000D4 + movs r0, #0xa + subs r0, r0, r6 + lsls r0, r0, #1 + add r0, ip + str r0, [r1] + adds r0, r5, #2 + str r0, [r1, #4] + movs r0, #0x80 + lsls r0, r0, #0x18 + orrs r2, r0 + str r2, [r1, #8] + ldr r0, [r1, #8] +_0801C7B8: + ldr r5, _0801C818 @ =gUnk_02034CF0 + ldr r2, _0801C810 @ =0x0000F010 + adds r0, r2, #0 + strh r0, [r5] + ldr r1, _0801C814 @ =0x040000D4 + movs r0, #0xa + mov r2, r8 + subs r0, r0, r2 + lsls r0, r0, #1 + add r0, ip + str r0, [r1] + adds r0, r5, #2 + str r0, [r1, #4] + movs r0, #0x80 + lsls r0, r0, #0x18 + orrs r4, r0 + str r4, [r1, #8] + ldr r0, [r1, #8] + ldrb r0, [r7, #3] + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0801C7FC + cmp r3, #9 + ble _0801C7EE + subs r3, #0xa + adds r5, #0x40 +_0801C7EE: + lsls r0, r3, #1 + adds r0, r0, r5 + adds r1, #0x11 + ldr r3, _0801C81C @ =0xFFFFF000 + adds r2, r3, #0 + orrs r1, r2 + strh r1, [r0, #2] +_0801C7FC: + ldr r1, _0801C820 @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] +_0801C802: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801C808: .4byte gUnk_080C8F2C +_0801C80C: .4byte gUnk_02034D30 +_0801C810: .4byte 0x0000F010 +_0801C814: .4byte 0x040000D4 +_0801C818: .4byte gUnk_02034CF0 +_0801C81C: .4byte 0xFFFFF000 +_0801C820: .4byte gScreen + + thumb_func_start sub_0801C824 +sub_0801C824: @ 0x0801C824 + push {lr} + ldr r1, _0801C850 @ =gUnk_0200AF00 + ldrb r0, [r1, #6] + cmp r0, #0 + beq _0801C84E + movs r2, #0 + strb r2, [r1, #6] + ldrb r0, [r1, #4] + ldr r1, _0801C854 @ =gUnk_02034D30 + cmp r0, #0x28 + bls _0801C83C + adds r1, #0x40 +_0801C83C: + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + str r2, [r1, #0xc] + str r2, [r1, #0x10] + str r2, [r1, #0x14] + ldr r1, _0801C858 @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] +_0801C84E: + pop {pc} + .align 2, 0 +_0801C850: .4byte gUnk_0200AF00 +_0801C854: .4byte gUnk_02034D30 +_0801C858: .4byte gScreen + + thumb_func_start sub_0801C85C +sub_0801C85C: @ 0x0801C85C + push {r4, r5, r6, lr} + movs r2, #0 + ldr r5, _0801C884 @ =gUnk_0200AF00 + ldrb r1, [r5, #1] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0801C878 + ldr r0, _0801C888 @ =gPlayerState + adds r0, #0xa0 + ldrb r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r2, r0, #0x1f +_0801C878: + cmp r2, #0 + bne _0801C88C + bl sub_0801C824 + b _0801C984 + .align 2, 0 +_0801C884: .4byte gUnk_0200AF00 +_0801C888: .4byte gPlayerState +_0801C88C: + ldrb r0, [r5, #4] + ldr r4, _0801C92C @ =gUnk_02034D30 + cmp r0, #0x28 + bls _0801C896 + adds r4, #0x40 +_0801C896: + ldr r0, _0801C930 @ =gPlayerState + adds r0, #0xa4 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, #0x13 + movs r1, #0x14 + bl Div + adds r1, r0, #0 + cmp r1, #0x28 + bls _0801C8AE + movs r1, #0x28 +_0801C8AE: + ldrb r0, [r5, #6] + cmp r0, #0 + beq _0801C8BA + ldrb r0, [r5, #7] + cmp r0, r1 + beq _0801C910 +_0801C8BA: + movs r6, #1 + strb r6, [r5, #6] + strb r1, [r5, #7] + adds r0, r1, #0 + movs r1, #4 + bl Div + adds r3, r0, #0 + adds r5, r1, #0 + ldr r1, _0801C934 @ =0x0000F016 + adds r0, r1, #0 + strh r0, [r4] + ldr r1, _0801C938 @ =0x0000F416 + adds r0, r1, #0 + strh r0, [r4, #0x16] + ldr r2, _0801C93C @ =0x040000D4 + movs r0, #0xa + subs r0, r0, r3 + lsls r0, r0, #1 + ldr r1, _0801C940 @ =gUnk_080C8F54 + adds r0, r0, r1 + str r0, [r2] + adds r0, r4, #2 + str r0, [r2, #4] + ldr r0, _0801C944 @ =0x8000000A + str r0, [r2, #8] + ldr r0, [r2, #8] + cmp r5, #0 + beq _0801C90C + lsls r2, r3, #1 + adds r2, r2, r4 + adds r0, r5, #0 + adds r0, #0x17 + ldr r3, _0801C948 @ =0x000003FF + adds r1, r3, #0 + ands r0, r1 + movs r3, #0xf0 + lsls r3, r3, #8 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2, #2] +_0801C90C: + ldr r0, _0801C94C @ =gScreen + strh r6, [r0, #0xe] +_0801C910: + ldr r0, _0801C930 @ =gPlayerState + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #5 + bgt _0801C962 + cmp r0, #4 + blt _0801C962 + ldr r2, _0801C950 @ =gUnk_0200AF00 + ldrb r1, [r2, #9] + adds r4, r2, #0 + cmp r0, #4 + bne _0801C954 + adds r0, r1, #2 + b _0801C956 + .align 2, 0 +_0801C92C: .4byte gUnk_02034D30 +_0801C930: .4byte gPlayerState +_0801C934: .4byte 0x0000F016 +_0801C938: .4byte 0x0000F416 +_0801C93C: .4byte 0x040000D4 +_0801C940: .4byte gUnk_080C8F54 +_0801C944: .4byte 0x8000000A +_0801C948: .4byte 0x000003FF +_0801C94C: .4byte gScreen +_0801C950: .4byte gUnk_0200AF00 +_0801C954: + adds r0, r1, #1 +_0801C956: + strb r0, [r2, #9] + ldrb r0, [r4, #9] + lsrs r3, r0, #4 + movs r0, #3 + ands r3, r0 + b _0801C966 +_0801C962: + movs r3, #0 + ldr r4, _0801C988 @ =gUnk_0200AF00 +_0801C966: + ldrb r0, [r4, #8] + cmp r3, r0 + beq _0801C984 + strb r3, [r4, #8] + ldr r4, _0801C98C @ =0x0600C2C0 + ldr r1, _0801C990 @ =0x040000D4 + ldr r2, _0801C994 @ =gUnk_080C8F7C + lsls r0, r3, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + str r4, [r1, #4] + ldr r0, _0801C998 @ =0x84000030 + str r0, [r1, #8] + ldr r0, [r1, #8] +_0801C984: + pop {r4, r5, r6, pc} + .align 2, 0 +_0801C988: .4byte gUnk_0200AF00 +_0801C98C: .4byte 0x0600C2C0 +_0801C990: .4byte 0x040000D4 +_0801C994: .4byte gUnk_080C8F7C +_0801C998: .4byte 0x84000030 + + thumb_func_start sub_0801C99C +sub_0801C99C: @ 0x0801C99C + push {r4, r5, lr} + ldr r4, _0801C9E0 @ =gUnk_0200AF00 + ldrb r1, [r4, #1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801C9B2 + bl sub_08052724 + cmp r0, #0 + bne _0801C9EC +_0801C9B2: + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _0801CA50 + movs r0, #0 + strb r0, [r4, #0x10] + ldr r2, _0801C9E4 @ =gUnk_020350E2 + strh r0, [r2] + strh r0, [r2, #2] + strh r0, [r2, #4] + strh r0, [r2, #6] + adds r1, r2, #0 + adds r1, #0x40 + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + adds r1, #2 + strh r0, [r1] + ldr r1, _0801C9E8 @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] + b _0801CA50 + .align 2, 0 +_0801C9E0: .4byte gUnk_0200AF00 +_0801C9E4: .4byte gUnk_020350E2 +_0801C9E8: .4byte gScreen +_0801C9EC: + ldrb r0, [r4, #0x10] + cmp r0, #0 + bne _0801CA1E + ldr r2, _0801CA54 @ =gUnk_020350E2 + adds r1, r2, #0 + adds r1, #0x40 + ldr r3, _0801CA58 @ =0x0000F01C + strh r3, [r2] + adds r0, r3, #1 + strh r0, [r2, #2] + adds r0, r3, #2 + strh r0, [r1] + adds r0, r3, #3 + strh r0, [r1, #2] + adds r3, #0x5a + strh r3, [r2, #4] + adds r0, r3, #1 + strh r0, [r1, #4] + adds r0, r3, #2 + strh r0, [r2, #6] + adds r0, r3, #3 + strh r0, [r1, #6] + ldr r1, _0801CA5C @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] +_0801CA1E: + ldr r0, _0801CA60 @ =gSave + ldr r3, _0801CA64 @ =gArea + ldrb r1, [r3, #3] + ldr r5, _0801CA68 @ =0x0000045C + adds r2, r0, r5 + adds r1, r1, r2 + ldrb r0, [r4, #0x12] + ldrb r1, [r1] + cmp r0, r1 + bne _0801CA38 + ldrb r0, [r4, #0x10] + cmp r0, #0 + bne _0801CA50 +_0801CA38: + movs r0, #2 + strb r0, [r4, #0x10] + ldrb r0, [r3, #3] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r4, #0x12] + ldrb r1, [r4, #0x12] + movs r0, #0x76 + movs r2, #0 + movs r3, #2 + bl sub_0801C5E0 +_0801CA50: + pop {r4, r5, pc} + .align 2, 0 +_0801CA54: .4byte gUnk_020350E2 +_0801CA58: .4byte 0x0000F01C +_0801CA5C: .4byte gScreen +_0801CA60: .4byte gSave +_0801CA64: .4byte gArea +_0801CA68: .4byte 0x0000045C + + thumb_func_start sub_0801CA6C +sub_0801CA6C: @ 0x0801CA6C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r3, #0 + ldr r7, _0801CAA8 @ =gUnk_0200AF34 + movs r0, #1 + mov ip, r0 + ldr r1, _0801CAAC @ =gUnk_080C8F8C + lsls r0, r5, #4 + adds r4, r0, r1 +_0801CA80: + lsls r0, r3, #5 + adds r1, r0, r7 + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _0801CAB0 + strb r5, [r1, #1] + strb r6, [r1, #2] + movs r0, #0xff + strb r0, [r1, #0x10] + mov r0, ip + orrs r0, r2 + strb r0, [r1] + ldrh r0, [r4, #4] + strh r0, [r1, #0x1a] + ldrb r0, [r4, #0xc] + strb r0, [r1, #3] + b _0801CAB6 + .align 2, 0 +_0801CAA8: .4byte gUnk_0200AF34 +_0801CAAC: .4byte gUnk_080C8F8C +_0801CAB0: + adds r3, #1 + cmp r3, #0x17 + bls _0801CA80 +_0801CAB6: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0801CAB8 +sub_0801CAB8: @ 0x0801CAB8 + push {lr} + str r1, [r0, #0x14] + ldrb r2, [r1, #1] + strb r2, [r0, #0x11] + ldrb r2, [r1, #2] + strb r2, [r0, #0x12] + ldrb r2, [r1, #3] + strb r2, [r0, #0x13] + ldrb r1, [r1] + bl sub_0801CAFC + pop {pc} + + thumb_func_start sub_0801CAD0 +sub_0801CAD0: @ 0x0801CAD0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x11] + subs r0, #1 + strb r0, [r2, #0x11] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801CAF8 + ldr r1, [r2, #0x14] + movs r0, #3 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _0801CAF0 + ldrb r0, [r1, #4] + lsls r0, r0, #2 + subs r1, r1, r0 +_0801CAF0: + adds r1, #4 + adds r0, r2, #0 + bl sub_0801CAB8 +_0801CAF8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801CAFC +sub_0801CAFC: @ 0x0801CAFC + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldrb r0, [r2, #1] + lsls r0, r0, #4 + ldr r1, _0801CB1C @ =gUnk_080C8F8C + adds r1, r0, r1 + ldrb r0, [r2, #0x10] + cmp r3, r0 + beq _0801CB18 + strb r3, [r2, #0x10] + adds r0, r2, #0 + bl sub_0801CB20 +_0801CB18: + pop {pc} + .align 2, 0 +_0801CB1C: .4byte gUnk_080C8F8C + + thumb_func_start sub_0801CB20 +sub_0801CB20: @ 0x0801CB20 + push {lr} + adds r3, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + bne _0801CB76 + ldrh r1, [r1, #6] + lsls r1, r1, #4 + ldr r0, _0801CB54 @ =gSpritePtrs + adds r1, r1, r0 + ldrb r0, [r3, #0x10] + lsls r0, r0, #2 + ldr r2, [r1, #4] + adds r2, r2, r0 + ldrh r0, [r2, #2] + lsls r0, r0, #5 + ldr r1, [r1, #8] + adds r1, r1, r0 + ldrb r2, [r2] + cmp r2, #0 + bne _0801CB58 + ldrb r1, [r3] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + b _0801CB74 + .align 2, 0 +_0801CB54: .4byte gSpritePtrs +_0801CB58: + ldrb r0, [r3, #0x19] + cmp r0, r2 + bne _0801CB64 + ldr r0, [r3, #0x1c] + cmp r0, r1 + beq _0801CB74 +_0801CB64: + str r1, [r3, #0x1c] + ldrb r0, [r3] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r3] +_0801CB74: + strb r2, [r3, #0x19] +_0801CB76: + pop {pc} + + thumb_func_start sub_0801CB78 +sub_0801CB78: @ 0x0801CB78 + push {lr} + ldr r2, _0801CB8C @ =gUnk_080C903C + ldrb r1, [r0, #4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0801CB8C: .4byte gUnk_080C903C + + thumb_func_start sub_0801CB90 +sub_0801CB90: @ 0x0801CB90 + push {lr} + ldr r3, _0801CBC4 @ =gUnk_0200AF00 + ldrb r1, [r0, #1] + lsls r1, r1, #1 + adds r2, r3, #0 + adds r2, #0x16 + adds r1, r1, r2 + ldrh r1, [r1] + strh r1, [r0, #0xc] + ldrb r1, [r0, #1] + lsls r1, r1, #1 + adds r3, #0x1c + adds r1, r1, r3 + ldrh r1, [r1] + subs r1, #0x20 + strh r1, [r0, #0xe] + movs r1, #1 + strb r1, [r0, #4] + ldrb r1, [r0] + movs r2, #2 + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r0, #1] + bl sub_0801CAFC + pop {pc} + .align 2, 0 +_0801CBC4: .4byte gUnk_0200AF00 + + thumb_func_start sub_0801CBC8 +sub_0801CBC8: @ 0x0801CBC8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #2] + movs r6, #8 + cmp r0, #0 + bne _0801CC10 + movs r6, #4 + cmp r0, #0 + bne _0801CC10 + ldr r3, _0801CC08 @ =gUnk_0200AF00 + ldrb r0, [r3, #1] + ldrb r2, [r5, #1] + asrs r0, r2 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0801CBF6 + ldr r0, _0801CC0C @ =gMessage + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0801CC10 +_0801CBF6: + lsls r0, r2, #1 + adds r1, r3, #0 + adds r1, #0x1c + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + subs r1, #0x28 + b _0801CC1E + .align 2, 0 +_0801CC08: .4byte gUnk_0200AF00 +_0801CC0C: .4byte gMessage +_0801CC10: + ldr r1, _0801CC7C @ =gUnk_0200AF00 + ldrb r0, [r5, #1] + lsls r0, r0, #1 + adds r1, #0x1c + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] +_0801CC1E: + movs r2, #0xe + ldrsh r0, [r5, r2] + subs r4, r1, r0 + adds r1, r4, #0 + cmp r4, #0 + bge _0801CC2C + rsbs r4, r4, #0 +_0801CC2C: + cmp r6, r4 + bgt _0801CC32 + adds r4, r6, #0 +_0801CC32: + adds r0, r1, #0 + bl sub_08000E44 + muls r4, r0, r4 + cmp r4, #0 + beq _0801CC44 + ldrh r0, [r5, #0xe] + adds r0, r0, r4 + strh r0, [r5, #0xe] +_0801CC44: + ldr r0, _0801CC7C @ =gUnk_0200AF00 + ldrb r1, [r5, #1] + lsls r1, r1, #1 + adds r0, #0x16 + adds r1, r1, r0 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r2, #0xc + ldrsh r0, [r5, r2] + subs r4, r1, r0 + adds r1, r4, #0 + cmp r4, #0 + bge _0801CC60 + rsbs r4, r4, #0 +_0801CC60: + cmp r6, r4 + bgt _0801CC66 + adds r4, r6, #0 +_0801CC66: + adds r0, r1, #0 + bl sub_08000E44 + muls r4, r0, r4 + cmp r4, #0 + beq _0801CC78 + ldrh r0, [r5, #0xc] + adds r0, r0, r4 + strh r0, [r5, #0xc] +_0801CC78: + pop {r4, r5, r6, pc} + .align 2, 0 +_0801CC7C: .4byte gUnk_0200AF00 + + thumb_func_start sub_0801CC80 +sub_0801CC80: @ 0x0801CC80 + push {r4, r5, lr} + ldrb r1, [r0, #1] + movs r0, #3 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + ldr r5, _0801CCAC @ =gSave + adds r1, r5, #0 + adds r1, #0xb4 + adds r0, r0, r1 + ldrb r4, [r0] + adds r0, r4, #0 + bl ItemIsBottle + cmp r0, #0 + beq _0801CCA8 + adds r0, r5, r4 + adds r0, #0x9a + ldrb r4, [r0] +_0801CCA8: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_0801CCAC: .4byte gSave + + thumb_func_start sub_0801CCB0 +sub_0801CCB0: @ 0x0801CCB0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r1, [r4] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + adds r0, r4, #0 + bl sub_0801CC80 + adds r1, r0, #0 + cmp r1, #0 + beq _0801CD90 + ldrb r0, [r4, #8] + cmp r0, r1 + beq _0801CCE0 + strb r1, [r4, #8] + ldr r0, _0801CD1C @ =gSpriteAnimations_322 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl sub_0801CAB8 +_0801CCE0: + ldrb r0, [r4, #1] + movs r1, #3 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r6, r1, #0x1f + ldr r3, _0801CD20 @ =gUnk_0200AF13 + cmp r6, #0 + beq _0801CCF4 + adds r3, #1 +_0801CCF4: + ldrb r0, [r4, #8] + cmp r0, #7 + blt _0801CD60 + cmp r0, #8 + ble _0801CD28 + cmp r0, #0xa + bgt _0801CD60 + ldr r1, _0801CD24 @ =gSave + adds r0, r1, #0 + adds r0, #0xad + ldrb r2, [r0] + ldrb r0, [r3] + adds r5, r1, #0 + cmp r0, r2 + beq _0801CD4C + adds r0, r2, #0 + adds r0, #0x80 + strb r0, [r3] + b _0801CD4C + .align 2, 0 +_0801CD1C: .4byte gSpriteAnimations_322 +_0801CD20: .4byte gUnk_0200AF13 +_0801CD24: .4byte gSave +_0801CD28: + ldr r5, _0801CD44 @ =gSave + adds r0, r5, #0 + adds r0, #0xac + ldrb r2, [r0] + ldrb r0, [r3] + cmp r0, r2 + beq _0801CD3C + adds r0, r2, #0 + adds r0, #0x80 + strb r0, [r3] +_0801CD3C: + ldr r1, _0801CD48 @ =gBombBagSizes + adds r0, r5, #0 + adds r0, #0xae + b _0801CD52 + .align 2, 0 +_0801CD44: .4byte gSave +_0801CD48: .4byte gBombBagSizes +_0801CD4C: + ldr r1, _0801CD5C @ =gQuiverSizes + adds r0, r5, #0 + adds r0, #0xaf +_0801CD52: + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + b _0801CD64 + .align 2, 0 +_0801CD5C: .4byte gQuiverSizes +_0801CD60: + movs r0, #1 + movs r2, #0 +_0801CD64: + movs r1, #3 + cmp r0, r2 + bhi _0801CD6C + movs r1, #4 +_0801CD6C: + strb r1, [r4, #0x18] + adds r0, r6, #0 + bl sub_0801CE24 + adds r1, r0, #0 + cmp r1, #0 + beq _0801CD90 + ldrh r0, [r1, #0xc] + strh r0, [r4, #0xc] + ldrh r0, [r1, #0xe] + strh r0, [r4, #0xe] + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + adds r0, r4, #0 + bl sub_0801CAD0 +_0801CD90: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0801CD94 +sub_0801CD94: @ 0x0801CD94 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #2] + ldr r1, _0801CDC0 @ =gUnk_0200AF00 + cmp r0, #9 + bne _0801CDD4 + adds r0, r1, #0 + adds r0, #0x2f + ldrb r2, [r0] + cmp r2, #0 + bne _0801CDCE + ldr r0, _0801CDC4 @ =gArea + ldrb r0, [r0, #0x18] + cmp r0, #2 + beq _0801CDC8 + cmp r0, #3 + beq _0801CDCC + adds r0, r1, #0 + adds r0, #0x2c + ldrb r2, [r0] + b _0801CDCE + .align 2, 0 +_0801CDC0: .4byte gUnk_0200AF00 +_0801CDC4: .4byte gArea +_0801CDC8: + movs r2, #0xb + b _0801CDCE +_0801CDCC: + movs r2, #0xa +_0801CDCE: + adds r0, r1, #0 + adds r0, #0x32 + strb r2, [r0] +_0801CDD4: + adds r0, r1, #0 + adds r0, #0x30 + ldrb r1, [r4, #3] + adds r0, r0, r1 + ldrb r2, [r0] + ldrb r1, [r4] + movs r0, #3 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + cmp r2, #0 + beq _0801CE1E + ldr r1, _0801CE20 @ =gUnk_080C9044 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, r2, r0 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0801CAFC + ldrb r0, [r4, #3] + bl sub_0801CE24 + adds r1, r0, #0 + cmp r1, #0 + beq _0801CE1E + ldrh r0, [r1, #0xc] + strh r0, [r4, #0xc] + ldrh r0, [r1, #0xe] + strh r0, [r4, #0xe] + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] +_0801CE1E: + pop {r4, pc} + .align 2, 0 +_0801CE20: .4byte gUnk_080C9044 + + thumb_func_start sub_0801CE24 +sub_0801CE24: @ 0x0801CE24 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + movs r6, #1 + ldr r3, _0801CE44 @ =gUnk_0200AF34 + adds r2, r3, #0 +_0801CE30: + ldrb r1, [r2] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0801CE48 + ldrb r0, [r2, #1] + cmp r5, r0 + bne _0801CE48 + adds r0, r3, #0 + b _0801CE54 + .align 2, 0 +_0801CE44: .4byte gUnk_0200AF34 +_0801CE48: + adds r2, #0x20 + adds r3, #0x20 + adds r4, #1 + cmp r4, #0x17 + bls _0801CE30 + movs r0, #0 +_0801CE54: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0801CE58 +sub_0801CE58: @ 0x0801CE58 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3] + movs r4, #3 + rsbs r4, r4, #0 + ands r4, r0 + strb r4, [r3] + ldr r2, _0801CEB8 @ =gUnk_0200AF00 + ldrb r1, [r2, #1] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0801CEB4 + ldr r0, _0801CEBC @ =gMessage + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0801CEB4 + ldrb r2, [r2, #3] + cmp r2, #0 + beq _0801CEB4 + movs r0, #2 + adds r1, r4, #0 + orrs r1, r0 + strb r1, [r3] + adds r0, r2, #3 + lsrs r0, r0, #2 + lsls r0, r0, #3 + adds r1, r0, #3 + movs r4, #0xc + cmp r2, #0x28 + bls _0801CE9E + movs r4, #0x14 + subs r1, #0x50 +_0801CE9E: + strh r1, [r3, #0xc] + strh r4, [r3, #0xe] + movs r1, #3 + ands r1, r2 + cmp r1, #0 + bne _0801CEAC + movs r1, #4 +_0801CEAC: + adds r1, #0x71 + adds r0, r3, #0 + bl sub_0801CAFC +_0801CEB4: + pop {r4, pc} + .align 2, 0 +_0801CEB8: .4byte gUnk_0200AF00 +_0801CEBC: .4byte gMessage + diff --git a/asm/code_0801D79C.s b/asm/utils.s similarity index 100% rename from asm/code_0801D79C.s rename to asm/utils.s diff --git a/asm/code_08000108.s b/asm/veneer.s similarity index 100% rename from asm/code_08000108.s rename to asm/veneer.s diff --git a/asm/vram.s b/asm/vram.s new file mode 100644 index 00000000..79c3808f --- /dev/null +++ b/asm/vram.s @@ -0,0 +1,1083 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start ResetPalettes +ResetPalettes: @ 0x080ADD30 + push {r4, r5, r6, lr} + ldr r4, _080ADD6C @ =gGFXSlots + movs r1, #0x85 + lsls r1, r1, #2 + adds r0, r4, #0 + bl MemClear + movs r5, #0 + adds r4, #4 + movs r0, #0x10 + rsbs r0, r0, #0 + adds r6, r0, #0 +_080ADD48: + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl ReserveGFXSlots + ldrb r0, [r4] + ands r0, r6 + movs r1, #6 + orrs r0, r1 + strb r0, [r4] + movs r0, #0x80 + strb r0, [r4, #2] + adds r4, #0xc + adds r5, #1 + cmp r5, #3 + bls _080ADD48 + pop {r4, r5, r6, pc} + .align 2, 0 +_080ADD6C: .4byte gGFXSlots + + thumb_func_start sub_080ADD70 +sub_080ADD70: @ 0x080ADD70 +.ifdef EU + push {r4, r5, lr} + ldr r0, _080AD540 @ =gGFXSlots + ldrb r0, [r0] + cmp r0, #0 + beq _080AD56A + movs r4, #0 + movs r5, #0 +_080AD522: + ldr r0, _080AD544 @ =gUnk_02024494 + adds r2, r5, r0 + ldrb r1, [r2] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #2 + bne _080AD548 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _080AD562 + .align 2, 0 +_080AD540: .4byte gGFXSlots +_080AD544: .4byte gUnk_02024494 +_080AD548: + cmp r0, #2 + blt _080AD562 + cmp r0, #6 + bgt _080AD562 + cmp r0, #4 + blt _080AD562 + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x30 + bne _080AD562 + adds r0, r4, #0 + bl sub_080ADE74 +_080AD562: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080AD522 +_080AD56A: + pop {r4, r5, pc} + +.else + push {r4, r5, lr} + ldr r1, _080ADD88 @ =gGFXSlots + ldrb r0, [r1] + cmp r0, #0 + beq _080ADDD6 + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080ADD8C + bl sub_080ADE24 + b _080ADDD6 + .align 2, 0 +_080ADD88: .4byte gGFXSlots +_080ADD8C: + movs r4, #0 + movs r5, #0 +_080ADD90: + ldr r0, _080ADDB0 @ =gUnk_02024494 + adds r2, r5, r0 + ldrb r1, [r2] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #2 + bne _080ADDB4 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _080ADDCE + .align 2, 0 +_080ADDB0: .4byte gUnk_02024494 +_080ADDB4: + cmp r0, #2 + blt _080ADDCE + cmp r0, #6 + bgt _080ADDCE + cmp r0, #4 + blt _080ADDCE + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x30 + bne _080ADDCE + adds r0, r4, #0 + bl sub_080ADE74 +_080ADDCE: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080ADD90 +_080ADDD6: + pop {r4, r5, pc} +.endif + + thumb_func_start sub_080ADDD8 +sub_080ADDD8: @ 0x080ADDD8 + push {lr} + adds r2, r1, #0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080ADDFC @ =gUnk_02024494 + adds r3, r1, r0 + ldr r0, _080ADE00 @ =0x00FFFFFC + ands r0, r2 + ldr r1, _080ADE04 @ =gGlobalGfxAndPalettes + adds r0, r0, r1 + str r0, [r3, #8] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080ADE0C + ldr r0, _080ADE08 @ =0x0000FFFF + b _080ADE14 + .align 2, 0 +_080ADDFC: .4byte gUnk_02024494 +_080ADE00: .4byte 0x00FFFFFC +_080ADE04: .4byte gGlobalGfxAndPalettes +_080ADE08: .4byte 0x0000FFFF +_080ADE0C: + movs r0, #0xfe + lsls r0, r0, #0x17 + ands r0, r2 + lsrs r0, r0, #0x14 +_080ADE14: + strh r0, [r3, #6] + ldrb r0, [r3] + movs r1, #0xf + ands r1, r0 + movs r0, #0x30 + orrs r1, r0 + strb r1, [r3] + pop {pc} + + thumb_func_start sub_080ADE24 +sub_080ADE24: @ 0x080ADE24 + push {r4, r5, lr} + ldr r1, _080ADE50 @ =gGFXSlots + movs r0, #1 + strb r0, [r1, #3] + movs r4, #0 + movs r5, #0 +_080ADE30: + ldr r0, _080ADE54 @ =gUnk_02024494 + adds r1, r5, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #3 + beq _080ADE60 + cmp r0, #3 + blt _080ADE58 + cmp r0, #6 + bgt _080ADE58 + adds r0, r4, #0 + bl sub_080ADE74 + b _080ADE60 + .align 2, 0 +_080ADE50: .4byte gGFXSlots +_080ADE54: .4byte gUnk_02024494 +_080ADE58: + adds r0, r1, #0 + movs r1, #0xc + bl MemClear +_080ADE60: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080ADE30 + movs r1, #0 + ldr r0, _080ADE70 @ =gGFXSlots + strb r1, [r0, #3] + pop {r4, r5, pc} + .align 2, 0 +_080ADE70: .4byte gGFXSlots + + thumb_func_start sub_080ADE74 +sub_080ADE74: @ 0x080ADE74 + push {r4, r5, r6, lr} + adds r2, r0, #0 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080ADF00 @ =gUnk_02024494 + adds r3, r0, r1 + ldrb r1, [r3] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080ADF7C + movs r0, #0xf + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3] + ldrh r1, [r3, #6] + ldr r0, _080ADF04 @ =0x0000FFFF + cmp r1, r0 + beq _080ADF18 + ldrb r0, [r3, #3] + cmp r0, #0 + beq _080ADF18 + lsls r0, r0, #6 + ldr r1, _080ADF08 @ =gUnk_020000C0 + adds r4, r0, r1 + movs r5, #4 + movs r6, #9 + rsbs r6, r6, #0 +_080ADEB0: + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080ADEF6 + ldr r0, _080ADF0C @ =gGFXSlots + ldrb r0, [r0, #3] + cmp r0, #0 + bne _080ADECA + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080ADEF6 +_080ADECA: + adds r0, r6, #0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r4, #9] + lsls r2, r0, #5 + cmp r2, #0 + beq _080ADEF6 + ldrh r0, [r4, #0xa] + lsls r0, r0, #5 + ldr r3, _080ADF10 @ =0x06010000 + adds r1, r0, r3 + ldr r3, _080ADF14 @ =0x040000D4 + ldr r0, [r4, #0xc] + str r0, [r3] + str r1, [r3, #4] + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r3, #8] + ldr r0, [r3, #8] +_080ADEF6: + adds r4, #0x10 + subs r5, #1 + cmp r5, #0 + bgt _080ADEB0 + b _080ADF7C + .align 2, 0 +_080ADF00: .4byte gUnk_02024494 +_080ADF04: .4byte 0x0000FFFF +_080ADF08: .4byte gUnk_020000C0 +_080ADF0C: .4byte gGFXSlots +_080ADF10: .4byte 0x06010000 +_080ADF14: .4byte 0x040000D4 +_080ADF18: + lsls r0, r2, #9 + ldr r2, _080ADF4C @ =0x06012800 + adds r1, r0, r2 + ldrh r2, [r3, #6] + cmp r2, #0 + beq _080ADF58 + ldr r0, _080ADF50 @ =0x0000FFFF + cmp r2, r0 + beq _080ADF62 + ldr r2, _080ADF54 @ =0x040000D4 + ldr r0, [r3, #8] + str r0, [r2] + str r1, [r2, #4] + ldrh r0, [r3, #6] + lsls r0, r0, #3 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + ldrh r2, [r3, #6] + subs r2, #0x10 + cmp r2, #0 + ble _080ADF7C + b _080ADF70 + .align 2, 0 +_080ADF4C: .4byte 0x06012800 +_080ADF50: .4byte 0x0000FFFF +_080ADF54: .4byte 0x040000D4 +_080ADF58: + ldrb r1, [r3] + movs r0, #0xf + ands r0, r1 + strb r0, [r3] + b _080ADF7C +_080ADF62: + ldrb r0, [r3, #3] + cmp r0, #0 + bne _080ADF7C + ldr r0, [r3, #8] + bl LZ77UnCompVram + b _080ADF7C +_080ADF70: + adds r3, #0xc + movs r0, #0 + strh r0, [r3, #6] + subs r2, #0x10 + cmp r2, #0 + bgt _080ADF70 +_080ADF7C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start LoadFixedGFX +LoadFixedGFX: @ 0x080ADF80 +.ifdef EU + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r5, r1, #0 + cmp r5, #0 + bne _080AD726 + movs r0, #1 + b _080AD77E +_080AD726: + movs r4, #4 + ldr r0, _080AD774 @ =gGFXSlots + adds r0, #0x30 +_080AD72C: + ldrh r1, [r0, #8] + cmp r5, r1 + beq _080AD766 + adds r0, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080AD72C + ldr r0, _080AD778 @ =gFixedTypeGfxData + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r7, [r1] + movs r0, #0xfe + lsls r0, r0, #0x17 + ands r0, r7 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl FindFreeGFXSlot + adds r4, r0, #0 + cmp r4, #0 + beq _080AD77C + adds r1, r5, #0 + adds r2, r6, #0 + bl ReserveGFXSlots + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_080ADDD8 +_080AD766: + adds r0, r4, #0 + mov r1, r8 + movs r2, #4 + bl sub_080AE0C8 + movs r0, #1 + b _080AD77E + .align 2, 0 +_080AD774: .4byte gGFXSlots +_080AD778: .4byte gFixedTypeGfxData +_080AD77C: + movs r0, #0 +_080AD77E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + +.else + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r7, r1, #0 + cmp r7, #0 + beq _080ADFFC + movs r5, #4 + ldr r0, _080ADFD4 @ =gGFXSlots + adds r0, #0x30 +_080ADF94: + ldrh r1, [r0, #8] + cmp r7, r1 + beq _080ADFF2 + adds r0, #0xc + adds r5, #1 + cmp r5, #0x2b + bls _080ADF94 + ldr r0, _080ADFD8 @ =gFixedTypeGfxData + lsls r4, r7, #2 + adds r0, r4, r0 + ldr r0, [r0] + movs r1, #0xfe + lsls r1, r1, #0x17 + ands r0, r1 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl FindFreeGFXSlot + adds r5, r0, #0 + cmp r5, #0 + bne _080ADFDC + bl CleanUpGFXSlots + adds r0, r6, #0 + bl FindFreeGFXSlot + adds r5, r0, #0 + cmp r5, #0 + bne _080ADFDC + movs r0, #0 + b _080ADFFE + .align 2, 0 +_080ADFD4: .4byte gGFXSlots +_080ADFD8: .4byte gFixedTypeGfxData +_080ADFDC: + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl ReserveGFXSlots + ldr r0, _080AE004 @ =gFixedTypeGfxData + adds r0, r4, r0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080ADDD8 +_080ADFF2: + adds r0, r5, #0 + mov r1, r8 + movs r2, #4 + bl sub_080AE0C8 +_080ADFFC: + movs r0, #1 +_080ADFFE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE004: .4byte gFixedTypeGfxData +.endif + + thumb_func_start LoadSwapGFX +LoadSwapGFX: @ 0x080AE008 +.ifdef EU + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + bne _080AD79C + adds r0, r5, #0 + bl FindFreeGFXSlot + adds r4, r0, #0 + cmp r4, #0 + beq _080AD7C4 +_080AD79C: + ldr r0, _080AD7D0 @ =gGFXSlots + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r2, r0, #0x1c + cmp r2, #6 + beq _080AD7BC + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl ReserveGFXSlots + movs r2, #5 +_080AD7BC: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080AE0C8 +_080AD7C4: + adds r0, r4, #0 + cmp r0, #0 + beq _080AD7CC + movs r0, #1 +_080AD7CC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AD7D0: .4byte gGFXSlots + +.else + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + bne _080AE030 + adds r0, r5, #0 + bl FindFreeGFXSlot + adds r4, r0, #0 + cmp r4, #0 + bne _080AE030 + bl CleanUpGFXSlots + adds r0, r5, #0 + bl FindFreeGFXSlot + adds r4, r0, #0 + cmp r4, #0 + beq _080AE058 +_080AE030: + ldr r0, _080AE064 @ =gGFXSlots + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r2, r0, #0x1c + cmp r2, #6 + beq _080AE050 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl ReserveGFXSlots + movs r2, #5 +_080AE050: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080AE0C8 +_080AE058: + adds r0, r4, #0 + cmp r0, #0 + beq _080AE060 + movs r0, #1 +_080AE060: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AE064: .4byte gGFXSlots +.endif + + thumb_func_start sub_080AE068 +sub_080AE068: @ 0x080AE068 + push {r4, r5, lr} + adds r0, #0x26 + ldrb r2, [r0] + movs r1, #0 + strb r1, [r0] + cmp r2, #0 + beq _080AE0C2 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080AE0C4 @ =gUnk_02024494 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #5 + bgt _080AE0C2 + cmp r0, #4 + blt _080AE0C2 + ldrb r0, [r3, #2] + cmp r0, #0 + beq _080AE0C2 + subs r0, #1 + strb r0, [r3, #2] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AE0C2 + ldrb r2, [r3, #1] + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + ble _080AE0C2 + movs r5, #0x10 + rsbs r5, r5, #0 + movs r4, #1 +_080AE0AE: + ldrb r0, [r3] + adds r1, r5, #0 + ands r1, r0 + orrs r1, r4 + strb r1, [r3] + adds r3, #0xc + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bgt _080AE0AE +_080AE0C2: + pop {r4, r5, pc} + .align 2, 0 +_080AE0C4: .4byte gUnk_02024494 + + thumb_func_start sub_080AE0C8 +sub_080AE0C8: @ 0x080AE0C8 + push {r4, lr} + adds r4, r2, #0 + lsls r2, r0, #4 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r2, r2, r3 + adds r3, r1, #0 + adds r3, #0x60 + strh r2, [r3] + adds r1, #0x26 + strb r0, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080AE100 @ =gUnk_02024494 + adds r1, r1, r0 + ldrb r2, [r1, #2] + movs r0, #2 + ldrsb r0, [r1, r0] + cmp r0, #0 + blt _080AE0F6 + adds r0, r2, #1 + strb r0, [r1, #2] +_080AE0F6: + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_080AE134 + pop {r4, pc} + .align 2, 0 +_080AE100: .4byte gUnk_02024494 + + thumb_func_start ReserveGFXSlots +ReserveGFXSlots: @ 0x080AE104 + push {r4, r5, r6, lr} + adds r6, r1, #0 + adds r5, r2, #0 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080AE130 @ =gUnk_02024494 + adds r4, r4, r0 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r0, r4, #0 + bl MemClear + strb r5, [r4, #1] + strh r6, [r4, #4] + adds r0, r4, #0 + movs r1, #4 + bl sub_080AE134 + pop {r4, r5, r6, pc} + .align 2, 0 +_080AE130: .4byte gUnk_02024494 + + thumb_func_start sub_080AE134 +sub_080AE134: @ 0x080AE134 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r1, #0 + movs r6, #0xf + adds r0, r4, #0 + ands r0, r6 + ldrb r2, [r3] + movs r5, #0x10 + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + ldrb r2, [r3, #1] + cmp r4, #6 + beq _080AE156 + movs r4, #3 +_080AE156: + subs r2, #1 + cmp r2, #0 + ble _080AE170 + ands r4, r6 +_080AE15E: + adds r3, #0xc + ldrb r1, [r3] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r3] + subs r2, #1 + cmp r2, #0 + bgt _080AE15E +_080AE170: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start FindFreeGFXSlot +FindFreeGFXSlot: @ 0x080AE174 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #4 + ldr r0, _080AE194 @ =gGFXSlots + adds r3, r0, #0 + adds r3, #0x30 +_080AE182: + ldrb r0, [r3, #4] + lsls r0, r0, #0x1c + cmp r0, #0 + bne _080AE198 + adds r1, #1 + cmp r4, r1 + bhi _080AE19A + b _080AE1BC + .align 2, 0 +_080AE194: .4byte gGFXSlots +_080AE198: + movs r1, #0 +_080AE19A: + adds r3, #0xc + adds r2, #1 + cmp r2, #0x2b + bls _080AE182 + movs r1, #0 + movs r2, #4 + ldr r0, _080AE1C4 @ =gGFXSlots + adds r3, r0, #0 + adds r3, #0x30 +_080AE1AC: + ldrb r0, [r3, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 +.ifdef EU + bne _080AE1C8 +.else + bhi _080AE1C8 +.endif + adds r1, #1 + cmp r4, r1 + bhi _080AE1CA +_080AE1BC: + subs r0, r2, r1 + adds r0, #1 + b _080AE1D4 + .align 2, 0 +_080AE1C4: .4byte gGFXSlots +_080AE1C8: + movs r1, #0 +_080AE1CA: + adds r3, #0xc + adds r2, #1 + cmp r2, #0x2b + bls _080AE1AC + movs r0, #0 +_080AE1D4: + pop {r4, pc} + .align 2, 0 + +.ifndef EU + thumb_func_start CleanUpGFXSlots +CleanUpGFXSlots: @ 0x080AE1D8 + push {r4, r5, lr} + ldr r0, _080AE1E8 @ =gGFXSlots + ldrb r0, [r0] + cmp r0, #0 + beq _080AE216 + movs r5, #4 + b _080AE20A + .align 2, 0 +_080AE1E8: .4byte gGFXSlots +_080AE1EC: + bl sub_080AE3B8 + adds r4, r0, #0 + cmp r4, r5 + bhi _080AE208 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080AE218 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080AE324 + adds r5, r4, #0 +_080AE208: + adds r5, #1 +_080AE20A: + adds r0, r5, #0 + bl sub_080AE384 + adds r5, r0, #0 + cmp r5, #0 + bne _080AE1EC +_080AE216: + pop {r4, r5, pc} + + thumb_func_start sub_080AE218 +sub_080AE218: @ 0x080AE218 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov r8, r1 + lsls r0, r1, #4 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + mov ip, r0 + mov r2, sl + lsls r0, r2, #4 + adds r3, r0, r1 + ldr r1, _080AE30C @ =gGFXSlots + lsls r0, r2, #1 + add r0, sl + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsls r0, r0, #4 + adds r7, r3, r0 + movs r4, #0 + ldr r6, _080AE310 @ =gUnk_020000C0 + mov sb, r6 + ldr r0, _080AE314 @ =gPlayerEntity + adds r2, r0, #0 + adds r2, #0x26 + adds r5, r0, #0 +_080AE254: + ldr r0, [r5, #4] + cmp r0, #0 + beq _080AE276 + ldrb r0, [r2] + cmp sl, r0 + bne _080AE264 + mov r1, r8 + strb r1, [r2] +_080AE264: + ldrh r0, [r2, #0x3a] + cmp r3, r0 + bhi _080AE276 + cmp r7, r0 + bls _080AE276 + subs r0, r0, r3 + mov r6, ip + adds r1, r0, r6 + strh r1, [r2, #0x3a] +_080AE276: + adds r2, #0x88 + adds r5, #0x88 + adds r4, #1 + cmp r4, #0x4f + bls _080AE254 + movs r0, #0 +_080AE282: + movs r4, #0 + adds r1, r0, #1 + mov r8, r1 + lsls r5, r0, #6 +_080AE28A: + lsls r0, r4, #4 + add r0, sb + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AE2B4 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080AE2B4 + ldrh r1, [r2, #0xa] + cmp r3, r1 + bhi _080AE2B4 + cmp r7, r1 + bls _080AE2B4 + subs r0, r1, r3 + mov r6, ip + adds r1, r0, r6 + strh r1, [r2, #0xa] +_080AE2B4: + adds r4, #1 + cmp r4, #3 + bls _080AE28A + mov r0, r8 + cmp r0, #0x2f + bls _080AE282 + movs r4, #0 + ldr r0, _080AE318 @ =0xFFFFFC00 + mov sl, r0 + ldr r5, _080AE31C @ =gUnk_03000000 + adds r5, #0x24 + ldr r1, _080AE320 @ =0x000003FF + mov sb, r1 + movs r2, #1 + mov r8, r2 +_080AE2D2: + ldrh r2, [r5] + lsls r0, r2, #0x16 + lsrs r1, r0, #0x16 + cmp r3, r1 + bhi _080AE2F8 + cmp r7, r1 + bls _080AE2F8 + subs r0, r1, r3 + mov r6, ip + adds r1, r0, r6 + mov r0, sb + ands r1, r0 + mov r0, sl + ands r0, r2 + orrs r0, r1 + strh r0, [r5] + mov r2, r8 + ldr r1, _080AE31C @ =gUnk_03000000 + strb r2, [r1] +_080AE2F8: + adds r5, #8 + adds r4, #1 + cmp r4, #0x7f + bls _080AE2D2 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE30C: .4byte gGFXSlots +_080AE310: .4byte gUnk_020000C0 +_080AE314: .4byte gPlayerEntity +_080AE318: .4byte 0xFFFFFC00 +_080AE31C: .4byte gUnk_03000000 +_080AE320: .4byte 0x000003FF + + thumb_func_start sub_080AE324 +sub_080AE324: @ 0x080AE324 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r3, r1, #0 + ldr r2, _080AE380 @ =gGFXSlots + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r5, r1, r2 + ldrb r4, [r5, #5] + subs r4, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _080AE372 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r2 + mov r8, r0 + adds r0, r1, #4 + adds r6, r0, r2 +_080AE350: + mov r0, r8 + adds r0, #4 + adds r1, r5, #4 + ldm r1!, {r2, r3, r7} + stm r0!, {r2, r3, r7} + adds r0, r6, #0 + movs r1, #0xc + bl MemClear + adds r6, #0xc + adds r5, #0xc + movs r0, #0xc + add r8, r0 + subs r4, #1 + subs r0, #0xd + cmp r4, r0 + bne _080AE350 +_080AE372: + ldr r1, _080AE380 @ =gGFXSlots + movs r0, #1 + strb r0, [r1, #3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE380: .4byte gGFXSlots + + thumb_func_start sub_080AE384 +sub_080AE384: @ 0x080AE384 + push {lr} + adds r2, r0, #0 + cmp r2, #0x2a + bhi _080AE3B4 + ldr r1, _080AE3A8 @ =gGFXSlots + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 +_080AE396: + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #5 + bgt _080AE3AC + cmp r0, #4 + blt _080AE3AC + adds r0, r2, #0 + b _080AE3B6 + .align 2, 0 +_080AE3A8: .4byte gGFXSlots +_080AE3AC: + adds r1, #0xc + adds r2, #1 + cmp r2, #0x2a + bls _080AE396 +_080AE3B4: + movs r0, #0 +_080AE3B6: + pop {pc} + + thumb_func_start sub_080AE3B8 +sub_080AE3B8: @ 0x080AE3B8 + push {lr} + movs r1, #4 + ldr r0, _080AE3D4 @ =gGFXSlots + adds r2, r0, #0 + adds r2, #0x30 +_080AE3C2: + ldrb r0, [r2, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bgt _080AE3D8 + cmp r0, #0 + blt _080AE3D8 + adds r0, r1, #0 + b _080AE3E2 + .align 2, 0 +_080AE3D4: .4byte gGFXSlots +_080AE3D8: + adds r2, #0xc + adds r1, #1 + cmp r1, #0x2b + bls _080AE3C2 + movs r0, #0 +_080AE3E2: + pop {pc} +.endif + diff --git a/include/main.h b/include/main.h index d5ffda2e..d18e54c0 100644 --- a/include/main.h +++ b/include/main.h @@ -8,20 +8,6 @@ #define NUM_SAVE_SLOTS 3 #define MAX_BRIGHTNESS 3 -typedef struct { // 0x03001000 - u8 field_0x0; - u8 field_0x1; - u8 field_0x2; - u8 field_0x3; - u8 field_0x4; - u16 field_0x6; - u8 field_0x8; - u8 field_0x9; - u8 field_0xa; - u8 field_0xb; - u32 spritePriority; -} MainStruct; - typedef enum { LANGUAGE_JP, LANGUAGE_EN, @@ -64,7 +50,8 @@ typedef struct { u8 pauseFrames; u8 pauseCount; u8 pauseInterval; - u16 ticks; + u8 pad; + union SplitHWord ticks; } Main; typedef struct { diff --git a/include/room.h b/include/room.h index e9fbcc32..08742d2d 100644 --- a/include/room.h +++ b/include/room.h @@ -46,7 +46,10 @@ typedef struct { /*0x18*/ u16 filler2[3]; /*0x1E*/ u16 width; /*0x20*/ u16 height; - /*0x22*/ u8 filler3[6]; + /*0x22*/ u8 filler3[2]; + /*0x24*/ s8 aff_x; + /*0x25*/ s8 aff_y; + /*0x26*/ u8 filler26[2]; /*0x28*/ union SplitWord bg3OffsetX; /*0x2C*/ union SplitWord bg3OffsetY; /*0x30*/ Entity* cameraTarget; diff --git a/include/save.h b/include/save.h index 7b5bc2f7..90e00e60 100644 --- a/include/save.h +++ b/include/save.h @@ -42,8 +42,8 @@ typedef struct { /*0x088*/ PlayerWorldStatus saved_status; /*0x0A8*/ Stats stats; /*0x0D0*/ u8 fillerD0[0x71]; - /*0x141*/ u8 unk141[0x1c1 - 0x141]; - /*0x1C1*/ u8 unk1C1[0x45c - 0x1c1]; + /*0x141*/ u8 unk141[128]; + /*0x1C1*/ u8 unk1C1[667]; /*0x45C*/ u8 unk45C[0x10]; /*0x46C*/ u8 unk46C[0x20]; /*0x48C*/ u32 unk48C[8]; diff --git a/include/structures.h b/include/structures.h index c8843e00..014b0abe 100644 --- a/include/structures.h +++ b/include/structures.h @@ -110,7 +110,7 @@ typedef struct { u16 a; u16 b; } indices; - void (*func)(Entity*); + void (*func)(Entity* e); } data; } Dialog; @@ -148,4 +148,30 @@ typedef struct { void* unk8; } WStruct; +typedef struct { + u16 unk0; + u16 unk2; + u16 unk4; + u8 unk6; + u8 unk7; +} OAMObj; + +typedef struct { + u8 field_0x0; + u8 field_0x1; + u8 spritesOffset; + u8 updated; + u16 _4; + u16 _6; + u8 _0[0x18]; + struct OamData oam[0x80]; + OAMObj unk[0x100]; + u8 fill[10]; + u8 _426; + u8 _427; + u8 _428[6]; + u8 _42e; +} OAMSettings; +extern OAMSettings gUnk_03000000; + #endif diff --git a/linker.ld b/linker.ld index 76401066..24bb0cea 100644 --- a/linker.ld +++ b/linker.ld @@ -312,26 +312,25 @@ SECTIONS { /* handwritten assembly */ asm/crt0.o(.text); - asm/code_08000108.o(.text); + asm/veneer.o(.text); data/data_08000360.o(.rodata); asm/code_08000E44.o(.text); - asm/libgcc.o(.text); + asm/lib/libgcc.o(.text); asm/code_08000F10.o(.text); data/data_08000F54.o(.rodata); - asm/code_080011C4.o(.text); + asm/enemy.o(.text); data/gfx/sprite_ptrs.o(.rodata); asm/code_08003FC4.o(.text); asm/code_080043E8.o(.text); data/gfx/link_animations.o(.rodata); asm/code_08007CAC.o(.text); data/data_08007DF4.o(.rodata); - asm/code_0800857C.o(.text); + asm/player.o(.text); /* scripts */ data/scripts.o(.text); - asm/code_08016984.o(.text); + asm/script.o(.text); asm/projectileUpdate.o(.text); - /* C source compiled with interworking */ src/interrupts.o(.text); src/playerItem.o(.text); @@ -340,29 +339,22 @@ SECTIONS { src/npc.o(.text); src/collision.o(.text); /* C source compiled without interworking */ - asm/code_08018500.o(.text); - src/code_08018C58.o(.text); + asm/kinstone.o(.text); + src/kinstone.o(.text); src/playerItem/playerItem11.o(.text); src/playerItem/playerItemBow.o(.text); src/playerItem/playerItemSwordBeam.o(.text); - asm/code_0801967C.o(.text); + asm/beanstalkSubtask.o(.text); src/playerItem/playerItemBomb.o(.text); src/playerItem/playerItem3.o(.text); src/playerItem/playerItemC.o(.text); src/playerItem/playerItemSwordSpin.o(.text); src/playerItem/playerItemCellOverwriteSet.o(.text); - asm/code_0801C1D4.o(.text); - asm/drawUI.o(.text); - asm/code_0801C370.o(.text); - asm/drawRupees.o(.text); - asm/code_0801C5E0.o(.text); - asm/drawHealth.o(.text); - asm/sub_0801C824.o(.text); - asm/code_0801C85C.o(.text); - src/ezloNag.o(.text); - asm/code_0801CEC0.o(.text); + asm/ui.o(.text); + src/ui.o(.text); + asm/code_0801CEC0.o(.text); /* utils.c */ src/utils.o(.text); - asm/code_0801D79C.o(.text); + asm/utils.o(.text); /* enemies */ src/enemy/octorok.o(.text); src/enemy/chuchu.o(.text); @@ -473,14 +465,13 @@ SECTIONS { src/enemy/treeItem.o(.text); asm/enemy/enemy66.o(.text); /* END enemies */ - src/code_08049CD4.o(.text); + src/code_08049CD4.o(.text); /* enemyUtils.c */ asm/code_08049D30.o(.text); src/enemyUtils.o(.text); - asm/code_0804A720.o(.text); - asm/sub_0804AA30.o(.text); + asm/enemyUtils.o(.text); src/createEnemy.o(.text); - src/code_0804AA84.o(.text); - asm/code_0804AA84.o(.text); + src/enterPortalSubtask.o(.text); + asm/enterPortalSubtask.o(.text); src/room.o(.text); src/roomInit.o(.text); src/fade.o(.text); @@ -491,13 +482,12 @@ SECTIONS { asm/modBombs.o(.text); asm/modArrows.o(.text); src/code_0805436C.o(.text); - asm/code_0805436C.o(.text); + asm/code_0805436C.o(.text); /* game.c */ src/playerItem/playerItemLantern.o(.text); - asm/code_08054C04.o(.text); + asm/code_08054C04.o(.text); /* subtask */ src/sub_08055E08.o(.text); src/main.o(.text); src/message.o(.text); - asm/code_08056418.o(.text); src/manager/manager1.o(.text); src/manager/manager2.o(.text); src/manager/manager3.o(.text); @@ -557,8 +547,9 @@ SECTIONS { src/manager/manager39.o(.text); src/entity.o(.text); src/code_0805EC04.o(.text); - asm/code_0805EC04.o(.text); - src/code_0805F9A0.o(.text); + asm/code_0805EC04.o(.text); /* objaffine? */ + asm/text.o(.text); + src/text.o(.text); src/debugScreen.o(.text); src/playerItem/playerItem14.o(.text); /* npcs */ @@ -651,11 +642,10 @@ SECTIONS { src/npc/npc58.o(.text); /* END npcs */ src/npcUtils.o(.text); - src/coord.o(.text); - asm/code_0806FA6C.o(.text); + src/coord.o(.text); /* physics? */ + asm/coord.o(.text); src/playerItem/playerItem12.o(.text); src/playerItem/playerItemPacciCane.o(.text); - asm/code_0807059C.o(.text); src/player.o(.text); src/item.o(.text); src/item/itemDebug.o(.text); @@ -673,7 +663,7 @@ SECTIONS { src/item/itemGustJar.o(.text); src/item/itemMoleMitts.o(.text); src/item/itemJarEmpty.o(.text); - asm/code_08077698.o(.text); + asm/playerUtils.o(.text); asm/respawnPlayer.o(.text); src/code_08077B98.o(.text); asm/code_08077B98.o(.text); @@ -683,14 +673,14 @@ SECTIONS { asm/code_0807B9B8.o(.text); src/sub_0807CA18.o(.text); asm/getInventoryValue.o(.text); - asm/code_0807CAA0.o(.text); + asm/code_0807CAA0.o(.text); /* playerUtils.c */ src/flags.o(.text); src/save.o(.text); - src/scroll.o(.text); + src/screenTilemap.o(.text); src/script.o(.text); - asm/code_0807F0D8.o(.text); - src/code_0808091C.o(.text); - asm/code_0808091C.o(.text); + asm/scroll.o(.text); + src/scroll.o(.text); + asm/code_0808091C.o(.text); /* scroll.c */ /* objects */ src/object/itemOnGround.o(.text); asm/object/deathFx.o(.text); @@ -754,7 +744,7 @@ SECTIONS { asm/object/bossDoor.o(.text); asm/object/object3A.o(.text); asm/object/macroMushroomStalks.o(.text); - asm/object/object75.o(.text); /* 75 and 76 are mislocated in base game */ + asm/object/object75.o(.text); /* 75 and 76 are mislocated in object table */ asm/object/object76.o(.text); asm/object/code_0808C964.o(.text); asm/object/macroPlayer.o(.text); @@ -895,20 +885,19 @@ SECTIONS { asm/object/enemyItem.o(.text); asm/object/objectC1.o(.text); /* END objects */ - asm/sub_080A276C.o(.text); src/objectUtils.o(.text); - asm/code_080A29BC.o(.text); + asm/objectUtils.o(.text); src/playerItem/playerItemShield.o(.text); src/playerItem/playerItem15.o(.text); #ifdef DEMO_USA src/demoScreen.o(.text); #endif src/sound.o(.text); - asm/code_080A3480.o(.text); - src/sub_080A3B84.o(.text); - asm/code_080A3BD0.o(.text); - src/sub_080A554C.o(.text); - asm/code_080A5574.o(.text); + asm/staffroll.o(.text); + src/subtask.o(.text); + asm/subtask.o(.text); + src/subtask2.o(.text); + asm/subtask2.o(.text); /* subtask.c */ src/playerItem/playerItemSword.o(.text); src/playerItemUtils.o(.text); src/projectileUtils.o(.text); @@ -951,15 +940,15 @@ SECTIONS { src/projectile/v3TennisBallProjectile.o(.text); src/playerItem/playerItem10.o(.text); src/playerItem/playerItem13.o(.text); - src/intro.o(.text); - asm/sub_080AD8F0.o(.text); - asm/code_080AD90C.o(.text); + src/title.o(.text); + src/affine.o(.text); src/playerItem/playerItemGustJar.o(.text); - asm/code_080ADD30.o(.text); + asm/vram.o(.text); + asm/movement.o(.text); /* library functions */ - asm/m4a_asm.o(.text); + asm/lib/m4a_asm.o(.text); src/gba/m4a.o(.text); - asm/libagbsyscall.o(.text); + asm/lib/libagbsyscall.o(.text); src/eeprom.o(.text); *libc.a:memcpy.o(.text); /* handwritten assembly in arm mode */ @@ -1717,7 +1706,7 @@ SECTIONS { src/playerItem/playerItem10.o(.rodata); src/flagDebug.o(.rodata); data/const/playerItem/playerItem13.o(.rodata); - src/intro.o(.rodata); + src/title.o(.rodata); #ifdef DEMO_JP data/data_081320FC.o(.rodata); #endif diff --git a/src/affine.c b/src/affine.c new file mode 100644 index 00000000..3339cc09 --- /dev/null +++ b/src/affine.c @@ -0,0 +1,72 @@ +#include "global.h" +#include "structures.h" +#include "main.h" +#include "room.h" +#include "screen.h" + +extern u32 gFrameObjLists[]; + +extern void gUnk_03006164(void); +extern void gUnk_0300659C(OAMCommand*, void*); +extern void gUnk_03006580(OAMCommand*, u32, u32); + +// regalloc +NONMATCH("asm/non_matching/vram/sub_080AD8F0.inc", void* sub_080AD8F0(u32 sprite, u32 frame)) { + u32 x = gFrameObjLists[sprite]; + u8* y = (u8*)&gFrameObjLists[frame]; + u32 tmp = *(u32*)&y[x]; + + return (u8*)gFrameObjLists + tmp; +} +END_NONMATCH + +void FlushSprites(void) { + gUnk_03000000.updated = 0; +} + +NONMATCH("asm/non_matching/vram/sub_080AD918.inc", void sub_080AD918(void)) { + s32 rem; + u16* d; + + if (gMain.ticks.HALF.LO == 0) { + gUnk_03000000.unk[0x20].unk0 = gMain.ticks.HALF.LO; + gUnk_03000000.unk[0x48].unk4 = gMain.ticks.HALF.LO; + gUnk_03000000.unk[0x71].unk0 = gMain.ticks.HALF.LO; + gUnk_03000000.unk[0x99].unk4 = gMain.ticks.HALF.LO; + } else { + gMain.ticks.HALF.LO--; + } + + rem = 0x80 - gUnk_03000000.updated; + for (d = (u16*)&gUnk_03000000.oam[0x80 + gUnk_03000000.updated]; rem > 0; rem--) { + *d = 0x2A0; + (u8*)d += 6; + } + if (gUnk_03000000.unk[0].unk7) { + gUnk_03000000.unk[0].unk7 = 0; + ObjAffineSet((struct ObjAffineSrcData*)gUnk_03000000.unk, &gUnk_03000000.oam[0].affineParam, 32, 8); + } + gUnk_03000000.field_0x0 = 1; +} +END_NONMATCH + +void sub_080AD9B0(void) { + void (*fn)(void); + + gUnk_03000000._0[6] = gScreenTransition.field_0x2c[3] ? 15 : 0; + gUnk_03000000._4 = gRoomControls.aff_x + gRoomControls.roomScrollX; + gUnk_03000000._6 = gRoomControls.aff_y + gRoomControls.roomScrollY; + gUnk_03000000.field_0x1++; + fn = &gUnk_03006164; + fn(); +} + +void sub_080ADA04(OAMCommand* cmd, void* dst) { + void (*fn)(OAMCommand*, void*) = gUnk_0300659C; + fn(cmd, dst); +} + +void sub_080ADA14(u32 a1, u32 a2) { + void (*fn)(OAMCommand*, u32, u32) = gUnk_03006580; + fn(&gOamCmd, a1, a2); +} diff --git a/src/code_0805EC04.c b/src/code_0805EC04.c index d49bb996..1dfb2465 100644 --- a/src/code_0805EC04.c +++ b/src/code_0805EC04.c @@ -1,25 +1,10 @@ #include "entity.h" #include "player.h" - -typedef struct { - u16 unk0; - u16 unk2; - u16 unk4; - u8 unk6; - u8 unk7; -} VStruct; - -typedef struct { - u8 _0[0x20]; - struct OamData oam[0x80]; - VStruct unk[0x100]; -} UStruct; - -extern UStruct gUnk_03000000; +#include "structures.h" bool32 sub_0805EC04(Entity* this) { u32 i = 1; - UStruct* temp = &gUnk_03000000; + OAMSettings* temp = &gUnk_03000000; u32 j = 1; for (; i < 0x20; i++) { if (temp->unk[i].unk6 == 0) { @@ -34,7 +19,7 @@ bool32 sub_0805EC04(Entity* this) { void sub_0805EC60(Entity* this) { u8 temp; - UStruct* temp2; + OAMSettings* temp2; if (this->spriteRendering.b0 != 0) { this->spriteRendering.b0 = 0; diff --git a/src/code_0808091C.c b/src/code_0808091C.c deleted file mode 100644 index fd82dfa6..00000000 --- a/src/code_0808091C.c +++ /dev/null @@ -1,131 +0,0 @@ -#include "global.h" -#include "entity.h" -#include "structures.h" -#include "functions.h" -#include "game.h" - -extern void sub_08080BC4(void); - -extern u32 gUnk_0200B650; -extern u32 gUnk_02025EB0; -extern u8 gUpdateVisibleTiles; - -void sub_080808D8(void) { - gScreenTransition.transitionType = TRANSITION_DEFAULT; -} - -void sub_080808E4(void) { - if (sub_08052638(gScreenTransition.player_status.area_next)) { - gScreenTransition.transitionType = TRANSITION_DEFAULT; - } else { - gScreenTransition.transitionType = TRANSITION_FADE_BLACK; - } -} - -void sub_08080904(void) { - gScreenTransition.transitionType = TRANSITION_CUT; -} - -void sub_08080910(void) { - gScreenTransition.transitionType = TRANSITION_CUT; -} - -void sub_0808091C(ScreenTransitionData* param_1, u32 param_2) { - DoExitTransition(param_1); - gScreenTransition.transitionType = param_2; -} - -void sub_08080930(void) - -{ - gRoomControls.unk3 = 5; - gRoomControls.unk4 = 0; - gRoomControls.unk2 = 2; - gRoomControls.unk_10 = 0; - SetInitializationPriority(); -} - -u32* GetLayerByIndex(u32 param_1) { - - if (param_1 == 2) { - return &gUnk_0200B650; - } else { - return &gUnk_02025EB0; - } -} - -void InitScreenShake(u32 time, u32 magnitude) { - gRoomControls.screenShakeTime = time; - gRoomControls.screenShakeMagnitude = magnitude & 7; -} - -void sub_08080974(u32 arg0, u32 arg1) { - u32 var0, var1; - RoomControls* roomControls = &gRoomControls; - - var0 = roomControls->roomOriginX; - if (arg0 <= var0 + 120) { - roomControls->roomScrollX = var0; - } else { - var0 += roomControls->width; - var1 = var0 - 120; - if (arg0 < var1) { - var1 = arg0; - } - roomControls->roomScrollX = var1 - 120; - } - - var0 = roomControls->roomOriginY; - if (arg1 <= var0 + 80) { - roomControls->roomScrollY = var0; - } else { - var0 += roomControls->height; - var1 = var0 - 80; - if (arg1 < var1) { - var1 = arg1; - } - roomControls->roomScrollY = var1 - 80; - } - - sub_080809D4(); - gUpdateVisibleTiles = 1; -} - -void sub_080809D4(void) { - register Entity* target asm("r4"); - int x, y; - int var1, var0; - RoomControls* roomControls = &gRoomControls; - roomControls->scroll_flags &= ~4; - - target = roomControls->cameraTarget; - x = target->x.HALF.HI; - var0 = roomControls->roomOriginX; - if (x <= var0 + 120) { - roomControls->roomScrollX = var0; - } else { - var0 += roomControls->width; - var1 = var0 - 120; - if (x < var1) { - var1 = (u16)target->x.HALF.HI; - } - roomControls->roomScrollX = var1 - 120; - } - - target = roomControls->cameraTarget; - y = target->y.HALF.HI; - var0 = roomControls->roomOriginY; - if (y <= var0 + 80) { - roomControls->roomScrollY = var0; - } else { - var0 += roomControls->height; - var1 = var0 - 80; - if (y < var1) { - var1 = (u16)target->y.HALF.HI; - } - roomControls->roomScrollY = var1 - 80; - } - - sub_08080BC4(); - gUpdateVisibleTiles = 1; -} diff --git a/src/createEnemy.c b/src/createEnemy.c index b67546a1..4550f3ad 100644 --- a/src/createEnemy.c +++ b/src/createEnemy.c @@ -1,5 +1,12 @@ -#include "global.h" -#include "entity.h" +#include "enemy.h" + +void sub_0804AA30(Entity* entity, void (*fntable[])()) { + u32 idx; + entity->bitfield &= ~0x80; + idx = GetNextFunction(entity); + entity->bitfield |= 0x80; + fntable[idx](entity); +} Entity* CreateEnemy(u32 subtype, u32 form) { Entity* enemy; diff --git a/src/code_0804AA84.c b/src/enterPortalSubtask.c similarity index 100% rename from src/code_0804AA84.c rename to src/enterPortalSubtask.c diff --git a/src/entity.c b/src/entity.c index 2902c057..41d9b4f1 100644 --- a/src/entity.c +++ b/src/entity.c @@ -220,7 +220,6 @@ void UpdateManagers() { } void EraseAllEntities() { - extern u8 gUnk_03000000[]; DeleteAllEntities(); MemClear(&gPriorityHandler, 12); MemClear(&gPlayerEntity, 10880); @@ -228,9 +227,9 @@ void EraseAllEntities() { sub_0805E98C(); gEntCount = 0; gManagerCount = 0; - gUnk_03000000[0x427] = 1; - gUnk_03000000[0x426] = 1; - gUnk_03000000[0x42e] = 1; + gUnk_03000000.unk[0].unk7 = 1; + gUnk_03000000.unk[0].unk6 = 1; + gUnk_03000000.unk[1].unk6 = 1; } ASM_FUNC("./asm/getEmptyEntity.s", Entity* GetEmptyEntity()); diff --git a/src/fade.c b/src/fade.c index 583294a3..f6abc39c 100644 --- a/src/fade.c +++ b/src/fade.c @@ -1,15 +1,9 @@ #include "global.h" +#include "structures.h" #include "functions.h" #include "screen.h" #include "utils.h" -typedef struct { - u8 field_0x0; - u8 field_0x1; - u8 spritesOffset; -} struct_03000000; -extern struct_03000000 gUnk_03000000; - static u32 sub_080501C0(FadeControl* ctl); static u32 sub_08050230(FadeControl* ctl); static u32 sub_080502A4(FadeControl* ctl); diff --git a/src/interrupts.c b/src/interrupts.c index 253c0aa0..53463318 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -42,12 +42,6 @@ extern void sub_08077FEC(u32); void gIntrMain(void); -struct { - u8 update; - u8 _0[0x1c]; - struct OamData oam[0x80]; -} extern gUnk_03000000; - struct { u8 ready; u16* src; @@ -105,8 +99,8 @@ void sub_08016BF8(void) { } void UpdateDisplayControls(void) { - if (gUnk_03000000.update && (gScreen.lcd.displayControl & DISPCNT_OBJ_ON)) { - gUnk_03000000.update = 0; + if (gUnk_03000000.field_0x0 && (gScreen.lcd.displayControl & DISPCNT_OBJ_ON)) { + gUnk_03000000.field_0x0 = 0; DmaCopy32(3, &gUnk_03000000.oam, OAM, OAM_SIZE); } sub_08016CA8(&gScreen.bg0); diff --git a/src/code_08018C58.c b/src/kinstone.c similarity index 100% rename from src/code_08018C58.c rename to src/kinstone.c diff --git a/src/main.c b/src/main.c index 9cf1eafb..9a2a5dbe 100644 --- a/src/main.c +++ b/src/main.c @@ -80,7 +80,7 @@ void AgbMain(void) { } } - gMain.ticks++; + gMain.ticks.HWORD++; sScreenHandlers[gMain.screen](); MessageMain(); FadeMain(); diff --git a/src/manager/manager14.c b/src/manager/manager14.c index 47baf87c..05c6a46e 100644 --- a/src/manager/manager14.c +++ b/src/manager/manager14.c @@ -179,7 +179,7 @@ void sub_0805A1D8(Manager14* this) { gScreen.bg3.yOffset = gRoomControls.bg3OffsetY.HALF.HI; if (gScreen.lcd.displayControl & DISPCNT_BG3_ON) { sub_0805A114(6, this->unk_20 >> 1); - if (this->unk_22 == 0 && (gMain.ticks & 0x1F) == 0) { + if (this->unk_22 == 0 && (gMain.ticks.HWORD & 0x1F) == 0) { this->unk_24++; this->unk_24 &= 3; gScreen.controls.alphaBlend = gUnk_0810859A[this->unk_24]; diff --git a/src/message.c b/src/message.c index 3560df71..085f0011 100644 --- a/src/message.c +++ b/src/message.c @@ -807,3 +807,11 @@ NONMATCH("asm/non_matching/textbox/sub_08056FEC.inc", u32 sub_08056FEC(u32 this, return iVar4; } END_NONMATCH + +void sub_08057044(u32 a1, u32* a2, u32 a3) { + u32 z[2]; + u32 tmp = sub_08056FEC(a1, (u8*)z); + u32 first = z[0]; + first <<= 8 * (3 - tmp); + *a2 = first | a3; +} diff --git a/src/objectUtils.c b/src/objectUtils.c index 86fe0a2c..3e66732e 100644 --- a/src/objectUtils.c +++ b/src/objectUtils.c @@ -10,6 +10,36 @@ extern const Hitbox* const gObjectHitboxes[]; u32 LoadObjectSprite(Entity* this, s32 type, const ObjectDefinition* definition); extern const ObjectDefinition gObjectDefinitions[]; +extern Entity* sub_0805E744(void); + +Entity* sub_080A276C(Entity* parent, u32 type, u32 type2) { + Entity* e = sub_0805E744(); + if (e != NULL) { + e->id = 0xC1; + e->kind = 6; + e->type = type; + e->type2 = type2; + e->parent = parent; + AppendEntityToList(e, 6); + PrependEntityToList(e, 6); + CopyPosition(&gPlayerEntity, e); + gPriorityHandler.sys_priority = 6; + gUnk_02034490[0] = 1; + e->field_0x68.HALF.HI = gPlayerEntity.flags; + e->field_0x68.HALF.LO = gPlayerEntity.spriteSettings.draw; + e->field_0x6a.HALF.LO = gPlayerEntity.iframes; + e->field_0x6a.HALF.HI = gPlayerState.field_0x7; + e->field_0x6c.HALF.LO = gPlayerState.keepFacing; + e->field_0x6c.HALF.HI = gPlayerState.field_0xa; + e->field_0x6e.HALF.LO = gPlayerState.field_0x27[0]; + e->field_0x6e.HALF.HI = gPlayerState.field_0x1a[0]; + e->field_0x70.WORD = gPlayerState.flags; + e->field_0x74.HALF.LO = gPlayerState.field_0x82[8]; + gPlayerEntity.flags &= ~ENT_COLLIDE; + gPlayerEntity.spriteSettings.draw = 0; + } + return e; +} void ObjectInit(Entity* this) { const ObjectDefinition* definition = &gObjectDefinitions[this->id]; diff --git a/src/playerItem/playerItemPacciCane.c b/src/playerItem/playerItemPacciCane.c index 0e15c369..23d16cd3 100644 --- a/src/playerItem/playerItemPacciCane.c +++ b/src/playerItem/playerItemPacciCane.c @@ -1,10 +1,16 @@ #include "entity.h" #include "sound.h" #include "functions.h" +#include "utils.h" +#include "message.h" +#include "save.h" extern void (*const gUnk_0811B9D8[])(Entity*); void sub_080704FC(Entity*); +extern void sub_080A4D88(void); + +extern u8 gUnk_02034490[0x18]; void PlayerItemPacciCane(Entity* this) { gUnk_0811B9D8[this->action](this); @@ -19,3 +25,26 @@ void sub_080704D4(Entity* this) { } ASM_FUNC("asm/non_matching/playerItemPacciCane/sub_080704FC.inc", void sub_080704FC(Entity* this)) + +void sub_0807059C() { + MemClear(gUnk_02034490, sizeof(gUnk_02034490)); +} + +NONMATCH("asm/non_matching/playerItemPacciCane/sub_080705AC.inc", u32 sub_080705AC(void)) { + if (!((gInput.newKeys & 8) == 0 || gFadeControl.active || gUnk_02034490[0] || (gMessage.doTextBox & 0x7F) != 0 || + !gSave.stats.health || !gSave.fillerD0[34] || gPlayerState.controlMode || gPriorityHandler.priority_timer)) { + u32 tmp = gPlayerState.framestate ? gPlayerState.framestate : gPlayerState.framestate_last; + switch (tmp) { + case 18: + case 19: + case 21: + case 22: + case 28: + return 0; + } + sub_080A4D88(); + return 1; + } + return 0; +} +END_NONMATCH diff --git a/src/screenTilemap.c b/src/screenTilemap.c new file mode 100644 index 00000000..d6079438 --- /dev/null +++ b/src/screenTilemap.c @@ -0,0 +1,7 @@ +#include "global.h" + +ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D280.inc", void sub_0807D280(u32 unk_1, u32 unk_2)) + +ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D46C.inc", void sub_0807D46C(u32 unk_1, u32 unk_2)) + +ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D6D8.inc", void sub_0807D6D8(u32 unk_1, u32 unk_2)) diff --git a/src/scroll.c b/src/scroll.c index d6079438..89057623 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -1,7 +1,128 @@ #include "global.h" +#include "entity.h" +#include "structures.h" +#include "functions.h" +#include "game.h" -ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D280.inc", void sub_0807D280(u32 unk_1, u32 unk_2)) +extern void sub_08080BC4(void); -ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D46C.inc", void sub_0807D46C(u32 unk_1, u32 unk_2)) +extern u32 gUnk_0200B650; +extern u32 gUnk_02025EB0; +extern u8 gUpdateVisibleTiles; -ASM_FUNC("asm/non_matching/code_0807CC3C/sub_0807D6D8.inc", void sub_0807D6D8(u32 unk_1, u32 unk_2)) +void sub_080808D8(void) { + gScreenTransition.transitionType = TRANSITION_DEFAULT; +} + +void sub_080808E4(void) { + if (sub_08052638(gScreenTransition.player_status.area_next)) { + gScreenTransition.transitionType = TRANSITION_DEFAULT; + } else { + gScreenTransition.transitionType = TRANSITION_FADE_BLACK; + } +} + +void sub_08080904(void) { + gScreenTransition.transitionType = TRANSITION_CUT; +} + +void sub_08080910(void) { + gScreenTransition.transitionType = TRANSITION_CUT; +} + +void sub_0808091C(ScreenTransitionData* param_1, u32 param_2) { + DoExitTransition(param_1); + gScreenTransition.transitionType = param_2; +} + +void sub_08080930(void) { + gRoomControls.unk3 = 5; + gRoomControls.unk4 = 0; + gRoomControls.unk2 = 2; + gRoomControls.unk_10 = 0; + SetInitializationPriority(); +} + +u32* GetLayerByIndex(u32 param_1) { + if (param_1 == 2) { + return &gUnk_0200B650; + } else { + return &gUnk_02025EB0; + } +} + +void InitScreenShake(u32 time, u32 magnitude) { + gRoomControls.screenShakeTime = time; + gRoomControls.screenShakeMagnitude = magnitude & 7; +} + +void sub_08080974(u32 arg0, u32 arg1) { + u32 var0, var1; + RoomControls* roomControls = &gRoomControls; + + var0 = roomControls->roomOriginX; + if (arg0 <= var0 + 120) { + roomControls->roomScrollX = var0; + } else { + var0 += roomControls->width; + var1 = var0 - 120; + if (arg0 < var1) { + var1 = arg0; + } + roomControls->roomScrollX = var1 - 120; + } + + var0 = roomControls->roomOriginY; + if (arg1 <= var0 + 80) { + roomControls->roomScrollY = var0; + } else { + var0 += roomControls->height; + var1 = var0 - 80; + if (arg1 < var1) { + var1 = arg1; + } + roomControls->roomScrollY = var1 - 80; + } + + sub_080809D4(); + gUpdateVisibleTiles = 1; +} + +void sub_080809D4(void) { + register Entity* target asm("r4"); + int x, y; + int var1, var0; + RoomControls* roomControls = &gRoomControls; + roomControls->scroll_flags &= ~4; + + target = roomControls->cameraTarget; + x = target->x.HALF.HI; + var0 = roomControls->roomOriginX; + if (x <= var0 + 120) { + roomControls->roomScrollX = var0; + } else { + var0 += roomControls->width; + var1 = var0 - 120; + if (x < var1) { + var1 = (u16)target->x.HALF.HI; + } + roomControls->roomScrollX = var1 - 120; + } + + target = roomControls->cameraTarget; + y = target->y.HALF.HI; + var0 = roomControls->roomOriginY; + if (y <= var0 + 80) { + roomControls->roomScrollY = var0; + } else { + var0 += roomControls->height; + var1 = var0 - 80; + if (y < var1) { + var1 = (u16)target->y.HALF.HI; + } + roomControls->roomScrollY = var1 - 80; + } + + sub_08080BC4(); + gUpdateVisibleTiles = 1; +} diff --git a/src/sub_080A3B84.c b/src/subtask.c similarity index 100% rename from src/sub_080A3B84.c rename to src/subtask.c diff --git a/src/sub_080A554C.c b/src/subtask2.c similarity index 100% rename from src/sub_080A554C.c rename to src/subtask2.c diff --git a/src/code_0805F9A0.c b/src/text.c similarity index 99% rename from src/code_0805F9A0.c rename to src/text.c index 1ba583b5..7dc44443 100644 --- a/src/code_0805F9A0.c +++ b/src/text.c @@ -141,7 +141,6 @@ void sub_0805F918(u32 idx, u32 idx2, void* dest) { } u32 sub_0805F9A0(u32 r0) { - if (gSaveHeader->gameLanguage == 0) { u16* val = &gUnk_081092D4; u32 i = 0; diff --git a/src/intro.c b/src/title.c similarity index 100% rename from src/intro.c rename to src/title.c diff --git a/src/ezloNag.c b/src/ui.c similarity index 100% rename from src/ezloNag.c rename to src/ui.c