diff options
Diffstat (limited to 'engine/in_game_trades.asm')
-rwxr-xr-x | engine/in_game_trades.asm | 329 |
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 "@" |