summaryrefslogtreecommitdiff
path: root/engine/in_game_trades.asm
diff options
context:
space:
mode:
authorU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
committerU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
commit15427f532085846ab6b51719be687951a094cb6c (patch)
treeedea9b189e91641a12dd521756894df84aeeace7 /engine/in_game_trades.asm
parentea3ba4cde3706b7c77efb705555ec0c86321cbe2 (diff)
Pull a lot of engine out of main.asm
Diffstat (limited to 'engine/in_game_trades.asm')
-rwxr-xr-xengine/in_game_trades.asm329
1 files changed, 329 insertions, 0 deletions
diff --git a/engine/in_game_trades.asm b/engine/in_game_trades.asm
new file mode 100755
index 00000000..ebde5855
--- /dev/null
+++ b/engine/in_game_trades.asm
@@ -0,0 +1,329 @@
+Predef54: ; 71ad9 (1c:5ad9)
+; trigger the trade offer/action specified by wWhichTrade
+ call SaveScreenTilesToBuffer2
+ ld hl,TradeMons
+ ld a,[wWhichTrade]
+ ld b,a
+ swap a
+ sub b
+ sub b
+ ld c,a
+ ld b,$0
+ add hl,bc
+ ld a,[hli]
+ ld [$cd0f],a
+ ld a,[hli]
+ ld [$cd34],a
+ ld a,[hli]
+ push af
+ ld de,$cd29
+ ld bc,$000b
+ call CopyData
+ pop af
+ ld l,a
+ ld h,$0
+ ld de,InGameTradeTextPointers ; $5d64
+ add hl,hl
+ add hl,de
+ ld a,[hli]
+ ld [$cd10],a
+ ld a,[hl]
+ ld [$cd11],a
+ ld a,[$cd0f]
+ ld de,$cd13
+ call Func_71b6a
+ ld a,[$cd34]
+ ld de,$cd1e
+ call Func_71b6a
+ ld hl,$d737
+ ld a,[wWhichTrade]
+ ld c,a
+ ld b,$2
+ ld a,$10
+ call Predef
+ ld a,c
+ and a
+ ld a,$4
+ ld [$cd12],a
+ jr nz,.asm_99bca ; 0x71b36 $20
+ xor a
+ ld [$cd12],a
+ call .asm_99bca
+ ld a,$1
+ ld [$cd12],a
+ call YesNoChoice
+ ld a,[$cc26]
+ and a
+ jr nz,.asm_99bca ; 0x71b4b $b
+ call Func_71c07
+ jr c,.asm_99bca ; 0x71b50 $6
+ ld hl, TradedForText
+ call PrintText
+.asm_99bca ; 0x71b58
+ ld hl,$cd12
+ ld a,[hld]
+ ld e,a
+ ld d,$0
+ ld a,[hld]
+ ld l,[hl]
+ ld h,a
+ add hl,de
+ add hl,de
+ ld a,[hli]
+ ld h,[hl]
+ ld l,a
+ jp PrintText
+
+Func_71b6a: ; 71b6a (1c:5b6a)
+ push de
+ ld [$d11e],a
+ call GetMonName
+ ld hl,$cd6d
+ pop de
+ ld bc,$b
+ jp CopyData
+
+INCLUDE "data/trades.asm"
+
+Func_71c07: ; 71c07 (1c:5c07)
+ xor a
+ ld [$d07d],a
+ dec a
+ ld [$cfcb],a
+ call DisplayPartyMenu
+ push af
+ call Func_71ca2
+ pop af
+ ld a,$1
+ jp c,.asm_c4bc2
+ ld a,[$cd0f]
+ ld b,a
+ ld a,[$cf91]
+ cp b
+ ld a,$2
+ jr nz,.asm_c4bc2 ; 0x71c26 $75
+ ld a,[wWhichPokemon]
+ ld hl,$d18c
+ ld bc,$002c
+ call AddNTimes
+ ld a,[hl]
+ ld [$d127],a
+ ld hl,$d737
+ ld a,[wWhichTrade]
+ ld c,a
+ ld b,$1
+ ld a,$10
+ call Predef
+ ld hl, ConnectCableText
+ call PrintText
+ ld a,[wWhichPokemon]
+ push af
+ ld a,[$d127]
+ push af
+ call LoadHpBarAndStatusTilePatterns
+ call Func_71cc1
+ ld a,$38
+ call Predef
+ pop af
+ ld [$d127],a
+ pop af
+ ld [wWhichPokemon],a
+ ld a,[$cd34]
+ ld [$cf91],a
+ xor a
+ ld [$cc49],a
+ ld [$cf95],a
+ call RemovePokemon
+ ld a,$80
+ ld [$cc49],a
+ call AddPokemonToParty
+ call Func_71d19
+ callab EvolveTradeMon
+ call ClearScreen
+ call Func_71ca2
+ callba Func_eedc
+ and a
+ ld a,$3
+ jr .asm_ee803 ; 0x71c9b $1
+.asm_c4bc2 ; 0x71c9d
+ scf
+.asm_ee803 ; 0x71c9e
+ ld [$cd12],a
+ ret
+
+Func_71ca2: ; 71ca2 (1c:5ca2)
+ call GBPalWhiteOutWithDelay3
+ call Func_3dbe
+ call ReloadTilesetTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call LoadGBPal
+ ld c, $a
+ call DelayFrames
+ ld b, BANK(LoadWildData)
+ ld hl, LoadWildData
+ jp Bankswitch
+
+Func_71cc1: ; 71cc1 (1c:5cc1)
+ ld hl, wWhichTrade ; $cd3d
+ ld a, [$cd0f]
+ ld [hli], a
+ ld a, [$cd34]
+ ld [hl], a
+ ld hl, W_PARTYMON1OT ; $d273
+ ld bc, $b
+ ld a, [wWhichPokemon] ; $cf92
+ call AddNTimes
+ ld de, $cd41
+ ld bc, $b
+ call Func_71d11
+ ld hl, String_71d59 ; $5d59
+ ld de, $cd4e
+ call Func_71d11
+ ld de, W_GRASSRATE ; $d887
+ call Func_71d11
+ ld hl, W_PARTYMON1_OTID ; $d177
+ ld bc, $2c
+ ld a, [wWhichPokemon] ; $cf92
+ call AddNTimes
+ ld de, $cd4c
+ ld bc, $2
+ call Func_71d11
+ call GenRandom
+ ld hl, H_RAND1 ; $ffd3
+ ld de, $cd59
+ jp CopyData
+
+Func_71d11: ; 71d11 (1c:5d11)
+ push hl
+ push bc
+ call CopyData
+ pop bc
+ pop hl
+ ret
+
+Func_71d19: ; 71d19 (1c:5d19)
+ ld hl, W_PARTYMON1NAME ; $d2b5
+ ld bc, $b
+ call Func_71d4f
+ ld hl, $cd29
+ ld bc, $b
+ call CopyData
+ ld hl, W_PARTYMON1OT ; $d273
+ ld bc, $b
+ call Func_71d4f
+ ld hl, String_71d59 ; $5d59
+ ld bc, $b
+ call CopyData
+ ld hl, W_PARTYMON1_OTID ; $d177
+ ld bc, $2c
+ call Func_71d4f
+ ld hl, $cd59
+ ld bc, $2
+ jp CopyData
+
+Func_71d4f: ; 71d4f (1c:5d4f)
+ ld a, [W_NUMINPARTY] ; $d163
+ dec a
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ret
+
+String_71d59: ; 71d59 (1c:5d59)
+ ; "TRAINER@@@@@@@@@@"
+ db $5d, "@@@@@@@@@@"
+
+InGameTradeTextPointers: ; 71d64 (1c:5d64)
+ dw TradeTextPointers1
+ dw TradeTextPointers2
+ dw TradeTextPointers3
+
+TradeTextPointers1: ; 71d6a (1c:5d6a)
+ dw WannaTrade1Text
+ dw NoTrade1Text
+ dw WrongMon1Text
+ dw Thanks1Text
+ dw AfterTrade1Text
+
+TradeTextPointers2: ; 71d74 (1c:5d74)
+ dw WannaTrade2Text
+ dw NoTrade2Text
+ dw WrongMon2Text
+ dw Thanks2Text
+ dw AfterTrade2Text
+
+TradeTextPointers3: ; 71d7e (1c:5d7e)
+ dw WannaTrade3Text
+ dw NoTrade3Text
+ dw WrongMon3Text
+ dw Thanks3Text
+ dw AfterTrade3Text
+
+ConnectCableText: ; 71d88 (1c:5d88)
+ TX_FAR _ConnectCableText
+ db "@"
+
+TradedForText: ; 71d8d (1c:5d8d)
+ TX_FAR _TradedForText
+ db $11, $a, "@"
+
+WannaTrade1Text: ; 71d94 (1c:5d94)
+ TX_FAR _WannaTrade1Text
+ db "@"
+
+NoTrade1Text: ; 71d99 (1c:5d99)
+ TX_FAR _NoTrade1Text
+ db "@"
+
+WrongMon1Text: ; 71d9e (1c:5d9e)
+ TX_FAR _WrongMon1Text
+ db "@"
+
+Thanks1Text: ; 71da3 (1c:5da3)
+ TX_FAR _Thanks1Text
+ db "@"
+
+AfterTrade1Text: ; 71da8 (1c:5da8)
+ TX_FAR _AfterTrade1Text
+ db "@"
+
+WannaTrade2Text: ; 71dad (1c:5dad)
+ TX_FAR _WannaTrade2Text
+ db "@"
+
+NoTrade2Text: ; 71db2 (1c:5db2)
+ TX_FAR _NoTrade2Text
+ db "@"
+
+WrongMon2Text: ; 71db7 (1c:5db7)
+ TX_FAR _WrongMon2Text
+ db "@"
+
+Thanks2Text: ; 71dbc (1c:5dbc)
+ TX_FAR _Thanks2Text
+ db "@"
+
+AfterTrade2Text: ; 71dc1 (1c:5dc1)
+ TX_FAR _AfterTrade2Text
+ db "@"
+
+WannaTrade3Text: ; 71dc6 (1c:5dc6)
+ TX_FAR _WannaTrade3Text
+ db "@"
+
+NoTrade3Text: ; 71dcb (1c:5dcb)
+ TX_FAR _NoTrade3Text
+ db "@"
+
+WrongMon3Text: ; 71dd0 (1c:5dd0)
+ TX_FAR _WrongMon3Text
+ db "@"
+
+Thanks3Text: ; 71dd5 (1c:5dd5)
+ TX_FAR _Thanks3Text
+ db "@"
+
+AfterTrade3Text: ; 71dda (1c:5dda)
+ TX_FAR _AfterTrade3Text
+ db "@"