diff options
-rw-r--r-- | asm/trade.s | 2231 | ||||
-rw-r--r-- | src/trade.c | 526 |
2 files changed, 528 insertions, 2229 deletions
diff --git a/asm/trade.s b/asm/trade.s index 0c863b4f1..0fd2e5c57 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -5,2231 +5,6 @@ .text - thumb_func_start sub_805232C -sub_805232C: @ 805232C - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, _08052350 @ =sTradeData - ldr r1, [r0] - adds r1, 0x94 - ldrh r5, [r1] - ldr r1, _08052354 @ =0x0000010b - adds r7, r0, 0 - cmp r5, r1 - bls _08052344 - bl _08053774 -_08052344: - lsls r0, r5, 2 - ldr r1, _08052358 @ =_0805235C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052350: .4byte sTradeData -_08052354: .4byte 0x0000010b -_08052358: .4byte _0805235C - .align 2, 0 -_0805235C: - .4byte _0805278C - .4byte _08052804 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052860 - .4byte _080528A8 - .4byte _0805291C - .4byte _08053774 - .4byte _08052988 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080529AC - .4byte _080529DC - .4byte _080529EE - .4byte _08052A10 - .4byte _08053774 - .4byte _08053774 - .4byte _08052B08 - .4byte _08052B28 - .4byte _08052B94 - .4byte _08052C18 - .4byte _08052C3C - .4byte _08052C88 - .4byte _08052CD4 - .4byte _08052D30 - .4byte _08052D9C - .4byte _08052DB0 - .4byte _08052DC4 - .4byte _08052DD8 - .4byte _08052F00 - .4byte _08052FD0 - .4byte _08053058 - .4byte _080530F8 - .4byte _08053108 - .4byte _08053128 - .4byte _08053774 - .4byte _08053774 - .4byte _0805324C - .4byte _0805325C - .4byte _0805327A - .4byte _08053774 - .4byte _080532A0 - .4byte _080532E0 - .4byte _08053320 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053340 - .4byte _08053368 - .4byte _08053384 - .4byte _080533A4 - .4byte _0805344C - .4byte _08053480 - .4byte _080534CC - .4byte _08053584 - .4byte _08053610 - .4byte _0805365C - .4byte _0805366C - .4byte _08053672 - .4byte _08053698 - .4byte _080536F4 - .4byte _08053718 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052A58 - .4byte _08052A8C - .4byte _08052AE0 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053180 - .4byte _080531E8 - .4byte _08053224 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080535BC - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052BC0 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080535F4 -_0805278C: - ldr r3, _080527F8 @ =gSprites - ldr r0, [r7] - adds r0, 0x8E - 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, [r7] - adds r2, r4, 0 - adds r2, 0x8E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _080527FC @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _08052800 @ =gMonFrontPicCoords - adds r0, r4, 0 - adds r0, 0xF0 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r7] - adds r1, 0xF4 - strh r0, [r1] - movs r0, 0x84 - lsls r0, 1 - bl PlayNewMapMusic - bl _08053774 - .align 2, 0 -_080527F8: .4byte gSprites -_080527FC: .4byte 0x0000ff4c -_08052800: .4byte gMonFrontPicCoords -_08052804: - ldr r5, [r7] - adds r6, r5, 0 - adds r6, 0xE6 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - ble _08052838 - ldr r2, _08052834 @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - 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, [r6] - subs r0, 0x3 - strh r0, [r6] - bl _08053774 - .align 2, 0 -_08052834: .4byte gSprites -_08052838: - ldr r2, _0805285C @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - 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, [r6] - adds r1, r5, 0 - adds r1, 0x94 - movs r0, 0xA - strh r0, [r1] - bl _08053774 - .align 2, 0 -_0805285C: .4byte gSprites -_08052860: - ldr r4, _0805289C @ =gStringVar4 - ldr r1, _080528A0 @ =gText_XWillBeSentToY - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl DrawTextOnTradeWindow - ldr r4, _080528A4 @ =sTradeData - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xF0 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0805288E - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_0805288E: - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xB - bl _080535EA - .align 2, 0 -_0805289C: .4byte gStringVar4 -_080528A0: .4byte gText_XWillBeSentToY -_080528A4: .4byte sTradeData -_080528A8: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x50 - beq _080528B8 - bl _08053774 -_080528B8: - adds r0, r1, 0 - adds r0, 0x8E - ldrb r0, [r0] - ldr r2, _0805290C @ =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, _08052910 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl CreateTradePokeballSprite - ldr r1, [r7] - adds r1, 0xD2 - strb r0, [r1] - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r4, _08052914 @ =gStringVar4 - ldr r1, _08052918 @ =gText_ByeByeVar1 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl DrawTextOnTradeWindow - bl _08053774 - .align 2, 0 -_0805290C: .4byte gSprites -_08052910: .4byte 0x000fffff -_08052914: .4byte gStringVar4 -_08052918: .4byte gText_ByeByeVar1 -_0805291C: - ldr r5, _08052978 @ =gSprites - ldr r0, [r7] - adds r0, 0xD2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r5, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0805297C @ =SpriteCallbackDummy - cmp r1, r0 - beq _0805293C - bl _08053774 -_0805293C: - ldr r0, _08052980 @ =sTradePokeballSpriteTemplate - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0xD3 - strb r0, [r1] - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08052984 @ =SpriteCB_TradePokeball_Outbound - str r1, [r0] - adds r2, 0xD2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052978: .4byte gSprites -_0805297C: .4byte SpriteCallbackDummy -_08052980: .4byte sTradePokeballSpriteTemplate -_08052984: .4byte SpriteCB_TradePokeball_Outbound -_08052988: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080529A8 @ =sTradeData - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x14 - strh r1, [r0] - bl _08053774 - .align 2, 0 -_080529A8: .4byte sTradeData -_080529AC: - ldr r0, _080529D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529BC - bl _08053774 -_080529BC: - movs r0, 0x4 - bl SetTradeSequenceBgGpuRegs - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - bl _08053704 - .align 2, 0 -_080529D8: .4byte gPaletteFade -_080529DC: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _08053700 -_080529EE: - ldr r0, _08052A0C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529FE - bl _08053774 -_080529FE: - ldr r0, [r7] - adds r0, 0x94 - movs r1, 0x17 - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052A0C: .4byte gPaletteFade -_08052A10: - ldr r4, _08052A2C @ =sTradeData - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xEA - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _08052A30 - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _08052A4A - .align 2, 0 -_08052A2C: .4byte sTradeData -_08052A30: - movs r0, 0x1 - bl SetTradeSequenceBgGpuRegs - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0xEA - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - subs r1, 0x56 - movs r0, 0x7C - strh r0, [r1] - str r2, [r3, 0x64] -_08052A4A: - ldr r0, _08052A54 @ =sTradeData - ldr r4, [r0] - bl _0805330C - .align 2, 0 -_08052A54: .4byte sTradeData -_08052A58: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x14 - bhi _08052A68 - bl _08053774 -_08052A68: - movs r0, 0x3 - bl SetTradeSequenceBgGpuRegs - ldr r0, _08052A88 @ =gUnknown_826CF48 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052A88: .4byte gUnknown_826CF48 -_08052A8C: - ldr r2, _08052AD4 @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - 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 _08052AAC - bl _08053774 -_08052AAC: - adds r0, r1, 0 - bl DestroySprite - ldr r1, _08052AD8 @ =0x00000452 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 3 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _08052ADC @ =c3_08054588 - movs r1, 0x5 - bl CreateTask - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052AD4: .4byte gSprites -_08052AD8: .4byte 0x00000452 -_08052ADC: .4byte c3_08054588 -_08052AE0: - ldr r0, _08052B00 @ =c3_08054588 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08052AF0 - bl _08053774 -_08052AF0: - ldr r0, _08052B04 @ =sTradeData - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x1A - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052B00: .4byte c3_08054588 -_08052B04: .4byte sTradeData -_08052B08: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xE0 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - beq _08052B22 - bl _08053774 -_08052B22: - adds r1, r2, 0 - bl _08053708 -_08052B28: - ldr r0, _08052B80 @ =gUnknown_826CE44 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _08052B84 @ =sTradeData - ldr r1, [r4] - adds r1, 0x90 - strb r0, [r1] - ldr r5, _08052B88 @ =gSprites - ldr r0, [r4] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08052B8C @ =SpriteCB_TradeGlowWireless - str r1, [r0] - ldr r0, _08052B90 @ =sGlowBallSpriteTemplate - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _08053708 - .align 2, 0 -_08052B80: .4byte gUnknown_826CE44 -_08052B84: .4byte sTradeData -_08052B88: .4byte gSprites -_08052B8C: .4byte SpriteCB_TradeGlowWireless -_08052B90: .4byte sGlowBallSpriteTemplate -_08052B94: - ldr r2, [r7] - adds r1, r2, 0 - adds r1, 0xE0 - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _08052BAE - subs r1, 0x4C - movs r0, 0xC8 - strh r0, [r1] -_08052BAE: - ldr r1, _08052BBC @ =0x00001241 - movs r0, 0 - bl SetGpuReg - bl _08053774 - .align 2, 0 -_08052BBC: .4byte 0x00001241 -_08052BC0: - ldr r2, _08052C14 @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0x22 - ldrsh r1, [r0, r2] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _08052C06 - bl _08053774 -_08052C06: - adds r1, r4, 0 - adds r1, 0x94 - movs r0, 0x1D - strh r0, [r1] - bl _08053774 - .align 2, 0 -_08052C14: .4byte gSprites -_08052C18: - 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, _08052C38 @ =sTradeData - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x1E - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052C38: .4byte sTradeData -_08052C3C: - ldr r0, _08052C80 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08052C4C - bl _08053774 -_08052C4C: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08052C84 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl SetTradeSequenceBgGpuRegs - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052C80: .4byte gPaletteFade -_08052C84: .4byte gSprites -_08052C88: - 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, _08052CCC @ =sGlowBallSpriteTemplate - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _08052CD0 @ =sTradeData - ldr r1, [r4] - adds r1, 0x90 - 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, 0x91 - strb r0, [r1] - ldr r1, [r4] - bl _08053708 - .align 2, 0 -_08052CCC: .4byte sGlowBallSpriteTemplate -_08052CD0: .4byte sTradeData -_08052CD4: - ldr r0, _08052D24 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08052CF2 - movs r0, 0x28 - bl PlaySE - ldr r0, _08052D28 @ =sTradeData - ldr r1, [r0] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08052CF2: - ldr r3, _08052D2C @ =gSprites - ldr r0, _08052D28 @ =sTradeData - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x90 - 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, 0x91 - 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 _08053774 - .align 2, 0 -_08052D24: .4byte gPaletteFade -_08052D28: .4byte sTradeData -_08052D2C: .4byte gSprites -_08052D30: - ldr r5, _08052D94 @ =gSprites - ldr r4, [r7] - adds r2, r4, 0 - adds r2, 0x90 - 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, 0x91 - 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 r0, 0x26 - ldrsh r1, [r3, r0] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _08052D76 - bl _08053774 -_08052D76: - 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 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _08052D98 @ =c3_0805465C - b _08052FBE - .align 2, 0 -_08052D94: .4byte gSprites -_08052D98: .4byte c3_0805465C -_08052D9C: - ldr r2, _08052DAC @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DAC: .4byte 0x0000ffff -_08052DB0: - ldr r2, _08052DC0 @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DC0: .4byte 0x0000ffff -_08052DC4: - ldr r2, _08052DD4 @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DD4: .4byte 0x0000ffff -_08052DD8: - ldr r5, _08052E44 @ =sTradeData - ldr r0, [r5] - adds r0, 0xF0 - ldrh r0, [r0] - bl IsPokeSpriteNotFlipped - lsls r0, 24 - cmp r0, 0 - bne _08052E50 - ldr r4, _08052E48 @ =gSprites - ldr r2, [r5] - adds r2, 0x8E - 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, _08052E4C @ =gUnknown_826CF88 - 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, 0x8E - 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, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _08052E66 - .align 2, 0 -_08052E44: .4byte sTradeData -_08052E48: .4byte gSprites -_08052E4C: .4byte gUnknown_826CF88 -_08052E50: - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08052EF4 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_08052E66: - ldr r5, _08052EF8 @ =sTradeData - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08052EF4 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x28 - strh r1, [r0, 0x20] - adds r2, 0x8F - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC8 - 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, _08052EFC @ =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, 0x8F - 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 _08053708 - .align 2, 0 -_08052EF4: .4byte gSprites -_08052EF8: .4byte sTradeData -_08052EFC: .4byte 0x0000ffe0 -_08052F00: - ldr r4, _08052FC8 @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - 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, 0x8F - 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 _08052F48 - movs r0, 0x27 - bl PlaySE -_08052F48: - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0x26 - ldrsh r1, [r0, r6] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _08052F68 - bl _08053774 -_08052F68: - adds r0, r2, 0 - adds r0, 0x90 - 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, 0x91 - 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, 0x94 - 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, [r7] - adds r0, 0x8F - 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 r0, _08052FCC @ =sub_8054734 -_08052FBE: - movs r1, 0x5 - bl CreateTask - bl _08053774 - .align 2, 0 -_08052FC8: .4byte gSprites -_08052FCC: .4byte sub_8054734 -_08052FD0: - ldr r4, _08053054 @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x90 - 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, 0x91 - 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 _08053012 - b _08053774 -_08053012: - 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, [r7] - adds r2, r1, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x90 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _08053774 - .align 2, 0 -_08053054: .4byte gSprites -_08053058: - ldr r0, _080530E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08053066 - b _08053774 -_08053066: - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl SetTradeSequenceBgGpuRegs - ldr r0, [r7] - adds r0, 0xE0 - movs r1, 0xA6 - strh r1, [r0] - movs r0, 0x3 - bl SetTradeSequenceBgGpuRegs - ldr r0, [r7] - adds r0, 0xE4 - movs r1, 0xCE - lsls r1, 1 - strh r1, [r0] - ldr r0, _080530E8 @ =gUnknown_826CE44 - movs r4, 0x14 - negs r4, r4 - movs r1, 0x78 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x90 - strb r0, [r1] - ldr r5, _080530EC @ =gSprites - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080530F0 @ =SpriteCB_TradeGlowWireless - str r1, [r0] - ldr r0, _080530F4 @ =sGlowBallSpriteTemplate - movs r1, 0x78 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - b _08053774 - .align 2, 0 -_080530E4: .4byte gPaletteFade -_080530E8: .4byte gUnknown_826CE44 -_080530EC: .4byte gSprites -_080530F0: .4byte SpriteCB_TradeGlowWireless -_080530F4: .4byte sGlowBallSpriteTemplate -_080530F8: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _08053700 -_08053108: - movs r1, 0x92 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _08053124 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08053120 - b _08053774 -_08053120: - b _08053704 - .align 2, 0 -_08053124: .4byte gPaletteFade -_08053128: - ldr r2, _0805317C @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x4 - strh r1, [r0, 0x26] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x4 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r6, 0x26 - ldrsh r1, [r0, r6] - movs r2, 0x22 - ldrsh r0, [r0, r2] - adds r1, r0 - cmp r1, 0x40 - beq _0805316E - b _08053774 -_0805316E: - adds r0, r4, 0 - adds r0, 0x94 - movs r1, 0x90 - strh r1, [r0] - movs r0, 0 - str r0, [r4, 0x64] - b _08053774 - .align 2, 0 -_0805317C: .4byte gSprites -_08053180: - movs r1, 0xB2 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _080531DC @ =sTradeData - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xE0 - ldrh r0, [r1] - adds r0, 0x3 - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r1] - adds r0, 0x3 - strh r0, [r1] - ldr r0, [r2, 0x64] - adds r0, 0x1 - str r0, [r2, 0x64] - cmp r0, 0xA - bne _080531C4 - ldr r0, _080531E0 @ =c3_08054588 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080531E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0xC] -_080531C4: - ldr r1, [r4] - adds r3, r1, 0 - adds r3, 0xE0 - movs r6, 0 - ldrsh r0, [r3, r6] - movs r2, 0x9E - lsls r2, 1 - cmp r0, r2 - bgt _080531D8 - b _08053774 -_080531D8: - strh r2, [r3] - b _08053708 - .align 2, 0 -_080531DC: .4byte sTradeData -_080531E0: .4byte c3_08054588 -_080531E4: .4byte gTasks -_080531E8: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08053220 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r3, [r7] - adds r2, r3, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2] - str r1, [r3, 0x64] - b _08053774 - .align 2, 0 -_08053220: .4byte gSprites -_08053224: - ldr r0, _08053244 @ =c3_08054588 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08053234 - b _08053774 -_08053234: - ldr r0, _08053248 @ =sTradeData - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x94 - movs r0, 0x2E - strh r0, [r1] - str r3, [r2, 0x64] - b _08053774 - .align 2, 0 -_08053244: .4byte c3_08054588 -_08053248: .4byte sTradeData -_0805324C: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - beq _0805325A - b _08053774 -_0805325A: - b _08053708 -_0805325C: - ldr r1, [r7] - adds r5, r1, 0 - adds r5, 0xE0 - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - movs r6, 0xAE - lsls r6, 1 - cmp r0, r6 - bgt _08053276 - b _08053774 -_08053276: - strh r6, [r5] - b _08053708 -_0805327A: - ldr r0, _08053298 @ =gUnknown_826CF30 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _0805329C @ =sTradeData - ldr r1, [r2] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x94 - movs r1, 0x32 - strh r1, [r0] - b _08053774 - .align 2, 0 -_08053298: .4byte gUnknown_826CF30 -_0805329C: .4byte sTradeData -_080532A0: - ldr r2, _080532DC @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - 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 _080532BE - b _08053774 -_080532BE: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl SetTradeSequenceBgGpuRegs - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x98 - bl PlaySE - b _08053774 - .align 2, 0 -_080532DC: .4byte gSprites -_080532E0: - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0xEA - ldrh r3, [r2] - ldr r0, _080532F8 @ =0x000003ff - cmp r3, r0 - bhi _080532FC - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _0805330A - .align 2, 0 -_080532F8: .4byte 0x000003ff -_080532FC: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0805330A: - ldr r4, [r7] -_0805330C: - adds r0, r4, 0 - adds r0, 0xEA - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - adds r4, 0xE8 - strh r0, [r4] - b _08053774 -_08053320: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0805333C @ =sTradeData - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x3C - strh r1, [r0] - b _08053774 - .align 2, 0 -_0805333C: .4byte sTradeData -_08053340: - ldr r4, _08053364 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805334E - b _08053774 -_0805334E: - movs r0, 0x5 - bl SetTradeSequenceBgGpuRegs - movs r0, 0x7 - bl SetTradeSequenceBgGpuRegs - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - b _08053704 - .align 2, 0 -_08053364: .4byte gPaletteFade -_08053368: - ldr r2, _08053380 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _08053700 - .align 2, 0 -_08053380: .4byte gPaletteFade -_08053384: - movs r1, 0xA2 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080533A0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805339C - b _08053774 -_0805339C: - b _08053704 - .align 2, 0 -_080533A0: .4byte gPaletteFade -_080533A4: - ldr r0, _08053438 @ =sTradePokeballSpriteTemplate - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r5, _0805343C @ =sTradeData - ldr r1, [r5] - adds r1, 0xD3 - movs r6, 0 - strb r0, [r1] - ldr r4, _08053440 @ =gSprites - ldr r2, [r5] - adds r2, 0xD3 - 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, _08053444 @ =SpriteCB_TradePokeball_Inbound - 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, [r5] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r5] - adds r0, 0xD3 - 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, _08053448 @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - str r6, [r2, 0x64] - b _08053774 - .align 2, 0 -_08053438: .4byte sTradePokeballSpriteTemplate -_0805343C: .4byte sTradeData -_08053440: .4byte gSprites -_08053444: .4byte SpriteCB_TradePokeball_Inbound -_08053448: .4byte 0x0000ffff -_0805344C: - ldr r2, _08053478 @ =gSprites - ldr r0, [r7] - adds r0, 0xD3 - 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, _0805347C @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r7] - b _08053708 - .align 2, 0 -_08053478: .4byte gSprites -_0805347C: .4byte 0x0000ffff -_08053480: - ldr r2, _080534BC @ =gSprites - ldr r3, [r7] - adds r0, r3, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080534C0 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0805349E - b _08053774 -_0805349E: - adds r0, r3, 0 - adds r0, 0xF2 - ldrh r2, [r0] - lsls r0, r2, 3 - ldr r1, _080534C4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080534C8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x10] - ldr r3, [r3, 0x6C] - bl HandleLoadSpecialPokePic - ldr r1, [r7] - b _08053708 - .align 2, 0 -_080534BC: .4byte gSprites -_080534C0: .4byte SpriteCallbackDummy -_080534C4: .4byte gMonFrontPicTable -_080534C8: .4byte gMonSpritesGfxPtr -_080534CC: - ldr r4, _08053578 @ =gSprites - ldr r2, [r7] - adds r6, r2, 0 - adds r6, 0x8F - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r5, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r3, _0805357C @ =gMonFrontPicCoords - adds r2, 0xF2 - ldrh r0, [r2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x24] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x26] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAnim - ldr r0, [r7] - adds r0, 0x8F - ldrb r0, [r0] - 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, _08053580 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSpriteToReleaseMon - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r7] - b _08053708 - .align 2, 0 -_08053578: .4byte gSprites -_0805357C: .4byte gMonFrontPicCoords -_08053580: .4byte 0x000fffff -_08053584: - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _080535B0 @ =gStringVar4 - ldr r1, _080535B4 @ =gText_XSentOverY - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl DrawTextOnTradeWindow - ldr r0, _080535B8 @ =sTradeData - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xA7 - b _080535EA - .align 2, 0 -_080535B0: .4byte gStringVar4 -_080535B4: .4byte gText_XSentOverY -_080535B8: .4byte sTradeData -_080535BC: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bhi _080535CA - b _08053774 -_080535CA: - adds r2, r1, 0 - adds r2, 0xF2 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _080535E0 - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_080535E0: - ldr r3, [r7] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - ldr r0, _080535F0 @ =0x0000010b -_080535EA: - strh r0, [r1] - str r2, [r3, 0x64] - b _08053774 - .align 2, 0 -_080535F0: .4byte 0x0000010b -_080535F4: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _08053600 - b _08053774 -_08053600: - ldr r0, _0805360C @ =sTradeData - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x44 - strh r1, [r0] - b _08053774 - .align 2, 0 -_0805360C: .4byte sTradeData -_08053610: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - bne _08053622 - ldr r0, _08053650 @ =0x00000103 - bl PlayFanfare -_08053622: - ldr r1, [r7] - ldr r0, [r1, 0x64] - cmp r0, 0xFA - beq _0805362C - b _08053774 -_0805362C: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - ldr r4, _08053654 @ =gStringVar4 - ldr r1, _08053658 @ =gText_TakeGoodCareOfX - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl DrawTextOnTradeWindow - ldr r0, [r7] - str r5, [r0, 0x64] - b _08053774 - .align 2, 0 -_08053650: .4byte 0x00000103 -_08053654: .4byte gStringVar4 -_08053658: .4byte gText_TakeGoodCareOfX -_0805365C: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - beq _0805366A - b _08053774 -_0805366A: - b _08053708 -_0805366C: - bl CheckPartnersMonForRibbons - b _08053704 -_08053672: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xEE - ldrb r0, [r0] - cmp r0, 0 - beq _08053682 - movs r0, 0x1 - b _08053776 -_08053682: - ldr r0, _08053694 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08053774 - adds r1, r2, 0 - b _08053708 - .align 2, 0 -_08053694: .4byte gMain -_08053698: - ldr r0, _080536DC @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl TradeMons - ldr r1, _080536E0 @ =gCB2_AfterEvolution - ldr r0, _080536E4 @ =CB2_RunTradeAnim_InGameTrade - str r0, [r1] - ldr r7, _080536E8 @ =gSelectedTradeMonPositions - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080536EC @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08053704 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _080536F0 @ =sTradeData - ldr r1, [r1] - adds r1, 0x8F - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _08053704 - .align 2, 0 -_080536DC: .4byte gSpecialVar_0x8005 -_080536E0: .4byte gCB2_AfterEvolution -_080536E4: .4byte CB2_RunTradeAnim_InGameTrade -_080536E8: .4byte gSelectedTradeMonPositions -_080536EC: .4byte gPlayerParty -_080536F0: .4byte sTradeData -_080536F4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_08053700: - bl BeginNormalPaletteFade -_08053704: - ldr r0, _08053714 @ =sTradeData - ldr r1, [r0] -_08053708: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08053774 - .align 2, 0 -_08053714: .4byte sTradeData -_08053718: - ldr r0, _08053780 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08053774 - ldr r0, [r7] - adds r0, 0xF4 - ldrh r0, [r0] - bl PlayNewMapMusic - ldr r0, [r7] - cmp r0, 0 - beq _08053766 - bl FreeAllWindowBuffers - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - bl FreeMonSpritesGfx - ldr r0, [r7] - bl Free - str r4, [r7] -_08053766: - ldr r0, _08053784 @ =CB2_ReturnToField - bl SetMainCallback2 - bl BufferInGameTradeMonName - bl HelpSystem_Enable -_08053774: - movs r0, 0 -_08053776: - add sp, 0x10 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08053780: .4byte gPaletteFade -_08053784: .4byte CB2_ReturnToField - thumb_func_end sub_805232C - thumb_func_start sub_8053788 sub_8053788: @ 8053788 push {r4-r7,lr} @@ -3856,8 +1631,8 @@ _08054580: .4byte sTradeData _08054584: .4byte 0x00000105 thumb_func_end DrawTextOnTradeWindow - thumb_func_start c3_08054588 -c3_08054588: @ 8054588 + thumb_func_start Task_AnimateWirelessSignal +Task_AnimateWirelessSignal: @ 8054588 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 @@ -3964,7 +1739,7 @@ _08054656: pop {r4,r5} pop {r0} bx r0 - thumb_func_end c3_08054588 + thumb_func_end Task_AnimateWirelessSignal thumb_func_start c3_0805465C c3_0805465C: @ 805465C diff --git a/src/trade.c b/src/trade.c index a21781753..40be0774b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -208,6 +208,9 @@ void CheckPartnersMonForRibbons(void); void BufferInGameTradeMonName(void); void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite); void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite); +void Task_AnimateWirelessSignal(u8 taskId); +void c3_0805465C(u8 taskId); +void sub_8054734(u8 taskId); extern const u16 gUnknown_8260C30[]; extern const u16 gUnknown_8261430[]; @@ -262,6 +265,7 @@ extern const struct SpriteTemplate sGameLinkCableEndSpriteTemplate; extern const struct SpriteTemplate gUnknown_826CE44; extern const struct SpriteTemplate sGlowBallSpriteTemplate; extern const union AffineAnimCmd *const gUnknown_826CF88[]; +extern const struct SpriteTemplate gUnknown_826CF48; void sub_804C600(void) { @@ -4749,7 +4753,6 @@ bool8 sub_8050F14(void) return sub_805232C(); } - bool8 sub_8050F3C(void) { u16 evoTarget; @@ -5246,3 +5249,524 @@ bool8 sub_8050F3C(void) } return FALSE; } + +bool8 sub_805232C(void) +{ + u16 evoTarget; + + switch (sTradeData->state) + { + case 0: + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = -180; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[sTradeData->tradeSpecies[0]].y_offset; + sTradeData->state++; + sTradeData->cachedMapMusic = GetCurrentMapMusic(); + PlayNewMapMusic(MUS_SHINKA); + break; + case 1: + if (sTradeData->bg2hofs > 0) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x += 3; + sTradeData->bg2hofs -= 3; + } + else + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = 0; + sTradeData->bg2hofs = 0; + sTradeData->state = 10; + } + break; + case 10: + StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + + if (sTradeData->tradeSpecies[0] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[0], 0); + } + + sTradeData->state = 11; + sTradeData->timer = 0; + break; + case 11: + if (++sTradeData->timer == 80) + { + sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff); + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1); + DrawTextOnTradeWindow(0, gStringVar4, 0); + } + break; + case 12: + if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy) + { + sTradeData->unk_D3 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0); + gSprites[sTradeData->unk_D3].callback = SpriteCB_TradePokeball_Outbound; + DestroySprite(&gSprites[sTradeData->pokeballSpriteId]); + sTradeData->state++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 20; + break; + case 20: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(4); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + CopyWindowToVram(0, 3); + sTradeData->state++; + } + break; + case 21: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 22: + if (!gPaletteFade.active) + { + sTradeData->state = 23; + } + break; + case 23: + if (sTradeData->unk_EA > 0x100) + { + sTradeData->unk_EA -= 0x34; + } + else + { + SetTradeSequenceBgGpuRegs(1); + sTradeData->unk_EA = 0x80; + sTradeData->state = 124; + sTradeData->timer = 0; + } + sTradeData->sXY = 0x8000 / sTradeData->unk_EA; + break; + case 124: + if (++sTradeData->timer > 20) + { + SetTradeSequenceBgGpuRegs(3); + sTradeData->unk_91 = CreateSprite(&gUnknown_826CF48, 120, 80, 0); + sTradeData->state++; + } + break; + case 125: + if (gSprites[sTradeData->unk_91].animEnded) + { + DestroySprite(&gSprites[sTradeData->unk_91]); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | + BLDCNT_TGT1_OBJ | + BLDCNT_EFFECT_BLEND | + BLDCNT_TGT2_BG2); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4)); + CreateTask(Task_AnimateWirelessSignal, 5); + sTradeData->state++; + } + break; + case 126: + if (!FuncIsActiveTask(Task_AnimateWirelessSignal)) + { + sTradeData->state = 26; + } + break; + case 26: + if (--sTradeData->bg1vofs == 316) + { + sTradeData->state++; + } + break; + case 27: + sTradeData->unk_90 = CreateSprite(&gUnknown_826CE44, 120, 80, 3); + gSprites[sTradeData->unk_90].callback = SpriteCB_TradeGlowWireless; + sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 120, 80, 0); + StartSpriteAnim(&gSprites[sTradeData->unk_91], 1); + sTradeData->state++; + break; + case 28: + if ((sTradeData->bg1vofs -= 3) == 166) + { + sTradeData->state = 200; + } + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + break; + case 200: + gSprites[sTradeData->unk_90].pos1.y -= 2; + gSprites[sTradeData->unk_91].pos1.y -= 2; + if (gSprites[sTradeData->unk_90].pos1.y < -8) + { + sTradeData->state = 29; + } + break; + case 29: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[sTradeData->unk_90]); + DestroySprite(&gSprites[sTradeData->unk_91]); + SetTradeSequenceBgGpuRegs(2); + sTradeData->state++; + } + break; + case 31: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->unk_90 = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0); + sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0); + sTradeData->state++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + sTradeData->state++; + } + gSprites[sTradeData->unk_90].pos2.y -= 3; + gSprites[sTradeData->unk_91].pos2.y += 3; + break; + case 33: + gSprites[sTradeData->unk_90].pos2.y -= 3; + gSprites[sTradeData->unk_91].pos2.y += 3; + if (gSprites[sTradeData->unk_90].pos2.y <= -90) + { + gSprites[sTradeData->unk_90].data[1] = 1; + gSprites[sTradeData->unk_91].data[1] = 1; + sTradeData->state++; + CreateTask(c3_0805465C, 5); + } + break; + case 34: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 35: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 36: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 37: + if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0])) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = gUnknown_826CF88; + gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.x = 40; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 200; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.y = 192; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = -32; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = FALSE; + sTradeData->state++; + break; + case 38: + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y -= 3; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y += 3; + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y >= -163) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -222) + { + gSprites[sTradeData->unk_90].data[1] = 0; + gSprites[sTradeData->unk_91].data[1] = 0; + sTradeData->state++; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = TRUE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = TRUE; + CreateTask(sub_8054734, 5); + } + break; + case 39: + gSprites[sTradeData->unk_90].pos2.y -= 3; + gSprites[sTradeData->unk_91].pos2.y += 3; + if (gSprites[sTradeData->unk_90].pos2.y <= -222) + { + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state++; + DestroySprite(&gSprites[sTradeData->unk_90]); + DestroySprite(&gSprites[sTradeData->unk_91]); + } + break; + case 40: + if (!gPaletteFade.active) + { + sTradeData->state++; + SetTradeSequenceBgGpuRegs(1); + sTradeData->bg1vofs = 166; + SetTradeSequenceBgGpuRegs(3); + sTradeData->bg2vofs = 412; + sTradeData->unk_90 = CreateSprite(&gUnknown_826CE44, 120, -20, 3); + gSprites[sTradeData->unk_90].callback = SpriteCB_TradeGlowWireless; + sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 120, -20, 0); + StartSpriteAnim(&gSprites[sTradeData->unk_91], 1); + } + break; + case 41: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 42: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 43: + gSprites[sTradeData->unk_90].pos2.y += 4; + gSprites[sTradeData->unk_91].pos2.y += 4; + if (gSprites[sTradeData->unk_90].pos2.y + gSprites[sTradeData->unk_90].pos1.y == 64) + { + sTradeData->state = 144; + sTradeData->timer = 0; + } + break; + case 144: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + sTradeData->bg1vofs += 3; + sTradeData->bg2vofs += 3; + if (++sTradeData->timer == 10) + { + u8 taskId = CreateTask(Task_AnimateWirelessSignal, 5); + gTasks[taskId].data[2] = TRUE; + } + if (sTradeData->bg1vofs > 316) + { + sTradeData->bg1vofs = 316; + sTradeData->state++; + } + break; + case 145: + DestroySprite(&gSprites[sTradeData->unk_90]); + DestroySprite(&gSprites[sTradeData->unk_91]); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 146: + if (!FuncIsActiveTask(Task_AnimateWirelessSignal)) + { + sTradeData->state = 46; + sTradeData->timer = 0; + } + break; + case 46: + if (++sTradeData->timer == 10) + { + sTradeData->state++; + } + break; + case 47: + if (++sTradeData->bg1vofs > 348) + { + sTradeData->bg1vofs = 348; + sTradeData->state++; + } + break; + case 48: + sTradeData->unk_91 = CreateSprite(&gUnknown_826CF30, 120, 80, 0); + sTradeData->state = 50; + break; + case 50: + if (gSprites[sTradeData->unk_91].animEnded) + { + DestroySprite(&gSprites[sTradeData->unk_91]); + SetTradeSequenceBgGpuRegs(6); + sTradeData->state++; + PlaySE(SE_W028); + } + break; + case 51: + if (sTradeData->unk_EA < 0x400) + { + sTradeData->unk_EA += 0x34; + } + else + { + sTradeData->unk_EA = 0x400; + sTradeData->state++; + } + sTradeData->sXY = 0x8000 / sTradeData->unk_EA; + break; + case 52: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(5); + SetTradeSequenceBgGpuRegs(7); + gPaletteFade.bufferTransferDisabled = TRUE; + sTradeData->state++; + } + break; + case 61: + gPaletteFade.bufferTransferDisabled = FALSE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 62: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 63: + sTradeData->unk_D3 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0); + gSprites[sTradeData->unk_D3].data[3] = 74; + gSprites[sTradeData->unk_D3].callback = SpriteCB_TradePokeball_Inbound; + StartSpriteAnim(&gSprites[sTradeData->unk_D3], 1); + StartSpriteAffineAnim(&gSprites[sTradeData->unk_D3], 2); + BlendPalettes(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 16, RGB_WHITEALPHA); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 65: + if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy) + { + HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->tradeSpecies[1]], gMonSpritesGfxPtr->sprites[3], sTradeData->tradeSpecies[1], sTradeData->monPersonalities[1]); + sTradeData->state++; + } + break; + case 66: + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 120; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[sTradeData->tradeSpecies[1]].y_offset + 60; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.x = 0; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y = 0; + StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[1], gSprites[sTradeData->pokePicSpriteIdxs[1]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF); + FreeSpriteOamMatrix(&gSprites[sTradeData->unk_D3]); + DestroySprite(&gSprites[sTradeData->unk_D3]); + sTradeData->state++; + break; + case 67: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG0_ON | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + StringExpandPlaceholders(gStringVar4, gText_XSentOverY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->state = 167; + sTradeData->timer = 0; + break; + // 167 and 267 are extra cases added in for animations + case 167: + if (++sTradeData->timer > 60) + { + if (sTradeData->tradeSpecies[1] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[1], 0); + } + sTradeData->state = 267; + sTradeData->timer = 0; + } + break; + case 267: + if (IsCryFinished()) + { + sTradeData->state = 68; + } + break; + case 68: + if (++sTradeData->timer == 10) + { + PlayFanfare(MUS_FANFA5); + } + if (sTradeData->timer == 250) + { + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_TakeGoodCareOfX); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->timer = 0; + } + break; + case 69: + if (++sTradeData->timer == 60) + { + sTradeData->state++; + } + break; + case 70: + CheckPartnersMonForRibbons(); + sTradeData->state++; + break; + case 71: + if (sTradeData->isLinkTrade) + { + return TRUE; + } + else if (JOY_NEW(A_BUTTON)) + { + sTradeData->state++; + } + break; + case 72: // Only if in-game trade + TradeMons(gSpecialVar_0x8005, 0); + gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + { + TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]); + } + sTradeData->state++; + break; + case 73: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayNewMapMusic(sTradeData->cachedMapMusic); + if (sTradeData) + { + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(3)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(0)); + FreeMonSpritesGfx(); + FREE_AND_SET_NULL(sTradeData); + } + SetMainCallback2(CB2_ReturnToField); + BufferInGameTradeMonName(); + HelpSystem_Enable(); + } + break; + } + return FALSE; +} |