mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00
commented trade amim functions
This commit is contained in:
parent
ec76703936
commit
0996a964bd
|
@ -840,10 +840,10 @@ TradeCenter_Trade:
|
||||||
ld a, [hSerialConnectionStatus]
|
ld a, [hSerialConnectionStatus]
|
||||||
cp USING_EXTERNAL_CLOCK
|
cp USING_EXTERNAL_CLOCK
|
||||||
jr z, .usingExternalClock
|
jr z, .usingExternalClock
|
||||||
predef Func_410e2
|
predef InternalClockTradeAnim
|
||||||
jr .tradeCompleted
|
jr .tradeCompleted
|
||||||
.usingExternalClock
|
.usingExternalClock
|
||||||
predef Func_410f3
|
predef ExternalClockTradeAnim
|
||||||
.tradeCompleted
|
.tradeCompleted
|
||||||
callab TryEvolvingMon
|
callab TryEvolvingMon
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
|
|
@ -122,7 +122,7 @@ InGameTrade_DoTrade: ; 71c07 (1c:5c07)
|
||||||
push af
|
push af
|
||||||
call LoadHpBarAndStatusTilePatterns
|
call LoadHpBarAndStatusTilePatterns
|
||||||
call InGameTrade_PrepareTradeData
|
call InGameTrade_PrepareTradeData
|
||||||
predef Func_410e2
|
predef InternalClockTradeAnim
|
||||||
pop af
|
pop af
|
||||||
ld [W_CURENEMYLVL],a
|
ld [W_CURENEMYLVL],a
|
||||||
pop af
|
pop af
|
||||||
|
|
|
@ -470,9 +470,9 @@ PrintNamingText: ; 68f8 (1:68f8)
|
||||||
dec a
|
dec a
|
||||||
jr z, .notNickname
|
jr z, .notNickname
|
||||||
ld a, [wcf91]
|
ld a, [wcf91]
|
||||||
ld [wcd5d], a
|
ld [wMonPartySpriteSpecies], a
|
||||||
push af
|
push af
|
||||||
callba WriteMonPartySpriteOAMByMonID
|
callba WriteMonPartySpriteOAMBySpecies
|
||||||
pop af
|
pop af
|
||||||
ld [wd11e], a
|
ld [wd11e], a
|
||||||
call GetMonName
|
call GetMonName
|
||||||
|
|
|
@ -322,11 +322,12 @@ WriteMonPartySpriteOAMByPartyIndex: ; 71868 (1c:5868)
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
WriteMonPartySpriteOAMByMonID: ; 71882 (1c:5882)
|
WriteMonPartySpriteOAMBySpecies: ; 71882 (1c:5882)
|
||||||
; Write OAM blocks for mon ID in [wcd5d].
|
; Write OAM blocks for the party sprite of the species in
|
||||||
|
; [wMonPartySpriteSpecies].
|
||||||
xor a
|
xor a
|
||||||
ld [hPartyMonIndex], a
|
ld [hPartyMonIndex], a
|
||||||
ld a, [wcd5d]
|
ld a, [wMonPartySpriteSpecies]
|
||||||
call GetPartyMonSpriteID
|
call GetPartyMonSpriteID
|
||||||
ld [wcd5b], a
|
ld [wcd5b], a
|
||||||
jr WriteMonPartySpriteOAM
|
jr WriteMonPartySpriteOAM
|
||||||
|
@ -334,7 +335,7 @@ WriteMonPartySpriteOAMByMonID: ; 71882 (1c:5882)
|
||||||
UnusedPartyMonSpriteFunction: ; 71890 (1c:5890)
|
UnusedPartyMonSpriteFunction: ; 71890 (1c:5890)
|
||||||
; This function is unused and doesn't appear to do anything useful. It looks
|
; 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
|
; 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.
|
; However, its calculations are off and it loads garbage data.
|
||||||
ld a, [wcf91]
|
ld a, [wcf91]
|
||||||
call GetPartyMonSpriteID
|
call GetPartyMonSpriteID
|
||||||
|
@ -346,8 +347,8 @@ UnusedPartyMonSpriteFunction: ; 71890 (1c:5890)
|
||||||
ld hl, vSprites + $40
|
ld hl, vSprites + $40
|
||||||
call .LoadTilePatterns
|
call .LoadTilePatterns
|
||||||
xor a
|
xor a
|
||||||
ld [wcd5d], a
|
ld [wMonPartySpriteSpecies], a
|
||||||
jr WriteMonPartySpriteOAMByMonID
|
jr WriteMonPartySpriteOAMBySpecies
|
||||||
|
|
||||||
.LoadTilePatterns ; 718ac (1c:58ac)
|
.LoadTilePatterns ; 718ac (1c:58ac)
|
||||||
push hl
|
push hl
|
||||||
|
|
|
@ -99,7 +99,7 @@ PredefPointers:: ; 4fe79 (13:7e79)
|
||||||
add_predef InitOpponent
|
add_predef InitOpponent
|
||||||
add_predef CableClub_Run
|
add_predef CableClub_Run
|
||||||
add_predef DrawBadges
|
add_predef DrawBadges
|
||||||
add_predef Func_410f3
|
add_predef ExternalClockTradeAnim
|
||||||
add_predef BattleTransition
|
add_predef BattleTransition
|
||||||
add_predef CopyTileIDsFromList
|
add_predef CopyTileIDsFromList
|
||||||
add_predef PlayIntro
|
add_predef PlayIntro
|
||||||
|
@ -108,7 +108,7 @@ PredefPointers:: ; 4fe79 (13:7e79)
|
||||||
add_predef GetTileAndCoordsInFrontOfPlayer
|
add_predef GetTileAndCoordsInFrontOfPlayer
|
||||||
add_predef StatusScreen
|
add_predef StatusScreen
|
||||||
add_predef StatusScreen2
|
add_predef StatusScreen2
|
||||||
add_predef Func_410e2
|
add_predef InternalClockTradeAnim
|
||||||
add_predef TrainerEngage
|
add_predef TrainerEngage
|
||||||
add_predef IndexToPokedex
|
add_predef IndexToPokedex
|
||||||
add_predef Predef3B; 3B display pic?
|
add_predef Predef3B; 3B display pic?
|
||||||
|
|
389
engine/trade.asm
389
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 a, [wTradedPlayerMonSpecies]
|
||||||
ld [wcd5e], a
|
ld [wLeftGBMonSpecies], a
|
||||||
ld a, [wTradedEnemyMonSpecies]
|
ld a, [wTradedEnemyMonSpecies]
|
||||||
ld [wcd5f], a
|
ld [wRightGBMonSpecies], a
|
||||||
ld de, PointerIDs_41138
|
ld de, InternalClockTradeFuncSequence
|
||||||
jr Func_41102
|
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 a, [wTradedEnemyMonSpecies]
|
||||||
ld [wcd5e], a
|
ld [wLeftGBMonSpecies], a
|
||||||
ld a, [wTrainerSpriteOffset]
|
ld a, [wTrainerSpriteOffset]
|
||||||
ld [wcd5f], a
|
ld [wRightGBMonSpecies], a
|
||||||
ld de, PointerIDs_41149
|
ld de, ExternalClockTradeFuncSequence
|
||||||
|
|
||||||
Func_41102: ; 41102 (10:5102)
|
TradeAnimCommon: ; 41102 (10:5102)
|
||||||
ld a, [W_OPTIONS]
|
ld a, [W_OPTIONS]
|
||||||
push af
|
push af
|
||||||
ld a, [hSCY]
|
ld a, [hSCY]
|
||||||
|
@ -25,14 +29,14 @@ Func_41102: ; 41102 (10:5102)
|
||||||
ld [hSCY], a
|
ld [hSCY], a
|
||||||
ld [hSCX], a
|
ld [hSCX], a
|
||||||
push de
|
push de
|
||||||
.asm_41115
|
.loop
|
||||||
pop de
|
pop de
|
||||||
ld a, [de]
|
ld a, [de]
|
||||||
cp $ff
|
cp $ff
|
||||||
jr z, .asm_4112d
|
jr z, .done
|
||||||
inc de
|
inc de
|
||||||
push de
|
push de
|
||||||
ld hl, PointerTable_4115f
|
ld hl, TradeFuncPointerTable
|
||||||
add a
|
add a
|
||||||
ld c, a
|
ld c, a
|
||||||
ld b, $0
|
ld b, $0
|
||||||
|
@ -40,10 +44,10 @@ Func_41102: ; 41102 (10:5102)
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld h, [hl]
|
ld h, [hl]
|
||||||
ld l, a
|
ld l, a
|
||||||
ld de, .asm_41115
|
ld de, .loop
|
||||||
push de
|
push de
|
||||||
jp [hl]
|
jp [hl] ; call trade func, which will return to the top of the loop
|
||||||
.asm_4112d
|
.done
|
||||||
pop af
|
pop af
|
||||||
ld [hSCX], a
|
ld [hSCX], a
|
||||||
pop af
|
pop af
|
||||||
|
@ -52,31 +56,80 @@ Func_41102: ; 41102 (10:5102)
|
||||||
ld [W_OPTIONS], a
|
ld [W_OPTIONS], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; these bytes refer to the $00th through $10th pointer of PointerTable_4115f
|
addtradefunc: MACRO
|
||||||
PointerIDs_41138: ; 41138 (10:5138)
|
\1TradeFunc::
|
||||||
db $00,$01,$02,$03,$05,$07,$08,$09,$0A,$0B,$06,$08,$02,$04,$07,$0E,$FF
|
dw \1
|
||||||
|
ENDM
|
||||||
|
|
||||||
PointerIDs_41149: ; 41149 (10:5149)
|
tradefunc: MACRO
|
||||||
db $00,$08,$0D,$0B,$10,$05,$10,$08,$02,$04,$0F,$01,$02,$03,$10,$06,$10,$07,$08,$09,$0E,$FF
|
db (\1TradeFunc - TradeFuncPointerTable) / 2
|
||||||
|
ENDM
|
||||||
|
|
||||||
PointerTable_4115f: ; 4115f (10:515f)
|
; The functions in the sequences below are executed in order by TradeFuncCommon.
|
||||||
dw LoadTradingGFXAndMonNames
|
; They are from opposite perspectives. The external clock one makes use of
|
||||||
dw Trade_ShowPlayerMon
|
; Trade_SwapNames to swap the player and enemy names for some functions.
|
||||||
dw Trade_DrawOpenEndOfLinkCable
|
|
||||||
dw Trade_AnimateBallEnteringLinkCable
|
InternalClockTradeFuncSequence: ; 41138 (10:5138)
|
||||||
dw Trade_ShowEnemyMon
|
tradefunc LoadTradingGFXAndMonNames
|
||||||
dw Func_41376
|
tradefunc Trade_ShowPlayerMon
|
||||||
dw Func_413c6
|
tradefunc Trade_DrawOpenEndOfLinkCable
|
||||||
dw Trade_Delay100
|
tradefunc Trade_AnimateBallEnteringLinkCable
|
||||||
dw Func_415c8
|
tradefunc Trade_AnimLeftToRight
|
||||||
dw PrintTradeWentToText
|
tradefunc Trade_Delay100
|
||||||
dw PrintTradeForSendsText
|
tradefunc Trade_ShowClearedWindow
|
||||||
dw PrintTradeFarewellText
|
tradefunc PrintTradeWentToText
|
||||||
dw PrintTradeTakeCareText
|
tradefunc PrintTradeForSendsText
|
||||||
dw PrintTradeWillTradeText
|
tradefunc PrintTradeFarewellText
|
||||||
dw Func_4123b
|
tradefunc Trade_AnimRightToLeft
|
||||||
dw Func_415df
|
tradefunc Trade_ShowClearedWindow
|
||||||
dw Trade_SwapNames
|
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)
|
Trade_Delay100: ; 41181 (10:5181)
|
||||||
ld c, 100
|
ld c, 100
|
||||||
|
@ -121,13 +174,13 @@ LoadTradingGFXAndMonNames: ; 411a1 (10:51a1)
|
||||||
ld a, $ff
|
ld a, $ff
|
||||||
ld [wUpdateSpritesEnabled], a
|
ld [wUpdateSpritesEnabled], a
|
||||||
ld hl, wd730
|
ld hl, wd730
|
||||||
set 6, [hl]
|
set 6, [hl] ; turn on instant text printing
|
||||||
ld a, [wOnSGB]
|
ld a, [wOnSGB]
|
||||||
and a
|
and a
|
||||||
ld a, $e4
|
ld a, $e4 ; non-SGB OBP0
|
||||||
jr z, .asm_411e5
|
jr z, .next
|
||||||
ld a, $f0
|
ld a, $f0 ; SGB OBP0
|
||||||
.asm_411e5
|
.next
|
||||||
ld [rOBP0], a
|
ld [rOBP0], a
|
||||||
call EnableLCD
|
call EnableLCD
|
||||||
xor a
|
xor a
|
||||||
|
@ -143,7 +196,7 @@ LoadTradingGFXAndMonNames: ; 411a1 (10:51a1)
|
||||||
ld [wd11e], a
|
ld [wd11e], a
|
||||||
jp GetMonName
|
jp GetMonName
|
||||||
|
|
||||||
Func_4120b: ; 4120b (10:520b)
|
Trade_LoadMonPartySpriteGfx: ; 4120b (10:520b)
|
||||||
ld a, %11010000
|
ld a, %11010000
|
||||||
ld [rOBP1], a
|
ld [rOBP1], a
|
||||||
ld b, BANK(LoadMonPartySpriteGfx)
|
ld b, BANK(LoadMonPartySpriteGfx)
|
||||||
|
@ -164,11 +217,11 @@ Trade_SwapNames: ; 41217 (10:5217)
|
||||||
ld bc, 11
|
ld bc, 11
|
||||||
jp CopyData
|
jp CopyData
|
||||||
|
|
||||||
Func_4123b: ; 4123b (10:523b)
|
Trade_Cleanup: ; 4123b (10:523b)
|
||||||
xor a
|
xor a
|
||||||
call LoadGBPal
|
call LoadGBPal
|
||||||
ld hl, wd730
|
ld hl, wd730
|
||||||
res 6, [hl]
|
res 6, [hl] ; turn off instant text printing
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Trade_ShowPlayerMon: ; 41245 (10:5245)
|
Trade_ShowPlayerMon: ; 41245 (10:5245)
|
||||||
|
@ -186,7 +239,7 @@ Trade_ShowPlayerMon: ; 41245 (10:5245)
|
||||||
ld c, 10
|
ld c, 10
|
||||||
call TextBoxBorder
|
call TextBoxBorder
|
||||||
call Trade_PrintPlayerMonInfoText
|
call Trade_PrintPlayerMonInfoText
|
||||||
ld b, $98
|
ld b, vBGMap0 / $100
|
||||||
call CopyScreenTileBufferToVRAM
|
call CopyScreenTileBufferToVRAM
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
ld a, [wTradedPlayerMonSpecies]
|
ld a, [wTradedPlayerMonSpecies]
|
||||||
|
@ -215,12 +268,12 @@ Trade_ShowPlayerMon: ; 41245 (10:5245)
|
||||||
|
|
||||||
Trade_DrawOpenEndOfLinkCable: ; 41298 (10:5298)
|
Trade_DrawOpenEndOfLinkCable: ; 41298 (10:5298)
|
||||||
call Trade_ClearTileMap
|
call Trade_ClearTileMap
|
||||||
ld b, $98
|
ld b, vBGMap0 / $100
|
||||||
call CopyScreenTileBufferToVRAM
|
call CopyScreenTileBufferToVRAM
|
||||||
ld b, $8
|
ld b, $8
|
||||||
call GoPAL_SET
|
call GoPAL_SET
|
||||||
ld hl, vBGMap1 + $8c
|
ld hl, vBGMap1 + $8c
|
||||||
call Trade_RedrawRows4And5
|
call Trade_CopyCableTilesOffScreen
|
||||||
ld a, $a0
|
ld a, $a0
|
||||||
ld [hSCX], a
|
ld [hSCX], a
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
|
@ -297,7 +350,7 @@ Trade_BallInsideLinkCableOAM: ; 4132e (10:532e)
|
||||||
Trade_ShowEnemyMon: ; 41336 (10:5336)
|
Trade_ShowEnemyMon: ; 41336 (10:5336)
|
||||||
ld a, TRADE_BALL_TILT_ANIM
|
ld a, TRADE_BALL_TILT_ANIM
|
||||||
call Trade_ShowAnimation
|
call Trade_ShowAnimation
|
||||||
call Func_415c8
|
call Trade_ShowClearedWindow
|
||||||
hlCoord 4, 10
|
hlCoord 4, 10
|
||||||
ld b, 6
|
ld b, 6
|
||||||
ld c, 10
|
ld c, 10
|
||||||
|
@ -320,77 +373,80 @@ Trade_ShowEnemyMon: ; 41336 (10:5336)
|
||||||
call ClearScreenArea
|
call ClearScreenArea
|
||||||
jp PrintTradeTakeCareText
|
jp PrintTradeTakeCareText
|
||||||
|
|
||||||
Func_41376: ; 41376 (10:5376)
|
Trade_AnimLeftToRight: ; 41376 (10:5376)
|
||||||
call Func_41411
|
; Animates the mon moving from the left GB to the right one.
|
||||||
|
call Trade_InitGameboyTransferGfx
|
||||||
ld a, $1
|
ld a, $1
|
||||||
ld [wd08a], a
|
ld [wTradedMonMovingRight], a
|
||||||
ld a, $e4
|
ld a, $e4
|
||||||
ld [rOBP0], a
|
ld [rOBP0], a
|
||||||
ld a, $54
|
ld a, $54
|
||||||
ld [W_BASECOORDX], a
|
ld [W_BASECOORDX], a
|
||||||
ld a, $1c
|
ld a, $1c
|
||||||
ld [W_BASECOORDY], a
|
ld [W_BASECOORDY], a
|
||||||
ld a, [wcd5e]
|
ld a, [wLeftGBMonSpecies]
|
||||||
ld [wcd5d], a
|
ld [wMonPartySpriteSpecies], a
|
||||||
call Func_41505
|
call Trade_WriteCircledMonOAM
|
||||||
call Func_4142d
|
call Trade_DrawLeftGameboy
|
||||||
call Trade_CopyTileMapToVRAM
|
call Trade_CopyTileMapToVRAM
|
||||||
call Func_4149f
|
call Trade_DrawCableAcrossScreen
|
||||||
ld hl, vBGMap1 + $8c
|
ld hl, vBGMap1 + $8c
|
||||||
call Trade_RedrawRows4And5
|
call Trade_CopyCableTilesOffScreen
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
ld a, $1
|
ld a, $1
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call Func_4149f
|
call Trade_DrawCableAcrossScreen
|
||||||
ld b, $4
|
ld b, $4
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
call Func_4145c
|
call Trade_DrawRightGameboy
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
xor a
|
xor a
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call Func_41525
|
call Trade_AnimMonMoveVertical
|
||||||
jp ClearSprites
|
jp ClearSprites
|
||||||
|
|
||||||
Func_413c6: ; 413c6 (10:53c6)
|
Trade_AnimRightToLeft: ; 413c6 (10:53c6)
|
||||||
call Func_41411
|
; Animates the mon moving from the right GB to the left one.
|
||||||
|
call Trade_InitGameboyTransferGfx
|
||||||
xor a
|
xor a
|
||||||
ld [wd08a], a
|
ld [wTradedMonMovingRight], a
|
||||||
ld a, $64
|
ld a, $64
|
||||||
ld [W_BASECOORDX], a
|
ld [W_BASECOORDX], a
|
||||||
ld a, $44
|
ld a, $44
|
||||||
ld [W_BASECOORDY], a
|
ld [W_BASECOORDY], a
|
||||||
ld a, [wcd5f]
|
ld a, [wRightGBMonSpecies]
|
||||||
ld [wcd5d], a
|
ld [wMonPartySpriteSpecies], a
|
||||||
call Func_41505
|
call Trade_WriteCircledMonOAM
|
||||||
call Func_4145c
|
call Trade_DrawRightGameboy
|
||||||
call Trade_CopyTileMapToVRAM
|
call Trade_CopyTileMapToVRAM
|
||||||
call Func_4149f
|
call Trade_DrawCableAcrossScreen
|
||||||
ld hl, vBGMap1 + $94
|
ld hl, vBGMap1 + $94
|
||||||
call Trade_RedrawRows4And5
|
call Trade_CopyCableTilesOffScreen
|
||||||
call Func_41525
|
call Trade_AnimMonMoveVertical
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
ld a, $1
|
ld a, $1
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call Func_4149f
|
call Trade_DrawCableAcrossScreen
|
||||||
ld b, $4
|
ld b, $4
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
call Func_4142d
|
call Trade_DrawLeftGameboy
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call Func_414c5
|
call Trade_AnimMonMoveHorizontal
|
||||||
xor a
|
xor a
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
jp ClearSprites
|
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 a, $1
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
xor a
|
xor a
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call Func_4120b
|
call Trade_LoadMonPartySpriteGfx
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
ld a, %10101011
|
ld a, %10101011
|
||||||
ld [rLCDC], a
|
ld [rLCDC], a
|
||||||
|
@ -400,20 +456,26 @@ Func_41411: ; 41411 (10:5411)
|
||||||
ld [hWY], a
|
ld [hWY], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Func_4142d: ; 4142d (10:542d)
|
Trade_DrawLeftGameboy: ; 4142d (10:542d)
|
||||||
call Trade_ClearTileMap
|
call Trade_ClearTileMap
|
||||||
|
|
||||||
|
; draw link cable
|
||||||
hlCoord 11, 4
|
hlCoord 11, 4
|
||||||
ld a, $5d
|
ld a, $5d
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
ld a, $5e
|
ld a, $5e
|
||||||
ld c, $8
|
ld c, $8
|
||||||
.asm_4143a
|
.loop
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_4143a
|
jr nz, .loop
|
||||||
|
|
||||||
|
; draw gameboy pic
|
||||||
hlCoord 5, 3
|
hlCoord 5, 3
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call CopyTileIDsFromList_ZeroBaseTileID
|
call CopyTileIDsFromList_ZeroBaseTileID
|
||||||
|
|
||||||
|
; draw text box with player name below gameboy pic
|
||||||
hlCoord 4, 12
|
hlCoord 4, 12
|
||||||
ld b, 2
|
ld b, 2
|
||||||
ld c, 7
|
ld c, 7
|
||||||
|
@ -421,20 +483,25 @@ Func_4142d: ; 4142d (10:542d)
|
||||||
hlCoord 5, 14
|
hlCoord 5, 14
|
||||||
ld de, wPlayerName
|
ld de, wPlayerName
|
||||||
call PlaceString
|
call PlaceString
|
||||||
|
|
||||||
jp DelayFrame
|
jp DelayFrame
|
||||||
|
|
||||||
Func_4145c: ; 4145c (10:545c)
|
Trade_DrawRightGameboy: ; 4145c (10:545c)
|
||||||
call Trade_ClearTileMap
|
call Trade_ClearTileMap
|
||||||
|
|
||||||
|
; draw horizontal segment of link cable
|
||||||
hlCoord 0, 4
|
hlCoord 0, 4
|
||||||
ld a, $5e
|
ld a, $5e
|
||||||
ld c, $e
|
ld c, $e
|
||||||
.asm_41466
|
.loop
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_41466
|
jr nz, .loop
|
||||||
|
|
||||||
|
; draw vertical segment of link cable
|
||||||
ld a, $5f
|
ld a, $5f
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
ld de, $14
|
ld de, SCREEN_WIDTH
|
||||||
add hl, de
|
add hl, de
|
||||||
ld a, $61
|
ld a, $61
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
|
@ -449,9 +516,13 @@ Func_4145c: ; 4145c (10:545c)
|
||||||
ld [hld], a
|
ld [hld], a
|
||||||
ld a, $5d
|
ld a, $5d
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
|
|
||||||
|
; draw gameboy pic
|
||||||
hlCoord 7, 8
|
hlCoord 7, 8
|
||||||
ld b, $6
|
ld b, $6
|
||||||
call CopyTileIDsFromList_ZeroBaseTileID
|
call CopyTileIDsFromList_ZeroBaseTileID
|
||||||
|
|
||||||
|
; draw text box with enemy name above link cable
|
||||||
hlCoord 6, 0
|
hlCoord 6, 0
|
||||||
ld b, $2
|
ld b, $2
|
||||||
ld c, $7
|
ld c, $7
|
||||||
|
@ -459,20 +530,24 @@ Func_4145c: ; 4145c (10:545c)
|
||||||
hlCoord 7, 2
|
hlCoord 7, 2
|
||||||
ld de, wLinkEnemyTrainerName
|
ld de, wLinkEnemyTrainerName
|
||||||
call PlaceString
|
call PlaceString
|
||||||
|
|
||||||
jp DelayFrame
|
jp DelayFrame
|
||||||
|
|
||||||
Func_4149f: ; 4149f (10:549f)
|
Trade_DrawCableAcrossScreen: ; 4149f (10:549f)
|
||||||
|
; Draws the link cable across the screen.
|
||||||
call Trade_ClearTileMap
|
call Trade_ClearTileMap
|
||||||
hlCoord 0, 4
|
hlCoord 0, 4
|
||||||
ld a, $5e
|
ld a, $5e
|
||||||
ld c, $14
|
ld c, SCREEN_WIDTH
|
||||||
.asm_414a9
|
.loop
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_414a9
|
jr nz, .loop
|
||||||
ret
|
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
|
push hl
|
||||||
hlCoord 0, 4
|
hlCoord 0, 4
|
||||||
call CopyToScreenEdgeTiles
|
call CopyToScreenEdgeTiles
|
||||||
|
@ -486,60 +561,65 @@ Trade_RedrawRows4And5: ; 414ae (10:54ae)
|
||||||
ld c, 10
|
ld c, 10
|
||||||
jp DelayFrames
|
jp DelayFrames
|
||||||
|
|
||||||
Func_414c5: ; 414c5 (10:54c5)
|
Trade_AnimMonMoveHorizontal: ; 414c5 (10:54c5)
|
||||||
ld a, [wd08a]
|
; Animates the mon going through the link cable horizontally over a distance of
|
||||||
|
; b 16-pixel units.
|
||||||
|
ld a, [wTradedMonMovingRight]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld d, $8
|
ld d, $8
|
||||||
.asm_414cb
|
.scrollLoop
|
||||||
ld a, e
|
ld a, e
|
||||||
dec a
|
dec a
|
||||||
jr z, .asm_414d5
|
jr z, .movingRight
|
||||||
|
; moving left
|
||||||
ld a, [hSCX]
|
ld a, [hSCX]
|
||||||
sub $2
|
sub $2
|
||||||
jr .asm_414d9
|
jr .next
|
||||||
.asm_414d5
|
.movingRight
|
||||||
ld a, [hSCX]
|
ld a, [hSCX]
|
||||||
add $2
|
add $2
|
||||||
.asm_414d9
|
.next
|
||||||
ld [hSCX], a
|
ld [hSCX], a
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
dec d
|
dec d
|
||||||
jr nz, .asm_414cb
|
jr nz, .scrollLoop
|
||||||
call Func_414e8
|
call Trade_AnimCircledMon
|
||||||
dec b
|
dec b
|
||||||
jr nz, Func_414c5
|
jr nz, Trade_AnimMonMoveHorizontal
|
||||||
ret
|
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 de
|
||||||
push bc
|
push bc
|
||||||
push hl
|
push hl
|
||||||
ld a, [rBGP]
|
ld a, [rBGP]
|
||||||
xor $3c
|
xor $3c ; make link cable flash
|
||||||
ld [rBGP], a
|
ld [rBGP], a
|
||||||
ld hl, wOAMBuffer + $02
|
ld hl, wOAMBuffer + $02
|
||||||
ld de, $4
|
ld de, $4
|
||||||
ld c, $14
|
ld c, $14
|
||||||
.asm_414f9
|
.loop
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
xor $40
|
xor $40
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
add hl, de
|
add hl, de
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_414f9
|
jr nz, .loop
|
||||||
pop hl
|
pop hl
|
||||||
pop bc
|
pop bc
|
||||||
pop de
|
pop de
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Func_41505: ; 41505 (10:5505)
|
Trade_WriteCircledMonOAM: ; 41505 (10:5505)
|
||||||
callba WriteMonPartySpriteOAMByMonID
|
callba WriteMonPartySpriteOAMBySpecies
|
||||||
call Func_41558
|
call Trade_WriteCircleOAM
|
||||||
|
|
||||||
Func_41510: ; 41510 (10:5510)
|
Trade_AddOffsetsToOAMCoords: ; 41510 (10:5510)
|
||||||
ld hl, wOAMBuffer
|
ld hl, wOAMBuffer
|
||||||
ld c, $14
|
ld c, $14
|
||||||
.asm_41515
|
.loop
|
||||||
ld a, [W_BASECOORDY]
|
ld a, [W_BASECOORDY]
|
||||||
add [hl]
|
add [hl]
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
|
@ -549,41 +629,52 @@ Func_41510: ; 41510 (10:5510)
|
||||||
inc hl
|
inc hl
|
||||||
inc hl
|
inc hl
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_41515
|
jr nz, .loop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Func_41525: ; 41525 (10:5525)
|
Trade_AnimMonMoveVertical: ; 41525 (10:5525)
|
||||||
ld a, [wd08a]
|
; 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
|
and a
|
||||||
jr z, .asm_41536
|
jr z, .movingLeft
|
||||||
ld bc, $400
|
; moving right
|
||||||
call .asm_4153f
|
ld bc, $400 ; move right
|
||||||
ld bc, $a
|
call .doAnim
|
||||||
jr .asm_4153f
|
ld bc, $a ; move down
|
||||||
.asm_41536
|
jr .doAnim
|
||||||
ld bc, $f6
|
.movingLeft
|
||||||
call .asm_4153f
|
ld bc, $f6 ; move up
|
||||||
ld bc, $fc00
|
call .doAnim
|
||||||
.asm_4153f
|
ld bc, $fc00 ; move left
|
||||||
|
.doAnim
|
||||||
ld a, b
|
ld a, b
|
||||||
ld [W_BASECOORDX], a
|
ld [W_BASECOORDX], a
|
||||||
ld a, c
|
ld a, c
|
||||||
ld [W_BASECOORDY], a
|
ld [W_BASECOORDY], a
|
||||||
ld d, $4
|
ld d, $4
|
||||||
.asm_41549
|
.loop
|
||||||
call Func_41510
|
call Trade_AddOffsetsToOAMCoords
|
||||||
call Func_414e8
|
call Trade_AnimCircledMon
|
||||||
ld c, $8
|
ld c, $8
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
dec d
|
dec d
|
||||||
jr nz, .asm_41549
|
jr nz, .loop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Func_41558: ; 41558 (10:5558)
|
Trade_WriteCircleOAM: ; 41558 (10:5558)
|
||||||
ld hl, OAMPointers_41574
|
; Writes the OAM blocks for the circle around the traded mon as it passes
|
||||||
|
; the link cable.
|
||||||
|
ld hl, Trade_CircleOAMPointers
|
||||||
ld c, $4
|
ld c, $4
|
||||||
xor a
|
xor a
|
||||||
.asm_4155e
|
.loop
|
||||||
push bc
|
push bc
|
||||||
ld e, [hl]
|
ld e, [hl]
|
||||||
inc hl
|
inc hl
|
||||||
|
@ -601,32 +692,32 @@ Func_41558: ; 41558 (10:5558)
|
||||||
pop hl
|
pop hl
|
||||||
pop bc
|
pop bc
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_4155e
|
jr nz, .loop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
OAMPointers_41574: ; 41574 (10:5574)
|
Trade_CircleOAMPointers: ; 41574 (10:5574)
|
||||||
dw UnknownOAM_41584
|
dw Trade_CircleOAM0
|
||||||
db $08,$08
|
db $08,$08
|
||||||
dw UnknownOAM_4158c
|
dw Trade_CircleOAM1
|
||||||
db $18,$08
|
db $18,$08
|
||||||
dw UnknownOAM_41594
|
dw Trade_CircleOAM2
|
||||||
db $08,$18
|
db $08,$18
|
||||||
dw UnknownOAM_4159c
|
dw Trade_CircleOAM3
|
||||||
db $18,$18
|
db $18,$18
|
||||||
|
|
||||||
UnknownOAM_41584: ; 41584 (10:5584)
|
Trade_CircleOAM0: ; 41584 (10:5584)
|
||||||
db $38,$10,$39,$10
|
db $38,$10,$39,$10
|
||||||
db $3A,$10,$3B,$10
|
db $3A,$10,$3B,$10
|
||||||
|
|
||||||
UnknownOAM_4158c: ; 4158c (10:558c)
|
Trade_CircleOAM1: ; 4158c (10:558c)
|
||||||
db $39,$30,$38,$30
|
db $39,$30,$38,$30
|
||||||
db $3B,$30,$3A,$30
|
db $3B,$30,$3A,$30
|
||||||
|
|
||||||
UnknownOAM_41594: ; 41594 (10:5594)
|
Trade_CircleOAM2: ; 41594 (10:5594)
|
||||||
db $3A,$50,$3B,$50
|
db $3A,$50,$3B,$50
|
||||||
db $38,$50,$39,$50
|
db $38,$50,$39,$50
|
||||||
|
|
||||||
UnknownOAM_4159c: ; 4159c (10:559c)
|
Trade_CircleOAM3: ; 4159c (10:559c)
|
||||||
db $3B,$70,$3A,$70
|
db $3B,$70,$3A,$70
|
||||||
db $39,$70,$38,$70
|
db $39,$70,$38,$70
|
||||||
|
|
||||||
|
@ -647,7 +738,8 @@ Trade_LoadMonSprite: ; 415a4 (10:55a4)
|
||||||
ld c, 10
|
ld c, 10
|
||||||
jp DelayFrames
|
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 a, $1
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
call ClearScreen
|
call ClearScreen
|
||||||
|
@ -661,7 +753,8 @@ Func_415c8: ; 415c8 (10:55c8)
|
||||||
ld [hSCX], a
|
ld [hSCX], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
Func_415df: ; 415df (10:55df)
|
Trade_SlideTextBoxOffScreen: ; 415df (10:55df)
|
||||||
|
; Slides the window right until it's off screen.
|
||||||
ld c, 50
|
ld c, 50
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
.loop
|
.loop
|
||||||
|
@ -684,7 +777,7 @@ PrintTradeWentToText: ; 415fe (10:55fe)
|
||||||
call PrintText
|
call PrintText
|
||||||
ld c, 200
|
ld c, 200
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
jp Func_415df
|
jp Trade_SlideTextBoxOffScreen
|
||||||
|
|
||||||
TradeWentToText: ; 4160c (10:560c)
|
TradeWentToText: ; 4160c (10:560c)
|
||||||
TX_FAR _TradeWentToText
|
TX_FAR _TradeWentToText
|
||||||
|
@ -713,7 +806,7 @@ PrintTradeFarewellText: ; 4162d (10:562d)
|
||||||
ld hl, TradeTransferredText
|
ld hl, TradeTransferredText
|
||||||
call PrintText
|
call PrintText
|
||||||
call Trade_Delay80
|
call Trade_Delay80
|
||||||
jp Func_415df
|
jp Trade_SlideTextBoxOffScreen
|
||||||
|
|
||||||
TradeWavesFarewellText: ; 41642 (10:5642)
|
TradeWavesFarewellText: ; 41642 (10:5642)
|
||||||
TX_FAR _TradeWavesFarewellText
|
TX_FAR _TradeWavesFarewellText
|
||||||
|
|
17
wram.asm
17
wram.asm
|
@ -658,9 +658,17 @@ wTradedEnemyMonOTID:: ; cd59
|
||||||
|
|
||||||
wcd5b:: ds 1
|
wcd5b:: ds 1
|
||||||
wcd5c:: ds 1
|
wcd5c:: ds 1
|
||||||
wcd5d:: ds 1
|
|
||||||
wcd5e:: ds 1
|
wMonPartySpriteSpecies:: ; cd5d
|
||||||
wcd5f:: ds 1
|
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
|
wFlags_0xcd60:: ; cd60
|
||||||
; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaneously)
|
; 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
|
; number of tiles in current battle animation frame block
|
||||||
ds 1
|
ds 1
|
||||||
|
|
||||||
|
wTradedMonMovingRight:: ; d08a
|
||||||
|
; $01 if mon is moving from left gameboy to right gameboy; $00 if vice versa
|
||||||
|
|
||||||
wd08a:: ds 1
|
wd08a:: ds 1
|
||||||
|
|
||||||
wTownMapSpriteBlinkingCounter:: ; d08b
|
wTownMapSpriteBlinkingCounter:: ; d08b
|
||||||
|
|
Loading…
Reference in a new issue