diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-08-19 12:41:57 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-08-19 13:01:33 -0500 |
commit | c2218920d57c883dc83078c2d1d7cf3af82babbb (patch) | |
tree | 9a7c9e11b823778c9492c529f23f1125b5b878d9 | |
parent | 8e79b6961dd0294c34e68eef7768411110589ec1 (diff) |
Decompile more pokenav
-rw-r--r-- | asm/pokenav.s | 1022 | ||||
-rw-r--r-- | include/pokenav.h | 12 | ||||
-rw-r--r-- | src/pokenav_after.c | 5 | ||||
-rw-r--r-- | src/pokenav_before.c | 513 |
4 files changed, 510 insertions, 1042 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index de906a926..331c2e8f1 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,1028 +5,6 @@ .text - thumb_func_start sub_80F3E9C -sub_80F3E9C: @ 80F3E9C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080F3ECA - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080F3F14 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080F3ECA: - adds r0, r4, 0 - bl sub_80F3E24 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F3F14 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080F3F10 - cmp r1, 0x9 - bne _080F3F08 - bl sub_80F3FAC - ldr r0, _080F3F04 @ =sub_80F3E04 - b _080F3F12 - .align 2, 0 -_080F3F04: .4byte sub_80F3E04 -_080F3F08: - ldr r0, _080F3F0C @ =sub_80F3DDC - b _080F3F12 - .align 2, 0 -_080F3F0C: .4byte sub_80F3DDC -_080F3F10: - ldr r0, _080F3F1C @ =SpriteCallbackDummy -_080F3F12: - str r0, [r4, 0x1C] -_080F3F14: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3F1C: .4byte SpriteCallbackDummy - thumb_func_end sub_80F3E9C - - thumb_func_start sub_80F3F20 -sub_80F3F20: @ 80F3F20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r5, 0 - ldr r0, _080F3F6C @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r7, r0, r1 -_080F3F3C: - lsls r0, r5, 2 - adds r4, r7, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3F92 - strh r5, [r0, 0x2E] - ldr r1, [r4] - lsls r0, r5, 4 - adds r0, 0x1 - strh r0, [r1, 0x30] - ldr r0, [r4] - strh r6, [r0, 0x32] - ldr r0, [r4] - strh r5, [r0, 0x34] - mov r3, r8 - cmp r3, 0 - beq _080F3F62 - cmp r6, 0x9 - beq _080F3F74 -_080F3F62: - ldr r1, [r4] - ldr r0, _080F3F70 @ =sub_80F3E9C - str r0, [r1, 0x1C] - b _080F3F92 - .align 2, 0 -_080F3F6C: .4byte gUnknown_083DFEC4 -_080F3F70: .4byte sub_80F3E9C -_080F3F74: - ldr r0, [r4] - bl sub_80F3E24 - bl sub_80F3FAC - ldr r2, [r4] - ldr r0, _080F3FA8 @ =sub_80F3E04 - str r0, [r2, 0x1C] - adds r2, 0x3E - ldrb r0, [r2] - movs r3, 0x5 - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - strb r0, [r2] -_080F3F92: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3F3C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3FA8: .4byte sub_80F3E04 - thumb_func_end sub_80F3F20 - - thumb_func_start sub_80F3FAC -sub_80F3FAC: @ 80F3FAC - push {r4-r7,lr} - movs r5, 0 - ldr r0, _080F3FEC @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r6, r0, r1 - movs r0, 0x5 - negs r0, r0 - adds r7, r0, 0 -_080F3FC0: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3FDA - movs r1, 0 - bl SeekSpriteAnim - ldr r1, [r4] - adds r1, 0x3E - ldrb r0, [r1] - ands r0, r7 - strb r0, [r1] -_080F3FDA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3FC0 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3FEC: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F3FAC - - thumb_func_start sub_80F3FF0 -sub_80F3FF0: @ 80F3FF0 - push {lr} - ldr r0, _080F4018 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F401C @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F4020 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F4012 -_080F4008: - bl sub_80F4024 - lsls r0, 24 - cmp r0, 0 - bne _080F4008 -_080F4012: - pop {r0} - bx r0 - .align 2, 0 -_080F4018: .4byte gUnknown_083DFEC4 -_080F401C: .4byte 0x00000306 -_080F4020: .4byte 0x00006dac - thumb_func_end sub_80F3FF0 - - thumb_func_start sub_80F4024 -sub_80F4024: @ 80F4024 - push {r4,lr} - sub sp, 0x10 - ldr r0, _080F4040 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F4044 @ =0x00000306 - adds r0, r4, r1 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F4068 - cmp r0, 0x1 - bgt _080F4048 - cmp r0, 0 - beq _080F4052 - b _080F4106 - .align 2, 0 -_080F4040: .4byte gUnknown_083DFEC4 -_080F4044: .4byte 0x00000306 -_080F4048: - cmp r0, 0x2 - beq _080F4084 - cmp r0, 0x3 - beq _080F40B8 - b _080F4106 -_080F4052: - ldr r0, _080F4060 @ =gUnknown_083E329C - ldr r2, _080F4064 @ =0x000131e4 - adds r1, r4, r2 - bl LZ77UnCompWram - b _080F4118 - .align 2, 0 -_080F4060: .4byte gUnknown_083E329C -_080F4064: .4byte 0x000131e4 -_080F4068: - ldr r1, _080F407C @ =0x000131e4 - adds r0, r4, r1 - str r0, [sp] - ldr r0, _080F4080 @ =0x00181000 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - b _080F4118 - .align 2, 0 -_080F407C: .4byte 0x000131e4 -_080F4080: .4byte 0x00181000 -_080F4084: - ldr r0, _080F40B4 @ =gUnknown_083E4818 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - add r0, sp, 0x8 - bl LoadSpritePalette - movs r0, 0x10 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC2 - lsls r1, 2 - adds r2, r4, r1 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - movs r0, 0x3 - negs r0, r0 - bics r0, r1 - str r0, [r2] - b _080F4118 - .align 2, 0 -_080F40B4: .4byte gUnknown_083E4818 -_080F40B8: - ldr r0, _080F40E4 @ =gSpriteTemplate_83E4850 - movs r1, 0xDA - movs r2, 0xE - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F40F0 - ldr r0, _080F40E8 @ =0x00006d98 - adds r2, r4, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F40EC @ =gSprites - adds r0, r1 - str r0, [r2] - movs r1, 0 - strh r1, [r0, 0x2E] - b _080F40F8 - .align 2, 0 -_080F40E4: .4byte gSpriteTemplate_83E4850 -_080F40E8: .4byte 0x00006d98 -_080F40EC: .4byte gSprites -_080F40F0: - ldr r2, _080F410C @ =0x00006d98 - adds r1, r4, r2 - movs r0, 0 - str r0, [r1] -_080F40F8: - ldr r0, _080F4110 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F4114 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F4106: - movs r0, 0 - b _080F4128 - .align 2, 0 -_080F410C: .4byte 0x00006d98 -_080F4110: .4byte gUnknown_083DFEC4 -_080F4114: .4byte 0x00000306 -_080F4118: - ldr r0, _080F4130 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F4134 @ =0x00000306 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F4128: - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4130: .4byte gUnknown_083DFEC4 -_080F4134: .4byte 0x00000306 - thumb_func_end sub_80F4024 - - thumb_func_start sub_80F4138 -sub_80F4138: @ 80F4138 - push {lr} - adds r2, r0, 0 - ldr r0, _080F4170 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bgt _080F4174 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080F418E - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x1 - b _080F418C - .align 2, 0 -_080F4170: .4byte gUnknown_083DFEC4 -_080F4174: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080F418E - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - movs r0, 0 -_080F418C: - strh r0, [r2, 0x2E] -_080F418E: - pop {r0} - bx r0 - thumb_func_end sub_80F4138 - - thumb_func_start sub_80F4194 -sub_80F4194: @ 80F4194 - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - adds r2, r1, 0 - ldr r0, _080F42A4 @ =gUnknown_083DFEC8 - ldr r6, [r0] - mov r0, sp - ldr r1, _080F42A8 @ =0x00001111 - adds r5, r1, 0 - strh r5, [r0] - ldr r4, _080F42AC @ =0x040000d4 - str r0, [r4] - str r6, [r4, 0x4] - ldr r3, _080F42B0 @ =0x81000140 - str r3, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r0, 0x80 - lsls r0, 3 - adds r1, r6, r0 - mov r0, sp - strh r5, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r3, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0 - adds r1, r6, 0 - bl Text_InitWindow8004E3C - movs r3, 0x88 - lsls r3, 2 - adds r1, r6, r3 - mov r0, sp - movs r3, 0 - strh r3, [r0] - str r0, [r4] - str r1, [r4, 0x4] - ldr r2, _080F42B8 @ =0x81000030 - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r0, 0xC4 - lsls r0, 3 - adds r1, r6, r0 - mov r0, sp - strh r3, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r1, 0x80 - lsls r1, 2 - adds r2, r6, r1 - ldr r0, [r2] - ldr r1, _080F42BC @ =0x0fffffff - ands r0, r1 - str r0, [r2] - ldr r0, [r2, 0x4] - ands r0, r1 - str r0, [r2, 0x4] - ldr r0, [r2, 0x8] - ands r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0xC] - ands r0, r1 - str r0, [r2, 0xC] - ldr r0, [r2, 0x10] - ands r0, r1 - str r0, [r2, 0x10] - ldr r0, [r2, 0x14] - ands r0, r1 - str r0, [r2, 0x14] - ldr r0, [r2, 0x18] - ands r0, r1 - str r0, [r2, 0x18] - ldr r0, [r2, 0x1C] - ands r0, r1 - str r0, [r2, 0x1C] - movs r3, 0xC0 - lsls r3, 3 - adds r2, r6, r3 - ldr r0, [r2] - ands r0, r1 - str r0, [r2] - ldr r0, [r2, 0x4] - ands r0, r1 - str r0, [r2, 0x4] - ldr r0, [r2, 0x8] - ands r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0xC] - ands r0, r1 - str r0, [r2, 0xC] - ldr r0, [r2, 0x10] - ands r0, r1 - str r0, [r2, 0x10] - ldr r0, [r2, 0x14] - ands r0, r1 - str r0, [r2, 0x14] - ldr r0, [r2, 0x18] - ands r0, r1 - str r0, [r2, 0x18] - ldr r0, [r2, 0x1C] - ands r0, r1 - str r0, [r2, 0x1C] - movs r1, 0 - ldr r2, _080F42C0 @ =0x80000040 -_080F4268: - lsls r0, r1, 7 - adds r0, r6, r0 - str r0, [r4] - lsls r0, r1, 8 - adds r0, r7, r0 - str r0, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - lsls r0, r1, 7 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3 - adds r0, r6, r0 - str r0, [r4] - lsls r0, r1, 3 - adds r0, 0x4 - lsls r0, 5 - adds r0, r7, r0 - str r0, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080F4268 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F42A4: .4byte gUnknown_083DFEC8 -_080F42A8: .4byte 0x00001111 -_080F42AC: .4byte 0x040000d4 -_080F42B0: .4byte 0x81000140 -_080F42B4: .4byte gWindowTemplate_81E70F0 -_080F42B8: .4byte 0x81000030 -_080F42BC: .4byte 0x0fffffff -_080F42C0: .4byte 0x80000040 - thumb_func_end sub_80F4194 - - thumb_func_start sub_80F42C4 -sub_80F42C4: @ 80F42C4 - push {r4-r7,lr} - sub sp, 0x8 - adds r1, r0, 0 - ldr r0, _080F433C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4340 @ =0x0000d1e4 - adds r0, r2 - str r0, [sp] - ldr r2, _080F4344 @ =0x001a0500 - str r2, [sp, 0x4] - bl sub_80F4194 - mov r0, sp - bl LoadSpriteSheet - ldr r0, _080F4348 @ =gUnknown_083E4868 - bl LoadSpritePalette - movs r5, 0 - movs r4, 0 - ldr r6, _080F434C @ =gSprites -_080F42EE: - lsls r1, r4, 21 - movs r7, 0xE2 - lsls r7, 15 - adds r1, r7 - asrs r1, 16 - ldr r0, _080F4350 @ =gSpriteTemplate_83E4878 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F4360 - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r3, r6 - ldrh r2, [r3, 0x4] - lsls r0, r2, 22 - lsrs r0, 22 - adds r0, r5, r0 - ldr r7, _080F4354 @ =0x000003ff - adds r1, r7, 0 - ands r0, r1 - ldr r7, _080F4358 @ =0xfffffc00 - adds r1, r7, 0 - ands r2, r1 - orrs r2, r0 - strh r2, [r3, 0x4] - ldr r0, _080F433C @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _080F435C @ =0x0000ced4 - adds r0, r2 - adds r0, r1 - str r3, [r0] - b _080F4370 - .align 2, 0 -_080F433C: .4byte gUnknown_083DFEC4 -_080F4340: .4byte 0x0000d1e4 -_080F4344: .4byte 0x001a0500 -_080F4348: .4byte gUnknown_083E4868 -_080F434C: .4byte gSprites -_080F4350: .4byte gSpriteTemplate_83E4878 -_080F4354: .4byte 0x000003ff -_080F4358: .4byte 0xfffffc00 -_080F435C: .4byte 0x0000ced4 -_080F4360: - ldr r0, _080F438C @ =gUnknown_083DFEC4 - ldr r1, [r0] - lsls r0, r4, 2 - ldr r7, _080F4390 @ =0x0000ced4 - adds r1, r7 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_080F4370: - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F42EE - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F438C: .4byte gUnknown_083DFEC4 -_080F4390: .4byte 0x0000ced4 - thumb_func_end sub_80F42C4 - - thumb_func_start sub_80F4394 -sub_80F4394: @ 80F4394 - push {r4,r5,lr} - movs r4, 0 - ldr r0, _080F43CC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F43D0 @ =0x0000ced4 - adds r5, r0, r1 -_080F43A0: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F43AE - bl DestroySprite -_080F43AE: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F43A0 - movs r0, 0x1A - bl FreeSpriteTilesByTag - movs r0, 0x12 - bl FreeSpritePaletteByTag - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F43CC: .4byte gUnknown_083DFEC4 -_080F43D0: .4byte 0x0000ced4 - thumb_func_end sub_80F4394 - - thumb_func_start sub_80F43D4 -sub_80F43D4: @ 80F43D4 - push {r4,lr} - adds r1, r0, 0 - ldr r0, _080F4410 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4414 @ =0x0000d1e4 - adds r4, r0, r2 - adds r0, r4, 0 - bl sub_80F4194 - movs r0, 0x1A - bl GetSpriteTileStartByTag - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080F4418 @ =0x0000ffff - cmp r1, r0 - beq _080F4408 - lsls r0, r1, 5 - ldr r1, _080F441C @ =0x06010000 - adds r0, r1 - ldr r1, _080F4420 @ =0x040000d4 - str r4, [r1] - str r0, [r1, 0x4] - ldr r0, _080F4424 @ =0x84000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080F4408: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F4410: .4byte gUnknown_083DFEC4 -_080F4414: .4byte 0x0000d1e4 -_080F4418: .4byte 0x0000ffff -_080F441C: .4byte 0x06010000 -_080F4420: .4byte 0x040000d4 -_080F4424: .4byte 0x84000140 - thumb_func_end sub_80F43D4 - - thumb_func_start sub_80F4428 -sub_80F4428: @ 80F4428 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - bl sub_80F6514 - pop {r1} - bx r1 - thumb_func_end sub_80F4428 - - thumb_func_start sub_80F443C -sub_80F443C: @ 80F443C - push {r4,lr} - lsls r4, r1, 16 - lsrs r4, 16 - ldr r1, _080F4458 @ =gOtherText_Number - bl StringCopy - adds r1, r4, 0 - movs r2, 0x38 - movs r3, 0x1 - bl AlignInt1InMenuWindow - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4458: .4byte gOtherText_Number - thumb_func_end sub_80F443C - - thumb_func_start sub_80F445C -sub_80F445C: @ 80F445C - push {r4,lr} - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x17 - movs r3, 0x1 - bl AlignInt1InMenuWindow - adds r4, r0, 0 - movs r3, 0xFC - strb r3, [r4] - movs r2, 0x11 - strb r2, [r4, 0x1] - movs r1, 0x1 - strb r1, [r4, 0x2] - adds r4, 0x3 - movs r0, 0xBA - strb r0, [r4] - adds r4, 0x1 - strb r3, [r4] - strb r2, [r4, 0x1] - strb r1, [r4, 0x2] - adds r4, 0x3 - ldr r0, _080F44A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F44AC @ =0x00008774 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x32 - movs r3, 0x1 - bl AlignInt1InMenuWindow - adds r4, r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F44A8: .4byte gUnknown_083DFEC4 -_080F44AC: .4byte 0x00008774 - thumb_func_end sub_80F445C - - thumb_func_start sub_80F44B0 -sub_80F44B0: @ 80F44B0 - push {r4,lr} - adds r4, r2, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r0, 0xE - bne _080F44F4 - cmp r4, 0x2 - beq _080F44C8 - cmp r4, 0x7 - bne _080F44E0 -_080F44C8: - movs r0, 0x64 - muls r0, r2 - ldr r1, _080F44DC @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - adds r2, r3, 0 - bl GetMonData - b _080F453C - .align 2, 0 -_080F44DC: .4byte gPlayerParty -_080F44E0: - movs r0, 0x64 - muls r0, r2 - ldr r1, _080F44F0 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl GetMonData - b _080F453C - .align 2, 0 -_080F44F0: .4byte gPlayerParty -_080F44F4: - cmp r4, 0x2 - beq _080F44FC - cmp r4, 0x7 - bne _080F4520 -_080F44FC: - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - ldr r2, _080F451C @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - adds r1, r4, 0 - adds r2, r3, 0 - bl GetBoxMonData - b _080F453C - .align 2, 0 -_080F451C: .4byte gPokemonStorage + 0x4 -_080F4520: - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - ldr r2, _080F4544 @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - adds r1, r4, 0 - bl GetBoxMonData -_080F453C: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4544: .4byte gPokemonStorage + 0x4 - thumb_func_end sub_80F44B0 - - thumb_func_start sub_80F4548 -sub_80F4548: @ 80F4548 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - mov r0, sp - strb r2, [r0] - cmp r3, 0xE - bne _080F4574 - movs r0, 0x64 - muls r0, r4 - ldr r1, _080F4570 @ =gPlayerParty - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData - b _080F4592 - .align 2, 0 -_080F4570: .4byte gPlayerParty -_080F4574: - lsls r1, r3, 2 - adds r1, r3 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - ldr r2, _080F459C @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetBoxMonData -_080F4592: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F459C: .4byte gPokemonStorage + 0x4 - thumb_func_end sub_80F4548 - - thumb_func_start sub_80F45A0 -sub_80F45A0: @ 80F45A0 - push {r4-r7,lr} - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _080F45F0 @ =gUnknown_083DFEC4 - ldr r5, [r1] - lsls r1, r0, 16 - asrs r0, r1, 14 - adds r4, r5, r0 - ldr r2, _080F45F4 @ =0x0000893f - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 25 - lsrs r7, r0, 31 - cmp r7, 0 - beq _080F4644 - lsls r0, r6, 6 - ldr r2, _080F45F8 @ =0x00008829 - adds r0, r2 - adds r0, r5, r0 - lsrs r1, 16 - movs r2, 0 - bl sub_80F4428 - ldr r1, _080F45FC @ =0x0000893d - adds r0, r4, r1 - ldrb r2, [r0] - cmp r2, 0xE - bne _080F4608 - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r2, _080F4600 @ =0x000088e9 - adds r0, r2 - adds r0, r5, r0 - ldr r1, _080F4604 @ =gOtherText_InParty - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F4624 - .align 2, 0 -_080F45F0: .4byte gUnknown_083DFEC4 -_080F45F4: .4byte 0x0000893f -_080F45F8: .4byte 0x00008829 -_080F45FC: .4byte 0x0000893d -_080F4600: .4byte 0x000088e9 -_080F4604: .4byte gOtherText_InParty -_080F4608: - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F4634 @ =0x000088e9 - adds r0, r1 - adds r0, r5, r0 - lsls r1, r2, 3 - adds r1, r2 - ldr r2, _080F4638 @ =gPokemonStorage + 0x8344 - adds r1, r2 - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow -_080F4624: - ldr r0, _080F463C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4640 @ =0x00008937 - adds r0, r2 - adds r0, r6 - movs r1, 0x1 - strb r1, [r0] - b _080F4676 - .align 2, 0 -_080F4634: .4byte 0x000088e9 -_080F4638: .4byte gPokemonStorage + 0x8344 -_080F463C: .4byte gUnknown_083DFEC4 -_080F4640: .4byte 0x00008937 -_080F4644: - lsls r0, r6, 6 - ldr r1, _080F467C @ =0x00008829 - adds r0, r1 - adds r0, r5, r0 - ldr r4, _080F4680 @ =gEmptyString_81E72B0 - adds r1, r4, 0 - movs r2, 0x68 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r2, _080F4684 @ =0x000088e9 - adds r0, r2 - adds r0, r5, r0 - adds r1, r4, 0 - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow - ldr r1, _080F4688 @ =0x00008937 - adds r0, r5, r1 - adds r0, r6 - strb r7, [r0] -_080F4676: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F467C: .4byte 0x00008829 -_080F4680: .4byte gEmptyString_81E72B0 -_080F4684: .4byte 0x000088e9 -_080F4688: .4byte 0x00008937 - thumb_func_end sub_80F45A0 - thumb_func_start sub_80F468C sub_80F468C: @ 80F468C push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index cf7b3f679..57cd1552e 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -46,7 +46,7 @@ struct UnkPokenavStruct { /*0x0000*/ u16 unk0[6][0x40]; /*0x0300*/ u8 filler0300[0x6]; /*0x0306*/ u16 unk306; - /*0x0306*/ u8 filler0308[0x4]; + /*0x0306*/ int unk308; /*0x030C*/ s16 unk030C; /*0x030E*/ s8 unk30E; /*0x030F*/ u8 unk30F; @@ -73,7 +73,7 @@ struct UnkPokenavStruct { /*0x6798*/ u8 unk6798[0x200]; /*0x6998*/ u8 unk6998[0x200]; /*0x6B98*/ u8 unk6B98[0x200]; - /*0x6D98*/ u8 filler6B98[0x4]; + /*0x6D98*/ struct Sprite *unk6D98; /*0x6D9C*/ struct Sprite *unk6D9C; /*0x6DA0*/ u16 unk6DA0; /*0x6DA2*/ u16 unk6DA2; @@ -128,7 +128,8 @@ struct UnkPokenavStruct { /*0x8829*/ u8 unk8829[3][64]; /*0x88E9*/ u8 unk88E9[3][24]; /*0x8931*/ u8 unk8931[3]; - /*0x8934*/ u8 unk8934[8]; + /*0x8934*/ u8 unk8934[3]; + /*0x8937*/ u8 unk8937[5]; /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab]; /*0x8fe8*/ u8 fil8fe8[1]; /*0x8fe9*/ s8 unk8fe9; @@ -161,7 +162,7 @@ struct UnkPokenavStruct { /*0xCE52*/ u16 palettesCE52[30]; /*0xCE8E*/ u16 palettesCE8E[0x21]; /*0xCED0*/ struct Sprite *unkCED0; - /*0xCED4*/ u8 fillerCED4[0x14]; + /*0xCED4*/ struct Sprite *unkCED4[5]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[69]; /*0xD110*/ const u8 *trainerEyeDescriptionLines[4]; /*0xD120*/ u8 fillerD114[0x18]; @@ -177,7 +178,8 @@ struct UnkPokenavStruct { /*0xD1DC*/ u16 unkD1DC; /*0xD1DE*/ u16 unkD1DE; /*0xD1E0*/ u8 *unkD1E0; - /*0xD1E4*/ u8 unkD1E4[2][0x2000]; + /*0xD1E4*/ u8 unkD1E4[3][0x2000]; + /*0x131E4*/ u8 unk131E4[0x1000]; }; extern struct UnkPokenavStruct *const gUnknown_083DFEC4; diff --git a/src/pokenav_after.c b/src/pokenav_after.c index 330305ea3..7619577cc 100644 --- a/src/pokenav_after.c +++ b/src/pokenav_after.c @@ -3,6 +3,7 @@ #include "pokenav.h" #include "battle.h" #include "data2.h" +#include "text.h" #include "de_rom_8040FE0.h" #include "string_util.h" @@ -20,14 +21,14 @@ void sub_80F700C(u8 *arg0, u16 arg1) ptr = StringCopy(ptr, de_sub_8041024(0, gUnknown_083DFEC4->unkCEE8[arg1].unk0)); #endif - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; ptr[2] = 0x4B; ptr += 3; ptr = StringCopy(ptr, trainer->trainerName); } - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; ptr[2] = 0x80; ptr[3] = 0xFF; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 882177a5b..8ae582222 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -201,7 +201,11 @@ extern const struct SpriteSheet gUnknown_083E4784; extern const struct SpritePalette gUnknown_083E478C; extern const struct SpriteTemplate gSpriteTemplate_83E4800; extern const s16 gUnknown_083E4794[][2]; - +extern const u8 gUnknown_083E329C[]; +extern const struct SpritePalette gUnknown_083E4818; +extern const struct SpriteTemplate gSpriteTemplate_83E4850; +extern const struct SpritePalette gUnknown_083E4868; +extern const struct SpriteTemplate gSpriteTemplate_83E4878; extern u16 gUnknown_020388B4; extern u8 gUnknown_020388B0[]; @@ -251,10 +255,10 @@ static void sub_80EEDC4(); static void ShowMapNamePopUpWindow(void); static void sub_80F0954(u16, u16, u16); static bool8 sub_80F098C(void); -void sub_80F445C(u8*, u16); +static u8 *sub_80F445C(u8*, u16); static void sub_80F081C(u8); bool8 sub_80F0944(void); -u8 *sub_80F4428(u8*, u16, u8); +static u8 *sub_80F4428(u8*, u16, u8); void sub_80F700C(u8*, u16); static void sub_80F0B24(void); static bool8 sub_80F0B44(void); @@ -321,7 +325,7 @@ static void sub_80F3264(void); static void sub_80F3294(u8); static void sub_80F35B4(void); static void sub_80F363C(struct Sprite *sprite); -void sub_80F4548(u16, u16, u8); +static void SetMonMarkings(u16, u16, u8); static void sub_80F36F0(void); static bool8 sub_80F3724(void); static void sub_80F379C(void); @@ -335,10 +339,16 @@ static bool8 sub_80F3B58(void); static void sub_80F3B94(void); static bool8 sub_80F3BD4(void); static void sub_80F3C2C(void); -void sub_80F3F20(u8, u8); +static void sub_80F3F20(u8, u8); +static void sub_80F3FAC(void); +static void sub_80F3FF0(void); +static bool8 sub_80F4024(void); +static void sub_80F42C4(u8*); +static void sub_80F4394(void); +u8 *sub_80F6514(u8*, u16, u8); +static u8 *sub_80F443C(u8 *, u16); extern void sub_80F0900(void); -extern void sub_80F443C(u8 *, u16); extern void sub_80F01A4(void); extern void sub_80EFD3C(void); extern void sub_8095C8C(); @@ -357,8 +367,6 @@ extern bool8 sub_80F6E9C(); extern bool8 sub_80F6ED4(); extern bool8 sub_80F70FC(); extern void sub_80F708C(u32); -extern void sub_80F4394(); -extern void sub_80F42C4(); extern void sub_80F6F10(); static extern void sub_80F15A8(void); extern void sub_80F6A4C(); @@ -386,8 +394,6 @@ extern bool8 sub_80EF874(void); extern bool8 sub_80F6250(); extern void sub_80F6208(); extern void sub_80F6C20(); -extern void sub_80F3FF0(); -extern bool8 sub_80F4024(); extern void sub_80EF248(u8); extern bool8 sub_80EF284(u8); extern void sub_80EF428(u8, u8); @@ -7306,7 +7312,7 @@ void sub_80F3698(void) { struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC]; gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9] = gUnknown_083DFEC4->unk76B0.markings; - sub_80F4548(var0->unk1, var0->partyIdx, gUnknown_083DFEC4->unk76B0.markings); + SetMonMarkings(var0->unk1, var0->partyIdx, gUnknown_083DFEC4->unk76B0.markings); sub_80F7470(); } @@ -7635,7 +7641,7 @@ void sub_80F3DDC(struct Sprite *sprite) } } -void sub_80F3E04(struct Sprite *sprite) +static void sub_80F3E04(struct Sprite *sprite) { if (sprite->animEnded) { @@ -7644,7 +7650,7 @@ void sub_80F3E04(struct Sprite *sprite) } } -void sub_80F3E24(struct Sprite *sprite) +static void sub_80F3E24(struct Sprite *sprite) { if (gUnknown_083DFEC4->unk8768) { @@ -7661,3 +7667,484 @@ void sub_80F3E24(struct Sprite *sprite) sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104; } } + +static void sub_80F3E9C(struct Sprite *sprite) +{ + if (sprite->data[1]) + { + if (--sprite->data[1]) + return; + + SeekSpriteAnim(sprite, 0); + sprite->invisible = 0; + } + + sub_80F3E24(sprite); + if (sprite->animEnded) + { + sprite->invisible = 1; + if (sprite->data[3] == sprite->data[2]) + { + if (sprite->data[3] == 9) + { + sub_80F3FAC(); + sprite->callback = sub_80F3E04; + } + else + { + sprite->callback = sub_80F3DDC; + } + } + else + { + sprite->callback = SpriteCallbackDummy; + } + } +} + +static void sub_80F3F20(u8 arg0, u8 arg1) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (gUnknown_083DFEC4->unk8800[i]) + { + gUnknown_083DFEC4->unk8800[i]->data[0] = i; + gUnknown_083DFEC4->unk8800[i]->data[1] = i * 16 + 1; + gUnknown_083DFEC4->unk8800[i]->data[2] = arg0; + gUnknown_083DFEC4->unk8800[i]->data[3] = i; + + if (!arg1 || arg0 != 9) + { + gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E9C; + } + else + { + sub_80F3E24(gUnknown_083DFEC4->unk8800[i]); + sub_80F3FAC(); + gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E04; + gUnknown_083DFEC4->unk8800[i]->invisible = 0; + } + } + } +} + +static void sub_80F3FAC(void) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (gUnknown_083DFEC4->unk8800[i]) + { + SeekSpriteAnim(gUnknown_083DFEC4->unk8800[i], 0); + gUnknown_083DFEC4->unk8800[i]->invisible = 0; + } + } +} + +static void sub_80F3FF0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F4024()); +} + +static bool8 sub_80F4024(void) +{ + u8 paletteIndex; + u8 spriteId; + struct SpritePalette spritePalette; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gUnknown_083E329C, gUnknown_083DFEC4->unk131E4); + break; + case 1: + { + struct SpriteSheet spriteSheet = { + .data = gUnknown_083DFEC4->unk131E4, + .size = sizeof(gUnknown_083DFEC4->unk131E4), + .tag = 0x18, + }; + LoadSpriteSheet(&spriteSheet); + break; + } + case 2: + spritePalette = gUnknown_083E4818; + LoadSpritePalette(&spritePalette); + paletteIndex = IndexOfSpritePaletteTag(0x10); + gUnknown_083DFEC4->unk308 = -3 & ~(1 << (paletteIndex + 0x10)); + break; + case 3: + spriteId = CreateSprite(&gSpriteTemplate_83E4850, 218, 14, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk6D98 = &gSprites[spriteId]; + gUnknown_083DFEC4->unk6D98->data[0] = 0; + } + else + { + gUnknown_083DFEC4->unk6D98 = NULL; + } + + gUnknown_083DFEC4->unk306++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +void sub_80F4138(struct Sprite *sprite) +{ + sprite->pos2.y = -gUnknown_083DFEC4->unk030C; + if (sprite->pos2.y <= -32) + { + if (sprite->data[0] == 0) + { + sprite->invisible = 1; + sprite->data[0] = 1; + } + } + else + { + if (sprite->data[0] == 1) + { + sprite->invisible = 0; + sprite->data[0] = 0; + } + } +} + +#ifdef NONMATCHING +// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function. +void sub_80F4194(u8 *arg0, u8 *text) +{ + u8 i; + u8 *tileBuffer; + u32 *tileBuf2; + + tileBuffer = gUnknown_083DFEC8; + DmaFill16(3, 0x1111, tileBuffer, 0x280); + DmaFill16Defvars(3, 0x1111, 0x400 + tileBuffer, 0x280); + Text_InitWindow8004E3C(&gWindowTemplate_81E70F0, tileBuffer, text); + + DmaClear16(3, tileBuffer + 0x220, 0x60); + DmaClear16(3, tileBuffer + 0x620, 0x60); + + tileBuf2 = (int *)tileBuffer + 0x80; + tileBuf2[0] &= 0x0FFFFFFF; + tileBuf2[1] &= 0x0FFFFFFF; + tileBuf2[2] &= 0x0FFFFFFF; + tileBuf2[3] &= 0x0FFFFFFF; + tileBuf2[4] &= 0x0FFFFFFF; + tileBuf2[5] &= 0x0FFFFFFF; + tileBuf2[6] &= 0x0FFFFFFF; + tileBuf2[7] &= 0x0FFFFFFF; + + tileBuf2 = (int *)tileBuffer + 0x180; + tileBuf2[0] &= 0x0FFFFFFF; + tileBuf2[1] &= 0x0FFFFFFF; + tileBuf2[2] &= 0x0FFFFFFF; + tileBuf2[3] &= 0x0FFFFFFF; + tileBuf2[4] &= 0x0FFFFFFF; + tileBuf2[5] &= 0x0FFFFFFF; + tileBuf2[6] &= 0x0FFFFFFF; + tileBuf2[7] &= 0x0FFFFFFF; + + for (i = 0; i < 5; i++) + { + DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128); + DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128); + } +} +#else +NAKED +void sub_80F4194(u8 *arg0, u8 *text) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + adds r7, r0, 0\n\ + adds r2, r1, 0\n\ + ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\ + ldr r6, [r0] @ r6 = tileBuffer\n\ + mov r0, sp \n\ + ldr r1, _080F42A8 @ =0x00001111\n\ + adds r5, r1, 0\n\ + strh r5, [r0]\n\ + ldr r4, _080F42AC @ =0x040000d4\n\ + str r0, [r4]\n\ + str r6, [r4, 0x4]\n\ + ldr r3, _080F42B0 @ =0x81000140\n\ + str r3, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + adds r1, r6, r0\n\ + mov r0, sp\n\ + strh r5, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + str r3, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\ + adds r1, r6, 0\n\ + bl Text_InitWindow8004E3C\n\ + movs r3, 0x88\n\ + lsls r3, 2\n\ + adds r1, r6, r3\n\ + mov r0, sp\n\ + movs r3, 0\n\ + strh r3, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + ldr r2, _080F42B8 @ =0x81000030\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r0, 0xC4\n\ + lsls r0, 3\n\ + adds r1, r6, r0\n\ + mov r0, sp\n\ + strh r3, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r1, 0x80\n\ + lsls r1, 2\n\ + adds r2, r6, r1\n\ + ldr r0, [r2]\n\ + ldr r1, _080F42BC @ =0x0fffffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, [r2, 0x4]\n\ + ands r0, r1\n\ + str r0, [r2, 0x4]\n\ + ldr r0, [r2, 0x8]\n\ + ands r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0xC]\n\ + ands r0, r1\n\ + str r0, [r2, 0xC]\n\ + ldr r0, [r2, 0x10]\n\ + ands r0, r1\n\ + str r0, [r2, 0x10]\n\ + ldr r0, [r2, 0x14]\n\ + ands r0, r1\n\ + str r0, [r2, 0x14]\n\ + ldr r0, [r2, 0x18]\n\ + ands r0, r1\n\ + str r0, [r2, 0x18]\n\ + ldr r0, [r2, 0x1C]\n\ + ands r0, r1\n\ + str r0, [r2, 0x1C]\n\ + movs r3, 0xC0\n\ + lsls r3, 3\n\ + adds r2, r6, r3\n\ + ldr r0, [r2]\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, [r2, 0x4]\n\ + ands r0, r1\n\ + str r0, [r2, 0x4]\n\ + ldr r0, [r2, 0x8]\n\ + ands r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0xC]\n\ + ands r0, r1\n\ + str r0, [r2, 0xC]\n\ + ldr r0, [r2, 0x10]\n\ + ands r0, r1\n\ + str r0, [r2, 0x10]\n\ + ldr r0, [r2, 0x14]\n\ + ands r0, r1\n\ + str r0, [r2, 0x14]\n\ + ldr r0, [r2, 0x18]\n\ + ands r0, r1\n\ + str r0, [r2, 0x18]\n\ + ldr r0, [r2, 0x1C]\n\ + ands r0, r1\n\ + str r0, [r2, 0x1C]\n\ + movs r1, 0\n\ + ldr r2, _080F42C0 @ =0x80000040\n\ +_080F4268:\n\ + lsls r0, r1, 7\n\ + adds r0, r6, r0\n\ + str r0, [r4]\n\ + lsls r0, r1, 8\n\ + adds r0, r7, r0\n\ + str r0, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + lsls r0, r1, 7\n\ + movs r3, 0x80\n\ + lsls r3, 3\n\ + adds r0, r3\n\ + adds r0, r6, r0\n\ + str r0, [r4]\n\ + lsls r0, r1, 3\n\ + adds r0, 0x4\n\ + lsls r0, 5\n\ + adds r0, r7, r0\n\ + str r0, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x4\n\ + bls _080F4268\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080F42A4: .4byte gUnknown_083DFEC8\n\ +_080F42A8: .4byte 0x00001111\n\ +_080F42AC: .4byte 0x040000d4\n\ +_080F42B0: .4byte 0x81000140\n\ +_080F42B4: .4byte gWindowTemplate_81E70F0\n\ +_080F42B8: .4byte 0x81000030\n\ +_080F42BC: .4byte 0x0fffffff\n\ +_080F42C0: .4byte 0x80000040\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_80F42C4(u8 *arg0) +{ + u16 i, tileOffset; + u8 spriteId; + struct SpriteSheet spriteSheet = { + .data = gUnknown_083DFEC4->unkD1E4[0], + .size = 0x500, + .tag = 0x1A, + }; + + sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0); + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&gUnknown_083E4868); + + tileOffset = 0; + for (i = 0; i < 5; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4878, i * 32 + 113, 16, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.tileNum += tileOffset; + gUnknown_083DFEC4->unkCED4[i] = &gSprites[spriteId]; + } + else + { + gUnknown_083DFEC4->unkCED4[i] = NULL; + } + + tileOffset += 8; + } +} + +static void sub_80F4394(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + if (gUnknown_083DFEC4->unkCED4[i]) + DestroySprite(gUnknown_083DFEC4->unkCED4[i]); + } + + FreeSpriteTilesByTag(0x1A); + FreeSpritePaletteByTag(0x12); +} + +void sub_80F43D4(u8 *arg0) +{ + u16 tile; + + sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0); + tile = GetSpriteTileStartByTag(0x1A); + if (tile != 0xFFFF) + DmaCopy32Defvars(3, gUnknown_083DFEC4->unkD1E4[0], (void *)(VRAM + 0x10000 + (tile * 32)), 0x500); +} + +static u8 *sub_80F4428(u8 *arg0, u16 arg1, u8 arg2) +{ + return sub_80F6514(arg0, arg1, arg2); +} + +static u8 *sub_80F443C(u8 *arg0, u16 arg1) +{ + return AlignInt1InMenuWindow(StringCopy(arg0, gOtherText_Number), arg1, 56, 1); +} + +static u8 *sub_80F445C(u8 *arg0, u16 arg1) +{ + u8 *buffer = AlignInt1InMenuWindow(arg0, arg1, 23, 1); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x11; + buffer[2] = 1; + buffer += 3; + buffer[0] = CHAR_SLASH; + buffer += 1; + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x11; + buffer[2] = 1; + buffer += 3; + buffer = AlignInt1InMenuWindow(buffer, gUnknown_083DFEC4->unk8774 + 1, 50, 1); + return buffer; +} + +int sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text) +{ + if (box == 14) + { + if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME) + return GetMonData(&gPlayerParty[monIndex], monDataField, text); + else + return GetMonData(&gPlayerParty[monIndex], monDataField); + } + else + { + if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME) + return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField, text); + else + return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField); + } +} + +static void SetMonMarkings(u16 box, u16 monIndex, u8 markings) +{ + if (box == 14) + SetMonData(&gPlayerParty[monIndex], MON_DATA_MARKINGS, &markings); + else + SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings); +} + +void sub_80F45A0(s16 arg0, u8 arg1) +{ + u8 box; + u8 var0 = gUnknown_083DFEC4->unk893c[arg0].unk4; + if (var0) + { + sub_80F4428(gUnknown_083DFEC4->unk8829[arg1], arg0, 0); + box = gUnknown_083DFEC4->unk893c[arg0].unk1; + if (box == 14) + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gOtherText_InParty, 64, 0); + else + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gPokemonStorage.boxNames[box], 64, 0); + + gUnknown_083DFEC4->unk8937[arg1] = 1; + } + else + { + AlignStringInMenuWindow(gUnknown_083DFEC4->unk8829[arg1], gEmptyString_81E72B0, 104, 0); + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gEmptyString_81E72B0, 64, 0); + gUnknown_083DFEC4->unk8937[arg1] = var0; + } +} |