diff options
author | Evan <eroelke@gmail.com> | 2019-12-04 21:35:31 -0700 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-12-04 21:35:31 -0700 |
commit | 9f2a53eec3a34f6f675ac41e4b17bb8011025f4f (patch) | |
tree | 08d7f406ee1add06123f3ea846416aebbc6b9b99 | |
parent | c8b22e2680d64f3a52e8f9ba8ccc81de9480ad5f (diff) | |
parent | 67f48e5f28b1773d3570630540a082e99f7cab4e (diff) |
fix merge conflicts
156 files changed, 4490 insertions, 6970 deletions
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/asm/item_menu.s b/asm/item_menu.s index 3f662656e..06ac697bc 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/asm/pokeball.s b/asm/pokeball.s deleted file mode 100644 index 1b8196529..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 @ =gBallSpriteTemplates - 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 gBallSpriteTemplates -_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 @ =gBallSpriteTemplates - 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 gBallSpriteTemplates -_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 @ =gBallSpriteTemplates - 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 gBallSpriteTemplates -_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/asm/shop.s b/asm/shop.s deleted file mode 100644 index ca92ff4b7..000000000 --- a/asm/shop.s +++ /dev/null @@ -1,3563 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .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} - 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 @ =gUnknown_2039934 - 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 gUnknown_2039934 - thumb_func_end sub_809AB7C - - thumb_func_start sub_809ABD8 -sub_809ABD8: @ 809ABD8 - push {lr} - adds r1, r0, 0 - ldr r2, _0809AC00 @ =gUnknown_2039934 - 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 gUnknown_2039934 - thumb_func_end sub_809ABD8 - - thumb_func_start sub_809AC04 -sub_809AC04: @ 809AC04 - ldr r1, _0809AC0C @ =gUnknown_2039934 - str r0, [r1] - bx lr - .align 2, 0 -_0809AC0C: .4byte gUnknown_2039934 - 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} - 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 GoToBagMenu - 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 @ =gUnknown_2039934 - ldr r0, [r0] - cmp r0, 0 - beq _0809AD1A - bl _call_via_r0 -_0809AD1A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809AD20: .4byte gUnknown_2039934 - 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 IsWeatherNotFadingIn - 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 @ =gUnknown_2039934 - 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 gUnknown_2039934 - 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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 SetBgTilemapPalette - b _0809B14E - .align 2, 0 -_0809B138: .4byte gUnknown_2039934 -_0809B13C: - movs r0, 0x8 - str r0, [sp] - str r2, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0xC - movs r3, 0x1E - bl SetBgTilemapPalette -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_0809B2DC: .4byte sub_809B320 -_0809B2E0: .4byte sub_809B408 -_0809B2E4: - strh r0, [r5, 0xE] -_0809B2E6: - ldr r0, _0809B2F8 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_0809B38C: - ldr r0, _0809B3D0 @ =0x00000177 - ldrb r1, [r6, 0x17] - lsls r1, 29 - lsrs r1, 30 - bl CreateItemMenuIcon -_0809B398: - ldr r3, _0809B3D4 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - ldrh r0, [r0, 0x16] - lsls r0, 23 - lsrs r0, 27 - bx lr - .align 2, 0 -_0809B578: .4byte gUnknown_2039934 - 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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 - thumb_func_end sub_809B6FC - - thumb_func_start sub_809B73C -sub_809B73C: @ 809B73C - push {r4,lr} - ldr r4, _0809B760 @ =gUnknown_2039934 - 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 gUnknown_2039934 - 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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_0809BD58: - ldr r1, _0809BD80 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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 @ =gUnknown_2039934 - 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 gUnknown_2039934 -_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/baserom.ips b/baserom.ips Binary files differindex c9e739d73..6f493753a 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/garbage_8DD2290.bin b/data/garbage_8DD2290.bin Binary files differnew file mode 100644 index 000000000..337603c68 --- /dev/null +++ b/data/garbage_8DD2290.bin diff --git a/data/graphics.s b/data/graphics.s index b47938c49..c5eae9753 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 @@ -46,103 +49,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 @@ -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/hp_bar.4bpp" + +gHealthboxElementsGfxTable_ExpBar:: + .incbin "graphics/battle_interface/exp_bar.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/hp_bar_anim.4bpp" + +gHealthboxElementsGfxTable_MiscFrameEnd:: + .incbin "graphics/battle_interface/misc_frame_end.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 @@ gBattleAnimSpritePal_Tendrils:: @ 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,16 +13638,16 @@ gBattleAnimSpritePal_IcicleSpear:: @ 8E7A858 .incbin "graphics/battle_anims/sprites/262.gbapal.lz" .align 2 -gUnknown_8E7A880:: @ 8E7A880 - .incbin "baserom.gba", 0xE7A880, 0x5C +gContestNextTurnGfx:: @ 8E7A880 + .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 gBattleAnimSpriteGfx_GlowyRedOrb:: @ 8E7A97C @@ -13620,8 +13670,8 @@ gBattleAnimSpritePal_StunSpore:: @ 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 @@ -13629,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 gBattleAnimSpriteGfx_Splash:: @ 8E7ABD8 @@ -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 gBattleAnimBgImage_Ghost:: @ 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" @@ -14008,20 +14062,20 @@ 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_tm_hm_tilemap.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 + .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 @@ gBattleAnimSpriteGfx_Sparkle6:: @ 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,52 +16132,103 @@ 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, 0x40 @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" 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 + .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 "baserom.gba", 0xE985D8, 0xB40 @UNKNOWN, FALSEPOSITIVE? + .incbin "graphics/interface/naming_screen_8E985D8.4bpp" + +gUnknown_8E98858:: @ 8E98858 + .incbin "graphics/interface/naming_screen_8E98858.4bpp" + +gUnknown_8E98A38:: @ 8E98A38 + .incbin "graphics/interface/naming_screen_8E98A38.4bpp" + +gUnknown_8E98C18:: @ 8E98C18 + .incbin "graphics/interface/naming_screen_8E98C18.4bpp" + +gUnknown_8E98CB8:: @ 8E98CB8 + .incbin "graphics/interface/naming_screen_8E98CB8.4bpp" + +gUnknown_8E98D58:: @ 8E98D58 + .incbin "graphics/interface/naming_screen_8E98D58.4bpp" + +gUnknown_8E98DF8:: @ 8E98DF8 + .incbin "graphics/interface/naming_screen_8E98DF8.4bpp" + +gUnknown_8E98E98:: @ 8E98E98 + .incbin "graphics/interface/naming_screen_8E98E98.4bpp" + +gUnknown_8E98F38:: @ 8E98F38 + .incbin "graphics/interface/naming_screen_8E98F38.4bpp" + +gUnknown_8E98FD8:: @ 8E98FD8 + .incbin "graphics/interface/naming_screen_8E98FD8.4bpp" + +gUnknown_8E990D8:: @ 8E990D8 + .incbin "graphics/interface/naming_screen_8E990D8.4bpp" + +gUnknown_8E990F8:: @ 8E990F8 + .incbin "graphics/interface/naming_screen_8E990F8.4bpp" 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" @@ -16143,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_exp_bar.4bpp.lz" gUnknown_8E9B4B8:: @ 8E9B4B8 - .incbin "baserom.gba", 0xE9B4B8, 0xC0 + .incbin "graphics/interface/summary_hp_bar.4bpp.lz" gUnknown_8E9B578:: @ 8E9B578 - .incbin "baserom.gba", 0xE9B578, 0x20 @UNKNOWN + .incbin "graphics/interface/summary_exp_bar.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" @@ -16248,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 @@ -16382,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" @@ -16446,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/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/data/pokeball.s b/data/pokeball.s deleted file mode 100644 index e1351d463..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 - -gBallSpriteTemplates:: @ 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/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 ac7241354..2cbcf5503 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 "-------$" gText_MaleSymbol:: @ 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/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 Binary files differnew file mode 100644 index 000000000..d75b86b54 --- /dev/null +++ b/graphics/battle_interface/ball_display_unused_extra.png diff --git a/graphics/battle_interface/exp_bar.png b/graphics/battle_interface/exp_bar.png Binary files differnew file mode 100644 index 000000000..b1a0c440e --- /dev/null +++ b/graphics/battle_interface/exp_bar.png diff --git a/graphics/battle_interface/healthbox_doubles_opponent.png b/graphics/battle_interface/healthbox_doubles_opponent.png Binary files differnew file mode 100644 index 000000000..5d38ffbfa --- /dev/null +++ b/graphics/battle_interface/healthbox_doubles_opponent.png diff --git a/graphics/battle_interface/healthbox_doubles_player.png b/graphics/battle_interface/healthbox_doubles_player.png Binary files differnew file mode 100644 index 000000000..7edb66642 --- /dev/null +++ b/graphics/battle_interface/healthbox_doubles_player.png diff --git a/graphics/battle_interface/healthbox_singles_opponent.png b/graphics/battle_interface/healthbox_singles_opponent.png Binary files differnew file mode 100644 index 000000000..5f02199b5 --- /dev/null +++ b/graphics/battle_interface/healthbox_singles_opponent.png diff --git a/graphics/battle_interface/healthbox_singles_player.png b/graphics/battle_interface/healthbox_singles_player.png Binary files differnew file mode 100644 index 000000000..2478cc57d --- /dev/null +++ b/graphics/battle_interface/healthbox_singles_player.png diff --git a/graphics/battle_interface/hp_bar.png b/graphics/battle_interface/hp_bar.png Binary files differnew file mode 100644 index 000000000..9991efe14 --- /dev/null +++ b/graphics/battle_interface/hp_bar.png diff --git a/graphics/battle_interface/hp_bar_anim.png b/graphics/battle_interface/hp_bar_anim.png Binary files differnew file mode 100644 index 000000000..5d1fc5f52 --- /dev/null +++ b/graphics/battle_interface/hp_bar_anim.png diff --git a/graphics/battle_interface/misc.png b/graphics/battle_interface/misc.png Binary files differnew file mode 100644 index 000000000..cf1d76046 --- /dev/null +++ b/graphics/battle_interface/misc.png diff --git a/graphics/battle_interface/misc_frame_end.png b/graphics/battle_interface/misc_frame_end.png Binary files differnew file mode 100644 index 000000000..978236138 --- /dev/null +++ b/graphics/battle_interface/misc_frame_end.png diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png Binary files differnew file mode 100644 index 000000000..128dde0f6 --- /dev/null +++ b/graphics/battle_interface/status2.png diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png Binary files differnew file mode 100644 index 000000000..e8538ec58 --- /dev/null +++ b/graphics/battle_interface/status3.png diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png Binary files differnew file mode 100644 index 000000000..6ef3b07fd --- /dev/null +++ b/graphics/battle_interface/status4.png diff --git a/graphics/battle_interface/status_brn.png b/graphics/battle_interface/status_brn.png Binary files differnew file mode 100644 index 000000000..16b441367 --- /dev/null +++ b/graphics/battle_interface/status_brn.png diff --git a/graphics/battle_interface/status_frz.png b/graphics/battle_interface/status_frz.png Binary files differnew file mode 100644 index 000000000..fe28208b1 --- /dev/null +++ b/graphics/battle_interface/status_frz.png diff --git a/graphics/battle_interface/status_par.png b/graphics/battle_interface/status_par.png Binary files differnew file mode 100644 index 000000000..3df34c5f6 --- /dev/null +++ b/graphics/battle_interface/status_par.png diff --git a/graphics/battle_interface/status_psn.png b/graphics/battle_interface/status_psn.png Binary files differnew file mode 100644 index 000000000..8b79b2464 --- /dev/null +++ b/graphics/battle_interface/status_psn.png diff --git a/graphics/battle_interface/status_slp.png b/graphics/battle_interface/status_slp.png Binary files differnew file mode 100644 index 000000000..e3da5c0f3 --- /dev/null +++ b/graphics/battle_interface/status_slp.png diff --git a/graphics/battle_interface/window.png b/graphics/battle_interface/window.png Binary files differnew file mode 100644 index 000000000..5167ce2c5 --- /dev/null +++ b/graphics/battle_interface/window.png 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 Binary files differnew file mode 100644 index 000000000..6e43adb27 --- /dev/null +++ b/graphics/berry_crush/berry_crush.png 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 Binary files differnew file mode 100644 index 000000000..934381751 --- /dev/null +++ b/graphics/contest/applause.png diff --git a/graphics/contest/misc.png b/graphics/contest/misc.png Binary files differnew file mode 100644 index 000000000..73f8054db --- /dev/null +++ b/graphics/contest/misc.png diff --git a/graphics/contest/misc_2.png b/graphics/contest/misc_2.png Binary files differnew file mode 100644 index 000000000..92dd92bf7 --- /dev/null +++ b/graphics/contest/misc_2.png diff --git a/graphics/contest/next_turn.png b/graphics/contest/next_turn.png Binary files differnew file mode 100644 index 000000000..36b503d54 --- /dev/null +++ b/graphics/contest/next_turn.png diff --git a/graphics/contest/nextturn_numbers.png b/graphics/contest/next_turn_numbers.png Binary files differindex cd0305b16..cd0305b16 100644 --- a/graphics/contest/nextturn_numbers.png +++ b/graphics/contest/next_turn_numbers.png diff --git a/graphics/contest/nextturn_random.png b/graphics/contest/next_turn_random.png Binary files differindex 7205bad8c..7205bad8c 100644 --- a/graphics/contest/nextturn_random.png +++ b/graphics/contest/next_turn_random.png diff --git a/graphics/contest/nextturn.png b/graphics/contest/nextturn.png Binary files differdeleted file mode 100644 index 1d79d0608..000000000 --- a/graphics/contest/nextturn.png +++ /dev/null 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 Binary files differnew file mode 100644 index 000000000..b4f097133 --- /dev/null +++ b/graphics/interface/box_tiles.png 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/hpbar_anim.png b/graphics/interface/hp_bar_anim.png Binary files differindex d4e79fdae..d4e79fdae 100644 --- a/graphics/interface/hpbar_anim.png +++ b/graphics/interface/hp_bar_anim.png diff --git a/graphics/interface/learn_move.bin b/graphics/interface/learn_move.bin Binary files differnew file mode 100644 index 000000000..d7fa0680f --- /dev/null +++ b/graphics/interface/learn_move.bin diff --git a/graphics/interface/learn_move.png b/graphics/interface/learn_move.png Binary files differnew file mode 100644 index 000000000..e19df7731 --- /dev/null +++ b/graphics/interface/learn_move.png diff --git a/graphics/interface/link_rfu_frame.png b/graphics/interface/link_rfu_frame.png Binary files differnew file mode 100644 index 000000000..3065f03f7 --- /dev/null +++ b/graphics/interface/link_rfu_frame.png diff --git a/graphics/interface/link_rfu_status.png b/graphics/interface/link_rfu_status.png Binary files differnew file mode 100644 index 000000000..02d9ab338 --- /dev/null +++ b/graphics/interface/link_rfu_status.png diff --git a/graphics/interface/naming_screen_83E1800.png b/graphics/interface/naming_screen_83E1800.png Binary files differnew file mode 100644 index 000000000..a24d40836 --- /dev/null +++ b/graphics/interface/naming_screen_83E1800.png diff --git a/graphics/interface/naming_screen_83E18C0.png b/graphics/interface/naming_screen_83E18C0.png Binary files differnew file mode 100644 index 000000000..1985816c3 --- /dev/null +++ b/graphics/interface/naming_screen_83E18C0.png diff --git a/graphics/interface/naming_screen_83E1980.png b/graphics/interface/naming_screen_83E1980.png Binary files differnew file mode 100644 index 000000000..b69dadcc4 --- /dev/null +++ b/graphics/interface/naming_screen_83E1980.png 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_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 Binary files differnew file mode 100644 index 000000000..1e8f40983 --- /dev/null +++ b/graphics/interface/naming_screen_8E985D8.png diff --git a/graphics/interface/naming_screen_8E98858.png b/graphics/interface/naming_screen_8E98858.png Binary files differnew file mode 100644 index 000000000..57c434194 --- /dev/null +++ b/graphics/interface/naming_screen_8E98858.png diff --git a/graphics/interface/naming_screen_8E98A38.png b/graphics/interface/naming_screen_8E98A38.png Binary files differnew file mode 100644 index 000000000..51acd15d1 --- /dev/null +++ b/graphics/interface/naming_screen_8E98A38.png diff --git a/graphics/interface/naming_screen_8E98C18.png b/graphics/interface/naming_screen_8E98C18.png Binary files differnew file mode 100644 index 000000000..68f0637b4 --- /dev/null +++ b/graphics/interface/naming_screen_8E98C18.png diff --git a/graphics/interface/naming_screen_8E98CB8.png b/graphics/interface/naming_screen_8E98CB8.png Binary files differnew file mode 100644 index 000000000..741c5e589 --- /dev/null +++ b/graphics/interface/naming_screen_8E98CB8.png diff --git a/graphics/interface/naming_screen_8E98D58.png b/graphics/interface/naming_screen_8E98D58.png Binary files differnew file mode 100644 index 000000000..32afa5282 --- /dev/null +++ b/graphics/interface/naming_screen_8E98D58.png diff --git a/graphics/interface/naming_screen_8E98DF8.png b/graphics/interface/naming_screen_8E98DF8.png Binary files differnew file mode 100644 index 000000000..e34896cb9 --- /dev/null +++ b/graphics/interface/naming_screen_8E98DF8.png diff --git a/graphics/interface/naming_screen_8E98E98.png b/graphics/interface/naming_screen_8E98E98.png Binary files differnew file mode 100644 index 000000000..45197320d --- /dev/null +++ b/graphics/interface/naming_screen_8E98E98.png diff --git a/graphics/interface/naming_screen_8E98F38.png b/graphics/interface/naming_screen_8E98F38.png Binary files differnew file mode 100644 index 000000000..bf1049e89 --- /dev/null +++ b/graphics/interface/naming_screen_8E98F38.png diff --git a/graphics/interface/naming_screen_8E98FD8.png b/graphics/interface/naming_screen_8E98FD8.png Binary files differnew file mode 100644 index 000000000..6c8fa888d --- /dev/null +++ b/graphics/interface/naming_screen_8E98FD8.png diff --git a/graphics/interface/naming_screen_8E990D8.png b/graphics/interface/naming_screen_8E990D8.png Binary files differnew file mode 100644 index 000000000..dd3f2a671 --- /dev/null +++ b/graphics/interface/naming_screen_8E990D8.png diff --git a/graphics/interface/naming_screen_8E990F8.png b/graphics/interface/naming_screen_8E990F8.png Binary files differnew file mode 100644 index 000000000..5d631ce99 --- /dev/null +++ b/graphics/interface/naming_screen_8E990F8.png diff --git a/graphics/interface/naming_screen_E98398.bin b/graphics/interface/naming_screen_E98398.bin Binary files differnew file mode 100644 index 000000000..bc4260b1f --- /dev/null +++ b/graphics/interface/naming_screen_E98398.bin diff --git a/graphics/interface/naming_screen_E98458.bin b/graphics/interface/naming_screen_E98458.bin Binary files differnew file mode 100644 index 000000000..64095dce5 --- /dev/null +++ b/graphics/interface/naming_screen_E98458.bin diff --git a/graphics/interface/naming_screen_E98518.bin b/graphics/interface/naming_screen_E98518.bin Binary files differnew file mode 100644 index 000000000..847486432 --- /dev/null +++ b/graphics/interface/naming_screen_E98518.bin diff --git a/graphics/interface/naming_screen_menu.bin b/graphics/interface/naming_screen_menu.bin Binary files differnew file mode 100644 index 000000000..7e3604311 --- /dev/null +++ b/graphics/interface/naming_screen_menu.bin diff --git a/graphics/interface/naming_screen_menu.png b/graphics/interface/naming_screen_menu.png Binary files differnew file mode 100644 index 000000000..e7c4374c7 --- /dev/null +++ b/graphics/interface/naming_screen_menu.png 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 Binary files differnew file mode 100644 index 000000000..0ec33315e --- /dev/null +++ b/graphics/interface/pokedex_abc.png diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png Binary files differindex fe802d7f6..2edfda8f9 100644 --- a/graphics/interface/status_icons.png +++ b/graphics/interface/status_icons.png diff --git a/graphics/interface/summary_exp_bar.png b/graphics/interface/summary_exp_bar.png Binary files differnew file mode 100644 index 000000000..cf5b334d9 --- /dev/null +++ b/graphics/interface/summary_exp_bar.png diff --git a/graphics/interface/summary_hp_bar.png b/graphics/interface/summary_hp_bar.png Binary files differnew file mode 100644 index 000000000..ed1eb6467 --- /dev/null +++ b/graphics/interface/summary_hp_bar.png diff --git a/graphics/interface/trainer_memo.bin b/graphics/interface/trainer_memo.bin Binary files differnew file mode 100644 index 000000000..c900b1595 --- /dev/null +++ b/graphics/interface/trainer_memo.bin diff --git a/graphics/interface/trainer_memo.png b/graphics/interface/trainer_memo.png Binary files differnew file mode 100644 index 000000000..df2f6c98f --- /dev/null +++ b/graphics/interface/trainer_memo.png diff --git a/graphics/interface/trainer_memo_2.bin b/graphics/interface/trainer_memo_2.bin Binary files differnew file mode 100644 index 000000000..cbcd7bdba --- /dev/null +++ b/graphics/interface/trainer_memo_2.bin diff --git a/graphics/interface/trainer_memo_3.bin b/graphics/interface/trainer_memo_3.bin Binary files differnew file mode 100644 index 000000000..6d56577a6 --- /dev/null +++ b/graphics/interface/trainer_memo_3.bin diff --git a/graphics/interface/trainer_memo_4.bin b/graphics/interface/trainer_memo_4.bin Binary files differnew file mode 100644 index 000000000..21033931f --- /dev/null +++ b/graphics/interface/trainer_memo_4.bin diff --git a/graphics/interface/trainer_memo_5.bin b/graphics/interface/trainer_memo_5.bin Binary files differnew file mode 100644 index 000000000..ea7e701fd --- /dev/null +++ b/graphics/interface/trainer_memo_5.bin 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 Binary files differnew file mode 100644 index 000000000..e91b50c8d --- /dev/null +++ b/graphics/interface/union_room_chat.bin diff --git a/graphics/interface/union_room_chat.png b/graphics/interface/union_room_chat.png Binary files differnew file mode 100644 index 000000000..ae6ba4d02 --- /dev/null +++ b/graphics/interface/union_room_chat.png diff --git a/graphics/interface/union_room_chat_icons.png b/graphics/interface/union_room_chat_icons.png Binary files differnew file mode 100644 index 000000000..5ff8ea8cc --- /dev/null +++ b/graphics/interface/union_room_chat_icons.png diff --git a/graphics/interface/union_room_chat_panel.bin b/graphics/interface/union_room_chat_panel.bin Binary files differnew file mode 100644 index 000000000..c87d6268d --- /dev/null +++ b/graphics/interface/union_room_chat_panel.bin diff --git a/graphics/interface/union_room_chat_panel.png b/graphics/interface/union_room_chat_panel.png Binary files differnew file mode 100644 index 000000000..86ddacc03 --- /dev/null +++ b/graphics/interface/union_room_chat_panel.png 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 Binary files differnew file mode 100644 index 000000000..dd444fa08 --- /dev/null +++ b/graphics/item_menu/bag_tilemap1.bin diff --git a/graphics/item_menu/bag_tilemap2.bin b/graphics/item_menu/bag_tilemap2.bin Binary files differnew file mode 100644 index 000000000..5a5a29fad --- /dev/null +++ b/graphics/item_menu/bag_tilemap2.bin diff --git a/graphics/item_menu/bag_tiles.png b/graphics/item_menu/bag_tiles.png Binary files differnew file mode 100644 index 000000000..a9a96948f --- /dev/null +++ b/graphics/item_menu/bag_tiles.png 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 Binary files differnew file mode 100644 index 000000000..1a0909468 --- /dev/null +++ b/graphics/link/gba.png 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 Binary files differnew file mode 100644 index 000000000..ab694ff88 --- /dev/null +++ b/graphics/pokemon/circled_question_mark/circled/back.png diff --git a/graphics/pokemon/circled_question_mark/circled/front.png b/graphics/pokemon/circled_question_mark/circled/front.png Binary files differnew file mode 100644 index 000000000..ab694ff88 --- /dev/null +++ b/graphics/pokemon/circled_question_mark/circled/front.png diff --git a/graphics/pokemon/question_mark/circled/normal.pal b/graphics/pokemon/circled_question_mark/circled/normal.pal index 681f1cefe..681f1cefe 100644 --- a/graphics/pokemon/question_mark/circled/normal.pal +++ b/graphics/pokemon/circled_question_mark/circled/normal.pal diff --git a/graphics/pokemon/question_mark/circled/shiny.pal b/graphics/pokemon/circled_question_mark/circled/shiny.pal index aa8d08dc3..aa8d08dc3 100644 --- a/graphics/pokemon/question_mark/circled/shiny.pal +++ b/graphics/pokemon/circled_question_mark/circled/shiny.pal diff --git a/graphics/pokemon/question_mark/double/back.png b/graphics/pokemon/circled_question_mark/double/back.png Binary files differindex 881ff0519..881ff0519 100644 --- a/graphics/pokemon/question_mark/double/back.png +++ b/graphics/pokemon/circled_question_mark/double/back.png diff --git a/graphics/pokemon/question_mark/double/front.png b/graphics/pokemon/circled_question_mark/double/front.png Binary files differindex 14eb6e139..14eb6e139 100644 --- a/graphics/pokemon/question_mark/double/front.png +++ b/graphics/pokemon/circled_question_mark/double/front.png diff --git a/graphics/pokemon/question_mark/double/normal.pal b/graphics/pokemon/circled_question_mark/double/normal.pal index 67be6bbf4..67be6bbf4 100644 --- a/graphics/pokemon/question_mark/double/normal.pal +++ b/graphics/pokemon/circled_question_mark/double/normal.pal diff --git a/graphics/pokemon/question_mark/double/shiny.pal b/graphics/pokemon/circled_question_mark/double/shiny.pal index 67be6bbf4..67be6bbf4 100644 --- a/graphics/pokemon/question_mark/double/shiny.pal +++ b/graphics/pokemon/circled_question_mark/double/shiny.pal diff --git a/graphics/pokemon/question_mark/footprint.png b/graphics/pokemon/circled_question_mark/footprint.png Binary files differindex 7c4f45eaa..7c4f45eaa 100644 --- a/graphics/pokemon/question_mark/footprint.png +++ b/graphics/pokemon/circled_question_mark/footprint.png diff --git a/graphics/pokemon/question_mark/icon.png b/graphics/pokemon/circled_question_mark/icon.png Binary files differindex b31ebacf7..b31ebacf7 100644 --- a/graphics/pokemon/question_mark/icon.png +++ b/graphics/pokemon/circled_question_mark/icon.png diff --git a/graphics/pokemon/egg/icon.png b/graphics/pokemon/egg/icon.png Binary files differindex 8f6ca5dde..e0c87cd2b 100644 --- a/graphics/pokemon/egg/icon.png +++ b/graphics/pokemon/egg/icon.png diff --git a/graphics/pokemon/ghost/front.png b/graphics/pokemon/ghost/front.png Binary files differnew file mode 100644 index 000000000..55a0e3608 --- /dev/null +++ b/graphics/pokemon/ghost/front.png diff --git a/graphics/pokemon/question_mark/circled/back.png b/graphics/pokemon/question_mark/circled/back.png Binary files differdeleted file mode 100644 index 3056402db..000000000 --- a/graphics/pokemon/question_mark/circled/back.png +++ /dev/null diff --git a/graphics/pokemon/question_mark/circled/front.png b/graphics/pokemon/question_mark/circled/front.png Binary files differdeleted file mode 100644 index 3056402db..000000000 --- a/graphics/pokemon/question_mark/circled/front.png +++ /dev/null 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 Binary files differnew file mode 100644 index 000000000..23af464a2 --- /dev/null +++ b/graphics/shop_menu/shop_menu.png diff --git a/graphics/shop_menu/shop_tilemap.bin b/graphics/shop_menu/shop_tilemap.bin Binary files differnew file mode 100644 index 000000000..8d5ab35b7 --- /dev/null +++ b/graphics/shop_menu/shop_tilemap.bin diff --git a/graphics/shop_menu/shop_tm_hm_tilemap.bin b/graphics/shop_menu/shop_tm_hm_tilemap.bin Binary files differnew file mode 100644 index 000000000..92fbb7dad --- /dev/null +++ b/graphics/shop_menu/shop_tm_hm_tilemap.bin 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 Binary files differnew file mode 100644 index 000000000..2fea60d09 --- /dev/null +++ b/graphics/trainer_card/card.png diff --git a/graphics/trainer_card/card_em.png b/graphics/trainer_card/card_em.png Binary files differnew file mode 100644 index 000000000..bd8be5162 --- /dev/null +++ b/graphics/trainer_card/card_em.png diff --git a/graphics/unknown/unknown_D12A44.png b/graphics/unknown/unknown_D12A44.png Binary files differnew file mode 100644 index 000000000..96c49a992 --- /dev/null +++ b/graphics/unknown/unknown_D12A44.png diff --git a/graphics/unknown/unknown_D12A64.png b/graphics/unknown/unknown_D12A64.png Binary files differnew file mode 100644 index 000000000..1a82e117e --- /dev/null +++ b/graphics/unknown/unknown_D12A64.png diff --git a/graphics/unknown/unknown_E861A8.bin b/graphics/unknown/unknown_E861A8.bin Binary files differnew file mode 100644 index 000000000..deae79449 --- /dev/null +++ b/graphics/unknown/unknown_E861A8.bin 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 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 Binary files differnew file mode 100644 index 000000000..973ef9e15 --- /dev/null +++ b/graphics/unknown/unknown_E9CAEC.bin 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..81f8d8d42 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 @@ -135,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 $^ >$@ @@ -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 diff --git a/include/fieldmap.h b/include/fieldmap.h index 4af4342f7..f1107100f 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -16,6 +16,7 @@ extern const struct MapData Route1_Layout; u32 MapGridGetMetatileIdAt(int, int); u32 MapGridGetMetatileBehaviorAt(int, int); +u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y); void MapGridSetMetatileIdAt(int, int, u16); void MapGridSetMetatileEntryAt(int, int, u16); void GetCameraCoords(u16*, u16*); diff --git a/include/graphics.h b/include/graphics.h index 30b1011f3..bb501ffb0 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[]; @@ -4839,6 +4839,12 @@ 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[]; + // battle_message extern const u16 gUnknown_8D2FBB4[]; diff --git a/include/item.h b/include/item.h index 01d2a55e5..7a4279976 100644 --- a/include/item.h +++ b/include/item.h @@ -68,6 +68,7 @@ bool8 AddBagItem(u16 itemId, u16 amount); void SortPocketAndPlaceHMsFirst(struct BagPocket * pocket); u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 itemId); u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId); +u16 BagGetQuantityByItemId(u16 item); bool8 itemid_is_unique(u16 itemId); void BagPocketCompaction(struct ItemSlot * slots, u8 capacity); u16 GetPcItemQuantity(u16 *); diff --git a/include/list_menu.h b/include/list_menu.h index e688c474f..94a49d2c2 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/pokeball.h b/include/pokeball.h index 9e135db99..1c2241246 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -34,5 +34,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/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/include/shop.h b/include/shop.h index 481fd6c76..482c3ddaa 100644 --- a/include/shop.h +++ b/include/shop.h @@ -4,18 +4,20 @@ #include "global.h" #include "menu_helpers.h" +#define INDEX_CANCEL -2 + 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); +u8 GetMartUnk16_4(void); +void RecordItemPurchase(u16 a0, u16 a1, u8 a2); // 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 e55cb02f5..d71d94d48 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[]; @@ -928,4 +929,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/include/task.h b/include/task.h index 834bb5655..7a7a2ff22 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]; +}; /*size = 0x28*/ extern struct Task gTasks[]; diff --git a/ld_script.txt b/ld_script.txt index 80b129a01..f289b8547 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); @@ -140,7 +140,8 @@ SECTIONS { src/item_menu_icons.o(.text); src/battle_anim_mon_movement.o(.text); src/item.o(.text); - asm/shop.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); @@ -400,7 +401,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); @@ -441,7 +442,8 @@ SECTIONS { src/item_menu_icons.o(.rodata); src/battle_anim_mon_movement.o(.rodata); src/item.o(.rodata); - data/shop.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/berry_pouch.c b/src/berry_pouch.c index bb1b106af..711a17768 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 cf8072977..1fd160576 100644 --- a/src/buy_menu_helpers.c +++ b/src/buy_menu_helpers.c @@ -177,14 +177,14 @@ 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); } 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/fieldmap.c b/src/fieldmap.c index 4244762c0..e5901c149 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -463,7 +463,7 @@ u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y) return sub_8058F48(x, y, 0); } -u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y) +u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y) { return sub_8058F48(x, y, 6); } diff --git a/src/pokeball.c b/src/pokeball.c new file mode 100644 index 000000000..aeaba08ab --- /dev/null +++ b/src/pokeball.c @@ -0,0 +1,1275 @@ +#include "global.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] + +#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); +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 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 +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 = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .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, +}; + +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 = TRUE; + taskId = CreateTask(Task_DoPokeballSendOutAnim, 5); + gTasks[taskId].tPan = pan; + gTasks[taskId].tThrowId = kindOfThrow; + gTasks[taskId].tBattler = gActiveBattler; + return 0; +} + +static void Task_DoPokeballSendOutAnim(u8 taskId) +{ + u16 throwCaseId; + u8 battlerId; + u16 itemId, ballId; + u8 ballSpriteId; + bool8 notSendOut = FALSE; + s16 x, y; + u32 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(&gBallSpriteTemplates[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) + { + x = 32; + y = 64; + } + else + { + 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: + 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; + } + + // this will perform an unused ball throw animation + 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; + InitAnimArcTranslation(&gSprites[ballSpriteId]); + gSprites[ballSpriteId].oam.affineParam = taskId; + gTasks[taskId].tOpponentBattler = gBattlerTarget; + gTasks[taskId].func = TaskDummy; + PlaySE(SE_NAGERU); +} + +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 = TRUE; + 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 tCryTaskMonPtr1 data[3] +#define tCryTaskMonPtr2 data[4] +#define tCryTaskFrames data[10] +#define tCryTaskState data[15] + +static void Task_PlayCryWhenReleasedFromBall(u8 taskId) +{ + u8 state2 = gTasks[taskId].data[2]; + s8 pan = gTasks[taskId].tCryTaskPan; + u16 species = gTasks[taskId].tCryTaskSpecies; + struct Pokemon *mon = (void*)(u32)((u32)(gTasks[taskId].tCryTaskMonPtr1 << 0x10) | ((u16)gTasks[taskId].tCryTaskMonPtr2)); + + switch (gTasks[taskId].tCryTaskState) + { + case 0: + default: + 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); + + 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); + + 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++; + 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); + + 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) + { + 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; + + taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3); + gTasks[taskId].tCryTaskSpecies = species; + gTasks[taskId].tCryTaskPan = pan; + gTasks[taskId].tCryTaskWantedCry = wantedCryCase; + gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10; + gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon); + gTasks[taskId].tCryTaskState = 0; + } + + StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 1); + AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); + gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; +} + +#undef tCryTaskSpecies +#undef tCryTaskPan +#undef tCryTaskWantedCry +#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 = FALSE; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + + for (doneBattlers = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (!gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive) + 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_FAN6); + } + 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 = FALSE; + } +} + +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.x = sprite->pos2.y = 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[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) + 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; +} + +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) == SPRITE_INVALID_TAG) + { + 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); +} + diff --git a/src/sea_cottage_special_anim.c b/src/sea_cottage_special_anim.c new file mode 100644 index 000000000..18a8da234 --- /dev/null +++ b/src/sea_cottage_special_anim.c @@ -0,0 +1,264 @@ +#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" + +static EWRAM_DATA u8 gUnknown_2039984 = 0; + +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); + +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 +static void sub_809C1D8(u8 taskId, const s16 *a1, u16 a2) +{ + s16 r5, r3, r4; + s16 i, j; + + r5 = gTasks[taskId].data[4] - 1; + r3 = gTasks[taskId].data[5] - 1; + r4 = gTasks[taskId].data[1]; + + if (gTasks[taskId].data[2] == 0) + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + s32 id = MapGridGetMetatileIdAt(r5 + j, r3 + i); + + if (a1[r4] == (s16)id) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[0]); + } + } + } + } + else + { + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + s32 id = MapGridGetMetatileIdAt(r5 + j, r3 + i); + + if (a1[2 - r4] == (s16)id) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + j, r3 + i, a2 | a1[2]); + } + } + } + } +} + +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; + 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(&data[4], &data[5]); + data[0] = 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[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 new file mode 100644 index 000000000..12f3f3263 --- /dev/null +++ b/src/shop.c @@ -0,0 +1,1161 @@ +#include "global.h" +#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" +#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 "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 "constants/songs.h" +#include "constants/items.h" +#include "constants/game_stat.h" + +#define tItemCount data[1] +#define tItemId data[5] +#define tListTaskId data[7] + +// mart types +enum +{ + MART_TYPE_REGULAR = 0, + MART_TYPE_TMHM, + MART_TYPE_DECOR, + MART_TYPE_DECOR2, +}; + +// shop view window NPC info enum +enum +{ + EVENT_OBJ_ID, + X_COORD, + Y_COORD, + ANIM_NUM +}; + +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 + u16 unk16_4:5; + u16 itemSlot:2; + u16 unk16_11:5; + /*0x18*/ u16 unk18; +}; + +struct MartHistory +{ + /*0x00*/ u32 unk0; + /*0x04*/ u16 unk4; + /*0x06*/ u16 unk6; + /*0x08*/ u8 unk8; + /*0x09*/ u8 unk9; + /*0x0A*/ u8 unkA; + /*0x0B*/ u8 unkB; +}; /* size = 12 */ + +static EWRAM_DATA s16 sViewportMapObjects[MAP_OBJECTS_COUNT][4] = {0}; +EWRAM_DATA struct ShopData gShopData = {0}; +static 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}; +static EWRAM_DATA u8 (*sShopMenuItemStrings)[13] = {0}; +EWRAM_DATA struct MartHistory gShopMenuHistory[2] = {0}; + +//Function Declarations +static u8 CreateShopMenu(u8 a0); +static u8 GetMartTypeFromItemList(u32 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 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 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 RecordQuestLogItemPurchase(void); + +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 sShopMenuActions_BuyQuit[] = +{ + BuyMenuTryMakePurchase, + BuyMenuReturnToItemList +}; + +static const struct WindowTemplate sShopMenuWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 12, + .height = 6, + .paletteNum = 15, + .baseBlock = 8 +}; + +static const struct BgTemplate sShopBuyMenuBgTemplates[4] = +{ + { + .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 + } +}; + +// Functions +static u8 CreateShopMenu(u8 a0) +{ + gShopData.martType = GetMartTypeFromItemList(a0); + gShopData.selectedRow = 0; + if (ContextNpcGetTextColor() == 0) + gShopData.unk16_4 = 4; + else + gShopData.unk16_4 = 5; + + sShopMenuWindowId = AddWindow(&sShopMenuWindowTemplate); + SetStdWindowBorderStyle(sShopMenuWindowId, 0); + 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); + return CreateTask(Task_ShopMenu, 8); +} + +static u8 GetMartTypeFromItemList(u32 a0) +{ + u16 i; + + if (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; +} + +static void SetShopItemsForSale(const u16 *items) +{ + gShopData.itemList = items; + gShopData.itemCount = 0; + if (gShopData.itemList[0] == 0) + return; + + while (gShopData.itemList[gShopData.itemCount]) + { + ++gShopData.itemCount; + } +} + +static void SetShopMenuCallback(void (*callback)(void)) +{ + gShopData.callback = callback; +} + +static void Task_ShopMenu(u8 taskId) +{ + s8 input = Menu_ProcessInputNoWrapAround(); + + switch (input) + { + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + Task_HandleShopMenuQuit(taskId); + break; + default: + sShopMenuActions_BuySellQuit[Menu_GetCursorPos()].func.void_u8(taskId); + break; + } +} + +static void Task_HandleShopMenuBuy(u8 taskId) +{ + SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu); + fade_screen(1, 0); + gTasks[taskId].func = Task_GoToBuyOrSellMenu; +} + +static void Task_HandleShopMenuSell(u8 taskId) +{ + SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu); + fade_screen(1, 0); + gTasks[taskId].func = Task_GoToBuyOrSellMenu; +} + +static void CB2_GoToSellMenu(void) +{ + GoToBagMenu(2, POCKET_POKE_BALLS, CB2_ReturnToField); + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; +} + +static void Task_HandleShopMenuQuit(u8 taskId) +{ + ClearShopMenuWindow(); + RecordQuestLogItemPurchase(); + DestroyTask(taskId); + if (gShopData.callback != NULL) + gShopData.callback(); +} + +static void ClearShopMenuWindow(void) +{ + ClearStdWindowAndFrameToTransparent(sShopMenuWindowId, 2); + RemoveWindow(sShopMenuWindowId); +} + +static void Task_GoToBuyOrSellMenu(u8 taskId) +{ + if (gPaletteFade.active) + return; + + SetMainCallback2((void *)GetWordTaskArg(taskId, 0xE)); + FreeAllWindowBuffers(); + DestroyTask(taskId); +} + +static void MapPostLoadHook_ReturnToShopMenu(void) +{ + sub_807DC00(); + CreateTask(Task_ReturnToShopMenu, 8); +} + +static void Task_ReturnToShopMenu(u8 taskId) +{ + if (IsWeatherNotFadingIn() != TRUE) + return; + + DisplayItemMessageOnField(taskId, GetMartUnk16_4(), gText_CanIHelpWithAnythingElse, ShowShopMenuAfterExitingBuyOrSellMenu); +} + +static void ShowShopMenuAfterExitingBuyOrSellMenu(u8 taskId) +{ + CreateShopMenu(gShopData.martType); + DestroyTask(taskId); +} + +static void CB2_BuyMenu(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + DoScheduledBgTilemapCopiesToVram(); +} + +static void VBlankCB_BuyMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_InitBuyMenu(void) +{ + u8 taskId; + + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + CpuFastFill(0, (void *)OAM, 0x400); + ScanlineEffect_Stop(); + ResetTempTileDataBuffers(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ClearScheduledBgCopiesToVram(); + ResetItemMenuIconState(); + if (!(InitShopData()) || !(BuyMenuBuildListMenuTemplate())) + return; + 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); + BuyMenuDecompressBgGraphics(); + gMain.state++; + break; + case 1: + if (FreeTempTileDataBuffersIfPossible()) + return; + gMain.state++; + break; + default: + gShopData.selectedRow = 0; + gShopData.scrollOffset = 0; + 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(VBlankCB_BuyMenu); + SetMainCallback2(CB2_BuyMenu); + break; + } +} + +static bool8 InitShopData(void) +{ + gShopTilemapBuffer1 = Alloc(sizeof(*gShopTilemapBuffer1)); + if (gShopTilemapBuffer1 == NULL) + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + + gShopTilemapBuffer2 = Alloc(sizeof(*gShopTilemapBuffer2)); + if (gShopTilemapBuffer2 == NULL) + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + + gShopTilemapBuffer3 = Alloc(sizeof(*gShopTilemapBuffer3)); + if (gShopTilemapBuffer3 == NULL) + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + + gShopTilemapBuffer4 = Alloc(sizeof(*gShopTilemapBuffer4)); + if (gShopTilemapBuffer4 == NULL) + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + + return TRUE; +} + +static void BuyMenuInitBgs(void) +{ + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sShopBuyMenuBgTemplates, NELEMS(sShopBuyMenuBgTemplates)); + SetBgTilemapBuffer(1, gShopTilemapBuffer2); + SetBgTilemapBuffer(2, gShopTilemapBuffer4); + SetBgTilemapBuffer(3, gShopTilemapBuffer3); + SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); +} + +static void BuyMenuDecompressBgGraphics(void) +{ + void* pal; + + DecompressAndCopyTileDataToVram(1, gBuyMenuFrame_Gfx, 0x480, 0x3DC, 0); + if ((gShopData.martType) != MART_TYPE_TMHM) + LZDecompressWram(gBuyMenuFrame_Tilemap, gShopTilemapBuffer1); + else + LZDecompressWram(gBuyMenuFrame_TmHmTilemap, gShopTilemapBuffer1); + + pal = Alloc(0x40); + LZDecompressWram(gBuyMenuFrame_Pal, 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) + SetBgTilemapPalette(1, 0, 0xE, 0x1E, 6, v); + else + SetBgTilemapPalette(1, 0, 0xC, 0x1E, 8, v); + + ScheduleBgCopyTilemapToVram(1); +} + +static void BuyMenuDrawGraphics(void) +{ + sub_809B764(); + BuyMenuCopyTilemapData(); + BuyMenuDrawMoneyBox(); + ScheduleBgCopyTilemapToVram(0); + ScheduleBgCopyTilemapToVram(1); + ScheduleBgCopyTilemapToVram(2); + ScheduleBgCopyTilemapToVram(3); +} + +bool8 BuyMenuBuildListMenuTemplate(void) +{ + u16 i, v; + + sShopMenuListMenu = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuListMenu)); + if (sShopMenuListMenu == NULL + || (sShopMenuItemStrings = Alloc((gShopData.itemCount + 1) * sizeof(*sShopMenuItemStrings))) == NULL) + { + BuyMenuFreeMemory(); + SetShopExitCallback(); + return FALSE; + } + + for (i = 0; i < gShopData.itemCount; i++) + { + PokeMartWriteNameAndIdAt(&sShopMenuListMenu[i], gShopData.itemList[i], sShopMenuItemStrings[i]); + } + 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; + 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, FONTATTR_COLOR_FOREGROUND); + gMultiuseListMenuTemplate.cursorShadowPal = GetFontAttribute(2, FONTATTR_COLOR_SHADOW); + gMultiuseListMenuTemplate.moveCursorFunc = BuyMenuPrintItemDescriptionAndShowItemIcon; + gMultiuseListMenuTemplate.itemPrintFunc = BuyMenuPrintPriceInList; + 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; +} + +static void PokeMartWriteNameAndIdAt(struct ListMenuItem *list, u16 index, u8* dst) +{ + CopyItemName(index, dst); + list->label = dst; + list->index = index; +} + +static void BuyMenuPrintItemDescriptionAndShowItemIcon(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)); + LoadTmHmNameInMart(item); + BuyMenuPrint(5, 2, description, 2, 3, 1, 0, 0, 0); + } +} + +static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y) +{ + s32 x; + u8 *loc; + + if (item != INDEX_CANCEL) + { + ConvertIntToDecimalStringN(gStringVar1, itemid_get_market_price(item), 0, 4); + x = 4 - StringLength(gStringVar1); + loc = gStringVar4; + while (x-- != 0) + *loc++ = 0; + StringExpandPlaceholders(loc, gText_PokedollarVar1); + BuyMenuPrint(windowId, 0, gStringVar4, 0x69, y, 0, 0, TEXT_SPEED_FF, 1); + } +} + +static void LoadTmHmNameInMart(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); + } +} + +u8 GetMartUnk16_4(void) +{ + return gShopData.unk16_4; +} + +static void BuyMenuPrintCursor(u8 listTaskId, u8 a1) +{ + BuyMenuPrintCursorAtYPosition(ListMenuGetYCoordForPrintingArrowCursor(listTaskId), a1); +} + +static void BuyMenuPrintCursorAtYPosition(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); + } +} + +static void BuyMenuFreeMemory(void) +{ + if (gShopTilemapBuffer1 != NULL) + Free(gShopTilemapBuffer1); + + if (gShopTilemapBuffer2 != NULL) + Free(gShopTilemapBuffer2); + + if (gShopTilemapBuffer3 != NULL) + Free(gShopTilemapBuffer3); + + if (gShopTilemapBuffer4 != NULL) + Free(gShopTilemapBuffer4); + + if (sShopMenuListMenu != NULL) + Free(sShopMenuListMenu); + + if (sShopMenuItemStrings != NULL) + Free(sShopMenuItemStrings); + + FreeAllWindowBuffers(); +} + +static void SetShopExitCallback(void) +{ + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; + SetMainCallback2(CB2_ReturnToField); +} + + +static void BuyMenuAddScrollIndicatorArrows(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); + } +} + +static void BuyQuantityAddScrollIndicatorArrows(void) +{ + gShopData.unk18 = 1; + gShopData.unk16_11 = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gShopData.unk18); +} + +static void BuyMenuRemoveScrollIndicatorArrows(void) +{ + if ((gShopData.unk16_11) == 0x1F) + return; + + RemoveScrollIndicatorArrowPair(gShopData.unk16_11); + gShopData.unk16_11 = 0x1F; +} + +static void sub_809B764(void) +{ + BuyMenuCollectEventObjectData(); + BuyMenuDrawEventObjects(); + BuyMenuDrawMapBg(); +} + +static void BuyMenuDrawMapBg(void) +{ + s16 i, j, x, 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) + { + BuyMenuDrawMapMetatile(i, j, (u16*)mapData->primaryTileset->metatiles + metatile * 8, metatileLayerType); + } + else + { + BuyMenuDrawMapMetatile(i, j, (u16*)mapData->secondaryTileset->metatiles + ((metatile - NUM_METATILES_IN_PRIMARY) * 8), metatileLayerType); + } + } + } +} + +static void BuyMenuDrawMapMetatile(s16 x, s16 y, const u16 *src, u8 metatileLayerType) +{ + u16 offset1 = x * 2; + u16 offset2 = y * 64 + 64; + + switch (metatileLayerType) + { + case 0: + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4); + break; + case 1: + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer4, offset1, offset2, src + 4); + break; + case 2: + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer3, offset1, offset2, src); + BuyMenuDrawMapMetatileLayer(*gShopTilemapBuffer2, offset1, offset2, src + 4); + break; + } +} + +static void BuyMenuDrawMapMetatileLayer(u16 *dest, s16 offset1, s16 offset2, const u16 *src) +{ + 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 +} + +static void BuyMenuCollectEventObjectData(void) +{ + s16 facingX, facingY; + u8 x, y, z; + u8 num = 0; + + GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); + z = PlayerGetZCoord(); + + for (y = 0; y < MAP_OBJECTS_COUNT; y++) + sViewportMapObjects[y][EVENT_OBJ_ID] = MAP_OBJECTS_COUNT; + + for (y = 0; y < 5; y++) + { + for (x = 0; x < 7; x++) + { + u8 eventObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, z); + if (eventObjId != MAP_OBJECTS_COUNT) + { + sViewportMapObjects[num][EVENT_OBJ_ID] = eventObjId; + sViewportMapObjects[num][X_COORD] = x; + sViewportMapObjects[num][Y_COORD] = y; + + switch (gMapObjects[eventObjId].facingDirection) + { + case DIR_SOUTH: + sViewportMapObjects[num][ANIM_NUM] = 0; + break; + case DIR_NORTH: + sViewportMapObjects[num][ANIM_NUM] = 1; + break; + case DIR_WEST: + sViewportMapObjects[num][ANIM_NUM] = 2; + break; + case DIR_EAST: + default: + sViewportMapObjects[num][ANIM_NUM] = 3; + break; + } + num++; + } + } + } +} + +static void BuyMenuDrawEventObjects(void) +{ + u8 i, spriteId; + const struct MapObjectGraphicsInfo *graphicsInfo; + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + if (sViewportMapObjects[i][EVENT_OBJ_ID] == MAP_OBJECTS_COUNT) + continue; + + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId); + spriteId = AddPseudoEventObject( + gMapObjects[sViewportMapObjects[i][EVENT_OBJ_ID]].graphicsId, + SpriteCallbackDummy, + (u16)sViewportMapObjects[i][X_COORD] * 16 - 8, + (u16)sViewportMapObjects[i][Y_COORD] * 16 + 48 - graphicsInfo->height / 2, + 2); + StartSpriteAnim(&gSprites[spriteId], sViewportMapObjects[i][ANIM_NUM]); + } +} + +static void BuyMenuCopyTilemapData(void) +{ + s16 i; + u16 *dst = *gShopTilemapBuffer2; + u16 *src = *gShopTilemapBuffer1; + + for (i = 0; i < 0x400; i++) + { + if (src[i] == 0) + continue; + dst[i] = src[i] + 0xb3dc; + } +} + +static void BuyMenuPrintItemQuantityAndPrice(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); +} + +static void Task_BuyMenu(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); + ExitBuyMenu(taskId); + break; + default: + PlaySE(SE_SELECT); + tItemId = itemId; + ClearWindowTilemap(5); + BuyMenuRemoveScrollIndicatorArrows(); + BuyMenuPrintCursor(tListTaskId, 2); + sub_809B10C(1); + gShopData.itemPrice = itemid_get_market_price(itemId); + if (!IsEnoughMoney(&gSaveBlock1Ptr->money, gShopData.itemPrice)) + { + BuyMenuDisplayMessage(taskId, gText_YouDontHaveMoney, BuyMenuReturnToItemList); + } + else + { + CopyItemName(itemId, gStringVar1); + BuyMenuDisplayMessage(taskId, gText_Var1CertainlyHowMany, Task_BuyHowManyDialogueInit); + } + break; + } + } +} + +static void Task_BuyHowManyDialogueInit(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); + BuyMenuPrintItemQuantityAndPrice(taskId); + ScheduleBgCopyTilemapToVram(0); + maxQuantity = GetMoney(&gSaveBlock1Ptr->money) / itemid_get_market_price(tItemId); + if (maxQuantity > 99) + gShopData.maxQuantity = 99; + else + gShopData.maxQuantity = (u8)maxQuantity; + + if (maxQuantity != 1) + BuyQuantityAddScrollIndicatorArrows(); + + gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; +} + +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; + BuyMenuPrintItemQuantityAndPrice(taskId); + } + else + { + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + BuyMenuRemoveScrollIndicatorArrows(); + 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, CreateBuyMenuConfirmPurchaseWindow); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + BuyMenuRemoveScrollIndicatorArrows(); + ClearStdWindowAndFrameToTransparent(3, 0); + ClearStdWindowAndFrameToTransparent(1, 0); + ClearWindowTilemap(3); + ClearWindowTilemap(1); + BuyMenuReturnToItemList(taskId); + } + } +} + +static void CreateBuyMenuConfirmPurchaseWindow(u8 taskId) +{ + BuyMenuConfirmPurchase(taskId, sShopMenuActions_BuyQuit); +} + +static void BuyMenuTryMakePurchase(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + PutWindowTilemap(4); + if (AddBagItem(tItemId, tItemCount) == TRUE) + { + BuyMenuDisplayMessage(taskId, gText_HereYouGoThankYou, BuyMenuSubtractMoney); + nullsub_52(taskId); + RecordItemPurchase(tItemId, tItemCount, 1); + } + else + { + BuyMenuDisplayMessage(taskId, gText_NoMoreRoomForThis, BuyMenuReturnToItemList); + } +} + +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 = Task_ReturnToItemListAfterItemPurchase; +} + +static void Task_ReturnToItemListAfterItemPurchase(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + BuyMenuReturnToItemList(taskId); + } +} + +static void BuyMenuReturnToItemList(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + ClearDialogWindowAndFrameToTransparent(2, 0); + BuyMenuPrintCursor(tListTaskId, 1); + sub_809B10C(0); + PutWindowTilemap(4); + PutWindowTilemap(5); + if (gShopData.martType == MART_TYPE_TMHM) + PutWindowTilemap(6); + + ScheduleBgCopyTilemapToVram(0); + BuyMenuAddScrollIndicatorArrows(); + gTasks[taskId].func = Task_BuyMenu; +} + +static void ExitBuyMenu(u8 taskId) +{ + gFieldCallback = MapPostLoadHook_ReturnToShopMenu; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitBuyMenu; +} + +static void Task_ExitBuyMenu(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + DestroyListMenuTask(tListTaskId, NULL, NULL); + BuyMenuFreeMemory(); + SetMainCallback2(CB2_ReturnToField); + DestroyTask(taskId); + } +} + +static void nullsub_52(u8 taskId) +{ +} + +static void nullsub_53(void) +{ +} + +void RecordItemPurchase(u16 item, u16 quantity, u8 a2) +{ + struct MartHistory *history; + + if (gShopMenuHistory[0].unkA == a2) + { + history = &gShopMenuHistory[0]; + } + else if (gShopMenuHistory[1].unkA == a2) + { + history = &gShopMenuHistory[1]; + } + else + { + if (gShopMenuHistory[0].unkA == 0) + history = &gShopMenuHistory[0]; + else + history = &gShopMenuHistory[1]; + history->unkA = a2; + } + + if (history->unk4 != 0) + { + history->unk9 = 1; + } + + history->unk4 = item; + if (history->unk6 < 999) + { + history->unk6 += quantity; + if (history->unk6 > 999) + history->unk6 = 999; + } + + if (history->unk0 < 999999) + { + history->unk0 += (itemid_get_market_price(item) >> (a2 - 1)) * quantity; + if (history->unk0 > 999999) + history->unk0 = 999999; + } +} + +static void RecordQuestLogItemPurchase(void) +{ + u16 v; + + v = gShopMenuHistory[0].unkA; + if (v != 0) + sub_8113550(v + 0x24, (const u16 *)&gShopMenuHistory[0]); + + v = gShopMenuHistory[1].unkA; + if (v != 0) + sub_8113550(v + 0x24, (const u16 *)&gShopMenuHistory[1]); +} + +void CreatePokemartMenu(const u16 *itemsForSale) +{ + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_REGULAR); + SetShopMenuCallback(EnableBothScriptContexts); + nullsub_53(); + memset(&gShopMenuHistory, 0, sizeof(gShopMenuHistory)); + gShopMenuHistory[0].unk8 = gMapHeader.regionMapSectionId; + gShopMenuHistory[1].unk8 = gMapHeader.regionMapSectionId; +} + +void CreateDecorationShop1Menu(const u16 *itemsForSale) +{ + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_DECOR); + SetShopMenuCallback(EnableBothScriptContexts); +} + +void CreateDecorationShop2Menu(const u16 *itemsForSale) +{ + SetShopItemsForSale(itemsForSale); + CreateShopMenu(MART_TYPE_DECOR2); + SetShopMenuCallback(EnableBothScriptContexts); +} + diff --git a/src/tm_case.c b/src/tm_case.c index a9af2332e..40509ed1b 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 e1ef2cd8b..973b74ec4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -237,48 +237,10 @@ gUnknown_2039874: @ 2039874 gBagPockets: @ 203988C .space 0x28 -gUnknown_20398B4: @ 20398B4 - .space 0x4 - -gUnknown_20398B8: @ 20398B8 - .space 0x2 - -gUnknown_20398BA: @ 20398BA - .space 0x7A - -gUnknown_2039934: @ 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/shop.o" + .align 2 + .include "src/sea_cottage_special_anim.o" .align 2 .include "src/script_menu.o" |