ref: 52add272c6bca00d2ea827ef7fa4611a4bc41b47
parent: ec76703936ae690411a29c4f6ff11eef41ebdfd3
parent: 0996a964bdb597b9cd0c087fde5926980eac900a
author: yenatch <yenatch@gmail.com>
date: Sat Mar 14 15:29:24 EDT 2015
Merge pull request #88 from YamaArashi/master commented trade amim functions
--- a/engine/cable_club.asm
+++ b/engine/cable_club.asm
@@ -840,10 +840,10 @@
ld a, [hSerialConnectionStatus]
cp USING_EXTERNAL_CLOCK
jr z, .usingExternalClock
- predef Func_410e2
+ predef InternalClockTradeAnim
jr .tradeCompleted
.usingExternalClock
- predef Func_410f3
+ predef ExternalClockTradeAnim
.tradeCompleted
callab TryEvolvingMon
call ClearScreen
--- a/engine/in_game_trades.asm
+++ b/engine/in_game_trades.asm
@@ -122,7 +122,7 @@
push af
call LoadHpBarAndStatusTilePatterns
call InGameTrade_PrepareTradeData
- predef Func_410e2
+ predef InternalClockTradeAnim
pop af
ld [W_CURENEMYLVL],a
pop af
--- a/engine/menu/naming_screen.asm
+++ b/engine/menu/naming_screen.asm
@@ -470,9 +470,9 @@
dec a
jr z, .notNickname
ld a, [wcf91]
- ld [wcd5d], a
+ ld [wMonPartySpriteSpecies], a
push af
- callba WriteMonPartySpriteOAMByMonID
+ callba WriteMonPartySpriteOAMBySpecies
pop af
ld [wd11e], a
call GetMonName
--- a/engine/mon_party_sprites.asm
+++ b/engine/mon_party_sprites.asm
@@ -322,11 +322,12 @@
pop hl
ret
-WriteMonPartySpriteOAMByMonID: ; 71882 (1c:5882)
-; Write OAM blocks for mon ID in [wcd5d].
+WriteMonPartySpriteOAMBySpecies: ; 71882 (1c:5882)
+; Write OAM blocks for the party sprite of the species in
+; [wMonPartySpriteSpecies].
xor a
ld [hPartyMonIndex], a
- ld a, [wcd5d]
+ ld a, [wMonPartySpriteSpecies]
call GetPartyMonSpriteID
ld [wcd5b], a
jr WriteMonPartySpriteOAM
@@ -334,7 +335,7 @@
UnusedPartyMonSpriteFunction: ; 71890 (1c:5890)
; This function is unused and doesn't appear to do anything useful. It looks
; like it may have been intended to load the tile patterns and OAM data for
-; the mon party sprite associated with the mon ID in a.
+; the mon party sprite associated with the species in [wcf91].
; However, its calculations are off and it loads garbage data.
ld a, [wcf91]
call GetPartyMonSpriteID
@@ -346,8 +347,8 @@
ld hl, vSprites + $40
call .LoadTilePatterns
xor a
- ld [wcd5d], a
- jr WriteMonPartySpriteOAMByMonID
+ ld [wMonPartySpriteSpecies], a
+ jr WriteMonPartySpriteOAMBySpecies
.LoadTilePatterns ; 718ac (1c:58ac)
push hl
--- a/engine/predefs.asm
+++ b/engine/predefs.asm
@@ -99,7 +99,7 @@
add_predef InitOpponent
add_predef CableClub_Run
add_predef DrawBadges
- add_predef Func_410f3
+ add_predef ExternalClockTradeAnim
add_predef BattleTransition
add_predef CopyTileIDsFromList
add_predef PlayIntro
@@ -108,7 +108,7 @@
add_predef GetTileAndCoordsInFrontOfPlayer
add_predef StatusScreen
add_predef StatusScreen2
- add_predef Func_410e2
+ add_predef InternalClockTradeAnim
add_predef TrainerEngage
add_predef IndexToPokedex
add_predef Predef3B; 3B display pic?
--- a/engine/trade.asm
+++ b/engine/trade.asm
@@ -1,19 +1,23 @@
-Func_410e2: ; 410e2 (10:50e2)
+InternalClockTradeAnim: ; 410e2 (10:50e2)
+; Do the trading animation with the player's gameboy on the left.
+; In-game trades and internally clocked link cable trades use this.
ld a, [wTradedPlayerMonSpecies]
- ld [wcd5e], a
+ ld [wLeftGBMonSpecies], a
ld a, [wTradedEnemyMonSpecies]
- ld [wcd5f], a
- ld de, PointerIDs_41138
- jr Func_41102
+ ld [wRightGBMonSpecies], a
+ ld de, InternalClockTradeFuncSequence
+ jr TradeAnimCommon
-Func_410f3: ; 410f3 (10:50f3)
+ExternalClockTradeAnim: ; 410f3 (10:50f3)
+; Do the trading animation with the player's gameboy on the right.
+; Externally clocked link cable trades use this.
ld a, [wTradedEnemyMonSpecies]
- ld [wcd5e], a
+ ld [wLeftGBMonSpecies], a
ld a, [wTrainerSpriteOffset]
- ld [wcd5f], a
- ld de, PointerIDs_41149
+ ld [wRightGBMonSpecies], a
+ ld de, ExternalClockTradeFuncSequence
-Func_41102: ; 41102 (10:5102)
+TradeAnimCommon: ; 41102 (10:5102)
ld a, [W_OPTIONS]
push af
ld a, [hSCY]
@@ -25,14 +29,14 @@
ld [hSCY], a
ld [hSCX], a
push de
-.asm_41115
+.loop
pop de
ld a, [de]
cp $ff
- jr z, .asm_4112d
+ jr z, .done
inc de
push de
- ld hl, PointerTable_4115f
+ ld hl, TradeFuncPointerTable
add a
ld c, a
ld b, $0
@@ -40,10 +44,10 @@
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, .asm_41115
+ ld de, .loop
push de
- jp [hl]
-.asm_4112d
+ jp [hl] ; call trade func, which will return to the top of the loop
+.done
pop af
ld [hSCX], a
pop af
@@ -52,32 +56,81 @@
ld [W_OPTIONS], a
ret
-; these bytes refer to the $00th through $10th pointer of PointerTable_4115f
-PointerIDs_41138: ; 41138 (10:5138)
- db $00,$01,$02,$03,$05,$07,$08,$09,$0A,$0B,$06,$08,$02,$04,$07,$0E,$FF
+addtradefunc: MACRO
+\1TradeFunc::
+ dw \1
+ ENDM
-PointerIDs_41149: ; 41149 (10:5149)
- db $00,$08,$0D,$0B,$10,$05,$10,$08,$02,$04,$0F,$01,$02,$03,$10,$06,$10,$07,$08,$09,$0E,$FF
+tradefunc: MACRO
+ db (\1TradeFunc - TradeFuncPointerTable) / 2
+ ENDM
-PointerTable_4115f: ; 4115f (10:515f)
- dw LoadTradingGFXAndMonNames
- dw Trade_ShowPlayerMon
- dw Trade_DrawOpenEndOfLinkCable
- dw Trade_AnimateBallEnteringLinkCable
- dw Trade_ShowEnemyMon
- dw Func_41376
- dw Func_413c6
- dw Trade_Delay100
- dw Func_415c8
- dw PrintTradeWentToText
- dw PrintTradeForSendsText
- dw PrintTradeFarewellText
- dw PrintTradeTakeCareText
- dw PrintTradeWillTradeText
- dw Func_4123b
- dw Func_415df
- dw Trade_SwapNames
+; The functions in the sequences below are executed in order by TradeFuncCommon.
+; They are from opposite perspectives. The external clock one makes use of
+; Trade_SwapNames to swap the player and enemy names for some functions.
+InternalClockTradeFuncSequence: ; 41138 (10:5138)
+ tradefunc LoadTradingGFXAndMonNames
+ tradefunc Trade_ShowPlayerMon
+ tradefunc Trade_DrawOpenEndOfLinkCable
+ tradefunc Trade_AnimateBallEnteringLinkCable
+ tradefunc Trade_AnimLeftToRight
+ tradefunc Trade_Delay100
+ tradefunc Trade_ShowClearedWindow
+ tradefunc PrintTradeWentToText
+ tradefunc PrintTradeForSendsText
+ tradefunc PrintTradeFarewellText
+ tradefunc Trade_AnimRightToLeft
+ tradefunc Trade_ShowClearedWindow
+ tradefunc Trade_DrawOpenEndOfLinkCable
+ tradefunc Trade_ShowEnemyMon
+ tradefunc Trade_Delay100
+ tradefunc Trade_Cleanup
+ db $FF
+
+ExternalClockTradeFuncSequence: ; 41149 (10:5149)
+ tradefunc LoadTradingGFXAndMonNames
+ tradefunc Trade_ShowClearedWindow
+ tradefunc PrintTradeWillTradeText
+ tradefunc PrintTradeFarewellText
+ tradefunc Trade_SwapNames
+ tradefunc Trade_AnimLeftToRight
+ tradefunc Trade_SwapNames
+ tradefunc Trade_ShowClearedWindow
+ tradefunc Trade_DrawOpenEndOfLinkCable
+ tradefunc Trade_ShowEnemyMon
+ tradefunc Trade_SlideTextBoxOffScreen
+ tradefunc Trade_ShowPlayerMon
+ tradefunc Trade_DrawOpenEndOfLinkCable
+ tradefunc Trade_AnimateBallEnteringLinkCable
+ tradefunc Trade_SwapNames
+ tradefunc Trade_AnimRightToLeft
+ tradefunc Trade_SwapNames
+ tradefunc Trade_Delay100
+ tradefunc Trade_ShowClearedWindow
+ tradefunc PrintTradeWentToText
+ tradefunc Trade_Cleanup
+ db $FF
+
+TradeFuncPointerTable: ; 4115f (10:515f)
+ addtradefunc LoadTradingGFXAndMonNames
+ addtradefunc Trade_ShowPlayerMon
+ addtradefunc Trade_DrawOpenEndOfLinkCable
+ addtradefunc Trade_AnimateBallEnteringLinkCable
+ addtradefunc Trade_ShowEnemyMon
+ addtradefunc Trade_AnimLeftToRight
+ addtradefunc Trade_AnimRightToLeft
+ addtradefunc Trade_Delay100
+ addtradefunc Trade_ShowClearedWindow
+ addtradefunc PrintTradeWentToText
+ addtradefunc PrintTradeForSendsText
+ addtradefunc PrintTradeFarewellText
+ addtradefunc PrintTradeTakeCareText
+ addtradefunc PrintTradeWillTradeText
+ addtradefunc Trade_Cleanup
+ addtradefunc Trade_SlideTextBoxOffScreen
+ addtradefunc Trade_SwapNames
+
Trade_Delay100: ; 41181 (10:5181)
ld c, 100
jp DelayFrames
@@ -121,13 +174,13 @@
ld a, $ff
ld [wUpdateSpritesEnabled], a
ld hl, wd730
- set 6, [hl]
+ set 6, [hl] ; turn on instant text printing
ld a, [wOnSGB]
and a
- ld a, $e4
- jr z, .asm_411e5
- ld a, $f0
-.asm_411e5
+ ld a, $e4 ; non-SGB OBP0
+ jr z, .next
+ ld a, $f0 ; SGB OBP0
+.next
ld [rOBP0], a
call EnableLCD
xor a
@@ -143,7 +196,7 @@
ld [wd11e], a
jp GetMonName
-Func_4120b: ; 4120b (10:520b)
+Trade_LoadMonPartySpriteGfx: ; 4120b (10:520b)
ld a, %11010000
ld [rOBP1], a
ld b, BANK(LoadMonPartySpriteGfx)
@@ -164,11 +217,11 @@
ld bc, 11
jp CopyData
-Func_4123b: ; 4123b (10:523b)
+Trade_Cleanup: ; 4123b (10:523b)
xor a
call LoadGBPal
ld hl, wd730
- res 6, [hl]
+ res 6, [hl] ; turn off instant text printing
ret
Trade_ShowPlayerMon: ; 41245 (10:5245)
@@ -186,7 +239,7 @@
ld c, 10
call TextBoxBorder
call Trade_PrintPlayerMonInfoText
- ld b, $98
+ ld b, vBGMap0 / $100
call CopyScreenTileBufferToVRAM
call ClearScreen
ld a, [wTradedPlayerMonSpecies]
@@ -215,12 +268,12 @@
Trade_DrawOpenEndOfLinkCable: ; 41298 (10:5298)
call Trade_ClearTileMap
- ld b, $98
+ ld b, vBGMap0 / $100
call CopyScreenTileBufferToVRAM
ld b, $8
call GoPAL_SET
ld hl, vBGMap1 + $8c
- call Trade_RedrawRows4And5
+ call Trade_CopyCableTilesOffScreen
ld a, $a0
ld [hSCX], a
call DelayFrame
@@ -297,7 +350,7 @@
Trade_ShowEnemyMon: ; 41336 (10:5336)
ld a, TRADE_BALL_TILT_ANIM
call Trade_ShowAnimation
- call Func_415c8
+ call Trade_ShowClearedWindow
hlCoord 4, 10
ld b, 6
ld c, 10
@@ -320,10 +373,11 @@
call ClearScreenArea
jp PrintTradeTakeCareText
-Func_41376: ; 41376 (10:5376)
- call Func_41411
+Trade_AnimLeftToRight: ; 41376 (10:5376)
+; Animates the mon moving from the left GB to the right one.
+ call Trade_InitGameboyTransferGfx
ld a, $1
- ld [wd08a], a
+ ld [wTradedMonMovingRight], a
ld a, $e4
ld [rOBP0], a
ld a, $54
@@ -330,67 +384,69 @@
ld [W_BASECOORDX], a
ld a, $1c
ld [W_BASECOORDY], a
- ld a, [wcd5e]
- ld [wcd5d], a
- call Func_41505
- call Func_4142d
+ ld a, [wLeftGBMonSpecies]
+ ld [wMonPartySpriteSpecies], a
+ call Trade_WriteCircledMonOAM
+ call Trade_DrawLeftGameboy
call Trade_CopyTileMapToVRAM
- call Func_4149f
+ call Trade_DrawCableAcrossScreen
ld hl, vBGMap1 + $8c
- call Trade_RedrawRows4And5
+ call Trade_CopyCableTilesOffScreen
ld b, $6
- call Func_414c5
+ call Trade_AnimMonMoveHorizontal
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
- call Func_4149f
+ call Trade_DrawCableAcrossScreen
ld b, $4
- call Func_414c5
- call Func_4145c
+ call Trade_AnimMonMoveHorizontal
+ call Trade_DrawRightGameboy
ld b, $6
- call Func_414c5
+ call Trade_AnimMonMoveHorizontal
xor a
ld [H_AUTOBGTRANSFERENABLED], a
- call Func_41525
+ call Trade_AnimMonMoveVertical
jp ClearSprites
-Func_413c6: ; 413c6 (10:53c6)
- call Func_41411
+Trade_AnimRightToLeft: ; 413c6 (10:53c6)
+; Animates the mon moving from the right GB to the left one.
+ call Trade_InitGameboyTransferGfx
xor a
- ld [wd08a], a
+ ld [wTradedMonMovingRight], a
ld a, $64
ld [W_BASECOORDX], a
ld a, $44
ld [W_BASECOORDY], a
- ld a, [wcd5f]
- ld [wcd5d], a
- call Func_41505
- call Func_4145c
+ ld a, [wRightGBMonSpecies]
+ ld [wMonPartySpriteSpecies], a
+ call Trade_WriteCircledMonOAM
+ call Trade_DrawRightGameboy
call Trade_CopyTileMapToVRAM
- call Func_4149f
+ call Trade_DrawCableAcrossScreen
ld hl, vBGMap1 + $94
- call Trade_RedrawRows4And5
- call Func_41525
+ call Trade_CopyCableTilesOffScreen
+ call Trade_AnimMonMoveVertical
ld b, $6
- call Func_414c5
+ call Trade_AnimMonMoveHorizontal
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
- call Func_4149f
+ call Trade_DrawCableAcrossScreen
ld b, $4
- call Func_414c5
- call Func_4142d
+ call Trade_AnimMonMoveHorizontal
+ call Trade_DrawLeftGameboy
ld b, $6
- call Func_414c5
+ call Trade_AnimMonMoveHorizontal
xor a
ld [H_AUTOBGTRANSFERENABLED], a
jp ClearSprites
-Func_41411: ; 41411 (10:5411)
+Trade_InitGameboyTransferGfx: ; 41411 (10:5411)
+; Initialises the graphics for showing a mon moving between gameboys.
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call ClearScreen
xor a
ld [H_AUTOBGTRANSFERENABLED], a
- call Func_4120b
+ call Trade_LoadMonPartySpriteGfx
call DelayFrame
ld a, %10101011
ld [rLCDC], a
@@ -400,20 +456,26 @@
ld [hWY], a
ret
-Func_4142d: ; 4142d (10:542d)
+Trade_DrawLeftGameboy: ; 4142d (10:542d)
call Trade_ClearTileMap
+
+; draw link cable
hlCoord 11, 4
ld a, $5d
ld [hli], a
ld a, $5e
ld c, $8
-.asm_4143a
+.loop
ld [hli], a
dec c
- jr nz, .asm_4143a
+ jr nz, .loop
+
+; draw gameboy pic
hlCoord 5, 3
ld b, $6
call CopyTileIDsFromList_ZeroBaseTileID
+
+; draw text box with player name below gameboy pic
hlCoord 4, 12
ld b, 2
ld c, 7
@@ -421,20 +483,25 @@
hlCoord 5, 14
ld de, wPlayerName
call PlaceString
+
jp DelayFrame
-Func_4145c: ; 4145c (10:545c)
+Trade_DrawRightGameboy: ; 4145c (10:545c)
call Trade_ClearTileMap
+
+; draw horizontal segment of link cable
hlCoord 0, 4
ld a, $5e
ld c, $e
-.asm_41466
+.loop
ld [hli], a
dec c
- jr nz, .asm_41466
+ jr nz, .loop
+
+; draw vertical segment of link cable
ld a, $5f
ld [hl], a
- ld de, $14
+ ld de, SCREEN_WIDTH
add hl, de
ld a, $61
ld [hl], a
@@ -449,9 +516,13 @@
ld [hld], a
ld a, $5d
ld [hl], a
+
+; draw gameboy pic
hlCoord 7, 8
ld b, $6
call CopyTileIDsFromList_ZeroBaseTileID
+
+; draw text box with enemy name above link cable
hlCoord 6, 0
ld b, $2
ld c, $7
@@ -459,20 +530,24 @@
hlCoord 7, 2
ld de, wLinkEnemyTrainerName
call PlaceString
+
jp DelayFrame
-Func_4149f: ; 4149f (10:549f)
+Trade_DrawCableAcrossScreen: ; 4149f (10:549f)
+; Draws the link cable across the screen.
call Trade_ClearTileMap
hlCoord 0, 4
ld a, $5e
- ld c, $14
-.asm_414a9
+ ld c, SCREEN_WIDTH
+.loop
ld [hli], a
dec c
- jr nz, .asm_414a9
+ jr nz, .loop
ret
-Trade_RedrawRows4And5: ; 414ae (10:54ae)
+Trade_CopyCableTilesOffScreen: ; 414ae (10:54ae)
+; This is used to copy the link cable tiles off screen so that the cable
+; continues when the screen is scrolled.
push hl
hlCoord 0, 4
call CopyToScreenEdgeTiles
@@ -486,60 +561,65 @@
ld c, 10
jp DelayFrames
-Func_414c5: ; 414c5 (10:54c5)
- ld a, [wd08a]
+Trade_AnimMonMoveHorizontal: ; 414c5 (10:54c5)
+; Animates the mon going through the link cable horizontally over a distance of
+; b 16-pixel units.
+ ld a, [wTradedMonMovingRight]
ld e, a
ld d, $8
-.asm_414cb
+.scrollLoop
ld a, e
dec a
- jr z, .asm_414d5
+ jr z, .movingRight
+; moving left
ld a, [hSCX]
sub $2
- jr .asm_414d9
-.asm_414d5
+ jr .next
+.movingRight
ld a, [hSCX]
add $2
-.asm_414d9
+.next
ld [hSCX], a
call DelayFrame
dec d
- jr nz, .asm_414cb
- call Func_414e8
+ jr nz, .scrollLoop
+ call Trade_AnimCircledMon
dec b
- jr nz, Func_414c5
+ jr nz, Trade_AnimMonMoveHorizontal
ret
-Func_414e8: ; 414e8 (10:54e8)
+Trade_AnimCircledMon: ; 414e8 (10:54e8)
+; Cycles between the two animation frames of the mon party sprite, cycles
+; between a circle and an oval around the mon sprite, and makes the cable flash.
push de
push bc
push hl
ld a, [rBGP]
- xor $3c
+ xor $3c ; make link cable flash
ld [rBGP], a
ld hl, wOAMBuffer + $02
ld de, $4
ld c, $14
-.asm_414f9
+.loop
ld a, [hl]
xor $40
ld [hl], a
add hl, de
dec c
- jr nz, .asm_414f9
+ jr nz, .loop
pop hl
pop bc
pop de
ret
-Func_41505: ; 41505 (10:5505)
- callba WriteMonPartySpriteOAMByMonID
- call Func_41558
+Trade_WriteCircledMonOAM: ; 41505 (10:5505)
+ callba WriteMonPartySpriteOAMBySpecies
+ call Trade_WriteCircleOAM
-Func_41510: ; 41510 (10:5510)
+Trade_AddOffsetsToOAMCoords: ; 41510 (10:5510)
ld hl, wOAMBuffer
ld c, $14
-.asm_41515
+.loop
ld a, [W_BASECOORDY]
add [hl]
ld [hli], a
@@ -549,41 +629,52 @@
inc hl
inc hl
dec c
- jr nz, .asm_41515
+ jr nz, .loop
ret
-Func_41525: ; 41525 (10:5525)
- ld a, [wd08a]
+Trade_AnimMonMoveVertical: ; 41525 (10:5525)
+; Animates the mon going through the link cable vertically as well as
+; horizontally for a bit. The last bit of horizontal movement (when moving
+; right) or the first bit of horizontal movement (when moving left) are done
+; here instead of Trade_AnimMonMoveHorizontal because this function moves the
+; sprite itself rather than scrolling the screen around the sprite. Moving the
+; sprite itself is necessary because the vertical segment of the link cable is
+; to the right of the screen position that the mon sprite has when
+; Trade_AnimMonMoveHorizontal is executing.
+ ld a, [wTradedMonMovingRight]
and a
- jr z, .asm_41536
- ld bc, $400
- call .asm_4153f
- ld bc, $a
- jr .asm_4153f
-.asm_41536
- ld bc, $f6
- call .asm_4153f
- ld bc, $fc00
-.asm_4153f
+ jr z, .movingLeft
+; moving right
+ ld bc, $400 ; move right
+ call .doAnim
+ ld bc, $a ; move down
+ jr .doAnim
+.movingLeft
+ ld bc, $f6 ; move up
+ call .doAnim
+ ld bc, $fc00 ; move left
+.doAnim
ld a, b
ld [W_BASECOORDX], a
ld a, c
ld [W_BASECOORDY], a
ld d, $4
-.asm_41549
- call Func_41510
- call Func_414e8
+.loop
+ call Trade_AddOffsetsToOAMCoords
+ call Trade_AnimCircledMon
ld c, $8
call DelayFrames
dec d
- jr nz, .asm_41549
+ jr nz, .loop
ret
-Func_41558: ; 41558 (10:5558)
- ld hl, OAMPointers_41574
+Trade_WriteCircleOAM: ; 41558 (10:5558)
+; Writes the OAM blocks for the circle around the traded mon as it passes
+; the link cable.
+ ld hl, Trade_CircleOAMPointers
ld c, $4
xor a
-.asm_4155e
+.loop
push bc
ld e, [hl]
inc hl
@@ -601,32 +692,32 @@
pop hl
pop bc
dec c
- jr nz, .asm_4155e
+ jr nz, .loop
ret
-OAMPointers_41574: ; 41574 (10:5574)
- dw UnknownOAM_41584
+Trade_CircleOAMPointers: ; 41574 (10:5574)
+ dw Trade_CircleOAM0
db $08,$08
- dw UnknownOAM_4158c
+ dw Trade_CircleOAM1
db $18,$08
- dw UnknownOAM_41594
+ dw Trade_CircleOAM2
db $08,$18
- dw UnknownOAM_4159c
+ dw Trade_CircleOAM3
db $18,$18
-UnknownOAM_41584: ; 41584 (10:5584)
+Trade_CircleOAM0: ; 41584 (10:5584)
db $38,$10,$39,$10
db $3A,$10,$3B,$10
-UnknownOAM_4158c: ; 4158c (10:558c)
+Trade_CircleOAM1: ; 4158c (10:558c)
db $39,$30,$38,$30
db $3B,$30,$3A,$30
-UnknownOAM_41594: ; 41594 (10:5594)
+Trade_CircleOAM2: ; 41594 (10:5594)
db $3A,$50,$3B,$50
db $38,$50,$39,$50
-UnknownOAM_4159c: ; 4159c (10:559c)
+Trade_CircleOAM3: ; 4159c (10:559c)
db $3B,$70,$3A,$70
db $39,$70,$38,$70
@@ -647,7 +738,8 @@
ld c, 10
jp DelayFrames
-Func_415c8: ; 415c8 (10:55c8)
+Trade_ShowClearedWindow: ; 415c8 (10:55c8)
+; clears the window and covers the BG entirely with the window
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
call ClearScreen
@@ -661,7 +753,8 @@
ld [hSCX], a
ret
-Func_415df: ; 415df (10:55df)
+Trade_SlideTextBoxOffScreen: ; 415df (10:55df)
+; Slides the window right until it's off screen.
ld c, 50
call DelayFrames
.loop
@@ -684,7 +777,7 @@
call PrintText
ld c, 200
call DelayFrames
- jp Func_415df
+ jp Trade_SlideTextBoxOffScreen
TradeWentToText: ; 4160c (10:560c)
TX_FAR _TradeWentToText
@@ -713,7 +806,7 @@
ld hl, TradeTransferredText
call PrintText
call Trade_Delay80
- jp Func_415df
+ jp Trade_SlideTextBoxOffScreen
TradeWavesFarewellText: ; 41642 (10:5642)
TX_FAR _TradeWavesFarewellText
--- a/wram.asm
+++ b/wram.asm
@@ -658,10 +658,18 @@
wcd5b:: ds 1
wcd5c:: ds 1
-wcd5d:: ds 1
-wcd5e:: ds 1
-wcd5f:: ds 1
+wMonPartySpriteSpecies:: ; cd5d
+ ds 1
+
+wLeftGBMonSpecies:: ; cd5e
+; in the trade animation, the mon that leaves the left gameboy
+ ds 1
+
+wRightGBMonSpecies:: ; cd5f
+; in the trade animation, the mon that leaves the right gameboy
+ ds 1
+
wFlags_0xcd60:: ; cd60
; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaneously)
; bit 1: boulder dust animation (from using Strength) pending
@@ -1113,6 +1121,9 @@
W_NUMFBTILES:: ; d089
; number of tiles in current battle animation frame block
ds 1
+
+wTradedMonMovingRight:: ; d08a
+; $01 if mon is moving from left gameboy to right gameboy; $00 if vice versa
wd08a:: ds 1