diff options
-rw-r--r-- | asm/mon_markings.s | 990 | ||||
-rw-r--r-- | data/graphics.s | 4 | ||||
-rw-r--r-- | data/mon_markings.s | 171 | ||||
-rw-r--r-- | graphics/misc/markings2.png | bin | 0 -> 362 bytes | |||
-rw-r--r-- | graphics_file_rules.mk | 3 | ||||
-rw-r--r-- | include/graphics.h | 4 | ||||
-rw-r--r-- | include/mon_markings.h | 24 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/mon_markings.c | 513 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
10 files changed, 549 insertions, 1166 deletions
diff --git a/asm/mon_markings.s b/asm/mon_markings.s deleted file mode 100644 index a0dad2280..000000000 --- a/asm/mon_markings.s +++ /dev/null @@ -1,990 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80BE46C -sub_80BE46C: @ 80BE46C - ldr r1, _080BE474 @ =gUnknown_20399C0 - str r0, [r1] - bx lr - .align 2, 0 -_080BE474: .4byte gUnknown_20399C0 - thumb_func_end sub_80BE46C - - thumb_func_start sub_80BE478 -sub_80BE478: @ 80BE478 - push {lr} - sub sp, 0x4 - ldr r0, _080BE4B0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x14] - lsrs r0, 3 - bl GetUserFrameGraphicsInfo - ldr r3, _080BE4B4 @ =gUnknown_20399C0 - ldr r2, [r3] - ldr r1, [r0] - str r1, [r2, 0x2C] - ldr r0, [r0, 0x4] - str r0, [r2, 0x30] - ldr r0, _080BE4B8 @ =0x000010b4 - adds r2, r0 - movs r1, 0 - strb r1, [r2] - mov r0, sp - strh r1, [r0] - ldr r1, [r3] - adds r1, 0x34 - ldr r2, _080BE4BC @ =0x01000800 - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080BE4B0: .4byte gSaveBlock2Ptr -_080BE4B4: .4byte gUnknown_20399C0 -_080BE4B8: .4byte 0x000010b4 -_080BE4BC: .4byte 0x01000800 - thumb_func_end sub_80BE478 - - thumb_func_start sub_80BE4C0 -sub_80BE4C0: @ 80BE4C0 - push {r4-r7,lr} - ldr r0, _080BE4E0 @ =gUnknown_20399C0 - ldr r1, [r0] - ldr r2, _080BE4E4 @ =0x000010b4 - adds r0, r1, r2 - ldrb r2, [r0] - lsls r0, r2, 8 - adds r0, 0x34 - adds r5, r1, r0 - cmp r2, 0xD - beq _080BE590 - cmp r2, 0xD - bgt _080BE4E8 - cmp r2, 0 - beq _080BE4EE - b _080BE538 - .align 2, 0 -_080BE4E0: .4byte gUnknown_20399C0 -_080BE4E4: .4byte 0x000010b4 -_080BE4E8: - cmp r2, 0xE - beq _080BE5DC - b _080BE538 -_080BE4EE: - ldr r0, [r1, 0x2C] - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080BE4FE: - ldr r6, _080BE530 @ =gUnknown_20399C0 - ldr r0, [r6] - ldr r0, [r0, 0x2C] - adds r0, 0x20 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080BE4FE - ldr r0, [r6] - ldr r0, [r0, 0x2C] - adds r0, 0x40 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r0, _080BE534 @ =0x000010b4 - adds r1, r0 - b _080BE57E - .align 2, 0 -_080BE530: .4byte gUnknown_20399C0 -_080BE534: .4byte 0x000010b4 -_080BE538: - ldr r0, _080BE588 @ =gUnknown_20399C0 - ldr r0, [r0] - ldr r0, [r0, 0x2C] - adds r0, 0x60 - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080BE54E: - ldr r6, _080BE588 @ =gUnknown_20399C0 - ldr r0, [r6] - ldr r0, [r0, 0x2C] - adds r0, 0x80 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080BE54E - ldr r0, [r6] - ldr r0, [r0, 0x2C] - adds r0, 0xA0 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r2, _080BE58C @ =0x000010b4 - adds r1, r2 -_080BE57E: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080BE5E8 - .align 2, 0 -_080BE588: .4byte gUnknown_20399C0 -_080BE58C: .4byte 0x000010b4 -_080BE590: - ldr r0, [r1, 0x2C] - adds r0, 0xC0 - adds r1, r5, 0 - movs r2, 0x8 - bl CpuFastSet - movs r4, 0 - adds r7, r5, 0 - adds r7, 0xE0 -_080BE5A2: - ldr r6, _080BE5E0 @ =gUnknown_20399C0 - ldr r0, [r6] - ldr r0, [r0, 0x2C] - adds r0, 0xE0 - adds r4, 0x1 - lsls r1, r4, 5 - adds r1, r5, r1 - movs r2, 0x8 - bl CpuFastSet - lsls r4, 16 - lsrs r4, 16 - cmp r4, 0x5 - bls _080BE5A2 - ldr r0, [r6] - ldr r0, [r0, 0x2C] - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - adds r1, r7, 0 - movs r2, 0x8 - bl CpuFastSet - ldr r1, [r6] - ldr r2, _080BE5E4 @ =0x000010b4 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080BE5DC: - movs r0, 0 - b _080BE5EA - .align 2, 0 -_080BE5E0: .4byte gUnknown_20399C0 -_080BE5E4: .4byte 0x000010b4 -_080BE5E8: - movs r0, 0x1 -_080BE5EA: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80BE4C0 - - thumb_func_start sub_80BE5F0 -sub_80BE5F0: @ 80BE5F0 - push {lr} - bl sub_80BE478 -_080BE5F6: - bl sub_80BE4C0 - lsls r0, 24 - cmp r0, 0 - bne _080BE5F6 - pop {r0} - bx r0 - thumb_func_end sub_80BE5F0 - - thumb_func_start sub_80BE604 -sub_80BE604: @ 80BE604 - push {r4-r7,lr} - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r2, _080BE654 @ =gUnknown_20399C0 - ldr r3, [r2] - movs r1, 0 - strb r1, [r3, 0x5] - ldr r1, [r2] - strb r0, [r1, 0x4] - movs r3, 0 - adds r7, r2, 0 - adds r4, r7, 0 - movs r2, 0x1 -_080BE622: - ldr r0, [r4] - adds r1, r0, 0x6 - adds r1, r3 - ldrb r0, [r0, 0x4] - asrs r0, r3 - ands r0, r2 - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BE622 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, r6, 16 - asrs r1, 16 - ldr r3, [r7] - ldrh r2, [r3] - ldrh r3, [r3, 0x2] - bl sub_80BE7CC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE654: .4byte gUnknown_20399C0 - thumb_func_end sub_80BE604 - - thumb_func_start sub_80BE658 -sub_80BE658: @ 80BE658 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080BE6EC @ =gUnknown_20399C0 -_080BE65E: - ldr r0, [r5] - ldrh r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r0, 16 - bl FreeSpriteTilesByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _080BE65E - ldr r4, _080BE6EC @ =gUnknown_20399C0 - ldr r0, [r4] - ldrh r0, [r0, 0x2] - bl FreeSpritePaletteByTag - ldr r0, [r4] - ldrh r0, [r0, 0x2] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - movs r4, 0 -_080BE690: - ldr r0, _080BE6EC @ =gUnknown_20399C0 - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, 0xC - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080BE6E6 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080BE690 - movs r4, 0 -_080BE6B0: - ldr r5, _080BE6EC @ =gUnknown_20399C0 - ldr r0, [r5] - lsls r1, r4, 2 - adds r0, 0x14 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _080BE6E6 - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080BE6B0 - ldr r0, [r5] - ldr r0, [r0, 0x24] - cmp r0, 0 - beq _080BE6DA - bl DestroySprite -_080BE6DA: - ldr r0, [r5] - ldr r0, [r0, 0x28] - cmp r0, 0 - beq _080BE6E6 - bl DestroySprite -_080BE6E6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BE6EC: .4byte gUnknown_20399C0 - thumb_func_end sub_80BE658 - - thumb_func_start sub_80BE6F0 -sub_80BE6F0: @ 80BE6F0 - push {r4,r5,lr} - ldr r0, _080BE720 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - beq _080BE728 - movs r0, 0x5 - bl PlaySE - ldr r2, _080BE724 @ =gUnknown_20399C0 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - subs r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - cmp r0, 0 - bge _080BE7B0 - ldr r1, [r2] - movs r0, 0x5 - strb r0, [r1, 0x5] - b _080BE7B0 - .align 2, 0 -_080BE720: .4byte gMain -_080BE724: .4byte gUnknown_20399C0 -_080BE728: - movs r0, 0x80 - ands r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080BE758 - movs r0, 0x5 - bl PlaySE - ldr r2, _080BE754 @ =gUnknown_20399C0 - ldr r1, [r2] - ldrb r0, [r1, 0x5] - adds r0, 0x1 - strb r0, [r1, 0x5] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x5 - ble _080BE7B0 - ldr r0, [r2] - strb r5, [r0, 0x5] - b _080BE7B0 - .align 2, 0 -_080BE754: .4byte gUnknown_20399C0 -_080BE758: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BE7B4 - movs r0, 0x5 - bl PlaySE - ldr r2, _080BE788 @ =gUnknown_20399C0 - ldr r0, [r2] - movs r1, 0x5 - ldrsb r1, [r0, r1] - cmp r1, 0x4 - beq _080BE78C - cmp r1, 0x5 - beq _080BE7C2 - adds r0, 0x6 - adds r1, r0, r1 - movs r2, 0 - ldrb r0, [r1] - cmp r0, 0 - bne _080BE7AE - movs r2, 0x1 - b _080BE7AE - .align 2, 0 -_080BE788: .4byte gUnknown_20399C0 -_080BE78C: - strb r4, [r0, 0x4] - movs r3, 0 - adds r4, r2, 0 -_080BE792: - ldr r2, [r4] - adds r0, r2, 0x6 - adds r0, r3 - ldrb r0, [r0] - lsls r0, r3 - ldrb r1, [r2, 0x4] - orrs r0, r1 - strb r0, [r2, 0x4] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BE792 - b _080BE7C2 -_080BE7AE: - strb r2, [r1] -_080BE7B0: - movs r0, 0x1 - b _080BE7C4 -_080BE7B4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BE7B0 - movs r0, 0x5 - bl PlaySE -_080BE7C2: - movs r0, 0 -_080BE7C4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80BE6F0 - - thumb_func_start sub_80BE7CC -sub_80BE7CC: @ 80BE7CC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x50 - mov r8, r0 - mov r9, r1 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 16 - lsrs r6, 16 - ldr r4, _080BE9C4 @ =gUnknown_20399C0 - ldr r0, [r4] - adds r0, 0x34 - str r0, [sp, 0x18] - add r1, sp, 0x1C - movs r7, 0 - movs r0, 0x80 - lsls r0, 5 - strh r0, [r1] - mov r0, sp - adds r0, 0x1E - strh r5, [r0] - add r1, sp, 0x20 - ldr r0, _080BE9C8 @ =gUnknown_8E9CBBC - str r0, [sp, 0x20] - movs r0, 0xC8 - lsls r0, 2 - strh r0, [r1, 0x4] - adds r0, r5, 0x1 - strh r0, [r1, 0x6] - add r0, sp, 0x28 - movs r1, 0 - movs r2, 0x8 - bl memset - add r2, sp, 0x18 - mov r10, r2 - mov r0, sp - mov r1, r10 - movs r2, 0x18 - bl memcpy - ldr r0, [r4] - ldr r0, [r0, 0x30] - str r0, [sp, 0x30] - add r0, sp, 0x34 - strh r6, [r0] - add r1, sp, 0x38 - ldr r0, _080BE9CC @ =gUnknown_8E9CB9C - str r0, [sp, 0x38] - adds r0, r6, 0x1 - strh r0, [r1, 0x4] - add r0, sp, 0x40 - movs r1, 0 - movs r2, 0x8 - bl memset - add r4, sp, 0x30 - mov r0, r10 - adds r1, r4, 0 - movs r2, 0x18 - bl memcpy - strh r5, [r4] - strh r6, [r4, 0x2] - ldr r0, _080BE9D0 @ =gUnknown_83EE830 - str r0, [r4, 0x4] - ldr r0, _080BE9D4 @ =gUnknown_83EE8C8 - str r0, [r4, 0x8] - str r7, [r4, 0xC] - ldr r0, _080BE9D8 @ =gDummySpriteAffineAnimTable - str r0, [r4, 0x10] - ldr r0, _080BE9DC @ =nullsub_62 - str r0, [r4, 0x14] - mov r0, sp - bl LoadSpriteSheets - mov r0, r10 - bl LoadSpritePalettes - movs r5, 0 - mov r3, r8 - lsls r3, 16 - mov r8, r3 - movs r0, 0x80 - lsls r0, 14 - add r0, r8 - mov r10, r0 - mov r1, r8 - str r1, [sp, 0x48] - mov r2, r9 - lsls r2, 16 - mov r9, r2 - movs r7, 0x80 - lsls r7, 14 - add r7, r9 - mov r3, r9 - str r3, [sp, 0x4C] -_080BE8A4: - adds r0, r4, 0 - mov r2, r10 - asrs r1, r2, 16 - asrs r2, r7, 16 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - bne _080BE8BC - b _080BEA48 -_080BE8BC: - ldr r6, _080BE9C4 @ =gUnknown_20399C0 - ldr r2, [r6] - lsls r0, r5, 2 - adds r2, 0xC - adds r2, r0 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r1, _080BE9E0 @ =gSprites - adds r0, r1 - str r0, [r2] - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _080BE8A4 - ldr r0, [r6] - ldr r1, [r0, 0x10] - ldr r3, [sp, 0x4C] - asrs r0, r3, 16 - adds r0, 0x60 - strh r0, [r1, 0x22] - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - ldr r0, _080BE9E4 @ =gUnknown_83EE890 - str r0, [r4, 0x8] - ldr r0, _080BE9E8 @ =sub_80BEA8C - str r0, [r4, 0x14] - ldr r0, _080BE9EC @ =gUnknown_83EE838 - str r0, [r4, 0x4] - movs r5, 0 - ldr r0, [sp, 0x48] - movs r1, 0x80 - lsls r1, 14 - adds r0, r1 - mov r9, r0 -_080BE914: - lsls r2, r5, 4 - adds r2, 0x10 - ldr r3, [sp, 0x4C] - asrs r3, 16 - mov r8, r3 - add r2, r8 - lsls r2, 16 - asrs r2, 16 - adds r0, r4, 0 - mov r3, r9 - asrs r1, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - bne _080BE93A - b _080BEA58 -_080BE93A: - ldr r6, _080BE9C4 @ =gUnknown_20399C0 - ldr r1, [r6] - lsls r0, r5, 2 - adds r1, 0x14 - adds r1, r0 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r7, _080BE9E0 @ =gSprites - adds r0, r7 - str r0, [r1] - strh r5, [r0, 0x2E] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080BE914 - ldr r0, _080BE9F0 @ =SpriteCallbackDummy - str r0, [r4, 0x14] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080BE9F4 - ldr r0, [r6] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r7 - str r1, [r0, 0x28] - ldrb r3, [r1, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1, 0x1] - ldr r0, [r6] - ldr r1, [r0, 0x28] - ldrb r0, [r1, 0x3] - ands r2, r0 - movs r0, 0x80 - orrs r2, r0 - strb r2, [r1, 0x3] - ldr r0, [r6] - ldr r0, [r0, 0x28] - movs r1, 0x9 - bl StartSpriteAnim - ldr r1, [r6] - ldr r2, [r1, 0x28] - ldr r3, [sp, 0x48] - asrs r0, r3, 16 - adds r0, 0x20 - strh r0, [r2, 0x20] - ldr r2, [r1, 0x28] - mov r0, r8 - adds r0, 0x50 - strh r0, [r2, 0x22] - ldr r0, [r1, 0x28] - movs r1, 0x1 - movs r2, 0x2 - movs r3, 0 - bl CalcCenterToCornerVec - b _080BE9FA - .align 2, 0 -_080BE9C4: .4byte gUnknown_20399C0 -_080BE9C8: .4byte gUnknown_8E9CBBC -_080BE9CC: .4byte gUnknown_8E9CB9C -_080BE9D0: .4byte gUnknown_83EE830 -_080BE9D4: .4byte gUnknown_83EE8C8 -_080BE9D8: .4byte gDummySpriteAffineAnimTable -_080BE9DC: .4byte nullsub_62 -_080BE9E0: .4byte gSprites -_080BE9E4: .4byte gUnknown_83EE890 -_080BE9E8: .4byte sub_80BEA8C -_080BE9EC: .4byte gUnknown_83EE838 -_080BE9F0: .4byte SpriteCallbackDummy -_080BE9F4: - ldr r1, [r6] - movs r0, 0 - str r0, [r1, 0x28] -_080BE9FA: - ldr r0, _080BEA3C @ =sub_80BEAC8 - str r0, [r4, 0x14] - ldr r0, [sp, 0x48] - movs r2, 0xC0 - lsls r2, 12 - adds r1, r0, r2 - asrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080BEA6C - ldr r0, _080BEA40 @ =gUnknown_20399C0 - ldr r2, [r0] - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, _080BEA44 @ =gSprites - adds r1, r0 - str r1, [r2, 0x24] - ldr r3, [sp, 0x4C] - asrs r0, r3, 16 - adds r0, 0x10 - strh r0, [r1, 0x2E] - ldr r0, [r2, 0x24] - movs r1, 0x8 - bl StartSpriteAnim - b _080BEA74 - .align 2, 0 -_080BEA3C: .4byte sub_80BEAC8 -_080BEA40: .4byte gUnknown_20399C0 -_080BEA44: .4byte gSprites -_080BEA48: - ldr r0, _080BEA54 @ =gUnknown_20399C0 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, 0xC - b _080BEA60 - .align 2, 0 -_080BEA54: .4byte gUnknown_20399C0 -_080BEA58: - ldr r0, _080BEA68 @ =gUnknown_20399C0 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, 0x14 -_080BEA60: - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _080BEA74 - .align 2, 0 -_080BEA68: .4byte gUnknown_20399C0 -_080BEA6C: - ldr r0, _080BEA84 @ =gUnknown_20399C0 - ldr r1, [r0] - movs r0, 0 - str r0, [r1, 0x24] -_080BEA74: - add sp, 0x50 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEA84: .4byte gUnknown_20399C0 - thumb_func_end sub_80BE7CC - - thumb_func_start nullsub_62 -nullsub_62: @ 80BEA88 - bx lr - thumb_func_end nullsub_62 - - thumb_func_start sub_80BEA8C -sub_80BEA8C: @ 80BEA8C - push {lr} - adds r2, r0, 0 - ldr r0, _080BEAB4 @ =gUnknown_20399C0 - ldr r0, [r0] - movs r3, 0x2E - ldrsh r1, [r2, r3] - adds r0, 0x6 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080BEAB8 - lsls r1, 1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080BEAC2 - .align 2, 0 -_080BEAB4: .4byte gUnknown_20399C0 -_080BEAB8: - lsls r1, 25 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim -_080BEAC2: - pop {r0} - bx r0 - thumb_func_end sub_80BEA8C - - thumb_func_start sub_80BEAC8 -sub_80BEAC8: @ 80BEAC8 - ldr r1, _080BEADC @ =gUnknown_20399C0 - ldr r1, [r1] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 4 - ldrh r2, [r0, 0x2E] - adds r1, r2 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080BEADC: .4byte gUnknown_20399C0 - thumb_func_end sub_80BEAC8 - - thumb_func_start sub_80BEAE0 -sub_80BEAE0: @ 80BEAE0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - bne _080BEAF0 - ldr r2, _080BEAFC @ =gUnknown_83EE008 -_080BEAF0: - movs r3, 0x10 - bl sub_80BEB20 - pop {r1} - bx r1 - .align 2, 0 -_080BEAFC: .4byte gUnknown_83EE008 - thumb_func_end sub_80BEAE0 - - thumb_func_start sub_80BEB00 -sub_80BEB00: @ 80BEB00 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - bne _080BEB10 - ldr r2, _080BEB1C @ =gUnknown_83EE008 -_080BEB10: - movs r3, 0x1 - bl sub_80BEB20 - pop {r1} - bx r1 - .align 2, 0 -_080BEB1C: .4byte gUnknown_83EE008 - thumb_func_end sub_80BEB00 - - thumb_func_start sub_80BEB20 -sub_80BEB20: @ 80BEB20 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x28 - lsls r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _080BEB9C @ =gUnknown_83EE028 - str r4, [sp, 0x18] - movs r4, 0x80 - add r5, sp, 0x18 - lsrs r6, r0, 16 - orrs r0, r4 - str r0, [r5, 0x4] - str r2, [sp, 0x20] - ldr r0, _080BEBA0 @ =0xffff0000 - mov r8, r0 - add r4, sp, 0x20 - ldr r0, [r4, 0x4] - mov r2, r8 - ands r0, r2 - orrs r0, r1 - str r0, [r4, 0x4] - mov r0, sp - movs r2, 0 - strh r6, [r0] - strh r1, [r0, 0x2] - ldr r0, _080BEBA4 @ =gUnknown_83EE8D0 - str r0, [sp, 0x4] - ldr r0, _080BEBA8 @ =gUnknown_83EE958 - str r0, [sp, 0x8] - str r2, [sp, 0xC] - ldr r0, _080BEBAC @ =gDummySpriteAffineAnimTable - str r0, [sp, 0x10] - ldr r0, _080BEBB0 @ =nullsub_62 - str r0, [sp, 0x14] - lsls r3, 23 - lsrs r3, 16 - ldr r0, [r5, 0x4] - mov r1, r8 - ands r0, r1 - orrs r0, r3 - str r0, [r5, 0x4] - adds r0, r5, 0 - bl LoadSpriteSheet - adds r0, r4, 0 - bl LoadSpritePalette - mov r0, sp - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080BEBB4 - movs r0, 0 - b _080BEBBE - .align 2, 0 -_080BEB9C: .4byte gUnknown_83EE028 -_080BEBA0: .4byte 0xffff0000 -_080BEBA4: .4byte gUnknown_83EE8D0 -_080BEBA8: .4byte gUnknown_83EE958 -_080BEBAC: .4byte gDummySpriteAffineAnimTable -_080BEBB0: .4byte nullsub_62 -_080BEBB4: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BEBCC @ =gSprites - adds r0, r1 -_080BEBBE: - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080BEBCC: .4byte gSprites - thumb_func_end sub_80BEB20 - - thumb_func_start sub_80BEBD0 -sub_80BEBD0: @ 80BEBD0 - push {lr} - lsls r0, 24 - lsrs r0, 17 - ldr r2, _080BEBE8 @ =gUnknown_83EE028 - adds r0, r2 - movs r2, 0x80 - movs r3, 0x1 - bl RequestDma3Copy - pop {r0} - bx r0 - .align 2, 0 -_080BEBE8: .4byte gUnknown_83EE028 - thumb_func_end sub_80BEBD0 - - .section ewram_data - .align 2, 0 -gUnknown_20399C0: - .4byte 0 - - .text - .align 2, 0 @ Don't pad with nop. diff --git a/data/graphics.s b/data/graphics.s index 67e88a6cd..7ead75c74 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16209,10 +16209,10 @@ gUnknown_8E9CAEC:: @ 8E9CAEC .incbin "baserom.gba", 0xE9CAEC, 0xB0 gUnknown_8E9CB9C:: @ 8E9CB9C - .incbin "baserom.gba", 0xE9CB9C, 0x20 @UNKNOWN + .incbin "graphics/misc/markings2.gbapal" gUnknown_8E9CBBC:: @ 8E9CBBC - .incbin "baserom.gba", 0xE9CBBC, 0x320 @UNKNOWN + .incbin "graphics/misc/markings2.4bpp" gTradeMenu_Pal:: @ 8E9CEDC .incbin "graphics/trade/menu.gbapal" diff --git a/data/mon_markings.s b/data/mon_markings.s deleted file mode 100644 index d2e211f95..000000000 --- a/data/mon_markings.s +++ /dev/null @@ -1,171 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83EE008:: @ 83EE008 gbapal - .incbin "graphics/misc/mon_markings.gbapal" - -gUnknown_83EE028:: @ 83EE028 4bpp - .incbin "graphics/misc/mon_markings.4bpp" - -gUnknown_83EE828:: @ 83EE828 - .4byte 0x02135009, 0x000000ff - -gUnknown_83EE830:: @ 83EE830 oamdata - .4byte 0xc0000000, 0x00000000 - -gUnknown_83EE838:: @ 83EE838 oamdata - .4byte 0x00000000, 0x00000000 - -gAnimCmd_83EE840:: - obj_image_anim_frame 0x0, 5 - obj_image_anim_end - -gAnimCmd_83EE848:: - obj_image_anim_frame 0x1, 5 - obj_image_anim_end - -gAnimCmd_83EE850:: - obj_image_anim_frame 0x2, 5 - obj_image_anim_end - -gAnimCmd_83EE858:: - obj_image_anim_frame 0x3, 5 - obj_image_anim_end - -gAnimCmd_83EE860:: - obj_image_anim_frame 0x4, 5 - obj_image_anim_end - -gAnimCmd_83EE868:: - obj_image_anim_frame 0x5, 5 - obj_image_anim_end - -gAnimCmd_83EE870:: - obj_image_anim_frame 0x6, 5 - obj_image_anim_end - -gAnimCmd_83EE878:: - obj_image_anim_frame 0x7, 5 - obj_image_anim_end - -gAnimCmd_83EE880:: - obj_image_anim_frame 0x8, 5 - obj_image_anim_end - -gAnimCmd_83EE888:: - obj_image_anim_frame 0x9, 5 - obj_image_anim_end - -gUnknown_83EE890:: @ 83EE890 animcmd - .4byte gAnimCmd_83EE840 - .4byte gAnimCmd_83EE848 - .4byte gAnimCmd_83EE850 - .4byte gAnimCmd_83EE858 - .4byte gAnimCmd_83EE860 - .4byte gAnimCmd_83EE868 - .4byte gAnimCmd_83EE870 - .4byte gAnimCmd_83EE878 - .4byte gAnimCmd_83EE880 - .4byte gAnimCmd_83EE888 - -gAnimCmd_83EE8B8:: - obj_image_anim_frame 0x0, 5 - obj_image_anim_end - -gAnimCmd_83EE8C0:: - obj_image_anim_frame 0x40, 5 - obj_image_anim_end - -gUnknown_83EE8C8:: @ 83EE8C8 animcmd - .4byte gAnimCmd_83EE8B8 - .4byte gAnimCmd_83EE8C0 - -gUnknown_83EE8D0:: @ 83EE8D0 oamdata - .4byte 0x40004000, 0x00000000 - -gAnimCmd_83EE8D8:: - obj_image_anim_frame 0x0, 5 - obj_image_anim_end - -gAnimCmd_83EE8E0:: - obj_image_anim_frame 0x4, 5 - obj_image_anim_end - -gAnimCmd_83EE8E8:: - obj_image_anim_frame 0x8, 5 - obj_image_anim_end - -gAnimCmd_83EE8F0:: - obj_image_anim_frame 0xc, 5 - obj_image_anim_end - -gAnimCmd_83EE8F8:: - obj_image_anim_frame 0x10, 5 - obj_image_anim_end - -gAnimCmd_83EE900:: - obj_image_anim_frame 0x14, 5 - obj_image_anim_end - -gAnimCmd_83EE908:: - obj_image_anim_frame 0x18, 5 - obj_image_anim_end - -gAnimCmd_83EE910:: - obj_image_anim_frame 0x1c, 5 - obj_image_anim_end - -gAnimCmd_83EE918:: - obj_image_anim_frame 0x20, 5 - obj_image_anim_end - -gAnimCmd_83EE920:: - obj_image_anim_frame 0x24, 5 - obj_image_anim_end - -gAnimCmd_83EE928:: - obj_image_anim_frame 0x28, 5 - obj_image_anim_end - -gAnimCmd_83EE930:: - obj_image_anim_frame 0x2c, 5 - obj_image_anim_end - -gAnimCmd_83EE938:: - obj_image_anim_frame 0x30, 5 - obj_image_anim_end - -gAnimCmd_83EE940:: - obj_image_anim_frame 0x34, 5 - obj_image_anim_end - -gAnimCmd_83EE948:: - obj_image_anim_frame 0x38, 5 - obj_image_anim_end - -gAnimCmd_83EE950:: - obj_image_anim_frame 0x3c, 5 - obj_image_anim_end - -gUnknown_83EE958:: @ 83EE958 animcmd - .4byte gAnimCmd_83EE8D8 - .4byte gAnimCmd_83EE8E0 - .4byte gAnimCmd_83EE8E8 - .4byte gAnimCmd_83EE8F0 - .4byte gAnimCmd_83EE8F8 - .4byte gAnimCmd_83EE900 - .4byte gAnimCmd_83EE908 - .4byte gAnimCmd_83EE910 - .4byte gAnimCmd_83EE918 - .4byte gAnimCmd_83EE920 - .4byte gAnimCmd_83EE928 - .4byte gAnimCmd_83EE930 - .4byte gAnimCmd_83EE938 - .4byte gAnimCmd_83EE940 - .4byte gAnimCmd_83EE948 - .4byte gAnimCmd_83EE950 diff --git a/graphics/misc/markings2.png b/graphics/misc/markings2.png Binary files differnew file mode 100644 index 000000000..0b62c124e --- /dev/null +++ b/graphics/misc/markings2.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 26c525272..f99dd148d 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -102,6 +102,9 @@ graphics/pokenav/region_map.8bpp: %.8bpp: %.png $(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 29 +$(MISCGFXDIR)/markings2.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 25 + $(INTERFACEGFXDIR)/menu.gbapal: $(INTERFACEGFXDIR)/menu_0.gbapal \ $(INTERFACEGFXDIR)/menu_1.gbapal @cat $^ >$@ diff --git a/include/graphics.h b/include/graphics.h index 56a51e67c..0e804e17c 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4222,4 +4222,8 @@ extern const u16 gUnknown_8E9E9FC[]; extern const u16 gTradeButtons_Gfx[]; extern const u16 gTradeMenuMonBox_Tilemap[]; +// mon_markings +extern const u16 gUnknown_8E9CBBC[]; +extern const u16 gUnknown_8E9CB9C[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/mon_markings.h b/include/mon_markings.h new file mode 100644 index 000000000..b428d9a34 --- /dev/null +++ b/include/mon_markings.h @@ -0,0 +1,24 @@ +#ifndef GUARD_MON_MARKINGS_H +#define GUARD_MON_MARKINGS_H + +struct PokemonMarkMenu +{ + /*0x0000*/ u16 baseTileTag; + /*0x0002*/ u16 basePaletteTag; + /*0x0004*/ u8 markings; // bit flags + /*0x0005*/ s8 cursorPos; + /*0x0006*/ bool8 markingsArray[4]; + /*0x000A*/ u8 cursorBaseY; + /*0x000B*/ bool8 spriteSheetLoadRequired; + /*0x000C*/ struct Sprite * menuWindowSprites[2]; // upper and lower halves of menu window + /*0x0014*/ struct Sprite * menuMarkingSprites[4]; + /*0x0024*/ struct Sprite * unkSprite; + /*0x0028*/ struct Sprite * menuTextSprite; + /*0x002C*/ const u8 *frameTiles; + /*0x0030*/ const u16 *framePalette; + /*0x0034*/ u8 menuWindowSpriteTiles[0x1000]; + /*0x1034*/ u8 filler1034[0x80]; + /*0x10B4*/ u8 tileLoadState; +}; // 10b8 + +#endif //GUARD_MON_MARKINGS_H diff --git a/ld_script.txt b/ld_script.txt index 4955916e3..ef4de7176 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -175,7 +175,7 @@ SECTIONS { src/battle_intro.o(.text); asm/bike.o(.text); src/easy_chat.o(.text); - asm/mon_markings.o(.text); + src/mon_markings.o(.text); src/mail.o(.text); src/menu_helpers.o(.text); asm/script_pokemon_util_80BF8FC.o(.text); @@ -461,7 +461,7 @@ SECTIONS { src/battle_intro.o(.rodata); data/bike.o(.rodata); src/easy_chat.o(.rodata); - data/mon_markings.o(.rodata); + src/mon_markings.o(.rodata); src/mail.o(.rodata); src/heal_location.o(.rodata); data/region_map.o(.rodata); diff --git a/src/mon_markings.c b/src/mon_markings.c new file mode 100644 index 000000000..88ed0d6af --- /dev/null +++ b/src/mon_markings.c @@ -0,0 +1,513 @@ +#include "global.h" +#include "dma3.h" +#include "text_window_graphics.h" +#include "sound.h" +#include "mon_markings.h" +#include "graphics.h" +#include "constants/songs.h" + +EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL; + +void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag); +void nullsub_62(struct Sprite * sprite); +void sub_80BEA8C(struct Sprite * sprite); +void sub_80BEAC8(struct Sprite * sprite); +struct Sprite * sub_80BEB20(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size); + +const u16 gUnknown_83EE008[] = INCBIN_U16("graphics/misc/mon_markings.gbapal"); +const u16 gUnknown_83EE028[] = INCBIN_U16("graphics/misc/mon_markings.4bpp"); +const u8 gUnknown_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF}; + +const struct OamData gUnknown_83EE830 = { + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64) +}; + +const struct OamData gUnknown_83EE838 = { + .shape = SPRITE_SHAPE(8x8), + .size = SPRITE_SIZE(8x8) +}; + +const union AnimCmd gAnimCmd_83EE840[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE848[] = { + ANIMCMD_FRAME(0x1, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE850[] = { + ANIMCMD_FRAME(0x2, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE858[] = { + ANIMCMD_FRAME(0x3, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE860[] = { + ANIMCMD_FRAME(0x4, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE868[] = { + ANIMCMD_FRAME(0x5, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE870[] = { + ANIMCMD_FRAME(0x6, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE878[] = { + ANIMCMD_FRAME(0x7, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE880[] = { + ANIMCMD_FRAME(0x8, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE888[] = { + ANIMCMD_FRAME(0x9, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE890[] = { + gAnimCmd_83EE840, + gAnimCmd_83EE848, + gAnimCmd_83EE850, + gAnimCmd_83EE858, + gAnimCmd_83EE860, + gAnimCmd_83EE868, + gAnimCmd_83EE870, + gAnimCmd_83EE878, + gAnimCmd_83EE880, + gAnimCmd_83EE888 +}; + +const union AnimCmd gAnimCmd_83EE8B8[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8C0[] = { + ANIMCMD_FRAME(0x40, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE8C8[] = { + gAnimCmd_83EE8B8, + gAnimCmd_83EE8C0 +}; + +const struct OamData gUnknown_83EE8D0 = { + .shape = SPRITE_SHAPE(32x8), + .size = SPRITE_SIZE(32x8) +}; + +const union AnimCmd gAnimCmd_83EE8D8[] = { + ANIMCMD_FRAME(0x0, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8E0[] = { + ANIMCMD_FRAME(0x4, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8E8[] = { + ANIMCMD_FRAME(0x8, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8F0[] = { + ANIMCMD_FRAME(0xc, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE8F8[] = { + ANIMCMD_FRAME(0x10, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE900[] = { + ANIMCMD_FRAME(0x14, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE908[] = { + ANIMCMD_FRAME(0x18, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE910[] = { + ANIMCMD_FRAME(0x1c, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE918[] = { + ANIMCMD_FRAME(0x20, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE920[] = { + ANIMCMD_FRAME(0x24, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE928[] = { + ANIMCMD_FRAME(0x28, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE930[] = { + ANIMCMD_FRAME(0x2c, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE938[] = { + ANIMCMD_FRAME(0x30, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE940[] = { + ANIMCMD_FRAME(0x34, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE948[] = { + ANIMCMD_FRAME(0x38, 5), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_83EE950[] = { + ANIMCMD_FRAME(0x3c, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_83EE958[] = { + gAnimCmd_83EE8D8, + gAnimCmd_83EE8E0, + gAnimCmd_83EE8E8, + gAnimCmd_83EE8F0, + gAnimCmd_83EE8F8, + gAnimCmd_83EE900, + gAnimCmd_83EE908, + gAnimCmd_83EE910, + gAnimCmd_83EE918, + gAnimCmd_83EE920, + gAnimCmd_83EE928, + gAnimCmd_83EE930, + gAnimCmd_83EE938, + gAnimCmd_83EE940, + gAnimCmd_83EE948, + gAnimCmd_83EE950 +}; + +void sub_80BE46C(struct PokemonMarkMenu * markMenu) +{ + sMenu = markMenu; +} + +void sub_80BE478(void) +{ + const struct TextWindowGraphics * frame = GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType); + sMenu->frameTiles = frame->tiles; + sMenu->framePalette = frame->palette; + sMenu->tileLoadState = 0; + CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles)); +} + +bool8 sub_80BE4C0(void) +{ + u16 i; + u8 *menuWindowSpriteTiles = &sMenu->menuWindowSpriteTiles[256 * sMenu->tileLoadState]; + switch (sMenu->tileLoadState) + { + case 0: + CpuFastCopy(sMenu->frameTiles + 0x00, menuWindowSpriteTiles, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0x20, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0x40, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + break; + default: + CpuFastCopy(sMenu->frameTiles + 0x60, menuWindowSpriteTiles + 0x00, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0x80, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0xA0, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + break; + case 13: + CpuFastCopy(sMenu->frameTiles + 0xC0, menuWindowSpriteTiles + 0x00, 0x20); + for (i = 0; i < 6; i++) + CpuFastCopy(sMenu->frameTiles + 0xE0, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20); + CpuFastCopy(sMenu->frameTiles + 0x100, menuWindowSpriteTiles + 0x20 * 7, 0x20); + sMenu->tileLoadState++; + return FALSE; + case 14: + return FALSE; + } + return TRUE; +} + +void sub_80BE5F0(void) +{ + sub_80BE478(); + while (sub_80BE4C0()) + {} +} + +void sub_80BE604(u8 markings, s16 x, s16 y) +{ + u16 i; + sMenu->cursorPos = 0; + sMenu->markings = markings; + for (i = 0; i < 4; i++) + { + sMenu->markingsArray[i] = (sMenu->markings >> i) & 1; + } + sub_80BE7CC(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);; +} + +void sub_80BE658(void) +{ + u16 i; + for (i = 0; i < 3; i++) + FreeSpriteTilesByTag(sMenu->baseTileTag + i); + FreeSpritePaletteByTag(sMenu->basePaletteTag); + FreeSpritePaletteByTag(sMenu->basePaletteTag + 1); + for (i = 0; i < 2; i++) + { + if (sMenu->menuWindowSprites[i] == NULL) + return; // break; + DestroySprite(sMenu->menuWindowSprites[i]); + } + for (i = 0; i < 4; i++) + { + if (sMenu->menuMarkingSprites[i] == NULL) + return; // break; + DestroySprite(sMenu->menuMarkingSprites[i]); + } + if (sMenu->unkSprite != NULL) + DestroySprite(sMenu->unkSprite); + if (sMenu->menuTextSprite != NULL) + DestroySprite(sMenu->menuTextSprite); +} + +bool8 sub_80BE6F0(void) +{ + u16 i; + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + if (--sMenu->cursorPos < 0) + sMenu->cursorPos = 5; + return TRUE; + } + if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + if (++sMenu->cursorPos > 5) + sMenu->cursorPos = 0; + return TRUE; + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + switch (sMenu->cursorPos) + { + case 4: + sMenu->markings = 0; + for (i = 0; i < 4; i++) + sMenu->markings |= sMenu->markingsArray[i] << i; + return FALSE; + case 5: + return FALSE; + } + sMenu->markingsArray[sMenu->cursorPos] = sMenu->markingsArray[sMenu->cursorPos] ? FALSE : TRUE; + return TRUE; + } + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + return FALSE; + } + return TRUE; +} + +void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag) +{ + u16 i; + u8 spriteId; + struct SpriteSheet sheets[] = { + { + .data = sMenu->menuWindowSpriteTiles, + .size = 0x1000, + .tag = tilesTag + }, { + .data = gUnknown_8E9CBBC, + .size = 0x320, + .tag = tilesTag + 1 + }, {} + }; + struct SpritePalette palettes[] = { + { + .data = sMenu->framePalette, + .tag = paletteTag + }, { + .data = gUnknown_8E9CB9C, + .tag = paletteTag + 1 + }, {} + }; + struct SpriteTemplate sprTemplate = { + .tileTag = tilesTag, + .paletteTag = paletteTag, + .oam = &gUnknown_83EE830, + .anims = gUnknown_83EE8C8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_62 + }; + LoadSpriteSheets(sheets); + LoadSpritePalettes(palettes); + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1); + if (spriteId != MAX_SPRITES) + { + sMenu->menuWindowSprites[i] = &gSprites[spriteId]; + StartSpriteAnim(&gSprites[spriteId], i); + } + else + { + sMenu->menuWindowSprites[i] = NULL; + return; + } + } + + sMenu->menuWindowSprites[1]->pos1.y = y + 96; + + sprTemplate.tileTag++; + sprTemplate.paletteTag++; + sprTemplate.anims = gUnknown_83EE890; + sprTemplate.callback = sub_80BEA8C; + sprTemplate.oam = &gUnknown_83EE838; + + for (i = 0; i < 4; i++) + { + spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0); + if (spriteId != MAX_SPRITES) + { + sMenu->menuMarkingSprites[i] = &gSprites[spriteId]; + gSprites[spriteId].data[0] = i; + } + else + { + sMenu->menuMarkingSprites[i] = NULL; + return; + } + } + + sprTemplate.callback = SpriteCallbackDummy; + + spriteId = CreateSprite(&sprTemplate, 0, 0, 0); + + if (spriteId != MAX_SPRITES) + { + sMenu->menuTextSprite = &gSprites[spriteId]; + sMenu->menuTextSprite->oam.shape = ST_OAM_SQUARE; + sMenu->menuTextSprite->oam.size = 2; + StartSpriteAnim(sMenu->menuTextSprite, 9); + sMenu->menuTextSprite->pos1.x = x + 32; + sMenu->menuTextSprite->pos1.y = y + 80; + CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0); + } + else + { + sMenu->menuTextSprite = NULL; + } + + sprTemplate.callback = sub_80BEAC8; + spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0); + if (spriteId != MAX_SPRITES) + { + sMenu->unkSprite = &gSprites[spriteId]; + sMenu->unkSprite->data[0] = y + 16; + StartSpriteAnim(sMenu->unkSprite, 8); + } + else + { + sMenu->unkSprite = NULL; + } +} + +void nullsub_62(struct Sprite * sprite) +{} + +void sub_80BEA8C(struct Sprite * sprite) +{ + if (sMenu->markingsArray[sprite->data[0]]) + StartSpriteAnim(sprite, 2 * sprite->data[0] + 1); + else + StartSpriteAnim(sprite, 2 * sprite->data[0] + 0); +} + +void sub_80BEAC8(struct Sprite * sprite) +{ + sprite->pos1.y = 16 * sMenu->cursorPos + sprite->data[0]; +} + +struct Sprite * sub_80BEAE0(u16 tileTag, u16 paletteTag, const u16 *palette) +{ + if (palette == NULL) + palette = gUnknown_83EE008; + return sub_80BEB20(tileTag, paletteTag, palette, 16); +} + +struct Sprite * sub_80BEB00(u16 tileTag, u16 paletteTag, const u16 *palette) +{ + if (palette == NULL) + palette = gUnknown_83EE008; + return sub_80BEB20(tileTag, paletteTag, palette, 1); +} + +struct Sprite * sub_80BEB20(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size) +{ + u8 spriteId; + struct SpriteTemplate sprTemplate; + struct SpriteSheet sheet = { gUnknown_83EE028, 0x80, tileTag }; + struct SpritePalette sprPalette = { palette, paletteTag }; + + sprTemplate.tileTag = tileTag; + sprTemplate.paletteTag = paletteTag; + sprTemplate.oam = &gUnknown_83EE8D0; + sprTemplate.anims = gUnknown_83EE958; + sprTemplate.images = NULL; + sprTemplate.affineAnims = gDummySpriteAffineAnimTable; + sprTemplate.callback = nullsub_62; + + sheet.size = size * 0x80; + + LoadSpriteSheet(&sheet); + LoadSpritePalette(&sprPalette); + + spriteId = CreateSprite(&sprTemplate, 0, 0, 0); + if (spriteId != MAX_SPRITES) + return &gSprites[spriteId]; + else + return NULL; +} + +void sub_80BEBD0(u8 markings, void * dest) +{ + RequestDma3Copy(&gUnknown_83EE028[64 * markings], dest, 0x80, 1); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index 5d5cbaaeb..d3e29a065 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -371,7 +371,7 @@ gUnknown_203999C: @ 203999C .align 2 .include "src/easy_chat.o" .align 2 - .include "asm/mon_markings.o" @ TODO: Move to src + .include "src/mon_markings.o" .align 2 .include "src/mail.o" .align 2 |