mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
31cce83e9b
(This is not expected to be their final location, but it makes them easier to relocate when necessary, and easier for users to edit until the whole project's file structure is finalized.)
602 lines
9.5 KiB
NASM
Executable File
602 lines
9.5 KiB
NASM
Executable File
; Trade dialogs
|
|
const_def
|
|
const TRADE_INTRO
|
|
const TRADE_CANCEL
|
|
const TRADE_WRONG
|
|
const TRADE_COMPLETE
|
|
const TRADE_AFTER
|
|
|
|
NPCTrade:: ; fcba8
|
|
ld a, e
|
|
ld [wJumptableIndex], a
|
|
call Trade_GetDialog
|
|
ld b, CHECK_FLAG
|
|
call TradeFlagAction
|
|
ld a, TRADE_AFTER
|
|
jr nz, .done
|
|
|
|
ld a, TRADE_INTRO
|
|
call PrintTradeText
|
|
|
|
call YesNoBox
|
|
ld a, TRADE_CANCEL
|
|
jr c, .done
|
|
|
|
; Select givemon from party
|
|
ld b, PARTYMENUACTION_GIVE_MON
|
|
callba SelectTradeOrDayCareMon
|
|
ld a, TRADE_CANCEL
|
|
jr c, .done
|
|
|
|
ld e, TRADE_GIVEMON
|
|
call GetTradeAttribute
|
|
ld a, [CurPartySpecies]
|
|
cp [hl]
|
|
ld a, TRADE_WRONG
|
|
jr nz, .done
|
|
|
|
call CheckTradeGender
|
|
ld a, TRADE_WRONG
|
|
jr c, .done
|
|
|
|
ld b, SET_FLAG
|
|
call TradeFlagAction
|
|
|
|
ld hl, ConnectLinkCableText
|
|
call PrintText
|
|
|
|
call DoNPCTrade
|
|
call .TradeAnimation
|
|
call GetTradeMonNames
|
|
|
|
ld hl, TradedForText
|
|
call PrintText
|
|
|
|
call RestartMapMusic
|
|
|
|
ld a, TRADE_COMPLETE
|
|
|
|
.done
|
|
call PrintTradeText
|
|
ret
|
|
; fcc07
|
|
|
|
.TradeAnimation: ; fcc07
|
|
call DisableSpriteUpdates
|
|
ld a, [wJumptableIndex]
|
|
push af
|
|
ld a, [wcf64]
|
|
push af
|
|
predef TradeAnimation
|
|
pop af
|
|
ld [wcf64], a
|
|
pop af
|
|
ld [wJumptableIndex], a
|
|
call ReturnToMapWithSpeechTextbox
|
|
ret
|
|
; fcc23
|
|
|
|
CheckTradeGender: ; fcc23
|
|
xor a
|
|
ld [MonType], a
|
|
|
|
ld e, TRADE_GENDER
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
and a
|
|
jr z, .matching
|
|
cp 1
|
|
jr z, .check_male
|
|
|
|
callba GetGender
|
|
jr nz, .not_matching
|
|
jr .matching
|
|
|
|
.check_male
|
|
callba GetGender
|
|
jr z, .not_matching
|
|
|
|
.matching
|
|
and a
|
|
ret
|
|
|
|
.not_matching
|
|
scf
|
|
ret
|
|
; fcc4a
|
|
|
|
TradeFlagAction: ; fcc4a
|
|
ld hl, wTradeFlags
|
|
ld a, [wJumptableIndex]
|
|
ld c, a
|
|
predef FlagPredef
|
|
ld a, c
|
|
and a
|
|
ret
|
|
; fcc59
|
|
|
|
Trade_GetDialog: ; fcc59
|
|
ld e, TRADE_DIALOG
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
ld [wcf64], a
|
|
ret
|
|
; fcc63
|
|
|
|
DoNPCTrade: ; fcc63
|
|
ld e, TRADE_GIVEMON
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
ld [wPlayerTrademonSpecies], a
|
|
|
|
ld e, TRADE_GETMON
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
ld [wOTTrademonSpecies], a
|
|
|
|
ld a, [wPlayerTrademonSpecies]
|
|
ld de, wPlayerTrademonSpeciesName
|
|
call GetTradeMonName
|
|
call CopyTradeName
|
|
|
|
ld a, [wOTTrademonSpecies]
|
|
ld de, wOTTrademonSpeciesName
|
|
call GetTradeMonName
|
|
call CopyTradeName
|
|
|
|
ld hl, PartyMonOT
|
|
ld bc, NAME_LENGTH
|
|
call Trade_GetAttributeOfCurrentPartymon
|
|
ld de, wPlayerTrademonOTName
|
|
call CopyTradeName
|
|
|
|
ld hl, PlayerName
|
|
ld de, wPlayerTrademonSenderName
|
|
call CopyTradeName
|
|
|
|
ld hl, PartyMon1ID
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfCurrentPartymon
|
|
ld de, wPlayerTrademonID
|
|
call Trade_CopyTwoBytes
|
|
|
|
ld hl, PartyMon1DVs
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfCurrentPartymon
|
|
ld de, wPlayerTrademonDVs
|
|
call Trade_CopyTwoBytes
|
|
|
|
ld hl, PartyMon1Species
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfCurrentPartymon
|
|
ld b, h
|
|
ld c, l
|
|
callba GetCaughtGender
|
|
ld a, c
|
|
ld [wPlayerTrademonCaughtData], a
|
|
|
|
ld e, TRADE_DIALOG
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
cp 3
|
|
ld a, 1
|
|
jr c, .okay
|
|
ld a, 2
|
|
.okay
|
|
ld [wOTTrademonCaughtData], a
|
|
|
|
ld hl, PartyMon1Level
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfCurrentPartymon
|
|
ld a, [hl]
|
|
ld [CurPartyLevel], a
|
|
ld a, [wOTTrademonSpecies]
|
|
ld [CurPartySpecies], a
|
|
xor a
|
|
ld [MonType], a
|
|
ld [wPokemonWithdrawDepositParameter], a
|
|
callab RemoveMonFromPartyOrBox
|
|
predef TryAddMonToParty
|
|
|
|
ld e, TRADE_DIALOG
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
cp TRADE_COMPLETE
|
|
ld b, RESET_FLAG
|
|
jr c, .incomplete
|
|
ld b, SET_FLAG
|
|
.incomplete
|
|
callba SetGiftPartyMonCaughtData
|
|
|
|
ld e, TRADE_NICK
|
|
call GetTradeAttribute
|
|
ld de, wOTTrademonNickname
|
|
call CopyTradeName
|
|
|
|
ld hl, PartyMonNicknames
|
|
ld bc, PKMN_NAME_LENGTH
|
|
call Trade_GetAttributeOfLastPartymon
|
|
ld hl, wOTTrademonNickname
|
|
call CopyTradeName
|
|
|
|
ld e, TRADE_OT_NAME
|
|
call GetTradeAttribute
|
|
push hl
|
|
ld de, wOTTrademonOTName
|
|
call CopyTradeName
|
|
pop hl
|
|
ld de, wOTTrademonSenderName
|
|
call CopyTradeName
|
|
|
|
ld hl, PartyMonOT
|
|
ld bc, NAME_LENGTH
|
|
call Trade_GetAttributeOfLastPartymon
|
|
ld hl, wOTTrademonOTName
|
|
call CopyTradeName
|
|
|
|
ld e, TRADE_DVS
|
|
call GetTradeAttribute
|
|
ld de, wOTTrademonDVs
|
|
call Trade_CopyTwoBytes
|
|
|
|
ld hl, PartyMon1DVs
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfLastPartymon
|
|
ld hl, wOTTrademonDVs
|
|
call Trade_CopyTwoBytes
|
|
|
|
ld e, TRADE_OT_ID
|
|
call GetTradeAttribute
|
|
ld de, wOTTrademonID + 1
|
|
call Trade_CopyTwoBytesReverseEndian
|
|
|
|
ld hl, PartyMon1ID
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfLastPartymon
|
|
ld hl, wOTTrademonID
|
|
call Trade_CopyTwoBytes
|
|
|
|
ld e, TRADE_ITEM
|
|
call GetTradeAttribute
|
|
push hl
|
|
ld hl, PartyMon1Item
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
call Trade_GetAttributeOfLastPartymon
|
|
pop hl
|
|
ld a, [hl]
|
|
ld [de], a
|
|
|
|
push af
|
|
push bc
|
|
push de
|
|
push hl
|
|
ld a, [CurPartyMon]
|
|
push af
|
|
ld a, [PartyCount]
|
|
dec a
|
|
ld [CurPartyMon], a
|
|
callba ComputeNPCTrademonStats
|
|
pop af
|
|
ld [CurPartyMon], a
|
|
pop hl
|
|
pop de
|
|
pop bc
|
|
pop af
|
|
ret
|
|
; fcdc2
|
|
|
|
|
|
GetTradeAttribute: ; 0xfcdc2
|
|
ld d, 0
|
|
push de
|
|
ld a, [wJumptableIndex]
|
|
and $f
|
|
swap a
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, NPCTrades
|
|
add hl, de
|
|
add hl, de
|
|
pop de
|
|
add hl, de
|
|
ret
|
|
; 0xfcdd7
|
|
|
|
Trade_GetAttributeOfCurrentPartymon: ; fcdd7
|
|
ld a, [CurPartyMon]
|
|
call AddNTimes
|
|
ret
|
|
; fcdde
|
|
|
|
Trade_GetAttributeOfLastPartymon: ; fcdde
|
|
ld a, [PartyCount]
|
|
dec a
|
|
call AddNTimes
|
|
ld e, l
|
|
ld d, h
|
|
ret
|
|
; fcde8
|
|
|
|
GetTradeMonName: ; fcde8
|
|
push de
|
|
ld [wd265], a
|
|
call GetBasePokemonName
|
|
ld hl, StringBuffer1
|
|
pop de
|
|
ret
|
|
; fcdf4
|
|
|
|
CopyTradeName: ; fcdf4
|
|
ld bc, NAME_LENGTH
|
|
call CopyBytes
|
|
ret
|
|
; fcdfb
|
|
|
|
Functionfcdfb: ; fcdfb
|
|
; unreferenced
|
|
ld bc, 4
|
|
call CopyBytes
|
|
ld a, "@"
|
|
ld [de], a
|
|
ret
|
|
; fce05
|
|
|
|
Functionfce05: ; fce05
|
|
; unreferenced
|
|
ld bc, 3
|
|
call CopyBytes
|
|
ld a, "@"
|
|
ld [de], a
|
|
ret
|
|
; fce0f
|
|
|
|
Trade_CopyTwoBytes: ; fce0f
|
|
ld a, [hli]
|
|
ld [de], a
|
|
inc de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
ret
|
|
; fce15
|
|
|
|
Trade_CopyTwoBytesReverseEndian: ; fce15
|
|
ld a, [hli]
|
|
ld [de], a
|
|
dec de
|
|
ld a, [hl]
|
|
ld [de], a
|
|
ret
|
|
; fce1b
|
|
|
|
GetTradeMonNames: ; fce1b
|
|
ld e, TRADE_GETMON
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
call GetTradeMonName
|
|
|
|
ld de, StringBuffer2
|
|
call CopyTradeName
|
|
|
|
ld e, TRADE_GIVEMON
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
call GetTradeMonName
|
|
|
|
ld de, wMonOrItemNameBuffer
|
|
call CopyTradeName
|
|
|
|
ld hl, StringBuffer1
|
|
.loop
|
|
ld a, [hli]
|
|
cp "@"
|
|
jr nz, .loop
|
|
|
|
dec hl
|
|
push hl
|
|
ld e, TRADE_GENDER
|
|
call GetTradeAttribute
|
|
ld a, [hl]
|
|
pop hl
|
|
and a
|
|
ret z
|
|
|
|
cp 1
|
|
ld a, "♂"
|
|
jr z, .done
|
|
ld a, "♀"
|
|
.done
|
|
ld [hli], a
|
|
ld [hl], "@"
|
|
ret
|
|
; fce58
|
|
|
|
|
|
NPCTrades: ; fce58
|
|
INCLUDE "data/npc_trades.asm"
|
|
; fcf38
|
|
|
|
|
|
PrintTradeText: ; fcf38
|
|
push af
|
|
call GetTradeMonNames
|
|
pop af
|
|
ld bc, 2 * 4
|
|
ld hl, TradeTexts
|
|
call AddNTimes
|
|
ld a, [wcf64]
|
|
ld c, a
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
call PrintText
|
|
ret
|
|
; fcf53
|
|
|
|
TradeTexts: ; fcf53
|
|
; intro
|
|
dw TradeIntroText1
|
|
dw TradeIntroText2
|
|
dw TradeIntroText3
|
|
dw TradeIntroText4
|
|
|
|
; cancel
|
|
dw TradeCancelText1
|
|
dw TradeCancelText2
|
|
dw TradeCancelText3
|
|
dw TradeCancelText4
|
|
|
|
; wrong mon
|
|
dw TradeWrongText1
|
|
dw TradeWrongText2
|
|
dw TradeWrongText3
|
|
dw TradeWrongText4
|
|
|
|
; completed
|
|
dw TradeCompleteText1
|
|
dw TradeCompleteText2
|
|
dw TradeCompleteText3
|
|
dw TradeCompleteText4
|
|
|
|
; after
|
|
dw TradeAfterText1
|
|
dw TradeAfterText2
|
|
dw TradeAfterText3
|
|
dw TradeAfterText4
|
|
; fcf7b
|
|
|
|
|
|
ConnectLinkCableText: ; 0xfcf7b
|
|
; OK, connect the Game Link Cable.
|
|
text_jump UnknownText_0x1bd407
|
|
db "@"
|
|
; 0xfcf80
|
|
|
|
|
|
TradedForText: ; 0xfcf80
|
|
; traded givemon for getmon
|
|
text_jump UnknownText_0x1bd429
|
|
start_asm
|
|
ld de, MUSIC_NONE
|
|
call PlayMusic
|
|
call DelayFrame
|
|
ld hl, .done
|
|
ret
|
|
|
|
.done
|
|
; sound_dex_fanfare_80_109
|
|
; interpret_data
|
|
text_jump UnknownText_0x1bd445
|
|
db "@"
|
|
; 0xfcf97
|
|
|
|
|
|
TradeIntroText1: ; 0xfcf97
|
|
; I collect #MON. Do you have @ ? Want to trade it for my @ ?
|
|
text_jump UnknownText_0x1bd449
|
|
db "@"
|
|
; 0xfcf9c
|
|
|
|
TradeCancelText1: ; 0xfcf9c
|
|
; You don't want to trade? Aww…
|
|
text_jump UnknownText_0x1bd48c
|
|
db "@"
|
|
; 0xfcfa1
|
|
|
|
TradeWrongText1: ; 0xfcfa1
|
|
; Huh? That's not @ . What a letdown…
|
|
text_jump UnknownText_0x1bd4aa
|
|
db "@"
|
|
; 0xfcfa6
|
|
|
|
TradeCompleteText1: ; 0xfcfa6
|
|
; Yay! I got myself @ ! Thanks!
|
|
text_jump UnknownText_0x1bd4d2
|
|
db "@"
|
|
; 0xfcfab
|
|
|
|
TradeAfterText1: ; 0xfcfab
|
|
; Hi, how's my old @ doing?
|
|
text_jump UnknownText_0x1bd4f4
|
|
db "@"
|
|
; 0xfcfb0
|
|
|
|
|
|
TradeIntroText2:
|
|
TradeIntroText3: ; 0xfcfb0
|
|
; Hi, I'm looking for this #MON. If you have @ , would you trade it for my @ ?
|
|
text_jump UnknownText_0x1bd512
|
|
db "@"
|
|
; 0xfcfb5
|
|
|
|
TradeCancelText2:
|
|
TradeCancelText3: ; 0xfcfb5
|
|
; You don't have one either? Gee, that's really disappointing…
|
|
text_jump UnknownText_0x1bd565
|
|
db "@"
|
|
; 0xfcfba
|
|
|
|
TradeWrongText2:
|
|
TradeWrongText3: ; 0xfcfba
|
|
; You don't have @ ? That's too bad, then.
|
|
text_jump UnknownText_0x1bd5a1
|
|
db "@"
|
|
; 0xfcfbf
|
|
|
|
TradeCompleteText2: ; 0xfcfbf
|
|
; Great! Thank you! I finally got @ .
|
|
text_jump UnknownText_0x1bd5cc
|
|
db "@"
|
|
; 0xfcfc4
|
|
|
|
TradeAfterText2: ; 0xfcfc4
|
|
; Hi! The @ you traded me is doing great!
|
|
text_jump UnknownText_0x1bd5f4
|
|
db "@"
|
|
; 0xfcfc9
|
|
|
|
|
|
TradeIntroText4: ; 0xfcfc9
|
|
; 's cute, but I don't have it. Do you have @ ? Want to trade it for my @ ?
|
|
text_jump UnknownText_0x1bd621
|
|
db "@"
|
|
; 0xfcfce
|
|
|
|
TradeCancelText4: ; 0xfcfce
|
|
; You don't want to trade? Oh, darn…
|
|
text_jump UnknownText_0x1bd673
|
|
db "@"
|
|
; 0xfcfd3
|
|
|
|
TradeWrongText4: ; 0xfcfd3
|
|
; That's not @ . Please trade with me if you get one.
|
|
text_jump UnknownText_0x1bd696
|
|
db "@"
|
|
; 0xfcfd8
|
|
|
|
TradeCompleteText4: ; 0xfcfd8
|
|
; Wow! Thank you! I always wanted @ !
|
|
text_jump UnknownText_0x1bd6cd
|
|
db "@"
|
|
; 0xfcfdd
|
|
|
|
TradeAfterText4: ; 0xfcfdd
|
|
; How is that @ I traded you doing? Your @ 's so cute!
|
|
text_jump UnknownText_0x1bd6f5
|
|
db "@"
|
|
; 0xfcfe2
|
|
|
|
|
|
TradeCompleteText3: ; 0xfcfe2
|
|
; Uh? What happened?
|
|
text_jump UnknownText_0x1bd731
|
|
db "@"
|
|
; 0xfcfe7
|
|
|
|
TradeAfterText3: ; 0xfcfe7
|
|
; Trading is so odd… I still have a lot to learn about it.
|
|
text_jump UnknownText_0x1bd745
|
|
db "@"
|
|
; 0xfcfec
|