diff options
-rw-r--r-- | asm/trade.s | 2120 | ||||
-rw-r--r-- | data/trade.s | 317 | ||||
-rw-r--r-- | include/trade.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/egg_hatch.c | 6 | ||||
-rw-r--r-- | src/trade.c | 781 |
6 files changed, 783 insertions, 2447 deletions
diff --git a/asm/trade.s b/asm/trade.s index 8906de1bb..0efeabdb7 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -2620,2124 +2620,4 @@ _0804C294: .4byte gPlayerParty _0804C298: .4byte gStringVar2 thumb_func_end sub_804C1A8 - thumb_func_start sub_804C29C -sub_804C29C: @ 804C29C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - ldr r1, _0804C2C0 @ =gUnknown_03004828 - ldr r0, [r1] - adds r0, 0xC4 - ldrh r0, [r0] - adds r6, r1, 0 - cmp r0, 0xC8 - bls _0804C2B6 - bl _0804D570 -_0804C2B6: - lsls r0, 2 - ldr r1, _0804C2C4 @ =_0804C2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804C2C0: .4byte gUnknown_03004828 -_0804C2C4: .4byte _0804C2C8 - .align 2, 0 -_0804C2C8: - .4byte _0804C5EC - .4byte _0804C66C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C6C8 - .4byte _0804C704 - .4byte _0804C79C - .4byte _0804D570 - .4byte _0804C824 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804C848 - .4byte _0804C868 - .4byte _0804C87A - .4byte _0804C89C - .4byte _0804C8F4 - .4byte _0804C92C - .4byte _0804C978 - .4byte _0804C9C8 - .4byte _0804CA1C - .4byte _0804CAB4 - .4byte _0804CAD8 - .4byte _0804CB24 - .4byte _0804CB70 - .4byte _0804CBCC - .4byte _0804CC2C - .4byte _0804CC40 - .4byte _0804CC54 - .4byte _0804CC68 - .4byte _0804CD94 - .4byte _0804CE64 - .4byte _0804CEEC - .4byte _0804CF68 - .4byte _0804CF78 - .4byte _0804CFA0 - .4byte _0804CFFC - .4byte _0804D028 - .4byte _0804D054 - .4byte _0804D06A - .4byte _0804D0D4 - .4byte _0804D570 - .4byte _0804D0FC - .4byte _0804D13C - .4byte _0804D182 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D1A4 - .4byte _0804D1C4 - .4byte _0804D1D2 - .4byte _0804D1F4 - .4byte _0804D2A8 - .4byte _0804D2E4 - .4byte _0804D314 - .4byte _0804D3C4 - .4byte _0804D41C - .4byte _0804D48C - .4byte _0804D4A0 - .4byte _0804D4A6 - .4byte _0804D4CC - .4byte _0804D528 - .4byte _0804D54C - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804D570 - .4byte _0804CA54 -_0804C5EC: - ldr r3, _0804C65C @ =gSprites - ldr r0, [r6] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _0804C660 @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _0804C664 @ =gMonFrontPicCoords - movs r3, 0x90 - lsls r3, 1 - adds r0, r4, r3 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r1, r7 - strh r0, [r1] - ldr r0, _0804C668 @ =0x00000179 - bl PlayBGM - bl _0804D570 - .align 2, 0 -_0804C65C: .4byte gSprites -_0804C660: .4byte 0x0000ff4c -_0804C664: .4byte gMonFrontPicCoords -_0804C668: .4byte 0x00000179 -_0804C66C: - ldr r4, [r6] - movs r0, 0x8B - lsls r0, 1 - adds r5, r4, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0 - ble _0804C6A0 - ldr r2, _0804C69C @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x3 - strh r1, [r0, 0x24] - ldrh r0, [r5] - subs r0, 0x3 - strh r0, [r5] - bl _0804D570 - .align 2, 0 -_0804C69C: .4byte gSprites -_0804C6A0: - ldr r2, _0804C6C4 @ =gSprites - adds r0, r4, 0 - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r5] - adds r1, r4, 0 - adds r1, 0xC4 - movs r0, 0xA - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C6C4: .4byte gSprites -_0804C6C8: - ldr r5, _0804C6F8 @ =gStringVar4 - ldr r1, _0804C6FC @ =gTradeText_WillBeSent - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r4, _0804C700 @ =gUnknown_03004828 - ldr r1, [r4] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r5, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r1, [r4] - adds r2, r1, 0 - adds r2, 0xC4 - movs r3, 0 - movs r0, 0xB - bl _0804D40C - .align 2, 0 -_0804C6F8: .4byte gStringVar4 -_0804C6FC: .4byte gTradeText_WillBeSent -_0804C700: .4byte gUnknown_03004828 -_0804C704: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x50 - beq _0804C718 - bl _0804D570 -_0804C718: - adds r0, r2, 0 - adds r0, 0xB8 - ldrb r0, [r0] - ldr r2, _0804C78C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804C790 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl sub_8047580 - ldr r1, [r6] - movs r2, 0x81 - lsls r2, 1 - adds r1, r2 - strb r0, [r1] - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0xC4 - ldrh r1, [r2] - adds r1, 0x1 - strh r1, [r2] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804C794 @ =gStringVar4 - ldr r1, _0804C798 @ =gTradeText_ByeBye - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - bl _0804D570 - .align 2, 0 -_0804C78C: .4byte gSprites -_0804C790: .4byte 0x000fffff -_0804C794: .4byte gStringVar4 -_0804C798: .4byte gTradeText_ByeBye -_0804C79C: - ldr r7, _0804C810 @ =gSprites - ldr r2, [r6] - movs r5, 0x81 - lsls r5, 1 - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r7, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0804C814 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804C7C0 - bl _0804D570 -_0804C7C0: - adds r0, r2, 0x4 - bl sub_80035AC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804C7D2 - bl _0804D570 -_0804C7D2: - ldr r0, _0804C818 @ =gSpriteTemplate_821595C - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - ldr r2, _0804C81C @ =0x00000103 - adds r1, r2 - strb r0, [r1] - ldr r3, [r6] - adds r2, r3, r2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804C820 @ =sub_804D738 - str r1, [r0] - adds r3, r5 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - bl DestroySprite - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C810: .4byte gSprites -_0804C814: .4byte SpriteCallbackDummy -_0804C818: .4byte gSpriteTemplate_821595C -_0804C81C: .4byte 0x00000103 -_0804C820: .4byte sub_804D738 -_0804C824: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804C844 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x14 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C844: .4byte gUnknown_03004828 -_0804C848: - ldr r0, _0804C864 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C858 - bl _0804D570 -_0804C858: - movs r0, 0x4 - bl sub_804BBE8 - bl _0804D538 - .align 2, 0 -_0804C864: .4byte gPaletteFade -_0804C868: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _0804D534 -_0804C87A: - ldr r0, _0804C898 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804C88A - bl _0804D570 -_0804C88A: - ldr r0, [r6] - adds r0, 0xC4 - movs r1, 0x17 - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804C898: .4byte gPaletteFade -_0804C89C: - ldr r4, _0804C8B8 @ =gUnknown_03004828 - ldr r0, [r4] - movs r3, 0x8D - lsls r3, 1 - adds r2, r0, r3 - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _0804C8BC - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _0804C8E0 - .align 2, 0 -_0804C8B8: .4byte gUnknown_03004828 -_0804C8BC: - movs r0, 0x1 - bl sub_804BBE8 - ldr r3, [r4] - movs r7, 0x8D - lsls r7, 1 - adds r1, r3, r7 - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - adds r1, r3, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xC0 - str r2, [r0] -_0804C8E0: - ldr r0, _0804C8F0 @ =gUnknown_03004828 - ldr r4, [r0] - movs r1, 0x8D - lsls r1, 1 - adds r0, r4, r1 - bl _0804D16E - .align 2, 0 -_0804C8F0: .4byte gUnknown_03004828 -_0804C8F4: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x14 - bhi _0804C906 - bl _0804D570 -_0804C906: - movs r0, 0x3 - bl sub_804BBE8 - bl sub_804B128 - ldr r0, _0804C928 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C928: .4byte gSpriteTemplate_8215A80 -_0804C92C: - ldr r2, _0804C96C @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804C94C - bl _0804D570 -_0804C94C: - adds r0, r1, 0 - bl DestroySprite - ldr r1, _0804C970 @ =REG_BLDCNT - movs r3, 0xC8 - lsls r3, 3 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r7, _0804C974 @ =0x0000040c - adds r0, r7, 0 - strh r0, [r1] - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804C96C: .4byte gSprites -_0804C970: .4byte REG_BLDCNT -_0804C974: .4byte 0x0000040c -_0804C978: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r2, r3 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - bne _0804C99A - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804C99A: - ldr r0, [r6] - adds r0, r3 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - beq _0804C9AE - bl _0804D570 -_0804C9AE: - ldr r0, _0804C9C4 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] - bl _0804D570 - .align 2, 0 -_0804C9C4: .4byte gSpriteTemplate_8215A30 -_0804C9C8: - ldr r0, _0804CA0C @ =gSpriteTemplate_82159BC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _0804CA10 @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CA14 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r4] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CA18 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CA0C: .4byte gSpriteTemplate_82159BC -_0804CA10: .4byte gUnknown_03004828 -_0804CA14: .4byte gSpriteTemplate_82159FC -_0804CA18: .4byte gSprites -_0804CA1C: - ldr r2, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r1, r2, r3 - ldrh r0, [r1] - subs r0, 0x2 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _0804CA3A - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0xC8 - strh r0, [r1] -_0804CA3A: - movs r0, 0 - bl sub_804C0F8 - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CA50 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CA50: .4byte 0x00001641 -_0804CA54: - ldr r4, _0804CAB0 @ =gSprites - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - movs r0, 0 - bl sub_804C0F8 - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _0804CAA4 - bl _0804D570 -_0804CAA4: - adds r1, r2, 0 - adds r1, 0xC4 - movs r0, 0x1D - strh r0, [r1] - bl _0804D570 - .align 2, 0 -_0804CAB0: .4byte gSprites -_0804CAB4: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804CAD4 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x1E - strh r1, [r0] - bl _0804D570 - .align 2, 0 -_0804CAD4: .4byte gUnknown_03004828 -_0804CAD8: - ldr r0, _0804CB1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CAE8 - bl _0804D570 -_0804CAE8: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CB20 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl sub_804BBE8 - ldr r1, [r6] - bl _0804D53C - .align 2, 0 -_0804CB1C: .4byte gPaletteFade -_0804CB20: .4byte gSprites -_0804CB24: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _0804CB68 @ =gSpriteTemplate_82159FC - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _0804CB6C @ =gUnknown_03004828 - ldr r1, [r4] - adds r1, 0xBA - strb r0, [r1] - movs r2, 0xA - negs r2, r2 - adds r0, r5, 0 - movs r1, 0x81 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0xBB - strb r0, [r1] - ldr r1, [r4] - bl _0804D53C - .align 2, 0 -_0804CB68: .4byte gSpriteTemplate_82159FC -_0804CB6C: .4byte gUnknown_03004828 -_0804CB70: - ldr r0, _0804CBC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804CB8E - movs r0, 0x2E - bl PlaySE - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r1, [r0] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804CB8E: - ldr r3, _0804CBC8 @ =gSprites - ldr r0, _0804CBC4 @ =gUnknown_03004828 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - bl _0804D570 - .align 2, 0 -_0804CBC0: .4byte gPaletteFade -_0804CBC4: .4byte gUnknown_03004828 -_0804CBC8: .4byte gSprites -_0804CBCC: - ldr r5, _0804CC28 @ =gSprites - ldr r4, [r6] - adds r2, r4, 0 - adds r2, 0xBA - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r6, r4, 0 - adds r6, 0xBB - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r5 - movs r7, 0x26 - ldrsh r1, [r3, r7] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _0804CC12 - bl _0804D570 -_0804CC12: - movs r2, 0x1 - strh r2, [r3, 0x30] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x30] - adds r1, r4, 0 - bl _0804D53C - .align 2, 0 -_0804CC28: .4byte gSprites -_0804CC2C: - ldr r2, _0804CC3C @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC3C: .4byte 0x0000ffff -_0804CC40: - ldr r2, _0804CC50 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC50: .4byte 0x0000ffff -_0804CC54: - ldr r2, _0804CC64 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _0804D538 - .align 2, 0 -_0804CC64: .4byte 0x0000ffff -_0804CC68: - ldr r5, _0804CCD8 @ =gUnknown_03004828 - ldr r0, [r5] - movs r1, 0x90 - lsls r1, 1 - adds r0, r1 - ldrh r0, [r0] - bl sub_8040A3C - lsls r0, 24 - cmp r0, 0 - bne _0804CCE4 - ldr r4, _0804CCDC @ =gSprites - ldr r2, [r5] - adds r2, 0xB8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _0804CCE0 @ =gSpriteAffineAnimTable_8215AC0 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _0804CCFA - .align 2, 0 -_0804CCD8: .4byte gUnknown_03004828 -_0804CCDC: .4byte gSprites -_0804CCE0: .4byte gSpriteAffineAnimTable_8215AC0 -_0804CCE4: - ldr r0, [r5] - adds r0, 0xB8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CD88 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_0804CCFA: - ldr r5, _0804CD8C @ =gUnknown_03004828 - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804CD88 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x3C - strh r1, [r0, 0x20] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xB4 - strh r1, [r0, 0x20] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC0 - strh r1, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0804CD90 @ =0x0000ffe0 - strh r1, [r0, 0x22] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r1, [r5] - bl _0804D53C - .align 2, 0 -_0804CD88: .4byte gSprites -_0804CD8C: .4byte gUnknown_03004828 -_0804CD90: .4byte 0x0000ffe0 -_0804CD94: - ldr r4, _0804CE5C @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - movs r5, 0 - strh r1, [r0, 0x26] - adds r2, 0xB9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x26] - adds r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _0804CDDC - movs r0, 0x2D - bl PlaySE -_0804CDDC: - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xB8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r7, 0x26 - ldrsh r1, [r0, r7] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _0804CDFA - b _0804D570 -_0804CDFA: - adds r0, r2, 0 - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r0, r2, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0xB9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldr r2, _0804CE60 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - b _0804D570 - .align 2, 0 -_0804CE5C: .4byte gSprites -_0804CE60: .4byte 0x0000ffff -_0804CE64: - ldr r4, _0804CEE8 @ =gSprites - ldr r2, [r6] - adds r3, r2, 0 - adds r3, 0xBA - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0xBB - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - ble _0804CEA6 - b _0804D570 -_0804CEA6: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xBA - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D570 - .align 2, 0 -_0804CEE8: .4byte gSprites -_0804CEEC: - ldr r0, _0804CF58 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CEFA - b _0804D570 -_0804CEFA: - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl sub_804BBE8 - ldr r0, [r6] - movs r3, 0x88 - lsls r3, 1 - adds r0, r3 - movs r1, 0xA6 - strh r1, [r0] - ldr r0, _0804CF5C @ =gSpriteTemplate_82159BC - movs r4, 0x14 - negs r4, r4 - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBA - strb r0, [r1] - ldr r0, _0804CF60 @ =gSpriteTemplate_82159FC - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804CF64 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _0804D570 - .align 2, 0 -_0804CF58: .4byte gPaletteFade -_0804CF5C: .4byte gSpriteTemplate_82159BC -_0804CF60: .4byte gSpriteTemplate_82159FC -_0804CF64: .4byte gSprites -_0804CF68: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804CF78: - movs r1, 0x80 - lsls r1, 19 - ldr r7, _0804CF98 @ =0x00001641 - adds r0, r7, 0 - strh r0, [r1] - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804CF9C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804CF96 - b _0804D570 -_0804CF96: - b _0804D538 - .align 2, 0 -_0804CF98: .4byte 0x00001641 -_0804CF9C: .4byte gPaletteFade -_0804CFA0: - movs r0, 0x1 - bl sub_804C0F8 - ldr r2, _0804CFF4 @ =gSprites - ldr r0, _0804CFF8 @ =gUnknown_03004828 - ldr r3, [r0] - adds r4, r3, 0 - adds r4, 0xBA - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - adds r0, r3, 0 - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r7, 0x22 - ldrsh r0, [r0, r7] - adds r1, r0 - cmp r1, 0x40 - beq _0804CFEE - b _0804D570 -_0804CFEE: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804CFF4: .4byte gSprites -_0804CFF8: .4byte gUnknown_03004828 -_0804CFFC: - movs r0, 0x1 - bl sub_804C0F8 - ldr r0, _0804D024 @ =gUnknown_03004828 - ldr r1, [r0] - movs r0, 0x88 - lsls r0, 1 - adds r2, r1, r0 - ldrh r0, [r2] - adds r0, 0x2 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x9E - lsls r3, 1 - cmp r0, r3 - bgt _0804D020 - b _0804D570 -_0804D020: - strh r3, [r2] - b _0804D53C - .align 2, 0 -_0804D024: .4byte gUnknown_03004828 -_0804D028: - ldr r0, [r6] - adds r0, 0xBA - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804D050 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _0804D400 - .align 2, 0 -_0804D050: .4byte gSprites -_0804D054: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xA - beq _0804D066 - b _0804D570 -_0804D066: - adds r1, 0x4 - b _0804D53E -_0804D06A: - ldr r1, [r6] - movs r4, 0x88 - lsls r4, 1 - adds r2, r1, r4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xAE - lsls r3, 1 - cmp r0, r3 - ble _0804D08E - strh r3, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D08E: - ldr r0, [r6] - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - bne _0804D0B0 - ldr r0, _0804D0C8 @ =gSpriteTemplate_8215A30 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r6] - adds r1, 0xBC - strb r0, [r1] -_0804D0B0: - ldr r2, _0804D0CC @ =gSprites - ldr r0, [r6] - adds r0, 0xBC - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0804D0D0 @ =sub_804B0E0 - str r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0C8: .4byte gSpriteTemplate_8215A30 -_0804D0CC: .4byte gSprites -_0804D0D0: .4byte sub_804B0E0 -_0804D0D4: - ldr r0, _0804D0F4 @ =gSpriteTemplate_8215A80 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _0804D0F8 @ =gUnknown_03004828 - ldr r1, [r2] - adds r1, 0xBB - strb r0, [r1] - ldr r0, [r2] - adds r0, 0xC4 - movs r1, 0x32 - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D0F4: .4byte gSpriteTemplate_8215A80 -_0804D0F8: .4byte gUnknown_03004828 -_0804D0FC: - ldr r2, _0804D138 @ =gSprites - ldr r0, [r6] - adds r0, 0xBB - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _0804D11A - b _0804D570 -_0804D11A: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl sub_804BBE8 - ldr r1, [r6] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x9F - bl PlaySE - b _0804D570 - .align 2, 0 -_0804D138: .4byte gSprites -_0804D13C: - ldr r1, [r6] - movs r3, 0x8D - lsls r3, 1 - adds r2, r1, r3 - ldrh r3, [r2] - ldr r0, _0804D154 @ =0x000003ff - cmp r3, r0 - bhi _0804D158 - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _0804D166 - .align 2, 0 -_0804D154: .4byte 0x000003ff -_0804D158: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0804D166: - ldr r4, [r6] - movs r7, 0x8D - lsls r7, 1 - adds r0, r4, r7 -_0804D16E: - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - movs r2, 0x8C - lsls r2, 1 - adds r1, r4, r2 - strh r0, [r1] - b _0804D570 -_0804D182: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804D1A0 @ =gUnknown_03004828 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x3C - strh r1, [r0] - b _0804D570 - .align 2, 0 -_0804D1A0: .4byte gUnknown_03004828 -_0804D1A4: - ldr r0, _0804D1C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1B2 - b _0804D570 -_0804D1B2: - movs r0, 0x5 - bl sub_804BBE8 - movs r0, 0x7 - bl sub_804BBE8 - b _0804D538 - .align 2, 0 -_0804D1C0: .4byte gPaletteFade -_0804D1C4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _0804D534 -_0804D1D2: - movs r1, 0x80 - lsls r1, 19 - movs r3, 0xA2 - lsls r3, 5 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0804D1F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804D1EC - b _0804D570 -_0804D1EC: - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D1F0: .4byte gPaletteFade -_0804D1F4: - ldr r0, _0804D290 @ =gSpriteTemplate_821595C - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r6, _0804D294 @ =gUnknown_03004828 - ldr r1, [r6] - ldr r5, _0804D298 @ =0x00000103 - adds r1, r5 - movs r7, 0 - mov r8, r7 - strb r0, [r1] - ldr r4, _0804D29C @ =gSprites - ldr r2, [r6] - adds r2, r5 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0804D2A0 @ =sub_804D80C - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r2, _0804D2A4 @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0xC0 - mov r0, r8 - str r0, [r1] - b _0804D570 - .align 2, 0 -_0804D290: .4byte gSpriteTemplate_821595C -_0804D294: .4byte gUnknown_03004828 -_0804D298: .4byte 0x00000103 -_0804D29C: .4byte gSprites -_0804D2A0: .4byte sub_804D80C -_0804D2A4: .4byte 0x0000ffff -_0804D2A8: - ldr r2, _0804D2D8 @ =gSprites - ldr r0, [r6] - ldr r1, _0804D2DC @ =0x00000103 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _0804D2E0 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D2D8: .4byte gSprites -_0804D2DC: .4byte 0x00000103 -_0804D2E0: .4byte 0x0000ffff -_0804D2E4: - ldr r2, _0804D308 @ =gSprites - ldr r3, [r6] - ldr r7, _0804D30C @ =0x00000103 - adds r0, r3, r7 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804D310 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0804D302 - b _0804D570 -_0804D302: - adds r1, r3, 0 - b _0804D53C - .align 2, 0 -_0804D308: .4byte gSprites -_0804D30C: .4byte 0x00000103 -_0804D310: .4byte SpriteCallbackDummy -_0804D314: - ldr r4, _0804D3B4 @ =gSprites - ldr r0, [r6] - mov r8, r0 - mov r5, r8 - adds r5, 0xB9 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r2, _0804D3B8 @ =gMonFrontPicCoords - movs r0, 0x91 - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x24] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x26] - ldrb r0, [r5] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _0804D3BC @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSprite - ldr r0, [r6] - ldr r5, _0804D3C0 @ =0x00000103 - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r6] - b _0804D53C - .align 2, 0 -_0804D3B4: .4byte gSprites -_0804D3B8: .4byte gMonFrontPicCoords -_0804D3BC: .4byte 0x000fffff -_0804D3C0: .4byte 0x00000103 -_0804D3C4: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, [r6] - adds r0, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D414 @ =gStringVar4 - ldr r1, _0804D418 @ =gTradeText_SentOverPoke - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 -_0804D400: - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0xC4 - ldrh r0, [r2] - adds r0, 0x1 - movs r3, 0 -_0804D40C: - strh r0, [r2] - adds r1, 0xC0 - str r3, [r1] - b _0804D570 - .align 2, 0 -_0804D414: .4byte gStringVar4 -_0804D418: .4byte gTradeText_SentOverPoke -_0804D41C: - ldr r1, [r6] - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x4 - bne _0804D430 - ldr r0, _0804D480 @ =0x00000173 - bl PlayFanfare -_0804D430: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xC0 - ldr r0, [r0] - cmp r0, 0xF0 - beq _0804D43E - b _0804D570 -_0804D43E: - adds r1, r2, 0 - adds r1, 0xC4 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - adds r0, r2, 0x4 - movs r1, 0x13 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x1D - bl ZeroFillWindowRect - ldr r4, _0804D484 @ =gStringVar4 - ldr r1, _0804D488 @ =gTradeText_TakeGoodCare - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r1, [r6] - adds r0, r1, 0x4 - adds r1, 0x34 - ldrb r2, [r1] - movs r1, 0xF - str r1, [sp] - adds r1, r4, 0 - movs r3, 0x2 - bl sub_8003460 - ldr r0, [r6] - adds r0, 0xC0 - str r5, [r0] - b _0804D570 - .align 2, 0 -_0804D480: .4byte 0x00000173 -_0804D484: .4byte gStringVar4 -_0804D488: .4byte gTradeText_TakeGoodCare -_0804D48C: - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0xC0 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0x3C - bne _0804D570 - adds r1, 0x4 - b _0804D53E -_0804D4A0: - bl sub_804E1DC - b _0804D538 -_0804D4A6: - ldr r2, [r6] - movs r3, 0x8F - lsls r3, 1 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0804D4B8 - movs r0, 0x1 - b _0804D572 -_0804D4B8: - ldr r0, _0804D4C8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804D570 - adds r1, r2, 0 - b _0804D53C - .align 2, 0 -_0804D4C8: .4byte gMain -_0804D4CC: - ldr r0, _0804D510 @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl sub_804BA94 - ldr r1, _0804D514 @ =gUnknown_03005E94 - ldr r0, _0804D518 @ =sub_804BBCC - str r0, [r1] - ldr r7, _0804D51C @ =gUnknown_020297D8 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0804D520 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _0804D538 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _0804D524 @ =gUnknown_03004828 - ldr r1, [r1] - adds r1, 0xB9 - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0804D538 - .align 2, 0 -_0804D510: .4byte gSpecialVar_0x8005 -_0804D514: .4byte gUnknown_03005E94 -_0804D518: .4byte sub_804BBCC -_0804D51C: .4byte gUnknown_020297D8 -_0804D520: .4byte gPlayerParty -_0804D524: .4byte gUnknown_03004828 -_0804D528: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_0804D534: - bl BeginNormalPaletteFade -_0804D538: - ldr r0, _0804D548 @ =gUnknown_03004828 - ldr r1, [r0] -_0804D53C: - adds r1, 0xC4 -_0804D53E: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0804D570 - .align 2, 0 -_0804D548: .4byte gUnknown_03004828 -_0804D54C: - ldr r0, _0804D580 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804D570 - ldr r0, [r6] - movs r7, 0x92 - lsls r7, 1 - adds r0, r7 - ldrh r0, [r0] - bl PlayBGM - ldr r0, _0804D584 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - bl sub_804D8E4 -_0804D570: - movs r0, 0 -_0804D572: - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0804D580: .4byte gPaletteFade -_0804D584: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_804C29C - .align 2, 0 @ Don't pad with nop. diff --git a/data/trade.s b/data/trade.s index 9d224bf36..508e86c63 100644 --- a/data/trade.s +++ b/data/trade.s @@ -3,320 +3,3 @@ .section .rodata -@ This is used to determine the next mon to select when the D-Pad is -@ pressed in a given direction. -@ Note that the mons are laid out like this. -@ 0-5 are the player's party and 6-11 are the trading partner's party. -@ 12 is the cancel button. -@ 0 1 6 7 -@ 2 3 8 9 -@ 4 5 10 11 -@ 12 - - .align 2 -gTradeBallPalette:: @ 820C3D8 - .incbin "graphics/trade/ball.gbapal" - - .align 2 -gTradeBallTiles:: @ 820C3F8 - .incbin "graphics/trade/ball.4bpp" - - .align 2 -gUnknown_0820C9F8:: @ 820C9F8 - .incbin "graphics/trade/unknown.gbapal" - .incbin "graphics/trade/gba.gbapal" - .incbin "graphics/trade/shadow.gbapal" - .space 32 - .incbin "graphics/trade/misc.gbapal" - - .align 2 -gUnknown_0820CA98:: @ 820CA98 - .incbin "graphics/trade/gba.4bpp" - .incbin "graphics/trade/shadow.4bpp" - - .align 2 -gUnknown_0820DD98:: @ 820DD98 - .incbin "graphics/trade/pokeball_symbol.8bpp" - - .align 2 -gUnknown_0820F798:: @ 820F798 - .incbin "graphics/trade/shadow_map.bin" - - .align 2 -gUnknown_08210798:: @ 8210798 - .incbin "graphics/trade/gba_map.bin" - - .align 2 -gUnknown_08211798:: @ 8211798 - .incbin "graphics/trade/cable_closeup_map.bin" - - .align 2 -gUnknown_08211F98:: @ 8211F98 - .incbin "graphics/trade/pokeball_symbol_map.bin" - - .incbin "graphics/unused/unknown/8212098.gbapal" - - .align 2 -gTradeCableEndPalette:: @ 82120B8 - .incbin "graphics/trade/cable_end.gbapal" - - .incbin "graphics/unused/unknown/82120D8.gbapal" - - .space 32 - - .align 2 -gTradeGlowPalette:: @ 8212118 - .incbin "graphics/trade/glow.gbapal" - - .align 2 -gTradeGlow1Tiles:: @ 8212138 - .incbin "graphics/trade/glow1.4bpp" - - .align 2 -gTradeGlow2Tiles:: @ 8212338 - .incbin "graphics/trade/glow2.4bpp" - - .align 2 -gTradeCableEndTiles:: @ 8212538 - .incbin "graphics/trade/cable_end.4bpp" - - .align 2 -gTradeGBAScreenTiles:: @ 8212738 - .incbin "graphics/trade/gba_screen.4bpp" - - .align 2 -gUnknown_08213738:: @ 8213738 - .incbin "graphics/trade/gba_affine.8bpp" - - .align 2 -gUnknown_08215778:: @ 8215778 - .incbin "graphics/trade/gba_affine_map.bin" - - .align 2 -gOamData_8215878:: @ 8215878 - .2byte 0x0100 - .2byte 0x4000 - .2byte 0x0000 - - .align 2 -gSpriteAnim_8215880:: @ 8215880 - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 1 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnim_82158BC:: @ 82158BC - obj_image_anim_frame 0, 3 - obj_image_anim_frame 4, 3 - obj_image_anim_frame 8, 3 - obj_image_anim_frame 12, 3 - obj_image_anim_frame 16, 3 - obj_image_anim_frame 20, 3 - obj_image_anim_frame 24, 3 - obj_image_anim_frame 28, 3 - obj_image_anim_frame 32, 3 - obj_image_anim_frame 36, 3 - obj_image_anim_frame 40, 3 - obj_image_anim_frame 44, 3 - obj_image_anim_loop 2 - obj_image_anim_frame 0, 3 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82158F8:: @ 82158F8 - .4byte gSpriteAnim_8215880 - .4byte gSpriteAnim_82158BC - - .align 2 -gSpriteAffineAnim_8215900:: @ 8215900 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 1 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215910:: @ 8215910 - obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_8215920:: @ 8215920 - obj_rot_scal_anim_frame 0x60, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 0, 5 - obj_rot_scal_anim_frame 0x8, 0x0, 0, 20 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_8215940:: @ 8215940 - .4byte gSpriteAffineAnim_8215900 - .4byte gSpriteAffineAnim_8215910 - .4byte gSpriteAffineAnim_8215920 - - .align 2 -gUnknown_0821594C:: @ 821594C - obj_tiles gTradeBallTiles, 0x600, 5557 - - .align 2 -gUnknown_08215954:: @ 8215954 - obj_pal gTradeBallPalette, 5558 - - .align 2 -gSpriteTemplate_821595C:: @ 821595C - spr_template 5557, 5558, gOamData_8215878, gSpriteAnimTable_82158F8, NULL, gSpriteAffineAnimTable_8215940, sub_804D6BC - - .align 2 -gOamData_8215974:: @ 8215974 - .2byte 0x0500 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_821597C:: @ 821597C - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215984:: @ 8215984 - .4byte gSpriteAnim_821597C - - .align 2 -gSpriteAffineAnim_8215988:: @ 8215988 - obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, 0, 5 - obj_rot_scal_anim_frame 0xA, 0xA, 0, 5 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_82159A0:: @ 82159A0 - .4byte gSpriteAffineAnim_8215988 - - .align 2 -gUnknown_082159A4:: @ 82159A4 - obj_tiles gTradeGlow1Tiles, 0x200, 5550 - - .align 2 -gUnknown_082159AC:: @ 82159AC - obj_pal gTradeGlowPalette, 5551 - - .align 2 -gUnknown_082159B4:: @ 82159B4 - obj_pal gTradeCableEndPalette, 5555 - - .align 2 -gSpriteTemplate_82159BC:: @ 82159BC - spr_template 5550, 5551, gOamData_8215974, gSpriteAnimTable_8215984, NULL, gSpriteAffineAnimTable_82159A0, sub_804B058 - - .align 2 -gOamData_82159D4:: @ 82159D4 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_82159DC:: @ 82159DC - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnim_82159E4:: @ 82159E4 - obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - - .align 2 -gSpriteAnimTable_82159EC:: @ 82159EC - .4byte gSpriteAnim_82159DC - .4byte gSpriteAnim_82159E4 - - .align 2 -gUnknown_082159F4:: @ 82159F4 - obj_tiles gTradeGlow2Tiles, 0x300, 5552 - - .align 2 -gSpriteTemplate_82159FC:: @ 82159FC - spr_template 5552, 5551, gOamData_82159D4, gSpriteAnimTable_82159EC, NULL, gDummySpriteAffineAnimTable, sub_804B07C - - .align 2 -gOamData_8215A14:: @ 8215A14 - .2byte 0x8000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A1C:: @ 8215A1C - obj_image_anim_frame 0, 10 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A24:: @ 8215A24 - .4byte gSpriteAnim_8215A1C - - .align 2 -gUnknown_08215A28:: @ 8215A28 - obj_tiles gTradeCableEndTiles, 0x100, 5554 - - .align 2 -gSpriteTemplate_8215A30:: @ 8215A30 - spr_template 5554, 5555, gOamData_8215A14, gSpriteAnimTable_8215A24, NULL, gDummySpriteAffineAnimTable, sub_804B0BC - - .align 2 -gOamData_8215A48:: @ 8215A48 - .2byte 0x4000 - .2byte 0xC000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8215A50:: @ 8215A50 - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 96, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_loop 8 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8215A74:: @ 8215A74 - .4byte gSpriteAnim_8215A50 - - .align 2 -gUnknown_08215A78:: @ 8215A78 - obj_tiles gTradeGBAScreenTiles, 0x1000, 5556 - - .align 2 -gSpriteTemplate_8215A80:: @ 8215A80 - spr_template 5556, 5555, gOamData_8215A48, gSpriteAnimTable_8215A74, NULL, gDummySpriteAffineAnimTable, sub_804B104 - - .align 1 -gTradeGlow2PaletteAnimTable:: @ 8215A98 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7F12 - .2byte 0x7FFF - .2byte 0x7FFF - .2byte 0x7FFF - - .align 2 -gSpriteAffineAnim_8215AB0:: @ 8215AB0 - obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnimTable_8215AC0:: @ 8215AC0 - .4byte gSpriteAffineAnim_8215AB0 diff --git a/include/trade.h b/include/trade.h index 909d17dab..bf744f8d4 100644 --- a/include/trade.h +++ b/include/trade.h @@ -5,6 +5,10 @@ #ifndef POKERUBY_TRADE_H #define POKERUBY_TRADE_H +extern const u16 gUnknown_0820C9F8[][16]; +extern const u32 gUnknown_0820CA98[]; +extern const u16 gUnknown_0820F798[]; + void sub_8047CD8(void); u16 sub_804DB2C(void); void sub_804DB68(void); diff --git a/ld_script.txt b/ld_script.txt index 6ecf65843..92786630d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -344,8 +344,6 @@ SECTIONS { data/battle_interface.o(.rodata); src/pokeball.o(.rodata); src/trade.o(.rodata); - data/trade.o(.rodata); - src/trade.o(.rodata.igt); src/berry_blender.o(.rodata); src/new_game.o(.rodata); data/rom4.o(.rodata); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index aa3d45250..df54587af 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -19,6 +19,7 @@ #include "naming_screen.h" #include "trig.h" #include "rng.h" +#include "trade.h" extern u8 ewram[]; extern struct SpriteTemplate gUnknown_02024E8C; @@ -40,10 +41,7 @@ struct EggHatchData* gEggHatchData; extern const u32 gUnknown_08D00000[]; extern const u32 gUnknown_08D00524[]; -extern const u32 gUnknown_0820CA98[]; -extern const u32 gUnknown_0820F798[]; extern const u16 gUnknown_08D004E0[]; //palette -extern const u16 gUnknown_0820C9F8[]; //palette extern const struct SpriteSheet sUnknown_0820A3B0; extern const struct SpriteSheet sUnknown_0820A3B8; extern const struct SpritePalette sUnknown_0820A3C0; @@ -512,7 +510,7 @@ static void CB2_EggHatch_0(void) u32 size; REG_BG2CNT = 0x4C06; - LoadPalette(&gUnknown_0820C9F8, 0x10, 0xA0); + LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); offsetRead = (u32)(&gUnknown_0820CA98); offsetWrite = (VRAM + 0x4000); diff --git a/src/trade.c b/src/trade.c index ee0ed96db..3ec01246c 100644 --- a/src/trade.c +++ b/src/trade.c @@ -33,6 +33,7 @@ #include "decompress.h" #include "mail_data.h" #include "evolution_scene.h" +#include "pokeball.h" #include "trade.h" #ifdef ENGLISH @@ -131,12 +132,31 @@ struct TradeEwramSubstruct2 { /*0x009c*/ u8 unk_009c; /*0x009d*/ u8 unk_009d; /*0x009e*/ u16 linkData[13]; + // Sprite indices /*0x00b8*/ u8 unk_00b8; /*0x00b9*/ u8 unk_00b9; - /*0x00ba*/ u8 filler_00ba[3]; + /*0x00ba*/ u8 unk_00ba; + /*0x00bb*/ u8 unk_00bb; + /*0x00bc*/ u8 unk_00bc; /*0x00bd*/ u8 unk_00bd; + // Timer /*0x00c0*/ u32 unk_00c0; + // Scene index /*0x00c4*/ u16 unk_00c4; + /*0x00c6*/ u8 filler_00c6[0x3c]; + /*0x0102*/ u8 unk_0102; + /*0x0103*/ u8 unk_0103; + /*0x0104*/ u8 filler_0104[0x0c]; + /*0x0110*/ s16 unk_0110; + /*0x0112*/ u8 filler_0112[4]; + /*0x0116*/ s16 unk_0116; + /*0x0118*/ u16 unk_0118; + /*0x011a*/ u16 unk_011a; + /*0x011c*/ u8 filler_011c[2]; + /*0x011e*/ u8 unk_011e; + /*0x0120*/ u16 unk_0120; + /*0x0122*/ u16 unk_0122; + /*0x0124*/ u16 unk_0124; }; struct TradeEwramStruct { @@ -204,6 +224,22 @@ static void sub_804E1A0(u8); static void sub_804DAD4(struct MailStruct *, const struct InGameTrade *); void sub_804D588(void); static void sub_804DC88(void); +u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32); +void sub_804D6BC(struct Sprite *); +void sub_804D738(struct Sprite *); +void sub_804BBE8(u8); +void sub_804B128(void); +void sub_804B058(struct Sprite *); +void sub_804B07C(struct Sprite *); +void sub_804B0BC(struct Sprite *); +void sub_804B104(struct Sprite *); +void sub_804C0F8(u8); +bool8 sub_8040A3C(u16); +void sub_804B0E0(struct Sprite *); +void sub_804D80C(struct Sprite *); +void sub_804E1DC(void); +void sub_804BBCC(void); +void sub_804D8E4(void); extern u8 gUnknown_020297D8[2]; extern u8 *gUnknown_020296CC[13]; @@ -565,10 +601,297 @@ const u8 unref_string_0820C3B5[] = _("こうかんせいりつ "); const u8 unref_string_0820C3C3[] = _("だめだたらしいよ "); const u8 gUnknown_0820C3D1[][2] = { { 4, 3}, - {19, 3} + {19, 3}, + { 0, 0} }; -asm(".section .rodata.igt"); +const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal"); +const u32 gTradeBallTiles[] = INCBIN_U32("graphics/trade/ball.4bpp"); +const u16 gUnknown_0820C9F8[][16] = { + INCBIN_U16("graphics/trade/unknown.gbapal"), + INCBIN_U16("graphics/trade/gba.gbapal"), + INCBIN_U16("graphics/trade/shadow.gbapal"), + {}, + INCBIN_U16("graphics/trade/misc.gbapal") +}; + +const u32 gUnknown_0820CA98[] = INCBIN_U32("graphics/trade/gba.4bpp"); +const u32 gUnknown_0820CA98_2[] = INCBIN_U32("graphics/trade/shadow.4bpp"); +const u32 gUnknown_0820DD98[] = INCBIN_U32("graphics/trade/pokeball_symbol.8bpp"); +const u16 gUnknown_0820F798[] = INCBIN_U16("graphics/trade/shadow_map.bin"); +const u16 gUnknown_08210798[] = INCBIN_U16("graphics/trade/gba_map.bin"); +const u16 gUnknown_08211798[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin"); +const u16 gUnknown_08211F98[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); +const u16 unused_08212098[] = INCBIN_U16("graphics/unused/unknown/8212098.gbapal"); +const u16 gTradeCableEndPalette[] = INCBIN_U16("graphics/trade/cable_end.gbapal"); +const u16 unused_082120D8[] = INCBIN_U16("graphics/unused/unknown/82120D8.gbapal"); +const u16 nullpal_082120F8[16] = {}; +const u16 gTradeGlowPalette[] = INCBIN_U16("graphics/trade/glow.gbapal"); +const u32 gTradeGlow1Tiles[] = INCBIN_U32("graphics/trade/glow1.4bpp"); +const u32 gTradeGlow2Tiles[] = INCBIN_U32("graphics/trade/glow2.4bpp"); +const u32 gTradeCableEndTiles[] = INCBIN_U32("graphics/trade/cable_end.4bpp"); +const u32 gTradeGBAScreenTiles[] = INCBIN_U32("graphics/trade/gba_screen.4bpp"); +const u32 gUnknown_08213738[] = INCBIN_U32("graphics/trade/gba_affine.8bpp"); +const u16 gUnknown_08215778[] = INCBIN_U16("graphics/trade/gba_affine_map.bin"); + +const struct OamData gOamData_8215878 = { + .affineMode = 1, + .size = 1 +}; + +const union AnimCmd gSpriteAnim_8215880[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82158BC[] = { + ANIMCMD_FRAME( 0, 3), + ANIMCMD_FRAME( 4, 3), + ANIMCMD_FRAME( 8, 3), + ANIMCMD_FRAME(12, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(20, 3), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(28, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(36, 3), + ANIMCMD_FRAME(40, 3), + ANIMCMD_FRAME(44, 3), + ANIMCMD_LOOP(2), + ANIMCMD_FRAME( 0, 3), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82158F8[] = { + gSpriteAnim_8215880, + gSpriteAnim_82158BC +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215900[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215910[] = { + AFFINEANIMCMD_FRAME(-8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215920[] = { + AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0), + AFFINEANIMCMD_FRAME( 0, 0, 0, 5), + AFFINEANIMCMD_FRAME( 8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215940[] = { + gSpriteAffineAnim_8215900, + gSpriteAffineAnim_8215910, + gSpriteAffineAnim_8215920 +}; + +const struct SpriteSheet gUnknown_0821594C = { + (const u8 *)gTradeBallTiles, 0x600, 5557 +}; + +const struct SpritePalette gUnknown_08215954 = { + gTradeBallPalette, 5558 +}; + +const struct SpriteTemplate gSpriteTemplate_821595C = { + 5557, + 5558, + &gOamData_8215878, + gSpriteAnimTable_82158F8, + NULL, + gSpriteAffineAnimTable_8215940, + sub_804D6BC +}; + +const struct OamData gOamData_8215974 = { + .affineMode = 1, + .objMode = 1, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_821597C[] = { + ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215984[] = { + gSpriteAnim_821597C +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215988[] = { + AFFINEANIMCMD_FRAME(-10, -10, 0, 5), + AFFINEANIMCMD_FRAME(10, 10, 0, 5), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_82159A0[] = { + gSpriteAffineAnim_8215988 +}; + +const struct SpriteSheet gUnknown_082159A4 = { + (const u8 *)gTradeGlow1Tiles, 0x200, 5550 +}; + +const struct SpritePalette gUnknown_082159AC = { + gTradeGlowPalette, 5551 +}; + +const struct SpritePalette gUnknown_082159B4 = { + gTradeCableEndPalette, 5555 +}; + +const struct SpriteTemplate gSpriteTemplate_82159BC = { + 5550, + 5551, + &gOamData_8215974, + gSpriteAnimTable_8215984, + NULL, + gSpriteAffineAnimTable_82159A0, + sub_804B058 +}; + +const struct OamData gOamData_82159D4 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_82159DC[] = { + ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_82159E4[] = { + ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_82159EC[] = { + gSpriteAnim_82159DC, + gSpriteAnim_82159E4 +}; + +const struct SpriteSheet gUnknown_082159F4 = { + (const u8 *)gTradeGlow2Tiles, 0x300, 5552 +}; + +const struct SpriteTemplate gSpriteTemplate_82159FC = { + 5552, + 5551, + &gOamData_82159D4, + gSpriteAnimTable_82159EC, + NULL, + gDummySpriteAffineAnimTable, + sub_804B07C +}; + +const struct OamData gOamData_8215A14 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A1C[] = { + ANIMCMD_FRAME(0, 10), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A24[] = { + gSpriteAnim_8215A1C +}; + +const struct SpriteSheet gUnknown_08215A28 = { + (const u8 *)gTradeCableEndTiles, 0x100, 5554 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A30 = { + 5554, + 5555, + &gOamData_8215A14, + gSpriteAnimTable_8215A24, + NULL, + gDummySpriteAffineAnimTable, + sub_804B0BC +}; + +const struct OamData gOamData_8215A48 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 3, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8215A50[] = { + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(96, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_LOOP(8), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8215A74[] = { + gSpriteAnim_8215A50 +}; + +const struct SpriteSheet gUnknown_08215A78 = { + (const u8 *)gTradeGBAScreenTiles, 0x1000, 5556 +}; + +const struct SpriteTemplate gSpriteTemplate_8215A80 = { + 5556, + 5555, + &gOamData_8215A48, + gSpriteAnimTable_8215A74, + NULL, + gDummySpriteAffineAnimTable, + sub_804B104 +}; + +const u16 gTradeGlow2PaletteAnimTable[] = { + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), +}; + +const union AffineAnimCmd gSpriteAffineAnim_8215AB0[] = { + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_8215AC0[] = { + gSpriteAffineAnim_8215AB0 +}; const struct InGameTrade gIngameTrades[] = { { @@ -3174,6 +3497,456 @@ static bool8 sub_804ABF8(void) asm(".section .text.sub_804DAD4"); +bool8 sub_804C29C(void) +{ + u16 evoTarget; + + switch (gUnknown_03004828->unk_00c4) + { + case 0: + gSprites[gUnknown_03004828->unk_00b8].invisible = FALSE; + gSprites[gUnknown_03004828->unk_00b8].pos2.x = -0xb4; + gSprites[gUnknown_03004828->unk_00b8].pos2.y = gMonFrontPicCoords[gUnknown_03004828->unk_0120].y_offset; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_0124 = GetCurrentMapMusic(); + PlayBGM(BGM_SHINKA); + break; + case 1: + if (gUnknown_03004828->unk_0116 > 0) + { + gSprites[gUnknown_03004828->unk_00b8].pos2.x += 3; + gUnknown_03004828->unk_0116 -= 3; + } + else + { + gSprites[gUnknown_03004828->unk_00b8].pos2.x = 0; + gUnknown_03004828->unk_0116 = 0; + gUnknown_03004828->unk_00c4 = 10; + } + break; + + case 10: + StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->unk_0034, 2, 15); + gUnknown_03004828->unk_00c4 = 11; + gUnknown_03004828->unk_00c0 = 0; + break; + case 11: + if (++gUnknown_03004828->unk_00c0 == 80) + { + gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->unk_00b8, gSprites[gUnknown_03004828->unk_00b8].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff); + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->unk_0034, 2, 15); + } + break; + case 12: + if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE) + { + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0); + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738; + DestroySprite(&gSprites[gUnknown_03004828->unk_0102]); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 20; + break; + + case 20: + if (!gPaletteFade.active) + { + sub_804BBE8(4); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 21: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 22: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 = 23; + } + break; + case 23: + if (gUnknown_03004828->unk_011a > 0x100) + { + gUnknown_03004828->unk_011a -= 0x34; + } + else + { + sub_804BBE8(1); + gUnknown_03004828->unk_011a = 0x80; + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 24: + if (++ gUnknown_03004828->unk_00c0 > 20) + { + sub_804BBE8(3); + sub_804B128(); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 25: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + REG_BLDCNT = 0x640; + REG_BLDALPHA = 0x40C; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 26: + if (-- gUnknown_03004828->unk_0110 == 0x13C) + { + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->unk_0110 == 0x148) + { + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + } + break; + case 27: + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, 0x50, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, 0x50, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + gUnknown_03004828->unk_00c4 ++; + break; + case 28: + if ((gUnknown_03004828->unk_0110 -= 2) == 0xA6) + { + gUnknown_03004828->unk_00c4 = 200; + } + sub_804C0F8(0); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + break; + case 200: + gSprites[gUnknown_03004828->unk_00ba].pos1.y -= 2; + gSprites[gUnknown_03004828->unk_00bb].pos1.y -= 2; + sub_804C0F8(0); + if (gSprites[gUnknown_03004828->unk_00ba].pos1.y < -8) + { + gUnknown_03004828->unk_00c4 = 29; + } + break; + case 29: + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(2); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 31: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159FC, 0x6f, 0xaa, 0); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x81, -0xa, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + gUnknown_03004828->unk_00c4 ++; + } + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + break; + case 33: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0x5a) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 1; + gSprites[gUnknown_03004828->unk_00bb].data1 = 1; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 34: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 35: + BlendPalettes(1, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 36: + BlendPalettes(1, 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 37: + if (!sub_8040A3C(gUnknown_03004828->unk_0120)) + { + gSprites[gUnknown_03004828->unk_00b8].affineAnims = gSpriteAffineAnimTable_8215AC0; + gSprites[gUnknown_03004828->unk_00b8].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[gUnknown_03004828->unk_00b8], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_00b8], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_00b8], 0); + } + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_00b9], 0); + gSprites[gUnknown_03004828->unk_00b8].pos1.x = 0x3c; + gSprites[gUnknown_03004828->unk_00b9].pos1.x = 0xb4; + gSprites[gUnknown_03004828->unk_00b8].pos1.y = 0xc0; + gSprites[gUnknown_03004828->unk_00b9].pos1.y = -0x20; + gSprites[gUnknown_03004828->unk_00b8].invisible = FALSE; + gSprites[gUnknown_03004828->unk_00b9].invisible = FALSE; + gUnknown_03004828->unk_00c4 ++; + break; + case 38: + gSprites[gUnknown_03004828->unk_00b8].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00b9].pos2.y += 3; + if (-0xa0 > gSprites[gUnknown_03004828->unk_00b8].pos2.y && gSprites[gUnknown_03004828->unk_00b8].pos2.y >= -0xa3) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[gUnknown_03004828->unk_00b8].pos2.y < -0xde) + { + gSprites[gUnknown_03004828->unk_00ba].data1 = 0; + gSprites[gUnknown_03004828->unk_00bb].data1 = 0; + gUnknown_03004828->unk_00c4 ++; + gSprites[gUnknown_03004828->unk_00b8].invisible = TRUE; + gSprites[gUnknown_03004828->unk_00b9].invisible = TRUE; + BlendPalettes(1, 0, 0xffff); + } + break; + case 39: + gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde) + { + BeginNormalPaletteFade(-1, -1, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + } + break; + case 40: + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + sub_804BBE8(1); + gUnknown_03004828->unk_0110 = 0xa6; + gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, -0x14, 3); + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, -0x14, 0); + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1); + } + break; + case 41: + BeginNormalPaletteFade(-1, -1, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 42: + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + sub_804C0F8(1); + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 43: + sub_804C0F8(1); + gSprites[gUnknown_03004828->unk_00ba].pos2.y += 3; + gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3; + if (gSprites[gUnknown_03004828->unk_00ba].pos2.y + gSprites[gUnknown_03004828->unk_00ba].pos1.y == 64) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 44: + sub_804C0F8(1); + if ((gUnknown_03004828->unk_0110 += 2) > 0x13c) + { + gUnknown_03004828->unk_0110 = 0x13c; + gUnknown_03004828->unk_00c4 ++; + } + break; + case 45: + DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]); + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 46: + if (++ gUnknown_03004828->unk_00c0 == 10) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 47: + if (++ gUnknown_03004828->unk_0110 > 0x15c) + { + gUnknown_03004828->unk_0110 = 0x15c; + gUnknown_03004828->unk_00c4 ++; + } + if (gUnknown_03004828->unk_0110 == 0x148) + gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0); + gSprites[gUnknown_03004828->unk_00bc].callback = sub_804B0E0; + break; + case 48: + gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0); + gUnknown_03004828->unk_00c4 = 50; + break; + + case 50: + if (gSprites[gUnknown_03004828->unk_00bb].animEnded) + { + DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]); + sub_804BBE8(6); + gUnknown_03004828->unk_00c4 ++; + PlaySE(SE_W028); + } + break; + case 51: + if (gUnknown_03004828->unk_011a < 0x400) + { + gUnknown_03004828->unk_011a += 0x34; + } + else + { + gUnknown_03004828->unk_011a = 0x400; + gUnknown_03004828->unk_00c4 ++; + } + gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a; + break; + case 52: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + sub_804BBE8(5); + sub_804BBE8(7); + gUnknown_03004828->unk_00c4 ++; + } + break; + case 61: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 62: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + if (!gPaletteFade.active) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 63: + gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, -0x8, 0); + gSprites[gUnknown_03004828->unk_0103].data3 = 0x4a; + gSprites[gUnknown_03004828->unk_0103].callback = sub_804D80C; + StartSpriteAnim(&gSprites[gUnknown_03004828->unk_0103], 1); + StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_0103], 2); + BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, 0xffff); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, 0xffff); + gUnknown_03004828->unk_00c4 ++; + break; + case 65: + if (gSprites[gUnknown_03004828->unk_0103].callback == SpriteCallbackDummy) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 66: + gSprites[gUnknown_03004828->unk_00b9].pos1.x = 0x78; + gSprites[gUnknown_03004828->unk_00b9].pos1.y = gMonFrontPicCoords[gUnknown_03004828->unk_0122].y_offset + 60; + gSprites[gUnknown_03004828->unk_00b9].pos2.x = 0; + gSprites[gUnknown_03004828->unk_00b9].pos2.y = 0; + CreatePokeballSprite(gUnknown_03004828->unk_00b9, gSprites[gUnknown_03004828->unk_00b9].oam.paletteNum, 0x78, 0x54, 2, 1, 0x14, 0xfffff); + FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_0103]); + DestroySprite(&gSprites[gUnknown_03004828->unk_0103]); + gUnknown_03004828->unk_00c4 ++; + break; + case 67: + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->unk_0034, 2, 15); + gUnknown_03004828->unk_00c4 ++; + gUnknown_03004828->unk_00c0 = 0; + break; + case 68: + if (++ gUnknown_03004828->unk_00c0 == 4) + { + PlayFanfare(BGM_FANFA5); + } + if (gUnknown_03004828->unk_00c0 == 0xf0) + { + gUnknown_03004828->unk_00c4 ++; + ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); + sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->unk_0034, 2, 15); + gUnknown_03004828->unk_00c0 = 0; + } + break; + case 69: // OneHand + if (++ gUnknown_03004828->unk_00c0 == 60) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 70: + sub_804E1DC(); + gUnknown_03004828->unk_00c4 ++; + break; + case 71: + if (gUnknown_03004828->unk_011e) + { + return TRUE; + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_03004828->unk_00c4 ++; + } + break; + case 72: // Only if in-game trade + sub_804BA94(gSpecialVar_0x8005, 0); + gUnknown_03005E94 = sub_804BBCC; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->unk_00b9, gUnknown_020297D8[0]); + gUnknown_03004828->unk_00c4 ++; + break; + case 73: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_03004828->unk_00c4 ++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayBGM(gUnknown_03004828->unk_0124); + SetMainCallback2(c2_exit_to_overworld_2_switch); + sub_804D8E4(); + } + break; + } + return FALSE; +} + void sub_804D588(void) { u16 evoTarget; @@ -3272,7 +4045,7 @@ void sub_804D7AC(struct Sprite *sprite) if (++ sprite->data0 == 23) { DestroySprite(sprite); - gUnknown_03004828->unk_00c4 = 14; + gUnknown_03004828->unk_00c4 = 14; // Resume the master trade animation } } } |