summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/npc_trade_constants.asm2
-rw-r--r--data/events/npc_trades.asm16
-rw-r--r--engine/events/npc_trade.asm478
-rw-r--r--engine/tilesets/tileset_anims.asm167
-rw-r--r--main.asm4
-rw-r--r--wram.asm2
6 files changed, 581 insertions, 88 deletions
diff --git a/constants/npc_trade_constants.asm b/constants/npc_trade_constants.asm
index f84db5df..6e1d45c9 100644
--- a/constants/npc_trade_constants.asm
+++ b/constants/npc_trade_constants.asm
@@ -18,7 +18,6 @@ NPCTRADE_PADDING EQU 31 ; db
const NPC_TRADE_EMY ; 3
const NPC_TRADE_CHRIS ; 4
const NPC_TRADE_KIM ; 5
- const NPC_TRADE_FOREST ; 6
NUM_NPC_TRADES EQU const_value
; trade gender limits
@@ -42,4 +41,3 @@ NUM_NPC_TRADES EQU const_value
const TRADE_DIALOGSET_COLLECTOR
const TRADE_DIALOGSET_HAPPY
const TRADE_DIALOGSET_NEWBIE
- const TRADE_DIALOGSET_GIRL
diff --git a/data/events/npc_trades.asm b/data/events/npc_trades.asm
new file mode 100644
index 00000000..dae70fe0
--- /dev/null
+++ b/data/events/npc_trades.asm
@@ -0,0 +1,16 @@
+npctrade: MACRO
+; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
+ db \1, \2, \3, \4, \5, \6, \7
+ shift
+ dw \7
+ db \8, \9, 0
+ENDM
+
+NPCTrades:
+; entries correspond to NPCTRADE_* constants
+ npctrade TRADE_DIALOGSET_COLLECTOR, DROWZEE, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_GENDER_EITHER
+ npctrade TRADE_DIALOGSET_COLLECTOR, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_GENDER_EITHER
+ npctrade TRADE_DIALOGSET_HAPPY, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_GENDER_EITHER
+ npctrade TRADE_DIALOGSET_NEWBIE, DRAGONAIR, RHYDON, "DON@@@@@@@@", $77, $66, BITTER_BERRY, 00283, "EMY@@@@@@@@", TRADE_GENDER_FEMALE
+ npctrade TRADE_DIALOGSET_HAPPY, GLOOM, RAPIDASH, "RUNNY@@@@@@", $96, $66, BURNT_BERRY, 15616, "CHRIS@@@@@@", TRADE_GENDER_EITHER
+ npctrade TRADE_DIALOGSET_NEWBIE, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_GENDER_EITHER
diff --git a/engine/events/npc_trade.asm b/engine/events/npc_trade.asm
new file mode 100644
index 00000000..ce8a64d6
--- /dev/null
+++ b/engine/events/npc_trade.asm
@@ -0,0 +1,478 @@
+NPCTrade::
+ ld a, e
+ ld [wJumptableIndex], a
+ call Trade_GetDialog
+ ld b, CHECK_FLAG
+ call TradeFlagAction
+ ld a, TRADE_DIALOG_AFTER
+ jr nz, .done
+
+ ld a, TRADE_DIALOG_INTRO
+ call PrintTradeText
+
+ call YesNoBox
+ ld a, TRADE_DIALOG_CANCEL
+ jr c, .done
+
+; Select givemon from party
+ ld b, PARTYMENUACTION_GIVE_MON
+ farcall SelectTradeOrDayCareMon
+ ld a, TRADE_DIALOG_CANCEL
+ jr c, .done
+
+ ld e, NPCTRADE_GIVEMON
+ call GetTradeAttribute
+ ld a, [wCurPartySpecies]
+ cp [hl]
+ ld a, TRADE_DIALOG_WRONG
+ jr nz, .done
+
+ call CheckTradeGender
+ ld a, TRADE_DIALOG_WRONG
+ jr c, .done
+
+ ld b, SET_FLAG
+ call TradeFlagAction
+
+ ld hl, NPCTradeCableText
+ call PrintText
+
+ call DoNPCTrade
+ call .TradeAnimation
+ call GetTradeMonNames
+
+ ld hl, TradedForText
+ call PrintText
+
+ call RestartMapMusic
+
+ ld a, TRADE_DIALOG_COMPLETE
+
+.done
+ call PrintTradeText
+ ret
+
+.TradeAnimation:
+ call DisableSpriteUpdates
+ ld a, [wJumptableIndex]
+ push af
+ ld a, [wce64]
+ push af
+ predef TradeAnimation
+ pop af
+ ld [wce64], a
+ pop af
+ ld [wJumptableIndex], a
+ call ReturnToMapWithSpeechTextbox
+ ret
+
+CheckTradeGender:
+ xor a
+ ld [wMonType], a
+
+ ld e, NPCTRADE_GENDER
+ call GetTradeAttribute
+ ld a, [hl]
+ and a ; TRADE_GENDER_EITHER
+ jr z, .matching
+ cp TRADE_GENDER_MALE
+ jr z, .check_male
+ ; TRADE_GENDER_FEMALE
+ farcall GetGender
+ jr nz, .not_matching
+ jr .matching
+
+.check_male
+ farcall GetGender
+ jr z, .not_matching
+
+.matching
+ and a
+ ret
+
+.not_matching
+ scf
+ ret
+
+TradeFlagAction:
+ ld hl, wTradeFlags
+ ld a, [wJumptableIndex]
+ ld c, a
+ predef SmallFarFlagAction
+ ld a, c
+ and a
+ ret
+
+Trade_GetDialog:
+ ld e, NPCTRADE_DIALOG
+ call GetTradeAttribute
+ ld a, [hl]
+ ld [wce64], a
+ ret
+
+DoNPCTrade:
+ ld e, NPCTRADE_GIVEMON
+ call GetTradeAttribute
+ ld a, [hl]
+ ld [wPlayerTrademonSpecies], a
+
+ ld e, NPCTRADE_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, wPartyMonOT
+ ld bc, NAME_LENGTH
+ call Trade_GetAttributeOfCurrentPartymon
+ ld de, wPlayerTrademonOTName
+ call CopyTradeName
+
+ ld hl, wPlayerName
+ ld de, wPlayerTrademonSenderName
+ call CopyTradeName
+
+ ld hl, wPartyMon1ID
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Trade_GetAttributeOfCurrentPartymon
+ ld de, wPlayerTrademonID
+ call Trade_CopyTwoBytes
+
+ ld hl, wPartyMon1DVs
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Trade_GetAttributeOfCurrentPartymon
+ ld de, wPlayerTrademonDVs
+ call Trade_CopyTwoBytes
+
+ ld hl, wPartyMon1Level
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Trade_GetAttributeOfCurrentPartymon
+ ld a, [hl]
+ ld [wCurPartyLevel], a
+ ld a, [wOTTrademonSpecies]
+ ld [wCurPartySpecies], a
+ xor a
+ ld [wMonType], a ; PARTYMON
+ ld [wPokemonWithdrawDepositParameter], a ; REMOVE_PARTY
+ callfar RemoveMonFromPartyOrBox
+ predef TryAddMonToParty
+
+ ld e, NPCTRADE_NICK
+ call GetTradeAttribute
+ ld de, wOTTrademonNickname
+ call CopyTradeName
+
+ ld hl, wPartyMonNicknames
+ ld bc, MON_NAME_LENGTH
+ call Trade_GetAttributeOfLastPartymon
+ ld hl, wOTTrademonNickname
+ call CopyTradeName
+
+ ld e, NPCTRADE_OT_NAME
+ call GetTradeAttribute
+ push hl
+ ld de, wOTTrademonOTName
+ call CopyTradeName
+ pop hl
+ ld de, wOTTrademonSenderName
+ call CopyTradeName
+
+ ld hl, wPartyMonOT
+ ld bc, NAME_LENGTH
+ call Trade_GetAttributeOfLastPartymon
+ ld hl, wOTTrademonOTName
+ call CopyTradeName
+
+ ld e, NPCTRADE_DVS
+ call GetTradeAttribute
+ ld de, wOTTrademonDVs
+ call Trade_CopyTwoBytes
+
+ ld hl, wPartyMon1DVs
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Trade_GetAttributeOfLastPartymon
+ ld hl, wOTTrademonDVs
+ call Trade_CopyTwoBytes
+
+ ld e, NPCTRADE_OT_ID
+ call GetTradeAttribute
+ ld de, wOTTrademonID + 1
+ call Trade_CopyTwoBytesReverseEndian
+
+ ld hl, wPartyMon1ID
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Trade_GetAttributeOfLastPartymon
+ ld hl, wOTTrademonID
+ call Trade_CopyTwoBytes
+
+ ld e, NPCTRADE_ITEM
+ call GetTradeAttribute
+ push hl
+ ld hl, wPartyMon1Item
+ 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, [wCurPartyMon]
+ push af
+ ld a, [wPartyCount]
+ dec a
+ ld [wCurPartyMon], a
+ farcall ComputeNPCTrademonStats
+ pop af
+ ld [wCurPartyMon], a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+
+GetTradeAttribute:
+ 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
+
+Trade_GetAttributeOfCurrentPartymon:
+ ld a, [wCurPartyMon]
+ call AddNTimes
+ ret
+
+Trade_GetAttributeOfLastPartymon:
+ ld a, [wPartyCount]
+ dec a
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ret
+
+GetTradeMonName:
+ push de
+ ld [wNamedObjectIndexBuffer], a
+ call GetBasePokemonName
+ ld hl, wStringBuffer1
+ pop de
+ ret
+
+CopyTradeName:
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ret
+
+Unreferenced_Functionfcdfb:
+ ld bc, 4
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ret
+
+Unreferenced_Functionfce05:
+ ld bc, 3
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ret
+
+Trade_CopyTwoBytes:
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ret
+
+Trade_CopyTwoBytesReverseEndian:
+ ld a, [hli]
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld [de], a
+ ret
+
+GetTradeMonNames:
+ ld e, NPCTRADE_GETMON
+ call GetTradeAttribute
+ ld a, [hl]
+ call GetTradeMonName
+
+ ld de, wStringBuffer2
+ call CopyTradeName
+
+ ld e, NPCTRADE_GIVEMON
+ call GetTradeAttribute
+ ld a, [hl]
+ call GetTradeMonName
+
+ ld de, wMonOrItemNameBuffer
+ call CopyTradeName
+
+ ld hl, wStringBuffer1
+.loop
+ ld a, [hli]
+ cp "@"
+ jr nz, .loop
+
+ dec hl
+ push hl
+ ld e, NPCTRADE_GENDER
+ call GetTradeAttribute
+ ld a, [hl]
+ pop hl
+ and a ; TRADE_GENDER_EITHER
+ ret z
+ cp TRADE_GENDER_MALE
+ ld a, "♂"
+ jr z, .done
+ ; TRADE_GENDER_FEMALE
+ ld a, "♀"
+.done
+ ld [hli], a
+ ld [hl], "@"
+ ret
+
+INCLUDE "data/events/npc_trades.asm"
+
+PrintTradeText:
+ push af
+ call GetTradeMonNames
+ pop af
+ ld e, a
+ ld d, 0
+ ld hl, TradeTexts
+rept 6
+ add hl, de
+endr
+ ld a, [wce64]
+ ld e, a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ ret
+
+TradeTexts:
+; entries correspond to TRADE_DIALOG_* × TRADE_DIALOGSET_* constants
+; TRADE_DIALOG_INTRO
+ dw NPCTradeIntroText1
+ dw NPCTradeIntroText2
+ dw NPCTradeIntroText3
+; TRADE_DIALOG_CANCEL
+ dw NPCTradeCancelText1
+ dw NPCTradeCancelText2
+ dw NPCTradeCancelText3
+; TRADE_DIALOG_WRONG
+ dw NPCTradeWrongText1
+ dw NPCTradeWrongText2
+ dw NPCTradeWrongText3
+; TRADE_DIALOG_COMPLETE
+ dw NPCTradeCompleteText1
+ dw NPCTradeCompleteText2
+ dw NPCTradeCompleteText3
+; TRADE_DIALOG_AFTER
+ dw NPCTradeAfterText1
+ dw NPCTradeAfterText2
+ dw NPCTradeAfterText3
+
+NPCTradeCableText:
+ text_far _NPCTradeCableText
+ text_end
+
+TradedForText:
+ ; traded givemon for getmon
+ text_far Text_NPCTraded
+ text_asm
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ ld hl, .done
+ ret
+
+.done
+ text_far _NPCTradeFanfareText
+ text_end
+
+NPCTradeIntroText1:
+ text_far _NPCTradeIntroText1
+ text_end
+
+NPCTradeCancelText1:
+ text_far _NPCTradeCancelText1
+ text_end
+
+NPCTradeWrongText1:
+ text_far _NPCTradeWrongText1
+ text_end
+
+NPCTradeCompleteText1:
+ text_far _NPCTradeCompleteText1
+ text_end
+
+NPCTradeAfterText1:
+ text_far _NPCTradeAfterText1
+ text_end
+
+NPCTradeIntroText2:
+ text_far _NPCTradeIntroText2
+ text_end
+
+NPCTradeCancelText2:
+ text_far _NPCTradeCancelText2
+ text_end
+
+NPCTradeWrongText2:
+ text_far _NPCTradeWrongText2
+ text_end
+
+NPCTradeCompleteText2:
+ text_far _NPCTradeCompleteText2
+ text_end
+
+NPCTradeAfterText2:
+ text_far _NPCTradeAfterText2
+ text_end
+
+NPCTradeIntroText3:
+ text_far _NPCTradeIntroText3
+ text_end
+
+NPCTradeCancelText3:
+ text_far _NPCTradeCancelText3
+ text_end
+
+NPCTradeWrongText3:
+ text_far _NPCTradeWrongText3
+ text_end
+
+NPCTradeCompleteText3:
+ text_far _NPCTradeCompleteText3
+ text_end
+
+NPCTradeAfterText3:
+ text_far _NPCTradeAfterText3
+ text_end
diff --git a/engine/tilesets/tileset_anims.asm b/engine/tilesets/tileset_anims.asm
index 813965e5..a7b35c54 100644
--- a/engine/tilesets/tileset_anims.asm
+++ b/engine/tilesets/tileset_anims.asm
@@ -59,68 +59,68 @@ TilesetForestAnim::
TilesetJohtoAnim:
dw vTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, AnimateWaterPalette
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, AnimateWaterPalette
+ dw NULL, WaitTileAnimation
+ dw NULL, AnimateFlowerTile
dw WhirlpoolFrames1, AnimateWhirlpoolTile
dw WhirlpoolFrames2, AnimateWhirlpoolTile
dw WhirlpoolFrames3, AnimateWhirlpoolTile
dw WhirlpoolFrames4, AnimateWhirlpoolTile
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, StandingTileFrame8
+ dw NULL, DoneTileAnimation
UnusedTilesetAnim_fc07e:
dw vTiles2 tile $03, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileRightLeft
dw vTiles2 tile $03, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, AnimateFlowerTile
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, DoneTileAnimation
UnusedTilesetAnim_fc0aa:
dw vTiles2 tile $14, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileRightLeft
dw vTiles2 tile $14, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, DoneTileAnimation
TilesetPortAnim:
dw vTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, AnimateWaterPalette
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, AnimateWaterPalette
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, StandingTileFrame8
+ dw NULL, DoneTileAnimation
TilesetEliteFourRoomAnim:
- dw NULL, LavaBubbleAnim2
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, LavaBubbleAnim1
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
+ dw NULL, LavaBubbleAnim2
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, LavaBubbleAnim1
+ dw NULL, WaitTileAnimation
+ dw NULL, StandingTileFrame8
+ dw NULL, DoneTileAnimation
UnusedTilesetAnim_fc126:
dw vTiles2 tile $53, WriteTileToBuffer
@@ -134,66 +134,66 @@ UnusedTilesetAnim_fc126:
dw wTileAnimBuffer, ScrollTileDown
dw wTileAnimBuffer, ScrollTileDown
dw vTiles2 tile $53, WriteTileFromBuffer
- dw NULL, DoneTileAnimation
+ dw NULL, DoneTileAnimation
UnusedTilesetAnim_fc156:
dw vTiles2 tile $54, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileDown
dw wTileAnimBuffer, ScrollTileDown
dw vTiles2 tile $54, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
dw vTiles2 tile $03, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileRightLeft
dw vTiles2 tile $03, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
dw vTiles2 tile $54, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileDown
dw wTileAnimBuffer, ScrollTileDown
dw vTiles2 tile $54, WriteTileFromBuffer
- dw NULL, DoneTileAnimation
+ dw NULL, DoneTileAnimation
TilesetCaveAnim:
TilesetDarkCaveAnim:
dw vTiles2 tile $14, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileRightLeft
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $14, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, AnimateWaterPalette
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, AnimateWaterPalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $40, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $40, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, DoneTileAnimation
+ dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, DoneTileAnimation
TilesetIcePathAnim:
dw vTiles2 tile $35, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileRightLeft
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $35, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, AnimateWaterPalette
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, AnimateWaterPalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $31, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, FlickeringCaveEntrancePalette
dw vTiles2 tile $31, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, DoneTileAnimation
+ dw NULL, FlickeringCaveEntrancePalette
+ dw NULL, DoneTileAnimation
TilesetTowerAnim:
dw TowerPillarTilePointer9, AnimateTowerPillarTile
@@ -206,22 +206,22 @@ TilesetTowerAnim:
dw TowerPillarTilePointer4, AnimateTowerPillarTile
dw TowerPillarTilePointer1, AnimateTowerPillarTile
dw TowerPillarTilePointer2, AnimateTowerPillarTile
- dw NULL, StandingTileFrame
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
+ dw NULL, StandingTileFrame
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, DoneTileAnimation
dw vTiles2 tile $4f, WriteTileToBuffer
dw wTileAnimBuffer, ScrollTileRightLeft
dw vTiles2 tile $4f, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, WaitTileAnimation
+ dw NULL, DoneTileAnimation
TilesetHouseAnim:
TilesetPlayersHouseAnim:
@@ -748,3 +748,6 @@ WhirlpoolTiles1: INCBIN "gfx/tilesets/whirlpool/1.2bpp"
WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp"
WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp"
WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp"
+
+;unused
+ ret
diff --git a/main.asm b/main.asm
index d05a38e9..730b68ad 100644
--- a/main.asm
+++ b/main.asm
@@ -830,9 +830,7 @@ DoBadgeTypeBoosts::
SECTION "bank3f", ROMX
INCLUDE "engine/tilesets/tileset_anims.asm"
- ret
-NPCTrade::
- dr $fc9ae, $fcd87
+INCLUDE "engine/events/npc_trade.asm"
MomTriesToBuySomething::
dr $fcd87, $fcf6a
StagePartyDataForMysteryGift::
diff --git a/wram.asm b/wram.asm
index 1892b3ec..0cc05370 100644
--- a/wram.asm
+++ b/wram.asm
@@ -2142,7 +2142,7 @@ wRegisteredItem:: db ; d681
wPlayerState:: db ; d682
wHallOfFameCount:: dw
-wd685:: ds 1 ; d685
+wTradeFlags:: flag_array NUM_NPC_TRADES ; d685
wd686:: ds 1 ; d686
wd687:: ds 1 ; d687
wd688:: ds 1 ; d688