diff options
author | YamaArashi <shadow962@live.com> | 2015-03-14 15:25:21 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2015-03-14 15:27:58 -0700 |
commit | 0996a964bdb597b9cd0c087fde5926980eac900a (patch) | |
tree | 372b48eaa23e644930b77c0155f159c5d60e74c9 | |
parent | ec76703936ae690411a29c4f6ff11eef41ebdfd3 (diff) |
commented trade amim functions
-rwxr-xr-x | engine/cable_club.asm | 4 | ||||
-rwxr-xr-x | engine/in_game_trades.asm | 2 | ||||
-rwxr-xr-x | engine/menu/naming_screen.asm | 4 | ||||
-rwxr-xr-x | engine/mon_party_sprites.asm | 13 | ||||
-rwxr-xr-x | engine/predefs.asm | 4 | ||||
-rwxr-xr-x | engine/trade.asm | 393 | ||||
-rwxr-xr-x | wram.asm | 17 |
7 files changed, 271 insertions, 166 deletions
diff --git a/engine/cable_club.asm b/engine/cable_club.asm index 4fbb13d9..2cfb1734 100755 --- a/engine/cable_club.asm +++ b/engine/cable_club.asm @@ -840,10 +840,10 @@ TradeCenter_Trade: 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 diff --git a/engine/in_game_trades.asm b/engine/in_game_trades.asm index f308a8e6..cb03a074 100755 --- a/engine/in_game_trades.asm +++ b/engine/in_game_trades.asm @@ -122,7 +122,7 @@ InGameTrade_DoTrade: ; 71c07 (1c:5c07) push af call LoadHpBarAndStatusTilePatterns call InGameTrade_PrepareTradeData - predef Func_410e2 + predef InternalClockTradeAnim pop af ld [W_CURENEMYLVL],a pop af diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm index 583bb5aa..df862d69 100755 --- a/engine/menu/naming_screen.asm +++ b/engine/menu/naming_screen.asm @@ -470,9 +470,9 @@ PrintNamingText: ; 68f8 (1:68f8) 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 diff --git a/engine/mon_party_sprites.asm b/engine/mon_party_sprites.asm index d3dd8206..e3323cfc 100755 --- a/engine/mon_party_sprites.asm +++ b/engine/mon_party_sprites.asm @@ -322,11 +322,12 @@ WriteMonPartySpriteOAMByPartyIndex: ; 71868 (1c:5868) 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 @@ WriteMonPartySpriteOAMByMonID: ; 71882 (1c:5882) 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 @@ UnusedPartyMonSpriteFunction: ; 71890 (1c:5890) ld hl, vSprites + $40 call .LoadTilePatterns xor a - ld [wcd5d], a - jr WriteMonPartySpriteOAMByMonID + ld [wMonPartySpriteSpecies], a + jr WriteMonPartySpriteOAMBySpecies .LoadTilePatterns ; 718ac (1c:58ac) push hl diff --git a/engine/predefs.asm b/engine/predefs.asm index bb8866da..f6ecf018 100755 --- a/engine/predefs.asm +++ b/engine/predefs.asm @@ -99,7 +99,7 @@ PredefPointers:: ; 4fe79 (13:7e79) 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 @@ PredefPointers:: ; 4fe79 (13:7e79) 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? diff --git a/engine/trade.asm b/engine/trade.asm index 2067c2ef..bb4fa4e1 100755 --- 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 @@ Func_41102: ; 41102 (10:5102) 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 @@ Func_41102: ; 41102 (10:5102) 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,31 +56,80 @@ Func_41102: ; 41102 (10:5102) 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 - -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 - -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 +addtradefunc: MACRO +\1TradeFunc:: + dw \1 + ENDM + +tradefunc: MACRO + db (\1TradeFunc - TradeFuncPointerTable) / 2 + ENDM + +; 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 @@ -121,13 +174,13 @@ LoadTradingGFXAndMonNames: ; 411a1 (10:51a1) 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 @@ LoadTradingGFXAndMonNames: ; 411a1 (10:51a1) 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 @@ Trade_SwapNames: ; 41217 (10:5217) 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 @@ Trade_ShowPlayerMon: ; 41245 (10:5245) 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_ShowPlayerMon: ; 41245 (10:5245) 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_BallInsideLinkCableOAM: ; 4132e (10:532e) 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,77 +373,80 @@ Trade_ShowEnemyMon: ; 41336 (10:5336) 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 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 @@ Func_41411: ; 41411 (10:5411) 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 @@ Func_4142d: ; 4142d (10:542d) 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 @@ Func_4145c: ; 4145c (10:545c) 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 @@ Func_4145c: ; 4145c (10:545c) 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 @@ Trade_RedrawRows4And5: ; 414ae (10:54ae) 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 @@ Func_41510: ; 41510 (10:5510) 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 @@ Func_41558: ; 41558 (10:5558) 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 @@ Trade_LoadMonSprite: ; 415a4 (10:55a4) 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 @@ Func_415c8: ; 415c8 (10:55c8) 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 @@ PrintTradeWentToText: ; 415fe (10:55fe) call PrintText ld c, 200 call DelayFrames - jp Func_415df + jp Trade_SlideTextBoxOffScreen TradeWentToText: ; 4160c (10:560c) TX_FAR _TradeWentToText @@ -713,7 +806,7 @@ PrintTradeFarewellText: ; 4162d (10:562d) ld hl, TradeTransferredText call PrintText call Trade_Delay80 - jp Func_415df + jp Trade_SlideTextBoxOffScreen TradeWavesFarewellText: ; 41642 (10:5642) TX_FAR _TradeWavesFarewellText @@ -658,9 +658,17 @@ wTradedEnemyMonOTID:: ; cd59 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) @@ -1114,6 +1122,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 wTownMapSpriteBlinkingCounter:: ; d08b |