From 05724d3db1208ffdb867aba5aa9441d538ba9e26 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 16 Nov 2019 19:45:55 -0700 Subject: remove compile errors --- asm/option_menu.s | 1337 ----------------------------------------------------- data/strings.s | 14 +- include/global.h | 10 +- include/strings.h | 11 + ld_script.txt | 2 +- src/option_menu.c | 594 ++++++++++++++++++++++++ sym_ewram.txt | 2 +- 7 files changed, 619 insertions(+), 1351 deletions(-) delete mode 100644 asm/option_menu.s create mode 100644 src/option_menu.c diff --git a/asm/option_menu.s b/asm/option_menu.s deleted file mode 100644 index 3b08810c5..000000000 --- a/asm/option_menu.s +++ /dev/null @@ -1,1337 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_808835C -sub_808835C: @ 808835C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_808835C - - thumb_func_start sub_8088374 -sub_8088374: @ 8088374 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8088374 - - thumb_func_start CB2_OptionsMenuFromStartMenu -CB2_OptionsMenuFromStartMenu: @ 8088388 - push {r4-r6,lr} - ldr r1, _08088418 @ =gMain - ldr r0, [r1, 0x8] - cmp r0, 0 - bne _08088396 - ldr r0, _0808841C @ =CB2_ReturnToStartMenu - str r0, [r1, 0x8] -_08088396: - ldr r4, _08088420 @ =gUnknown_2039620 - movs r0, 0x14 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0, 0x10] - ldr r0, [r4] - strb r1, [r0, 0x12] - ldr r0, [r4] - strb r1, [r0, 0x11] - ldr r2, [r4] - strh r1, [r2, 0xE] - ldr r0, _08088424 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x14] - lsls r0, 29 - lsrs r0, 29 - strh r0, [r2] - ldrb r0, [r1, 0x15] - lsls r0, 29 - lsrs r0, 31 - strh r0, [r2, 0x2] - ldrb r0, [r1, 0x15] - lsls r0, 30 - lsrs r0, 31 - strh r0, [r2, 0x4] - ldrb r0, [r1, 0x15] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r2, 0x6] - ldrb r0, [r1, 0x13] - strh r0, [r2, 0x8] - ldrb r0, [r1, 0x14] - lsrs r0, 3 - strh r0, [r2, 0xA] - movs r3, 0 - adds r6, r4, 0 - ldr r5, _08088428 @ =gUnknown_83CC304 - movs r4, 0 -_080883E6: - ldr r1, [r6] - lsls r0, r3, 1 - adds r2, r1, r0 - ldrh r1, [r2] - adds r0, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - ble _080883FA - strh r4, [r2] -_080883FA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _080883E6 - movs r0, 0xD - bl HelpSystem_SetSomeVariable2 - ldr r0, _0808842C @ =sub_8088454 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088418: .4byte gMain -_0808841C: .4byte CB2_ReturnToStartMenu -_08088420: .4byte gUnknown_2039620 -_08088424: .4byte gSaveBlock2Ptr -_08088428: .4byte gUnknown_83CC304 -_0808842C: .4byte sub_8088454 - thumb_func_end CB2_OptionsMenuFromStartMenu - - thumb_func_start sub_8088430 -sub_8088430: @ 8088430 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_8088430 - - thumb_func_start sub_8088444 -sub_8088444: @ 8088444 - push {lr} - ldr r0, _08088450 @ =sub_8088374 - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_08088450: .4byte sub_8088374 - thumb_func_end sub_8088444 - - thumb_func_start sub_8088454 -sub_8088454: @ 8088454 - push {r4,lr} - ldr r0, _0808846C @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r0, [r0, 0x11] - cmp r0, 0x9 - bhi _080884FA - lsls r0, 2 - ldr r1, _08088470 @ =_08088474 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808846C: .4byte gUnknown_2039620 -_08088470: .4byte _08088474 - .align 2, 0 -_08088474: - .4byte _0808849C - .4byte _080884A2 - .4byte _080884A8 - .4byte _080884AE - .4byte _080884BC - .4byte _080884C2 - .4byte _080884C8 - .4byte _080884CE - .4byte _080884E2 - .4byte _080884F4 -_0808849C: - bl sub_8088430 - b _080884FE -_080884A2: - bl sub_8088530 - b _080884FE -_080884A8: - bl sub_80886D4 - b _080884FE -_080884AE: - bl sub_80886F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08088508 - b _080884FE -_080884BC: - bl sub_8088BD0 - b _080884FE -_080884C2: - bl sub_8088C0C - b _080884FE -_080884C8: - bl sub_8088D8C - b _080884FE -_080884CE: - movs r4, 0 -_080884D0: - adds r0, r4, 0 - bl sub_80889A8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080884D0 - b _080884FE -_080884E2: - ldr r0, _080884F0 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080884FE - .align 2, 0 -_080884F0: .4byte gUnknown_2039620 -_080884F4: - bl sub_8088680 - b _080884FE -_080884FA: - bl sub_8088514 -_080884FE: - ldr r0, _08088510 @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x11] - adds r0, 0x1 - strb r0, [r1, 0x11] -_08088508: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088510: .4byte gUnknown_2039620 - thumb_func_end sub_8088454 - - thumb_func_start sub_8088514 -sub_8088514: @ 8088514 - push {lr} - ldr r0, _08088528 @ =sub_8088780 - movs r1, 0 - bl CreateTask - ldr r0, _0808852C @ =sub_808835C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08088528: .4byte sub_8088780 -_0808852C: .4byte sub_808835C - thumb_func_end sub_8088514 - - thumb_func_start sub_8088530 -sub_8088530: @ 8088530 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08088670 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08088674 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08088556: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08088556 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08088670 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08088678 @ =gUnknown_83CC2D8 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _0808867C @ =gUnknown_83CC2B8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0x50 - movs r1, 0xC1 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x2 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x27 - bl SetGpuReg - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088670: .4byte 0x040000d4 -_08088674: .4byte 0x81000800 -_08088678: .4byte gUnknown_83CC2D8 -_0808867C: .4byte gUnknown_83CC2B8 - thumb_func_end sub_8088530 - - thumb_func_start sub_8088680 -sub_8088680: @ 8088680 - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _080886CC @ =gUnknown_8419E57 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r4, 0xE4 - subs r4, r0 - movs r0, 0x2 - movs r1, 0xFF - bl FillWindowPixelBuffer - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080886D0 @ =gUnknown_83CC360 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080886CC: .4byte gUnknown_8419E57 -_080886D0: .4byte gUnknown_83CC360 - thumb_func_end sub_8088680 - - thumb_func_start sub_80886D4 -sub_80886D4: @ 80886D4 - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - pop {r0} - bx r0 - thumb_func_end sub_80886D4 - - thumb_func_start sub_80886F0 -sub_80886F0: @ 80886F0 - push {lr} - ldr r0, _08088708 @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r1, [r0, 0x12] - cmp r1, 0x1 - beq _0808872E - cmp r1, 0x1 - bgt _0808870C - cmp r1, 0 - beq _08088716 - b _08088768 - .align 2, 0 -_08088708: .4byte gUnknown_2039620 -_0808870C: - cmp r1, 0x2 - beq _0808873A - cmp r1, 0x3 - beq _08088758 - b _08088768 -_08088716: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - b _0808876C -_0808872E: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - b _0808874C -_0808873A: - ldr r0, _08088754 @ =gUnknown_83CC2E4 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xF0 -_0808874C: - movs r2, 0x20 - bl LoadPalette - b _0808876C - .align 2, 0 -_08088754: .4byte gUnknown_83CC2E4 -_08088758: - ldr r1, _08088764 @ =0x000001b3 - movs r0, 0x1 - movs r2, 0x30 - bl sub_814FDA0 - b _0808876C - .align 2, 0 -_08088764: .4byte 0x000001b3 -_08088768: - movs r0, 0x1 - b _08088778 -_0808876C: - ldr r0, _0808877C @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] - movs r0, 0 -_08088778: - pop {r1} - bx r1 - .align 2, 0 -_0808877C: .4byte gUnknown_2039620 - thumb_func_end sub_80886F0 - - thumb_func_start sub_8088780 -sub_8088780: @ 8088780 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080887A0 @ =gUnknown_2039620 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r3, r1, 0 - cmp r0, 0x5 - bls _08088796 - b _080888B6 -_08088796: - lsls r0, 2 - ldr r1, _080887A4 @ =_080887A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080887A0: .4byte gUnknown_2039620 -_080887A4: .4byte _080887A8 - .align 2, 0 -_080887A8: - .4byte _080887C0 - .4byte _08088894 - .4byte _080887E0 - .4byte _08088878 - .4byte _08088894 - .4byte _080888B0 -_080887C0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8088444 - ldr r0, _080887DC @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_080887DC: .4byte gUnknown_2039620 -_080887E0: - bl sub_80BF72C - cmp r0, 0x1 - beq _080888B6 - bl sub_80888C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080888B6 - lsls r0, 2 - ldr r1, _08088800 @ =_08088804 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088800: .4byte _08088804 - .align 2, 0 -_08088804: - .4byte _080888B6 - .4byte _08088818 - .4byte _08088824 - .4byte _08088858 - .4byte _08088868 -_08088818: - ldr r0, _08088820 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088820: .4byte gUnknown_2039620 -_08088824: - ldr r4, _08088854 @ =gUnknown_2039620 - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r4] - b _0808886C - .align 2, 0 -_08088854: .4byte gUnknown_2039620 -_08088858: - ldr r0, _08088864 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080888B6 - .align 2, 0 -_08088864: .4byte gUnknown_2039620 -_08088868: - ldr r0, _08088874 @ =gUnknown_2039620 - ldr r0, [r0] -_0808886C: - ldrb r0, [r0, 0xE] - bl sub_80889A8 - b _080888B6 - .align 2, 0 -_08088874: .4byte gUnknown_2039620 -_08088878: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08088890 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088890: .4byte gUnknown_2039620 -_08088894: - ldr r0, _080888AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080888B6 - ldr r1, [r3] -_080888A2: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _080888B6 - .align 2, 0 -_080888AC: .4byte gPaletteFade -_080888B0: - adds r0, r2, 0 - bl sub_8088B00 -_080888B6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088780 - - thumb_func_start sub_80888C0 -sub_80888C0: @ 80888C0 - push {r4,lr} - ldr r3, _080888EC @ =gMain - ldrh r1, [r3, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08088906 - ldr r2, _080888F0 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r0, 1 - adds r3, r1, r0 - ldrh r4, [r3] - ldr r1, _080888F4 @ =gUnknown_83CC304 - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bne _080888F8 - movs r0, 0 - b _080888FA - .align 2, 0 -_080888EC: .4byte gMain -_080888F0: .4byte gUnknown_2039620 -_080888F4: .4byte gUnknown_83CC304 -_080888F8: - adds r0, r4, 0x1 -_080888FA: - strh r0, [r3] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - beq _08088930 - b _0808893C -_08088906: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08088940 - ldr r2, _08088934 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r3, r0, 1 - adds r1, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _08088924 - ldr r0, _08088938 @ =gUnknown_83CC304 - adds r0, r3, r0 - ldrh r0, [r0] -_08088924: - subs r0, 0x1 - strh r0, [r1] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - bne _0808893C -_08088930: - movs r0, 0x2 - b _080889A0 - .align 2, 0 -_08088934: .4byte gUnknown_2039620 -_08088938: .4byte gUnknown_83CC304 -_0808893C: - movs r0, 0x4 - b _080889A0 -_08088940: - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08088964 - ldr r0, _0808895C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0 - bne _08088960 - movs r0, 0x6 - b _08088982 - .align 2, 0 -_0808895C: .4byte gUnknown_2039620 -_08088960: - subs r0, 0x1 - b _08088982 -_08088964: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08088988 - ldr r0, _0808897C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0x6 - bne _08088980 - strh r2, [r1, 0xE] - b _08088984 - .align 2, 0 -_0808897C: .4byte gUnknown_2039620 -_08088980: - adds r0, 0x1 -_08088982: - strh r0, [r1, 0xE] -_08088984: - movs r0, 0x3 - b _080889A0 -_08088988: - ldrh r1, [r3, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0808899A - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808899E -_0808899A: - movs r0, 0x1 - b _080889A0 -_0808899E: - movs r0, 0 -_080889A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80888C0 - - thumb_func_start sub_80889A8 -sub_80889A8: @ 80889A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r5, r0, 24 - add r4, sp, 0x2C - ldr r1, _08088A08 @ =gUnknown_83CC363 - adds r0, r4, 0 - movs r2, 0x3 - bl memcpy - movs r0, 0x82 - mov r8, r0 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - muls r0, r5 - adds r0, 0x2 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x46 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x82 - adds r3, r7, 0 - bl FillWindowPixelRect - adds r6, r4, 0 - cmp r5, 0x5 - bhi _08088ADE - lsls r0, r5, 2 - ldr r1, _08088A0C @ =_08088A10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088A08: .4byte gUnknown_83CC363 -_08088A0C: .4byte _08088A10 - .align 2, 0 -_08088A10: - .4byte _08088A28 - .4byte _08088A38 - .4byte _08088A48 - .4byte _08088A58 - .4byte _08088A68 - .4byte _08088A9C -_08088A28: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A34 @ =gUnknown_83CC330 - b _08088A72 - .align 2, 0 -_08088A34: .4byte gUnknown_83CC330 -_08088A38: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A44 @ =gUnknown_83CC33C - b _08088A72 - .align 2, 0 -_08088A44: .4byte gUnknown_83CC33C -_08088A48: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A54 @ =gUnknown_83CC344 - b _08088A72 - .align 2, 0 -_08088A54: .4byte gUnknown_83CC344 -_08088A58: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A64 @ =gUnknown_83CC34C - b _08088A72 - .align 2, 0 -_08088A64: .4byte gUnknown_83CC34C -_08088A68: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A94 @ =gUnknown_83CC354 -_08088A72: - ldr r0, _08088A98 @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - b _08088ADE - .align 2, 0 -_08088A94: .4byte gUnknown_83CC354 -_08088A98: .4byte gUnknown_2039620 -_08088A9C: - ldr r1, _08088AF8 @ =gUnknown_8419E52 - add r0, sp, 0xC - bl StringCopy - add r4, sp, 0x20 - ldr r0, _08088AFC @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0x3 - bl StringAppendN - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 -_08088ADE: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088AF8: .4byte gUnknown_8419E52 -_08088AFC: .4byte gUnknown_2039620 - thumb_func_end sub_80889A8 - - thumb_func_start sub_8088B00 -sub_8088B00: @ 8088B00 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08088BBC @ =gFieldCallback - ldr r0, _08088BC0 @ =sub_807DF64 - str r0, [r1] - ldr r0, _08088BC4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl FreeAllWindowBuffers - ldr r3, _08088BC8 @ =gSaveBlock2Ptr - ldr r5, [r3] - ldr r4, _08088BCC @ =gUnknown_2039620 - ldr r0, [r4] - movs r2, 0x7 - ldrb r1, [r0] - ands r1, r2 - ldrb r2, [r5, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r5, [r3] - ldr r0, [r4] - movs r6, 0x1 - ldrb r1, [r0, 0x2] - ands r1, r6 - lsls r1, 2 - ldrb r2, [r5, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - ands r1, r6 - lsls r1, 1 - ldrb r2, [r5, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x6] - ands r1, r6 - ldrb r2, [r5, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r1, [r3] - ldr r0, [r4] - ldrh r0, [r0, 0x8] - movs r6, 0 - strb r0, [r1, 0x13] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0xA] - lsls r1, 3 - ldrb r2, [r5, 0x14] - movs r0, 0x7 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r0, [r3] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo - ldr r0, [r4] - bl Free - str r6, [r4] - mov r0, r8 - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088BBC: .4byte gFieldCallback -_08088BC0: .4byte sub_807DF64 -_08088BC4: .4byte gMain -_08088BC8: .4byte gSaveBlock2Ptr -_08088BCC: .4byte gUnknown_2039620 - thumb_func_end sub_8088B00 - - thumb_func_start sub_8088BD0 -sub_8088BD0: @ 8088BD0 - push {lr} - sub sp, 0xC - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _08088C08 @ =gUnknown_8419DCC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08088C08: .4byte gUnknown_8419DCC - thumb_func_end sub_8088BD0 - - thumb_func_start sub_8088C0C -sub_8088C0C: @ 8088C0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r6, 0x2 - ldr r1, _08088D6C @ =0x000001b3 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x3 - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDA - lsls r1, 1 - movs r0, 0x1B - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl FillBgTilemapBufferRect - ldr r1, _08088D70 @ =0x000001b5 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDB - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect - movs r1, 0xDC - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x3 - bl FillBgTilemapBufferRect - ldr r1, _08088D74 @ =0x000001b9 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xDD - lsls r1, 1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x5 - bl FillBgTilemapBufferRect - ldr r1, _08088D78 @ =0x000001bb - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xD5 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D7C @ =0x000001ab - movs r0, 0x1A - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x6 - bl FillBgTilemapBufferRect - movs r1, 0xD6 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D80 @ =0x000001ad - str r4, [sp] - movs r5, 0x10 - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x7 - bl FillBgTilemapBufferRect - ldr r1, _08088D84 @ =0x000001af - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x7 - bl FillBgTilemapBufferRect - movs r1, 0xD8 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _08088D88 @ =0x000001b1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r1, 0xD9 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088D6C: .4byte 0x000001b3 -_08088D70: .4byte 0x000001b5 -_08088D74: .4byte 0x000001b9 -_08088D78: .4byte 0x000001bb -_08088D7C: .4byte 0x000001ab -_08088D80: .4byte 0x000001ad -_08088D84: .4byte 0x000001af -_08088D88: .4byte 0x000001b1 - thumb_func_end sub_8088C0C - - thumb_func_start sub_8088D8C -sub_8088D8C: @ 8088D8C - push {r4,lr} - sub sp, 0xC - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r4, 0 -_08088D9A: - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r1, r4, 0 - muls r1, r0 - adds r1, 0x2 - subs r1, r4 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08088DDC @ =gUnknown_83CC314 - lsls r0, r4, 2 - adds r0, r2 - ldr r2, [r0] - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _08088D9A - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088DDC: .4byte gUnknown_83CC314 - thumb_func_end sub_8088D8C - - thumb_func_start sub_8088DE0 -sub_8088DE0: @ 8088DE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x1 - adds r2, r4, 0 - muls r2, r1 - adds r2, 0x3A - lsls r2, 16 - lsrs r2, 16 - lsls r1, r2, 8 - adds r2, r0 - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - movs r1, 0x87 - lsls r1, 5 - movs r0, 0x40 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088DE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/strings.s b/data/strings.s index 101946475..14a4472e3 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2907,25 +2907,25 @@ gUnknown_8419D89:: @ 8419D89 gUnknown_8419DCC:: @ 8419DCC .string "OPTION$" -gUnknown_8419DD3:: @ 0x8419DD3 +gText_TextSpeed:: @ 0x8419DD3 .string "TEXT SPEED$" -gUnknown_8419DDE:: @ 0x8419DDE +gText_BattleScene:: @ 0x8419DDE .string "BATTLE SCENE$" -gUnknown_8419DEB:: @ 0x8419DEB +gText_BattleStyle:: @ 0x8419DEB .string "BATTLE STYLE$" -gUnknown_8419DF8:: @ 0x8419DF8 +gText_Sound:: @ 0x8419DF8 .string "SOUND$" -gUnknown_8419DFE:: @ 0x8419DFE +gText_ButtonMode:: @ 0x8419DFE .string "BUTTON MODE$" -gUnknown_8419E0A:: @ 0x8419E0A +gText_Frame:: @ 0x8419E0A .string "FRAME$" -gUnknown_8419E10:: @ 0x8419E10 +gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" gUnknown_8419E17:: @ 0x8419E17 diff --git a/include/global.h b/include/global.h index 2f34de1a0..63c6923bd 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; diff --git a/include/strings.h b/include/strings.h index 377b6ea39..286a65190 100644 --- a/include/strings.h +++ b/include/strings.h @@ -763,4 +763,15 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; +// options menu +extern const u8 gText_TextSpeed[]; +extern const u8 gText_BattleScene[]; +extern const u8 gText_BattleStyle[]; +extern const u8 gText_Sound[]; +extern const u8 gText_ButtonMode[]; +extern const u8 gText_Frame[]; +extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_PickSwitchCancel[]; + + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 50a3b3270..ddf3eaa47 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - asm/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c new file mode 100644 index 000000000..57de35f11 --- /dev/null +++ b/src/option_menu.c @@ -0,0 +1,594 @@ +#include "global.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "text_window_graphics.h" +#include "menu.h" +#include "menu_helpers.h" +#include "task.h" +#include "palette.h" +#include "overworld.h" +#include "malloc.h" +#include "help_system.h" +#include "main.h" +#include "bg.h" +#include "window.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings.h" +#include "field_fadetransition.h" +#include "gba/m4a_internal.h" + + +// Menu items +enum +{ + MENUITEM_TEXTSPEED = 0, + MENUITEM_BATTLESCENE, + MENUITEM_BATTLESTYLE, + MENUITEM_SOUND, + MENUITEM_BUTTONMODE, + MENUITEM_FRAMETYPE, + MENUITEM_CANCEL, + MENUITEM_COUNT, +}; +// Window Ids +enum +{ + WIN_TEXT_OPTION, + WIN_OPTIONS +}; + +//This file's functions +static void sub_808835C(void); +static void sub_8088374(void); +static void sub_8088430(void); +static void sub_8088444(void); +static void sub_8088454(void); +static void sub_8088514(void); +static void sub_8088530(void); +static void sub_8088680(void); +static void sub_80886D4(void); +static bool8 sub_80886F0(void); +static void sub_8088780(u8 taskId); +static u8 sub_80888C0(void); +static void sub_80889A8(u8 selection); +static void sub_8088B00(u8 taskId); +static void sub_8088BD0(void); +static void sub_8088C0C(void); +static void sub_8088D8C(void); +static void sub_8088DE0(u8 selection); + +extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts +extern const struct BgTemplate gUnknown_83CC2D8[]; +extern const u8 gUnknown_83CC360[]; +extern const u16 gUnknown_83CC2E4[]; +extern const struct WindowTemplate gUnknown_83CC2B8[]; +extern const u8 gUnknown_83CC363[]; +extern const u8 gUnknown_83CC330[]; +extern const u8 gUnknown_83CC33C[]; +extern const u8 gUnknown_83CC344[]; +extern const u8 gUnknown_83CC34C[]; +extern const u8 gUnknown_83CC354[]; +extern const u8 gUnknown_8419E52[]; +extern const u8 gUnknown_8419DCC[]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_8419E57[]; + +struct OptionsMenu +{ + /*0x00*/ u16 option[7]; + /*0x0E*/ u16 unkE; + /*0x10*/ u8 state3; + /*0x11*/ u8 state; + /*0x12*/ u8 state2; + /*0x13*/ u8 unk13; +}; + +EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + + +//CB2_InitOptionsMenu +static void sub_808835C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + + +//VBlankCB_OptionsMenu +static void sub_8088374(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + + +//sub_8088388 +void CB2_OptionsMenuFromStartMenu(void) +{ + int i; + + if (gMain.savedCallback == NULL) + gMain.savedCallback = CB2_ReturnToStartMenu; + sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenu->state3 = 0; + sOptionsMenu->state2 = 0; + sOptionsMenu->state = 0; + sOptionsMenu->unkE = 0; + sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + + for (i = 0; i < MENUITEM_COUNT-2; i++) + { + if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) + sOptionsMenu->option[i] = 0; + } + HelpSystem_SetSomeVariable2(0xD); + SetMainCallback2(sub_8088454); +} + + +//sub_8088430 +static void sub_8088430(void) +{ + SetVBlankCallback(0); + SetHBlankCallback(0); +} + + +//sub_8088444 +static void sub_8088444(void) +{ + SetVBlankCallback(sub_8088374); +} + +//sub_8088454 +static void sub_8088454(void) +{ + int i; + switch (sOptionsMenu->state) + { + case 0: + sub_8088430(); + sOptionsMenu->state++; + break; + case 1: + sub_8088530(); + sOptionsMenu->state++; + break; + case 2: + sub_80886D4(); + sOptionsMenu->state++; + break; + case 3: + if (!(sub_80886F0())); + return; + sOptionsMenu->state++; + break; + case 4: + sub_8088BD0(); + sOptionsMenu->state++; + break; + case 5: + sub_8088C0C(); + sOptionsMenu->state++; + break; + case 6: + sub_8088D8C(); + sOptionsMenu->state++; + break; + case 7: + for (i = 0; i < MENUITEM_COUNT; i++) + sub_80889A8(i); + sOptionsMenu->state++; + break; + case 8: + sub_8088DE0(sOptionsMenu->unkE); + sOptionsMenu->state++; + break; + case 9: + sub_8088680(); + sOptionsMenu->state++; + break; + default: + sub_8088514(); + return; + } +} + +//sub_8088514 +static void sub_8088514(void) +{ + CreateTask(sub_8088780, 0); + SetMainCallback2(sub_808835C); +} + + +//sub_8088530 +static void sub_8088530(void) +{ + void * dest = (void *) VRAM; + DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); + + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(gUnknown_83CC2B8); + DeactivateAllTextPrinters(); + SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDY, 2); + SetGpuReg(REG_OFFSET_WININ, 1); + SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(0, 0x3040); + ShowBg(0); + ShowBg(1); + ShowBg(2); +}; + +//sub_8088680 +static void sub_8088680(void) +{ + s32 x; + x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + PutWindowTilemap(2); + CopyWindowToVram(2, 3); +} + + +//sub_80886D4 +static void sub_80886D4(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +//sub_80886F0 +static bool8 sub_80886F0(void) +{ + switch (sOptionsMenu->state2) + { + case 0: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + break; + case 1: + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + break; + case 2: + LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(stdpal_get(2), 0xF0, 0x20); + break; + case 3: + sub_814FDA0(1, 0x1B3, 0x30); + break; + default: + return TRUE; + } + sOptionsMenu->state2++; + return FALSE; +} + + +//sub_8088780 +static void sub_8088780(u8 taskId) +{ + switch (sOptionsMenu->state3) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sub_8088444(); + sOptionsMenu->state3++; + break; + case 2: + if (sub_80BF72C) + return; + switch (sub_80888C0()) + { + case 0: + return; + case 1: + sOptionsMenu->state3++; + break; + case 2: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenu->unkE); + return; + case 3: + sub_8088DE0(sOptionsMenu->unkE); + return; + case 4: + sub_80889A8(sOptionsMenu->unkE); + return; + default: + return; + } + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sOptionsMenu->state3++; + break; + case 1: + case 4: + if (gPaletteFade.active) + return; + sOptionsMenu->state3++; + return; + case 5: + sub_8088B00(taskId); + return; + default: + return; + } +} + + +//OptionsMenu_ProcessInput +static u8 sub_80888C0(void) +{ + u16 current, selection; + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + selection = 2 * sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + + if (current == gUnknown_83CC304[selection] - 1) + sOptionsMenu->option[selection] = 0; + else + sOptionsMenu->option[selection] = current + 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + selection = 2*sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + if (current == 0) + sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + else + sOptionsMenu->option[selection] = current - 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_TEXTSPEED) + sOptionsMenu->unkE = MENUITEM_CANCEL; + else + sOptionsMenu->unkE = selection - 1; + return 3; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_CANCEL) + sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + else + sOptionsMenu->unkE = selection + 1; + return 3; + } + else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) + { + return 1; + } + else + { + return 0; + } +} + +/* +// must match with goto :( +bool sub_80888C0() +{ + int v0; // r0@2 + _WORD *v1; // r3@2 + int v2; // r4@2 + __int16 v3; // r0@3 + int v4; // r3@8 + __int16 v5; // r0@8 + int v7; // r1@14 + signed __int16 v8; // r0@15 + int v9; // r0@18 + + if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) + { + v0 = 2 * *(_WORD *)(sOptionsMenu + 14); + v1 = (_WORD *)(sOptionsMenu + v0); + v2 = *(_WORD *)(sOptionsMenu + v0); + if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) + v3 = 0; + else + v3 = v2 + 1; + *v1 = v3; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) + { + v4 = 2 * *(_WORD *)(sOptionsMenu + 14); + v5 = *(_WORD *)(sOptionsMenu + v4); + if ( !*(_WORD *)(sOptionsMenu + v4) ) + v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); + *(_WORD *)(sOptionsMenu + v4) = v5 - 1; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) + { + v7 = sOptionsMenu; + if ( *(_WORD *)(sOptionsMenu + 14) ) + v8 = *(_WORD *)(sOptionsMenu + 14) - 1; + else + v8 = 6; + goto LABEL_21; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) + { + v7 = sOptionsMenu; + v9 = *(_WORD *)(sOptionsMenu + 14); + if ( v9 == 6 ) + { + *(_WORD *)(sOptionsMenu + 14) = 0; + return 3; + } + v8 = v9 + 1; +LABEL_21: + *(_WORD *)(v7 + 14) = v8; + return 3; + } + return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; +} +*/ + + +//sub_80889A8 +static void sub_80889A8(u8 selection) +{ + u8* dst; + u8* str; + u8* v8; + u8 x, y; + + x = 0x82; + memcpy(dst, gUnknown_83CC363, 3); + y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) + { + case MENUITEM_TEXTSPEED: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + break; + case MENUITEM_BATTLESCENE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + break; + case MENUITEM_BATTLESTYLE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + break; + case MENUITEM_SOUND: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + break; + case MENUITEM_BUTTONMODE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + break; + case MENUITEM_FRAMETYPE: + StringCopy(str, gUnknown_8419E52); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + StringAppendN(str, v8, 3); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); + break; + default: + break; + } + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + + +//sub_8088B00 +static void sub_8088B00(u8 taskId) +{ + gFieldCallback = sub_807DF64; + SetMainCallback2(gMain.savedCallback); + FreeAllWindowBuffers(); + + gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; + gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; + gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; + gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; + + SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); + Free(sOptionsMenu); + sOptionsMenu = NULL; + DestroyTask(taskId); +} + + +//sub_8088BD0 +static void sub_8088BD0(void) +{ + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + + +//sub_8088C0C +static void sub_8088C0C(void) +{ + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + CopyBgTilemapBufferToVram(1); +} + + +//sub_8088D8C +static void sub_8088D8C(void) +{ + int i; + u8 attr; + + FillWindowPixelBuffer(1, 0x11); + + for (i = 0; i < MENUITEM_COUNT; i++) + { + attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + } +} + + +//sub_8088DE0 +static void sub_8088DE0(u8 selection) +{ + u8 attr; + attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); + SetGpuReg(0x40, 4320); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index a892eb532..cec65b59c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -gUnknown_2039620: @ 2039620 +sOptionsMenu: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 -- cgit v1.2.3 From b58554b9aebf7b8d6cebf682020a267c981bd5a0 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 15:21:22 -0700 Subject: matching up to sub_8088D8C --- include/menu_helpers.h | 2 +- src/menu_helpers.c | 2 +- src/option_menu.c | 657 ++++++++++++++++++++++++++++++++++++------------- 3 files changed, 489 insertions(+), 172 deletions(-) diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 6ea771500..8d042825c 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool8 sub_80BF72C(void); +bool32 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 06e7bb08b..027280beb 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool8 sub_80BF72C(void) +bool32 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index 57de35f11..c98a2ec7b 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -39,6 +39,65 @@ enum WIN_OPTIONS }; +/* +static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +{ + { + .bg = 1, + .tilemapLeft = 2, + .tilemapTop = 3, + .width = 26, + .height = 2, + .paletteNum = 1, + .baseBlock = 2 + }, + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop =7, + .width = 26, + .height = 12, + .paletteNum = 1, + .baseBlock = 0x36 + }, + DUMMY_WIN_TEMPLATE +}; +static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +{ + { + .bg = 1, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 0, + .charBaseIndex = 1, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + } +}; + + +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +{ + [MENUITEM_TEXTSPEED] = gText_TextSpeed, + [MENUITEM_BATTLESCENE] = gText_BattleScene, + [MENUITEM_BATTLESTYLE] = gText_BattleStyle, + [MENUITEM_SOUND] = gText_Sound, + [MENUITEM_BUTTONMODE] = gText_ButtonMode, + [MENUITEM_FRAMETYPE] = gText_Frame, + [MENUITEM_CANCEL] = gText_OptionMenuCancel, +}; +*/ + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -57,27 +116,27 @@ static void sub_8088B00(u8 taskId); static void sub_8088BD0(void); static void sub_8088C0C(void); static void sub_8088D8C(void); -static void sub_8088DE0(u8 selection); - -extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts -extern const struct BgTemplate gUnknown_83CC2D8[]; -extern const u8 gUnknown_83CC360[]; -extern const u16 gUnknown_83CC2E4[]; -extern const struct WindowTemplate gUnknown_83CC2B8[]; -extern const u8 gUnknown_83CC363[]; -extern const u8 gUnknown_83CC330[]; -extern const u8 gUnknown_83CC33C[]; -extern const u8 gUnknown_83CC344[]; -extern const u8 gUnknown_83CC34C[]; -extern const u8 gUnknown_83CC354[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419DCC[]; +static void sub_8088DE0(u16 selection); + +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[2]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_83CC330[0xC]; +extern const u8 gUnknown_83CC33C[0x8]; +extern const u8 gUnknown_83CC344[0x8]; +extern const u8 gUnknown_83CC34C[0x8]; +extern const u8 gUnknown_83CC354[0xC]; +extern const u8 gUnknown_83CC360[0x3]; +extern const u8 gUnknown_83CC363[0x3]; +extern const u8 gUnknown_8419DCC[]; +extern const u8 gUnknown_8419E52[]; extern const u8 gUnknown_8419E57[]; struct OptionsMenu { - /*0x00*/ u16 option[7]; + /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -110,7 +169,7 @@ static void sub_8088374(void) //sub_8088388 void CB2_OptionsMenuFromStartMenu(void) { - int i; + u8 i; if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; @@ -126,10 +185,10 @@ void CB2_OptionsMenuFromStartMenu(void) sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; - for (i = 0; i < MENUITEM_COUNT-2; i++) + for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) + sOptionsMenu->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -153,55 +212,46 @@ static void sub_8088444(void) //sub_8088454 static void sub_8088454(void) { - int i; - switch (sOptionsMenu->state) + u8 i, state; + state = sOptionsMenu->state; + switch (state) { case 0: sub_8088430(); - sOptionsMenu->state++; break; case 1: sub_8088530(); - sOptionsMenu->state++; break; case 2: sub_80886D4(); - sOptionsMenu->state++; break; case 3: - if (!(sub_80886F0())); + if (sub_80886F0() != TRUE) //silly matching quirk return; - sOptionsMenu->state++; break; case 4: sub_8088BD0(); - sOptionsMenu->state++; break; case 5: sub_8088C0C(); - sOptionsMenu->state++; break; case 6: sub_8088D8C(); - sOptionsMenu->state++; break; case 7: for (i = 0; i < MENUITEM_COUNT; i++) sub_80889A8(i); - sOptionsMenu->state++; break; case 8: sub_8088DE0(sOptionsMenu->unkE); - sOptionsMenu->state++; break; case 9: sub_8088680(); - sOptionsMenu->state++; break; default: sub_8088514(); - return; } + sOptionsMenu->state++; } //sub_8088514 @@ -217,12 +267,12 @@ static void sub_8088530(void) { void * dest = (void *) VRAM; DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); - + DmaClear32(3, (void *)OAM, OAM_SIZE); DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -233,10 +283,10 @@ static void sub_8088530(void) ChangeBgY(3, 0, 0); InitWindows(gUnknown_83CC2B8); DeactivateAllTextPrinters(); - SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); SetGpuReg(REG_OFFSET_WININ, 1); - SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(REG_OFFSET_WINOUT, 0x27); SetGpuReg(0, 0x3040); ShowBg(0); ShowBg(1); @@ -248,7 +298,7 @@ static void sub_8088680(void) { s32 x; x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); - FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + FillWindowPixelBuffer(2, 0xFF); AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); PutWindowTilemap(2); CopyWindowToVram(2, 3); @@ -271,10 +321,10 @@ static bool8 sub_80886F0(void) switch (sOptionsMenu->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); @@ -291,72 +341,228 @@ static bool8 sub_80886F0(void) } -//sub_8088780 + +// I could not get this function to match. GOTO statements weren't even compiling correctly. +#ifdef NONMATCHING static void sub_8088780(u8 taskId) { + u8 v2, v5; + struct OptionsMenu v4; + switch (sOptionsMenu->state3) { case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C) + if (sub_80BF72C() == TRUE) return; switch (sub_80888C0()) { - case 0: - return; case 1: sOptionsMenu->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; case 3: sub_8088DE0(sOptionsMenu->unkE); - return; + break; case 4: sub_80889A8(sOptionsMenu->unkE); - return; + sOptionsMenu->state3++; + break; default: return; } case 3: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); sOptionsMenu->state3++; - break; case 1: case 4: if (gPaletteFade.active) return; sOptionsMenu->state3++; - return; case 5: sub_8088B00(taskId); - return; + break; default: return; } } - - +#else +NAKED +static void sub_8088780(u8 taskId) +{ + asm_unified("\tpush {r4,lr}\n" + "\tsub sp, 0x4\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r0, [r1]\n" + "\tldrb r0, [r0, 0x10]\n" + "\tadds r3, r1, 0\n" + "\tcmp r0, 0x5\n" + "\tbls _08088796\n" + "\tb _080888B6\n" + "_08088796:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080887A4 @ =_080887A8\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080887A0: .4byte sOptionsMenu\n" + "_080887A4: .4byte _080887A8\n" + "\t.align 2, 0\n" + "_080887A8:\n" + "\t.4byte _080887C0\n" + "\t.4byte _08088894\n" + "\t.4byte _080887E0\n" + "\t.4byte _08088878\n" + "\t.4byte _08088894\n" + "\t.4byte _080888B0\n" + "_080887C0:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tbl sub_8088444\n" + "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_080887DC: .4byte sOptionsMenu\n" + "_080887E0:\n" + "\tbl sub_80BF72C\n" + "\tcmp r0, 0x1\n" + "\tbeq _080888B6\n" + "\tbl sub_80888C0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x4\n" + "\tbhi _080888B6\n" + "\tlsls r0, 2\n" + "\tldr r1, _08088800 @ =_08088804\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088800: .4byte _08088804\n" + "\t.align 2, 0\n" + "_08088804:\n" + "\t.4byte _080888B6\n" + "\t.4byte _08088818\n" + "\t.4byte _08088824\n" + "\t.4byte _08088858\n" + "\t.4byte _08088868\n" + "_08088818:\n" + "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088820: .4byte sOptionsMenu\n" + "_08088824:\n" + "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r1, [r0]\n" + "\tmovs r2, 0x90\n" + "\tlsls r2, 1\n" + "\tmovs r3, 0xD5\n" + "\tlsls r3, 1\n" + "\tmovs r0, 0x1\n" + "\tbl LoadBgTiles\n" + "\tldr r0, [r4]\n" + "\tldrb r0, [r0, 0xA]\n" + "\tbl GetUserFrameGraphicsInfo\n" + "\tldr r0, [r0, 0x4]\n" + "\tmovs r1, 0x20\n" + "\tmovs r2, 0x20\n" + "\tbl LoadPalette\n" + "\tldr r0, [r4]\n" + "\tb _0808886C\n" + "\t.align 2, 0\n" + "_08088854: .4byte sOptionsMenu\n" + "_08088858:\n" + "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tldrh r0, [r0, 0xE]\n" + "\tbl sub_8088DE0\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088864: .4byte sOptionsMenu\n" + "_08088868:\n" + "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "_0808886C:\n" + "\tldrb r0, [r0, 0xE]\n" + "\tbl sub_80889A8\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_08088874: .4byte sOptionsMenu\n" + "_08088878:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x10\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r1, [r0]\n" + "\tb _080888A2\n" + "\t.align 2, 0\n" + "_08088890: .4byte sOptionsMenu\n" + "_08088894:\n" + "\tldr r0, _080888AC @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080888B6\n" + "\tldr r1, [r3]\n" + "_080888A2:\n" + "\tldrb r0, [r1, 0x10]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1, 0x10]\n" + "\tb _080888B6\n" + "\t.align 2, 0\n" + "_080888AC: .4byte gPaletteFade\n" + "_080888B0:\n" + "\tadds r0, r2, 0\n" + "\tbl sub_8088B00\n" + "_080888B6:\n" + "\tadd sp, 0x4\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + + + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { - u16 current, selection; + u16 current; + u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - selection = 2 * sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - - if (current == gUnknown_83CC304[selection] - 1) - sOptionsMenu->option[selection] = 0; + current = sOptionsMenu->option[(sOptionsMenu->unkE)]; + if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) + sOptionsMenu->option[sOptionsMenu->unkE] = 0; else - sOptionsMenu->option[selection] = current + 1; + sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -364,12 +570,12 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - selection = 2*sOptionsMenu->unkE; - current = sOptionsMenu->option[selection]; - if (current == 0) - sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + if (*curr == 0) + *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; else - sOptionsMenu->option[selection] = current - 1; + --*(curr); + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) return 2; else @@ -377,20 +583,18 @@ static u8 sub_80888C0(void) } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_TEXTSPEED) + if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) sOptionsMenu->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = selection - 1; + sOptionsMenu->unkE = sOptionsMenu->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - selection = sOptionsMenu->unkE; - if (selection == MENUITEM_CANCEL) + if (sOptionsMenu->unkE == MENUITEM_CANCEL) sOptionsMenu->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = selection + 1; + sOptionsMenu->unkE = sOptionsMenu->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -403,85 +607,22 @@ static u8 sub_80888C0(void) } } -/* -// must match with goto :( -bool sub_80888C0() -{ - int v0; // r0@2 - _WORD *v1; // r3@2 - int v2; // r4@2 - __int16 v3; // r0@3 - int v4; // r3@8 - __int16 v5; // r0@8 - int v7; // r1@14 - signed __int16 v8; // r0@15 - int v9; // r0@18 - - if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) - { - v0 = 2 * *(_WORD *)(sOptionsMenu + 14); - v1 = (_WORD *)(sOptionsMenu + v0); - v2 = *(_WORD *)(sOptionsMenu + v0); - if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) - v3 = 0; - else - v3 = v2 + 1; - *v1 = v3; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) - { - v4 = 2 * *(_WORD *)(sOptionsMenu + 14); - v5 = *(_WORD *)(sOptionsMenu + v4); - if ( !*(_WORD *)(sOptionsMenu + v4) ) - v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); - *(_WORD *)(sOptionsMenu + v4) = v5 - 1; - if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) - return 4; - return 2; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) - { - v7 = sOptionsMenu; - if ( *(_WORD *)(sOptionsMenu + 14) ) - v8 = *(_WORD *)(sOptionsMenu + 14) - 1; - else - v8 = 6; - goto LABEL_21; - } - if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) - { - v7 = sOptionsMenu; - v9 = *(_WORD *)(sOptionsMenu + 14); - if ( v9 == 6 ) - { - *(_WORD *)(sOptionsMenu + 14) = 0; - return 3; - } - v8 = v9 + 1; -LABEL_21: - *(_WORD *)(v7 + 14) = v8; - return 3; - } - return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; -} -*/ - //sub_80889A8 +#ifdef NONMATCHING // could not get it to match perfectly, no idea how they put so many vars on the stack static void sub_80889A8(u8 selection) { u8* dst; u8* str; - u8* v8; + u8* v8; u8 x, y; + u8** col; - x = 0x82; - memcpy(dst, gUnknown_83CC363, 3); + memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) { case MENUITEM_TEXTSPEED: @@ -501,7 +642,7 @@ static void sub_80889A8(u8 selection) break; case MENUITEM_FRAMETYPE: StringCopy(str, gUnknown_8419E52); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -511,6 +652,173 @@ static void sub_80889A8(u8 selection) PutWindowTilemap(1); CopyWindowToVram(1, 3); } +#else +NAKED +static void sub_80889A8(u8 selection) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x30\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadd r4, sp, 0x2C\n" + "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl memcpy\n" + "\tmovs r0, 0x82\n" + "\tmov r8, r0\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x1\n" + "\tmuls r0, r5\n" + "\tadds r0, 0x2\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tbl GetFontAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmovs r1, 0x46\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x82\n" + "\tadds r3, r7, 0\n" + "\tbl FillWindowPixelRect\n" + "\tadds r6, r4, 0\n" + "\tcmp r5, 0x5\n" + "\tbhi _08088ADE\n" + "\tlsls r0, r5, 2\n" + "\tldr r1, _08088A0C @ =_08088A10\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A0C: .4byte _08088A10\n" + "\t.align 2, 0\n" + "_08088A10:\n" + "\t.4byte _08088A28\n" + "\t.4byte _08088A38\n" + "\t.4byte _08088A48\n" + "\t.4byte _08088A58\n" + "\t.4byte _08088A68\n" + "\t.4byte _08088A9C\n" + "_08088A28:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A38:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A48:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A58:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tb _08088A72\n" + "\t.align 2, 0\n" + "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A68:\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "_08088A72:\n" + "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldr r0, [r0]\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "\tb _08088ADE\n" + "\t.align 2, 0\n" + "_08088A94: .4byte gUnknown_83CC354\n" + "_08088A98: .4byte sOptionsMenu\n" + "_08088A9C:\n" + "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tadd r0, sp, 0xC\n" + "\tbl StringCopy\n" + "\tadd r4, sp, 0x20\n" + "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, [r0]\n" + "\tlsls r1, r5, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0x1\n" + "\tmovs r3, 0x2\n" + "\tbl ConvertIntToDecimalStringN\n" + "\tadd r0, sp, 0xC\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0x3\n" + "\tbl StringAppendN\n" + "\tstr r6, [sp]\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstr r0, [sp, 0x4]\n" + "\tadd r0, sp, 0xC\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x2\n" + "\tmov r2, r8\n" + "\tadds r3, r7, 0\n" + "\tbl AddTextPrinterParameterized3\n" + "_08088ADE:\n" + "\tmovs r0, 0x1\n" + "\tbl PutWindowTilemap\n" + "\tmovs r0, 0x1\n" + "\tmovs r1, 0x3\n" + "\tbl CopyWindowToVram\n" + "\tadd sp, 0x30\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AFC: .4byte sOptionsMenu\n"); +} +#endif //sub_8088B00 @@ -520,20 +828,20 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; - gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; - gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; - gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; - + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); + Free(sOptionsMenu); sOptionsMenu = NULL; - DestroyTask(taskId); + DestroyTask(taskId); } - + + //sub_8088BD0 static void sub_8088BD0(void) { @@ -545,24 +853,28 @@ static void sub_8088BD0(void) //sub_8088C0C +//double check static void sub_8088C0C(void) { + u8 h; + h = 2; + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); - FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); - FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); - FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); - FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); - FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, h); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, h); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, h); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, h); CopyBgTilemapBufferToVram(1); } @@ -571,20 +883,25 @@ static void sub_8088C0C(void) static void sub_8088D8C(void) { int i; - u8 attr; + u8 y; FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there + y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + y += 2; + y -= i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); + } } //sub_8088DE0 -static void sub_8088DE0(u8 selection) +static void sub_8088DE0(u16 selection) { u8 attr; attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); -- cgit v1.2.3 From cb5dc21a4e8fecbffcb46e34782d9db3b21ccb13 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:03:51 -0700 Subject: matching rom --- data/option_menu.s | 33 +++++------ data/strings.s | 30 +++++----- graphics/misc/unk_83cc2e4.pal | 19 ++++++ include/menu_helpers.h | 2 +- include/strings.h | 14 +++++ src/menu_helpers.c | 2 +- src/option_menu.c | 130 +++++++++++++++++++++++------------------- 7 files changed, 137 insertions(+), 93 deletions(-) create mode 100644 graphics/misc/unk_83cc2e4.pal diff --git a/data/option_menu.s b/data/option_menu.s index 098e76f31..f8a590d6d 100644 --- a/data/option_menu.s +++ b/data/option_menu.s @@ -1,43 +1,44 @@ #include "constants/maps.h" #include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" + .include "asm/macros.inc" + .include "constants/constants.inc" - .section .rodata - .align 2 + .section .rodata + .align 2 gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 + .incbin "baserom.gba", 0x3CC2B8, 0x20 gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC + .incbin "baserom.gba", 0x3CC2D8, 0xC gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 + .incbin "baserom.gba", 0x3CC2E4, 0x20 gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 + .incbin "baserom.gba", 0x3CC304, 0x10 gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C + .incbin "baserom.gba", 0x3CC314, 0x1C gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC + .incbin "baserom.gba", 0x3CC330, 0xC gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 + .incbin "baserom.gba", 0x3CC33C, 0x8 gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 + .incbin "baserom.gba", 0x3CC344, 0x8 gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 + .incbin "baserom.gba", 0x3CC34C, 0x8 gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC + .incbin "baserom.gba", 0x3CC354, 0xC gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 + .incbin "baserom.gba", 0x3CC360, 0x3 gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 + .incbin "baserom.gba", 0x3CC363, 0x3 + diff --git a/data/strings.s b/data/strings.s index 14a4472e3..a75671090 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2904,7 +2904,7 @@ gUnknown_8419D89:: @ 8419D89 .string "Waiting for the other TRAINER to\n" .string "finish reading your TRAINER CARD.$" -gUnknown_8419DCC:: @ 8419DCC +gText_MenuOptionOption:: @ 8419DCC .string "OPTION$" gText_TextSpeed:: @ 0x8419DD3 @@ -2928,49 +2928,49 @@ gText_Frame:: @ 0x8419E0A gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" -gUnknown_8419E17:: @ 0x8419E17 +gText_TextSpeedSlow:: @ 0x8419E17 .string "SLOW$" -gUnknown_8419E1C:: @ 0x8419E1C +gText_TextSpeedMid:: @ 0x8419E1C .string "MID$" -gUnknown_8419E20:: @ 0x8419E20 +gText_TextSpeedFast:: @ 0x8419E20 .string "FAST$" -gUnknown_8419E25:: @ 0x8419E25 +gText_BattleSceneOn:: @ 0x8419E25 .string "ON$" -gUnknown_8419E28:: @ 0x8419E28 +gText_BattleSceneOff:: @ 0x8419E28 .string "OFF$" -gUnknown_8419E2C:: @ 0x8419E2C +gText_BattleStyleShift:: @ 0x8419E2C .string "SHIFT$" -gUnknown_8419E32:: @ 0x8419E32 +gText_BattleStyleSet:: @ 0x8419E32 .string "SET$" -gUnknown_8419E36:: @ 0x8419E36 +gText_SoundMono:: @ 0x8419E36 .string "MONO$" -gUnknown_8419E3B:: @ 0x8419E3B +gText_SoundStereo:: @ 0x8419E3B .string "STEREO$" gUnknown_8419E42:: @ 0x8419E42 .string "タイプ$" -gUnknown_8419E46:: @ 0x8419E46 +gText_ButtonTypeNormal:: @ 0x8419E46 .string "HELP$" -gUnknown_8419E4B:: @ 0x8419E4B +gText_ButtonTypeLR:: @ 0x8419E4B .string "Lã‚…A$" -gUnknown_8419E4F:: @ 0x8419E4F +gText_ButtonTypeLEqualsA:: @ 0x8419E4F .string "LR$" -gUnknown_8419E52:: @ 8419E52 +gText_FrameType:: @ 8419E52 .string "TYPE$" -gUnknown_8419E57:: @ 8419E57 +gText_PickSwitchCancel:: @ 8419E57 .string "{DPAD_UPDOWN}PICK {DPAD_LEFTRIGHT}SWITCH {A_BUTTON}{B_BUTTON}CANCEL$" gUnknown_8419E72:: @ 0x8419E72 diff --git a/graphics/misc/unk_83cc2e4.pal b/graphics/misc/unk_83cc2e4.pal new file mode 100644 index 000000000..b2172775f --- /dev/null +++ b/graphics/misc/unk_83cc2e4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +99 99 99 +214 214 206 +230 8 8 +255 189 115 +33 156 8 +148 247 148 +49 82 206 +165 197 247 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 8d042825c..6ea771500 100644 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -12,7 +12,7 @@ struct YesNoFuncTable }; bool16 RunTextPrinters_CheckActive(u8 textPrinterId); -bool32 sub_80BF72C(void); +bool8 sub_80BF72C(void); bool8 sub_80BF748(void); bool8 MenuHelpers_LinkSomething(void); void SetVBlankHBlankCallbacksToNull(void); diff --git a/include/strings.h b/include/strings.h index 286a65190..9d4d26ba1 100644 --- a/include/strings.h +++ b/include/strings.h @@ -771,6 +771,20 @@ extern const u8 gText_Sound[]; extern const u8 gText_ButtonMode[]; extern const u8 gText_Frame[]; extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_TextSpeedSlow[]; +extern const u8 gText_TextSpeedMid[]; +extern const u8 gText_TextSpeedFast[]; +extern const u8 gText_BattleSceneOn[]; +extern const u8 gText_BattleSceneOff[]; +extern const u8 gText_BattleStyleShift[]; +extern const u8 gText_BattleStyleSet[]; +extern const u8 gText_SoundMono[]; +extern const u8 gText_SoundStereo[]; +extern const u8 gText_ButtonTypeNormal[]; +extern const u8 gText_ButtonTypeLR[]; +extern const u8 gText_ButtonTypeLEqualsA[]; +extern const u8 gText_MenuOptionOption[]; +extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; diff --git a/src/menu_helpers.c b/src/menu_helpers.c index 027280beb..06e7bb08b 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -125,7 +125,7 @@ bool8 MenuHelpers_LinkSomething(void) return FALSE; } -bool32 sub_80BF72C(void) +bool8 sub_80BF72C(void) { if (!MenuHelpers_LinkSomething()) return FALSE; diff --git a/src/option_menu.c b/src/option_menu.c index c98a2ec7b..c1cde37a6 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -36,11 +36,10 @@ enum enum { WIN_TEXT_OPTION, - WIN_OPTIONS + WIN_OPTIONS, }; - /* -static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTemplates +static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -49,20 +48,29 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //sOptionMenuWinTempl .width = 26, .height = 2, .paletteNum = 1, - .baseBlock = 2 + .baseBlock = 2, }, { .bg = 0, .tilemapLeft = 2, - .tilemapTop =7, + .tilemapTop = 7, .width = 26, .height = 12, .paletteNum = 1, - .baseBlock = 0x36 + .baseBlock = 0x36, }, - DUMMY_WIN_TEMPLATE + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, + DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -81,12 +89,20 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //sOptionMenuBgTemplates .paletteMode = 0, .priority = 1, .baseTile = 0 - } + }, + { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, + }, }; - - -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames +static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts +static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -96,8 +112,28 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //sOptionMenuItemsNames [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; +static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 +static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C +static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 +static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C +static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 +static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 +static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 */ +extern const struct WindowTemplate gUnknown_83CC2B8[3]; +extern const struct BgTemplate gUnknown_83CC2D8[3]; +extern const u16 gUnknown_83CC2E4[0x20]; +extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8* gUnknown_83CC330[12]; +extern const u8* gUnknown_83CC33C[8]; +extern const u8* gUnknown_83CC344[8]; +extern const u8* gUnknown_83CC34C[8]; +extern const u8* gUnknown_83CC354[12]; +extern const u8 gUnknown_83CC360[3]; +extern const u8 gUnknown_83CC363[3]; + //This file's functions static void sub_808835C(void); static void sub_8088374(void); @@ -118,25 +154,9 @@ static void sub_8088C0C(void); static void sub_8088D8C(void); static void sub_8088DE0(u16 selection); -extern const struct WindowTemplate gUnknown_83CC2B8[3]; -extern const struct BgTemplate gUnknown_83CC2D8[2]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; //sOptionsMenuItemCounts -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8 gUnknown_83CC330[0xC]; -extern const u8 gUnknown_83CC33C[0x8]; -extern const u8 gUnknown_83CC344[0x8]; -extern const u8 gUnknown_83CC34C[0x8]; -extern const u8 gUnknown_83CC354[0xC]; -extern const u8 gUnknown_83CC360[0x3]; -extern const u8 gUnknown_83CC363[0x3]; -extern const u8 gUnknown_8419DCC[]; -extern const u8 gUnknown_8419E52[]; -extern const u8 gUnknown_8419E57[]; - struct OptionsMenu { - /*0x00*/ u16 option[7]; //0,2,4,6,8,a,c + /*0x00*/ u16 option[MENUITEM_COUNT]; //0,2,4,6,8,a,c /*0x0E*/ u16 unkE; /*0x10*/ u8 state3; /*0x11*/ u8 state; @@ -147,6 +167,7 @@ struct OptionsMenu EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + //CB2_InitOptionsMenu static void sub_808835C(void) { @@ -272,7 +293,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -297,9 +318,9 @@ static void sub_8088530(void) static void sub_8088680(void) { s32 x; - x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -357,7 +378,7 @@ static void sub_8088780(u8 taskId) sOptionsMenu->state3++; break; case 2: - if (sub_80BF72C() == TRUE) + if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call return; switch (sub_80888C0()) { @@ -547,10 +568,8 @@ static void sub_8088780(u8 taskId) "\tpop {r0}\n" "\tbx r0\n"); } -#endif - - - +#endif + //OptionsMenu_ProcessInput static u8 sub_80888C0(void) { @@ -616,7 +635,6 @@ static void sub_80889A8(u8 selection) u8* str; u8* v8; u8 x, y; - u8** col; memcpy(&dst, gUnknown_83CC363, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; @@ -641,7 +659,7 @@ static void sub_80889A8(u8 selection) AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); break; case MENUITEM_FRAMETYPE: - StringCopy(str, gUnknown_8419E52); + StringCopy(str, gText_FrameType); ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); @@ -773,7 +791,7 @@ static void sub_80889A8(u8 selection) "_08088A94: .4byte gUnknown_83CC354\n" "_08088A98: .4byte sOptionsMenu\n" "_08088A9C:\n" - "\tldr r1, _08088AF8 @ =gUnknown_8419E52\n" + "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" @@ -815,7 +833,7 @@ static void sub_80889A8(u8 selection) "\tpop {r0}\n" "\tbx r0\n" "\t.align 2, 0\n" - "_08088AF8: .4byte gUnknown_8419E52\n" + "_08088AF8: .4byte gText_FrameType\n" "_08088AFC: .4byte sOptionsMenu\n"); } #endif @@ -846,14 +864,13 @@ static void sub_8088B00(u8 taskId) static void sub_8088BD0(void) { FillWindowPixelBuffer(0, 0x11); - AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOptionOption, 8, 1, TEXT_SPEED_FF, NULL); PutWindowTilemap(0); CopyWindowToVram(0, 3); } //sub_8088C0C -//double check static void sub_8088C0C(void) { u8 h; @@ -863,7 +880,7 @@ static void sub_8088C0C(void) FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, h, 3); - FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, h, 3); + FillBgTilemapBufferRect(1, 0x1B8, 0x1C, 3, 1, h, 3); FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); @@ -878,24 +895,15 @@ static void sub_8088C0C(void) CopyBgTilemapBufferToVram(1); } - //sub_8088D8C static void sub_8088D8C(void) { - int i; - u8 y; + u8 i; FillWindowPixelBuffer(1, 0x11); - for (i = 0; i < MENUITEM_COUNT; i++) { - //AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); - //gets registers right, but an lsl/lsr 0x18 after GetFontAttribute that shouldn't be there - y = i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); - y += 2; - y -= i; - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, y, 0xFF, 0); - + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } @@ -903,9 +911,11 @@ static void sub_8088D8C(void) //sub_8088DE0 static void sub_8088DE0(u16 selection) { - u8 attr; - attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); - SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); - SetGpuReg(0x40, 4320); + u16 v1, v2; + + v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + v2 = selection * (v1 - 1) + 0x3A; + SetGpuReg(0x44, (v2 << 8) | (v2 + v1)); + SetGpuReg(0x40, 0x10E0); } -- cgit v1.2.3 From 5bb5d38d225d4ea426b6bf90778a10cb42cb84d4 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 18 Nov 2019 21:41:45 -0700 Subject: match baserom --- data/option_menu.s | 44 -------------------------------------------- include/strings.h | 3 +-- ld_script.txt | 2 +- src/option_menu.c | 16 +++++++++------- 4 files changed, 11 insertions(+), 54 deletions(-) delete mode 100644 data/option_menu.s diff --git a/data/option_menu.s b/data/option_menu.s deleted file mode 100644 index f8a590d6d..000000000 --- a/data/option_menu.s +++ /dev/null @@ -1,44 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83CC2B8:: @ 83CC2B8 - .incbin "baserom.gba", 0x3CC2B8, 0x20 - -gUnknown_83CC2D8:: @ 83CC2D8 - .incbin "baserom.gba", 0x3CC2D8, 0xC - -gUnknown_83CC2E4:: @ 83CC2E4 - .incbin "baserom.gba", 0x3CC2E4, 0x20 - -gUnknown_83CC304:: @ 83CC304 - .incbin "baserom.gba", 0x3CC304, 0x10 - -gUnknown_83CC314:: @ 83CC314 - .incbin "baserom.gba", 0x3CC314, 0x1C - -gUnknown_83CC330:: @ 83CC330 - .incbin "baserom.gba", 0x3CC330, 0xC - -gUnknown_83CC33C:: @ 83CC33C - .incbin "baserom.gba", 0x3CC33C, 0x8 - -gUnknown_83CC344:: @ 83CC344 - .incbin "baserom.gba", 0x3CC344, 0x8 - -gUnknown_83CC34C:: @ 83CC34C - .incbin "baserom.gba", 0x3CC34C, 0x8 - -gUnknown_83CC354:: @ 83CC354 - .incbin "baserom.gba", 0x3CC354, 0xC - -gUnknown_83CC360:: @ 83CC360 - .incbin "baserom.gba", 0x3CC360, 0x3 - -gUnknown_83CC363:: @ 83CC363 - .incbin "baserom.gba", 0x3CC363, 0x3 - diff --git a/include/strings.h b/include/strings.h index 9d4d26ba1..89149a8eb 100644 --- a/include/strings.h +++ b/include/strings.h @@ -763,7 +763,7 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; -// options menu +// option menu extern const u8 gText_TextSpeed[]; extern const u8 gText_BattleScene[]; extern const u8 gText_BattleStyle[]; @@ -787,5 +787,4 @@ extern const u8 gText_MenuOptionOption[]; extern const u8 gText_FrameType[]; extern const u8 gText_PickSwitchCancel[]; - #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index ddf3eaa47..50d647cda 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -432,7 +432,7 @@ SECTIONS { data/trainer_see.o(.rodata); src/wild_encounter.o(.rodata); data/field_effect.o(.rodata); - data/option_menu.o(.rodata); + src/option_menu.o(.rodata); data/trainer_card.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); diff --git a/src/option_menu.c b/src/option_menu.c index c1cde37a6..54b0e29cb 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -38,8 +38,8 @@ enum WIN_TEXT_OPTION, WIN_OPTIONS, }; -/* -static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMenuWinTemplates + +static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates { { .bg = 1, @@ -70,7 +70,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[] = //3CC2B8 -> sOptionMe }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates { { .bg = 1, @@ -79,7 +79,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 0, - .baseTile = 0 + .baseTile = 0, }, { .bg = 0, @@ -88,7 +88,7 @@ static const struct BgTemplate gUnknown_83CC2D8[] = //3CC2D8 -> sOptionMenuBg .screenSize = 0, .paletteMode = 0, .priority = 1, - .baseTile = 0 + .baseTile = 0, }, { .bg = 2, @@ -119,9 +119,10 @@ static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3 static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 -*/ -extern const struct WindowTemplate gUnknown_83CC2B8[3]; + +/* +extern const struct WindowTemplate gUnknown_83CC2B8[4]; extern const struct BgTemplate gUnknown_83CC2D8[3]; extern const u16 gUnknown_83CC2E4[0x20]; extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; @@ -133,6 +134,7 @@ extern const u8* gUnknown_83CC34C[8]; extern const u8* gUnknown_83CC354[12]; extern const u8 gUnknown_83CC360[3]; extern const u8 gUnknown_83CC363[3]; +*/ //This file's functions static void sub_808835C(void); -- cgit v1.2.3 From 79b2bc17124bf69ce6486ff7db60798454ba538c Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:46:10 -0700 Subject: update option menu const structs --- include/text.h | 13 +++ src/option_menu.c | 258 ++++++++++++++++++++++++++++-------------------------- sym_ewram.txt | 2 +- 3 files changed, 146 insertions(+), 127 deletions(-) diff --git a/include/text.h b/include/text.h index c4199190f..578a0d735 100644 --- a/include/text.h +++ b/include/text.h @@ -81,6 +81,19 @@ #define TEXT_COLOR_TRANSPARENT 0x0 #define TEXT_COLOR_WHITE 0x1 #define TEXT_COLOR_DARK_GREY 0x2 +#define TEXT_COLOR_LIGHT_GREY 0x3 +#define TEXT_COLOR_RED 0x4 +#define TEXT_COLOR_LIGHT_RED 0x5 +#define TEXT_COLOR_GREEN 0x6 +#define TEXT_COLOR_LIGHT_GREEN 0x7 +#define TEXT_COLOR_BLUE 0x8 +#define TEXT_COLOR_LIGHT_BLUE 0x9 +#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white +#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green +#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white +#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine +#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green +#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean // battle placeholders are located in battle_message.h #define EXT_CTRL_CODE_COLOR 0x1 diff --git a/src/option_menu.c b/src/option_menu.c index 54b0e29cb..4898ac1cd 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -19,7 +19,6 @@ #include "field_fadetransition.h" #include "gba/m4a_internal.h" - // Menu items enum { @@ -39,7 +38,7 @@ enum WIN_OPTIONS, }; -static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionMenuWinTemplates +static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 { { .bg = 1, @@ -70,7 +69,7 @@ static const struct WindowTemplate gUnknown_83CC2B8[4] = //3CC2B8 -> sOptionM }, DUMMY_WIN_TEMPLATE, }; -static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuBgTemplates +static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 { { .bg = 1, @@ -100,9 +99,9 @@ static const struct BgTemplate gUnknown_83CC2D8[3] = //3CC2D8 -> sOptionMenuB .baseTile = 0, }, }; -static const u16 gUnknown_83CC2E4[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 -static const u16 gUnknown_83CC304[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 -> sOptionsMenuItemCounts -static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuItemsNames +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 +static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { [MENUITEM_TEXTSPEED] = gText_TextSpeed, [MENUITEM_BATTLESCENE] = gText_BattleScene, @@ -112,29 +111,36 @@ static const u8* gUnknown_83CC314[MENUITEM_COUNT] = //3CC314 -> sOptionMenuI [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8* gUnknown_83CC330[] = {gText_TextSpeedSlow, gText_TextSpeedMid, gText_TextSpeedFast}; //3CC330 -static const u8* gUnknown_83CC33C[] = {gText_BattleSceneOn, gText_BattleSceneOff}; //3CC33C -static const u8* gUnknown_83CC344[] = {gText_BattleStyleShift, gText_BattleStyleSet}; //3CC344 -static const u8* gUnknown_83CC34C[] = {gText_SoundMono, gText_SoundStereo}; //3CC34C -static const u8* gUnknown_83CC354[] = {gText_ButtonTypeNormal, gText_ButtonTypeLR, gText_ButtonTypeLEqualsA}; //3CC354 -static const u8 gUnknown_83CC360[] = {0xF, 0x1, 0x2}; //3CC360 -static const u8 gUnknown_83CC363[] = {0, 5, 4, 0, 0}; //3CC363 - - -/* -extern const struct WindowTemplate gUnknown_83CC2B8[4]; -extern const struct BgTemplate gUnknown_83CC2D8[3]; -extern const u16 gUnknown_83CC2E4[0x20]; -extern const u16 gUnknown_83CC304[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; -extern const u8* gUnknown_83CC330[12]; -extern const u8* gUnknown_83CC33C[8]; -extern const u8* gUnknown_83CC344[8]; -extern const u8* gUnknown_83CC34C[8]; -extern const u8* gUnknown_83CC354[12]; -extern const u8 gUnknown_83CC360[3]; -extern const u8 gUnknown_83CC363[3]; -*/ +static const u8 *const sTextSpeedOptions[] = //3CC330 +{ + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast +}; +static const u8 *const sBattleSceneOptions[] = //3CC33C +{ + gText_BattleSceneOn, + gText_BattleSceneOff +}; +static const u8 *const sBattleStyleOptions[] = //3CC344 +{ + gText_BattleStyleShift, + gText_BattleStyleSet +}; +static const u8 *const sSoundOptions[] = //3CC34C +{ + gText_SoundMono, + gText_SoundStereo +}; +static const u8 *const sButtonTypeOptions[] = //3CC354 +{ + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, +}; +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 + //This file's functions static void sub_808835C(void); @@ -166,7 +172,7 @@ struct OptionsMenu /*0x13*/ u8 unk13; }; -EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; +EWRAM_DATA struct OptionsMenu *sOptionsMenuPtr = {0}; @@ -196,22 +202,22 @@ void CB2_OptionsMenuFromStartMenu(void) if (gMain.savedCallback == NULL) gMain.savedCallback = CB2_ReturnToStartMenu; - sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); - sOptionsMenu->state3 = 0; - sOptionsMenu->state2 = 0; - sOptionsMenu->state = 0; - sOptionsMenu->unkE = 0; - sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; - sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; - sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; - sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; - sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; - sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + sOptionsMenuPtr = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenuPtr->state3 = 0; + sOptionsMenuPtr->state2 = 0; + sOptionsMenuPtr->state = 0; + sOptionsMenuPtr->unkE = 0; + sOptionsMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; for (i = 0; i < MENUITEM_COUNT-1; i++) { - if (sOptionsMenu->option[i] > (gUnknown_83CC304[i])-1) - sOptionsMenu->option[i] = 0; + if (sOptionsMenuPtr->option[i] > (sOptionsMenuItemCounts[i])-1) + sOptionsMenuPtr->option[i] = 0; } HelpSystem_SetSomeVariable2(0xD); SetMainCallback2(sub_8088454); @@ -236,7 +242,7 @@ static void sub_8088444(void) static void sub_8088454(void) { u8 i, state; - state = sOptionsMenu->state; + state = sOptionsMenuPtr->state; switch (state) { case 0: @@ -266,7 +272,7 @@ static void sub_8088454(void) sub_80889A8(i); break; case 8: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 9: sub_8088680(); @@ -274,7 +280,7 @@ static void sub_8088454(void) default: sub_8088514(); } - sOptionsMenu->state++; + sOptionsMenuPtr->state++; } //sub_8088514 @@ -295,7 +301,7 @@ static void sub_8088530(void) DmaClear16(3, (void *)PLTT, PLTT_SIZE); SetGpuReg(REG_OFFSET_DISPCNT, 0); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83CC2D8, ARRAY_COUNT(gUnknown_83CC2D8)); + InitBgsFromTemplates(0, sOptionMenuBgTemplates, ARRAY_COUNT(sOptionMenuBgTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -304,7 +310,7 @@ static void sub_8088530(void) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0, 0); - InitWindows(gUnknown_83CC2B8); + InitWindows(sOptionMenuWinTemplates); DeactivateAllTextPrinters(); SetGpuReg(REG_OFFSET_BLDCNT, 0xC1); SetGpuReg(REG_OFFSET_BLDY, 2); @@ -322,7 +328,7 @@ static void sub_8088680(void) s32 x; x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0); FillWindowPixelBuffer(2, 0xFF); - AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gText_PickSwitchCancel); + AddTextPrinterParameterized3(2, 0, x, 0, sOptionsMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel); PutWindowTilemap(2); CopyWindowToVram(2, 3); } @@ -341,16 +347,16 @@ static void sub_80886D4(void) //sub_80886F0 static bool8 sub_80886F0(void) { - switch (sOptionsMenu->state2) + switch (sOptionsMenuPtr->state2) { case 0: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); break; case 1: - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); break; case 2: - LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(sOptionsMenuPalette, 0x10, 0x20); LoadPalette(stdpal_get(2), 0xF0, 0x20); break; case 3: @@ -359,7 +365,7 @@ static bool8 sub_80886F0(void) default: return TRUE; } - sOptionsMenu->state2++; + sOptionsMenuPtr->state2++; return FALSE; } @@ -372,12 +378,12 @@ static void sub_8088780(u8 taskId) u8 v2, v5; struct OptionsMenu v4; - switch (sOptionsMenu->state3) + switch (sOptionsMenuPtr->state3) { case 0: BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); sub_8088444(); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call @@ -385,32 +391,32 @@ static void sub_8088780(u8 taskId) switch (sub_80888C0()) { case 1: - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; break; case 2: - LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); - LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; case 3: - sub_8088DE0(sOptionsMenu->unkE); + sub_8088DE0(sOptionsMenuPtr->unkE); break; case 4: - sub_80889A8(sOptionsMenu->unkE); - sOptionsMenu->state3++; + sub_80889A8(sOptionsMenuPtr->unkE); + sOptionsMenuPtr->state3++; break; default: return; } case 3: BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 1: case 4: if (gPaletteFade.active) return; - sOptionsMenu->state3++; + sOptionsMenuPtr->state3++; case 5: sub_8088B00(taskId); break; @@ -426,7 +432,7 @@ static void sub_8088780(u8 taskId) "\tsub sp, 0x4\n" "\tlsls r0, 24\n" "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionsMenu\n" + "\tldr r1, _080887A0 @ =sOptionsMenuPtr\n" "\tldr r0, [r1]\n" "\tldrb r0, [r0, 0x10]\n" "\tadds r3, r1, 0\n" @@ -440,7 +446,7 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_080887A0: .4byte sOptionsMenu\n" + "_080887A0: .4byte sOptionsMenuPtr\n" "_080887A4: .4byte _080887A8\n" "\t.align 2, 0\n" "_080887A8:\n" @@ -459,11 +465,11 @@ static void sub_8088780(u8 taskId) "\tmovs r3, 0\n" "\tbl BeginNormalPaletteFade\n" "\tbl sub_8088444\n" - "\tldr r0, _080887DC @ =sOptionsMenu\n" + "\tldr r0, _080887DC @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_080887DC: .4byte sOptionsMenu\n" + "_080887DC: .4byte sOptionsMenuPtr\n" "_080887E0:\n" "\tbl sub_80BF72C\n" "\tcmp r0, 0x1\n" @@ -488,13 +494,13 @@ static void sub_8088780(u8 taskId) "\t.4byte _08088858\n" "\t.4byte _08088868\n" "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionsMenu\n" + "\tldr r0, _08088820 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088820: .4byte sOptionsMenu\n" + "_08088820: .4byte sOptionsMenuPtr\n" "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionsMenu\n" + "\tldr r4, _08088854 @ =sOptionsMenuPtr\n" "\tldr r0, [r4]\n" "\tldrb r0, [r0, 0xA]\n" "\tbl GetUserFrameGraphicsInfo\n" @@ -515,24 +521,24 @@ static void sub_8088780(u8 taskId) "\tldr r0, [r4]\n" "\tb _0808886C\n" "\t.align 2, 0\n" - "_08088854: .4byte sOptionsMenu\n" + "_08088854: .4byte sOptionsMenuPtr\n" "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionsMenu\n" + "\tldr r0, _08088864 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tldrh r0, [r0, 0xE]\n" "\tbl sub_8088DE0\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088864: .4byte sOptionsMenu\n" + "_08088864: .4byte sOptionsMenuPtr\n" "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionsMenu\n" + "\tldr r0, _08088874 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "_0808886C:\n" "\tldrb r0, [r0, 0xE]\n" "\tbl sub_80889A8\n" "\tb _080888B6\n" "\t.align 2, 0\n" - "_08088874: .4byte sOptionsMenu\n" + "_08088874: .4byte sOptionsMenuPtr\n" "_08088878:\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" @@ -541,11 +547,11 @@ static void sub_8088780(u8 taskId) "\tmovs r2, 0\n" "\tmovs r3, 0x10\n" "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionsMenu\n" + "\tldr r0, _08088890 @ =sOptionsMenuPtr\n" "\tldr r1, [r0]\n" "\tb _080888A2\n" "\t.align 2, 0\n" - "_08088890: .4byte sOptionsMenu\n" + "_08088890: .4byte sOptionsMenuPtr\n" "_08088894:\n" "\tldr r0, _080888AC @ =gPaletteFade\n" "\tldrb r1, [r0, 0x7]\n" @@ -579,43 +585,43 @@ static u8 sub_80888C0(void) u16* curr; if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - current = sOptionsMenu->option[(sOptionsMenu->unkE)]; - if (current == (gUnknown_83CC304[sOptionsMenu->unkE] - 1)) - sOptionsMenu->option[sOptionsMenu->unkE] = 0; + current = sOptionsMenuPtr->option[(sOptionsMenuPtr->unkE)]; + if (current == (sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1)) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = 0; else - sOptionsMenu->option[sOptionsMenu->unkE] = current + 1; - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + sOptionsMenuPtr->option[sOptionsMenuPtr->unkE] = current + 1; + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - curr = &sOptionsMenu->option[sOptionsMenu->unkE]; + curr = &sOptionsMenuPtr->option[sOptionsMenuPtr->unkE]; if (*curr == 0) - *curr = gUnknown_83CC304[sOptionsMenu->unkE] - 1; + *curr = sOptionsMenuItemCounts[sOptionsMenuPtr->unkE] - 1; else --*(curr); - if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + if (sOptionsMenuPtr->unkE == MENUITEM_FRAMETYPE) return 2; else return 4; } else if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (sOptionsMenu->unkE == MENUITEM_TEXTSPEED) - sOptionsMenu->unkE = MENUITEM_CANCEL; + if (sOptionsMenuPtr->unkE == MENUITEM_TEXTSPEED) + sOptionsMenuPtr->unkE = MENUITEM_CANCEL; else - sOptionsMenu->unkE = sOptionsMenu->unkE - 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE - 1; return 3; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (sOptionsMenu->unkE == MENUITEM_CANCEL) - sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + if (sOptionsMenuPtr->unkE == MENUITEM_CANCEL) + sOptionsMenuPtr->unkE = MENUITEM_TEXTSPEED; else - sOptionsMenu->unkE = sOptionsMenu->unkE + 1; + sOptionsMenuPtr->unkE = sOptionsMenuPtr->unkE + 1; return 3; } else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) @@ -638,7 +644,7 @@ static void sub_80889A8(u8 selection) u8* v8; u8 x, y; - memcpy(&dst, gUnknown_83CC363, 3); + memcpy(&dst, sOptionsMenuTextColor, 3); y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; x = 0x82; FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); @@ -646,23 +652,23 @@ static void sub_80889A8(u8 selection) switch (selection) { case MENUITEM_TEXTSPEED: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sTextSpeedOptions); break; case MENUITEM_BATTLESCENE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions); break; case MENUITEM_BATTLESTYLE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions); break; case MENUITEM_SOUND: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions); break; case MENUITEM_BUTTONMODE: - AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions); break; case MENUITEM_FRAMETYPE: StringCopy(str, gText_FrameType); - ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + ConvertIntToDecimalStringN(v8, sOptionsMenuPtr->option[2*selection] + 1, 1, 2); StringAppendN(str, v8, 3); AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); break; @@ -683,7 +689,7 @@ static void sub_80889A8(u8 selection) "\tlsls r0, 24\n" "\tlsrs r5, r0, 24\n" "\tadd r4, sp, 0x2C\n" - "\tldr r1, _08088A08 @ =gUnknown_83CC363\n" + "\tldr r1, _08088A08 @ =sOptionsMenuTextColor\n" "\tadds r0, r4, 0\n" "\tmovs r2, 0x3\n" "\tbl memcpy\n" @@ -721,7 +727,7 @@ static void sub_80889A8(u8 selection) "\tldr r0, [r0]\n" "\tmov pc, r0\n" "\t.align 2, 0\n" - "_08088A08: .4byte gUnknown_83CC363\n" + "_08088A08: .4byte sOptionsMenuTextColor\n" "_08088A0C: .4byte _08088A10\n" "\t.align 2, 0\n" "_08088A10:\n" @@ -736,45 +742,45 @@ static void sub_80889A8(u8 selection) "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A34 @ =gUnknown_83CC330\n" + "\tldr r2, _08088A34 @ =sTextSpeedOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A34: .4byte gUnknown_83CC330\n" + "_08088A34: .4byte sTextSpeedOptions\n" "_08088A38:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A44 @ =gUnknown_83CC33C\n" + "\tldr r2, _08088A44 @ =sBattleSceneOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A44: .4byte gUnknown_83CC33C\n" + "_08088A44: .4byte sBattleSceneOptions\n" "_08088A48:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A54 @ =gUnknown_83CC344\n" + "\tldr r2, _08088A54 @ =sBattleStyleOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A54: .4byte gUnknown_83CC344\n" + "_08088A54: .4byte sBattleStyleOptions\n" "_08088A58:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A64 @ =gUnknown_83CC34C\n" + "\tldr r2, _08088A64 @ =sSoundOptions\n" "\tb _08088A72\n" "\t.align 2, 0\n" - "_08088A64: .4byte gUnknown_83CC34C\n" + "_08088A64: .4byte sSoundOptions\n" "_08088A68:\n" "\tstr r6, [sp]\n" "\tmovs r0, 0x1\n" "\tnegs r0, r0\n" "\tstr r0, [sp, 0x4]\n" - "\tldr r2, _08088A94 @ =gUnknown_83CC354\n" + "\tldr r2, _08088A94 @ =sButtonTypeOptions\n" "_08088A72:\n" - "\tldr r0, _08088A98 @ =sOptionsMenu\n" + "\tldr r0, _08088A98 @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -790,14 +796,14 @@ static void sub_80889A8(u8 selection) "\tbl AddTextPrinterParameterized3\n" "\tb _08088ADE\n" "\t.align 2, 0\n" - "_08088A94: .4byte gUnknown_83CC354\n" - "_08088A98: .4byte sOptionsMenu\n" + "_08088A94: .4byte sButtonTypeOptions\n" + "_08088A98: .4byte sOptionsMenuPtr\n" "_08088A9C:\n" "\tldr r1, _08088AF8 @ =gText_FrameType\n" "\tadd r0, sp, 0xC\n" "\tbl StringCopy\n" "\tadd r4, sp, 0x20\n" - "\tldr r0, _08088AFC @ =sOptionsMenu\n" + "\tldr r0, _08088AFC @ =sOptionsMenuPtr\n" "\tldr r0, [r0]\n" "\tlsls r1, r5, 1\n" "\tadds r0, r1\n" @@ -836,7 +842,7 @@ static void sub_80889A8(u8 selection) "\tbx r0\n" "\t.align 2, 0\n" "_08088AF8: .4byte gText_FrameType\n" - "_08088AFC: .4byte sOptionsMenu\n"); + "_08088AFC: .4byte sOptionsMenuPtr\n"); } #endif @@ -848,15 +854,15 @@ static void sub_8088B00(u8 taskId) SetMainCallback2(gMain.savedCallback); FreeAllWindowBuffers(); - gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenu->option[MENUITEM_TEXTSPEED]; - gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenu->option[MENUITEM_BATTLESCENE]; - gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenu->option[MENUITEM_BATTLESTYLE]; - gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND]; - gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenu->option[MENUITEM_BUTTONMODE]; - gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenu->option[MENUITEM_FRAMETYPE]; + gSaveBlock2Ptr->optionsTextSpeed = (u8) sOptionsMenuPtr->option[MENUITEM_TEXTSPEED]; + gSaveBlock2Ptr->optionsBattleSceneOff = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESCENE]; + gSaveBlock2Ptr->optionsBattleStyle = (u8) sOptionsMenuPtr->option[MENUITEM_BATTLESTYLE]; + gSaveBlock2Ptr->optionsSound = sOptionsMenuPtr->option[MENUITEM_SOUND]; + gSaveBlock2Ptr->optionsButtonMode = (u8) sOptionsMenuPtr->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = (u8) sOptionsMenuPtr->option[MENUITEM_FRAMETYPE]; SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); - Free(sOptionsMenu); - sOptionsMenu = NULL; + Free(sOptionsMenuPtr); + sOptionsMenuPtr = NULL; DestroyTask(taskId); } @@ -905,7 +911,7 @@ static void sub_8088D8C(void) FillWindowPixelBuffer(1, 0x11); for (i = 0; i < MENUITEM_COUNT; i++) { - AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); + AddTextPrinterParameterized(1, 2, sOptionMenuItemsNames[i], 8, (u8) ((i*(GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, 0xFF, 0); } } diff --git a/sym_ewram.txt b/sym_ewram.txt index cec65b59c..8ff8247d9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -sOptionsMenu: @ 2039620 +sOptionsMenuPtr: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 -- cgit v1.2.3 From a50adf3a1bc7c63b53caea72d23d61899e086eac Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:53:23 -0700 Subject: fix formatting on option menu --- ld_script.txt | 2 +- src/option_menu.c | 70 +++++++++++++++++++++++++++---------------------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index 50d647cda..a6676b100 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - src/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c index 4898ac1cd..8450633f5 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -58,15 +58,15 @@ static const struct WindowTemplate sOptionMenuWinTemplates[] = //3CC2B8 .paletteNum = 1, .baseBlock = 0x36, }, - { - .bg = 2, - .tilemapLeft = 0, - .tilemapTop = 0, - .width = 30, - .height = 2, - .paletteNum = 0xF, - .baseBlock = 0x16e, - }, + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x16e, + }, DUMMY_WIN_TEMPLATE, }; static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 @@ -90,16 +90,16 @@ static const struct BgTemplate sOptionMenuBgTemplates[] = //3CC2D8 .baseTile = 0, }, { - .bg = 2, - .charBaseIndex = 1, - .mapBaseIndex = 29, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0, + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0, }, }; -static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 +static const u16 sOptionsMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal"); //3CC2E4 static const u16 sOptionsMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0}; //3CC304 static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 { @@ -111,35 +111,35 @@ static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] = //3CC314 [MENUITEM_FRAMETYPE] = gText_Frame, [MENUITEM_CANCEL] = gText_OptionMenuCancel, }; -static const u8 *const sTextSpeedOptions[] = //3CC330 +static const u8 *const sTextSpeedOptions[] = //3CC330 { - gText_TextSpeedSlow, - gText_TextSpeedMid, - gText_TextSpeedFast + gText_TextSpeedSlow, + gText_TextSpeedMid, + gText_TextSpeedFast }; -static const u8 *const sBattleSceneOptions[] = //3CC33C +static const u8 *const sBattleSceneOptions[] = //3CC33C { - gText_BattleSceneOn, - gText_BattleSceneOff + gText_BattleSceneOn, + gText_BattleSceneOff }; static const u8 *const sBattleStyleOptions[] = //3CC344 { - gText_BattleStyleShift, - gText_BattleStyleSet + gText_BattleStyleShift, + gText_BattleStyleSet }; -static const u8 *const sSoundOptions[] = //3CC34C +static const u8 *const sSoundOptions[] = //3CC34C { - gText_SoundMono, - gText_SoundStereo + gText_SoundMono, + gText_SoundStereo }; -static const u8 *const sButtonTypeOptions[] = //3CC354 +static const u8 *const sButtonTypeOptions[] = //3CC354 { - gText_ButtonTypeNormal, - gText_ButtonTypeLEqualsA, - gText_ButtonTypeLR, + gText_ButtonTypeNormal, + gText_ButtonTypeLEqualsA, + gText_ButtonTypeLR, }; -static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 -static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 +static const u8 sOptionsMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; //3CC360 +static const u8 sOptionsMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED}; //3CC363 //This file's functions -- cgit v1.2.3 From d84cf59678d75c50896ba46b3047c65ea5e106d9 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 09:55:31 -0700 Subject: fix tab vs space format --- include/global.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/global.h b/include/global.h index 63c6923bd..744d23eb3 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; -- cgit v1.2.3 From 3bf1f5e65d41c19fe8a5f67e3c42a709aa86c4e4 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 12:57:11 -0700 Subject: start shop.c --- asm/shop.s | 188 +++++++++++++++------------------------------------------- ld_script.txt | 2 + src/shop.c | 68 +++++++++++++++++++++ sym_ewram.txt | 2 +- 4 files changed, 119 insertions(+), 141 deletions(-) create mode 100644 src/shop.c diff --git a/asm/shop.s b/asm/shop.s index bc5eccd64..70c9892a0 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -5,98 +5,6 @@ .text - thumb_func_start sub_809AAB0 -sub_809AAB0: @ 809AAB0 - push {r4-r6,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - bl sub_809AB7C - ldr r4, _0809AAE8 @ =gUnknown_2039934 - movs r1, 0xF - ands r1, r0 - ldrb r2, [r4, 0x16] - movs r0, 0x10 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x16] - movs r0, 0 - strh r0, [r4, 0xC] - bl ContextNpcGetTextColor - lsls r0, 24 - cmp r0, 0 - bne _0809AAF0 - ldrh r0, [r4, 0x16] - ldr r1, _0809AAEC @ =0xfffffe0f - ands r1, r0 - movs r0, 0x40 - b _0809AAF8 - .align 2, 0 -_0809AAE8: .4byte gUnknown_2039934 -_0809AAEC: .4byte 0xfffffe0f -_0809AAF0: - ldrh r0, [r4, 0x16] - ldr r1, _0809AB68 @ =0xfffffe0f - ands r1, r0 - movs r0, 0x50 -_0809AAF8: - orrs r1, r0 - strh r1, [r4, 0x16] - ldr r4, _0809AB6C @ =gUnknown_2039950 - ldr r0, _0809AB70 @ =gUnknown_83DF0BC - bl AddWindow - strb r0, [r4] - ldrb r0, [r4] - movs r1, 0 - bl SetStdWindowBorderStyle - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r4] - movs r6, 0x10 - str r6, [sp] - movs r5, 0x3 - str r5, [sp, 0x4] - ldr r1, _0809AB74 @ =gUnknown_83DF09C - str r1, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x2 - bl PrintTextArray - ldrb r0, [r4] - str r6, [sp] - str r5, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursor - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x1 - bl CopyWindowToVram - ldr r0, _0809AB78 @ =sub_809AC10 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809AB68: .4byte 0xfffffe0f -_0809AB6C: .4byte gUnknown_2039950 -_0809AB70: .4byte gUnknown_83DF0BC -_0809AB74: .4byte gUnknown_83DF09C -_0809AB78: .4byte sub_809AC10 - thumb_func_end sub_809AAB0 - thumb_func_start sub_809AB7C sub_809AB7C: @ 809AB7C push {r4,r5,lr} @@ -110,7 +18,7 @@ _0809AB88: b _0809ABCE _0809AB8C: movs r4, 0 - ldr r1, _0809ABD4 @ =gUnknown_2039934 + ldr r1, _0809ABD4 @ =gShopData ldrh r0, [r1, 0x10] cmp r4, r0 bcs _0809ABCC @@ -148,14 +56,14 @@ _0809ABCE: pop {r1} bx r1 .align 2, 0 -_0809ABD4: .4byte gUnknown_2039934 +_0809ABD4: .4byte gShopData thumb_func_end sub_809AB7C thumb_func_start sub_809ABD8 sub_809ABD8: @ 809ABD8 push {lr} adds r1, r0, 0 - ldr r2, _0809AC00 @ =gUnknown_2039934 + ldr r2, _0809AC00 @ =gShopData str r1, [r2, 0x4] movs r0, 0 strh r0, [r2, 0x10] @@ -176,16 +84,16 @@ _0809ABFC: pop {r0} bx r0 .align 2, 0 -_0809AC00: .4byte gUnknown_2039934 +_0809AC00: .4byte gShopData thumb_func_end sub_809ABD8 thumb_func_start sub_809AC04 sub_809AC04: @ 809AC04 - ldr r1, _0809AC0C @ =gUnknown_2039934 + ldr r1, _0809AC0C @ =gShopData str r0, [r1] bx lr .align 2, 0 -_0809AC0C: .4byte gUnknown_2039934 +_0809AC0C: .4byte gShopData thumb_func_end sub_809AC04 thumb_func_start sub_809AC10 @@ -313,7 +221,7 @@ sub_809ACF8: @ 809ACF8 bl sub_809C138 adds r0, r4, 0 bl DestroyTask - ldr r0, _0809AD20 @ =gUnknown_2039934 + ldr r0, _0809AD20 @ =gShopData ldr r0, [r0] cmp r0, 0 beq _0809AD1A @@ -323,7 +231,7 @@ _0809AD1A: pop {r0} bx r0 .align 2, 0 -_0809AD20: .4byte gUnknown_2039934 +_0809AD20: .4byte gShopData thumb_func_end sub_809ACF8 thumb_func_start sub_809AD24 @@ -414,7 +322,7 @@ sub_809ADC0: @ 809ADC0 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - ldr r0, _0809ADE0 @ =gUnknown_2039934 + ldr r0, _0809ADE0 @ =gShopData ldrb r0, [r0, 0x16] lsls r0, 28 lsrs r0, 28 @@ -425,7 +333,7 @@ sub_809ADC0: @ 809ADC0 pop {r0} bx r0 .align 2, 0 -_0809ADE0: .4byte gUnknown_2039934 +_0809ADE0: .4byte gShopData thumb_func_end sub_809ADC0 thumb_func_start sub_809ADE4 @@ -465,7 +373,7 @@ sub_809AE14: @ 809AE14 bne _0809AE2C b _0809AF54 _0809AE2C: - ldr r0, _0809AE94 @ =gUnknown_2039934 + ldr r0, _0809AE94 @ =gShopData movs r5, 0 strh r5, [r0, 0xC] strh r5, [r0, 0xE] @@ -508,7 +416,7 @@ _0809AE2C: b _0809AF64 .align 2, 0 _0809AE90: .4byte gMain -_0809AE94: .4byte gUnknown_2039934 +_0809AE94: .4byte gShopData _0809AE98: .4byte sub_809BBC0 _0809AE9C: .4byte gMultiuseListMenuTemplate _0809AEA0: .4byte gTasks @@ -568,7 +476,7 @@ _0809AEAC: movs r2, 0 movs r3, 0 bl FillBgTilemapBufferRect_Palette0 - ldr r0, _0809AF50 @ =gUnknown_2039934 + ldr r0, _0809AF50 @ =gShopData ldrb r0, [r0, 0x16] lsls r0, 28 lsrs r0, 28 @@ -577,7 +485,7 @@ _0809AEAC: b _0809AF5E .align 2, 0 _0809AF4C: .4byte 0x01000100 -_0809AF50: .4byte gUnknown_2039934 +_0809AF50: .4byte gShopData _0809AF54: bl FreeTempTileDataBuffersIfPossible lsls r0, 24 @@ -722,7 +630,7 @@ sub_809B080: @ 809B080 str r0, [sp] movs r0, 0x1 bl DecompressAndCopyTileDataToVram - ldr r0, _0809B0B4 @ =gUnknown_2039934 + ldr r0, _0809B0B4 @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -735,7 +643,7 @@ sub_809B080: @ 809B080 b _0809B0CA .align 2, 0 _0809B0B0: .4byte gUnknown_8E85DC8 -_0809B0B4: .4byte gUnknown_2039934 +_0809B0B4: .4byte gShopData _0809B0B8: .4byte gUnknown_8E85EFC _0809B0BC: .4byte gUnknown_2039954 _0809B0C0: @@ -780,7 +688,7 @@ sub_809B10C: @ 809B10C bne _0809B118 movs r2, 0xB _0809B118: - ldr r0, _0809B138 @ =gUnknown_2039934 + ldr r0, _0809B138 @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -796,7 +704,7 @@ _0809B118: bl SetBgRectPal b _0809B14E .align 2, 0 -_0809B138: .4byte gUnknown_2039934 +_0809B138: .4byte gShopData _0809B13C: movs r0, 0x8 str r0, [sp] @@ -836,7 +744,7 @@ sub_809B15C: @ 809B15C sub_809B188: @ 809B188 push {r4-r7,lr} ldr r7, _0809B1C0 @ =gUnknown_2039964 - ldr r4, _0809B1C4 @ =gUnknown_2039934 + ldr r4, _0809B1C4 @ =gShopData ldrh r0, [r4, 0x10] adds r0, 0x1 lsls r0, 3 @@ -860,7 +768,7 @@ _0809B1B2: b _0809B2F0 .align 2, 0 _0809B1C0: .4byte gUnknown_2039964 -_0809B1C4: .4byte gUnknown_2039934 +_0809B1C4: .4byte gShopData _0809B1C8: .4byte gUnknown_2039968 _0809B1CC: movs r6, 0 @@ -906,7 +814,7 @@ _0809B1F2: str r0, [r1, 0x4] ldr r5, _0809B2D4 @ =gMultiuseListMenuTemplate str r2, [r5] - ldr r6, _0809B2D8 @ =gUnknown_2039934 + ldr r6, _0809B2D8 @ =gShopData ldrh r0, [r6, 0x10] adds r0, 0x1 movs r1, 0 @@ -993,13 +901,13 @@ _0809B2C8: .4byte gUnknown_2039968 _0809B2CC: .4byte gFameCheckerText_Cancel _0809B2D0: .4byte gUnknown_2039964 _0809B2D4: .4byte gMultiuseListMenuTemplate -_0809B2D8: .4byte gUnknown_2039934 +_0809B2D8: .4byte gShopData _0809B2DC: .4byte sub_809B320 _0809B2E0: .4byte sub_809B408 _0809B2E4: strh r0, [r5, 0xE] _0809B2E6: - ldr r0, _0809B2F8 @ =gUnknown_2039934 + ldr r0, _0809B2F8 @ =gShopData ldr r1, _0809B2FC @ =gMultiuseListMenuTemplate ldrh r1, [r1, 0xE] strh r1, [r0, 0x12] @@ -1009,7 +917,7 @@ _0809B2F0: pop {r1} bx r1 .align 2, 0 -_0809B2F8: .4byte gUnknown_2039934 +_0809B2F8: .4byte gShopData _0809B2FC: .4byte gMultiuseListMenuTemplate thumb_func_end sub_809B188 @@ -1058,7 +966,7 @@ _0809B34A: movs r0, 0x5 movs r1, 0 bl FillWindowPixelBuffer - ldr r6, _0809B388 @ =gUnknown_2039934 + ldr r6, _0809B388 @ =gShopData ldrb r0, [r6, 0x16] movs r4, 0xF ands r4, r0 @@ -1083,7 +991,7 @@ _0809B34A: b _0809B398 .align 2, 0 _0809B384: .4byte gUnknown_8416757 -_0809B388: .4byte gUnknown_2039934 +_0809B388: .4byte gShopData _0809B38C: ldr r0, _0809B3D0 @ =0x00000177 ldrb r1, [r6, 0x17] @@ -1091,7 +999,7 @@ _0809B38C: lsrs r1, 30 bl CreateItemMenuIcon _0809B398: - ldr r3, _0809B3D4 @ =gUnknown_2039934 + ldr r3, _0809B3D4 @ =gShopData ldrb r2, [r3, 0x17] lsls r0, r2, 29 lsrs r0, 30 @@ -1120,7 +1028,7 @@ _0809B398: b _0809B400 .align 2, 0 _0809B3D0: .4byte 0x00000177 -_0809B3D4: .4byte gUnknown_2039934 +_0809B3D4: .4byte gShopData _0809B3D8: movs r0, 0x6 movs r1, 0 @@ -1318,13 +1226,13 @@ _0809B568: .4byte gUnknown_8416217 thumb_func_start sub_809B56C sub_809B56C: @ 809B56C - ldr r0, _0809B578 @ =gUnknown_2039934 + ldr r0, _0809B578 @ =gShopData ldrh r0, [r0, 0x16] lsls r0, 23 lsrs r0, 27 bx lr .align 2, 0 -_0809B578: .4byte gUnknown_2039934 +_0809B578: .4byte gShopData thumb_func_end sub_809B56C thumb_func_start sub_809B57C @@ -1469,7 +1377,7 @@ _0809B68C: .4byte CB2_ReturnToField sub_809B690: @ 809B690 push {r4,lr} sub sp, 0x10 - ldr r4, _0809B6C0 @ =gUnknown_2039934 + ldr r4, _0809B6C0 @ =gShopData ldrb r1, [r4, 0x16] movs r0, 0xF ands r0, r1 @@ -1492,7 +1400,7 @@ sub_809B690: @ 809B690 movs r3, 0x68 b _0809B6E2 .align 2, 0 -_0809B6C0: .4byte gUnknown_2039934 +_0809B6C0: .4byte gShopData _0809B6C4: ldrh r0, [r4, 0x10] ldrh r1, [r4, 0x12] @@ -1527,7 +1435,7 @@ _0809B6E2: sub_809B6FC: @ 809B6FC push {r4,lr} sub sp, 0x10 - ldr r4, _0809B738 @ =gUnknown_2039934 + ldr r4, _0809B738 @ =gShopData movs r0, 0x1 strh r0, [r4, 0x18] movs r0, 0x2 @@ -1554,13 +1462,13 @@ sub_809B6FC: @ 809B6FC pop {r0} bx r0 .align 2, 0 -_0809B738: .4byte gUnknown_2039934 +_0809B738: .4byte gShopData thumb_func_end sub_809B6FC thumb_func_start sub_809B73C sub_809B73C: @ 809B73C push {r4,lr} - ldr r4, _0809B760 @ =gUnknown_2039934 + ldr r4, _0809B760 @ =gShopData ldrb r1, [r4, 0x17] movs r0, 0xF8 ands r0, r1 @@ -1577,7 +1485,7 @@ _0809B758: pop {r0} bx r0 .align 2, 0 -_0809B760: .4byte gUnknown_2039934 +_0809B760: .4byte gShopData thumb_func_end sub_809B73C thumb_func_start sub_809B764 @@ -2104,7 +2012,7 @@ sub_809BB44: @ 809BB44 movs r0, 0x3 movs r1, 0x11 bl FillWindowPixelBuffer - ldr r0, _0809BBB0 @ =gUnknown_2039934 + ldr r0, _0809BBB0 @ =gShopData ldr r3, [r0, 0x8] movs r0, 0xFF str r0, [sp] @@ -2141,7 +2049,7 @@ sub_809BB44: @ 809BB44 bx r0 .align 2, 0 _0809BBAC: .4byte gTasks+0x8 -_0809BBB0: .4byte gUnknown_2039934 +_0809BBB0: .4byte gShopData _0809BBB4: .4byte gStringVar1 _0809BBB8: .4byte gStringVar4 _0809BBBC: .4byte gText_TimesStrVar1 @@ -2314,7 +2222,7 @@ sub_809BCA0: @ 809BCA0 lsrs r2, r0, 16 cmp r2, 0x63 bls _0809BD58 - ldr r1, _0809BD54 @ =gUnknown_2039934 + ldr r1, _0809BD54 @ =gShopData movs r0, 0x63 b _0809BD5E .align 2, 0 @@ -2323,9 +2231,9 @@ _0809BD44: .4byte gStringVar1 _0809BD48: .4byte gStringVar4 _0809BD4C: .4byte gUnknown_8416749 _0809BD50: .4byte gSaveBlock1Ptr -_0809BD54: .4byte gUnknown_2039934 +_0809BD54: .4byte gShopData _0809BD58: - ldr r1, _0809BD80 @ =gUnknown_2039934 + ldr r1, _0809BD80 @ =gShopData lsls r0, r2, 24 lsrs r0, 24 _0809BD5E: @@ -2346,7 +2254,7 @@ _0809BD68: pop {r0} bx r0 .align 2, 0 -_0809BD80: .4byte gUnknown_2039934 +_0809BD80: .4byte gShopData _0809BD84: .4byte gTasks _0809BD88: .4byte sub_809BD8C thumb_func_end sub_809BCA0 @@ -2363,7 +2271,7 @@ sub_809BD8C: @ 809BD8C ldr r1, _0809BDCC @ =gTasks+0x8 adds r4, r0, r1 adds r0, r4, 0x2 - ldr r6, _0809BDD0 @ =gUnknown_2039934 + ldr r6, _0809BDD0 @ =gShopData ldrh r1, [r6, 0x14] bl AdjustQuantityAccordingToDPadInput lsls r0, 24 @@ -2383,7 +2291,7 @@ sub_809BD8C: @ 809BD8C b _0809BE88 .align 2, 0 _0809BDCC: .4byte gTasks+0x8 -_0809BDD0: .4byte gUnknown_2039934 +_0809BDD0: .4byte gShopData _0809BDD4: ldr r0, _0809BE3C @ =gMain ldrh r1, [r0, 0x2E] @@ -2532,7 +2440,7 @@ sub_809BF0C: @ 809BF0C movs r5, 0xA4 lsls r5, 2 adds r0, r5 - ldr r1, _0809BF5C @ =gUnknown_2039934 + ldr r1, _0809BF5C @ =gShopData ldr r1, [r1, 0x8] bl RemoveMoney movs r0, 0xF8 @@ -2556,7 +2464,7 @@ sub_809BF0C: @ 809BF0C bx r0 .align 2, 0 _0809BF58: .4byte gSaveBlock1Ptr -_0809BF5C: .4byte gUnknown_2039934 +_0809BF5C: .4byte gShopData _0809BF60: .4byte gTasks _0809BF64: .4byte sub_809BF68 thumb_func_end sub_809BF0C @@ -2611,7 +2519,7 @@ sub_809BF98: @ 809BF98 bl PutWindowTilemap movs r0, 0x5 bl PutWindowTilemap - ldr r0, _0809BFFC @ =gUnknown_2039934 + ldr r0, _0809BFFC @ =gShopData ldrb r1, [r0, 0x16] movs r0, 0xF ands r0, r1 @@ -2633,7 +2541,7 @@ _0809BFDC: bx r0 .align 2, 0 _0809BFF8: .4byte gTasks+0x8 -_0809BFFC: .4byte gUnknown_2039934 +_0809BFFC: .4byte gShopData _0809C000: .4byte sub_809BBC0 thumb_func_end sub_809BF98 diff --git a/ld_script.txt b/ld_script.txt index a6676b100..b3a64df47 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -140,6 +140,7 @@ SECTIONS { src/item_menu_icons.o(.text); src/battle_anim_mon_movement.o(.text); src/item.o(.text); + src/shop.o(.text); asm/shop.o(.text); src/berry.o(.text); src/script_menu.o(.text); @@ -441,6 +442,7 @@ SECTIONS { src/item_menu_icons.o(.rodata); src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); + src/shop.o(.rodata); data/shop.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); diff --git a/src/shop.c b/src/shop.c new file mode 100644 index 000000000..25b1f2a74 --- /dev/null +++ b/src/shop.c @@ -0,0 +1,68 @@ +#include "global.h" +#include "menu.h" +#include "new_menu_helpers.h" +#include "window.h" +#include "field_specials.h" +#include "task.h" + + + +struct ShopData { + /*0x00*/ void (*callback)(void); + /*0x04*/ const u16 *itemList; + /*0x08*/ u32 itemPrice; + /*0x0C*/ u16 cursorPos; + /*0x0E*/ u16 _; + /*0x10*/ u16 itemCount; + /*0x12*/ u16 field12; + /*0x14*/ u16 field14; + /*0x16*/ u16 martType:4; // 0x1 if tm list + u16 unk16_1:5; + u16 unk16_2:7; + //INCOMPLETE +}; + + +// external defines +extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates +extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit + +extern u8 sub_809AB7C(u8 a); +extern void sub_809AC10(u8 taskId); + +EWRAM_DATA struct ShopData gShopData = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; + + + +u8 sub_809AAB0(u8 a0) +{ + u32 v1, v2; + + //gShopData.martType = (sub_809AB7C(a0) & 0xF) | ((u8) gShopData.martType & 0xF0); + gShopData.martType = sub_809AB7C(a0); + gShopData.cursorPos = 0; + if (!(ContextNpcGetTextColor())) + { + v1 = (u16) gShopData.unk16_1; + v1 = ~(0x1F0); + //v1 = (s16) gShopData.unk16_1 & 0xFFFFFE0F; + //v1 = gShopData.unk16_1 & (u32) 0xFFFFFE0F; + //v1 &= 0xFE0F; + v2 = 0x40; + } + else + { + v1 = (u16) gShopData.unk16_1; + v1 = ~(0x1F0); + v2 = 0x50; + } + gShopData.martType = v1 | v2; + gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShop + SetStdWindowBorderStyle(gUnknown_2039950, 0); + PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); + Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); + PutWindowTilemap(gUnknown_2039950); + CopyWindowToVram(gUnknown_2039950, 1); + return CreateTask(sub_809AC10, 8); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 8ff8247d9..3584e5080 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -316,7 +316,7 @@ gUnknown_20398B8: @ 20398B8 gUnknown_20398BA: @ 20398BA .space 0x7A -gUnknown_2039934: @ 2039934 +gShopData: @ 2039934 .space 0xE gUnknown_2039942: @ 2039942 -- cgit v1.2.3 From e06da7f066a75bbbcdb4000e96de7af83611ff9b Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 19 Nov 2019 17:36:21 -0700 Subject: start new func --- src/shop.c | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 140 insertions(+), 5 deletions(-) diff --git a/src/shop.c b/src/shop.c index 25b1f2a74..858686743 100644 --- a/src/shop.c +++ b/src/shop.c @@ -7,6 +7,7 @@ + struct ShopData { /*0x00*/ void (*callback)(void); /*0x04*/ const u16 *itemList; @@ -22,6 +23,12 @@ struct ShopData { //INCOMPLETE }; +EWRAM_DATA struct ShopData gShopData = {0}; +EWRAM_DATA u8 gUnknown_2039950 = 0; + +//Functions +static u8 sub_809AB7C(u8 a0); + // external defines extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates @@ -30,16 +37,17 @@ extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQui extern u8 sub_809AB7C(u8 a); extern void sub_809AC10(u8 taskId); -EWRAM_DATA struct ShopData gShopData = {0}; -EWRAM_DATA u8 gUnknown_2039950 = 0; + + +#ifdef NONMATCHING u8 sub_809AAB0(u8 a0) { u32 v1, v2; - - //gShopData.martType = (sub_809AB7C(a0) & 0xF) | ((u8) gShopData.martType & 0xF0); + u8* v3; + gShopData.martType = sub_809AB7C(a0); gShopData.cursorPos = 0; if (!(ContextNpcGetTextColor())) @@ -57,7 +65,8 @@ u8 sub_809AAB0(u8 a0) v1 = ~(0x1F0); v2 = 0x50; } - gShopData.martType = v1 | v2; + gShopData.martType = (u16) (v1 | v2); + gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShop SetStdWindowBorderStyle(gUnknown_2039950, 0); PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); @@ -66,3 +75,129 @@ u8 sub_809AAB0(u8 a0) CopyWindowToVram(gUnknown_2039950, 1); return CreateTask(sub_809AC10, 8); } +#else +NAKED +u8 sub_809AAB0(u8 a0) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0xC\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tbl sub_809AB7C\n" + "\tldr r4, _0809AAE8 @ =gUnknown_2039934\n" + "\tmovs r1, 0xF\n" + "\tands r1, r0\n" + "\tldrb r2, [r4, 0x16]\n" + "\tmovs r0, 0x10\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4, 0x16]\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r4, 0xC]\n" + "\tbl ContextNpcGetTextColor\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0809AAF0\n" + "\tldrh r0, [r4, 0x16]\n" + "\tldr r1, _0809AAEC @ =0xfffffe0f\n" + "\tands r1, r0\n" + "\tmovs r0, 0x40\n" + "\tb _0809AAF8\n" + "\t.align 2, 0\n" + "_0809AAE8: .4byte gUnknown_2039934\n" + "_0809AAEC: .4byte 0xfffffe0f\n" + "_0809AAF0:\n" + "\tldrh r0, [r4, 0x16]\n" + "\tldr r1, _0809AB68 @ =0xfffffe0f\n" + "\tands r1, r0\n" + "\tmovs r0, 0x50\n" + "_0809AAF8:\n" + "\torrs r1, r0\n" + "\tstrh r1, [r4, 0x16]\n" + "\tldr r4, _0809AB6C @ =gUnknown_2039950\n" + "\tldr r0, _0809AB70 @ =gUnknown_83DF0BC\n" + "\tbl AddWindow\n" + "\tstrb r0, [r4]\n" + "\tldrb r0, [r4]\n" + "\tmovs r1, 0\n" + "\tbl SetStdWindowBorderStyle\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0\n" + "\tbl GetMenuCursorDimensionByFont\n" + "\tadds r2, r0, 0\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tldrb r0, [r4]\n" + "\tmovs r6, 0x10\n" + "\tstr r6, [sp]\n" + "\tmovs r5, 0x3\n" + "\tstr r5, [sp, 0x4]\n" + "\tldr r1, _0809AB74 @ =gUnknown_83DF09C\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tmovs r3, 0x2\n" + "\tbl PrintTextArray\n" + "\tldrb r0, [r4]\n" + "\tstr r6, [sp]\n" + "\tstr r5, [sp, 0x4]\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x2\n" + "\tbl Menu_InitCursor\n" + "\tldrb r0, [r4]\n" + "\tbl PutWindowTilemap\n" + "\tldrb r0, [r4]\n" + "\tmovs r1, 0x1\n" + "\tbl CopyWindowToVram\n" + "\tldr r0, _0809AB78 @ =sub_809AC10\n" + "\tmovs r1, 0x8\n" + "\tbl CreateTask\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tadd sp, 0xC\n" + "\tpop {r4-r6}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_0809AB68: .4byte 0xfffffe0f\n" + "_0809AB6C: .4byte gUnknown_2039950\n" + "_0809AB70: .4byte gUnknown_83DF0BC\n" + "_0809AB74: .4byte gUnknown_83DF09C\n" + "_0809AB78: .4byte sub_809AC10\n"); +} +#endif + +static u8 sub_809AB7C(u8 a0) +{ + u16 pocket; + + if (a0 != 0) + return a0; + else if (a0 >= gShopData.itemCount) + return FALSE; + else if (gShopData.itemList[0] == 0) + return FALSE; + else + { + while (ItemId_GetPocket(gShopData.itemCount[i]) != 0) + { + if (ItemId_GetPocket(gShopData.itemCount[i] == POCKET_TM_CASE) + return 1; + + } + } + + + +} + + + + + + + + -- cgit v1.2.3 From 9e0db07ce9172b5d9da5c7e8aa98ddc809b3c0f1 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 20 Nov 2019 15:06:09 -0700 Subject: refine ShopData --- src/shop.c | 140 +++++++------------------------------------------------------ 1 file changed, 14 insertions(+), 126 deletions(-) diff --git a/src/shop.c b/src/shop.c index 858686743..6ec6d0467 100644 --- a/src/shop.c +++ b/src/shop.c @@ -5,7 +5,10 @@ #include "field_specials.h" #include "task.h" - +// enums +// RAM symbols +// Function Declarations +// Data Definitions struct ShopData { @@ -18,16 +21,16 @@ struct ShopData { /*0x12*/ u16 field12; /*0x14*/ u16 field14; /*0x16*/ u16 martType:4; // 0x1 if tm list - u16 unk16_1:5; - u16 unk16_2:7; + u16 unk16_4:5; + u16 unk16_9:7; //INCOMPLETE }; EWRAM_DATA struct ShopData gShopData = {0}; EWRAM_DATA u8 gUnknown_2039950 = 0; -//Functions -static u8 sub_809AB7C(u8 a0); +//Function Declarations +//static u8 sub_809AB7C(u8 a0); // external defines @@ -38,34 +41,15 @@ extern u8 sub_809AB7C(u8 a); extern void sub_809AC10(u8 taskId); - - - - -#ifdef NONMATCHING +// Functions u8 sub_809AAB0(u8 a0) { - u32 v1, v2; - u8* v3; - - gShopData.martType = sub_809AB7C(a0); + gShopData.martType = sub_809AB7C(a0) & 0xF; gShopData.cursorPos = 0; if (!(ContextNpcGetTextColor())) - { - v1 = (u16) gShopData.unk16_1; - v1 = ~(0x1F0); - //v1 = (s16) gShopData.unk16_1 & 0xFFFFFE0F; - //v1 = gShopData.unk16_1 & (u32) 0xFFFFFE0F; - //v1 &= 0xFE0F; - v2 = 0x40; - } + gShopData.unk16_4 = 4; else - { - v1 = (u16) gShopData.unk16_1; - v1 = ~(0x1F0); - v2 = 0x50; - } - gShopData.martType = (u16) (v1 | v2); + gShopData.unk16_4 = 5; gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShop SetStdWindowBorderStyle(gUnknown_2039950, 0); @@ -75,101 +59,8 @@ u8 sub_809AAB0(u8 a0) CopyWindowToVram(gUnknown_2039950, 1); return CreateTask(sub_809AC10, 8); } -#else -NAKED -u8 sub_809AAB0(u8 a0) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tsub sp, 0xC\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tbl sub_809AB7C\n" - "\tldr r4, _0809AAE8 @ =gUnknown_2039934\n" - "\tmovs r1, 0xF\n" - "\tands r1, r0\n" - "\tldrb r2, [r4, 0x16]\n" - "\tmovs r0, 0x10\n" - "\tnegs r0, r0\n" - "\tands r0, r2\n" - "\torrs r0, r1\n" - "\tstrb r0, [r4, 0x16]\n" - "\tmovs r0, 0\n" - "\tstrh r0, [r4, 0xC]\n" - "\tbl ContextNpcGetTextColor\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _0809AAF0\n" - "\tldrh r0, [r4, 0x16]\n" - "\tldr r1, _0809AAEC @ =0xfffffe0f\n" - "\tands r1, r0\n" - "\tmovs r0, 0x40\n" - "\tb _0809AAF8\n" - "\t.align 2, 0\n" - "_0809AAE8: .4byte gUnknown_2039934\n" - "_0809AAEC: .4byte 0xfffffe0f\n" - "_0809AAF0:\n" - "\tldrh r0, [r4, 0x16]\n" - "\tldr r1, _0809AB68 @ =0xfffffe0f\n" - "\tands r1, r0\n" - "\tmovs r0, 0x50\n" - "_0809AAF8:\n" - "\torrs r1, r0\n" - "\tstrh r1, [r4, 0x16]\n" - "\tldr r4, _0809AB6C @ =gUnknown_2039950\n" - "\tldr r0, _0809AB70 @ =gUnknown_83DF0BC\n" - "\tbl AddWindow\n" - "\tstrb r0, [r4]\n" - "\tldrb r0, [r4]\n" - "\tmovs r1, 0\n" - "\tbl SetStdWindowBorderStyle\n" - "\tmovs r0, 0x2\n" - "\tmovs r1, 0\n" - "\tbl GetMenuCursorDimensionByFont\n" - "\tadds r2, r0, 0\n" - "\tlsls r2, 24\n" - "\tlsrs r2, 24\n" - "\tldrb r0, [r4]\n" - "\tmovs r6, 0x10\n" - "\tstr r6, [sp]\n" - "\tmovs r5, 0x3\n" - "\tstr r5, [sp, 0x4]\n" - "\tldr r1, _0809AB74 @ =gUnknown_83DF09C\n" - "\tstr r1, [sp, 0x8]\n" - "\tmovs r1, 0x2\n" - "\tmovs r3, 0x2\n" - "\tbl PrintTextArray\n" - "\tldrb r0, [r4]\n" - "\tstr r6, [sp]\n" - "\tstr r5, [sp, 0x4]\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp, 0x8]\n" - "\tmovs r1, 0x2\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x2\n" - "\tbl Menu_InitCursor\n" - "\tldrb r0, [r4]\n" - "\tbl PutWindowTilemap\n" - "\tldrb r0, [r4]\n" - "\tmovs r1, 0x1\n" - "\tbl CopyWindowToVram\n" - "\tldr r0, _0809AB78 @ =sub_809AC10\n" - "\tmovs r1, 0x8\n" - "\tbl CreateTask\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadd sp, 0xC\n" - "\tpop {r4-r6}\n" - "\tpop {r1}\n" - "\tbx r1\n" - "\t.align 2, 0\n" - "_0809AB68: .4byte 0xfffffe0f\n" - "_0809AB6C: .4byte gUnknown_2039950\n" - "_0809AB70: .4byte gUnknown_83DF0BC\n" - "_0809AB74: .4byte gUnknown_83DF09C\n" - "_0809AB78: .4byte sub_809AC10\n"); -} -#endif +/* static u8 sub_809AB7C(u8 a0) { u16 pocket; @@ -189,11 +80,8 @@ static u8 sub_809AB7C(u8 a0) } } - - - } - +*/ -- cgit v1.2.3 From 0001d360a616bbf07716dd848d32dd646a7006e5 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 21 Nov 2019 08:19:38 -0700 Subject: function progress --- asm/shop.s | 130 ------------------------------------------------------------- src/shop.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 101 insertions(+), 152 deletions(-) diff --git a/asm/shop.s b/asm/shop.s index 70c9892a0..7512ac369 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -5,136 +5,6 @@ .text - thumb_func_start sub_809AB7C -sub_809AB7C: @ 809AB7C - push {r4,r5,lr} - cmp r0, 0 - beq _0809AB8C - lsls r0, 24 - lsrs r0, 24 - b _0809ABCE -_0809AB88: - movs r0, 0x1 - b _0809ABCE -_0809AB8C: - movs r4, 0 - ldr r1, _0809ABD4 @ =gShopData - ldrh r0, [r1, 0x10] - cmp r4, r0 - bcs _0809ABCC - ldr r0, [r1, 0x4] - ldrh r0, [r0] - cmp r0, 0 - beq _0809ABCC - adds r5, r1, 0 -_0809ABA0: - ldr r1, [r5, 0x4] - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _0809AB88 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrh r0, [r5, 0x10] - cmp r4, r0 - bcs _0809ABCC - ldr r0, [r5, 0x4] - lsls r1, r4, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _0809ABA0 -_0809ABCC: - movs r0, 0 -_0809ABCE: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0809ABD4: .4byte gShopData - thumb_func_end sub_809AB7C - - thumb_func_start sub_809ABD8 -sub_809ABD8: @ 809ABD8 - push {lr} - adds r1, r0, 0 - ldr r2, _0809AC00 @ =gShopData - str r1, [r2, 0x4] - movs r0, 0 - strh r0, [r2, 0x10] - ldrh r0, [r1] - cmp r0, 0 - beq _0809ABFC -_0809ABEA: - ldrh r0, [r2, 0x10] - adds r0, 0x1 - strh r0, [r2, 0x10] - ldrh r0, [r2, 0x10] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _0809ABEA -_0809ABFC: - pop {r0} - bx r0 - .align 2, 0 -_0809AC00: .4byte gShopData - thumb_func_end sub_809ABD8 - - thumb_func_start sub_809AC04 -sub_809AC04: @ 809AC04 - ldr r1, _0809AC0C @ =gShopData - str r0, [r1] - bx lr - .align 2, 0 -_0809AC0C: .4byte gShopData - thumb_func_end sub_809AC04 - - thumb_func_start sub_809AC10 -sub_809AC10: @ 809AC10 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _0809AC52 - adds r0, 0x1 - cmp r1, r0 - bne _0809AC3C - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_809ACF8 - b _0809AC52 -_0809AC3C: - ldr r4, _0809AC58 @ =gUnknown_83DF09C - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 21 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 -_0809AC52: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809AC58: .4byte gUnknown_83DF09C - thumb_func_end sub_809AC10 - thumb_func_start sub_809AC5C sub_809AC5C: @ 809AC5C push {r4,lr} diff --git a/src/shop.c b/src/shop.c index 6ec6d0467..8d87eb6ae 100644 --- a/src/shop.c +++ b/src/shop.c @@ -4,6 +4,9 @@ #include "window.h" #include "field_specials.h" #include "task.h" +#include "item.h" +#include "main.h" +#include "sound.h" // enums // RAM symbols @@ -30,15 +33,24 @@ EWRAM_DATA struct ShopData gShopData = {0}; EWRAM_DATA u8 gUnknown_2039950 = 0; //Function Declarations -//static u8 sub_809AB7C(u8 a0); - +static u8 sub_809AB7C(bool32 a0); +static void sub_809AC10(u8 taskId); // external defines extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit -extern u8 sub_809AB7C(u8 a); -extern void sub_809AC10(u8 taskId); +extern void sub_809ACF8(u8 taskId); + +//Data Definitions +/* +static const struct MenuAction sShopMenuActions_BuySellQuit[] = +{ + { gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} }, + { gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} }, + { gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} } +}; +*/ // Functions @@ -60,32 +72,99 @@ u8 sub_809AAB0(u8 a0) return CreateTask(sub_809AC10, 8); } +static u8 sub_809AB7C(u32 a0) +{ + u16 retVal, i; + if (a0) + return (u8)a0; + goto MAIN; + RETURN_1: + return 1; + + MAIN: + i = 0; + if (i >= gShopData.itemCount) + goto RETURN_0; + else if (gShopData.itemList[0] == 0) + goto RETURN_0; + + while (gShopData.itemList[i] != 0) + { + if (ItemId_GetPocket(gShopData.itemList[i]) == POCKET_TM_CASE) + goto RETURN_1; + ++i; + if (i >= gShopData.itemCount) + goto RETURN_0; + else if (gShopData.itemList[i] == 0) + goto RETURN_0; + } + RETURN_0: + return 0; +} + /* -static u8 sub_809AB7C(u8 a0) +void (const u16 *list) //SetShopItemsForSale { - u16 pocket; + u16 i; + gShopData.itemList = list; + gShopData.itemCount = 0; + if (list[0] == 0) + return; - if (a0 != 0) - return a0; - else if (a0 >= gShopData.itemCount) - return FALSE; - else if (gShopData.itemList[0] == 0) - return FALSE; - else + i = 0; + while (list[i] != 0) { - while (ItemId_GetPocket(gShopData.itemCount[i]) != 0) - { - if (ItemId_GetPocket(gShopData.itemCount[i] == POCKET_TM_CASE) - return 1; - - } + gShopData.itemCount++; + if (list[i] == 0) + return; + i++; } } */ +//#ifdef NONMATCHING +// WHAT THE FUCK IS UP WITH THIS FUNCTION +void sub_809ABD8(const u16 *items) +{ + //const u16* mart = items; + u16 item; + gShopData.itemList = items; + gShopData.itemCount = 0; + + //item = items[0]; + if (items[0] == 0) + return; + do { + gShopData.itemCount++; + item = items[gShopData.itemCount]; + } while (item); +} +/* +#else +NAKED +void sub_809ABD8(const u16 *items) + asm_unified("\t +*/ +//SetShopMenuCallback +void sub_809AC04(MainCallback callback) +{ + gShopData.callback = callback; +} - - - +//Task_ShopMenu +static void sub_809AC10(u8 taskId) +{ + s8 a0 = Menu_ProcessInputNoWrapAround(); + if (a0 == -2) + return; + + if (a0 == -1) + { + PlaySE(5); + sub_809ACF8(taskId); + return; + } + //gUnknown_83DF09C.func.u8_void(Menu_GetCursorPos()); +} -- cgit v1.2.3 From 359d345913d7f5ed36c34ede5476fff946318ffd Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 21 Nov 2019 09:05:43 -0700 Subject: temp --- src/shop.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/shop.c b/src/shop.c index 8d87eb6ae..f1dda35b4 100644 --- a/src/shop.c +++ b/src/shop.c @@ -40,17 +40,20 @@ static void sub_809AC10(u8 taskId); extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit +extern void sub_809AC5C(u8 taskId); +extern void sub_809AC98(u8 taskId); extern void sub_809ACF8(u8 taskId); //Data Definitions -/* static const struct MenuAction sShopMenuActions_BuySellQuit[] = { - { gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} }, - { gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} }, - { gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} } + {gUnknown_8416738, {.void_u8 = sub_809AC5C}}, + {gUnknown_841673C, {.void_u8 = sub_809AC98}}, + {gUnknown_8416741, {.void_u8 = sub_809ACF8}} + //{ gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} }, + //{ gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} }, + //{ gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} } }; -*/ // Functions @@ -130,14 +133,11 @@ void sub_809ABD8(const u16 *items) u16 item; gShopData.itemList = items; gShopData.itemCount = 0; - - //item = items[0]; - if (items[0] == 0) - return; - do { - gShopData.itemCount++; - item = items[gShopData.itemCount]; - } while (item); + + while (1) + { + item = items[++gShopData.itemCount]; + } } /* #else @@ -165,6 +165,6 @@ static void sub_809AC10(u8 taskId) sub_809ACF8(taskId); return; } - //gUnknown_83DF09C.func.u8_void(Menu_GetCursorPos()); + gUnknown_83DF09C.func.void_u8(Menu_GetCursorPos()); } -- cgit v1.2.3 From 2cc4db0c786e20c1ef9823d0d0a027f39dfef9f3 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 16:23:06 -0700 Subject: remove .s files --- asm/shop.s | 3341 ------------------------------------------------ data/shop.s | 92 -- data/strings.s | 24 +- include/list_menu.h | 38 +- include/shop.h | 31 +- include/strings.h | 15 + ld_script.txt | 2 - src/buy_menu_helpers.c | 2 +- src/shop.c | 1987 +++++++++++++++++++++++++++- sym_ewram.txt | 2 +- 10 files changed, 2030 insertions(+), 3504 deletions(-) delete mode 100644 asm/shop.s delete mode 100644 data/shop.s diff --git a/asm/shop.s b/asm/shop.s deleted file mode 100644 index 7512ac369..000000000 --- a/asm/shop.s +++ /dev/null @@ -1,3341 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_809AC5C -sub_809AC5C: @ 809AC5C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r2, _0809AC8C @ =sub_809AE14 - adds r0, r4, 0 - movs r1, 0xE - bl SetWordTaskArg - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _0809AC90 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809AC94 @ =sub_809AD40 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809AC8C: .4byte sub_809AE14 -_0809AC90: .4byte gTasks -_0809AC94: .4byte sub_809AD40 - thumb_func_end sub_809AC5C - - thumb_func_start sub_809AC98 -sub_809AC98: @ 809AC98 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r2, _0809ACC8 @ =sub_809ACD4 - adds r0, r4, 0 - movs r1, 0xE - bl SetWordTaskArg - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _0809ACCC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809ACD0 @ =sub_809AD40 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809ACC8: .4byte sub_809ACD4 -_0809ACCC: .4byte gTasks -_0809ACD0: .4byte sub_809AD40 - thumb_func_end sub_809AC98 - - thumb_func_start sub_809ACD4 -sub_809ACD4: @ 809ACD4 - push {lr} - ldr r2, _0809ACEC @ =CB2_ReturnToField - movs r0, 0x2 - movs r1, 0x3 - bl sub_8107DB4 - ldr r1, _0809ACF0 @ =gFieldCallback - ldr r0, _0809ACF4 @ =sub_809AD74 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0809ACEC: .4byte CB2_ReturnToField -_0809ACF0: .4byte gFieldCallback -_0809ACF4: .4byte sub_809AD74 - thumb_func_end sub_809ACD4 - - thumb_func_start sub_809ACF8 -sub_809ACF8: @ 809ACF8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_809AD24 - bl sub_809C138 - adds r0, r4, 0 - bl DestroyTask - ldr r0, _0809AD20 @ =gShopData - ldr r0, [r0] - cmp r0, 0 - beq _0809AD1A - bl _call_via_r0 -_0809AD1A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809AD20: .4byte gShopData - thumb_func_end sub_809ACF8 - - thumb_func_start sub_809AD24 -sub_809AD24: @ 809AD24 - push {r4,lr} - ldr r4, _0809AD3C @ =gUnknown_2039950 - ldrb r0, [r4] - movs r1, 0x2 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809AD3C: .4byte gUnknown_2039950 - thumb_func_end sub_809AD24 - - thumb_func_start sub_809AD40 -sub_809AD40: @ 809AD40 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809AD70 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0809AD68 - adds r0, r4, 0 - movs r1, 0xE - bl GetWordTaskArg - bl SetMainCallback2 - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl DestroyTask -_0809AD68: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809AD70: .4byte gPaletteFade - thumb_func_end sub_809AD40 - - thumb_func_start sub_809AD74 -sub_809AD74: @ 809AD74 - push {lr} - bl sub_807DC00 - ldr r0, _0809AD88 @ =sub_809AD8C - movs r1, 0x8 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0809AD88: .4byte sub_809AD8C - thumb_func_end sub_809AD74 - - thumb_func_start sub_809AD8C -sub_809AD8C: @ 809AD8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl field_weather_is_fade_finished - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809ADB2 - bl sub_809B56C - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0809ADB8 @ =gUnknown_841689E - ldr r3, _0809ADBC @ =sub_809ADC0 - adds r0, r4, 0 - bl DisplayItemMessageOnField -_0809ADB2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809ADB8: .4byte gUnknown_841689E -_0809ADBC: .4byte sub_809ADC0 - thumb_func_end sub_809AD8C - - thumb_func_start sub_809ADC0 -sub_809ADC0: @ 809ADC0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0809ADE0 @ =gShopData - ldrb r0, [r0, 0x16] - lsls r0, 28 - lsrs r0, 28 - bl sub_809AAB0 - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809ADE0: .4byte gShopData - thumb_func_end sub_809ADC0 - - thumb_func_start sub_809ADE4 -sub_809ADE4: @ 809ADE4 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl DoScheduledBgTilemapCopiesToVram - pop {r0} - bx r0 - thumb_func_end sub_809ADE4 - - thumb_func_start sub_809AE00 -sub_809AE00: @ 809AE00 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_809AE00 - - thumb_func_start sub_809AE14 -sub_809AE14: @ 809AE14 - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _0809AE90 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r5, r0, r1 - ldrb r4, [r5] - cmp r4, 0 - beq _0809AEAC - cmp r4, 0x1 - bne _0809AE2C - b _0809AF54 -_0809AE2C: - ldr r0, _0809AE94 @ =gShopData - movs r5, 0 - strh r5, [r0, 0xC] - strh r5, [r0, 0xE] - bl sub_809B15C - bl sub_809B690 - ldr r0, _0809AE98 @ =sub_809BBC0 - movs r1, 0x8 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0809AE9C @ =gMultiuseListMenuTemplate - movs r1, 0 - movs r2, 0 - bl ListMenuInit - ldr r2, _0809AEA0 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x16] - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - str r5, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0809AEA4 @ =sub_809AE00 - bl SetVBlankCallback - ldr r0, _0809AEA8 @ =sub_809ADE4 - bl SetMainCallback2 - b _0809AF64 - .align 2, 0 -_0809AE90: .4byte gMain -_0809AE94: .4byte gShopData -_0809AE98: .4byte sub_809BBC0 -_0809AE9C: .4byte gMultiuseListMenuTemplate -_0809AEA0: .4byte gTasks -_0809AEA4: .4byte sub_809AE00 -_0809AEA8: .4byte sub_809ADE4 -_0809AEAC: - bl SetVBlankHBlankCallbacksToNull - str r4, [sp, 0x8] - movs r1, 0xE0 - lsls r1, 19 - ldr r2, _0809AF4C @ =0x01000100 - add r0, sp, 0x8 - bl CpuFastSet - bl ScanlineEffect_Stop - bl ResetTempTileDataBuffers - bl FreeAllSpritePalettes - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl ClearScheduledBgCopiesToVram - bl ResetItemMenuIconState - bl sub_809AF6C - lsls r0, 24 - cmp r0, 0 - beq _0809AF64 - bl sub_809B188 - lsls r0, 24 - cmp r0, 0 - beq _0809AF64 - bl sub_809AFD0 - movs r4, 0x20 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r0, _0809AF50 @ =gShopData - ldrb r0, [r0, 0x16] - lsls r0, 28 - lsrs r0, 28 - bl BuyMenuInitWindows - bl sub_809B080 - b _0809AF5E - .align 2, 0 -_0809AF4C: .4byte 0x01000100 -_0809AF50: .4byte gShopData -_0809AF54: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _0809AF64 -_0809AF5E: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_0809AF64: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_809AE14 - - thumb_func_start sub_809AF6C -sub_809AF6C: @ 809AF6C - push {r4,r5,lr} - ldr r4, _0809AFB0 @ =gUnknown_2039954 - movs r5, 0x80 - lsls r5, 4 - adds r0, r5, 0 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809AFC0 - ldr r4, _0809AFB4 @ =gUnknown_2039958 - adds r0, r5, 0 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809AFC0 - ldr r4, _0809AFB8 @ =gUnknown_203995C - adds r0, r5, 0 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809AFC0 - ldr r4, _0809AFBC @ =gUnknown_2039960 - adds r0, r5, 0 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0809AFC0 - movs r0, 0x1 - b _0809AFCA - .align 2, 0 -_0809AFB0: .4byte gUnknown_2039954 -_0809AFB4: .4byte gUnknown_2039958 -_0809AFB8: .4byte gUnknown_203995C -_0809AFBC: .4byte gUnknown_2039960 -_0809AFC0: - bl sub_809B604 - bl sub_809B670 - movs r0, 0 -_0809AFCA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809AF6C - - thumb_func_start sub_809AFD0 -sub_809AFD0: @ 809AFD0 - push {lr} - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0809B070 @ =gUnknown_83DF0C4 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r0, _0809B074 @ =gUnknown_2039958 - ldr r1, [r0] - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r0, _0809B078 @ =gUnknown_2039960 - ldr r1, [r0] - movs r0, 0x2 - bl SetBgTilemapBuffer - ldr r0, _0809B07C @ =gUnknown_203995C - ldr r1, [r0] - movs r0, 0x3 - bl SetBgTilemapBuffer - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - pop {r0} - bx r0 - .align 2, 0 -_0809B070: .4byte gUnknown_83DF0C4 -_0809B074: .4byte gUnknown_2039958 -_0809B078: .4byte gUnknown_2039960 -_0809B07C: .4byte gUnknown_203995C - thumb_func_end sub_809AFD0 - - thumb_func_start sub_809B080 -sub_809B080: @ 809B080 - push {r4,lr} - sub sp, 0x4 - ldr r1, _0809B0B0 @ =gUnknown_8E85DC8 - movs r2, 0x90 - lsls r2, 3 - movs r3, 0xF7 - lsls r3, 2 - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - bl DecompressAndCopyTileDataToVram - ldr r0, _0809B0B4 @ =gShopData - ldrb r1, [r0, 0x16] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _0809B0C0 - ldr r0, _0809B0B8 @ =gUnknown_8E85EFC - ldr r1, _0809B0BC @ =gUnknown_2039954 - ldr r1, [r1] - bl LZDecompressWram - b _0809B0CA - .align 2, 0 -_0809B0B0: .4byte gUnknown_8E85DC8 -_0809B0B4: .4byte gShopData -_0809B0B8: .4byte gUnknown_8E85EFC -_0809B0BC: .4byte gUnknown_2039954 -_0809B0C0: - ldr r0, _0809B100 @ =gUnknown_8E86038 - ldr r1, _0809B104 @ =gUnknown_2039954 - ldr r1, [r1] - bl LZDecompressWram -_0809B0CA: - movs r0, 0x40 - bl Alloc - adds r4, r0, 0 - ldr r0, _0809B108 @ =gUnknown_8E86170 - adds r1, r4, 0 - bl LZDecompressWram - adds r0, r4, 0 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - adds r0, 0x20 - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - adds r0, r4, 0 - bl Free - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809B100: .4byte gUnknown_8E86038 -_0809B104: .4byte gUnknown_2039954 -_0809B108: .4byte gUnknown_8E86170 - thumb_func_end sub_809B080 - - thumb_func_start sub_809B10C -sub_809B10C: @ 809B10C - push {lr} - sub sp, 0x8 - movs r2, 0x6 - cmp r0, 0 - bne _0809B118 - movs r2, 0xB -_0809B118: - ldr r0, _0809B138 @ =gShopData - ldrb r1, [r0, 0x16] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _0809B13C - movs r0, 0x6 - str r0, [sp] - str r2, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0xE - movs r3, 0x1E - bl SetBgRectPal - b _0809B14E - .align 2, 0 -_0809B138: .4byte gShopData -_0809B13C: - movs r0, 0x8 - str r0, [sp] - str r2, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0xC - movs r3, 0x1E - bl SetBgRectPal -_0809B14E: - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_809B10C - - thumb_func_start sub_809B15C -sub_809B15C: @ 809B15C - push {lr} - bl sub_809B764 - bl sub_809BAFC - bl BuyMenuDrawMoneyBox - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x3 - bl ScheduleBgCopyTilemapToVram - pop {r0} - bx r0 - thumb_func_end sub_809B15C - - thumb_func_start sub_809B188 -sub_809B188: @ 809B188 - push {r4-r7,lr} - ldr r7, _0809B1C0 @ =gUnknown_2039964 - ldr r4, _0809B1C4 @ =gShopData - ldrh r0, [r4, 0x10] - adds r0, 0x1 - lsls r0, 3 - bl Alloc - str r0, [r7] - cmp r0, 0 - beq _0809B1B2 - ldr r5, _0809B1C8 @ =gUnknown_2039968 - ldrh r0, [r4, 0x10] - adds r0, 0x1 - movs r1, 0xD - muls r0, r1 - bl Alloc - str r0, [r5] - cmp r0, 0 - bne _0809B1CC -_0809B1B2: - bl sub_809B604 - bl sub_809B670 - movs r0, 0 - b _0809B2F0 - .align 2, 0 -_0809B1C0: .4byte gUnknown_2039964 -_0809B1C4: .4byte gShopData -_0809B1C8: .4byte gUnknown_2039968 -_0809B1CC: - movs r6, 0 - b _0809B1F2 -_0809B1D0: - lsls r1, r6, 3 - ldr r0, [r7] - adds r0, r1 - ldr r2, [r4, 0x4] - lsls r1, r6, 1 - adds r1, r2 - ldrh r1, [r1] - movs r2, 0xD - adds r3, r6, 0 - muls r3, r2 - ldr r2, [r5] - adds r2, r3 - bl sub_809B300 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_0809B1F2: - ldrh r0, [r4, 0x10] - cmp r6, r0 - bcc _0809B1D0 - ldr r5, _0809B2C8 @ =gUnknown_2039968 - movs r0, 0xD - adds r4, r6, 0 - muls r4, r0 - ldr r0, [r5] - adds r0, r4 - ldr r1, _0809B2CC @ =gFameCheckerText_Cancel - bl StringCopy - ldr r0, _0809B2D0 @ =gUnknown_2039964 - ldr r2, [r0] - lsls r1, r6, 3 - adds r1, r2 - ldr r0, [r5] - adds r0, r4 - str r0, [r1] - movs r0, 0x2 - negs r0, r0 - str r0, [r1, 0x4] - ldr r5, _0809B2D4 @ =gMultiuseListMenuTemplate - str r2, [r5] - ldr r6, _0809B2D8 @ =gShopData - ldrh r0, [r6, 0x10] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0xC] - movs r0, 0x4 - strb r0, [r5, 0x10] - strb r1, [r5, 0x11] - movs r0, 0x9 - strb r0, [r5, 0x12] - movs r0, 0x1 - strb r0, [r5, 0x13] - ldrb r1, [r5, 0x16] - subs r0, 0x9 - ands r0, r1 - movs r1, 0x39 - negs r1, r1 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r5, 0x16] - ldrb r2, [r5, 0x14] - movs r1, 0x10 - negs r1, r1 - adds r0, r1, 0 - ands r0, r2 - movs r3, 0x2 - orrs r0, r3 - strb r0, [r5, 0x14] - ldrb r2, [r5, 0x17] - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r5, 0x17] - ldrb r0, [r5, 0x15] - ands r1, r0 - strb r1, [r5, 0x15] - movs r0, 0x2 - movs r1, 0x5 - bl GetFontAttribute - lsls r0, 4 - ldrb r2, [r5, 0x14] - movs r4, 0xF - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x14] - movs r0, 0x2 - movs r1, 0x7 - bl GetFontAttribute - lsls r0, 4 - ldrb r2, [r5, 0x15] - adds r1, r4, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x15] - ldr r0, _0809B2DC @ =sub_809B320 - str r0, [r5, 0x4] - ldr r0, _0809B2E0 @ =sub_809B408 - str r0, [r5, 0x8] - ldrb r2, [r5, 0x16] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - strb r0, [r5, 0x16] - ldrb r0, [r5, 0x17] - ands r1, r0 - strb r1, [r5, 0x17] - ldrb r0, [r6, 0x16] - ands r4, r0 - movs r1, 0x6 - cmp r4, 0x1 - bne _0809B2BC - movs r1, 0x5 -_0809B2BC: - ldrh r0, [r6, 0x10] - adds r0, 0x1 - cmp r0, r1 - ble _0809B2E4 - strh r1, [r5, 0xE] - b _0809B2E6 - .align 2, 0 -_0809B2C8: .4byte gUnknown_2039968 -_0809B2CC: .4byte gFameCheckerText_Cancel -_0809B2D0: .4byte gUnknown_2039964 -_0809B2D4: .4byte gMultiuseListMenuTemplate -_0809B2D8: .4byte gShopData -_0809B2DC: .4byte sub_809B320 -_0809B2E0: .4byte sub_809B408 -_0809B2E4: - strh r0, [r5, 0xE] -_0809B2E6: - ldr r0, _0809B2F8 @ =gShopData - ldr r1, _0809B2FC @ =gMultiuseListMenuTemplate - ldrh r1, [r1, 0xE] - strh r1, [r0, 0x12] - movs r0, 0x1 -_0809B2F0: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809B2F8: .4byte gShopData -_0809B2FC: .4byte gMultiuseListMenuTemplate - thumb_func_end sub_809B188 - - thumb_func_start sub_809B300 -sub_809B300: @ 809B300 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl CopyItemName - str r6, [r4] - str r5, [r4, 0x4] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809B300 - - thumb_func_start sub_809B320 -sub_809B320: @ 809B320 - push {r4-r7,lr} - sub sp, 0x14 - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - beq _0809B334 - movs r0, 0x5 - bl PlaySE -_0809B334: - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _0809B348 - lsls r0, r5, 16 - lsrs r0, 16 - bl ItemId_GetDescription - adds r7, r0, 0 - b _0809B34A -_0809B348: - ldr r7, _0809B384 @ =gUnknown_8416757 -_0809B34A: - movs r0, 0x5 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r6, _0809B388 @ =gShopData - ldrb r0, [r6, 0x16] - movs r4, 0xF - ands r4, r0 - cmp r4, 0x1 - beq _0809B3D8 - ldrb r1, [r6, 0x17] - lsls r1, 29 - lsrs r1, 30 - movs r0, 0x1 - eors r0, r1 - bl DestroyItemMenuIcon - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _0809B38C - lsls r0, r5, 16 - lsrs r0, 16 - ldrb r1, [r6, 0x17] - lsls r1, 29 - lsrs r1, 30 - bl CreateItemMenuIcon - b _0809B398 - .align 2, 0 -_0809B384: .4byte gUnknown_8416757 -_0809B388: .4byte gShopData -_0809B38C: - ldr r0, _0809B3D0 @ =0x00000177 - ldrb r1, [r6, 0x17] - lsls r1, 29 - lsrs r1, 30 - bl CreateItemMenuIcon -_0809B398: - ldr r3, _0809B3D4 @ =gShopData - ldrb r2, [r3, 0x17] - lsls r0, r2, 29 - lsrs r0, 30 - movs r1, 0x1 - eors r1, r0 - lsls r1, 1 - movs r0, 0x7 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x17] - movs r0, 0x3 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x2 - adds r2, r7, 0 - movs r3, 0 - bl BuyMenuPrint - b _0809B400 - .align 2, 0 -_0809B3D0: .4byte 0x00000177 -_0809B3D4: .4byte gShopData -_0809B3D8: - movs r0, 0x6 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r5, 0 - bl sub_809B494 - movs r0, 0x3 - str r0, [sp] - str r4, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r0, [sp, 0x10] - movs r0, 0x5 - movs r1, 0x2 - adds r2, r7, 0 - movs r3, 0x2 - bl BuyMenuPrint -_0809B400: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809B320 - - thumb_func_start sub_809B408 -sub_809B408: @ 809B408 - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r2, 24 - lsrs r5, r2, 24 - movs r0, 0x2 - negs r0, r0 - cmp r1, r0 - beq _0809B480 - ldr r4, _0809B488 @ =gStringVar1 - lsls r0, r1, 16 - lsrs r0, 16 - bl itemid_get_market_price - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x4 - subs r1, r0 - ldr r2, _0809B48C @ =gStringVar4 - adds r0, r1, 0 - subs r1, 0x1 - cmp r0, 0 - beq _0809B45C - movs r3, 0 -_0809B450: - strb r3, [r2] - adds r2, 0x1 - adds r0, r1, 0 - subs r1, 0x1 - cmp r0, 0 - bne _0809B450 -_0809B45C: - ldr r1, _0809B490 @ =gText_PokedollarVar1 - adds r0, r2, 0 - bl StringExpandPlaceholders - ldr r2, _0809B48C @ =gStringVar4 - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r0, 0x1 - str r0, [sp, 0x10] - adds r0, r6, 0 - movs r1, 0 - movs r3, 0x69 - bl BuyMenuPrint -_0809B480: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809B488: .4byte gStringVar1 -_0809B48C: .4byte gStringVar4 -_0809B490: .4byte gText_PokedollarVar1 - thumb_func_end sub_809B408 - - thumb_func_start sub_809B494 -sub_809B494: @ 809B494 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r0, 0 - movs r0, 0x2 - negs r0, r0 - cmp r7, r0 - beq _0809B528 - ldr r4, _0809B514 @ =gStringVar1 - ldr r0, _0809B518 @ =0xfffffee0 - adds r1, r7, r0 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r5, _0809B51C @ =gStringVar4 - ldr r1, _0809B520 @ =gOtherText_UnkF9_08_Clear_01 - adds r0, r5, 0 - bl StringCopy - adds r0, r5, 0 - adds r1, r4, 0 - bl StringAppend - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r6, 0x1 - str r6, [sp, 0x10] - movs r0, 0x6 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0 - bl BuyMenuPrint - lsls r0, r7, 16 - lsrs r0, 16 - bl ItemIdToBattleMoveId - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xD - muls r1, r0 - ldr r0, _0809B524 @ =gMoveNames - adds r1, r0 - adds r0, r5, 0 - bl StringCopy - movs r0, 0x10 - str r0, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - str r6, [sp, 0x10] - movs r0, 0x6 - movs r1, 0x2 - adds r2, r5, 0 - movs r3, 0 - bl BuyMenuPrint - b _0809B55C - .align 2, 0 -_0809B514: .4byte gStringVar1 -_0809B518: .4byte 0xfffffee0 -_0809B51C: .4byte gStringVar4 -_0809B520: .4byte gOtherText_UnkF9_08_Clear_01 -_0809B524: .4byte gMoveNames -_0809B528: - ldr r2, _0809B564 @ =gText_ThreeHyphens - movs r4, 0 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0xFF - str r0, [sp, 0xC] - movs r5, 0x1 - str r5, [sp, 0x10] - movs r0, 0x6 - movs r1, 0 - movs r3, 0 - bl BuyMenuPrint - ldr r2, _0809B568 @ =gUnknown_8416217 - movs r0, 0x10 - str r0, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - str r5, [sp, 0x10] - movs r0, 0x6 - movs r1, 0x2 - movs r3, 0 - bl BuyMenuPrint -_0809B55C: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809B564: .4byte gText_ThreeHyphens -_0809B568: .4byte gUnknown_8416217 - thumb_func_end sub_809B494 - - thumb_func_start sub_809B56C -sub_809B56C: @ 809B56C - ldr r0, _0809B578 @ =gShopData - ldrh r0, [r0, 0x16] - lsls r0, 23 - lsrs r0, 27 - bx lr - .align 2, 0 -_0809B578: .4byte gShopData - thumb_func_end sub_809B56C - - thumb_func_start sub_809B57C -sub_809B57C: @ 809B57C - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl ListMenuGetYCoordForPrintingArrowCursor - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl sub_809B59C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809B57C - - thumb_func_start sub_809B59C -sub_809B59C: @ 809B59C - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0xFF - bne _0809B5E0 - movs r0, 0x2 - movs r1, 0 - bl GetFontAttribute - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - str r4, [sp] - str r0, [sp, 0x4] - movs r0, 0x4 - movs r1, 0 - movs r2, 0x1 - adds r3, r5, 0 - bl FillWindowPixelRect - movs r0, 0x4 - movs r1, 0x2 - bl CopyWindowToVram - b _0809B5F8 -_0809B5E0: - ldr r2, _0809B600 @ =gFameCheckerText_ListMenuCursor - str r5, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - str r1, [sp, 0x10] - movs r0, 0x4 - movs r1, 0x2 - movs r3, 0x1 - bl BuyMenuPrint -_0809B5F8: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809B600: .4byte gFameCheckerText_ListMenuCursor - thumb_func_end sub_809B59C - - thumb_func_start sub_809B604 -sub_809B604: @ 809B604 - push {lr} - ldr r0, _0809B658 @ =gUnknown_2039954 - ldr r0, [r0] - cmp r0, 0 - beq _0809B612 - bl Free -_0809B612: - ldr r0, _0809B65C @ =gUnknown_2039958 - ldr r0, [r0] - cmp r0, 0 - beq _0809B61E - bl Free -_0809B61E: - ldr r0, _0809B660 @ =gUnknown_203995C - ldr r0, [r0] - cmp r0, 0 - beq _0809B62A - bl Free -_0809B62A: - ldr r0, _0809B664 @ =gUnknown_2039960 - ldr r0, [r0] - cmp r0, 0 - beq _0809B636 - bl Free -_0809B636: - ldr r0, _0809B668 @ =gUnknown_2039964 - ldr r0, [r0] - cmp r0, 0 - beq _0809B642 - bl Free -_0809B642: - ldr r0, _0809B66C @ =gUnknown_2039968 - ldr r0, [r0] - cmp r0, 0 - beq _0809B64E - bl Free -_0809B64E: - bl FreeAllWindowBuffers - pop {r0} - bx r0 - .align 2, 0 -_0809B658: .4byte gUnknown_2039954 -_0809B65C: .4byte gUnknown_2039958 -_0809B660: .4byte gUnknown_203995C -_0809B664: .4byte gUnknown_2039960 -_0809B668: .4byte gUnknown_2039964 -_0809B66C: .4byte gUnknown_2039968 - thumb_func_end sub_809B604 - - thumb_func_start sub_809B670 -sub_809B670: @ 809B670 - push {lr} - ldr r0, _0809B684 @ =gFieldCallback - ldr r1, _0809B688 @ =sub_809AD74 - str r1, [r0] - ldr r0, _0809B68C @ =CB2_ReturnToField - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0809B684: .4byte gFieldCallback -_0809B688: .4byte sub_809AD74 -_0809B68C: .4byte CB2_ReturnToField - thumb_func_end sub_809B670 - - thumb_func_start sub_809B690 -sub_809B690: @ 809B690 - push {r4,lr} - sub sp, 0x10 - ldr r4, _0809B6C0 @ =gShopData - ldrb r1, [r4, 0x16] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - beq _0809B6C4 - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - adds r0, 0x1 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r0, 0xE - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xA0 - movs r2, 0x8 - movs r3, 0x68 - b _0809B6E2 - .align 2, 0 -_0809B6C0: .4byte gShopData -_0809B6C4: - ldrh r0, [r4, 0x10] - ldrh r1, [r4, 0x12] - subs r0, r1 - adds r0, 0x1 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r0, 0xE - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0xA0 - movs r2, 0x8 - movs r3, 0x58 -_0809B6E2: - bl AddScrollIndicatorArrowPairParameterized - lsls r0, 3 - ldrb r2, [r4, 0x17] - movs r1, 0x7 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x17] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809B690 - - thumb_func_start sub_809B6FC -sub_809B6FC: @ 809B6FC - push {r4,lr} - sub sp, 0x10 - ldr r4, _0809B738 @ =gShopData - movs r0, 0x1 - strh r0, [r4, 0x18] - movs r0, 0x2 - str r0, [sp] - movs r0, 0x6E - str r0, [sp, 0x4] - str r0, [sp, 0x8] - adds r0, r4, 0 - adds r0, 0x18 - str r0, [sp, 0xC] - movs r0, 0x2 - movs r1, 0x98 - movs r2, 0x48 - movs r3, 0x68 - bl AddScrollIndicatorArrowPairParameterized - lsls r0, 3 - ldrb r2, [r4, 0x17] - movs r1, 0x7 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x17] - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809B738: .4byte gShopData - thumb_func_end sub_809B6FC - - thumb_func_start sub_809B73C -sub_809B73C: @ 809B73C - push {r4,lr} - ldr r4, _0809B760 @ =gShopData - ldrb r1, [r4, 0x17] - movs r0, 0xF8 - ands r0, r1 - cmp r0, 0xF8 - beq _0809B758 - lsrs r0, r1, 3 - bl RemoveScrollIndicatorArrowPair - ldrb r0, [r4, 0x17] - movs r1, 0xF8 - orrs r0, r1 - strb r0, [r4, 0x17] -_0809B758: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809B760: .4byte gShopData - thumb_func_end sub_809B73C - - thumb_func_start sub_809B764 -sub_809B764: @ 809B764 - push {lr} - bl sub_809B92C - bl sub_809BA40 - bl sub_809B778 - pop {r0} - bx r0 - thumb_func_end sub_809B764 - - thumb_func_start sub_809B778 -sub_809B778: @ 809B778 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r0, _0809B804 @ =gMapHeader - ldr r0, [r0] - mov r9, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r1, sp - mov r0, sp - ldrh r0, [r0] - subs r0, 0x2 - strh r0, [r1] - ldrh r0, [r4] - subs r0, 0x3 - strh r0, [r4] - movs r1, 0 - mov r10, r4 -_0809B7AA: - movs r4, 0 - lsls r1, 16 - mov r8, r1 - asrs r7, r1, 16 -_0809B7B2: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r4, 16 - asrs r6, r4, 16 - adds r0, r6 - mov r2, r10 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r1, r7 - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, sp - ldrh r0, [r0] - adds r0, r6, r0 - lsls r0, 16 - asrs r0, 16 - mov r2, r10 - ldrh r1, [r2] - adds r1, r7, r1 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileLayerTypeAt - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0809B808 @ =0x0000027f - cmp r5, r0 - bhi _0809B80C - mov r1, r9 - ldr r0, [r1, 0x10] - lsls r1, r5, 4 - ldr r2, [r0, 0xC] - adds r2, r1 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_809B850 - b _0809B822 - .align 2, 0 -_0809B804: .4byte gMapHeader -_0809B808: .4byte 0x0000027f -_0809B80C: - mov r2, r9 - ldr r0, [r2, 0x14] - ldr r2, _0809B84C @ =0xfffffd80 - adds r1, r5, r2 - lsls r1, 4 - ldr r2, [r0, 0xC] - adds r2, r1 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_809B850 -_0809B822: - movs r3, 0x80 - lsls r3, 9 - adds r0, r4, r3 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _0809B7B2 - adds r0, r3, 0 - add r0, r8 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _0809B7AA - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809B84C: .4byte 0xfffffd80 - thumb_func_end sub_809B778 - - thumb_func_start sub_809B850 -sub_809B850: @ 809B850 - push {r4-r6,lr} - adds r6, r2, 0 - lsls r3, 24 - lsrs r3, 24 - adds r2, r3, 0 - lsls r0, 17 - lsrs r5, r0, 16 - lsls r1, 22 - movs r0, 0x80 - lsls r0, 15 - adds r1, r0 - lsrs r1, 16 - cmp r3, 0x1 - beq _0809B8A0 - cmp r3, 0x1 - bgt _0809B876 - cmp r3, 0 - beq _0809B87C - b _0809B8F6 -_0809B876: - cmp r2, 0x2 - beq _0809B8D0 - b _0809B8F6 -_0809B87C: - ldr r0, _0809B898 @ =gUnknown_2039960 - ldr r0, [r0] - lsls r5, 16 - asrs r5, 16 - lsls r4, r1, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r6, 0 - bl sub_809B904 - ldr r0, _0809B89C @ =gUnknown_2039958 - b _0809B8B8 - .align 2, 0 -_0809B898: .4byte gUnknown_2039960 -_0809B89C: .4byte gUnknown_2039958 -_0809B8A0: - ldr r0, _0809B8C8 @ =gUnknown_203995C - ldr r0, [r0] - lsls r5, 16 - asrs r5, 16 - lsls r4, r1, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r6, 0 - bl sub_809B904 - ldr r0, _0809B8CC @ =gUnknown_2039960 -_0809B8B8: - ldr r0, [r0] - adds r3, r6, 0 - adds r3, 0x8 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_809B904 - b _0809B8F6 - .align 2, 0 -_0809B8C8: .4byte gUnknown_203995C -_0809B8CC: .4byte gUnknown_2039960 -_0809B8D0: - ldr r0, _0809B8FC @ =gUnknown_203995C - ldr r0, [r0] - lsls r5, 16 - asrs r5, 16 - lsls r4, r1, 16 - asrs r4, 16 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r6, 0 - bl sub_809B904 - ldr r0, _0809B900 @ =gUnknown_2039958 - ldr r0, [r0] - adds r3, r6, 0 - adds r3, 0x8 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_809B904 -_0809B8F6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809B8FC: .4byte gUnknown_203995C -_0809B900: .4byte gUnknown_2039958 - thumb_func_end sub_809B850 - - thumb_func_start sub_809B904 -sub_809B904: @ 809B904 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - adds r1, r2 - lsls r1, 1 - adds r1, r0 - ldrh r0, [r3] - strh r0, [r1] - ldrh r0, [r3, 0x2] - strh r0, [r1, 0x2] - adds r2, r1, 0 - adds r2, 0x40 - ldrh r0, [r3, 0x4] - strh r0, [r2] - adds r1, 0x42 - ldrh r0, [r3, 0x6] - strh r0, [r1] - bx lr - thumb_func_end sub_809B904 - - thumb_func_start sub_809B92C -sub_809B92C: @ 809B92C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r5, 0 - ldr r2, _0809B9DC @ =gUnknown_20398B4 - movs r1, 0x10 -_0809B958: - lsls r0, r5, 3 - adds r0, r2 - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _0809B958 - movs r5, 0 - ldr r6, _0809B9E0 @ =gUnknown_20398BA - subs r1, r6, 0x6 - mov r8, r1 -_0809B970: - movs r4, 0 - adds r2, r5, 0x1 - mov r10, r2 -_0809B976: - mov r1, sp - ldr r3, _0809B9E4 @ =0x0000fffd - adds r0, r3, 0 - ldrh r1, [r1] - adds r0, r1 - adds r0, r4 - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0809B9E8 @ =0x0000fffe - adds r1, r2, 0 - mov r3, sp - ldrh r3, [r3, 0x2] - adds r1, r3 - adds r1, r5 - lsls r1, 16 - lsrs r1, 16 - ldr r2, [sp, 0x4] - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x10 - beq _0809BA1C - mov r0, r9 - lsls r2, r0, 3 - mov r1, r8 - adds r0, r2, r1 - movs r7, 0 - strh r3, [r0] - mov r0, r8 - adds r0, 0x2 - adds r0, r2, r0 - strh r4, [r0] - ldr r1, _0809B9EC @ =gUnknown_20398B8 - adds r0, r2, r1 - strh r5, [r0] - ldr r1, _0809B9F0 @ =gMapObjects - lsls r0, r3, 3 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x18] - lsls r0, 28 - lsrs r0, 28 - cmp r0, 0x2 - beq _0809BA00 - cmp r0, 0x2 - bgt _0809B9F4 - cmp r0, 0x1 - beq _0809B9FA - b _0809BA0C - .align 2, 0 -_0809B9DC: .4byte gUnknown_20398B4 -_0809B9E0: .4byte gUnknown_20398BA -_0809B9E4: .4byte 0x0000fffd -_0809B9E8: .4byte 0x0000fffe -_0809B9EC: .4byte gUnknown_20398B8 -_0809B9F0: .4byte gMapObjects -_0809B9F4: - cmp r0, 0x3 - beq _0809BA06 - b _0809BA0C -_0809B9FA: - adds r0, r2, r6 - strh r7, [r0] - b _0809BA12 -_0809BA00: - adds r1, r2, r6 - movs r0, 0x1 - b _0809BA10 -_0809BA06: - adds r1, r2, r6 - movs r0, 0x2 - b _0809BA10 -_0809BA0C: - adds r1, r2, r6 - movs r0, 0x3 -_0809BA10: - strh r0, [r1] -_0809BA12: - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_0809BA1C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _0809B976 - mov r2, r10 - lsls r0, r2, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _0809B970 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809B92C - - thumb_func_start sub_809BA40 -sub_809BA40: @ 809BA40 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r6, 0 - ldr r7, _0809BAE8 @ =gUnknown_20398B4 - ldr r0, _0809BAEC @ =gMapObjects - mov r8, r0 - adds r1, r7, 0x6 - mov r9, r1 -_0809BA56: - lsls r5, r6, 3 - adds r4, r5, r7 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x10 - beq _0809BACE - adds r1, r0, 0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldrb r0, [r0, 0x5] - bl GetFieldObjectGraphicsInfo - movs r1, 0 - ldrsh r2, [r4, r1] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - add r1, r8 - ldrb r4, [r1, 0x5] - adds r1, r7, 0x2 - adds r1, r5, r1 - ldrh r2, [r1] - lsls r2, 20 - ldr r1, _0809BAF0 @ =0xfff80000 - adds r2, r1 - asrs r2, 16 - adds r1, r7, 0x4 - adds r1, r5, r1 - ldrh r3, [r1] - lsls r3, 4 - movs r1, 0xA - ldrsh r0, [r0, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0x30 - subs r3, r0 - lsls r3, 16 - asrs r3, 16 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - ldr r1, _0809BAF4 @ =SpriteCallbackDummy - bl AddPseudoEventObject - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r0, _0809BAF8 @ =gSprites - adds r2, r0 - mov r1, r9 - adds r0, r5, r1 - ldrb r1, [r0] - adds r0, r2, 0 - bl StartSpriteAnim -_0809BACE: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xF - bls _0809BA56 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809BAE8: .4byte gUnknown_20398B4 -_0809BAEC: .4byte gMapObjects -_0809BAF0: .4byte 0xfff80000 -_0809BAF4: .4byte SpriteCallbackDummy -_0809BAF8: .4byte gSprites - thumb_func_end sub_809BA40 - - thumb_func_start sub_809BAFC -sub_809BAFC: @ 809BAFC - push {r4-r6,lr} - ldr r0, _0809BB34 @ =gUnknown_2039958 - ldr r4, [r0] - ldr r0, _0809BB38 @ =gUnknown_2039954 - ldr r3, [r0] - movs r1, 0 - ldr r0, _0809BB3C @ =0x0000b3dc - adds r6, r0, 0 - ldr r5, _0809BB40 @ =0x000003ff -_0809BB0E: - lsls r0, r1, 16 - asrs r2, r0, 16 - lsls r1, r2, 1 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _0809BB22 - adds r1, r4 - adds r0, r6 - strh r0, [r1] -_0809BB22: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, r5 - ble _0809BB0E - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809BB34: .4byte gUnknown_2039958 -_0809BB38: .4byte gUnknown_2039954 -_0809BB3C: .4byte 0x0000b3dc -_0809BB40: .4byte 0x000003ff - thumb_func_end sub_809BAFC - - thumb_func_start sub_809BB44 -sub_809BB44: @ 809BB44 - push {r4,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0809BBAC @ =gTasks+0x8 - adds r4, r0 - movs r0, 0x3 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _0809BBB0 @ =gShopData - ldr r3, [r0, 0x8] - movs r0, 0xFF - str r0, [sp] - movs r0, 0x3 - movs r1, 0x36 - movs r2, 0xA - bl PrintMoneyAmount - ldr r0, _0809BBB4 @ =gStringVar1 - movs r2, 0x2 - ldrsh r1, [r4, r2] - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r4, _0809BBB8 @ =gStringVar4 - ldr r1, _0809BBBC @ =gText_TimesStrVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0xA - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - movs r0, 0x1 - str r0, [sp, 0x10] - movs r0, 0x3 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0x2 - bl BuyMenuPrint - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809BBAC: .4byte gTasks+0x8 -_0809BBB0: .4byte gShopData -_0809BBB4: .4byte gStringVar1 -_0809BBB8: .4byte gStringVar4 -_0809BBBC: .4byte gText_TimesStrVar1 - thumb_func_end sub_809BB44 - - thumb_func_start sub_809BBC0 -sub_809BBC0: @ 809BBC0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _0809BC00 @ =gTasks+0x8 - adds r5, r0, r1 - ldr r0, _0809BC04 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0809BC8E - ldrb r0, [r5, 0xE] - bl ListMenu_ProcessInput - adds r4, r0, 0 - ldrb r0, [r5, 0xE] - ldr r7, _0809BC08 @ =gUnknown_2039942 - subs r2, r7, 0x2 - adds r1, r7, 0 - bl ListMenuGetScrollAndRow - movs r0, 0x2 - negs r0, r0 - cmp r4, r0 - beq _0809BC0C - adds r0, 0x1 - cmp r4, r0 - bne _0809BC1A - b _0809BC8E - .align 2, 0 -_0809BC00: .4byte gTasks+0x8 -_0809BC04: .4byte gPaletteFade -_0809BC08: .4byte gUnknown_2039942 -_0809BC0C: - movs r0, 0x5 - bl PlaySE - adds r0, r6, 0 - bl sub_809C004 - b _0809BC8E -_0809BC1A: - movs r0, 0x5 - bl PlaySE - strh r4, [r5, 0xA] - movs r0, 0x5 - bl ClearWindowTilemap - bl sub_809B73C - ldrb r0, [r5, 0xE] - movs r1, 0x2 - bl sub_809B57C - movs r0, 0x1 - bl sub_809B10C - lsls r0, r4, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl itemid_get_market_price - adds r1, r0, 0 - adds r0, r7, 0 - subs r0, 0xE - lsls r1, 16 - lsrs r1, 16 - str r1, [r0, 0x8] - ldr r0, _0809BC70 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r2, 0xA4 - lsls r2, 2 - adds r0, r2 - bl IsEnoughMoney - lsls r0, 24 - cmp r0, 0 - bne _0809BC7C - ldr r1, _0809BC74 @ =gUnknown_8416842 - ldr r2, _0809BC78 @ =sub_809BF98 - adds r0, r6, 0 - bl BuyMenuDisplayMessage - b _0809BC8E - .align 2, 0 -_0809BC70: .4byte gSaveBlock1Ptr -_0809BC74: .4byte gUnknown_8416842 -_0809BC78: .4byte sub_809BF98 -_0809BC7C: - ldr r1, _0809BC94 @ =gStringVar1 - adds r0, r4, 0 - bl CopyItemName - ldr r1, _0809BC98 @ =gUnknown_8416766 - ldr r2, _0809BC9C @ =sub_809BCA0 - adds r0, r6, 0 - bl BuyMenuDisplayMessage -_0809BC8E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809BC94: .4byte gStringVar1 -_0809BC98: .4byte gUnknown_8416766 -_0809BC9C: .4byte sub_809BCA0 - thumb_func_end sub_809BBC0 - - thumb_func_start sub_809BCA0 -sub_809BCA0: @ 809BCA0 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, r7, 2 - adds r5, r7 - lsls r5, 3 - ldr r0, _0809BD40 @ =gTasks+0x8 - adds r5, r0 - ldrh r0, [r5, 0xA] - bl BagGetQuantityByItemId - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x1 - movs r1, 0 - bl BuyMenuQuantityBoxThinBorder - ldr r0, _0809BD44 @ =gStringVar1 - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r6, _0809BD48 @ =gStringVar4 - ldr r1, _0809BD4C @ =gUnknown_8416749 - adds r0, r6, 0 - bl StringExpandPlaceholders - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r0, [sp, 0x8] - str r0, [sp, 0xC] - movs r4, 0x1 - str r4, [sp, 0x10] - movs r0, 0x1 - movs r1, 0x2 - adds r2, r6, 0 - movs r3, 0 - bl BuyMenuPrint - strh r4, [r5, 0x2] - movs r0, 0x3 - movs r1, 0 - bl BuyMenuQuantityBoxNormalBorder - adds r0, r7, 0 - bl sub_809BB44 - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - ldr r0, _0809BD50 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - adds r4, r0, 0 - ldrh r0, [r5, 0xA] - bl itemid_get_market_price - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl __udivsi3 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x63 - bls _0809BD58 - ldr r1, _0809BD54 @ =gShopData - movs r0, 0x63 - b _0809BD5E - .align 2, 0 -_0809BD40: .4byte gTasks+0x8 -_0809BD44: .4byte gStringVar1 -_0809BD48: .4byte gStringVar4 -_0809BD4C: .4byte gUnknown_8416749 -_0809BD50: .4byte gSaveBlock1Ptr -_0809BD54: .4byte gShopData -_0809BD58: - ldr r1, _0809BD80 @ =gShopData - lsls r0, r2, 24 - lsrs r0, 24 -_0809BD5E: - strh r0, [r1, 0x14] - cmp r2, 0x1 - beq _0809BD68 - bl sub_809B6FC -_0809BD68: - ldr r0, _0809BD84 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _0809BD88 @ =sub_809BD8C - str r0, [r1] - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809BD80: .4byte gShopData -_0809BD84: .4byte gTasks -_0809BD88: .4byte sub_809BD8C - thumb_func_end sub_809BCA0 - - thumb_func_start sub_809BD8C -sub_809BD8C: @ 809BD8C - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r7, r5, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0809BDCC @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r4, 0x2 - ldr r6, _0809BDD0 @ =gShopData - ldrh r1, [r6, 0x14] - bl AdjustQuantityAccordingToDPadInput - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809BDD4 - ldrh r0, [r4, 0xA] - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 16 - movs r2, 0x2 - ldrsh r1, [r4, r2] - muls r0, r1 - str r0, [r6, 0x8] - adds r0, r5, 0 - bl sub_809BB44 - b _0809BE88 - .align 2, 0 -_0809BDCC: .4byte gTasks+0x8 -_0809BDD0: .4byte gShopData -_0809BDD4: - ldr r0, _0809BE3C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809BE54 - movs r0, 0x5 - bl PlaySE - bl sub_809B73C - movs r0, 0x3 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x1 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0x1 - bl ClearWindowTilemap - movs r0, 0x4 - bl PutWindowTilemap - ldrh r0, [r4, 0xA] - ldr r1, _0809BE40 @ =gStringVar1 - bl CopyItemName - ldr r0, _0809BE44 @ =gStringVar2 - movs r2, 0x2 - ldrsh r1, [r4, r2] - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, _0809BE48 @ =gStringVar3 - ldr r1, [r6, 0x8] - movs r2, 0 - movs r3, 0x8 - bl ConvertIntToDecimalStringN - ldr r1, _0809BE4C @ =gUnknown_841678E - ldr r2, _0809BE50 @ =sub_809BE90 - adds r0, r5, 0 - bl BuyMenuDisplayMessage - b _0809BE88 - .align 2, 0 -_0809BE3C: .4byte gMain -_0809BE40: .4byte gStringVar1 -_0809BE44: .4byte gStringVar2 -_0809BE48: .4byte gStringVar3 -_0809BE4C: .4byte gUnknown_841678E -_0809BE50: .4byte sub_809BE90 -_0809BE54: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809BE88 - movs r0, 0x5 - bl PlaySE - bl sub_809B73C - movs r0, 0x3 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x1 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - movs r0, 0x3 - bl ClearWindowTilemap - movs r0, 0x1 - bl ClearWindowTilemap - adds r0, r7, 0 - bl sub_809BF98 -_0809BE88: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809BD8C - - thumb_func_start sub_809BE90 -sub_809BE90: @ 809BE90 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809BEA0 @ =gUnknown_83DF0B4 - bl BuyMenuConfirmPurchase - pop {r0} - bx r0 - .align 2, 0 -_0809BEA0: .4byte gUnknown_83DF0B4 - thumb_func_end sub_809BE90 - - thumb_func_start sub_809BEA4 -sub_809BEA4: @ 809BEA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0809BEE8 @ =gTasks+0x8 - adds r4, r0, r1 - movs r0, 0x4 - bl PutWindowTilemap - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x2] - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809BEF4 - ldr r1, _0809BEEC @ =gUnknown_84167E7 - ldr r2, _0809BEF0 @ =sub_809BF0C - adds r0, r5, 0 - bl BuyMenuDisplayMessage - adds r0, r5, 0 - bl nullsub_52 - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x2] - movs r2, 0x1 - bl sub_809C09C - b _0809BEFE - .align 2, 0 -_0809BEE8: .4byte gTasks+0x8 -_0809BEEC: .4byte gUnknown_84167E7 -_0809BEF0: .4byte sub_809BF0C -_0809BEF4: - ldr r1, _0809BF04 @ =gUnknown_8416861 - ldr r2, _0809BF08 @ =sub_809BF98 - adds r0, r5, 0 - bl BuyMenuDisplayMessage -_0809BEFE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809BF04: .4byte gUnknown_8416861 -_0809BF08: .4byte sub_809BF98 - thumb_func_end sub_809BEA4 - - thumb_func_start sub_809BF0C -sub_809BF0C: @ 809BF0C - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x26 - bl IncrementGameStat - ldr r6, _0809BF58 @ =gSaveBlock1Ptr - ldr r0, [r6] - movs r5, 0xA4 - lsls r5, 2 - adds r0, r5 - ldr r1, _0809BF5C @ =gShopData - ldr r1, [r1, 0x8] - bl RemoveMoney - movs r0, 0xF8 - bl PlaySE - ldr r0, [r6] - adds r0, r5 - bl GetMoney - adds r1, r0, 0 - movs r0, 0 - movs r2, 0 - bl PrintMoneyAmountInMoneyBox - ldr r1, _0809BF60 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809BF64 @ =sub_809BF68 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809BF58: .4byte gSaveBlock1Ptr -_0809BF5C: .4byte gShopData -_0809BF60: .4byte gTasks -_0809BF64: .4byte sub_809BF68 - thumb_func_end sub_809BF0C - - thumb_func_start sub_809BF68 -sub_809BF68: @ 809BF68 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0809BF94 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809BF82 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809BF8E -_0809BF82: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_809BF98 -_0809BF8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809BF94: .4byte gMain - thumb_func_end sub_809BF68 - - thumb_func_start sub_809BF98 -sub_809BF98: @ 809BF98 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r5, r1, 3 - ldr r6, _0809BFF8 @ =gTasks+0x8 - adds r4, r5, r6 - movs r0, 0x2 - movs r1, 0 - bl ClearDialogWindowAndFrameToTransparent - ldrb r0, [r4, 0xE] - movs r1, 0x1 - bl sub_809B57C - movs r0, 0 - bl sub_809B10C - movs r0, 0x4 - bl PutWindowTilemap - movs r0, 0x5 - bl PutWindowTilemap - ldr r0, _0809BFFC @ =gShopData - ldrb r1, [r0, 0x16] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _0809BFDC - movs r0, 0x6 - bl PutWindowTilemap -_0809BFDC: - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - bl sub_809B690 - adds r0, r6, 0 - subs r0, 0x8 - adds r0, r5, r0 - ldr r1, _0809C000 @ =sub_809BBC0 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809BFF8: .4byte gTasks+0x8 -_0809BFFC: .4byte gShopData -_0809C000: .4byte sub_809BBC0 - thumb_func_end sub_809BF98 - - thumb_func_start sub_809C004 -sub_809C004: @ 809C004 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0809C03C @ =gFieldCallback - ldr r0, _0809C040 @ =sub_809AD74 - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0809C044 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809C048 @ =sub_809C04C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C03C: .4byte gFieldCallback -_0809C040: .4byte sub_809AD74 -_0809C044: .4byte gTasks -_0809C048: .4byte sub_809C04C - thumb_func_end sub_809C004 - - thumb_func_start sub_809C04C -sub_809C04C: @ 809C04C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0809C088 @ =gTasks+0x8 - adds r2, r0, r1 - ldr r0, _0809C08C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0809C082 - ldrb r0, [r2, 0xE] - movs r1, 0 - movs r2, 0 - bl DestroyListMenuTask - bl sub_809B604 - ldr r0, _0809C090 @ =CB2_ReturnToField - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0809C082: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C088: .4byte gTasks+0x8 -_0809C08C: .4byte gPaletteFade -_0809C090: .4byte CB2_ReturnToField - thumb_func_end sub_809C04C - - thumb_func_start nullsub_52 -nullsub_52: @ 809C094 - bx lr - thumb_func_end nullsub_52 - - thumb_func_start nullsub_53 -nullsub_53: @ 809C098 - bx lr - thumb_func_end nullsub_53 - - thumb_func_start sub_809C09C -sub_809C09C: @ 809C09C - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r5, r2, 24 - ldr r1, _0809C0B8 @ =gUnknown_203996C - ldrb r2, [r1, 0xA] - cmp r2, r5 - bne _0809C0BC - adds r4, r1, 0 - b _0809C0D4 - .align 2, 0 -_0809C0B8: .4byte gUnknown_203996C -_0809C0BC: - ldrb r0, [r1, 0x16] - cmp r0, r5 - bne _0809C0C8 - adds r4, r1, 0 - adds r4, 0xC - b _0809C0D4 -_0809C0C8: - adds r4, r1, 0 - adds r4, 0xC - cmp r2, 0 - bne _0809C0D2 - adds r4, r1, 0 -_0809C0D2: - strb r5, [r4, 0xA] -_0809C0D4: - ldrh r0, [r4, 0x4] - cmp r0, 0 - beq _0809C0DE - movs r0, 0x1 - strb r0, [r4, 0x9] -_0809C0DE: - strh r3, [r4, 0x4] - ldrh r1, [r4, 0x6] - ldr r0, _0809C128 @ =0x000003e6 - cmp r1, r0 - bhi _0809C0F8 - adds r0, r6, r1 - strh r0, [r4, 0x6] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0809C12C @ =0x000003e7 - cmp r0, r1 - bls _0809C0F8 - strh r1, [r4, 0x6] -_0809C0F8: - ldr r1, [r4] - ldr r0, _0809C130 @ =0x000f423e - cmp r1, r0 - bhi _0809C120 - adds r0, r3, 0 - bl itemid_get_market_price - lsls r0, 16 - lsrs r0, 16 - subs r1, r5, 0x1 - asrs r0, r1 - adds r1, r0, 0 - muls r1, r6 - ldr r0, [r4] - adds r0, r1 - str r0, [r4] - ldr r1, _0809C134 @ =0x000f423f - cmp r0, r1 - bls _0809C120 - str r1, [r4] -_0809C120: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809C128: .4byte 0x000003e6 -_0809C12C: .4byte 0x000003e7 -_0809C130: .4byte 0x000f423e -_0809C134: .4byte 0x000f423f - thumb_func_end sub_809C09C - - thumb_func_start sub_809C138 -sub_809C138: @ 809C138 - push {r4,lr} - ldr r4, _0809C160 @ =gUnknown_203996C - ldrb r0, [r4, 0xA] - cmp r0, 0 - beq _0809C14A - adds r0, 0x24 - adds r1, r4, 0 - bl sub_8113550 -_0809C14A: - ldrb r0, [r4, 0x16] - cmp r0, 0 - beq _0809C15A - adds r0, 0x24 - adds r1, r4, 0 - adds r1, 0xC - bl sub_8113550 -_0809C15A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C160: .4byte gUnknown_203996C - thumb_func_end sub_809C138 - - thumb_func_start CreatePokemartMenu -CreatePokemartMenu: @ 809C164 - push {r4,lr} - bl sub_809ABD8 - movs r0, 0 - bl sub_809AAB0 - ldr r0, _0809C194 @ =EnableBothScriptContexts - bl sub_809AC04 - bl nullsub_53 - ldr r4, _0809C198 @ =gUnknown_203996C - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x18 - bl memset - ldr r0, _0809C19C @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0x8] - strb r0, [r4, 0x14] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C194: .4byte EnableBothScriptContexts -_0809C198: .4byte gUnknown_203996C -_0809C19C: .4byte gMapHeader - thumb_func_end CreatePokemartMenu - - thumb_func_start CreateDecorationShop1Menu -CreateDecorationShop1Menu: @ 809C1A0 - push {lr} - bl sub_809ABD8 - movs r0, 0x2 - bl sub_809AAB0 - ldr r0, _0809C1B8 @ =EnableBothScriptContexts - bl sub_809AC04 - pop {r0} - bx r0 - .align 2, 0 -_0809C1B8: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop1Menu - - thumb_func_start CreateDecorationShop2Menu -CreateDecorationShop2Menu: @ 809C1BC - push {lr} - bl sub_809ABD8 - movs r0, 0x3 - bl sub_809AAB0 - ldr r0, _0809C1D4 @ =EnableBothScriptContexts - bl sub_809AC04 - pop {r0} - bx r0 - .align 2, 0 -_0809C1D4: .4byte EnableBothScriptContexts - thumb_func_end CreateDecorationShop2Menu - - thumb_func_start sub_809C1D8 -sub_809C1D8: @ 809C1D8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - mov r9, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - ldr r2, _0809C26C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrh r0, [r1, 0x10] - subs r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r1, 0x12] - subs r0, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r4, [r1, 0xA] - movs r2, 0xC - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0809C29C - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp] - asrs r1, 16 - str r1, [sp, 0x4] - lsls r0, r1, 1 - mov r1, r9 - adds r7, r0, r1 -_0809C22C: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r2, [sp] - adds r6, r2, r0 -_0809C238: - ldr r0, [sp, 0xC] - asrs r1, r0, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r2, 0 - ldrsh r1, [r7, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _0809C280 - ldr r0, [sp, 0x4] - cmp r0, 0x2 - beq _0809C270 - ldrh r0, [r7, 0x2] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _0809C280 - .align 2, 0 -_0809C26C: .4byte gTasks -_0809C270: - mov r1, r9 - ldrh r0, [r1] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_0809C280: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _0809C238 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _0809C22C - b _0809C324 -_0809C29C: - movs r2, 0 - lsls r5, 16 - str r5, [sp, 0xC] - lsls r0, r3, 16 - lsls r1, r4, 16 - asrs r0, 16 - str r0, [sp, 0x8] - asrs r7, r1, 16 -_0809C2AC: - movs r4, 0 - lsls r2, 16 - mov r8, r2 - asrs r0, r2, 16 - ldr r1, [sp, 0x8] - adds r6, r1, r0 -_0809C2B8: - ldr r2, [sp, 0xC] - asrs r1, r2, 16 - lsls r4, 16 - asrs r0, r4, 16 - adds r5, r1, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - movs r1, 0x2 - subs r1, r7 - lsls r1, 1 - add r1, r9 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _0809C30A - cmp r7, 0x2 - beq _0809C2FA - movs r0, 0x1 - subs r0, r7 - lsls r0, 1 - add r0, r9 - ldrh r0, [r0] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt - b _0809C30A -_0809C2FA: - mov r1, r9 - ldrh r0, [r1, 0x4] - mov r2, r10 - orrs r2, r0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridSetMetatileIdAt -_0809C30A: - movs r2, 0x80 - lsls r2, 9 - adds r0, r4, r2 - lsrs r4, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _0809C2B8 - adds r0, r2, 0 - add r0, r8 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _0809C2AC -_0809C324: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809C1D8 - - thumb_func_start sub_809C334 -sub_809C334: @ 809C334 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - ldr r1, _0809C35C @ =gTasks+0x8 - adds r4, r0, r1 - movs r0, 0x1 - strh r0, [r4, 0x6] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x6 - bhi _0809C3CE - lsls r0, 2 - ldr r1, _0809C360 @ =_0809C364 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C35C: .4byte gTasks+0x8 -_0809C360: .4byte _0809C364 - .align 2, 0 -_0809C364: - .4byte _0809C380 - .4byte _0809C388 - .4byte _0809C390 - .4byte _0809C398 - .4byte _0809C3A0 - .4byte _0809C3B4 - .4byte _0809C3C4 -_0809C380: - ldr r1, _0809C384 @ =gUnknown_83DF0D4 - b _0809C3B6 - .align 2, 0 -_0809C384: .4byte gUnknown_83DF0D4 -_0809C388: - ldr r1, _0809C38C @ =gUnknown_83DF0DA - b _0809C3B6 - .align 2, 0 -_0809C38C: .4byte gUnknown_83DF0DA -_0809C390: - ldr r1, _0809C394 @ =gUnknown_83DF0E0 - b _0809C3A2 - .align 2, 0 -_0809C394: .4byte gUnknown_83DF0E0 -_0809C398: - ldr r1, _0809C39C @ =gUnknown_83DF0E6 - b _0809C3B6 - .align 2, 0 -_0809C39C: .4byte gUnknown_83DF0E6 -_0809C3A0: - ldr r1, _0809C3B0 @ =gUnknown_83DF0EC -_0809C3A2: - movs r2, 0xC0 - lsls r2, 4 - adds r0, r3, 0 - bl sub_809C1D8 - b _0809C3CE - .align 2, 0 -_0809C3B0: .4byte gUnknown_83DF0EC -_0809C3B4: - ldr r1, _0809C3C0 @ =gUnknown_83DF0F2 -_0809C3B6: - adds r0, r3, 0 - movs r2, 0 - bl sub_809C1D8 - b _0809C3CE - .align 2, 0 -_0809C3C0: .4byte gUnknown_83DF0F2 -_0809C3C4: - ldr r1, _0809C3F8 @ =gUnknown_83DF0F8 - adds r0, r3, 0 - movs r2, 0 - bl sub_809C1D8 -_0809C3CE: - ldrh r0, [r4] - adds r0, 0x1 - movs r1, 0x7 - ands r0, r1 - strh r0, [r4] - adds r5, r0, 0 - cmp r5, 0 - bne _0809C3F2 - bl DrawWholeMapView - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r0, 0x1 - movs r1, 0x3 - bl __modsi3 - strh r0, [r4, 0x2] - strh r5, [r4, 0x6] -_0809C3F2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809C3F8: .4byte gUnknown_83DF0F8 - thumb_func_end sub_809C334 - - thumb_func_start sub_809C3FC -sub_809C3FC: @ 809C3FC - push {r4-r7,lr} - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _0809C440 @ =sub_809C334 - adds r0, r6, 0 - movs r1, 0 - bl CreateTask - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0809C444 @ =gTasks+0x8 - adds r7, r0, r1 - adds r0, r7, 0 - adds r0, 0x8 - adds r1, r7, 0 - adds r1, 0xA - bl PlayerGetDestCoords - movs r0, 0 - strh r0, [r7] - strh r0, [r7, 0x2] - strh r5, [r7, 0x4] - adds r0, r4, 0 - bl _call_via_r6 - adds r0, r4, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809C440: .4byte sub_809C334 -_0809C444: .4byte gTasks+0x8 - thumb_func_end sub_809C3FC - - thumb_func_start sub_809C448 -sub_809C448: @ 809C448 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_809C3FC - ldr r1, _0809C45C @ =gUnknown_2039984 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0809C45C: .4byte gUnknown_2039984 - thumb_func_end sub_809C448 - - thumb_func_start sub_809C460 -sub_809C460: @ 809C460 - push {lr} - ldr r0, _0809C470 @ =gUnknown_2039984 - ldrb r0, [r0] - bl DestroyTask - pop {r0} - bx r0 - .align 2, 0 -_0809C470: .4byte gUnknown_2039984 - thumb_func_end sub_809C460 - - thumb_func_start sub_809C474 -sub_809C474: @ 809C474 - push {lr} - ldr r2, _0809C498 @ =gTasks - ldr r0, _0809C49C @ =gUnknown_2039984 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r1, r0, r2 - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0809C4A0 - movs r2, 0xA - ldrsh r0, [r1, r2] - cmp r0, 0x2 - bne _0809C4A0 - movs r0, 0 - b _0809C4A2 - .align 2, 0 -_0809C498: .4byte gTasks -_0809C49C: .4byte gUnknown_2039984 -_0809C4A0: - movs r0, 0x1 -_0809C4A2: - pop {r1} - bx r1 - thumb_func_end sub_809C474 - - thumb_func_start sub_809C4A8 -sub_809C4A8: @ 809C4A8 - push {r4,lr} - ldr r0, _0809C4E0 @ =sub_809C500 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809C4E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - adds r2, 0x8 - adds r1, r2 - adds r0, r1, 0x4 - adds r1, 0x6 - bl PlayerGetDestCoords - ldr r0, _0809C4E8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - bne _0809C4EC - ldrh r0, [r4, 0xC] - adds r0, 0x6 - b _0809C4F0 - .align 2, 0 -_0809C4E0: .4byte sub_809C500 -_0809C4E4: .4byte gTasks -_0809C4E8: .4byte gSpecialVar_0x8004 -_0809C4EC: - ldrh r0, [r4, 0xC] - subs r0, 0x1 -_0809C4F0: - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x5 - strh r0, [r4, 0xE] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809C4A8 - - thumb_func_start sub_809C500 -sub_809C500: @ 809C500 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0809C544 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0809C588 - ldrh r1, [r4, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809C550 - movs r2, 0x4 - ldrsh r0, [r4, r2] - movs r2, 0x6 - ldrsh r1, [r4, r2] - ldr r2, _0809C548 @ =0x00000eb5 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x2 - ldr r2, _0809C54C @ =0x00000eb7 - bl MapGridSetMetatileIdAt - b _0809C56E - .align 2, 0 -_0809C544: .4byte gTasks+0x8 -_0809C548: .4byte 0x00000eb5 -_0809C54C: .4byte 0x00000eb7 -_0809C550: - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - ldr r2, _0809C5EC @ =0x00000eb6 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x2 - ldr r2, _0809C5F0 @ =0x00000eb8 - bl MapGridSetMetatileIdAt -_0809C56E: - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x2 - bl CurrentMapDrawMetatileAt -_0809C588: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - bne _0809C5E6 - movs r0, 0 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _0809C5E6 - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - ldr r2, _0809C5F4 @ =0x00000e8a - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x2 - ldr r2, _0809C5F8 @ =0x00000e96 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x2 - bl CurrentMapDrawMetatileAt - adds r0, r5, 0 - bl DestroyTask -_0809C5E6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809C5EC: .4byte 0x00000eb6 -_0809C5F0: .4byte 0x00000eb8 -_0809C5F4: .4byte 0x00000e8a -_0809C5F8: .4byte 0x00000e96 - thumb_func_end sub_809C500 - - thumb_func_start sub_809C5FC -sub_809C5FC: @ 809C5FC - push {r4,lr} - ldr r0, _0809C638 @ =sub_809C640 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0809C63C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - adds r2, 0x8 - adds r1, r2 - adds r0, r1, 0x4 - adds r1, 0x6 - bl PlayerGetDestCoords - ldrh r0, [r4, 0xC] - adds r0, 0x4 - strh r0, [r4, 0xC] - ldrh r0, [r4, 0xE] - subs r0, 0x5 - strh r0, [r4, 0xE] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C638: .4byte sub_809C640 -_0809C63C: .4byte gTasks - thumb_func_end sub_809C5FC - - thumb_func_start sub_809C640 -sub_809C640: @ 809C640 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0809C6A8 @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0809C6F2 - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0809C6BA - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - ldr r2, _0809C6AC @ =0x00000e85 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x1 - ldr r2, _0809C6B0 @ =0x00000eb4 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x1 - bl CurrentMapDrawMetatileAt - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _0809C6B4 - adds r0, r5, 0 - bl DestroyTask - b _0809C70A - .align 2, 0 -_0809C6A8: .4byte gTasks+0x8 -_0809C6AC: .4byte 0x00000e85 -_0809C6B0: .4byte 0x00000eb4 -_0809C6B4: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] -_0809C6BA: - movs r2, 0x4 - ldrsh r0, [r4, r2] - movs r2, 0x6 - ldrsh r1, [r4, r2] - ldr r2, _0809C710 @ =0x00000eb9 - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x1 - ldr r2, _0809C714 @ =0x00000eba - bl MapGridSetMetatileIdAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - movs r1, 0x4 - ldrsh r0, [r4, r1] - movs r2, 0x6 - ldrsh r1, [r4, r2] - adds r1, 0x1 - bl CurrentMapDrawMetatileAt -_0809C6F2: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _0809C70A - movs r0, 0 - strh r0, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] -_0809C70A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809C710: .4byte 0x00000eb9 -_0809C714: .4byte 0x00000eba - thumb_func_end sub_809C640 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/shop.s b/data/shop.s deleted file mode 100644 index a675cfae2..000000000 --- a/data/shop.s +++ /dev/null @@ -1,92 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83DF09C:: @ 83DF09C - .4byte gUnknown_8416738, sub_809AC5C - .4byte gUnknown_841673C, sub_809AC98 - .4byte gUnknown_8416741, sub_809ACF8 - -gUnknown_83DF0B4:: @ 83DF0B4 - .4byte sub_809BEA4 - .4byte sub_809BF98 - -gUnknown_83DF0BC:: @ 83DF0BC - .byte 0, 2, 1, 12, 6, 15 - .2byte 0x0008 - @ { - @ .bg = 0, - @ .tilemapLeft = 2, - @ .tilemapTop = 1, - @ .width = 12, - @ .height = 6, - @ .paletteNum = 15, - @ .baseBlock = 0x0008 - @ } - -gUnknown_83DF0C4:: @ 83DF0C4 - .4byte 0x000001f8 - @ { - @ .bg = 0, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x000011e1 - @ { - @ .bg = 1, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 30, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x000021d2 - @ { - @ .bg = 2, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 29, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x000031c3 - @ { - @ .bg = 3, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 28, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - -gUnknown_83DF0D4:: @ 83DF0D4 - .2byte 0x0308, 0x030a, 0x02d0 - -gUnknown_83DF0DA:: @ 83DF0DA - .2byte 0x0309, 0x030b, 0x02d1 - -gUnknown_83DF0E0:: @ 83DF0E0 - .2byte 0x0310, 0x0312, 0x02d8 - -gUnknown_83DF0E6:: @ 83DF0E6 - .2byte 0x0311, 0x0313, 0x02d9 - -gUnknown_83DF0EC:: @ 83DF0EC - .2byte 0x02e3, 0x0316, 0x0314 - -gUnknown_83DF0F2:: @ 83DF0F2 - .2byte 0x02e4, 0x0317, 0x0315 - -gUnknown_83DF0F8:: @ 83DF0F8 - .2byte 0x02eb, 0x031e, 0x031c diff --git a/data/strings.s b/data/strings.s index a1892e209..bba9336dc 100644 --- a/data/strings.s +++ b/data/strings.s @@ -475,7 +475,7 @@ gUnknown_8416210:: @ 8416210 gText_ThreeHyphens:: @ 8416213 .string "---$" -gUnknown_8416217:: @ 8416217 +gText_SevenHyphens:: @ 8416217 .string "-------$" gUnknown_841621F:: @ 841621F @@ -720,26 +720,26 @@ gText_TheBerryPouchWillBePutAway:: @ 8416716 .string "The BERRY POUCH will be\n" .string "put away.$" -gUnknown_8416738:: @ 0x8416738 +gText_ShopBuy:: @ 0x8416738 .string "BUY$" -gUnknown_841673C:: @ 0x841673C +gText_ShopSell:: @ 0x841673C .string "SELL$" -gUnknown_8416741:: @ 0x8416741 +gText_ShopQuit:: @ 0x8416741 .string "SEE YA!$" -gUnknown_8416749:: @ 8416749 +gText_InBagVar1:: @ 8416749 .string "IN BAG:{SMALL} {STR_VAR_1}$" -gUnknown_8416757:: @ 8416757 +gText_QuitShopping:: @ 8416757 .string "Quit shopping.$" -gUnknown_8416766:: @ 8416766 +gText_Var1CertainlyHowMany:: @ 8416766 .string "{STR_VAR_1}? Certainly.\n" .string "How many would you like?$" -gUnknown_841678E:: @ 841678E +gText_Var1AndYouWantedVar2:: @ 841678E .string "{STR_VAR_1}, and you want {STR_VAR_2}.\n" .string "That will be Â¥{STR_VAR_3}. Okay?$" @@ -751,7 +751,7 @@ gUnknown_84167D0:: @ 0x84167D0 .string "{STR_VAR_1} ã§ã™ã­!\n" .string "{STR_VAR_2}Â¥ ã ã‘ã© ã‹ã„ã¾ã™ã‹?$" -gUnknown_84167E7:: @ 84167E7 +gText_HereYouGoThankYou:: @ 84167E7 .string "Here you are!\n" .string "Thank you!$" @@ -763,10 +763,10 @@ gUnknown_8416822:: @ 0x8416822 .string "ã©ã†ã‚‚ ã‚りãŒã¨ã†!\n" .string "ã˜ãŸã㮠パソコン㫠ãŠãã£ã¦ ãŠãã­!$" -gUnknown_8416842:: @ 8416842 +gText_YouDontHaveMoney:: @ 8416842 .string "You don't have enough money.{PAUSE_UNTIL_PRESS}$" -gUnknown_8416861:: @ 8416861 +gText_NoMoreRoomForThis:: @ 8416861 .string "You have no more room for this\n" .string "item.{PAUSE_UNTIL_PRESS}$" @@ -774,7 +774,7 @@ gUnknown_8416888:: @ 0x8416888 .string "{STR_VAR_1}ã‚’\n" .string "ã„れる ã°ã—ょ㌠ã„ã£ã±ã„ã§ã™{PAUSE_UNTIL_PRESS}$" -gUnknown_841689E:: @ 841689E +gText_CanIHelpWithAnythingElse:: @ 841689E .string "Is there anything else I can do?$" gUnknown_84168BF:: @ 0x84168BF diff --git a/include/list_menu.h b/include/list_menu.h index df53bb529..54e598d2a 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -30,25 +30,25 @@ struct ListMenu; struct ListMenuTemplate { - const struct ListMenuItem *items; - void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list); - void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y); - u16 totalItems; - u16 maxShowed; - u8 windowId; - u8 header_X; - u8 item_X; - u8 cursor_X; - u8 upText_Y:4; // x1, x2, x4, x8 = xF - u8 cursorPal:4; // x10, x20, x40, x80 = xF0 - u8 fillValue:4; // x1, x2, x4, x8 = xF - u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0 - u8 lettersSpacing:3; - u8 itemVerticalPadding:3; - u8 scrollMultiple:2; // x40, x80 = xC0 - u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F - u8 cursorKind:2; // x40, x80 -}; + /*0x00*/ const struct ListMenuItem *items; + /*0x04*/ void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list); + /*0x08*/ void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y); + /*0x0C*/ u16 totalItems; + /*0x0E*/ u16 maxShowed; + /*0x10*/ u8 windowId; + /*0x11*/ u8 header_X; + /*0x12*/ u8 item_X; + /*0x13*/ u8 cursor_X; + /*0x14*/ u8 upText_Y:4; // x1, x2, x4, x8 = xF + u8 cursorPal:4; // x10, x20, x40, x80 = xF0 + /*0x15*/ u8 fillValue:4; // x1, x2, x4, x8 = xF + u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0 + /*0x16*/ u8 lettersSpacing:3; + u8 itemVerticalPadding:3; + u8 scrollMultiple:2; // x40, x80 = xC0 + /*0x17*/ u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F + u8 cursorKind:2; // x40, x80 +}; /* size = 0x18 */ struct ListMenu { diff --git a/include/shop.h b/include/shop.h index 481fd6c76..129839e33 100644 --- a/include/shop.h +++ b/include/shop.h @@ -4,18 +4,43 @@ #include "global.h" #include "menu_helpers.h" +#define MENU_NOTHING_CHOSEN -2 +#define MENU_B_PRESSED -1 + +#define INDEX_CANCEL -2 + +#define NUM_CHARS_PRICE 4 + +// shop view window NPC info enum +enum +{ + EVENT_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; + extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; -void CreatePokemartMenu(const u16 *); +void CreatePokemartMenu(const u16 *itemsForSale); void CreateDecorationShop1Menu(const u16 *); void CreateDecorationShop2Menu(const u16 *); -void sub_809C09C(u16, u16, u8); u8 sub_809B56C(void); +void sub_809C09C(u16 a0, u16 a1, u8 a2); + +// wrong file +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); +void sub_809C448(u8 a0); +void sub_809C460(void); +bool8 sub_809C474(void); +void sub_809C4A8(void); +void sub_809C5FC(void); + // buy_menu_helper void BuyMenuInitWindows(bool32 isSellingTM); void BuyMenuDrawMoneyBox(void); -void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color); +void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 color); void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback); void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram); void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram); diff --git a/include/strings.h b/include/strings.h index 7750b271c..29caabae4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -97,6 +97,7 @@ extern const u8 gOtherText_Toss[]; extern const u8 gOtherText_Give[]; extern const u8 gOtherText_Exit[]; extern const u8 gText_ThreeHyphens[]; +extern const u8 gText_SevenHyphens[]; extern const u8 gOtherText_UnkF9_08_Clear_01[]; extern const u8 gText_TimesStrVar1[]; extern const u8 gText_IsSelected[]; @@ -794,4 +795,18 @@ extern const u8 gText_CongratsPkmnEvolved[]; extern const u8 gText_EllipsisQuestionMark[]; extern const u8 gText_PkmnStoppedEvolving[]; +// shop +extern const u8 gText_ShopBuy[]; +extern const u8 gText_ShopSell[]; +extern const u8 gText_ShopQuit[]; +extern const u8 gText_CanIHelpWithAnythingElse[]; +extern const u8 gText_QuitShopping[]; +extern const u8 gText_PokedollarVar1[]; +extern const u8 gText_YouDontHaveMoney[]; +extern const u8 gText_Var1CertainlyHowMany[]; +extern const u8 gText_InBagVar1[]; +extern const u8 gText_Var1AndYouWantedVar2[]; +extern const u8 gText_HereYouGoThankYou[]; +extern const u8 gText_NoMoreRoomForThis[]; + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index 4d2ec3326..acf58b345 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -141,7 +141,6 @@ SECTIONS { src/battle_anim_mon_movement.o(.text); src/item.o(.text); src/shop.o(.text); - asm/shop.o(.text); src/berry.o(.text); src/script_menu.o(.text); asm/naming_screen.o(.text); @@ -443,7 +442,6 @@ SECTIONS { src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); src/shop.o(.rodata); - data/shop.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); data/naming_screen.o(.rodata); diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c index cf8072977..44de094b5 100644 --- a/src/buy_menu_helpers.c +++ b/src/buy_menu_helpers.c @@ -177,7 +177,7 @@ void BuyMenuDrawMoneyBox(void) PrintMoneyAmountInMoneyBoxWithBorder(0, 0xA, 0xF, GetMoney(&gSaveBlock1Ptr->money)); } -void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color) +void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 color) { AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, sShopBuyMenuTextColors[color], speed, text); } diff --git a/src/shop.c b/src/shop.c index 3dd9ba102..68e82ea8e 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1,72 +1,294 @@ #include "global.h" +#include "shop.h" #include "menu.h" +#include "data.h" +#include "list_menu.h" #include "new_menu_helpers.h" +#include "party_menu.h" #include "window.h" #include "field_specials.h" +#include "field_weather.h" +#include "field_camera.h" #include "task.h" +#include "text.h" #include "item.h" +#include "item_menu.h" #include "main.h" #include "sound.h" +#include "strings.h" +#include "string_util.h" +#include "overworld.h" +#include "window.h" +#include "palette.h" +#include "field_fadetransition.h" +#include "scanline_effect.h" +#include "item_menu_icons.h" +#include "bg.h" +#include "gpu_regs.h" +#include "malloc.h" +#include "decompress.h" +#include "menu_indicators.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "field_map_obj.h" +#include "money.h" +#include "quest_log.h" +#include "script.h" +#include "event_data.h" +#include "constants/songs.h" +#include "constants/items.h" +#include "constants/game_stat.h" + +#define t0 data[0] +#define tItemCount data[1] +#define tX data[4] +#define tItemId data[5] +#define tListTaskId data[7] + +enum +{ + MART_TYPE_REGULAR = 0, + MART_TYPE_TMHM, + MART_TYPE_DECOR, + MART_TYPE_DECOR2, +}; -// enums // RAM symbols // Function Declarations // Data Definitions - -struct ShopData { +struct ShopData +{ /*0x00*/ void (*callback)(void); /*0x04*/ const u16 *itemList; /*0x08*/ u32 itemPrice; - /*0x0C*/ u16 cursorPos; - /*0x0E*/ u16 _; + /*0x0C*/ u16 selectedRow; + /*0x0E*/ u16 scrollOffset; /*0x10*/ u16 itemCount; /*0x12*/ u16 field12; - /*0x14*/ u16 field14; + /*0x14*/ u16 maxQuantity; /*0x16*/ u16 martType:4; // 0x1 if tm list u16 unk16_4:5; - u16 unk16_9:7; + u16 itemSlot:2; + u16 unk16_11:5; + /*0x18*/ u16 unk18; //INCOMPLETE }; +struct MartHistory +{ + /*0x00*/ u32 unk0; + /*0x04*/ u16 unk4; + /*0x06*/ u16 unk6; + /*0x08*/ u8 unk8; + /*0x09*/ u8 unk9; + /*0x0A*/ u8 unkA; + /*0x0B*/ u8 unkB; + /*0x0C*/ u16 unkC; + /*0x0E*/ u8 unkE[6]; + /*0x14*/ u8 unk14; + /*0x15*/ u8 unk15; + /*0x16*/ u8 unk16; + /*0x17*/ u8 unk17; +}; /* size = 0x18 */ + + EWRAM_DATA struct ShopData gShopData = {0}; -EWRAM_DATA u8 gUnknown_2039950 = 0; +EWRAM_DATA u8 gUnknown_2039950 = 0; //sShopMenuWindowId + +EWRAM_DATA u16 (*gUnknown_2039954)[0x400] = {0}; //gShopTilemapBuffers +EWRAM_DATA u16 (*gUnknown_2039958)[0x400] = {0}; +EWRAM_DATA u16 (*gUnknown_203995C)[0x400] = {0}; +EWRAM_DATA u16 (*gUnknown_2039960)[0x400] = {0}; +/* +EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039954 = 0; //gShopTilemapBuffers +EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039958 = 0; +EWRAM_DATA struct ShopTilemapBuffers *gUnknown_203995C = 0; +EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039960 = 0; +*/ +EWRAM_DATA struct ListMenuItem *gUnknown_2039964 = {0}; +EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings + +EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects +EWRAM_DATA struct MartHistory gUnknown_203996C = {0}; + +EWRAM_DATA u8 gUnknown_2039984 = 0; //Function Declarations +static u8 sub_809AAB0(u8 a0); static u8 sub_809AB7C(bool32 a0); +static void sub_809ABD8(const u16 *items); +static void sub_809AC04(MainCallback callback); static void sub_809AC10(u8 taskId); +static void sub_809AC5C(u8 taskId); +static void sub_809AC98(u8 taskId); +static void sub_809ACD4(void); +static void sub_809ACF8(u8 taskId); +static void sub_809AD24(void); +static void sub_809AD40(u8 taskId); +static void sub_809AD74(void); +static void sub_809AD8C(u8 taskId); +static void sub_809ADC0(u8 taskId); //ShowShopMenuAfterExitingBuyOrSellMenu +static void sub_809ADE4(void); +static void sub_809AE00(void); +static void sub_809AE14(void); +static bool8 sub_809AF6C(void); +static void sub_809AFD0(void); //BuyMenuInitBgs +static void sub_809B080(void); +static void sub_809B10C(bool32 a0); +static void sub_809B15C(void); //BuyMenuDrawGraphics(); +static bool8 sub_809B188(void); //BuyMenuBuildListMenuTemplate +static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst); +static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list); +static void sub_809B408(u8 windowId, s32 itemId, u8 y); +static void sub_809B494(s32 item); +static void sub_809B57C(u8 listTaskId, u8 a1); +static void sub_809B59C(u8 y, u8 a1); +static void sub_809B604(void); +static void sub_809B670(void); +static void sub_809B690(void); +static void sub_809B6FC(void); +static void sub_809B73C(void); +static void sub_809B764(void); +static void sub_809B778(void); +static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType); +static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src); +static void sub_809B92C(void); +static void sub_809BA40(void); +static void sub_809BAFC(void); +static void sub_809BB44(u8 taskId); +static void sub_809BBC0(u8 taskId); +static void sub_809BCA0(u8 taskId); +static void sub_809BD8C(u8 taskId); +static void sub_809BE90(u8 taskId); +static void sub_809BEA4(u8 taskId); +static void sub_809BF0C(u8 taskId); +static void sub_809BF68(u8 taskId); +static void sub_809BF98(u8 taskId); +static void sub_809C004(u8 taskId); +static void sub_809C04C(u8 taskId); +static void nullsub_52(u8 taskId); +static void nullsub_53(void); +static void sub_809C138(void); -// external defines -extern const struct WindowTemplate gUnknown_83DF0BC[]; //sShopMenuWindowTemplates -extern const struct MenuAction gUnknown_83DF09C[]; //sShopMenuActions_BuySellQuit +// new file? +static void sub_809C334(u8 taskId); +static void sub_809C500(u8 taskId); +static void sub_809C640(u8 taskId); -extern void sub_809AC5C(u8 taskId); -extern void sub_809AC98(u8 taskId); -extern void sub_809ACF8(u8 taskId); +// external defines +extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); +extern u16 BagGetQuantityByItemId(u16 item); //Data Definitions -static const struct MenuAction sShopMenuActions_BuySellQuit[] = -{ - {gUnknown_8416738, {.void_u8 = sub_809AC5C}}, - {gUnknown_841673C, {.void_u8 = sub_809AC98}}, - {gUnknown_8416741, {.void_u8 = sub_809ACF8}} - //{ gText_ShopBuy, {.void_u8=Task_HandleShopMenuBuy} }, - //{ gText_ShopSell, {.void_u8=Task_HandleShopMenuSell} }, - //{ gText_ShopQuit, {.void_u8=Task_HandleShopMenuQuit} } +/* +extern const struct MenuAction gUnknown_83DF09C[]; +extern const struct YesNoFuncTable gUnknown_83DF0B4[]; +extern const struct WindowTemplate gUnknown_83DF0BC[]; +extern const struct BgTemplate gUnknown_83DF0C4[]; +extern const u16 gUnknown_83DF0D4[]; +extern const u16 gUnknown_83DF0DA[]; +extern const u16 gUnknown_83DF0E0[]; +extern const u16 gUnknown_83DF0E6[]; +extern const u16 gUnknown_83DF0EC[]; +extern const u16 gUnknown_83DF0F2[]; +extern const u16 gUnknown_83DF0F8[]; +*/ + +//graphics +extern const u32 gUnknown_8E85DC8[]; //gBuyMenuFrame_Gfx[]; +extern const u32 gUnknown_8E85EFC[]; //gBuyMenuFrame_Tilemap +extern const u32 gUnknown_8E86038[]; //gBuyMenuFrame_TmHmTilemap +extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal + + +static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit +{ + {gText_ShopBuy, {.void_u8 = sub_809AC5C}}, + {gText_ShopSell, {.void_u8 = sub_809AC98}}, + {gText_ShopQuit, {.void_u8 = sub_809ACF8}} +}; + +static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit +{ + sub_809BEA4, //Task_HandleShopMenuBuy, + sub_809BF98 //Task_HandleShopMenuQuit +}; + +static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates +{ + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 12, + .height = 6, + .paletteNum = 15, + .baseBlock = 8 + } +}; + +static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplates +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } }; +static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0}; +static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1}; +static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8}; +static const u16 gUnknown_83DF0E6[] = {0x0311, 0x0313, 0x02d9}; +static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314}; +static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315}; +static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; + // Functions -u8 sub_809AAB0(u8 a0) +// CreateShopMenu +static u8 sub_809AAB0(u8 a0) { gShopData.martType = sub_809AB7C(a0) & 0xF; - gShopData.cursorPos = 0; + gShopData.selectedRow = 0; if (!(ContextNpcGetTextColor())) gShopData.unk16_4 = 4; else gShopData.unk16_4 = 5; - gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShop + gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates SetStdWindowBorderStyle(gUnknown_2039950, 0); PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); @@ -106,7 +328,7 @@ static u8 sub_809AB7C(u32 a0) } //SetShopItemsForSale -void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thinking here.. +static void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thinking here.. { struct ShopData *mart; //u16 i; @@ -127,7 +349,7 @@ void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thin } //SetShopMenuCallback -void sub_809AC04(MainCallback callback) +static void sub_809AC04(MainCallback callback) { gShopData.callback = callback; } @@ -135,16 +357,1715 @@ void sub_809AC04(MainCallback callback) //Task_ShopMenu static void sub_809AC10(u8 taskId) { - s8 a0 = Menu_ProcessInputNoWrapAround(); - if (a0 == -2) - return; + s8 input = Menu_ProcessInputNoWrapAround(); - if (a0 == -1) + switch (input) { - PlaySE(5); + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); sub_809ACF8(taskId); + break; + default: + gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId); + break; + } +} + +//Task_HandleShopMenuBuy +static void sub_809AC5C(u8 taskId) +{ + SetWordTaskArg(taskId, 0xE, (u32)sub_809AE14); + fade_screen(1, 0); + gTasks[taskId].func = sub_809AD40; +} + +//Task_HandleShopMenuSell +static void sub_809AC98(u8 taskId) +{ + SetWordTaskArg(taskId, 0xE, (u32)sub_809ACD4); + fade_screen(1, 0); + gTasks[taskId].func = sub_809AD40; +} + +//CB2_GoToSellMenu +static void sub_809ACD4(void) +{ + sub_8107DB4(2, POCKET_POKE_BALLS, CB2_ReturnToField); + gFieldCallback = sub_809AD74; +} + +//Task_HandleShopMenuQuit +static void sub_809ACF8(u8 taskId) +{ + sub_809AD24(); + sub_809C138(); + DestroyTask(taskId); + if (gShopData.callback != 0) + gShopData.callback(); +} + +static void sub_809AD24(void) +{ + ClearStdWindowAndFrameToTransparent(gUnknown_2039950, 2); + RemoveWindow(gUnknown_2039950); +} + +//Task_GoToBuyOrSellMenu +static void sub_809AD40(u8 taskId) +{ + if (gPaletteFade.active) return; + SetMainCallback2((void *)GetWordTaskArg(taskId, 0xE)); + FreeAllWindowBuffers(); + DestroyTask(taskId); +} + +//MapPostLoadHook_ReturnToShopMenu +static void sub_809AD74(void) +{ + sub_807DC00(); + CreateTask(sub_809AD8C, 8); +} + +//Task_ReturnToShopMenu +static void sub_809AD8C(u8 taskId) +{ + if (field_weather_is_fade_finished() != TRUE) + return; + DisplayItemMessageOnField(taskId, sub_809B56C(), gText_CanIHelpWithAnythingElse, sub_809ADC0); +} + +//ShowShopMenuAfterExitingBuyOrSellMenu +static void sub_809ADC0(u8 taskId) +{ + sub_809AAB0(gShopData.martType); + DestroyTask(taskId); +} + +//CB2_BuyMenu +static void sub_809ADE4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + DoScheduledBgTilemapCopiesToVram(); +} + +//VBlankCB_BuyMenu +static void sub_809AE00(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +//CB2_InitBuyMenu +static void sub_809AE14(void) +{ + u8 taskId; + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + CpuFastFill(0, (void *)OAM, 0x400); + ScanlineEffect_Stop(); + ResetTempTileDataBuffers(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ClearScheduledBgCopiesToVram(); + ResetItemMenuIconState(); + if ((!(sub_809AF6C())) || (!(sub_809B188()))) + return; + sub_809AFD0(); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); + BuyMenuInitWindows(gShopData.martType); + sub_809B080(); + gMain.state++; + break; + case 1: + if (FreeTempTileDataBuffersIfPossible()) + return; + gMain.state++; + break; + default: + gShopData.selectedRow = 0; + gShopData.scrollOffset = 0; + sub_809B15C(); //BuyMenuDrawGraphics(); + sub_809B690(); //BuyMenuAddScrollIndicatorArrows(); + taskId = CreateTask(sub_809BBC0, 8); + gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(sub_809AE00); + SetMainCallback2(sub_809ADE4); + break; } - //gUnknown_83DF09C.func.void_u8(Menu_GetCursorPos()); } +//InitShopData +static bool8 sub_809AF6C(void) +{ + gUnknown_2039954 = Alloc(sizeof(*gUnknown_2039954)); + if (gUnknown_2039954 == 0) + goto CANCEL; + gUnknown_2039958 = Alloc(sizeof(*gUnknown_2039958)); + if (gUnknown_2039958 == 0) + goto CANCEL; + gUnknown_203995C = Alloc(sizeof(*gUnknown_203995C)); + if (gUnknown_203995C == 0) + goto CANCEL; + gUnknown_2039960 = Alloc(sizeof(*gUnknown_2039960)); + if (gUnknown_2039960 == 0) + goto CANCEL; + return TRUE; + + CANCEL: + sub_809B604(); + sub_809B670(); + return FALSE; +} + +#ifdef NONMATCHING +//BuyMenuInitBgs +// this matches but adjusts offsets const for some reason... +static void sub_809AFD0(void) +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83DF0C4, 4); //NELEMS(gUnknown_83DF0C4)); + SetBgTilemapBuffer(1, gUnknown_2039958); + SetBgTilemapBuffer(2, gUnknown_2039960); + SetBgTilemapBuffer(3, gUnknown_203995C); + SetGpuReg(0x10, 0); + SetGpuReg(0x12, 0); + SetGpuReg(0x14, 0); + SetGpuReg(0x16, 0); + SetGpuReg(0x18, 0); + SetGpuReg(0x1A, 0); + SetGpuReg(0x1C, 0); + SetGpuReg(0x1E, 0); + SetGpuReg(0x50, 0); + SetGpuReg(0, 0x1040); + ShowBg(0); + ShowBg(1); + ShowBg(2); +} +#else +NAKED +static void sub_809AFD0(void) +{ + asm_unified("\tpush {lr}\n" + "\tmovs r0, 0\n" + "\tbl ResetBgsAndClearDma3BusyFlags\n" + "\tldr r1, _0809B070 @ =gUnknown_83DF0C4\n" + "\tmovs r0, 0\n" + "\tmovs r2, 0x4\n" + "\tbl InitBgsFromTemplates\n" + "\tldr r0, _0809B074 @ =gUnknown_2039958\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tbl SetBgTilemapBuffer\n" + "\tldr r0, _0809B078 @ =gUnknown_2039960\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x2\n" + "\tbl SetBgTilemapBuffer\n" + "\tldr r0, _0809B07C @ =gUnknown_203995C\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x3\n" + "\tbl SetBgTilemapBuffer\n" + "\tmovs r0, 0x10\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x12\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x14\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x16\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x18\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1A\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1C\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1E\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x50\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 5\n" + "\tmovs r0, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x1\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x2\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x3\n" + "\tbl ShowBg\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809B070: .4byte gUnknown_83DF0C4\n" + "_0809B074: .4byte gUnknown_2039958\n" + "_0809B078: .4byte gUnknown_2039960\n" + "_0809B07C: .4byte gUnknown_203995C\n"); +} +#endif + +//BuyMenuDecompressBgGraphics +static void sub_809B080(void) +{ + void* pal; + DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0); + if ((gShopData.martType) != MART_TYPE_TMHM) + LZDecompressWram(gUnknown_8E85EFC, gUnknown_2039954); //gBuyMenuFrame_Tilemap + else + LZDecompressWram(gUnknown_8E86038, gUnknown_2039954); //gBuyMenuFrame_TmHmTilemap + pal = Alloc(0x40); + LZDecompressWram(gUnknown_8E86170, pal); + LoadPalette(pal, 0xB0, 0x20); + LoadPalette(pal + 0x20, 0x60, 0x20); + Free(pal); +} + +static void sub_809B10C(bool32 a0) +{ + u8 v; + if (a0 == FALSE) + v = 0xB; + else + v = 6; + if ((gShopData.martType) != MART_TYPE_TMHM) + SetBgRectPal(1, 0, 0xE, 0x1E, 6, v); + else + SetBgRectPal(1, 0, 0xC, 0x1E, 8, v); + ScheduleBgCopyTilemapToVram(1); +} + +//BuyMenuDrawGraphics +static void sub_809B15C(void) +{ + sub_809B764(); + sub_809BAFC(); + BuyMenuDrawMoneyBox(); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(1); + ScheduleBgCopyTilemapToVram(2); + ScheduleBgCopyTilemapToVram(3); +} + +//BuyMenuBuildListMenuTemplate +static bool8 sub_809B188(void) +{ + u16 i; + u16 v; + struct ListMenuItem **list = &gUnknown_2039964; + struct ShopData *mart = &gShopData; + *list = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039964)); + if (gUnknown_2039964 == 0) + goto FREE_MEMORY; + + gUnknown_2039968 = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039968)); + if (gUnknown_2039968 == 0) + { + FREE_MEMORY: + sub_809B604(); + sub_809B670(); + return FALSE; + } + + i = 0; + if (i >= mart->itemCount) + goto ADD_CANCEL; + + for (i = 0; i < mart->itemCount; i++) + { + sub_809B300(&gUnknown_2039964[i], mart->itemList[i], gUnknown_2039968[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) + } + + ADD_CANCEL: + StringCopy(gUnknown_2039968[i], gFameCheckerText_Cancel); + gUnknown_2039964[i].label = gUnknown_2039968[i]; + gUnknown_2039964[i].index = -2; + gMultiuseListMenuTemplate.items = gUnknown_2039964; + gMultiuseListMenuTemplate.totalItems = gShopData.itemCount + 1; + gMultiuseListMenuTemplate.windowId = 4; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 9; + gMultiuseListMenuTemplate.cursor_X = 1; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.fillValue = 0; + gMultiuseListMenuTemplate.cursorPal = GetFontAttribute(2, 5); + gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, 7); + gMultiuseListMenuTemplate.moveCursorFunc = sub_809B320; + gMultiuseListMenuTemplate.itemPrintFunc = sub_809B408; + gMultiuseListMenuTemplate.scrollMultiple = 0; + gMultiuseListMenuTemplate.cursorKind = 0; + + if (gShopData.martType == MART_TYPE_TMHM) + v = 5; + else + v = 6; + + if ((gShopData.itemCount + 1) > v) + gMultiuseListMenuTemplate.maxShowed = v; + else + gMultiuseListMenuTemplate.maxShowed = gShopData.itemCount + 1; + + gShopData.field12 = gMultiuseListMenuTemplate.maxShowed; + return TRUE; +} + +//PokeMartWriteNameAndIdAt +static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst) +{ + CopyItemName(index, dst); + list->label = dst; + list->index = index; +} + +//BuyMenuPrintItemDescriptionAndShowItemIcon +static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list) +{ + const u8 *description; + + if (onInit != TRUE) + PlaySE(SE_SELECT); + + if (item != INDEX_CANCEL) + description = ItemId_GetDescription(item); + else + description = gText_QuitShopping; + + FillWindowPixelBuffer(5, PIXEL_FILL(0)); + if (gShopData.martType != 1) + { + DestroyItemMenuIcon(gShopData.itemSlot ^ 1); + if (item != INDEX_CANCEL) + CreateItemMenuIcon(item, gShopData.itemSlot); + else + CreateItemMenuIcon(ITEM_N_A, gShopData.itemSlot); + gShopData.itemSlot ^= 1; + BuyMenuPrint(5, 2, description, 0, 3, 2, 1, 0, 0); + } + else //TM Mart + { + FillWindowPixelBuffer(6, PIXEL_FILL(0)); + sub_809B494(item); + BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0); + } +} + +//BuyMenuPrintPriceInList +#ifdef NONMATCHING //this function was written very strangely.. +static void sub_809B408(u8 windowId, s32 item, u8 y) +{ + u32 len; + u8* loc; + + if (item != INDEX_CANCEL) + { + ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, NUM_CHARS_PRICE); + + //len = StringLength(gStringVar1); + len = 4 - StringLength(gStringVar1); + //len = NUM_CHARS_PRICE - len; + loc = gStringVar4; + + while (len != 0) + { + loc[4-len] = 0; + *loc++; + len--; + } + StringExpandPlaceholders(loc, gText_PokedollarVar1); + BuyMenuPrint(windowId, 1, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); + } +} +#else +NAKED +static void sub_809B408(u8 windowId, s32 item, u8 y) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0x14\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r5, r2, 24\n" + "\tmovs r0, 0x2\n" + "\tnegs r0, r0\n" + "\tcmp r1, r0\n" + "\tbeq _0809B480\n" + "\tldr r4, _0809B488 @ =gStringVar1\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r0, 16\n" + "\tbl itemid_get_market_price\n" + "\tadds r1, r0, 0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x4\n" + "\tbl ConvertIntToDecimalStringN\n" + "\tadds r0, r4, 0\n" + "\tbl StringLength\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmovs r1, 0x4\n" + "\tsubs r1, r0\n" + "\tldr r2, _0809B48C @ =gStringVar4\n" + "\tadds r0, r1, 0\n" + "\tsubs r1, 0x1\n" + "\tcmp r0, 0\n" + "\tbeq _0809B45C\n" + "\tmovs r3, 0\n" + "_0809B450:\n" + "\tstrb r3, [r2]\n" + "\tadds r2, 0x1\n" + "\tadds r0, r1, 0\n" + "\tsubs r1, 0x1\n" + "\tcmp r0, 0\n" + "\tbne _0809B450\n" + "_0809B45C:\n" + "\tldr r1, _0809B490 @ =gText_PokedollarVar1\n" + "\tadds r0, r2, 0\n" + "\tbl StringExpandPlaceholders\n" + "\tldr r2, _0809B48C @ =gStringVar4\n" + "\tstr r5, [sp]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x4]\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0xFF\n" + "\tstr r0, [sp, 0xC]\n" + "\tmovs r0, 0x1\n" + "\tstr r0, [sp, 0x10]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0x69\n" + "\tbl BuyMenuPrint\n" + "_0809B480:\n" + "\tadd sp, 0x14\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t_0809B488: .4byte gStringVar1\n" + "\t_0809B48C: .4byte gStringVar4\n" + "\t_0809B490: .4byte gText_PokedollarVar1\n"); +} +#endif + + +/*=================================== +MATCHED/TESTED UP UNTIL HERE +===================================*/ + +//LoadTmHmNameInMart +static void sub_809B494(s32 item) +{ + if (item != INDEX_CANCEL) + { + ConvertIntToDecimalStringN(gStringVar1, item - ITEM_DEVON_SCOPE, 2, 2); + StringCopy(gStringVar4, gOtherText_UnkF9_08_Clear_01); + StringAppend(gStringVar4, gStringVar1); + BuyMenuPrint(6, 0, gStringVar4, 0, 0, 0, 0, TEXT_SPEED_FF, 1); + StringCopy(gStringVar4, gMoveNames[ItemIdToBattleMoveId(item)]); + BuyMenuPrint(6, 2, gStringVar4, 0, 0x10, 0, 0, 0, 1); + } + else + { + BuyMenuPrint(6, 0, gText_ThreeHyphens, 0, 0, 0, 0, TEXT_SPEED_FF, 1); + BuyMenuPrint(6, 2, gText_SevenHyphens, 0, 0x10, 0, 0, 0, 1); + } +} + +//GetMartUnk16_4 +u8 sub_809B56C(void) +{ + return gShopData.unk16_4; +} + +//BuyMenuPrintCursor +static void sub_809B57C(u8 listTaskId, u8 a1) +{ + sub_809B59C(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); +} + +static void sub_809B59C(u8 y, u8 a1) +{ + if (a1 == 0xFF) + { + FillWindowPixelRect(4, 0, 1, y, GetFontAttribute(2, FONTATTR_MAX_LETTER_WIDTH), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + CopyWindowToVram(4, 2); + } + else + { + BuyMenuPrint(4, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, a1); + } +} + +//BuyMenuFreeMemory +static void sub_809B604(void) +{ + if (gUnknown_2039954 != 0) + Free(gUnknown_2039954); + + if (gUnknown_2039958 != 0) + Free(gUnknown_2039958); + + if (gUnknown_203995C != 0) + Free(gUnknown_203995C); + + if (gUnknown_2039960 != 0) + Free(gUnknown_2039960); + + if (gUnknown_2039964 != 0) + Free(gUnknown_2039964); + + if (gUnknown_2039968 != 0) + Free(gUnknown_2039968); + + FreeAllWindowBuffers(); +} + +//SetShopExitCallback +static void sub_809B670(void) +{ + gFieldCallback = sub_809AD74; + SetMainCallback2(CB2_ReturnToField); +} + + +//BuyMenuAddScrollIndicatorArrows +static void sub_809B690(void) +{ + if (gShopData.martType != MART_TYPE_TMHM) + { + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 104, + (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); + } + else + { + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 88, + (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); + } +} + +//BuyQuantityAddScrollIndicatorArrows +static void sub_809B6FC(void) +{ + gShopData.unk18 = 1; + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18); +} + +//BuyMenuRemoveScrollIndicatorArrows +static void sub_809B73C(void) +{ + if ((gShopData.unk16_11) == 0x1F) + return; + + RemoveScrollIndicatorArrowPair(gShopData.unk16_11); + gShopData.unk16_11 = 0x1F; +} + +static void sub_809B764(void) +{ + sub_809B92C(); + sub_809BA40(); + sub_809B778(); +} + +//BuyMenuDrawMapBg +static void sub_809B778(void) +{ + s16 i; + s16 j; + s16 x; + s16 y; + const struct MapData *mapData; + u16 metatile; + u8 metatileLayerType; + + mapData = gMapHeader.mapData; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + x -= 2; + y -= 3; + + for (j = 0; j < 10; j++) + { + for (i = 0; i < 5; i++) + { + metatile = MapGridGetMetatileIdAt(x + i, y + j); + metatileLayerType = MapGridGetMetatileLayerTypeAt(x + i, y + j); + + if (metatile < NUM_METATILES_IN_PRIMARY) + { + sub_809B850(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType); + } + else + { + sub_809B850(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType); + } + } + } +} + +//BuyMenuDrawMapMetatile +static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType) +{ + u16 offset1 = x * 2; + u16 offset2 = ((y << 0x16) + 0x400000) >> 0x10; + + switch (metatileLayerType) + { + case 0: + sub_809B904(*gUnknown_2039960, offset1, offset2, src); + sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4); + break; + case 1: + sub_809B904(*gUnknown_203995C, offset1, offset2, src); + sub_809B904(*gUnknown_2039960, offset1, offset2, src + 4); + break; + case 2: + sub_809B904(*gUnknown_203995C, offset1, offset2, src); + sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4); + break; + } +} + +//BuyMenuDrawMapMetatileLayer +static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src) +{ + // This function draws a whole 2x2 metatile. + dest[offset1 + offset2] = src[0]; // top left + dest[offset1 + offset2 + 1] = src[1]; // top right + dest[offset1 + offset2 + 32] = src[2]; // bottom left + dest[offset1 + offset2 + 33] = src[3]; // bottom right +} + + +// BuyMenuCollectEventObjectData(void) +#ifdef NONMATCHING +static void sub_809B92C(void) +{ + s16 facingX; + s16 facingY; + u8 y; + u8 x; + u8 num = 0; + u8 z; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + z = PlayerGetZCoord(); + + for (y = 0; y < MAP_OBJECTS_COUNT; y++) + gUnknown_20398B4[y].eventObjId = MAP_OBJECTS_COUNT; + + for (y = 0; y < 5; y++) + { + for (x = 0; x < 7; x++) + { + u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 4 + x, facingY - 2 + y, z); + if (eventObjId != MAP_OBJECTS_COUNT) + { + gUnknown_20398B4[num].eventObjId = eventObjId; + gUnknown_20398B4[num].x = x; + gUnknown_20398B4[num].y = y; + //gUnknown_20398B4[num].layerType = MapGridGetMetatileLayerTypeAt(facingX - 4 + x, facingY - 2 + y); + + switch (gMapObjects[eventObjId].facingDirection) + { + case DIR_SOUTH: + gUnknown_20398B4[num].animNum = 0; + break; + case DIR_NORTH: + gUnknown_20398B4[num].animNum = 1; + break; + case DIR_WEST: + gUnknown_20398B4[num].animNum = 2; + break; + case DIR_EAST: + default: + gUnknown_20398B4[num].animNum = 3; + break; + } + num++; + } + } + } +} +#else +NAKED +static void sub_809B92C(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tmovs r0, 0\n" + "\tmov r9, r0\n" + "\tmov r4, sp\n" + "\tadds r4, 0x2\n" + "\tmov r0, sp\n" + "\tadds r1, r4, 0\n" + "\tbl GetXYCoordsOneStepInFrontOfPlayer\n" + "\tbl PlayerGetZCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tldr r2, _0809B9DC @ =gUnknown_20398B4\n" + "\tmovs r1, 0x10\n" + "_0809B958:\n" + "\tlsls r0, r5, 3\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0xF\n" + "\tbls _0809B958\n" + "\tmovs r5, 0\n" + "\tldr r6, _0809B9E0 @ =gUnknown_20398BA\n" + "\tsubs r1, r6, 0x6\n" + "\tmov r8, r1\n" + "_0809B970:\n" + "\tmovs r4, 0\n" + "\tadds r2, r5, 0x1\n" + "\tmov r10, r2\n" + "_0809B976:\n" + "\tmov r1, sp\n" + "\tldr r3, _0809B9E4 @ =0x0000fffd\n" + "\tadds r0, r3, 0\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tadds r0, r4\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, _0809B9E8 @ =0x0000fffe\n" + "\tadds r1, r2, 0\n" + "\tmov r3, sp\n" + "\tldrh r3, [r3, 0x2]\n" + "\tadds r1, r3\n" + "\tadds r1, r5\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tldr r2, [sp, 0x4]\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x10\n" + "\tbeq _0809BA1C\n" + "\tmov r0, r9\n" + "\tlsls r2, r0, 3\n" + "\tmov r1, r8\n" + "\tadds r0, r2, r1\n" + "\tmovs r7, 0\n" + "\tstrh r3, [r0]\n" + "\tmov r0, r8\n" + "\tadds r0, 0x2\n" + "\tadds r0, r2, r0\n" + "\tstrh r4, [r0]\n" + "\tldr r1, _0809B9EC @ =gUnknown_20398B8\n" + "\tadds r0, r2, r1\n" + "\tstrh r5, [r0]\n" + "\tldr r1, _0809B9F0 @ =gMapObjects\n" + "\tlsls r0, r3, 3\n" + "\tadds r0, r3\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x18]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 28\n" + "\tcmp r0, 0x2\n" + "\tbeq _0809BA00\n" + "\tcmp r0, 0x2\n" + "\tbgt _0809B9F4\n" + "\tcmp r0, 0x1\n" + "\tbeq _0809B9FA\n" + "\tb _0809BA0C\n" + "\t.align 2, 0\n" + "_0809B9DC: .4byte gUnknown_20398B4\n" + "_0809B9E0: .4byte gUnknown_20398BA\n" + "_0809B9E4: .4byte 0x0000fffd\n" + "_0809B9E8: .4byte 0x0000fffe\n" + "_0809B9EC: .4byte gUnknown_20398B8\n" + "_0809B9F0: .4byte gMapObjects\n" + "_0809B9F4:\n" + "\tcmp r0, 0x3\n" + "\tbeq _0809BA06\n" + "\tb _0809BA0C\n" + "_0809B9FA:\n" + "\tadds r0, r2, r6\n" + "\tstrh r7, [r0]\n" + "\tb _0809BA12\n" + "_0809BA00:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x1\n" + "\tb _0809BA10\n" + "_0809BA06:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x2\n" + "\tb _0809BA10\n" + "_0809BA0C:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x3\n" + "_0809BA10:\n" + "\tstrh r0, [r1]\n" + "_0809BA12:\n" + "\tmov r0, r9\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r9, r0\n" + "_0809BA1C:\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0x6\n" + "\tbls _0809B976\n" + "\tmov r2, r10\n" + "\tlsls r0, r2, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0x4\n" + "\tbls _0809B970\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + +//BuyMenuDrawEventObjects +static void sub_809BA40(void) +{ + u8 i; + u8 spriteId; + const struct MapObjectGraphicsInfo *graphicsInfo; + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + if (gUnknown_20398B4[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT) + continue; + + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId); + spriteId = AddPseudoEventObject( + gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId, + SpriteCallbackDummy, + (((u16)gUnknown_20398B4[i][X_COORD] << 0x14) + 0xFFF80000) >> 0x10, + (u16)gUnknown_20398B4[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2, + 2); + StartSpriteAnim(&gSprites[spriteId], gUnknown_20398B4[i][ANIM_NUM]); + } +} + +static void sub_809BAFC(void) +{ + s16 i; + + u16 *dst = *gUnknown_2039958; + u16 *src = *gUnknown_2039954; + + for (i = 0; i < 0x400; i++) + { + if (src[i] == 0) + continue; + dst[i] = src[i] + 0xb3dc; + } +} + +//BuyMenuPrintItemQuantityAndPrice +static void sub_809BB44(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + FillWindowPixelBuffer(3, PIXEL_FILL(1)); + PrintMoneyAmount(3, 0x36, 0xA, gShopData.itemPrice, TEXT_SPEED_FF); + ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + BuyMenuPrint(3, 0, gStringVar4, 2, 0xA, 0, 0, 0, 1); +} + +//Task_BuyMenu +static void sub_809BBC0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + s32 itemId = ListMenu_ProcessInput(tListTaskId); + ListMenuGetScrollAndRow(tListTaskId, &gShopData.scrollOffset, &gShopData.selectedRow); + switch (itemId) + { + case LIST_NOTHING_CHOSEN: + break; + case LIST_CANCEL: + PlaySE(SE_SELECT); + sub_809C004(taskId); + break; + default: + PlaySE(SE_SELECT); + tItemId = itemId; + ClearWindowTilemap(5); + sub_809B73C(); + sub_809B57C(tListTaskId, 2); + sub_809B10C(1); + gShopData.itemPrice = itemid_get_market_price(itemId); + if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice)) + { + BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, sub_809BF98); + } + else + { + CopyItemName(itemId, gStringVar1); + BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, sub_809BCA0); + } + } + } +} + +//Task_BuyHowManyDialogueInit +static void sub_809BCA0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + u16 quantityInBag = BagGetQuantityByItemId(tItemId); + u16 maxQuantity; + + BuyMenuQuantityBoxThinBorder(1, 0); + ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_InBagVar1); + BuyMenuPrint(1, 2, gStringVar4, 0, 2, 0, 0, 0, 1); + tItemCount = 1; + BuyMenuQuantityBoxNormalBorder(3, 0); + sub_809BB44(taskId); + ScheduleBgCopyTilemapToVram(0); + maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId); + if (maxQuantity > 99) + gShopData.maxQuantity = (u8)99; + else + gShopData.maxQuantity = (u8)maxQuantity; + + if (maxQuantity != 1) + sub_809B6FC(); + + gTasks[taskId].func = sub_809BD8C; +} + +//Task_BuyHowManyDialogueHandleInput +static void sub_809BD8C(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + + if (AdjustQuantityAccordingToDPadInput(&tItemCount, gShopData.maxQuantity) == TRUE) + { + gShopData.itemPrice = itemid_get_market_price(tItemId) * tItemCount; + sub_809BB44(taskId); + } + else + { + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_809B73C(); + ClearStdWindowAndFrameToTransparent(3, 0); + ClearStdWindowAndFrameToTransparent(1, 0); + ClearWindowTilemap(3); + ClearWindowTilemap(1); + PutWindowTilemap(4); + CopyItemName(tItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 2); + ConvertIntToDecimalStringN(gStringVar3, gShopData.itemPrice, STR_CONV_MODE_LEFT_ALIGN, 8); + BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, sub_809BE90); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_809B73C(); + ClearStdWindowAndFrameToTransparent(3, 0); + ClearStdWindowAndFrameToTransparent(1, 0); + ClearWindowTilemap(3); + ClearWindowTilemap(1); + sub_809BF98(taskId); + } + } +} + +//CreateBuyMenuConfirmPurchaseWindow +static void sub_809BE90(u8 taskId) +{ + BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); //sShopBuyMenuYesNoWindowTemplates +} + +//BuyMenuTryMakePurchase +static void sub_809BEA4(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + PutWindowTilemap(4); + if (AddBagItem(tItemId, tItemCount) == TRUE) + { + BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, sub_809BF0C); + nullsub_52(taskId); + sub_809C09C(tItemId, tItemCount, 1); + } + else + { + BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, sub_809BF98); + } +} + +//BuyMenuSubtractMoney +static void sub_809BF0C(u8 taskId) +{ + IncrementGameStat(GAME_STAT_SHOPPED); + RemoveMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice); + PlaySE(SE_SHOP); + PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = sub_809BF68; +} + +//Task_ReturnToItemListAfterItemPurchase +static void sub_809BF68(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_809BF98(taskId); + } +} + +//BuyMenuReturnToItemList +static void sub_809BF98(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + ClearDialogWindowAndFrameToTransparent(2, 0); + sub_809B57C(tListTaskId, 1); + sub_809B10C(0); + PutWindowTilemap(4); + PutWindowTilemap(5); + if (gShopData.martType == MART_TYPE_TMHM) + PutWindowTilemap(6); + + ScheduleBgCopyTilemapToVram(0); + sub_809B690(); + gTasks[taskId].func = sub_809BBC0; +} + +//ExitBuyMenu +static void sub_809C004(u8 taskId) +{ + gFieldCallback = sub_809AD74; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_809C04C; +} + +//Task_ExitBuyMenu +static void sub_809C04C(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + DestroyListMenuTask(tListTaskId, 0, 0); + sub_809B604(); + SetMainCallback2(CB2_ReturnToField); + DestroyTask(taskId); + } +} + +static void nullsub_52(u8 taskId) +{ +} + +static void nullsub_53(void) +{ +} + +#ifdef NONMATCHING +void sub_809C09C(u16 item, u16 quantity, u8 a2) +{ + struct Purchase *tmp; + + if (gUnknown_203996C.unkA == a2) + { + tmp = &gUnknown_203996C; + } + else + { + if (gUnknown_203996C.unk16 == a2) + { + tmp = &gUnknown_203996C + 12; + } + else + { + tmp = &gUnknown_203996C + 12; + if (gUnknown_203996C.unkA == 0) + { + tmp = &gUnknown_203996C; + gUnknown_203996C.unkA = a2; + } + } + } + if (tmp->unk4 != 0) + { + gUnknown_203996C.unk9 = 1; + } + + gUnknown_203996C.unk4 = item; + if (gUnknown_203996C.unk6 <= 998) + { + gUnknown_203996C.unk6 += item; + if (item > 999) + gUnknown_203996C.unk6 = 999; + } + if (gUnknown_203996C.unk0 < 999998) + { + gUnknown_203996C.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity; + if (gUnknown_203996C.unk0 > 999999) + gUnknown_203996C.unk0 = 999999; + } +} +#else +NAKED +void sub_809C09C(u16 item, u16 quantity, u8 a2) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tlsls r1, 16\n" + "\tlsrs r6, r1, 16\n" + "\tlsls r2, 24\n" + "\tlsrs r5, r2, 24\n" + "\tldr r1, _0809C0B8 @ =gUnknown_203996C\n" + "\tldrb r2, [r1, 0xA]\n" + "\tcmp r2, r5\n" + "\tbne _0809C0BC\n" + "\tadds r4, r1, 0\n" + "\tb _0809C0D4\n" + "\t.align 2, 0\n" + "_0809C0B8: .4byte gUnknown_203996C\n" + "_0809C0BC:\n" + "\tldrb r0, [r1, 0x16]\n" + "\tcmp r0, r5\n" + "\tbne _0809C0C8\n" + "\tadds r4, r1, 0\n" + "\tadds r4, 0xC\n" + "\tb _0809C0D4\n" + "_0809C0C8:\n" + "\tadds r4, r1, 0\n" + "\tadds r4, 0xC\n" + "\tcmp r2, 0\n" + "\tbne _0809C0D2\n" + "\tadds r4, r1, 0\n" + "_0809C0D2:\n" + "\tstrb r5, [r4, 0xA]\n" + "_0809C0D4:\n" + "\tldrh r0, [r4, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _0809C0DE\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r4, 0x9]\n" + "_0809C0DE:\n" + "\tstrh r3, [r4, 0x4]\n" + "\tldrh r1, [r4, 0x6]\n" + "\tldr r0, _0809C128 @ =0x000003e6\n" + "\tcmp r1, r0\n" + "\tbhi _0809C0F8\n" + "\tadds r0, r6, r1\n" + "\tstrh r0, [r4, 0x6]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _0809C12C @ =0x000003e7\n" + "\tcmp r0, r1\n" + "\tbls _0809C0F8\n" + "\tstrh r1, [r4, 0x6]\n" + "_0809C0F8:\n" + "\tldr r1, [r4]\n" + "\tldr r0, _0809C130 @ =0x000f423e\n" + "\tcmp r1, r0\n" + "\tbhi _0809C120\n" + "\tadds r0, r3, 0\n" + "\tbl itemid_get_market_price\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tsubs r1, r5, 0x1\n" + "\tasrs r0, r1\n" + "\tadds r1, r0, 0\n" + "\tmuls r1, r6\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tstr r0, [r4]\n" + "\tldr r1, _0809C134 @ =0x000f423f\n" + "\tcmp r0, r1\n" + "\tbls _0809C120\n" + "\tstr r1, [r4]\n" + "_0809C120:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809C128: .4byte 0x000003e6\n" + "_0809C12C: .4byte 0x000003e7\n" + "_0809C130: .4byte 0x000f423e\n" + "_0809C134: .4byte 0x000f423f\n"); +} +#endif + +//RecordQuestLogItemPurchase +static void sub_809C138(void) +{ + struct MartHistory *history = &gUnknown_203996C; + u16 v; + + v = history->unkA; + if (v != 0) + sub_8113550(v + 0x24, (const u16*)history); + v = history->unk16; + if (v != 0) + { + v += 0x24; + sub_8113550(v, (const u16*)&history->unkC); + } +} + +void CreatePokemartMenu(const u16 *itemsForSale) +{ + sub_809ABD8(itemsForSale); + sub_809AAB0(MART_TYPE_REGULAR); + sub_809AC04(EnableBothScriptContexts); + nullsub_53(); + memset(&gUnknown_203996C, 0, sizeof(struct MartHistory)); + gUnknown_203996C.unk8 = gMapHeader.regionMapSectionId; + gUnknown_203996C.unk14 = gMapHeader.regionMapSectionId; +} + +void CreateDecorationShop1Menu(const u16 *itemsForSale) +{ + sub_809ABD8(itemsForSale); + sub_809AAB0(MART_TYPE_DECOR); + sub_809AC04(EnableBothScriptContexts); +} + +void CreateDecorationShop2Menu(const u16 *itemsForSale) +{ + sub_809ABD8(itemsForSale); + sub_809AAB0(MART_TYPE_DECOR2); + sub_809AC04(EnableBothScriptContexts); +} + + + + +///////////////////////the following functions belong??//////////////////////////// + +#ifdef NONMATCHING +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +{ + +} +#else +NAKED +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tmov r9, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tmov r10, r2\n" + "\tldr r2, _0809C26C @ =gTasks\n" + "\tlsls r1, r0, 2\n" + "\tadds r1, r0\n" + "\tlsls r1, 3\n" + "\tadds r1, r2\n" + "\tldrh r0, [r1, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldrh r0, [r1, 0x12]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tldrh r4, [r1, 0xA]\n" + "\tmovs r2, 0xC\n" + "\tldrsh r0, [r1, r2]\n" + "\tcmp r0, 0\n" + "\tbne _0809C29C\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tasrs r1, 16\n" + "\tstr r1, [sp, 0x4]\n" + "\tlsls r0, r1, 1\n" + "\tmov r1, r9\n" + "\tadds r7, r0, r1\n" + "_0809C22C:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r2, [sp]\n" + "\tadds r6, r2, r0\n" + "_0809C238:\n" + "\tldr r0, [sp, 0xC]\n" + "\tasrs r1, r0, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C280\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r0, 0x2\n" + "\tbeq _0809C270\n" + "\tldrh r0, [r7, 0x2]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C280\n" + "\t.align 2, 0\n" + "_0809C26C: .4byte gTasks\n" + "_0809C270:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C280:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C238\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C22C\n" + "\tb _0809C324\n" + "_0809C29C:\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp, 0x8]\n" + "\tasrs r7, r1, 16\n" + "_0809C2AC:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r6, r1, r0\n" + "_0809C2B8:\n" + "\tldr r2, [sp, 0xC]\n" + "\tasrs r1, r2, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r1, 0x2\n" + "\tsubs r1, r7\n" + "\tlsls r1, 1\n" + "\tadd r1, r9\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r1, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C30A\n" + "\tcmp r7, 0x2\n" + "\tbeq _0809C2FA\n" + "\tmovs r0, 0x1\n" + "\tsubs r0, r7\n" + "\tlsls r0, 1\n" + "\tadd r0, r9\n" + "\tldrh r0, [r0]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C30A\n" + "_0809C2FA:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1, 0x4]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C30A:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2B8\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2AC\n" + "_0809C324:\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + +static void sub_809C334(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 v1; + + data[3] = 1; + switch (data[0]) + { + case 0: + sub_809C1D8(taskId, gUnknown_83DF0D4, 0); + break; + case 1: + sub_809C1D8(taskId, gUnknown_83DF0DA, 0); + break; + case 2: + sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00); + break; + case 3: + sub_809C1D8(taskId, gUnknown_83DF0E6, 0); + break; + case 4: + sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00); + break; + case 5: + sub_809C1D8(taskId, gUnknown_83DF0F2, 0); + break; + case 6: + sub_809C1D8(taskId, gUnknown_83DF0F8, 0); + default: + break; + } + data[0] = (data[0] + 1) & 7; + v1 = data[0] & 7; + //ldrh r5, [r4] instead mov r5, r0 somehow + if (v1 == 0) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = v1; + } +} + +static u8 sub_809C3FC(u16 a0) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C334, 0); + data = gTasks[taskId].data; + PlayerGetDestCoords(&tX, &tItemId); + t0 = 0; + tItemCount = 0; + data[2] = a0; + sub_809C334(taskId); + return taskId; +} + +void sub_809C448(u8 a0) +{ + u8 taskId; + + taskId = sub_809C3FC(a0); + gUnknown_2039984 = taskId; +} + +void sub_809C460(void) +{ + DestroyTask(gUnknown_2039984); +} + +bool8 sub_809C474(void) +{ + if (gTasks[gUnknown_2039984].data[3] == 0) + { + if (gTasks[gUnknown_2039984].data[1] != 2) + return TRUE; + return FALSE; + } + else + { + return TRUE; + } +} + +// special 0x1b5 - creates a tile animaiton one block left two-four up the player +void sub_809C4A8(void) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C500, 0); + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + + data = gTasks[taskId].data; + PlayerGetDestCoords(&data[2], &data[3]); + if (gSpecialVar_0x8004 == 0) + { + gTasks[taskId].data[2] += 6; + gTasks[taskId].data[3] -= 5; + } + else + { + gTasks[taskId].data[2]--; + gTasks[taskId].data[3] -= 5; + } +} + +static void sub_809C500(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if ((data[1] & 1) == 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB5); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7); + } + else + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB6); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8); + } + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + } + + data[0]++; + if (data[0] != 0x10) + return; + data[0] = 0; + + data[0] == 0; + data[1]++; + if (data[1] != 0xD) + return; + + MapGridSetMetatileIdAt(data[2], data[3], 0xE8A); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + DestroyTask(taskId); +} + +// special 0x1B7 - creates a tile animation two-six blocks right from the top-left corner of the screen +void sub_809C5FC(void) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C640, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + + data = gTasks[taskId].data; + PlayerGetDestCoords(&data[2], &data[3]); + gTasks[taskId].data[2] += 4; + gTasks[taskId].data[3] -= 5; +} + +static void sub_809C640(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if (data[1] != 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xE85); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + if (data[1] == 4) + { + DestroyTask(taskId); + return; + } + data[2]--; + } + MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + } + data[0]++; + if (data[0] == 4) + { + data[0] = 0; + data[1]++; + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 7a25f1726..f2b58411a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -315,7 +315,7 @@ gUnknown_20398B8: @ 20398B8 gUnknown_20398BA: @ 20398BA .space 0x7A -gUnknown_2039934: @ 2039934 +gShopData: @ 2039934 .space 0xE gUnknown_2039942: @ 2039942 -- cgit v1.2.3 From 697fabb98aef399d6178051df6a33418b59aa962 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 16:27:26 -0700 Subject: format fix --- src/shop.c | 2304 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 1152 insertions(+), 1152 deletions(-) diff --git a/src/shop.c b/src/shop.c index 68e82ea8e..923c7dc45 100644 --- a/src/shop.c +++ b/src/shop.c @@ -47,10 +47,10 @@ enum { - MART_TYPE_REGULAR = 0, - MART_TYPE_TMHM, - MART_TYPE_DECOR, - MART_TYPE_DECOR2, + MART_TYPE_REGULAR = 0, + MART_TYPE_TMHM, + MART_TYPE_DECOR, + MART_TYPE_DECOR2, }; // RAM symbols @@ -59,57 +59,57 @@ enum struct ShopData { - /*0x00*/ void (*callback)(void); - /*0x04*/ const u16 *itemList; - /*0x08*/ u32 itemPrice; - /*0x0C*/ u16 selectedRow; - /*0x0E*/ u16 scrollOffset; - /*0x10*/ u16 itemCount; - /*0x12*/ u16 field12; - /*0x14*/ u16 maxQuantity; - /*0x16*/ u16 martType:4; // 0x1 if tm list + /*0x00*/ void (*callback)(void); + /*0x04*/ const u16 *itemList; + /*0x08*/ u32 itemPrice; + /*0x0C*/ u16 selectedRow; + /*0x0E*/ u16 scrollOffset; + /*0x10*/ u16 itemCount; + /*0x12*/ u16 field12; + /*0x14*/ u16 maxQuantity; + /*0x16*/ u16 martType:4; // 0x1 if tm list u16 unk16_4:5; u16 itemSlot:2; - u16 unk16_11:5; - /*0x18*/ u16 unk18; - //INCOMPLETE + u16 unk16_11:5; + /*0x18*/ u16 unk18; + //INCOMPLETE }; struct MartHistory { - /*0x00*/ u32 unk0; + /*0x00*/ u32 unk0; /*0x04*/ u16 unk4; /*0x06*/ u16 unk6; /*0x08*/ u8 unk8; /*0x09*/ u8 unk9; - /*0x0A*/ u8 unkA; - /*0x0B*/ u8 unkB; + /*0x0A*/ u8 unkA; + /*0x0B*/ u8 unkB; /*0x0C*/ u16 unkC; /*0x0E*/ u8 unkE[6]; - /*0x14*/ u8 unk14; - /*0x15*/ u8 unk15; - /*0x16*/ u8 unk16; - /*0x17*/ u8 unk17; + /*0x14*/ u8 unk14; + /*0x15*/ u8 unk15; + /*0x16*/ u8 unk16; + /*0x17*/ u8 unk17; }; /* size = 0x18 */ EWRAM_DATA struct ShopData gShopData = {0}; -EWRAM_DATA u8 gUnknown_2039950 = 0; //sShopMenuWindowId +EWRAM_DATA u8 gUnknown_2039950 = 0; //sShopMenuWindowId -EWRAM_DATA u16 (*gUnknown_2039954)[0x400] = {0}; //gShopTilemapBuffers +EWRAM_DATA u16 (*gUnknown_2039954)[0x400] = {0}; //gShopTilemapBuffers EWRAM_DATA u16 (*gUnknown_2039958)[0x400] = {0}; EWRAM_DATA u16 (*gUnknown_203995C)[0x400] = {0}; EWRAM_DATA u16 (*gUnknown_2039960)[0x400] = {0}; /* -EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039954 = 0; //gShopTilemapBuffers +EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039954 = 0; //gShopTilemapBuffers EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039958 = 0; EWRAM_DATA struct ShopTilemapBuffers *gUnknown_203995C = 0; EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039960 = 0; */ EWRAM_DATA struct ListMenuItem *gUnknown_2039964 = {0}; -EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings +EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings -EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects +EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects EWRAM_DATA struct MartHistory gUnknown_203996C = {0}; EWRAM_DATA u8 gUnknown_2039984 = 0; @@ -128,16 +128,16 @@ static void sub_809AD24(void); static void sub_809AD40(u8 taskId); static void sub_809AD74(void); static void sub_809AD8C(u8 taskId); -static void sub_809ADC0(u8 taskId); //ShowShopMenuAfterExitingBuyOrSellMenu +static void sub_809ADC0(u8 taskId); //ShowShopMenuAfterExitingBuyOrSellMenu static void sub_809ADE4(void); static void sub_809AE00(void); static void sub_809AE14(void); static bool8 sub_809AF6C(void); -static void sub_809AFD0(void); //BuyMenuInitBgs +static void sub_809AFD0(void); //BuyMenuInitBgs static void sub_809B080(void); static void sub_809B10C(bool32 a0); -static void sub_809B15C(void); //BuyMenuDrawGraphics(); -static bool8 sub_809B188(void); //BuyMenuBuildListMenuTemplate +static void sub_809B15C(void); //BuyMenuDrawGraphics(); +static bool8 sub_809B188(void); //BuyMenuBuildListMenuTemplate static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst); static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list); static void sub_809B408(u8 windowId, s32 itemId, u8 y); @@ -196,75 +196,75 @@ extern const u16 gUnknown_83DF0F8[]; */ //graphics -extern const u32 gUnknown_8E85DC8[]; //gBuyMenuFrame_Gfx[]; -extern const u32 gUnknown_8E85EFC[]; //gBuyMenuFrame_Tilemap -extern const u32 gUnknown_8E86038[]; //gBuyMenuFrame_TmHmTilemap -extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal +extern const u32 gUnknown_8E85DC8[]; //gBuyMenuFrame_Gfx[]; +extern const u32 gUnknown_8E85EFC[]; //gBuyMenuFrame_Tilemap +extern const u32 gUnknown_8E86038[]; //gBuyMenuFrame_TmHmTilemap +extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal -static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit +static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit { - {gText_ShopBuy, {.void_u8 = sub_809AC5C}}, - {gText_ShopSell, {.void_u8 = sub_809AC98}}, - {gText_ShopQuit, {.void_u8 = sub_809ACF8}} + {gText_ShopBuy, {.void_u8 = sub_809AC5C}}, + {gText_ShopSell, {.void_u8 = sub_809AC98}}, + {gText_ShopQuit, {.void_u8 = sub_809ACF8}} }; -static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit +static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit { - sub_809BEA4, //Task_HandleShopMenuBuy, - sub_809BF98 //Task_HandleShopMenuQuit + sub_809BEA4, //Task_HandleShopMenuBuy, + sub_809BF98 //Task_HandleShopMenuQuit }; -static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates +static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates { { - .bg = 0, - .tilemapLeft = 2, - .tilemapTop = 1, - .width = 12, - .height = 6, - .paletteNum = 15, - .baseBlock = 8 - } -}; - -static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplates + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 12, + .height = 6, + .paletteNum = 15, + .baseBlock = 8 + } +}; + +static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplates { { - .bg = 0, - .charBaseIndex = 2, - .mapBaseIndex = 31, - .screenSize = 0, - .paletteMode = 0, - .priority = 0, - .baseTile = 0 + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 }, { - .bg = 1, - .charBaseIndex = 0, - .mapBaseIndex = 30, - .screenSize = 0, - .paletteMode = 0, - .priority = 1, - .baseTile = 0 + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 }, { - .bg = 2, - .charBaseIndex = 0, - .mapBaseIndex = 29, - .screenSize = 0, - .paletteMode = 0, - .priority = 2, - .baseTile = 0 + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 }, { - .bg = 3, - .charBaseIndex = 0, - .mapBaseIndex = 28, - .screenSize = 0, - .paletteMode = 0, - .priority = 3, - .baseTile = 0 + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 } }; @@ -281,32 +281,32 @@ static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; // CreateShopMenu static u8 sub_809AAB0(u8 a0) { - gShopData.martType = sub_809AB7C(a0) & 0xF; - gShopData.selectedRow = 0; - if (!(ContextNpcGetTextColor())) - gShopData.unk16_4 = 4; - else - gShopData.unk16_4 = 5; - - gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates - SetStdWindowBorderStyle(gUnknown_2039950, 0); - PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); - Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); - PutWindowTilemap(gUnknown_2039950); - CopyWindowToVram(gUnknown_2039950, 1); - return CreateTask(sub_809AC10, 8); + gShopData.martType = sub_809AB7C(a0) & 0xF; + gShopData.selectedRow = 0; + if (!(ContextNpcGetTextColor())) + gShopData.unk16_4 = 4; + else + gShopData.unk16_4 = 5; + + gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates + SetStdWindowBorderStyle(gUnknown_2039950, 0); + PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); + Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); + PutWindowTilemap(gUnknown_2039950); + CopyWindowToVram(gUnknown_2039950, 1); + return CreateTask(sub_809AC10, 8); } static u8 sub_809AB7C(u32 a0) -{ - u16 retVal, i; - if (a0) +{ + u16 retVal, i; + if (a0) return (u8)a0; goto MAIN; RETURN_1: return 1; - MAIN: + MAIN: i = 0; if (i >= gShopData.itemCount) goto RETURN_0; @@ -345,192 +345,192 @@ static void sub_809ABD8(const u16 *items) //I really don't know what GameFreak w ++gShopData.itemCount; //i = gShopData.itemCount; //} while (mart->itemList[i]); - } while (mart->itemList[gShopData.itemCount]); + } while (mart->itemList[gShopData.itemCount]); } //SetShopMenuCallback static void sub_809AC04(MainCallback callback) { - gShopData.callback = callback; + gShopData.callback = callback; } //Task_ShopMenu static void sub_809AC10(u8 taskId) { - s8 input = Menu_ProcessInputNoWrapAround(); - - switch (input) - { - case MENU_NOTHING_CHOSEN: - break; - case MENU_B_PRESSED: - PlaySE(SE_SELECT); - sub_809ACF8(taskId); - break; - default: - gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId); - break; - } + s8 input = Menu_ProcessInputNoWrapAround(); + + switch (input) + { + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + sub_809ACF8(taskId); + break; + default: + gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId); + break; + } } //Task_HandleShopMenuBuy static void sub_809AC5C(u8 taskId) { - SetWordTaskArg(taskId, 0xE, (u32)sub_809AE14); - fade_screen(1, 0); - gTasks[taskId].func = sub_809AD40; + SetWordTaskArg(taskId, 0xE, (u32)sub_809AE14); + fade_screen(1, 0); + gTasks[taskId].func = sub_809AD40; } //Task_HandleShopMenuSell static void sub_809AC98(u8 taskId) { - SetWordTaskArg(taskId, 0xE, (u32)sub_809ACD4); - fade_screen(1, 0); - gTasks[taskId].func = sub_809AD40; + SetWordTaskArg(taskId, 0xE, (u32)sub_809ACD4); + fade_screen(1, 0); + gTasks[taskId].func = sub_809AD40; } //CB2_GoToSellMenu static void sub_809ACD4(void) { - sub_8107DB4(2, POCKET_POKE_BALLS, CB2_ReturnToField); - gFieldCallback = sub_809AD74; + sub_8107DB4(2, POCKET_POKE_BALLS, CB2_ReturnToField); + gFieldCallback = sub_809AD74; } //Task_HandleShopMenuQuit static void sub_809ACF8(u8 taskId) { - sub_809AD24(); - sub_809C138(); - DestroyTask(taskId); - if (gShopData.callback != 0) - gShopData.callback(); + sub_809AD24(); + sub_809C138(); + DestroyTask(taskId); + if (gShopData.callback != 0) + gShopData.callback(); } static void sub_809AD24(void) { - ClearStdWindowAndFrameToTransparent(gUnknown_2039950, 2); - RemoveWindow(gUnknown_2039950); + ClearStdWindowAndFrameToTransparent(gUnknown_2039950, 2); + RemoveWindow(gUnknown_2039950); } //Task_GoToBuyOrSellMenu static void sub_809AD40(u8 taskId) { - if (gPaletteFade.active) - return; - SetMainCallback2((void *)GetWordTaskArg(taskId, 0xE)); - FreeAllWindowBuffers(); - DestroyTask(taskId); + if (gPaletteFade.active) + return; + SetMainCallback2((void *)GetWordTaskArg(taskId, 0xE)); + FreeAllWindowBuffers(); + DestroyTask(taskId); } //MapPostLoadHook_ReturnToShopMenu static void sub_809AD74(void) { - sub_807DC00(); - CreateTask(sub_809AD8C, 8); + sub_807DC00(); + CreateTask(sub_809AD8C, 8); } //Task_ReturnToShopMenu static void sub_809AD8C(u8 taskId) { - if (field_weather_is_fade_finished() != TRUE) - return; - DisplayItemMessageOnField(taskId, sub_809B56C(), gText_CanIHelpWithAnythingElse, sub_809ADC0); + if (field_weather_is_fade_finished() != TRUE) + return; + DisplayItemMessageOnField(taskId, sub_809B56C(), gText_CanIHelpWithAnythingElse, sub_809ADC0); } //ShowShopMenuAfterExitingBuyOrSellMenu static void sub_809ADC0(u8 taskId) { - sub_809AAB0(gShopData.martType); - DestroyTask(taskId); + sub_809AAB0(gShopData.martType); + DestroyTask(taskId); } //CB2_BuyMenu static void sub_809ADE4(void) { - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - DoScheduledBgTilemapCopiesToVram(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + DoScheduledBgTilemapCopiesToVram(); } //VBlankCB_BuyMenu static void sub_809AE00(void) { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); } //CB2_InitBuyMenu static void sub_809AE14(void) { - u8 taskId; - switch (gMain.state) - { - case 0: - SetVBlankHBlankCallbacksToNull(); - CpuFastFill(0, (void *)OAM, 0x400); - ScanlineEffect_Stop(); - ResetTempTileDataBuffers(); - FreeAllSpritePalettes(); - ResetPaletteFade(); - ResetSpriteData(); - ResetTasks(); - ClearScheduledBgCopiesToVram(); - ResetItemMenuIconState(); - if ((!(sub_809AF6C())) || (!(sub_809B188()))) - return; - sub_809AFD0(); + u8 taskId; + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + CpuFastFill(0, (void *)OAM, 0x400); + ScanlineEffect_Stop(); + ResetTempTileDataBuffers(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ClearScheduledBgCopiesToVram(); + ResetItemMenuIconState(); + if ((!(sub_809AF6C())) || (!(sub_809B188()))) + return; + sub_809AFD0(); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); - BuyMenuInitWindows(gShopData.martType); - sub_809B080(); - gMain.state++; - break; - case 1: - if (FreeTempTileDataBuffersIfPossible()) - return; - gMain.state++; - break; - default: - gShopData.selectedRow = 0; - gShopData.scrollOffset = 0; - sub_809B15C(); //BuyMenuDrawGraphics(); - sub_809B690(); //BuyMenuAddScrollIndicatorArrows(); - taskId = CreateTask(sub_809BBC0, 8); - gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BuyMenuInitWindows(gShopData.martType); + sub_809B080(); + gMain.state++; + break; + case 1: + if (FreeTempTileDataBuffersIfPossible()) + return; + gMain.state++; + break; + default: + gShopData.selectedRow = 0; + gShopData.scrollOffset = 0; + sub_809B15C(); //BuyMenuDrawGraphics(); + sub_809B690(); //BuyMenuAddScrollIndicatorArrows(); + taskId = CreateTask(sub_809BBC0, 8); + gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); + BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(sub_809AE00); SetMainCallback2(sub_809ADE4); - break; - } + break; + } } //InitShopData static bool8 sub_809AF6C(void) { - gUnknown_2039954 = Alloc(sizeof(*gUnknown_2039954)); - if (gUnknown_2039954 == 0) - goto CANCEL; - gUnknown_2039958 = Alloc(sizeof(*gUnknown_2039958)); - if (gUnknown_2039958 == 0) - goto CANCEL; - gUnknown_203995C = Alloc(sizeof(*gUnknown_203995C)); - if (gUnknown_203995C == 0) - goto CANCEL; - gUnknown_2039960 = Alloc(sizeof(*gUnknown_2039960)); - if (gUnknown_2039960 == 0) - goto CANCEL; - return TRUE; - - CANCEL: - sub_809B604(); - sub_809B670(); - return FALSE; + gUnknown_2039954 = Alloc(sizeof(*gUnknown_2039954)); + if (gUnknown_2039954 == 0) + goto CANCEL; + gUnknown_2039958 = Alloc(sizeof(*gUnknown_2039958)); + if (gUnknown_2039958 == 0) + goto CANCEL; + gUnknown_203995C = Alloc(sizeof(*gUnknown_203995C)); + if (gUnknown_203995C == 0) + goto CANCEL; + gUnknown_2039960 = Alloc(sizeof(*gUnknown_2039960)); + if (gUnknown_2039960 == 0) + goto CANCEL; + return TRUE; + + CANCEL: + sub_809B604(); + sub_809B670(); + return FALSE; } #ifdef NONMATCHING @@ -538,137 +538,137 @@ static bool8 sub_809AF6C(void) // this matches but adjusts offsets const for some reason... static void sub_809AFD0(void) { - ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83DF0C4, 4); //NELEMS(gUnknown_83DF0C4)); - SetBgTilemapBuffer(1, gUnknown_2039958); - SetBgTilemapBuffer(2, gUnknown_2039960); - SetBgTilemapBuffer(3, gUnknown_203995C); - SetGpuReg(0x10, 0); - SetGpuReg(0x12, 0); - SetGpuReg(0x14, 0); - SetGpuReg(0x16, 0); - SetGpuReg(0x18, 0); - SetGpuReg(0x1A, 0); - SetGpuReg(0x1C, 0); - SetGpuReg(0x1E, 0); - SetGpuReg(0x50, 0); - SetGpuReg(0, 0x1040); - ShowBg(0); - ShowBg(1); - ShowBg(2); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83DF0C4, 4); //NELEMS(gUnknown_83DF0C4)); + SetBgTilemapBuffer(1, gUnknown_2039958); + SetBgTilemapBuffer(2, gUnknown_2039960); + SetBgTilemapBuffer(3, gUnknown_203995C); + SetGpuReg(0x10, 0); + SetGpuReg(0x12, 0); + SetGpuReg(0x14, 0); + SetGpuReg(0x16, 0); + SetGpuReg(0x18, 0); + SetGpuReg(0x1A, 0); + SetGpuReg(0x1C, 0); + SetGpuReg(0x1E, 0); + SetGpuReg(0x50, 0); + SetGpuReg(0, 0x1040); + ShowBg(0); + ShowBg(1); + ShowBg(2); } #else NAKED static void sub_809AFD0(void) { - asm_unified("\tpush {lr}\n" - "\tmovs r0, 0\n" - "\tbl ResetBgsAndClearDma3BusyFlags\n" - "\tldr r1, _0809B070 @ =gUnknown_83DF0C4\n" - "\tmovs r0, 0\n" - "\tmovs r2, 0x4\n" - "\tbl InitBgsFromTemplates\n" - "\tldr r0, _0809B074 @ =gUnknown_2039958\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x1\n" - "\tbl SetBgTilemapBuffer\n" - "\tldr r0, _0809B078 @ =gUnknown_2039960\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x2\n" - "\tbl SetBgTilemapBuffer\n" - "\tldr r0, _0809B07C @ =gUnknown_203995C\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x3\n" - "\tbl SetBgTilemapBuffer\n" - "\tmovs r0, 0x10\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x12\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x14\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x16\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x18\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1A\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1C\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1E\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x50\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r1, 0x82\n" - "\tlsls r1, 5\n" - "\tmovs r0, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x1\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x2\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x3\n" - "\tbl ShowBg\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0809B070: .4byte gUnknown_83DF0C4\n" - "_0809B074: .4byte gUnknown_2039958\n" - "_0809B078: .4byte gUnknown_2039960\n" - "_0809B07C: .4byte gUnknown_203995C\n"); + asm_unified("\tpush {lr}\n" + "\tmovs r0, 0\n" + "\tbl ResetBgsAndClearDma3BusyFlags\n" + "\tldr r1, _0809B070 @ =gUnknown_83DF0C4\n" + "\tmovs r0, 0\n" + "\tmovs r2, 0x4\n" + "\tbl InitBgsFromTemplates\n" + "\tldr r0, _0809B074 @ =gUnknown_2039958\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tbl SetBgTilemapBuffer\n" + "\tldr r0, _0809B078 @ =gUnknown_2039960\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x2\n" + "\tbl SetBgTilemapBuffer\n" + "\tldr r0, _0809B07C @ =gUnknown_203995C\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x3\n" + "\tbl SetBgTilemapBuffer\n" + "\tmovs r0, 0x10\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x12\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x14\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x16\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x18\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1A\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1C\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x1E\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x50\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 5\n" + "\tmovs r0, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x1\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x2\n" + "\tbl ShowBg\n" + "\tmovs r0, 0x3\n" + "\tbl ShowBg\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809B070: .4byte gUnknown_83DF0C4\n" + "_0809B074: .4byte gUnknown_2039958\n" + "_0809B078: .4byte gUnknown_2039960\n" + "_0809B07C: .4byte gUnknown_203995C\n"); } #endif //BuyMenuDecompressBgGraphics static void sub_809B080(void) { - void* pal; - DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0); - if ((gShopData.martType) != MART_TYPE_TMHM) - LZDecompressWram(gUnknown_8E85EFC, gUnknown_2039954); //gBuyMenuFrame_Tilemap - else - LZDecompressWram(gUnknown_8E86038, gUnknown_2039954); //gBuyMenuFrame_TmHmTilemap - pal = Alloc(0x40); - LZDecompressWram(gUnknown_8E86170, pal); - LoadPalette(pal, 0xB0, 0x20); - LoadPalette(pal + 0x20, 0x60, 0x20); - Free(pal); + void* pal; + DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0); + if ((gShopData.martType) != MART_TYPE_TMHM) + LZDecompressWram(gUnknown_8E85EFC, gUnknown_2039954); //gBuyMenuFrame_Tilemap + else + LZDecompressWram(gUnknown_8E86038, gUnknown_2039954); //gBuyMenuFrame_TmHmTilemap + pal = Alloc(0x40); + LZDecompressWram(gUnknown_8E86170, pal); + LoadPalette(pal, 0xB0, 0x20); + LoadPalette(pal + 0x20, 0x60, 0x20); + Free(pal); } static void sub_809B10C(bool32 a0) { - u8 v; - if (a0 == FALSE) - v = 0xB; - else - v = 6; - if ((gShopData.martType) != MART_TYPE_TMHM) - SetBgRectPal(1, 0, 0xE, 0x1E, 6, v); - else - SetBgRectPal(1, 0, 0xC, 0x1E, 8, v); - ScheduleBgCopyTilemapToVram(1); + u8 v; + if (a0 == FALSE) + v = 0xB; + else + v = 6; + if ((gShopData.martType) != MART_TYPE_TMHM) + SetBgRectPal(1, 0, 0xE, 0x1E, 6, v); + else + SetBgRectPal(1, 0, 0xC, 0x1E, 8, v); + ScheduleBgCopyTilemapToVram(1); } //BuyMenuDrawGraphics static void sub_809B15C(void) { - sub_809B764(); - sub_809BAFC(); - BuyMenuDrawMoneyBox(); - ScheduleBgCopyTilemapToVram(0); - ScheduleBgCopyTilemapToVram(1); - ScheduleBgCopyTilemapToVram(2); - ScheduleBgCopyTilemapToVram(3); + sub_809B764(); + sub_809BAFC(); + BuyMenuDrawMoneyBox(); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(1); + ScheduleBgCopyTilemapToVram(2); + ScheduleBgCopyTilemapToVram(3); } //BuyMenuBuildListMenuTemplate @@ -680,197 +680,197 @@ static bool8 sub_809B188(void) struct ShopData *mart = &gShopData; *list = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039964)); if (gUnknown_2039964 == 0) - goto FREE_MEMORY; - + goto FREE_MEMORY; + gUnknown_2039968 = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039968)); if (gUnknown_2039968 == 0) - { - FREE_MEMORY: - sub_809B604(); - sub_809B670(); - return FALSE; - } - + { + FREE_MEMORY: + sub_809B604(); + sub_809B670(); + return FALSE; + } + i = 0; if (i >= mart->itemCount) goto ADD_CANCEL; - - for (i = 0; i < mart->itemCount; i++) - { - sub_809B300(&gUnknown_2039964[i], mart->itemList[i], gUnknown_2039968[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) - } - + + for (i = 0; i < mart->itemCount; i++) + { + sub_809B300(&gUnknown_2039964[i], mart->itemList[i], gUnknown_2039968[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) + } + ADD_CANCEL: - StringCopy(gUnknown_2039968[i], gFameCheckerText_Cancel); - gUnknown_2039964[i].label = gUnknown_2039968[i]; + StringCopy(gUnknown_2039968[i], gFameCheckerText_Cancel); + gUnknown_2039964[i].label = gUnknown_2039968[i]; gUnknown_2039964[i].index = -2; gMultiuseListMenuTemplate.items = gUnknown_2039964; gMultiuseListMenuTemplate.totalItems = gShopData.itemCount + 1; - gMultiuseListMenuTemplate.windowId = 4; - gMultiuseListMenuTemplate.header_X = 0; - gMultiuseListMenuTemplate.item_X = 9; - gMultiuseListMenuTemplate.cursor_X = 1; - gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.windowId = 4; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 9; + gMultiuseListMenuTemplate.cursor_X = 1; + gMultiuseListMenuTemplate.lettersSpacing = 0; gMultiuseListMenuTemplate.itemVerticalPadding = 2; - gMultiuseListMenuTemplate.upText_Y = 2; - gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.fontId = 2; gMultiuseListMenuTemplate.fillValue = 0; - gMultiuseListMenuTemplate.cursorPal = GetFontAttribute(2, 5); - gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, 7); - gMultiuseListMenuTemplate.moveCursorFunc = sub_809B320; - gMultiuseListMenuTemplate.itemPrintFunc = sub_809B408; - gMultiuseListMenuTemplate.scrollMultiple = 0; - gMultiuseListMenuTemplate.cursorKind = 0; - - if (gShopData.martType == MART_TYPE_TMHM) - v = 5; + gMultiuseListMenuTemplate.cursorPal = GetFontAttribute(2, 5); + gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, 7); + gMultiuseListMenuTemplate.moveCursorFunc = sub_809B320; + gMultiuseListMenuTemplate.itemPrintFunc = sub_809B408; + gMultiuseListMenuTemplate.scrollMultiple = 0; + gMultiuseListMenuTemplate.cursorKind = 0; + + if (gShopData.martType == MART_TYPE_TMHM) + v = 5; else v = 6; - - if ((gShopData.itemCount + 1) > v) - gMultiuseListMenuTemplate.maxShowed = v; - else - gMultiuseListMenuTemplate.maxShowed = gShopData.itemCount + 1; - - gShopData.field12 = gMultiuseListMenuTemplate.maxShowed; + + if ((gShopData.itemCount + 1) > v) + gMultiuseListMenuTemplate.maxShowed = v; + else + gMultiuseListMenuTemplate.maxShowed = gShopData.itemCount + 1; + + gShopData.field12 = gMultiuseListMenuTemplate.maxShowed; return TRUE; } //PokeMartWriteNameAndIdAt static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst) { - CopyItemName(index, dst); - list->label = dst; - list->index = index; + CopyItemName(index, dst); + list->label = dst; + list->index = index; } //BuyMenuPrintItemDescriptionAndShowItemIcon static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list) { const u8 *description; - + if (onInit != TRUE) PlaySE(SE_SELECT); if (item != INDEX_CANCEL) - description = ItemId_GetDescription(item); + description = ItemId_GetDescription(item); else description = gText_QuitShopping; - + FillWindowPixelBuffer(5, PIXEL_FILL(0)); - if (gShopData.martType != 1) - { - DestroyItemMenuIcon(gShopData.itemSlot ^ 1); - if (item != INDEX_CANCEL) - CreateItemMenuIcon(item, gShopData.itemSlot); - else - CreateItemMenuIcon(ITEM_N_A, gShopData.itemSlot); - gShopData.itemSlot ^= 1; - BuyMenuPrint(5, 2, description, 0, 3, 2, 1, 0, 0); - } - else //TM Mart - { - FillWindowPixelBuffer(6, PIXEL_FILL(0)); - sub_809B494(item); - BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0); - } + if (gShopData.martType != 1) + { + DestroyItemMenuIcon(gShopData.itemSlot ^ 1); + if (item != INDEX_CANCEL) + CreateItemMenuIcon(item, gShopData.itemSlot); + else + CreateItemMenuIcon(ITEM_N_A, gShopData.itemSlot); + gShopData.itemSlot ^= 1; + BuyMenuPrint(5, 2, description, 0, 3, 2, 1, 0, 0); + } + else //TM Mart + { + FillWindowPixelBuffer(6, PIXEL_FILL(0)); + sub_809B494(item); + BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0); + } } //BuyMenuPrintPriceInList -#ifdef NONMATCHING //this function was written very strangely.. +#ifdef NONMATCHING //this function was written very strangely.. static void sub_809B408(u8 windowId, s32 item, u8 y) { - u32 len; + u32 len; u8* loc; if (item != INDEX_CANCEL) { ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, NUM_CHARS_PRICE); - - //len = StringLength(gStringVar1); - len = 4 - StringLength(gStringVar1); + + //len = StringLength(gStringVar1); + len = 4 - StringLength(gStringVar1); //len = NUM_CHARS_PRICE - len; loc = gStringVar4; while (len != 0) - { - loc[4-len] = 0; + { + loc[4-len] = 0; *loc++; - len--; - } - StringExpandPlaceholders(loc, gText_PokedollarVar1); + len--; + } + StringExpandPlaceholders(loc, gText_PokedollarVar1); BuyMenuPrint(windowId, 1, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); - } + } } #else NAKED static void sub_809B408(u8 windowId, s32 item, u8 y) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tsub sp, 0x14\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tlsls r2, 24\n" - "\tlsrs r5, r2, 24\n" - "\tmovs r0, 0x2\n" - "\tnegs r0, r0\n" - "\tcmp r1, r0\n" - "\tbeq _0809B480\n" - "\tldr r4, _0809B488 @ =gStringVar1\n" - "\tlsls r0, r1, 16\n" - "\tlsrs r0, 16\n" - "\tbl itemid_get_market_price\n" - "\tadds r1, r0, 0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tadds r0, r4, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x4\n" - "\tbl ConvertIntToDecimalStringN\n" - "\tadds r0, r4, 0\n" - "\tbl StringLength\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmovs r1, 0x4\n" - "\tsubs r1, r0\n" - "\tldr r2, _0809B48C @ =gStringVar4\n" - "\tadds r0, r1, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r0, 0\n" - "\tbeq _0809B45C\n" - "\tmovs r3, 0\n" - "_0809B450:\n" - "\tstrb r3, [r2]\n" - "\tadds r2, 0x1\n" - "\tadds r0, r1, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r0, 0\n" - "\tbne _0809B450\n" - "_0809B45C:\n" - "\tldr r1, _0809B490 @ =gText_PokedollarVar1\n" - "\tadds r0, r2, 0\n" - "\tbl StringExpandPlaceholders\n" - "\tldr r2, _0809B48C @ =gStringVar4\n" - "\tstr r5, [sp]\n" - "\tmovs r0, 0\n" - "\tstr r0, [sp, 0x4]\n" - "\tstr r0, [sp, 0x8]\n" - "\tmovs r0, 0xFF\n" - "\tstr r0, [sp, 0xC]\n" - "\tmovs r0, 0x1\n" - "\tstr r0, [sp, 0x10]\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0\n" - "\tmovs r3, 0x69\n" - "\tbl BuyMenuPrint\n" - "_0809B480:\n" - "\tadd sp, 0x14\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t_0809B488: .4byte gStringVar1\n" - "\t_0809B48C: .4byte gStringVar4\n" - "\t_0809B490: .4byte gText_PokedollarVar1\n"); + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0x14\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tlsls r2, 24\n" + "\tlsrs r5, r2, 24\n" + "\tmovs r0, 0x2\n" + "\tnegs r0, r0\n" + "\tcmp r1, r0\n" + "\tbeq _0809B480\n" + "\tldr r4, _0809B488 @ =gStringVar1\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r0, 16\n" + "\tbl itemid_get_market_price\n" + "\tadds r1, r0, 0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x4\n" + "\tbl ConvertIntToDecimalStringN\n" + "\tadds r0, r4, 0\n" + "\tbl StringLength\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmovs r1, 0x4\n" + "\tsubs r1, r0\n" + "\tldr r2, _0809B48C @ =gStringVar4\n" + "\tadds r0, r1, 0\n" + "\tsubs r1, 0x1\n" + "\tcmp r0, 0\n" + "\tbeq _0809B45C\n" + "\tmovs r3, 0\n" + "_0809B450:\n" + "\tstrb r3, [r2]\n" + "\tadds r2, 0x1\n" + "\tadds r0, r1, 0\n" + "\tsubs r1, 0x1\n" + "\tcmp r0, 0\n" + "\tbne _0809B450\n" + "_0809B45C:\n" + "\tldr r1, _0809B490 @ =gText_PokedollarVar1\n" + "\tadds r0, r2, 0\n" + "\tbl StringExpandPlaceholders\n" + "\tldr r2, _0809B48C @ =gStringVar4\n" + "\tstr r5, [sp]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x4]\n" + "\tstr r0, [sp, 0x8]\n" + "\tmovs r0, 0xFF\n" + "\tstr r0, [sp, 0xC]\n" + "\tmovs r0, 0x1\n" + "\tstr r0, [sp, 0x10]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0\n" + "\tmovs r3, 0x69\n" + "\tbl BuyMenuPrint\n" + "_0809B480:\n" + "\tadd sp, 0x14\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t_0809B488: .4byte gStringVar1\n" + "\t_0809B48C: .4byte gStringVar4\n" + "\t_0809B490: .4byte gText_PokedollarVar1\n"); } #endif @@ -883,16 +883,16 @@ MATCHED/TESTED UP UNTIL HERE static void sub_809B494(s32 item) { if (item != INDEX_CANCEL) - { - ConvertIntToDecimalStringN(gStringVar1, item - ITEM_DEVON_SCOPE, 2, 2); + { + ConvertIntToDecimalStringN(gStringVar1, item - ITEM_DEVON_SCOPE, 2, 2); StringCopy(gStringVar4, gOtherText_UnkF9_08_Clear_01); StringAppend(gStringVar4, gStringVar1); BuyMenuPrint(6, 0, gStringVar4, 0, 0, 0, 0, TEXT_SPEED_FF, 1); StringCopy(gStringVar4, gMoveNames[ItemIdToBattleMoveId(item)]); BuyMenuPrint(6, 2, gStringVar4, 0, 0x10, 0, 0, 0, 1); } - else - { + else + { BuyMenuPrint(6, 0, gText_ThreeHyphens, 0, 0, 0, 0, TEXT_SPEED_FF, 1); BuyMenuPrint(6, 2, gText_SevenHyphens, 0, 0x10, 0, 0, 0, 1); } @@ -901,102 +901,102 @@ static void sub_809B494(s32 item) //GetMartUnk16_4 u8 sub_809B56C(void) { - return gShopData.unk16_4; + return gShopData.unk16_4; } //BuyMenuPrintCursor static void sub_809B57C(u8 listTaskId, u8 a1) { - sub_809B59C(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); + sub_809B59C(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); } static void sub_809B59C(u8 y, u8 a1) { - if (a1 == 0xFF) - { - FillWindowPixelRect(4, 0, 1, y, GetFontAttribute(2, FONTATTR_MAX_LETTER_WIDTH), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); - CopyWindowToVram(4, 2); - } - else - { - BuyMenuPrint(4, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, a1); - } + if (a1 == 0xFF) + { + FillWindowPixelRect(4, 0, 1, y, GetFontAttribute(2, FONTATTR_MAX_LETTER_WIDTH), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + CopyWindowToVram(4, 2); + } + else + { + BuyMenuPrint(4, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, a1); + } } //BuyMenuFreeMemory static void sub_809B604(void) { - if (gUnknown_2039954 != 0) - Free(gUnknown_2039954); - - if (gUnknown_2039958 != 0) - Free(gUnknown_2039958); - - if (gUnknown_203995C != 0) - Free(gUnknown_203995C); - - if (gUnknown_2039960 != 0) - Free(gUnknown_2039960); - - if (gUnknown_2039964 != 0) - Free(gUnknown_2039964); - - if (gUnknown_2039968 != 0) - Free(gUnknown_2039968); - - FreeAllWindowBuffers(); + if (gUnknown_2039954 != 0) + Free(gUnknown_2039954); + + if (gUnknown_2039958 != 0) + Free(gUnknown_2039958); + + if (gUnknown_203995C != 0) + Free(gUnknown_203995C); + + if (gUnknown_2039960 != 0) + Free(gUnknown_2039960); + + if (gUnknown_2039964 != 0) + Free(gUnknown_2039964); + + if (gUnknown_2039968 != 0) + Free(gUnknown_2039968); + + FreeAllWindowBuffers(); } //SetShopExitCallback static void sub_809B670(void) { - gFieldCallback = sub_809AD74; - SetMainCallback2(CB2_ReturnToField); + gFieldCallback = sub_809AD74; + SetMainCallback2(CB2_ReturnToField); } //BuyMenuAddScrollIndicatorArrows static void sub_809B690(void) { - if (gShopData.martType != MART_TYPE_TMHM) - { - gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 104, - (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); - } - else - { - gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 88, - (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); - } + if (gShopData.martType != MART_TYPE_TMHM) + { + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 104, + (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); + } + else + { + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 160, 8, 88, + (gShopData.itemCount - gShopData.field12) + 1, 110, 110, &gShopData.scrollOffset); + } } //BuyQuantityAddScrollIndicatorArrows static void sub_809B6FC(void) { - gShopData.unk18 = 1; - gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18); + gShopData.unk18 = 1; + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18); } //BuyMenuRemoveScrollIndicatorArrows static void sub_809B73C(void) { - if ((gShopData.unk16_11) == 0x1F) - return; - - RemoveScrollIndicatorArrowPair(gShopData.unk16_11); + if ((gShopData.unk16_11) == 0x1F) + return; + + RemoveScrollIndicatorArrowPair(gShopData.unk16_11); gShopData.unk16_11 = 0x1F; } static void sub_809B764(void) { - sub_809B92C(); - sub_809BA40(); - sub_809B778(); + sub_809B92C(); + sub_809BA40(); + sub_809B778(); } //BuyMenuDrawMapBg static void sub_809B778(void) -{ +{ s16 i; s16 j; s16 x; @@ -1072,14 +1072,14 @@ static void sub_809B92C(void) u8 y; u8 x; u8 num = 0; - u8 z; + u8 z; GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); - z = PlayerGetZCoord(); - + z = PlayerGetZCoord(); + for (y = 0; y < MAP_OBJECTS_COUNT; y++) gUnknown_20398B4[y].eventObjId = MAP_OBJECTS_COUNT; - + for (y = 0; y < 5; y++) { for (x = 0; x < 7; x++) @@ -1117,147 +1117,147 @@ static void sub_809B92C(void) NAKED static void sub_809B92C(void) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tmovs r0, 0\n" - "\tmov r9, r0\n" - "\tmov r4, sp\n" - "\tadds r4, 0x2\n" - "\tmov r0, sp\n" - "\tadds r1, r4, 0\n" - "\tbl GetXYCoordsOneStepInFrontOfPlayer\n" - "\tbl PlayerGetZCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstr r0, [sp, 0x4]\n" - "\tmovs r5, 0\n" - "\tldr r2, _0809B9DC @ =gUnknown_20398B4\n" - "\tmovs r1, 0x10\n" - "_0809B958:\n" - "\tlsls r0, r5, 3\n" - "\tadds r0, r2\n" - "\tstrh r1, [r0]\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, 0xF\n" - "\tbls _0809B958\n" - "\tmovs r5, 0\n" - "\tldr r6, _0809B9E0 @ =gUnknown_20398BA\n" - "\tsubs r1, r6, 0x6\n" - "\tmov r8, r1\n" - "_0809B970:\n" - "\tmovs r4, 0\n" - "\tadds r2, r5, 0x1\n" - "\tmov r10, r2\n" - "_0809B976:\n" - "\tmov r1, sp\n" - "\tldr r3, _0809B9E4 @ =0x0000fffd\n" - "\tadds r0, r3, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tadds r0, r4\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tldr r2, _0809B9E8 @ =0x0000fffe\n" - "\tadds r1, r2, 0\n" - "\tmov r3, sp\n" - "\tldrh r3, [r3, 0x2]\n" - "\tadds r1, r3\n" - "\tadds r1, r5\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tldr r2, [sp, 0x4]\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x10\n" - "\tbeq _0809BA1C\n" - "\tmov r0, r9\n" - "\tlsls r2, r0, 3\n" - "\tmov r1, r8\n" - "\tadds r0, r2, r1\n" - "\tmovs r7, 0\n" - "\tstrh r3, [r0]\n" - "\tmov r0, r8\n" - "\tadds r0, 0x2\n" - "\tadds r0, r2, r0\n" - "\tstrh r4, [r0]\n" - "\tldr r1, _0809B9EC @ =gUnknown_20398B8\n" - "\tadds r0, r2, r1\n" - "\tstrh r5, [r0]\n" - "\tldr r1, _0809B9F0 @ =gMapObjects\n" - "\tlsls r0, r3, 3\n" - "\tadds r0, r3\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0, 0x18]\n" - "\tlsls r0, 28\n" - "\tlsrs r0, 28\n" - "\tcmp r0, 0x2\n" - "\tbeq _0809BA00\n" - "\tcmp r0, 0x2\n" - "\tbgt _0809B9F4\n" - "\tcmp r0, 0x1\n" - "\tbeq _0809B9FA\n" - "\tb _0809BA0C\n" - "\t.align 2, 0\n" - "_0809B9DC: .4byte gUnknown_20398B4\n" - "_0809B9E0: .4byte gUnknown_20398BA\n" - "_0809B9E4: .4byte 0x0000fffd\n" - "_0809B9E8: .4byte 0x0000fffe\n" - "_0809B9EC: .4byte gUnknown_20398B8\n" - "_0809B9F0: .4byte gMapObjects\n" - "_0809B9F4:\n" - "\tcmp r0, 0x3\n" - "\tbeq _0809BA06\n" - "\tb _0809BA0C\n" - "_0809B9FA:\n" - "\tadds r0, r2, r6\n" - "\tstrh r7, [r0]\n" - "\tb _0809BA12\n" - "_0809BA00:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x1\n" - "\tb _0809BA10\n" - "_0809BA06:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x2\n" - "\tb _0809BA10\n" - "_0809BA0C:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x3\n" - "_0809BA10:\n" - "\tstrh r0, [r1]\n" - "_0809BA12:\n" - "\tmov r0, r9\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r9, r0\n" - "_0809BA1C:\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0x6\n" - "\tbls _0809B976\n" - "\tmov r2, r10\n" - "\tlsls r0, r2, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, 0x4\n" - "\tbls _0809B970\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n"); + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tmovs r0, 0\n" + "\tmov r9, r0\n" + "\tmov r4, sp\n" + "\tadds r4, 0x2\n" + "\tmov r0, sp\n" + "\tadds r1, r4, 0\n" + "\tbl GetXYCoordsOneStepInFrontOfPlayer\n" + "\tbl PlayerGetZCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r5, 0\n" + "\tldr r2, _0809B9DC @ =gUnknown_20398B4\n" + "\tmovs r1, 0x10\n" + "_0809B958:\n" + "\tlsls r0, r5, 3\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0xF\n" + "\tbls _0809B958\n" + "\tmovs r5, 0\n" + "\tldr r6, _0809B9E0 @ =gUnknown_20398BA\n" + "\tsubs r1, r6, 0x6\n" + "\tmov r8, r1\n" + "_0809B970:\n" + "\tmovs r4, 0\n" + "\tadds r2, r5, 0x1\n" + "\tmov r10, r2\n" + "_0809B976:\n" + "\tmov r1, sp\n" + "\tldr r3, _0809B9E4 @ =0x0000fffd\n" + "\tadds r0, r3, 0\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tadds r0, r4\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r2, _0809B9E8 @ =0x0000fffe\n" + "\tadds r1, r2, 0\n" + "\tmov r3, sp\n" + "\tldrh r3, [r3, 0x2]\n" + "\tadds r1, r3\n" + "\tadds r1, r5\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tldr r2, [sp, 0x4]\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x10\n" + "\tbeq _0809BA1C\n" + "\tmov r0, r9\n" + "\tlsls r2, r0, 3\n" + "\tmov r1, r8\n" + "\tadds r0, r2, r1\n" + "\tmovs r7, 0\n" + "\tstrh r3, [r0]\n" + "\tmov r0, r8\n" + "\tadds r0, 0x2\n" + "\tadds r0, r2, r0\n" + "\tstrh r4, [r0]\n" + "\tldr r1, _0809B9EC @ =gUnknown_20398B8\n" + "\tadds r0, r2, r1\n" + "\tstrh r5, [r0]\n" + "\tldr r1, _0809B9F0 @ =gMapObjects\n" + "\tlsls r0, r3, 3\n" + "\tadds r0, r3\n" + "\tlsls r0, 2\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0, 0x18]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 28\n" + "\tcmp r0, 0x2\n" + "\tbeq _0809BA00\n" + "\tcmp r0, 0x2\n" + "\tbgt _0809B9F4\n" + "\tcmp r0, 0x1\n" + "\tbeq _0809B9FA\n" + "\tb _0809BA0C\n" + "\t.align 2, 0\n" + "_0809B9DC: .4byte gUnknown_20398B4\n" + "_0809B9E0: .4byte gUnknown_20398BA\n" + "_0809B9E4: .4byte 0x0000fffd\n" + "_0809B9E8: .4byte 0x0000fffe\n" + "_0809B9EC: .4byte gUnknown_20398B8\n" + "_0809B9F0: .4byte gMapObjects\n" + "_0809B9F4:\n" + "\tcmp r0, 0x3\n" + "\tbeq _0809BA06\n" + "\tb _0809BA0C\n" + "_0809B9FA:\n" + "\tadds r0, r2, r6\n" + "\tstrh r7, [r0]\n" + "\tb _0809BA12\n" + "_0809BA00:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x1\n" + "\tb _0809BA10\n" + "_0809BA06:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x2\n" + "\tb _0809BA10\n" + "_0809BA0C:\n" + "\tadds r1, r2, r6\n" + "\tmovs r0, 0x3\n" + "_0809BA10:\n" + "\tstrh r0, [r1]\n" + "_0809BA12:\n" + "\tmov r0, r9\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r9, r0\n" + "_0809BA1C:\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0x6\n" + "\tbls _0809B976\n" + "\tmov r2, r10\n" + "\tlsls r0, r2, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0x4\n" + "\tbls _0809B970\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n"); } #endif @@ -1273,7 +1273,7 @@ static void sub_809BA40(void) if (gUnknown_20398B4[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT) continue; - graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId); spriteId = AddPseudoEventObject( gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId, SpriteCallbackDummy, @@ -1286,7 +1286,7 @@ static void sub_809BA40(void) static void sub_809BAFC(void) { - s16 i; + s16 i; u16 *dst = *gUnknown_2039958; u16 *src = *gUnknown_2039954; @@ -1294,7 +1294,7 @@ static void sub_809BAFC(void) for (i = 0; i < 0x400; i++) { if (src[i] == 0) - continue; + continue; dst[i] = src[i] + 0xb3dc; } } @@ -1302,13 +1302,13 @@ static void sub_809BAFC(void) //BuyMenuPrintItemQuantityAndPrice static void sub_809BB44(u8 taskId) { - s16 *data = gTasks[taskId].data; - - FillWindowPixelBuffer(3, PIXEL_FILL(1)); - PrintMoneyAmount(3, 0x36, 0xA, gShopData.itemPrice, TEXT_SPEED_FF); - ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - BuyMenuPrint(3, 0, gStringVar4, 2, 0xA, 0, 0, 0, 1); + s16 *data = gTasks[taskId].data; + + FillWindowPixelBuffer(3, PIXEL_FILL(1)); + PrintMoneyAmount(3, 0x36, 0xA, gShopData.itemPrice, TEXT_SPEED_FF); + ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + BuyMenuPrint(3, 0, gStringVar4, 2, 0xA, 0, 0, 0, 1); } //Task_BuyMenu @@ -1320,33 +1320,33 @@ static void sub_809BBC0(u8 taskId) { s32 itemId = ListMenu_ProcessInput(tListTaskId); ListMenuGetScrollAndRow(tListTaskId, &gShopData.scrollOffset, &gShopData.selectedRow); - switch (itemId) - { + switch (itemId) + { case LIST_NOTHING_CHOSEN: break; - case LIST_CANCEL: + case LIST_CANCEL: PlaySE(SE_SELECT); sub_809C004(taskId); - break; - default: + break; + default: PlaySE(SE_SELECT); tItemId = itemId; ClearWindowTilemap(5); sub_809B73C(); - sub_809B57C(tListTaskId, 2); - sub_809B10C(1); - gShopData.itemPrice = itemid_get_market_price(itemId); - if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice)) - { - BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, sub_809BF98); - } - else - { - CopyItemName(itemId, gStringVar1); - BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, sub_809BCA0); - } - } - } + sub_809B57C(tListTaskId, 2); + sub_809B10C(1); + gShopData.itemPrice = itemid_get_market_price(itemId); + if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice)) + { + BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, sub_809BF98); + } + else + { + CopyItemName(itemId, gStringVar1); + BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, sub_809BCA0); + } + } + } } //Task_BuyHowManyDialogueInit @@ -1356,25 +1356,25 @@ static void sub_809BCA0(u8 taskId) u16 quantityInBag = BagGetQuantityByItemId(tItemId); u16 maxQuantity; - - BuyMenuQuantityBoxThinBorder(1, 0); - ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gText_InBagVar1); - BuyMenuPrint(1, 2, gStringVar4, 0, 2, 0, 0, 0, 1); - tItemCount = 1; - BuyMenuQuantityBoxNormalBorder(3, 0); - sub_809BB44(taskId); - ScheduleBgCopyTilemapToVram(0); - maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId); + + BuyMenuQuantityBoxThinBorder(1, 0); + ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_InBagVar1); + BuyMenuPrint(1, 2, gStringVar4, 0, 2, 0, 0, 0, 1); + tItemCount = 1; + BuyMenuQuantityBoxNormalBorder(3, 0); + sub_809BB44(taskId); + ScheduleBgCopyTilemapToVram(0); + maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId); if (maxQuantity > 99) gShopData.maxQuantity = (u8)99; else gShopData.maxQuantity = (u8)maxQuantity; - - if (maxQuantity != 1) - sub_809B6FC(); - - gTasks[taskId].func = sub_809BD8C; + + if (maxQuantity != 1) + sub_809B6FC(); + + gTasks[taskId].func = sub_809BD8C; } //Task_BuyHowManyDialogueHandleInput @@ -1393,7 +1393,7 @@ static void sub_809BD8C(u8 taskId) if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_809B73C(); + sub_809B73C(); ClearStdWindowAndFrameToTransparent(3, 0); ClearStdWindowAndFrameToTransparent(1, 0); ClearWindowTilemap(3); @@ -1405,9 +1405,9 @@ static void sub_809BD8C(u8 taskId) BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, sub_809BE90); } else if (JOY_NEW(B_BUTTON)) - { - PlaySE(SE_SELECT); - sub_809B73C(); + { + PlaySE(SE_SELECT); + sub_809B73C(); ClearStdWindowAndFrameToTransparent(3, 0); ClearStdWindowAndFrameToTransparent(1, 0); ClearWindowTilemap(3); @@ -1420,7 +1420,7 @@ static void sub_809BD8C(u8 taskId) //CreateBuyMenuConfirmPurchaseWindow static void sub_809BE90(u8 taskId) { - BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); //sShopBuyMenuYesNoWindowTemplates + BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); //sShopBuyMenuYesNoWindowTemplates } //BuyMenuTryMakePurchase @@ -1429,26 +1429,26 @@ static void sub_809BEA4(u8 taskId) s16 *data = gTasks[taskId].data; PutWindowTilemap(4); - if (AddBagItem(tItemId, tItemCount) == TRUE) - { - BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, sub_809BF0C); - nullsub_52(taskId); - sub_809C09C(tItemId, tItemCount, 1); - } - else - { - BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, sub_809BF98); - } + if (AddBagItem(tItemId, tItemCount) == TRUE) + { + BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, sub_809BF0C); + nullsub_52(taskId); + sub_809C09C(tItemId, tItemCount, 1); + } + else + { + BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, sub_809BF98); + } } //BuyMenuSubtractMoney static void sub_809BF0C(u8 taskId) { - IncrementGameStat(GAME_STAT_SHOPPED); - RemoveMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice); - PlaySE(SE_SHOP); - PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_809BF68; + IncrementGameStat(GAME_STAT_SHOPPED); + RemoveMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice); + PlaySE(SE_SHOP); + PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = sub_809BF68; } //Task_ReturnToItemListAfterItemPurchase @@ -1457,7 +1457,7 @@ static void sub_809BF68(u8 taskId) if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_809BF98(taskId); + sub_809BF98(taskId); } } @@ -1468,21 +1468,21 @@ static void sub_809BF98(u8 taskId) ClearDialogWindowAndFrameToTransparent(2, 0); sub_809B57C(tListTaskId, 1); - sub_809B10C(0); + sub_809B10C(0); PutWindowTilemap(4); PutWindowTilemap(5); - if (gShopData.martType == MART_TYPE_TMHM) - PutWindowTilemap(6); - - ScheduleBgCopyTilemapToVram(0); - sub_809B690(); - gTasks[taskId].func = sub_809BBC0; + if (gShopData.martType == MART_TYPE_TMHM) + PutWindowTilemap(6); + + ScheduleBgCopyTilemapToVram(0); + sub_809B690(); + gTasks[taskId].func = sub_809BBC0; } //ExitBuyMenu static void sub_809C004(u8 taskId) { - gFieldCallback = sub_809AD74; + gFieldCallback = sub_809AD74; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gTasks[taskId].func = sub_809C04C; } @@ -1491,14 +1491,14 @@ static void sub_809C004(u8 taskId) static void sub_809C04C(u8 taskId) { s16 *data = gTasks[taskId].data; - - if (!gPaletteFade.active) - { + + if (!gPaletteFade.active) + { DestroyListMenuTask(tListTaskId, 0, 0); - sub_809B604(); - SetMainCallback2(CB2_ReturnToField); - DestroyTask(taskId); - } + sub_809B604(); + SetMainCallback2(CB2_ReturnToField); + DestroyTask(taskId); + } } static void nullsub_52(u8 taskId) @@ -1512,15 +1512,15 @@ static void nullsub_53(void) #ifdef NONMATCHING void sub_809C09C(u16 item, u16 quantity, u8 a2) { - struct Purchase *tmp; - - if (gUnknown_203996C.unkA == a2) - { - tmp = &gUnknown_203996C; - } - else - { - if (gUnknown_203996C.unk16 == a2) + struct Purchase *tmp; + + if (gUnknown_203996C.unkA == a2) + { + tmp = &gUnknown_203996C; + } + else + { + if (gUnknown_203996C.unk16 == a2) { tmp = &gUnknown_203996C + 12; } @@ -1533,7 +1533,7 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2) gUnknown_203996C.unkA = a2; } } - } + } if (tmp->unk4 != 0) { gUnknown_203996C.unk9 = 1; @@ -1551,133 +1551,133 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2) gUnknown_203996C.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity; if (gUnknown_203996C.unk0 > 999999) gUnknown_203996C.unk0 = 999999; - } + } } #else NAKED void sub_809C09C(u16 item, u16 quantity, u8 a2) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tlsls r1, 16\n" - "\tlsrs r6, r1, 16\n" - "\tlsls r2, 24\n" - "\tlsrs r5, r2, 24\n" - "\tldr r1, _0809C0B8 @ =gUnknown_203996C\n" - "\tldrb r2, [r1, 0xA]\n" - "\tcmp r2, r5\n" - "\tbne _0809C0BC\n" - "\tadds r4, r1, 0\n" - "\tb _0809C0D4\n" - "\t.align 2, 0\n" - "_0809C0B8: .4byte gUnknown_203996C\n" - "_0809C0BC:\n" - "\tldrb r0, [r1, 0x16]\n" - "\tcmp r0, r5\n" - "\tbne _0809C0C8\n" - "\tadds r4, r1, 0\n" - "\tadds r4, 0xC\n" - "\tb _0809C0D4\n" - "_0809C0C8:\n" - "\tadds r4, r1, 0\n" - "\tadds r4, 0xC\n" - "\tcmp r2, 0\n" - "\tbne _0809C0D2\n" - "\tadds r4, r1, 0\n" - "_0809C0D2:\n" - "\tstrb r5, [r4, 0xA]\n" - "_0809C0D4:\n" - "\tldrh r0, [r4, 0x4]\n" - "\tcmp r0, 0\n" - "\tbeq _0809C0DE\n" - "\tmovs r0, 0x1\n" - "\tstrb r0, [r4, 0x9]\n" - "_0809C0DE:\n" - "\tstrh r3, [r4, 0x4]\n" - "\tldrh r1, [r4, 0x6]\n" - "\tldr r0, _0809C128 @ =0x000003e6\n" - "\tcmp r1, r0\n" - "\tbhi _0809C0F8\n" - "\tadds r0, r6, r1\n" - "\tstrh r0, [r4, 0x6]\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tldr r1, _0809C12C @ =0x000003e7\n" - "\tcmp r0, r1\n" - "\tbls _0809C0F8\n" - "\tstrh r1, [r4, 0x6]\n" - "_0809C0F8:\n" - "\tldr r1, [r4]\n" - "\tldr r0, _0809C130 @ =0x000f423e\n" - "\tcmp r1, r0\n" - "\tbhi _0809C120\n" - "\tadds r0, r3, 0\n" - "\tbl itemid_get_market_price\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tsubs r1, r5, 0x1\n" - "\tasrs r0, r1\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r6\n" - "\tldr r0, [r4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r4]\n" - "\tldr r1, _0809C134 @ =0x000f423f\n" - "\tcmp r0, r1\n" - "\tbls _0809C120\n" - "\tstr r1, [r4]\n" - "_0809C120:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0809C128: .4byte 0x000003e6\n" - "_0809C12C: .4byte 0x000003e7\n" - "_0809C130: .4byte 0x000f423e\n" - "_0809C134: .4byte 0x000f423f\n"); + asm_unified("\tpush {r4-r6,lr}\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tlsls r1, 16\n" + "\tlsrs r6, r1, 16\n" + "\tlsls r2, 24\n" + "\tlsrs r5, r2, 24\n" + "\tldr r1, _0809C0B8 @ =gUnknown_203996C\n" + "\tldrb r2, [r1, 0xA]\n" + "\tcmp r2, r5\n" + "\tbne _0809C0BC\n" + "\tadds r4, r1, 0\n" + "\tb _0809C0D4\n" + "\t.align 2, 0\n" + "_0809C0B8: .4byte gUnknown_203996C\n" + "_0809C0BC:\n" + "\tldrb r0, [r1, 0x16]\n" + "\tcmp r0, r5\n" + "\tbne _0809C0C8\n" + "\tadds r4, r1, 0\n" + "\tadds r4, 0xC\n" + "\tb _0809C0D4\n" + "_0809C0C8:\n" + "\tadds r4, r1, 0\n" + "\tadds r4, 0xC\n" + "\tcmp r2, 0\n" + "\tbne _0809C0D2\n" + "\tadds r4, r1, 0\n" + "_0809C0D2:\n" + "\tstrb r5, [r4, 0xA]\n" + "_0809C0D4:\n" + "\tldrh r0, [r4, 0x4]\n" + "\tcmp r0, 0\n" + "\tbeq _0809C0DE\n" + "\tmovs r0, 0x1\n" + "\tstrb r0, [r4, 0x9]\n" + "_0809C0DE:\n" + "\tstrh r3, [r4, 0x4]\n" + "\tldrh r1, [r4, 0x6]\n" + "\tldr r0, _0809C128 @ =0x000003e6\n" + "\tcmp r1, r0\n" + "\tbhi _0809C0F8\n" + "\tadds r0, r6, r1\n" + "\tstrh r0, [r4, 0x6]\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldr r1, _0809C12C @ =0x000003e7\n" + "\tcmp r0, r1\n" + "\tbls _0809C0F8\n" + "\tstrh r1, [r4, 0x6]\n" + "_0809C0F8:\n" + "\tldr r1, [r4]\n" + "\tldr r0, _0809C130 @ =0x000f423e\n" + "\tcmp r1, r0\n" + "\tbhi _0809C120\n" + "\tadds r0, r3, 0\n" + "\tbl itemid_get_market_price\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tsubs r1, r5, 0x1\n" + "\tasrs r0, r1\n" + "\tadds r1, r0, 0\n" + "\tmuls r1, r6\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tstr r0, [r4]\n" + "\tldr r1, _0809C134 @ =0x000f423f\n" + "\tcmp r0, r1\n" + "\tbls _0809C120\n" + "\tstr r1, [r4]\n" + "_0809C120:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809C128: .4byte 0x000003e6\n" + "_0809C12C: .4byte 0x000003e7\n" + "_0809C130: .4byte 0x000f423e\n" + "_0809C134: .4byte 0x000f423f\n"); } #endif //RecordQuestLogItemPurchase static void sub_809C138(void) { - struct MartHistory *history = &gUnknown_203996C; - u16 v; + struct MartHistory *history = &gUnknown_203996C; + u16 v; v = history->unkA; - if (v != 0) - sub_8113550(v + 0x24, (const u16*)history); + if (v != 0) + sub_8113550(v + 0x24, (const u16*)history); v = history->unk16; - if (v != 0) + if (v != 0) { v += 0x24; - sub_8113550(v, (const u16*)&history->unkC); + sub_8113550(v, (const u16*)&history->unkC); } } void CreatePokemartMenu(const u16 *itemsForSale) { - sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_REGULAR); - sub_809AC04(EnableBothScriptContexts); - nullsub_53(); + sub_809ABD8(itemsForSale); + sub_809AAB0(MART_TYPE_REGULAR); + sub_809AC04(EnableBothScriptContexts); + nullsub_53(); memset(&gUnknown_203996C, 0, sizeof(struct MartHistory)); - gUnknown_203996C.unk8 = gMapHeader.regionMapSectionId; - gUnknown_203996C.unk14 = gMapHeader.regionMapSectionId; + gUnknown_203996C.unk8 = gMapHeader.regionMapSectionId; + gUnknown_203996C.unk14 = gMapHeader.regionMapSectionId; } void CreateDecorationShop1Menu(const u16 *itemsForSale) { sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_DECOR); + sub_809AAB0(MART_TYPE_DECOR); sub_809AC04(EnableBothScriptContexts); } void CreateDecorationShop2Menu(const u16 *itemsForSale) { sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_DECOR2); + sub_809AAB0(MART_TYPE_DECOR2); sub_809AC04(EnableBothScriptContexts); } @@ -1689,383 +1689,383 @@ void CreateDecorationShop2Menu(const u16 *itemsForSale) #ifdef NONMATCHING void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { - + } #else NAKED void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x10\n" - "\tmov r9, r1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r2, 16\n" - "\tlsrs r2, 16\n" - "\tmov r10, r2\n" - "\tldr r2, _0809C26C @ =gTasks\n" - "\tlsls r1, r0, 2\n" - "\tadds r1, r0\n" - "\tlsls r1, 3\n" - "\tadds r1, r2\n" - "\tldrh r0, [r1, 0x10]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tldrh r0, [r1, 0x12]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tldrh r4, [r1, 0xA]\n" - "\tmovs r2, 0xC\n" - "\tldrsh r0, [r1, r2]\n" - "\tcmp r0, 0\n" - "\tbne _0809C29C\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp]\n" - "\tasrs r1, 16\n" - "\tstr r1, [sp, 0x4]\n" - "\tlsls r0, r1, 1\n" - "\tmov r1, r9\n" - "\tadds r7, r0, r1\n" - "_0809C22C:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r2, [sp]\n" - "\tadds r6, r2, r0\n" - "_0809C238:\n" - "\tldr r0, [sp, 0xC]\n" - "\tasrs r1, r0, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r7, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C280\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r0, 0x2\n" - "\tbeq _0809C270\n" - "\tldrh r0, [r7, 0x2]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C280\n" - "\t.align 2, 0\n" - "_0809C26C: .4byte gTasks\n" - "_0809C270:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C280:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C238\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C22C\n" - "\tb _0809C324\n" - "_0809C29C:\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp, 0x8]\n" - "\tasrs r7, r1, 16\n" - "_0809C2AC:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r1, [sp, 0x8]\n" - "\tadds r6, r1, r0\n" - "_0809C2B8:\n" - "\tldr r2, [sp, 0xC]\n" - "\tasrs r1, r2, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r1, 0x2\n" - "\tsubs r1, r7\n" - "\tlsls r1, 1\n" - "\tadd r1, r9\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r1, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C30A\n" - "\tcmp r7, 0x2\n" - "\tbeq _0809C2FA\n" - "\tmovs r0, 0x1\n" - "\tsubs r0, r7\n" - "\tlsls r0, 1\n" - "\tadd r0, r9\n" - "\tldrh r0, [r0]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C30A\n" - "_0809C2FA:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1, 0x4]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C30A:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2B8\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2AC\n" - "_0809C324:\n" - "\tadd sp, 0x10\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n"); + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tmov r9, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tmov r10, r2\n" + "\tldr r2, _0809C26C @ =gTasks\n" + "\tlsls r1, r0, 2\n" + "\tadds r1, r0\n" + "\tlsls r1, 3\n" + "\tadds r1, r2\n" + "\tldrh r0, [r1, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldrh r0, [r1, 0x12]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tldrh r4, [r1, 0xA]\n" + "\tmovs r2, 0xC\n" + "\tldrsh r0, [r1, r2]\n" + "\tcmp r0, 0\n" + "\tbne _0809C29C\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tasrs r1, 16\n" + "\tstr r1, [sp, 0x4]\n" + "\tlsls r0, r1, 1\n" + "\tmov r1, r9\n" + "\tadds r7, r0, r1\n" + "_0809C22C:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r2, [sp]\n" + "\tadds r6, r2, r0\n" + "_0809C238:\n" + "\tldr r0, [sp, 0xC]\n" + "\tasrs r1, r0, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C280\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r0, 0x2\n" + "\tbeq _0809C270\n" + "\tldrh r0, [r7, 0x2]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C280\n" + "\t.align 2, 0\n" + "_0809C26C: .4byte gTasks\n" + "_0809C270:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C280:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C238\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C22C\n" + "\tb _0809C324\n" + "_0809C29C:\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp, 0x8]\n" + "\tasrs r7, r1, 16\n" + "_0809C2AC:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r6, r1, r0\n" + "_0809C2B8:\n" + "\tldr r2, [sp, 0xC]\n" + "\tasrs r1, r2, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r1, 0x2\n" + "\tsubs r1, r7\n" + "\tlsls r1, 1\n" + "\tadd r1, r9\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r1, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C30A\n" + "\tcmp r7, 0x2\n" + "\tbeq _0809C2FA\n" + "\tmovs r0, 0x1\n" + "\tsubs r0, r7\n" + "\tlsls r0, 1\n" + "\tadd r0, r9\n" + "\tldrh r0, [r0]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C30A\n" + "_0809C2FA:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1, 0x4]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C30A:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2B8\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2AC\n" + "_0809C324:\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n"); } #endif static void sub_809C334(u8 taskId) { - s16 *data = gTasks[taskId].data; - u16 v1; - - data[3] = 1; - switch (data[0]) - { - case 0: - sub_809C1D8(taskId, gUnknown_83DF0D4, 0); - break; - case 1: - sub_809C1D8(taskId, gUnknown_83DF0DA, 0); - break; - case 2: - sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00); - break; - case 3: - sub_809C1D8(taskId, gUnknown_83DF0E6, 0); - break; - case 4: - sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00); - break; - case 5: - sub_809C1D8(taskId, gUnknown_83DF0F2, 0); - break; - case 6: - sub_809C1D8(taskId, gUnknown_83DF0F8, 0); + s16 *data = gTasks[taskId].data; + u16 v1; + + data[3] = 1; + switch (data[0]) + { + case 0: + sub_809C1D8(taskId, gUnknown_83DF0D4, 0); + break; + case 1: + sub_809C1D8(taskId, gUnknown_83DF0DA, 0); + break; + case 2: + sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00); + break; + case 3: + sub_809C1D8(taskId, gUnknown_83DF0E6, 0); + break; + case 4: + sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00); + break; + case 5: + sub_809C1D8(taskId, gUnknown_83DF0F2, 0); + break; + case 6: + sub_809C1D8(taskId, gUnknown_83DF0F8, 0); default: break; - } - data[0] = (data[0] + 1) & 7; - v1 = data[0] & 7; - //ldrh r5, [r4] instead mov r5, r0 somehow - if (v1 == 0) - { - DrawWholeMapView(); - data[1] = (data[1] + 1) % 3; - data[3] = v1; - } + } + data[0] = (data[0] + 1) & 7; + v1 = data[0] & 7; + //ldrh r5, [r4] instead mov r5, r0 somehow + if (v1 == 0) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = v1; + } } static u8 sub_809C3FC(u16 a0) { - u8 taskId; + u8 taskId; s16 *data; taskId = CreateTask(sub_809C334, 0); data = gTasks[taskId].data; - PlayerGetDestCoords(&tX, &tItemId); + PlayerGetDestCoords(&tX, &tItemId); t0 = 0; tItemCount = 0; data[2] = a0; - sub_809C334(taskId); - return taskId; + sub_809C334(taskId); + return taskId; } void sub_809C448(u8 a0) { - u8 taskId; - - taskId = sub_809C3FC(a0); - gUnknown_2039984 = taskId; + u8 taskId; + + taskId = sub_809C3FC(a0); + gUnknown_2039984 = taskId; } void sub_809C460(void) { - DestroyTask(gUnknown_2039984); + DestroyTask(gUnknown_2039984); } bool8 sub_809C474(void) -{ - if (gTasks[gUnknown_2039984].data[3] == 0) - { - if (gTasks[gUnknown_2039984].data[1] != 2) - return TRUE; - return FALSE; - } - else - { - return TRUE; - } +{ + if (gTasks[gUnknown_2039984].data[3] == 0) + { + if (gTasks[gUnknown_2039984].data[1] != 2) + return TRUE; + return FALSE; + } + else + { + return TRUE; + } } // special 0x1b5 - creates a tile animaiton one block left two-four up the player void sub_809C4A8(void) { - u8 taskId; + u8 taskId; s16 *data; - - taskId = CreateTask(sub_809C500, 0); + + taskId = CreateTask(sub_809C500, 0); gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; + gTasks[taskId].data[1] = 0; data = gTasks[taskId].data; - PlayerGetDestCoords(&data[2], &data[3]); - if (gSpecialVar_0x8004 == 0) + PlayerGetDestCoords(&data[2], &data[3]); + if (gSpecialVar_0x8004 == 0) { - gTasks[taskId].data[2] += 6; + gTasks[taskId].data[2] += 6; gTasks[taskId].data[3] -= 5; } else { - gTasks[taskId].data[2]--; + gTasks[taskId].data[2]--; gTasks[taskId].data[3] -= 5; } } static void sub_809C500(u8 taskId) { - s16 *data = gTasks[taskId].data; - - if (data[0] == 0) - { - if ((data[1] & 1) == 0) - { - MapGridSetMetatileIdAt(data[2], data[3], 0xEB5); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7); - } - else - { - MapGridSetMetatileIdAt(data[2], data[3], 0xEB6); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8); - } - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 2); - } - - data[0]++; - if (data[0] != 0x10) - return; - data[0] = 0; - - data[0] == 0; - data[1]++; - if (data[1] != 0xD) - return; - - MapGridSetMetatileIdAt(data[2], data[3], 0xE8A); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 2); - DestroyTask(taskId); + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if ((data[1] & 1) == 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB5); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7); + } + else + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB6); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8); + } + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + } + + data[0]++; + if (data[0] != 0x10) + return; + data[0] = 0; + + data[0] == 0; + data[1]++; + if (data[1] != 0xD) + return; + + MapGridSetMetatileIdAt(data[2], data[3], 0xE8A); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + DestroyTask(taskId); } // special 0x1B7 - creates a tile animation two-six blocks right from the top-left corner of the screen void sub_809C5FC(void) { - u8 taskId; - s16 *data; - - taskId = CreateTask(sub_809C640, 0); + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C640, 0); gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; + gTasks[taskId].data[1] = 0; data = gTasks[taskId].data; - PlayerGetDestCoords(&data[2], &data[3]); - gTasks[taskId].data[2] += 4; - gTasks[taskId].data[3] -= 5; + PlayerGetDestCoords(&data[2], &data[3]); + gTasks[taskId].data[2] += 4; + gTasks[taskId].data[3] -= 5; } static void sub_809C640(u8 taskId) { - s16 *data = gTasks[taskId].data; - - if (data[0] == 0) - { - if (data[1] != 0) - { - MapGridSetMetatileIdAt(data[2], data[3], 0xE85); - MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 1); - if (data[1] == 4) - { - DestroyTask(taskId); - return; - } - data[2]--; - } - MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); - MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 1); - } - data[0]++; - if (data[0] == 4) - { - data[0] = 0; - data[1]++; - } + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if (data[1] != 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xE85); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + if (data[1] == 4) + { + DestroyTask(taskId); + return; + } + data[2]--; + } + MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + } + data[0]++; + if (data[0] == 4) + { + data[0] = 0; + data[1]++; + } } -- cgit v1.2.3 From 3f92af3651452e873339d721903340003a86c526 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 16:57:31 -0700 Subject: fix mart history struct --- src/shop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shop.c b/src/shop.c index 923c7dc45..43b1361a1 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1512,7 +1512,7 @@ static void nullsub_53(void) #ifdef NONMATCHING void sub_809C09C(u16 item, u16 quantity, u8 a2) { - struct Purchase *tmp; + struct MartHistory *tmp; if (gUnknown_203996C.unkA == a2) { -- cgit v1.2.3 From 10ee4b2cf6c380a2e1b4d1d02bbec3b3682257b1 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 17:01:54 -0700 Subject: remove sea cottage funcs --- src/shop.c | 389 ------------------------------------------------------------- 1 file changed, 389 deletions(-) diff --git a/src/shop.c b/src/shop.c index 43b1361a1..0a96b7eb3 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1680,392 +1680,3 @@ void CreateDecorationShop2Menu(const u16 *itemsForSale) sub_809AAB0(MART_TYPE_DECOR2); sub_809AC04(EnableBothScriptContexts); } - - - - -///////////////////////the following functions belong??//////////////////////////// - -#ifdef NONMATCHING -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) -{ - -} -#else -NAKED -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x10\n" - "\tmov r9, r1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r2, 16\n" - "\tlsrs r2, 16\n" - "\tmov r10, r2\n" - "\tldr r2, _0809C26C @ =gTasks\n" - "\tlsls r1, r0, 2\n" - "\tadds r1, r0\n" - "\tlsls r1, 3\n" - "\tadds r1, r2\n" - "\tldrh r0, [r1, 0x10]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tldrh r0, [r1, 0x12]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tldrh r4, [r1, 0xA]\n" - "\tmovs r2, 0xC\n" - "\tldrsh r0, [r1, r2]\n" - "\tcmp r0, 0\n" - "\tbne _0809C29C\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp]\n" - "\tasrs r1, 16\n" - "\tstr r1, [sp, 0x4]\n" - "\tlsls r0, r1, 1\n" - "\tmov r1, r9\n" - "\tadds r7, r0, r1\n" - "_0809C22C:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r2, [sp]\n" - "\tadds r6, r2, r0\n" - "_0809C238:\n" - "\tldr r0, [sp, 0xC]\n" - "\tasrs r1, r0, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r7, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C280\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r0, 0x2\n" - "\tbeq _0809C270\n" - "\tldrh r0, [r7, 0x2]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C280\n" - "\t.align 2, 0\n" - "_0809C26C: .4byte gTasks\n" - "_0809C270:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C280:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C238\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C22C\n" - "\tb _0809C324\n" - "_0809C29C:\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp, 0x8]\n" - "\tasrs r7, r1, 16\n" - "_0809C2AC:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r1, [sp, 0x8]\n" - "\tadds r6, r1, r0\n" - "_0809C2B8:\n" - "\tldr r2, [sp, 0xC]\n" - "\tasrs r1, r2, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r1, 0x2\n" - "\tsubs r1, r7\n" - "\tlsls r1, 1\n" - "\tadd r1, r9\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r1, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C30A\n" - "\tcmp r7, 0x2\n" - "\tbeq _0809C2FA\n" - "\tmovs r0, 0x1\n" - "\tsubs r0, r7\n" - "\tlsls r0, 1\n" - "\tadd r0, r9\n" - "\tldrh r0, [r0]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C30A\n" - "_0809C2FA:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1, 0x4]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C30A:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2B8\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2AC\n" - "_0809C324:\n" - "\tadd sp, 0x10\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif - -static void sub_809C334(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - u16 v1; - - data[3] = 1; - switch (data[0]) - { - case 0: - sub_809C1D8(taskId, gUnknown_83DF0D4, 0); - break; - case 1: - sub_809C1D8(taskId, gUnknown_83DF0DA, 0); - break; - case 2: - sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00); - break; - case 3: - sub_809C1D8(taskId, gUnknown_83DF0E6, 0); - break; - case 4: - sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00); - break; - case 5: - sub_809C1D8(taskId, gUnknown_83DF0F2, 0); - break; - case 6: - sub_809C1D8(taskId, gUnknown_83DF0F8, 0); - default: - break; - } - data[0] = (data[0] + 1) & 7; - v1 = data[0] & 7; - //ldrh r5, [r4] instead mov r5, r0 somehow - if (v1 == 0) - { - DrawWholeMapView(); - data[1] = (data[1] + 1) % 3; - data[3] = v1; - } -} - -static u8 sub_809C3FC(u16 a0) -{ - u8 taskId; - s16 *data; - - taskId = CreateTask(sub_809C334, 0); - data = gTasks[taskId].data; - PlayerGetDestCoords(&tX, &tItemId); - t0 = 0; - tItemCount = 0; - data[2] = a0; - sub_809C334(taskId); - return taskId; -} - -void sub_809C448(u8 a0) -{ - u8 taskId; - - taskId = sub_809C3FC(a0); - gUnknown_2039984 = taskId; -} - -void sub_809C460(void) -{ - DestroyTask(gUnknown_2039984); -} - -bool8 sub_809C474(void) -{ - if (gTasks[gUnknown_2039984].data[3] == 0) - { - if (gTasks[gUnknown_2039984].data[1] != 2) - return TRUE; - return FALSE; - } - else - { - return TRUE; - } -} - -// special 0x1b5 - creates a tile animaiton one block left two-four up the player -void sub_809C4A8(void) -{ - u8 taskId; - s16 *data; - - taskId = CreateTask(sub_809C500, 0); - - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - - data = gTasks[taskId].data; - PlayerGetDestCoords(&data[2], &data[3]); - if (gSpecialVar_0x8004 == 0) - { - gTasks[taskId].data[2] += 6; - gTasks[taskId].data[3] -= 5; - } - else - { - gTasks[taskId].data[2]--; - gTasks[taskId].data[3] -= 5; - } -} - -static void sub_809C500(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - if (data[0] == 0) - { - if ((data[1] & 1) == 0) - { - MapGridSetMetatileIdAt(data[2], data[3], 0xEB5); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7); - } - else - { - MapGridSetMetatileIdAt(data[2], data[3], 0xEB6); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8); - } - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 2); - } - - data[0]++; - if (data[0] != 0x10) - return; - data[0] = 0; - - data[0] == 0; - data[1]++; - if (data[1] != 0xD) - return; - - MapGridSetMetatileIdAt(data[2], data[3], 0xE8A); - MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 2); - DestroyTask(taskId); -} - -// special 0x1B7 - creates a tile animation two-six blocks right from the top-left corner of the screen -void sub_809C5FC(void) -{ - u8 taskId; - s16 *data; - - taskId = CreateTask(sub_809C640, 0); - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - - data = gTasks[taskId].data; - PlayerGetDestCoords(&data[2], &data[3]); - gTasks[taskId].data[2] += 4; - gTasks[taskId].data[3] -= 5; -} - -static void sub_809C640(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - if (data[0] == 0) - { - if (data[1] != 0) - { - MapGridSetMetatileIdAt(data[2], data[3], 0xE85); - MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 1); - if (data[1] == 4) - { - DestroyTask(taskId); - return; - } - data[2]--; - } - MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); - MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA); - CurrentMapDrawMetatileAt(data[2], data[3]); - CurrentMapDrawMetatileAt(data[2], data[3] + 1); - } - data[0]++; - if (data[0] == 4) - { - data[0] = 0; - data[1]++; - } -} -- cgit v1.2.3 From e6a882cc920077f7e555714983a8835fbbe3e4bd Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 17:22:02 -0700 Subject: separate sea cottage anim functions --- include/sea_cottage.h | 13 ++ include/shop.h | 9 - ld_script.txt | 2 + src/sea_cottage_special_anim.c | 417 +++++++++++++++++++++++++++++++++++++++++ src/shop.c | 24 +-- 5 files changed, 433 insertions(+), 32 deletions(-) create mode 100644 include/sea_cottage.h create mode 100644 src/sea_cottage_special_anim.c diff --git a/include/sea_cottage.h b/include/sea_cottage.h new file mode 100644 index 000000000..dce6862ff --- /dev/null +++ b/include/sea_cottage.h @@ -0,0 +1,13 @@ +#ifdndef GUARD_SEA_COTTAGE_H +#define GUARD_SEA_COTTAGE_H + +#include "global.h" + +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); +void sub_809C448(u8 a0); +void sub_809C460(void); +bool8 sub_809C474(void); +void sub_809C4A8(void); +void sub_809C5FC(void); + +#endif // GUARD_SHOP_H \ No newline at end of file diff --git a/include/shop.h b/include/shop.h index 129839e33..27014580d 100644 --- a/include/shop.h +++ b/include/shop.h @@ -28,15 +28,6 @@ void CreateDecorationShop2Menu(const u16 *); u8 sub_809B56C(void); void sub_809C09C(u16 a0, u16 a1, u8 a2); -// wrong file -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); -void sub_809C448(u8 a0); -void sub_809C460(void); -bool8 sub_809C474(void); -void sub_809C4A8(void); -void sub_809C5FC(void); - - // buy_menu_helper void BuyMenuInitWindows(bool32 isSellingTM); void BuyMenuDrawMoneyBox(void); diff --git a/ld_script.txt b/ld_script.txt index acf58b345..9f6e7297d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -141,6 +141,7 @@ SECTIONS { src/battle_anim_mon_movement.o(.text); src/item.o(.text); src/shop.o(.text); + src/sea_cottage_special_anim.o(.text); src/berry.o(.text); src/script_menu.o(.text); asm/naming_screen.o(.text); @@ -442,6 +443,7 @@ SECTIONS { src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); src/shop.o(.rodata); + src/sea_cottage_special_anim.o(.rodata); src/berry.o(.rodata); src/script_menu.o(.rodata); data/naming_screen.o(.rodata); diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c new file mode 100644 index 000000000..e9b05a0fc --- /dev/null +++ b/src/sea_cottage_special_anim.c @@ -0,0 +1,417 @@ +#include "global.h" +#include "event_data.h" +#include "task.h" +#include "menu.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "field_map_obj.h" +#include "field_camera.h" + +// Defines +#define t0 data[0] +#define tX data[4] +#define tListTaskId data[7] + +// RAM +EWRAM_DATA u8 gUnknown_2039984 = 0; + + +// Function Declarations +static void sub_809C334(u8 taskId); +static void sub_809C500(u8 taskId); +static void sub_809C640(u8 taskId); + +// Data Definitions +static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0}; +static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1}; +static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8}; +static const u16 gUnknown_83DF0E6[] = {0x0311, 0x0313, 0x02d9}; +static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314}; +static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315}; +static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; + + +// Functions +#ifdef NONMATCHING +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +{ + +} +#else +NAKED +void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tmov r9, r1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tmov r10, r2\n" + "\tldr r2, _0809C26C @ =gTasks\n" + "\tlsls r1, r0, 2\n" + "\tadds r1, r0\n" + "\tlsls r1, 3\n" + "\tadds r1, r2\n" + "\tldrh r0, [r1, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tldrh r0, [r1, 0x12]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tldrh r4, [r1, 0xA]\n" + "\tmovs r2, 0xC\n" + "\tldrsh r0, [r1, r2]\n" + "\tcmp r0, 0\n" + "\tbne _0809C29C\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp]\n" + "\tasrs r1, 16\n" + "\tstr r1, [sp, 0x4]\n" + "\tlsls r0, r1, 1\n" + "\tmov r1, r9\n" + "\tadds r7, r0, r1\n" + "_0809C22C:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r2, [sp]\n" + "\tadds r6, r2, r0\n" + "_0809C238:\n" + "\tldr r0, [sp, 0xC]\n" + "\tasrs r1, r0, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C280\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r0, 0x2\n" + "\tbeq _0809C270\n" + "\tldrh r0, [r7, 0x2]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C280\n" + "\t.align 2, 0\n" + "_0809C26C: .4byte gTasks\n" + "_0809C270:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C280:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C238\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C22C\n" + "\tb _0809C324\n" + "_0809C29C:\n" + "\tmovs r2, 0\n" + "\tlsls r5, 16\n" + "\tstr r5, [sp, 0xC]\n" + "\tlsls r0, r3, 16\n" + "\tlsls r1, r4, 16\n" + "\tasrs r0, 16\n" + "\tstr r0, [sp, 0x8]\n" + "\tasrs r7, r1, 16\n" + "_0809C2AC:\n" + "\tmovs r4, 0\n" + "\tlsls r2, 16\n" + "\tmov r8, r2\n" + "\tasrs r0, r2, 16\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r6, r1, r0\n" + "_0809C2B8:\n" + "\tldr r2, [sp, 0xC]\n" + "\tasrs r1, r2, 16\n" + "\tlsls r4, 16\n" + "\tasrs r0, r4, 16\n" + "\tadds r5, r1, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r1, 0x2\n" + "\tsubs r1, r7\n" + "\tlsls r1, 1\n" + "\tadd r1, r9\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r1, r2]\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r1, r0\n" + "\tbne _0809C30A\n" + "\tcmp r7, 0x2\n" + "\tbeq _0809C2FA\n" + "\tmovs r0, 0x1\n" + "\tsubs r0, r7\n" + "\tlsls r0, 1\n" + "\tadd r0, r9\n" + "\tldrh r0, [r0]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tb _0809C30A\n" + "_0809C2FA:\n" + "\tmov r1, r9\n" + "\tldrh r0, [r1, 0x4]\n" + "\tmov r2, r10\n" + "\torrs r2, r0\n" + "\tadds r0, r5, 0\n" + "\tadds r1, r6, 0\n" + "\tbl MapGridSetMetatileIdAt\n" + "_0809C30A:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r0, r4, r2\n" + "\tlsrs r4, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2B8\n" + "\tadds r0, r2, 0\n" + "\tadd r0, r8\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0809C2AC\n" + "_0809C324:\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n"); +} +#endif + +static void sub_809C334(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 v1; + + data[3] = 1; + switch (data[0]) + { + case 0: + sub_809C1D8(taskId, gUnknown_83DF0D4, 0); + break; + case 1: + sub_809C1D8(taskId, gUnknown_83DF0DA, 0); + break; + case 2: + sub_809C1D8(taskId, gUnknown_83DF0E0, 0xC00); + break; + case 3: + sub_809C1D8(taskId, gUnknown_83DF0E6, 0); + break; + case 4: + sub_809C1D8(taskId, gUnknown_83DF0EC, 0xC00); + break; + case 5: + sub_809C1D8(taskId, gUnknown_83DF0F2, 0); + break; + case 6: + sub_809C1D8(taskId, gUnknown_83DF0F8, 0); + default: + break; + } + data[0] = (data[0] + 1) & 7; + v1 = data[0] & 7; + //ldrh r5, [r4] instead mov r5, r0 somehow + if (v1 == 0) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = v1; + } +} + +static u8 sub_809C3FC(u16 a0) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C334, 0); + data = gTasks[taskId].data; + PlayerGetDestCoords(&tX, &data[5]); + t0 = 0; + data[1] = 0; + data[2] = a0; + sub_809C334(taskId); + return taskId; +} + +void sub_809C448(u8 a0) +{ + u8 taskId; + + taskId = sub_809C3FC(a0); + gUnknown_2039984 = taskId; +} + +void sub_809C460(void) +{ + DestroyTask(gUnknown_2039984); +} + +bool8 sub_809C474(void) +{ + if (gTasks[gUnknown_2039984].data[3] == 0) + { + if (gTasks[gUnknown_2039984].data[1] != 2) + return TRUE; + return FALSE; + } + else + { + return TRUE; + } +} + +// special 0x1b5 - creates a tile animaiton one block left two-four up the player +void sub_809C4A8(void) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C500, 0); + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + + data = gTasks[taskId].data; + PlayerGetDestCoords(&data[2], &data[3]); + if (gSpecialVar_0x8004 == 0) + { + gTasks[taskId].data[2] += 6; + gTasks[taskId].data[3] -= 5; + } + else + { + gTasks[taskId].data[2]--; + gTasks[taskId].data[3] -= 5; + } +} + +static void sub_809C500(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if ((data[1] & 1) == 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB5); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB7); + } + else + { + MapGridSetMetatileIdAt(data[2], data[3], 0xEB6); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xEB8); + } + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + } + + data[0]++; + if (data[0] != 0x10) + return; + data[0] = 0; + + data[0] == 0; + data[1]++; + if (data[1] != 0xD) + return; + + MapGridSetMetatileIdAt(data[2], data[3], 0xE8A); + MapGridSetMetatileIdAt(data[2], data[3] + 2, 0xE96); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 2); + DestroyTask(taskId); +} + +// special 0x1B7 - creates a tile animation two-six blocks right from the top-left corner of the screen +void sub_809C5FC(void) +{ + u8 taskId; + s16 *data; + + taskId = CreateTask(sub_809C640, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + + data = gTasks[taskId].data; + PlayerGetDestCoords(&data[2], &data[3]); + gTasks[taskId].data[2] += 4; + gTasks[taskId].data[3] -= 5; +} + +static void sub_809C640(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + if (data[1] != 0) + { + MapGridSetMetatileIdAt(data[2], data[3], 0xE85); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEB4); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + if (data[1] == 4) + { + DestroyTask(taskId); + return; + } + data[2]--; + } + MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); + MapGridSetMetatileIdAt(data[2], data[3] + 1, 0xEBA); + CurrentMapDrawMetatileAt(data[2], data[3]); + CurrentMapDrawMetatileAt(data[2], data[3] + 1); + } + data[0]++; + if (data[0] == 4) + { + data[0] = 0; + data[1]++; + } +} diff --git a/src/shop.c b/src/shop.c index 0a96b7eb3..55fe7311a 100644 --- a/src/shop.c +++ b/src/shop.c @@ -34,7 +34,6 @@ #include "money.h" #include "quest_log.h" #include "script.h" -#include "event_data.h" #include "constants/songs.h" #include "constants/items.h" #include "constants/game_stat.h" @@ -112,8 +111,6 @@ EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects EWRAM_DATA struct MartHistory gUnknown_203996C = {0}; -EWRAM_DATA u8 gUnknown_2039984 = 0; - //Function Declarations static u8 sub_809AAB0(u8 a0); static u8 sub_809AB7C(bool32 a0); @@ -171,11 +168,6 @@ static void nullsub_52(u8 taskId); static void nullsub_53(void); static void sub_809C138(void); -// new file? -static void sub_809C334(u8 taskId); -static void sub_809C500(u8 taskId); -static void sub_809C640(u8 taskId); - // external defines extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); extern u16 BagGetQuantityByItemId(u16 item); @@ -186,13 +178,6 @@ extern const struct MenuAction gUnknown_83DF09C[]; extern const struct YesNoFuncTable gUnknown_83DF0B4[]; extern const struct WindowTemplate gUnknown_83DF0BC[]; extern const struct BgTemplate gUnknown_83DF0C4[]; -extern const u16 gUnknown_83DF0D4[]; -extern const u16 gUnknown_83DF0DA[]; -extern const u16 gUnknown_83DF0E0[]; -extern const u16 gUnknown_83DF0E6[]; -extern const u16 gUnknown_83DF0EC[]; -extern const u16 gUnknown_83DF0F2[]; -extern const u16 gUnknown_83DF0F8[]; */ //graphics @@ -268,14 +253,6 @@ static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplate } }; -static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0}; -static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1}; -static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8}; -static const u16 gUnknown_83DF0E6[] = {0x0311, 0x0313, 0x02d9}; -static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314}; -static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315}; -static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; - // Functions // CreateShopMenu @@ -1680,3 +1657,4 @@ void CreateDecorationShop2Menu(const u16 *itemsForSale) sub_809AAB0(MART_TYPE_DECOR2); sub_809AC04(EnableBothScriptContexts); } + -- cgit v1.2.3 From 30994831130ec41feea5229b787fe76db792d1b1 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 24 Nov 2019 22:04:51 -0700 Subject: match BuyMenuCollectEventObjectData --- src/shop.c | 271 ++++++------------------------------------------------------- 1 file changed, 25 insertions(+), 246 deletions(-) diff --git a/src/shop.c b/src/shop.c index 55fe7311a..340dcf811 100644 --- a/src/shop.c +++ b/src/shop.c @@ -213,7 +213,7 @@ static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTem } }; -static const struct BgTemplate gUnknown_83DF0C4[] = //sShopBuyMenuBgTemplates +static const struct BgTemplate gUnknown_83DF0C4[4] = //sShopBuyMenuBgTemplates { { .bg = 0, @@ -510,13 +510,11 @@ static bool8 sub_809AF6C(void) return FALSE; } -#ifdef NONMATCHING //BuyMenuInitBgs -// this matches but adjusts offsets const for some reason... static void sub_809AFD0(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83DF0C4, 4); //NELEMS(gUnknown_83DF0C4)); + InitBgsFromTemplates(0, gUnknown_83DF0C4, NELEMS(gUnknown_83DF0C4)); SetBgTilemapBuffer(1, gUnknown_2039958); SetBgTilemapBuffer(2, gUnknown_2039960); SetBgTilemapBuffer(3, gUnknown_203995C); @@ -532,79 +530,9 @@ static void sub_809AFD0(void) SetGpuReg(0, 0x1040); ShowBg(0); ShowBg(1); - ShowBg(2); + ShowBg(2); + ShowBg(3); } -#else -NAKED -static void sub_809AFD0(void) -{ - asm_unified("\tpush {lr}\n" - "\tmovs r0, 0\n" - "\tbl ResetBgsAndClearDma3BusyFlags\n" - "\tldr r1, _0809B070 @ =gUnknown_83DF0C4\n" - "\tmovs r0, 0\n" - "\tmovs r2, 0x4\n" - "\tbl InitBgsFromTemplates\n" - "\tldr r0, _0809B074 @ =gUnknown_2039958\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x1\n" - "\tbl SetBgTilemapBuffer\n" - "\tldr r0, _0809B078 @ =gUnknown_2039960\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x2\n" - "\tbl SetBgTilemapBuffer\n" - "\tldr r0, _0809B07C @ =gUnknown_203995C\n" - "\tldr r1, [r0]\n" - "\tmovs r0, 0x3\n" - "\tbl SetBgTilemapBuffer\n" - "\tmovs r0, 0x10\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x12\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x14\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x16\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x18\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1A\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1C\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x1E\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0x50\n" - "\tmovs r1, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r1, 0x82\n" - "\tlsls r1, 5\n" - "\tmovs r0, 0\n" - "\tbl SetGpuReg\n" - "\tmovs r0, 0\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x1\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x2\n" - "\tbl ShowBg\n" - "\tmovs r0, 0x3\n" - "\tbl ShowBg\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0809B070: .4byte gUnknown_83DF0C4\n" - "_0809B074: .4byte gUnknown_2039958\n" - "_0809B078: .4byte gUnknown_2039960\n" - "_0809B07C: .4byte gUnknown_203995C\n"); -} -#endif //BuyMenuDecompressBgGraphics static void sub_809B080(void) @@ -757,23 +685,23 @@ static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list) #ifdef NONMATCHING //this function was written very strangely.. static void sub_809B408(u8 windowId, s32 item, u8 y) { - u32 len; - u8* loc; + u32 len, x; + u8 *loc; if (item != INDEX_CANCEL) { - ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, NUM_CHARS_PRICE); - - //len = StringLength(gStringVar1); + ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, 4); len = 4 - StringLength(gStringVar1); - //len = NUM_CHARS_PRICE - len; loc = gStringVar4; - - while (len != 0) + x = len - 1; + if (x > 0) { - loc[4-len] = 0; - *loc++; - len--; + while (len != 0) + { + *loc = 0; + loc++; + len--; + } } StringExpandPlaceholders(loc, gText_PokedollarVar1); BuyMenuPrint(windowId, 1, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); @@ -1040,8 +968,7 @@ static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src) } -// BuyMenuCollectEventObjectData(void) -#ifdef NONMATCHING +// BuyMenuCollectEventObjectData static void sub_809B92C(void) { s16 facingX; @@ -1055,34 +982,33 @@ static void sub_809B92C(void) z = PlayerGetZCoord(); for (y = 0; y < MAP_OBJECTS_COUNT; y++) - gUnknown_20398B4[y].eventObjId = MAP_OBJECTS_COUNT; + gUnknown_20398B4[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT; for (y = 0; y < 5; y++) { for (x = 0; x < 7; x++) { - u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 4 + x, facingY - 2 + y, z); + u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, z); if (eventObjId != MAP_OBJECTS_COUNT) { - gUnknown_20398B4[num].eventObjId = eventObjId; - gUnknown_20398B4[num].x = x; - gUnknown_20398B4[num].y = y; - //gUnknown_20398B4[num].layerType = MapGridGetMetatileLayerTypeAt(facingX - 4 + x, facingY - 2 + y); + gUnknown_20398B4[num][EVENT_OBJ_ID] = eventObjId; + gUnknown_20398B4[num][X_COORD] = x; + gUnknown_20398B4[num][Y_COORD] = y; switch (gMapObjects[eventObjId].facingDirection) { case DIR_SOUTH: - gUnknown_20398B4[num].animNum = 0; + gUnknown_20398B4[num][ANIM_NUM] = 0; break; case DIR_NORTH: - gUnknown_20398B4[num].animNum = 1; + gUnknown_20398B4[num][ANIM_NUM] = 1; break; case DIR_WEST: - gUnknown_20398B4[num].animNum = 2; + gUnknown_20398B4[num][ANIM_NUM] = 2; break; case DIR_EAST: default: - gUnknown_20398B4[num].animNum = 3; + gUnknown_20398B4[num][ANIM_NUM] = 3; break; } num++; @@ -1090,153 +1016,6 @@ static void sub_809B92C(void) } } } -#else -NAKED -static void sub_809B92C(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tmovs r0, 0\n" - "\tmov r9, r0\n" - "\tmov r4, sp\n" - "\tadds r4, 0x2\n" - "\tmov r0, sp\n" - "\tadds r1, r4, 0\n" - "\tbl GetXYCoordsOneStepInFrontOfPlayer\n" - "\tbl PlayerGetZCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstr r0, [sp, 0x4]\n" - "\tmovs r5, 0\n" - "\tldr r2, _0809B9DC @ =gUnknown_20398B4\n" - "\tmovs r1, 0x10\n" - "_0809B958:\n" - "\tlsls r0, r5, 3\n" - "\tadds r0, r2\n" - "\tstrh r1, [r0]\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, 0xF\n" - "\tbls _0809B958\n" - "\tmovs r5, 0\n" - "\tldr r6, _0809B9E0 @ =gUnknown_20398BA\n" - "\tsubs r1, r6, 0x6\n" - "\tmov r8, r1\n" - "_0809B970:\n" - "\tmovs r4, 0\n" - "\tadds r2, r5, 0x1\n" - "\tmov r10, r2\n" - "_0809B976:\n" - "\tmov r1, sp\n" - "\tldr r3, _0809B9E4 @ =0x0000fffd\n" - "\tadds r0, r3, 0\n" - "\tldrh r1, [r1]\n" - "\tadds r0, r1\n" - "\tadds r0, r4\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tldr r2, _0809B9E8 @ =0x0000fffe\n" - "\tadds r1, r2, 0\n" - "\tmov r3, sp\n" - "\tldrh r3, [r3, 0x2]\n" - "\tadds r1, r3\n" - "\tadds r1, r5\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tldr r2, [sp, 0x4]\n" - "\tbl GetFieldObjectIdByXYZ\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x10\n" - "\tbeq _0809BA1C\n" - "\tmov r0, r9\n" - "\tlsls r2, r0, 3\n" - "\tmov r1, r8\n" - "\tadds r0, r2, r1\n" - "\tmovs r7, 0\n" - "\tstrh r3, [r0]\n" - "\tmov r0, r8\n" - "\tadds r0, 0x2\n" - "\tadds r0, r2, r0\n" - "\tstrh r4, [r0]\n" - "\tldr r1, _0809B9EC @ =gUnknown_20398B8\n" - "\tadds r0, r2, r1\n" - "\tstrh r5, [r0]\n" - "\tldr r1, _0809B9F0 @ =gMapObjects\n" - "\tlsls r0, r3, 3\n" - "\tadds r0, r3\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0, 0x18]\n" - "\tlsls r0, 28\n" - "\tlsrs r0, 28\n" - "\tcmp r0, 0x2\n" - "\tbeq _0809BA00\n" - "\tcmp r0, 0x2\n" - "\tbgt _0809B9F4\n" - "\tcmp r0, 0x1\n" - "\tbeq _0809B9FA\n" - "\tb _0809BA0C\n" - "\t.align 2, 0\n" - "_0809B9DC: .4byte gUnknown_20398B4\n" - "_0809B9E0: .4byte gUnknown_20398BA\n" - "_0809B9E4: .4byte 0x0000fffd\n" - "_0809B9E8: .4byte 0x0000fffe\n" - "_0809B9EC: .4byte gUnknown_20398B8\n" - "_0809B9F0: .4byte gMapObjects\n" - "_0809B9F4:\n" - "\tcmp r0, 0x3\n" - "\tbeq _0809BA06\n" - "\tb _0809BA0C\n" - "_0809B9FA:\n" - "\tadds r0, r2, r6\n" - "\tstrh r7, [r0]\n" - "\tb _0809BA12\n" - "_0809BA00:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x1\n" - "\tb _0809BA10\n" - "_0809BA06:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x2\n" - "\tb _0809BA10\n" - "_0809BA0C:\n" - "\tadds r1, r2, r6\n" - "\tmovs r0, 0x3\n" - "_0809BA10:\n" - "\tstrh r0, [r1]\n" - "_0809BA12:\n" - "\tmov r0, r9\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r9, r0\n" - "_0809BA1C:\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0x6\n" - "\tbls _0809B976\n" - "\tmov r2, r10\n" - "\tlsls r0, r2, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, 0x4\n" - "\tbls _0809B970\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif //BuyMenuDrawEventObjects static void sub_809BA40(void) -- cgit v1.2.3 From c73f061cc68468c3227be98fd49cba9514bbd567 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 25 Nov 2019 15:04:38 -0700 Subject: update ewram --- asm/item_menu.s | 2 +- include/shop.h | 13 +- src/berry_pouch.c | 2 +- src/buy_menu_helpers.c | 2 +- src/sea_cottage_special_anim.c | 24 +- src/shop.c | 643 +++++++++++++++------------------ src/tm_case.c | 2 +- sym_ewram.txt | 792 ++++++++++++++++++++--------------------- 8 files changed, 697 insertions(+), 783 deletions(-) diff --git a/asm/item_menu.s b/asm/item_menu.s index a8487864a..df609fef5 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -5484,7 +5484,7 @@ sub_810A9D4: @ 810A9D4 mov r2, r8 ldrh r1, [r2, 0x10] movs r2, 0x2 - bl sub_809C09C + bl RecordItemPurchase mov r3, r8 ldrb r0, [r3] ldr r4, _0810AAE4 @ =gUnknown_203ACFC diff --git a/include/shop.h b/include/shop.h index 27014580d..91ce421aa 100644 --- a/include/shop.h +++ b/include/shop.h @@ -11,22 +11,13 @@ #define NUM_CHARS_PRICE 4 -// shop view window NPC info enum -enum -{ - EVENT_OBJ_ID, - X_COORD, - Y_COORD, - ANIM_NUM -}; - extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; void CreatePokemartMenu(const u16 *itemsForSale); void CreateDecorationShop1Menu(const u16 *); void CreateDecorationShop2Menu(const u16 *); -u8 sub_809B56C(void); -void sub_809C09C(u16 a0, u16 a1, u8 a2); +u8 GetMartUnk16_4(void); +void RecordItemPurchase(u16 a0, u16 a1, u8 a2); // buy_menu_helper void BuyMenuInitWindows(bool32 isSellingTM); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index b8b66c0bc..0ecf43b45 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1384,7 +1384,7 @@ static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId) PlaySE(SE_SHOP); RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); - sub_809C09C(gSpecialVar_ItemId, data[8], 2); + RecordItemPurchase(gSpecialVar_ItemId, data[8], 2); DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); SortAndCountBerries(); SanitizeListMenuSelectionParams(); diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c index 44de094b5..1fd160576 100644 --- a/src/buy_menu_helpers.c +++ b/src/buy_menu_helpers.c @@ -184,7 +184,7 @@ void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpa void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback) { - DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback); + DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, GetMartUnk16_4(), GetTextSpeedSetting(), text, callback); ScheduleBgCopyTilemapToVram(0); } diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c index e9b05a0fc..67fc70209 100644 --- a/src/sea_cottage_special_anim.c +++ b/src/sea_cottage_special_anim.c @@ -35,7 +35,29 @@ static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; #ifdef NONMATCHING void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { - + s16 v1, v2, v3; + s16 i, j; + + v1 = gTasks[taskId].data[5] - 1; + v2 = gTasks[taskId].data[6] - 1; + v3 = gTasks[taskId].data[2]; + + if (gTasks[taskId].data[3] == 0) + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + MapGridGetMetatileIdAt(v1 + j, v2 + i); + if () + { + + } + + MapGridSetMetatileIdAt + } + } + } } #else NAKED diff --git a/src/shop.c b/src/shop.c index 340dcf811..d0b3994a2 100644 --- a/src/shop.c +++ b/src/shop.c @@ -44,6 +44,7 @@ #define tItemId data[5] #define tListTaskId data[7] +// mart types enum { MART_TYPE_REGULAR = 0, @@ -52,9 +53,14 @@ enum MART_TYPE_DECOR2, }; -// RAM symbols -// Function Declarations -// Data Definitions +// shop view window NPC info enum +enum +{ + EVENT_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; struct ShopData { @@ -71,7 +77,6 @@ struct ShopData u16 itemSlot:2; u16 unk16_11:5; /*0x18*/ u16 unk18; - //INCOMPLETE }; struct MartHistory @@ -92,81 +97,73 @@ struct MartHistory }; /* size = 0x18 */ +EWRAM_DATA s16 sViewportMapObjects[MAP_OBJECTS_COUNT][4] = {0}; EWRAM_DATA struct ShopData gShopData = {0}; -EWRAM_DATA u8 gUnknown_2039950 = 0; //sShopMenuWindowId - -EWRAM_DATA u16 (*gUnknown_2039954)[0x400] = {0}; //gShopTilemapBuffers -EWRAM_DATA u16 (*gUnknown_2039958)[0x400] = {0}; -EWRAM_DATA u16 (*gUnknown_203995C)[0x400] = {0}; -EWRAM_DATA u16 (*gUnknown_2039960)[0x400] = {0}; -/* -EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039954 = 0; //gShopTilemapBuffers -EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039958 = 0; -EWRAM_DATA struct ShopTilemapBuffers *gUnknown_203995C = 0; -EWRAM_DATA struct ShopTilemapBuffers *gUnknown_2039960 = 0; -*/ -EWRAM_DATA struct ListMenuItem *gUnknown_2039964 = {0}; -EWRAM_DATA u8 (*gUnknown_2039968)[13] = {0}; //item strings - -EWRAM_DATA s16 gUnknown_20398B4[MAP_OBJECTS_COUNT][4] = {0}; //sViewportMapObjects -EWRAM_DATA struct MartHistory gUnknown_203996C = {0}; +EWRAM_DATA u8 sShopMenuWindowId = 0; +EWRAM_DATA u16 (*gShopTilemapBuffer1)[0x400] = {0}; +EWRAM_DATA u16 (*gShopTilemapBuffer2)[0x400] = {0}; +EWRAM_DATA u16 (*gShopTilemapBuffer3)[0x400] = {0}; +EWRAM_DATA u16 (*gShopTilemapBuffer4)[0x400] = {0}; +EWRAM_DATA struct ListMenuItem *sShopMenuListMenu = {0}; +EWRAM_DATA u8 (*sShopMenuItemStrings)[13] = {0}; +EWRAM_DATA struct MartHistory gShopMenuHistory = {0}; //Function Declarations -static u8 sub_809AAB0(u8 a0); -static u8 sub_809AB7C(bool32 a0); -static void sub_809ABD8(const u16 *items); -static void sub_809AC04(MainCallback callback); -static void sub_809AC10(u8 taskId); -static void sub_809AC5C(u8 taskId); -static void sub_809AC98(u8 taskId); -static void sub_809ACD4(void); -static void sub_809ACF8(u8 taskId); -static void sub_809AD24(void); -static void sub_809AD40(u8 taskId); -static void sub_809AD74(void); -static void sub_809AD8C(u8 taskId); -static void sub_809ADC0(u8 taskId); //ShowShopMenuAfterExitingBuyOrSellMenu -static void sub_809ADE4(void); -static void sub_809AE00(void); -static void sub_809AE14(void); -static bool8 sub_809AF6C(void); -static void sub_809AFD0(void); //BuyMenuInitBgs -static void sub_809B080(void); +static u8 CreateShopMenu(u8 a0); +static u8 GetMartTypeFromItemList(bool32 a0); +static void SetShopItemsForSale(const u16 *items); +static void SetShopMenuCallback(MainCallback callback); +static void Task_ShopMenu(u8 taskId); +static void Task_HandleShopMenuBuy(u8 taskId); +static void Task_HandleShopMenuSell(u8 taskId); +static void CB2_GoToSellMenu(void); +static void Task_HandleShopMenuQuit(u8 taskId); +static void ClearShopMenuWindow(void); +static void Task_GoToBuyOrSellMenu(u8 taskId); +static void MapPostLoadHook_ReturnToShopMenu(void); +static void Task_ReturnToShopMenu(u8 taskId); +static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId); +static void CB2_BuyMenu(void); +static void VBlankCB_BuyMenu(void); +static void CB2_InitBuyMenu(void); +static bool8 InitShopData(void); +static void BuyMenuInitBgs(void); +static void BuyMenuDecompressBgGraphics(void); static void sub_809B10C(bool32 a0); -static void sub_809B15C(void); //BuyMenuDrawGraphics(); -static bool8 sub_809B188(void); //BuyMenuBuildListMenuTemplate -static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst); -static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list); -static void sub_809B408(u8 windowId, s32 itemId, u8 y); -static void sub_809B494(s32 item); -static void sub_809B57C(u8 listTaskId, u8 a1); -static void sub_809B59C(u8 y, u8 a1); -static void sub_809B604(void); -static void sub_809B670(void); -static void sub_809B690(void); -static void sub_809B6FC(void); -static void sub_809B73C(void); +static void BuyMenuDrawGraphics(void); +static bool8 BuyMenuBuildListMenuTemplate(void); +static void PokeMartWriteNameAndIdAt(struct ListMenuItem *list, u16 index, u8* dst); +static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list); +static void BuyMenuPrintPriceInList(u8 windowId, s32 itemId, u8 y); +static void LoadTmHmNameInMart(s32 item); +static void BuyMenuPrintCursor(u8 listTaskId, u8 a1); +static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1); +static void BuyMenuFreeMemory(void); +static void SetShopExitCallback(void); +static void BuyMenuAddScrollIndicatorArrows(void); +static void BuyQuantityAddScrollIndicatorArrows(void); +static void BuyMenuRemoveScrollIndicatorArrows(void); static void sub_809B764(void); -static void sub_809B778(void); -static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType); -static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src); -static void sub_809B92C(void); -static void sub_809BA40(void); -static void sub_809BAFC(void); -static void sub_809BB44(u8 taskId); -static void sub_809BBC0(u8 taskId); -static void sub_809BCA0(u8 taskId); -static void sub_809BD8C(u8 taskId); -static void sub_809BE90(u8 taskId); -static void sub_809BEA4(u8 taskId); -static void sub_809BF0C(u8 taskId); -static void sub_809BF68(u8 taskId); -static void sub_809BF98(u8 taskId); -static void sub_809C004(u8 taskId); -static void sub_809C04C(u8 taskId); +static void BuyMenuDrawMapBg(void); +static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType); +static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src); +static void BuyMenuCollectEventObjectData(void); +static void BuyMenuDrawEventObjects(void); +static void BuyMenuCopyTilemapData(void); +static void BuyMenuPrintItemQuantityAndPrice(u8 taskId); +static void Task_BuyMenu(u8 taskId); +static void Task_BuyHowManyDialogueInit(u8 taskId); +static void Task_BuyHowManyDialogueHandleInput(u8 taskId); +static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId); +static void BuyMenuTryMakePurchase(u8 taskId); +static void BuyMenuSubtractMoney(u8 taskId); +static void Task_ReturnToItemListAfterItemPurchase(u8 taskId); +static void BuyMenuReturnToItemList(u8 taskId); +static void ExitBuyMenu(u8 taskId); +static void Task_ExitBuyMenu(u8 taskId); static void nullsub_52(u8 taskId); static void nullsub_53(void); -static void sub_809C138(void); +static void RecordQuestLogItemPurchase(void); // external defines extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); @@ -189,15 +186,15 @@ extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit { - {gText_ShopBuy, {.void_u8 = sub_809AC5C}}, - {gText_ShopSell, {.void_u8 = sub_809AC98}}, - {gText_ShopQuit, {.void_u8 = sub_809ACF8}} + {gText_ShopBuy, {.void_u8 = Task_HandleShopMenuBuy}}, + {gText_ShopSell, {.void_u8 = Task_HandleShopMenuSell}}, + {gText_ShopQuit, {.void_u8 = Task_HandleShopMenuQuit}} }; static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit { - sub_809BEA4, //Task_HandleShopMenuBuy, - sub_809BF98 //Task_HandleShopMenuQuit + BuyMenuTryMakePurchase, //Task_HandleShopMenuBuy, + BuyMenuReturnToItemList //Task_HandleShopMenuQuit }; static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates @@ -255,26 +252,25 @@ static const struct BgTemplate gUnknown_83DF0C4[4] = //sShopBuyMenuBgTemplat // Functions -// CreateShopMenu -static u8 sub_809AAB0(u8 a0) +static u8 CreateShopMenu(u8 a0) { - gShopData.martType = sub_809AB7C(a0) & 0xF; + gShopData.martType = GetMartTypeFromItemList(a0) & 0xF; gShopData.selectedRow = 0; if (!(ContextNpcGetTextColor())) gShopData.unk16_4 = 4; else gShopData.unk16_4 = 5; - gUnknown_2039950 = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates - SetStdWindowBorderStyle(gUnknown_2039950, 0); - PrintTextArray(gUnknown_2039950, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); - Menu_InitCursor(gUnknown_2039950, 2, 0, 2, 16, 3, 0); - PutWindowTilemap(gUnknown_2039950); - CopyWindowToVram(gUnknown_2039950, 1); - return CreateTask(sub_809AC10, 8); + sShopMenuWindowId = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates + SetStdWindowBorderStyle(sShopMenuWindowId, 0); + PrintTextArray(sShopMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); + Menu_InitCursor(sShopMenuWindowId, 2, 0, 2, 16, 3, 0); + PutWindowTilemap(sShopMenuWindowId); + CopyWindowToVram(sShopMenuWindowId, 1); + return CreateTask(Task_ShopMenu, 8); } -static u8 sub_809AB7C(u32 a0) +static u8 GetMartTypeFromItemList(u32 a0) { u16 retVal, i; if (a0) @@ -304,35 +300,27 @@ static u8 sub_809AB7C(u32 a0) return 0; } -//SetShopItemsForSale -static void sub_809ABD8(const u16 *items) //I really don't know what GameFreak was thinking here.. +static void SetShopItemsForSale(const u16 *items) { struct ShopData *mart; - //u16 i; mart = &gShopData; mart->itemList = items; mart->itemCount = 0; - - //i = 0; if (mart->itemList[0] == 0) return; do { ++gShopData.itemCount; - //i = gShopData.itemCount; - //} while (mart->itemList[i]); } while (mart->itemList[gShopData.itemCount]); } -//SetShopMenuCallback -static void sub_809AC04(MainCallback callback) +static void SetShopMenuCallback(MainCallback callback) { gShopData.callback = callback; } -//Task_ShopMenu -static void sub_809AC10(u8 taskId) +static void Task_ShopMenu(u8 taskId) { s8 input = Menu_ProcessInputNoWrapAround(); @@ -342,7 +330,7 @@ static void sub_809AC10(u8 taskId) break; case MENU_B_PRESSED: PlaySE(SE_SELECT); - sub_809ACF8(taskId); + Task_HandleShopMenuQuit(taskId); break; default: gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId); @@ -350,47 +338,42 @@ static void sub_809AC10(u8 taskId) } } -//Task_HandleShopMenuBuy -static void sub_809AC5C(u8 taskId) +static void Task_HandleShopMenuBuy(u8 taskId) { - SetWordTaskArg(taskId, 0xE, (u32)sub_809AE14); + SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu); fade_screen(1, 0); - gTasks[taskId].func = sub_809AD40; + gTasks[taskId].func = Task_GoToBuyOrSellMenu; } -//Task_HandleShopMenuSell -static void sub_809AC98(u8 taskId) +static void Task_HandleShopMenuSell(u8 taskId) { - SetWordTaskArg(taskId, 0xE, (u32)sub_809ACD4); + SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu); fade_screen(1, 0); - gTasks[taskId].func = sub_809AD40; + gTasks[taskId].func = Task_GoToBuyOrSellMenu; } -//CB2_GoToSellMenu -static void sub_809ACD4(void) +static void CB2_GoToSellMenu(void) { sub_8107DB4(2, POCKET_POKE_BALLS, CB2_ReturnToField); - gFieldCallback = sub_809AD74; + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; } -//Task_HandleShopMenuQuit -static void sub_809ACF8(u8 taskId) +static void Task_HandleShopMenuQuit(u8 taskId) { - sub_809AD24(); - sub_809C138(); + ClearShopMenuWindow(); + RecordQuestLogItemPurchase(); DestroyTask(taskId); if (gShopData.callback != 0) gShopData.callback(); } -static void sub_809AD24(void) +static void ClearShopMenuWindow(void) { - ClearStdWindowAndFrameToTransparent(gUnknown_2039950, 2); - RemoveWindow(gUnknown_2039950); + ClearStdWindowAndFrameToTransparent(sShopMenuWindowId, 2); + RemoveWindow(sShopMenuWindowId); } -//Task_GoToBuyOrSellMenu -static void sub_809AD40(u8 taskId) +static void Task_GoToBuyOrSellMenu(u8 taskId) { if (gPaletteFade.active) return; @@ -399,30 +382,26 @@ static void sub_809AD40(u8 taskId) DestroyTask(taskId); } -//MapPostLoadHook_ReturnToShopMenu -static void sub_809AD74(void) +static void MapPostLoadHook_ReturnToShopMenu(void) { sub_807DC00(); - CreateTask(sub_809AD8C, 8); + CreateTask(Task_ReturnToShopMenu, 8); } -//Task_ReturnToShopMenu -static void sub_809AD8C(u8 taskId) +static void Task_ReturnToShopMenu(u8 taskId) { if (field_weather_is_fade_finished() != TRUE) return; - DisplayItemMessageOnField(taskId, sub_809B56C(), gText_CanIHelpWithAnythingElse, sub_809ADC0); + DisplayItemMessageOnField(taskId, GetMartUnk16_4(), gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu); } -//ShowShopMenuAfterExitingBuyOrSellMenu -static void sub_809ADC0(u8 taskId) +static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId) { - sub_809AAB0(gShopData.martType); + CreateShopMenu(gShopData.martType); DestroyTask(taskId); } -//CB2_BuyMenu -static void sub_809ADE4(void) +static void CB2_BuyMenu(void) { RunTasks(); AnimateSprites(); @@ -431,16 +410,14 @@ static void sub_809ADE4(void) DoScheduledBgTilemapCopiesToVram(); } -//VBlankCB_BuyMenu -static void sub_809AE00(void) +static void VBlankCB_BuyMenu(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -//CB2_InitBuyMenu -static void sub_809AE14(void) +static void CB2_InitBuyMenu(void) { u8 taskId; switch (gMain.state) @@ -456,15 +433,15 @@ static void sub_809AE14(void) ResetTasks(); ClearScheduledBgCopiesToVram(); ResetItemMenuIconState(); - if ((!(sub_809AF6C())) || (!(sub_809B188()))) + if ((!(InitShopData())) || (!(BuyMenuBuildListMenuTemplate()))) return; - sub_809AFD0(); + BuyMenuInitBgs(); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 0x20, 0x20); FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); BuyMenuInitWindows(gShopData.martType); - sub_809B080(); + BuyMenuDecompressBgGraphics(); gMain.state++; break; case 1: @@ -475,49 +452,47 @@ static void sub_809AE14(void) default: gShopData.selectedRow = 0; gShopData.scrollOffset = 0; - sub_809B15C(); //BuyMenuDrawGraphics(); - sub_809B690(); //BuyMenuAddScrollIndicatorArrows(); - taskId = CreateTask(sub_809BBC0, 8); + BuyMenuDrawGraphics(); + BuyMenuAddScrollIndicatorArrows(); + taskId = CreateTask(Task_BuyMenu, 8); gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - SetVBlankCallback(sub_809AE00); - SetMainCallback2(sub_809ADE4); + SetVBlankCallback(VBlankCB_BuyMenu); + SetMainCallback2(CB2_BuyMenu); break; } } -//InitShopData -static bool8 sub_809AF6C(void) +static bool8 InitShopData(void) { - gUnknown_2039954 = Alloc(sizeof(*gUnknown_2039954)); - if (gUnknown_2039954 == 0) + gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); + if (gShopTilemapBuffer1 == 0) goto CANCEL; - gUnknown_2039958 = Alloc(sizeof(*gUnknown_2039958)); - if (gUnknown_2039958 == 0) + gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2)); + if (gShopTilemapBuffer2 == 0) goto CANCEL; - gUnknown_203995C = Alloc(sizeof(*gUnknown_203995C)); - if (gUnknown_203995C == 0) + gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3)); + if (gShopTilemapBuffer3 == 0) goto CANCEL; - gUnknown_2039960 = Alloc(sizeof(*gUnknown_2039960)); - if (gUnknown_2039960 == 0) + gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4)); + if (gShopTilemapBuffer4 == 0) goto CANCEL; return TRUE; CANCEL: - sub_809B604(); - sub_809B670(); + BuyMenuFreeMemory(); + SetShopExitCallback(); return FALSE; } -//BuyMenuInitBgs -static void sub_809AFD0(void) +static void BuyMenuInitBgs(void) { ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_83DF0C4, NELEMS(gUnknown_83DF0C4)); - SetBgTilemapBuffer(1, gUnknown_2039958); - SetBgTilemapBuffer(2, gUnknown_2039960); - SetBgTilemapBuffer(3, gUnknown_203995C); + SetBgTilemapBuffer(1, gShopTilemapBuffer2); + SetBgTilemapBuffer(2, gShopTilemapBuffer4); + SetBgTilemapBuffer(3, gShopTilemapBuffer3); SetGpuReg(0x10, 0); SetGpuReg(0x12, 0); SetGpuReg(0x14, 0); @@ -531,18 +506,17 @@ static void sub_809AFD0(void) ShowBg(0); ShowBg(1); ShowBg(2); - ShowBg(3); + ShowBg(3); } -//BuyMenuDecompressBgGraphics -static void sub_809B080(void) +static void BuyMenuDecompressBgGraphics(void) { void* pal; DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0); if ((gShopData.martType) != MART_TYPE_TMHM) - LZDecompressWram(gUnknown_8E85EFC, gUnknown_2039954); //gBuyMenuFrame_Tilemap + LZDecompressWram(gUnknown_8E85EFC, gShopTilemapBuffer1); //gBuyMenuFrame_Tilemap else - LZDecompressWram(gUnknown_8E86038, gUnknown_2039954); //gBuyMenuFrame_TmHmTilemap + LZDecompressWram(gUnknown_8E86038, gShopTilemapBuffer1); //gBuyMenuFrame_TmHmTilemap pal = Alloc(0x40); LZDecompressWram(gUnknown_8E86170, pal); LoadPalette(pal, 0xB0, 0x20); @@ -564,11 +538,10 @@ static void sub_809B10C(bool32 a0) ScheduleBgCopyTilemapToVram(1); } -//BuyMenuDrawGraphics -static void sub_809B15C(void) +static void BuyMenuDrawGraphics(void) { sub_809B764(); - sub_809BAFC(); + BuyMenuCopyTilemapData(); BuyMenuDrawMoneyBox(); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(1); @@ -576,23 +549,22 @@ static void sub_809B15C(void) ScheduleBgCopyTilemapToVram(3); } -//BuyMenuBuildListMenuTemplate -static bool8 sub_809B188(void) +static bool8 BuyMenuBuildListMenuTemplate(void) { u16 i; u16 v; - struct ListMenuItem **list = &gUnknown_2039964; + struct ListMenuItem **list = &sShopMenuListMenu; struct ShopData *mart = &gShopData; - *list = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039964)); - if (gUnknown_2039964 == 0) + *list = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu)); + if (sShopMenuListMenu == 0) goto FREE_MEMORY; - gUnknown_2039968 = Alloc((gShopData.itemCount + 1) * sizeof(*gUnknown_2039968)); - if (gUnknown_2039968 == 0) + sShopMenuItemStrings = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuItemStrings)); + if (sShopMenuItemStrings == 0) { FREE_MEMORY: - sub_809B604(); - sub_809B670(); + BuyMenuFreeMemory(); + SetShopExitCallback(); return FALSE; } @@ -602,14 +574,14 @@ static bool8 sub_809B188(void) for (i = 0; i < mart->itemCount; i++) { - sub_809B300(&gUnknown_2039964[i], mart->itemList[i], gUnknown_2039968[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) + PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], mart->itemList[i], sShopMenuItemStrings[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) } ADD_CANCEL: - StringCopy(gUnknown_2039968[i], gFameCheckerText_Cancel); - gUnknown_2039964[i].label = gUnknown_2039968[i]; - gUnknown_2039964[i].index = -2; - gMultiuseListMenuTemplate.items = gUnknown_2039964; + StringCopy(sShopMenuItemStrings[i], gFameCheckerText_Cancel); + sShopMenuListMenu[i].label = sShopMenuItemStrings[i]; + sShopMenuListMenu[i].index = -2; + gMultiuseListMenuTemplate.items = sShopMenuListMenu; gMultiuseListMenuTemplate.totalItems = gShopData.itemCount + 1; gMultiuseListMenuTemplate.windowId = 4; gMultiuseListMenuTemplate.header_X = 0; @@ -622,8 +594,8 @@ static bool8 sub_809B188(void) gMultiuseListMenuTemplate.fillValue = 0; gMultiuseListMenuTemplate.cursorPal = GetFontAttribute(2, 5); gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, 7); - gMultiuseListMenuTemplate.moveCursorFunc = sub_809B320; - gMultiuseListMenuTemplate.itemPrintFunc = sub_809B408; + gMultiuseListMenuTemplate.moveCursorFunc = BuyMenuPrintItemDescriptionAndShowItemIcon; + gMultiuseListMenuTemplate.itemPrintFunc = BuyMenuPrintPriceInList; gMultiuseListMenuTemplate.scrollMultiple = 0; gMultiuseListMenuTemplate.cursorKind = 0; @@ -641,16 +613,14 @@ static bool8 sub_809B188(void) return TRUE; } -//PokeMartWriteNameAndIdAt -static void sub_809B300(struct ListMenuItem *list, u16 index, u8* dst) +static void PokeMartWriteNameAndIdAt(struct ListMenuItem *list, u16 index, u8* dst) { CopyItemName(index, dst); list->label = dst; list->index = index; } -//BuyMenuPrintItemDescriptionAndShowItemIcon -static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list) +static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list) { const u8 *description; @@ -676,14 +646,13 @@ static void sub_809B320(s32 item, bool8 onInit, struct ListMenu *list) else //TM Mart { FillWindowPixelBuffer(6, PIXEL_FILL(0)); - sub_809B494(item); + LoadTmHmNameInMart(item); BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0); } } -//BuyMenuPrintPriceInList -#ifdef NONMATCHING //this function was written very strangely.. -static void sub_809B408(u8 windowId, s32 item, u8 y) +#ifdef NONMATCHING +static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) { u32 len, x; u8 *loc; @@ -709,7 +678,7 @@ static void sub_809B408(u8 windowId, s32 item, u8 y) } #else NAKED -static void sub_809B408(u8 windowId, s32 item, u8 y) +static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) { asm_unified("\tpush {r4-r6,lr}\n" "\tsub sp, 0x14\n" @@ -779,13 +748,7 @@ static void sub_809B408(u8 windowId, s32 item, u8 y) } #endif - -/*=================================== -MATCHED/TESTED UP UNTIL HERE -===================================*/ - -//LoadTmHmNameInMart -static void sub_809B494(s32 item) +static void LoadTmHmNameInMart(s32 item) { if (item != INDEX_CANCEL) { @@ -803,19 +766,17 @@ static void sub_809B494(s32 item) } } -//GetMartUnk16_4 -u8 sub_809B56C(void) +u8 GetMartUnk16_4(void) { return gShopData.unk16_4; } -//BuyMenuPrintCursor -static void sub_809B57C(u8 listTaskId, u8 a1) +static void BuyMenuPrintCursor(u8 listTaskId, u8 a1) { - sub_809B59C(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); + BuyMenuPrintCursorAtYPosition(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); } -static void sub_809B59C(u8 y, u8 a1) +static void BuyMenuPrintCursorAtYPosition(u8 y, u8 a1) { if (a1 == 0xFF) { @@ -828,40 +789,37 @@ static void sub_809B59C(u8 y, u8 a1) } } -//BuyMenuFreeMemory -static void sub_809B604(void) +static void BuyMenuFreeMemory(void) { - if (gUnknown_2039954 != 0) - Free(gUnknown_2039954); + if (gShopTilemapBuffer1 != 0) + Free(gShopTilemapBuffer1); - if (gUnknown_2039958 != 0) - Free(gUnknown_2039958); + if (gShopTilemapBuffer2 != 0) + Free(gShopTilemapBuffer2); - if (gUnknown_203995C != 0) - Free(gUnknown_203995C); + if (gShopTilemapBuffer3 != 0) + Free(gShopTilemapBuffer3); - if (gUnknown_2039960 != 0) - Free(gUnknown_2039960); + if (gShopTilemapBuffer4 != 0) + Free(gShopTilemapBuffer4); - if (gUnknown_2039964 != 0) - Free(gUnknown_2039964); + if (sShopMenuListMenu != 0) + Free(sShopMenuListMenu); - if (gUnknown_2039968 != 0) - Free(gUnknown_2039968); + if (sShopMenuItemStrings != 0) + Free(sShopMenuItemStrings); FreeAllWindowBuffers(); } -//SetShopExitCallback -static void sub_809B670(void) +static void SetShopExitCallback(void) { - gFieldCallback = sub_809AD74; + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; SetMainCallback2(CB2_ReturnToField); } -//BuyMenuAddScrollIndicatorArrows -static void sub_809B690(void) +static void BuyMenuAddScrollIndicatorArrows(void) { if (gShopData.martType != MART_TYPE_TMHM) { @@ -875,15 +833,13 @@ static void sub_809B690(void) } } -//BuyQuantityAddScrollIndicatorArrows -static void sub_809B6FC(void) +static void BuyQuantityAddScrollIndicatorArrows(void) { gShopData.unk18 = 1; gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18); } -//BuyMenuRemoveScrollIndicatorArrows -static void sub_809B73C(void) +static void BuyMenuRemoveScrollIndicatorArrows(void) { if ((gShopData.unk16_11) == 0x1F) return; @@ -894,13 +850,12 @@ static void sub_809B73C(void) static void sub_809B764(void) { - sub_809B92C(); - sub_809BA40(); - sub_809B778(); + BuyMenuCollectEventObjectData(); + BuyMenuDrawEventObjects(); + BuyMenuDrawMapBg(); } -//BuyMenuDrawMapBg -static void sub_809B778(void) +static void BuyMenuDrawMapBg(void) { s16 i; s16 j; @@ -924,18 +879,17 @@ static void sub_809B778(void) if (metatile < NUM_METATILES_IN_PRIMARY) { - sub_809B850(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType); + BuyMenuDrawMapMetatile(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType); } else { - sub_809B850(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType); + BuyMenuDrawMapMetatile(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType); } } } } -//BuyMenuDrawMapMetatile -static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType) +static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType) { u16 offset1 = x * 2; u16 offset2 = ((y << 0x16) + 0x400000) >> 0x10; @@ -943,22 +897,21 @@ static void sub_809B850(s16 x, s16 y, const u16 *src, u8 metatileLayerType) switch (metatileLayerType) { case 0: - sub_809B904(*gUnknown_2039960, offset1, offset2, src); - sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4); break; case 1: - sub_809B904(*gUnknown_203995C, offset1, offset2, src); - sub_809B904(*gUnknown_2039960, offset1, offset2, src + 4); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src + 4); break; case 2: - sub_809B904(*gUnknown_203995C, offset1, offset2, src); - sub_809B904(*gUnknown_2039958, offset1, offset2, src + 4); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4); break; } } -//BuyMenuDrawMapMetatileLayer -static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src) +static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src) { // This function draws a whole 2x2 metatile. dest[offset1 + offset2] = src[0]; // top left @@ -967,9 +920,7 @@ static void sub_809B904(u16 *dest, s16 offset1, s16 offset2, const u16 *src) dest[offset1 + offset2 + 33] = src[3]; // bottom right } - -// BuyMenuCollectEventObjectData -static void sub_809B92C(void) +static void BuyMenuCollectEventObjectData(void) { s16 facingX; s16 facingY; @@ -982,7 +933,7 @@ static void sub_809B92C(void) z = PlayerGetZCoord(); for (y = 0; y < MAP_OBJECTS_COUNT; y++) - gUnknown_20398B4[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT; + sViewportMapObjects[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT; for (y = 0; y < 5; y++) { @@ -991,24 +942,24 @@ static void sub_809B92C(void) u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, z); if (eventObjId != MAP_OBJECTS_COUNT) { - gUnknown_20398B4[num][EVENT_OBJ_ID] = eventObjId; - gUnknown_20398B4[num][X_COORD] = x; - gUnknown_20398B4[num][Y_COORD] = y; + sViewportMapObjects[num][EVENT_OBJ_ID] = eventObjId; + sViewportMapObjects[num][X_COORD] = x; + sViewportMapObjects[num][Y_COORD] = y; switch (gMapObjects[eventObjId].facingDirection) { case DIR_SOUTH: - gUnknown_20398B4[num][ANIM_NUM] = 0; + sViewportMapObjects[num][ANIM_NUM] = 0; break; case DIR_NORTH: - gUnknown_20398B4[num][ANIM_NUM] = 1; + sViewportMapObjects[num][ANIM_NUM] = 1; break; case DIR_WEST: - gUnknown_20398B4[num][ANIM_NUM] = 2; + sViewportMapObjects[num][ANIM_NUM] = 2; break; case DIR_EAST: default: - gUnknown_20398B4[num][ANIM_NUM] = 3; + sViewportMapObjects[num][ANIM_NUM] = 3; break; } num++; @@ -1017,8 +968,7 @@ static void sub_809B92C(void) } } -//BuyMenuDrawEventObjects -static void sub_809BA40(void) +static void BuyMenuDrawEventObjects(void) { u8 i; u8 spriteId; @@ -1026,26 +976,26 @@ static void sub_809BA40(void) for (i = 0; i < MAP_OBJECTS_COUNT; i++) { - if (gUnknown_20398B4[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT) + if (sViewportMapObjects[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT) continue; - graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId); spriteId = AddPseudoEventObject( - gMapObjects[gUnknown_20398B4[i][EVENT_OBJ_ID]].graphicsId, + gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId, SpriteCallbackDummy, - (((u16)gUnknown_20398B4[i][X_COORD] << 0x14) + 0xFFF80000) >> 0x10, - (u16)gUnknown_20398B4[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2, + (((u16)sViewportMapObjects[i][X_COORD] << 0x14) + 0xFFF80000) >> 0x10, + (u16)sViewportMapObjects[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2, 2); - StartSpriteAnim(&gSprites[spriteId], gUnknown_20398B4[i][ANIM_NUM]); + StartSpriteAnim(&gSprites[spriteId], sViewportMapObjects[i][ANIM_NUM]); } } -static void sub_809BAFC(void) +static void BuyMenuCopyTilemapData(void) { s16 i; - u16 *dst = *gUnknown_2039958; - u16 *src = *gUnknown_2039954; + u16 *dst = *gShopTilemapBuffer2; + u16 *src = *gShopTilemapBuffer1; for (i = 0; i < 0x400; i++) { @@ -1055,8 +1005,7 @@ static void sub_809BAFC(void) } } -//BuyMenuPrintItemQuantityAndPrice -static void sub_809BB44(u8 taskId) +static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1067,8 +1016,7 @@ static void sub_809BB44(u8 taskId) BuyMenuPrint(3, 0, gStringVar4, 2, 0xA, 0, 0, 0, 1); } -//Task_BuyMenu -static void sub_809BBC0(u8 taskId) +static void Task_BuyMenu(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1082,31 +1030,30 @@ static void sub_809BBC0(u8 taskId) break; case LIST_CANCEL: PlaySE(SE_SELECT); - sub_809C004(taskId); + ExitBuyMenu(taskId); break; default: PlaySE(SE_SELECT); tItemId = itemId; ClearWindowTilemap(5); - sub_809B73C(); - sub_809B57C(tListTaskId, 2); + BuyMenuRemoveScrollIndicatorArrows(); + BuyMenuPrintCursor(tListTaskId, 2); sub_809B10C(1); gShopData.itemPrice = itemid_get_market_price(itemId); if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice)) { - BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, sub_809BF98); + BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList); } else { CopyItemName(itemId, gStringVar1); - BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, sub_809BCA0); + BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, Task_BuyHowManyDialogueInit); } } } } -//Task_BuyHowManyDialogueInit -static void sub_809BCA0(u8 taskId) +static void Task_BuyHowManyDialogueInit(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1119,7 +1066,7 @@ static void sub_809BCA0(u8 taskId) BuyMenuPrint(1, 2, gStringVar4, 0, 2, 0, 0, 0, 1); tItemCount = 1; BuyMenuQuantityBoxNormalBorder(3, 0); - sub_809BB44(taskId); + BuyMenuPrintItemQuantityAndPrice(taskId); ScheduleBgCopyTilemapToVram(0); maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId); if (maxQuantity > 99) @@ -1128,28 +1075,26 @@ static void sub_809BCA0(u8 taskId) gShopData.maxQuantity = (u8)maxQuantity; if (maxQuantity != 1) - sub_809B6FC(); + BuyQuantityAddScrollIndicatorArrows(); - gTasks[taskId].func = sub_809BD8C; + gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; } -//Task_BuyHowManyDialogueHandleInput -static void sub_809BD8C(u8 taskId) +static void Task_BuyHowManyDialogueHandleInput(u8 taskId) { s16 *data = gTasks[taskId].data; - if (AdjustQuantityAccordingToDPadInput(&tItemCount, gShopData.maxQuantity) == TRUE) { gShopData.itemPrice = itemid_get_market_price(tItemId) * tItemCount; - sub_809BB44(taskId); + BuyMenuPrintItemQuantityAndPrice(taskId); } else { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_809B73C(); + BuyMenuRemoveScrollIndicatorArrows(); ClearStdWindowAndFrameToTransparent(3, 0); ClearStdWindowAndFrameToTransparent(1, 0); ClearWindowTilemap(3); @@ -1158,72 +1103,67 @@ static void sub_809BD8C(u8 taskId) CopyItemName(tItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar3, gShopData.itemPrice, STR_CONV_MODE_LEFT_ALIGN, 8); - BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, sub_809BE90); + BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, CreateBuyMenuConfirmPurchaseWindow); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_809B73C(); + BuyMenuRemoveScrollIndicatorArrows(); ClearStdWindowAndFrameToTransparent(3, 0); ClearStdWindowAndFrameToTransparent(1, 0); ClearWindowTilemap(3); ClearWindowTilemap(1); - sub_809BF98(taskId); + BuyMenuReturnToItemList(taskId); } } } -//CreateBuyMenuConfirmPurchaseWindow -static void sub_809BE90(u8 taskId) +static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId) { - BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); //sShopBuyMenuYesNoWindowTemplates + BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); } -//BuyMenuTryMakePurchase -static void sub_809BEA4(u8 taskId) +static void BuyMenuTryMakePurchase(u8 taskId) { s16 *data = gTasks[taskId].data; PutWindowTilemap(4); if (AddBagItem(tItemId, tItemCount) == TRUE) { - BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, sub_809BF0C); + BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney); nullsub_52(taskId); - sub_809C09C(tItemId, tItemCount, 1); + RecordItemPurchase(tItemId, tItemCount, 1); } else { - BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, sub_809BF98); + BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, BuyMenuReturnToItemList); } } -//BuyMenuSubtractMoney -static void sub_809BF0C(u8 taskId) +static void BuyMenuSubtractMoney(u8 taskId) { IncrementGameStat(GAME_STAT_SHOPPED); RemoveMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice); PlaySE(SE_SHOP); PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_809BF68; + gTasks[taskId].func = Task_ReturnToItemListAfterItemPurchase; } -//Task_ReturnToItemListAfterItemPurchase -static void sub_809BF68(u8 taskId) +static void Task_ReturnToItemListAfterItemPurchase(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_809BF98(taskId); + BuyMenuReturnToItemList(taskId); } } -//BuyMenuReturnToItemList -static void sub_809BF98(u8 taskId) +static void BuyMenuReturnToItemList(u8 taskId) { s16 *data = gTasks[taskId].data; ClearDialogWindowAndFrameToTransparent(2, 0); - sub_809B57C(tListTaskId, 1); + BuyMenuPrintCursor(tListTaskId, 1); sub_809B10C(0); PutWindowTilemap(4); PutWindowTilemap(5); @@ -1231,27 +1171,25 @@ static void sub_809BF98(u8 taskId) PutWindowTilemap(6); ScheduleBgCopyTilemapToVram(0); - sub_809B690(); - gTasks[taskId].func = sub_809BBC0; + BuyMenuAddScrollIndicatorArrows(); + gTasks[taskId].func = Task_BuyMenu; } -//ExitBuyMenu -static void sub_809C004(u8 taskId) +static void ExitBuyMenu(u8 taskId) { - gFieldCallback = sub_809AD74; + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_809C04C; + gTasks[taskId].func = Task_ExitBuyMenu; } -//Task_ExitBuyMenu -static void sub_809C04C(u8 taskId) +static void Task_ExitBuyMenu(u8 taskId) { s16 *data = gTasks[taskId].data; if (!gPaletteFade.active) { DestroyListMenuTask(tListTaskId, 0, 0); - sub_809B604(); + BuyMenuFreeMemory(); SetMainCallback2(CB2_ReturnToField); DestroyTask(taskId); } @@ -1266,52 +1204,54 @@ static void nullsub_53(void) } #ifdef NONMATCHING -void sub_809C09C(u16 item, u16 quantity, u8 a2) +void RecordItemPurchase(u16 item, u16 quantity, u8 a2) { struct MartHistory *tmp; - if (gUnknown_203996C.unkA == a2) + if (gShopMenuHistory.unkA == a2) { - tmp = &gUnknown_203996C; + tmp = &gShopMenuHistory; } else { - if (gUnknown_203996C.unk16 == a2) + if (gShopMenuHistory.unk16 == a2) { - tmp = &gUnknown_203996C + 12; + tmp = &gShopMenuHistory + 12; } else { - tmp = &gUnknown_203996C + 12; - if (gUnknown_203996C.unkA == 0) + tmp = &gShopMenuHistory + 12; + if (gShopMenuHistory.unkA == 0) { - tmp = &gUnknown_203996C; - gUnknown_203996C.unkA = a2; + tmp = &gShopMenuHistory; + gShopMenuHistory.unkA = a2; } } } + if (tmp->unk4 != 0) { - gUnknown_203996C.unk9 = 1; + gShopMenuHistory.unk9 = 1; } - gUnknown_203996C.unk4 = item; - if (gUnknown_203996C.unk6 <= 998) + gShopMenuHistory.unk4 = item; + if (gShopMenuHistory.unk6 <= 998) { - gUnknown_203996C.unk6 += item; + gShopMenuHistory.unk6 += item; if (item > 999) - gUnknown_203996C.unk6 = 999; + gShopMenuHistory.unk6 = 999; } - if (gUnknown_203996C.unk0 < 999998) + + if (gShopMenuHistory.unk0 < 999998) { - gUnknown_203996C.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity; - if (gUnknown_203996C.unk0 > 999999) - gUnknown_203996C.unk0 = 999999; + gShopMenuHistory.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity; + if (gShopMenuHistory.unk0 > 999999) + gShopMenuHistory.unk0 = 999999; } } #else NAKED -void sub_809C09C(u16 item, u16 quantity, u8 a2) +void RecordItemPurchase(u16 item, u16 quantity, u8 a2) { asm_unified("\tpush {r4-r6,lr}\n" "\tlsls r0, 16\n" @@ -1320,14 +1260,14 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2) "\tlsrs r6, r1, 16\n" "\tlsls r2, 24\n" "\tlsrs r5, r2, 24\n" - "\tldr r1, _0809C0B8 @ =gUnknown_203996C\n" + "\tldr r1, _0809C0B8 @ =gShopMenuHistory\n" "\tldrb r2, [r1, 0xA]\n" "\tcmp r2, r5\n" "\tbne _0809C0BC\n" "\tadds r4, r1, 0\n" "\tb _0809C0D4\n" "\t.align 2, 0\n" - "_0809C0B8: .4byte gUnknown_203996C\n" + "_0809C0B8: .4byte gShopMenuHistory\n" "_0809C0BC:\n" "\tldrb r0, [r1, 0x16]\n" "\tcmp r0, r5\n" @@ -1395,10 +1335,9 @@ void sub_809C09C(u16 item, u16 quantity, u8 a2) } #endif -//RecordQuestLogItemPurchase -static void sub_809C138(void) +static void RecordQuestLogItemPurchase(void) { - struct MartHistory *history = &gUnknown_203996C; + struct MartHistory *history = &gShopMenuHistory; u16 v; v = history->unkA; @@ -1414,26 +1353,26 @@ static void sub_809C138(void) void CreatePokemartMenu(const u16 *itemsForSale) { - sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_REGULAR); - sub_809AC04(EnableBothScriptContexts); + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_REGULAR); + SetShopMenuCallback(EnableBothScriptContexts); nullsub_53(); - memset(&gUnknown_203996C, 0, sizeof(struct MartHistory)); - gUnknown_203996C.unk8 = gMapHeader.regionMapSectionId; - gUnknown_203996C.unk14 = gMapHeader.regionMapSectionId; + memset(&gShopMenuHistory, 0, sizeof(struct MartHistory)); + gShopMenuHistory.unk8 = gMapHeader.regionMapSectionId; + gShopMenuHistory.unk14 = gMapHeader.regionMapSectionId; } void CreateDecorationShop1Menu(const u16 *itemsForSale) { - sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_DECOR); - sub_809AC04(EnableBothScriptContexts); + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_DECOR); + SetShopMenuCallback(EnableBothScriptContexts); } void CreateDecorationShop2Menu(const u16 *itemsForSale) { - sub_809ABD8(itemsForSale); - sub_809AAB0(MART_TYPE_DECOR2); - sub_809AC04(EnableBothScriptContexts); + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_DECOR2); + SetShopMenuCallback(EnableBothScriptContexts); } diff --git a/src/tm_case.c b/src/tm_case.c index 25fe9a72c..9e5d32db9 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -1107,7 +1107,7 @@ static void Task_DoSaleOfTMs(u8 taskId) PlaySE(SE_SHOP); RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); - sub_809C09C(gSpecialVar_ItemId, data[8], 2); + RecordItemPurchase(gSpecialVar_ItemId, data[8], 2); DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); TMCaseSetup_GetTMCount(); TMCaseSetup_InitListMenuPositions(); diff --git a/sym_ewram.txt b/sym_ewram.txt index f2b58411a..2da51051b 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,770 +1,732 @@ - .align 2 - .include "src/main.o" - .align 2 - .include "src/malloc.o" - .align 2 - .include "src/text_printer.o" - .align 2 - .include "src/window.o" - .align 2 - .include "src/window_8bpp.o" - .align 2 - .include "src/sprite.o" - .align 2 - .include "src/string_util.o" - .align 2 - .include "src/link.o" - .space 8 - - @ .include "src/link_rfu.o" - .align 2 - .include "src/battle_controllers.o" - .align 2 - .include "src/battle_main.o" - .align 2 - .include "src/pokemon.o" - .align 2 - .include "src/daycare.o" - .align 2 - .include "src/load_save.o" - .align 2 - .include "src/trade.o" - .align 2 - .include "src/trade_scene.o" - .align 2 - .include "src/new_game.o" - - .align 2 + .align 2 + .include "src/main.o" + .align 2 + .include "src/malloc.o" + .align 2 + .include "src/text_printer.o" + .align 2 + .include "src/window.o" + .align 2 + .include "src/window_8bpp.o" + .align 2 + .include "src/sprite.o" + .align 2 + .include "src/string_util.o" + .align 2 + .include "src/link.o" + .space 8 + + @ .include "src/link_rfu.o" + .align 2 + .include "src/battle_controllers.o" + .align 2 + .include "src/battle_main.o" + .align 2 + .include "src/pokemon.o" + .align 2 + .include "src/daycare.o" + .align 2 + .include "src/load_save.o" + .align 2 + .include "src/trade.o" + .align 2 + .include "src/trade_scene.o" + .align 2 + .include "src/new_game.o" + + .align 2 gUnknown_2031DB4: @ 2031DB4 - .space 0x8 + .space 0x8 gUnknown_2031DBC: @ 2031DBC - .space 0x8 + .space 0x8 gUnknown_2031DC4: @ 2031DC4 - .space 0x8 + .space 0x8 gUnknown_2031DCC: @ 2031DCC - .space 0x8 + .space 0x8 gUnknown_2031DD4: @ 2031DD4 - .space 0x4 + .space 0x4 gDisableMapMusicChangeOnMapLoad: @ 2031DD8 - .space 0x2 + .space 0x2 gUnknown_2031DDA: @ 2031DDA - .space 0x2 + .space 0x2 gUnknown_2031DDC: @ 2031DDC - .space 0x4 + .space 0x4 gUnknown_2031DE0: @ 2031DE0 - .space 0x4 + .space 0x4 gUnknown_2031DE4: @ 2031DE4 - .space 0x4 + .space 0x4 gUnknown_2031DE8: @ 2031DE8 - .space 0x2 + .space 0x2 gUnknown_2031DEA: @ 2031DEA - .space 0x2 + .space 0x2 gUnknown_2031DEC: @ 2031DEC - .space 0x10 + .space 0x10 - .align 2 - .include "src/fieldmap.o" + .align 2 + .include "src/fieldmap.o" gUnknown_2036E28: @ 2036E28 - .space 0x4 + .space 0x4 gUnknown_2036E2C: @ 2036E2C - .space 0x4 + .space 0x4 gUnknown_2036E30: @ 2036E30 - .space 0x4 + .space 0x4 gUnknown_2036E34: @ 2036E34 - .space 0x4 + .space 0x4 gMapObjects: @ 2036E38 - .space 0x240 + .space 0x240 gPlayerAvatar: @ 2037078 - .space 0x20 + .space 0x20 gUnknown_2037098: @ 2037098 - .space 0x2 + .space 0x2 gUnknown_203709A: @ 203709A - .space 0x2 + .space 0x2 gUnknown_203709C: @ 203709C - .space 0x4 - - .align 2 - .include "src/script.o" - .align 2 - .include "src/scrcmd.o" - .align 2 - .include "src/event_data.o" - .align 2 - .include "src/start_menu.o" - .align 2 - .include "src/tileset_anims.o" - .align 2 - .include "src/palette.o" - .align 2 - .include "src/sound.o" - - .align 2 + .space 0x4 + + .align 2 + .include "src/script.o" + .align 2 + .include "src/scrcmd.o" + .align 2 + .include "src/event_data.o" + .align 2 + .include "src/start_menu.o" + .align 2 + .include "src/tileset_anims.o" + .align 2 + .include "src/palette.o" + .align 2 + .include "src/sound.o" + + .align 2 gUnknown_2037ED4: @ 2037ED4 - .space 0x4 + .space 0x4 gUnknown_2037ED8: @ 2037ED8 - .space 0x4 + .space 0x4 gAnimScriptCallback: @ 2037EDC - .space 0x4 + .space 0x4 gUnknown_2037EE0: @ 2037EE0 - .space 0x1 + .space 0x1 gAnimScriptActive: @ 2037EE1 - .space 0x1 + .space 0x1 gAnimVisualTaskCount: @ 2037EE2 - .space 0x1 + .space 0x1 gUnknown_2037EE3: @ 2037EE3 - .space 0x1 + .space 0x1 gAnimDisableStructPtr: @ 2037EE4 - .space 0x4 + .space 0x4 gAnimMoveDmg: @ 2037EE8 - .space 0x4 + .space 0x4 gAnimMovePower: @ 2037EEC - .space 0x2 + .space 0x2 gUnknown_2037EEE: @ 2037EEE - .space 0x10 + .space 0x10 gAnimFriendship: @ 2037EFE - .space 0x2 + .space 0x2 gWeatherMoveAnim: @ 2037F00 - .space 0x2 + .space 0x2 gBattleAnimArgs: @ 2037F02 - .space 0x10 + .space 0x10 gUnknown_2037F12: @ 2037F12 - .space 0x2 + .space 0x2 gUnknown_2037F14: @ 2037F14 - .space 0x2 + .space 0x2 gAnimMoveTurn: @ 2037F16 - .space 0x1 + .space 0x1 gUnknown_2037F17: @ 2037F17 - .space 0x1 + .space 0x1 gUnknown_2037F18: @ 2037F18 - .space 0x2 + .space 0x2 gBattleAnimAttacker: @ 2037F1A - .space 0x1 + .space 0x1 gBattleAnimTarget: @ 2037F1B - .space 0x1 + .space 0x1 gAnimBattlerSpecies: @ 2037F1C - .space 0x8 + .space 0x8 gUnknown_2037F24: @ 2037F24 - .space 0x4 + .space 0x4 - .align 2 - .include "src/battle_anim_mons.o" - .align 2 - .include "src/title_screen.o" + .align 2 + .include "src/battle_anim_mons.o" + .align 2 + .include "src/title_screen.o" - .align 2 + .align 2 gUnknown_2037F34: @ 2037F34 - .space 0x200 + .space 0x200 gUnknown_2038134: @ 2038134 - .space 0x260 + .space 0x260 gUnknown_2038394: @ 2038394 - .space 0x2F0 + .space 0x2F0 gUnknown_2038684: @ 2038684 - .space 0x20 + .space 0x20 gUnknown_20386A4: @ 20386A4 - .space 0x4 + .space 0x4 gUnknown_20386A8: @ 20386A8 - .space 0x4 + .space 0x4 - .include "src/battle_setup.o" - .align 2 - .include "src/wild_encounter.o" + .include "src/battle_setup.o" + .align 2 + .include "src/wild_encounter.o" - .align 2 + .align 2 gFieldEffectArguments: @ 20386E0 - .space 0x20 + .space 0x20 - .align 2 - .include "src/scanline_effect.o" + .align 2 + .include "src/scanline_effect.o" - .align 2 - .include "src/option_menu.o" + .align 2 + .include "src/option_menu.o" gTrainerCards: @ 2039624 - .space 0x180 + .space 0x180 gUnknown_20397A4: @ 20397A4 - .space 0x4 + .space 0x4 gUnknown_20397A8: @ 20397A8 - .space 0x4 + .space 0x4 gUnknown_20397AC: @ 20397AC - .space 0x4 + .space 0x4 gUnknown_20397B0: @ 20397B0 - .space 0x4 + .space 0x4 gUnknown_20397B4: @ 20397B4 - .space 0x1 + .space 0x1 gUnknown_20397B5: @ 20397B5 - .space 0x1 + .space 0x1 gUnknown_20397B6: @ 20397B6 - .space 0x1 + .space 0x1 gUnknown_20397B7: @ 20397B7 - .space 0x1 + .space 0x1 gUnknown_20397B8: @ 20397B8 - .space 0x2 + .space 0x2 gUnknown_20397BA: @ 20397BA - .space 0x2 + .space 0x2 gUnknown_20397BC: @ 20397BC - .space 0x64 + .space 0x64 gUnknown_2039820: @ 2039820 - .space 0x1 + .space 0x1 gUnknown_2039821: @ 2039821 - .space 0x1 + .space 0x1 gUnknown_2039822: @ 2039822 - .space 0x1 + .space 0x1 gUnknown_2039823: @ 2039823 - .space 0x1 + .space 0x1 gUnknown_2039824: @ 2039824 - .space 0x1 + .space 0x1 gUnknown_2039825: @ 2039825 - .space 0x1 + .space 0x1 gUnknown_2039826: @ 2039826 - .space 0x2 + .space 0x2 gUnknown_2039828: @ 2039828 - .space 0x4 + .space 0x4 gUnknown_203982C: @ 203982C - .space 0x4 + .space 0x4 gUnknown_2039830: @ 2039830 - .space 0x40 + .space 0x40 gUnknown_2039870: @ 2039870 - .space 0x4 + .space 0x4 gUnknown_2039874: @ 2039874 - .space 0x4 + .space 0x4 - .align 2 - .include "src/item_menu_icons.o" + .align 2 + .include "src/item_menu_icons.o" gBagPockets: @ 203988C - .space 0x28 + .space 0x28 -gUnknown_20398B4: @ 20398B4 - .space 0x4 + .align 2 + .include "src/shop.o" + .align 2 + .include "src/sea_cottage_special_anim.o" + .align 2 + .include "src/script_menu.o" -gUnknown_20398B8: @ 20398B8 - .space 0x2 - -gUnknown_20398BA: @ 20398BA - .space 0x7A - -gShopData: @ 2039934 - .space 0xE - -gUnknown_2039942: @ 2039942 - .space 0xE - -gUnknown_2039950: @ 2039950 - .space 0x4 - -gUnknown_2039954: @ 2039954 - .space 0x4 - -gUnknown_2039958: @ 2039958 - .space 0x4 - -gUnknown_203995C: @ 203995C - .space 0x4 - -gUnknown_2039960: @ 2039960 - .space 0x4 - -gUnknown_2039964: @ 2039964 - .space 0x4 - -gUnknown_2039968: @ 2039968 - .space 0x4 - -gUnknown_203996C: @ 203996C - .space 0x18 - -gUnknown_2039984: @ 2039984 - .space 0x4 - - .align 2 - .include "src/script_menu.o" - - .align 2 + .align 2 gUnknown_203998C: @ 203998C - .space 0x4 + .space 0x4 - .align 2 - .include "src/money.o" + .align 2 + .include "src/money.o" - .align 2 - .include "src/safari_zone.o" - .align 2 - .include "src/item_use.o" + .align 2 + .include "src/safari_zone.o" + .align 2 + .include "src/item_use.o" - .align 2 + .align 2 gUnknown_203999C: @ 203999C - .space 0x8 - - .align 2 - .include "src/dragon.o" - .align 2 - .include "src/battle_anim_utility_funcs.o" - .align 2 - .include "src/battle_intro.o" - .align 2 - .include "src/easy_chat.o" - .align 2 - .include "src/mon_markings.o" - .align 2 - .include "src/mail.o" - .align 2 - .include "src/menu_helpers.o" - - .align 2 + .space 0x8 + + .align 2 + .include "src/dragon.o" + .align 2 + .include "src/battle_anim_utility_funcs.o" + .align 2 + .include "src/battle_intro.o" + .align 2 + .include "src/easy_chat.o" + .align 2 + .include "src/mon_markings.o" + .align 2 + .include "src/mail.o" + .align 2 + .include "src/menu_helpers.o" + + .align 2 gUnknown_20399D4: @ 20399D4 - .space 0x4 + .space 0x4 gUnknown_20399D8: @ 20399D8 - .space 0x4 + .space 0x4 gUnknown_20399DC: @ 20399DC - .space 0x4 + .space 0x4 gUnknown_20399E0: @ 20399E0 - .space 0x4 + .space 0x4 gUnknown_20399E4: @ 20399E4 - .space 0x4 + .space 0x4 gUnknown_20399E8: @ 20399E8 - .space 0x4 + .space 0x4 gUnknown_20399EC: @ 20399EC - .space 0x4 + .space 0x4 gUnknown_20399F0: @ 20399F0 - .space 0xC + .space 0xC gUnknown_20399FC: @ 20399FC - .space 0x4 + .space 0x4 gAIScriptPtr: @ 2039A00 - .space 0x4 + .space 0x4 gPlayerFacingPosition: @ 2039A04 - .space 0x8 - - .align 2 - .include "src/field_specials.o" - .align 2 - .include "src/battle_records.o" - .align 2 - .include "src/evolution_scene.o" - .align 2 - .include "src/coins.o" - .align 2 - .include "src/battle_transition.o" + .space 0x8 + + .align 2 + .include "src/field_specials.o" + .align 2 + .include "src/battle_records.o" + .align 2 + .include "src/evolution_scene.o" + .align 2 + .include "src/coins.o" + .align 2 + .include "src/battle_transition.o" gUnknown_2039A30: @ 2039A30 - .space 0x4 + .space 0x4 gUnknown_2039A34: @ 2039A34 - .space 0x4 + .space 0x4 - .align 2 - .include "src/save.o" - .align 2 - .include "src/mystery_event_script.o" + .align 2 + .include "src/save.o" + .align 2 + .include "src/mystery_event_script.o" gUnknown_203AAB0: @ 203AAB0 - .space 0x4 - - .align 2 - .include "src/learn_move.o" - .align 2 - .include "src/battle_tower.o" - .align 2 - .include "src/player_pc.o" - .align 2 - .include "src/intro.o" - .align 2 - .include "src/hall_of_fame.o" - .align 2 - .include "src/credits.o" - .align 2 - .include "src/diploma.o" - - .align 2 + .space 0x4 + + .align 2 + .include "src/learn_move.o" + .align 2 + .include "src/battle_tower.o" + .align 2 + .include "src/player_pc.o" + .align 2 + .include "src/intro.o" + .align 2 + .include "src/hall_of_fame.o" + .align 2 + .include "src/credits.o" + .align 2 + .include "src/diploma.o" + + .align 2 gUnknown_203AB4C: @ 203AB4C - .space 0x4 + .space 0x4 gUnknown_203AB50: @ 203AB50 - .space 0x4 + .space 0x4 gUnknown_203AB54: @ 203AB54 - .space 0x4 + .space 0x4 - .include "src/new_menu_helpers.o" - .align 2 + .include "src/new_menu_helpers.o" + .align 2 gUnknown_203ABE4: @ 203ABE4 - .space 0x4 + .space 0x4 gUnknown_203ABE8: @ 203ABE8 - .space 0x4 + .space 0x4 - .align 2 - .include "src/map_preview_screen.o" + .align 2 + .include "src/map_preview_screen.o" - .align 2 + .align 2 gUnknown_203ABF0: @ 203ABF0 - .space 0x18 + .space 0x18 gUnknown_203AC08: @ 203AC08 - .space 0xDC + .space 0xDC gUnknown_203ACE4: @ 203ACE4 - .space 0x4 + .space 0x4 gUnknown_203ACE8: @ 203ACE8 - .space 0x4 + .space 0x4 gUnknown_203ACEC: @ 203ACEC - .space 0x4 + .space 0x4 gUnknown_203ACF0: @ 203ACF0 - .space 0x4 + .space 0x4 - .align 2 - .include "src/list_menu.o" - .align 2 + .align 2 + .include "src/list_menu.o" + .align 2 gUnknown_203ACFC: @ 203ACFC - .space 0x6 + .space 0x6 gUnknown_203AD02: @ 203AD02 - .space 0x2 + .space 0x2 gUnknown_203AD04: @ 203AD04 - .space 0x6 + .space 0x6 gUnknown_203AD0A: @ 203AD0A - .space 0x6 + .space 0x6 gUnknown_203AD10: @ 203AD10 - .space 0x4 + .space 0x4 gUnknown_203AD14: @ 203AD14 - .space 0x4 + .space 0x4 gUnknown_203AD18: @ 203AD18 - .space 0x4 + .space 0x4 gUnknown_203AD1C: @ 203AD1C - .space 0x4 + .space 0x4 gUnknown_203AD20: @ 203AD20 - .space 0x4 + .space 0x4 gUnknown_203AD24: @ 203AD24 - .space 0x4 + .space 0x4 gUnknown_203AD28: @ 203AD28 - .space 0x4 + .space 0x4 gUnknown_203AD2C: @ 203AD2C - .space 0x4 + .space 0x4 gSpecialVar_ItemId: @ 203AD30 - .space 0x4 - - .align 2 - .include "src/bag.o" - .align 2 - .include "src/trainer_pokemon_sprites.o" - .align 2 - .include "src/vs_seeker.o" - .align 2 - .include "src/item_pc.o" - .align 2 - .include "src/mailbox_pc.o" - .align 2 - .include "src/menu.o" - .align 2 - .include "src/quest_log.o" - - .align 2 + .space 0x4 + + .align 2 + .include "src/bag.o" + .align 2 + .include "src/trainer_pokemon_sprites.o" + .align 2 + .include "src/vs_seeker.o" + .align 2 + .include "src/item_pc.o" + .align 2 + .include "src/mailbox_pc.o" + .align 2 + .include "src/menu.o" + .align 2 + .include "src/quest_log.o" + + .align 2 gUnknown_203B04C: @ 203B04C - .space 0xC + .space 0xC gUnknown_203B058: @ 203B058 - .space 0x1 + .space 0x1 gUnknown_203B059: @ 203B059 - .space 0x3 + .space 0x3 gUnknown_203B05C: @ 203B05C - .space 0x8 + .space 0x8 gUnknown_203B064: @ 203B064 - .space 0x4 + .space 0x4 gUnknown_203B068: @ 203B068 - .space 0x2 + .space 0x2 gUnknown_203B06A: @ 203B06A - .space 0x2 + .space 0x2 gUnknown_203B06C: @ 203B06C - .space 0x18 + .space 0x18 gUnknown_203B084: @ 203B084 - .space 0x4 + .space 0x4 gUnknown_203B088: @ 203B088 - .space 0x4 + .space 0x4 gUnknown_203B08C: @ 203B08C - .space 0x4 + .space 0x4 gUnknown_203B090: @ 203B090 - .space 0x4 + .space 0x4 gUnknown_203B094: @ 203B094 - .space 0x4 + .space 0x4 gUnknown_203B098: @ 203B098 - .space 0x4 + .space 0x4 gUnknown_203B09C: @ 203B09C - .space 0x4 + .space 0x4 gUnknown_203B0A0: @ 203B0A0 - .space 0x9 + .space 0x9 gUnknown_203B0A9: @ 203B0A9 - .space 0x5 + .space 0x5 gUnknown_203B0AE: @ 203B0AE - .space 0x6 + .space 0x6 gUnknown_203B0B4: @ 203B0B4 - .space 0x4 + .space 0x4 gUnknown_203B0B8: @ 203B0B8 - .space 0x4 + .space 0x4 gUnknown_203B0BC: @ 203B0BC - .space 0x4 + .space 0x4 gUnknown_203B0C0: @ 203B0C0 - .space 0x1 + .space 0x1 gUnknown_203B0C1: @ 203B0C1 - .space 0x3 + .space 0x3 gPostMenuFieldCallback: @ 203B0C4 - .space 0x4 + .space 0x4 gUnknown_203B0C8: @ 203B0C8 - .space 0x4 + .space 0x4 gUnknown_203B0CC: @ 203B0CC - .space 0x4 + .space 0x4 gUnknown_203B0D0: @ 203B0D0 - .space 0x4 + .space 0x4 gSelectedOrderFromParty: @ 203B0D4 - .space 0x4 + .space 0x4 gUnknown_203B0D8: @ 203B0D8 - .space 0x4 + .space 0x4 gUnknown_203B0DC: @ 203B0DC - .space 0x4 + .space 0x4 gUnknown_203B0E0: @ 203B0E0 - .space 0x4 + .space 0x4 gUnknown_203B0E4: @ 203B0E4 - .space 0x4 + .space 0x4 gUnknown_203B0E8: @ 203B0E8 - .space 0x4 - - .align 2 - .include "src/help_system_812B1E0.o" - .align 2 - .include "src/fame_checker.o" - .align 2 - .include "src/oak_speech.o" - .align 2 - .include "src/tm_case.o" - .include "src/menu_indicators.o" + .space 0x4 + + .align 2 + .include "src/help_system_812B1E0.o" + .align 2 + .include "src/fame_checker.o" + .align 2 + .include "src/oak_speech.o" + .align 2 + .include "src/tm_case.o" + .include "src/menu_indicators.o" gUnknown_203B140: @ 203B140 - .space 0x4 + .space 0x4 gUnknown_203B144: @ 203B144 - .space 0x4 + .space 0x4 gUnknown_203B148: @ 203B148 - .space 0x10 + .space 0x10 gUnknown_203B158: @ 203B158 - .space 0x4 + .space 0x4 gUnknown_203B15C: @ 203B15C - .space 0x4 + .space 0x4 gUnknown_203B160: @ 203B160 - .space 0x4 + .space 0x4 gUnknown_203B164: @ 203B164 - .space 0x4 + .space 0x4 gUnknown_203B168: @ 203B168 - .space 0x4 + .space 0x4 gUnknown_203B16C: @ 203B16C - .space 0x1 + .space 0x1 gUnknown_203B16D: @ 203B16D - .space 0x1 + .space 0x1 gUnknown_203B16E: @ 203B16E - .space 0x2 + .space 0x2 gUnknown_203B170: @ 203B170 - .space 0x4 + .space 0x4 - .align 2 - .include "src/help_system.o" - .align 2 - .include "src/dynamic_placeholder_text_util.o" - .align 2 - .include "src/berry_pouch.o" - .align 2 - .include "src/slot_machine.o" + .align 2 + .include "src/help_system.o" + .align 2 + .include "src/dynamic_placeholder_text_util.o" + .align 2 + .include "src/berry_pouch.o" + .align 2 + .include "src/slot_machine.o" sLocationHistory: @ 203F3A8 - .space 0x6 + .space 0x6 sRoamerLocation: @ 203F3AE - .space 0x2 - - .align 2 - .include "src/mystery_gift_menu.o" - .align 2 - .include "src/mevent.o" - .align 2 - .include "src/mevent_server_helpers.o" - .align 2 - .include "src/mevent_client.o" - .align 2 - .include "src/mevent_server.o" - .align 2 - .include "src/mevent_8145654.o" - .align 2 - .include "src/seagallop.o" - - .align 2 + .space 0x2 + + .align 2 + .include "src/mystery_gift_menu.o" + .align 2 + .include "src/mevent.o" + .align 2 + .include "src/mevent_server_helpers.o" + .align 2 + .include "src/mevent_client.o" + .align 2 + .include "src/mevent_server.o" + .align 2 + .include "src/mevent_8145654.o" + .align 2 + .include "src/seagallop.o" + + .align 2 gUnknown_203F3D4: @ 203F3D4 - .space 0x4 + .space 0x4 gUnknown_203F3D8: @ 203F3D8 - .space 0x4 + .space 0x4 gUnknown_203F3DC: @ 203F3DC - .space 0x4 + .space 0x4 gUnknown_203F3E0: @ 203F3E0 - .space 0x4 + .space 0x4 gUnknown_203F3E4: @ 203F3E4 - .space 0x14 + .space 0x14 gUnknown_203F3F8: @ 203F3F8 - .space 0x8 + .space 0x8 gUnknown_203F400: @ 203F400 - .space 0x2C + .space 0x2C gUnknown_203F42C: @ 203F42C - .space 0x10 + .space 0x10 gUnknown_203F43C: @ 203F43C - .space 0x4 + .space 0x4 gUnknown_203F440: @ 203F440 - .space 0x4 - - .align 2 - .include "src/teachy_tv.o" - .align 2 - .include "src/unk_815C980.o" - .align 2 - .include "src/trainer_tower.o" - .align 2 - .include "src/berry_powder.o" + .space 0x4 + + .align 2 + .include "src/teachy_tv.o" + .align 2 + .include "src/unk_815C980.o" + .align 2 + .include "src/trainer_tower.o" + .align 2 + .include "src/berry_powder.o" -- cgit v1.2.3 From d1142b4290e8688a0d42bfc1b95b9d90b1721459 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 26 Nov 2019 11:47:12 -0700 Subject: extract graphics data --- data/graphics.s | 16 +++--- graphics/shop_menu/shop_menu.pal | 35 ++++++++++++ graphics/shop_menu/shop_menu.png | Bin 0 -> 261 bytes graphics/shop_menu/shop_tilemap.bin | Bin 0 -> 316 bytes graphics/shop_menu/shop_tmHmTilemap.bin | Bin 0 -> 312 bytes include/graphics.h | 6 ++ include/sea_cottage.h | 1 - include/shop.h | 2 - src/sea_cottage_special_anim.c | 86 ++++++++++++++++------------ src/shop.c | 98 ++++++++++++++------------------ 10 files changed, 143 insertions(+), 101 deletions(-) create mode 100644 graphics/shop_menu/shop_menu.pal create mode 100644 graphics/shop_menu/shop_menu.png create mode 100644 graphics/shop_menu/shop_tilemap.bin create mode 100644 graphics/shop_menu/shop_tmHmTilemap.bin diff --git a/data/graphics.s b/data/graphics.s index 5eacc0cb2..ec4fc10dd 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -14008,17 +14008,17 @@ gBerryPouchSpritePalette:: @ 8E85C1C gBerryPouchBg1Tilemap:: @ 8E85C44 .incbin "graphics/berry_pouch/unk_8E85C44.bin.lz" -gUnknown_8E85DC8:: @ 8E85DC8 - .incbin "baserom.gba", 0xE85DC8, 0x134 +gBuyMenuFrame_Gfx:: @ 8E85DC8 + .incbin "graphics/shop_menu/shop_menu.4bpp.lz" -gUnknown_8E85EFC:: @ 8E85EFC - .incbin "baserom.gba", 0xE85EFC, 0x13C +gBuyMenuFrame_Tilemap:: @ 8E85EFC + .incbin "graphics/shop_menu/shop_tilemap.bin" -gUnknown_8E86038:: @ 8E86038 - .incbin "baserom.gba", 0xE86038, 0x138 +gBuyMenuFrame_TmHmTilemap:: @ 8E86038 + .incbin "graphics/shop_menu/shop_tmHmTilemap.bin" -gUnknown_8E86170:: @ 8E86170 - .incbin "baserom.gba", 0xE86170, 0x38 +gBuyMenuFrame_Pal:: @ 8E86170 + .incbin "graphics/shop_menu/shop_menu.gbapal.lz" gUnknown_8E861A8:: @ 8E861A8 .incbin "baserom.gba", 0xE861A8, 0x98 diff --git a/graphics/shop_menu/shop_menu.pal b/graphics/shop_menu/shop_menu.pal new file mode 100644 index 000000000..b0fec0a30 --- /dev/null +++ b/graphics/shop_menu/shop_menu.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +238 230 172 +222 156 106 +255 189 131 +255 222 164 +255 255 213 +238 230 172 +106 106 106 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/shop_menu/shop_menu.png b/graphics/shop_menu/shop_menu.png new file mode 100644 index 000000000..23af464a2 Binary files /dev/null and b/graphics/shop_menu/shop_menu.png differ diff --git a/graphics/shop_menu/shop_tilemap.bin b/graphics/shop_menu/shop_tilemap.bin new file mode 100644 index 000000000..8d5ab35b7 Binary files /dev/null and b/graphics/shop_menu/shop_tilemap.bin differ diff --git a/graphics/shop_menu/shop_tmHmTilemap.bin b/graphics/shop_menu/shop_tmHmTilemap.bin new file mode 100644 index 000000000..92fbb7dad Binary files /dev/null and b/graphics/shop_menu/shop_tmHmTilemap.bin differ diff --git a/include/graphics.h b/include/graphics.h index 354339235..559036ef7 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4239,4 +4239,10 @@ extern const u16 gUnknown_8E97DDC[]; extern const u32 gUnknown_8E97DFC[]; extern const u32 gUnknown_8E97EC4[]; +// shop menu +extern const u32 gBuyMenuFrame_Gfx[]; +extern const u32 gBuyMenuFrame_Tilemap[]; +extern const u32 gBuyMenuFrame_TmHmTilemap[]; +extern const u32 gBuyMenuFrame_Pal[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/sea_cottage.h b/include/sea_cottage.h index dce6862ff..d9885edd5 100644 --- a/include/sea_cottage.h +++ b/include/sea_cottage.h @@ -3,7 +3,6 @@ #include "global.h" -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); void sub_809C448(u8 a0); void sub_809C460(void); bool8 sub_809C474(void); diff --git a/include/shop.h b/include/shop.h index 91ce421aa..75e1f7298 100644 --- a/include/shop.h +++ b/include/shop.h @@ -9,8 +9,6 @@ #define INDEX_CANCEL -2 -#define NUM_CHARS_PRICE 4 - extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3]; void CreatePokemartMenu(const u16 *itemsForSale); diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c index 67fc70209..542329893 100644 --- a/src/sea_cottage_special_anim.c +++ b/src/sea_cottage_special_anim.c @@ -7,21 +7,18 @@ #include "field_map_obj.h" #include "field_camera.h" -// Defines #define t0 data[0] #define tX data[4] +#define tY data[5] #define tListTaskId data[7] -// RAM EWRAM_DATA u8 gUnknown_2039984 = 0; - -// Function Declarations +static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); static void sub_809C334(u8 taskId); static void sub_809C500(u8 taskId); static void sub_809C640(u8 taskId); -// Data Definitions static const u16 gUnknown_83DF0D4[] = {0x0308, 0x030a, 0x02d0}; static const u16 gUnknown_83DF0DA[] = {0x0309, 0x030b, 0x02d1}; static const u16 gUnknown_83DF0E0[] = {0x0310, 0x0312, 0x02d8}; @@ -30,34 +27,52 @@ static const u16 gUnknown_83DF0EC[] = {0x02e3, 0x0316, 0x0314}; static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315}; static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; - // Functions #ifdef NONMATCHING -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +// Couldn't get the registers to match. Hard to know where to fix since I'm unsure what the variables are for. +static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { s16 v1, v2, v3; - s16 i, j; - - v1 = gTasks[taskId].data[5] - 1; - v2 = gTasks[taskId].data[6] - 1; - v3 = gTasks[taskId].data[2]; - - if (gTasks[taskId].data[3] == 0) - { - for (i = 0; i < 3; i++) - { - for (j = 0; j < 3; j++) - { - MapGridGetMetatileIdAt(v1 + j, v2 + i); - if () - { - - } - - MapGridSetMetatileIdAt - } - } - } + s16 i, j; + const s16* v4; + + v1 = gTasks[taskId].data[4] - 1; + v2 = gTasks[taskId].data[5] - 1; + v3 = gTasks[taskId].data[1]; + + if (gTasks[taskId].data[2] == 0) + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + v4 = &a1[v3]; + if (MapGridGetMetatileIdAt(v1 + j, v2 + i) == v4[0]) + { + if (v3 != 2) + MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | v4[1]); + else + MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | v4[0]); + } + } + } + } + else + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + if (a1[2 - v3] == MapGridGetMetatileIdAt(v1 + j, v2 + i)) + { + if (v3 != 2) + MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | a1[1 - v3]); + else + MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | a1[2]); + } + } + } + } } #else NAKED @@ -275,9 +290,9 @@ static void sub_809C334(u8 taskId) default: break; } + data[0] = (data[0] + 1) & 7; v1 = data[0] & 7; - //ldrh r5, [r4] instead mov r5, r0 somehow if (v1 == 0) { DrawWholeMapView(); @@ -293,7 +308,7 @@ static u8 sub_809C3FC(u16 a0) taskId = CreateTask(sub_809C334, 0); data = gTasks[taskId].data; - PlayerGetDestCoords(&tX, &data[5]); + PlayerGetDestCoords(&tX, &tY); t0 = 0; data[1] = 0; data[2] = a0; @@ -335,10 +350,8 @@ void sub_809C4A8(void) s16 *data; taskId = CreateTask(sub_809C500, 0); - gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; - data = gTasks[taskId].data; PlayerGetDestCoords(&data[2], &data[3]); if (gSpecialVar_0x8004 == 0) @@ -376,9 +389,8 @@ static void sub_809C500(u8 taskId) data[0]++; if (data[0] != 0x10) return; - data[0] = 0; - data[0] == 0; + data[0] = 0; data[1]++; if (data[1] != 0xD) return; @@ -399,7 +411,6 @@ void sub_809C5FC(void) taskId = CreateTask(sub_809C640, 0); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; - data = gTasks[taskId].data; PlayerGetDestCoords(&data[2], &data[3]); gTasks[taskId].data[2] += 4; @@ -423,6 +434,7 @@ static void sub_809C640(u8 taskId) DestroyTask(taskId); return; } + data[2]--; } MapGridSetMetatileIdAt(data[2], data[3], 0xEB9); @@ -430,6 +442,7 @@ static void sub_809C640(u8 taskId) CurrentMapDrawMetatileAt(data[2], data[3]); CurrentMapDrawMetatileAt(data[2], data[3] + 1); } + data[0]++; if (data[0] == 4) { @@ -437,3 +450,4 @@ static void sub_809C640(u8 taskId) data[1]++; } } + diff --git a/src/shop.c b/src/shop.c index d0b3994a2..a0a8b8eca 100644 --- a/src/shop.c +++ b/src/shop.c @@ -2,6 +2,8 @@ #include "shop.h" #include "menu.h" #include "data.h" +#include "graphics.h" +#include "strings.h" #include "list_menu.h" #include "new_menu_helpers.h" #include "party_menu.h" @@ -15,7 +17,6 @@ #include "item_menu.h" #include "main.h" #include "sound.h" -#include "strings.h" #include "string_util.h" #include "overworld.h" #include "window.h" @@ -38,9 +39,7 @@ #include "constants/items.h" #include "constants/game_stat.h" -#define t0 data[0] #define tItemCount data[1] -#define tX data[4] #define tItemId data[5] #define tListTaskId data[7] @@ -96,7 +95,6 @@ struct MartHistory /*0x17*/ u8 unk17; }; /* size = 0x18 */ - EWRAM_DATA s16 sViewportMapObjects[MAP_OBJECTS_COUNT][4] = {0}; EWRAM_DATA struct ShopData gShopData = {0}; EWRAM_DATA u8 sShopMenuWindowId = 0; @@ -165,39 +163,23 @@ static void nullsub_52(u8 taskId); static void nullsub_53(void); static void RecordQuestLogItemPurchase(void); -// external defines extern u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); extern u16 BagGetQuantityByItemId(u16 item); -//Data Definitions -/* -extern const struct MenuAction gUnknown_83DF09C[]; -extern const struct YesNoFuncTable gUnknown_83DF0B4[]; -extern const struct WindowTemplate gUnknown_83DF0BC[]; -extern const struct BgTemplate gUnknown_83DF0C4[]; -*/ - -//graphics -extern const u32 gUnknown_8E85DC8[]; //gBuyMenuFrame_Gfx[]; -extern const u32 gUnknown_8E85EFC[]; //gBuyMenuFrame_Tilemap -extern const u32 gUnknown_8E86038[]; //gBuyMenuFrame_TmHmTilemap -extern const u32 gUnknown_8E86170[]; //gBuyMenuFrame_Pal - - -static const struct MenuAction gUnknown_83DF09C[] = // sShopMenuActions_BuySellQuit +static const struct MenuAction sShopMenuActions_BuySellQuit[] = { {gText_ShopBuy, {.void_u8 = Task_HandleShopMenuBuy}}, {gText_ShopSell, {.void_u8 = Task_HandleShopMenuSell}}, {gText_ShopQuit, {.void_u8 = Task_HandleShopMenuQuit}} }; -static const struct YesNoFuncTable gUnknown_83DF0B4[] = //sShopMenuActions_BuyQuit +static const struct YesNoFuncTable sShopMenuActions_BuyQuit[] = { - BuyMenuTryMakePurchase, //Task_HandleShopMenuBuy, - BuyMenuReturnToItemList //Task_HandleShopMenuQuit + BuyMenuTryMakePurchase, + BuyMenuReturnToItemList }; -static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTemplates +static const struct WindowTemplate sShopMenuWindowTemplates[] = { { .bg = 0, @@ -210,7 +192,7 @@ static const struct WindowTemplate gUnknown_83DF0BC[] = //sShopMenuWindowTem } }; -static const struct BgTemplate gUnknown_83DF0C4[4] = //sShopBuyMenuBgTemplates +static const struct BgTemplate sShopBuyMenuBgTemplates[4] = { { .bg = 0, @@ -250,7 +232,6 @@ static const struct BgTemplate gUnknown_83DF0C4[4] = //sShopBuyMenuBgTemplat } }; - // Functions static u8 CreateShopMenu(u8 a0) { @@ -261,9 +242,9 @@ static u8 CreateShopMenu(u8 a0) else gShopData.unk16_4 = 5; - sShopMenuWindowId = AddWindow(gUnknown_83DF0BC); //sShopMenuWindowTemplates + sShopMenuWindowId = AddWindow(sShopMenuWindowTemplates); SetStdWindowBorderStyle(sShopMenuWindowId, 0); - PrintTextArray(sShopMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, gUnknown_83DF09C); + PrintTextArray(sShopMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, 3, sShopMenuActions_BuySellQuit); Menu_InitCursor(sShopMenuWindowId, 2, 0, 2, 16, 3, 0); PutWindowTilemap(sShopMenuWindowId); CopyWindowToVram(sShopMenuWindowId, 1); @@ -272,10 +253,12 @@ static u8 CreateShopMenu(u8 a0) static u8 GetMartTypeFromItemList(u32 a0) { - u16 retVal, i; + u16 i; + if (a0) return (u8)a0; goto MAIN; + RETURN_1: return 1; @@ -296,6 +279,7 @@ static u8 GetMartTypeFromItemList(u32 a0) else if (gShopData.itemList[i] == 0) goto RETURN_0; } + RETURN_0: return 0; } @@ -333,7 +317,7 @@ static void Task_ShopMenu(u8 taskId) Task_HandleShopMenuQuit(taskId); break; default: - gUnknown_83DF09C[Menu_GetCursorPos()].func.void_u8(taskId); + sShopMenuActions_BuySellQuit[Menu_GetCursorPos()].func.void_u8(taskId); break; } } @@ -377,6 +361,7 @@ static void Task_GoToBuyOrSellMenu(u8 taskId) { if (gPaletteFade.active) return; + SetMainCallback2((void *)GetWordTaskArg(taskId, 0xE)); FreeAllWindowBuffers(); DestroyTask(taskId); @@ -392,6 +377,7 @@ static void Task_ReturnToShopMenu(u8 taskId) { if (field_weather_is_fade_finished() != TRUE) return; + DisplayItemMessageOnField(taskId, GetMartUnk16_4(), gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu); } @@ -420,6 +406,7 @@ static void VBlankCB_BuyMenu(void) static void CB2_InitBuyMenu(void) { u8 taskId; + switch (gMain.state) { case 0: @@ -469,12 +456,15 @@ static bool8 InitShopData(void) gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); if (gShopTilemapBuffer1 == 0) goto CANCEL; + gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2)); if (gShopTilemapBuffer2 == 0) goto CANCEL; + gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3)); if (gShopTilemapBuffer3 == 0) goto CANCEL; + gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4)); if (gShopTilemapBuffer4 == 0) goto CANCEL; @@ -489,7 +479,7 @@ static bool8 InitShopData(void) static void BuyMenuInitBgs(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_83DF0C4, NELEMS(gUnknown_83DF0C4)); + InitBgsFromTemplates(0, sShopBuyMenuBgTemplates, NELEMS(sShopBuyMenuBgTemplates)); SetBgTilemapBuffer(1, gShopTilemapBuffer2); SetBgTilemapBuffer(2, gShopTilemapBuffer4); SetBgTilemapBuffer(3, gShopTilemapBuffer3); @@ -512,13 +502,15 @@ static void BuyMenuInitBgs(void) static void BuyMenuDecompressBgGraphics(void) { void* pal; - DecompressAndCopyTileDataToVram(1, gUnknown_8E85DC8, 0x480, 0x3DC, 0); + + DecompressAndCopyTileDataToVram(1, gBuyMenuFrame_Gfx, 0x480, 0x3DC, 0); if ((gShopData.martType) != MART_TYPE_TMHM) - LZDecompressWram(gUnknown_8E85EFC, gShopTilemapBuffer1); //gBuyMenuFrame_Tilemap + LZDecompressWram(gBuyMenuFrame_Tilemap, gShopTilemapBuffer1); else - LZDecompressWram(gUnknown_8E86038, gShopTilemapBuffer1); //gBuyMenuFrame_TmHmTilemap + LZDecompressWram(gBuyMenuFrame_TmHmTilemap, gShopTilemapBuffer1); + pal = Alloc(0x40); - LZDecompressWram(gUnknown_8E86170, pal); + LZDecompressWram(gBuyMenuFrame_Pal, pal); LoadPalette(pal, 0xB0, 0x20); LoadPalette(pal + 0x20, 0x60, 0x20); Free(pal); @@ -527,14 +519,17 @@ static void BuyMenuDecompressBgGraphics(void) static void sub_809B10C(bool32 a0) { u8 v; + if (a0 == FALSE) v = 0xB; else v = 6; + if ((gShopData.martType) != MART_TYPE_TMHM) SetBgRectPal(1, 0, 0xE, 0x1E, 6, v); else SetBgRectPal(1, 0, 0xC, 0x1E, 8, v); + ScheduleBgCopyTilemapToVram(1); } @@ -551,10 +546,10 @@ static void BuyMenuDrawGraphics(void) static bool8 BuyMenuBuildListMenuTemplate(void) { - u16 i; - u16 v; + u16 i, v; struct ListMenuItem **list = &sShopMenuListMenu; struct ShopData *mart = &gShopData; + *list = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu)); if (sShopMenuListMenu == 0) goto FREE_MEMORY; @@ -574,7 +569,7 @@ static bool8 BuyMenuBuildListMenuTemplate(void) for (i = 0; i < mart->itemCount; i++) { - PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], mart->itemList[i], sShopMenuItemStrings[i]); //PokeMartWriteNameAndIdAt(u16 a0, u16 a1, u8* a2) + PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], mart->itemList[i], sShopMenuItemStrings[i]); } ADD_CANCEL: @@ -640,6 +635,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s CreateItemMenuIcon(item, gShopData.itemSlot); else CreateItemMenuIcon(ITEM_N_A, gShopData.itemSlot); + gShopData.itemSlot ^= 1; BuyMenuPrint(5, 2, description, 0, 3, 2, 1, 0, 0); } @@ -652,6 +648,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s } #ifdef NONMATCHING +// As simple as this seems, I could not get the while loop to use the correct registers. It should pad the front of gStringVar4 with 0 based on the length of gStringVar1. static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) { u32 len, x; @@ -857,10 +854,7 @@ static void sub_809B764(void) static void BuyMenuDrawMapBg(void) { - s16 i; - s16 j; - s16 x; - s16 y; + s16 i, j, x, y; const struct MapData *mapData; u16 metatile; u8 metatileLayerType; @@ -913,7 +907,6 @@ static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLaye static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src) { - // This function draws a whole 2x2 metatile. dest[offset1 + offset2] = src[0]; // top left dest[offset1 + offset2 + 1] = src[1]; // top right dest[offset1 + offset2 + 32] = src[2]; // bottom left @@ -922,12 +915,9 @@ static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, con static void BuyMenuCollectEventObjectData(void) { - s16 facingX; - s16 facingY; - u8 y; - u8 x; + s16 facingX, facingY; + u8 x, y, z; u8 num = 0; - u8 z; GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); z = PlayerGetZCoord(); @@ -970,8 +960,7 @@ static void BuyMenuCollectEventObjectData(void) static void BuyMenuDrawEventObjects(void) { - u8 i; - u8 spriteId; + u8 i, spriteId; const struct MapObjectGraphicsInfo *graphicsInfo; for (i = 0; i < MAP_OBJECTS_COUNT; i++) @@ -993,7 +982,6 @@ static void BuyMenuDrawEventObjects(void) static void BuyMenuCopyTilemapData(void) { s16 i; - u16 *dst = *gShopTilemapBuffer2; u16 *src = *gShopTilemapBuffer1; @@ -1049,6 +1037,7 @@ static void Task_BuyMenu(u8 taskId) CopyItemName(itemId, gStringVar1); BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, Task_BuyHowManyDialogueInit); } + break; } } } @@ -1056,7 +1045,6 @@ static void Task_BuyMenu(u8 taskId) static void Task_BuyHowManyDialogueInit(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 quantityInBag = BagGetQuantityByItemId(tItemId); u16 maxQuantity; @@ -1120,7 +1108,7 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId) { - BuyMenuConfirmPurchase(taskId, gUnknown_83DF0B4); + BuyMenuConfirmPurchase(taskId, sShopMenuActions_BuyQuit); } static void BuyMenuTryMakePurchase(u8 taskId) @@ -1204,6 +1192,7 @@ static void nullsub_53(void) } #ifdef NONMATCHING +// couldn't get registers to match. It should store an address into r4 (what tmp wants to be), and load/store from there, eg. ldrh r0, [r4,#4]. Which indicates an array inside the MartHistory struct, except data sizes are not consistent. void RecordItemPurchase(u16 item, u16 quantity, u8 a2) { struct MartHistory *tmp; @@ -1343,6 +1332,7 @@ static void RecordQuestLogItemPurchase(void) v = history->unkA; if (v != 0) sub_8113550(v + 0x24, (const u16*)history); + v = history->unk16; if (v != 0) { -- cgit v1.2.3 From dd6239fe266d5972fdc36348f3d72148cc8f94fb Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 26 Nov 2019 12:36:27 -0700 Subject: init branch --- src/pokeball.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/pokeball.c diff --git a/src/pokeball.c b/src/pokeball.c new file mode 100644 index 000000000..dc4f98a6e --- /dev/null +++ b/src/pokeball.c @@ -0,0 +1 @@ +#include "global.h" -- cgit v1.2.3 From 5ad5764d4edd275b7ce818570b70bf7679546539 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 26 Nov 2019 14:02:20 -0700 Subject: fix return type --- src/shop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shop.c b/src/shop.c index a8294fd72..b15d6a716 100644 --- a/src/shop.c +++ b/src/shop.c @@ -108,7 +108,7 @@ EWRAM_DATA struct MartHistory gShopMenuHistory = {0}; //Function Declarations static u8 CreateShopMenu(u8 a0); -static u8 GetMartTypeFromItemList(bool32 a0); +static bool8 GetMartTypeFromItemList(bool32 a0); static void SetShopItemsForSale(const u16 *items); static void SetShopMenuCallback(MainCallback callback); static void Task_ShopMenu(u8 taskId); -- cgit v1.2.3 From 4b33546727007829bb80121790ff377f4e9739b9 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 26 Nov 2019 16:54:55 -0700 Subject: DoPokeballSendOutAnimation --- src/pokeball.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/pokeball.c b/src/pokeball.c index dc4f98a6e..e9d50599b 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -1 +1,13 @@ #include "global.h" +#include "pokeball.h" +#include "battle.h" + + +u8 DoPokeballSendOutAnimation(u16 a0, u8 a1) +{ + gDoingBattleAnim = 1; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = TRUE; + CreateTask(sub_804A9A0, 5); + + return 0; +} -- cgit v1.2.3 From f4b6a8195a0b5145b58afa81e87a457bda140c11 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 26 Nov 2019 17:05:02 -0700 Subject: match BuyMenuPrintPriceInList --- src/shop.c | 91 ++++---------------------------------------------------------- 1 file changed, 5 insertions(+), 86 deletions(-) diff --git a/src/shop.c b/src/shop.c index b15d6a716..982202da2 100644 --- a/src/shop.c +++ b/src/shop.c @@ -643,103 +643,22 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s } } -#ifdef NONMATCHING -// As simple as this seems, I could not get the while loop to use the correct registers. It should pad the front of gStringVar4 with 0 based on the length of gStringVar1. static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) { - u32 len, x; + s32 x; u8 *loc; if (item != INDEX_CANCEL) { ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, 4); - len = 4 - StringLength(gStringVar1); + x = 4 - StringLength(gStringVar1); loc = gStringVar4; - x = len - 1; - if (x > 0) - { - while (len != 0) - { - *loc = 0; - loc++; - len--; - } - } + while (x-- != 0) + *loc++ = 0; StringExpandPlaceholders(loc, gText_PokedollarVar1); - BuyMenuPrint(windowId, 1, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); + BuyMenuPrint(windowId, 0, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); } } -#else -NAKED -static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tsub sp, 0x14\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tlsls r2, 24\n" - "\tlsrs r5, r2, 24\n" - "\tmovs r0, 0x2\n" - "\tnegs r0, r0\n" - "\tcmp r1, r0\n" - "\tbeq _0809B480\n" - "\tldr r4, _0809B488 @ =gStringVar1\n" - "\tlsls r0, r1, 16\n" - "\tlsrs r0, 16\n" - "\tbl itemid_get_market_price\n" - "\tadds r1, r0, 0\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tadds r0, r4, 0\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x4\n" - "\tbl ConvertIntToDecimalStringN\n" - "\tadds r0, r4, 0\n" - "\tbl StringLength\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmovs r1, 0x4\n" - "\tsubs r1, r0\n" - "\tldr r2, _0809B48C @ =gStringVar4\n" - "\tadds r0, r1, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r0, 0\n" - "\tbeq _0809B45C\n" - "\tmovs r3, 0\n" - "_0809B450:\n" - "\tstrb r3, [r2]\n" - "\tadds r2, 0x1\n" - "\tadds r0, r1, 0\n" - "\tsubs r1, 0x1\n" - "\tcmp r0, 0\n" - "\tbne _0809B450\n" - "_0809B45C:\n" - "\tldr r1, _0809B490 @ =gText_PokedollarVar1\n" - "\tadds r0, r2, 0\n" - "\tbl StringExpandPlaceholders\n" - "\tldr r2, _0809B48C @ =gStringVar4\n" - "\tstr r5, [sp]\n" - "\tmovs r0, 0\n" - "\tstr r0, [sp, 0x4]\n" - "\tstr r0, [sp, 0x8]\n" - "\tmovs r0, 0xFF\n" - "\tstr r0, [sp, 0xC]\n" - "\tmovs r0, 0x1\n" - "\tstr r0, [sp, 0x10]\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0\n" - "\tmovs r3, 0x69\n" - "\tbl BuyMenuPrint\n" - "_0809B480:\n" - "\tadd sp, 0x14\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t_0809B488: .4byte gStringVar1\n" - "\t_0809B48C: .4byte gStringVar4\n" - "\t_0809B490: .4byte gText_PokedollarVar1\n"); -} -#endif static void LoadTmHmNameInMart(s32 item) { -- cgit v1.2.3 From cba5ebbd5af599736f84a8ef0142382f5a96f4af Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 27 Nov 2019 07:14:33 -0700 Subject: remove pokeball.s --- asm/pokeball.s | 2896 ---------------------------------------------------- include/pokeball.h | 4 + include/task.h | 14 +- ld_script.txt | 2 +- src/pokeball.c | 1300 ++++++++++++++++++++++- 5 files changed, 1306 insertions(+), 2910 deletions(-) delete mode 100644 asm/pokeball.s diff --git a/asm/pokeball.s b/asm/pokeball.s deleted file mode 100644 index ed9eea832..000000000 --- a/asm/pokeball.s +++ /dev/null @@ -1,2896 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start DoPokeballSendOutAnimation -DoPokeballSendOutAnimation: @ 804A938 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _0804A98C @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r0, _0804A990 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _0804A994 @ =gActiveBattler - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0804A998 @ =sub_804A9A0 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804A99C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - ldrb r0, [r6] - strh r0, [r1, 0xE] - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0804A98C: .4byte gDoingBattleAnim -_0804A990: .4byte gBattleSpritesDataPtr -_0804A994: .4byte gActiveBattler -_0804A998: .4byte sub_804A9A0 -_0804A99C: .4byte gTasks - thumb_func_end DoPokeballSendOutAnimation - - thumb_func_start sub_804A9A0 -sub_804A9A0: @ 804A9A0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r1, _0804A9D4 @ =gTasks - ldr r2, [sp] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0x8] - movs r3, 0x8 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0804A9D8 - adds r0, r2, 0x1 - strh r0, [r1, 0x8] - b _0804ABB8 - .align 2, 0 -_0804A9D4: .4byte gTasks -_0804A9D8: - ldrh r0, [r1, 0xC] - mov r9, r0 - ldrb r6, [r1, 0xE] - adds r0, r6, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0804AA04 - ldr r1, _0804A9FC @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804AA00 @ =gEnemyParty - b _0804AA12 - .align 2, 0 -_0804A9FC: .4byte gBattlerPartyIndexes -_0804AA00: .4byte gEnemyParty -_0804AA04: - ldr r1, _0804AA50 @ =gBattlerPartyIndexes - lsls r0, r6, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804AA54 @ =gPlayerParty -_0804AA12: - adds r0, r1 - movs r1, 0x26 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBallId - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl LoadBallGfx - ldr r0, _0804AA58 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804AA60 - ldr r4, _0804AA5C @ =gLinkPlayers - adds r0, r6, 0 - bl GetBattlerMultiplayerId - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x13] - mov r10, r1 - b _0804AA68 - .align 2, 0 -_0804AA50: .4byte gBattlerPartyIndexes -_0804AA54: .4byte gPlayerParty -_0804AA58: .4byte gBattleTypeFlags -_0804AA5C: .4byte gLinkPlayers -_0804AA60: - ldr r0, _0804AAB8 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - mov r10, r0 -_0804AA68: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - ldr r1, _0804AABC @ =gUnknown_82606F4 - adds r0, r1 - movs r1, 0x20 - movs r2, 0x50 - movs r3, 0x1D - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r5, r7, 4 - adds r0, r5, r7 - lsls r0, 2 - mov r8, r0 - ldr r4, _0804AAC0 @ =gSprites - add r4, r8 - movs r0, 0x80 - strh r0, [r4, 0x2E] - movs r1, 0 - strh r1, [r4, 0x30] - mov r2, r9 - strh r2, [r4, 0x3C] - mov r3, r9 - cmp r3, 0xFE - beq _0804AAF8 - cmp r3, 0xFF - bne _0804AB38 - ldr r0, _0804AAC4 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 9 - ands r0, r1 - cmp r0, 0 - beq _0804AAC8 - movs r5, 0x20 - movs r4, 0x40 - b _0804AACE - .align 2, 0 -_0804AAB8: .4byte gSaveBlock2Ptr -_0804AABC: .4byte gUnknown_82606F4 -_0804AAC0: .4byte gSprites -_0804AAC4: .4byte gBattleTypeFlags -_0804AAC8: - mov r0, r10 - movs r5, 0x30 - movs r4, 0x46 -_0804AACE: - ldr r0, _0804AAEC @ =gBattlerTarget - strb r6, [r0] - ldr r2, _0804AAF0 @ =gSprites - lsls r3, r7, 4 - adds r1, r3, r7 - lsls r1, 2 - adds r0, r1, r2 - strh r5, [r0, 0x20] - strh r4, [r0, 0x22] - adds r2, 0x1C - adds r1, r2 - ldr r0, _0804AAF4 @ =SpriteCB_PlayerMonSendOut_1 - str r0, [r1] - b _0804AB48 - .align 2, 0 -_0804AAEC: .4byte gBattlerTarget -_0804AAF0: .4byte gSprites -_0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1 -_0804AAF8: - adds r0, r6, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x20] - adds r0, r6, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x18 - strh r0, [r4, 0x22] - ldr r0, _0804AB2C @ =gBattlerTarget - strb r6, [r0] - movs r1, 0 - strh r1, [r4, 0x2E] - ldr r0, _0804AB30 @ =gSprites - adds r0, 0x1C - add r0, r8 - ldr r1, _0804AB34 @ =SpriteCB_OpponentMonSendOut - str r1, [r0] - b _0804AB46 - .align 2, 0 -_0804AB2C: .4byte gBattlerTarget -_0804AB30: .4byte gSprites -_0804AB34: .4byte SpriteCB_OpponentMonSendOut -_0804AB38: - movs r0, 0x1 - bl GetBattlerAtPosition - ldr r1, _0804AB64 @ =gBattlerTarget - strb r0, [r1] - movs r2, 0x1 - str r2, [sp, 0x4] -_0804AB46: - adds r3, r5, 0 -_0804AB48: - ldr r0, _0804AB68 @ =gSprites - adds r1, r3, r7 - lsls r1, 2 - adds r4, r1, r0 - ldr r5, _0804AB64 @ =gBattlerTarget - ldrb r0, [r5] - strh r0, [r4, 0x3A] - ldr r3, [sp, 0x4] - cmp r3, 0 - bne _0804AB6C - ldr r0, [sp] - bl DestroyTask - b _0804ABB8 - .align 2, 0 -_0804AB64: .4byte gBattlerTarget -_0804AB68: .4byte gSprites -_0804AB6C: - movs r0, 0x22 - strh r0, [r4, 0x2E] - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrb r0, [r5] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x10 - strh r0, [r4, 0x36] - ldr r0, _0804ABC8 @ =0x0000ffd8 - strh r0, [r4, 0x38] - adds r0, r4, 0 - bl InitAnimArcTranslation - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x6] - ldr r1, _0804ABCC @ =gTasks - ldr r2, [sp] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r5] - strh r1, [r0, 0x10] - ldr r1, _0804ABD0 @ =TaskDummy - str r1, [r0] - movs r0, 0x36 - bl PlaySE -_0804ABB8: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804ABC8: .4byte 0x0000ffd8 -_0804ABCC: .4byte gTasks -_0804ABD0: .4byte TaskDummy - thumb_func_end sub_804A9A0 - - thumb_func_start SpriteCB_TestBallThrow -SpriteCB_TestBallThrow: @ 804ABD4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r7, r0, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _0804AC74 - ldrb r6, [r7, 0x6] - ldr r1, _0804AC80 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldrb r5, [r0, 0x10] - ldrb r0, [r0, 0xC] - mov r8, r0 - adds r0, r7, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r2, r7, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r7, 0x24] - ldrh r1, [r7, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r7, 0x20] - ldrh r0, [r7, 0x26] - ldrh r2, [r7, 0x22] - adds r0, r2 - strh r0, [r7, 0x22] - strh r1, [r7, 0x24] - strh r1, [r7, 0x26] - strh r1, [r7, 0x38] - adds r0, r5, 0 - bl GetBankPokeballItemId - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBallId - adds r4, r0, 0 - ldrh r0, [r7, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r7, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - movs r0, 0 - adds r1, r5, 0 - movs r2, 0xE - adds r3, r4, 0 - bl LaunchBallFadeMonTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x2E] - strh r5, [r7, 0x3A] - mov r0, r8 - strh r0, [r7, 0x3C] - adds r0, r6, 0 - bl DestroyTask - ldr r0, _0804AC84 @ =sub_804AC88 - str r0, [r7, 0x1C] -_0804AC74: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804AC80: .4byte gTasks -_0804AC84: .4byte sub_804AC88 - thumb_func_end SpriteCB_TestBallThrow - - thumb_func_start sub_804AC88 -sub_804AC88: @ 804AC88 - ldr r1, _0804AC90 @ =sub_804AC94 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0804AC90: .4byte sub_804AC94 - thumb_func_end sub_804AC88 - - thumb_func_start sub_804AC94 -sub_804AC94: @ 804AC94 - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x38] - adds r0, 0x1 - movs r7, 0 - strh r0, [r6, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0804ACEE - strh r7, [r6, 0x38] - ldr r0, _0804ACF4 @ =sub_804AD00 - str r0, [r6, 0x1C] - ldr r5, _0804ACF8 @ =gBattlerSpriteIds - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804ACFC @ =gSprites - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl AnimateSprite - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r7, [r0, 0x30] -_0804ACEE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804ACF4: .4byte sub_804AD00 -_0804ACF8: .4byte gBattlerSpriteIds -_0804ACFC: .4byte gSprites - thumb_func_end sub_804AC94 - - thumb_func_start sub_804AD00 -sub_804AD00: @ 804AD00 - push {r4-r6,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _0804AD18 - movs r0, 0x35 - bl PlaySE -_0804AD18: - ldr r6, _0804AD64 @ =gSprites - ldr r5, _0804AD68 @ =gBattlerSpriteIds - movs r1, 0x3A - ldrsh r0, [r4, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0804AD70 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r2, 0x3A - ldrsh r0, [r4, r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - movs r0, 0 - strh r0, [r4, 0x38] - ldr r0, _0804AD6C @ =sub_804AD98 - str r0, [r4, 0x1C] - b _0804AD90 - .align 2, 0 -_0804AD64: .4byte gSprites -_0804AD68: .4byte gBattlerSpriteIds -_0804AD6C: .4byte sub_804AD98 -_0804AD70: - ldrh r0, [r1, 0x30] - adds r0, 0x60 - strh r0, [r1, 0x30] - movs r1, 0x3A - ldrsh r0, [r4, r1] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r2, 0x30 - ldrsh r0, [r1, r2] - negs r0, r0 - asrs r0, 8 - strh r0, [r1, 0x26] -_0804AD90: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_804AD00 - - thumb_func_start sub_804AD98 -sub_804AD98: @ 804AD98 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804ADE0 - ldrh r0, [r4, 0x38] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _0804ADE0 - strh r1, [r4, 0x34] - movs r0, 0x20 - strh r0, [r4, 0x36] - strh r1, [r4, 0x38] - movs r0, 0 - movs r1, 0x20 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r0, 0x36 - ldrsh r1, [r4, r0] - movs r0, 0 - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldr r0, _0804ADE8 @ =sub_804ADEC - str r0, [r4, 0x1C] -_0804ADE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804ADE8: .4byte sub_804ADEC - thumb_func_end sub_804AD98 - - thumb_func_start sub_804ADEC -sub_804ADEC: @ 804ADEC - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0 - beq _0804AE02 - cmp r1, 0x1 - beq _0804AE76 - b _0804AEA2 -_0804AE02: - movs r1, 0x38 - ldrsh r0, [r4, r1] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - adds r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - adds r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x3F - ble _0804AEA2 - ldrh r0, [r4, 0x36] - subs r0, 0xA - strh r0, [r4, 0x36] - ldr r1, _0804AE4C @ =0x00000101 - adds r0, r2, r1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - cmp r0, 0x4 - bne _0804AE3E - movs r5, 0x1 -_0804AE3E: - cmp r0, 0x2 - beq _0804AE5E - cmp r0, 0x2 - bgt _0804AE50 - cmp r0, 0x1 - beq _0804AE56 - b _0804AE6E - .align 2, 0 -_0804AE4C: .4byte 0x00000101 -_0804AE50: - cmp r0, 0x3 - beq _0804AE66 - b _0804AE6E -_0804AE56: - movs r0, 0x31 - bl PlaySE - b _0804AEA2 -_0804AE5E: - movs r0, 0x32 - bl PlaySE - b _0804AEA2 -_0804AE66: - movs r0, 0x33 - bl PlaySE - b _0804AEA2 -_0804AE6E: - movs r0, 0x34 - bl PlaySE - b _0804AEA2 -_0804AE76: - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl Cos - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r1, [r4, 0x38] - subs r1, 0x4 - ldrh r2, [r4, 0x34] - lsls r0, r2, 16 - asrs r0, 24 - subs r1, r0 - strh r1, [r4, 0x38] - lsls r1, 16 - cmp r1, 0 - bgt _0804AEA2 - strh r5, [r4, 0x38] - ldr r0, _0804AEC8 @ =0xffffff00 - ands r0, r2 - strh r0, [r4, 0x34] -_0804AEA2: - cmp r5, 0 - beq _0804AEDA - movs r5, 0 - strh r5, [r4, 0x34] - movs r0, 0x40 - movs r1, 0x20 - bl Cos - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - strh r5, [r4, 0x26] - movs r2, 0x3C - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0804AED0 - ldr r0, _0804AECC @ =sub_804B268 - str r0, [r4, 0x1C] - b _0804AEDA - .align 2, 0 -_0804AEC8: .4byte 0xffffff00 -_0804AECC: .4byte sub_804B268 -_0804AED0: - ldr r0, _0804AEE0 @ =sub_804AEE4 - str r0, [r4, 0x1C] - movs r0, 0x1 - strh r0, [r4, 0x36] - strh r5, [r4, 0x38] -_0804AEDA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804AEE0: .4byte sub_804AEE4 - thumb_func_end sub_804ADEC - - thumb_func_start sub_804AEE4 -sub_804AEE4: @ 804AEE4 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _0804AF18 - movs r0, 0 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _0804AF20 @ =sub_804AF24 - str r0, [r4, 0x1C] - movs r0, 0x17 - bl PlaySE -_0804AF18: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804AF20: .4byte sub_804AF24 - thumb_func_end sub_804AEE4 - - thumb_func_start sub_804AF24 -sub_804AF24: @ 804AF24 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - movs r1, 0xFF - ands r1, r0 - cmp r1, 0x4 - bhi _0804B024 - lsls r0, r1, 2 - ldr r1, _0804AF3C @ =_0804AF40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804AF3C: .4byte _0804AF40 - .align 2, 0 -_0804AF40: - .4byte _0804AF54 - .4byte _0804AF86 - .4byte _0804AF54 - .4byte _0804AFDA - .4byte _0804B024 -_0804AF54: - ldrh r0, [r4, 0x36] - ldrh r2, [r4, 0x24] - adds r1, r0, r2 - strh r1, [r4, 0x24] - ldrh r1, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x38] - adds r0, 0x3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x6 - bls _0804B06A - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - movs r0, 0 - strh r0, [r4, 0x38] - b _0804B06A -_0804AF86: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _0804AFCC - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x36] - negs r0, r0 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _0804AFC2 - adds r0, r4, 0 - movs r1, 0x2 - bl ChangeSpriteAffineAnim - b _0804B06A -_0804AFC2: - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnim - b _0804B06A -_0804AFCC: - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strb r1, [r0] - b _0804B06A -_0804AFDA: - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ldrh r2, [r4, 0x34] - adds r0, r2 - strh r0, [r4, 0x34] - lsls r0, 16 - asrs r0, 24 - movs r2, 0x3C - ldrsh r1, [r4, r2] - cmp r0, r1 - bne _0804AFFC - ldr r0, _0804AFF8 @ =sub_804B268 - str r0, [r4, 0x1C] - b _0804B06A - .align 2, 0 -_0804AFF8: .4byte sub_804B268 -_0804AFFC: - cmp r1, 0x4 - bne _0804B010 - cmp r0, 0x3 - bne _0804B010 - ldr r0, _0804B00C @ =sub_804B484 - str r0, [r4, 0x1C] - b _0804B016 - .align 2, 0 -_0804B00C: .4byte sub_804B484 -_0804B010: - ldrh r0, [r4, 0x34] - adds r0, 0x1 - strh r0, [r4, 0x34] -_0804B016: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - b _0804B06A -_0804B024: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1F - bne _0804B06A - movs r0, 0 - strh r0, [r4, 0x38] - ldrh r1, [r4, 0x34] - ldr r0, _0804B058 @ =0xffffff00 - ands r0, r1 - strh r0, [r4, 0x34] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAffineAnim - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0804B05C - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - b _0804B064 - .align 2, 0 -_0804B058: .4byte 0xffffff00 -_0804B05C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0804B064: - movs r0, 0x17 - bl PlaySE -_0804B06A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804AF24 - - thumb_func_start Task_PlayCryWhenReleasedFromBall -Task_PlayCryWhenReleasedFromBall: @ 804B070 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _0804B0A4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - ldrb r7, [r0, 0xC] - ldrb r5, [r0, 0xA] - ldrh r6, [r0, 0x8] - movs r3, 0xE - ldrsh r1, [r0, r3] - lsls r3, r1, 16 - ldrh r1, [r0, 0x10] - orrs r3, r1 - movs r1, 0x26 - ldrsh r0, [r0, r1] - cmp r0, 0x20 - bhi _0804B130 - lsls r0, 2 - ldr r1, _0804B0A8 @ =_0804B0AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804B0A4: .4byte gTasks -_0804B0A8: .4byte _0804B0AC - .align 2, 0 -_0804B0AC: - .4byte _0804B130 - .4byte _0804B14E - .4byte _0804B174 - .4byte _0804B1CE - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B190 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B130 - .4byte _0804B1E0 - .4byte _0804B1F8 - .4byte _0804B220 -_0804B130: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0x18] - movs r3, 0x18 - ldrsh r0, [r1, r3] - cmp r0, 0x2 - bgt _0804B148 - adds r0, r2, 0x1 - strh r0, [r1, 0x18] - b _0804B262 -_0804B148: - adds r0, r7, 0x1 - strh r0, [r1, 0x26] - b _0804B262 -_0804B14E: - adds r0, r3, 0 - bl ShouldPlayNormalPokeCry - cmp r0, 0x1 - bne _0804B166 - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0 - bl PlayCry3 - b _0804B1C6 -_0804B166: - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0xB - bl PlayCry3 - b _0804B1C6 -_0804B174: - bl StopCryAndClearCrySongs - ldr r1, _0804B18C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 - strh r1, [r0, 0x1C] - movs r1, 0x14 - strh r1, [r0, 0x26] - b _0804B262 - .align 2, 0 -_0804B18C: .4byte gTasks -_0804B190: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0x1C] - movs r7, 0x1C - ldrsh r0, [r1, r7] - cmp r0, 0 - bne _0804B232 - adds r0, r3, 0 - bl ShouldPlayNormalPokeCry - cmp r0, 0x1 - bne _0804B1BA - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0x1 - bl PlayCry4 - b _0804B1C6 -_0804B1BA: - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0xC - bl PlayCry4 -_0804B1C6: - adds r0, r4, 0 - bl DestroyTask - b _0804B262 -_0804B1CE: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - movs r1, 0x6 - strh r1, [r0, 0x1C] - movs r1, 0x1E - strh r1, [r0, 0x26] - b _0804B262 -_0804B1E0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0x1C] - movs r3, 0x1C - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0804B232 - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] -_0804B1F8: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - bne _0804B262 - bl StopCryAndClearCrySongs - ldr r0, _0804B21C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x3 - strh r0, [r1, 0x1C] - ldrh r0, [r1, 0x26] - adds r0, 0x1 - strh r0, [r1, 0x26] - b _0804B262 - .align 2, 0 -_0804B21C: .4byte gTasks -_0804B220: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r2 - ldrh r2, [r1, 0x1C] - movs r7, 0x1C - ldrsh r0, [r1, r7] - cmp r0, 0 - beq _0804B238 -_0804B232: - subs r0, r2, 0x1 - strh r0, [r1, 0x1C] - b _0804B262 -_0804B238: - adds r0, r3, 0 - bl ShouldPlayNormalPokeCry - cmp r0, 0x1 - bne _0804B250 - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0 - bl PlayCry4 - b _0804B25C -_0804B250: - lsls r1, r5, 24 - asrs r1, 24 - adds r0, r6, 0 - movs r2, 0xB - bl PlayCry4 -_0804B25C: - adds r0, r4, 0 - bl DestroyTask -_0804B262: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Task_PlayCryWhenReleasedFromBall - - thumb_func_start sub_804B268 -sub_804B268: @ 804B268 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r6, r0, 0 - ldrh r0, [r6, 0x3A] - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r0, r5, 0 - bl GetBankPokeballItemId - lsls r0, 16 - lsrs r0, 16 - bl ItemIdToBallId - adds r4, r0, 0 - ldrh r0, [r6, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - movs r2, 0x1 - movs r3, 0x1C - bl LaunchBallStarsTask - ldrh r1, [r6, 0x3A] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - movs r2, 0xE - adds r3, r4, 0 - bl LaunchBallFadeMonTask - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x2E] - ldr r0, _0804B2FC @ =HandleBallAnimEnd - str r0, [r6, 0x1C] - ldr r0, _0804B300 @ =gMain - ldr r1, _0804B304 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0804B2DA - b _0804B420 -_0804B2DA: - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0804B310 - ldr r1, _0804B308 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0804B30C @ =gEnemyParty - adds r7, r1, r0 - movs r3, 0x19 - mov r9, r3 - b _0804B324 - .align 2, 0 -_0804B2FC: .4byte HandleBallAnimEnd -_0804B300: .4byte gMain -_0804B304: .4byte 0x00000439 -_0804B308: .4byte gBattlerPartyIndexes -_0804B30C: .4byte gEnemyParty -_0804B310: - ldr r1, _0804B388 @ =gBattlerPartyIndexes - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0804B38C @ =gPlayerParty - adds r7, r1, r0 - movs r0, 0xE7 - mov r9, r0 -_0804B324: - adds r0, r7, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - beq _0804B34E - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bne _0804B3A6 -_0804B34E: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0804B3A6 - ldr r0, _0804B390 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804B3A6 - ldr r0, _0804B394 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804B39C - bl IsBGMPlaying - lsls r0, 24 - cmp r0, 0 - beq _0804B3A6 - ldr r0, _0804B398 @ =gMPlayInfo_BGM - bl m4aMPlayStop - b _0804B3A6 - .align 2, 0 -_0804B388: .4byte gBattlerPartyIndexes -_0804B38C: .4byte gPlayerParty -_0804B390: .4byte gBattleSpritesDataPtr -_0804B394: .4byte gBattleTypeFlags -_0804B398: .4byte gMPlayInfo_BGM -_0804B39C: - ldr r0, _0804B3C4 @ =gMPlayInfo_BGM - ldr r1, _0804B3C8 @ =0x0000ffff - movs r2, 0x80 - bl m4aMPlayVolumeControl -_0804B3A6: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0804B3C0 - ldr r0, _0804B3CC @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0804B3D0 -_0804B3C0: - movs r4, 0 - b _0804B3F2 - .align 2, 0 -_0804B3C4: .4byte gMPlayInfo_BGM -_0804B3C8: .4byte 0x0000ffff -_0804B3CC: .4byte gBattleSpritesDataPtr -_0804B3D0: - movs r0, 0 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - beq _0804B3EC - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bne _0804B3F0 -_0804B3EC: - movs r4, 0x1 - b _0804B3F2 -_0804B3F0: - movs r4, 0x2 -_0804B3F2: - ldr r0, _0804B474 @ =Task_PlayCryWhenReleasedFromBall - movs r1, 0x3 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804B478 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - mov r3, r8 - strh r3, [r1, 0x8] - mov r3, r9 - lsls r0, r3, 24 - asrs r0, 24 - strh r0, [r1, 0xA] - strh r4, [r1, 0xC] - lsrs r0, r7, 16 - strh r0, [r1, 0xE] - strh r7, [r1, 0x10] - strh r2, [r1, 0x26] -_0804B420: - ldr r5, _0804B47C @ =gBattlerSpriteIds - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804B480 @ =gSprites - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim - movs r3, 0x3A - ldrsh r0, [r6, r3] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl AnimateSprite - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x80 - lsls r1, 5 - strh r1, [r0, 0x30] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B474: .4byte Task_PlayCryWhenReleasedFromBall -_0804B478: .4byte gTasks -_0804B47C: .4byte gBattlerSpriteIds -_0804B480: .4byte gSprites - thumb_func_end sub_804B268 - - thumb_func_start sub_804B484 -sub_804B484: @ 804B484 - adds r3, r0, 0 - adds r3, 0x2C - ldrb r1, [r3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r3] - ldr r1, _0804B4A0 @ =sub_804B5C8 - str r1, [r0, 0x1C] - movs r1, 0 - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - bx lr - .align 2, 0 -_0804B4A0: .4byte sub_804B5C8 - thumb_func_end sub_804B484 - - thumb_func_start HandleBallAnimEnd -HandleBallAnimEnd: @ 804B4A4 - push {r4-r7,lr} - adds r5, r0, 0 - movs r7, 0 - ldrh r0, [r5, 0x3A] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _0804B508 @ =gSprites - ldr r0, _0804B50C @ =gBattlerSpriteIds - adds r3, r6, r0 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804B4E6 - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_0804B4E6: - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0804B510 - adds r0, r1, 0 - movs r1, 0 - bl StartSpriteAffineAnim - movs r7, 0x1 - b _0804B52C - .align 2, 0 -_0804B508: .4byte gSprites -_0804B50C: .4byte gBattlerSpriteIds -_0804B510: - ldr r2, _0804B5B4 @ =0xfffffee0 - adds r0, r2, 0 - ldrh r2, [r1, 0x30] - adds r0, r2 - strh r0, [r1, 0x30] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 24 - strh r0, [r1, 0x26] -_0804B52C: - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804B5AE - cmp r7, 0 - beq _0804B5AE - ldr r2, _0804B5B8 @ =gSprites - ldr r0, _0804B5BC @ =gBattlerSpriteIds - adds r0, r6, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x26] - ldr r0, _0804B5C0 @ =gDoingBattleAnim - strb r2, [r0] - ldr r4, _0804B5C4 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r0, [r0, 0x4] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r5, 0 - bl FreeSpriteOamMatrix - adds r0, r5, 0 - bl DestroySprite - movs r3, 0 - ldr r0, [r4] - ldr r2, [r0, 0x4] - movs r5, 0x8 - movs r4, 0x3 -_0804B586: - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0804B592 - adds r3, 0x1 -_0804B592: - adds r2, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _0804B586 - cmp r3, 0x4 - bne _0804B5AE - movs r4, 0 -_0804B5A0: - lsls r0, r4, 24 - lsrs r0, 24 - bl FreeBallGfx - adds r4, 0x1 - cmp r4, 0xB - ble _0804B5A0 -_0804B5AE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B5B4: .4byte 0xfffffee0 -_0804B5B8: .4byte gSprites -_0804B5BC: .4byte gBattlerSpriteIds -_0804B5C0: .4byte gDoingBattleAnim -_0804B5C4: .4byte gBattleSpritesDataPtr - thumb_func_end HandleBallAnimEnd - - thumb_func_start sub_804B5C8 -sub_804B5C8: @ 804B5C8 - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x3A] - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r6, 0x36] - adds r0, 0x1 - strh r0, [r6, 0x36] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0x28 - beq _0804B666 - cmp r1, 0x5F - bne _0804B600 - ldr r0, _0804B5F8 @ =gDoingBattleAnim - movs r1, 0 - strb r1, [r0] - bl m4aMPlayAllStop - ldr r0, _0804B5FC @ =0x0000013f - bl PlaySE - b _0804B666 - .align 2, 0 -_0804B5F8: .4byte gDoingBattleAnim -_0804B5FC: .4byte 0x0000013f -_0804B600: - ldr r0, _0804B66C @ =0x0000013b - cmp r1, r0 - bne _0804B666 - ldr r5, _0804B670 @ =gSprites - ldr r4, _0804B674 @ =gBattlerSpriteIds - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - movs r1, 0x3A - ldrsh r0, [r6, r1] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - adds r0, r6, 0 - bl DestroySpriteAndFreeResources - ldr r0, _0804B678 @ =gMain - ldr r1, _0804B67C @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804B666 - ldr r0, _0804B680 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r7, 1 - adds r1, r7 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_0804B666: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B66C: .4byte 0x0000013b -_0804B670: .4byte gSprites -_0804B674: .4byte gBattlerSpriteIds -_0804B678: .4byte gMain -_0804B67C: .4byte 0x00000439 -_0804B680: .4byte gBattleSpritesDataPtr - thumb_func_end sub_804B5C8 - - thumb_func_start SpriteCB_PlayerMonSendOut_1 -SpriteCB_PlayerMonSendOut_1: @ 804B684 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x19 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x3A] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x18 - strh r0, [r4, 0x36] - ldr r0, _0804B6CC @ =0x0000ffe2 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3A] - strh r0, [r4, 0x6] - adds r0, r4, 0 - bl InitAnimArcTranslation - ldr r0, _0804B6D0 @ =SpriteCB_PlayerMonSendOut_2 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804B6CC: .4byte 0x0000ffe2 -_0804B6D0: .4byte SpriteCB_PlayerMonSendOut_2 - thumb_func_end SpriteCB_PlayerMonSendOut_1 - - thumb_func_start SpriteCB_PlayerMonSendOut_2 -SpriteCB_PlayerMonSendOut_2: @ 804B6D4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - ldrh r0, [r5, 0x3C] - movs r1, 0xFF - mov r8, r1 - lsrs r0, 8 - subs r0, 0x23 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2C - bhi _0804B7C8 - ldrh r1, [r5, 0x6] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - bne _0804B736 - ldrh r0, [r5, 0x30] - movs r1, 0x1 - adds r6, r1, 0 - ands r6, r0 - ldrh r0, [r5, 0x32] - adds r7, r1, 0 - ands r7, r0 - movs r2, 0x30 - ldrsh r0, [r5, r2] - movs r1, 0x3 - bl __divsi3 - movs r1, 0x2 - negs r1, r1 - adds r4, r1, 0 - ands r0, r4 - orrs r6, r0 - strh r6, [r5, 0x30] - movs r2, 0x32 - ldrsh r0, [r5, r2] - movs r1, 0x3 - bl __divsi3 - ands r0, r4 - orrs r7, r0 - strh r7, [r5, 0x32] - adds r0, r5, 0 - movs r1, 0x4 - bl StartSpriteAffineAnim -_0804B736: - ldrh r4, [r5, 0x2E] - adds r0, r5, 0 - bl AnimTranslateLinear - movs r1, 0x3A - ldrsh r0, [r5, r1] - movs r1, 0x3 - bl __divsi3 - adds r1, r0, 0 - ldrh r0, [r5, 0x3C] - adds r0, r1 - strh r0, [r5, 0x3C] - lsls r0, 16 - asrs r0, 24 - mov r2, r8 - ands r0, r2 - movs r2, 0x38 - ldrsh r1, [r5, r2] - bl Sin - ldrh r1, [r5, 0x26] - adds r0, r1 - strh r0, [r5, 0x26] - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ldrh r1, [r5, 0x6] - adds r0, r1 - strh r0, [r5, 0x6] - lsls r0, 16 - lsrs r0, 24 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - beq _0804B786 - strh r4, [r5, 0x2E] - b _0804B78E -_0804B786: - lsls r0, r4, 16 - asrs r0, 16 - subs r0, 0x1 - strh r0, [r5, 0x2E] -_0804B78E: - ldrh r0, [r5, 0x3C] - lsrs r0, 8 - cmp r0, 0x4F - ble _0804B834 - ldrh r0, [r5, 0x30] - movs r1, 0x1 - adds r6, r1, 0 - ands r6, r0 - ldrh r0, [r5, 0x32] - adds r7, r1, 0 - ands r7, r0 - movs r2, 0x30 - ldrsh r1, [r5, r2] - lsls r0, r1, 1 - adds r0, r1 - movs r1, 0x2 - negs r1, r1 - adds r2, r1, 0 - ands r0, r2 - orrs r0, r6 - strh r0, [r5, 0x30] - movs r0, 0x32 - ldrsh r1, [r5, r0] - lsls r0, r1, 1 - adds r0, r1 - ands r0, r2 - orrs r0, r7 - strh r0, [r5, 0x32] - b _0804B834 -_0804B7C8: - adds r0, r5, 0 - bl TranslateAnimHorizontalArc - lsls r0, 24 - cmp r0, 0 - beq _0804B834 - ldrh r0, [r5, 0x24] - ldrh r1, [r5, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r5, 0x20] - ldrh r0, [r5, 0x26] - ldrh r2, [r5, 0x22] - adds r0, r2 - strh r0, [r5, 0x22] - strh r1, [r5, 0x26] - strh r1, [r5, 0x24] - ldrb r0, [r5, 0x6] - strh r0, [r5, 0x3A] - strh r1, [r5, 0x2E] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0804B828 - ldr r0, _0804B820 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804B828 - movs r0, 0x3A - ldrsh r4, [r5, r0] - movs r0, 0x2 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0804B828 - ldr r0, _0804B824 @ =SpriteCB_ReleaseMon2FromBall - b _0804B82A - .align 2, 0 -_0804B820: .4byte gBattleSpritesDataPtr -_0804B824: .4byte SpriteCB_ReleaseMon2FromBall -_0804B828: - ldr r0, _0804B840 @ =sub_804B268 -_0804B82A: - str r0, [r5, 0x1C] - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAffineAnim -_0804B834: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B840: .4byte sub_804B268 - thumb_func_end SpriteCB_PlayerMonSendOut_2 - - thumb_func_start SpriteCB_ReleaseMon2FromBall -SpriteCB_ReleaseMon2FromBall: @ 804B844 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r1, r0, 0x1 - strh r1, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x18 - ble _0804B85E - movs r0, 0 - strh r0, [r2, 0x2E] - ldr r0, _0804B864 @ =sub_804B268 - str r0, [r2, 0x1C] -_0804B85E: - pop {r0} - bx r0 - .align 2, 0 -_0804B864: .4byte sub_804B268 - thumb_func_end SpriteCB_ReleaseMon2FromBall - - thumb_func_start SpriteCB_OpponentMonSendOut -SpriteCB_OpponentMonSendOut: @ 804B868 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _0804B8BC - movs r0, 0 - strh r0, [r5, 0x2E] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0804B8B8 - ldr r0, _0804B8B0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - ldrb r1, [r0, 0x9] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804B8B8 - movs r0, 0x3A - ldrsh r4, [r5, r0] - movs r0, 0x3 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - bne _0804B8B8 - ldr r0, _0804B8B4 @ =SpriteCB_ReleaseMon2FromBall - b _0804B8BA - .align 2, 0 -_0804B8B0: .4byte gBattleSpritesDataPtr -_0804B8B4: .4byte SpriteCB_ReleaseMon2FromBall -_0804B8B8: - ldr r0, _0804B8C4 @ =sub_804B268 -_0804B8BA: - str r0, [r5, 0x1C] -_0804B8BC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804B8C4: .4byte sub_804B268 - thumb_func_end SpriteCB_OpponentMonSendOut - - thumb_func_start LaunchBallStarsTaskForPokeball -LaunchBallStarsTaskForPokeball: @ 804B8C8 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - movs r4, 0 - str r4, [sp] - bl LaunchBallStarsTask - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end LaunchBallStarsTaskForPokeball - - thumb_func_start LaunchBallFadeMonTaskForPokeball -LaunchBallFadeMonTaskForPokeball: @ 804B8F0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - bl LaunchBallFadeMonTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end LaunchBallFadeMonTaskForPokeball - - thumb_func_start CreatePokeballSpriteToReleaseMon -CreatePokeballSpriteToReleaseMon: @ 804B908 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r5, r0, 0 - mov r9, r2 - mov r10, r3 - ldr r6, [sp, 0x24] - ldr r4, [sp, 0x28] - ldr r0, [sp, 0x2C] - lsls r5, 24 - lsrs r5, 24 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp] - mov r1, r9 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - mov r2, r10 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0804B9D4 @ =gUnknown_826056C - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _0804B9D8 @ =gUnknown_82605CC - bl LoadCompressedSpritePaletteUsingHeap - ldr r0, _0804B9DC @ =gUnknown_82606F4 - mov r1, r9 - mov r2, r10 - adds r3, r4, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0804B9E0 @ =gSprites - mov r8, r3 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - adds r1, r4, r3 - strh r5, [r1, 0x2E] - lsls r2, r5, 4 - adds r2, r5 - lsls r2, 2 - add r2, r8 - ldrh r0, [r2, 0x20] - strh r0, [r1, 0x38] - ldrh r0, [r2, 0x22] - strh r0, [r1, 0x3A] - mov r0, r9 - strh r0, [r2, 0x20] - mov r3, r10 - strh r3, [r2, 0x22] - strh r7, [r1, 0x30] - mov r0, sp - ldrh r0, [r0] - strh r0, [r1, 0x32] - mov r3, sp - ldrh r3, [r3, 0x30] - strh r3, [r1, 0x34] - ldr r3, [sp, 0x30] - lsrs r0, r3, 16 - strh r0, [r1, 0x36] - movs r0, 0x3 - ands r6, r0 - lsls r6, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r6 - strb r0, [r1, 0x5] - movs r0, 0x1C - add r8, r0 - add r4, r8 - ldr r0, _0804B9E4 @ =sub_804B9E8 - str r0, [r4] - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804B9D4: .4byte gUnknown_826056C -_0804B9D8: .4byte gUnknown_82605CC -_0804B9DC: .4byte gUnknown_82606F4 -_0804B9E0: .4byte gSprites -_0804B9E4: .4byte sub_804B9E8 - thumb_func_end CreatePokeballSpriteToReleaseMon - - thumb_func_start sub_804B9E8 -sub_804B9E8: @ 804B9E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldrh r1, [r6, 0x30] - movs r2, 0x30 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _0804BA94 - ldrh r0, [r6, 0x2E] - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r6, 0x32] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrh r4, [r6, 0x34] - ldrh r0, [r6, 0x36] - lsls r0, 16 - orrs r4, r0 - adds r0, r6, 0 - adds r0, 0x43 - ldrb r0, [r0] - cmp r0, 0 - beq _0804BA22 - subs r0, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - b _0804BA24 -_0804BA22: - movs r5, 0 -_0804BA24: - adds r0, r6, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrh r0, [r6, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r6, 0x5] - lsls r2, 28 - lsrs r2, 30 - adds r3, r5, 0 - bl LaunchBallStarsTaskForPokeball - movs r0, 0x1 - mov r1, r8 - adds r2, r4, 0 - bl LaunchBallFadeMonTaskForPokeball - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r6, 0x30] - ldr r0, _0804BA8C @ =sub_804BAA4 - str r0, [r6, 0x1C] - ldr r0, _0804BA90 @ =gSprites - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r4, r0 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - adds r0, r4, 0 - bl AnimateSprite - movs r0, 0x80 - lsls r0, 5 - strh r0, [r4, 0x30] - strh r5, [r6, 0x3C] - b _0804BA98 - .align 2, 0 -_0804BA8C: .4byte sub_804BAA4 -_0804BA90: .4byte gSprites -_0804BA94: - subs r0, r1, 0x1 - strh r0, [r6, 0x30] -_0804BA98: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804B9E8 - - thumb_func_start sub_804BAA4 -sub_804BAA4: @ 804BAA4 - push {r4-r7,lr} - adds r4, r0, 0 - movs r0, 0 - mov r12, r0 - movs r6, 0 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804BACE - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_0804BACE: - ldr r0, _0804BB5C @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r5, r1, r0 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0804BAF0 - adds r0, r5, 0 - movs r1, 0 - bl StartSpriteAffineAnim - movs r1, 0x1 - mov r12, r1 -_0804BAF0: - movs r2, 0x38 - ldrsh r0, [r4, r2] - movs r7, 0x20 - ldrsh r1, [r4, r7] - subs r0, r1 - movs r1, 0x3C - ldrsh r2, [r4, r1] - muls r0, r2 - cmp r0, 0 - bge _0804BB06 - adds r0, 0x7F -_0804BB06: - asrs r0, 7 - ldrh r7, [r4, 0x20] - adds r0, r7 - lsls r0, 16 - lsrs r3, r0, 16 - movs r1, 0x3A - ldrsh r0, [r4, r1] - movs r7, 0x22 - ldrsh r1, [r4, r7] - subs r0, r1 - muls r0, r2 - cmp r0, 0 - bge _0804BB22 - adds r0, 0x7F -_0804BB22: - asrs r0, 7 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r3, [r5, 0x20] - strh r0, [r5, 0x22] - ldrh r2, [r4, 0x3C] - movs r7, 0x3C - ldrsh r0, [r4, r7] - cmp r0, 0x7F - bgt _0804BB64 - ldr r1, _0804BB60 @ =gSineTable - lsls r0, r2, 24 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0804BB48 - adds r0, 0x7 -_0804BB48: - asrs r0, 3 - negs r0, r0 - lsls r0, 16 - lsrs r0, 16 - adds r1, r2, 0x4 - strh r1, [r4, 0x3C] - strh r0, [r5, 0x24] - strh r0, [r5, 0x26] - b _0804BB72 - .align 2, 0 -_0804BB5C: .4byte gSprites -_0804BB60: .4byte gSineTable -_0804BB64: - ldrh r0, [r4, 0x38] - strh r0, [r5, 0x20] - ldrh r0, [r4, 0x3A] - strh r0, [r5, 0x22] - strh r6, [r5, 0x24] - strh r6, [r5, 0x26] - movs r6, 0x1 -_0804BB72: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804BB90 - mov r2, r12 - cmp r2, 0 - beq _0804BB90 - cmp r6, 0 - beq _0804BB90 - adds r0, r4, 0 - bl DestroySpriteAndFreeResources -_0804BB90: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804BAA4 - - thumb_func_start CreateTradePokeballSprite -CreateTradePokeballSprite: @ 804BB98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r0 - adds r6, r2, 0 - mov r8, r3 - ldr r5, [sp, 0x20] - ldr r4, [sp, 0x24] - ldr r0, [sp, 0x28] - mov r9, r0 - mov r0, r10 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r6, 24 - lsrs r6, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _0804BC3C @ =gUnknown_826056C - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _0804BC40 @ =gUnknown_82605CC - bl LoadCompressedSpritePaletteUsingHeap - ldr r0, _0804BC44 @ =gUnknown_82606F4 - adds r1, r6, 0 - mov r2, r8 - adds r3, r4, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r6, _0804BC48 @ =gSprites - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r2, r3, r6 - mov r1, r10 - strh r1, [r2, 0x2E] - mov r4, r9 - strh r4, [r2, 0x30] - strh r7, [r2, 0x32] - mov r1, sp - ldrh r1, [r1, 0x2C] - strh r1, [r2, 0x34] - ldr r4, [sp, 0x2C] - lsrs r1, r4, 16 - strh r1, [r2, 0x36] - movs r1, 0x3 - ands r5, r1 - lsls r5, 2 - ldrb r4, [r2, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r4 - orrs r1, r5 - strb r1, [r2, 0x5] - adds r6, 0x1C - adds r3, r6 - ldr r1, _0804BC4C @ =sub_804BC50 - str r1, [r3] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804BC3C: .4byte gUnknown_826056C -_0804BC40: .4byte gUnknown_82605CC -_0804BC44: .4byte gUnknown_82606F4 -_0804BC48: .4byte gSprites -_0804BC4C: .4byte sub_804BC50 - thumb_func_end CreateTradePokeballSprite - - thumb_func_start sub_804BC50 -sub_804BC50: @ 804BC50 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0804BCE8 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r7, r0, 24 - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldrh r5, [r4, 0x34] - ldrh r0, [r4, 0x36] - lsls r0, 16 - orrs r5, r0 - adds r0, r4, 0 - adds r0, 0x43 - ldrb r0, [r0] - cmp r0, 0 - beq _0804BC8A - subs r0, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - b _0804BC8C -_0804BC8A: - movs r6, 0 -_0804BC8C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrh r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x22] - subs r1, 0x5 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r4, 0x5] - lsls r2, 28 - lsrs r2, 30 - adds r3, r6, 0 - bl LaunchBallStarsTaskForPokeball - movs r0, 0x1 - mov r1, r8 - adds r2, r5, 0 - bl LaunchBallFadeMonTaskForPokeball - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - strh r0, [r4, 0x30] - ldr r0, _0804BCE0 @ =sub_804BCF8 - str r0, [r4, 0x1C] - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - ldr r0, _0804BCE4 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - adds r0, r4, 0 - bl AnimateSprite - strh r5, [r4, 0x30] - b _0804BCEC - .align 2, 0 -_0804BCE0: .4byte sub_804BCF8 -_0804BCE4: .4byte gSprites -_0804BCE8: - subs r0, r1, 0x1 - strh r0, [r4, 0x30] -_0804BCEC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804BC50 - - thumb_func_start sub_804BCF8 -sub_804BCF8: @ 804BCF8 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x38] - adds r0, 0x1 - strh r0, [r5, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - bne _0804BD10 - movs r0, 0x35 - bl PlaySE -_0804BD10: - ldrh r1, [r5, 0x2E] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0804BD4C @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _0804BD54 - adds r0, r5, 0 - movs r1, 0x2 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - strh r0, [r5, 0x38] - ldr r0, _0804BD50 @ =sub_804BD6C - str r0, [r5, 0x1C] - b _0804BD64 - .align 2, 0 -_0804BD4C: .4byte gSprites -_0804BD50: .4byte sub_804BD6C -_0804BD54: - ldrh r0, [r4, 0x30] - adds r0, 0x60 - strh r0, [r4, 0x30] - movs r1, 0x30 - ldrsh r0, [r4, r1] - negs r0, r0 - asrs r0, 8 - strh r0, [r4, 0x26] -_0804BD64: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804BCF8 - - thumb_func_start sub_804BD6C -sub_804BD6C: @ 804BD6C - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804BD80 - ldr r0, _0804BD84 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_0804BD80: - pop {r0} - bx r0 - .align 2, 0 -_0804BD84: .4byte SpriteCallbackDummy - thumb_func_end sub_804BD6C - - thumb_func_start DestroySpriteAndFreeResources2 -DestroySpriteAndFreeResources2: @ 804BD88 - push {lr} - bl DestroySpriteAndFreeResources - pop {r0} - bx r0 - thumb_func_end DestroySpriteAndFreeResources2 - - thumb_func_start sub_804BD94 -sub_804BD94: @ 804BD94 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _0804BE14 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r6, _0804BE18 @ =gSprites - adds r4, r0, r6 - movs r1, 0 - movs r0, 0x5 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x30] - movs r0, 0x73 - strh r0, [r4, 0x24] - strh r1, [r4, 0x26] - ldr r0, _0804BE1C @ =sub_804BE48 - str r0, [r4, 0x1C] - adds r0, r5, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0804BDE2 - ldrh r0, [r4, 0x2E] - negs r0, r0 - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x30] - negs r0, r0 - strh r0, [r4, 0x30] - ldrh r0, [r4, 0x24] - negs r0, r0 - strh r0, [r4, 0x24] - ldrh r0, [r4, 0x26] - negs r0, r0 - strh r0, [r4, 0x26] -_0804BDE2: - movs r0, 0x38 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r6, 0 - adds r1, 0x1C - adds r1, r0, r1 - adds r0, r6 - ldr r1, [r1] - bl _call_via_r1 - adds r0, r5, 0 - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0804BE0C - ldr r0, _0804BE20 @ =sub_804BE24 - str r0, [r4, 0x1C] -_0804BE0C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804BE14: .4byte gHealthboxSpriteIds -_0804BE18: .4byte gSprites -_0804BE1C: .4byte sub_804BE48 -_0804BE20: .4byte sub_804BE24 - thumb_func_end sub_804BD94 - - thumb_func_start sub_804BE24 -sub_804BE24: @ 804BE24 - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _0804BE3E - movs r0, 0 - strh r0, [r1, 0x30] - ldr r0, _0804BE44 @ =sub_804BE48 - str r0, [r1, 0x1C] -_0804BE3E: - pop {r0} - bx r0 - .align 2, 0 -_0804BE44: .4byte sub_804BE48 - thumb_func_end sub_804BE24 - - thumb_func_start sub_804BE48 -sub_804BE48: @ 804BE48 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x2E] - subs r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x26] - ldrh r1, [r2, 0x30] - subs r0, r1 - strh r0, [r2, 0x26] - ldr r0, [r2, 0x24] - cmp r0, 0 - bne _0804BE66 - ldr r0, _0804BE6C @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_0804BE66: - pop {r0} - bx r0 - .align 2, 0 -_0804BE6C: .4byte SpriteCallbackDummy - thumb_func_end sub_804BE48 - - thumb_func_start DoHitAnimHealthboxEffect -DoHitAnimHealthboxEffect: @ 804BE70 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0804BEA8 @ =SpriteCB_HitAnimHealthoxEffect - adds r0, r5, 0 - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0804BEAC @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r3, r1, r2 - movs r0, 0x1 - strh r0, [r3, 0x2E] - ldr r0, _0804BEB0 @ =gHealthboxSpriteIds - adds r4, r0 - ldrb r0, [r4] - strh r0, [r3, 0x30] - adds r2, 0x1C - adds r1, r2 - str r5, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804BEA8: .4byte SpriteCB_HitAnimHealthoxEffect -_0804BEAC: .4byte gSprites -_0804BEB0: .4byte gHealthboxSpriteIds - thumb_func_end DoHitAnimHealthboxEffect - - thumb_func_start SpriteCB_HitAnimHealthoxEffect -SpriteCB_HitAnimHealthoxEffect: @ 804BEB4 - push {lr} - adds r3, r0, 0 - ldrh r1, [r3, 0x30] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0804BEF0 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldrh r0, [r3, 0x2E] - movs r2, 0 - strh r0, [r1, 0x26] - ldrh r0, [r3, 0x2E] - negs r0, r0 - strh r0, [r3, 0x2E] - ldrh r0, [r3, 0x32] - adds r0, 0x1 - strh r0, [r3, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _0804BEEC - strh r2, [r1, 0x24] - strh r2, [r1, 0x26] - adds r0, r3, 0 - bl DestroySprite -_0804BEEC: - pop {r0} - bx r0 - .align 2, 0 -_0804BEF0: .4byte gSprites - thumb_func_end SpriteCB_HitAnimHealthoxEffect - - thumb_func_start LoadBallGfx -LoadBallGfx: @ 804BEF4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0804BF50 @ =gUnknown_826056C - lsls r6, r4, 3 - adds r5, r6, r0 - ldrh r0, [r5, 0x6] - bl GetSpriteTileStartByTag - lsls r0, 16 - ldr r1, _0804BF54 @ =0xffff0000 - cmp r0, r1 - bne _0804BF1C - adds r0, r5, 0 - bl LoadCompressedSpriteSheetUsingHeap - ldr r0, _0804BF58 @ =gUnknown_82605CC - adds r0, r6, r0 - bl LoadCompressedSpritePaletteUsingHeap -_0804BF1C: - cmp r4, 0x6 - beq _0804BF48 - cmp r4, 0x6 - blt _0804BF2C - cmp r4, 0xB - bgt _0804BF2C - cmp r4, 0xA - bge _0804BF48 -_0804BF2C: - ldr r1, _0804BF50 @ =gUnknown_826056C - lsls r0, r4, 3 - adds r0, r1 - ldrh r0, [r0, 0x6] - bl GetSpriteTileStartByTag - adds r1, r0, 0 - lsls r1, 16 - ldr r0, _0804BF5C @ =gFile_graphics_interface_ball_Open_sheet - lsrs r1, 11 - ldr r2, _0804BF60 @ =0x06010100 - adds r1, r2 - bl LZDecompressVram -_0804BF48: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804BF50: .4byte gUnknown_826056C -_0804BF54: .4byte 0xffff0000 -_0804BF58: .4byte gUnknown_82605CC -_0804BF5C: .4byte gFile_graphics_interface_ball_Open_sheet -_0804BF60: .4byte 0x06010100 - thumb_func_end LoadBallGfx - - thumb_func_start FreeBallGfx -FreeBallGfx: @ 804BF64 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - ldr r0, _0804BF88 @ =gUnknown_826056C - lsrs r4, 21 - adds r0, r4, r0 - ldrh r0, [r0, 0x6] - bl FreeSpriteTilesByTag - ldr r0, _0804BF8C @ =gUnknown_82605CC - adds r4, r0 - ldrh r0, [r4, 0x4] - bl FreeSpritePaletteByTag - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804BF88: .4byte gUnknown_826056C -_0804BF8C: .4byte gUnknown_82605CC - thumb_func_end FreeBallGfx - - thumb_func_start GetBankPokeballItemId -GetBankPokeballItemId: @ 804BF90 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0804BFBC - ldr r1, _0804BFB4 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804BFB8 @ =gEnemyParty - b _0804BFCA - .align 2, 0 -_0804BFB4: .4byte gBattlerPartyIndexes -_0804BFB8: .4byte gEnemyParty -_0804BFBC: - ldr r1, _0804BFDC @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0804BFE0 @ =gPlayerParty -_0804BFCA: - adds r0, r1 - movs r1, 0x26 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0804BFDC: .4byte gBattlerPartyIndexes -_0804BFE0: .4byte gPlayerParty - thumb_func_end GetBankPokeballItemId - - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokeball.h b/include/pokeball.h index 884ded22e..263dc8742 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -24,6 +24,7 @@ enum #define POKEBALL_OPPONENT_SENDOUT 0xFE u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); +//void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species) void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 CreateTradePokeballSprite(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); @@ -33,4 +34,7 @@ void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); void sub_804BD94(u8 battler); +//temp +void SpriteCB_TestBallThrow(struct Sprite *sprite); + #endif // GUARD_POKEBALL_H diff --git a/include/task.h b/include/task.h index 834bb5655..785dbe6d4 100644 --- a/include/task.h +++ b/include/task.h @@ -10,13 +10,13 @@ typedef void (*TaskFunc)(u8 taskId); struct Task { - TaskFunc func; - bool8 isActive; - u8 prev; - u8 next; - u8 priority; - s16 data[16]; -}; + /*0x00*/ TaskFunc func; + /*0x04*/ bool8 isActive; + /*0x05*/ u8 prev; + /*0x06*/ u8 next; + /*0x07*/ u8 priority; + /*0x08*/ s16 data[16]; //8, a, c, e, 10, 12, 14, 16, 18, 1a, 1c, 1e, 20, 22, 24, 26 +}; /*size = 0x28*/ extern struct Task gTasks[]; diff --git a/ld_script.txt b/ld_script.txt index cf7005555..c5dfe1797 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -83,7 +83,7 @@ SECTIONS { src/daycare.o(.text); asm/battle_interface.o(.text); asm/smokescreen.o(.text); - asm/pokeball.o(.text); + src/pokeball.o(.text); src/load_save.o(.text); src/trade.o(.text); src/trade_scene.o(.text); diff --git a/src/pokeball.c b/src/pokeball.c index e9d50599b..cbba77bb2 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -1,13 +1,1301 @@ #include "global.h" -#include "pokeball.h" #include "battle.h" +#include "battle_anim.h" +#include "decompress.h" +#include "graphics.h" +#include "main.h" +#include "m4a.h" +#include "pokeball.h" +#include "pokemon.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" +#include "util.h" +#include "link.h" +#include "battle_gfx_sfx_util.h" +#include "constants/songs.h" +#include "constants/species.h" + +#define tFrames data[0] +#define tPan data[1] +#define tThrowId data[2] +#define tBattler data[3] +#define tOpponentBattler data[4] + +#define sBattler data[6] + +// Function Declarations +static void Task_DoPokeballSendOutAnim(u8 taskId); +//static void SpriteCB_TestBallThrow(struct Sprite *sprite); +static void sub_804AC88(struct Sprite *sprite); +static void sub_804AC94(struct Sprite *sprite); +static void sub_804AD00(struct Sprite *sprite); +static void sub_804AD98(struct Sprite *sprite); +static void sub_804ADEC(struct Sprite *sprite); +static void sub_804AEE4(struct Sprite *sprite); +static void sub_804AF24(struct Sprite *sprite); +static void Task_PlayCryWhenReleasedFromBall(u8 taskId); +static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite); +static void sub_804B484(struct Sprite *sprite); +static void HandleBallAnimEnd(struct Sprite *sprite); +static void sub_804B5C8(struct Sprite *sprite); +static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite); +static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite); +static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite); +static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite); +static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d); +static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2); +static void sub_804B9E8(struct Sprite *sprite); +static void sub_804BAA4(struct Sprite *sprite); +static void sub_804BC50(struct Sprite *sprite); +static void sub_804BCF8(struct Sprite *sprite); +static void sub_804BD6C(struct Sprite *sprite); +static void DestroySpriteAndFreeResources2(struct Sprite *sprite); +static void sub_804BE24(struct Sprite *sprite); +static void sub_804BE48(struct Sprite *sprite); +static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite); +static u16 GetBattlerPokeballItemId(u8 battlerId); + +// Data +extern const struct SpriteTemplate gUnknown_82606F4[]; + +extern const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT]; +extern const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT]; + +// Functions +u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) +{ + u8 taskId; + + gDoingBattleAnim = TRUE; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = 1; + taskId = CreateTask(Task_DoPokeballSendOutAnim, 5); + gTasks[taskId].tPan = pan; + gTasks[taskId].tThrowId = kindOfThrow; + gTasks[taskId].tBattler = gActiveBattler; + return 0; +} + +#ifdef NONMATCHING +static void Task_DoPokeballSendOutAnim(u8 taskId) +{ + u16 throwCaseId; + u8 battlerId; + u16 itemId, ballId; + u8 ballSpriteId; + bool8 notSendOut = FALSE; + u8 gender; + + if (gTasks[taskId].tFrames == 0) + { + gTasks[taskId].tFrames++; + return; + } + + throwCaseId = gTasks[taskId].tThrowId; + battlerId = gTasks[taskId].tBattler; + + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + itemId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_POKEBALL); + else + itemId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_POKEBALL); + + ballId = ItemIdToBallId(itemId); + LoadBallGfx(ballId); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + gender = gLinkPlayers[GetBattlerMultiplayerId(battlerId)].gender; + else + gender = gSaveBlock2Ptr->playerGender; + + ballSpriteId = CreateSprite(&gUnknown_82606F4[ballId], 32, 80, 29); + gSprites[ballSpriteId].data[0] = 0x80; + gSprites[ballSpriteId].data[1] = 0; + gSprites[ballSpriteId].data[7] = throwCaseId; + + switch (throwCaseId) + { + case POKEBALL_PLAYER_SENDOUT: + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + gSprites[ballSpriteId].pos1.x = 32; + gSprites[ballSpriteId].pos1.y = 64; + } + else + { + gender == gender; + gSprites[ballSpriteId].pos1.x = 48; + gSprites[ballSpriteId].pos1.y = 70; + } + + gBattlerTarget = battlerId; + gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1; + break; + case POKEBALL_OPPONENT_SENDOUT: + gSprites[ballSpriteId].pos1.x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X); + gSprites[ballSpriteId].pos1.y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 24; + gBattlerTarget = battlerId; + gSprites[ballSpriteId].data[0] = 0; + gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut; + break; + default: + gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + notSendOut = TRUE; + break; + } + gSprites[ballSpriteId].sBattler = gBattlerTarget; + if (!notSendOut) + { + DestroyTask(taskId); + return; + } -u8 DoPokeballSendOutAnimation(u16 a0, u8 a1) + // this will perform an unused ball throw animation + gSprites[ballSpriteId].data[0] = 0x22; + gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X); + gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16; + gSprites[ballSpriteId].data[5] = -40; + InitAnimArcTranslation(&gSprites[ballSpriteId]); + gSprites[ballSpriteId].oam.affineParam = taskId; + gTasks[taskId].tOpponentBattler = gBattlerTarget; + gTasks[taskId].func = TaskDummy; + PlaySE(SE_NAGERU); +} +#else +NAKED +static void Task_DoPokeballSendOutAnim(u8 taskId) { - gDoingBattleAnim = 1; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = TRUE; - CreateTask(sub_804A9A0, 5); + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r1, _0804A9D4 @ =gTasks\n" + "\tldr r2, [sp]\n" + "\tlsls r0, r2, 2\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tadds r1, r0, r1\n" + "\tldrh r2, [r1, 0x8]\n" + "\tmovs r3, 0x8\n" + "\tldrsh r0, [r1, r3]\n" + "\tcmp r0, 0\n" + "\tbne _0804A9D8\n" + "\tadds r0, r2, 0x1\n" + "\tstrh r0, [r1, 0x8]\n" + "\tb _0804ABB8\n" + "\t.align 2, 0\n" + "_0804A9D4: .4byte gTasks\n" + "_0804A9D8:\n" + "\tldrh r0, [r1, 0xC]\n" + "\tmov r9, r0\n" + "\tldrb r6, [r1, 0xE]\n" + "\tadds r0, r6, 0\n" + "\tbl GetBattlerSide\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0804AA04\n" + "\tldr r1, _0804A9FC @ =gBattlerPartyIndexes\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tmovs r0, 0x64\n" + "\tmuls r0, r1\n" + "\tldr r1, _0804AA00 @ =gEnemyParty\n" + "\tb _0804AA12\n" + "\t.align 2, 0\n" + "_0804A9FC: .4byte gBattlerPartyIndexes\n" + "_0804AA00: .4byte gEnemyParty\n" + "_0804AA04:\n" + "\tldr r1, _0804AA50 @ =gBattlerPartyIndexes\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tmovs r0, 0x64\n" + "\tmuls r0, r1\n" + "\tldr r1, _0804AA54 @ =gPlayerParty\n" + "_0804AA12:\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x26\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl ItemIdToBallId\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadds r0, r5, 0\n" + "\tbl LoadBallGfx\n" + "\tldr r0, _0804AA58 @ =gBattleTypeFlags\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0804AA60\n" + "\tldr r4, _0804AA5C @ =gLinkPlayers\n" + "\tadds r0, r6, 0\n" + "\tbl GetBattlerMultiplayerId\n" + "\tlsls r1, r0, 3\n" + "\tsubs r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r4\n" + "\tldrb r1, [r1, 0x13]\n" + "\tmov r10, r1\n" + "\tb _0804AA68\n" + "\t.align 2, 0\n" + "_0804AA50: .4byte gBattlerPartyIndexes\n" + "_0804AA54: .4byte gPlayerParty\n" + "_0804AA58: .4byte gBattleTypeFlags\n" + "_0804AA5C: .4byte gLinkPlayers\n" + "_0804AA60:\n" + "\tldr r0, _0804AAB8 @ =gSaveBlock2Ptr\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x8]\n" + "\tmov r10, r0\n" + "_0804AA68:\n" + "\tlsls r0, r5, 1\n" + "\tadds r0, r5\n" + "\tlsls r0, 3\n" + "\tldr r1, _0804AABC @ =gUnknown_82606F4\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x20\n" + "\tmovs r2, 0x50\n" + "\tmovs r3, 0x1D\n" + "\tbl CreateSprite\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tlsls r5, r7, 4\n" + "\tadds r0, r5, r7\n" + "\tlsls r0, 2\n" + "\tmov r8, r0\n" + "\tldr r4, _0804AAC0 @ =gSprites\n" + "\tadd r4, r8\n" + "\tmovs r0, 0x80\n" + "\tstrh r0, [r4, 0x2E]\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r4, 0x30]\n" + "\tmov r2, r9\n" + "\tstrh r2, [r4, 0x3C]\n" + "\tmov r3, r9\n" + "\tcmp r3, 0xFE\n" + "\tbeq _0804AAF8\n" + "\tcmp r3, 0xFF\n" + "\tbne _0804AB38\n" + "\tldr r0, _0804AAC4 @ =gBattleTypeFlags\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 9\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0804AAC8\n" + "\tmovs r5, 0x20\n" + "\tmovs r4, 0x40\n" + "\tb _0804AACE\n" + "\t.align 2, 0\n" + "_0804AAB8: .4byte gSaveBlock2Ptr\n" + "_0804AABC: .4byte gUnknown_82606F4\n" + "_0804AAC0: .4byte gSprites\n" + "_0804AAC4: .4byte gBattleTypeFlags\n" + "_0804AAC8:\n" + "\tmov r0, r10\n" + "\tmovs r5, 0x30\n" + "\tmovs r4, 0x46\n" + "_0804AACE:\n" + "\tldr r0, _0804AAEC @ =gBattlerTarget\n" + "\tstrb r6, [r0]\n" + "\tldr r2, _0804AAF0 @ =gSprites\n" + "\tlsls r3, r7, 4\n" + "\tadds r1, r3, r7\n" + "\tlsls r1, 2\n" + "\tadds r0, r1, r2\n" + "\tstrh r5, [r0, 0x20]\n" + "\tstrh r4, [r0, 0x22]\n" + "\tadds r2, 0x1C\n" + "\tadds r1, r2\n" + "\tldr r0, _0804AAF4 @ =SpriteCB_PlayerMonSendOut_1\n" + "\tstr r0, [r1]\n" + "\tb _0804AB48\n" + "\t.align 2, 0\n" + "_0804AAEC: .4byte gBattlerTarget\n" + "_0804AAF0: .4byte gSprites\n" + "_0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1\n" + "_0804AAF8:\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstrh r0, [r4, 0x20]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0x1\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tadds r0, 0x18\n" + "\tstrh r0, [r4, 0x22]\n" + "\tldr r0, _0804AB2C @ =gBattlerTarget\n" + "\tstrb r6, [r0]\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r4, 0x2E]\n" + "\tldr r0, _0804AB30 @ =gSprites\n" + "\tadds r0, 0x1C\n" + "\tadd r0, r8\n" + "\tldr r1, _0804AB34 @ =SpriteCB_OpponentMonSendOut\n" + "\tstr r1, [r0]\n" + "\tb _0804AB46\n" + "\t.align 2, 0\n" + "_0804AB2C: .4byte gBattlerTarget\n" + "_0804AB30: .4byte gSprites\n" + "_0804AB34: .4byte SpriteCB_OpponentMonSendOut\n" + "_0804AB38:\n" + "\tmovs r0, 0x1\n" + "\tbl GetBattlerAtPosition\n" + "\tldr r1, _0804AB64 @ =gBattlerTarget\n" + "\tstrb r0, [r1]\n" + "\tmovs r2, 0x1\n" + "\tstr r2, [sp, 0x4]\n" + "_0804AB46:\n" + "\tadds r3, r5, 0\n" + "_0804AB48:\n" + "\tldr r0, _0804AB68 @ =gSprites\n" + "\tadds r1, r3, r7\n" + "\tlsls r1, 2\n" + "\tadds r4, r1, r0\n" + "\tldr r5, _0804AB64 @ =gBattlerTarget\n" + "\tldrb r0, [r5]\n" + "\tstrh r0, [r4, 0x3A]\n" + "\tldr r3, [sp, 0x4]\n" + "\tcmp r3, 0\n" + "\tbne _0804AB6C\n" + "\tldr r0, [sp]\n" + "\tbl DestroyTask\n" + "\tb _0804ABB8\n" + "\t.align 2, 0\n" + "_0804AB64: .4byte gBattlerTarget\n" + "_0804AB68: .4byte gSprites\n" + "_0804AB6C:\n" + "\tmovs r0, 0x22\n" + "\tstrh r0, [r4, 0x2E]\n" + "\tldrb r0, [r5]\n" + "\tmovs r1, 0\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstrh r0, [r4, 0x32]\n" + "\tldrb r0, [r5]\n" + "\tmovs r1, 0x1\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x10\n" + "\tstrh r0, [r4, 0x36]\n" + "\tldr r0, _0804ABC8 @ =0x0000ffd8\n" + "\tstrh r0, [r4, 0x38]\n" + "\tadds r0, r4, 0\n" + "\tbl InitAnimArcTranslation\n" + "\tmov r0, sp\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r4, 0x6]\n" + "\tldr r1, _0804ABCC @ =gTasks\n" + "\tldr r2, [sp]\n" + "\tlsls r0, r2, 2\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrb r1, [r5]\n" + "\tstrh r1, [r0, 0x10]\n" + "\tldr r1, _0804ABD0 @ =TaskDummy\n" + "\tstr r1, [r0]\n" + "\tmovs r0, 0x36\n" + "\tbl PlaySE\n" + "_0804ABB8:\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804ABC8: .4byte 0x0000ffd8\n" + "_0804ABCC: .4byte gTasks\n" + "_0804ABD0: .4byte TaskDummy\n"); +} +#endif - return 0; +//static +void SpriteCB_TestBallThrow(struct Sprite *sprite) +{ + if (TranslateAnimHorizontalArc(sprite)) + { + u16 ballId; + u8 taskId = sprite->oam.affineParam; + u8 opponentBattler = gTasks[taskId].tOpponentBattler; + u8 noOfShakes = gTasks[taskId].tThrowId; + + StartSpriteAnim(sprite, 1); + sprite->affineAnimPaused = 1; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[5] = 0; + ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler)); + LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); + sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId); + sprite->sBattler = opponentBattler; + sprite->data[7] = noOfShakes; + DestroyTask(taskId); + sprite->callback = sub_804AC88; + } } + +#undef tFrames +#undef tPan +#undef tThrowId +#undef tBattler +#undef tOpponentBattler + +static void sub_804AC88(struct Sprite *sprite) +{ + sprite->callback = sub_804AC94; +} + +static void sub_804AC94(struct Sprite *sprite) +{ + if (++sprite->data[5] == 10) + { + sprite->data[5] = 0; + sprite->callback = sub_804AD00; + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 2); + AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0; + } +} + +static void sub_804AD00(struct Sprite *sprite) +{ + sprite->data[5]++; + if (sprite->data[5] == 11) + PlaySE(SE_SUIKOMU); + if (gSprites[gBattlerSpriteIds[sprite->sBattler]].affineAnimEnded) + { + StartSpriteAnim(sprite, 2); + gSprites[gBattlerSpriteIds[sprite->sBattler]].invisible = TRUE; + sprite->data[5] = 0; + sprite->callback = sub_804AD98; + } + else + { + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] += 0x60; + gSprites[gBattlerSpriteIds[sprite->sBattler]].pos2.y = -gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] >> 8; + } +} + +static void sub_804AD98(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sprite->data[5]++; + if (sprite->data[5] == 1) + { + sprite->data[3] = 0; + sprite->data[4] = 32; + sprite->data[5] = 0; + sprite->pos1.y += Cos(0, 32); + sprite->pos2.y = -Cos(0, sprite->data[4]); + sprite->callback = sub_804ADEC; + } + } +} + +static void sub_804ADEC(struct Sprite *sprite) +{ + bool8 r5 = FALSE; + + switch (sprite->data[3] & 0xFF) + { + case 0: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] += 4 + (sprite->data[3] >> 8); + if (sprite->data[5] >= 64) + { + sprite->data[4] -= 10; + sprite->data[3] += 0x101; + if (sprite->data[3] >> 8 == 4) + r5 = TRUE; + switch (sprite->data[3] >> 8) + { + case 1: + PlaySE(SE_KON); + break; + case 2: + PlaySE(SE_KON2); + break; + case 3: + PlaySE(SE_KON3); + break; + default: + PlaySE(SE_KON4); + break; + } + } + break; + case 1: + sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); + sprite->data[5] -= 4 + (sprite->data[3] >> 8); + if (sprite->data[5] <= 0) + { + sprite->data[5] = 0; + sprite->data[3] &= 0xFF00; + } + break; + } + if (r5) + { + sprite->data[3] = 0; + sprite->pos1.y += Cos(64, 32); + sprite->pos2.y = 0; + if (sprite->data[7] == 0) + { + sprite->callback = SpriteCB_ReleaseMonFromBall; + } + else + { + sprite->callback = sub_804AEE4; + sprite->data[4] = 1; + sprite->data[5] = 0; + } + } +} + +static void sub_804AEE4(struct Sprite *sprite) +{ + sprite->data[3]++; + if (sprite->data[3] == 31) + { + sprite->data[3] = 0; + sprite->affineAnimPaused = TRUE; + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_804AF24; + PlaySE(SE_BOWA); + } +} + +static void sub_804AF24(struct Sprite *sprite) +{ + switch (sprite->data[3] & 0xFF) + { + case 0: + case 2: + sprite->pos2.x += sprite->data[4]; + sprite->data[5] += sprite->data[4]; + sprite->affineAnimPaused = FALSE; + if (sprite->data[5] > 3 || sprite->data[5] < -3) + { + sprite->data[3]++; + sprite->data[5] = 0; + } + break; + case 1: + sprite->data[5]++; + if (sprite->data[5] == 1) + { + sprite->data[5] = 0; + sprite->data[4] = -sprite->data[4]; + sprite->data[3]++; + sprite->affineAnimPaused = FALSE; + if (sprite->data[4] < 0) + ChangeSpriteAffineAnim(sprite, 2); + else + ChangeSpriteAffineAnim(sprite, 1); + } + else + { + sprite->affineAnimPaused = TRUE; + } + break; + case 3: + sprite->data[3] += 0x100; + if (sprite->data[3] >> 8 == sprite->data[7]) + { + sprite->callback = SpriteCB_ReleaseMonFromBall; + } + else + { + if (sprite->data[7] == 4 && sprite->data[3] >> 8 == 3) + { + sprite->callback = sub_804B484; + sprite->affineAnimPaused = TRUE; + } + else + { + sprite->data[3]++; + sprite->affineAnimPaused = TRUE; + } + } + break; + case 4: + default: + sprite->data[5]++; + if (sprite->data[5] == 31) + { + sprite->data[5] = 0; + sprite->data[3] &= 0xFF00; + StartSpriteAffineAnim(sprite, 3); + if (sprite->data[4] < 0) + StartSpriteAffineAnim(sprite, 2); + else + StartSpriteAffineAnim(sprite, 1); + PlaySE(SE_BOWA); + } + break; + } +} + +#define tCryTaskSpecies data[0] +#define tCryTaskPan data[1] +#define tCryTaskWantedCry data[2] +#define tCryTaskBattler data[3] +#define tCryTaskMonSpriteId data[4] +#define tCryTaskMonPtr1 data[5] +#define tCryTaskMonPtr2 data[6] +#define tCryTaskFrames data[10] +#define tCryTaskState data[15] + +static void Task_PlayCryWhenReleasedFromBall(u8 taskId) +{ + u8 wantedCry = gTasks[taskId].tCryTaskWantedCry; + s8 pan = gTasks[taskId].tCryTaskPan; + u16 species = gTasks[taskId].tCryTaskSpecies; + u8 battlerId = gTasks[taskId].tCryTaskBattler; + u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId; + struct Pokemon *mon = (void*)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 0x10) | (u16)(gTasks[taskId].tCryTaskMonPtr2)); + + switch (gTasks[taskId].tCryTaskState) + { + case 0: + default: + if (gSprites[monSpriteId].affineAnimEnded) + gTasks[taskId].tCryTaskState = wantedCry + 1; + break; + case 1: + if (ShouldPlayNormalPokeCry(mon) == TRUE) + PlayCry3(species, pan, 0); + else + PlayCry3(species, pan, 11); + gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; + DestroyTask(taskId); + break; + case 2: + StopCryAndClearCrySongs(); + gTasks[taskId].tCryTaskFrames = 3; + gTasks[taskId].tCryTaskState = 20; + break; + case 20: + if (gTasks[taskId].tCryTaskFrames == 0) + { + if (ShouldPlayNormalPokeCry(mon) == TRUE) + PlayCry4(species, pan, 1); + else + PlayCry4(species, pan, 12); + + gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; + DestroyTask(taskId); + } + else + { + gTasks[taskId].tCryTaskFrames--; + } + break; + case 3: + gTasks[taskId].tCryTaskFrames = 6; + gTasks[taskId].tCryTaskState = 30; + break; + case 30: + if (gTasks[taskId].tCryTaskFrames != 0) + { + gTasks[taskId].tCryTaskFrames--; + break; + } + gTasks[taskId].tCryTaskState++; + // fall through + case 31: + if (!IsCryPlayingOrClearCrySongs()) + { + StopCryAndClearCrySongs(); + gTasks[taskId].tCryTaskFrames = 3; + gTasks[taskId].tCryTaskState++; + } + break; + case 32: + if (gTasks[taskId].tCryTaskFrames != 0) + { + gTasks[taskId].tCryTaskFrames--; + break; + } + if (ShouldPlayNormalPokeCry(mon) == TRUE) + PlayCry4(species, pan, 0); + else + PlayCry4(species, pan, 11); + + gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; + DestroyTask(taskId); + break; + } +} + +static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) +{ + u8 battlerId = sprite->sBattler; + u32 ballId; + + StartSpriteAnim(sprite, 1); + ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); + LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); + sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId); + sprite->callback = HandleBallAnimEnd; + + if (gMain.inBattle) + { + struct Pokemon *mon; + u16 species; + s8 pan; + u16 wantedCryCase; + u8 taskId; + + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]]; + pan = 25; + } + else + { + mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]]; + pan = -25; + } + + species = GetMonData(mon, MON_DATA_SPECIES); + if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + && IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1) + { + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (IsBGMPlaying()) + m4aMPlayStop(&gMPlayInfo_BGM); + } + else + { + m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 128); + } + } + + if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->field_9_x1) + wantedCryCase = 0; + else if (battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + wantedCryCase = 1; + else + wantedCryCase = 2; + + gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 1; + + taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3); + gTasks[taskId].tCryTaskSpecies = species; + gTasks[taskId].tCryTaskPan = pan; + gTasks[taskId].tCryTaskWantedCry = wantedCryCase; + gTasks[taskId].tCryTaskBattler = battlerId; + gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler]; + gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10; + gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon); + gTasks[taskId].tCryTaskState = 0; + } + + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 1); + +/* + if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT) + gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039B58; + else + gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039E44; +*/ + + AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; +} + +#undef tCryTaskSpecies +#undef tCryTaskPan +#undef tCryTaskWantedCry +#undef tCryTaskBattler +#undef tCryTaskMonSpriteId +#undef tCryTaskMonPtr1 +#undef tCryTaskMonPtr2 +#undef tCryTaskFrames +#undef tCryTaskState + +static void sub_804B484(struct Sprite *sprite) +{ + sprite->animPaused = TRUE; + sprite->callback = sub_804B5C8; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 0; +} + +static void HandleBallAnimEnd(struct Sprite *sprite) +{ + bool8 affineAnimEnded = FALSE; + u8 battlerId = sprite->sBattler; + + gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; + if (sprite->animEnded) + sprite->invisible = TRUE; + if (gSprites[gBattlerSpriteIds[battlerId]].affineAnimEnded) + { + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battlerId]], 0); + affineAnimEnded = TRUE; + } + else + { + gSprites[gBattlerSpriteIds[battlerId]].data[1] -= 288; + gSprites[gBattlerSpriteIds[battlerId]].pos2.y = gSprites[gBattlerSpriteIds[battlerId]].data[1] >> 8; + } + if (sprite->animEnded && affineAnimEnded) + { + s32 i, doneBattlers; + + gSprites[gBattlerSpriteIds[battlerId]].pos2.y = 0; + gDoingBattleAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = 0; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + + for (doneBattlers = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive == 0) + doneBattlers++; + } + if (doneBattlers == MAX_BATTLERS_COUNT) + { + for (i = 0; i < POKEBALL_COUNT; i++) + FreeBallGfx(i); + } + } +} + +static void sub_804B5C8(struct Sprite *sprite) +{ + u8 battlerId = sprite->sBattler; + + sprite->data[4]++; + if (sprite->data[4] == 40) + { + return; + } + else if (sprite->data[4] == 95) + { + gDoingBattleAnim = FALSE; + m4aMPlayAllStop(); + PlaySE(MUS_FANFA5); + } + else if (sprite->data[4] == 315) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[sprite->sBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + DestroySpriteAndFreeResources(sprite); + if (gMain.inBattle) + gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = 0; + } +} + +static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite) +{ + sprite->data[0] = 25; + sprite->data[2] = GetBattlerSpriteCoord(sprite->sBattler, 2); + sprite->data[4] = GetBattlerSpriteCoord(sprite->sBattler, 3) + 24; + sprite->data[5] = -30; + sprite->oam.affineParam = sprite->sBattler; + InitAnimArcTranslation(sprite); + sprite->callback = SpriteCB_PlayerMonSendOut_2; +} + +#define HIBYTE(x) (((x) >> 8) & 0xFF) + +static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) +{ + u32 r6; + u32 r7; + + if (HIBYTE(sprite->data[7]) >= 35 && HIBYTE(sprite->data[7]) < 80) + { + s16 r4; + + if ((sprite->oam.affineParam & 0xFF00) == 0) + { + r6 = sprite->data[1] & 1; + r7 = sprite->data[2] & 1; + sprite->data[1] = ((sprite->data[1] / 3) & ~1) | r6; + sprite->data[2] = ((sprite->data[2] / 3) & ~1) | r7; + StartSpriteAffineAnim(sprite, 4); + } + r4 = sprite->data[0]; + AnimTranslateLinear(sprite); + sprite->data[7] += sprite->sBattler / 3; + sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]); + sprite->oam.affineParam += 0x100; + if ((sprite->oam.affineParam >> 8) % 3 != 0) + sprite->data[0] = r4; + else + sprite->data[0] = r4 - 1; + if (HIBYTE(sprite->data[7]) >= 80) + { + r6 = sprite->data[1] & 1; + r7 = sprite->data[2] & 1; + sprite->data[1] = ((sprite->data[1] * 3) & ~1) | r6; + sprite->data[2] = ((sprite->data[2] * 3) & ~1) | r7; + } + } + else + { + if (TranslateAnimHorizontalArc(sprite)) + { + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->sBattler = sprite->oam.affineParam & 0xFF; + sprite->data[0] = 0; + + if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1 + && sprite->sBattler == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)) + sprite->callback = SpriteCB_ReleaseMon2FromBall; + else + sprite->callback = SpriteCB_ReleaseMonFromBall; + + StartSpriteAffineAnim(sprite, 0); + } + } +} + +static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite) +{ + if (sprite->data[0]++ > 24) + { + sprite->data[0] = 0; + sprite->callback = SpriteCB_ReleaseMonFromBall; + } +} + +static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite) +{ + sprite->data[0]++; + if (sprite->data[0] > 15) + { + sprite->data[0] = 0; + if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1 + && sprite->sBattler == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)) + sprite->callback = SpriteCB_ReleaseMon2FromBall; + else + sprite->callback = SpriteCB_ReleaseMonFromBall; + } +} + +#undef sBattler + +static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d) +{ + return LaunchBallStarsTask(x, y, kindOfStars, d, BALL_POKE); +} + +static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 battlerId, u32 arg2) +{ + return LaunchBallFadeMonTask(unFadeLater, battlerId, arg2, BALL_POKE); +} + +void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h) +{ + u8 spriteId; + + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy); + + gSprites[spriteId].data[0] = monSpriteId; + gSprites[spriteId].data[5] = gSprites[monSpriteId].pos1.x; + gSprites[spriteId].data[6] = gSprites[monSpriteId].pos1.y; + + gSprites[monSpriteId].pos1.x = x; + gSprites[monSpriteId].pos1.y = y; + //gSprites[monSpriteId].data[7] = species; + + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = battlerId; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 0x10; + gSprites[spriteId].oam.priority = oamPriority; + gSprites[spriteId].callback = sub_804B9E8; + + gSprites[monSpriteId].invisible = TRUE; +} + +static void sub_804B9E8(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + { + u8 r5; + u8 r7 = sprite->data[0]; + u8 battlerId = sprite->data[2]; + u32 r4 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); + + if (sprite->subpriority != 0) + r5 = sprite->subpriority - 1; + else + r5 = 0; + + StartSpriteAnim(sprite, 1); + LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4); + sprite->callback = sub_804BAA4; + gSprites[r7].invisible = FALSE; + StartSpriteAffineAnim(&gSprites[r7], 1); + AnimateSprite(&gSprites[r7]); + gSprites[r7].data[1] = 0x1000; + sprite->data[7] = 0; + } + else + { + sprite->data[1]--; + } +} + +static void sub_804BAA4(struct Sprite *sprite) +{ + bool8 r12 = FALSE; + bool8 r6 = FALSE; + u8 monSpriteId = sprite->data[0]; + u16 var1; + u16 var2; + + if (sprite->animEnded) + sprite->invisible = TRUE; + if (gSprites[monSpriteId].affineAnimEnded) + { + StartSpriteAffineAnim(&gSprites[monSpriteId], 0); + r12 = TRUE; + } + var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x; + var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y; + gSprites[monSpriteId].pos1.x = var1; + gSprites[monSpriteId].pos1.y = var2; + if (sprite->data[7] < 128) + { + s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8); + + sprite->data[7] += 4; + gSprites[monSpriteId].pos2.x = sine; + gSprites[monSpriteId].pos2.y = sine; + } + else + { + gSprites[monSpriteId].pos1.x = sprite->data[5]; + gSprites[monSpriteId].pos1.y = sprite->data[6]; + gSprites[monSpriteId].pos2.x = 0; + gSprites[monSpriteId].pos2.y = 0; + r6 = TRUE; + } + if (sprite->animEnded && r12 && r6) + { + if (gSprites[monSpriteId].data[7] == SPECIES_EGG) + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); + else + DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); + + DestroySpriteAndFreeResources(sprite); + } +} + +u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h) +{ + u8 spriteId; + + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); + spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subPriority); + gSprites[spriteId].data[0] = a; + gSprites[spriteId].data[1] = g; + gSprites[spriteId].data[2] = b; + gSprites[spriteId].data[3] = h; + gSprites[spriteId].data[4] = h >> 16; + gSprites[spriteId].oam.priority = oamPriority; + gSprites[spriteId].callback = sub_804BC50; + return spriteId; +} + +static void sub_804BC50(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + { + u8 r6; + u8 r7 = sprite->data[0]; + u8 r8 = sprite->data[2]; + u32 r5 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16); + + if (sprite->subpriority != 0) + r6 = sprite->subpriority - 1; + else + r6 = 0; + + StartSpriteAnim(sprite, 1); + LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6); + sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5); + sprite->callback = sub_804BCF8; + StartSpriteAffineAnim(&gSprites[r7], 2); + AnimateSprite(&gSprites[r7]); + gSprites[r7].data[1] = 0; + } + else + { + sprite->data[1]--; + } +} + +static void sub_804BCF8(struct Sprite *sprite) +{ + u8 r1; + + sprite->data[5]++; + if (sprite->data[5] == 11) + PlaySE(SE_SUIKOMU); + r1 = sprite->data[0]; + if (gSprites[r1].affineAnimEnded) + { + StartSpriteAnim(sprite, 2); + gSprites[r1].invisible = TRUE; + sprite->data[5] = 0; + sprite->callback = sub_804BD6C; + } + else + { + gSprites[r1].data[1] += 96; + gSprites[r1].pos2.y = -gSprites[r1].data[1] >> 8; + } +} + +static void sub_804BD6C(struct Sprite *sprite) +{ + if (sprite->animEnded) + sprite->callback = SpriteCallbackDummy; +} + +static void DestroySpriteAndFreeResources2(struct Sprite *sprite) +{ + DestroySpriteAndFreeResources(sprite); +} + +void sub_804BD94(u8 battlerId) +{ + struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battlerId]]; + + healthboxSprite->data[0] = 5; + healthboxSprite->data[1] = 0; + healthboxSprite->pos2.x = 0x73; + healthboxSprite->pos2.y = 0; + healthboxSprite->callback = sub_804BE48; + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + { + healthboxSprite->data[0] = -healthboxSprite->data[0]; + healthboxSprite->data[1] = -healthboxSprite->data[1]; + healthboxSprite->pos2.x = -healthboxSprite->pos2.x; + healthboxSprite->pos2.y = -healthboxSprite->pos2.y; + } + gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]); + if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT) + healthboxSprite->callback = sub_804BE24; +} + +static void sub_804BE24(struct Sprite *sprite) +{ + sprite->data[1]++; + if (sprite->data[1] == 20) + { + sprite->data[1] = 0; + sprite->callback = sub_804BE48; + } +} + +static void sub_804BE48(struct Sprite *sprite) +{ + sprite->pos2.x -= sprite->data[0]; + sprite->pos2.y -= sprite->data[1]; + if (sprite->pos2.x == 0 && sprite->pos2.y == 0) + sprite->callback = SpriteCallbackDummy; +} + +void DoHitAnimHealthboxEffect(u8 battlerId) +{ + u8 spriteId; + + spriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HitAnimHealthoxEffect); + gSprites[spriteId].data[0] = 1; + gSprites[spriteId].data[1] = gHealthboxSpriteIds[battlerId]; + gSprites[spriteId].callback = SpriteCB_HitAnimHealthoxEffect; +} + +static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite) +{ + u8 r1 = sprite->data[1]; + + gSprites[r1].pos2.y = sprite->data[0]; + sprite->data[0] = -sprite->data[0]; + sprite->data[2]++; + if (sprite->data[2] == 21) + { + gSprites[r1].pos2.x = 0; + gSprites[r1].pos2.y = 0; + DestroySprite(sprite); + } +} + +void LoadBallGfx(u8 ballId) +{ + u16 var; + + if (GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag) == 0xFFFF) + { + LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[ballId]); + LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[ballId]); + } + switch (ballId) + { + case BALL_DIVE: + case BALL_LUXURY: + case BALL_PREMIER: + break; + default: + var = GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag); + LZDecompressVram(gOpenPokeballGfx, (void *)(VRAM + 0x10100 + var * 32)); + break; + } +} + +void FreeBallGfx(u8 ballId) +{ + FreeSpriteTilesByTag(gBallSpriteSheets[ballId].tag); + FreeSpritePaletteByTag(gBallSpritePalettes[ballId].tag); +} + +static u16 GetBattlerPokeballItemId(u8 battlerId) +{ + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_POKEBALL); + else + return GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_POKEBALL); +} + -- cgit v1.2.3 From d81a67ea2d4486827e0cb2c066a8d7ae4682ec27 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 28 Nov 2019 11:04:49 -0500 Subject: fix nonmatchings --- include/sea_cottage.h | 12 -- include/sea_cottage_special_anim.h | 12 ++ src/sea_cottage_special_anim.c | 229 +++---------------------------- src/shop.c | 272 +++++++++++-------------------------- 4 files changed, 108 insertions(+), 417 deletions(-) delete mode 100644 include/sea_cottage.h create mode 100644 include/sea_cottage_special_anim.h diff --git a/include/sea_cottage.h b/include/sea_cottage.h deleted file mode 100644 index bba6286ff..000000000 --- a/include/sea_cottage.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifdndef GUARD_SEA_COTTAGE_H -#define GUARD_SEA_COTTAGE_H - -#include "global.h" - -void sub_809C448(u8 a0); -void sub_809C460(void); -bool8 sub_809C474(void); -void sub_809C4A8(void); -void sub_809C5FC(void); - -#endif // GUARD_SEA_COTTAGE_H diff --git a/include/sea_cottage_special_anim.h b/include/sea_cottage_special_anim.h new file mode 100644 index 000000000..5c939df12 --- /dev/null +++ b/include/sea_cottage_special_anim.h @@ -0,0 +1,12 @@ +#ifndef GUARD_SEA_COTTAGE_SPECIAL_ANIM_H +#define GUARD_SEA_COTTAGE_SPECIAL_ANIM_H + +#include "global.h" + +void sub_809C448(u8 a0); +void sub_809C460(void); +bool8 sub_809C474(void); +void sub_809C4A8(void); +void sub_809C5FC(void); + +#endif // GUARD_SEA_COTTAGE_SPECIAL_ANIM_H diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c index bd69a120a..18a8da234 100644 --- a/src/sea_cottage_special_anim.c +++ b/src/sea_cottage_special_anim.c @@ -7,14 +7,9 @@ #include "field_map_obj.h" #include "field_camera.h" -#define t0 data[0] -#define tX data[4] -#define tY data[5] -#define tListTaskId data[7] - static EWRAM_DATA u8 gUnknown_2039984 = 0; -static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2); +static void sub_809C1D8(u8 taskId, const s16 *a1, u16 a2); static void sub_809C334(u8 taskId); static void sub_809C500(u8 taskId); static void sub_809C640(u8 taskId); @@ -28,17 +23,14 @@ static const u16 gUnknown_83DF0F2[] = {0x02e4, 0x0317, 0x0315}; static const u16 gUnknown_83DF0F8[] = {0x02eb, 0x031e, 0x031c}; // Functions -#ifdef NONMATCHING -// Couldn't get the registers to match. Hard to know where to fix since I'm unsure what the variables are for. -static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) +static void sub_809C1D8(u8 taskId, const s16 *a1, u16 a2) { - s16 v1, v2, v3; + s16 r5, r3, r4; s16 i, j; - const s16* v4; - v1 = gTasks[taskId].data[4] - 1; - v2 = gTasks[taskId].data[5] - 1; - v3 = gTasks[taskId].data[1]; + r5 = gTasks[taskId].data[4] - 1; + r3 = gTasks[taskId].data[5] - 1; + r4 = gTasks[taskId].data[1]; if (gTasks[taskId].data[2] == 0) { @@ -46,13 +38,14 @@ static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { for (j = 0; j < 3; j++) { - v4 = &a1[v3]; - if (MapGridGetMetatileIdAt(v1 + j, v2 + i) == v4[0]) + s32 id = MapGridGetMetatileIdAt(r5 + j, r3 + i); + + if (a1[r4] == (s16)id) { - if (v3 != 2) - MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | v4[1]); + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[r4 + 1]); else - MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | v4[0]); + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[0]); } } } @@ -63,201 +56,19 @@ static void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) { for (j = 0; j < 3; j++) { - if (a1[2 - v3] == MapGridGetMetatileIdAt(v1 + j, v2 + i)) + s32 id = MapGridGetMetatileIdAt(r5 + j, r3 + i); + + if (a1[2 - r4] == (s16)id) { - if (v3 != 2) - MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | a1[1 - v3]); + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[1 - r4]); else - MapGridSetMetatileIdAt(v1 + j, v2 + i, a2 | a1[2]); + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[2]); } } } } } -#else -NAKED -void sub_809C1D8(u8 taskId, const u16* a1, u16 a2) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x10\n" - "\tmov r9, r1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tlsls r2, 16\n" - "\tlsrs r2, 16\n" - "\tmov r10, r2\n" - "\tldr r2, _0809C26C @ =gTasks\n" - "\tlsls r1, r0, 2\n" - "\tadds r1, r0\n" - "\tlsls r1, 3\n" - "\tadds r1, r2\n" - "\tldrh r0, [r1, 0x10]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tldrh r0, [r1, 0x12]\n" - "\tsubs r0, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tldrh r4, [r1, 0xA]\n" - "\tmovs r2, 0xC\n" - "\tldrsh r0, [r1, r2]\n" - "\tcmp r0, 0\n" - "\tbne _0809C29C\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp]\n" - "\tasrs r1, 16\n" - "\tstr r1, [sp, 0x4]\n" - "\tlsls r0, r1, 1\n" - "\tmov r1, r9\n" - "\tadds r7, r0, r1\n" - "_0809C22C:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r2, [sp]\n" - "\tadds r6, r2, r0\n" - "_0809C238:\n" - "\tldr r0, [sp, 0xC]\n" - "\tasrs r1, r0, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r7, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C280\n" - "\tldr r0, [sp, 0x4]\n" - "\tcmp r0, 0x2\n" - "\tbeq _0809C270\n" - "\tldrh r0, [r7, 0x2]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C280\n" - "\t.align 2, 0\n" - "_0809C26C: .4byte gTasks\n" - "_0809C270:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C280:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C238\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C22C\n" - "\tb _0809C324\n" - "_0809C29C:\n" - "\tmovs r2, 0\n" - "\tlsls r5, 16\n" - "\tstr r5, [sp, 0xC]\n" - "\tlsls r0, r3, 16\n" - "\tlsls r1, r4, 16\n" - "\tasrs r0, 16\n" - "\tstr r0, [sp, 0x8]\n" - "\tasrs r7, r1, 16\n" - "_0809C2AC:\n" - "\tmovs r4, 0\n" - "\tlsls r2, 16\n" - "\tmov r8, r2\n" - "\tasrs r0, r2, 16\n" - "\tldr r1, [sp, 0x8]\n" - "\tadds r6, r1, r0\n" - "_0809C2B8:\n" - "\tldr r2, [sp, 0xC]\n" - "\tasrs r1, r2, 16\n" - "\tlsls r4, 16\n" - "\tasrs r0, r4, 16\n" - "\tadds r5, r1, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridGetMetatileIdAt\n" - "\tmovs r1, 0x2\n" - "\tsubs r1, r7\n" - "\tlsls r1, 1\n" - "\tadd r1, r9\n" - "\tmovs r2, 0\n" - "\tldrsh r1, [r1, r2]\n" - "\tlsls r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r1, r0\n" - "\tbne _0809C30A\n" - "\tcmp r7, 0x2\n" - "\tbeq _0809C2FA\n" - "\tmovs r0, 0x1\n" - "\tsubs r0, r7\n" - "\tlsls r0, 1\n" - "\tadd r0, r9\n" - "\tldrh r0, [r0]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "\tb _0809C30A\n" - "_0809C2FA:\n" - "\tmov r1, r9\n" - "\tldrh r0, [r1, 0x4]\n" - "\tmov r2, r10\n" - "\torrs r2, r0\n" - "\tadds r0, r5, 0\n" - "\tadds r1, r6, 0\n" - "\tbl MapGridSetMetatileIdAt\n" - "_0809C30A:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r0, r4, r2\n" - "\tlsrs r4, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2B8\n" - "\tadds r0, r2, 0\n" - "\tadd r0, r8\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0809C2AC\n" - "_0809C324:\n" - "\tadd sp, 0x10\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif static void sub_809C334(u8 taskId) { @@ -308,8 +119,8 @@ static u8 sub_809C3FC(u16 a0) taskId = CreateTask(sub_809C334, 0); data = gTasks[taskId].data; - PlayerGetDestCoords(&tX, &tY); - t0 = 0; + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; data[1] = 0; data[2] = a0; sub_809C334(taskId); diff --git a/src/shop.c b/src/shop.c index 982202da2..a80cc76d7 100644 --- a/src/shop.c +++ b/src/shop.c @@ -87,13 +87,7 @@ struct MartHistory /*0x09*/ u8 unk9; /*0x0A*/ u8 unkA; /*0x0B*/ u8 unkB; - /*0x0C*/ u16 unkC; - /*0x0E*/ u8 unkE[6]; - /*0x14*/ u8 unk14; - /*0x15*/ u8 unk15; - /*0x16*/ u8 unk16; - /*0x17*/ u8 unk17; -}; /* size = 0x18 */ +}; /* size = 12 */ static EWRAM_DATA s16 sViewportMapObjects[MAP_OBJECTS_COUNT][4] = {0}; EWRAM_DATA struct ShopData gShopData = {0}; @@ -104,11 +98,11 @@ EWRAM_DATA u16 (*gShopTilemapBuffer3)[0x400] = {0}; EWRAM_DATA u16 (*gShopTilemapBuffer4)[0x400] = {0}; EWRAM_DATA struct ListMenuItem *sShopMenuListMenu = {0}; static EWRAM_DATA u8 (*sShopMenuItemStrings)[13] = {0}; -EWRAM_DATA struct MartHistory gShopMenuHistory = {0}; +EWRAM_DATA struct MartHistory gShopMenuHistory[2] = {0}; //Function Declarations static u8 CreateShopMenu(u8 a0); -static bool8 GetMartTypeFromItemList(bool32 a0); +static u8 GetMartTypeFromItemList(u32 a0); static void SetShopItemsForSale(const u16 *items); static void SetShopMenuCallback(MainCallback callback); static void Task_ShopMenu(u8 taskId); @@ -230,7 +224,7 @@ static const struct BgTemplate sShopBuyMenuBgTemplates[4] = // Functions static u8 CreateShopMenu(u8 a0) { - gShopData.martType = GetMartTypeFromItemList(a0) & 0xF; + gShopData.martType = GetMartTypeFromItemList(a0); gShopData.selectedRow = 0; if (ContextNpcGetTextColor() == 0) gShopData.unk16_4 = 4; @@ -246,56 +240,35 @@ static u8 CreateShopMenu(u8 a0) return CreateTask(Task_ShopMenu, 8); } -static bool8 GetMartTypeFromItemList(bool32 a0) +static u8 GetMartTypeFromItemList(u32 a0) { u16 i; if (a0) - return (u8)a0; - goto MAIN; + return a0; - RETURN_1: - return 1; - - MAIN: - i = 0; - if (i >= gShopData.itemCount) - goto RETURN_0; - else if (gShopData.itemList[0] == 0) - goto RETURN_0; - - while (gShopData.itemList[i] != 0) - { + for (i = 0; i < gShopData.itemCount && gShopData.itemList[i] != 0; i++) + { if (ItemId_GetPocket(gShopData.itemList[i]) == POCKET_TM_CASE) - goto RETURN_1; - ++i; - if (i >= gShopData.itemCount) - goto RETURN_0; - else if (gShopData.itemList[i] == 0) - goto RETURN_0; + return 1; } - - RETURN_0: - return 0; + return 0; } static void SetShopItemsForSale(const u16 *items) { - struct ShopData *mart; - - mart = &gShopData; - mart->itemList = items; - mart->itemCount = 0; - if (mart->itemList[0] == 0) + gShopData.itemList = items; + gShopData.itemCount = 0; + if (gShopData.itemList[0] == 0) return; - do + while (gShopData.itemList[gShopData.itemCount]) { ++gShopData.itemCount; - } while (mart->itemList[gShopData.itemCount]); + } } -static void SetShopMenuCallback(MainCallback callback) +static void SetShopMenuCallback(void (*callback)(void)) { gShopData.callback = callback; } @@ -416,7 +389,7 @@ static void CB2_InitBuyMenu(void) ResetTasks(); ClearScheduledBgCopiesToVram(); ResetItemMenuIconState(); - if ((!(InitShopData())) || (!(BuyMenuBuildListMenuTemplate()))) + if (!(InitShopData()) || !(BuyMenuBuildListMenuTemplate())) return; BuyMenuInitBgs(); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); @@ -449,27 +422,39 @@ static void CB2_InitBuyMenu(void) static bool8 InitShopData(void) { - gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); + gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); if (gShopTilemapBuffer1 == NULL) - goto CANCEL; + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2)); if (gShopTilemapBuffer2 == NULL) - goto CANCEL; + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3)); if (gShopTilemapBuffer3 == NULL) - goto CANCEL; + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4)); if (gShopTilemapBuffer4 == NULL) - goto CANCEL; + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + return TRUE; - - CANCEL: - BuyMenuFreeMemory(); - SetShopExitCallback(); - return FALSE; } static void BuyMenuInitBgs(void) @@ -540,35 +525,25 @@ static void BuyMenuDrawGraphics(void) ScheduleBgCopyTilemapToVram(3); } -static bool8 BuyMenuBuildListMenuTemplate(void) +bool8 BuyMenuBuildListMenuTemplate(void) { u16 i, v; - struct ListMenuItem **list = &sShopMenuListMenu; - struct ShopData *mart = &gShopData; - - *list = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu)); - if (sShopMenuListMenu == NULL) - goto FREE_MEMORY; - sShopMenuItemStrings = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuItemStrings)); - if (sShopMenuItemStrings == NULL) + sShopMenuListMenu = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu)); + if (sShopMenuListMenu == NULL + || (sShopMenuItemStrings = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuItemStrings))) == NULL) { - FREE_MEMORY: BuyMenuFreeMemory(); SetShopExitCallback(); return FALSE; } i = 0; - if (i >= mart->itemCount) - goto ADD_CANCEL; - for (i = 0; i < mart->itemCount; i++) + for (i = 0; i < gShopData.itemCount; i++) { - PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], mart->itemList[i], sShopMenuItemStrings[i]); + PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], gShopData.itemList[i], sShopMenuItemStrings[i]); } - - ADD_CANCEL: StringCopy(sShopMenuItemStrings[i], gFameCheckerText_Cancel); sShopMenuListMenu[i].label = sShopMenuItemStrings[i]; sShopMenuListMenu[i].index = -2; @@ -801,7 +776,7 @@ static void BuyMenuDrawMapBg(void) static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType) { u16 offset1 = x * 2; - u16 offset2 = ((y << 0x16) + 0x400000) >> 0x10; + u16 offset2 = (y * 64) + 64; switch (metatileLayerType) { @@ -1091,7 +1066,7 @@ static void Task_ExitBuyMenu(u8 taskId) if (!gPaletteFade.active) { - DestroyListMenuTask(tListTaskId, 0, 0); + DestroyListMenuTask(tListTaskId, NULL, NULL); BuyMenuFreeMemory(); SetMainCallback2(CB2_ReturnToField); DestroyTask(taskId); @@ -1106,154 +1081,59 @@ static void nullsub_53(void) { } -#ifdef NONMATCHING -// couldn't get registers to match. It should store an address into r4 (what tmp wants to be), and load/store from there, eg. ldrh r0, [r4,#4]. Which indicates an array inside the MartHistory struct, except data sizes are not consistent. void RecordItemPurchase(u16 item, u16 quantity, u8 a2) { - struct MartHistory *tmp; + struct MartHistory *history; - if (gShopMenuHistory.unkA == a2) + if (gShopMenuHistory[0].unkA == a2) + { + history = &gShopMenuHistory[0]; + } + else if (gShopMenuHistory[1].unkA == a2) { - tmp = &gShopMenuHistory; + history = &gShopMenuHistory[1]; } else { - if (gShopMenuHistory.unk16 == a2) - { - tmp = &gShopMenuHistory + 12; - } + if (gShopMenuHistory[0].unkA == 0) + history = &gShopMenuHistory[0]; else - { - tmp = &gShopMenuHistory + 12; - if (gShopMenuHistory.unkA == 0) - { - tmp = &gShopMenuHistory; - gShopMenuHistory.unkA = a2; - } - } + history = &gShopMenuHistory[1]; + history->unkA = a2; } - if (tmp->unk4 != 0) + if (history->unk4 != 0) { - gShopMenuHistory.unk9 = 1; + history->unk9 = 1; } - gShopMenuHistory.unk4 = item; - if (gShopMenuHistory.unk6 <= 998) + history->unk4 = item; + if (history->unk6 < 999) { - gShopMenuHistory.unk6 += item; - if (item > 999) - gShopMenuHistory.unk6 = 999; + history->unk6 += quantity; + if (history->unk6 > 999) + history->unk6 = 999; } - if (gShopMenuHistory.unk0 < 999998) + if (history->unk0 < 999999) { - gShopMenuHistory.unk0 += ((s16)itemid_get_market_price(item) >> (quantity-1))*quantity; - if (gShopMenuHistory.unk0 > 999999) - gShopMenuHistory.unk0 = 999999; + history->unk0 += (itemid_get_market_price(item) >> (a2 - 1)) * quantity; + if (history->unk0 > 999999) + history->unk0 = 999999; } } -#else -NAKED -void RecordItemPurchase(u16 item, u16 quantity, u8 a2) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tlsls r0, 16\n" - "\tlsrs r3, r0, 16\n" - "\tlsls r1, 16\n" - "\tlsrs r6, r1, 16\n" - "\tlsls r2, 24\n" - "\tlsrs r5, r2, 24\n" - "\tldr r1, _0809C0B8 @ =gShopMenuHistory\n" - "\tldrb r2, [r1, 0xA]\n" - "\tcmp r2, r5\n" - "\tbne _0809C0BC\n" - "\tadds r4, r1, 0\n" - "\tb _0809C0D4\n" - "\t.align 2, 0\n" - "_0809C0B8: .4byte gShopMenuHistory\n" - "_0809C0BC:\n" - "\tldrb r0, [r1, 0x16]\n" - "\tcmp r0, r5\n" - "\tbne _0809C0C8\n" - "\tadds r4, r1, 0\n" - "\tadds r4, 0xC\n" - "\tb _0809C0D4\n" - "_0809C0C8:\n" - "\tadds r4, r1, 0\n" - "\tadds r4, 0xC\n" - "\tcmp r2, 0\n" - "\tbne _0809C0D2\n" - "\tadds r4, r1, 0\n" - "_0809C0D2:\n" - "\tstrb r5, [r4, 0xA]\n" - "_0809C0D4:\n" - "\tldrh r0, [r4, 0x4]\n" - "\tcmp r0, 0\n" - "\tbeq _0809C0DE\n" - "\tmovs r0, 0x1\n" - "\tstrb r0, [r4, 0x9]\n" - "_0809C0DE:\n" - "\tstrh r3, [r4, 0x4]\n" - "\tldrh r1, [r4, 0x6]\n" - "\tldr r0, _0809C128 @ =0x000003e6\n" - "\tcmp r1, r0\n" - "\tbhi _0809C0F8\n" - "\tadds r0, r6, r1\n" - "\tstrh r0, [r4, 0x6]\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tldr r1, _0809C12C @ =0x000003e7\n" - "\tcmp r0, r1\n" - "\tbls _0809C0F8\n" - "\tstrh r1, [r4, 0x6]\n" - "_0809C0F8:\n" - "\tldr r1, [r4]\n" - "\tldr r0, _0809C130 @ =0x000f423e\n" - "\tcmp r1, r0\n" - "\tbhi _0809C120\n" - "\tadds r0, r3, 0\n" - "\tbl itemid_get_market_price\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tsubs r1, r5, 0x1\n" - "\tasrs r0, r1\n" - "\tadds r1, r0, 0\n" - "\tmuls r1, r6\n" - "\tldr r0, [r4]\n" - "\tadds r0, r1\n" - "\tstr r0, [r4]\n" - "\tldr r1, _0809C134 @ =0x000f423f\n" - "\tcmp r0, r1\n" - "\tbls _0809C120\n" - "\tstr r1, [r4]\n" - "_0809C120:\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0809C128: .4byte 0x000003e6\n" - "_0809C12C: .4byte 0x000003e7\n" - "_0809C130: .4byte 0x000f423e\n" - "_0809C134: .4byte 0x000f423f\n"); -} -#endif static void RecordQuestLogItemPurchase(void) { - struct MartHistory *history = &gShopMenuHistory; u16 v; - v = history->unkA; + v = gShopMenuHistory[0].unkA; if (v != 0) - sub_8113550(v + 0x24, (const u16*)history); + sub_8113550(v + 0x24, (const u16 *)&gShopMenuHistory[0]); - v = history->unk16; + v = gShopMenuHistory[1].unkA; if (v != 0) - { - v += 0x24; - sub_8113550(v, (const u16*)&history->unkC); - } + sub_8113550(v + 0x24, (const u16 *)&gShopMenuHistory[1]); } void CreatePokemartMenu(const u16 *itemsForSale) @@ -1262,9 +1142,9 @@ void CreatePokemartMenu(const u16 *itemsForSale) CreateShopMenu(MART_TYPE_REGULAR); SetShopMenuCallback(EnableBothScriptContexts); nullsub_53(); - memset(&gShopMenuHistory, 0, sizeof(struct MartHistory)); - gShopMenuHistory.unk8 = gMapHeader.regionMapSectionId; - gShopMenuHistory.unk14 = gMapHeader.regionMapSectionId; + memset(&gShopMenuHistory, 0, sizeof(gShopMenuHistory)); + gShopMenuHistory[0].unk8 = gMapHeader.regionMapSectionId; + gShopMenuHistory[1].unk8 = gMapHeader.regionMapSectionId; } void CreateDecorationShop1Menu(const u16 *itemsForSale) -- cgit v1.2.3 From 52013cf052e9398987f76cf115ca08091e16288d Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 28 Nov 2019 11:13:26 -0500 Subject: remove errors --- include/pokeball.h | 3 --- src/pokeball.c | 11 ++++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/include/pokeball.h b/include/pokeball.h index 263dc8742..9a4299531 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -34,7 +34,4 @@ void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); void sub_804BD94(u8 battler); -//temp -void SpriteCB_TestBallThrow(struct Sprite *sprite); - #endif // GUARD_POKEBALL_H diff --git a/src/pokeball.c b/src/pokeball.c index cbba77bb2..0626b4714 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -27,7 +27,7 @@ // Function Declarations static void Task_DoPokeballSendOutAnim(u8 taskId); -//static void SpriteCB_TestBallThrow(struct Sprite *sprite); +static void SpriteCB_TestBallThrow(struct Sprite *sprite); static void sub_804AC88(struct Sprite *sprite); static void sub_804AC94(struct Sprite *sprite); static void sub_804AD00(struct Sprite *sprite); @@ -62,6 +62,7 @@ extern const struct SpriteTemplate gUnknown_82606F4[]; extern const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT]; extern const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT]; +extern const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT]; // Functions u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) @@ -430,8 +431,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) } #endif -//static -void SpriteCB_TestBallThrow(struct Sprite *sprite) +static void SpriteCB_TestBallThrow(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { @@ -1112,11 +1112,12 @@ static void sub_804BAA4(struct Sprite *sprite) } if (sprite->animEnded && r12 && r6) { - if (gSprites[monSpriteId].data[7] == SPECIES_EGG) + /* + if (gSprites[monSpriteId].data[7] == SPECIES_EGG) DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); else DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); - + */ DestroySpriteAndFreeResources(sprite); } } -- cgit v1.2.3 From fe6db41f2b4b31d47c3b7e5eaa2e970379f224b1 Mon Sep 17 00:00:00 2001 From: Evan Date: Thu, 28 Nov 2019 11:15:24 -0500 Subject: fix formatting --- src/shop.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/shop.c b/src/shop.c index a80cc76d7..4a0ac7fb1 100644 --- a/src/shop.c +++ b/src/shop.c @@ -248,11 +248,11 @@ static u8 GetMartTypeFromItemList(u32 a0) return a0; for (i = 0; i < gShopData.itemCount && gShopData.itemList[i] != 0; i++) - { + { if (ItemId_GetPocket(gShopData.itemList[i]) == POCKET_TM_CASE) return 1; } - return 0; + return 0; } static void SetShopItemsForSale(const u16 *items) @@ -422,38 +422,38 @@ static void CB2_InitBuyMenu(void) static bool8 InitShopData(void) { - gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); + gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); if (gShopTilemapBuffer1 == NULL) - { - BuyMenuFreeMemory(); - SetShopExitCallback(); - return FALSE; - } + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2)); if (gShopTilemapBuffer2 == NULL) - { - BuyMenuFreeMemory(); - SetShopExitCallback(); - return FALSE; - } + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3)); if (gShopTilemapBuffer3 == NULL) - { - BuyMenuFreeMemory(); - SetShopExitCallback(); - return FALSE; - } + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4)); if (gShopTilemapBuffer4 == NULL) - { - BuyMenuFreeMemory(); - SetShopExitCallback(); - return FALSE; - } - + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + return TRUE; } -- cgit v1.2.3 From 0c2c8e2c2886c55aaf1b929e3e7be51d38edd8ee Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Nov 2019 10:51:23 -0500 Subject: Dump data/naming_screen --- baserom.ips | Bin 158660 -> 151672 bytes data/graphics.s | 57 +++- data/naming_screen.s | 401 +++++++++++++++++++++++---- graphics/interface/naming_screen_83E1800.png | Bin 0 -> 205 bytes graphics/interface/naming_screen_83E18C0.png | Bin 0 -> 216 bytes graphics/interface/naming_screen_83E1980.png | Bin 0 -> 704 bytes graphics/interface/naming_screen_8E98004.pal | 19 ++ graphics/interface/naming_screen_8E98024.pal | 19 ++ graphics/interface/naming_screen_8E98044.pal | 19 ++ graphics/interface/naming_screen_8E98064.pal | 19 ++ graphics/interface/naming_screen_8E98084.pal | 19 ++ graphics/interface/naming_screen_8E980A4.pal | 19 ++ graphics/interface/naming_screen_8E980C4.pal | 19 ++ graphics/interface/naming_screen_8E985D8.png | Bin 0 -> 266 bytes graphics/interface/naming_screen_8E98858.png | Bin 0 -> 297 bytes graphics/interface/naming_screen_8E98A38.png | Bin 0 -> 277 bytes graphics/interface/naming_screen_8E98C18.png | Bin 0 -> 203 bytes graphics/interface/naming_screen_8E98CB8.png | Bin 0 -> 199 bytes graphics/interface/naming_screen_8E98D58.png | Bin 0 -> 206 bytes graphics/interface/naming_screen_8E98DF8.png | Bin 0 -> 175 bytes graphics/interface/naming_screen_8E98E98.png | Bin 0 -> 178 bytes graphics/interface/naming_screen_8E98F38.png | Bin 0 -> 187 bytes graphics/interface/naming_screen_8E98FD8.png | Bin 0 -> 158 bytes graphics/interface/naming_screen_8E990D8.png | Bin 0 -> 166 bytes graphics/interface/naming_screen_8E990F8.png | Bin 0 -> 150 bytes 25 files changed, 537 insertions(+), 54 deletions(-) create mode 100644 graphics/interface/naming_screen_83E1800.png create mode 100644 graphics/interface/naming_screen_83E18C0.png create mode 100644 graphics/interface/naming_screen_83E1980.png create mode 100644 graphics/interface/naming_screen_8E98004.pal create mode 100644 graphics/interface/naming_screen_8E98024.pal create mode 100644 graphics/interface/naming_screen_8E98044.pal create mode 100644 graphics/interface/naming_screen_8E98064.pal create mode 100644 graphics/interface/naming_screen_8E98084.pal create mode 100644 graphics/interface/naming_screen_8E980A4.pal create mode 100644 graphics/interface/naming_screen_8E980C4.pal create mode 100644 graphics/interface/naming_screen_8E985D8.png create mode 100644 graphics/interface/naming_screen_8E98858.png create mode 100644 graphics/interface/naming_screen_8E98A38.png create mode 100644 graphics/interface/naming_screen_8E98C18.png create mode 100644 graphics/interface/naming_screen_8E98CB8.png create mode 100644 graphics/interface/naming_screen_8E98D58.png create mode 100644 graphics/interface/naming_screen_8E98DF8.png create mode 100644 graphics/interface/naming_screen_8E98E98.png create mode 100644 graphics/interface/naming_screen_8E98F38.png create mode 100644 graphics/interface/naming_screen_8E98FD8.png create mode 100644 graphics/interface/naming_screen_8E990D8.png create mode 100644 graphics/interface/naming_screen_8E990F8.png diff --git a/baserom.ips b/baserom.ips index c9e739d73..a72abbfcb 100644 Binary files a/baserom.ips and b/baserom.ips differ diff --git a/data/graphics.s b/data/graphics.s index 818b01e3a..ff8c08e51 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16086,10 +16086,28 @@ gUnknown_8E97EC4:: @ 8E97EC4 .incbin "baserom.gba", 0xE97EC4, 0x120 gUnknown_8E97FE4:: @ 8E97FE4 - .incbin "baserom.gba", 0xE97FE4, 0x40 @UNKNOWN + .incbin "baserom.gba", 0xE97FE4, 0x20 @UNKNOWN + +gUnknown_8E98004:: @ 8E98004 + .incbin "graphics/interface/naming_screen_8E98004.gbapal" gUnknown_8E98024:: @ 8E98024 - .incbin "baserom.gba", 0xE98024, 0xC0 @UNKNOWN + .incbin "graphics/interface/naming_screen_8E98024.gbapal" + +gUnknown_8E98044:: @ 8E98044 + .incbin "graphics/interface/naming_screen_8E98044.gbapal" + +gUnknown_8E98064:: @ 8E98064 + .incbin "graphics/interface/naming_screen_8E98064.gbapal" + +gUnknown_8E98084:: @ 8E98084 + .incbin "graphics/interface/naming_screen_8E98084.gbapal" + +gUnknown_8E980A4:: @ 8E980A4 + .incbin "graphics/interface/naming_screen_8E980A4.gbapal" + +gUnknown_8E980C4:: @ 8E980C4 + .incbin "graphics/interface/naming_screen_8E980C4.gbapal" gUnknown_8E980E4:: @ 8E980E4 .incbin "baserom.gba", 0xE980E4, 0x1D8 @@ -16107,7 +16125,40 @@ gUnknown_8E98518:: @ 8E98518 .incbin "baserom.gba", 0xE98518, 0xC0 gUnknown_8E985D8:: @ 8E985D8 - .incbin "baserom.gba", 0xE985D8, 0xB40 @UNKNOWN, FALSEPOSITIVE? + .incbin "graphics/interface/naming_screen_8E985D8" + +gUnknown_8E98858:: @ 8E98858 + .incbin "graphics/interface/naming_screen_8E98858" + +gUnknown_8E98A38:: @ 8E98A38 + .incbin "graphics/interface/naming_screen_8E98A38" + +gUnknown_8E98C18:: @ 8E98C18 + .incbin "graphics/interface/naming_screen_8E98C18" + +gUnknown_8E98CB8:: @ 8E98CB8 + .incbin "graphics/interface/naming_screen_8E98CB8" + +gUnknown_8E98D58:: @ 8E98D58 + .incbin "graphics/interface/naming_screen_8E98D58" + +gUnknown_8E98DF8:: @ 8E98DF8 + .incbin "graphics/interface/naming_screen_8E98DF8" + +gUnknown_8E98E98:: @ 8E98E98 + .incbin "graphics/interface/naming_screen_8E98E98" + +gUnknown_8E98F38:: @ 8E98F38 + .incbin "graphics/interface/naming_screen_8E98F38" + +gUnknown_8E98FD8:: @ 8E98FD8 + .incbin "graphics/interface/naming_screen_8E98FD8" + +gUnknown_8E990D8:: @ 8E990D8 + .incbin "graphics/interface/naming_screen_8E990D8" + +gUnknown_8E990F8:: @ 8E990F8 + .incbin "graphics/interface/naming_screen_8E990F8" gUnknown_8E99118:: @ 8E99118 .incbin "graphics/tm_case/unk_8E99118.4bpp" diff --git a/data/naming_screen.s b/data/naming_screen.s index 5d49b2581..121d05c88 100644 --- a/data/naming_screen.s +++ b/data/naming_screen.s @@ -6,154 +6,453 @@ .section .rodata .align 2 - .incbin "baserom.gba", 0x3E1800, 0xA80 +gUnknown_83E1800:: @ 83E1800 + .incbin "graphics/interface/naming_screen_83E1800.4bpp" + +gUnknown_83E18C0:: @ 83E18C0 + .incbin "graphics/interface/naming_screen_83E18C0.4bpp" + +gUnknown_83E1980:: @ 83E1980 + .incbin "graphics/interface/naming_screen_83E1980.4bpp" gUnknown_83E2280:: @ 83E2280 - .incbin "baserom.gba", 0x3E2280, 0x10 + .4byte Text_1A5CF1 + .4byte Text_1A5D31 + .4byte Text_1A5D6E + .4byte Text_1A5DB1 gUnknown_83E2290:: @ 83E2290 - .incbin "baserom.gba", 0x3E2290, 0x10 + .4byte 0x000001e0 + @ { + @ .bg = 0, + @ .charBaseIndex = 0, + @ .mapBaseIndex = 30, + @ .screenSize = 0, + @ .paletteMode = 0, + @ .priority = 0, + @ .baseTile = 0x0000 + @ } + .4byte 0x000011d9 + @ { + @ .bg = 1, + @ .charBaseIndex = 2, + @ .mapBaseIndex = 29, + @ .screenSize = 0, + @ .paletteMode = 0, + @ .priority = 1, + @ .baseTile = 0x0000 + @ } + .4byte 0x000021ca + @ { + @ .bg = 2, + @ .charBaseIndex = 2, + @ .mapBaseIndex = 28, + @ .screenSize = 0, + @ .paletteMode = 0, + @ .priority = 2, + @ .baseTile = 0x0000 + @ } + .4byte 0x000031ff + @ { + @ .bg = 3, + @ .charBaseIndex = 3, + @ .mapBaseIndex = 31, + @ .screenSize = 0, + @ .paletteMode = 0, + @ .priority = 3, + @ .baseTile = 0x0000 + @ } gUnknown_83E22A0:: @ 83E22A0 - .incbin "baserom.gba", 0x3E22A0, 0x30 + .byte 1, 3, 10, 19, 8, 10 + .2byte 0x0030 + @ { + @ .bg = 1, + @ .tilemapLeft = 3, + @ .tilemapTop = 10, + @ .width = 19, + @ .height = 8, + @ .paletteNum = 10, + @ .baseBlock = 0x0030 + @ } + .byte 2, 3, 10, 19, 8, 10 + .2byte 0x00c8 + @ { + @ .bg = 2, + @ .tilemapLeft = 3, + @ .tilemapTop = 10, + @ .width = 19, + @ .height = 8, + @ .paletteNum = 10, + @ .baseBlock = 0x00c8 + @ } + .byte 3, 8, 6, 14, 2, 10 + .2byte 0x0030 + @ { + @ .bg = 3, + @ .tilemapLeft = 8, + @ .tilemapTop = 6, + @ .width = 14, + @ .height = 2, + @ .paletteNum = 10, + @ .baseBlock = 0x0030 + @ } + .byte 3, 9, 4, 16, 2, 10 + .2byte 0x004c + @ { + @ .bg = 3, + @ .tilemapLeft = 9, + @ .tilemapTop = 4, + @ .width = 16, + @ .height = 2, + @ .paletteNum = 10, + @ .baseBlock = 0x004c + @ } + .byte 0, 0, 0, 30, 2, 11 + .2byte 0x006c + @ { + @ .bg = 0, + @ .tilemapLeft = 0, + @ .tilemapTop = 0, + @ .width = 30, + @ .height = 2, + @ .paletteNum = 11, + @ .baseBlock = 0x006c + @ } + .byte 255, 0, 0, 0, 0, 0 + .2byte 0x0000 + @ { + @ .bg = 255, + @ .tilemapLeft = 0, + @ .tilemapTop = 0, + @ .width = 0, + @ .height = 0, + @ .paletteNum = 0, + @ .baseBlock = 0x0000 + @ } gUnknown_83E22D0:: @ 83E22D0 - .incbin "baserom.gba", 0x3E22D0, 0x60 + .string "abcdef .", 8 + .string "ghijkl ,", 8 + .string "mnopqrs", 8 + .string "tuvwxyz", 8 + .string "ABCDEF .", 8 + .string "GHIJKL ,", 8 + .string "MNOPQRS", 8 + .string "TUVWXYZ", 8 + .string "01234", 8 + .string "56789", 8 + .string "!?♂♀/-", 8 + .string "…“â€â€˜'", 8 gUnknown_83E2330:: @ 83E2330 - .incbin "baserom.gba", 0x3E2330, 0x3 + .byte 0x08, 0x08, 0x06 gUnknown_83E2333:: @ 83E2333 - .incbin "baserom.gba", 0x3E2333, 0x18 + .byte 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x0c, 0x18, 0x38, 0x44, 0x50, 0x5c, 0x7b, 0x00, 0x16, 0x2c, 0x42, 0x58, 0x6e, 0x00, 0x00 gUnknown_83E234B:: @ 83E234B - .incbin "baserom.gba", 0x3E234B, 0x3 + .byte 0x00, 0x02, 0x01 gUnknown_83E234E:: @ 83E234E - .incbin "baserom.gba", 0x3E234E, 0x3 + .byte 0x01, 0x00, 0x02 gUnknown_83E2351:: @ 83E2351 - .incbin "baserom.gba", 0x3E2351, 0x3 + .byte 0x02, 0x01, 0x00 gUnknown_83E2354:: @ 83E2354 - .incbin "baserom.gba", 0x3E2354, 0x10 + .4byte sub_809E384 + .4byte sub_809E3AC + .4byte sub_809E440 + .4byte sub_809E4D4 gUnknown_83E2364:: @ 83E2364 - .incbin "baserom.gba", 0x3E2364, 0x8 + .2byte 0x0000, 0xfffc, 0xfffe, 0xffff gUnknown_83E236C:: @ 83E236C - .incbin "baserom.gba", 0x3E236C, 0x8 + .2byte 0x0002, 0x0003, 0x0002, 0x0001 gUnknown_83E2374:: @ 83E2374 - .incbin "baserom.gba", 0x3E2374, 0x4 + .byte 0x01, 0x02, 0x03, 0x00 gUnknown_83E2378:: @ 83E2378 - .incbin "baserom.gba", 0x3E2378, 0x10 + .4byte sub_809EC7C + .4byte sub_809ECD0 + .4byte sub_809ECD4 + .4byte sub_809ED48 gUnknown_83E2388:: @ 83E2388 - .incbin "baserom.gba", 0x3E2388, 0x6 + .2byte 0x0001, 0x0003, 0x0002 gUnknown_83E238E:: @ 83E238E - .incbin "baserom.gba", 0x3E238E, 0x6 + .2byte 0x0004, 0x0006, 0x0005 gUnknown_83E2394:: @ 83E2394 - .incbin "baserom.gba", 0x3E2394, 0x28 + .4byte nullsub_54 + .4byte sub_809EF54 + .4byte sub_809EFB0 + .4byte sub_809EFF0 + .4byte sub_809F04C + +gUnknown_83E23A8:: @ 83E23A8 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 24, 10 + obj_image_anim_frame 0, 10 + obj_image_anim_frame 32, 10 + obj_image_anim_jump 0 gUnknown_83E23BC:: @ 83E23BC - .incbin "baserom.gba", 0x3E23BC, 0x4 + .4byte gUnknown_83E23A8 gUnknown_83E23C0:: @ 83E23C0 - .incbin "baserom.gba", 0x3E23C0, 0x8 + obj_tiles gUnknown_83E1980, 0x0900, 255 gUnknown_83E23C8:: @ 83E23C8 - .incbin "baserom.gba", 0x3E23C8, 0x8 + obj_pal gUnknown_8E98004, 255 gUnknown_83E23D0:: @ 83E23D0 - .incbin "baserom.gba", 0x3E23D0, 0x10 + .4byte sub_809F11C + .4byte KeyboardKeyHandler_Page + .4byte KeyboardKeyHandler_Backspace + .4byte KeyboardKeyHandler_OK gUnknown_83E23E0:: @ 83E23E0 - .incbin "baserom.gba", 0x3E23E0, 0x8 + .4byte InputState_Disabled + .4byte InputState_Enabled gUnknown_83E23E8:: @ 83E23E8 - .incbin "baserom.gba", 0x3E23E8, 0xA + .2byte 0x0000, 0x0000, 0x0000, 0xffff, 0x0001 gUnknown_83E23F2:: @ 83E23F2 - .incbin "baserom.gba", 0x3E23F2, 0xA + .2byte 0x0000, 0xffff, 0x0001, 0x0000, 0x0000 gUnknown_83E23FC:: @ 83E23FC - .incbin "baserom.gba", 0x3E23FC, 0x8 + .2byte 0x0000, 0x0001, 0x0001, 0x0002 gUnknown_83E2404:: @ 83E2404 - .incbin "baserom.gba", 0x3E2404, 0x8 + .2byte 0x0000, 0x0000, 0x0003, 0x0000 gUnknown_83E240C:: @ 83E240C - .incbin "baserom.gba", 0x3E240C, 0x14 + .4byte sub_809F49C + .4byte sub_809F49C + .4byte sub_809F4F0 + .4byte sub_809F4F0 + .4byte sub_809F49C gUnknown_83E2420:: @ 83E2420 - .incbin "baserom.gba", 0x3E2420, 0x8 + .4byte nullsub_55 + .4byte sub_809F5C4 gUnknown_83E2428:: @ 83E2428 - .incbin "baserom.gba", 0x3E2428, 0x14 + .byte 0x00, 0x09, 0x08, 0x00 + .byte 0x05, 0x04, 0x00, 0x00 + +gUnknown_83E2430:: @ 83E2430 + .byte 0x0d, 0x01, 0x02, 0x00 + +gUnknown_83E2434:: @ 83E2434 + .byte 0x0e, 0x01, 0x02, 0x00 + +gUnknown_83E2438:: @ 83E2438 + .byte 0x0f, 0x01, 0x02, 0x00 gUnknown_83E243C:: @ 83E243C - .incbin "baserom.gba", 0x3E243C, 0x4 + .byte 0xee, 0xdd, 0xff, 0x00 gUnknown_83E2440:: @ 83E2440 - .incbin "baserom.gba", 0x3E2440, 0xC + .4byte gUnknown_83E2434 + .4byte gUnknown_83E2430 + .4byte gUnknown_83E2438 gUnknown_83E244C:: @ 83E244C - .incbin "baserom.gba", 0x3E244C, 0xC + .4byte gUnknown_8E98398 + .4byte gUnknown_8E98458 + .4byte gUnknown_8E98518 gUnknown_83E2458:: @ 83E2458 - .incbin "baserom.gba", 0x3E2458, 0x34 + .byte 0x0f, 0x01, 0x02 + + .align 2 +gUnknown_83E245C:: @ 83E245C + .byte 0x00, 0x07, 0x01, 0x00, 0x01 + .align 2 + .4byte gUnknown_8418E47 + +gUnknown_83E2468:: @ 83E2468 + .byte 0x00, 0x08, 0x02, 0x00, 0x01 + .align 2 + .4byte gUnknown_8418E52 + +gUnknown_83E2474:: @ 83E2474 + .byte 0x00, 0x0a, 0x03, 0x01, 0x01 + .align 2 + .4byte gUnknown_8418E5C + +gUnknown_83E2480:: @ 83E2480 + .byte 0x00, 0x07, 0x04, 0x00, 0x01 + .align 2 + .4byte gUnknown_8418E69 gUnknown_83E248C:: @ 83E248C - .incbin "baserom.gba", 0x3E248C, 0x78 + .4byte gUnknown_83E245C + .4byte gUnknown_83E2468 + .4byte gUnknown_83E2474 + .4byte gUnknown_83E2474 + .4byte gUnknown_83E2480 + +gUnknown_83E24A0:: @ 83E24A0 + .4byte 0x00000000, 0x00000000 + +gUnknown_83E24A8:: @ 3E24A8 + .4byte 0x40000000, 0x00000000 + +gUnknown_83E24B0:: @ 3E24B0 + .4byte 0x80004000, 0x00000000 + +gUnknown_83E24B8:: @ 83E24B8 + subsprite 236, 240, 1, 0x0000, 32x8 + subsprite 12, 240, 1, 0x0004, 8x8 + subsprite 236, 248, 1, 0x0005, 32x8 + subsprite 12, 248, 1, 0x0009, 8x8 + subsprite 236, 0, 1, 0x000a, 32x8 + subsprite 12, 0, 1, 0x000e, 8x8 + subsprite 236, 8, 1, 0x000f, 32x8 + subsprite 12, 8, 1, 0x0013, 8x8 + +gUnknown_83E24D8:: @ 83E24D8 + subsprite 244, 252, 1, 0x0000, 16x8 + subsprite 4, 252, 1, 0x0002, 8x8 + +gUnknown_83E24E0:: @ 83E24E0 + subsprite 236, 244, 1, 0x0000, 32x8 + subsprite 12, 244, 1, 0x0004, 8x8 + subsprite 236, 252, 1, 0x0005, 32x8 + subsprite 12, 252, 1, 0x0009, 8x8 + subsprite 236, 4, 1, 0x000a, 32x8 + subsprite 12, 4, 1, 0x000e, 8x8 + +gUnknown_83E24F8:: + subsprite 248, 244, 3, 0x0000, 16x8 + subsprite 248, 252, 3, 0x0002, 16x8 + subsprite 248, 4, 3, 0x0004, 16x8 gUnknown_83E2504:: @ 83E2504 - .incbin "baserom.gba", 0x3E2504, 0x8 + .byte 0x08 + .align 2 + .4byte gUnknown_83E24B8 gUnknown_83E250C:: @ 83E250C - .incbin "baserom.gba", 0x3E250C, 0x18 + .byte 0x02 + .align 2 + .4byte gUnknown_83E24D8 + .byte 0x02 + .align 2 + .4byte gUnknown_83E24D8 + .byte 0x02 + .align 2 + .4byte gUnknown_83E24D8 gUnknown_83E2524:: @ 83E2524 - .incbin "baserom.gba", 0x3E2524, 0x8 + .byte 0x06 + .align 2 + .4byte gUnknown_83E24E0 gUnknown_83E252C:: @ 83E252C - .incbin "baserom.gba", 0x3E252C, 0x48 + .byte 0x03 + .align 2 + .4byte gUnknown_83E24F8 + +gUnknown_83E2534:: @ 83E2534 + obj_frame_tiles gUnknown_83E1800, 0x00c0 + obj_frame_tiles gUnknown_83E18C0, 0x00c0 + +gUnknown_83E2544:: @ 83E2544 + obj_image_anim_frame 0, 1 + obj_image_anim_jump 0 + +gUnknown_83E254C:: @ 83E254C + obj_image_anim_frame 4, 8 + obj_image_anim_frame 8, 8 + obj_image_anim_end + +gUnknown_83E2558:: @ 83E2558 + obj_image_anim_frame 0, 2 + obj_image_anim_frame 1, 2 + obj_image_anim_jump 0 + +gUnknown_83E2564:: @ 83E2564 + .4byte gUnknown_83E2544 + +gUnknown_83E2568:: @ 83E2568 + .4byte gUnknown_83E2544 + .4byte gUnknown_83E254C + +gUnknown_83E2570:: @ 83E2570 + .4byte gUnknown_83E2558 gUnknown_83E2574:: @ 83E2574 - .incbin "baserom.gba", 0x3E2574, 0x18 + spr_template 2, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809EC54 gUnknown_83E258C:: @ 83E258C - .incbin "baserom.gba", 0x3E258C, 0x18 + spr_template 3, 1, gUnknown_83E24B0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E25A4:: @ 83E25A4 - .incbin "baserom.gba", 0x3E25A4, 0x18 + spr_template 4, 4, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E25BC:: @ 83E25BC - .incbin "baserom.gba", 0x3E25BC, 0x18 + spr_template 0, 6, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E25D4:: @ 83E25D4 - .incbin "baserom.gba", 0x3E25D4, 0x18 + spr_template 1, 7, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E25EC:: @ 83E25EC - .incbin "baserom.gba", 0x3E25EC, 0x18 + spr_template 7, 5, gUnknown_83E24A8, gUnknown_83E2568, NULL, gDummySpriteAffineAnimTable, sub_809E700 gUnknown_83E2604:: @ 83E2604 - .incbin "baserom.gba", 0x3E2604, 0x18 + spr_template 10, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E7F0 gUnknown_83E261C:: @ 83E261C - .incbin "baserom.gba", 0x3E261C, 0x18 + spr_template 11, 3, gUnknown_83E24A0, gUnknown_83E2564, NULL, gDummySpriteAffineAnimTable, sub_809E83C gUnknown_83E2634:: @ 83E2634 - .incbin "baserom.gba", 0x3E2634, 0x18 + spr_template 65535, 0, gUnknown_83E24A0, gUnknown_83E2570, gUnknown_83E2534, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_83E264C:: @ 83E264C - .incbin "baserom.gba", 0x3E264C, 0x30 + .4byte gUnknown_847A955 + .4byte gUnknown_847A976 + .4byte gUnknown_847A997 + .4byte gUnknown_847A9B8 + .4byte gUnknown_847A9D9 + .4byte gUnknown_847A9FA + .4byte gUnknown_847AA1B + .4byte gUnknown_847AA3C + .4byte gUnknown_847AA5D + .4byte gUnknown_847AA76 + .4byte gUnknown_847AA8F + .4byte gUnknown_847AAA8 gUnknown_83E267C:: @ 83E267C - .incbin "baserom.gba", 0x3E267C, 0x68 + obj_tiles gUnknown_8E98858, 0x01e0, 0 + obj_tiles gUnknown_8E98A38, 0x01e0, 1 + obj_tiles gUnknown_8E985D8, 0x0280, 2 + obj_tiles gUnknown_8E98FD8, 0x0100, 3 + obj_tiles gUnknown_8E98C18, 0x0060, 4 + obj_tiles gUnknown_8E98CB8, 0x0060, 5 + obj_tiles gUnknown_8E98D58, 0x0060, 6 + obj_tiles gUnknown_8E98DF8, 0x0080, 7 + obj_tiles gUnknown_8E98E98, 0x0080, 8 + obj_tiles gUnknown_8E98F38, 0x0080, 9 + obj_tiles gUnknown_8E990D8, 0x0020, 10 + obj_tiles gUnknown_8E990F8, 0x0020, 11 + null_obj_tiles gUnknown_83E26E4:: @ 83E26E4 - .incbin "baserom.gba", 0x3E26E4, 0x48 + obj_pal gUnknown_8E98024, 0 + obj_pal gUnknown_8E98044, 1 + obj_pal gUnknown_8E98064, 2 + obj_pal gUnknown_8E98084, 3 + obj_pal gUnknown_8E980A4, 4 + obj_pal gUnknown_8E980C4, 5 + obj_pal gUnknown_8E980A4, 6 + obj_pal gUnknown_8E980A4, 7 + null_obj_pal diff --git a/graphics/interface/naming_screen_83E1800.png b/graphics/interface/naming_screen_83E1800.png new file mode 100644 index 000000000..a24d40836 Binary files /dev/null and b/graphics/interface/naming_screen_83E1800.png differ diff --git a/graphics/interface/naming_screen_83E18C0.png b/graphics/interface/naming_screen_83E18C0.png new file mode 100644 index 000000000..1985816c3 Binary files /dev/null and b/graphics/interface/naming_screen_83E18C0.png differ diff --git a/graphics/interface/naming_screen_83E1980.png b/graphics/interface/naming_screen_83E1980.png new file mode 100644 index 000000000..b69dadcc4 Binary files /dev/null and b/graphics/interface/naming_screen_83E1980.png differ diff --git a/graphics/interface/naming_screen_8E98004.pal b/graphics/interface/naming_screen_8E98004.pal new file mode 100644 index 000000000..c3158adbf --- /dev/null +++ b/graphics/interface/naming_screen_8E98004.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +255 213 180 +255 197 148 +222 148 115 +123 65 65 +213 172 65 +156 106 32 +106 74 32 +115 189 0 +65 123 0 +32 65 16 +213 115 164 +164 65 115 +82 32 65 +230 230 49 +0 0 0 diff --git a/graphics/interface/naming_screen_8E98024.pal b/graphics/interface/naming_screen_8E98024.pal new file mode 100644 index 000000000..2f5c86a56 --- /dev/null +++ b/graphics/interface/naming_screen_8E98024.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 255 255 +115 115 115 +139 139 131 +172 172 164 +197 189 180 +230 222 213 +197 230 156 +213 238 189 +230 246 222 +0 0 0 +0 0 0 +213 205 82 +230 222 90 +238 230 139 +246 238 197 diff --git a/graphics/interface/naming_screen_8E98044.pal b/graphics/interface/naming_screen_8E98044.pal new file mode 100644 index 000000000..af5c2d1a5 --- /dev/null +++ b/graphics/interface/naming_screen_8E98044.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 255 255 +57 57 57 +115 115 115 +0 0 0 +0 0 0 +0 0 0 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +74 115 139 +98 139 164 +123 172 197 +156 205 230 +180 222 246 diff --git a/graphics/interface/naming_screen_8E98064.pal b/graphics/interface/naming_screen_8E98064.pal new file mode 100644 index 000000000..0fac7e375 --- /dev/null +++ b/graphics/interface/naming_screen_8E98064.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 255 255 +57 57 57 +115 115 115 +0 0 0 +0 0 0 +0 0 0 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +172 115 74 +189 131 90 +213 156 115 +246 205 164 +255 230 197 diff --git a/graphics/interface/naming_screen_8E98084.pal b/graphics/interface/naming_screen_8E98084.pal new file mode 100644 index 000000000..0bb9d4f71 --- /dev/null +++ b/graphics/interface/naming_screen_8E98084.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 255 255 +57 57 57 +115 115 115 +0 0 0 +0 0 0 +0 0 0 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +98 156 57 +123 172 82 +148 189 106 +197 230 156 +213 238 189 diff --git a/graphics/interface/naming_screen_8E980A4.pal b/graphics/interface/naming_screen_8E980A4.pal new file mode 100644 index 000000000..fdf80bdb0 --- /dev/null +++ b/graphics/interface/naming_screen_8E980A4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 255 255 +57 57 57 +139 139 131 +197 189 180 +230 222 213 +74 115 139 +123 172 197 +172 115 74 +213 156 115 +98 156 57 +148 189 106 +189 164 32 +230 222 90 +57 57 57 +57 57 57 diff --git a/graphics/interface/naming_screen_8E980C4.pal b/graphics/interface/naming_screen_8E980C4.pal new file mode 100644 index 000000000..8950f9b34 --- /dev/null +++ b/graphics/interface/naming_screen_8E980C4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +106 156 213 +255 8 8 +222 57 74 +180 65 82 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +230 222 213 +0 0 0 +230 222 213 +0 0 0 diff --git a/graphics/interface/naming_screen_8E985D8.png b/graphics/interface/naming_screen_8E985D8.png new file mode 100644 index 000000000..1e8f40983 Binary files /dev/null and b/graphics/interface/naming_screen_8E985D8.png differ diff --git a/graphics/interface/naming_screen_8E98858.png b/graphics/interface/naming_screen_8E98858.png new file mode 100644 index 000000000..57c434194 Binary files /dev/null and b/graphics/interface/naming_screen_8E98858.png differ diff --git a/graphics/interface/naming_screen_8E98A38.png b/graphics/interface/naming_screen_8E98A38.png new file mode 100644 index 000000000..51acd15d1 Binary files /dev/null and b/graphics/interface/naming_screen_8E98A38.png differ diff --git a/graphics/interface/naming_screen_8E98C18.png b/graphics/interface/naming_screen_8E98C18.png new file mode 100644 index 000000000..68f0637b4 Binary files /dev/null and b/graphics/interface/naming_screen_8E98C18.png differ diff --git a/graphics/interface/naming_screen_8E98CB8.png b/graphics/interface/naming_screen_8E98CB8.png new file mode 100644 index 000000000..741c5e589 Binary files /dev/null and b/graphics/interface/naming_screen_8E98CB8.png differ diff --git a/graphics/interface/naming_screen_8E98D58.png b/graphics/interface/naming_screen_8E98D58.png new file mode 100644 index 000000000..32afa5282 Binary files /dev/null and b/graphics/interface/naming_screen_8E98D58.png differ diff --git a/graphics/interface/naming_screen_8E98DF8.png b/graphics/interface/naming_screen_8E98DF8.png new file mode 100644 index 000000000..e34896cb9 Binary files /dev/null and b/graphics/interface/naming_screen_8E98DF8.png differ diff --git a/graphics/interface/naming_screen_8E98E98.png b/graphics/interface/naming_screen_8E98E98.png new file mode 100644 index 000000000..45197320d Binary files /dev/null and b/graphics/interface/naming_screen_8E98E98.png differ diff --git a/graphics/interface/naming_screen_8E98F38.png b/graphics/interface/naming_screen_8E98F38.png new file mode 100644 index 000000000..bf1049e89 Binary files /dev/null and b/graphics/interface/naming_screen_8E98F38.png differ diff --git a/graphics/interface/naming_screen_8E98FD8.png b/graphics/interface/naming_screen_8E98FD8.png new file mode 100644 index 000000000..6c8fa888d Binary files /dev/null and b/graphics/interface/naming_screen_8E98FD8.png differ diff --git a/graphics/interface/naming_screen_8E990D8.png b/graphics/interface/naming_screen_8E990D8.png new file mode 100644 index 000000000..dd3f2a671 Binary files /dev/null and b/graphics/interface/naming_screen_8E990D8.png differ diff --git a/graphics/interface/naming_screen_8E990F8.png b/graphics/interface/naming_screen_8E990F8.png new file mode 100644 index 000000000..5d631ce99 Binary files /dev/null and b/graphics/interface/naming_screen_8E990F8.png differ -- cgit v1.2.3 From 9c826fdb3ee3a70fa4d3f9bb38f15e8081eaaaa9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Nov 2019 12:08:45 -0500 Subject: Fix incbins --- data/graphics.s | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/data/graphics.s b/data/graphics.s index ff8c08e51..a886e2a56 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16125,40 +16125,40 @@ gUnknown_8E98518:: @ 8E98518 .incbin "baserom.gba", 0xE98518, 0xC0 gUnknown_8E985D8:: @ 8E985D8 - .incbin "graphics/interface/naming_screen_8E985D8" + .incbin "graphics/interface/naming_screen_8E985D8.4bpp" gUnknown_8E98858:: @ 8E98858 - .incbin "graphics/interface/naming_screen_8E98858" + .incbin "graphics/interface/naming_screen_8E98858.4bpp" gUnknown_8E98A38:: @ 8E98A38 - .incbin "graphics/interface/naming_screen_8E98A38" + .incbin "graphics/interface/naming_screen_8E98A38.4bpp" gUnknown_8E98C18:: @ 8E98C18 - .incbin "graphics/interface/naming_screen_8E98C18" + .incbin "graphics/interface/naming_screen_8E98C18.4bpp" gUnknown_8E98CB8:: @ 8E98CB8 - .incbin "graphics/interface/naming_screen_8E98CB8" + .incbin "graphics/interface/naming_screen_8E98CB8.4bpp" gUnknown_8E98D58:: @ 8E98D58 - .incbin "graphics/interface/naming_screen_8E98D58" + .incbin "graphics/interface/naming_screen_8E98D58.4bpp" gUnknown_8E98DF8:: @ 8E98DF8 - .incbin "graphics/interface/naming_screen_8E98DF8" + .incbin "graphics/interface/naming_screen_8E98DF8.4bpp" gUnknown_8E98E98:: @ 8E98E98 - .incbin "graphics/interface/naming_screen_8E98E98" + .incbin "graphics/interface/naming_screen_8E98E98.4bpp" gUnknown_8E98F38:: @ 8E98F38 - .incbin "graphics/interface/naming_screen_8E98F38" + .incbin "graphics/interface/naming_screen_8E98F38.4bpp" gUnknown_8E98FD8:: @ 8E98FD8 - .incbin "graphics/interface/naming_screen_8E98FD8" + .incbin "graphics/interface/naming_screen_8E98FD8.4bpp" gUnknown_8E990D8:: @ 8E990D8 - .incbin "graphics/interface/naming_screen_8E990D8" + .incbin "graphics/interface/naming_screen_8E990D8.4bpp" gUnknown_8E990F8:: @ 8E990F8 - .incbin "graphics/interface/naming_screen_8E990F8" + .incbin "graphics/interface/naming_screen_8E990F8.4bpp" gUnknown_8E99118:: @ 8E99118 .incbin "graphics/tm_case/unk_8E99118.4bpp" -- cgit v1.2.3 From b62688270824fc245ce99822ac3b8c46732a71b8 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 30 Nov 2019 10:50:58 -0500 Subject: all matching except Task_DoPokeballSendOutAnim --- asm/battle_anim_special.s | 8 +- asm/pokemon_summary_screen.s | 4 +- data/graphics.s | 50 +-- data/pokeball.s | 116 ------ include/graphics.h | 50 +-- include/pokeball.h | 2 +- include/task.h | 2 +- ld_script.txt | 2 +- src/pokeball.c | 907 +++++++++++++++++++++++++++---------------- 9 files changed, 633 insertions(+), 508 deletions(-) delete mode 100644 data/pokeball.s diff --git a/asm/battle_anim_special.s b/asm/battle_anim_special.s index e49ba538c..3f56279eb 100644 --- a/asm/battle_anim_special.s +++ b/asm/battle_anim_special.s @@ -1219,7 +1219,7 @@ sub_80EF5AC: @ 80EF5AC lsls r0, r1, 1 adds r0, r1 lsls r0, 3 - ldr r1, _080EF678 @ =gUnknown_82606F4 + ldr r1, _080EF678 @ =gBallSpriteTemplates adds r0, r1 movs r1, 0x20 movs r2, 0x50 @@ -1298,7 +1298,7 @@ sub_80EF5AC: @ 80EF5AC bx r0 .align 2, 0 _080EF674: .4byte gLastUsedItem -_080EF678: .4byte gUnknown_82606F4 +_080EF678: .4byte gBallSpriteTemplates _080EF67C: .4byte gSprites _080EF680: .4byte gBattleAnimTarget _080EF684: .4byte sub_80EF8C0 @@ -1387,7 +1387,7 @@ _080EF708: lsls r0, r4, 1 adds r0, r4 lsls r0, 3 - ldr r1, _080EF7CC @ =gUnknown_82606F4 + ldr r1, _080EF7CC @ =gBallSpriteTemplates adds r0, r1 movs r1, 0x20 orrs r5, r1 @@ -1458,7 +1458,7 @@ _080EF708: .align 2, 0 _080EF7C4: .4byte gSaveBlock2Ptr _080EF7C8: .4byte gLastUsedItem -_080EF7CC: .4byte gUnknown_82606F4 +_080EF7CC: .4byte gBallSpriteTemplates _080EF7D0: .4byte gSprites _080EF7D4: .4byte gBattleAnimTarget _080EF7D8: .4byte SpriteCallbackDummy diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index b345231f3..38e61a00c 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -10638,7 +10638,7 @@ _08139CDA: lsls r0, r4, 1 adds r0, r4 lsls r0, 3 - ldr r1, _08139D40 @ =gUnknown_82606F4 + ldr r1, _08139D40 @ =gBallSpriteTemplates adds r0, r1 movs r1, 0x6A movs r2, 0x58 @@ -10677,7 +10677,7 @@ _08139CDA: pop {r0} bx r0 .align 2, 0 -_08139D40: .4byte gUnknown_82606F4 +_08139D40: .4byte gBallSpriteTemplates _08139D44: .4byte gUnknown_203B140 _08139D48: .4byte 0x0000300c _08139D4C: .4byte gSprites diff --git a/data/graphics.s b/data/graphics.s index 818b01e3a..8eb5643d4 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -46,103 +46,103 @@ gFile_graphics_battle_anims_sprites_smokescreen_impact_palette:: @ 8D0170C .incbin "graphics/battle_anims/sprites/smokescreen_impact.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Poke_sheet:: @ 8D01724 +gInterfaceGfx_PokeBall:: @ 8D01724 .incbin "graphics/interface/ball/poke.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Poke_palette:: @ 8D017E0 +gInterfacePal_PokeBall:: @ 8D017E0 .incbin "graphics/interface/ball/poke.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Great_sheet:: @ 8D01800 +gInterfaceGfx_GreatBall:: @ 8D01800 .incbin "graphics/interface/ball/great.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Great_palette:: @ 8D018BC +gInterfacePal_GreatBall:: @ 8D018BC .incbin "graphics/interface/ball/great.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Safari_sheet:: @ 8D018E0 +gInterfaceGfx_SafariBall:: @ 8D018E0 .incbin "graphics/interface/ball/safari.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Safari_palette:: @ 8D019A4 +gInterfacePal_SafariBall:: @ 8D019A4 .incbin "graphics/interface/ball/safari.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Ultra_sheet:: @ 8D019C8 +gInterfaceGfx_UltraBall:: @ 8D019C8 .incbin "graphics/interface/ball/ultra.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Ultra_palette:: @ 8D01A7C +gInterfacePal_UltraBall:: @ 8D01A7C .incbin "graphics/interface/ball/ultra.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Master_sheet:: @ 8D01A9C +gInterfaceGfx_MasterBall:: @ 8D01A9C .incbin "graphics/interface/ball/master.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Master_palette:: @ 8D01B5C +gInterfacePal_MasterBall:: @ 8D01B5C .incbin "graphics/interface/ball/master.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Net_sheet:: @ 8D01B80 +gInterfaceGfx_NetBall:: @ 8D01B80 .incbin "graphics/interface/ball/net.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Net_palette:: @ 8D01C40 +gInterfacePal_NetBall:: @ 8D01C40 .incbin "graphics/interface/ball/net.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Dive_sheet:: @ 8D01C60 +gInterfaceGfx_DiveBall:: @ 8D01C60 .incbin "graphics/interface/ball/dive.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Dive_palette:: @ 8D01D74 +gInterfacePal_DiveBall:: @ 8D01D74 .incbin "graphics/interface/ball/dive.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Nest_sheet:: @ 8D01D9C +gInterfaceGfx_NestBall:: @ 8D01D9C .incbin "graphics/interface/ball/nest.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Nest_palette:: @ 8D01E60 +gInterfacePal_NestBall:: @ 8D01E60 .incbin "graphics/interface/ball/nest.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Repeat_sheet:: @ 8D01E84 +gInterfaceGfx_RepeatBall:: @ 8D01E84 .incbin "graphics/interface/ball/repeat.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Repeat_palette:: @ 8D01F44 +gInterfacePal_RepeatBall:: @ 8D01F44 .incbin "graphics/interface/ball/repeat.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Timer_sheet:: @ 8D01F68 +gInterfaceGfx_TimerBall:: @ 8D01F68 .incbin "graphics/interface/ball/timer.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Timer_palette:: @ 8D02060 +gInterfacePal_TimerBall:: @ 8D02060 .incbin "graphics/interface/ball/timer.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Luxury_sheet:: @ 8D02084 +gInterfaceGfx_LuxuryBall:: @ 8D02084 .incbin "graphics/interface/ball/luxury.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Luxury_palette:: @ 8D021B0 +gInterfacePal_LuxuryBall:: @ 8D021B0 .incbin "graphics/interface/ball/luxury.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Premier_sheet:: @ 8D021D8 +gInterfaceGfx_PremierBall:: @ 8D021D8 .incbin "graphics/interface/ball/premier.4bpp.lz" .align 2 -gFile_graphics_interface_ball_Premier_palette:: @ 8D022C8 +gInterfacePal_PremierBall:: @ 8D022C8 .incbin "graphics/interface/ball/premier.gbapal.lz" .align 2 -gFile_graphics_interface_ball_Open_sheet:: @ 8D022E8 +gOpenPokeballGfx:: @ 8D022E8 .incbin "graphics/interface/ball_open.4bpp.lz" .align 2 diff --git a/data/pokeball.s b/data/pokeball.s deleted file mode 100644 index db8dbfef5..000000000 --- a/data/pokeball.s +++ /dev/null @@ -1,116 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - -gUnknown_826056C:: @ 826056C - obj_tiles gFile_graphics_interface_ball_Poke_sheet, 0x180, 55000 - obj_tiles gFile_graphics_interface_ball_Great_sheet, 0x180, 55001 - obj_tiles gFile_graphics_interface_ball_Safari_sheet, 0x180, 55002 - obj_tiles gFile_graphics_interface_ball_Ultra_sheet, 0x180, 55003 - obj_tiles gFile_graphics_interface_ball_Master_sheet, 0x180, 55004 - obj_tiles gFile_graphics_interface_ball_Net_sheet, 0x180, 55005 - obj_tiles gFile_graphics_interface_ball_Dive_sheet, 0x180, 55006 - obj_tiles gFile_graphics_interface_ball_Nest_sheet, 0x180, 55007 - obj_tiles gFile_graphics_interface_ball_Repeat_sheet, 0x180, 55008 - obj_tiles gFile_graphics_interface_ball_Timer_sheet, 0x180, 55009 - obj_tiles gFile_graphics_interface_ball_Luxury_sheet, 0x180, 55010 - obj_tiles gFile_graphics_interface_ball_Premier_sheet, 0x180, 55011 - -gUnknown_82605CC:: @ 82605CC - obj_pal gFile_graphics_interface_ball_Poke_palette, 55000 - obj_pal gFile_graphics_interface_ball_Great_palette, 55001 - obj_pal gFile_graphics_interface_ball_Safari_palette, 55002 - obj_pal gFile_graphics_interface_ball_Ultra_palette, 55003 - obj_pal gFile_graphics_interface_ball_Master_palette, 55004 - obj_pal gFile_graphics_interface_ball_Net_palette, 55005 - obj_pal gFile_graphics_interface_ball_Dive_palette, 55006 - obj_pal gFile_graphics_interface_ball_Nest_palette, 55007 - obj_pal gFile_graphics_interface_ball_Repeat_palette, 55008 - obj_pal gFile_graphics_interface_ball_Timer_palette, 55009 - obj_pal gFile_graphics_interface_ball_Luxury_palette, 55010 - obj_pal gFile_graphics_interface_ball_Premier_palette, 55011 - -gOamData_826062C:: @ 826062C - .4byte 0x40000300, 0x00000800 - -gSpriteAnim_8260634:: @ 8260634 - obj_image_anim_frame 0x0, 0x5 - obj_image_anim_jump 0 - -gSpriteAnim_826063C:: @ 826063C - obj_image_anim_frame 0x4, 0x1 - obj_image_anim_jump 0 - -gSpriteAnim_8260644:: @ 8260644 - obj_image_anim_frame 0x8, 0x5 - obj_image_anim_jump 0 - -gSpriteAnim_826064C:: @ 826064C - obj_image_anim_frame 0xc, 0x1 - obj_image_anim_jump 0 - -gSpriteAnim_8260654:: @ 8260654 - obj_image_anim_frame 0x0, 0x1 - obj_image_anim_end - -gSpriteAnim_826065C:: @ 826065C - obj_image_anim_frame 0x4, 0x5 - obj_image_anim_frame 0x8, 0x5 - obj_image_anim_end - -gSpriteAnim_8260668:: @ 8260668 - obj_image_anim_frame 0x4, 0x5 - obj_image_anim_frame 0x0, 0x5 - obj_image_anim_end - -gSpriteAnimTable_8260674:: - .4byte gSpriteAnim_8260654 - .4byte gSpriteAnim_826065C - .4byte gSpriteAnim_8260668 - .4byte gSpriteAnim_8260634 - .4byte gSpriteAnim_8260644 - .4byte gSpriteAnim_826063C - .4byte gSpriteAnim_826064C - -gSpriteAffineAnims_8260690:: - obj_rot_scal_anim_frame 0x0, 0x0, 0x0, 0x1 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnims_82606A0:: - obj_rot_scal_anim_frame 0x0, 0x0, 0xfd, 0x1 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnims_82606B0:: - obj_rot_scal_anim_frame 0x0, 0x0, 0x3, 0x1 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnims_82606C0:: - obj_rot_scal_anim_frame 0x100, 0x100, 0x0, 0x0 - obj_rot_scal_anim_end - -gSpriteAffineAnims_82606D0:: - obj_rot_scal_anim_frame 0x0, 0x0, 0x19, 0x1 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnimTable_82606E0:: - .4byte gSpriteAffineAnims_8260690 - .4byte gSpriteAffineAnims_82606A0 - .4byte gSpriteAffineAnims_82606B0 - .4byte gSpriteAffineAnims_82606C0 - .4byte gSpriteAffineAnims_82606D0 - -gUnknown_82606F4:: @ 82606F4 - spr_template 55000, 55000, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55001, 55001, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55002, 55002, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55003, 55003, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55004, 55004, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55005, 55005, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55006, 55006, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55007, 55007, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55008, 55008, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55009, 55009, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55010, 55010, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow - spr_template 55011, 55011, gOamData_826062C, gSpriteAnimTable_8260674, NULL, gSpriteAffineAnimTable_82606E0, SpriteCB_TestBallThrow diff --git a/include/graphics.h b/include/graphics.h index 93efbd135..fb9bb29ac 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -7,31 +7,31 @@ #include "global.h" -extern const u8 gInterfaceGfx_PokeBall[]; -extern const u8 gInterfacePal_PokeBall[]; -extern const u8 gInterfaceGfx_GreatBall[]; -extern const u8 gInterfacePal_GreatBall[]; -extern const u8 gInterfaceGfx_SafariBall[]; -extern const u8 gInterfacePal_SafariBall[]; -extern const u8 gInterfaceGfx_UltraBall[]; -extern const u8 gInterfacePal_UltraBall[]; -extern const u8 gInterfaceGfx_MasterBall[]; -extern const u8 gInterfacePal_MasterBall[]; -extern const u8 gInterfaceGfx_NetBall[]; -extern const u8 gInterfacePal_NetBall[]; -extern const u8 gInterfaceGfx_DiveBall[]; -extern const u8 gInterfacePal_DiveBall[]; -extern const u8 gInterfaceGfx_NestBall[]; -extern const u8 gInterfacePal_NestBall[]; -extern const u8 gInterfaceGfx_RepeatBall[]; -extern const u8 gInterfacePal_RepeatBall[]; -extern const u8 gInterfaceGfx_TimerBall[]; -extern const u8 gInterfacePal_TimerBall[]; -extern const u8 gInterfaceGfx_LuxuryBall[]; -extern const u8 gInterfacePal_LuxuryBall[]; -extern const u8 gInterfaceGfx_PremierBall[]; -extern const u8 gInterfacePal_PremierBall[]; -extern const u8 gOpenPokeballGfx[]; +extern const u32 gInterfaceGfx_PokeBall[]; +extern const u32 gInterfacePal_PokeBall[]; +extern const u32 gInterfaceGfx_GreatBall[]; +extern const u32 gInterfacePal_GreatBall[]; +extern const u32 gInterfaceGfx_SafariBall[]; +extern const u32 gInterfacePal_SafariBall[]; +extern const u32 gInterfaceGfx_UltraBall[]; +extern const u32 gInterfacePal_UltraBall[]; +extern const u32 gInterfaceGfx_MasterBall[]; +extern const u32 gInterfacePal_MasterBall[]; +extern const u32 gInterfaceGfx_NetBall[]; +extern const u32 gInterfacePal_NetBall[]; +extern const u32 gInterfaceGfx_DiveBall[]; +extern const u32 gInterfacePal_DiveBall[]; +extern const u32 gInterfaceGfx_NestBall[]; +extern const u32 gInterfacePal_NestBall[]; +extern const u32 gInterfaceGfx_RepeatBall[]; +extern const u32 gInterfacePal_RepeatBall[]; +extern const u32 gInterfaceGfx_TimerBall[]; +extern const u32 gInterfacePal_TimerBall[]; +extern const u32 gInterfaceGfx_LuxuryBall[]; +extern const u32 gInterfacePal_LuxuryBall[]; +extern const u32 gInterfaceGfx_PremierBall[]; +extern const u32 gInterfacePal_PremierBall[]; +extern const u32 gOpenPokeballGfx[]; // pokemon gfx extern const u32 gMonFrontPic_Bulbasaur[]; diff --git a/include/pokeball.h b/include/pokeball.h index 9a4299531..0e941f9ed 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -24,7 +24,6 @@ enum #define POKEBALL_OPPONENT_SENDOUT 0xFE u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); -//void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species) void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 CreateTradePokeballSprite(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); @@ -33,5 +32,6 @@ void DoHitAnimHealthboxEffect(u8 bank); void LoadBallGfx(u8 ballId); void FreeBallGfx(u8 ballId); void sub_804BD94(u8 battler); +void DestroySpriteAndFreeResources2(struct Sprite *sprite); #endif // GUARD_POKEBALL_H diff --git a/include/task.h b/include/task.h index 785dbe6d4..7a7a2ff22 100644 --- a/include/task.h +++ b/include/task.h @@ -15,7 +15,7 @@ struct Task /*0x05*/ u8 prev; /*0x06*/ u8 next; /*0x07*/ u8 priority; - /*0x08*/ s16 data[16]; //8, a, c, e, 10, 12, 14, 16, 18, 1a, 1c, 1e, 20, 22, 24, 26 + /*0x08*/ s16 data[16]; }; /*size = 0x28*/ extern struct Task gTasks[]; diff --git a/ld_script.txt b/ld_script.txt index c5dfe1797..50cb621ab 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -400,7 +400,7 @@ SECTIONS { src/daycare.o(.rodata); src/battle_gfx_sfx_util.o(.rodata); data/battle_interface.o(.rodata); - data/pokeball.o(.rodata); + src/pokeball.o(.rodata); src/trade.o(.rodata); src/trade_scene.o(.rodata); data/overworld.o(.rodata); diff --git a/src/pokeball.c b/src/pokeball.c index 0626b4714..171e1beb9 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -25,6 +25,19 @@ #define sBattler data[6] +#define GFX_TAG_POKE_BALL 55000 +#define GFX_TAG_GREAT_BALL 55001 +#define GFX_TAG_SAFARI_BALL 55002 +#define GFX_TAG_ULTRA_BALL 55003 +#define GFX_TAG_MASTER_BALL 55004 +#define GFX_TAG_NET_BALL 55005 +#define GFX_TAG_DIVE_BALL 55006 +#define GFX_TAG_NEST_BALL 55007 +#define GFX_TAG_REPEAT_BALL 55008 +#define GFX_TAG_TIMER_BALL 55009 +#define GFX_TAG_LUXURY_BALL 55010 +#define GFX_TAG_PREMIER_BALL 55011 + // Function Declarations static void Task_DoPokeballSendOutAnim(u8 taskId); static void SpriteCB_TestBallThrow(struct Sprite *sprite); @@ -51,24 +64,272 @@ static void sub_804BAA4(struct Sprite *sprite); static void sub_804BC50(struct Sprite *sprite); static void sub_804BCF8(struct Sprite *sprite); static void sub_804BD6C(struct Sprite *sprite); -static void DestroySpriteAndFreeResources2(struct Sprite *sprite); static void sub_804BE24(struct Sprite *sprite); static void sub_804BE48(struct Sprite *sprite); static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite); static u16 GetBattlerPokeballItemId(u8 battlerId); // Data -extern const struct SpriteTemplate gUnknown_82606F4[]; +const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT] = +{ + {gInterfaceGfx_PokeBall, 384, GFX_TAG_POKE_BALL}, + {gInterfaceGfx_GreatBall, 384, GFX_TAG_GREAT_BALL}, + {gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARI_BALL}, + {gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRA_BALL}, + {gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTER_BALL}, + {gInterfaceGfx_NetBall, 384, GFX_TAG_NET_BALL}, + {gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVE_BALL}, + {gInterfaceGfx_NestBall, 384, GFX_TAG_NEST_BALL}, + {gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEAT_BALL}, + {gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMER_BALL}, + {gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURY_BALL}, + {gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIER_BALL}, +}; + +const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] = +{ + {gInterfacePal_PokeBall, GFX_TAG_POKE_BALL}, + {gInterfacePal_GreatBall, GFX_TAG_GREAT_BALL}, + {gInterfacePal_SafariBall, GFX_TAG_SAFARI_BALL}, + {gInterfacePal_UltraBall, GFX_TAG_ULTRA_BALL}, + {gInterfacePal_MasterBall, GFX_TAG_MASTER_BALL}, + {gInterfacePal_NetBall, GFX_TAG_NET_BALL}, + {gInterfacePal_DiveBall, GFX_TAG_DIVE_BALL}, + {gInterfacePal_NestBall, GFX_TAG_NEST_BALL}, + {gInterfacePal_RepeatBall, GFX_TAG_REPEAT_BALL}, + {gInterfacePal_TimerBall, GFX_TAG_TIMER_BALL}, + {gInterfacePal_LuxuryBall, GFX_TAG_LUXURY_BALL}, + {gInterfacePal_PremierBall, GFX_TAG_PREMIER_BALL}, +}; + +static const struct OamData sBallOamData = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sBallAnimSeq3[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sBallAnimSeq5[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sBallAnimSeq4[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sBallAnimSeq6[] = +{ + ANIMCMD_FRAME(12, 1), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd sBallAnimSeq0[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sBallAnimSeq1[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; -extern const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT]; -extern const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT]; -extern const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT]; +static const union AnimCmd sBallAnimSeq2[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBallAnimSequences[] = +{ + sBallAnimSeq0, + sBallAnimSeq1, + sBallAnimSeq2, + sBallAnimSeq3, + sBallAnimSeq4, + sBallAnimSeq5, + sBallAnimSeq6, +}; + +static const union AffineAnimCmd sBallAffineAnimSeq0[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sBallAffineAnimSeq1[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -3, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sBallAffineAnimSeq2[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 3, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd sBallAffineAnimSeq3[] = +{ + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sBallAffineAnimSeq4[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 25, 1), + AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd *const sBallAffineAnimSequences[] = +{ + sBallAffineAnimSeq0, + sBallAffineAnimSeq1, + sBallAffineAnimSeq2, + sBallAffineAnimSeq3, + sBallAffineAnimSeq4, +}; + +const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = +{ + { + .tileTag = GFX_TAG_POKE_BALL, + .paletteTag = GFX_TAG_POKE_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_GREAT_BALL, + .paletteTag = GFX_TAG_GREAT_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_SAFARI_BALL, + .paletteTag = GFX_TAG_SAFARI_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_ULTRA_BALL, + .paletteTag = GFX_TAG_ULTRA_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_MASTER_BALL, + .paletteTag = GFX_TAG_MASTER_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_NET_BALL, + .paletteTag = GFX_TAG_NET_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_DIVE_BALL, + .paletteTag = GFX_TAG_DIVE_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_NEST_BALL, + .paletteTag = GFX_TAG_NEST_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_REPEAT_BALL, + .paletteTag = GFX_TAG_REPEAT_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_TIMER_BALL, + .paletteTag = GFX_TAG_TIMER_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_LUXURY_BALL, + .paletteTag = GFX_TAG_LUXURY_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, + { + .tileTag = GFX_TAG_PREMIER_BALL, + .paletteTag = GFX_TAG_PREMIER_BALL, + .oam = &sBallOamData, + .anims = sBallAnimSequences, + .images = NULL, + .affineAnims = sBallAffineAnimSequences, + .callback = SpriteCB_TestBallThrow, + }, +}; // Functions u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) { u8 taskId; - + gDoingBattleAnim = TRUE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = 1; taskId = CreateTask(Task_DoPokeballSendOutAnim, 5); @@ -79,6 +340,7 @@ u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) } #ifdef NONMATCHING +//gender is an unused variable that still manages to show up in the assembly, can't get temporary variables to make it work. static void Task_DoPokeballSendOutAnim(u8 taskId) { u16 throwCaseId; @@ -86,7 +348,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) u16 itemId, ballId; u8 ballSpriteId; bool8 notSendOut = FALSE; - u8 gender; + u8 gender, temp; if (gTasks[taskId].tFrames == 0) { @@ -104,12 +366,14 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) ballId = ItemIdToBallId(itemId); LoadBallGfx(ballId); - if (gBattleTypeFlags & BATTLE_TYPE_LINK) - gender = gLinkPlayers[GetBattlerMultiplayerId(battlerId)].gender; - else - gender = gSaveBlock2Ptr->playerGender; - - ballSpriteId = CreateSprite(&gUnknown_82606F4[ballId], 32, 80, 29); + + // r10 is set to gender byte here and loaded into a temporary variable to be immediately overwritten by an unused variable.. + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + gender = gLinkPlayers[GetBattlerMultiplayerId(battlerId)].gender; + else + gender = gSaveBlock2Ptr->playerGender; + + ballSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29); gSprites[ballSpriteId].data[0] = 0x80; gSprites[ballSpriteId].data[1] = 0; gSprites[ballSpriteId].data[7] = throwCaseId; @@ -117,19 +381,19 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) switch (throwCaseId) { case POKEBALL_PLAYER_SENDOUT: - if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) - { - gSprites[ballSpriteId].pos1.x = 32; - gSprites[ballSpriteId].pos1.y = 64; - } - else - { - gender == gender; - gSprites[ballSpriteId].pos1.x = 48; - gSprites[ballSpriteId].pos1.y = 70; - } - - gBattlerTarget = battlerId; + if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) + { + gSprites[ballSpriteId].pos1.x = 32; + gSprites[ballSpriteId].pos1.y = 64; + } + else + { + temp = gender; //mov r0, r10 (r10 = gender), but this is never actually used + gSprites[ballSpriteId].pos1.x = 48; + gSprites[ballSpriteId].pos1.y = 70; + } + + gBattlerTarget = battlerId; gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1; break; case POKEBALL_OPPONENT_SENDOUT: @@ -153,7 +417,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) } // this will perform an unused ball throw animation - gSprites[ballSpriteId].data[0] = 0x22; + gSprites[ballSpriteId].data[0] = 34; gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_X); gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BATTLER_COORD_Y) - 16; gSprites[ballSpriteId].data[5] = -40; @@ -167,267 +431,267 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) NAKED static void Task_DoPokeballSendOutAnim(u8 taskId) { - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstr r0, [sp]\n" - "\tmovs r0, 0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r1, _0804A9D4 @ =gTasks\n" - "\tldr r2, [sp]\n" - "\tlsls r0, r2, 2\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tadds r1, r0, r1\n" - "\tldrh r2, [r1, 0x8]\n" - "\tmovs r3, 0x8\n" - "\tldrsh r0, [r1, r3]\n" - "\tcmp r0, 0\n" - "\tbne _0804A9D8\n" - "\tadds r0, r2, 0x1\n" - "\tstrh r0, [r1, 0x8]\n" - "\tb _0804ABB8\n" - "\t.align 2, 0\n" - "_0804A9D4: .4byte gTasks\n" - "_0804A9D8:\n" - "\tldrh r0, [r1, 0xC]\n" - "\tmov r9, r0\n" - "\tldrb r6, [r1, 0xE]\n" - "\tadds r0, r6, 0\n" - "\tbl GetBattlerSide\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _0804AA04\n" - "\tldr r1, _0804A9FC @ =gBattlerPartyIndexes\n" - "\tlsls r0, r6, 1\n" - "\tadds r0, r1\n" - "\tldrh r1, [r0]\n" - "\tmovs r0, 0x64\n" - "\tmuls r0, r1\n" - "\tldr r1, _0804AA00 @ =gEnemyParty\n" - "\tb _0804AA12\n" - "\t.align 2, 0\n" - "_0804A9FC: .4byte gBattlerPartyIndexes\n" - "_0804AA00: .4byte gEnemyParty\n" - "_0804AA04:\n" - "\tldr r1, _0804AA50 @ =gBattlerPartyIndexes\n" - "\tlsls r0, r6, 1\n" - "\tadds r0, r1\n" - "\tldrh r1, [r0]\n" - "\tmovs r0, 0x64\n" - "\tmuls r0, r1\n" - "\tldr r1, _0804AA54 @ =gPlayerParty\n" - "_0804AA12:\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x26\n" - "\tbl GetMonData\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl ItemIdToBallId\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tadds r0, r5, 0\n" - "\tbl LoadBallGfx\n" - "\tldr r0, _0804AA58 @ =gBattleTypeFlags\n" - "\tldr r0, [r0]\n" - "\tmovs r1, 0x2\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0804AA60\n" - "\tldr r4, _0804AA5C @ =gLinkPlayers\n" - "\tadds r0, r6, 0\n" - "\tbl GetBattlerMultiplayerId\n" - "\tlsls r1, r0, 3\n" - "\tsubs r1, r0\n" - "\tlsls r1, 2\n" - "\tadds r1, r4\n" - "\tldrb r1, [r1, 0x13]\n" - "\tmov r10, r1\n" - "\tb _0804AA68\n" - "\t.align 2, 0\n" - "_0804AA50: .4byte gBattlerPartyIndexes\n" - "_0804AA54: .4byte gPlayerParty\n" - "_0804AA58: .4byte gBattleTypeFlags\n" - "_0804AA5C: .4byte gLinkPlayers\n" - "_0804AA60:\n" - "\tldr r0, _0804AAB8 @ =gSaveBlock2Ptr\n" - "\tldr r0, [r0]\n" - "\tldrb r0, [r0, 0x8]\n" - "\tmov r10, r0\n" - "_0804AA68:\n" - "\tlsls r0, r5, 1\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tldr r1, _0804AABC @ =gUnknown_82606F4\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x20\n" - "\tmovs r2, 0x50\n" - "\tmovs r3, 0x1D\n" - "\tbl CreateSprite\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tlsls r5, r7, 4\n" - "\tadds r0, r5, r7\n" - "\tlsls r0, 2\n" - "\tmov r8, r0\n" - "\tldr r4, _0804AAC0 @ =gSprites\n" - "\tadd r4, r8\n" - "\tmovs r0, 0x80\n" - "\tstrh r0, [r4, 0x2E]\n" - "\tmovs r1, 0\n" - "\tstrh r1, [r4, 0x30]\n" - "\tmov r2, r9\n" - "\tstrh r2, [r4, 0x3C]\n" - "\tmov r3, r9\n" - "\tcmp r3, 0xFE\n" - "\tbeq _0804AAF8\n" - "\tcmp r3, 0xFF\n" - "\tbne _0804AB38\n" - "\tldr r0, _0804AAC4 @ =gBattleTypeFlags\n" - "\tldr r0, [r0]\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 9\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0804AAC8\n" - "\tmovs r5, 0x20\n" - "\tmovs r4, 0x40\n" - "\tb _0804AACE\n" - "\t.align 2, 0\n" - "_0804AAB8: .4byte gSaveBlock2Ptr\n" - "_0804AABC: .4byte gUnknown_82606F4\n" - "_0804AAC0: .4byte gSprites\n" - "_0804AAC4: .4byte gBattleTypeFlags\n" - "_0804AAC8:\n" - "\tmov r0, r10\n" - "\tmovs r5, 0x30\n" - "\tmovs r4, 0x46\n" - "_0804AACE:\n" - "\tldr r0, _0804AAEC @ =gBattlerTarget\n" - "\tstrb r6, [r0]\n" - "\tldr r2, _0804AAF0 @ =gSprites\n" - "\tlsls r3, r7, 4\n" - "\tadds r1, r3, r7\n" - "\tlsls r1, 2\n" - "\tadds r0, r1, r2\n" - "\tstrh r5, [r0, 0x20]\n" - "\tstrh r4, [r0, 0x22]\n" - "\tadds r2, 0x1C\n" - "\tadds r1, r2\n" - "\tldr r0, _0804AAF4 @ =SpriteCB_PlayerMonSendOut_1\n" - "\tstr r0, [r1]\n" - "\tb _0804AB48\n" - "\t.align 2, 0\n" - "_0804AAEC: .4byte gBattlerTarget\n" - "_0804AAF0: .4byte gSprites\n" - "_0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1\n" - "_0804AAF8:\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstrh r0, [r4, 0x20]\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0x1\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadds r0, 0x18\n" - "\tstrh r0, [r4, 0x22]\n" - "\tldr r0, _0804AB2C @ =gBattlerTarget\n" - "\tstrb r6, [r0]\n" - "\tmovs r1, 0\n" - "\tstrh r1, [r4, 0x2E]\n" - "\tldr r0, _0804AB30 @ =gSprites\n" - "\tadds r0, 0x1C\n" - "\tadd r0, r8\n" - "\tldr r1, _0804AB34 @ =SpriteCB_OpponentMonSendOut\n" - "\tstr r1, [r0]\n" - "\tb _0804AB46\n" - "\t.align 2, 0\n" - "_0804AB2C: .4byte gBattlerTarget\n" - "_0804AB30: .4byte gSprites\n" - "_0804AB34: .4byte SpriteCB_OpponentMonSendOut\n" - "_0804AB38:\n" - "\tmovs r0, 0x1\n" - "\tbl GetBattlerAtPosition\n" - "\tldr r1, _0804AB64 @ =gBattlerTarget\n" - "\tstrb r0, [r1]\n" - "\tmovs r2, 0x1\n" - "\tstr r2, [sp, 0x4]\n" - "_0804AB46:\n" - "\tadds r3, r5, 0\n" - "_0804AB48:\n" - "\tldr r0, _0804AB68 @ =gSprites\n" - "\tadds r1, r3, r7\n" - "\tlsls r1, 2\n" - "\tadds r4, r1, r0\n" - "\tldr r5, _0804AB64 @ =gBattlerTarget\n" - "\tldrb r0, [r5]\n" - "\tstrh r0, [r4, 0x3A]\n" - "\tldr r3, [sp, 0x4]\n" - "\tcmp r3, 0\n" - "\tbne _0804AB6C\n" - "\tldr r0, [sp]\n" - "\tbl DestroyTask\n" - "\tb _0804ABB8\n" - "\t.align 2, 0\n" - "_0804AB64: .4byte gBattlerTarget\n" - "_0804AB68: .4byte gSprites\n" - "_0804AB6C:\n" - "\tmovs r0, 0x22\n" - "\tstrh r0, [r4, 0x2E]\n" - "\tldrb r0, [r5]\n" - "\tmovs r1, 0\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstrh r0, [r4, 0x32]\n" - "\tldrb r0, [r5]\n" - "\tmovs r1, 0x1\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tsubs r0, 0x10\n" - "\tstrh r0, [r4, 0x36]\n" - "\tldr r0, _0804ABC8 @ =0x0000ffd8\n" - "\tstrh r0, [r4, 0x38]\n" - "\tadds r0, r4, 0\n" - "\tbl InitAnimArcTranslation\n" - "\tmov r0, sp\n" - "\tldrh r0, [r0]\n" - "\tstrh r0, [r4, 0x6]\n" - "\tldr r1, _0804ABCC @ =gTasks\n" - "\tldr r2, [sp]\n" - "\tlsls r0, r2, 2\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tadds r0, r1\n" - "\tldrb r1, [r5]\n" - "\tstrh r1, [r0, 0x10]\n" - "\tldr r1, _0804ABD0 @ =TaskDummy\n" - "\tstr r1, [r0]\n" - "\tmovs r0, 0x36\n" - "\tbl PlaySE\n" - "_0804ABB8:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0804ABC8: .4byte 0x0000ffd8\n" - "_0804ABCC: .4byte gTasks\n" - "_0804ABD0: .4byte TaskDummy\n"); + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstr r0, [sp]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r1, _0804A9D4 @ =gTasks\n" + "\tldr r2, [sp]\n" + "\tlsls r0, r2, 2\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tadds r1, r0, r1\n" + "\tldrh r2, [r1, 0x8]\n" + "\tmovs r3, 0x8\n" + "\tldrsh r0, [r1, r3]\n" + "\tcmp r0, 0\n" + "\tbne _0804A9D8\n" + "\tadds r0, r2, 0x1\n" + "\tstrh r0, [r1, 0x8]\n" + "\tb _0804ABB8\n" + "\t.align 2, 0\n" + "_0804A9D4: .4byte gTasks\n" + "_0804A9D8:\n" + "\tldrh r0, [r1, 0xC]\n" + "\tmov r9, r0\n" + "\tldrb r6, [r1, 0xE]\n" + "\tadds r0, r6, 0\n" + "\tbl GetBattlerSide\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0804AA04\n" + "\tldr r1, _0804A9FC @ =gBattlerPartyIndexes\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tmovs r0, 0x64\n" + "\tmuls r0, r1\n" + "\tldr r1, _0804AA00 @ =gEnemyParty\n" + "\tb _0804AA12\n" + "\t.align 2, 0\n" + "_0804A9FC: .4byte gBattlerPartyIndexes\n" + "_0804AA00: .4byte gEnemyParty\n" + "_0804AA04:\n" + "\tldr r1, _0804AA50 @ =gBattlerPartyIndexes\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tmovs r0, 0x64\n" + "\tmuls r0, r1\n" + "\tldr r1, _0804AA54 @ =gPlayerParty\n" + "_0804AA12:\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x26\n" + "\tbl GetMonData\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl ItemIdToBallId\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tadds r0, r5, 0\n" + "\tbl LoadBallGfx\n" + "\tldr r0, _0804AA58 @ =gBattleTypeFlags\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0804AA60\n" + "\tldr r4, _0804AA5C @ =gLinkPlayers\n" + "\tadds r0, r6, 0\n" + "\tbl GetBattlerMultiplayerId\n" + "\tlsls r1, r0, 3\n" + "\tsubs r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r4\n" + "\tldrb r1, [r1, 0x13]\n" + "\tmov r10, r1\n" + "\tb _0804AA68\n" + "\t.align 2, 0\n" + "_0804AA50: .4byte gBattlerPartyIndexes\n" + "_0804AA54: .4byte gPlayerParty\n" + "_0804AA58: .4byte gBattleTypeFlags\n" + "_0804AA5C: .4byte gLinkPlayers\n" + "_0804AA60:\n" + "\tldr r0, _0804AAB8 @ =gSaveBlock2Ptr\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x8]\n" + "\tmov r10, r0\n" + "_0804AA68:\n" + "\tlsls r0, r5, 1\n" + "\tadds r0, r5\n" + "\tlsls r0, 3\n" + "\tldr r1, _0804AABC @ =gBallSpriteTemplates\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x20\n" + "\tmovs r2, 0x50\n" + "\tmovs r3, 0x1D\n" + "\tbl CreateSprite\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tlsls r5, r7, 4\n" + "\tadds r0, r5, r7\n" + "\tlsls r0, 2\n" + "\tmov r8, r0\n" + "\tldr r4, _0804AAC0 @ =gSprites\n" + "\tadd r4, r8\n" + "\tmovs r0, 0x80\n" + "\tstrh r0, [r4, 0x2E]\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r4, 0x30]\n" + "\tmov r2, r9\n" + "\tstrh r2, [r4, 0x3C]\n" + "\tmov r3, r9\n" + "\tcmp r3, 0xFE\n" + "\tbeq _0804AAF8\n" + "\tcmp r3, 0xFF\n" + "\tbne _0804AB38\n" + "\tldr r0, _0804AAC4 @ =gBattleTypeFlags\n" + "\tldr r0, [r0]\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 9\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0804AAC8\n" + "\tmovs r5, 0x20\n" + "\tmovs r4, 0x40\n" + "\tb _0804AACE\n" + "\t.align 2, 0\n" + "_0804AAB8: .4byte gSaveBlock2Ptr\n" + "_0804AABC: .4byte gBallSpriteTemplates\n" + "_0804AAC0: .4byte gSprites\n" + "_0804AAC4: .4byte gBattleTypeFlags\n" + "_0804AAC8:\n" + "\tmov r0, r10\n" + "\tmovs r5, 0x30\n" + "\tmovs r4, 0x46\n" + "_0804AACE:\n" + "\tldr r0, _0804AAEC @ =gBattlerTarget\n" + "\tstrb r6, [r0]\n" + "\tldr r2, _0804AAF0 @ =gSprites\n" + "\tlsls r3, r7, 4\n" + "\tadds r1, r3, r7\n" + "\tlsls r1, 2\n" + "\tadds r0, r1, r2\n" + "\tstrh r5, [r0, 0x20]\n" + "\tstrh r4, [r0, 0x22]\n" + "\tadds r2, 0x1C\n" + "\tadds r1, r2\n" + "\tldr r0, _0804AAF4 @ =SpriteCB_PlayerMonSendOut_1\n" + "\tstr r0, [r1]\n" + "\tb _0804AB48\n" + "\t.align 2, 0\n" + "_0804AAEC: .4byte gBattlerTarget\n" + "_0804AAF0: .4byte gSprites\n" + "_0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1\n" + "_0804AAF8:\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstrh r0, [r4, 0x20]\n" + "\tadds r0, r6, 0\n" + "\tmovs r1, 0x1\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tadds r0, 0x18\n" + "\tstrh r0, [r4, 0x22]\n" + "\tldr r0, _0804AB2C @ =gBattlerTarget\n" + "\tstrb r6, [r0]\n" + "\tmovs r1, 0\n" + "\tstrh r1, [r4, 0x2E]\n" + "\tldr r0, _0804AB30 @ =gSprites\n" + "\tadds r0, 0x1C\n" + "\tadd r0, r8\n" + "\tldr r1, _0804AB34 @ =SpriteCB_OpponentMonSendOut\n" + "\tstr r1, [r0]\n" + "\tb _0804AB46\n" + "\t.align 2, 0\n" + "_0804AB2C: .4byte gBattlerTarget\n" + "_0804AB30: .4byte gSprites\n" + "_0804AB34: .4byte SpriteCB_OpponentMonSendOut\n" + "_0804AB38:\n" + "\tmovs r0, 0x1\n" + "\tbl GetBattlerAtPosition\n" + "\tldr r1, _0804AB64 @ =gBattlerTarget\n" + "\tstrb r0, [r1]\n" + "\tmovs r2, 0x1\n" + "\tstr r2, [sp, 0x4]\n" + "_0804AB46:\n" + "\tadds r3, r5, 0\n" + "_0804AB48:\n" + "\tldr r0, _0804AB68 @ =gSprites\n" + "\tadds r1, r3, r7\n" + "\tlsls r1, 2\n" + "\tadds r4, r1, r0\n" + "\tldr r5, _0804AB64 @ =gBattlerTarget\n" + "\tldrb r0, [r5]\n" + "\tstrh r0, [r4, 0x3A]\n" + "\tldr r3, [sp, 0x4]\n" + "\tcmp r3, 0\n" + "\tbne _0804AB6C\n" + "\tldr r0, [sp]\n" + "\tbl DestroyTask\n" + "\tb _0804ABB8\n" + "\t.align 2, 0\n" + "_0804AB64: .4byte gBattlerTarget\n" + "_0804AB68: .4byte gSprites\n" + "_0804AB6C:\n" + "\tmovs r0, 0x22\n" + "\tstrh r0, [r4, 0x2E]\n" + "\tldrb r0, [r5]\n" + "\tmovs r1, 0\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tstrh r0, [r4, 0x32]\n" + "\tldrb r0, [r5]\n" + "\tmovs r1, 0x1\n" + "\tbl GetBattlerSpriteCoord\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tsubs r0, 0x10\n" + "\tstrh r0, [r4, 0x36]\n" + "\tldr r0, _0804ABC8 @ =0x0000ffd8\n" + "\tstrh r0, [r4, 0x38]\n" + "\tadds r0, r4, 0\n" + "\tbl InitAnimArcTranslation\n" + "\tmov r0, sp\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r4, 0x6]\n" + "\tldr r1, _0804ABCC @ =gTasks\n" + "\tldr r2, [sp]\n" + "\tlsls r0, r2, 2\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrb r1, [r5]\n" + "\tstrh r1, [r0, 0x10]\n" + "\tldr r1, _0804ABD0 @ =TaskDummy\n" + "\tstr r1, [r0]\n" + "\tmovs r0, 0x36\n" + "\tbl PlaySE\n" + "_0804ABB8:\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804ABC8: .4byte 0x0000ffd8\n" + "_0804ABCC: .4byte gTasks\n" + "_0804ABD0: .4byte TaskDummy\n"); } #endif @@ -485,6 +749,7 @@ static void sub_804AD00(struct Sprite *sprite) sprite->data[5]++; if (sprite->data[5] == 11) PlaySE(SE_SUIKOMU); + if (gSprites[gBattlerSpriteIds[sprite->sBattler]].affineAnimEnded) { StartSpriteAnim(sprite, 2); @@ -654,6 +919,7 @@ static void sub_804AF24(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 2); else StartSpriteAffineAnim(sprite, 1); + PlaySE(SE_BOWA); } break; @@ -663,35 +929,33 @@ static void sub_804AF24(struct Sprite *sprite) #define tCryTaskSpecies data[0] #define tCryTaskPan data[1] #define tCryTaskWantedCry data[2] -#define tCryTaskBattler data[3] -#define tCryTaskMonSpriteId data[4] -#define tCryTaskMonPtr1 data[5] -#define tCryTaskMonPtr2 data[6] +#define tCryTaskMonPtr1 data[3] +#define tCryTaskMonPtr2 data[4] #define tCryTaskFrames data[10] #define tCryTaskState data[15] static void Task_PlayCryWhenReleasedFromBall(u8 taskId) { - u8 wantedCry = gTasks[taskId].tCryTaskWantedCry; + u8 state2 = gTasks[taskId].data[2]; s8 pan = gTasks[taskId].tCryTaskPan; u16 species = gTasks[taskId].tCryTaskSpecies; - u8 battlerId = gTasks[taskId].tCryTaskBattler; - u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId; - struct Pokemon *mon = (void*)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 0x10) | (u16)(gTasks[taskId].tCryTaskMonPtr2)); + struct Pokemon *mon = (void*)(u32)((u32)(gTasks[taskId].tCryTaskMonPtr1 << 0x10) | ((u16)gTasks[taskId].tCryTaskMonPtr2)); switch (gTasks[taskId].tCryTaskState) { case 0: default: - if (gSprites[monSpriteId].affineAnimEnded) - gTasks[taskId].tCryTaskState = wantedCry + 1; + if (gTasks[taskId].data[8] < 3) + gTasks[taskId].data[8]++; + else + gTasks[taskId].tCryTaskState = state2 + 1; break; case 1: if (ShouldPlayNormalPokeCry(mon) == TRUE) PlayCry3(species, pan, 0); else PlayCry3(species, pan, 11); - gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; + DestroyTask(taskId); break; case 2: @@ -707,7 +971,6 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId) else PlayCry4(species, pan, 12); - gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; DestroyTask(taskId); } else @@ -726,7 +989,6 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId) break; } gTasks[taskId].tCryTaskState++; - // fall through case 31: if (!IsCryPlayingOrClearCrySongs()) { @@ -741,12 +1003,12 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId) gTasks[taskId].tCryTaskFrames--; break; } + if (ShouldPlayNormalPokeCry(mon) == TRUE) PlayCry4(species, pan, 0); else PlayCry4(species, pan, 11); - gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 0; DestroyTask(taskId); break; } @@ -786,7 +1048,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) && IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1) { - if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { if (IsBGMPlaying()) m4aMPlayStop(&gMPlayInfo_BGM); @@ -803,29 +1065,17 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) wantedCryCase = 1; else wantedCryCase = 2; - - gBattleSpritesDataPtr->healthBoxesData[battlerId].field_1_x40 = 1; - + taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3); gTasks[taskId].tCryTaskSpecies = species; gTasks[taskId].tCryTaskPan = pan; gTasks[taskId].tCryTaskWantedCry = wantedCryCase; - gTasks[taskId].tCryTaskBattler = battlerId; - gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler]; gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10; gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon); gTasks[taskId].tCryTaskState = 0; } StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 1); - -/* - if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT) - gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039B58; - else - gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = sub_8039E44; -*/ - AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; } @@ -833,8 +1083,6 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) #undef tCryTaskSpecies #undef tCryTaskPan #undef tCryTaskWantedCry -#undef tCryTaskBattler -#undef tCryTaskMonSpriteId #undef tCryTaskMonPtr1 #undef tCryTaskMonPtr2 #undef tCryTaskFrames @@ -903,7 +1151,7 @@ static void sub_804B5C8(struct Sprite *sprite) { gDoingBattleAnim = FALSE; m4aMPlayAllStop(); - PlaySE(MUS_FANFA5); + PlaySE(MUS_FAN6); } else if (sprite->data[4] == 315) { @@ -1026,22 +1274,17 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y, LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[0]); LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[0]); spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy); - gSprites[spriteId].data[0] = monSpriteId; gSprites[spriteId].data[5] = gSprites[monSpriteId].pos1.x; gSprites[spriteId].data[6] = gSprites[monSpriteId].pos1.y; - gSprites[monSpriteId].pos1.x = x; gSprites[monSpriteId].pos1.y = y; - //gSprites[monSpriteId].data[7] = species; - gSprites[spriteId].data[1] = g; gSprites[spriteId].data[2] = battlerId; gSprites[spriteId].data[3] = h; gSprites[spriteId].data[4] = h >> 0x10; gSprites[spriteId].oam.priority = oamPriority; gSprites[spriteId].callback = sub_804B9E8; - gSprites[monSpriteId].invisible = TRUE; } @@ -1085,11 +1328,13 @@ static void sub_804BAA4(struct Sprite *sprite) if (sprite->animEnded) sprite->invisible = TRUE; + if (gSprites[monSpriteId].affineAnimEnded) { StartSpriteAffineAnim(&gSprites[monSpriteId], 0); r12 = TRUE; } + var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x; var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y; gSprites[monSpriteId].pos1.x = var1; @@ -1110,16 +1355,9 @@ static void sub_804BAA4(struct Sprite *sprite) gSprites[monSpriteId].pos2.y = 0; r6 = TRUE; } + if (sprite->animEnded && r12 && r6) - { - /* - if (gSprites[monSpriteId].data[7] == SPECIES_EGG) - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0); - else - DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0); - */ DestroySpriteAndFreeResources(sprite); - } } u8 CreateTradePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h) @@ -1174,6 +1412,7 @@ static void sub_804BCF8(struct Sprite *sprite) sprite->data[5]++; if (sprite->data[5] == 11) PlaySE(SE_SUIKOMU); + r1 = sprite->data[0]; if (gSprites[r1].affineAnimEnded) { @@ -1195,7 +1434,7 @@ static void sub_804BD6C(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } -static void DestroySpriteAndFreeResources2(struct Sprite *sprite) +void DestroySpriteAndFreeResources2(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); } @@ -1216,6 +1455,7 @@ void sub_804BD94(u8 battlerId) healthboxSprite->pos2.x = -healthboxSprite->pos2.x; healthboxSprite->pos2.y = -healthboxSprite->pos2.y; } + gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]); if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT) healthboxSprite->callback = sub_804BE24; @@ -1273,6 +1513,7 @@ void LoadBallGfx(u8 ballId) LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[ballId]); LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[ballId]); } + switch (ballId) { case BALL_DIVE: -- cgit v1.2.3 From 8d0618778125e8260021652d369584d82a8cdf39 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 30 Nov 2019 10:54:19 -0500 Subject: small typos fix --- src/shop.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/shop.c b/src/shop.c index 4a0ac7fb1..12f3f3263 100644 --- a/src/shop.c +++ b/src/shop.c @@ -537,9 +537,7 @@ bool8 BuyMenuBuildListMenuTemplate(void) SetShopExitCallback(); return FALSE; } - - i = 0; - + for (i = 0; i < gShopData.itemCount; i++) { PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], gShopData.itemList[i], sShopMenuItemStrings[i]); @@ -776,7 +774,7 @@ static void BuyMenuDrawMapBg(void) static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType) { u16 offset1 = x * 2; - u16 offset2 = (y * 64) + 64; + u16 offset2 = y * 64 + 64; switch (metatileLayerType) { -- cgit v1.2.3 From 8cdc65a8e4cc03b96f8e73e7079634db2143c491 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 30 Nov 2019 15:19:34 -0500 Subject: minor fixes --- ld_script.txt | 2 +- src/pokeball.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ld_script.txt b/ld_script.txt index 50cb621ab..741e87828 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -83,7 +83,7 @@ SECTIONS { src/daycare.o(.text); asm/battle_interface.o(.text); asm/smokescreen.o(.text); - src/pokeball.o(.text); + src/pokeball.o(.text); src/load_save.o(.text); src/trade.o(.text); src/trade_scene.o(.text); diff --git a/src/pokeball.c b/src/pokeball.c index 171e1beb9..20dc7bfe5 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -705,7 +705,7 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite) u8 noOfShakes = gTasks[taskId].tThrowId; StartSpriteAnim(sprite, 1); - sprite->affineAnimPaused = 1; + sprite->affineAnimPaused = TRUE; sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; @@ -1216,8 +1216,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = 0; - sprite->pos2.x = 0; + sprite->pos2.y = sprite->pos2.x = 0; sprite->sBattler = sprite->oam.affineParam & 0xFF; sprite->data[0] = 0; -- cgit v1.2.3 From d5537b8db98dfbbbaf2910e1fe6e1cf7e3901583 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 30 Nov 2019 15:28:51 -0500 Subject: fix build error format fix small update all matching remove unused var --- src/pokeball.c | 287 ++------------------------------------------------------- 1 file changed, 10 insertions(+), 277 deletions(-) diff --git a/src/pokeball.c b/src/pokeball.c index 20dc7bfe5..5a5a573dd 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -339,8 +339,6 @@ u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) return 0; } -#ifdef NONMATCHING -//gender is an unused variable that still manages to show up in the assembly, can't get temporary variables to make it work. static void Task_DoPokeballSendOutAnim(u8 taskId) { u16 throwCaseId; @@ -348,7 +346,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) u16 itemId, ballId; u8 ballSpriteId; bool8 notSendOut = FALSE; - u8 gender, temp; + s16 x, y; + u32 gender; if (gTasks[taskId].tFrames == 0) { @@ -367,7 +366,6 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) ballId = ItemIdToBallId(itemId); LoadBallGfx(ballId); - // r10 is set to gender byte here and loaded into a temporary variable to be immediately overwritten by an unused variable.. if (gBattleTypeFlags & BATTLE_TYPE_LINK) gender = gLinkPlayers[GetBattlerMultiplayerId(battlerId)].gender; else @@ -383,17 +381,19 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) case POKEBALL_PLAYER_SENDOUT: if (gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { - gSprites[ballSpriteId].pos1.x = 32; - gSprites[ballSpriteId].pos1.y = 64; + x = 32; + y = 64; } else { - temp = gender; //mov r0, r10 (r10 = gender), but this is never actually used - gSprites[ballSpriteId].pos1.x = 48; - gSprites[ballSpriteId].pos1.y = 70; + gender = !!gender; // something unknown got optimized out + x = 48; + y = 70; } gBattlerTarget = battlerId; + gSprites[ballSpriteId].pos1.x = x; + gSprites[ballSpriteId].pos1.y = y; gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1; break; case POKEBALL_OPPONENT_SENDOUT: @@ -427,273 +427,6 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) gTasks[taskId].func = TaskDummy; PlaySE(SE_NAGERU); } -#else -NAKED -static void Task_DoPokeballSendOutAnim(u8 taskId) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstr r0, [sp]\n" - "\tmovs r0, 0\n" - "\tstr r0, [sp, 0x4]\n" - "\tldr r1, _0804A9D4 @ =gTasks\n" - "\tldr r2, [sp]\n" - "\tlsls r0, r2, 2\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tadds r1, r0, r1\n" - "\tldrh r2, [r1, 0x8]\n" - "\tmovs r3, 0x8\n" - "\tldrsh r0, [r1, r3]\n" - "\tcmp r0, 0\n" - "\tbne _0804A9D8\n" - "\tadds r0, r2, 0x1\n" - "\tstrh r0, [r1, 0x8]\n" - "\tb _0804ABB8\n" - "\t.align 2, 0\n" - "_0804A9D4: .4byte gTasks\n" - "_0804A9D8:\n" - "\tldrh r0, [r1, 0xC]\n" - "\tmov r9, r0\n" - "\tldrb r6, [r1, 0xE]\n" - "\tadds r0, r6, 0\n" - "\tbl GetBattlerSide\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _0804AA04\n" - "\tldr r1, _0804A9FC @ =gBattlerPartyIndexes\n" - "\tlsls r0, r6, 1\n" - "\tadds r0, r1\n" - "\tldrh r1, [r0]\n" - "\tmovs r0, 0x64\n" - "\tmuls r0, r1\n" - "\tldr r1, _0804AA00 @ =gEnemyParty\n" - "\tb _0804AA12\n" - "\t.align 2, 0\n" - "_0804A9FC: .4byte gBattlerPartyIndexes\n" - "_0804AA00: .4byte gEnemyParty\n" - "_0804AA04:\n" - "\tldr r1, _0804AA50 @ =gBattlerPartyIndexes\n" - "\tlsls r0, r6, 1\n" - "\tadds r0, r1\n" - "\tldrh r1, [r0]\n" - "\tmovs r0, 0x64\n" - "\tmuls r0, r1\n" - "\tldr r1, _0804AA54 @ =gPlayerParty\n" - "_0804AA12:\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x26\n" - "\tbl GetMonData\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tbl ItemIdToBallId\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tadds r0, r5, 0\n" - "\tbl LoadBallGfx\n" - "\tldr r0, _0804AA58 @ =gBattleTypeFlags\n" - "\tldr r0, [r0]\n" - "\tmovs r1, 0x2\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0804AA60\n" - "\tldr r4, _0804AA5C @ =gLinkPlayers\n" - "\tadds r0, r6, 0\n" - "\tbl GetBattlerMultiplayerId\n" - "\tlsls r1, r0, 3\n" - "\tsubs r1, r0\n" - "\tlsls r1, 2\n" - "\tadds r1, r4\n" - "\tldrb r1, [r1, 0x13]\n" - "\tmov r10, r1\n" - "\tb _0804AA68\n" - "\t.align 2, 0\n" - "_0804AA50: .4byte gBattlerPartyIndexes\n" - "_0804AA54: .4byte gPlayerParty\n" - "_0804AA58: .4byte gBattleTypeFlags\n" - "_0804AA5C: .4byte gLinkPlayers\n" - "_0804AA60:\n" - "\tldr r0, _0804AAB8 @ =gSaveBlock2Ptr\n" - "\tldr r0, [r0]\n" - "\tldrb r0, [r0, 0x8]\n" - "\tmov r10, r0\n" - "_0804AA68:\n" - "\tlsls r0, r5, 1\n" - "\tadds r0, r5\n" - "\tlsls r0, 3\n" - "\tldr r1, _0804AABC @ =gBallSpriteTemplates\n" - "\tadds r0, r1\n" - "\tmovs r1, 0x20\n" - "\tmovs r2, 0x50\n" - "\tmovs r3, 0x1D\n" - "\tbl CreateSprite\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tlsls r5, r7, 4\n" - "\tadds r0, r5, r7\n" - "\tlsls r0, 2\n" - "\tmov r8, r0\n" - "\tldr r4, _0804AAC0 @ =gSprites\n" - "\tadd r4, r8\n" - "\tmovs r0, 0x80\n" - "\tstrh r0, [r4, 0x2E]\n" - "\tmovs r1, 0\n" - "\tstrh r1, [r4, 0x30]\n" - "\tmov r2, r9\n" - "\tstrh r2, [r4, 0x3C]\n" - "\tmov r3, r9\n" - "\tcmp r3, 0xFE\n" - "\tbeq _0804AAF8\n" - "\tcmp r3, 0xFF\n" - "\tbne _0804AB38\n" - "\tldr r0, _0804AAC4 @ =gBattleTypeFlags\n" - "\tldr r0, [r0]\n" - "\tmovs r1, 0x80\n" - "\tlsls r1, 9\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0804AAC8\n" - "\tmovs r5, 0x20\n" - "\tmovs r4, 0x40\n" - "\tb _0804AACE\n" - "\t.align 2, 0\n" - "_0804AAB8: .4byte gSaveBlock2Ptr\n" - "_0804AABC: .4byte gBallSpriteTemplates\n" - "_0804AAC0: .4byte gSprites\n" - "_0804AAC4: .4byte gBattleTypeFlags\n" - "_0804AAC8:\n" - "\tmov r0, r10\n" - "\tmovs r5, 0x30\n" - "\tmovs r4, 0x46\n" - "_0804AACE:\n" - "\tldr r0, _0804AAEC @ =gBattlerTarget\n" - "\tstrb r6, [r0]\n" - "\tldr r2, _0804AAF0 @ =gSprites\n" - "\tlsls r3, r7, 4\n" - "\tadds r1, r3, r7\n" - "\tlsls r1, 2\n" - "\tadds r0, r1, r2\n" - "\tstrh r5, [r0, 0x20]\n" - "\tstrh r4, [r0, 0x22]\n" - "\tadds r2, 0x1C\n" - "\tadds r1, r2\n" - "\tldr r0, _0804AAF4 @ =SpriteCB_PlayerMonSendOut_1\n" - "\tstr r0, [r1]\n" - "\tb _0804AB48\n" - "\t.align 2, 0\n" - "_0804AAEC: .4byte gBattlerTarget\n" - "_0804AAF0: .4byte gSprites\n" - "_0804AAF4: .4byte SpriteCB_PlayerMonSendOut_1\n" - "_0804AAF8:\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstrh r0, [r4, 0x20]\n" - "\tadds r0, r6, 0\n" - "\tmovs r1, 0x1\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tadds r0, 0x18\n" - "\tstrh r0, [r4, 0x22]\n" - "\tldr r0, _0804AB2C @ =gBattlerTarget\n" - "\tstrb r6, [r0]\n" - "\tmovs r1, 0\n" - "\tstrh r1, [r4, 0x2E]\n" - "\tldr r0, _0804AB30 @ =gSprites\n" - "\tadds r0, 0x1C\n" - "\tadd r0, r8\n" - "\tldr r1, _0804AB34 @ =SpriteCB_OpponentMonSendOut\n" - "\tstr r1, [r0]\n" - "\tb _0804AB46\n" - "\t.align 2, 0\n" - "_0804AB2C: .4byte gBattlerTarget\n" - "_0804AB30: .4byte gSprites\n" - "_0804AB34: .4byte SpriteCB_OpponentMonSendOut\n" - "_0804AB38:\n" - "\tmovs r0, 0x1\n" - "\tbl GetBattlerAtPosition\n" - "\tldr r1, _0804AB64 @ =gBattlerTarget\n" - "\tstrb r0, [r1]\n" - "\tmovs r2, 0x1\n" - "\tstr r2, [sp, 0x4]\n" - "_0804AB46:\n" - "\tadds r3, r5, 0\n" - "_0804AB48:\n" - "\tldr r0, _0804AB68 @ =gSprites\n" - "\tadds r1, r3, r7\n" - "\tlsls r1, 2\n" - "\tadds r4, r1, r0\n" - "\tldr r5, _0804AB64 @ =gBattlerTarget\n" - "\tldrb r0, [r5]\n" - "\tstrh r0, [r4, 0x3A]\n" - "\tldr r3, [sp, 0x4]\n" - "\tcmp r3, 0\n" - "\tbne _0804AB6C\n" - "\tldr r0, [sp]\n" - "\tbl DestroyTask\n" - "\tb _0804ABB8\n" - "\t.align 2, 0\n" - "_0804AB64: .4byte gBattlerTarget\n" - "_0804AB68: .4byte gSprites\n" - "_0804AB6C:\n" - "\tmovs r0, 0x22\n" - "\tstrh r0, [r4, 0x2E]\n" - "\tldrb r0, [r5]\n" - "\tmovs r1, 0\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tstrh r0, [r4, 0x32]\n" - "\tldrb r0, [r5]\n" - "\tmovs r1, 0x1\n" - "\tbl GetBattlerSpriteCoord\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tsubs r0, 0x10\n" - "\tstrh r0, [r4, 0x36]\n" - "\tldr r0, _0804ABC8 @ =0x0000ffd8\n" - "\tstrh r0, [r4, 0x38]\n" - "\tadds r0, r4, 0\n" - "\tbl InitAnimArcTranslation\n" - "\tmov r0, sp\n" - "\tldrh r0, [r0]\n" - "\tstrh r0, [r4, 0x6]\n" - "\tldr r1, _0804ABCC @ =gTasks\n" - "\tldr r2, [sp]\n" - "\tlsls r0, r2, 2\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tadds r0, r1\n" - "\tldrb r1, [r5]\n" - "\tstrh r1, [r0, 0x10]\n" - "\tldr r1, _0804ABD0 @ =TaskDummy\n" - "\tstr r1, [r0]\n" - "\tmovs r0, 0x36\n" - "\tbl PlaySE\n" - "_0804ABB8:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0804ABC8: .4byte 0x0000ffd8\n" - "_0804ABCC: .4byte gTasks\n" - "_0804ABD0: .4byte TaskDummy\n"); -} -#endif static void SpriteCB_TestBallThrow(struct Sprite *sprite) { @@ -1216,7 +949,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) { sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; - sprite->pos2.y = sprite->pos2.x = 0; + sprite->pos2.x = sprite->pos2.y = 0; sprite->sBattler = sprite->oam.affineParam & 0xFF; sprite->data[0] = 0; -- cgit v1.2.3 From cd31c6c303011af045fa8f21c867bfed00e2a2d5 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 3 Dec 2019 03:26:31 -0500 Subject: get rid of baseroms in graphics.s --- asm/battle_interface.s | 4 +- data/garbage_8DD2290.bin | Bin 0 -> 512 bytes data/graphics.s | 250 +++++++++++++-------- data/trainer_card.s | 38 +++- .../battle_interface/ball_display_unused_extra.png | Bin 0 -> 102 bytes graphics/battle_interface/expbar.png | Bin 0 -> 109 bytes .../healthbox_doubles_opponent.png | Bin 0 -> 270 bytes .../battle_interface/healthbox_doubles_player.png | Bin 0 -> 277 bytes .../healthbox_singles_opponent.png | Bin 0 -> 282 bytes .../battle_interface/healthbox_singles_player.png | Bin 0 -> 369 bytes graphics/battle_interface/hpbar.png | Bin 0 -> 161 bytes graphics/battle_interface/hpbar_anim.png | Bin 0 -> 149 bytes graphics/battle_interface/misc.png | Bin 0 -> 96 bytes graphics/battle_interface/misc_frameend.png | Bin 0 -> 82 bytes graphics/battle_interface/status2.png | Bin 0 -> 196 bytes graphics/battle_interface/status3.png | Bin 0 -> 198 bytes graphics/battle_interface/status4.png | Bin 0 -> 195 bytes graphics/battle_interface/status_brn.png | Bin 0 -> 116 bytes graphics/battle_interface/status_frz.png | Bin 0 -> 116 bytes graphics/battle_interface/status_par.png | Bin 0 -> 112 bytes graphics/battle_interface/status_psn.png | Bin 0 -> 116 bytes graphics/battle_interface/status_slp.png | Bin 0 -> 117 bytes graphics/battle_interface/window.png | Bin 0 -> 455 bytes graphics/battle_interface/window1.pal | 19 ++ graphics/battle_interface/window2.pal | 19 ++ graphics/berry_crush/berry_crush.pal | 99 ++++++++ graphics/berry_crush/berry_crush.png | Bin 0 -> 2151 bytes graphics/berry_crush/data_EB0ADC.bin | 1 + graphics/contest/applause.png | Bin 0 -> 294 bytes graphics/contest/misc.png | Bin 0 -> 1961 bytes graphics/contest/misc_2.png | Bin 0 -> 1565 bytes graphics/contest/nextturn.png | Bin 195 -> 190 bytes graphics/interface/blank2.pal | 19 ++ graphics/interface/box_tiles.png | Bin 0 -> 1230 bytes graphics/interface/box_tiles_pal1.pal | 19 ++ graphics/interface/box_tiles_pal2.pal | 19 ++ graphics/interface/box_tiles_pal3.pal | 19 ++ graphics/interface/learn_move.bin | Bin 0 -> 2048 bytes graphics/interface/learn_move.png | Bin 0 -> 239 bytes graphics/interface/link_rfu_frame.png | Bin 0 -> 199 bytes graphics/interface/link_rfu_status.png | Bin 0 -> 450 bytes graphics/interface/naming_screen_8E97FE4.pal | 19 ++ graphics/interface/naming_screen_E98398.bin | Bin 0 -> 1280 bytes graphics/interface/naming_screen_E98458.bin | Bin 0 -> 1280 bytes graphics/interface/naming_screen_E98518.bin | Bin 0 -> 1280 bytes graphics/interface/naming_screen_menu.bin | Bin 0 -> 1280 bytes graphics/interface/naming_screen_menu.png | Bin 0 -> 438 bytes graphics/interface/party_menu_misc.pal | 179 +++++++++++++++ graphics/interface/pokedex_abc.png | Bin 0 -> 525 bytes graphics/interface/shop.pal | 35 +++ graphics/interface/shop.png | Bin 0 -> 324 bytes graphics/interface/shop1.bin | Bin 0 -> 2048 bytes graphics/interface/shop2.bin | Bin 0 -> 2048 bytes graphics/interface/status_icons.png | Bin 455 -> 452 bytes graphics/interface/summary_expbar.png | Bin 0 -> 230 bytes graphics/interface/summary_hpbar.png | Bin 0 -> 227 bytes graphics/interface/trainer_memo.bin | Bin 0 -> 1280 bytes graphics/interface/trainer_memo.png | Bin 0 -> 3059 bytes graphics/interface/trainer_memo_2.bin | Bin 0 -> 1280 bytes graphics/interface/trainer_memo_3.bin | Bin 0 -> 2048 bytes graphics/interface/trainer_memo_4.bin | Bin 0 -> 1280 bytes graphics/interface/trainer_memo_5.bin | Bin 0 -> 1280 bytes graphics/interface/trainer_memo_pal1.pal | 83 +++++++ graphics/interface/trainer_memo_pal2.pal | 19 ++ graphics/interface/trainer_memo_pal3.pal | 19 ++ graphics/interface/union_room_chat.bin | Bin 0 -> 1280 bytes graphics/interface/union_room_chat.png | Bin 0 -> 513 bytes graphics/interface/union_room_chat_icons.png | Bin 0 -> 244 bytes graphics/interface/union_room_chat_panel.bin | Bin 0 -> 1280 bytes graphics/interface/union_room_chat_panel.png | Bin 0 -> 189 bytes graphics/item_menu/bag_pal1.pal | 51 +++++ graphics/item_menu/bag_pal2.pal | 19 ++ graphics/item_menu/bag_tilemap1.bin | Bin 0 -> 2048 bytes graphics/item_menu/bag_tilemap2.bin | Bin 0 -> 2048 bytes graphics/item_menu/bag_tiles.png | Bin 0 -> 539 bytes graphics/link/gba.pal | 19 ++ graphics/link/gba.png | Bin 0 -> 1253 bytes graphics/link/gba_pal2.pal | 51 +++++ .../pokemon/circled_question_mark/circled/back.png | Bin 0 -> 383 bytes .../circled_question_mark/circled/front.png | Bin 0 -> 383 bytes .../circled_question_mark/circled/normal.pal | 19 ++ .../circled_question_mark/circled/shiny.pal | 19 ++ .../pokemon/circled_question_mark/double/back.png | Bin 0 -> 307 bytes .../pokemon/circled_question_mark/double/front.png | Bin 0 -> 308 bytes .../circled_question_mark/double/normal.pal | 19 ++ .../pokemon/circled_question_mark/double/shiny.pal | 19 ++ .../pokemon/circled_question_mark/footprint.png | Bin 0 -> 110 bytes graphics/pokemon/circled_question_mark/icon.png | Bin 0 -> 271 bytes graphics/pokemon/egg/icon.png | Bin 310 -> 297 bytes graphics/pokemon/ghost/front.png | Bin 0 -> 701 bytes graphics/pokemon/question_mark/circled/back.png | Bin 397 -> 0 bytes graphics/pokemon/question_mark/circled/front.png | Bin 397 -> 0 bytes graphics/pokemon/question_mark/circled/normal.pal | 19 -- graphics/pokemon/question_mark/circled/shiny.pal | 19 -- graphics/pokemon/question_mark/double/back.png | Bin 307 -> 0 bytes graphics/pokemon/question_mark/double/front.png | Bin 308 -> 0 bytes graphics/pokemon/question_mark/double/normal.pal | 19 -- graphics/pokemon/question_mark/double/shiny.pal | 19 -- graphics/pokemon/question_mark/footprint.png | Bin 110 -> 0 bytes graphics/pokemon/question_mark/icon.png | Bin 271 -> 0 bytes graphics/trainer_card/0star.pal | 51 +++++ graphics/trainer_card/0star_em.pal | 51 +++++ graphics/trainer_card/card.png | Bin 0 -> 1467 bytes graphics/trainer_card/card_em.png | Bin 0 -> 989 bytes graphics/unknown/unknown_D12A44.png | Bin 0 -> 84 bytes graphics/unknown/unknown_D12A64.png | Bin 0 -> 95 bytes graphics/unknown/unknown_E861A8.bin | Bin 0 -> 512 bytes graphics/unknown/unknown_E9BD08.pal | 19 ++ graphics/unknown/unknown_E9CAEC.bin | Bin 0 -> 528 bytes graphics/unknown/unknown_EAFF60.pal | 51 +++++ graphics_file_rules.mk | 7 + 111 files changed, 1157 insertions(+), 174 deletions(-) create mode 100644 data/garbage_8DD2290.bin create mode 100644 graphics/battle_interface/ball_display_unused_extra.png create mode 100644 graphics/battle_interface/expbar.png create mode 100644 graphics/battle_interface/healthbox_doubles_opponent.png create mode 100644 graphics/battle_interface/healthbox_doubles_player.png create mode 100644 graphics/battle_interface/healthbox_singles_opponent.png create mode 100644 graphics/battle_interface/healthbox_singles_player.png create mode 100644 graphics/battle_interface/hpbar.png create mode 100644 graphics/battle_interface/hpbar_anim.png create mode 100644 graphics/battle_interface/misc.png create mode 100644 graphics/battle_interface/misc_frameend.png create mode 100644 graphics/battle_interface/status2.png create mode 100644 graphics/battle_interface/status3.png create mode 100644 graphics/battle_interface/status4.png create mode 100644 graphics/battle_interface/status_brn.png create mode 100644 graphics/battle_interface/status_frz.png create mode 100644 graphics/battle_interface/status_par.png create mode 100644 graphics/battle_interface/status_psn.png create mode 100644 graphics/battle_interface/status_slp.png create mode 100644 graphics/battle_interface/window.png create mode 100644 graphics/battle_interface/window1.pal create mode 100644 graphics/battle_interface/window2.pal create mode 100644 graphics/berry_crush/berry_crush.pal create mode 100644 graphics/berry_crush/berry_crush.png create mode 100644 graphics/berry_crush/data_EB0ADC.bin create mode 100644 graphics/contest/applause.png create mode 100644 graphics/contest/misc.png create mode 100644 graphics/contest/misc_2.png create mode 100644 graphics/interface/blank2.pal create mode 100644 graphics/interface/box_tiles.png create mode 100644 graphics/interface/box_tiles_pal1.pal create mode 100644 graphics/interface/box_tiles_pal2.pal create mode 100644 graphics/interface/box_tiles_pal3.pal create mode 100644 graphics/interface/learn_move.bin create mode 100644 graphics/interface/learn_move.png create mode 100644 graphics/interface/link_rfu_frame.png create mode 100644 graphics/interface/link_rfu_status.png create mode 100644 graphics/interface/naming_screen_8E97FE4.pal create mode 100644 graphics/interface/naming_screen_E98398.bin create mode 100644 graphics/interface/naming_screen_E98458.bin create mode 100644 graphics/interface/naming_screen_E98518.bin create mode 100644 graphics/interface/naming_screen_menu.bin create mode 100644 graphics/interface/naming_screen_menu.png create mode 100644 graphics/interface/party_menu_misc.pal create mode 100644 graphics/interface/pokedex_abc.png create mode 100644 graphics/interface/shop.pal create mode 100644 graphics/interface/shop.png create mode 100644 graphics/interface/shop1.bin create mode 100644 graphics/interface/shop2.bin create mode 100644 graphics/interface/summary_expbar.png create mode 100644 graphics/interface/summary_hpbar.png create mode 100644 graphics/interface/trainer_memo.bin create mode 100644 graphics/interface/trainer_memo.png create mode 100644 graphics/interface/trainer_memo_2.bin create mode 100644 graphics/interface/trainer_memo_3.bin create mode 100644 graphics/interface/trainer_memo_4.bin create mode 100644 graphics/interface/trainer_memo_5.bin create mode 100644 graphics/interface/trainer_memo_pal1.pal create mode 100644 graphics/interface/trainer_memo_pal2.pal create mode 100644 graphics/interface/trainer_memo_pal3.pal create mode 100644 graphics/interface/union_room_chat.bin create mode 100644 graphics/interface/union_room_chat.png create mode 100644 graphics/interface/union_room_chat_icons.png create mode 100644 graphics/interface/union_room_chat_panel.bin create mode 100644 graphics/interface/union_room_chat_panel.png create mode 100644 graphics/item_menu/bag_pal1.pal create mode 100644 graphics/item_menu/bag_pal2.pal create mode 100644 graphics/item_menu/bag_tilemap1.bin create mode 100644 graphics/item_menu/bag_tilemap2.bin create mode 100644 graphics/item_menu/bag_tiles.png create mode 100644 graphics/link/gba.pal create mode 100644 graphics/link/gba.png create mode 100644 graphics/link/gba_pal2.pal create mode 100644 graphics/pokemon/circled_question_mark/circled/back.png create mode 100644 graphics/pokemon/circled_question_mark/circled/front.png create mode 100644 graphics/pokemon/circled_question_mark/circled/normal.pal create mode 100644 graphics/pokemon/circled_question_mark/circled/shiny.pal create mode 100644 graphics/pokemon/circled_question_mark/double/back.png create mode 100644 graphics/pokemon/circled_question_mark/double/front.png create mode 100644 graphics/pokemon/circled_question_mark/double/normal.pal create mode 100644 graphics/pokemon/circled_question_mark/double/shiny.pal create mode 100644 graphics/pokemon/circled_question_mark/footprint.png create mode 100644 graphics/pokemon/circled_question_mark/icon.png create mode 100644 graphics/pokemon/ghost/front.png delete mode 100644 graphics/pokemon/question_mark/circled/back.png delete mode 100644 graphics/pokemon/question_mark/circled/front.png delete mode 100644 graphics/pokemon/question_mark/circled/normal.pal delete mode 100644 graphics/pokemon/question_mark/circled/shiny.pal delete mode 100644 graphics/pokemon/question_mark/double/back.png delete mode 100644 graphics/pokemon/question_mark/double/front.png delete mode 100644 graphics/pokemon/question_mark/double/normal.pal delete mode 100644 graphics/pokemon/question_mark/double/shiny.pal delete mode 100644 graphics/pokemon/question_mark/footprint.png delete mode 100644 graphics/pokemon/question_mark/icon.png create mode 100644 graphics/trainer_card/0star.pal create mode 100644 graphics/trainer_card/0star_em.pal create mode 100644 graphics/trainer_card/card.png create mode 100644 graphics/trainer_card/card_em.png create mode 100644 graphics/unknown/unknown_D12A44.png create mode 100644 graphics/unknown/unknown_D12A64.png create mode 100644 graphics/unknown/unknown_E861A8.bin create mode 100644 graphics/unknown/unknown_E9BD08.pal create mode 100644 graphics/unknown/unknown_E9CAEC.bin create mode 100644 graphics/unknown/unknown_EAFF60.pal diff --git a/asm/battle_interface.s b/asm/battle_interface.s index 7a0e37966..753b1696b 100644 --- a/asm/battle_interface.s +++ b/asm/battle_interface.s @@ -709,11 +709,11 @@ _080480A4: .4byte sub_8048128 GetHealthboxElementGfxPtr: @ 80480A8 lsls r0, 24 lsrs r0, 19 - ldr r1, _080480B4 @ =gUnknown_8D11BC4 + ldr r1, _080480B4 @ =gHealthboxElementsGfxTable adds r0, r1 bx lr .align 2, 0 -_080480B4: .4byte gUnknown_8D11BC4 +_080480B4: .4byte gHealthboxElementsGfxTable thumb_func_end GetHealthboxElementGfxPtr thumb_func_start sub_80480B8 diff --git a/data/garbage_8DD2290.bin b/data/garbage_8DD2290.bin new file mode 100644 index 000000000..337603c68 Binary files /dev/null and b/data/garbage_8DD2290.bin differ diff --git a/data/graphics.s b/data/graphics.s index a886e2a56..458a59789 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -1,10 +1,12 @@ .section gfx_data, "aw", %progbits + .align 2 gBattleTextboxTiles:: @ 8D00000 - .incbin "baserom.gba", 0xD00000, 0x4D8 + .incbin "graphics/battle_interface/window.4bpp.lz" + .align 2 gBattleTextboxPalette:: @ 8D004D8 - .incbin "baserom.gba", 0xD004D8, 0x44 + .incbin "graphics/battle_interface/window.gbapal.lz" .align 2 gFile_graphics_interface_menu_map_tilemap:: @ 8D0051C @@ -12,18 +14,19 @@ gFile_graphics_interface_menu_map_tilemap:: @ 8D0051C .align 2 gMonFrontPic_CircledQuestionMark:: @ 8D00748 - .incbin "baserom.gba", 0xD00748, 0x244 - + .incbin "graphics/pokemon/circled_question_mark/circled/front.4bpp.lz" + + .align 2 gMonBackPic_CircledQuestionMark:: @ 8D0098C - .incbin "baserom.gba", 0xD0098C, 0x244 + .incbin "graphics/pokemon/circled_question_mark/circled/back.4bpp.lz" .align 2 gMonPalette_CircledQuestionMark:: @ 8D00BD0 - .incbin "graphics/pokemon/question_mark/circled/normal.gbapal.lz" + .incbin "graphics/pokemon/circled_question_mark/circled/normal.gbapal.lz" .align 2 gMonShinyPalette_CircledQuestionMark:: @ 8D00BE8 - .incbin "graphics/pokemon/question_mark/circled/shiny.gbapal.lz" + .incbin "graphics/pokemon/circled_question_mark/circled/shiny.gbapal.lz" .align 2 gFile_graphics_unused_old_charmap_sheet:: @ 8D00C00 @@ -1068,12 +1071,57 @@ gBattleInterface_BallStatusBarPal:: @ 8D11B84 gBattleInterface_BallDisplayPal:: @ 8D11BA4 .incbin "graphics/battle_interface/ball_display.gbapal" -gUnknown_8D11BC4:: @ 8D11BC4 - .incbin "baserom.gba", 0xD11BC4, 0x840 +@ Originally an array? +gHealthboxElementsGfxTable:: @ 8D11BC4 + .incbin "graphics/battle_interface/hpbar.4bpp" + +gHealthboxElementsGfxTable_ExpBar:: + .incbin "graphics/battle_interface/expbar.4bpp" + +gHealthboxElementsGfxTable_StatusPsn:: + .incbin "graphics/battle_interface/status_psn.4bpp" + +gHealthboxElementsGfxTable_StatusPar:: + .incbin "graphics/battle_interface/status_par.4bpp" + +gHealthboxElementsGfxTable_StatusSlp:: + .incbin "graphics/battle_interface/status_slp.4bpp" + +gHealthboxElementsGfxTable_StatusFrz:: + .incbin "graphics/battle_interface/status_frz.4bpp" + +gHealthboxElementsGfxTable_StatusBrn:: + .incbin "graphics/battle_interface/status_brn.4bpp" + +gHealthboxElementsGfxTable_Misc:: + .incbin "graphics/battle_interface/misc.4bpp" + +gHealthboxElementsGfxTable_HpBarAnim:: + .incbin "graphics/battle_interface/hpbar_anim.4bpp" + +gHealthboxElementsGfxTable_MiscFrameEnd:: + .incbin "graphics/battle_interface/misc_frameend.4bpp" gUnknown_8D12404:: .incbin "graphics/battle_interface/ball_display.4bpp" - .incbin "baserom.gba", 0xD12484, 0x640 + +gUnknown_8D12484:: + .incbin "graphics/battle_interface/ball_display_unused_extra.4bpp" + +gBattleInterfaceGfx_Status2:: + .incbin "graphics/battle_interface/status2.4bpp" + +gBattleInterfaceGfx_Status3:: + .incbin "graphics/battle_interface/status3.4bpp" + +gBattleInterfaceGfx_Status4:: + .incbin "graphics/battle_interface/status4.4bpp" + +gUnknown_8D12A44:: + .incbin "graphics/unknown/unknown_D12A44.4bpp" + +gUnknown_8D12A64:: + .incbin "graphics/unknown/unknown_D12A64.4bpp" .align 2 gFile_graphics_battle_interface_unused_window3_sheet:: @ 8D12AC4 @@ -1284,8 +1332,8 @@ gFile_graphics_unknown_unknown_D17AB8_tilemap:: @ 8D17AB8 .incbin "graphics/unknown/unknown_D17AB8.bin.lz" .align 2 -gUnknown_8D17BE8:: @ 8D17BE8 - .incbin "baserom.gba", 0xD17BE8, 0xB98 +gContestMiscGfx:: @ 8D17BE8 + .incbin "graphics/contest/misc.4bpp.lz" @ huh? this is the JP one... .align 2 gFile_graphics_contest_audience_sheet:: @ 8D18780 @@ -1317,7 +1365,7 @@ gFile_graphics_unknown_unknown_D196E4_palette:: @ 8D197D4 .align 2 gUnknown_8D197FC:: @ 8D197FC - .incbin "baserom.gba", 0xD197FC, 0x868 + .incbin "graphics/contest/misc_2.4bpp.lz" @ still in JP... .align 2 gFile_graphics_contest_misc_2_tilemap_1_tilemap:: @ 8D1A064 @@ -1769,19 +1817,19 @@ gFile_graphics_battle_anims_sprites_186_palette:: @ 8D1F31C .align 2 gHealthboxSinglesPlayerGfx:: @ 8D1F340 - .incbin "baserom.gba", 0xD1F340, 0x2C4 + .incbin "graphics/battle_interface/healthbox_singles_player.4bpp.lz" .align 2 gHealthboxSinglesOpponentGfx:: @ 8D1F604 - .incbin "baserom.gba", 0xD1F604, 0x190 + .incbin "graphics/battle_interface/healthbox_singles_opponent.4bpp.lz" .align 2 gHealthboxDoublesPlayerGfx:: @ 8D1F794 - .incbin "baserom.gba", 0xD1F794, 0x194 + .incbin "graphics/battle_interface/healthbox_doubles_player.4bpp.lz" .align 2 gHealthboxDoublesOpponentGfx:: @ 8D1F928 - .incbin "baserom.gba", 0xD1F928, 0x194 + .incbin "graphics/battle_interface/healthbox_doubles_opponent.4bpp.lz" .align 2 gHealthboxSafariGfx:: @ 8D1FABC @@ -8282,8 +8330,10 @@ gMonShinyPalette_Hitmontop:: @ 8DD1E68 gMonIcon_Hitmontop:: @ 8DD1E90 .incbin "graphics/pokemon/hitmontop/icon.4bpp" -gUnknown_hitmontop_unknown_data:: @ 8DD2290 - .incbin "baserom.gba", 0xDD2290, 0x200 + @ this might be undefined memory garbage. Its all 00s except for 1 0F. Its also not referenced. + .align 2 +gUndefined_8DD1E90:: @ 8DD2290 + .incbin "data/garbage_8DD2290.bin" .align 2 gMonFootprint_Hitmontop:: @ 8DD2490 @@ -8627,19 +8677,19 @@ gMonFootprint_Celebi:: @ 8DDCC2C .align 2 gMonFrontPic_DoubleQuestionMark:: @ 8DDCC4C - .incbin "graphics/pokemon/question_mark/double/front.4bpp.lz" + .incbin "graphics/pokemon/circled_question_mark/double/front.4bpp.lz" .align 2 gMonPalette_DoubleQuestionMark:: @ 8DDCDD0 - .incbin "graphics/pokemon/question_mark/double/normal.gbapal.lz" + .incbin "graphics/pokemon/circled_question_mark/double/normal.gbapal.lz" .align 2 gMonBackPic_DoubleQuestionMark:: @ 8DDCDE4 - .incbin "graphics/pokemon/question_mark/double/back.4bpp.lz" + .incbin "graphics/pokemon/circled_question_mark/double/back.4bpp.lz" .align 2 gMonShinyPalette_DoubleQuestionMark:: @ 8DDCF68 - .incbin "graphics/pokemon/question_mark/double/shiny.gbapal.lz" + .incbin "graphics/pokemon/circled_question_mark/double/shiny.gbapal.lz" .align 2 gMonFrontPic_Treecko:: @ 8DDCF7C @@ -13441,11 +13491,11 @@ gTrainerPalette_OldManBackPic:: @ 8E76F34 .align 2 gMonIcon_QuestionMark:: @ 8E76F5C - .incbin "graphics/pokemon/question_mark/icon.4bpp" + .incbin "graphics/pokemon/circled_question_mark/icon.4bpp" .align 2 gMonFootprint_QuestionMark:: @ 8E7735C - .incbin "graphics/pokemon/question_mark/footprint.1bpp" + .incbin "graphics/pokemon/circled_question_mark/footprint.1bpp" .align 2 gFile_graphics_battle_transitions_vs_frame_sheet:: @ 8E7737C @@ -13588,8 +13638,8 @@ gFile_graphics_battle_anims_sprites_262_palette:: @ 8E7A858 .incbin "graphics/battle_anims/sprites/262.gbapal.lz" .align 2 -gUnknown_8E7A880:: @ 8E7A880 - .incbin "baserom.gba", 0xE7A880, 0x5C +gContestNextTurnGfx:: @ 8E7A880 + .incbin "graphics/contest/nextturn.4bpp.lz" .align 2 gFile_graphics_contest_nextturn_numbers:: @ 8E7A8DC @@ -13620,8 +13670,8 @@ gFile_graphics_battle_anims_sprites_068_palette:: @ 8E7A9EC .incbin "graphics/battle_anims/sprites/068.gbapal.lz" .align 2 -gUnknown_8E7AA0C:: @ 8E7AA0C - .incbin "baserom.gba", 0xE7AA0C, 0x12C +gContestApplauseGfx:: @ 8E7AA0C + .incbin "graphics/contest/applause.4bpp.lz" .align 2 gFile_graphics_contest_applause_meter:: @ 8E7AB38 @@ -13701,7 +13751,7 @@ gFile_graphics_battle_interface_ball_status_bar_sheet:: @ 8E7BB04 .align 2 gMonIcon_Egg:: @ 8E7BB88 - .incbin "baserom.gba", 0xE7BB88, 0x400 @UNKNOWN + .incbin "graphics/pokemon/egg/icon.4bpp" .align 2 gFile_graphics_battle_anims_backgrounds_02_sheet:: @ 8E7BF88 @@ -13897,7 +13947,7 @@ gPartyMenuBg_Gfx:: @ 8E82700 .align 2 gPartyMenuBg_Pal:: @ 8E829C8 - .incbin "baserom.gba", 0xE829C8, 0xE8 + .incbin "graphics/interface/party_menu_misc.gbapal.lz" .align 2 gPartyMenuBg_Tilemap:: @ 8E82AB0 @@ -13917,7 +13967,7 @@ gPartyMenuPokeball_Pal:: @ 8E82E7C .align 2 gStatusGfx_Icons:: @ 8E82EA0 - .incbin "baserom.gba", 0xE82EA0, 0x204 + .incbin "graphics/interface/status_icons.4bpp.lz" .align 2 gStatusPal_Icons:: @ 8E830A4 @@ -13925,19 +13975,23 @@ gStatusPal_Icons:: @ 8E830A4 .align 2 gUnknown_8E830CC:: @ 8E830CC - .incbin "baserom.gba", 0xE830CC, 0x1F4 + .incbin "graphics/item_menu/bag_tiles.4bpp.lz" @ bag tiles + .align 2 gUnknown_8E832C0:: @ 8E832C0 - .incbin "baserom.gba", 0xE832C0, 0x184 + .incbin "graphics/item_menu/bag_tilemap1.bin.lz" @ bag menu + .align 2 gUnknown_8E83444:: @ 8E83444 - .incbin "baserom.gba", 0xE83444, 0x170 + .incbin "graphics/item_menu/bag_tilemap2.bin.lz" @ PC deposit items + .align 2 gUnknown_8E835B4:: @ 8E835B4 - .incbin "baserom.gba", 0xE835B4, 0x50 + .incbin "graphics/item_menu/bag_pal1.gbapal.lz" @ palette 1 (Boy + misc Pal) + .align 2 gUnknown_8E83604:: @ 8E83604 - .incbin "baserom.gba", 0xE83604, 0x28 + .incbin "graphics/item_menu/bag_pal2.gbapal.lz" @ palette 2 (Girl) gUnknown_8E8362C:: @ 8E8362C .incbin "graphics/interface/unk_8E8362C.4bpp.lz" @@ -14009,19 +14063,19 @@ gBerryPouchBg1Tilemap:: @ 8E85C44 .incbin "graphics/berry_pouch/unk_8E85C44.bin.lz" gUnknown_8E85DC8:: @ 8E85DC8 - .incbin "baserom.gba", 0xE85DC8, 0x134 + .incbin "graphics/interface/shop.4bpp.lz" @ shop tiles gUnknown_8E85EFC:: @ 8E85EFC - .incbin "baserom.gba", 0xE85EFC, 0x13C + .incbin "graphics/interface/shop1.bin.lz" @ shop tilemap regular gUnknown_8E86038:: @ 8E86038 - .incbin "baserom.gba", 0xE86038, 0x138 + .incbin "graphics/interface/shop2.bin.lz" @ shop tilemap TMs gUnknown_8E86170:: @ 8E86170 - .incbin "baserom.gba", 0xE86170, 0x38 + .incbin "graphics/interface/shop.gbapal.lz" @ shop tiles palette gUnknown_8E861A8:: @ 8E861A8 - .incbin "baserom.gba", 0xE861A8, 0x98 + .incbin "graphics/unknown/unknown_E861A8.bin.lz" @ hmm what is this. gUnknown_8E86240:: @ 8E86240 .incbin "graphics/teachy_tv/tiles.4bpp.lz" @@ -14036,7 +14090,7 @@ gUnknown_8E86F98:: @ 8E86F98 .incbin "graphics/teachy_tv/palettes.gbapal.lz" gUnknown_8E87010:: @ 8E87010 - .incbin "baserom.gba", 0xE87010, 0x18 + .incbin "graphics/unknown/unknown_E87010.gbapal.lz" @ THIS IS ITEM ICONS .align 2 @@ -15929,10 +15983,11 @@ gFile_graphics_battle_anims_sprites_271_sheet:: @ 8E93AB4 .align 2 gGhostPalette:: @ 8E93B14 - .incbin "baserom.gba", 0xE93B14, 0x24 + .incbin "graphics/pokemon/ghost/front.gbapal.lz" + .align 2 gGhostFrontPic:: @ 8E93B38 - .incbin "baserom.gba", 0xE93B38, 0x368 + .incbin "graphics/pokemon/ghost/front.4bpp.lz" gFile_graphics_mail_orange_palette_pal:: @ 8E93EA0 .incbin "graphics/mail/orange/palette.gbapal" @@ -16077,16 +16132,16 @@ gFireRedMenuElements_Gfx:: @ 8E95DDC .incbin "graphics/interface/dex_caught_pokeball_and_pokemon_types.4bpp" gUnknown_8E97DDC:: @ 8E97DDC - .incbin "baserom.gba", 0xE97DDC, 0x20 @UNKNOWN + .incbin "graphics/interface/learn_move.gbapal" gUnknown_8E97DFC:: @ 8E97DFC - .incbin "baserom.gba", 0xE97DFC, 0xC8 + .incbin "graphics/interface/learn_move.4bpp.lz" gUnknown_8E97EC4:: @ 8E97EC4 - .incbin "baserom.gba", 0xE97EC4, 0x120 + .incbin "graphics/interface/learn_move.bin.lz" gUnknown_8E97FE4:: @ 8E97FE4 - .incbin "baserom.gba", 0xE97FE4, 0x20 @UNKNOWN + .incbin "graphics/interface/naming_screen_8E97FE4.gbapal" @ TODO: Find the image this goes with gUnknown_8E98004:: @ 8E98004 .incbin "graphics/interface/naming_screen_8E98004.gbapal" @@ -16110,19 +16165,19 @@ gUnknown_8E980C4:: @ 8E980C4 .incbin "graphics/interface/naming_screen_8E980C4.gbapal" gUnknown_8E980E4:: @ 8E980E4 - .incbin "baserom.gba", 0xE980E4, 0x1D8 + .incbin "graphics/interface/naming_screen_menu.4bpp.lz" gUnknown_8E982BC:: @ 8E982BC - .incbin "baserom.gba", 0xE982BC, 0xDC + .incbin "graphics/interface/naming_screen_menu.bin.lz" gUnknown_8E98398:: @ 8E98398 - .incbin "baserom.gba", 0xE98398, 0xC0 + .incbin "graphics/interface/naming_screen_E98398.bin.lz" gUnknown_8E98458:: @ 8E98458 - .incbin "baserom.gba", 0xE98458, 0xC0 + .incbin "graphics/interface/naming_screen_E98458.bin.lz" gUnknown_8E98518:: @ 8E98518 - .incbin "baserom.gba", 0xE98518, 0xC0 + .incbin "graphics/interface/naming_screen_E98518.bin.lz" gUnknown_8E985D8:: @ 8E985D8 .incbin "graphics/interface/naming_screen_8E985D8.4bpp" @@ -16164,16 +16219,16 @@ gUnknown_8E99118:: @ 8E99118 .incbin "graphics/tm_case/unk_8E99118.4bpp" gUnknown_8E99198:: - .incbin "baserom.gba", 0xE99198, 0x60 @UNKNOWN + .incbin "graphics/trainer_card/0star.gbapal" gUnknown_8E991F8:: @ 8E991F8 - .incbin "baserom.gba", 0xE991F8, 0x674 + .incbin "graphics/trainer_card/card.4bpp.lz" gUnknown_8E9986C:: @ 8E9986C - .incbin "baserom.gba", 0xE9986C, 0x60 @UNKNOWN + .incbin "graphics/trainer_card/0star_em.gbapal" gUnknown_8E998CC:: @ 8E998CC - .incbin "baserom.gba", 0xE998CC, 0x4C0 + .incbin "graphics/trainer_card/card_em.4bpp.lz" gUnknown_8E99D8C:: @ 8E99D8C .incbin "graphics/link_rfu/unk_8E99DAC.gbapal" @@ -16194,70 +16249,73 @@ gUnknown_8E9A168:: @ 8E9A168 .incbin "graphics/link_rfu/unk_8E9A168.4bpp.lz" gUnknown_8E9A460:: @ 8E9A460 - .incbin "baserom.gba", 0xE9A460, 0xEB0 + .incbin "graphics/interface/trainer_memo.4bpp.lz" gUnknown_8E9B310:: @ 8E9B310 - .incbin "baserom.gba", 0xE9B310, 0xC0 @UNKNOWN + .incbin "graphics/interface/trainer_memo_pal1.gbapal" + +gUnknown_8E9B3B0:: @ 8E9B3B0 + .incbin "graphics/interface/trainer_memo_pal2.gbapal" gUnknown_8E9B3D0:: @ 8E9B3D0 - .incbin "baserom.gba", 0xE9B3D0, 0x20 @UNKNOWN + .incbin "graphics/interface/trainer_memo_pal3.gbapal" gUnknown_8E9B3F0:: @ 8E9B3F0 - .incbin "baserom.gba", 0xE9B3F0, 0xC8 + .incbin "graphics/interface/summary_expbar.4bpp.lz" gUnknown_8E9B4B8:: @ 8E9B4B8 - .incbin "baserom.gba", 0xE9B4B8, 0xC0 + .incbin "graphics/interface/summary_hpbar.4bpp.lz" gUnknown_8E9B578:: @ 8E9B578 - .incbin "baserom.gba", 0xE9B578, 0x20 @UNKNOWN + .incbin "graphics/interface/summary_expbar.gbapal" @ hp bar uses this too gUnknown_8E9B598:: @ 8E9B598 - .incbin "baserom.gba", 0xE9B598, 0x1B8 + .incbin "graphics/interface/trainer_memo.bin.lz" gUnknown_8E9B750:: @ 8E9B750 - .incbin "baserom.gba", 0xE9B750, 0x200 + .incbin "graphics/interface/trainer_memo_2.bin.lz" gUnknown_8E9B950:: @ 8E9B950 - .incbin "baserom.gba", 0xE9B950, 0x14C + .incbin "graphics/interface/trainer_memo_3.bin.lz" gUnknown_8E9BA9C:: @ 8E9BA9C - .incbin "baserom.gba", 0xE9BA9C, 0x130 + .incbin "graphics/interface/trainer_memo_4.bin.lz" gUnknown_8E9BBCC:: @ 8E9BBCC - .incbin "baserom.gba", 0xE9BBCC, 0x13C + .incbin "graphics/interface/trainer_memo_5.bin.lz" gUnknown_8E9BD08:: @ 8E9BD08 - .incbin "baserom.gba", 0xE9BD08, 0x20 @UNKNOWN + .incbin "graphics/unknown/unknown_E9BD08.gbapal" @ might be an alternate unused palette of the link_rfu gfx below. gUnknown_8E9BD28:: @ 8E9BD28 - .incbin "baserom.gba", 0xE9BD28, 0x200 + .incbin "graphics/interface/link_rfu_frame.4bpp.lz" gUnknown_8E9BF28:: @ 8E9BF28 - .incbin "baserom.gba", 0xE9BF28, 0x20 @UNKNOWN + .incbin "graphics/interface/link_rfu_frame.gbapal" gUnknown_8E9BF48:: @ 8E9BF48 - .incbin "baserom.gba", 0xE9BF48, 0x204 + .incbin "graphics/interface/link_rfu_status.4bpp.lz" gUnknown_8E9C14C:: @ 8E9C14C - .incbin "baserom.gba", 0xE9C14C, 0x20 @UNKNOWN + .incbin "graphics/interface/pokedex_abc.gbapal" gUnknown_8E9C16C:: @ 8E9C16C - .incbin "baserom.gba", 0xE9C16C, 0x26C + .incbin "graphics/interface/pokedex_abc.4bpp.lz" gUnknown_8E9C3D8:: @ 8E9C3D8 - .incbin "baserom.gba", 0xE9C3D8, 0x20 @UNKNOWN + .incbin "graphics/interface/box_tiles_pal1.gbapal" gUnknown_8E9C3F8:: @ 8E9C3F8 - .incbin "baserom.gba", 0xE9C3F8, 0x20 @UNKNOWN + .incbin "graphics/interface/box_tiles_pal2.gbapal" gUnknown_8E9C418:: @ 8E9C418 - .incbin "baserom.gba", 0xE9C418, 0x20 @UNKNOWN + .incbin "graphics/interface/box_tiles_pal3.gbapal" gUnknown_8E9C438:: @ 8E9C438 - .incbin "baserom.gba", 0xE9C438, 0x6B4 + .incbin "graphics/interface/box_tiles.4bpp.lz" gUnknown_8E9CAEC:: @ 8E9CAEC - .incbin "baserom.gba", 0xE9CAEC, 0xB0 + .incbin "graphics/unknown/unknown_E9CAEC.bin.lz" gUnknown_8E9CB9C:: @ 8E9CB9C .incbin "graphics/misc/markings2.gbapal" @@ -16299,16 +16357,16 @@ gFameCheckerBg2Tilemap:: @ 8EA0F00 .incbin "data/graphics/fame_checker_tilemap2.bin" gUnknown_8EA1700:: @ 8EA1700 - .incbin "baserom.gba", 0xEA1700, 0x20 @UNKNOWN + .incbin "graphics/interface/union_room_chat.gbapal" gUnknown_8EA1720:: @ 8EA1720 - .incbin "baserom.gba", 0xEA1720, 0x238 + .incbin "graphics/interface/union_room_chat.4bpp.lz" gUnknown_8EA1958:: @ 8EA1958 - .incbin "baserom.gba", 0xEA1958, 0xF8 + .incbin "graphics/interface/union_room_chat.bin.lz" gUnknown_8EA1A50:: @ 8EA1A50 - .incbin "baserom.gba", 0xEA1A50, 0x118 + .incbin "graphics/interface/union_room_chat_icons.4bpp.lz" .align 2 gTilesetPalettes_8EA1B68:: @ 8EA1B68 @@ -16433,13 +16491,13 @@ gTilesetTiles_8EA9F88:: @ 8EA9F88 .incbin "data/tilesets/secondary/82D4E6C/tiles.4bpp.lz" gUnknown_8EAA9F0:: @ 8EAA9F0 - .incbin "baserom.gba", 0xEAA9F0, 0x20 @UNKNOWN + .incbin "graphics/interface/union_room_chat_panel.gbapal" gUnknown_8EAAA10:: @ 8EAAA10 - .incbin "baserom.gba", 0xEAAA10, 0x5C + .incbin "graphics/interface/union_room_chat_panel.4bpp.lz" gUnknown_8EAAA6C:: @ 8EAAA6C - .incbin "baserom.gba", 0xEAAA6C, 0xAC + .incbin "graphics/interface/union_room_chat_panel.bin.lz" gCreditsMonBackdropPals:: @ 8EAAB18 .incbin "graphics/credits/charizard.gbapal" @@ -16497,21 +16555,27 @@ gCreditsAllRightsReservedGfxMap:: @ 8EAE900 .incbin "graphics/credits/unk_8EAE548.bin.lz" gUnknown_8EAEA00:: @ 8EAEA00 - .incbin "baserom.gba", 0xEAEA00, 0x20 @UNKNOWN + .incbin "graphics/link/gba.gbapal" gTradeGba2_Pal:: @ 8EAEA20 - .incbin "baserom.gba", 0xEAEA20, 0x60 @UNKNOWN + .incbin "graphics/link/gba_pal2.gbapal" gTradeGba_Gfx:: @ 8EAEA80 - .incbin "baserom.gba", 0xEAEA80, 0x1420 @UNKNOWN + .incbin "graphics/link/gba.4bpp" + +gUnknown_8EAFE80:: @ 8EAFE80 + .incbin "graphics/interface/blank2.gbapal" gUnknown_8EAFEA0:: @ 8EAFEA0 - .incbin "baserom.gba", 0xEAFEA0, 0x120 @UNKNOWN + .incbin "graphics/berry_crush/berry_crush.gbapal" + +gUnknown_8EAFF60:: @ 8EAFF60 + .incbin "graphics/unknown/unknown_EAFF60.gbapal" @ seems to be unused. Loaded palette for above is 0xC0 so this is unused. gUnknown_8EAFFC0:: @ 8EAFFC0 - .incbin "baserom.gba", 0xEAFFC0, 0xB1C + .incbin "graphics/berry_crush/berry_crush.4bpp.lz" gUnknown_8EB0ADC:: @ 8EB0ADC - .incbin "baserom.gba", 0xEB0ADC, 0x44 + .incbin "graphics/berry_crush/data_EB0ADC.bin.lz" @ TODO: What is this? @ EOF diff --git a/data/trainer_card.s b/data/trainer_card.s index 446e2f4ac..de35fa192 100644 --- a/data/trainer_card.s +++ b/data/trainer_card.s @@ -31,7 +31,31 @@ gUnknown_83CCE30:: @ 83CCE30 .incbin "baserom.gba", 0x3CCE30, 0x98 gUnknown_83CCEC8:: @ 83CCEC8 - .incbin "baserom.gba", 0x3CCEC8, 0x3B8 + .incbin "baserom.gba", 0x3CCEC8, 0xB8 + +gUnknown_83CCF80:: @ 83CCF80 + .incbin "baserom.gba", 0x3CCF80, 0x60 + +gUnknown_83CCFE0:: @ 83CCFE0 + .incbin "baserom.gba", 0x3CCFE0, 0x60 + +gUnknown_83CD040:: @ 83CD040 + .incbin "baserom.gba", 0x3CD040, 0x60 + +gUnknown_83CD0A0:: @ 83CD0A0 + .incbin "baserom.gba", 0x3CD0A0, 0x60 + +gUnknown_83CD100:: @ 83CD100 + .incbin "baserom.gba", 0x3CD100, 0x60 + +gUnknown_83CD160:: @ 83CD160 + .incbin "baserom.gba", 0x3CD160, 0x60 + +gUnknown_83CD1C0:: @ 83CD1C0 + .incbin "baserom.gba", 0x3CD1C0, 0x60 + +gUnknown_83CD220:: @ 83CD220 + .incbin "baserom.gba", 0x3CD220, 0x60 gUnknown_83CD280:: @ 83CD280 .incbin "baserom.gba", 0x3CD280, 0x20 @@ -70,10 +94,18 @@ gUnknown_83CD898:: @ 83CD898 .incbin "baserom.gba", 0x3CD898, 0x20 gUnknown_83CD8B8:: @ 83CD8B8 - .incbin "baserom.gba", 0x3CD8B8, 0x14 + .word gUnknown_8E9986C + .word gUnknown_83CCF80 + .word gUnknown_83CD040 + .word gUnknown_83CD100 + .word gUnknown_83CD1C0 gUnknown_83CD8CC:: @ 83CD8CC - .incbin "baserom.gba", 0x3CD8CC, 0x14 + .word gUnknown_8E99198 + .word gUnknown_83CCFE0 + .word gUnknown_83CD0A0 + .word gUnknown_83CD160 + .word gUnknown_83CD220 gUnknown_83CD8E0:: @ 83CD8E0 .incbin "baserom.gba", 0x3CD8E0, 0x3 diff --git a/graphics/battle_interface/ball_display_unused_extra.png b/graphics/battle_interface/ball_display_unused_extra.png new file mode 100644 index 000000000..d75b86b54 Binary files /dev/null and b/graphics/battle_interface/ball_display_unused_extra.png differ diff --git a/graphics/battle_interface/expbar.png b/graphics/battle_interface/expbar.png new file mode 100644 index 000000000..b1a0c440e Binary files /dev/null and b/graphics/battle_interface/expbar.png differ diff --git a/graphics/battle_interface/healthbox_doubles_opponent.png b/graphics/battle_interface/healthbox_doubles_opponent.png new file mode 100644 index 000000000..5d38ffbfa Binary files /dev/null and b/graphics/battle_interface/healthbox_doubles_opponent.png differ diff --git a/graphics/battle_interface/healthbox_doubles_player.png b/graphics/battle_interface/healthbox_doubles_player.png new file mode 100644 index 000000000..7edb66642 Binary files /dev/null and b/graphics/battle_interface/healthbox_doubles_player.png differ diff --git a/graphics/battle_interface/healthbox_singles_opponent.png b/graphics/battle_interface/healthbox_singles_opponent.png new file mode 100644 index 000000000..5f02199b5 Binary files /dev/null and b/graphics/battle_interface/healthbox_singles_opponent.png differ diff --git a/graphics/battle_interface/healthbox_singles_player.png b/graphics/battle_interface/healthbox_singles_player.png new file mode 100644 index 000000000..2478cc57d Binary files /dev/null and b/graphics/battle_interface/healthbox_singles_player.png differ diff --git a/graphics/battle_interface/hpbar.png b/graphics/battle_interface/hpbar.png new file mode 100644 index 000000000..9991efe14 Binary files /dev/null and b/graphics/battle_interface/hpbar.png differ diff --git a/graphics/battle_interface/hpbar_anim.png b/graphics/battle_interface/hpbar_anim.png new file mode 100644 index 000000000..5d1fc5f52 Binary files /dev/null and b/graphics/battle_interface/hpbar_anim.png differ diff --git a/graphics/battle_interface/misc.png b/graphics/battle_interface/misc.png new file mode 100644 index 000000000..cf1d76046 Binary files /dev/null and b/graphics/battle_interface/misc.png differ diff --git a/graphics/battle_interface/misc_frameend.png b/graphics/battle_interface/misc_frameend.png new file mode 100644 index 000000000..978236138 Binary files /dev/null and b/graphics/battle_interface/misc_frameend.png differ diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png new file mode 100644 index 000000000..128dde0f6 Binary files /dev/null and b/graphics/battle_interface/status2.png differ diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png new file mode 100644 index 000000000..e8538ec58 Binary files /dev/null and b/graphics/battle_interface/status3.png differ diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png new file mode 100644 index 000000000..6ef3b07fd Binary files /dev/null and b/graphics/battle_interface/status4.png differ diff --git a/graphics/battle_interface/status_brn.png b/graphics/battle_interface/status_brn.png new file mode 100644 index 000000000..16b441367 Binary files /dev/null and b/graphics/battle_interface/status_brn.png differ diff --git a/graphics/battle_interface/status_frz.png b/graphics/battle_interface/status_frz.png new file mode 100644 index 000000000..fe28208b1 Binary files /dev/null and b/graphics/battle_interface/status_frz.png differ diff --git a/graphics/battle_interface/status_par.png b/graphics/battle_interface/status_par.png new file mode 100644 index 000000000..3df34c5f6 Binary files /dev/null and b/graphics/battle_interface/status_par.png differ diff --git a/graphics/battle_interface/status_psn.png b/graphics/battle_interface/status_psn.png new file mode 100644 index 000000000..8b79b2464 Binary files /dev/null and b/graphics/battle_interface/status_psn.png differ diff --git a/graphics/battle_interface/status_slp.png b/graphics/battle_interface/status_slp.png new file mode 100644 index 000000000..e3da5c0f3 Binary files /dev/null and b/graphics/battle_interface/status_slp.png differ diff --git a/graphics/battle_interface/window.png b/graphics/battle_interface/window.png new file mode 100644 index 000000000..5167ce2c5 Binary files /dev/null and b/graphics/battle_interface/window.png differ diff --git a/graphics/battle_interface/window1.pal b/graphics/battle_interface/window1.pal new file mode 100644 index 000000000..fd5043327 --- /dev/null +++ b/graphics/battle_interface/window1.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +255 0 0 +82 98 156 +106 139 189 +255 255 255 +106 90 115 +213 205 213 +65 74 123 +41 49 49 +255 0 255 +230 222 230 +255 0 255 +156 123 24 +205 172 74 +41 82 106 diff --git a/graphics/battle_interface/window2.pal b/graphics/battle_interface/window2.pal new file mode 100644 index 000000000..3adc73766 --- /dev/null +++ b/graphics/battle_interface/window2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +74 57 115 +82 98 156 +106 139 189 +41 49 49 +255 255 255 +106 90 115 +222 213 222 +90 82 82 +180 189 180 +139 156 213 +90 74 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/berry_crush/berry_crush.pal b/graphics/berry_crush/berry_crush.pal new file mode 100644 index 000000000..8ee3398d5 --- /dev/null +++ b/graphics/berry_crush/berry_crush.pal @@ -0,0 +1,99 @@ +JASC-PAL +0100 +96 +98 172 180 +255 213 156 +255 197 139 +255 164 106 +238 131 82 +222 123 74 +213 98 49 +197 82 41 +156 213 189 +123 180 156 +222 156 255 +172 123 222 +255 0 255 +255 0 255 +230 230 255 +65 74 90 +156 148 172 +255 213 156 +255 197 139 +255 164 106 +238 131 82 +222 123 74 +213 98 49 +197 82 41 +255 238 0 +230 189 0 +180 180 180 +139 139 139 +255 0 255 +255 0 255 +230 230 255 +65 74 90 +156 148 172 +255 213 156 +255 197 139 +255 164 106 +238 131 82 +222 123 74 +213 98 49 +197 82 41 +197 213 246 +255 255 255 +238 238 246 +205 205 213 +255 0 255 +255 0 255 +230 230 255 +65 74 90 +255 180 255 +164 172 172 +98 106 115 +123 131 139 +139 148 156 +148 222 164 +156 189 222 +197 213 246 +180 164 115 +205 189 148 +213 205 172 +230 222 189 +246 238 205 +139 123 74 +74 131 189 +65 74 90 +0 0 0 +148 222 164 +164 230 172 +180 238 189 +197 246 205 +213 255 222 +238 255 238 +255 255 255 +65 180 238 +255 255 255 +0 197 57 +255 255 255 +246 213 0 +255 0 255 +246 238 205 +139 123 74 +255 164 106 +164 172 172 +98 106 115 +123 131 139 +139 148 156 +115 156 189 +156 189 222 +197 213 246 +180 164 115 +205 189 148 +213 205 172 +230 222 189 +246 238 205 +139 123 74 +74 131 189 +65 74 90 diff --git a/graphics/berry_crush/berry_crush.png b/graphics/berry_crush/berry_crush.png new file mode 100644 index 000000000..6e43adb27 Binary files /dev/null and b/graphics/berry_crush/berry_crush.png differ diff --git a/graphics/berry_crush/data_EB0ADC.bin b/graphics/berry_crush/data_EB0ADC.bin new file mode 100644 index 000000000..c6cc0edb1 --- /dev/null +++ b/graphics/berry_crush/data_EB0ADC.bin @@ -0,0 +1 @@ +L@L@L@L@L@L@L@L@L@M@\@\@\@\@\@\@\@\@\@]@N@N@N@N@N@N@N@N@N@O@^@^@^@^@^@^@^@^@^@_@Ù`Ù`Ù`Ù`Ù`Ù`Ù`Ù`Ù`Ú`é`é`é`é`é`é`é`é`é`ê`nDm@m@m@m@m@m@m@m@m@~D}@}@}@}@}@}@}@}@}@ÜdÛ`Û`Û`Û`Û`Û`Û`Û`Û`ìdë`ë`ë`ë`ë`ë`ë`ë`ë` \ No newline at end of file diff --git a/graphics/contest/applause.png b/graphics/contest/applause.png new file mode 100644 index 000000000..934381751 Binary files /dev/null and b/graphics/contest/applause.png differ diff --git a/graphics/contest/misc.png b/graphics/contest/misc.png new file mode 100644 index 000000000..73f8054db Binary files /dev/null and b/graphics/contest/misc.png differ diff --git a/graphics/contest/misc_2.png b/graphics/contest/misc_2.png new file mode 100644 index 000000000..92dd92bf7 Binary files /dev/null and b/graphics/contest/misc_2.png differ diff --git a/graphics/contest/nextturn.png b/graphics/contest/nextturn.png index 1d79d0608..36b503d54 100644 Binary files a/graphics/contest/nextturn.png and b/graphics/contest/nextturn.png differ diff --git a/graphics/interface/blank2.pal b/graphics/interface/blank2.pal new file mode 100644 index 000000000..4b0812f09 --- /dev/null +++ b/graphics/interface/blank2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/interface/box_tiles.png b/graphics/interface/box_tiles.png new file mode 100644 index 000000000..b4f097133 Binary files /dev/null and b/graphics/interface/box_tiles.png differ diff --git a/graphics/interface/box_tiles_pal1.pal b/graphics/interface/box_tiles_pal1.pal new file mode 100644 index 000000000..a827cfd45 --- /dev/null +++ b/graphics/interface/box_tiles_pal1.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +131 172 180 +41 106 98 +82 98 115 +74 172 164 +57 139 139 +164 213 246 +115 189 98 +255 255 255 +123 189 255 +0 123 255 +41 90 164 +123 205 180 +8 74 65 +164 238 148 +65 82 90 diff --git a/graphics/interface/box_tiles_pal2.pal b/graphics/interface/box_tiles_pal2.pal new file mode 100644 index 000000000..1fda7f05a --- /dev/null +++ b/graphics/interface/box_tiles_pal2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +148 148 172 +115 115 123 +82 82 90 +148 148 172 +246 172 82 +164 164 180 +0 0 0 +164 205 246 +123 180 213 +255 222 148 +213 230 255 +180 213 246 +156 205 238 +255 255 255 +90 255 238 diff --git a/graphics/interface/box_tiles_pal3.pal b/graphics/interface/box_tiles_pal3.pal new file mode 100644 index 000000000..42bb76663 --- /dev/null +++ b/graphics/interface/box_tiles_pal3.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 246 148 +148 148 172 +115 115 123 +82 82 90 +139 139 164 +164 123 0 +164 164 180 +0 0 0 +164 205 246 +123 180 213 +197 189 24 +213 230 255 +180 213 246 +156 205 238 +180 180 180 +90 255 238 diff --git a/graphics/interface/learn_move.bin b/graphics/interface/learn_move.bin new file mode 100644 index 000000000..d7fa0680f Binary files /dev/null and b/graphics/interface/learn_move.bin differ diff --git a/graphics/interface/learn_move.png b/graphics/interface/learn_move.png new file mode 100644 index 000000000..e19df7731 Binary files /dev/null and b/graphics/interface/learn_move.png differ diff --git a/graphics/interface/link_rfu_frame.png b/graphics/interface/link_rfu_frame.png new file mode 100644 index 000000000..3065f03f7 Binary files /dev/null and b/graphics/interface/link_rfu_frame.png differ diff --git a/graphics/interface/link_rfu_status.png b/graphics/interface/link_rfu_status.png new file mode 100644 index 000000000..02d9ab338 Binary files /dev/null and b/graphics/interface/link_rfu_status.png differ diff --git a/graphics/interface/naming_screen_8E97FE4.pal b/graphics/interface/naming_screen_8E97FE4.pal new file mode 100644 index 000000000..e38b79fcf --- /dev/null +++ b/graphics/interface/naming_screen_8E97FE4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 255 +98 98 98 +213 213 205 +230 8 8 +255 189 115 +32 156 8 +148 246 148 +49 82 205 +164 197 246 +0 0 0 +0 0 0 +0 0 0 +123 172 197 +213 156 115 +148 189 106 diff --git a/graphics/interface/naming_screen_E98398.bin b/graphics/interface/naming_screen_E98398.bin new file mode 100644 index 000000000..bc4260b1f Binary files /dev/null and b/graphics/interface/naming_screen_E98398.bin differ diff --git a/graphics/interface/naming_screen_E98458.bin b/graphics/interface/naming_screen_E98458.bin new file mode 100644 index 000000000..64095dce5 Binary files /dev/null and b/graphics/interface/naming_screen_E98458.bin differ diff --git a/graphics/interface/naming_screen_E98518.bin b/graphics/interface/naming_screen_E98518.bin new file mode 100644 index 000000000..847486432 Binary files /dev/null and b/graphics/interface/naming_screen_E98518.bin differ diff --git a/graphics/interface/naming_screen_menu.bin b/graphics/interface/naming_screen_menu.bin new file mode 100644 index 000000000..7e3604311 Binary files /dev/null and b/graphics/interface/naming_screen_menu.bin differ diff --git a/graphics/interface/naming_screen_menu.png b/graphics/interface/naming_screen_menu.png new file mode 100644 index 000000000..e7c4374c7 Binary files /dev/null and b/graphics/interface/naming_screen_menu.png differ diff --git a/graphics/interface/party_menu_misc.pal b/graphics/interface/party_menu_misc.pal new file mode 100644 index 000000000..d6d7e4185 --- /dev/null +++ b/graphics/interface/party_menu_misc.pal @@ -0,0 +1,179 @@ +JASC-PAL +0100 +176 +123 156 115 +255 255 255 +106 106 106 +0 0 0 +65 205 255 +0 139 189 +49 189 238 +255 156 148 +189 90 82 +222 123 115 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +139 148 123 +74 74 98 +65 156 148 +32 106 98 +74 172 164 +57 139 139 +82 65 74 +32 16 24 +255 0 255 +255 0 255 +255 255 255 +123 205 180 +57 148 123 +255 0 255 +255 0 255 +115 90 180 +139 148 123 +255 115 49 +65 156 148 +32 106 98 +74 172 164 +57 139 139 +82 65 74 +82 82 90 +255 0 255 +255 0 255 +255 255 255 +123 205 180 +57 148 123 +255 0 255 +255 0 255 +164 115 246 +123 156 115 +74 74 98 +115 115 115 +255 255 255 +131 197 222 +57 148 222 +41 123 180 +131 197 222 +41 123 180 +115 255 172 +90 213 131 +65 205 255 +0 98 148 +82 82 82 +255 213 82 +255 180 65 +123 156 115 +74 74 98 +115 115 115 +255 255 255 +213 197 90 +197 164 24 +156 156 32 +213 197 90 +156 156 32 +255 230 57 +205 172 8 +255 156 148 +156 65 57 +82 82 82 +255 213 82 +255 180 65 +123 156 115 +74 74 98 +115 115 115 +255 255 255 +213 164 32 +197 106 16 +164 74 0 +213 164 32 +164 74 0 +255 115 49 +197 57 0 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 +123 156 115 +255 115 49 +115 115 115 +255 255 255 +180 255 164 +123 222 131 +123 156 98 +255 115 49 +255 115 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 +57 156 255 +255 115 49 +115 115 115 +255 255 255 +172 238 255 +123 213 238 +74 172 205 +255 115 49 +255 115 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 +57 156 255 +255 115 49 +115 115 115 +255 255 255 +246 246 148 +246 230 98 +222 197 32 +255 115 49 +255 115 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 +57 156 255 +255 115 49 +115 115 115 +255 255 255 +255 213 222 +255 189 148 +238 164 131 +255 115 49 +255 115 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 +57 156 255 +255 255 115 +115 115 115 +255 255 255 +180 255 164 +123 222 131 +131 172 106 +255 255 115 +255 255 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +82 82 82 +255 213 82 +255 180 65 diff --git a/graphics/interface/pokedex_abc.png b/graphics/interface/pokedex_abc.png new file mode 100644 index 000000000..0ec33315e Binary files /dev/null and b/graphics/interface/pokedex_abc.png differ diff --git a/graphics/interface/shop.pal b/graphics/interface/shop.pal new file mode 100644 index 000000000..b0fec0a30 --- /dev/null +++ b/graphics/interface/shop.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +238 230 172 +222 156 106 +255 189 131 +255 222 164 +255 255 213 +238 230 172 +106 106 106 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/interface/shop.png b/graphics/interface/shop.png new file mode 100644 index 000000000..892e728fe Binary files /dev/null and b/graphics/interface/shop.png differ diff --git a/graphics/interface/shop1.bin b/graphics/interface/shop1.bin new file mode 100644 index 000000000..801a5c6ff Binary files /dev/null and b/graphics/interface/shop1.bin differ diff --git a/graphics/interface/shop2.bin b/graphics/interface/shop2.bin new file mode 100644 index 000000000..4d0a67f05 Binary files /dev/null and b/graphics/interface/shop2.bin differ diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png index fe802d7f6..2edfda8f9 100644 Binary files a/graphics/interface/status_icons.png and b/graphics/interface/status_icons.png differ diff --git a/graphics/interface/summary_expbar.png b/graphics/interface/summary_expbar.png new file mode 100644 index 000000000..cf5b334d9 Binary files /dev/null and b/graphics/interface/summary_expbar.png differ diff --git a/graphics/interface/summary_hpbar.png b/graphics/interface/summary_hpbar.png new file mode 100644 index 000000000..ed1eb6467 Binary files /dev/null and b/graphics/interface/summary_hpbar.png differ diff --git a/graphics/interface/trainer_memo.bin b/graphics/interface/trainer_memo.bin new file mode 100644 index 000000000..c900b1595 Binary files /dev/null and b/graphics/interface/trainer_memo.bin differ diff --git a/graphics/interface/trainer_memo.png b/graphics/interface/trainer_memo.png new file mode 100644 index 000000000..df2f6c98f Binary files /dev/null and b/graphics/interface/trainer_memo.png differ diff --git a/graphics/interface/trainer_memo_2.bin b/graphics/interface/trainer_memo_2.bin new file mode 100644 index 000000000..cbcd7bdba Binary files /dev/null and b/graphics/interface/trainer_memo_2.bin differ diff --git a/graphics/interface/trainer_memo_3.bin b/graphics/interface/trainer_memo_3.bin new file mode 100644 index 000000000..6d56577a6 Binary files /dev/null and b/graphics/interface/trainer_memo_3.bin differ diff --git a/graphics/interface/trainer_memo_4.bin b/graphics/interface/trainer_memo_4.bin new file mode 100644 index 000000000..21033931f Binary files /dev/null and b/graphics/interface/trainer_memo_4.bin differ diff --git a/graphics/interface/trainer_memo_5.bin b/graphics/interface/trainer_memo_5.bin new file mode 100644 index 000000000..ea7e701fd Binary files /dev/null and b/graphics/interface/trainer_memo_5.bin differ diff --git a/graphics/interface/trainer_memo_pal1.pal b/graphics/interface/trainer_memo_pal1.pal new file mode 100644 index 000000000..44fe49317 --- /dev/null +++ b/graphics/interface/trainer_memo_pal1.pal @@ -0,0 +1,83 @@ +JASC-PAL +0100 +80 +255 0 255 +0 123 197 +230 222 156 +230 205 255 +0 74 148 +123 156 156 +197 189 115 +106 197 205 +205 172 238 +180 139 213 +205 172 238 +180 139 213 +255 180 0 +123 131 148 +255 255 255 +98 106 123 +255 0 255 +255 255 255 +230 230 238 +205 172 238 +98 106 123 +180 139 213 +230 205 255 +205 172 238 +255 0 255 +255 0 255 +255 255 255 +213 213 213 +222 222 222 +230 230 230 +238 238 238 +246 246 246 +255 0 255 +255 172 148 +255 213 172 +255 238 213 +230 139 106 +255 246 238 +255 246 238 +238 238 197 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +123 131 148 +255 255 255 +98 106 123 +255 0 255 +255 213 90 +255 238 123 +255 246 197 +246 189 82 +255 255 222 +255 255 222 +246 238 180 +255 255 164 +123 131 148 +98 106 123 +255 213 82 +255 180 65 +123 131 148 +255 255 255 +98 106 123 +255 0 255 +156 238 213 +172 246 222 +230 255 255 +106 197 156 +246 255 255 +246 255 255 +205 238 238 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +123 131 148 +255 255 255 +98 106 123 diff --git a/graphics/interface/trainer_memo_pal2.pal b/graphics/interface/trainer_memo_pal2.pal new file mode 100644 index 000000000..22efdfee5 --- /dev/null +++ b/graphics/interface/trainer_memo_pal2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 255 +255 255 255 +230 230 238 +106 230 230 +98 106 123 +90 213 213 +230 205 255 +205 172 238 +255 0 255 +255 0 255 +255 255 255 +213 213 213 +222 222 222 +230 230 230 +246 246 246 +246 246 246 diff --git a/graphics/interface/trainer_memo_pal3.pal b/graphics/interface/trainer_memo_pal3.pal new file mode 100644 index 000000000..7f6927b5f --- /dev/null +++ b/graphics/interface/trainer_memo_pal3.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 255 +0 123 197 +230 222 156 +230 205 255 +0 74 148 +123 156 156 +197 189 115 +106 197 205 +106 230 230 +90 213 213 +205 172 238 +180 139 213 +255 180 0 +123 131 148 +255 255 255 +98 106 123 diff --git a/graphics/interface/union_room_chat.bin b/graphics/interface/union_room_chat.bin new file mode 100644 index 000000000..e91b50c8d Binary files /dev/null and b/graphics/interface/union_room_chat.bin differ diff --git a/graphics/interface/union_room_chat.png b/graphics/interface/union_room_chat.png new file mode 100644 index 000000000..ae6ba4d02 Binary files /dev/null and b/graphics/interface/union_room_chat.png differ diff --git a/graphics/interface/union_room_chat_icons.png b/graphics/interface/union_room_chat_icons.png new file mode 100644 index 000000000..5ff8ea8cc Binary files /dev/null and b/graphics/interface/union_room_chat_icons.png differ diff --git a/graphics/interface/union_room_chat_panel.bin b/graphics/interface/union_room_chat_panel.bin new file mode 100644 index 000000000..c87d6268d Binary files /dev/null and b/graphics/interface/union_room_chat_panel.bin differ diff --git a/graphics/interface/union_room_chat_panel.png b/graphics/interface/union_room_chat_panel.png new file mode 100644 index 000000000..86ddacc03 Binary files /dev/null and b/graphics/interface/union_room_chat_panel.png differ diff --git a/graphics/item_menu/bag_pal1.pal b/graphics/item_menu/bag_pal1.pal new file mode 100644 index 000000000..e94c83852 --- /dev/null +++ b/graphics/item_menu/bag_pal1.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 65 90 +255 0 255 +41 57 82 +65 180 164 +255 0 255 +255 0 255 +106 205 197 +246 205 115 +238 230 172 +255 255 205 +222 139 74 +148 148 148 +238 230 172 +106 106 106 +213 180 82 +205 65 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/item_menu/bag_pal2.pal b/graphics/item_menu/bag_pal2.pal new file mode 100644 index 000000000..e1fa1a38d --- /dev/null +++ b/graphics/item_menu/bag_pal2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 65 90 +255 0 255 +41 57 82 +213 139 115 +255 0 255 +255 0 255 +255 172 148 +246 205 115 +238 230 172 +255 255 205 +222 139 74 +148 148 148 +238 230 172 +106 106 106 +213 180 82 +205 65 0 diff --git a/graphics/item_menu/bag_tilemap1.bin b/graphics/item_menu/bag_tilemap1.bin new file mode 100644 index 000000000..dd444fa08 Binary files /dev/null and b/graphics/item_menu/bag_tilemap1.bin differ diff --git a/graphics/item_menu/bag_tilemap2.bin b/graphics/item_menu/bag_tilemap2.bin new file mode 100644 index 000000000..5a5a29fad Binary files /dev/null and b/graphics/item_menu/bag_tilemap2.bin differ diff --git a/graphics/item_menu/bag_tiles.png b/graphics/item_menu/bag_tiles.png new file mode 100644 index 000000000..a9a96948f Binary files /dev/null and b/graphics/item_menu/bag_tiles.png differ diff --git a/graphics/link/gba.pal b/graphics/link/gba.pal new file mode 100644 index 000000000..64a442293 --- /dev/null +++ b/graphics/link/gba.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +131 131 139 +98 98 123 +65 74 106 +41 49 90 +230 230 230 +205 205 205 +180 180 180 +156 156 156 +213 180 106 +205 156 82 +49 255 106 diff --git a/graphics/link/gba.png b/graphics/link/gba.png new file mode 100644 index 000000000..1a0909468 Binary files /dev/null and b/graphics/link/gba.png differ diff --git a/graphics/link/gba_pal2.pal b/graphics/link/gba_pal2.pal new file mode 100644 index 000000000..e2fb95b4a --- /dev/null +++ b/graphics/link/gba_pal2.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +255 57 8 +255 90 8 +255 131 8 +255 172 8 +255 213 8 +255 255 8 +255 255 131 +255 255 255 +255 255 0 +65 0 0 +115 16 0 +172 32 0 +230 57 8 +0 0 0 +0 0 0 +0 0 0 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +131 131 139 +98 98 123 +65 74 106 +41 49 90 +230 230 230 +205 205 205 +180 180 180 +156 156 156 +213 180 106 +205 156 82 +49 255 106 +0 0 0 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +0 16 172 +32 32 106 +16 16 90 +0 0 74 +255 255 189 +230 230 164 +205 205 148 +189 180 115 +139 139 90 +74 74 57 +8 32 32 diff --git a/graphics/pokemon/circled_question_mark/circled/back.png b/graphics/pokemon/circled_question_mark/circled/back.png new file mode 100644 index 000000000..ab694ff88 Binary files /dev/null and b/graphics/pokemon/circled_question_mark/circled/back.png differ diff --git a/graphics/pokemon/circled_question_mark/circled/front.png b/graphics/pokemon/circled_question_mark/circled/front.png new file mode 100644 index 000000000..ab694ff88 Binary files /dev/null and b/graphics/pokemon/circled_question_mark/circled/front.png differ diff --git a/graphics/pokemon/circled_question_mark/circled/normal.pal b/graphics/pokemon/circled_question_mark/circled/normal.pal new file mode 100644 index 000000000..681f1cefe --- /dev/null +++ b/graphics/pokemon/circled_question_mark/circled/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +205 205 205 +172 172 172 +255 255 255 +0 0 0 diff --git a/graphics/pokemon/circled_question_mark/circled/shiny.pal b/graphics/pokemon/circled_question_mark/circled/shiny.pal new file mode 100644 index 000000000..aa8d08dc3 --- /dev/null +++ b/graphics/pokemon/circled_question_mark/circled/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +123 172 172 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +32 32 32 +172 172 172 +139 139 139 +222 222 222 +32 32 32 diff --git a/graphics/pokemon/circled_question_mark/double/back.png b/graphics/pokemon/circled_question_mark/double/back.png new file mode 100644 index 000000000..881ff0519 Binary files /dev/null and b/graphics/pokemon/circled_question_mark/double/back.png differ diff --git a/graphics/pokemon/circled_question_mark/double/front.png b/graphics/pokemon/circled_question_mark/double/front.png new file mode 100644 index 000000000..14eb6e139 Binary files /dev/null and b/graphics/pokemon/circled_question_mark/double/front.png differ diff --git a/graphics/pokemon/circled_question_mark/double/normal.pal b/graphics/pokemon/circled_question_mark/double/normal.pal new file mode 100644 index 000000000..67be6bbf4 --- /dev/null +++ b/graphics/pokemon/circled_question_mark/double/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 0 +255 255 255 +0 0 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/circled_question_mark/double/shiny.pal b/graphics/pokemon/circled_question_mark/double/shiny.pal new file mode 100644 index 000000000..67be6bbf4 --- /dev/null +++ b/graphics/pokemon/circled_question_mark/double/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 255 0 +255 255 255 +0 0 0 +255 255 255 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/circled_question_mark/footprint.png b/graphics/pokemon/circled_question_mark/footprint.png new file mode 100644 index 000000000..7c4f45eaa Binary files /dev/null and b/graphics/pokemon/circled_question_mark/footprint.png differ diff --git a/graphics/pokemon/circled_question_mark/icon.png b/graphics/pokemon/circled_question_mark/icon.png new file mode 100644 index 000000000..b31ebacf7 Binary files /dev/null and b/graphics/pokemon/circled_question_mark/icon.png differ diff --git a/graphics/pokemon/egg/icon.png b/graphics/pokemon/egg/icon.png index 8f6ca5dde..e0c87cd2b 100644 Binary files a/graphics/pokemon/egg/icon.png and b/graphics/pokemon/egg/icon.png differ diff --git a/graphics/pokemon/ghost/front.png b/graphics/pokemon/ghost/front.png new file mode 100644 index 000000000..55a0e3608 Binary files /dev/null and b/graphics/pokemon/ghost/front.png differ diff --git a/graphics/pokemon/question_mark/circled/back.png b/graphics/pokemon/question_mark/circled/back.png deleted file mode 100644 index 3056402db..000000000 Binary files a/graphics/pokemon/question_mark/circled/back.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/circled/front.png b/graphics/pokemon/question_mark/circled/front.png deleted file mode 100644 index 3056402db..000000000 Binary files a/graphics/pokemon/question_mark/circled/front.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/circled/normal.pal b/graphics/pokemon/question_mark/circled/normal.pal deleted file mode 100644 index 681f1cefe..000000000 --- a/graphics/pokemon/question_mark/circled/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -156 205 205 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -205 205 205 -172 172 172 -255 255 255 -0 0 0 diff --git a/graphics/pokemon/question_mark/circled/shiny.pal b/graphics/pokemon/question_mark/circled/shiny.pal deleted file mode 100644 index aa8d08dc3..000000000 --- a/graphics/pokemon/question_mark/circled/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -123 172 172 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -32 32 32 -172 172 172 -139 139 139 -222 222 222 -32 32 32 diff --git a/graphics/pokemon/question_mark/double/back.png b/graphics/pokemon/question_mark/double/back.png deleted file mode 100644 index 881ff0519..000000000 Binary files a/graphics/pokemon/question_mark/double/back.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/double/front.png b/graphics/pokemon/question_mark/double/front.png deleted file mode 100644 index 14eb6e139..000000000 Binary files a/graphics/pokemon/question_mark/double/front.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/double/normal.pal b/graphics/pokemon/question_mark/double/normal.pal deleted file mode 100644 index 67be6bbf4..000000000 --- a/graphics/pokemon/question_mark/double/normal.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 255 0 -255 255 255 -0 0 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/question_mark/double/shiny.pal b/graphics/pokemon/question_mark/double/shiny.pal deleted file mode 100644 index 67be6bbf4..000000000 --- a/graphics/pokemon/question_mark/double/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 255 0 -255 255 255 -0 0 0 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/question_mark/footprint.png b/graphics/pokemon/question_mark/footprint.png deleted file mode 100644 index 7c4f45eaa..000000000 Binary files a/graphics/pokemon/question_mark/footprint.png and /dev/null differ diff --git a/graphics/pokemon/question_mark/icon.png b/graphics/pokemon/question_mark/icon.png deleted file mode 100644 index b31ebacf7..000000000 Binary files a/graphics/pokemon/question_mark/icon.png and /dev/null differ diff --git a/graphics/trainer_card/0star.pal b/graphics/trainer_card/0star.pal new file mode 100644 index 000000000..1e83a252c --- /dev/null +++ b/graphics/trainer_card/0star.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +230 246 246 +222 238 255 +213 230 246 +197 213 230 +246 205 148 +164 164 164 +98 98 115 +246 213 139 +180 205 148 +106 164 222 +90 156 205 +57 115 156 +255 246 189 +255 255 255 +131 189 230 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +82 205 180 +49 156 148 +197 197 197 +90 90 90 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +230 148 82 +213 98 41 +197 197 197 +90 90 90 diff --git a/graphics/trainer_card/0star_em.pal b/graphics/trainer_card/0star_em.pal new file mode 100644 index 000000000..f49b7f2c5 --- /dev/null +++ b/graphics/trainer_card/0star_em.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +255 255 255 +230 255 222 +164 164 164 +123 123 123 +98 98 115 +41 57 65 +57 106 139 +65 139 197 +180 230 156 +148 238 131 +131 222 115 +82 172 74 +106 189 255 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/card.png b/graphics/trainer_card/card.png new file mode 100644 index 000000000..2fea60d09 Binary files /dev/null and b/graphics/trainer_card/card.png differ diff --git a/graphics/trainer_card/card_em.png b/graphics/trainer_card/card_em.png new file mode 100644 index 000000000..bd8be5162 Binary files /dev/null and b/graphics/trainer_card/card_em.png differ diff --git a/graphics/unknown/unknown_D12A44.png b/graphics/unknown/unknown_D12A44.png new file mode 100644 index 000000000..96c49a992 Binary files /dev/null and b/graphics/unknown/unknown_D12A44.png differ diff --git a/graphics/unknown/unknown_D12A64.png b/graphics/unknown/unknown_D12A64.png new file mode 100644 index 000000000..1a82e117e Binary files /dev/null and b/graphics/unknown/unknown_D12A64.png differ diff --git a/graphics/unknown/unknown_E861A8.bin b/graphics/unknown/unknown_E861A8.bin new file mode 100644 index 000000000..deae79449 Binary files /dev/null and b/graphics/unknown/unknown_E861A8.bin differ diff --git a/graphics/unknown/unknown_E9BD08.pal b/graphics/unknown/unknown_E9BD08.pal new file mode 100644 index 000000000..822f9e1e9 --- /dev/null +++ b/graphics/unknown/unknown_E9BD08.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 148 +255 0 0 +255 0 0 +255 32 32 +255 57 57 +255 74 74 +255 90 90 +255 115 115 +255 131 131 +255 156 156 +255 172 172 +255 189 189 +255 213 213 +255 230 230 +255 255 255 +0 0 0 diff --git a/graphics/unknown/unknown_E9CAEC.bin b/graphics/unknown/unknown_E9CAEC.bin new file mode 100644 index 000000000..973ef9e15 Binary files /dev/null and b/graphics/unknown/unknown_E9CAEC.bin differ diff --git a/graphics/unknown/unknown_EAFF60.pal b/graphics/unknown/unknown_EAFF60.pal new file mode 100644 index 000000000..ea7e6ddbf --- /dev/null +++ b/graphics/unknown/unknown_EAFF60.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +148 222 164 +164 230 172 +180 238 189 +197 246 205 +213 255 222 +238 255 238 +255 255 255 +189 65 255 +255 255 255 +123 123 123 +255 0 255 +246 238 205 +139 123 74 +180 189 189 +255 255 255 +0 0 255 +164 172 172 +98 106 115 +123 131 139 +139 148 156 +115 156 189 +156 189 222 +148 222 164 +180 164 115 +205 189 148 +213 205 172 +230 222 189 +246 238 205 +139 123 74 +74 131 189 +65 74 90 +98 172 180 +41 41 57 +213 213 222 +205 205 205 +238 238 238 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index f99dd148d..c3ff7caa2 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -25,6 +25,7 @@ SSANNEGFXDIR := graphics/ss_anne ITEMPCGFXDIR := graphics/item_pc TITLESCREENGFXDIR := graphics/title_screen CREDITSGFXDIR := graphics/credits +ITEMMENUGFXDIR := graphics/item_menu types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -151,6 +152,9 @@ $(UNUSEDGFXDIR)/color_frames.4bpp: %.4bpp: %.png $(BATINTGFXDIR)/unused_window2bar.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 5 + +$(BATINTGFXDIR)/window.gbapal: $(BATINTGFXDIR)/window1.gbapal $(BATINTGFXDIR)/window2.gbapal + cat $^ > $@ $(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp \ $(UNUSEDGFXDIR)/old_contest_floor.4bpp \ @@ -527,3 +531,6 @@ graphics/map_objects/151.4bpp: %.4bpp: %.png graphics/map_objects/emoticons.4bpp: %.4bpp: %.png $(GFX) $< $@ -mwidth 2 -mheight 2 + +$(ITEMMENUGFXDIR)/bag_tiles.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 55 -- cgit v1.2.3 From cf4b9de30fc09c01f818b329c982308a9fc895f6 Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 3 Dec 2019 18:46:19 -0700 Subject: update sBallOamData --- src/pokeball.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pokeball.c b/src/pokeball.c index 5a5a573dd..2785d0af9 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -105,9 +105,9 @@ const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] = static const struct OamData sBallOamData = { .y = 0, - .affineMode = 3, - .objMode = 0, - .mosaic = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = ST_OAM_4BPP, .bpp = 0, .shape = SPRITE_SHAPE(16x16), .x = 0, -- cgit v1.2.3 From 2dacf6c1bf329ff7321bf52e3591b5920c281b5d Mon Sep 17 00:00:00 2001 From: Evan Date: Tue, 3 Dec 2019 19:52:24 -0700 Subject: fix sBallOamData --- src/pokeball.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pokeball.c b/src/pokeball.c index 2785d0af9..395150a2e 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -107,8 +107,8 @@ static const struct OamData sBallOamData = .y = 0, .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, - .mosaic = ST_OAM_4BPP, - .bpp = 0, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, .shape = SPRITE_SHAPE(16x16), .x = 0, .matrixNum = 0, -- cgit v1.2.3 From 1b7dc422d96ef13888139f190a5f7c2d591fb0ca Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 4 Dec 2019 01:31:17 -0500 Subject: dump_graphics --- graphics/unknown/unknown_E87010.pal | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 graphics/unknown/unknown_E87010.pal diff --git a/graphics/unknown/unknown_E87010.pal b/graphics/unknown/unknown_E87010.pal new file mode 100644 index 000000000..70ee41fff --- /dev/null +++ b/graphics/unknown/unknown_E87010.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +230 230 238 +205 213 222 +180 197 205 +164 180 189 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 -- cgit v1.2.3 From 11a52655f307788f042e34c1bcf345d2b2de61b8 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 4 Dec 2019 07:53:12 -0700 Subject: text fixes --- src/pokeball.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pokeball.c b/src/pokeball.c index 395150a2e..aeaba08ab 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -331,7 +331,7 @@ u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow) u8 taskId; gDoingBattleAnim = TRUE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = 1; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = TRUE; taskId = CreateTask(Task_DoPokeballSendOutAnim, 5); gTasks[taskId].tPan = pan; gTasks[taskId].tThrowId = kindOfThrow; @@ -854,13 +854,13 @@ static void HandleBallAnimEnd(struct Sprite *sprite) gSprites[gBattlerSpriteIds[battlerId]].pos2.y = 0; gDoingBattleAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = 0; + gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); for (doneBattlers = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive == 0) + if (!gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive) doneBattlers++; } if (doneBattlers == MAX_BATTLERS_COUNT) @@ -892,7 +892,7 @@ static void sub_804B5C8(struct Sprite *sprite) DestroySprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); DestroySpriteAndFreeResources(sprite); if (gMain.inBattle) - gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = 0; + gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE; } } @@ -1240,7 +1240,7 @@ void LoadBallGfx(u8 ballId) { u16 var; - if (GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag) == 0xFFFF) + if (GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag) == SPRITE_INVALID_TAG) { LoadCompressedSpriteSheetUsingHeap(&gBallSpriteSheets[ballId]); LoadCompressedSpritePaletteUsingHeap(&gBallSpritePalettes[ballId]); -- cgit v1.2.3 From 21c9555dd2a867f085b310c30a4ce7033e63e8ad Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 4 Dec 2019 13:44:20 -0500 Subject: resolve comments --- data/graphics.s | 22 +++++++++++----------- graphics/battle_interface/exp_bar.png | Bin 0 -> 109 bytes graphics/battle_interface/expbar.png | Bin 109 -> 0 bytes graphics/battle_interface/hp_bar.png | Bin 0 -> 161 bytes graphics/battle_interface/hp_bar_anim.png | Bin 0 -> 149 bytes graphics/battle_interface/hpbar.png | Bin 161 -> 0 bytes graphics/battle_interface/hpbar_anim.png | Bin 149 -> 0 bytes graphics/battle_interface/misc_frame_end.png | Bin 0 -> 82 bytes graphics/battle_interface/misc_frameend.png | Bin 82 -> 0 bytes graphics/contest/next_turn.png | Bin 0 -> 190 bytes graphics/contest/next_turn_numbers.png | Bin 0 -> 181 bytes graphics/contest/next_turn_random.png | Bin 0 -> 158 bytes graphics/contest/nextturn.png | Bin 190 -> 0 bytes graphics/contest/nextturn_numbers.png | Bin 181 -> 0 bytes graphics/contest/nextturn_random.png | Bin 158 -> 0 bytes graphics/interface/summary_exp_bar.png | Bin 0 -> 230 bytes graphics/interface/summary_expbar.png | Bin 230 -> 0 bytes graphics/interface/summary_hp_bar.png | Bin 0 -> 227 bytes graphics/interface/summary_hpbar.png | Bin 227 -> 0 bytes graphics_file_rules.mk | 2 +- 20 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 graphics/battle_interface/exp_bar.png delete mode 100644 graphics/battle_interface/expbar.png create mode 100644 graphics/battle_interface/hp_bar.png create mode 100644 graphics/battle_interface/hp_bar_anim.png delete mode 100644 graphics/battle_interface/hpbar.png delete mode 100644 graphics/battle_interface/hpbar_anim.png create mode 100644 graphics/battle_interface/misc_frame_end.png delete mode 100644 graphics/battle_interface/misc_frameend.png create mode 100644 graphics/contest/next_turn.png create mode 100644 graphics/contest/next_turn_numbers.png create mode 100644 graphics/contest/next_turn_random.png delete mode 100644 graphics/contest/nextturn.png delete mode 100644 graphics/contest/nextturn_numbers.png delete mode 100644 graphics/contest/nextturn_random.png create mode 100644 graphics/interface/summary_exp_bar.png delete mode 100644 graphics/interface/summary_expbar.png create mode 100644 graphics/interface/summary_hp_bar.png delete mode 100644 graphics/interface/summary_hpbar.png diff --git a/data/graphics.s b/data/graphics.s index 11fcaf37a..fd0c35c7a 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -1073,10 +1073,10 @@ gBattleInterface_BallDisplayPal:: @ 8D11BA4 @ Originally an array? gHealthboxElementsGfxTable:: @ 8D11BC4 - .incbin "graphics/battle_interface/hpbar.4bpp" + .incbin "graphics/battle_interface/hp_bar.4bpp" gHealthboxElementsGfxTable_ExpBar:: - .incbin "graphics/battle_interface/expbar.4bpp" + .incbin "graphics/battle_interface/exp_bar.4bpp" gHealthboxElementsGfxTable_StatusPsn:: .incbin "graphics/battle_interface/status_psn.4bpp" @@ -1097,10 +1097,10 @@ gHealthboxElementsGfxTable_Misc:: .incbin "graphics/battle_interface/misc.4bpp" gHealthboxElementsGfxTable_HpBarAnim:: - .incbin "graphics/battle_interface/hpbar_anim.4bpp" + .incbin "graphics/battle_interface/hp_bar_anim.4bpp" gHealthboxElementsGfxTable_MiscFrameEnd:: - .incbin "graphics/battle_interface/misc_frameend.4bpp" + .incbin "graphics/battle_interface/misc_frame_end.4bpp" gUnknown_8D12404:: .incbin "graphics/battle_interface/ball_display.4bpp" @@ -13639,15 +13639,15 @@ gFile_graphics_battle_anims_sprites_262_palette:: @ 8E7A858 .align 2 gContestNextTurnGfx:: @ 8E7A880 - .incbin "graphics/contest/nextturn.4bpp.lz" + .incbin "graphics/contest/next_turn.4bpp.lz" .align 2 gFile_graphics_contest_nextturn_numbers:: @ 8E7A8DC - .incbin "graphics/contest/nextturn_numbers.4bpp" + .incbin "graphics/contest/next_turn_numbers.4bpp" .align 2 gFile_graphics_contest_nextturn_random:: @ 8E7A95C - .incbin "graphics/contest/nextturn_random.4bpp" + .incbin "graphics/contest/next_turn_random.4bpp" .align 2 gFile_graphics_battle_anims_sprites_264_sheet:: @ 8E7A97C @@ -13679,7 +13679,7 @@ gFile_graphics_contest_applause_meter:: @ 8E7AB38 .align 2 gFile_graphics_contest_nextturn:: @ 8E7ABB8 - .incbin "graphics/contest/nextturn.gbapal" + .incbin "graphics/contest/next_turn.gbapal" .align 2 gFile_graphics_battle_anims_sprites_272_sheet:: @ 8E7ABD8 @@ -16261,13 +16261,13 @@ gUnknown_8E9B3D0:: @ 8E9B3D0 .incbin "graphics/interface/trainer_memo_pal3.gbapal" gUnknown_8E9B3F0:: @ 8E9B3F0 - .incbin "graphics/interface/summary_expbar.4bpp.lz" + .incbin "graphics/interface/summary_exp_bar.4bpp.lz" gUnknown_8E9B4B8:: @ 8E9B4B8 - .incbin "graphics/interface/summary_hpbar.4bpp.lz" + .incbin "graphics/interface/summary_hp_bar.4bpp.lz" gUnknown_8E9B578:: @ 8E9B578 - .incbin "graphics/interface/summary_expbar.gbapal" @ hp bar uses this too + .incbin "graphics/interface/summary_exp_bar.gbapal" @ hp bar uses this too gUnknown_8E9B598:: @ 8E9B598 .incbin "graphics/interface/trainer_memo.bin.lz" diff --git a/graphics/battle_interface/exp_bar.png b/graphics/battle_interface/exp_bar.png new file mode 100644 index 000000000..b1a0c440e Binary files /dev/null and b/graphics/battle_interface/exp_bar.png differ diff --git a/graphics/battle_interface/expbar.png b/graphics/battle_interface/expbar.png deleted file mode 100644 index b1a0c440e..000000000 Binary files a/graphics/battle_interface/expbar.png and /dev/null differ diff --git a/graphics/battle_interface/hp_bar.png b/graphics/battle_interface/hp_bar.png new file mode 100644 index 000000000..9991efe14 Binary files /dev/null and b/graphics/battle_interface/hp_bar.png differ diff --git a/graphics/battle_interface/hp_bar_anim.png b/graphics/battle_interface/hp_bar_anim.png new file mode 100644 index 000000000..5d1fc5f52 Binary files /dev/null and b/graphics/battle_interface/hp_bar_anim.png differ diff --git a/graphics/battle_interface/hpbar.png b/graphics/battle_interface/hpbar.png deleted file mode 100644 index 9991efe14..000000000 Binary files a/graphics/battle_interface/hpbar.png and /dev/null differ diff --git a/graphics/battle_interface/hpbar_anim.png b/graphics/battle_interface/hpbar_anim.png deleted file mode 100644 index 5d1fc5f52..000000000 Binary files a/graphics/battle_interface/hpbar_anim.png and /dev/null differ diff --git a/graphics/battle_interface/misc_frame_end.png b/graphics/battle_interface/misc_frame_end.png new file mode 100644 index 000000000..978236138 Binary files /dev/null and b/graphics/battle_interface/misc_frame_end.png differ diff --git a/graphics/battle_interface/misc_frameend.png b/graphics/battle_interface/misc_frameend.png deleted file mode 100644 index 978236138..000000000 Binary files a/graphics/battle_interface/misc_frameend.png and /dev/null differ diff --git a/graphics/contest/next_turn.png b/graphics/contest/next_turn.png new file mode 100644 index 000000000..36b503d54 Binary files /dev/null and b/graphics/contest/next_turn.png differ diff --git a/graphics/contest/next_turn_numbers.png b/graphics/contest/next_turn_numbers.png new file mode 100644 index 000000000..cd0305b16 Binary files /dev/null and b/graphics/contest/next_turn_numbers.png differ diff --git a/graphics/contest/next_turn_random.png b/graphics/contest/next_turn_random.png new file mode 100644 index 000000000..7205bad8c Binary files /dev/null and b/graphics/contest/next_turn_random.png differ diff --git a/graphics/contest/nextturn.png b/graphics/contest/nextturn.png deleted file mode 100644 index 36b503d54..000000000 Binary files a/graphics/contest/nextturn.png and /dev/null differ diff --git a/graphics/contest/nextturn_numbers.png b/graphics/contest/nextturn_numbers.png deleted file mode 100644 index cd0305b16..000000000 Binary files a/graphics/contest/nextturn_numbers.png and /dev/null differ diff --git a/graphics/contest/nextturn_random.png b/graphics/contest/nextturn_random.png deleted file mode 100644 index 7205bad8c..000000000 Binary files a/graphics/contest/nextturn_random.png and /dev/null differ diff --git a/graphics/interface/summary_exp_bar.png b/graphics/interface/summary_exp_bar.png new file mode 100644 index 000000000..cf5b334d9 Binary files /dev/null and b/graphics/interface/summary_exp_bar.png differ diff --git a/graphics/interface/summary_expbar.png b/graphics/interface/summary_expbar.png deleted file mode 100644 index cf5b334d9..000000000 Binary files a/graphics/interface/summary_expbar.png and /dev/null differ diff --git a/graphics/interface/summary_hp_bar.png b/graphics/interface/summary_hp_bar.png new file mode 100644 index 000000000..ed1eb6467 Binary files /dev/null and b/graphics/interface/summary_hp_bar.png differ diff --git a/graphics/interface/summary_hpbar.png b/graphics/interface/summary_hpbar.png deleted file mode 100644 index ed1eb6467..000000000 Binary files a/graphics/interface/summary_hpbar.png and /dev/null differ diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index c3ff7caa2..81f8d8d42 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -136,7 +136,7 @@ $(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp \ $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp @cat $^ >$@ -$(INTERFACEGFXDIR)/hp_numbers.4bpp: $(INTERFACEGFXDIR)/hpbar_anim.4bpp \ +$(INTERFACEGFXDIR)/hp_numbers.4bpp: $(INTERFACEGFXDIR)/hp_bar_anim.4bpp \ $(INTERFACEGFXDIR)/numbers1.4bpp \ $(INTERFACEGFXDIR)/numbers2.4bpp @cat $^ >$@ -- cgit v1.2.3 From 3bc31cc3e89d82db499802f4a997ec1e13ea679f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 4 Dec 2019 13:49:31 -0500 Subject: fix dumb bug --- graphics/interface/hp_bar_anim.png | Bin 0 -> 192 bytes graphics/interface/hpbar_anim.png | Bin 192 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 graphics/interface/hp_bar_anim.png delete mode 100644 graphics/interface/hpbar_anim.png diff --git a/graphics/interface/hp_bar_anim.png b/graphics/interface/hp_bar_anim.png new file mode 100644 index 000000000..d4e79fdae Binary files /dev/null and b/graphics/interface/hp_bar_anim.png differ diff --git a/graphics/interface/hpbar_anim.png b/graphics/interface/hpbar_anim.png deleted file mode 100644 index d4e79fdae..000000000 Binary files a/graphics/interface/hpbar_anim.png and /dev/null differ -- cgit v1.2.3 From 67f48e5f28b1773d3570630540a082e99f7cab4e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 4 Dec 2019 14:10:29 -0500 Subject: Bump baserom.ips --- baserom.ips | Bin 151672 -> 107345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/baserom.ips b/baserom.ips index a72abbfcb..6f493753a 100644 Binary files a/baserom.ips and b/baserom.ips differ -- cgit v1.2.3