diff options
author | Raúl Peñacoba <raul.mikaop.zelda@gmail.com> | 2017-08-03 11:57:53 +0200 |
---|---|---|
committer | Raúl Peñacoba <raul.mikaop.zelda@gmail.com> | 2017-08-03 11:57:53 +0200 |
commit | 00116b858033312ee9f00d85d72c5a9d421faf14 (patch) | |
tree | beaecc9e290c979659bef8e3732a603d3d36c81c | |
parent | bb0cad7c072703f5a540e8c22c8e137267331f4d (diff) |
decompiled some functions
-rw-r--r-- | asm/pokenav.s | 962 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/pokenav_after.c (renamed from src/pokenav.c) | 0 | ||||
-rw-r--r-- | src/pokenav_before.c | 611 |
4 files changed, 613 insertions, 963 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index cb6a40450..359dccaf6 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -6,968 +6,6 @@ .text - thumb_func_start sub_80EBA5C -sub_80EBA5C: @ 80EBA5C - push {lr} - ldr r0, _080EBA74 @ =gMain - ldr r2, _080EBA78 @ =0x0000043c - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xE - bhi _080EBABC - lsls r0, 2 - ldr r1, _080EBA7C @ =_080EBA80 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EBA74: .4byte gMain -_080EBA78: .4byte 0x0000043c -_080EBA7C: .4byte _080EBA80 - .align 2, 0 -_080EBA80: - .4byte _080EBAC0 - .4byte _080EBB08 - .4byte _080EBB10 - .4byte _080EBB16 - .4byte _080EBB1C - .4byte _080EBB22 - .4byte _080EBB28 - .4byte _080EBB2E - .4byte _080EBB3E - .4byte _080EBB4C - .4byte _080EBB5C - .4byte _080EBB6C - .4byte _080EBB7C - .4byte _080EBB90 - .4byte _080EBBA0 -_080EBABC: - movs r0, 0 - strb r0, [r1] -_080EBAC0: - bl is_c1_link_related_active - ldr r3, _080EBAF0 @ =0x02000000 - ldr r2, _080EBAF4 @ =0x00006dac - adds r1, r3, r2 - strb r0, [r1] - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080EBBC0 - ldr r1, _080EBAF8 @ =0x00006dab - adds r0, r3, r1 - strb r2, [r0] - ldr r1, _080EBAFC @ =gMain - ldr r2, _080EBB00 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _080EBB04 @ =sub_80EBBE8 - bl SetMainCallback2 - b _080EBBC0 - .align 2, 0 -_080EBAF0: .4byte 0x02000000 -_080EBAF4: .4byte 0x00006dac -_080EBAF8: .4byte 0x00006dab -_080EBAFC: .4byte gMain -_080EBB00: .4byte 0x0000043c -_080EBB04: .4byte sub_80EBBE8 -_080EBB08: - movs r0, 0 - bl SetVBlankCallback - b _080EBBC0 -_080EBB10: - bl ResetPaletteFade - b _080EBBC0 -_080EBB16: - bl ResetSpriteData - b _080EBBC0 -_080EBB1C: - bl FreeAllSpritePalettes - b _080EBBC0 -_080EBB22: - bl ResetTasks - b _080EBBC0 -_080EBB28: - bl remove_some_task - b _080EBBC0 -_080EBB2E: - bl sub_80F1A90 - ldr r1, _080EBB44 @ =gMain - ldr r0, _080EBB48 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080EBB3E: - bl sub_80F1AC4 - b _080EBB80 - .align 2, 0 -_080EBB44: .4byte gMain -_080EBB48: .4byte 0x0000043c -_080EBB4C: - bl sub_80F2688 - ldr r1, _080EBB64 @ =gMain - ldr r2, _080EBB68 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080EBB5C: - bl sub_80F26BC - b _080EBB80 - .align 2, 0 -_080EBB64: .4byte gMain -_080EBB68: .4byte 0x0000043c -_080EBB6C: - bl sub_80F36F0 - ldr r1, _080EBB88 @ =gMain - ldr r0, _080EBB8C @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080EBB7C: - bl sub_80F3724 -_080EBB80: - lsls r0, 24 - cmp r0, 0 - bne _080EBBCC - b _080EBBC0 - .align 2, 0 -_080EBB88: .4byte gMain -_080EBB8C: .4byte 0x0000043c -_080EBB90: - bl sub_80EBC10 - ldr r0, _080EBB9C @ =sub_80EBDD8 - bl sub_80EBDBC - b _080EBBC0 - .align 2, 0 -_080EBB9C: .4byte sub_80EBDD8 -_080EBBA0: - ldr r0, _080EBBD0 @ =0x02000000 - ldr r1, _080EBBD4 @ =0x00006dab - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x6E - bl PlaySE - ldr r0, _080EBBD8 @ =sub_80EBD90 - bl SetMainCallback2 - ldr r0, _080EBBDC @ =sub_80EBD18 - bl SetVBlankCallback - bl sub_80F1A74 -_080EBBC0: - ldr r1, _080EBBE0 @ =gMain - ldr r2, _080EBBE4 @ =0x0000043c - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080EBBCC: - pop {r0} - bx r0 - .align 2, 0 -_080EBBD0: .4byte 0x02000000 -_080EBBD4: .4byte 0x00006dab -_080EBBD8: .4byte sub_80EBD90 -_080EBBDC: .4byte sub_80EBD18 -_080EBBE0: .4byte gMain -_080EBBE4: .4byte 0x0000043c - thumb_func_end sub_80EBA5C - - thumb_func_start sub_80EBBE8 -sub_80EBBE8: @ 80EBBE8 - push {r4,lr} - ldr r0, _080EBC08 @ =0x02000000 - ldr r2, _080EBC0C @ =0x00006dab - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _080EBC02 - adds r4, r1, 0 -_080EBBF8: - bl sub_80EBA5C - ldrb r0, [r4] - cmp r0, 0 - beq _080EBBF8 -_080EBC02: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EBC08: .4byte 0x02000000 -_080EBC0C: .4byte 0x00006dab - thumb_func_end sub_80EBBE8 - - thumb_func_start sub_80EBC10 -sub_80EBC10: @ 80EBC10 - push {r4-r7,lr} - ldr r1, _080EBC7C @ =gKeyRepeatStartDelay - movs r0, 0x14 - strh r0, [r1] - bl CalculatePlayerPartyCount - ldr r2, _080EBC80 @ =0x02000000 - ldr r1, _080EBC84 @ =0x00008828 - adds r3, r2, r1 - movs r1, 0 - strb r0, [r3] - ldr r3, _080EBC88 @ =0x00006ddc - adds r0, r2, r3 - strb r1, [r0] - ldr r3, _080EBC8C @ =0x00009344 - adds r0, r2, r3 - strb r1, [r0] - ldr r3, _080EBC90 @ =0x00008768 - adds r0, r2, r3 - str r1, [r0] - ldr r3, _080EBC94 @ =0x0000ced0 - adds r0, r2, r3 - str r1, [r0] - movs r3, 0 - ldr r0, _080EBC98 @ =0x00008fff - adds r7, r2, r0 - mov r12, r2 - movs r6, 0 - ldr r5, _080EBC9C @ =0x00009040 - movs r4, 0x9B -_080EBC4C: - adds r0, r3, r7 - strb r6, [r0] - lsls r1, r3, 2 - adds r1, r2 - adds r0, r1, r5 - strh r4, [r0] - ldr r0, _080EBCA0 @ =0x00009042 - adds r1, r0 - movs r0, 0x5B - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _080EBC4C - ldr r1, _080EBCA4 @ =0x00006e95 - add r1, r12 - movs r0, 0 - strb r0, [r1] - bl sub_80EBCA8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EBC7C: .4byte gKeyRepeatStartDelay -_080EBC80: .4byte 0x02000000 -_080EBC84: .4byte 0x00008828 -_080EBC88: .4byte 0x00006ddc -_080EBC8C: .4byte 0x00009344 -_080EBC90: .4byte 0x00008768 -_080EBC94: .4byte 0x0000ced0 -_080EBC98: .4byte 0x00008fff -_080EBC9C: .4byte 0x00009040 -_080EBCA0: .4byte 0x00009042 -_080EBCA4: .4byte 0x00006e95 - thumb_func_end sub_80EBC10 - - thumb_func_start sub_80EBCA8 -sub_80EBCA8: @ 80EBCA8 - push {r4,lr} - ldr r4, _080EBCDC @ =0x02000000 - ldr r0, _080EBCE0 @ =0x00006db2 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _080EBCE4 @ =0x00006db3 - adds r1, r4, r0 - movs r0, 0x2 - strb r0, [r1] - ldr r0, _080EBCE8 @ =0x00006db4 - adds r1, r4, r0 - movs r0, 0x3 - strb r0, [r1] - ldr r0, _080EBCEC @ =0x0000083b - bl FlagGet - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080EBCF4 - ldr r0, _080EBCF0 @ =0x00006db5 - adds r1, r4, r0 - movs r0, 0x4 - strb r0, [r1] - b _080EBCFA - .align 2, 0 -_080EBCDC: .4byte 0x02000000 -_080EBCE0: .4byte 0x00006db2 -_080EBCE4: .4byte 0x00006db3 -_080EBCE8: .4byte 0x00006db4 -_080EBCEC: .4byte 0x0000083b -_080EBCF0: .4byte 0x00006db5 -_080EBCF4: - ldr r1, _080EBD0C @ =0x00006db5 - adds r0, r4, r1 - strb r2, [r0] -_080EBCFA: - ldr r0, _080EBD10 @ =0x02000000 - ldr r1, _080EBD14 @ =0x00006db6 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EBD0C: .4byte 0x00006db5 -_080EBD10: .4byte 0x02000000 -_080EBD14: .4byte 0x00006db6 - thumb_func_end sub_80EBCA8 - - thumb_func_start sub_80EBD18 -sub_80EBD18: @ 80EBD18 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_80F1FF0 - pop {r0} - bx r0 - thumb_func_end sub_80EBD18 - - thumb_func_start sub_80EBD30 -sub_80EBD30: @ 80EBD30 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl UpdateRegionMapVideoRegs - bl sub_80EFE7C - pop {r0} - bx r0 - thumb_func_end sub_80EBD30 - - thumb_func_start sub_80EBD4C -sub_80EBD4C: @ 80EBD4C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_80F5BF0 - bl sub_8089668 - pop {r0} - bx r0 - thumb_func_end sub_80EBD4C - - thumb_func_start sub_80EBD68 -sub_80EBD68: @ 80EBD68 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_80F6F64 - pop {r0} - bx r0 - thumb_func_end sub_80EBD68 - - thumb_func_start sub_80EBD80 -sub_80EBD80: @ 80EBD80 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - pop {r0} - bx r0 - thumb_func_end sub_80EBD80 - - thumb_func_start sub_80EBD90 -sub_80EBD90: @ 80EBD90 - push {lr} - ldr r0, _080EBDB8 @ =0x02000000 - movs r1, 0xC0 - lsls r1, 2 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - bl sub_80F19FC - pop {r0} - bx r0 - .align 2, 0 -_080EBDB8: .4byte 0x02000000 - thumb_func_end sub_80EBD90 - - thumb_func_start sub_80EBDBC -sub_80EBDBC: @ 80EBDBC - ldr r2, _080EBDD4 @ =0x02000000 - movs r3, 0xC0 - lsls r3, 2 - adds r1, r2, r3 - str r0, [r1] - movs r0, 0xC1 - lsls r0, 2 - adds r1, r2, r0 - movs r0, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_080EBDD4: .4byte 0x02000000 - thumb_func_end sub_80EBDBC - - thumb_func_start sub_80EBDD8 -sub_80EBDD8: @ 80EBDD8 - push {lr} - sub sp, 0x4 - ldr r1, _080EBDF8 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0x11 - bls _080EBDEE - b _080EC000 -_080EBDEE: - lsls r0, 2 - ldr r1, _080EBDFC @ =_080EBE00 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EBDF8: .4byte 0x02000000 -_080EBDFC: .4byte _080EBE00 - .align 2, 0 -_080EBE00: - .4byte _080EBE48 - .4byte _080EBE80 - .4byte _080EBE92 - .4byte _080EBEAC - .4byte _080EBEC0 - .4byte _080EBED2 - .4byte _080EBEF0 - .4byte _080EBF04 - .4byte _080EBF18 - .4byte _080EBF2C - .4byte _080EBF48 - .4byte _080EBF54 - .4byte _080EBF74 - .4byte _080EBF88 - .4byte _080EBFA0 - .4byte _080EBFB4 - .4byte _080EBFD0 - .4byte _080EBFE8 -_080EBE48: - movs r0, 0 - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r0, 0 - strh r0, [r1] - ldr r1, _080EBE74 @ =0x02000000 - ldr r3, _080EBE78 @ =0x00006ddc - adds r0, r1, r3 - ldrb r2, [r0] - subs r3, 0x2F - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _080EBE7C @ =0x00006dae - adds r2, r1, r0 - movs r0, 0x5 - strb r0, [r2] - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EBFDC - .align 2, 0 -_080EBE74: .4byte 0x02000000 -_080EBE78: .4byte 0x00006ddc -_080EBE7C: .4byte 0x00006dae -_080EBE80: - bl sub_80F3FF0 - ldr r1, _080EBEA8 @ =0x02000000 - movs r3, 0xC1 - lsls r3, 2 - adds r1, r3 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EBE92: - bl sub_80F4024 - lsls r0, 24 - cmp r0, 0 - beq _080EBE9E - b _080EC000 -_080EBE9E: - ldr r1, _080EBEA8 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EBFDC - .align 2, 0 -_080EBEA8: .4byte 0x02000000 -_080EBEAC: - bl sub_80F2598 - ldr r1, _080EBEBC @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EBFDC - .align 2, 0 -_080EBEBC: .4byte 0x02000000 -_080EBEC0: - bl sub_80EEE20 - ldr r1, _080EBEEC @ =0x02000000 - movs r3, 0xC1 - lsls r3, 2 - adds r1, r3 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EBED2: - bl sub_80EEE54 - lsls r0, 24 - cmp r0, 0 - beq _080EBEDE - b _080EC000 -_080EBEDE: - bl sub_80EEE08 - ldr r1, _080EBEEC @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EBFDC - .align 2, 0 -_080EBEEC: .4byte 0x02000000 -_080EBEF0: - movs r0, 0 - bl sub_80EF248 - ldr r1, _080EBF14 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EBF04: - movs r0, 0 - bl sub_80EF284 - lsls r0, 24 - cmp r0, 0 - beq _080EBF12 - b _080EC000 -_080EBF12: - b _080EBFD4 - .align 2, 0 -_080EBF14: .4byte 0x02000000 -_080EBF18: - movs r0, 0 - bl sub_80F1B8C - ldr r1, _080EBF44 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EBF2C: - movs r0, 0 - bl sub_80F1BC8 - lsls r0, 24 - cmp r0, 0 - bne _080EC000 - ldr r1, _080EBF44 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EBFDC - .align 2, 0 -_080EBF44: .4byte 0x02000000 -_080EBF48: - ldr r0, _080EBF50 @ =sub_80EBD18 - bl SetVBlankCallback - b _080EBFD4 - .align 2, 0 -_080EBF50: .4byte sub_80EBD18 -_080EBF54: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _080EBF70 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EBFDC - .align 2, 0 -_080EBF70: .4byte 0x02000000 -_080EBF74: - movs r0, 0 - bl sub_80EED2C - ldr r1, _080EBF84 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EBFDC - .align 2, 0 -_080EBF84: .4byte 0x02000000 -_080EBF88: - ldr r0, _080EBF9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EC000 - movs r3, 0xC1 - lsls r3, 2 - adds r1, r2, r3 - b _080EBFDC - .align 2, 0 -_080EBF9C: .4byte gPaletteFade -_080EBFA0: - movs r0, 0 - bl sub_80F2C80 - ldr r1, _080EBFCC @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EBFB4: - movs r0, 0 - bl sub_80F2CBC - lsls r0, 24 - cmp r0, 0 - bne _080EC000 - ldr r1, _080EBFCC @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - b _080EBFDC - .align 2, 0 -_080EBFCC: .4byte 0x02000000 -_080EBFD0: - bl sub_80F1DF0 -_080EBFD4: - ldr r1, _080EBFE4 @ =0x02000000 - movs r3, 0xC1 - lsls r3, 2 - adds r1, r3 -_080EBFDC: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _080EC000 - .align 2, 0 -_080EBFE4: .4byte 0x02000000 -_080EBFE8: - bl sub_80F1E50 - lsls r0, 24 - cmp r0, 0 - bne _080EC000 - movs r0, 0 - movs r1, 0 - bl sub_80EF428 - ldr r0, _080EC008 @ =sub_80EC268 - bl sub_80EBDBC -_080EC000: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080EC008: .4byte sub_80EC268 - thumb_func_end sub_80EBDD8 - - thumb_func_start sub_80EC00C -sub_80EC00C: @ 80EC00C - push {r4,lr} - sub sp, 0x4 - ldr r1, _080EC02C @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r0, r1, r2 - ldrh r0, [r0] - adds r4, r1, 0 - cmp r0, 0xD - bls _080EC022 - b _080EC1FA -_080EC022: - lsls r0, 2 - ldr r1, _080EC030 @ =_080EC034 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EC02C: .4byte 0x02000000 -_080EC030: .4byte _080EC034 - .align 2, 0 -_080EC034: - .4byte _080EC06C - .4byte _080EC0C0 - .4byte _080EC0D4 - .4byte _080EC0F0 - .4byte _080EC104 - .4byte _080EC120 - .4byte _080EC12A - .4byte _080EC154 - .4byte _080EC168 - .4byte _080EC180 - .4byte _080EC194 - .4byte _080EC1A8 - .4byte _080EC1C4 - .4byte _080EC1DC -_080EC06C: - bl sub_80EEF78 - lsls r0, 24 - cmp r0, 0 - beq _080EC078 - b _080EC1FA -_080EC078: - ldr r0, _080EC0AC @ =sub_80EBD80 - bl SetVBlankCallback - bl sub_80EED1C - ldr r4, _080EC0B0 @ =0x02000000 - ldr r1, _080EC0B4 @ =0x00006ddc - adds r0, r4, r1 - ldrb r1, [r0] - ldr r2, _080EC0B8 @ =0x00006dad - adds r0, r4, r2 - strb r1, [r0] - ldr r0, _080EC0BC @ =0x00006dae - adds r1, r4, r0 - movs r0, 0x5 - strb r0, [r1] - bl sub_80EEE08 - movs r1, 0xC1 - lsls r1, 2 - adds r4, r1 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080EC1FA - .align 2, 0 -_080EC0AC: .4byte sub_80EBD80 -_080EC0B0: .4byte 0x02000000 -_080EC0B4: .4byte 0x00006ddc -_080EC0B8: .4byte 0x00006dad -_080EC0BC: .4byte 0x00006dae -_080EC0C0: - movs r0, 0 - bl sub_80EF248 - ldr r1, _080EC0EC @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EC0D4: - movs r0, 0 - bl sub_80EF284 - lsls r0, 24 - cmp r0, 0 - beq _080EC0E2 - b _080EC1FA -_080EC0E2: - ldr r1, _080EC0EC @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EC1D0 - .align 2, 0 -_080EC0EC: .4byte 0x02000000 -_080EC0F0: - movs r0, 0 - bl sub_80F1B8C - ldr r1, _080EC11C @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EC104: - movs r0, 0 - bl sub_80F1BC8 - lsls r0, 24 - cmp r0, 0 - beq _080EC112 - b _080EC1FA -_080EC112: - ldr r1, _080EC11C @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EC1D0 - .align 2, 0 -_080EC11C: .4byte 0x02000000 -_080EC120: - bl sub_8055870 - cmp r0, 0 - bne _080EC1FA - b _080EC1C8 -_080EC12A: - movs r1, 0xC2 - lsls r1, 2 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x1 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080EC150 @ =sub_80EBD18 - bl SetVBlankCallback - movs r2, 0xC1 - lsls r2, 2 - adds r1, r4, r2 - b _080EC1D0 - .align 2, 0 -_080EC150: .4byte sub_80EBD18 -_080EC154: - movs r0, 0 - bl sub_80EED2C - ldr r1, _080EC164 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EC1D0 - .align 2, 0 -_080EC164: .4byte 0x02000000 -_080EC168: - ldr r0, _080EC17C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080EC1FA - movs r2, 0xC1 - lsls r2, 2 - adds r1, r4, r2 - b _080EC1D0 - .align 2, 0 -_080EC17C: .4byte gPaletteFade -_080EC180: - bl sub_80F2598 - ldr r1, _080EC190 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EC1D0 - .align 2, 0 -_080EC190: .4byte 0x02000000 -_080EC194: - movs r0, 0 - bl sub_80F2C80 - ldr r1, _080EC1C0 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EC1A8: - movs r0, 0 - bl sub_80F2CBC - lsls r0, 24 - cmp r0, 0 - bne _080EC1FA - ldr r1, _080EC1C0 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r1, r0 - b _080EC1D0 - .align 2, 0 -_080EC1C0: .4byte 0x02000000 -_080EC1C4: - bl sub_80F1DF0 -_080EC1C8: - ldr r1, _080EC1D8 @ =0x02000000 - movs r2, 0xC1 - lsls r2, 2 - adds r1, r2 -_080EC1D0: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _080EC1FA - .align 2, 0 -_080EC1D8: .4byte 0x02000000 -_080EC1DC: - bl sub_80F1E50 - lsls r0, 24 - cmp r0, 0 - bne _080EC1FA - ldr r0, _080EC204 @ =0x02000000 - ldr r1, _080EC208 @ =0x00006dad - adds r0, r1 - ldrb r1, [r0] - movs r0, 0 - bl sub_80EF428 - ldr r0, _080EC20C @ =sub_80EC268 - bl sub_80EBDBC -_080EC1FA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC204: .4byte 0x02000000 -_080EC208: .4byte 0x00006dad -_080EC20C: .4byte sub_80EC268 - thumb_func_end sub_80EC00C - - thumb_func_start sub_80EC210 -sub_80EC210: @ 80EC210 - push {r4,r5,lr} - ldr r5, _080EC228 @ =0x02000000 - movs r0, 0xC1 - lsls r0, 2 - adds r4, r5, r0 - ldrh r0, [r4] - cmp r0, 0 - beq _080EC22C - cmp r0, 0x1 - beq _080EC24C - b _080EC25C - .align 2, 0 -_080EC228: .4byte 0x02000000 -_080EC22C: - movs r0, 0x1 - bl sub_80F2D04 - ldr r1, _080EC248 @ =0x00006ddc - adds r0, r5, r1 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl sub_80EE9C0 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080EC25C - .align 2, 0 -_080EC248: .4byte 0x00006ddc -_080EC24C: - bl sub_80EEA0C - lsls r0, 24 - cmp r0, 0 - bne _080EC25C - ldr r0, _080EC264 @ =sub_80EC268 - bl sub_80EBDBC -_080EC25C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EC264: .4byte sub_80EC268 - thumb_func_end sub_80EC210 - thumb_func_start sub_80EC268 sub_80EC268: @ 80EC268 push {r4-r6,lr} diff --git a/ld_script.txt b/ld_script.txt index c895c4d06..fda697ff9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -186,8 +186,9 @@ SECTIONS { src/bike.o(.text); asm/easy_chat.o(.text); src/easy_chat.o(.text); + src/pokenav_before.o(.text); asm/pokenav.o(.text); - src/pokenav.o(.text); + src/pokenav_after.o(.text); asm/pokenav.o(.text_80F708C); src/mon_markings.o(.text); src/mauville_old_man.o(.text); diff --git a/src/pokenav.c b/src/pokenav_after.c index 84ed7b14b..84ed7b14b 100644 --- a/src/pokenav.c +++ b/src/pokenav_after.c diff --git a/src/pokenav_before.c b/src/pokenav_before.c new file mode 100644 index 000000000..d0efd2bbd --- /dev/null +++ b/src/pokenav_before.c @@ -0,0 +1,611 @@ +#include "global.h" +#include "main.h" +#include "pokenav.h" +#include "battle.h" +#include "data2.h" +#include "de_rom_8040FE0.h" +#include "string_util.h" +#include "rom4.h" +#include "palette.h" +#include "task.h" +#include "unknown_task.h" +#include "sound.h" +#include "region_map.h" +#include "songs.h" +#include "flags.h" + +struct UnknownPokenav0 { + /* 0x0000 */ u8 fill0000[0x0300]; + /* 0x0300 */ void (*var300)(void); + /* 0x0304 */ u16 var304; + /* 0x0306 */ u8 fill0306; + /* 0x0308 */ u32 var308; + /* 0x030C */ u8 fill030C[0x6a9f]; + /* 0x6dab */ u8 var6dab; + /* 0x6dac */ u8 var6dac; + /* 0x6dad */ u8 var6dad; + /* 0x6dae */ u8 var6dae; + /* 0x6daf */ u8 fill6daf[0x3]; + /* 0x6db2 */ u8 var6db2; + /* 0x6db3 */ u8 fill6db3[0x29]; + /* 0x6ddc */ u8 var6ddc; + /* 0x6ddd */ u8 fill6ddd[0x198b]; + /* 0x8768 */ u32 var8768; + /* 0x876C */ u8 fill876B[0x00bc]; + /* 0x8828 */ u8 var8828; + /* 0x8829 */ u8 fill8829[0x07c0]; + /* 0x8FE8 */ u8 var8fe8; + /* 0x8FE9 */ u8 fill8FE9[0x035B]; + /* 0x9344 */ u8 var9344; + /* 0x9345 */ u8 fill9345[0x3b8b]; + /* 0xced0 */ u32 varCED0; +}; + +struct UnknownPokenav8fff { + /* 0x8fff */ u8 var8fff[5]; + /* 0x9004 */ u8 fill9004[0x6e90]; + /* 0x6e95 */ u8 var6e95; +}; + + +extern u8 ewram[]; +#define ewram0 (*(struct UnknownPokenav0*)(ewram + 0)) +#define ewram8fff (*(struct UnknownPokenav8fff*)(ewram + 0x8fff)) +extern u8 unk_2000000[]; + +extern void sub_80F1A90(); +extern bool8 sub_80F1AC4(); +extern void sub_80F36F0(); +extern bool8 sub_80F3724(); +extern void sub_80EBC10(); +extern void sub_80EBDBC(void (*func)(void)); +extern void sub_80EBBE8(); +extern bool8 sub_80F26BC(void); +extern void sub_80EBDD8(); +extern void sub_80EBD90(); +extern void sub_80EBD18(); +extern void sub_80F1A74(); +extern void sub_80F1FF0(); +extern void sub_80FB260(); +extern void sub_80EFE7C(); +extern void sub_80F5BF0(); +extern void sub_80F6F64(); +extern void _call_via_r0(void (*func)(void)); +extern void sub_80F19FC(); + +void sub_80EBA5C() { + switch (gMain.state) { + default: + gMain.state = 0; + case 0: + ewram0.var6dac = is_c1_link_related_active(); + if (!ewram0.var6dac) { + ewram0.var6dab = 0; + gMain.state++; + SetMainCallback2(&sub_80EBBE8); + break; + } + break; + case 1: + SetVBlankCallback(NULL); + break; + case 2: + ResetPaletteFade(); + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + break; + case 5: + ResetTasks(); + break; + case 6: + remove_some_task(); + break; + case 7: + sub_80F1A90(); + gMain.state++; + case 8: + if (sub_80F1AC4()) return; + break; + case 9: + sub_80F2688(); + gMain.state++; + + case 0xA: + if (sub_80F26BC()) return; + break; + case 0xB: + sub_80F36F0(); + gMain.state++; + case 0xC: + if (sub_80F3724()) return; + break; + case 0xD: + sub_80EBC10(); + sub_80EBDBC(&sub_80EBDD8); + break; + case 0xE: + ewram0.var6dab = 1; + PlaySE(SE_PN_ON); + SetMainCallback2(&sub_80EBD90); + SetVBlankCallback(&sub_80EBD18); + sub_80F1A74(); + break; + } + gMain.state++; +} + +void sub_80EBBE8() { + u8 var1; + if (!ewram0.var6dab) { + var1 = ewram0.var6dab; + do { + sub_80EBA5C(); + var1 = ewram0.var6dab; + } while (!var1); + } +} + +// Falla el acceso a 0x8fff +#if 0 + +u16 gKeyRepeatStartDelay; +void sub_80EBCA8(); + +//void sub_80EBC10() { +// u16 i; +// u16 *unk2; +// gKeyRepeatStartDelay = 0x14; +// unk_2000000[0x8828] = CalculatePlayerPartyCount(); +// unk_2000000[0x6ddc] = unk_2000000[0x9344] = 0; +// *(u32 *)&unk_2000000[0x8768] = 0; +// *(u32 *)&unk_2000000[0xced0] = 0; +// for (i = 0; i <= 4; ++i) { +// unk_2000000[0x8fff + i] = 0; +// unk2 = (u16 *)unk_2000000; +// unk2[i*2 + 0x4820] = 0x9B; +// unk2[i*2 + 0x4821] = 0x5B; +// } +// unk_2000000[0x8fff + 0x6e95] = 0; +// sub_80EBCA8(); +//} +void sub_80EBC10() { + u16 i; + u16 *unk2; + gKeyRepeatStartDelay = 0x14; + ewram0.var8828 = CalculatePlayerPartyCount(); + ewram0.var6ddc = 0; + ewram0.var9344 = 0; + ewram0.var8768 = 0; + ewram0.varCED0 = 0; + for (i = 0; i <= 4; ++i) { + ewram8fff.var8fff[i] = 0; + unk2 = (u16 *)ewram; + unk2[i*2 + 0x4820] = 0x9B; + unk2[i*2 + 0x4821] = 0x5B; + } + ewram8fff.var6e95 = 0; + sub_80EBCA8(); +} + +#else + +__attribute__((naked)) +void sub_80EBC10() { + asm_unified("push {r4-r7,lr}\n\ + ldr r1, _080EBC7C @ =gKeyRepeatStartDelay\n\ + movs r0, 0x14\n\ + strh r0, [r1]\n\ + bl CalculatePlayerPartyCount\n\ + ldr r2, _080EBC80 @ =0x02000000\n\ + ldr r1, _080EBC84 @ =0x00008828\n\ + adds r3, r2, r1\n\ + movs r1, 0\n\ + strb r0, [r3]\n\ + ldr r3, _080EBC88 @ =0x00006ddc\n\ + adds r0, r2, r3\n\ + strb r1, [r0]\n\ + ldr r3, _080EBC8C @ =0x00009344\n\ + adds r0, r2, r3\n\ + strb r1, [r0]\n\ + ldr r3, _080EBC90 @ =0x00008768\n\ + adds r0, r2, r3\n\ + str r1, [r0]\n\ + ldr r3, _080EBC94 @ =0x0000ced0\n\ + adds r0, r2, r3\n\ + str r1, [r0]\n\ + movs r3, 0\n\ + ldr r0, _080EBC98 @ =0x00008fff\n\ + adds r7, r2, r0\n\ + mov r12, r2\n\ + movs r6, 0\n\ + ldr r5, _080EBC9C @ =0x00009040\n\ + movs r4, 0x9B\n\ +_080EBC4C:\n\ + adds r0, r3, r7\n\ + strb r6, [r0]\n\ + lsls r1, r3, 2\n\ + adds r1, r2\n\ + adds r0, r1, r5\n\ + strh r4, [r0]\n\ + ldr r0, _080EBCA0 @ =0x00009042\n\ + adds r1, r0\n\ + movs r0, 0x5B\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x4\n\ + bls _080EBC4C\n\ + ldr r1, _080EBCA4 @ =0x00006e95\n\ + add r1, r12\n\ + movs r0, 0\n\ + strb r0, [r1]\n\ + bl sub_80EBCA8\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080EBC7C: .4byte gKeyRepeatStartDelay\n\ +_080EBC80: .4byte 0x02000000\n\ +_080EBC84: .4byte 0x00008828\n\ +_080EBC88: .4byte 0x00006ddc\n\ +_080EBC8C: .4byte 0x00009344\n\ +_080EBC90: .4byte 0x00008768\n\ +_080EBC94: .4byte 0x0000ced0\n\ +_080EBC98: .4byte 0x00008fff\n\ +_080EBC9C: .4byte 0x00009040\n\ +_080EBCA0: .4byte 0x00009042\n\ +_080EBCA4: .4byte 0x00006e95\n"); +} +#endif + +void sub_80EBCA8() { + unk_2000000[0x6db2] = 1; + unk_2000000[0x6db3] = 2; + unk_2000000[0x6db4] = 3; + if (FlagGet(SYS_RIBBON_GET)) { + unk_2000000[0x6db5] = 4; + } + else { + unk_2000000[0x6db5] = 0; + } + unk_2000000[0x6db6] = 5; +} + +void sub_80EBD18() { + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F1FF0(); +} + +void sub_80EBD30() { + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + UpdateRegionMapVideoRegs(); + sub_80EFE7C(); +} + +void sub_80EBD4C() { + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F5BF0(); + sub_8089668(); +} + +void sub_80EBD68() { + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F6F64(); +} + +void sub_80EBD80() { + LoadOam(); + ProcessSpriteCopyRequests(); +} + +void sub_80EBD90() { + _call_via_r0(ewram0.var300); + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); + sub_80F19FC(); +} + +void sub_80EBDBC(void (*func)(void)) { + ewram0.var300 = func; + ewram0.var304 = 0; +} + +void sub_80F3FF0(); +bool8 sub_80F4024(); +void sub_80F2598(); +void sub_80EEE20(); +bool8 sub_80EEE54(); +void sub_80EEE08(); +void sub_80EF248(); +bool8 sub_80EF284(); +void sub_80F1B8C(); +bool8 sub_80F1BC8(u32 unk); +void sub_80EED2C(); +void sub_80F1DF0(); +bool8 sub_80F1E50(); +void sub_80EF428(); +void sub_80EC268(); + +void sub_80EBDD8() { + switch (ewram0.var304) { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + ewram0.var6dad = ewram0.var6ddc; + ewram0.var6dae = 5; + ewram0.var304++; + break; + case 1: + sub_80F3FF0(); + ewram0.var304++; + case 2: + if (sub_80F4024()) return; + ewram0.var304++; + break; + case 3: + sub_80F2598(); + ewram0.var304++; + break; + case 4: + sub_80EEE20(); + ewram0.var304++; + case 5: + if (sub_80EEE54()) return; + sub_80EEE08(); + ewram0.var304++; + return; + case 6: + sub_80EF248(0); + ewram0.var304++; + case 7: + if (sub_80EF284(0)) return; + ewram0.var304++; + break; + case 8: + sub_80F1B8C(0); + ewram0.var304++; + case 9: + if (sub_80F1BC8(0)) return; + ewram0.var304++; + break; + case 10: + SetVBlankCallback(&sub_80EBD18); + ewram0.var304++; + break; + case 11: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + ewram0.var304++; + return; + case 12: + sub_80EED2C(0); + ewram0.var304++; + return; + case 13: + if (gPaletteFade.active) return; + ewram0.var304++; + return; + case 14: + sub_80F2C80(0); + ewram0.var304++; + case 15: + if (sub_80F2CBC(0)) return; + ewram0.var304++; + break; + case 16: + sub_80F1DF0(); + ewram0.var304++; + return; + case 17: + if (!sub_80F1E50()) { + sub_80EF428(0, 0); + sub_80EBDBC(&sub_80EC268); + } + return; + + } + +} + +bool8 sub_80EEF78(); +void sub_80EED1C(); + +void sub_80EC00C() { + switch (ewram0.var304) { + case 0: + if (!sub_80EEF78()) { + SetVBlankCallback(&sub_80EBD80); + sub_80EED1C(); + ewram0.var6dad = ewram0.var6ddc; + ewram0.var6dae = 5; + sub_80EEE08(); + ewram0.var304++; + } + break; + case 1: + sub_80EF248(0); + ewram0.var304++; + case 2: + if (sub_80EF284(0)) return; + ewram0.var304++; + break; + case 3: + sub_80F1B8C(0); + ewram0.var304++; + case 4: + if (sub_80F1BC8(0)) return; + ewram0.var304++; + break; + case 5: + if (sub_8055870()) return; + ewram0.var304++; + break; + case 6: + BeginNormalPaletteFade(ewram0.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0.var304++; + break; + case 7: + sub_80EED2C(0); + ewram0.var304++; + break; + case 8: + if (gPaletteFade.active) return; + ewram0.var304++; + return; + case 9: + sub_80F2598(); + ewram0.var304++; + break; + case 10: + sub_80F2C80(0); + ewram0.var304++; + case 11: + if (sub_80F2CBC(0)) return; + ewram0.var304++; + return; + case 12: + sub_80F1DF0(); + ewram0.var304++; + return; + case 13: + if (sub_80F1E50()) return; + sub_80EF428(0, ewram0.var6dad); + sub_80EBDBC(&sub_80EC268); + } +} + +void sub_80F2D04(u32); +void sub_80EE9C0(u32, u8, u32); +bool8 sub_80EEA0C(); + +void sub_80EC210() { + switch (ewram0.var304) { + case 0: + sub_80F2D04(1); + sub_80EE9C0(0, ewram0.var6ddc, 0); + ewram0.var304++; + break; + case 1: + if (sub_80EEA0C()) return; + sub_80EBDBC(&sub_80EC268); + } +} + +#if 0 +bool8 sub_80EEC10(); +bool8 sub_80F6250(); +void sub_80EED9C(); +void sub_80F6208(); +void sub_80EDB88(); +void sub_80EC4A0(); +void sub_80EC81C(); +void sub_80F208C(); +void sub_80EE96C(); + +void sub_80EC268() { + if (ewram0.var304 != 3) { + // bls -> bgt + if (ewram0.var304 > 3) { + if (ewram0.var304 != 6) { + if (ewram0.var304 > 6) { + if (ewram0.var304 != 0xFF) return; + if (sub_80EEC10() == 0) { + if (gMain.newKeys == (A_BUTTON | B_BUTTON)) return; + sub_80EF428(0, ewram0.var6dad); + return; + } + PlaySE(0x5); + sub_80EF428(0, ewram0.var6dad); + sub_80EED9C(); + return; + + } + if (ewram0.var304 != 4) return; + if (sub_8055870() != 0) return; + if (ewram0.var8fe8 == 0) { + PlaySE(0x20); + sub_80EF428(0, 5); + ewram0.var304 = 0xFF; + return; + } + PlaySE(0x5); + sub_80EBDBC(&sub_80EDB88); + return; + } + if (ewram0.var304 != 4) return; + if (sub_8055870()) return; + if (!ewram0.var8fe8) { + PlaySE(0x20); + sub_80EF428(0, 5); + ewram0.var304 = 0xFF; + return; + } + PlaySE(5); + sub_80EBDBC(&sub_80EDB88); + return; + } + if (ewram0.var304 != 1) { + if (ewram0.var304 < 1) { + if (ewram0.var304 == 0) { + if (sub_80EEC10() == 0) { + if (gMain.newKeys != A_BUTTON) { + + } + ewram0.var6ddc = ewram0.var6dad; + // TODO arreglar esto + switch (ewram0.var6db2) { + case 1: + PlaySE(5); + sub_80EBDBC(&sub_80EC4A0); + return; + case 2: + PlaySE(5); + sub_80EBDBC(&sub_80EC81C); + return; + case 3: + ewram0.var304 = 6; + return; + case 4: + ewram0.var304 = 2; + return; + case 5: + ewram0.var304 = 1; + return; + } + } + PlaySE(0x5); + sub_80EF428(0, ewram0.var6dad); + sub_80EED9C(); + return; + } + } + sub_80F6208(); + ewram0.var304++; + if (sub_80F6250() != 0) return; + ewram0.var304++; + return; + } + sub_80F208C(); + sub_80EBDBC(&sub_80EE96C); + return; + } + if (sub_80F6250() != 0) return; + ewram0.var304++; + return; +} +#endif |