summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/AgathasRoom.asm3
-rw-r--r--scripts/BeachHouse.asm193
-rwxr-xr-xscripts/BeachHouse2.asm33
-rwxr-xr-xscripts/BikeShop.asm16
-rwxr-xr-xscripts/BillsHouse.asm251
-rwxr-xr-xscripts/BillsHouse2.asm158
-rwxr-xr-xscripts/BluesHouse.asm7
-rwxr-xr-xscripts/BrunosRoom.asm1
-rwxr-xr-xscripts/CeladonCity.asm14
-rwxr-xr-xscripts/CeladonCity2.asm8
-rwxr-xr-xscripts/CeladonDiner.asm37
-rwxr-xr-xscripts/CeladonDiner2.asm38
-rwxr-xr-xscripts/CeladonMansion1F.asm29
-rwxr-xr-xscripts/CeladonMansion1F_2.asm78
-rwxr-xr-xscripts/CeladonMansion3F.asm133
-rwxr-xr-xscripts/CeladonMansion3F_2.asm35
-rwxr-xr-xscripts/CeladonMansionRoof.asm3
-rwxr-xr-xscripts/CeladonMansionRoofHouse.asm3
-rwxr-xr-xscripts/CeladonMart1F.asm3
-rwxr-xr-xscripts/CeladonMart3F.asm35
-rwxr-xr-xscripts/CeladonMart3F_2.asm36
-rwxr-xr-xscripts/CeladonMart5F.asm3
-rwxr-xr-xscripts/CeladonMartRoof.asm14
-rwxr-xr-xscripts/CeladonPokecenter.asm6
-rwxr-xr-xscripts/CeruleanCave1F.asm1
-rwxr-xr-xscripts/CeruleanCave2F.asm1
-rwxr-xr-xscripts/CeruleanCaveB1F.asm2
-rwxr-xr-xscripts/CeruleanCity.asm29
-rwxr-xr-xscripts/CeruleanGym.asm2
-rwxr-xr-xscripts/CeruleanPokecenter.asm6
-rwxr-xr-xscripts/CeruleanTradeHouse.asm99
-rwxr-xr-xscripts/ChampionsRoom.asm16
-rwxr-xr-xscripts/CinnabarGym.asm208
-rwxr-xr-xscripts/CinnabarGym3.asm64
-rwxr-xr-xscripts/CinnabarGym_2.asm18
-rwxr-xr-xscripts/CinnabarPokecenter.asm6
-rw-r--r--[-rwxr-xr-x]scripts/Colosseum.asm0
-rwxr-xr-xscripts/Daycare.asm29
-rwxr-xr-xscripts/FuchsiaMart.asm3
-rwxr-xr-xscripts/FuchsiaPokecenter.asm6
-rwxr-xr-xscripts/GameCorner.asm16
-rwxr-xr-xscripts/GameCorner2.asm12
-rwxr-xr-xscripts/IndigoPlateauLobby.asm6
-rwxr-xr-xscripts/LancesRoom.asm13
-rwxr-xr-xscripts/LavenderPokecenter.asm6
-rwxr-xr-xscripts/MtMoon1F.asm19
-rwxr-xr-xscripts/MtMoonB2F.asm480
-rwxr-xr-xscripts/MtMoonB2F_2.asm28
-rwxr-xr-xscripts/MtMoonPokecenter.asm68
-rwxr-xr-xscripts/MtMoonPokecenter2.asm66
-rwxr-xr-xscripts/Museum1F.asm196
-rwxr-xr-xscripts/Museum1F2.asm209
-rwxr-xr-xscripts/Museum2F.asm34
-rwxr-xr-xscripts/OaksLab.asm881
-rwxr-xr-xscripts/OaksLab2.asm28
-rwxr-xr-xscripts/PalletTown.asm170
-rwxr-xr-xscripts/PewterCity.asm20
-rwxr-xr-xscripts/PewterGym.asm19
-rwxr-xr-xscripts/PewterMart.asm2
-rwxr-xr-xscripts/PewterNidoranHouse.asm3
-rwxr-xr-xscripts/PewterPokecenter.asm81
-rwxr-xr-xscripts/PewterPokecenter2.asm79
-rwxr-xr-xscripts/PokemonFanClub.asm201
-rwxr-xr-xscripts/PokemonTower1F.asm3
-rwxr-xr-xscripts/PokemonTower2F.asm28
-rwxr-xr-xscripts/PokemonTower2F_2.asm12
-rwxr-xr-xscripts/PokemonTower7F.asm436
-rwxr-xr-xscripts/RedsHouse1F.asm60
-rwxr-xr-xscripts/RedsHouse1F2.asm58
-rwxr-xr-xscripts/RedsHouse2F.asm19
-rwxr-xr-xscripts/RockTunnelPokecenter.asm6
-rwxr-xr-xscripts/RocketHideoutB4F.asm396
-rwxr-xr-xscripts/Route1.asm47
-rwxr-xr-xscripts/Route11Gate2F.asm2
-rwxr-xr-xscripts/Route19.asm30
-rwxr-xr-xscripts/Route1_2.asm53
-rwxr-xr-xscripts/Route22.asm133
-rwxr-xr-xscripts/Route22Gate.asm7
-rwxr-xr-xscripts/Route22_2.asm50
-rwxr-xr-xscripts/Route24.asm59
-rwxr-xr-xscripts/Route25.asm23
-rwxr-xr-xscripts/Route6.asm6
-rwxr-xr-xscripts/Route7.asm3
-rwxr-xr-xscripts/Route8Gate.asm2
-rwxr-xr-xscripts/Route9.asm18
-rwxr-xr-xscripts/SSAnne2F.asm23
-rwxr-xr-xscripts/SSAnne2FRooms.asm33
-rwxr-xr-xscripts/SSAnne2FRooms_2.asm35
-rwxr-xr-xscripts/SSAnneCaptainsRoom.asm12
-rwxr-xr-xscripts/SafariZoneGate.asm104
-rwxr-xr-xscripts/SafariZoneGate2.asm251
-rwxr-xr-xscripts/SaffronPokecenter.asm6
-rwxr-xr-xscripts/SeafoamIslandsB4F.asm3
-rwxr-xr-xscripts/SilphCo11F.asm490
-rwxr-xr-xscripts/SilphCo11F_2.asm76
-rwxr-xr-xscripts/SilphCo7F.asm24
-rw-r--r--[-rwxr-xr-x]scripts/TradeCenter.asm0
-rwxr-xr-xscripts/VermilionCity.asm69
-rwxr-xr-xscripts/VermilionCity2.asm111
-rwxr-xr-xscripts/VermilionDock.asm8
-rwxr-xr-xscripts/VermilionPokecenter.asm6
-rwxr-xr-xscripts/VermilionTradeHouse.asm7
-rwxr-xr-xscripts/VictoryRoad1F.asm3
-rwxr-xr-xscripts/VictoryRoad2F.asm5
-rwxr-xr-xscripts/VictoryRoad3F.asm3
-rwxr-xr-xscripts/ViridianCity.asm430
-rwxr-xr-xscripts/ViridianCity2.asm215
-rwxr-xr-xscripts/ViridianForest.asm86
-rwxr-xr-xscripts/ViridianForest2.asm53
-rwxr-xr-xscripts/ViridianForestSouthGate.asm3
-rwxr-xr-xscripts/ViridianMart.asm16
-rwxr-xr-xscripts/ViridianPokecenter.asm6
-rwxr-xr-xscripts/ViridianSchoolHouse.asm14
-rwxr-xr-xscripts/ViridianSchoolHouse2.asm17
114 files changed, 5369 insertions, 2455 deletions
diff --git a/scripts/AgathasRoom.asm b/scripts/AgathasRoom.asm
index b0c53571..9aa957f5 100755
--- a/scripts/AgathasRoom.asm
+++ b/scripts/AgathasRoom.asm
@@ -20,7 +20,8 @@ AgathaShowOrHideExitBlock:
jp .setExitBlock
.blockExitToNextRoom
ld a, $3b
-.setExitBlock:
+
+.setExitBlock
ld [wNewTileBlockID], a
lb bc, 0, 2
predef_jump ReplaceTileBlock
diff --git a/scripts/BeachHouse.asm b/scripts/BeachHouse.asm
new file mode 100644
index 00000000..2059f59d
--- /dev/null
+++ b/scripts/BeachHouse.asm
@@ -0,0 +1,193 @@
+BeachHouse_Script:
+ call EnableAutoTextBoxDrawing
+ ret
+
+BeachHouse_TextPointers:
+ dw SurfinDudeText
+ dw BeachHousePikachuText
+ dw BeachHouseSign1Text
+ dw BeachHouseSign2Text
+ dw BeachHouseSign3Text
+ dw BeachHouseSign4Text
+
+SurfinDudeText:
+ text_asm
+ ld a, [wd472]
+ bit 6, a
+ jr nz, .next
+ ld hl, .SurfinDudeText4
+ call PrintText
+ jr .done
+.next
+ ld hl, wd492
+ bit 0, [hl]
+ set 0, [hl]
+ jr nz, .next2
+ ld hl, .SurfinDudeText1
+ jr .next3
+.next2
+ ld hl, .SurfinDudeText3
+.next3
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f226b
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ farcall SurfingPikachuMinigame
+ ld hl, wd492
+ set 1, [hl]
+ jr .done
+.asm_f226b
+ ld hl, .SurfinDudeText2
+ call PrintText
+.done
+ jp TextScriptEnd
+
+.SurfinDudeText1
+ text_far _SurfinDudeText1
+ text_end
+.SurfinDudeText2
+ text_far _SurfinDudeText2
+ text_end
+.SurfinDudeText3
+ text_far _SurfinDudeText3
+ text_end
+.SurfinDudeText4
+ text_far _SurfinDudeText4
+ text_end
+
+BeachHousePikachuText:
+ text_asm
+ ld hl, .BeachHousePikachuText
+ call PrintText
+ ld a, PIKACHU
+ call PlayCry
+ call WaitForSoundToFinish
+ jp TextScriptEnd
+
+.BeachHousePikachuText
+ text_far _BeachHousePikachuText
+ text_end
+
+BeachHouseSign1Text:
+ text_asm
+ ld hl, .BeachHouseSign1Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign1Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign1Text1
+ text_far _BeachHouseSign1Text1
+ text_end
+.BeachHouseSign1Text2
+ text_far _BeachHouseSign1Text2
+ text_end
+
+BeachHouseSign2Text:
+ text_asm
+ ld hl, .BeachHouseSign2Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign2Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign2Text1
+ text_far _BeachHouseSign2Text1
+ text_end
+.BeachHouseSign2Text2
+ text_far _BeachHouseSign2Text2
+ text_end
+
+BeachHouseSign3Text:
+ text_asm
+ ld hl, .BeachHouseSign3Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign3Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign3Text1
+ text_far _BeachHouseSign3Text1
+ text_end
+.BeachHouseSign3Text2
+ text_far _BeachHouseSign3Text2
+ text_end
+
+BeachHouseSign4Text:
+ text_asm
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, [wd472]
+ bit 6, a
+ jr z, .asm_f2369
+
+ ld hl, wd492
+ bit 1, [hl]
+ jr z, .next2
+ ld a, 0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+.next2
+ ld hl, .BeachHousePrinterText2
+ call PrintText
+ ld a, [wd492]
+ bit 1, a
+ jr z, .asm_f236f
+
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .BeachHousePrinterText3
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp z, Func_f23d0
+ call SaveScreenTilesToBuffer2
+ ld hl, wd730
+ set 6, [hl]
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ callfar Printer_PrepareSurfingMinigameHighScoreTileMap
+ call WaitForTextScrollButtonPress
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld a, 1
+ ld [wUpdateSpritesEnabled], a
+ jr .asm_f236f
+.asm_f2369
+ ld hl, .BeachHousePrinterText1
+ call PrintText
+.asm_f236f
+ jp TextScriptEnd
+
+.BeachHousePrinterText1
+ text_far _BeachHousePrinterText1
+ text_waitbutton
+ text_end
+.BeachHousePrinterText2
+ text_far _BeachHousePrinterText2
+ text_waitbutton
+ text_end
+.BeachHousePrinterText3
+ text_far _BeachHousePrinterText3
+ text_end
+.BeachHousePrinterText4
+ text_far _BeachHousePrinterText4
+ text_end
diff --git a/scripts/BeachHouse2.asm b/scripts/BeachHouse2.asm
new file mode 100755
index 00000000..1cf570bc
--- /dev/null
+++ b/scripts/BeachHouse2.asm
@@ -0,0 +1,33 @@
+Func_f23d0:
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callfar PrintSurfingMinigameHighScore
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_f2412
+ ldh a, [hOaksAideResult]
+ and a
+ jr nz, .asm_f2406
+ ld hl, Text_f240c
+.asm_f2406
+ call PrintText
+ jp TextScriptEnd
+
+Text_f240c:
+ text_far _BeachHousePrinterText5
+ text_waitbutton
+ text_end
+
+Text_f2412:
+ text_far _BeachHousePrinterText6
+ text_waitbutton
+ text_end
diff --git a/scripts/BikeShop.asm b/scripts/BikeShop.asm
index 7b290f31..e4345e8e 100755
--- a/scripts/BikeShop.asm
+++ b/scripts/BikeShop.asm
@@ -1,5 +1,6 @@
BikeShop_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
BikeShop_TextPointers:
dw BikeShopText1
@@ -13,6 +14,7 @@ BikeShopText1:
ld hl, BikeShopText_1d82f
call PrintText
jp .Done
+
.asm_260d4
ld b, BIKE_VOUCHER
call IsItemInBag
@@ -29,10 +31,12 @@ BikeShopText1:
ld hl, BikeShopText_1d824
call PrintText
jr .Done
+
.BagFull
ld hl, BikeShopText_1d834
call PrintText
jr .Done
+
.asm_41190
ld hl, BikeShopText_1d810
call PrintText
@@ -50,8 +54,7 @@ BikeShopText1:
ld hl, wd730
set 6, [hl]
hlcoord 0, 0
- ld b, $4
- ld c, $f
+ lb bc, 4, 15
call TextBoxBorder
call UpdateSprites
hlcoord 2, 2
@@ -62,11 +65,12 @@ BikeShopText1:
call PlaceString
ld hl, BikeShopText_1d815
call PrintText
- call HandleMenuInput
- bit 1, a
- jr nz, .cancel
+ ; This fixes the bike shop instatext glitch
ld hl, wd730
res 6, [hl]
+ call HandleMenuInput
+ bit BIT_B_BUTTON, a
+ jr nz, .cancel
ld a, [wCurrentMenuItem]
and a
jr nz, .cancel
diff --git a/scripts/BillsHouse.asm b/scripts/BillsHouse.asm
index 2085f417..8559c0b1 100755
--- a/scripts/BillsHouse.asm
+++ b/scripts/BillsHouse.asm
@@ -1,8 +1,10 @@
BillsHouse_Script:
+ call BillsHouseScript_1e09e
call EnableAutoTextBoxDrawing
ld a, [wBillsHouseCurScript]
ld hl, BillsHouse_ScriptPointers
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
BillsHouse_ScriptPointers:
dw BillsHouseScript0
@@ -11,21 +13,64 @@ BillsHouse_ScriptPointers:
dw BillsHouseScript3
dw BillsHouseScript4
dw BillsHouseScript5
+ dw BillsHouseScript6
+ dw BillsHouseScript7
+ dw BillsHouseScript8
+ dw BillsHouseScript9
+
+BillsHouseScript_1e09e:
+ ld hl, wd492
+ bit 7, [hl]
+ set 7, [hl]
+ ret nz
+ CheckEventHL EVENT_MET_BILL_2
+ jr z, .asm_1e0af
+ jr .asm_1e0b3
+
+.asm_1e0af
+ ld a, $0
+ jr .asm_1e0b5
+
+.asm_1e0b3
+ ld a, $9
+.asm_1e0b5
+ ld [wBillsHouseCurScript], a
+ ret
BillsHouseScript0:
+ ld a, [wd472]
+ bit 7, a
+ jr z, .asm_1e0d2
+ callfar CheckPikachuFaintedOrStatused
+ jr c, .asm_1e0d2
+ callfar Func_f24d5
+.asm_1e0d2
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wBillsHouseCurScript], a
ret
BillsHouseScript1:
+ ret
+
+BillsHouseScript2:
+ ld a, $ff
+ ld [wJoyIgnore], a
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
ld de, MovementData_1e79c
jr nz, .notDown
+ call CheckPikachuFollowingPlayer
+ jr nz, .asm_1e0f8
+ callfar Func_f250b
+.asm_1e0f8
ld de, MovementData_1e7a0
.notDown
ld a, $1
ldh [hSpriteIndex], a
call MoveSprite
- ld a, $2
+ ld a, $3
ld [wBillsHouseCurScript], a
ret
@@ -44,25 +89,58 @@ MovementData_1e7a0:
db NPC_MOVEMENT_UP
db -1 ; end
-BillsHouseScript2:
+BillsHouseScript3:
ld a, [wd730]
bit 0, a
ret nz
ld a, HS_BILL_POKEMON
ld [wMissableObjectIndex], a
predef HideObject
- SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_1e13e
+ ld hl, PikachuMovementData_1e14d
+ ld a, [wSpritePlayerStateData1FacingDirection]
+ and a ; cp SPRITE_FACING_DOWN
+ jr nz, .asm_1e133
+ ld hl, PikachuMovementData_1e152
+.asm_1e133
+ call ApplyPikachuMovementData
+ callfar InitializePikachuTextID
+.asm_1e13e
xor a
ld [wJoyIgnore], a
- ld a, $3
+ SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR
+ ld a, $4
ld [wBillsHouseCurScript], a
ret
-BillsHouseScript3:
+PikachuMovementData_1e14d:
+ db $00
+ db $1e
+ db $1e
+ db $1e
+ db $3f
+
+PikachuMovementData_1e152:
+ db $00
+ db $1e
+ db $1f
+ db $1e
+ db $1e
+ db $20
+ db $36
+ db $3f
+
+BillsHouseScript4:
CheckEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
ret z
- ld a, $f0
+ ld a, $fc
ld [wJoyIgnore], a
+ ld a, $5
+ ld [wBillsHouseCurScript], a
+ ret
+
+BillsHouseScript5:
ld a, $2
ld [wSpriteIndex], a
ld a, $c
@@ -79,11 +157,30 @@ BillsHouseScript3:
predef ShowObject
ld c, 8
call DelayFrames
+ ld hl, wd472
+ bit 7, [hl]
+ jr z, .asm_1e1c6
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_1e1c6
+ ld a, $2
+ ldh [hSpriteIndex], a
+ ld a, SPRITE_FACING_DOWN
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld hl, PikachuMovementData_1e1a9
+ call ApplyPikachuMovementData
+ ld a, $f
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ callfar InitializePikachuTextID
+.asm_1e1c6
ld a, $2
ldh [hSpriteIndex], a
ld de, MovementData_1e807
call MoveSprite
- ld a, $4
+ ld a, $6
ld [wBillsHouseCurScript], a
ret
@@ -95,26 +192,67 @@ MovementData_1e807:
db NPC_MOVEMENT_DOWN
db -1 ; end
-BillsHouseScript4:
+PikachuMovementData_1e1a9:
+ db $00
+ db $37
+ db $3f
+
+BillsHouseScript6:
ld a, [wd730]
bit 0, a
ret nz
- xor a
- ld [wJoyIgnore], a
SetEvent EVENT_MET_BILL_2 ; this event seems redundant
SetEvent EVENT_MET_BILL
- ld a, $0
+ ld a, $7
ld [wBillsHouseCurScript], a
ret
-BillsHouseScript5:
- ld a, $4
+BillsHouseScript7:
+ xor a
+ ld [wPlayerMovingDirection], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld de, RLE_1e219
+ ld hl, wSimulatedJoypadStatesEnd
+ call DecodeRLEList
+ dec a
+ ld [wSimulatedJoypadStatesIndex], a
+ call StartSimulatingJoypadStates
+ ld a, $8
+ ld [wBillsHouseCurScript], a
+ ret
+
+RLE_1e219:
+ db D_RIGHT, $3
+ db $FF
+
+BillsHouseScript8:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ xor a
+ ld [wPlayerMovingDirection], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $2
+ ldh [hSpriteIndex], a
+ ld a, SPRITE_FACING_DOWN
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $2
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $0
+ ld a, $9
ld [wBillsHouseCurScript], a
ret
+BillsHouseScript9:
+ ret
+
BillsHouse_TextPointers:
dw BillsHouseText1
dw BillsHouseText2
@@ -122,93 +260,20 @@ BillsHouse_TextPointers:
dw BillsHouseText4
BillsHouseText4:
- script_bills_pc
+ text_far _BillsHouseDontLeaveText
+ text_end
BillsHouseText1:
text_asm
- ld hl, BillsHouseText_1e865
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_1e85a
-.asm_1e84d
- ld hl, BillsHouseText_1e86a
- call PrintText
- ld a, $1
- ld [wBillsHouseCurScript], a
- jr .asm_1e862
-.asm_1e85a
- ld hl, BillsHouseText_1e86f
- call PrintText
- jr .asm_1e84d
-.asm_1e862
+ farcall Func_f2418
jp TextScriptEnd
-BillsHouseText_1e865:
- text_far _BillsHouseText_1e865
- text_end
-
-BillsHouseText_1e86a:
- text_far _BillsHouseText_1e86a
- text_end
-
-BillsHouseText_1e86f:
- text_far _BillsHouseText_1e86f
- text_end
-
BillsHouseText2:
text_asm
- CheckEvent EVENT_GOT_SS_TICKET
- jr nz, .asm_1e8a9
- ld hl, BillThankYouText
- call PrintText
- lb bc, S_S_TICKET, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, SSTicketReceivedText
- call PrintText
- SetEvent EVENT_GOT_SS_TICKET
- ld a, HS_CERULEAN_GUARD_1
- ld [wMissableObjectIndex], a
- predef ShowObject
- ld a, HS_CERULEAN_GUARD_2
- ld [wMissableObjectIndex], a
- predef HideObject
-.asm_1e8a9
- ld hl, BillsHouseText_1e8cb
- call PrintText
- jr .asm_1e8b7
-.BagFull
- ld hl, SSTicketNoRoomText
- call PrintText
-.asm_1e8b7
+ farcall Func_f244a
jp TextScriptEnd
-BillThankYouText:
- text_far _BillThankYouText
- text_end
-
-SSTicketReceivedText:
- text_far _SSTicketReceivedText
- sound_get_key_item
- text_promptbutton
- text_end
-
-SSTicketNoRoomText:
- text_far _SSTicketNoRoomText
- text_end
-
-BillsHouseText_1e8cb:
- text_far _BillsHouseText_1e8cb
- text_end
-
BillsHouseText3:
text_asm
- ld hl, BillsHouseText_1e8da
- call PrintText
+ farcall Func_f24a2
jp TextScriptEnd
-
-BillsHouseText_1e8da:
- text_far _BillsHouseText_1e8da
- text_end
diff --git a/scripts/BillsHouse2.asm b/scripts/BillsHouse2.asm
new file mode 100755
index 00000000..b1c6e820
--- /dev/null
+++ b/scripts/BillsHouse2.asm
@@ -0,0 +1,158 @@
+Func_f2418::
+ ld hl, BillsHouseText_f243b
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f2433
+.asm_f2427
+ ld hl, BillsHouseText_f2440
+ call PrintText
+ ld a, $2
+ ld [wBillsHouseCurScript], a
+ ret
+
+.asm_f2433
+ ld hl, BillsHouseText_f2445
+ call PrintText
+ jr .asm_f2427
+
+BillsHouseText_f243b:
+ text_far _BillsHouseText_1e865
+ text_end
+
+BillsHouseText_f2440:
+ text_far _BillsHouseText_1e86a
+ text_end
+
+BillsHouseText_f2445:
+ text_far _BillsHouseText_1e86f
+ text_end
+
+Func_f244a::
+ CheckEvent EVENT_GOT_SS_TICKET
+ jr nz, .asm_f247e
+ ld hl, BillsHouseText_f248c
+ call PrintText
+ lb bc, S_S_TICKET, 1
+ call GiveItem
+ jr nc, .asm_f2485
+ ld hl, BillsHouseText_f2491
+ call PrintText
+ SetEvent EVENT_GOT_SS_TICKET
+ ld a, HS_CERULEAN_GUARD_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ ld a, HS_CERULEAN_GUARD_2
+ ld [wMissableObjectIndex], a
+ predef HideObject
+.asm_f247e
+ ld hl, BillsHouseText_f249d
+ call PrintText
+ ret
+
+.asm_f2485
+ ld hl, BillsHouseText_f2498
+ call PrintText
+ ret
+
+BillsHouseText_f248c:
+ text_far _BillThankYouText
+ text_end
+
+BillsHouseText_f2491:
+ text_far _SSTicketReceivedText
+ sound_get_key_item
+ text_promptbutton
+ text_end
+
+BillsHouseText_f2498:
+ text_far _SSTicketNoRoomText
+ text_end
+
+BillsHouseText_f249d:
+ text_far _BillsHouseText_1e8cb
+ text_end
+
+Func_f24a2::
+ ld hl, BillsHouseText_f24a9
+ call PrintText
+ ret
+
+BillsHouseText_f24a9:
+ text_far _BillsHouseText_1e8da
+ text_end
+
+Func_f24ae:
+ ld a, [wCurMap]
+ cp BILLS_HOUSE
+ jr nz, .asm_f24d2
+ call CheckPikachuFollowingPlayer
+ jr z, .asm_f24d2
+ ld a, [wBillsHouseCurScript]
+ cp $5
+ ld e, $1b
+ ret z
+ cp $0
+ ld e, $17
+ ret z
+ CheckEventHL EVENT_MET_BILL_2
+ ld e, $20
+ ret z
+ ld e, $1f
+ ret
+
+.asm_f24d2
+ ld e, $ff
+ ret
+
+Func_f24d5::
+ ld a, $ff
+ ld [wJoyIgnore], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld hl, Data_f2505
+ call ApplyPikachuMovementData
+ ld a, $f ; pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, QUESTION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ call DisablePikachuFollowingPlayer
+ callfar InitializePikachuTextID
+ ret
+
+Data_f2505:
+ db $00
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
+
+Func_f250b::
+ ld hl, Data_f251c
+ ld b, SPRITE_FACING_UP
+ call TryApplyPikachuMovementData
+ ld hl, Data_f2521
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+Data_f251c:
+ db $00
+ db $1f
+ db $1d
+ db $38
+ db $3f
+
+Data_f2521:
+ db $00
+ db $1e
+ db $1f
+ db $1f
+ db $1d
+ db $38
+ db $3f
diff --git a/scripts/BluesHouse.asm b/scripts/BluesHouse.asm
index 1ab0fd06..9d9bf33a 100755
--- a/scripts/BluesHouse.asm
+++ b/scripts/BluesHouse.asm
@@ -1,8 +1,9 @@
BluesHouse_Script:
call EnableAutoTextBoxDrawing
ld hl, BluesHouse_ScriptPointers
- ld a, [wBluesHouseCurScript]
- jp CallFunctionInTable
+ xor a
+ call CallFunctionInTable
+ ret
BluesHouse_ScriptPointers:
dw BluesHouseScript0
@@ -12,8 +13,6 @@ BluesHouseScript0:
SetEvent EVENT_ENTERED_BLUES_HOUSE
ld a, $1
ld [wBluesHouseCurScript], a
- ret
-
BluesHouseScript1:
ret
diff --git a/scripts/BrunosRoom.asm b/scripts/BrunosRoom.asm
index 578cbb98..e5ecc1af 100755
--- a/scripts/BrunosRoom.asm
+++ b/scripts/BrunosRoom.asm
@@ -20,6 +20,7 @@ BrunoShowOrHideExitBlock:
jp .setExitBlock
.blockExitToNextRoom
ld a, $24
+
.setExitBlock
ld [wNewTileBlockID], a
lb bc, 0, 2
diff --git a/scripts/CeladonCity.asm b/scripts/CeladonCity.asm
index bd0228d8..b6280980 100755
--- a/scripts/CeladonCity.asm
+++ b/scripts/CeladonCity.asm
@@ -1,5 +1,14 @@
CeladonCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, CeladonCity_ScriptPointers
+ ld a, [wCeladonCityCurScript]
+ call CallFunctionInTable
+ ret
+
+CeladonCity_ScriptPointers:
+ dw CeladonCityScript1
+
+CeladonCityScript1:
ResetEvents EVENT_1B8, EVENT_1BF
ResetEvent EVENT_67F
ret
@@ -100,8 +109,9 @@ CeladonCityText9:
text_end
CeladonCityText10:
- text_far _CeladonCityText10
- text_end
+ text_asm
+ farcall Func_f1ac6
+ jp TextScriptEnd
CeladonCityText11:
text_far _CeladonCityText11
diff --git a/scripts/CeladonCity2.asm b/scripts/CeladonCity2.asm
new file mode 100755
index 00000000..56824c9a
--- /dev/null
+++ b/scripts/CeladonCity2.asm
@@ -0,0 +1,8 @@
+Func_f1ac6::
+ ld hl, Text_f1acd
+ call PrintText
+ ret
+
+Text_f1acd:
+ text_far _CeladonCityText10
+ text_end
diff --git a/scripts/CeladonDiner.asm b/scripts/CeladonDiner.asm
index e95035f0..b4936e75 100755
--- a/scripts/CeladonDiner.asm
+++ b/scripts/CeladonDiner.asm
@@ -27,40 +27,5 @@ CeladonDinerText4:
CeladonDinerText5:
text_asm
- CheckEvent EVENT_GOT_COIN_CASE
- jr nz, .got_item
- ld hl, CeladonDinerText_491a7
- call PrintText
- lb bc, COIN_CASE, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_COIN_CASE
- ld hl, ReceivedCoinCaseText
- call PrintText
- jr .done
-.bag_full
- ld hl, CoinCaseNoRoomText
- call PrintText
- jr .done
-.got_item
- ld hl, CeladonDinerText_491b7
- call PrintText
-.done
+ callfar Func_f1f31
jp TextScriptEnd
-
-CeladonDinerText_491a7:
- text_far _CeladonDinerText_491a7
- text_end
-
-ReceivedCoinCaseText:
- text_far _ReceivedCoinCaseText
- sound_get_key_item
- text_end
-
-CoinCaseNoRoomText:
- text_far _CoinCaseNoRoomText
- text_end
-
-CeladonDinerText_491b7:
- text_far _CeladonDinerText_491b7
- text_end
diff --git a/scripts/CeladonDiner2.asm b/scripts/CeladonDiner2.asm
new file mode 100755
index 00000000..ceef9f52
--- /dev/null
+++ b/scripts/CeladonDiner2.asm
@@ -0,0 +1,38 @@
+Func_f1f31::
+ CheckEvent EVENT_GOT_COIN_CASE
+ jr nz, .got_item
+ ld hl, CeladonDinerText_491a7
+ call PrintText
+ lb bc, COIN_CASE, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_COIN_CASE
+ ld hl, ReceivedCoinCaseText
+ call PrintText
+ jr .done
+.bag_full
+ ld hl, CoinCaseNoRoomText
+ call PrintText
+ jr .done
+.got_item
+ ld hl, CeladonDinerText_491b7
+ call PrintText
+.done
+ ret
+
+CeladonDinerText_491a7:
+ text_far _CeladonDinerText_491a7
+ text_end
+
+ReceivedCoinCaseText:
+ text_far _ReceivedCoinCaseText
+ sound_get_key_item
+ text_end
+
+CoinCaseNoRoomText:
+ text_far _CoinCaseNoRoomText
+ text_end
+
+CeladonDinerText_491b7:
+ text_far _CeladonDinerText_491b7
+ text_end
diff --git a/scripts/CeladonMansion1F.asm b/scripts/CeladonMansion1F.asm
index fa901ff9..61d53da7 100755
--- a/scripts/CeladonMansion1F.asm
+++ b/scripts/CeladonMansion1F.asm
@@ -1,5 +1,6 @@
CeladonMansion1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansion1F_TextPointers:
dw CeladonMansion1Text1
@@ -8,31 +9,39 @@ CeladonMansion1F_TextPointers:
dw CeladonMansion1Text4
dw CeladonMansion1Text5
-CeladonMansion1_PlayCryScript:
- call PlayCry
- jp TextScriptEnd
-
CeladonMansion1Text1:
text_far _CeladonMansion1Text1
text_asm
ld a, MEOWTH
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text2:
- text_far _CeladonMansion1Text2
- text_end
+ text_asm
+ farcall Func_f1e70
+ ld a, [wPikachuHappiness]
+ cp 251
+ jr c, .asm_485d9
+ ld c, 50
+ call DelayFrames
+ ldpikacry e, PikachuCry23
+ callfar PlayPikachuSoundClip
+.asm_485d9
+ jp TextScriptEnd
CeladonMansion1Text3:
text_far _CeladonMansion1Text3
text_asm
ld a, CLEFAIRY
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text4:
text_far _CeladonMansion1Text4
text_asm
ld a, NIDORAN_F
- jp CeladonMansion1_PlayCryScript
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text5:
text_far _CeladonMansion1Text5
diff --git a/scripts/CeladonMansion1F_2.asm b/scripts/CeladonMansion1F_2.asm
new file mode 100755
index 00000000..70bf6c88
--- /dev/null
+++ b/scripts/CeladonMansion1F_2.asm
@@ -0,0 +1,78 @@
+Func_f1e70::
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeladonMansion1Text_f1e96
+ call PrintText
+ callfar IsStarterPikachuInOurParty
+ ret nc
+ ld hl, CeladonMansionText_f1e9c
+ call PrintText
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call Func_f1ea2
+ call PrintText
+ ret
+
+CeladonMansion1Text_f1e96:
+ text_far _CeladonMansion1Text2
+ text_waitbutton
+ text_end
+
+CeladonMansionText_f1e9c:
+ text_far _CeladonMansion1Text6
+ text_promptbutton
+ text_end
+
+Func_f1ea2:
+ ld hl, PikachuHappinessThresholds_f1eb9
+.asm_f1ea5
+ ld a, [hli]
+ inc hl
+ and a
+ jr z, .asm_f1eb5
+ ld b, a
+ ld a, [wPikachuHappiness]
+ cp b
+ jr c, .asm_f1eb5
+ inc hl
+ inc hl
+ jr .asm_f1ea5
+
+.asm_f1eb5
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+PikachuHappinessThresholds_f1eb9:
+ dw 51, CeladonMansion1Text_f1ed5
+ dw 101, CeladonMansion1Text_f1eda
+ dw 131, CeladonMansion1Text_f1edf
+ dw 161, CeladonMansion1Text_f1ee4
+ dw 201, CeladonMansion1Text_f1ee9
+ dw 255, CeladonMansion1Text_f1eee
+ dbbw 0, $ff, CeladonMansion1Text_f1eee
+
+CeladonMansion1Text_f1ed5:
+ text_far _CeladonMansion1Text7
+ text_end
+
+CeladonMansion1Text_f1eda:
+ text_far _CeladonMansion1Text8
+ text_end
+
+CeladonMansion1Text_f1edf:
+ text_far _CeladonMansion1Text9
+ text_end
+
+CeladonMansion1Text_f1ee4:
+ text_far _CeladonMansion1Text10
+ text_end
+
+CeladonMansion1Text_f1ee9:
+ text_far _CeladonMansion1Text11
+ text_end
+
+CeladonMansion1Text_f1eee:
+ text_far _CeladonMansion1Text12
+ text_end
diff --git a/scripts/CeladonMansion3F.asm b/scripts/CeladonMansion3F.asm
index f8972793..0cea70cc 100755
--- a/scripts/CeladonMansion3F.asm
+++ b/scripts/CeladonMansion3F.asm
@@ -1,5 +1,13 @@
CeladonMansion3F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
+
+CeladonMansion3_PokedexCount:
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ ret
CeladonMansion3F_TextPointers:
dw ProgrammerText
@@ -12,29 +20,120 @@ CeladonMansion3F_TextPointers:
dw GameFreakSignText
ProgrammerText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp 150
+ ld hl, CeladonMansion3Text_486f5
+ jr nc, .print
+ ld hl, CeladonMansion3Text_486f0
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_486f0:
text_far _ProgrammerText
text_end
+CeladonMansion3Text_486f5:
+ text_far _ProgrammerText2
+ text_end
+
GraphicArtistText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp 150
+ jr nc, .completed
+ ld hl, CeladonMansion3Text_48757
+ jr .print
+
+.completed
+ ld hl, CeladonMansion3Text_4875c
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .declined_print
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callfar PrintDiploma
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, CeladonMansion3Text_4876b
+ ldh a, [hCanceledPrinting]
+ and a
+ jr nz, .print
+ ld hl, CeladonMansion3Text_48766
+ jr .print
+
+.declined_print
+ ld hl, CeladonMansion3Text_48761
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_48757:
text_far _GraphicArtistText
text_end
+CeladonMansion3Text_4875c:
+ text_far _GraphicArtistText2
+ text_end
+
+CeladonMansion3Text_48761:
+ text_far _GraphicArtistText3
+ text_end
+
+CeladonMansion3Text_48766:
+ text_far _GraphicArtistText4
+ text_end
+
+CeladonMansion3Text_4876b:
+ text_far _GraphicArtistText5
+ text_end
+
WriterText:
+ text_asm
+ call CeladonMansion3_PokedexCount
+ cp 150
+ ld hl, CeladonMansion3Text_48789
+ jr nc, .print
+ ld hl, CeladonMansion3Text_48784
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_48784:
text_far _WriterText
text_end
+CeladonMansion3Text_48789:
+ text_far _WriterText2
+ text_end
+
DirectorText:
text_asm
- ld hl, wPokedexOwned
- ld b, wPokedexOwnedEnd - wPokedexOwned
- call CountSetBits
- ld a, [wNumSetBits]
+ call CeladonMansion3_PokedexCount
+ ; check pokédex
cp NUM_POKEMON - 1 ; discount Mew
jr nc, .completed_dex
ld hl, .GameDesignerText
jr .done
.completed_dex
ld hl, .CompletedDexText
+ call PrintText
+ call Delay3
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .UnlockedDiplomaPrinting
.done
call PrintText
jp TextScriptEnd
@@ -52,18 +151,26 @@ DirectorText:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
jp TextScriptEnd
-GameFreakPCText1:
- text_far _CeladonMansion3Text5
+.UnlockedDiplomaPrinting
+ text_far _CompletedDexText2
text_end
+GameFreakPCText1:
+ text_asm
+ farcall Func_f1ef3
+ jp TextScriptEnd
+
GameFreakPCText2:
- text_far _CeladonMansion3Text6
- text_end
+ text_asm
+ farcall Func_f1eff
+ jp TextScriptEnd
GameFreakPCText3:
- text_far _CeladonMansion3Text7
- text_end
+ text_asm
+ farcall Func_f1f0b
+ jp TextScriptEnd
GameFreakSignText:
- text_far _CeladonMansion3Text8
- text_end
+ text_asm
+ farcall Func_f1f17
+ jp TextScriptEnd
diff --git a/scripts/CeladonMansion3F_2.asm b/scripts/CeladonMansion3F_2.asm
new file mode 100755
index 00000000..f0b7c395
--- /dev/null
+++ b/scripts/CeladonMansion3F_2.asm
@@ -0,0 +1,35 @@
+Func_f1ef3::
+ ld hl, CeladonMansion3Text_f1efa
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1efa:
+ text_far _CeladonMansion3Text5
+ text_end
+
+Func_f1eff::
+ ld hl, CeladonMansion3Text_f1f06
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f06:
+ text_far _CeladonMansion3Text6
+ text_end
+
+Func_f1f0b::
+ ld hl, CeladonMansion3Text_f1f12
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f12:
+ text_far _CeladonMansion3Text7
+ text_end
+
+Func_f1f17::
+ ld hl, CeladonMansion3Text_f1f1e
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f1e:
+ text_far _CeladonMansion3Text8
+ text_end
diff --git a/scripts/CeladonMansionRoof.asm b/scripts/CeladonMansionRoof.asm
index 860fcbdf..47c093dd 100755
--- a/scripts/CeladonMansionRoof.asm
+++ b/scripts/CeladonMansionRoof.asm
@@ -1,5 +1,6 @@
CeladonMansionRoof_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansionRoof_TextPointers:
dw CeladonMansion4Text1
diff --git a/scripts/CeladonMansionRoofHouse.asm b/scripts/CeladonMansionRoofHouse.asm
index bd564dcc..3b7e3914 100755
--- a/scripts/CeladonMansionRoofHouse.asm
+++ b/scripts/CeladonMansionRoofHouse.asm
@@ -1,5 +1,6 @@
CeladonMansionRoofHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansionRoofHouse_TextPointers:
dw CeladonMansion5Text1
diff --git a/scripts/CeladonMart1F.asm b/scripts/CeladonMart1F.asm
index dca3c796..54176e01 100755
--- a/scripts/CeladonMart1F.asm
+++ b/scripts/CeladonMart1F.asm
@@ -1,5 +1,6 @@
CeladonMart1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart1F_TextPointers:
dw CeladonMart1Text1
diff --git a/scripts/CeladonMart3F.asm b/scripts/CeladonMart3F.asm
index 55081982..01ab73ce 100755
--- a/scripts/CeladonMart3F.asm
+++ b/scripts/CeladonMart3F.asm
@@ -22,42 +22,9 @@ CeladonMart3F_TextPointers:
CeladonMart3Text1:
text_asm
- CheckEvent EVENT_GOT_TM18
- jr nz, .got_item
- ld hl, TM18PreReceiveText
- call PrintText
- lb bc, TM_COUNTER, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_TM18
- ld hl, ReceivedTM18Text
- jr .done
-.bag_full
- ld hl, TM18NoRoomText
- jr .done
-.got_item
- ld hl, TM18ExplanationText
-.done
- call PrintText
+ callfar Func_f1e30
jp TextScriptEnd
-TM18PreReceiveText:
- text_far _TM18PreReceiveText
- text_end
-
-ReceivedTM18Text:
- text_far _ReceivedTM18Text
- sound_get_item_1
- text_end
-
-TM18ExplanationText:
- text_far _TM18ExplanationText
- text_end
-
-TM18NoRoomText:
- text_far _TM18NoRoomText
- text_end
-
CeladonMart3Text2:
text_far _CeladonMart3Text2
text_end
diff --git a/scripts/CeladonMart3F_2.asm b/scripts/CeladonMart3F_2.asm
new file mode 100755
index 00000000..239f84d1
--- /dev/null
+++ b/scripts/CeladonMart3F_2.asm
@@ -0,0 +1,36 @@
+Func_f1e30::
+ CheckEvent EVENT_GOT_TM18
+ jr nz, .got_item
+ ld hl, TM18PreReceiveText
+ call PrintText
+ lb bc, TM_COUNTER, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_TM18
+ ld hl, ReceivedTM18Text
+ jr .done
+.bag_full
+ ld hl, TM18NoRoomText
+ jr .done
+.got_item
+ ld hl, TM18ExplanationText
+.done
+ call PrintText
+ ret
+
+TM18PreReceiveText:
+ text_far _TM18PreReceiveText
+ text_end
+
+ReceivedTM18Text:
+ text_far _ReceivedTM18Text
+ sound_get_item_1
+ text_end
+
+TM18ExplanationText:
+ text_far _TM18ExplanationText
+ text_end
+
+TM18NoRoomText:
+ text_far _TM18NoRoomText
+ text_end
diff --git a/scripts/CeladonMart5F.asm b/scripts/CeladonMart5F.asm
index 91748706..a6e97405 100755
--- a/scripts/CeladonMart5F.asm
+++ b/scripts/CeladonMart5F.asm
@@ -1,5 +1,6 @@
CeladonMart5F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart5F_TextPointers:
dw CeladonMart5Text1
diff --git a/scripts/CeladonMartRoof.asm b/scripts/CeladonMartRoof.asm
index 0f71aa51..1d39670d 100755
--- a/scripts/CeladonMartRoof.asm
+++ b/scripts/CeladonMartRoof.asm
@@ -1,5 +1,6 @@
CeladonMartRoof_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMartRoofScript_GetDrinksInBag:
; construct a list of all drinks in the player's bag
@@ -71,7 +72,7 @@ CeladonMartRoofScript_GiveDrinkToGirl:
ld hl, wd730
res 6, [hl]
call HandleMenuInput
- bit 1, a ; pressed b
+ bit BIT_B_BUTTON, a ; pressed b
ret nz
ld hl, wFilteredBagItems
ld a, [wCurrentMenuItem]
@@ -125,13 +126,16 @@ CeladonMartRoofScript_GiveDrinkToGirl:
ret
.bagFull
ld hl, CeladonMartRoofText_48526
- jp PrintText
+ call PrintText
+ ret
.alreadyGaveDrink
ld hl, CeladonMartRoofText_4852c
- jp PrintText
+ call PrintText
+ ret
RemoveItemByIDBank12:
- farjp RemoveItemByID
+ farcall RemoveItemByID
+ ret
CeladonMartRoofText_484ee:
text_far _CeladonMartRoofText_484ee
diff --git a/scripts/CeladonPokecenter.asm b/scripts/CeladonPokecenter.asm
index 0f28e1b2..febc21f8 100755
--- a/scripts/CeladonPokecenter.asm
+++ b/scripts/CeladonPokecenter.asm
@@ -7,6 +7,7 @@ CeladonPokecenter_TextPointers:
dw CeladonPokecenterText2
dw CeladonPokecenterText3
dw CeladonTradeNurseText
+ dw CeladonPokecenterText5
CeladonTradeNurseText:
script_cable_club_receptionist
@@ -21,3 +22,8 @@ CeladonPokecenterText2:
CeladonPokecenterText3:
text_far _CeladonPokecenterText3
text_end
+
+CeladonPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/CeruleanCave1F.asm b/scripts/CeruleanCave1F.asm
index 6f5c7b13..e2803587 100755
--- a/scripts/CeruleanCave1F.asm
+++ b/scripts/CeruleanCave1F.asm
@@ -5,3 +5,4 @@ CeruleanCave1F_TextPointers:
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/CeruleanCave2F.asm b/scripts/CeruleanCave2F.asm
index 1bc8457b..e6a70082 100755
--- a/scripts/CeruleanCave2F.asm
+++ b/scripts/CeruleanCave2F.asm
@@ -5,3 +5,4 @@ CeruleanCave2F_TextPointers:
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/CeruleanCaveB1F.asm b/scripts/CeruleanCaveB1F.asm
index 621815b0..a94a7fe3 100755
--- a/scripts/CeruleanCaveB1F.asm
+++ b/scripts/CeruleanCaveB1F.asm
@@ -16,6 +16,8 @@ CeruleanCaveB1F_TextPointers:
dw MewtwoText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
+ dw PickUpItemText
MewtwoTrainerHeader:
trainer EVENT_BEAT_MEWTWO, 0, MewtwoBattleText, MewtwoBattleText, MewtwoBattleText
diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm
index 7505cb20..5a8ce978 100755
--- a/scripts/CeruleanCity.asm
+++ b/scripts/CeruleanCity.asm
@@ -35,10 +35,6 @@ CeruleanCityScript4:
ret
CeruleanCityScript0:
-IF DEF(_DEBUG)
- call DebugPressedOrHeldB
- ret nz
-ENDC
CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF
jr nz, .asm_194f7
ld hl, CeruleanCityCoords1
@@ -68,9 +64,7 @@ ENDC
ld a, [wWalkBikeSurfState]
and a
jr z, .asm_19512
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_19512
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -140,23 +134,8 @@ CeruleanCityScript1:
call SaveEndBattleTextPointers
ld a, OPP_RIVAL1
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
- ld a, $7
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $8
- jr .done
-.Charmander
- ld a, $9
-.done
+ ld a, 3
ld [wTrainerNo], a
-
xor a
ldh [hJoyHeld], a
call CeruleanCityScript_1955d
@@ -175,9 +154,7 @@ CeruleanCityScript2:
ld a, $1
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, $1
ldh [hSpriteIndex], a
diff --git a/scripts/CeruleanGym.asm b/scripts/CeruleanGym.asm
index a6630cf8..13a00da2 100755
--- a/scripts/CeruleanGym.asm
+++ b/scripts/CeruleanGym.asm
@@ -143,8 +143,6 @@ CeruleanGymText7:
CeruleanGymText_5c7d8:
text_far _CeruleanGymText_5c7d8
- sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
- text_promptbutton
text_end
CeruleanGymText2:
diff --git a/scripts/CeruleanPokecenter.asm b/scripts/CeruleanPokecenter.asm
index 680640f4..3aa465ca 100755
--- a/scripts/CeruleanPokecenter.asm
+++ b/scripts/CeruleanPokecenter.asm
@@ -7,6 +7,7 @@ CeruleanPokecenter_TextPointers:
dw CeruleanPokecenterText2
dw CeruleanPokecenterText3
dw CeruleanTradeNurseText
+ dw CeruleanPokecenterText5
CeruleanTradeNurseText:
script_cable_club_receptionist
@@ -21,3 +22,8 @@ CeruleanPokecenterText2:
CeruleanPokecenterText3:
text_far _CeruleanPokecenterText3
text_end
+
+CeruleanPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/CeruleanTradeHouse.asm b/scripts/CeruleanTradeHouse.asm
index 66952cd4..a6820fdb 100755
--- a/scripts/CeruleanTradeHouse.asm
+++ b/scripts/CeruleanTradeHouse.asm
@@ -1,17 +1,106 @@
CeruleanTradeHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeruleanTradeHouse_TextPointers:
dw CeruleanHouse1Text1
dw CeruleanHouse1Text2
+ dw CeruleanHouse1Text3
+ dw CeruleanHouse1Text4
CeruleanHouse1Text1:
- text_far _CeruleanHouse1Text1
+ text_asm
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+ jr nz, .asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfc8
+ call PrintText
+ ld a, [wPikachuHappiness]
+ cp 147
+ jr c, .asm_1cfb3
+ ld hl, CeruleanHouse1Text_1cfce
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_1cfb6
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, BULBASAUR
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, BULBASAUR, 10
+ call GivePokemon
+ jr nc, .asm_1cfb3
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeruleanHouse1Text_1cfd3
+ call PrintText
+ ld a, HS_CERULEAN_BULBASAUR
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN
+.asm_1cfb3
+ jp TextScriptEnd
+
+.asm_1cfb6
+ ld hl, CeruleanHouse1Text_1cfdf
+ call PrintText
+ jp TextScriptEnd
+
+.asm_1cfbf
+ ld hl, CeruleanHouse1Text_1cfd9
+ call PrintText
+ jp TextScriptEnd
+
+CeruleanHouse1Text_1cfc8:
+ text_far MelanieText1
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfce:
+ text_far MelanieText2
+ text_end
+
+CeruleanHouse1Text_1cfd3:
+ text_far MelanieText3
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfd9:
+ text_far MelanieText4
+ text_waitbutton
+ text_end
+
+CeruleanHouse1Text_1cfdf:
+ text_far MelanieText5
+ text_waitbutton
text_end
CeruleanHouse1Text2:
+ text_far MelanieBulbasaurText
+ text_asm
+ ld a, BULBASAUR
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text3:
+ text_far MelanieOddishText
+ text_asm
+ ld a, ODDISH
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text4:
+ text_far MelanieSandshrewText
text_asm
- ld a, TRADE_FOR_LOLA
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
+ ld a, SANDSHREW
+ call PlayCry
jp TextScriptEnd
diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm
index 11f99ee1..d500e1d2 100755
--- a/scripts/ChampionsRoom.asm
+++ b/scripts/ChampionsRoom.asm
@@ -2,7 +2,8 @@ ChampionsRoom_Script:
call EnableAutoTextBoxDrawing
ld hl, ChampionsRoom_ScriptPointers
ld a, [wChampionsRoomCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ResetGaryScript:
xor a
@@ -69,18 +70,7 @@ GaryScript2:
; select which team to use during the encounter
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotStarter2
- ld a, $1
- jr .saveTrainerId
-.NotStarter2
- cp STARTER3
- jr nz, .NotStarter3
- ld a, $2
- jr .saveTrainerId
-.NotStarter3
- ld a, $3
-.saveTrainerId
+ add $0 ; Wow GameFreak
ld [wTrainerNo], a
xor a
diff --git a/scripts/CinnabarGym.asm b/scripts/CinnabarGym.asm
index 5703bb1d..529b3be2 100755
--- a/scripts/CinnabarGym.asm
+++ b/scripts/CinnabarGym.asm
@@ -37,11 +37,14 @@ CinnabarGymScript_75792:
ld [wOpponentAfterWrongAnswer], a
ret
-CinnabarGymScript_757a0:
+CinnabarGymScript_74f48:
ldh a, [hSpriteIndexOrTextID]
ld [wTrainerHeaderFlagBit], a
ret
+CinnabarGymFlagAction:
+ predef_jump FlagActionPredef
+
CinnabarGym_ScriptPointers:
dw CinnabarGymScript0
dw CinnabarGymScript1
@@ -57,12 +60,18 @@ CinnabarGymScript0:
jr nz, .asm_757c3
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
+ ld hl, PikachuMovementData_74f97
+ ld b, SPRITE_FACING_DOWN
+ call CinnabarGymScript_74fa3
ld de, MovementData_757d7
jr .asm_757cb
.asm_757c3
- ld de, MovementData_757da
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
+ ld hl, PikachuMovementData_74f9e
+ ld b, SPRITE_FACING_RIGHT
+ call CinnabarGymScript_74fa3
+ ld de, MovementData_757da
.asm_757cb
call MoveSprite
ld a, $1
@@ -75,10 +84,39 @@ MovementData_757d7:
db NPC_MOVEMENT_UP
db -1 ; end
+PikachuMovementData_74f97:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
+
MovementData_757da:
db NPC_MOVEMENT_LEFT
db -1 ; end
+PikachuMovementData_74f9e:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
+
+CinnabarGymScript_74fa3:
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ push hl
+ push bc
+ callfar GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+ call ApplyPikachuMovementData
+ ret
+
CinnabarGymScript1:
ld a, [wd730]
bit 0, a
@@ -90,52 +128,74 @@ CinnabarGymScript1:
ldh [hSpriteIndexOrTextID], a
jp DisplayTextID
-CinnabarGymFlagAction:
- predef_jump FlagActionPredef
-
CinnabarGymScript2:
+ call CinnabarGymScript_753e9
ld a, [wIsInBattle]
cp $ff
jp z, CinnabarGymScript_75792
ld a, [wTrainerHeaderFlagBit]
- ldh [hGymGateIndex], a
- AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
+ sub 2
ld c, a
ld b, FLAG_TEST
- EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+ EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
call CinnabarGymFlagAction
ld a, c
and a
- jr nz, .asm_7581b
+ jr nz, .asm_7500d
+ ld a, [wTrainerHeaderFlagBit]
+ cp 2
+ jr z, .asm_7500d
+ ld c, 30
+ call DelayFrames
+ call CinnabarGymScript_75023
+ call CinnabarGymScript_75041
call WaitForSoundToFinish
ld a, SFX_GO_INSIDE
call PlaySound
call WaitForSoundToFinish
-.asm_7581b
+ jr .asm_75013
+.asm_7500d
+ call CinnabarGymScript_75023
+ call CinnabarGymScript_75041
+.asm_75013
+ xor a
+ ld [wJoyIgnore], a
+ ld [wOpponentAfterWrongAnswer], a
+ ld a, $0
+ ld [wCinnabarGymCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+CinnabarGymScript_75023:
ld a, [wTrainerHeaderFlagBit]
ldh [hGymGateIndex], a
- AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
ld c, a
ld b, FLAG_SET
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
call CinnabarGymFlagAction
+ ret
+
+CinnabarGymScript_75032:
ld a, [wTrainerHeaderFlagBit]
- sub $2
- AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
+ ldh [hGymGateIndex], a
+ ld c, a
+ ld b, FLAG_TEST
+ EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
+ call CinnabarGymFlagAction
+ ret
+
+CinnabarGymScript_75041:
+ ld a, [wTrainerHeaderFlagBit]
+ sub 2
ld c, a
ld b, FLAG_SET
EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
call CinnabarGymFlagAction
call UpdateCinnabarGymGateTileBlocks
- xor a
- ld [wJoyIgnore], a
- ld [wOpponentAfterWrongAnswer], a
- ld a, $0
- ld [wCinnabarGymCurScript], a
- ld [wCurMapScript], a
ret
CinnabarGymScript3:
+ call CinnabarGymScript_753e9
ld a, [wIsInBattle]
cp $ff
jp z, CinnabarGymScript_75792
@@ -186,7 +246,7 @@ CinnabarGym_TextPointers:
dw ReceivedTM38Text
dw TM38NoRoomText
-CinnabarGymScript_758b7:
+CinnabarGymScript_750c3:
ldh a, [hSpriteIndexOrTextID]
ld [wSpriteIndex], a
call EngageMapTrainer
@@ -227,7 +287,7 @@ CinnabarGymText1:
call SaveEndBattleTextPointers
ld a, $7
ld [wGymLeaderNo], a
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
BlaineBattleText:
text_far _BlaineBattleText
@@ -259,7 +319,7 @@ TM38NoRoomText:
CinnabarGymText2:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
jr nz, .asm_46bb4
ld hl, CinnabarGymText_7595f
@@ -267,7 +327,7 @@ CinnabarGymText2:
ld hl, CinnabarGymText_75964
ld de, CinnabarGymText_75964
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
.asm_46bb4
ld hl, CinnabarGymText_75969
call PrintText
@@ -287,16 +347,25 @@ CinnabarGymText_75969:
CinnabarGymText3:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
- jr nz, .asm_4b406
+ jr nz, .asm_751a8
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75196
+ CheckEvent EVENT_CINNABAR_GYM_GATE1_UNLOCKED
+ jr nz, .asm_75196
+ ld e, $00
+ jp CinnabarGymScript_753de
+
+.asm_75196
ld hl, CinnabarGymText_75994
call PrintText
ld hl, CinnabarGymText_75999
ld de, CinnabarGymText_75999
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
-.asm_4b406
+ jp CinnabarGymScript_750c3
+
+.asm_751a8
ld hl, CinnabarGymText_7599e
call PrintText
jp TextScriptEnd
@@ -315,16 +384,24 @@ CinnabarGymText_7599e:
CinnabarGymText4:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
- jr nz, .asm_c0673
+ jr nz, .asm_751ee
+ call CinnabarGymScript_753f3
+ jr nz, .asm_751dc
+ CheckEvent EVENT_CINNABAR_GYM_GATE2_UNLOCKED
+ jr nz, .asm_751dc
+ ld e, $1
+ jp CinnabarGymScript_753de
+
+.asm_751dc
ld hl, CinnabarGymText_759c9
call PrintText
ld hl, CinnabarGymText_759ce
ld de, CinnabarGymText_759ce
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
-.asm_c0673
+ jp CinnabarGymScript_750c3
+.asm_751ee
ld hl, CinnabarGymText_759d3
call PrintText
jp TextScriptEnd
@@ -343,16 +420,24 @@ CinnabarGymText_759d3:
CinnabarGymText5:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
- jr nz, .asm_5cfd7
+ jr nz, .asm_75234
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE3_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $2
+ jp CinnabarGymScript_753de
+
+.asm_75222
ld hl, CinnabarGymText_759fe
call PrintText
ld hl, CinnabarGymText_75a03
ld de, CinnabarGymText_75a03
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
-.asm_5cfd7
+ jp CinnabarGymScript_750c3
+.asm_75234
ld hl, CinnabarGymText_75a08
call PrintText
jp TextScriptEnd
@@ -371,15 +456,23 @@ CinnabarGymText_75a08:
CinnabarGymText6:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
jr nz, .asm_776b4
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE4_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $3
+ jp CinnabarGymScript_753de
+
+.asm_75222
ld hl, CinnabarGymText_75a33
call PrintText
ld hl, CinnabarGymText_75a38
ld de, CinnabarGymText_75a38
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
.asm_776b4
ld hl, CinnabarGymText_75a3d
call PrintText
@@ -399,15 +492,23 @@ CinnabarGymText_75a3d:
CinnabarGymText7:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
jr nz, .asm_2f755
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE5_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $4
+ jp CinnabarGymScript_753de
+
+.asm_75222
ld hl, CinnabarGymText_75a68
call PrintText
ld hl, CinnabarGymText_75a6d
ld de, CinnabarGymText_75a6d
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
.asm_2f755
ld hl, CinnabarGymText_75a72
call PrintText
@@ -427,15 +528,23 @@ CinnabarGymText_75a72:
CinnabarGymText8:
text_asm
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
jr nz, .asm_d87be
+ call CinnabarGymScript_753f3
+ jr nz, .asm_75222
+ CheckEvent EVENT_CINNABAR_GYM_GATE6_UNLOCKED
+ jr nz, .asm_75222
+ ld e, $5
+ jp CinnabarGymScript_753de
+
+.asm_75222
ld hl, CinnabarGymText_75a9d
call PrintText
ld hl, CinnabarGymText_75aa2
ld de, CinnabarGymText_75aa2
call SaveEndBattleTextPointers
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
.asm_d87be
ld hl, CinnabarGymText_75aa7
call PrintText
@@ -455,20 +564,5 @@ CinnabarGymText_75aa7:
CinnabarGymText9:
text_asm
- CheckEvent EVENT_BEAT_BLAINE
- jr nz, .asm_627d9
- ld hl, CinnabarGymText_75ac2
- jr .asm_0b11d
-.asm_627d9
- ld hl, CinnabarGymText_75ac7
-.asm_0b11d
- call PrintText
+ callfar Func_f2133
jp TextScriptEnd
-
-CinnabarGymText_75ac2:
- text_far _CinnabarGymText_75ac2
- text_end
-
-CinnabarGymText_75ac7:
- text_far _CinnabarGymText_75ac7
- text_end
diff --git a/scripts/CinnabarGym3.asm b/scripts/CinnabarGym3.asm
new file mode 100755
index 00000000..af3db510
--- /dev/null
+++ b/scripts/CinnabarGym3.asm
@@ -0,0 +1,64 @@
+Func_f2133::
+ CheckEvent EVENT_BEAT_BLAINE
+ jr nz, .asm_627d9
+ ld hl, CinnabarGymText_75ac2
+ jr .asm_0b11d
+.asm_627d9
+ ld hl, CinnabarGymText_75ac7
+.asm_0b11d
+ call PrintText
+ ret
+
+CinnabarGymText_75ac2:
+ text_far _CinnabarGymText_75ac2
+ text_end
+
+CinnabarGymText_75ac7:
+ text_far _CinnabarGymText_75ac7
+ text_end
+
+Func_f2150::
+ ld hl, TextPointers_f215d
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp PrintText
+
+TextPointers_f215d:
+ dw CinnabarGymText_f2169
+ dw CinnabarGymText_f216e
+ dw CinnabarGymText_f2173
+ dw CinnabarGymText_f2178
+ dw CinnabarGymText_f217d
+ dw CinnabarGymText_f2182
+
+CinnabarGymText_f2169:
+ text_far _CinnabarGymText_1
+ text_end
+
+CinnabarGymText_f216e:
+ text_far _CinnabarGymText_2
+ text_end
+
+CinnabarGymText_f2173:
+ text_far _CinnabarGymText_3
+ text_end
+
+CinnabarGymText_f2178:
+ text_far _CinnabarGymText_4
+ text_end
+
+CinnabarGymText_f217d:
+ text_far _CinnabarGymText_5
+ text_end
+
+CinnabarGymText_f2182:
+ text_far _CinnabarGymText_6
+ text_end
+
+CinnabarGymText_f2187:
+ text_far _CinnabarGymText_7 ; unused
+ text_end
diff --git a/scripts/CinnabarGym_2.asm b/scripts/CinnabarGym_2.asm
new file mode 100755
index 00000000..4c296cf7
--- /dev/null
+++ b/scripts/CinnabarGym_2.asm
@@ -0,0 +1,18 @@
+CinnabarGymScript_753de:
+ callfar Func_f2150
+ jp TextScriptEnd
+
+CinnabarGymScript_753e9:
+ push hl
+ ld hl, wd475
+ bit 7, [hl]
+ res 7, [hl]
+ pop hl
+ ret
+
+CinnabarGymScript_753f3:
+ push hl
+ ld hl, wd475
+ bit 7, [hl]
+ pop hl
+ ret
diff --git a/scripts/CinnabarPokecenter.asm b/scripts/CinnabarPokecenter.asm
index 9396f851..3a229ca3 100755
--- a/scripts/CinnabarPokecenter.asm
+++ b/scripts/CinnabarPokecenter.asm
@@ -7,6 +7,7 @@ CinnabarPokecenter_TextPointers:
dw CinnabarPokecenterText2
dw CinnabarPokecenterText3
dw CinnabarTradeNurseText
+ dw CinnabarPokecenterText5
CinnabarHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ CinnabarPokecenterText3:
CinnabarTradeNurseText:
script_cable_club_receptionist
+
+CinnabarPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/Colosseum.asm b/scripts/Colosseum.asm
index 83d41bdc..83d41bdc 100755..100644
--- a/scripts/Colosseum.asm
+++ b/scripts/Colosseum.asm
diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm
index 481d7e14..164664b4 100755
--- a/scripts/Daycare.asm
+++ b/scripts/Daycare.asm
@@ -50,11 +50,21 @@ DayCareMText1:
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
call MoveMon
+ callfar IsThisPartymonStarterPikachu
+ push af
xor a
ld [wRemoveMonFromBox], a
call RemovePokemon
+ pop af
+ jr c, .depositedPikachuIntoDayCare
ld a, [wcf91]
call PlayCry
+ jr .asm_562e3
+
+.depositedPikachuIntoDayCare
+ ldpikacry e, PikachuCry28
+ callfar PlayPikachuSoundClip
+.asm_562e3
ld hl, DayCareComeSeeMeInAWhileText
jp .done
@@ -197,8 +207,27 @@ DayCareMText1:
ld a, [hl]
ld [de], a
+ ld a, [wPartyCount]
+ dec a
+ ld [wWhichPokemon], a
+ callfar IsThisPartymonStarterPikachu
+ jr c, .withdrewPikachuFromDayCare
ld a, [wcf91]
call PlayCry
+ jr .asm_56430
+
+.withdrewPikachuFromDayCare
+ ld a, $6
+ ld [wPikachuSpawnState], a
+
+ ; GameFreak... TriHard
+ ld hl, SchedulePikachuSpawnForAfterText
+ ld b, BANK(SchedulePikachuSpawnForAfterText)
+ ld hl, Bankswitch
+
+ ldpikacry e, PikachuCry35
+ callfar PlayPikachuSoundClip
+.asm_56430
ld hl, DayCareGotMonBackText
jr .done
diff --git a/scripts/FuchsiaMart.asm b/scripts/FuchsiaMart.asm
index e6d64c53..75e9a45d 100755
--- a/scripts/FuchsiaMart.asm
+++ b/scripts/FuchsiaMart.asm
@@ -1,5 +1,6 @@
FuchsiaMart_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
FuchsiaMart_TextPointers:
dw FuchsiaCashierText
diff --git a/scripts/FuchsiaPokecenter.asm b/scripts/FuchsiaPokecenter.asm
index 788ee24b..2d98ca17 100755
--- a/scripts/FuchsiaPokecenter.asm
+++ b/scripts/FuchsiaPokecenter.asm
@@ -7,6 +7,7 @@ FuchsiaPokecenter_TextPointers:
dw FuchsiaPokecenterText2
dw FuchsiaPokecenterText3
dw FuchsiaTradeNurseText
+ dw FuchsiaPokecenterText5
FuchsiaHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ FuchsiaPokecenterText3:
FuchsiaTradeNurseText:
script_cable_club_receptionist
+
+FuchsiaPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm
index 94c35883..b2d4d96a 100755
--- a/scripts/GameCorner.asm
+++ b/scripts/GameCorner.asm
@@ -71,8 +71,12 @@ CeladonGameCornerScript1:
.asm_48c43
ld a, [wXCoord]
cp 8
- jr nz, .asm_48c4d
+ jr nz, .pikachu
ld de, MovementData_48c63
+ jr .asm_48c4d
+.pikachu
+ callfar Func_f1f23
+ ld de, MovementData_48c5a
.asm_48c4d
ld a, $b
ldh [hSpriteIndex], a
@@ -85,8 +89,8 @@ MovementData_48c5a:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
@@ -475,13 +479,11 @@ CeladonGameCornerScript_48f1e:
ld hl, wd730
set 6, [hl]
hlcoord 11, 0
- ld b, $5
- ld c, $7
+ lb bc, 5, 7
call TextBoxBorder
call UpdateSprites
hlcoord 12, 1
- ld b, 4
- ld c, 7
+ lb bc, 4, 7
call ClearScreenArea
hlcoord 12, 2
ld de, GameCornerMoneyText
@@ -491,7 +493,7 @@ CeladonGameCornerScript_48f1e:
call PlaceString
hlcoord 12, 3
ld de, wPlayerMoney
- ld c, $a3
+ ld c, 3 | MONEY_SIGN | LEADING_ZEROES
call PrintBCDNumber
hlcoord 12, 4
ld de, GameCornerCoinText
diff --git a/scripts/GameCorner2.asm b/scripts/GameCorner2.asm
new file mode 100755
index 00000000..3571e9d9
--- /dev/null
+++ b/scripts/GameCorner2.asm
@@ -0,0 +1,12 @@
+Func_f1f23::
+ ld hl, PikachuMovementData_f1f2c
+ ld b, SPRITE_FACING_DOWN
+ call TryApplyPikachuMovementData
+ ret
+
+PikachuMovementData_f1f2c:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
diff --git a/scripts/IndigoPlateauLobby.asm b/scripts/IndigoPlateauLobby.asm
index a9b549e3..0a532d9a 100755
--- a/scripts/IndigoPlateauLobby.asm
+++ b/scripts/IndigoPlateauLobby.asm
@@ -20,6 +20,7 @@ IndigoPlateauLobby_TextPointers:
dw IndigoPlateauLobbyText3
dw IndigoCashierText
dw IndigoTradeNurseText
+ dw IndigoPlateauLobbyText6
IndigoHealNurseText:
script_pokecenter_nurse
@@ -34,3 +35,8 @@ IndigoPlateauLobbyText3:
IndigoTradeNurseText:
script_cable_club_receptionist
+
+IndigoPlateauLobbyText6:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm
index 5c7301ef..68d2020e 100755
--- a/scripts/LancesRoom.asm
+++ b/scripts/LancesRoom.asm
@@ -18,23 +18,22 @@ LanceShowOrHideEntranceBlocks:
; open entrance
ld a, $31
ld b, $32
- jp LanceSetEntranceBlocks
+ jp .LanceSetEntranceBlocks
+
.closeEntrance
ld a, $72
ld b, $73
-
-LanceSetEntranceBlocks:
+.LanceSetEntranceBlocks
; Replaces the tile blocks so the player can't leave.
push bc
ld [wNewTileBlockID], a
lb bc, 6, 2
- call LanceSetEntranceBlock
+ call .LanceSetEntranceBlock
pop bc
ld a, b
ld [wNewTileBlockID], a
lb bc, 6, 3
-
-LanceSetEntranceBlock:
+.LanceSetEntranceBlock
predef_jump ReplaceTileBlock
ResetLanceScript:
@@ -110,7 +109,7 @@ WalkToLance:
ret
WalkToLance_RLEList:
- db D_UP, 12
+ db D_UP, 13
db D_LEFT, 12
db D_DOWN, 7
db D_LEFT, 6
diff --git a/scripts/LavenderPokecenter.asm b/scripts/LavenderPokecenter.asm
index b8a1d2a5..a15bfcfa 100755
--- a/scripts/LavenderPokecenter.asm
+++ b/scripts/LavenderPokecenter.asm
@@ -7,6 +7,7 @@ LavenderPokecenter_TextPointers:
dw LavenderPokecenterText2
dw LavenderPokecenterText3
dw LavenderTradeNurseText
+ dw LavenderPokecenterText5
LavenderTradeNurseText:
script_cable_club_receptionist
@@ -21,3 +22,8 @@ LavenderPokecenterText2:
LavenderPokecenterText3:
text_far _LavenderPokecenterText3
text_end
+
+LavenderPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/MtMoon1F.asm b/scripts/MtMoon1F.asm
index 68dacf29..2653016f 100755
--- a/scripts/MtMoon1F.asm
+++ b/scripts/MtMoon1F.asm
@@ -47,42 +47,37 @@ MtMoon1TrainerHeader6:
MtMoon1Text1:
text_asm
ld hl, MtMoon1TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text2:
text_asm
ld hl, MtMoon1TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text3:
text_asm
ld hl, MtMoon1TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text4:
text_asm
ld hl, MtMoon1TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text5:
text_asm
ld hl, MtMoon1TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text6:
text_asm
ld hl, MtMoon1TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text7:
text_asm
ld hl, MtMoon1TrainerHeader6
+MtMoon1TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm
index 9faf038a..a02d7d42 100755
--- a/scripts/MtMoonB2F.asm
+++ b/scripts/MtMoonB2F.asm
@@ -37,13 +37,23 @@ CoordsData_49d37:
dbmapcoord 14, 8
db -1 ; end
-MtMoon3Script_49d58:
+MtMoon3Script_49cd7:
+ CheckAndResetEvent EVENT_57E
+ call nz, MtMoon3Script_49cec
xor a
ld [wJoyIgnore], a
+MtMoon3Script_49ce5:
ld [wMtMoonB2FCurScript], a
ld [wCurMapScript], a
ret
+MtMoon3Script_49cec:
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoon3Script_49f93
+ ret
+
MtMoonB2F_ScriptPointers:
dw MtMoon3Script0
dw DisplayEnemyTrainerTextAndStartBattle
@@ -51,23 +61,41 @@ MtMoonB2F_ScriptPointers:
dw MtMoon3Script3
dw MtMoon3Script4
dw MtMoon3Script5
+ dw MtMoon3Script6
+ dw MtMoon3Script7
+ dw MtMoon3Script8
+ dw MtMoon3Script9
+ dw MtMoon3Script10
+ dw MtMoon3Script11
+ dw MtMoon3Script12
+ dw MtMoon3Script13
+ dw MtMoon3Script14
+ dw MtMoon3Script15
MtMoon3Script0:
+ CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ call z, MtMoon3Script_49d28
+ CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0
+ call z, MtMoon3Script_49e15
+ ret
+
+MtMoon3Script_49d28:
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
ld a, [wYCoord]
cp 8
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
ld a, [wXCoord]
cp 13
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
xor a
ldh [hJoyHeld], a
ld a, $1
ldh [hSpriteIndexOrTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
-MtMoon3Script_49d91:
+.asm_49d4b
CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
jp z, CheckFightingMapTrainers
ret
@@ -75,55 +103,91 @@ MtMoon3Script_49d91:
MtMoon3Script3:
ld a, [wIsInBattle]
cp $ff
- jp z, MtMoon3Script_49d58
+ jp z, MtMoon3Script_49cd7
call UpdateSprites
call Delay3
SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
xor a
ld [wJoyIgnore], a
ld a, $0
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoon3Script_49ce5
ret
MtMoon3Script4:
ld a, $1
ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF
- ld hl, CoordsData_49dea
+ ld hl, CoordsData_49dc7
+ call ArePlayerCoordsInArray
+ jr c, .asm_49da8
+ ld hl, CoordsData_49dc0
+ call ArePlayerCoordsInArray
+ jr c, .asm_49db0
+ ld hl, CoordsData_49dd5
call ArePlayerCoordsInArray
- jr c, .asm_49dd7
- ld hl, CoordsData_49df1
+ jr c, .asm_49d9b
+ ld hl, CoordsData_49dce
call ArePlayerCoordsInArray
- jp nc, CheckFightingMapTrainers
- ld de, MovementData_49df9
- jr .asm_49dda
-.asm_49dd7
- ld de, MovementData_49df8
-.asm_49dda
+ jr c, .asm_49da3
+ jp CheckFightingMapTrainers
+
+.asm_49d9b
+ ld b, SPRITE_FACING_LEFT
+ ld hl, PikachuMovementData_49dd8
+ call MtMoon3Script_4a325
+.asm_49da3
+ ld de, MovementData_49ddd
+ jr .asm_49db3
+
+.asm_49da8
+ ld b, SPRITE_FACING_RIGHT
+ ld hl, PikachuMovementData_49dca
+ call MtMoon3Script_4a325
+.asm_49db0
+ ld de, MovementData_49ddc
+.asm_49db3
ld a, $1
ldh [hSpriteIndex], a
call MoveSprite
ld a, $5
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoon3Script_49ce5
ret
-CoordsData_49dea:
+CoordsData_49dc0:
dbmapcoord 12, 7
dbmapcoord 11, 6
dbmapcoord 12, 5
db -1 ; end
-CoordsData_49df1:
+CoordsData_49dc7:
+ dbmapcoord 12, 7
+ db -1 ; end
+
+PikachuMovementData_49dca:
+ db $00
+ db $35
+ db $33
+ db $3f
+
+CoordsData_49dce:
dbmapcoord 13, 7
dbmapcoord 14, 6
dbmapcoord 14, 5
db -1 ; end
-MovementData_49df8:
+CoordsData_49dd5:
+ dbmapcoord 13, 7
+ db -1 ; end
+
+PikachuMovementData_49dd8:
+ db $00
+ db $35
+ db $34
+ db $3f
+
+MovementData_49ddc:
db NPC_MOVEMENT_RIGHT
-MovementData_49df9:
+MovementData_49ddd:
db NPC_MOVEMENT_UP
db -1 ; end
@@ -135,23 +199,213 @@ MtMoon3Script5:
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, $a
+ ld a, $b
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- CheckEvent EVENT_GOT_DOME_FOSSIL
+ CheckEvent EVENT_GOT_HELIX_FOSSIL
jr z, .asm_49e1d
- ld a, HS_MT_MOON_B2F_FOSSIL_2
+ ld a, HS_MT_MOON_B2F_FOSSIL_1
jr .asm_49e1f
.asm_49e1d
- ld a, HS_MT_MOON_B2F_FOSSIL_1
+ ld a, HS_MT_MOON_B2F_FOSSIL_2
.asm_49e1f
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
ld a, $0
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script_49e15:
+ ld a, [wXCoord]
+ cp $3
+ ret nz
+ ld a, [wYCoord]
+ cp $5
+ ret nz
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoon3Script_49f84
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoon3Script_49f84
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $c
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_UP
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $6
+ call MtMoon3Script_49ce5
+ ret
+
+MovementData_f9e65:
+ db $06
+MovementData_f9e66:
+ db $06
+ db $06
+ db $06
+ db $06
+ db $06
+ db $FF
+
+MtMoon3Script6:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ call Delay3
+ ld a, $2
+ ldh [hSpriteIndex], a
+ ld de, MovementData_f9e65
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $7
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script7:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+MtMoon3Script8:
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+MtMoon3Script9:
+ ld a, $6
+ ldh [hSpriteIndex], a
+ ld de, MovementData_f9e66
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $a
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script10:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+MtMoon3Script11:
+ ld a, $2
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ call Delay3
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $d
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+MtMoon3Script12:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, MtMoon3JessieJamesEndBattleText
+ ld de, MtMoon3JessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2a
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_57E
+ ld a, $d
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script13:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, MtMoon3Script_49cd7
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $e
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $e
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script14:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_MT_MOON_B2F_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_B2F_JAMES
+ call MtMoon3Script_49f93
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $f
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script15:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0
+ ResetEventReuseHL EVENT_57E
+ ld a, $0
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script_49f84:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+MtMoon3Script_49f93:
+ ld [wMissableObjectIndex], a
+ predef HideObject
ret
MtMoonB2F_TextPointers:
@@ -162,185 +416,204 @@ MtMoonB2F_TextPointers:
dw MtMoon3Text5
dw MtMoon3Text6
dw MtMoon3Text7
+ dw MtMoon3Text8
dw PickUpItemText
dw PickUpItemText
- dw MtMoon3Text_49f99
+ dw MtMoon3Text11
+ dw MtMoon3Text12
+ dw MtMoon3Text13
+ dw MtMoon3Text14
MtMoon3TrainerHeader0:
- trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoon3BattleText2, MtMoon3EndBattleText2, MtMoon3AfterBattleText2
-MtMoon3TrainerHeader1:
trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoon3BattleText3, MtMoon3EndBattleText3, MtMoon3AfterBattleText3
-MtMoon3TrainerHeader2:
+MtMoon3TrainerHeader1:
trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoon3BattleText4, MtMoon3EndBattleText4, MtMoon3AfterBattleText4
-MtMoon3TrainerHeader3:
+MtMoon3TrainerHeader2:
trainer EVENT_BEAT_MT_MOON_3_TRAINER_3, 4, MtMoon3BattleText5, MtMoon3EndBattleText5, MtMoon3AfterBattleText5
db -1 ; end
+MtMoon3Text2:
+MtMoon3Text6:
+ text_end
+
+MtMoon3Text12:
+ text_far _MtMoonJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+MtMoon3Text13:
+ text_far _MtMoonJessieJamesText2
+ text_end
+
+MtMoon3JessieJamesEndBattleText:
+ text_far _MtMoonJessieJamesText3
+ text_end
+
+MtMoon3Text14:
+ text_far _MtMoonJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
MtMoon3Text1:
text_asm
CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD
- jr z, .asm_49e8d
- and $c0
- jr nz, .asm_49eb8
- ld hl, MtMoon3Text_49f8f
+ jr z, .asm_4a02f
+ ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ and (1 << (EVENT_GOT_DOME_FOSSIL % 8)) | (1 << (EVENT_GOT_HELIX_FOSSIL % 8))
+ jr nz, .asm_4a057
+ ld hl, MtMoon3Text_4a116
call PrintText
- jr .asm_49ebe
-.asm_49e8d
- ld hl, MtMoon3Text_49f85
+ jr .asm_4a05d
+
+.asm_4a02f
+ ld hl, MtMoon3Text_4a10c
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
- ld hl, MtMoon3Text_49f8a
- ld de, MtMoon3Text_49f8a
+ ld hl, MtMoon3SuperNerdEndBattleText
+ ld de, MtMoon3SuperNerdEndBattleText
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $3
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
- jr .asm_49ebe
-.asm_49eb8
- ld hl, MtMoon3Text_49f94
+ call MtMoon3Script_49ce5
+ jr .asm_4a05d
+
+.asm_4a057
+ ld hl, MtMoon3Text_4a11b
call PrintText
-.asm_49ebe
+.asm_4a05d
jp TextScriptEnd
-MtMoon3Text2:
+MtMoon3Text3:
text_asm
ld hl, MtMoon3TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon3TalkToTrainer
-MtMoon3Text3:
+MtMoon3Text4:
text_asm
ld hl, MtMoon3TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon3TalkToTrainer
-MtMoon3Text4:
- text_asm
- ld hl, MtMoon3TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
MtMoon3Text5:
text_asm
- ld hl, MtMoon3TrainerHeader3
+ ld hl, MtMoon3TrainerHeader2
+MtMoon3TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
-MtMoon3Text6:
+MtMoon3Text7:
text_asm
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, MtMoon3Text_49f24
+ ld hl, MtMoon3Text_4a0ae
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
- jr nz, .asm_49f21
+ jr nz, .asm_4a0ab
lb bc, DOME_FOSSIL, 1
call GiveItem
- jp nc, MtMoon3Script_49f76
- call MtMoon3Script_49f69
+ jp nc, MtMoon3Script_4a0fd
+ call MtMoon3Script_4a0f0
ld a, HS_MT_MOON_B2F_FOSSIL_1
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_DOME_FOSSIL
ld a, $4
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
-.asm_49f21
+ call MtMoon3Script_49ce5
+.asm_4a0ab
jp TextScriptEnd
-MtMoon3Text_49f24:
+MtMoon3Text_4a0ae:
text_far _MtMoon3Text_49f24
text_end
-MtMoon3Text7:
+MtMoon3Text8:
text_asm
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, MtMoon3Text_49f64
+ ld hl, MtMoon3Text_4a0eb
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
- jr nz, .asm_49f61
+ jr nz, .asm_4a0e8
lb bc, HELIX_FOSSIL, 1
call GiveItem
- jp nc, MtMoon3Script_49f76
- call MtMoon3Script_49f69
+ jp nc, MtMoon3Script_4a0fd
+ call MtMoon3Script_4a0f0
ld a, HS_MT_MOON_B2F_FOSSIL_2
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_HELIX_FOSSIL
ld a, $4
- ld [wMtMoonB2FCurScript], a
- ld [wCurMapScript], a
-.asm_49f61
+ call MtMoon3Script_49ce5
+.asm_4a0e8
jp TextScriptEnd
-MtMoon3Text_49f64:
+MtMoon3Text_4a0eb:
text_far _MtMoon3Text_49f64
text_end
-MtMoon3Script_49f69:
- ld hl, MtMoon3Text_49f6f
+MtMoon3Script_4a0f0:
+ ld hl, MtMoon3Text_4a0f6
jp PrintText
-MtMoon3Text_49f6f:
+MtMoon3Text_4a0f6:
text_far _MtMoon3Text_49f6f
sound_get_key_item
text_waitbutton
text_end
-MtMoon3Script_49f76:
- ld hl, MtMoon3Text_49f7f
+MtMoon3Script_4a0fd:
+ ld hl, MtMoon3Text_4a106
call PrintText
jp TextScriptEnd
-MtMoon3Text_49f7f:
+MtMoon3Text_4a106:
text_far _MtMoon3Text_49f7f
text_waitbutton
text_end
-MtMoon3Text_49f85:
+MtMoon3Text_4a10c:
text_far _MtMoon3Text_49f85
text_end
-MtMoon3Text_49f8a:
+MtMoon3SuperNerdEndBattleText:
text_far _MtMoon3Text_49f8a
text_end
-MtMoon3Text_49f8f:
+MtMoon3Text_4a116:
text_far _MtMoon3Text_49f8f
text_end
-MtMoon3Text_49f94:
+MtMoon3Text_4a11b:
text_far _MtMoon3Text_49f94
text_end
-MtMoon3Text_49f99:
+MtMoon3Text11:
text_far _MtMoon3Text_49f99
sound_get_key_item
text_end
-MtMoon3BattleText2:
- text_far _MtMoon3BattleText2
- text_end
-
-MtMoon3EndBattleText2:
- text_far _MtMoon3EndBattleText2
- text_end
-
-MtMoon3AfterBattleText2:
- text_far _MtMoon3AfterBattleText2
- text_end
-
MtMoon3BattleText3:
text_far _MtMoon3BattleText3
text_end
@@ -376,3 +649,4 @@ MtMoon3EndBattleText5:
MtMoon3AfterBattleText5:
text_far _MtMoon3AfterBattleText5
text_end
+
diff --git a/scripts/MtMoonB2F_2.asm b/scripts/MtMoonB2F_2.asm
new file mode 100755
index 00000000..c983bb0d
--- /dev/null
+++ b/scripts/MtMoonB2F_2.asm
@@ -0,0 +1,28 @@
+MtMoon3Script_4a325: ; pikachu-related function?
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ ld a, [wWalkBikeSurfState]
+ and a
+ ret nz
+
+ push hl
+ push bc
+ callfar GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+
+ push hl
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ callfar LoadPikachuShadowIntoVRAM
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop hl
+ call ApplyPikachuMovementData
+ ret
diff --git a/scripts/MtMoonPokecenter.asm b/scripts/MtMoonPokecenter.asm
index e4b881d1..302c5f19 100755
--- a/scripts/MtMoonPokecenter.asm
+++ b/scripts/MtMoonPokecenter.asm
@@ -9,6 +9,7 @@ MtMoonPokecenter_TextPointers:
dw MagikarpSalesmanText
dw MtMoonPokecenterText5
dw MtMoonTradeNurseText
+ dw MtMoonPokecenterText7
MtMoonHealNurseText:
script_pokecenter_nurse
@@ -23,72 +24,17 @@ MtMoonPokecenterText3:
MagikarpSalesmanText:
text_asm
- CheckEvent EVENT_BOUGHT_MAGIKARP, 1
- jp c, .alreadyBoughtMagikarp
- ld hl, .Text1
- call PrintText
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jp nz, .choseNo
- ldh [hMoney], a
- ldh [hMoney + 2], a
- ld a, $5
- ldh [hMoney + 1], a
- call HasEnoughMoney
- jr nc, .enoughMoney
- ld hl, .NoMoneyText
- jr .printText
-.enoughMoney
- lb bc, MAGIKARP, 5
- call GivePokemon
- jr nc, .done
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 2], a
- ld a, $5
- ld [wPriceTemp + 1], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- SetEvent EVENT_BOUGHT_MAGIKARP
- jr .done
-.choseNo
- ld hl, .RefuseText
- jr .printText
-.alreadyBoughtMagikarp
- ld hl, .Text2
-.printText
- call PrintText
-.done
+ callfar MagikarpSalesman
jp TextScriptEnd
-.Text1
- text_far _MagikarpSalesmanText1
- text_end
-
-.RefuseText
- text_far _MagikarpSalesmanNoText
- text_end
-
-.NoMoneyText
- text_far _MagikarpSalesmanNoMoneyText
- text_end
-
-.Text2
- text_far _MagikarpSalesmanText2
- text_end
-
MtMoonPokecenterText5:
text_far _MtMoonPokecenterText5
text_end
MtMoonTradeNurseText:
script_cable_club_receptionist
+
+MtMoonPokecenterText7:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/MtMoonPokecenter2.asm b/scripts/MtMoonPokecenter2.asm
new file mode 100755
index 00000000..9abc0286
--- /dev/null
+++ b/scripts/MtMoonPokecenter2.asm
@@ -0,0 +1,66 @@
+MagikarpSalesman::
+ CheckEvent EVENT_BOUGHT_MAGIKARP, 1
+ jp c, .alreadyBoughtMagikarp
+ ld hl, .Text1
+ call PrintText
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp nz, .choseNo
+ ; $000500
+ xor a
+ ldh [hMoney], a
+ ldh [hMoney + 2], a
+ ld a, $5
+ ldh [hMoney + 1], a
+ call HasEnoughMoney
+ jr nc, .enoughMoney
+ ld hl, .NoMoneyText
+ jr .printText
+.enoughMoney
+ lb bc, MAGIKARP, 5
+ call GivePokemon
+ jr nc, .done
+ ; $000500
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 2], a
+ ld a, $5
+ ld [wPriceTemp + 1], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, $3
+ predef SubBCDPredef
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ SetEvent EVENT_BOUGHT_MAGIKARP
+ jr .done
+.choseNo
+ ld hl, .RefuseText
+ jr .printText
+.alreadyBoughtMagikarp
+ ld hl, .Text2
+.printText
+ call PrintText
+.done
+ ret
+
+.Text1
+ text_far _MagikarpSalesmanText1
+ text_end
+
+.RefuseText
+ text_far _MagikarpSalesmanNoText
+ text_end
+
+.NoMoneyText
+ text_far _MagikarpSalesmanNoMoneyText
+ text_end
+
+.Text2
+ text_far _MagikarpSalesmanText2
+ text_end
diff --git a/scripts/Museum1F.asm b/scripts/Museum1F.asm
index ee3473ff..c89eacda 100755
--- a/scripts/Museum1F.asm
+++ b/scripts/Museum1F.asm
@@ -5,7 +5,8 @@ Museum1F_Script:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1F_ScriptPointers
ld a, [wMuseum1FCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
Museum1F_ScriptPointers:
dw Museum1FScript0
@@ -40,208 +41,25 @@ Museum1F_TextPointers:
Museum1FText1:
text_asm
- ld a, [wYCoord]
- cp 4
- jr nz, .asm_8774b
- ld a, [wXCoord]
- cp 13
- jp z, Museum1FScript_5c1f9
- jr .asm_b8709
-.asm_8774b
- cp $3
- jr nz, .asm_d49e7
- ld a, [wXCoord]
- cp 12
- jp z, Museum1FScript_5c1f9
-.asm_d49e7
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr nz, .asm_31a16
- ld hl, Museum1FText_5c23d
- call PrintText
- jp Museum1FScriptEnd
-.asm_b8709
- CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
- jr z, .asm_3ded4
-.asm_31a16
- ld hl, Museum1FText_5c242
- call PrintText
- jp Museum1FScriptEnd
-.asm_3ded4
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- xor a
- ldh [hJoyHeld], a
- ld hl, Museum1FText_5c21f
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_de133
- xor a
- ldh [hMoney], a
- ldh [hMoney + 1], a
- ld a, $50
- ldh [hMoney + 2], a
- call HasEnoughMoney
- jr nc, .asm_0f3e3
- ld hl, Museum1FText_5c229
- call PrintText
- jp .asm_de133
-.asm_0f3e3
- ld hl, Museum1FText_5c224
- call PrintText
- SetEvent EVENT_BOUGHT_MUSEUM_TICKET
- xor a
- ld [wPriceTemp], a
- ld [wPriceTemp + 1], a
- ld a, $50
- ld [wPriceTemp + 2], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, $3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- ld a, SFX_PURCHASE
- call PlaySoundWaitForCurrent
- call WaitForSoundToFinish
- jr .asm_0b094
-.asm_de133
- ld hl, Museum1FText_5c21a
- call PrintText
- ld a, $1
- ld [wSimulatedJoypadStatesIndex], a
- ld a, D_DOWN
- ld [wSimulatedJoypadStatesEnd], a
- call StartSimulatingJoypadStates
- call UpdateSprites
- jr Museum1FScriptEnd
-.asm_0b094
- ld a, $1
- ld [wMuseum1FCurScript], a
- jr Museum1FScriptEnd
-
-Museum1FScript_5c1f9:
- ld hl, Museum1FText_5c22e
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- cp $0
- jr nz, .asm_d1144
- ld hl, Museum1FText_5c233
- call PrintText
- jr Museum1FScriptEnd
-.asm_d1144
- ld hl, Museum1FText_5c238
- call PrintText
-Museum1FScriptEnd:
+ farcall Func_f1c1b
jp TextScriptEnd
-Museum1FText_5c21a:
- text_far _Museum1FText_5c21a
- text_end
-
-Museum1FText_5c21f:
- text_far _Museum1FText_5c21f
- text_end
-
-Museum1FText_5c224:
- text_far _Museum1FText_5c224
- text_end
-
-Museum1FText_5c229:
- text_far _Museum1FText_5c229
- text_end
-
-Museum1FText_5c22e:
- text_far _Museum1FText_5c22e
- text_end
-
-Museum1FText_5c233:
- text_far _Museum1FText_5c233
- text_end
-
-Museum1FText_5c238:
- text_far _Museum1FText_5c238
- text_end
-
-Museum1FText_5c23d:
- text_far _Museum1FText_5c23d
- text_end
-
-Museum1FText_5c242:
- text_far _Museum1FText_5c242
- text_end
-
Museum1FText2:
text_asm
- ld hl, Museum1FText_5c251
- call PrintText
+ farcall Func_f1d2a
jp TextScriptEnd
-Museum1FText_5c251:
- text_far _Museum1FText_5c251
- text_end
-
Museum1FText3:
text_asm
- CheckEvent EVENT_GOT_OLD_AMBER
- jr nz, .got_item
- ld hl, Museum1FText_5c28e
- call PrintText
- lb bc, OLD_AMBER, 1
- call GiveItem
- jr nc, .bag_full
- SetEvent EVENT_GOT_OLD_AMBER
- ld a, HS_OLD_AMBER
- ld [wMissableObjectIndex], a
- predef HideObject
- ld hl, ReceivedOldAmberText
- jr .done
-.bag_full
- ld hl, Museum1FText_5c29e
- jr .done
-.got_item
- ld hl, Museum1FText_5c299
-.done
- call PrintText
+ farcall Func_f1d36
jp TextScriptEnd
-Museum1FText_5c28e:
- text_far _Museum1FText_5c28e
- text_end
-
-ReceivedOldAmberText:
- text_far _ReceivedOldAmberText
- sound_get_item_1
- text_end
-
-Museum1FText_5c299:
- text_far _Museum1FText_5c299
- text_end
-
-Museum1FText_5c29e:
- text_far _Museum1FText_5c29e
- text_end
-
Museum1FText4:
text_asm
- ld hl, Museum1FText_5c2ad
- call PrintText
+ farcall Func_f1d80
jp TextScriptEnd
-Museum1FText_5c2ad:
- text_far _Museum1FText_5c2ad
- text_end
-
Museum1FText5:
text_asm
- ld hl, Museum1FText_5c2bc
- call PrintText
+ farcall Func_f1d8c
jp TextScriptEnd
-
-Museum1FText_5c2bc:
- text_far _Museum1FText_5c2bc
- text_end
diff --git a/scripts/Museum1F2.asm b/scripts/Museum1F2.asm
new file mode 100755
index 00000000..512a3295
--- /dev/null
+++ b/scripts/Museum1F2.asm
@@ -0,0 +1,209 @@
+Func_f1c1b::
+ ld a, [wYCoord]
+ cp 4
+ jr nz, .asm_f1c2c
+ ld a, [wXCoord]
+ cp 13
+ jp z, .asm_f1cde
+ jr .asm_f1c48
+
+.asm_f1c2c
+ cp $3
+ jr nz, .asm_f1c38
+ ld a, [wXCoord]
+ cp 12
+ jp z, .asm_f1cde
+.asm_f1c38
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr nz, .asm_f1c4f
+ ld hl, Museum1FText_f1d20
+ call PrintText
+ jp .asm_f1cfc
+
+.asm_f1c48
+ CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
+ jr z, .asm_f1c58
+.asm_f1c4f
+ ld hl, Museum1FText_f1d25
+ call PrintText
+ jp .asm_f1cfc
+
+.asm_f1c58
+ ld a, $13
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ xor a
+ ldh [hJoyHeld], a
+ ld hl, Museum1FText_f1d02
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1cbf
+ xor a
+ ldh [hMoney], a
+ ldh [hMoney + 1], a
+ ld a, $50
+ ldh [hMoney + 2], a
+ call HasEnoughMoney
+ jr nc, .asm_f1c89
+ ld hl, Museum1FText_f1d0c
+ call PrintText
+ jp .asm_f1cbf
+
+.asm_f1c89
+ ld hl, Museum1FText_f1d07
+ call PrintText
+ SetEvent EVENT_BOUGHT_MUSEUM_TICKET
+ xor a
+ ld [wPriceTemp], a
+ ld [wPriceTemp + 1], a
+ ld a, $50
+ ld [wPriceTemp + 2], a
+ ld hl, wPriceTemp + 2
+ ld de, wPlayerMoney + 2
+ ld c, 3
+ predef SubBCDPredef
+ ld a, $13
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld a, SFX_PURCHASE
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ jr .asm_f1cd7
+
+.asm_f1cbf
+ ld hl, Museum1FText_f1cfd
+ call PrintText
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ call StartSimulatingJoypadStates
+ call UpdateSprites
+ jr .asm_f1cfc
+
+.asm_f1cd7
+ ld a, $1
+ ld [wMuseum1FCurScript], a
+ jr .asm_f1cfc
+
+.asm_f1cde
+ ld hl, Museum1FText_f1d11
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ cp 0
+ jr nz, .asm_f1cf6
+ ld hl, Museum1FText_f1d16
+ call PrintText
+ jr .asm_f1cfc
+
+.asm_f1cf6
+ ld hl, Museum1FText_f1d1b
+ call PrintText
+.asm_f1cfc
+ ret
+
+Museum1FText_f1cfd:
+ text_far _Museum1FText_5c21a
+ text_end
+
+Museum1FText_f1d02:
+ text_far _Museum1FText_5c21f
+ text_end
+
+Museum1FText_f1d07:
+ text_far _Museum1FText_5c224
+ text_end
+
+Museum1FText_f1d0c:
+ text_far _Museum1FText_5c229
+ text_end
+
+Museum1FText_f1d11:
+ text_far _Museum1FText_5c22e
+ text_end
+
+Museum1FText_f1d16:
+ text_far _Museum1FText_5c233
+ text_end
+
+Museum1FText_f1d1b:
+ text_far _Museum1FText_5c238
+ text_end
+
+Museum1FText_f1d20:
+ text_far _Museum1FText_5c23d
+ text_end
+
+Museum1FText_f1d25:
+ text_far _Museum1FText_5c242
+ text_end
+
+Func_f1d2a::
+ ld hl, Museum1FText_f1d31
+ call PrintText
+ ret
+
+Museum1FText_f1d31:
+ text_far _Museum1FText_5c251
+ text_end
+
+Func_f1d36::
+ CheckEvent EVENT_GOT_OLD_AMBER
+ jr nz, .got_item
+ ld hl, Museum1FText_5c28e
+ call PrintText
+ lb bc, OLD_AMBER, 1
+ call GiveItem
+ jr nc, .bag_full
+ SetEvent EVENT_GOT_OLD_AMBER
+ ld a, HS_OLD_AMBER
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld hl, ReceivedOldAmberText
+ jr .done
+.bag_full
+ ld hl, Museum1FText_5c29e
+ jr .done
+.got_item
+ ld hl, Museum1FText_5c299
+.done
+ call PrintText
+ ret
+
+Museum1FText_5c28e:
+ text_far _Museum1FText_5c28e
+ text_end
+
+ReceivedOldAmberText:
+ text_far _ReceivedOldAmberText
+ sound_get_item_1
+ text_end
+
+Museum1FText_5c299:
+ text_far _Museum1FText_5c299
+ text_end
+
+Museum1FText_5c29e:
+ text_far _Museum1FText_5c29e
+ text_end
+
+Func_f1d80::
+ ld hl, Museum1FText_f1d87
+ call PrintText
+ ret
+
+Museum1FText_f1d87:
+ text_far _Museum1FText_5c2ad
+ text_end
+
+Func_f1d8c::
+ ld hl, Museum1FText_f1d93
+ call PrintText
+ ret
+
+Museum1FText_f1d93:
+ text_far _Museum1FText_5c2bc
+ text_end
diff --git a/scripts/Museum2F.asm b/scripts/Museum2F.asm
index 8b1aa0bf..fe02f544 100755
--- a/scripts/Museum2F.asm
+++ b/scripts/Museum2F.asm
@@ -1,5 +1,6 @@
Museum2F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Museum2F_TextPointers:
dw Museum2FText1
@@ -27,9 +28,40 @@ Museum2FText4:
text_end
Museum2FText5:
+ text_asm
+ ld a, [wd472]
+ bit 7, a
+ jr nz, .asm_5c1f6
+ ld hl, Museum2FText_5c20e
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c1f6
+ ld a, [wPikachuHappiness]
+ cp 101
+ jr c, .asm_5c205
+ ld hl, Museum2FText_5c218
+ call PrintText
+ jr .asm_5c20b
+
+.asm_5c205
+ ld hl, Museum2FText_5c213
+ call PrintText
+.asm_5c20b
+ jp TextScriptEnd
+
+Museum2FText_5c20e:
text_far _Museum2FText5
text_end
+Museum2FText_5c213:
+ text_far _Museum2FPikachuText1
+ text_end
+
+Museum2FText_5c218:
+ text_far _Museum2FPikachuText2
+ text_end
+
Museum2FText6:
text_far _Museum2FText6
text_end
diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm
index 0df74dcf..e8ef4cbe 100755
--- a/scripts/OaksLab.asm
+++ b/scripts/OaksLab.asm
@@ -7,7 +7,8 @@ OaksLab_Script:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLab_ScriptPointers
ld a, [wOaksLabCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
OaksLab_ScriptPointers:
dw OaksLabScript0
@@ -29,6 +30,10 @@ OaksLab_ScriptPointers:
dw OaksLabScript16
dw OaksLabScript17
dw OaksLabScript18
+ dw OaksLabScript19
+ dw OaksLabScript20
+ dw OaksLabScript21
+ dw OaksLabScript22
OaksLabScript0:
CheckEvent EVENT_OAK_APPEARED_IN_PALLET
@@ -47,7 +52,7 @@ OaksLabScript0:
ret
OaksLabScript1:
- ld a, $8
+ ld a, $6
ldh [hSpriteIndex], a
ld de, OakEntryMovement
call MoveSprite
@@ -90,7 +95,7 @@ OaksLabScript3:
xor a
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $5
+ ld a, $3
ldh [hSpriteIndex], a
xor a
ldh [hSpriteFacingDirection], a
@@ -115,7 +120,6 @@ OaksLabScript4:
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- call UpdateSprites
ld hl, wFlags_D733
res 1, [hl]
call PlayDefaultMusic
@@ -125,24 +129,28 @@ OaksLabScript4:
ret
OaksLabScript5:
+ SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
ld a, $fc
ld [wJoyIgnore], a
- ld a, $11
+ ld a, $d
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $12
+ ld a, $e
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $13
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, $f
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $14
+ ld a, $10
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
xor a
ld [wJoyIgnore], a
@@ -154,7 +162,7 @@ OaksLabScript6:
ld a, [wYCoord]
cp 6
ret nz
- ld a, $5
+ ld a, $3
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
@@ -165,7 +173,7 @@ OaksLabScript6:
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call UpdateSprites
- ld a, $c
+ ld a, $a
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
@@ -191,176 +199,130 @@ OaksLabScript7:
ret
OaksLabScript8:
- ld a, [wPlayerStarter]
- cp STARTER1
- jr z, .Charmander
- cp STARTER2
- jr z, .Squirtle
- jr .Bulbasaur
-.Charmander
- ld de, .MiddleBallMovement1
- ld a, [wYCoord]
- cp 4 ; is the player standing below the table?
- jr z, .moveBlue
- ld de, .MiddleBallMovement2
- jr .moveBlue
-
-.MiddleBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db -1 ; end
-
-.MiddleBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.Squirtle
- ld de, .RightBallMovement1
- ld a, [wYCoord]
- cp 4 ; is the player standing below the table?
- jr z, .moveBlue
- ld de, .RightBallMovement2
- jr .moveBlue
-
-.RightBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_UP
- db -1 ; end
-
-.RightBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.Bulbasaur
- ld de, .LeftBallMovement1
- ld a, [wXCoord]
- cp 9 ; is the player standing to the right of the table?
- jr nz, .moveBlue
- push hl
ld a, $1
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_YPIXELS
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- push hl
- ld [hl], $4c ; SPRITESTATEDATA1_YPIXELS
- inc hl
- inc hl
- ld [hl], $0 ; SPRITESTATEDATA1_XPIXELS
- pop hl
- inc h
- ld [hl], 8 ; SPRITESTATEDATA2_MAPY
- inc hl
- ld [hl], 9 ; SPRITESTATEDATA2_MAPX
- ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that
- pop hl
- jr .moveBlue
-
-.LeftBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
-.LeftBallMovement2
- db NPC_MOVEMENT_RIGHT
- db -1 ; end
-
-.moveBlue
- ld a, $1
- ldh [hSpriteIndex], a
+ ldh [hSpriteIndexOrTextID], a
+ ld de, .SonyPushesPlayerAwayFromEeveeBall
call MoveSprite
-
ld a, $9
ld [wOaksLabCurScript], a
ret
+.SonyPushesPlayerAwayFromEeveeBall
+ db $00
+ db $07
+ db $07
+ db $07
+ db $FF
+
OaksLabScript9:
ld a, [wd730]
bit 0, a
- ret nz
- ld a, $fc
- ld [wJoyIgnore], a
+ jr nz, .asm_1c564
+ ld a, HS_STARTER_BALL_1
+ ld [wMissableObjectIndex], a
+ predef HideObject
ld a, $1
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $d
- ldh [hSpriteIndexOrTextID], a
- call DisplayTextID
- ld a, [wRivalStarterBallSpriteIndex]
- cp $2
- jr nz, .rivalDidNotChoseBall1
- ld a, HS_STARTER_BALL_1
- jr .hideBallAndContinue
-.rivalDidNotChoseBall1
- cp $3
- jr nz, .rivalChoseBall3
- ld a, HS_STARTER_BALL_2
- jr .hideBallAndContinue
-.rivalChoseBall3
- ld a, HS_STARTER_BALL_3
-.hideBallAndContinue
- ld [wMissableObjectIndex], a
- predef HideObject
- call Delay3
- ld a, [wRivalStarterTemp]
+ ld a, 1
ld [wRivalStarter], a
- ld [wcf91], a
+ ld a, EEVEE
ld [wd11e], a
call GetMonName
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $11
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+
+ ld a, $a
+ ld [wOaksLabCurScript], a
+ ret
+
+.asm_1c564
+ ld a, [wYCoord]
+ cp 4
+ ret nz
+ ld a, [wNPCNumScriptedSteps]
+ cp 1
+ ret nz
+ ld a, PLAYER_DIR_LEFT
+ ld [wPlayerMovingDirection], a
+ ld a, $2
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_RIGHT
+ ld [wSimulatedJoypadStatesEnd], a
+ ld [wSimulatedJoypadStatesEnd + 1], a
+ call StartSimulatingJoypadStates
+ ret
+
+OaksLabScript10:
+ ld a, [wYCoord]
+ cp 4
+ jr z, .asm_1c599
ld a, $1
- ldh [hSpriteIndex], a
- ld a, SPRITE_FACING_UP
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, $e
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_LEFT
+ ld [wSimulatedJoypadStatesEnd], a
+ jr .asm_1c5a6
+
+.asm_1c599
+ ld hl, wSimulatedJoypadStatesEnd
+ ld de, OaksLabRLE_PlayerWalksToOak
+ call DecodeRLEList
+ dec a
+ ld [wSimulatedJoypadStatesIndex], a
+.asm_1c5a6
+ call StartSimulatingJoypadStates
+ ld a, $b
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabRLE_PlayerWalksToOak:
+ db D_UP, 2
+ db D_LEFT, 3
+ db D_DOWN, 1
+ db D_LEFT, 1
+ db $FF
+
+OaksLabScript11:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ ld a, $12
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- SetEvent EVENT_GOT_STARTER
xor a
ld [wJoyIgnore], a
- ld a, $a
+ ld a, $c
ld [wOaksLabCurScript], a
ret
-OaksLabScript10:
+OaksLabScript12:
ld a, [wYCoord]
cp 6
ret nz
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
ld a, $1
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, PLAYER_DIR_UP
- ld [wPlayerMovingDirection], a
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
- ld a, $f
+ ld a, $b
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
ldh [hNPCPlayerRelativePosPerspective], a
ld a, $1
swap a
- ldh [hNPCSpriteOffset], a
+ ldh [hNPCPlayerYDistance], a
predef CalcPositionOfPlayerRelativeToNPC
ldh a, [hNPCPlayerYDistance]
dec a
@@ -370,38 +332,23 @@ OaksLabScript10:
ld a, $1
ldh [hSpriteIndex], a
call MoveSprite
-
- ld a, $b
+ ld a, $d
ld [wOaksLabCurScript], a
ret
-OaksLabScript11:
+OaksLabScript13:
ld a, [wd730]
bit 0, a
ret nz
-
- ; define which team rival uses, and fight it
+ ld a, $1
+ ld [wSpriteIndex], a
+ call GetSpritePosition1
ld a, OPP_RIVAL1
ld [wCurOpponent], a
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
ld a, $1
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $2
- jr .done
-.Charmander
- ld a, $3
-.done
ld [wTrainerNo], a
- ld a, $1
- ld [wSpriteIndex], a
- call GetSpritePosition1
- ld hl, OaksLabText_1d3be
- ld de, OaksLabText_1d3c3
+ ld hl, OaksLabRivalDefeatedText
+ ld de, OaksLabRivalBeatYouText
call SaveEndBattleTextPointers
ld hl, wd72d
set 6, [hl]
@@ -410,12 +357,28 @@ OaksLabScript11:
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, $c
+ ld a, $e
ld [wOaksLabCurScript], a
ret
-OaksLabScript12:
- ld a, $f0
+OaksLabScript14:
+ ld a, $ff
+ ld [wJoyIgnore], a
+
+ ; If you beat your rival here, his Eevee will evolve into
+ ; Jolteon if you beat him on Route 22, or Flareon if you
+ ; skip or lose that battle.
+ ; Otherwise, it will evolve into Vaporeon.
+ ld a, [wBattleResult]
+ and a
+ ld b, $3
+ jr nz, .asm_1c660
+ ld b, $2
+.asm_1c660
+ ld a, b
+ ld [wRivalStarter], a
+
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
@@ -423,66 +386,64 @@ OaksLabScript12:
ld a, $1
ld [wSpriteIndex], a
call SetSpritePosition1
- ld a, $1
- ldh [hSpriteIndex], a
- xor a ; SPRITE_FACING_DOWN
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
predef HealParty
SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB
-
- ld a, $d
+ ld a, $f
ld [wOaksLabCurScript], a
ret
-OaksLabScript13:
+OaksLabScript15:
ld c, 20
call DelayFrames
- ld a, $10
+ ld a, $c
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
farcall Music_RivalAlternateStart
ld a, $1
ldh [hSpriteIndex], a
- ld de, .RivalExitMovement
+ ld de, .OaksLabMovement_RivalWalksOut1
call MoveSprite
ld a, [wXCoord]
cp 4
- ; move left or right depending on where the player is standing
- jr nz, .moveLeft
+ jr nz, .asm_1c6bb
ld a, NPC_MOVEMENT_RIGHT
- jr .next
-.moveLeft
+ jr .asm_1c6bd
+
+.asm_1c6bb
ld a, NPC_MOVEMENT_LEFT
-.next
+.asm_1c6bd
ld [wNPCMovementDirections], a
-
- ld a, $e
+ ld a, $10
ld [wOaksLabCurScript], a
ret
-.RivalExitMovement
+.OaksLabMovement_RivalWalksOut1
db NPC_CHANGE_FACING
db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
+ db $04
+ db $04
+ db $04
+ db $04
+ db $04
db -1 ; end
-OaksLabScript14:
+OaksLabScript16:
ld a, [wd730]
bit 0, a
jr nz, .checkRivalPosition
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef HideObject
- xor a
- ld [wJoyIgnore], a
- call PlayDefaultMusic ; reset to map music
- ld a, $12
+ call PlayDefaultMusic
+ ld a, $11
ld [wOaksLabCurScript], a
- jr .done
+ ret
; make the player keep facing the rival as he walks away
.checkRivalPosition
ld a, [wNPCNumScriptedSteps]
@@ -492,32 +453,54 @@ OaksLabScript14:
cp 4
jr nz, .turnPlayerLeft
ld a, SPRITE_FACING_RIGHT
- ld [wSpritePlayerStateData1FacingDirection], a
jr .done
.turnPlayerLeft
ld a, SPRITE_FACING_LEFT
- ld [wSpritePlayerStateData1FacingDirection], a
jr .done
.turnPlayerDown
cp $4
ret nz
xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpritePlayerStateData1FacingDirection], a
.done
+ ld [wSpritePlayerStateData1FacingDirection], a
ret
-OaksLabScript15:
+OaksLabScript17:
+; Pikachu comes out
+ ld a, SPRITE_FACING_UP
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $2
+ ld [wPikachuSpawnState], a
+ farcall SchedulePikachuSpawnForAfterText
+ call EnablePikachuOverworldSpriteDrawing
+ ld a, $1a
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $12
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabScript18:
+ ld a, $1b
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $16
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabScript19:
xor a
ldh [hJoyHeld], a
call EnableAutoTextBoxDrawing
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
- ld a, $15
+ ld a, $13
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- call OaksLabScript_1d02b
+ callfar Func_f1be0
+ call OaksLabScript_1c8b9
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef ShowObject
@@ -533,47 +516,47 @@ OaksLabScript15:
ldh [hSpriteIndex], a
ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $10
+ ld a, $14
ld [wOaksLabCurScript], a
ret
-OaksLabScript_1cefd:
+OaksLabScript_1c78e:
ld a, $1
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $8
+ ld a, $6
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ call SetSpriteFacingDirectionAndDelay
+ ret
-OaksLabScript16:
+OaksLabScript20:
ld a, [wd730]
bit 0, a
ret nz
call EnableAutoTextBoxDrawing
call PlayDefaultMusic
- ld a, $fc
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
- call OaksLabScript_1cefd
- ld a, $16
+ call OaksLabScript_1c78e
+ ld a, $14
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $17
+ call OaksLabScript_1c78e
+ ld a, $15
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $18
+ call OaksLabScript_1c78e
+ ld a, $16
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- ld a, $19
+ ld a, $17
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
@@ -583,8 +566,8 @@ OaksLabScript16:
ld a, HS_POKEDEX_2
ld [wMissableObjectIndex], a
predef HideObject
- call OaksLabScript_1cefd
- ld a, $1a
+ call OaksLabScript_1c78e
+ ld a, $18
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
@@ -593,10 +576,12 @@ OaksLabScript16:
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, $1b
+ ld a, $19
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_POKEDEX
+ ld a, $1
+ ld [wViridianCityCurScript], a
SetEvent EVENT_OAK_GOT_PARCEL
ld a, HS_LYING_OLD_MAN
ld [wMissableObjectIndex], a
@@ -608,23 +593,20 @@ OaksLabScript16:
ld b, 0
ld c, a
ld hl, wNPCMovementDirections2
- xor a ; NPC_MOVEMENT_DOWN
+ xor a
call FillMemory
ld [hl], $ff
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, $1
- ldh [hSpriteIndex], a
+ ldh [hSpriteIndexOrTextID], a
ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $11
+ ld a, $15
ld [wOaksLabCurScript], a
ret
-OaksLabScript17:
+OaksLabScript21:
ld a, [wd730]
bit 0, a
ret nz
@@ -638,16 +620,13 @@ OaksLabScript17:
ld a, HS_ROUTE_22_RIVAL_1
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, $5
- ld [wPalletTownCurScript], a
xor a
ld [wJoyIgnore], a
-
- ld a, $12
+ ld a, $16
ld [wOaksLabCurScript], a
ret
-OaksLabScript18:
+OaksLabScript22:
ret
OaksLabScript_RemoveParcel:
@@ -662,47 +641,52 @@ OaksLabScript_RemoveParcel:
inc hl
inc c
jr .loop
+
.foundParcel
ld hl, wNumBagItems
ld a, c
ld [wWhichPokemon], a
- ld a, $1
+ ld a, 1
ld [wItemQuantity], a
- jp RemoveItemFromInventory
+ call RemoveItemFromInventory
+ ret
-OaksLabScript_1d02b:
+OaksLabScript_1c8b9:
ld a, $7c
ldh [hSpriteScreenYCoord], a
ld a, 8
ldh [hSpriteMapXCoord], a
ld a, [wYCoord]
cp 3
- jr nz, .asm_1d045
+ jr nz, .asm_1c8d3
ld a, $4
ld [wNPCMovementDirections2Index], a
ld a, $30
ld b, 11
- jr .asm_1d068
-.asm_1d045
+ jr .asm_1c8f6
+
+.asm_1c8d3
cp 1
- jr nz, .asm_1d054
+ jr nz, .asm_1c8e2
ld a, $2
ld [wNPCMovementDirections2Index], a
ld a, $30
ld b, 9
- jr .asm_1d068
-.asm_1d054
+ jr .asm_1c8f6
+
+.asm_1c8e2
ld a, $3
ld [wNPCMovementDirections2Index], a
ld b, 10
ld a, [wXCoord]
cp 4
- jr nz, .asm_1d066
+ jr nz, .asm_1c8f4
ld a, $40
- jr .asm_1d068
-.asm_1d066
+ jr .asm_1c8f6
+
+.asm_1c8f4
ld a, $20
-.asm_1d068
+.asm_1c8f6
ldh [hSpriteScreenXCoord], a
ld a, b
ldh [hSpriteMapYCoord], a
@@ -716,7 +700,7 @@ OaksLabScript_1d076:
ld a, l
ld [wMapTextPtr], a
ld a, h
- ld [wMapTextPtr+1], a
+ ld [wMapTextPtr + 1], a
ret
OaksLab_TextPointers:
@@ -758,8 +742,6 @@ OaksLab_TextPointers2:
dw OaksLabText7
dw OaksLabText8
dw OaksLabText9
- dw OaksLabText10
- dw OaksLabText11
OaksLabText1:
text_asm
@@ -769,7 +751,7 @@ OaksLabText1:
call PrintText
jr .done
.beforeChooseMon
- bit 2, a
+ CheckEventReuseA EVENT_GOT_STARTER
jr nz, .afterChooseMon
ld hl, OaksLabText40
call PrintText
@@ -794,42 +776,12 @@ OaksLabText41:
OaksLabText2:
text_asm
- ld a, STARTER2
- ld [wRivalStarterTemp], a
- ld a, $3
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER1
- ld b, $2
- jr OaksLabScript_1d133
-
-OaksLabText3:
- text_asm
- ld a, STARTER3
- ld [wRivalStarterTemp], a
- ld a, $4
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER2
- ld b, $3
- jr OaksLabScript_1d133
-
-OaksLabText4:
- text_asm
- ld a, STARTER1
- ld [wRivalStarterTemp], a
- ld a, $2
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER3
- ld b, $4
-
-OaksLabScript_1d133:
- ld [wcf91], a
- ld [wd11e], a
- ld a, b
- ld [wSpriteIndex], a
- CheckEvent EVENT_GOT_STARTER
- jp nz, OaksLabScript_1d22d
- CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON
- jr nz, OaksLabScript_1d157
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON
+ jr nz, OaksLabScript_1c9ac
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLabText39
call PrintText
jp TextScriptEnd
@@ -838,209 +790,107 @@ OaksLabText39:
text_far _OaksLabText39
text_end
-OaksLabScript_1d157:
- ld a, $5
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
- ld a, $1
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_RIGHT
- ld hl, wd730
- set 6, [hl]
- predef StarterDex
- ld hl, wd730
- res 6, [hl]
- call ReloadMapData
- ld c, 10
- call DelayFrames
- ld a, [wSpriteIndex]
- cp $2
- jr z, OaksLabLookAtCharmander
- cp $3
- jr z, OaksLabLookAtSquirtle
- jr OaksLabLookAtBulbasaur
-
-OaksLabLookAtCharmander:
- ld hl, OaksLabCharmanderText
- jr OaksLabMonChoiceMenu
-OaksLabCharmanderText:
- text_far _OaksLabCharmanderText
- text_end
-
-OaksLabLookAtSquirtle:
- ld hl, OaksLabSquirtleText
- jr OaksLabMonChoiceMenu
-OaksLabSquirtleText:
- text_far _OaksLabSquirtleText
- text_end
-
-OaksLabLookAtBulbasaur:
- ld hl, OaksLabBulbasaurText
- jr OaksLabMonChoiceMenu
-OaksLabBulbasaurText:
- text_far _OaksLabBulbasaurText
- text_end
-
-OaksLabMonChoiceMenu:
- call PrintText
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- call YesNoChoice ; yes/no menu
- ld a, [wCurrentMenuItem]
- and a
- jr nz, OaksLabMonChoiceEnd
- ld a, [wcf91]
- ld [wPlayerStarter], a
- ld [wd11e], a
- call GetMonName
- ld a, [wSpriteIndex]
- cp $2
- jr nz, .asm_1d1db
- ld a, HS_STARTER_BALL_1
- jr .asm_1d1e5
-.asm_1d1db
- cp $3
- jr nz, .asm_1d1e3
- ld a, HS_STARTER_BALL_2
- jr .asm_1d1e5
-.asm_1d1e3
- ld a, HS_STARTER_BALL_3
-.asm_1d1e5
- ld [wMissableObjectIndex], a
- predef HideObject
+OaksLabScript_1c9ac:
ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, OaksLabMonEnergeticText
- call PrintText
- ld hl, OaksLabReceivedMonText
- call PrintText
- xor a ; PLAYER_PARTY_DATA
- ld [wMonDataLocation], a
- ld a, 5
- ld [wCurEnemyLVL], a
- ld a, [wcf91]
- ld [wd11e], a
- call AddPartyMon
- ld hl, wd72e
- set 3, [hl]
- ld a, $fc
- ld [wJoyIgnore], a
+ ld [wEmotionBubbleSpriteIndex], a
+ xor a ; EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
ld a, $8
ld [wOaksLabCurScript], a
-OaksLabMonChoiceEnd:
jp TextScriptEnd
-OaksLabMonEnergeticText:
- text_far _OaksLabMonEnergeticText
- text_end
-
-OaksLabReceivedMonText:
- text_far _OaksLabReceivedMonText
- sound_get_key_item
- text_end
-
-OaksLabScript_1d22d:
- ld a, $5
- ldh [hSpriteIndex], a
- ld a, SPRITESTATEDATA1_FACINGDIRECTION
- ldh [hSpriteDataOffset], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
- ld hl, OaksLabLastMonText
- call PrintText
- jp TextScriptEnd
-
-OaksLabLastMonText:
- text_far _OaksLabLastMonText
- text_end
-
-OaksLabText32:
-OaksLabText5:
+OaksLabText3:
text_asm
CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
- jr nz, .asm_1d266
+ jr nz, .asm_1c9d9
ld hl, wPokedexOwned
ld b, wPokedexOwnedEnd - wPokedexOwned
call CountSetBits
ld a, [wNumSetBits]
cp 2
- jr c, .asm_1d279
- CheckEvent EVENT_GOT_POKEDEX
- jr z, .asm_1d279
-.asm_1d266
- ld hl, OaksLabText_1d31d
+ jr c, .asm_1c9ec
+.asm_1c9d9
+ ld hl, OaksLabText_1ca9f
call PrintText
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
predef DisplayDexRating
- jp .asm_1d2ed
-.asm_1d279
+ jp .asm_1ca6f
+
+.asm_1c9ec
ld b, POKE_BALL
call IsItemInBag
- jr nz, .asm_1d2e7
+ jr nz, .asm_1ca69
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ cp 2
+ jr nc, .asm_1ca69
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
- jr nz, .asm_1d2d0
+ jr nz, .asm_1ca52
CheckEvent EVENT_GOT_POKEDEX
- jr nz, .asm_1d2c8
+ jr nz, .asm_1ca4a
CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB
- jr nz, .asm_1d2a9
+ jr nz, .asm_1ca2b
ld a, [wd72e]
bit 3, a
- jr nz, .asm_1d2a1
- ld hl, OaksLabText_1d2f0
+ jr nz, .asm_1ca23
+ ld hl, OaksLabText_1ca72
call PrintText
- jr .asm_1d2ed
-.asm_1d2a1
- ld hl, OaksLabText_1d2f5
+ jr .asm_1ca6f
+
+.asm_1ca23
+ ld hl, OaksLabText_1ca77
call PrintText
- jr .asm_1d2ed
-.asm_1d2a9
+ jr .asm_1ca6f
+
+.asm_1ca2b
ld b, OAKS_PARCEL
call IsItemInBag
- jr nz, .asm_1d2b8
- ld hl, OaksLabText_1d2fa
+ jr nz, .asm_1ca3a
+ ld hl, OaksLabText_1ca7c
call PrintText
- jr .asm_1d2ed
-.asm_1d2b8
+ jr .asm_1ca6f
+
+.asm_1ca3a
ld hl, OaksLabDeliverParcelText
call PrintText
call OaksLabScript_RemoveParcel
- ld a, $f
+ ld a, $13
ld [wOaksLabCurScript], a
- jr .asm_1d2ed
-.asm_1d2c8
+ jr .asm_1ca6f
+
+.asm_1ca4a
ld hl, OaksLabAroundWorldText
call PrintText
- jr .asm_1d2ed
-.asm_1d2d0
+ jr .asm_1ca6f
+
+.asm_1ca52
CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK
- jr nz, .asm_1d2e7
+ jr nz, .asm_1ca69
lb bc, POKE_BALL, 5
call GiveItem
ld hl, OaksLabGivePokeballsText
call PrintText
- jr .asm_1d2ed
-.asm_1d2e7
+ jr .asm_1ca6f
+
+.asm_1ca69
ld hl, OaksLabPleaseVisitText
call PrintText
-.asm_1d2ed
+.asm_1ca6f
jp TextScriptEnd
-OaksLabText_1d2f0:
- text_far _OaksLabText_1d2f0
+OaksLabText_1ca72:
+ text_far _OaksLabPikachuText
text_end
-OaksLabText_1d2f5:
+OaksLabText_1ca77:
text_far _OaksLabText_1d2f5
text_end
-OaksLabText_1d2fa:
+OaksLabText_1ca7c:
text_far _OaksLabText_1d2fa
text_end
@@ -1064,36 +914,36 @@ OaksLabPleaseVisitText:
text_far _OaksLabPleaseVisitText
text_end
-OaksLabText_1d31d:
+OaksLabText_1ca9f:
text_far _OaksLabText_1d31d
text_end
-OaksLabText7:
-OaksLabText6:
+OaksLabText4:
+OaksLabText5:
text_asm
- ld hl, OaksLabText_1d32c
+ ld hl, OaksLabText_1caae
call PrintText
jp TextScriptEnd
-OaksLabText_1d32c:
+OaksLabText_1caae:
text_far _OaksLabText_1d32c
text_end
-OaksLabText8:
+OaksLabText6:
text_far _OaksLabText8
text_end
-OaksLabText9:
+OaksLabText7:
text_asm
- ld hl, OaksLabText_1d340
+ ld hl, OaksLabText_1cac2
call PrintText
jp TextScriptEnd
-OaksLabText_1d340:
+OaksLabText_1cac2:
text_far _OaksLabText_1d340
text_end
-OaksLabText17:
+OaksLabText13:
text_asm
ld hl, OaksLabRivalWaitingText
call PrintText
@@ -1103,7 +953,7 @@ OaksLabRivalWaitingText:
text_far _OaksLabRivalWaitingText
text_end
-OaksLabText18:
+OaksLabText14:
text_asm
ld hl, OaksLabChooseMonText
call PrintText
@@ -1113,7 +963,7 @@ OaksLabChooseMonText:
text_far _OaksLabChooseMonText
text_end
-OaksLabText19:
+OaksLabText15:
text_asm
ld hl, OaksLabRivalInterjectionText
call PrintText
@@ -1123,7 +973,7 @@ OaksLabRivalInterjectionText:
text_far _OaksLabRivalInterjectionText
text_end
-OaksLabText20:
+OaksLabText16:
text_asm
ld hl, OaksLabBePatientText
call PrintText
@@ -1133,38 +983,89 @@ OaksLabBePatientText:
text_far _OaksLabBePatientText
text_end
-OaksLabText12:
+OaksLabText17:
text_asm
- ld hl, OaksLabLeavingText
+ ld hl, OaksLabRivalTakesText1
+ call PrintText
+ ld hl, OaksLabRivalTakesText2
+ call PrintText
+ ld hl, OaksLabRivalTakesText3
+ call PrintText
+ ld hl, OaksLabRivalTakesText4
+ call PrintText
+ ld hl, OaksLabRivalTakesText5
call PrintText
jp TextScriptEnd
-OaksLabLeavingText:
- text_far _OaksLabLeavingText
+OaksLabRivalTakesText1:
+ text_far _OaksLabRivalTakesText1
text_end
-OaksLabText13:
+OaksLabRivalTakesText2:
+ text_far _OaksLabRivalTakesText2
+ sound_get_key_item
+ text_end
+
+OaksLabRivalTakesText3:
+ text_far _OaksLabRivalTakesText3
+ text_end
+
+OaksLabRivalTakesText4:
+ text_far _OaksLabRivalTakesText4
+ text_end
+
+OaksLabRivalTakesText5:
+ text_far _OaksLabRivalTakesText5
+ text_end
+
+OaksLabText18:
text_asm
- ld hl, OaksLabRivalPickingMonText
+ ld a, PIKACHU
+ ld [wPlayerStarter], a
+ ld [wd11e], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OaksLabOakGivesText
+ call PrintText
+ ld hl, OaksLabRecievedText
call PrintText
+ xor a
+ ld [wMonDataLocation], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
+ ld a, PIKACHU
+ ld [wd11e], a
+ ld [wcf91], a
+ call AddPartyMon
+ ld a, 163
+ ld [wPartyMon1CatchRate], a
+ call DisablePikachuOverworldSpriteDrawing
+ SetEvent EVENT_GOT_STARTER
+ ld hl, wd72e
+ set 3, [hl]
jp TextScriptEnd
-OaksLabRivalPickingMonText:
- text_far _OaksLabRivalPickingMonText
+OaksLabOakGivesText:
+ text_far _OaksLabOakGivesText
text_end
-OaksLabText14:
+OaksLabRecievedText:
+ text_far _OaksLabReceivedText
+ sound_get_key_item
+ text_end
+
+OaksLabText10:
text_asm
- ld hl, OaksLabRivalReceivedMonText
+ ld hl, OaksLabLeavingText
call PrintText
jp TextScriptEnd
-OaksLabRivalReceivedMonText:
- text_far _OaksLabRivalReceivedMonText
- sound_get_key_item
+OaksLabLeavingText:
+ text_far _OaksLabLeavingText
text_end
-OaksLabText15:
+OaksLabText11:
text_asm
ld hl, OaksLabRivalChallengeText
call PrintText
@@ -1174,15 +1075,15 @@ OaksLabRivalChallengeText:
text_far _OaksLabRivalChallengeText
text_end
-OaksLabText_1d3be:
+OaksLabRivalDefeatedText:
text_far _OaksLabText_1d3be
text_end
-OaksLabText_1d3c3:
+OaksLabRivalBeatYouText:
text_far _OaksLabText_1d3c3
text_end
-OaksLabText16:
+OaksLabText12:
text_asm
ld hl, OaksLabRivalToughenUpText
call PrintText
@@ -1192,42 +1093,64 @@ OaksLabRivalToughenUpText:
text_far _OaksLabRivalToughenUpText
text_end
-OaksLabText21:
+OaksLabText26:
+ text_asm
+ ldpikacry e, PikachuCry2
+ callfar PlayPikachuSoundClip
+ ld hl, OaksLabPikachuDislikesPokeballsText1
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabPikachuDislikesPokeballsText1:
+ text_far _OaksLabPikachuDislikesPokeballsText1
+ text_end
+
+OaksLabText27:
+ text_asm
+ ld hl, OaksLabPikachuDislikesPokeballsText2
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabPikachuDislikesPokeballsText2:
+ text_far _OaksLabPikachuDislikesPokeballsText2
+ text_end
+
+OaksLabText19:
text_far _OaksLabText21
text_end
-OaksLabText22:
+OaksLabText20:
text_far _OaksLabText22
text_end
-OaksLabText23:
+OaksLabText21:
text_far _OaksLabText23
text_end
-OaksLabText24:
+OaksLabText22:
text_far _OaksLabText24
text_end
-OaksLabText25:
+OaksLabText23:
text_far _OaksLabText25
sound_get_key_item
text_end
-OaksLabText26:
+OaksLabText24:
text_far _OaksLabText26
text_end
-OaksLabText27:
+OaksLabText25:
text_far _OaksLabText27
text_end
-OaksLabText11:
-OaksLabText10:
+OaksLabText8:
+OaksLabText9:
text_asm
- ld hl, OaksLabText_1d405
+ ld hl, OaksLabText_1c31d
call PrintText
jp TextScriptEnd
-OaksLabText_1d405:
+OaksLabText_1c31d:
text_far _OaksLabText_1d405
text_end
diff --git a/scripts/OaksLab2.asm b/scripts/OaksLab2.asm
new file mode 100755
index 00000000..b0519827
--- /dev/null
+++ b/scripts/OaksLab2.asm
@@ -0,0 +1,28 @@
+Func_f1be0::
+ ld a, [wYCoord]
+ cp 3
+ jr z, .asm_f1bf0
+ ld b, SPRITE_FACING_DOWN
+ ld hl, Data_f1bf9
+ call TryApplyPikachuMovementData
+ ret
+
+.asm_f1bf0
+ ld b, SPRITE_FACING_LEFT
+ ld hl, Data_f1bfe
+ call TryApplyPikachuMovementData
+ ret
+
+Data_f1bf9:
+ db $00
+ db $1f
+ db $1e
+ db $38
+ db $3f
+
+Data_f1bfe:
+ db $00
+ db $1d
+ db $20
+ db $36
+ db $3f
diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm
index 5c26fc55..28f93411 100755
--- a/scripts/PalletTown.asm
+++ b/scripts/PalletTown.asm
@@ -16,25 +16,33 @@ PalletTown_ScriptPointers:
dw PalletTownScript4
dw PalletTownScript5
dw PalletTownScript6
+ dw PalletTownScript7
+ dw PalletTownScript8
+ dw PalletTownScript9
PalletTownScript0:
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB
ret nz
ld a, [wYCoord]
- cp 1 ; is player near north exit?
+ cp 0 ; is player at north exit?
ret nz
+ ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, [wXCoord]
+ cp 10
+ jr z, .asm_18e40
+ SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+.asm_18e40
xor a
ldh [hJoyHeld], a
- ld a, PLAYER_DIR_DOWN
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, SFX_STOP_ALL_MUSIC
- call PlaySound
+ call StopAllMusic
ld a, BANK(Music_MeetProfOak)
ld c, a
ld a, MUSIC_MEET_PROF_OAK ; "oak appears" music
call PlayMusic
- ld a, $FC
- ld [wJoyIgnore], a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
@@ -43,6 +51,8 @@ PalletTownScript0:
ret
PalletTownScript1:
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
xor a
ld [wcf0d], a
ld a, 1
@@ -50,23 +60,27 @@ PalletTownScript1:
call DisplayTextID
ld a, $FF
ld [wJoyIgnore], a
+ ld hl, wSpriteStateData2 + 1 * $10 + 4
+ ld a, $8
+ ld [hli], a
+ ld a, $e
+ ld [hl], a
ld a, HS_PALLET_TOWN_OAK
ld [wMissableObjectIndex], a
predef ShowObject
; trigger the next script
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
ld a, 2
ld [wPalletTownCurScript], a
ret
PalletTownScript2:
- ld a, 1
- ldh [hSpriteIndex], a
- ld a, SPRITE_FACING_UP
- ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, 1
+ ld a, 0
ld [wYCoord], a
ld a, 1
ldh [hNPCPlayerRelativePosPerspective], a
@@ -81,8 +95,6 @@ PalletTownScript2:
ld a, 1 ; oak
ldh [hSpriteIndex], a
call MoveSprite
- ld a, $FF
- ld [wJoyIgnore], a
; trigger the next script
ld a, 3
@@ -93,47 +105,106 @@ PalletTownScript3:
ld a, [wd730]
bit 0, a
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
ld a, 1
ld [wcf0d], a
- ld a, $FC
- ld [wJoyIgnore], a
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
ld a, 1
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
-; set up movement script that causes the player to follow Oak to his lab
+ ; oak faces the horizontally adjacent patch of grass to face pikachu
ld a, $FF
ld [wJoyIgnore], a
- ld a, 1
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN
+ ld a, SPRITE_FACING_RIGHT
+ jr z, .asm_18f01
+ ld a, SPRITE_FACING_LEFT
+.asm_18f01
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+
+ ; trigger the next script
+ ld a, 4
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript4:
+ ; start the pikachu battle
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ xor a
+ ld [wListScrollOffset], a
+ ld a, BATTLE_TYPE_PIKACHU
+ ld [wBattleType], a
+ ld a, PIKACHU
+ ld [wCurOpponent], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
+
+ ; trigger the next script
+ ld a, 5
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript5:
+ ld a, $2
+ ld [wcf0d], a
+ ld a, $1
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $ff
+ ld [wJoyIgnore], a
+
+ ; trigger the next script
+ ld a, 6
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript6:
+ xor a
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $1
ld [wSpriteIndex], a
xor a
ld [wNPCMovementScriptFunctionNum], a
- ld a, 1
+ ld a, $1
ld [wNPCMovementScriptPointerTableNum], a
ldh a, [hLoadedROMBank]
ld [wNPCMovementScriptBank], a
; trigger the next script
- ld a, 4
+ ld a, 7
ld [wPalletTownCurScript], a
ret
-PalletTownScript4:
+PalletTownScript7:
ld a, [wNPCMovementScriptPointerTableNum]
- and a ; is the movement script over?
+ and a
ret nz
; trigger the next script
- ld a, 5
+ ld a, 8
ld [wPalletTownCurScript], a
ret
-PalletTownScript5:
+PalletTownScript8:
CheckEvent EVENT_DAISY_WALKING
- jr nz, .next
- CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1
- jr nz, .next
+ jr nz, .asm_18f9e
+ and $3 ; (EVENT_GOT_TOWN_MAP | EVENT_ENTERED_BLUES_HOUSE)
+ cp $3
+ jr nz, .asm_18f9e
SetEvent EVENT_DAISY_WALKING
ld a, HS_DAISY_SITTING
ld [wMissableObjectIndex], a
@@ -141,11 +212,12 @@ PalletTownScript5:
ld a, HS_DAISY_WALKING
ld [wMissableObjectIndex], a
predef_jump ShowObject
-.next
+
+.asm_18f9e
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
ret z
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2
-PalletTownScript6:
+PalletTownScript9:
ret
PalletTown_TextPointers:
@@ -156,6 +228,7 @@ PalletTown_TextPointers:
dw PalletTownText5
dw PalletTownText6
dw PalletTownText7
+ dw PalletTownText8
PalletTownText1:
text_asm
@@ -167,7 +240,13 @@ PalletTownText1:
ld hl, OakAppearsText
jr .done
.next
+ dec a
+ jr nz, .asm_18fd3
ld hl, OakWalksUpText
+ jr .done
+
+.asm_18fd3
+ ld hl, PalletTownText_19002
.done
call PrintText
jp TextScriptEnd
@@ -177,38 +256,47 @@ OakAppearsText:
text_asm
ld c, 10
call DelayFrames
- xor a
- ld [wEmotionBubbleSpriteIndex], a ; player's sprite
- ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
- predef EmotionBubble
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
+ ld a, 0
+ ld [wEmotionBubbleSpriteIndex], a ; player's sprite
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
jp TextScriptEnd
OakWalksUpText:
text_far _OakWalksUpText
text_end
-PalletTownText2: ; girl
+PalletTownText_19002:
+ text_far _OakWhewText
+ text_end
+
+PalletTownText8: ; girl
+ text_far _OakGrassText
+ text_end
+
+PalletTownText2: ; fat man
text_far _PalletTownText2
text_end
-PalletTownText3: ; fat man
+PalletTownText3: ; sign by lab
text_far _PalletTownText3
text_end
-PalletTownText4: ; sign by lab
+PalletTownText4: ; sign by fence
text_far _PalletTownText4
text_end
-PalletTownText5: ; sign by fence
+PalletTownText5: ; sign by Red's house
text_far _PalletTownText5
text_end
-PalletTownText6: ; sign by Red's house
+PalletTownText6: ; sign by Blue's house
text_far _PalletTownText6
text_end
-PalletTownText7: ; sign by Blue's house
+PalletTownText7:
text_far _PalletTownText7
text_end
diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm
index 221834de..26827bef 100755
--- a/scripts/PewterCity.asm
+++ b/scripts/PewterCity.asm
@@ -1,8 +1,11 @@
PewterCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, PewterCity_ScriptPointers
ld a, [wPewterCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
PewterCity_ScriptPointers:
dw PewterCityScript0
@@ -23,14 +26,10 @@ PewterCityScript0:
PewterCityScript_1925e:
CheckEvent EVENT_BEAT_BROCK
ret nz
-IF DEF(_DEBUG)
- call DebugPressedOrHeldB
- ret nz
-ENDC
ld hl, CoordsData_19277
call ArePlayerCoordsInArray
ret nc
- ld a, $f0
+ ld a, $fc
ld [wJoyIgnore], a
ld a, $5
ldh [hSpriteIndexOrTextID], a
@@ -52,9 +51,9 @@ PewterCityScript1:
ld a, SPRITE_FACING_UP
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, ($3 << 4) | SPRITE_FACING_UP
+ ld a, SPRITE_FACING_UP
ldh [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wFlags_0xcd60
set 4, [hl]
@@ -119,10 +118,7 @@ PewterCityScript4:
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, ($1 << 4) | SPRITE_FACING_LEFT
- ldh [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wFlags_0xcd60
set 4, [hl]
diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm
index a1fda3b9..76a58b71 100755
--- a/scripts/PewterGym.asm
+++ b/scripts/PewterGym.asm
@@ -14,7 +14,8 @@ PewterGym_Script:
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
- jp LoadGymLeaderAndCityName
+ call LoadGymLeaderAndCityName
+ ret
.CityName:
db "PEWTER CITY@"
@@ -41,7 +42,6 @@ PewterGymScript3:
jp z, PewterGymScript_5c3bf
ld a, $f0
ld [wJoyIgnore], a
-
PewterGymScript_5c3df:
ld a, $4
ldh [hSpriteIndexOrTextID], a
@@ -151,7 +151,7 @@ PewterGymText6:
PewterGymText_5c4bc:
text_far _PewterGymText_5c4bc
- sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
+ sound_get_item_1
text_far _PewterGymText_5c4c1
text_end
@@ -184,6 +184,9 @@ PewterGymText3:
ld a, [wCurrentMenuItem]
and a
jr nz, .asm_5c4fe
+ ld a, [wd472]
+ bit 7, a
+ jp nz, .asm_5c3fa
ld hl, PewterGymText_5c51a
call PrintText
jr .asm_5c504
@@ -200,6 +203,11 @@ PewterGymText3:
.asm_5c512
jp TextScriptEnd
+.asm_5c3fa
+ ld hl, PewterGymText_5c41c
+ call PrintText
+ jp TextScriptEnd
+
PewterGymText_5c515:
text_far _PewterGymText_5c515
text_end
@@ -219,3 +227,8 @@ PewterGymText_5c524:
PewterGymText_5c529:
text_far _PewterGymText_5c529
text_end
+
+PewterGymText_5c41c:
+ text_far _PewterGymGuyText
+ text_end
+
diff --git a/scripts/PewterMart.asm b/scripts/PewterMart.asm
index 2b732129..a0e9e63e 100755
--- a/scripts/PewterMart.asm
+++ b/scripts/PewterMart.asm
@@ -14,6 +14,7 @@ PewterMartText2:
ld hl, .Text
call PrintText
jp TextScriptEnd
+
.Text
text_far _PewterMartText2
text_end
@@ -23,6 +24,7 @@ PewterMartText3:
ld hl, .Text
call PrintText
jp TextScriptEnd
+
.Text
text_far _PewterMartText3
text_end
diff --git a/scripts/PewterNidoranHouse.asm b/scripts/PewterNidoranHouse.asm
index 93d430c0..77fb12c0 100755
--- a/scripts/PewterNidoranHouse.asm
+++ b/scripts/PewterNidoranHouse.asm
@@ -1,5 +1,6 @@
PewterNidoranHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterNidoranHouse_TextPointers:
dw PewterHouse1Text1
diff --git a/scripts/PewterPokecenter.asm b/scripts/PewterPokecenter.asm
index 5030244c..247ecb03 100755
--- a/scripts/PewterPokecenter.asm
+++ b/scripts/PewterPokecenter.asm
@@ -1,12 +1,17 @@
PewterPokecenter_Script:
+ ld hl, wd492
+ set 7, [hl]
call Serial_TryEstablishingExternallyClockedConnection
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterPokecenter_TextPointers:
dw PewterHealNurseText
dw PewterPokecenterText2
dw PewterJigglypuffText
dw PewterTradeNurseText
+ dw PewterPokecenterText5
+ dw PewterPokecenterText6
PewterHealNurseText:
script_pokecenter_nurse
@@ -17,70 +22,18 @@ PewterPokecenterText2:
PewterJigglypuffText:
text_asm
- ld a, TRUE
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, .JigglypuffText
- call PrintText
-
- ld a, SFX_STOP_ALL_MUSIC
- call PlaySound
- ld c, 32
- call DelayFrames
-
- ld hl, JigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
-
- ld a, [wSprite03StateData1ImageIndex]
- ld hl, wJigglypuffFacingDirections
-.findMatchingFacingDirectionLoop
- cp [hl]
- inc hl
- jr nz, .findMatchingFacingDirectionLoop
- dec hl
-
- push hl
- ld c, BANK(Music_JigglypuffSong)
- ld a, MUSIC_JIGGLYPUFF_SONG
- call PlayMusic
- pop hl
-
-.spinMovementLoop
- ld a, [hl]
- ld [wSprite03StateData1ImageIndex], a
-; rotate the array
- push hl
- ld hl, wJigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections - 1
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
- ld a, [wJigglypuffFacingDirections - 1]
- ld [wJigglypuffFacingDirections + 3], a
- pop hl
- ld c, 24
- call DelayFrames
- ld a, [wChannelSoundIDs]
- ld b, a
- ld a, [wChannelSoundIDs + Ch2]
- or b
- jr nz, .spinMovementLoop
-
- ld c, 48
- call DelayFrames
- call PlayDefaultMusic
+ farcall PewterJigglypuff
jp TextScriptEnd
-.JigglypuffText:
- text_far _PewterJigglypuffText
- text_end
-
-JigglypuffFacingDirections:
- db $30 | SPRITE_FACING_DOWN
- db $30 | SPRITE_FACING_LEFT
- db $30 | SPRITE_FACING_UP
- db $30 | SPRITE_FACING_RIGHT
-JigglypuffFacingDirectionsEnd:
-
PewterTradeNurseText:
script_cable_club_receptionist
+
+PewterPokecenterText5:
+ text_asm
+ farcall Func_f1d98
+ jp TextScriptEnd
+
+PewterPokecenterText6:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/PewterPokecenter2.asm b/scripts/PewterPokecenter2.asm
new file mode 100755
index 00000000..79d22b2f
--- /dev/null
+++ b/scripts/PewterPokecenter2.asm
@@ -0,0 +1,79 @@
+Func_f1d98::
+ ld hl, PewterPokecenterText_f1d9f
+ call PrintText
+ ret
+
+PewterPokecenterText_f1d9f:
+ text_far _PewterPokecenterText3
+ text_end
+
+PewterJigglypuff::
+ ld a, TRUE
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .JigglypuffText
+ call PrintText
+
+ call StopAllMusic
+ ld c, 32
+ call DelayFrames
+
+ ld hl, JigglypuffFacingDirections
+ ld de, wJigglypuffFacingDirections
+ ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
+ call CopyData
+
+ ld a, [wSprite03StateData1ImageIndex]
+ ld hl, wJigglypuffFacingDirections
+.findMatchingFacingDirectionLoop
+ cp [hl]
+ inc hl
+ jr nz, .findMatchingFacingDirectionLoop
+ dec hl
+
+ push hl
+ ld c, BANK(Music_JigglypuffSong)
+ ld a, MUSIC_JIGGLYPUFF_SONG
+ call PlayMusic
+ pop hl
+
+.spinMovementLoop
+ ld a, [hl]
+ ld [wSprite03StateData1ImageIndex], a
+; rotate the array
+ push hl
+ ld hl, wJigglypuffFacingDirections
+ ld de, wJigglypuffFacingDirections - 1
+ ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
+ call CopyData
+ ld a, [wJigglypuffFacingDirections - 1]
+ ld [wJigglypuffFacingDirections + 3], a
+ pop hl
+ ld c, 24
+ call DelayFrames
+ ld a, [wChannelSoundIDs]
+ ld b, a
+ ld a, [wChannelSoundIDs + Ch2]
+ or b
+ jr nz, .spinMovementLoop
+
+ ld c, 48
+ call DelayFrames
+ call PlayDefaultMusic
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ callfar CheckPikachuFaintedOrStatused
+ ret c
+ call DisablePikachuFollowingPlayer
+ ret
+
+.JigglypuffText:
+ text_far _PewterJigglypuffText
+ text_end
+
+JigglypuffFacingDirections:
+ db $40 | SPRITE_FACING_DOWN
+ db $40 | SPRITE_FACING_LEFT
+ db $40 | SPRITE_FACING_UP
+ db $40 | SPRITE_FACING_RIGHT
+JigglypuffFacingDirectionsEnd:
diff --git a/scripts/PokemonFanClub.asm b/scripts/PokemonFanClub.asm
index 717ba4bb..c7990f19 100755
--- a/scripts/PokemonFanClub.asm
+++ b/scripts/PokemonFanClub.asm
@@ -1,15 +1,72 @@
PokemonFanClub_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ld hl, PokemonFanClub_ScriptPointers
+ ld a, [wFanClubCurScript]
+ call CallFunctionInTable
+ ret
-FanClubBikeInBag:
-; check if any bike paraphernalia in bag
- CheckEvent EVENT_GOT_BIKE_VOUCHER
- ret nz
- ld b, BICYCLE
- call IsItemInBag
- ret nz
- ld b, BIKE_VOUCHER
- jp IsItemInBag
+PokemonFanClub_ScriptPointers:
+ dw FanClubScript1
+ dw FanClubScript2
+
+FanClubScript1:
+ ld hl, wd492
+ bit 7, [hl]
+ call z, FanClubScript_59a44
+ ld hl, wd492
+ set 7, [hl]
+ ret
+
+FanClubScript2:
+ ld hl, wd492
+ bit 7, [hl]
+ call z, FanClubScript_59a39
+ ld hl, wd492
+ set 7, [hl]
+ ret
+
+FanClubScript_59a39:
+ call Random
+ ldh a, [hRandomAdd]
+ cp 25
+ call c, FanClubScript_59a44
+ ret
+
+FanClubScript_59a44:
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ callfar CheckPikachuFaintedOrStatused
+ ret c
+ ld a, $1
+ ld [wFanClubCurScript], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ ld a, $f ; Pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ predef EmotionBubble
+ ld hl, PikachuMovementScript_59a8c
+ call ApplyPikachuMovementData
+ ld a, $2
+ ld [wSpriteStateData1 + 3 * $10 + 1], a ; Seel
+ xor a ; SPRITE_FACING_DOWN
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+ callfar InitializePikachuTextID
+ call DisablePikachuFollowingPlayer
+ ret
+
+PikachuMovementScript_59a8c:
+ db $00
+ db $26
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
PokemonFanClub_TextPointers:
dw FanClubText1
@@ -18,22 +75,28 @@ PokemonFanClub_TextPointers:
dw FanClubText4
dw FanClubText5
dw FanClubText6
- dw FanClubText7
- dw FanClubText8
FanClubText1:
-; pikachu fan
+; clefairy fan
text_asm
- CheckEvent EVENT_PIKACHU_FAN_BOAST
+ CheckEventHL EVENT_152
+ jr z, .asm_59aaf
+ ld hl, .yellowtext
+ call PrintText
+ jr .done
+
+.asm_59aaf
+ CheckEventReuseHL EVENT_PIKACHU_FAN_BOAST
jr nz, .mineisbetter
+ SetEventReuseHL EVENT_SEEL_FAN_BOAST
ld hl, .normaltext
call PrintText
- SetEvent EVENT_SEEL_FAN_BOAST
jr .done
+
.mineisbetter
+ ResetEventReuseHL EVENT_PIKACHU_FAN_BOAST
ld hl, .bettertext
call PrintText
- ResetEvent EVENT_PIKACHU_FAN_BOAST
.done
jp TextScriptEnd
@@ -45,19 +108,29 @@ FanClubText1:
text_far PikachuFanBetterText
text_end
+.yellowtext
+ text_far PikachuFanPrintText
+ text_end
+
FanClubText2:
; seel fan
text_asm
- CheckEvent EVENT_SEEL_FAN_BOAST
+ CheckEventHL EVENT_152
+ jr z, .asm_59ae7
+ ld hl, .yellowtext
+ call PrintText
+ jr .done
+.asm_59ae7
+ CheckEventReuseHL EVENT_SEEL_FAN_BOAST
jr nz, .mineisbetter
+ SetEventReuseHL EVENT_PIKACHU_FAN_BOAST
ld hl, .normaltext
call PrintText
- SetEvent EVENT_PIKACHU_FAN_BOAST
jr .done
.mineisbetter
+ ResetEventReuseHL EVENT_SEEL_FAN_BOAST
ld hl, .bettertext
call PrintText
- ResetEvent EVENT_SEEL_FAN_BOAST
.done
jp TextScriptEnd
@@ -69,12 +142,16 @@ FanClubText2:
text_far SeelFanBetterText
text_end
+.yellowtext
+ text_far SeelFanPrintText
+ text_end
+
FanClubText3:
; pikachu
text_asm
ld hl, .text
call PrintText
- ld a, PIKACHU
+ ld a, CLEFAIRY
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
@@ -100,9 +177,20 @@ FanClubText4:
FanClubText5:
; chair
text_asm
- call FanClubBikeInBag
- jr nz, .nothingleft
+ CheckEventHL EVENT_152
+ jr z, .check_bike_voucher
+ ld hl, Text_59c1f
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr z, .select_mon_to_print
+ ld hl, Text_59c24
+ jr .gbpals_print_text
+.check_bike_voucher
+ CheckEvent EVENT_GOT_BIKE_VOUCHER
+ jr nz, .nothingleft
ld hl, .meetchairtext
call PrintText
call YesNoChoice
@@ -119,21 +207,58 @@ FanClubText5:
ld hl, .receivedvouchertext
call PrintText
SetEvent EVENT_GOT_BIKE_VOUCHER
- jr .done
+ jp TextScriptEnd
.bag_full
ld hl, .bagfulltext
- call PrintText
- jr .done
+ jr .gbpals_print_text
.nothanks
ld hl, .nostorytext
- call PrintText
- jr .done
+ jr .gbpals_print_text
.nothingleft
ld hl, .finaltext
+.gbpals_print_text
+ push hl
+ call LoadGBPal
+ pop hl
call PrintText
-.done
jp TextScriptEnd
+.select_mon_to_print
+ call GBPalWhiteOutWithDelay3
+ call LoadCurrentMapView
+ call SaveScreenTilesToBuffer2
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, $00
+ ld [wTempTilesetNumTiles], a
+ call DisplayPartyMenu
+ jp nc, .print
+ call GBPalWhiteOutWithDelay3
+ call RestoreScreenTilesAndReloadTilePatterns
+ ld hl, Text_59c24
+ jr .gbpals_print_text
+
+.print
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callfar PrintFanClubPortrait
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_59c2e
+ ldh a, [hOaksAideResult]
+ and a
+ jr nz, .gbpals_print_text
+ ld hl, Text_59c29
+ jr .gbpals_print_text
+
.meetchairtext
text_far FanClubMeetChairText
text_end
@@ -160,14 +285,22 @@ FanClubText5:
text_far FanClubBagFullText
text_end
-FanClubText6:
- text_far _FanClubText6
+Text_59c1f:
+ text_far FanClubChairPrintText1
+ text_end
+
+Text_59c24:
+ text_far FanClubChairPrintText2
+ text_end
+
+Text_59c29:
+ text_far FanClubChairPrintText3
text_end
-FanClubText7:
- text_far _FanClubText7
+Text_59c2e:
+ text_far FanClubChairPrintText4
text_end
-FanClubText8:
- text_far _FanClubText8
+FanClubText6:
+ text_far _FanClubText6
text_end
diff --git a/scripts/PokemonTower1F.asm b/scripts/PokemonTower1F.asm
index 65614523..0870364c 100755
--- a/scripts/PokemonTower1F.asm
+++ b/scripts/PokemonTower1F.asm
@@ -1,5 +1,6 @@
PokemonTower1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PokemonTower1F_TextPointers:
dw PokemonTower1Text1
diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm
index be3b5b89..5065e559 100755
--- a/scripts/PokemonTower2F.asm
+++ b/scripts/PokemonTower2F.asm
@@ -17,18 +17,12 @@ PokemonTower2F_ScriptPointers:
dw PokemonTower2Script2
PokemonTower2Script0:
-IF DEF(_DEBUG)
- call DebugPressedOrHeldB
- ret nz
-ENDC
CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
ret nz
ld hl, CoordsData_6055e
call ArePlayerCoordsInArray
ret nc
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -75,14 +69,13 @@ PokemonTower2Script1:
ld de, MovementData_605b2
CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
jr nz, .asm_60589
+ callfar Func_f1e22
ld de, MovementData_605a9
.asm_60589
ld a, $1
ldh [hSpriteIndex], a
call MoveSprite
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, $2
ld [wPokemonTower2FCurScript], a
@@ -148,21 +141,8 @@ PokemonTower2Text1:
call SaveEndBattleTextPointers
ld a, OPP_RIVAL2
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
- ld a, $4
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $5
- jr .done
-.Charmander
- ld a, $6
-.done
+ add $1
ld [wTrainerNo], a
ld a, $1
diff --git a/scripts/PokemonTower2F_2.asm b/scripts/PokemonTower2F_2.asm
new file mode 100755
index 00000000..0dfbb965
--- /dev/null
+++ b/scripts/PokemonTower2F_2.asm
@@ -0,0 +1,12 @@
+Func_f1e22::
+ ld hl, PikachuMovementData_f1e2b
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+PikachuMovementData_f1e2b:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm
index e098b95f..75e67a72 100755
--- a/scripts/PokemonTower7F.asm
+++ b/scripts/PokemonTower7F.asm
@@ -1,69 +1,234 @@
PokemonTower7F_Script:
call EnableAutoTextBoxDrawing
- ld hl, PokemonTower7TrainerHeader0
- ld de, PokemonTower7F_ScriptPointers
+ ld hl, PokemonTower7F_ScriptPointers
ld a, [wPokemonTower7FCurScript]
- call ExecuteCurMapScriptInTable
- ld [wPokemonTower7FCurScript], a
+ call CallFunctionInTable
ret
-PokemonTower7Script_60d18:
+PokemonTower7Script_60d01:
xor a
ld [wJoyIgnore], a
+PokemonTower7Script_60d05:
ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
ret
PokemonTower7F_ScriptPointers:
- dw CheckFightingMapTrainers
- dw DisplayEnemyTrainerTextAndStartBattle
+ dw PokemonTower7Script0
+ dw PokemonTower7Script1
dw PokemonTower7Script2
dw PokemonTower7Script3
dw PokemonTower7Script4
+ dw PokemonTower7Script5
+ dw PokemonTower7Script6
+ dw PokemonTower7Script7
+ dw PokemonTower7Script8
+ dw PokemonTower7Script9
+ dw PokemonTower7Script10
+ dw PokemonTower7Script11
-PokemonTower7Script2:
- ld hl, wFlags_0xcd60
- res 0, [hl]
- ld a, [wIsInBattle]
- cp $ff
- jp z, PokemonTower7Script_60d18
- call EndTrainerBattle
- ld a, $f0
+PokemonTower7Script0:
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
+ call z, PokemonTower7Script_60d2a
+ ret
+
+PokemonTower7Script_60d2a:
+ ld a, [wYCoord]
+ cp $c
+ ret nz
+ ResetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+ ld a, [wXCoord]
+ cp $a
+ jr z, .asm_60d47
+ ld a, [wXCoord] ; why?
+ cp $b
+ ret nz
+ SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+.asm_60d47
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
- ld a, [wSpriteIndex]
+ ld a, HS_POKEMON_TOWER_7F_JESSIE
+ call PokemonTower7Script_60eaf
+ ld a, HS_POKEMON_TOWER_7F_JAMES
+ call PokemonTower7Script_60eaf
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $4
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- call PokemonTower7Script_60db6
- ld a, $3
- ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $1
+ call PokemonTower7Script_60d05
ret
+PokemonTower7MovementData_60d7a:
+ db $4
+PokemonTower7MovementData_60d7b:
+ db $4
+ db $4
+ db $4
+ db $FF
+
+PokemonTower7Script1:
+ ld de, PokemonTower7MovementData_60d7b
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+ jr z, .asm_60d8c
+ ld de, PokemonTower7MovementData_60d7a
+.asm_60d8c
+ ld a, $1
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $2
+ call PokemonTower7Script_60d05
+ ret
+
+PokemonTower7Script2:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
PokemonTower7Script3:
+ ld a, $0
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+ jr z, .asm_60dba
+ ld a, $c
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+.asm_60dba
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+PokemonTower7Script4:
+ ld de, PokemonTower7MovementData_60d7a
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+ jr z, .asm_60dcc
+ ld de, PokemonTower7MovementData_60d7b
+.asm_60dcc
+ ld a, $2
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $5
+ call PokemonTower7Script_60d05
+ ret
+PokemonTower7Script5:
+ ld a, $ff
+ ld [wJoyIgnore], a
ld a, [wd730]
bit 0, a
ret nz
- ld hl, wMissableObjectList
- ld a, [wSpriteIndex]
- ld b, a
-.missableObjectsListLoop
- ld a, [hli]
- cp b ; search for sprite ID in missing objects list
- ld a, [hli]
- jr nz, .missableObjectsListLoop
- ld [wMissableObjectIndex], a ; remove missable object
- predef HideObject
+PokemonTower7Script6:
+ ld a, $2
+ ld [wSpriteStateData1 + $2 * $10 + $1], a
+ ld a, $8
+ ld [wSpriteStateData1 + $2 * $10 + $9], a
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
+ jr z, .asm_60dff
+ ld a, $0
+ ld [wSpriteStateData1 + $2 * $10 + $9], a
+.asm_60dff
+ call Delay3
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $5
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+PokemonTower7Script7:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, PokemonTower7JessieJamesEndBattleText
+ ld de, PokemonTower7JessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2c
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ld a, $8
+ call PokemonTower7Script_60d05
+ ret
+
+PokemonTower7Script8:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, PokemonTower7Script_60d01
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $6
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $9
+ call PokemonTower7Script_60d05
+ ret
+
+PokemonTower7Script9:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_POKEMON_TOWER_7F_JESSIE
+ call PokemonTower7Script_60ebe
+ ld a, HS_POKEMON_TOWER_7F_JAMES
+ call PokemonTower7Script_60ebe
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $a
+ call PokemonTower7Script_60d05
+ ret
+
+PokemonTower7Script10:
+ call PlayDefaultMusic
xor a
+ ldh [hJoyHeld], a
ld [wJoyIgnore], a
- ld [wSpriteIndex], a
- ld [wTrainerHeaderFlagBit], a
- ld [wUnusedDA38], a
+ SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
ld a, $0
- ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
+ call PokemonTower7Script_60d05
ret
-PokemonTower7Script4:
+PokemonTower7Script_60eaf:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+PokemonTower7Script_60ebe:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
+
+PokemonTower7Script11:
ld a, $ff
ld [wJoyIgnore], a
ld a, HS_POKEMON_TOWER_7F_MR_FUJI
@@ -81,146 +246,54 @@ PokemonTower7Script4:
set 3, [hl]
ld a, $0
ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
ret
-PokemonTower7Script_60db6:
- ld hl, CoordsData_60de3
- ld a, [wSpriteIndex]
- dec a
- swap a
- ld d, $0
- ld e, a
- add hl, de
- ld a, [wYCoord]
- ld b, a
- ld a, [wXCoord]
- ld c, a
-.asm_60dcb
- ld a, [hli]
- cp b
- jr nz, .asm_60dde
- ld a, [hli]
- cp c
- jr nz, .asm_60ddf
- ld a, [hli]
- ld d, [hl]
- ld e, a
- ld a, [wSpriteIndex]
- ldh [hSpriteIndex], a
- jp MoveSprite
-.asm_60dde
- inc hl
-.asm_60ddf
- inc hl
- inc hl
- jr .asm_60dcb
-
-CoordsData_60de3:
- map_coord_movement 9, 12, MovementData_60e13
- map_coord_movement 10, 11, MovementData_60e1b
- map_coord_movement 11, 11, MovementData_60e22
- map_coord_movement 12, 11, MovementData_60e22
- map_coord_movement 12, 10, MovementData_60e28
- map_coord_movement 11, 9, MovementData_60e30
- map_coord_movement 10, 9, MovementData_60e22
- map_coord_movement 9, 9, MovementData_60e22
- map_coord_movement 9, 8, MovementData_60e37
- map_coord_movement 10, 7, MovementData_60e22
- map_coord_movement 11, 7, MovementData_60e22
- map_coord_movement 12, 7, MovementData_60e22
-
-MovementData_60e13:
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_LEFT
- db -1 ; end
-
-MovementData_60e1b:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-MovementData_60e22:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-MovementData_60e28:
- db NPC_MOVEMENT_LEFT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-MovementData_60e30:
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_LEFT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
-MovementData_60e37:
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db -1 ; end
-
PokemonTower7F_TextPointers:
dw PokemonTower7Text1
dw PokemonTower7Text2
dw PokemonTower7Text3
- dw PokemonTower7FujiText
-
-PokemonTower7TrainerHeader0:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_0, 3, PokemonTower7BattleText1, PokemonTower7EndBattleText1, PokemonTower7AfterBattleText1
-PokemonTower7TrainerHeader1:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_1, 3, PokemonTower7BattleText2, PokemonTower7EndBattleText2, PokemonTower7AfterBattleText2
-PokemonTower7TrainerHeader2:
- trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_2, 3, PokemonTower7BattleText3, PokemonTower7EndBattleText3, PokemonTower7AfterBattleText3
- db -1 ; end
+ dw PokemonTower7Text4
+ dw PokemonTower7Text5
+ dw PokemonTower7Text6
PokemonTower7Text1:
- text_asm
- ld hl, PokemonTower7TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
PokemonTower7Text2:
+ text_end
+
+PokemonTower7Text4:
+ text_far _PokemonTowerJessieJamesText1
text_asm
- ld hl, PokemonTower7TrainerHeader1
- call TalkToTrainer
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
jp TextScriptEnd
-PokemonTower7Text3:
+PokemonTower7Text5:
+ text_far _PokemonTowerJessieJamesText2
+ text_end
+
+PokemonTower7JessieJamesEndBattleText:
+ text_far _PokemonTowerJessieJamesText3
+ text_end
+
+PokemonTower7Text6:
+ text_far _PokemonTowerJessieJamesText4
text_asm
- ld hl, PokemonTower7TrainerHeader2
- call TalkToTrainer
+ ld c, 64
+ call DelayFrames
jp TextScriptEnd
-PokemonTower7FujiText:
+PokemonTower7Text3:
text_asm
- ld hl, TowerRescueFujiText
+ ld hl, PokemonTower7Text_60f75
call PrintText
SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2
@@ -233,47 +306,10 @@ PokemonTower7FujiText:
ld a, HS_SAFFRON_CITY_F
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, $4
+ ld a, $b
ld [wPokemonTower7FCurScript], a
- ld [wCurMapScript], a
jp TextScriptEnd
-TowerRescueFujiText:
+PokemonTower7Text_60f75:
text_far _TowerRescueFujiText
text_end
-
-PokemonTower7BattleText1:
- text_far _PokemonTower7BattleText1
- text_end
-
-PokemonTower7EndBattleText1:
- text_far _PokemonTower7EndBattleText1
- text_end
-
-PokemonTower7AfterBattleText1:
- text_far _PokemonTower7AfterBattleText1
- text_end
-
-PokemonTower7BattleText2:
- text_far _PokemonTower7BattleText2
- text_end
-
-PokemonTower7EndBattleText2:
- text_far _PokemonTower7EndBattleText2
- text_end
-
-PokemonTower7AfterBattleText2:
- text_far _PokemonTower7AfterBattleText2
- text_end
-
-PokemonTower7BattleText3:
- text_far _PokemonTower7BattleText3
- text_end
-
-PokemonTower7EndBattleText3:
- text_far _PokemonTower7EndBattleText3
- text_end
-
-PokemonTower7AfterBattleText3:
- text_far _PokemonTower7AfterBattleText3
- text_end
diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm
index bdeb96d7..4af4a2e6 100755
--- a/scripts/RedsHouse1F.asm
+++ b/scripts/RedsHouse1F.asm
@@ -1,5 +1,6 @@
RedsHouse1F_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
RedsHouse1F_TextPointers:
dw RedsHouse1FMomText
@@ -7,63 +8,10 @@ RedsHouse1F_TextPointers:
RedsHouse1FMomText:
text_asm
- ld a, [wd72e]
- bit 3, a ; received a Pokémon from Oak?
- jr nz, .heal
- ld hl, MomWakeUpText
- call PrintText
- jr .done
-.heal
- call MomHealPokemon
-.done
+ callfar Func_f1b73
jp TextScriptEnd
-MomWakeUpText:
- text_far _MomWakeUpText
- text_end
-
-MomHealPokemon:
- ld hl, MomHealText1
- call PrintText
- call GBFadeOutToWhite
- call ReloadMapData
- predef HealParty
- ld a, MUSIC_PKMN_HEALED
- ld [wNewSoundID], a
- call PlaySound
-.next
- ld a, [wChannelSoundIDs]
- cp MUSIC_PKMN_HEALED
- jr z, .next
- ld a, [wMapMusicSoundID]
- ld [wNewSoundID], a
- call PlaySound
- call GBFadeInFromWhite
- ld hl, MomHealText2
- jp PrintText
-
-MomHealText1:
- text_far _MomHealText1
- text_end
-MomHealText2:
- text_far _MomHealText2
- text_end
-
RedsHouse1FTVText:
text_asm
- ld a, [wSpritePlayerStateData1FacingDirection]
- cp SPRITE_FACING_UP
- ld hl, TVWrongSideText
- jr nz, .got_text
- ld hl, StandByMeText
-.got_text
- call PrintText
+ callfar Func_f1bc4
jp TextScriptEnd
-
-StandByMeText:
- text_far _StandByMeText
- text_end
-
-TVWrongSideText:
- text_far _TVWrongSideText
- text_end
diff --git a/scripts/RedsHouse1F2.asm b/scripts/RedsHouse1F2.asm
new file mode 100755
index 00000000..e1b2145b
--- /dev/null
+++ b/scripts/RedsHouse1F2.asm
@@ -0,0 +1,58 @@
+Func_f1b73::
+ ld a, [wd72e]
+ bit 3, a ; received a Pokémon from Oak?
+ jp nz, MomHealPokemon
+ ld hl, MomWakeUpText
+ call PrintText
+ ret
+
+MomWakeUpText:
+ text_far _MomWakeUpText
+ text_end
+
+MomHealPokemon:
+ ld hl, MomHealText1
+ call PrintText
+ call GBFadeOutToWhite
+ call ReloadMapData
+ predef HealParty
+ ld a, MUSIC_PKMN_HEALED
+ ld [wNewSoundID], a
+ call PlaySound
+.next
+ ld a, [wChannelSoundIDs]
+ cp MUSIC_PKMN_HEALED
+ jr z, .next
+ ld a, [wMapMusicSoundID]
+ ld [wNewSoundID], a
+ call PlaySound
+ call GBFadeInFromWhite
+ ld hl, MomHealText2
+ call PrintText
+ ret
+
+MomHealText1:
+ text_far _MomHealText1
+ text_end
+MomHealText2:
+ text_far _MomHealText2
+ text_end
+
+Func_f1bc4::
+ ld hl, TVWrongSideText
+ ld a, [wSpritePlayerStateData1FacingDirection]
+ cp SPRITE_FACING_UP
+ jp nz, .got_text
+ ld hl, StandByMeText
+.got_text
+ call PrintText
+ ret
+
+StandByMeText:
+ text_far _StandByMeText
+ text_end
+
+TVWrongSideText:
+ text_far _TVWrongSideText
+ text_end
+
diff --git a/scripts/RedsHouse2F.asm b/scripts/RedsHouse2F.asm
index b44b9f98..4eb465c4 100755
--- a/scripts/RedsHouse2F.asm
+++ b/scripts/RedsHouse2F.asm
@@ -1,23 +1,22 @@
RedsHouse2F_Script:
call EnableAutoTextBoxDrawing
ld hl, RedsHouse2F_ScriptPointers
- ld a, [wRedsHouse2FCurScript]
- jp CallFunctionInTable
+ ld a, 0
+ call CallFunctionInTable
+ ret
RedsHouse2F_ScriptPointers:
dw RedsHouse2FScript0
dw RedsHouse2FScript1
+ dw RedsHouse2FScript2
+ dw RedsHouse2FScript3
+ dw RedsHouse2FScript4
RedsHouse2FScript0:
- xor a
- ldh [hJoyHeld], a
- ld a, PLAYER_DIR_UP
- ld [wPlayerMovingDirection], a
- ld a, 1
- ld [wRedsHouse2FCurScript], a
- ret
-
RedsHouse2FScript1:
+RedsHouse2FScript2:
+RedsHouse2FScript3:
+RedsHouse2FScript4:
ret
RedsHouse2F_TextPointers:
diff --git a/scripts/RockTunnelPokecenter.asm b/scripts/RockTunnelPokecenter.asm
index 755bb8f8..3b3da387 100755
--- a/scripts/RockTunnelPokecenter.asm
+++ b/scripts/RockTunnelPokecenter.asm
@@ -7,6 +7,7 @@ RockTunnelPokecenter_TextPointers:
dw RockTunnelPokecenterText2
dw RockTunnelPokecenterText3
dw RockTunnelTradeNurseText
+ dw RockTunnelPokecenterText5
RockTunnelHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ RockTunnelPokecenterText3:
RockTunnelTradeNurseText:
script_cable_club_receptionist
+
+RockTunnelPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm
index bc13da12..564adc2a 100755
--- a/scripts/RocketHideoutB4F.asm
+++ b/scripts/RocketHideoutB4F.asm
@@ -1,5 +1,4 @@
RocketHideoutB4F_Script:
- call RocketHideout4Script_45473
call EnableAutoTextBoxDrawing
ld hl, RocketHideout4TrainerHeader0
ld de, RocketHideoutB4F_ScriptPointers
@@ -8,47 +7,44 @@ RocketHideoutB4F_Script:
ld [wRocketHideoutB4FCurScript], a
ret
-RocketHideout4Script_45473:
- ld hl, wCurrentMapScriptFlags
- bit 5, [hl]
- res 5, [hl]
- ret z
- CheckEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
- jr nz, .asm_45496
- CheckBothEventsSet EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 1
- jr z, .asm_4548c
- ld a, $2d
- jr .asm_45498
-.asm_4548c
- ld a, SFX_GO_INSIDE
- call PlaySound
- SetEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED
-.asm_45496
- ld a, $e
-.asm_45498
- ld [wNewTileBlockID], a
- lb bc, 5, 12
- predef_jump ReplaceTileBlock
-
-RocketHideout4Script_454a3:
+RocketHideout4Script_45510:
+ CheckAndResetEvent EVENT_6A0
+ call nz, RocketHideout4Script_45525
xor a
ld [wJoyIgnore], a
+RocketHideout4Script_4551e:
ld [wRocketHideoutB4FCurScript], a
ld [wCurMapScript], a
ret
+RocketHideout4Script_45525:
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideout4Script_45756
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideout4Script_45756
+ ret
+
RocketHideoutB4F_ScriptPointers:
- dw CheckFightingMapTrainers
+ dw RocketHideout4Script0
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw RocketHideout4Script3
+ dw RocketHideout4Script4
+ dw RocketHideout4Script5
+ dw RocketHideout4Script6
+ dw RocketHideout4Script7
+ dw RocketHideout4Script8
+ dw RocketHideout4Script9
+ dw RocketHideout4Script10
+ dw RocketHideout4Script11
+ dw RocketHideout4Script12
+ dw RocketHideout4Script13
RocketHideout4Script3:
ld a, [wIsInBattle]
cp $ff
- jp z, RocketHideout4Script_454a3
- call UpdateSprites
- ld a, $f0
+ jp z, RocketHideout4Script_45510
+ ld a, $fc
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
ld a, $a
@@ -72,37 +68,286 @@ RocketHideout4Script3:
ld [wCurMapScript], a
ret
+RocketHideout4Script0:
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
+ call z, RocketHideout4Script_455a5
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
+ call z, CheckFightingMapTrainers
+ ret
+
+RocketHideout4Script_455a5:
+ ld a, [wYCoord]
+ cp $e
+ ret nz
+ ResetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+ ld a, [wXCoord]
+ cp $18
+ jr z, .asm_455c2
+ ld a, [wXCoord]
+ cp $19
+ ret nz
+ SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+.asm_455c2
+ xor a
+ ldh [hJoyHeld], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ call UpdateSprites
+ call Delay3
+ call UpdateSprites
+ call Delay3
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $b
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideout4Script_45747
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideout4Script_45747
+ ld a, $4
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4JessieJamesMovementData_45605:
+ db $4
+RocketHideout4JessieJamesMovementData_45606:
+ db $4
+ db $4
+ db $4
+ db $ff
+
+RocketHideout4Script4:
+ ld de, RocketHideout4JessieJamesMovementData_45605
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+ jr z, .asm_45617
+ ld de, RocketHideout4JessieJamesMovementData_45606
+.asm_45617
+ ld a, $2
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $5
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script5:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+RocketHideout4Script6:
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+ jr z, .asm_4564a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+.asm_4564a
+ call Delay3
+ ld a, $fc
+ ld [wJoyIgnore], a
+RocketHideout4Script7:
+ ld de, RocketHideout4JessieJamesMovementData_45606
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+ jr z, .asm_4565f
+ ld de, RocketHideout4JessieJamesMovementData_45605
+.asm_4565f
+ ld a, $3
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $8
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script8:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $fc
+ ld [wJoyIgnore], a
+RocketHideout4Script9:
+ ld a, $2
+ ld [wSpriteStateData1 + 3 * $10 + 1], a
+ ld a, SPRITE_FACING_DOWN
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+ CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1
+ jr z, .asm_45697
+ ld a, SPRITE_FACING_RIGHT
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+.asm_45697
+ call Delay3
+ ld a, $c
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+RocketHideout4Script10:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, RocketHideout4JessieJamesEndBattleText
+ ld de, RocketHideout4JessieJamesEndBattleText
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2b
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_6A0
+ ld a, $b
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script11:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, RocketHideout4Script_45510
+ ld a, $2
+ ld [wSpriteStateData1 + 2 * $10 + 1], a
+ ld [wSpriteStateData1 + 3 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 2 * $10 + 9], a
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $d
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $c
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script12:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_ROCKET_HIDEOUT_B4F_JAMES
+ call RocketHideout4Script_45756
+ ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE
+ call RocketHideout4Script_45756
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $d
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script13:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
+ ld a, $0
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script_45747:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+RocketHideout4Script_45756:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
+
RocketHideoutB4F_TextPointers:
+ dw RocketHideout4Text0
dw RocketHideout4Text1
dw RocketHideout4Text2
dw RocketHideout4Text3
- dw RocketHideout4Text4
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw RocketHideout4Text9
dw RocketHideout4Text10
+ dw RocketHideout4Text11
+ dw RocketHideout4Text12
RocketHideout4TrainerHeader0:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, 0, RocketHideout4BattleText2, RocketHideout4EndBattleText2, RocketHideout4AfterBattleText2
-RocketHideout4TrainerHeader1:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 0, RocketHideout4BattleText3, RocketHideout4EndBattleText3, RocketHideout4AfterBattleText3
-RocketHideout4TrainerHeader2:
- trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideout4BattleText4, RocketHideout4EndBattleText4, RocketHideout4AfterBattleText4
+ trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideout4Trainer0BeforeText, RocketHideout4Trainer0EndBattleText, RocketHideout4Trainer0AfterText
db -1 ; end
RocketHideout4Text1:
+RocketHideout4Text2:
+ text_end
+
+RocketHideout4Text10:
+ text_far _RocketHideoutJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, $8
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+RocketHideout4Text11:
+ text_far _RocketHideoutJessieJamesText2
+ text_end
+
+RocketHideout4JessieJamesEndBattleText:
+ text_far _RocketHideoutJessieJamesText3
+ text_end
+
+RocketHideout4Text12:
+ text_far _RocketHideoutJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
+RocketHideout4Text0:
text_asm
CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI
- jp nz, .asm_545571
- ld hl, RocketHideout4Text_4557a
+ jp nz, .asm_457fb
+ ld hl, RocketHideout4Text_45804
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
- ld hl, RocketHideout4Text_4557f
- ld de, RocketHideout4Text_4557f
+ ld hl, RocketHideout4Text_45809
+ ld de, RocketHideout4Text_45809
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
@@ -113,87 +358,52 @@ RocketHideout4Text1:
ld a, $3
ld [wRocketHideoutB4FCurScript], a
ld [wCurMapScript], a
- jr .asm_209f0
-.asm_545571
- ld hl, RocketHideout4Text10
+ jr .asm_45801
+
+.asm_457fb
+ ld hl, RocketHideout4Text9
call PrintText
-.asm_209f0
+.asm_45801
jp TextScriptEnd
-RocketHideout4Text_4557a:
+RocketHideout4Text_45804:
text_far _RocketHideout4Text_4557a
text_end
-RocketHideout4Text_4557f:
+RocketHideout4Text_45809:
text_far _RocketHideout4Text_4557f
text_end
-RocketHideout4Text10:
+RocketHideout4Text9:
text_far _RocketHideout4Text_45584
text_end
-RocketHideout4Text2:
- text_asm
- ld hl, RocketHideout4TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
-RocketHideout4BattleText2:
- text_far _RocketHideout4BattleText2
- text_end
-
-RocketHideout4EndBattleText2:
- text_far _RocketHideout4EndBattleText2
- text_end
-
-RocketHideout4AfterBattleText2:
- text_far _RocketHide4AfterBattleText2
- text_end
-
RocketHideout4Text3:
text_asm
- ld hl, RocketHideout4TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
-
-RocketHideout4BattleText3:
- text_far _RocketHideout4BattleText3
- text_end
-
-RocketHideout4EndBattleText3:
- text_far _RocketHideout4EndBattleText3
- text_end
-
-RocketHideout4AfterBattleText3:
- text_far _RocketHide4AfterBattleText3
- text_end
-
-RocketHideout4Text4:
- text_asm
- ld hl, RocketHideout4TrainerHeader2
+ ld hl, RocketHideout4TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-RocketHideout4BattleText4:
+RocketHideout4Trainer0BeforeText:
text_far _RocketHideout4BattleText4
text_end
-RocketHideout4EndBattleText4:
+RocketHideout4Trainer0EndBattleText:
text_far _RocketHideout4EndBattleText4
- text_end
-
-RocketHideout4AfterBattleText4:
+ text_promptbutton
text_asm
- ld hl, RocketHideout4Text_455ec
- call PrintText
- CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
- jr nz, .asm_455e9
+ SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY
ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5
ld [wMissableObjectIndex], a
predef ShowObject
-.asm_455e9
jp TextScriptEnd
-RocketHideout4Text_455ec:
+RocketHideout4Trainer0AfterText:
+ text_asm
+ ld hl, RocketHideout4Text_45844
+ call PrintText
+ jp TextScriptEnd
+
+RocketHideout4Text_45844:
text_far _RocketHideout4Text_455ec
text_end
diff --git a/scripts/Route1.asm b/scripts/Route1.asm
index bd9afea3..d2f0b766 100755
--- a/scripts/Route1.asm
+++ b/scripts/Route1.asm
@@ -1,5 +1,6 @@
Route1_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route1_TextPointers:
dw Route1Text1
@@ -8,45 +9,15 @@ Route1_TextPointers:
Route1Text1:
text_asm
- CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
- jr nz, .got_item
- ld hl, Route1ViridianMartSampleText
- call PrintText
- lb bc, POTION, 1
- call GiveItem
- jr nc, .bag_full
- ld hl, Route1Text_1cae8
- jr .done
-.bag_full
- ld hl, Route1Text_1caf3
- jr .done
-.got_item
- ld hl, Route1Text_1caee
-.done
- call PrintText
+ farcall Func_f1ad2
jp TextScriptEnd
-Route1ViridianMartSampleText:
- text_far _Route1ViridianMartSampleText
- text_end
-
-Route1Text_1cae8:
- text_far _Route1Text_1cae8
- sound_get_item_1
- text_end
-
-Route1Text_1caee:
- text_far _Route1Text_1caee
- text_end
-
-Route1Text_1caf3:
- text_far _Route1Text_1caf3
- text_end
-
Route1Text2:
- text_far _Route1Text2
- text_end
+ text_asm
+ farcall Func_f1b0f
+ jp TextScriptEnd
Route1Text3:
- text_far _Route1Text3
- text_end
+ text_asm
+ farcall Func_f1b1b
+ jp TextScriptEnd
diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm
index 47c8db22..65352cd9 100755
--- a/scripts/Route11Gate2F.asm
+++ b/scripts/Route11Gate2F.asm
@@ -9,7 +9,7 @@ Route11Gate2F_TextPointers:
Route11GateUpstairsText1:
text_asm
- xor a ; TRADE_FOR_TERRY
+ ld a, TRADE_FOR_TERRY
ld [wWhichTrade], a
predef DoInGameTradeDialogue
Route11GateUpstairsScriptEnd:
diff --git a/scripts/Route19.asm b/scripts/Route19.asm
index 8d0c9629..7e09c5e3 100755
--- a/scripts/Route19.asm
+++ b/scripts/Route19.asm
@@ -28,7 +28,7 @@ Route19_TextPointers:
Route19TrainerHeader0:
trainer EVENT_BEAT_ROUTE_19_TRAINER_0, 4, Route19BattleText1, Route19EndBattleText1, Route19AfterBattleText1
Route19TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 3, Route19BattleText2, Route19EndBattleText2, Route19AfterBattleText2
+ trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 4, Route19BattleText2, Route19EndBattleText2, Route19AfterBattleText2
Route19TrainerHeader2:
trainer EVENT_BEAT_ROUTE_19_TRAINER_2, 3, Route19BattleText3, Route19EndBattleText3, Route19AfterBattleText3
Route19TrainerHeader3:
@@ -50,60 +50,52 @@ Route19TrainerHeader9:
Route19Text1:
text_asm
ld hl, Route19TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text2:
text_asm
ld hl, Route19TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text3:
text_asm
ld hl, Route19TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text4:
text_asm
ld hl, Route19TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text5:
text_asm
ld hl, Route19TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text6:
text_asm
ld hl, Route19TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text7:
text_asm
ld hl, Route19TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text8:
text_asm
ld hl, Route19TrainerHeader7
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text9:
text_asm
ld hl, Route19TrainerHeader8
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text10:
text_asm
ld hl, Route19TrainerHeader9
+Route19_TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/Route1_2.asm b/scripts/Route1_2.asm
new file mode 100755
index 00000000..94748252
--- /dev/null
+++ b/scripts/Route1_2.asm
@@ -0,0 +1,53 @@
+Func_f1ad2::
+ CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
+ jr nz, .got_item
+ ld hl, Route1ViridianMartSampleText
+ call PrintText
+ lb bc, POTION, 1
+ call GiveItem
+ jr nc, .bag_full
+ ld hl, Route1Text_1cae8
+ jr .done
+.bag_full
+ ld hl, Route1Text_1caf3
+ jr .done
+.got_item
+ ld hl, Route1Text_1caee
+.done
+ call PrintText
+ ret
+
+Route1ViridianMartSampleText:
+ text_far _Route1ViridianMartSampleText
+ text_end
+
+Route1Text_1cae8:
+ text_far _Route1Text_1cae8
+ sound_get_item_1
+ text_end
+
+Route1Text_1caee:
+ text_far _Route1Text_1caee
+ text_end
+
+Route1Text_1caf3:
+ text_far _Route1Text_1caf3
+ text_end
+
+Func_f1b0f::
+ ld hl, Route1Text_f1b16
+ call PrintText
+ ret
+
+Route1Text_f1b16:
+ text_far _Route1Text2
+ text_end
+
+Func_f1b1b::
+ ld hl, Route1Text_f1b22
+ call PrintText
+ ret
+
+Route1Text_f1b22:
+ text_far _Route1Text3
+ text_end
diff --git a/scripts/Route22.asm b/scripts/Route22.asm
index 1b02752f..5dfdc67e 100755
--- a/scripts/Route22.asm
+++ b/scripts/Route22.asm
@@ -22,16 +22,17 @@ Route22Script7:
ret
Route22Script_50ed6:
+ ld a, OPP_RIVAL1
+ ld [wCurOpponent], a
+ ld a, $2
+ ld [wTrainerNo], a
+ ret
+
+Route22Script_50ee1:
+ ld a, OPP_RIVAL2
+ ld [wCurOpponent], a
ld a, [wRivalStarter]
- ld b, a
-.asm_50eda
- ld a, [hli]
- cp b
- jr z, .asm_50ee1
- inc hl
- jr .asm_50eda
-.asm_50ee1
- ld a, [hl]
+ add 7
ld [wTrainerNo], a
ret
@@ -88,9 +89,7 @@ Route22Script0:
ld a, [wWalkBikeSurfState]
and a
jr z, .asm_50f4e
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_50f4e
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -131,24 +130,29 @@ Route22Script1:
ld hl, Route22RivalDefeatedText1
ld de, Route22Text_511bc
call SaveEndBattleTextPointers
- ld a, OPP_RIVAL1
- ld [wCurOpponent], a
- ld hl, StarterMons_50faf
call Route22Script_50ed6
ld a, $2
ld [wRoute22CurScript], a
ret
-StarterMons_50faf:
-; starter the rival picked, rival trainer number
- db STARTER2, 4
- db STARTER3, 5
- db STARTER1, 6
+Route22RivalDefeatedText1:
+ text_far _Route22RivalDefeatedText1
+ text_end
+
+Route22Text_511bc:
+ text_far _Route22Text_511bc
+ text_end
Route22Script2:
ld a, [wIsInBattle]
cp $ff
jp z, Route22Script_50ece
+ ld a, [wRivalStarter]
+ cp 2
+ jr nz, .asm_50fc9
+ ld a, $1
+ ld [wRivalStarter], a
+.asm_50fc9
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
jr nz, .notDown
@@ -167,9 +171,7 @@ Route22Script2:
ld a, $1
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, [wcf0d]
cp $1
@@ -241,13 +243,9 @@ Route22Script_5104e:
ld a, [wWalkBikeSurfState]
and a
jr z, .skipYVisibilityTesta
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.skipYVisibilityTesta
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateTempo
ld a, $2
ldh [hSpriteIndex], a
@@ -287,18 +285,18 @@ Route22Script4:
ld hl, Route22RivalDefeatedText2
ld de, Route22Text_511d0
call SaveEndBattleTextPointers
- ld a, OPP_RIVAL2
- ld [wCurOpponent], a
- ld hl, StarterMons_510d9
- call Route22Script_50ed6
+ call Route22Script_50ee1
ld a, $5
ld [wRoute22CurScript], a
ret
-StarterMons_510d9:
- db STARTER2, 10
- db STARTER3, 11
- db STARTER1, 12
+Route22RivalDefeatedText2:
+ text_far _Route22RivalDefeatedText2
+ text_end
+
+Route22Text_511d0:
+ text_far _Route22Text_511d0
+ text_end
Route22Script5:
ld a, [wIsInBattle]
@@ -326,9 +324,7 @@ Route22Script5:
ld a, $2
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStartAndTempo
ld a, [wcf0d]
cp $1
@@ -383,62 +379,15 @@ Route22_TextPointers:
Route22Text1:
text_asm
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
- jr z, .asm_5118b
- ld hl, Route22RivalAfterBattleText1
- call PrintText
- jr .asm_51191
-.asm_5118b
- ld hl, Route22RivalBeforeBattleText1
- call PrintText
-.asm_51191
+ farcall Func_f1b27
jp TextScriptEnd
Route22Text2:
text_asm
- CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
- jr z, .asm_511a4
- ld hl, Route22RivalAfterBattleText2
- call PrintText
- jr .asm_511aa
-.asm_511a4
- ld hl, Route22RivalBeforeBattleText2
- call PrintText
-.asm_511aa
+ farcall Func_f1b47
jp TextScriptEnd
-Route22RivalBeforeBattleText1:
- text_far _Route22RivalBeforeBattleText1
- text_end
-
-Route22RivalAfterBattleText1:
- text_far _Route22RivalAfterBattleText1
- text_end
-
-Route22RivalDefeatedText1:
- text_far _Route22RivalDefeatedText1
- text_end
-
-Route22Text_511bc:
- text_far _Route22Text_511bc
- text_end
-
-Route22RivalBeforeBattleText2:
- text_far _Route22RivalBeforeBattleText2
- text_end
-
-Route22RivalAfterBattleText2:
- text_far _Route22RivalAfterBattleText2
- text_end
-
-Route22RivalDefeatedText2:
- text_far _Route22RivalDefeatedText2
- text_end
-
-Route22Text_511d0:
- text_far _Route22Text_511d0
- text_end
-
Route22FrontGateText:
- text_far _Route22FrontGateText
- text_end
+ text_asm
+ farcall Func_f1b67
+ jp TextScriptEnd
diff --git a/scripts/Route22Gate.asm b/scripts/Route22Gate.asm
index 5acc343c..adbefe8a 100755
--- a/scripts/Route22Gate.asm
+++ b/scripts/Route22Gate.asm
@@ -23,9 +23,12 @@ Route22GateScript0:
ret nc
xor a
ldh [hJoyHeld], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
ld a, $1
ldh [hSpriteIndexOrTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
Route22GateScriptCoords:
dbmapcoord 4, 2
@@ -59,7 +62,7 @@ Route22Gate_TextPointers:
Route22GateText1:
text_asm
ld a, [wObtainedBadges]
- bit 0, a
+ bit 0, a ; BOULDERBADGE
jr nz, .asm_1e6f6
ld hl, Route22GateText_1e704
call PrintText
diff --git a/scripts/Route22_2.asm b/scripts/Route22_2.asm
new file mode 100755
index 00000000..7f3fa54d
--- /dev/null
+++ b/scripts/Route22_2.asm
@@ -0,0 +1,50 @@
+Func_f1b27::
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
+ jr z, .asm_5118b
+ ld hl, Route22RivalAfterBattleText1
+ call PrintText
+ jr .asm_51191
+
+.asm_5118b
+ ld hl, Route22RivalBeforeBattleText1
+ call PrintText
+.asm_51191
+ ret
+
+Route22RivalBeforeBattleText1:
+ text_far _Route22RivalBeforeBattleText1
+ text_end
+
+Route22RivalAfterBattleText1:
+ text_far _Route22RivalAfterBattleText1
+ text_end
+
+Func_f1b47::
+ CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
+ jr z, .asm_511a4
+ ld hl, Route22RivalAfterBattleText2
+ call PrintText
+ jr .asm_511aa
+
+.asm_511a4
+ ld hl, Route22RivalBeforeBattleText2
+ call PrintText
+.asm_511aa
+ ret
+
+Route22RivalBeforeBattleText2:
+ text_far _Route22RivalBeforeBattleText2
+ text_end
+
+Route22RivalAfterBattleText2:
+ text_far _Route22RivalAfterBattleText2
+ text_end
+
+Func_f1b67::
+ ld hl, Route22FrontGateText_3c
+ call PrintText
+ ret
+
+Route22FrontGateText_3c:
+ text_far _Route22FrontGateText
+ text_end
diff --git a/scripts/Route24.asm b/scripts/Route24.asm
index aed112ac..fc4633e7 100755
--- a/scripts/Route24.asm
+++ b/scripts/Route24.asm
@@ -85,6 +85,7 @@ Route24_TextPointers:
dw Route24Text6
dw Route24Text7
dw PickUpItemText
+ dw Route24Text8
Route24TrainerHeader0:
trainer EVENT_BEAT_ROUTE_24_TRAINER_0, 4, Route24BattleText1, Route24EndBattleText1, Route24AfterBattleText1
@@ -149,7 +150,7 @@ Route24Text_51510:
Route24Text_5151a:
text_far _Route24Text_5151a
- sound_get_item_1
+ sound_get_key_item
text_promptbutton
text_end
@@ -276,3 +277,59 @@ Route24EndBattleText6:
Route24AfterBattleText6:
text_far _Route24AfterBattleText6
text_end
+
+Route24Text8:
+ text_asm
+ CheckEvent EVENT_54F
+ jr nz, .asm_515d5
+ ld hl, Route24Text_515de
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_515d0
+ ld a, CHARMANDER
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, CHARMANDER, 10
+ call GivePokemon
+ jp nc, TextScriptEnd
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, Route24Text_515e3
+ call PrintText
+ SetEvent EVENT_54F
+ jp TextScriptEnd
+
+.asm_515d0
+ ld hl, Route24Text_515e9
+ jr .asm_515d8
+
+.asm_515d5
+ ld hl, Route24Text_515ee
+.asm_515d8
+ call PrintText
+ jp TextScriptEnd
+
+Route24Text_515de:
+ text_far _Route24DamianText1
+ text_end
+
+Route24Text_515e3:
+ text_far _Route24DamianText2
+ text_waitbutton
+ text_end
+
+Route24Text_515e9:
+ text_far _Route24DamianText3
+ text_end
+
+Route24Text_515ee:
+ text_far _Route24DamianText4
+ text_end
diff --git a/scripts/Route25.asm b/scripts/Route25.asm
index fba28bc4..400ac9ed 100755
--- a/scripts/Route25.asm
+++ b/scripts/Route25.asm
@@ -1,14 +1,21 @@
Route25_Script:
- call Route25Script_515e1
call EnableAutoTextBoxDrawing
ld hl, Route25TrainerHeader0
ld de, Route25_ScriptPointers
ld a, [wRoute25CurScript]
call ExecuteCurMapScriptInTable
ld [wRoute25CurScript], a
+ call Route25Script_515e1
ret
Route25Script_515e1:
+ ld hl, wd492
+ res 2, [hl]
+ res 3, [hl]
+ res 4, [hl]
+ res 7, [hl]
+ xor a
+ ld [wBillsHouseCurScript], a
ld hl, wCurrentMapScriptFlags
bit 6, [hl]
res 6, [hl]
@@ -16,14 +23,16 @@ Route25Script_515e1:
CheckEventHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
ret nz
CheckEventReuseHL EVENT_MET_BILL_2
- jr nz, .asm_515ff
+ jr nz, .asm_51638
ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR
ld a, HS_BILL_POKEMON
ld [wMissableObjectIndex], a
- predef_jump ShowObject
-.asm_515ff
+ predef ShowObject
+ jr .asm_5165c
+
+.asm_51638
CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2
- ret z
+ jr z, .asm_5165c
SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
ld a, HS_NUGGET_BRIDGE_GUY
ld [wMissableObjectIndex], a
@@ -33,7 +42,9 @@ Route25Script_515e1:
predef HideObject
ld a, HS_BILL_2
ld [wMissableObjectIndex], a
- predef_jump ShowObject
+ predef ShowObject
+.asm_5165c
+ ret
Route25_ScriptPointers:
dw CheckFightingMapTrainers
diff --git a/scripts/Route6.asm b/scripts/Route6.asm
index 36883e09..01d5414d 100755
--- a/scripts/Route6.asm
+++ b/scripts/Route6.asm
@@ -24,7 +24,7 @@ Route6_TextPointers:
Route6TrainerHeader0:
trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6BattleText1, Route6EndBattleText1, Route6AfterBattleText1
Route6TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6BattleText2, Route6EndBattleText2, Route6AfterBattleText1
+ trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6BattleText2, Route6EndBattleText2, Route6AfterBattleText2
Route6TrainerHeader2:
trainer EVENT_BEAT_ROUTE_6_TRAINER_2, 4, Route6BattleText3, Route6EndBattleText3, Route6AfterBattleText3
Route6TrainerHeader3:
@@ -67,6 +67,10 @@ Route6EndBattleText2:
text_far _Route6EndBattleText2
text_end
+Route6AfterBattleText2:
+ text_far _Route6AfterBattleText2
+ text_end
+
Route6Text3:
text_asm
ld hl, Route6TrainerHeader2
diff --git a/scripts/Route7.asm b/scripts/Route7.asm
index 1fd38abb..648cbb58 100755
--- a/scripts/Route7.asm
+++ b/scripts/Route7.asm
@@ -1,5 +1,6 @@
Route7_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route7_TextPointers:
dw Route7Text1
diff --git a/scripts/Route8Gate.asm b/scripts/Route8Gate.asm
index 3167cd76..55443931 100755
--- a/scripts/Route8Gate.asm
+++ b/scripts/Route8Gate.asm
@@ -27,7 +27,7 @@ Route8GateScript0:
ld hl, CoordsData_1e22c
call ArePlayerCoordsInArray
ret nc
- ld a, PLAYER_DIR_LEFT
+ ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
xor a
ldh [hJoyHeld], a
diff --git a/scripts/Route9.asm b/scripts/Route9.asm
index 5dc060c4..e69d4d35 100755
--- a/scripts/Route9.asm
+++ b/scripts/Route9.asm
@@ -14,7 +14,7 @@ Route9_ScriptPointers:
Route9_TextPointers:
dw Route9Text1
- dw Route9Text2
+ dw Route9TextAJ
dw Route9Text3
dw Route9Text4
dw Route9Text5
@@ -28,7 +28,7 @@ Route9_TextPointers:
Route9TrainerHeader0:
trainer EVENT_BEAT_ROUTE_9_TRAINER_0, 3, Route9BattleText1, Route9EndBattleText1, Route9AfterBattleText1
Route9TrainerHeader1:
- trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9BattleText2, Route9EndBattleText2, Route9AfterBattleText2
+ trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9BattleTextAJ, Route9EndBattleTextAJ, Route9AfterBattleTextAJ
Route9TrainerHeader2:
trainer EVENT_BEAT_ROUTE_9_TRAINER_2, 4, Route9BattleText3, Route9EndBattleText3, Route9AfterBattleText3
Route9TrainerHeader3:
@@ -50,7 +50,7 @@ Route9Text1:
ld hl, Route9TrainerHeader0
jr Route9TalkToTrainer
-Route9Text2:
+Route9TextAJ:
text_asm
ld hl, Route9TrainerHeader1
jr Route9TalkToTrainer
@@ -104,16 +104,16 @@ Route9AfterBattleText1:
text_far _Route9AfterBattleText1
text_end
-Route9BattleText2:
- text_far _Route9BattleText2
+Route9BattleTextAJ:
+ text_far _Route9BattleTextAJ
text_end
-Route9EndBattleText2:
- text_far _Route9EndBattleText2
+Route9EndBattleTextAJ:
+ text_far _Route9EndBattleTextAJ
text_end
-Route9AfterBattleText2:
- text_far _Route9AfterBattleText2
+Route9AfterBattleTextAJ:
+ text_far _Route9AfterBattleTextAJ
text_end
Route9BattleText3:
diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm
index d15ec180..d00917fe 100755
--- a/scripts/SSAnne2F.asm
+++ b/scripts/SSAnne2F.asm
@@ -24,9 +24,7 @@ SSAnne2Script0:
ld hl, CoordsData_61411
call ArePlayerCoordsInArray
ret nc
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -98,23 +96,8 @@ SSAnne2Script1:
call Delay3
ld a, OPP_RIVAL2
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .NotSquirtle
ld a, $1
- jr .done
-.NotSquirtle
- cp STARTER3
- jr nz, .Charmander
- ld a, $2
- jr .done
-.Charmander
- ld a, $3
-.done
ld [wTrainerNo], a
-
call SSAnne2Script_61416
ld a, $2
ld [wSSAnne2FCurScript], a
@@ -144,9 +127,7 @@ SSAnne2Script2:
ld a, $2
ldh [hSpriteIndex], a
call MoveSprite
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld a, $3
ld [wSSAnne2FCurScript], a
diff --git a/scripts/SSAnne2FRooms.asm b/scripts/SSAnne2FRooms.asm
index 3fe2d34f..ff1dcfaf 100755
--- a/scripts/SSAnne2FRooms.asm
+++ b/scripts/SSAnne2FRooms.asm
@@ -1,8 +1,5 @@
SSAnne2FRooms_Script:
- ld a, TRUE
- ld [wAutoTextBoxDrawingControl], a
- xor a
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call DisableAutoTextBoxDrawing
ld hl, SSAnne9TrainerHeader0
ld de, SSAnne2FRooms_ScriptPointers
ld a, [wSSAnne2FRoomsCurScript]
@@ -100,44 +97,24 @@ SSAnne9Text_61c10:
SSAnne9Text10:
text_asm
- ld hl, SSAnne9Text_61c1f
- call PrintText
+ farcall Func_f2570
jp TextScriptEnd
-SSAnne9Text_61c1f:
- text_far _SSAnne9Text_61c1f
- text_end
-
SSAnne9Text11:
text_asm
- ld hl, SSAnne9Text_61c2e
- call PrintText
+ farcall Func_f257c
jp TextScriptEnd
-SSAnne9Text_61c2e:
- text_far _SSAnne9Text_61c2e
- text_end
-
SSAnne9Text12:
text_asm
- ld hl, SSAnne9Text_61c3d
- call PrintText
+ farcall Func_f2588
jp TextScriptEnd
-SSAnne9Text_61c3d:
- text_far _SSAnne9Text_61c3d
- text_end
-
SSAnne9Text13:
text_asm
- ld hl, SSAnne9Text_61c4c
- call PrintText
+ farcall Func_f2594
jp TextScriptEnd
-SSAnne9Text_61c4c:
- text_far _SSAnne9Text_61c4c
- text_end
-
SSAnne9BattleText1:
text_far _SSAnne9BattleText1
text_end
diff --git a/scripts/SSAnne2FRooms_2.asm b/scripts/SSAnne2FRooms_2.asm
new file mode 100755
index 00000000..2271e83d
--- /dev/null
+++ b/scripts/SSAnne2FRooms_2.asm
@@ -0,0 +1,35 @@
+Func_f2570::
+ ld hl, SSAnne9Text_f2577
+ call PrintText
+ ret
+
+SSAnne9Text_f2577:
+ text_far _SSAnne9Text_61c1f
+ text_end
+
+Func_f257c::
+ ld hl, SSAnne9Text_f2583
+ call PrintText
+ ret
+
+SSAnne9Text_f2583:
+ text_far _SSAnne9Text_61c2e
+ text_end
+
+Func_f2588::
+ ld hl, SSAnne9Text_f258f
+ call PrintText
+ ret
+
+SSAnne9Text_f258f:
+ text_far _SSAnne9Text_61c3d
+ text_end
+
+Func_f2594::
+ ld hl, SSAnne9Text_f259b
+ call PrintText
+ ret
+
+SSAnne9Text_f259b:
+ text_far _SSAnne9Text_61c4c
+ text_end
diff --git a/scripts/SSAnneCaptainsRoom.asm b/scripts/SSAnneCaptainsRoom.asm
index 3d5c5645..593cd872 100755
--- a/scripts/SSAnneCaptainsRoom.asm
+++ b/scripts/SSAnneCaptainsRoom.asm
@@ -3,7 +3,7 @@ SSAnneCaptainsRoom_Script:
jp EnableAutoTextBoxDrawing
SSAnne7Script_6189b:
- CheckEvent EVENT_RUBBED_CAPTAINS_BACK
+ CheckEvent EVENT_GOT_HM01
ret nz
ld hl, wd72d
set 5, [hl]
@@ -28,12 +28,12 @@ SSAnne7Text1:
ld hl, ReceivedHM01Text
call PrintText
SetEvent EVENT_GOT_HM01
+ ld hl, wd72d
+ res 5, [hl]
jr .done
.bag_full
ld hl, HM01NoRoomText
call PrintText
- ld hl, wd72d
- set 5, [hl]
jr .done
.got_item
ld hl, SSAnne7Text_61932
@@ -45,12 +45,10 @@ SSAnne7RubText:
text_far _SSAnne7RubText
text_asm
ld a, [wAudioROMBank]
- cp BANK(Audio3_UpdateMusic)
+ cp BANK(AudioEngine3)
ld [wAudioSavedROMBank], a
jr nz, .asm_61908
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld a, BANK(Music_PkmnHealed)
ld [wAudioROMBank], a
.asm_61908
diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm
index fd9a0884..9e4cc5dd 100755
--- a/scripts/SafariZoneGate.asm
+++ b/scripts/SafariZoneGate.asm
@@ -2,7 +2,8 @@ SafariZoneGate_Script:
call EnableAutoTextBoxDrawing
ld hl, SafariZoneGate_ScriptPointers
ld a, [wSafariZoneGateCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
SafariZoneGate_ScriptPointers:
dw .SafariZoneEntranceScript0
@@ -85,6 +86,8 @@ SafariZoneGate_ScriptPointers:
call DisplayTextID
xor a
ld [wNumSafariBalls], a
+ ld [wSafariSteps], a
+ ld [wSafariSteps], a ; ?????
ld a, D_DOWN
ld c, $3
call SafariZoneEntranceAutoWalk
@@ -143,84 +146,10 @@ SafariZoneGate_TextPointers:
text_end
.SafariZoneEntranceText4
- text_far SafariZoneEntranceText_9e6e4
text_asm
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jp nz, .PleaseComeAgain
- xor a
- ldh [hMoney], a
- ld a, $05
- ldh [hMoney + 1], a
- ld a, $00
- ldh [hMoney + 2], a
- call HasEnoughMoney
- jr nc, .success
- ld hl, .NotEnoughMoneyText
- call PrintText
- jr .CantPayWalkDown
-
-.success
- xor a
- ld [wPriceTemp], a
- ld a, $05
- ld [wPriceTemp + 1], a
- ld a, $00
- ld [wPriceTemp + 2], a
- ld hl, wPriceTemp + 2
- ld de, wPlayerMoney + 2
- ld c, 3
- predef SubBCDPredef
- ld a, MONEY_BOX
- ld [wTextBoxID], a
- call DisplayTextBoxID
- ld hl, .MakePaymentText
- call PrintText
- ld a, 30
- ld [wNumSafariBalls], a
- ld a, HIGH(502)
- ld [wSafariSteps], a
- ld a, LOW(502)
- ld [wSafariSteps + 1], a
- ld a, D_UP
- ld c, 3
- call SafariZoneEntranceAutoWalk
- SetEvent EVENT_IN_SAFARI_ZONE
- ResetEventReuseHL EVENT_SAFARI_GAME_OVER
- ld a, 3
- ld [wSafariZoneGateCurScript], a
- jr .done
-
-.PleaseComeAgain
- ld hl, .PleaseComeAgainText
- call PrintText
-.CantPayWalkDown
- ld a, D_DOWN
- ld c, 1
- call SafariZoneEntranceAutoWalk
- ld a, 4
- ld [wSafariZoneGateCurScript], a
-.done
+ callfar Func_f1f77
jp TextScriptEnd
-.MakePaymentText
- text_far SafariZoneEntranceText_9e747
- sound_get_item_1
- text_far _SafariZoneEntranceText_75360
- text_end
-
-.PleaseComeAgainText
- text_far _SafariZoneEntranceText_75365
- text_end
-
-.NotEnoughMoneyText
- text_far _SafariZoneEntranceText_7536a
- text_end
-
.SafariZoneEntranceText5
text_far SafariZoneEntranceText_9e814
text_asm
@@ -268,26 +197,5 @@ SafariZoneGate_TextPointers:
.SafariZoneEntranceText2
text_asm
- ld hl, .FirstTimeQuestionText
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- ld hl, .RegularText
- jr nz, .Explanation
- ld hl, .ExplanationText
-.Explanation
- call PrintText
+ callfar Func_f203e
jp TextScriptEnd
-
-.FirstTimeQuestionText
- text_far _SafariZoneEntranceText_753e6
- text_end
-
-.ExplanationText
- text_far _SafariZoneEntranceText_753eb
- text_end
-
-.RegularText
- text_far _SafariZoneEntranceText_753f0
- text_end
diff --git a/scripts/SafariZoneGate2.asm b/scripts/SafariZoneGate2.asm
new file mode 100755
index 00000000..6187b2c6
--- /dev/null
+++ b/scripts/SafariZoneGate2.asm
@@ -0,0 +1,251 @@
+Func_f1f77::
+ ld hl, .WelcomeText
+ call PrintText
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jp nz, .declined
+ ld hl, wPlayerMoney
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ jr nz, .has_positive_balance
+ call SafariZoneEntranceGetLowCostAdmissionText
+ jr c, .deny_entry
+ jr .poor_mans_discount
+
+.has_positive_balance
+ xor a
+ ldh [hMoney], a
+ ld a, $5
+ ldh [hMoney + 1], a
+ ld a, $0
+ ldh [hMoney + 2], a
+ call HasEnoughMoney
+ jr nc, .has_enough_money
+ ld hl, .NotEnoughMoneyText
+ call PrintText
+ call SafariZoneEntranceCalculateLowCostAdmission
+ jr c, .deny_entry
+ jr .poor_mans_discount
+
+.has_enough_money
+ xor a
+ ld [wPriceTemp + 0], a
+ ld a, $5
+ ld [wPriceTemp + 1], a
+ ld a, $0
+ ld [wPriceTemp + 2], a
+ ld hl, wTrainerInfoTextBoxNextRowOffset
+ ld de, wPlayerMoney + 2
+ ld c, 3
+ predef SubBCDPredef
+ ld a, SFX_PURCHASE
+ call PlaySoundWaitForCurrent
+ call WaitForSoundToFinish
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld hl, .MakePaymentText
+ call PrintText
+ ld a, 30
+ ld hl, 502
+.poor_mans_discount
+ ld [wNumSafariBalls], a
+ ld a, h
+ ld [wSafariSteps], a
+ ld a, l
+ ld [wSafariSteps + 1], a
+ ld a, D_UP
+ ld c, 3
+ call SafariZoneEntranceStartSimulatingJoypadStates
+ SetEvent EVENT_IN_SAFARI_ZONE
+ ResetEventReuseHL EVENT_SAFARI_GAME_OVER
+ ld a, $3
+ ld [wSafariZoneGateCurScript], a
+ jr .asm_f2024
+.declined:
+ ld hl, .PleaseComeAgainText
+ call PrintText
+.deny_entry
+ ld a, D_DOWN
+ ld c, 1
+ call SafariZoneEntranceStartSimulatingJoypadStates
+ ld a, $4
+ ld [wSafariZoneGateCurScript], a
+.asm_f2024
+ ret
+
+.WelcomeText
+ text_far SafariZoneEntranceText_9e6e4
+ text_end
+
+.MakePaymentText
+ text_far SafariZoneEntranceText_9e747
+ sound_get_item_1
+ text_far _SafariZoneEntranceText_75360
+ text_end
+
+.PleaseComeAgainText
+ text_far _SafariZoneEntranceText_75365
+ text_end
+
+.NotEnoughMoneyText
+ text_far _SafariZoneEntranceText_7536a
+ text_end
+
+Func_f203e::
+ ld hl, .FirstTimeQuestionText
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, .RegularText
+ jr nz, .Explanation
+ ld hl, .ExplanationText
+.Explanation
+ call PrintText
+ ret
+
+.FirstTimeQuestionText
+ text_far _SafariZoneEntranceText_753e6
+ text_end
+
+.ExplanationText
+ text_far _SafariZoneEntranceText_753eb
+ text_end
+
+.RegularText
+ text_far _SafariZoneEntranceText_753f0
+ text_end
+
+SafariZoneEntranceStartSimulatingJoypadStates:
+ push af
+ ld b, $0
+ ld a, c
+ ld [wSimulatedJoypadStatesIndex], a
+ ld hl, wParentMenuItem
+ pop af
+ call FillMemory
+ jp StartSimulatingJoypadStates
+
+SafariZoneEntranceCalculateLowCostAdmission:
+ ld hl, wPlayerMoney
+ ld de, hMoney
+ ld bc, $3
+ call CopyData
+ xor a
+ ldh [hDivideBCDDivisor], a
+ ldh [hDivideBCDDivisor + 1], a
+ ld a, 23
+ ldh [hDivideBCDDivisor + 2], a
+ predef DivideBCDPredef3
+ ldh a, [hDivideBCDQuotient + 2]
+ call SafariZoneEntranceConvertBCDtoNumber
+ push af
+ ld hl, wPlayerMoney
+ xor a
+ ld bc, $3
+ call FillMemory
+ ld hl, SafariZoneEntranceText_f20c4
+ call PrintText_NoCreatingTextBox
+ ld a, MONEY_BOX
+ ld [wTextBoxID], a
+ call DisplayTextBoxID
+ ld hl, SafariZoneEntranceText_f20c9
+ call PrintText
+ pop af
+ inc a
+ jr z, .max_balls
+ cp 29
+ jr c, .load_balls
+.max_balls
+ ld a, 29
+.load_balls
+ ld hl, 502
+ and a
+ ret
+
+SafariZoneEntranceText_f20c4:
+ text_far _SafariZoneLowCostText1
+ text_end
+
+SafariZoneEntranceText_f20c9:
+ text_far _SafariZoneLowCostText2
+ text_end
+
+SafariZoneEntranceGetLowCostAdmissionText:
+ ld hl, wSafariSteps
+ ld a, [hl]
+ push af
+ inc [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Pointers_f2100
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ pop af
+ cp $3
+ jr z, .give_one_ball
+ scf
+ ret
+
+.give_one_ball
+ ld hl, SafariZoneEntranceText_f20f6
+ call PrintText_NoCreatingTextBox
+ ld a, $1
+ ld hl, 502
+ and a
+ ret
+
+SafariZoneEntranceText_f20f6:
+ text_far _SafariZoneLowCostText3
+ sound_get_item_1
+ text_far _SafariZoneLowCostText4
+ text_end
+
+Pointers_f2100:
+ dw SafariZoneEntranceText_f210a
+ dw SafariZoneEntranceText_f210f
+ dw SafariZoneEntranceText_f2114
+ dw SafariZoneEntranceText_f2119
+ dw SafariZoneEntranceText_f2119
+
+SafariZoneEntranceText_f210a:
+ text_far _SafariZoneLowCostText5
+ text_end
+
+SafariZoneEntranceText_f210f:
+ text_far _SafariZoneLowCostText6
+ text_end
+
+SafariZoneEntranceText_f2114:
+ text_far _SafariZoneLowCostText7
+ text_end
+
+SafariZoneEntranceText_f2119:
+ text_far _SafariZoneLowCostText8
+ text_end
+
+SafariZoneEntranceConvertBCDtoNumber:
+ push hl
+ ld c, a
+ and $f
+ ld l, a
+ ld h, $0
+ ld a, c
+ and $f0
+ swap a
+ ld bc, 10
+ call AddNTimes
+ ld a, l
+ pop hl
+ ret
diff --git a/scripts/SaffronPokecenter.asm b/scripts/SaffronPokecenter.asm
index 68eb4fc6..f4d9f192 100755
--- a/scripts/SaffronPokecenter.asm
+++ b/scripts/SaffronPokecenter.asm
@@ -7,6 +7,7 @@ SaffronPokecenter_TextPointers:
dw SaffronPokecenterText2
dw SaffronPokecenterText3
dw SaffronTradeNurseText
+ dw SaffronPokecenterText5
SaffronHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ SaffronPokecenterText3:
SaffronTradeNurseText:
script_cable_club_receptionist
+
+SaffronPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/SeafoamIslandsB4F.asm b/scripts/SeafoamIslandsB4F.asm
index bf80d3e0..1dd0b7f9 100755
--- a/scripts/SeafoamIslandsB4F.asm
+++ b/scripts/SeafoamIslandsB4F.asm
@@ -6,8 +6,9 @@ SeafoamIslandsB4F_Script:
SeafoamIslands5Script_467a5:
xor a
- ld [wSeafoamIslandsB4FCurScript], a
ld [wJoyIgnore], a
+ ld [wSeafoamIslandsB4FCurScript], a
+ ld [wCurMapScript], a
ret
SeafoamIslandsB4F_ScriptPointers:
diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm
index f3a7088b..113ceecc 100755
--- a/scripts/SilphCo11F.asm
+++ b/scripts/SilphCo11F.asm
@@ -1,5 +1,5 @@
SilphCo11F_Script:
- call SilphCo11Script_62110
+ call SilphCo11Script_62127
call EnableAutoTextBoxDrawing
ld hl, SilphCo11TrainerHeader0
ld de, SilphCo11F_ScriptPointers
@@ -8,26 +8,27 @@ SilphCo11F_Script:
ld [wSilphCo11FCurScript], a
ret
-SilphCo11Script_62110:
+SilphCo11Script_62127:
ld hl, wCurrentMapScriptFlags
bit 5, [hl]
res 5, [hl]
ret z
ld hl, SilphCo11GateCoords
- call SilphCo11Script_62137
- call SilphCo11Script_62163
+ call SilphCo11Script_6214f
+ call SilphCo11Script_6217b
CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret nz
ld a, $20
ld [wNewTileBlockID], a
lb bc, 6, 3
- predef_jump ReplaceTileBlock
+ predef ReplaceTileBlock
+ ret
SilphCo11GateCoords:
dbmapcoord 3, 6
db -1 ; end
-SilphCo11Script_62137:
+SilphCo11Script_6214f:
push hl
ld hl, wCardKeyDoorY
ld a, [hli]
@@ -63,93 +64,17 @@ SilphCo11Script_62137:
ldh [hUnlockedSilphCoDoors], a
ret
-SilphCo11Script_62163:
+SilphCo11Script_6217b:
ldh a, [hUnlockedSilphCoDoors]
and a
ret z
SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret
-SilphCo11Script_6216d:
- ld hl, MissableObjectIDs_6219b
-.asm_62170
- ld a, [hli]
- cp $ff
- jr z, .asm_62181
- push hl
- ld [wMissableObjectIndex], a
- predef HideObject
- pop hl
- jr .asm_62170
-.asm_62181
- ld hl, MissableObjectIDs_62194
-.asm_62184
- ld a, [hli]
- cp -1
- ret z
- push hl
- ld [wMissableObjectIndex], a
- predef ShowObject
- pop hl
- jr .asm_62184
-
-MissableObjectIDs_62194:
- db HS_SAFFRON_CITY_8
- db HS_SAFFRON_CITY_9
- db HS_SAFFRON_CITY_A
- db HS_SAFFRON_CITY_B
- db HS_SAFFRON_CITY_C
- db HS_SAFFRON_CITY_D
- db -1 ; end
-
-MissableObjectIDs_6219b:
- db HS_SAFFRON_CITY_1
- db HS_SAFFRON_CITY_2
- db HS_SAFFRON_CITY_3
- db HS_SAFFRON_CITY_4
- db HS_SAFFRON_CITY_5
- db HS_SAFFRON_CITY_6
- db HS_SAFFRON_CITY_7
- db HS_SAFFRON_CITY_E
- db HS_SAFFRON_CITY_F
- db HS_SILPH_CO_2F_2
- db HS_SILPH_CO_2F_3
- db HS_SILPH_CO_2F_4
- db HS_SILPH_CO_2F_5
- db HS_SILPH_CO_3F_1
- db HS_SILPH_CO_3F_2
- db HS_SILPH_CO_4F_1
- db HS_SILPH_CO_4F_2
- db HS_SILPH_CO_4F_3
- db HS_SILPH_CO_5F_1
- db HS_SILPH_CO_5F_2
- db HS_SILPH_CO_5F_3
- db HS_SILPH_CO_5F_4
- db HS_SILPH_CO_6F_1
- db HS_SILPH_CO_6F_2
- db HS_SILPH_CO_6F_3
- db HS_SILPH_CO_7F_1
- db HS_SILPH_CO_7F_2
- db HS_SILPH_CO_7F_3
- db HS_SILPH_CO_7F_4
- db HS_SILPH_CO_8F_1
- db HS_SILPH_CO_8F_2
- db HS_SILPH_CO_8F_3
- db HS_SILPH_CO_9F_1
- db HS_SILPH_CO_9F_2
- db HS_SILPH_CO_9F_3
- db HS_SILPH_CO_10F_1
- db HS_SILPH_CO_10F_2
- db HS_SILPH_CO_11F_1
- db HS_SILPH_CO_11F_2
- db HS_SILPH_CO_11F_3
- db -1 ; end
-
-SilphCo11Script_621c4:
+SilphCo11Script_62185:
xor a
ld [wJoyIgnore], a
-
-SilphCo11Script_621c8:
+SilphCo11Script_62189:
ld [wSilphCo11FCurScript], a
ld [wCurMapScript], a
ret
@@ -161,10 +86,26 @@ SilphCo11F_ScriptPointers:
dw SilphCo11Script3
dw SilphCo11Script4
dw SilphCo11Script5
+ dw SilphCo11Script6
+ dw SilphCo11Script7
+ dw SilphCo11Script8
+ dw SilphCo11Script9
+ dw SilphCo11Script10
+ dw SilphCo11Script11
+ dw SilphCo11Script12
+ dw SilphCo11Script13
+ dw SilphCo11Script14
SilphCo11Script0:
- CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+ CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0
+ call z, SilphCo11Script_6229c
+ CheckEvent EVENT_782
ret nz
+ CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
+ call z, SilphCo11Script_621c5
+ ret
+
+SilphCo11Script_621c5:
ld hl, CoordsData_62211
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
@@ -182,8 +123,9 @@ SilphCo11Script0:
call SetSpriteMovementBytesToFF
ld de, MovementData_62216
call MoveSprite
- ld a, $3
- jp SilphCo11Script_621c8
+ ld a, $4
+ call SilphCo11Script_62189
+ ret
CoordsData_62211:
dbmapcoord 6, 13
@@ -196,18 +138,18 @@ MovementData_62216:
db NPC_MOVEMENT_DOWN
db -1 ; end
-SilphCo11Script_6221a:
+SilphCo11Script_621ff:
ld [wPlayerMovingDirection], a
- ld a, $3
- ldh [hSpriteIndex], a
ld a, b
- ldh [hSpriteFacingDirection], a
- jp SetSpriteFacingDirectionAndDelay
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+ ld a, $2
+ ld [wSpriteStateData1 + 3 * $10 + 1], a
+ ret
-SilphCo11Script5:
+SilphCo11Script3:
ld a, [wIsInBattle]
cp $ff
- jp z, SilphCo11Script_621c4
+ jp z, SilphCo11Script_62185
ld a, [wcf0d]
cp $1
jr z, .asm_6223c
@@ -218,23 +160,23 @@ SilphCo11Script5:
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62240
- call SilphCo11Script_6221a
+ call SilphCo11Script_621ff
ld a, $f0
ld [wJoyIgnore], a
- ld a, $6
+ ld a, $7
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call GBFadeOutToBlack
- call SilphCo11Script_6216d
+ farcall Func_f25a0
call UpdateSprites
call Delay3
call GBFadeInFromBlack
SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI
xor a
ld [wJoyIgnore], a
- jp SilphCo11Script_621c8
+ jp SilphCo11Script_62189
-SilphCo11Script3:
+SilphCo11Script4:
ld a, [wd730]
bit 0, a
ret nz
@@ -251,26 +193,275 @@ SilphCo11Script3:
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
.asm_62288
- call SilphCo11Script_6221a
+ call SilphCo11Script_621ff
call Delay3
- ld a, $4
- jp SilphCo11Script_621c8
-
-SilphCo11Script4:
+ xor a
+ ld [wJoyIgnore], a
ld hl, wd72d
set 6, [hl]
set 7, [hl]
- ld hl, SilphCo10Text_62330
- ld de, SilphCo10Text_62330
+ ld hl, SilphCo10Text_62528
+ ld de, SilphCo10Text_62528
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
+ ld a, $3
+ jp SilphCo11Script_62189
+
+SilphCo11Script_6229c:
+ ld a, [wYCoord]
+ cp $3
+ ret nz
+ ld a, [wXCoord]
+ cp $4
+ ret nc
+ ResetEvents EVENT_780, EVENT_781
+ ld a, [wXCoord]
+ cp $3
+ jr z, .asm_622c3
+ SetEventReuseHL EVENT_780
+ ld a, [wXCoord]
+ cp $2
+ jr z, .asm_622c3
+ ResetEventReuseHL EVENT_780
+ SetEventReuseHL EVENT_781
+.asm_622c3
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $ff
ld [wJoyIgnore], a
+ SetEvent EVENT_782
ld a, $5
- jp SilphCo11Script_621c8
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11MovementData_622f5:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_622fb:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62300:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62305:
+ db $5
+ db $5
+ db $5
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_6230b:
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11MovementData_62311:
+ db $5
+ db $5
+ db $5
+ db $6
+ db $5
+ db $5
+ db $ff
+
+SilphCo11Script5:
+ ld de, SilphCo11MovementData_622f5
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6232d
+ ld de, SilphCo11MovementData_62300
+ cp $1
+ jr z, .asm_6232d
+ ld de, SilphCo11MovementData_6230b
+.asm_6232d
+ ld a, $4
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $6
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script6:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+SilphCo11Script7:
+ ld a, $2
+ ld [wSpriteStateData1 + 4 * $10 + 1], a
+ ld hl, wSpriteStateData1 + 4 * $10 + 9
+ ld [hl], SPRITE_FACING_RIGHT
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6235e
+ ld [hl], SPRITE_FACING_UP
+.asm_6235e
+ call Delay3
+ ld a, $fc
+ ld [wJoyIgnore], a
+SilphCo11Script8:
+ ld de, SilphCo11MovementData_622fb
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_6237b
+ ld de, SilphCo11MovementData_62305
+ cp $1
+ jr z, .asm_6237b
+ ld de, SilphCo11MovementData_62311
+.asm_6237b
+ ld a, $6
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $9
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script9:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $fc
+ ld [wJoyIgnore], a
+SilphCo11Script10:
+ ld a, $2
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ ld hl, wSpriteStateData1 + 6 * $10 + 9
+ ld [hl], SPRITE_FACING_UP
+ CheckEitherEventSet EVENT_780, EVENT_781
+ and a
+ jr z, .asm_623b1
+ ld [hl], SPRITE_FACING_LEFT
+.asm_623b1
+ call Delay3
+ ld a, $9
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+SilphCo11Script11:
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, SilphCo11Text_624c2
+ ld de, SilphCo11Text_624c2
+ call SaveEndBattleTextPointers
+ ld a, OPP_ROCKET
+ ld [wCurOpponent], a
+ ld a, $2d
+ ld [wTrainerNo], a
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ld a, $c
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script12:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, SilphCo11Script_62185
+ ld a, $2
+ ld [wSpriteStateData1 + 4 * $10 + 1], a
+ ld [wSpriteStateData1 + 6 * $10 + 1], a
+ xor a
+ ld [wSpriteStateData1 + 4 * $10 + 9], a
+ ld [wSpriteStateData1 + 6 * $10 + 9], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $a
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call StopAllMusic
+ ld c, BANK(Music_MeetJessieJames)
+ ld a, MUSIC_MEET_JESSIE_JAMES
+ call PlayMusic
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, $d
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script13:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ call GBFadeOutToBlack
+ ld a, HS_SILPH_CO_11F_JAMES
+ call SilphCo11Script_6246d
+ ld a, HS_SILPH_CO_11F_JESSIE
+ call SilphCo11Script_6246d
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $e
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script14:
+ call PlayDefaultMusic
+ xor a
+ ldh [hJoyHeld], a
+ ld [wJoyIgnore], a
+ ResetEvent EVENT_782
+ SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0
+ ld a, $0
+ call SilphCo11Script_62189
+ ret
+
+SilphCo11Script_6245e:
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ call UpdateSprites
+ call Delay3
+ ret
+
+SilphCo11Script_6246d:
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ret
SilphCo11F_TextPointers:
dw SilphCo11Text1
@@ -279,13 +470,48 @@ SilphCo11F_TextPointers:
dw SilphCo11Text4
dw SilphCo11Text5
dw SilphCo11Text6
+ dw SilphCo11Text7
+ dw SilphCo11Text8
+ dw SilphCo11Text9
+ dw SilphCo11Text10
SilphCo11TrainerHeader0:
- trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11BattleText1, SilphCo11EndBattleText1, SilphCo11AfterBattleText1
-SilphCo11TrainerHeader1:
- trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11BattleText2, SilphCo11EndBattleText2, SilphCo11AfterBattleText2
+ trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11Trainer1BattleText, SilphCo11Trainer1EndBattleText, SilphCo11Trainer1AfterBattleText
db -1 ; end
+SilphCo11Text4:
+SilphCo11Text6:
+SilphCo11Text8:
+ text_far _SilphCoJessieJamesText1
+ text_asm
+ ld c, 10
+ call DelayFrames
+ ld a, $4
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, EXCLAMATION_BUBBLE
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+SilphCo11Text9:
+ text_far _SilphCoJessieJamesText2
+ text_end
+
+SilphCo11Text_624c2:
+ text_far _SilphCoJessieJamesText3
+ text_end
+
+SilphCo11Text10:
+ text_far _SilphCoJessieJamesText4
+ text_asm
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
SilphCo11Text1:
text_asm
CheckEvent EVENT_GOT_MASTER_BALL
@@ -334,58 +560,28 @@ SilphCo11Text3:
text_far _SilphCo11Text3
text_end
-SilphCo10Text_62330:
+SilphCo10Text_62528:
text_far _SilphCo10Text_62330
text_end
-SilphCo11Text6:
+SilphCo11Text7:
text_far _SilphCo10Text_62335
text_end
-SilphCo11Text4:
- text_asm
- ld hl, SilphCo11TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
-SilphCo11BattleText1:
- text_far _SilphCo11BattleText1
- text_end
-
-SilphCo11EndBattleText1:
- text_far _SilphCo11EndBattleText1
- text_end
-
-SilphCo11AfterBattleText1:
- text_far _SilphCo11AfterBattleText1
- text_end
-
SilphCo11Text5:
text_asm
- ld hl, SilphCo11TrainerHeader1
+ ld hl, SilphCo11TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-SilphCo11BattleText2:
+SilphCo11Trainer1BattleText:
text_far _SilphCo11BattleText2
text_end
-SilphCo11EndBattleText2:
+SilphCo11Trainer1EndBattleText:
text_far _SilphCo11EndBattleText2
text_end
-SilphCo11AfterBattleText2:
+SilphCo11Trainer1AfterBattleText:
text_far _SilphCo11AfterBattleText2
text_end
-
-SilphCo10Text_6236c:
- text_asm
- ld hl, SilphCo10Text_6237b
- call PrintText
- ld a, PORYGON
- call DisplayPokedex
- jp TextScriptEnd
-
-SilphCo10Text_6237b:
- text_far _SilphCo10Text_6237b
- text_end
diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm
new file mode 100755
index 00000000..c8fd9c3e
--- /dev/null
+++ b/scripts/SilphCo11F_2.asm
@@ -0,0 +1,76 @@
+Func_f25a0::
+ ld hl, MissableObjects_f25ce
+.asm_f25a3
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_f25b4
+ push hl
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ pop hl
+ jr .asm_f25a3
+
+.asm_f25b4
+ ld hl, MissableObjects_f25c7
+.asm_f25b7
+ ld a, [hli]
+ cp $ff
+ ret z
+ push hl
+ ld [wMissableObjectIndex], a
+ predef ShowObject
+ pop hl
+ jr .asm_f25b7
+
+MissableObjects_f25c7:
+ db HS_SAFFRON_CITY_8
+ db HS_SAFFRON_CITY_9
+ db HS_SAFFRON_CITY_A
+ db HS_SAFFRON_CITY_B
+ db HS_SAFFRON_CITY_C
+ db HS_SAFFRON_CITY_D
+ db $FF
+
+MissableObjects_f25ce:
+ db HS_SAFFRON_CITY_1
+ db HS_SAFFRON_CITY_2
+ db HS_SAFFRON_CITY_3
+ db HS_SAFFRON_CITY_4
+ db HS_SAFFRON_CITY_5
+ db HS_SAFFRON_CITY_6
+ db HS_SAFFRON_CITY_7
+ db HS_SAFFRON_CITY_E
+ db HS_SAFFRON_CITY_F
+ db HS_SILPH_CO_2F_2
+ db HS_SILPH_CO_2F_3
+ db HS_SILPH_CO_2F_4
+ db HS_SILPH_CO_2F_5
+ db HS_SILPH_CO_3F_1
+ db HS_SILPH_CO_3F_2
+ db HS_SILPH_CO_4F_1
+ db HS_SILPH_CO_4F_2
+ db HS_SILPH_CO_4F_3
+ db HS_SILPH_CO_5F_1
+ db HS_SILPH_CO_5F_2
+ db HS_SILPH_CO_5F_3
+ db HS_SILPH_CO_5F_4
+ db HS_SILPH_CO_6F_1
+ db HS_SILPH_CO_6F_2
+ db HS_SILPH_CO_6F_3
+ db HS_SILPH_CO_7F_1
+ db HS_SILPH_CO_7F_2
+ db HS_SILPH_CO_7F_3
+ db HS_SILPH_CO_7F_4
+ db HS_SILPH_CO_8F_1
+ db HS_SILPH_CO_8F_2
+ db HS_SILPH_CO_8F_3
+ db HS_SILPH_CO_9F_1
+ db HS_SILPH_CO_9F_2
+ db HS_SILPH_CO_9F_3
+ db HS_SILPH_CO_10F_1
+ db HS_SILPH_CO_10F_2
+ db HS_SILPH_CO_11F_1
+ db HS_SILPH_CO_11F_JAMES
+ db HS_SILPH_CO_11F_2
+ db HS_SILPH_CO_11F_JESSIE
+ db $ff
diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm
index 59f90f0e..b32f967b 100755
--- a/scripts/SilphCo7F.asm
+++ b/scripts/SilphCo7F.asm
@@ -130,9 +130,7 @@ SilphCo7Script0:
ld [wJoyIgnore], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -186,21 +184,11 @@ SilphCo7Script3:
ld a, OPP_RIVAL2
ld [wCurOpponent], a
ld a, [wRivalStarter]
- cp STARTER2
- jr nz, .asm_51cb6
- ld a, $7
- jr .asm_51cc0
-.asm_51cb6
- cp STARTER3
- jr nz, .asm_51cbe
- ld a, $8
- jr .asm_51cc0
-.asm_51cbe
- ld a, $9
-.asm_51cc0
+ add 4
ld [wTrainerNo], a
ld a, $4
- jp SilphCo7Text_51c10
+ call SilphCo7Text_51c10
+ ret
SilphCo7Script4:
ld a, [wIsInBattle]
@@ -219,9 +207,7 @@ SilphCo7Script4:
ld a, $f
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, SFX_STOP_ALL_MUSIC
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
farcall Music_RivalAlternateStart
ld de, MovementData_51d1d
ld a, [wcf0d]
diff --git a/scripts/TradeCenter.asm b/scripts/TradeCenter.asm
index dbed79c1..dbed79c1 100755..100644
--- a/scripts/TradeCenter.asm
+++ b/scripts/TradeCenter.asm
diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm
index 629bb0c8..8a93b6da 100755
--- a/scripts/VermilionCity.asm
+++ b/scripts/VermilionCity.asm
@@ -1,5 +1,7 @@
VermilionCity_Script:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, wCurrentMapScriptFlags
bit 6, [hl]
res 6, [hl]
@@ -11,11 +13,24 @@ VermilionCity_Script:
call nz, .setFirstLockTrashCanIndex
ld hl, VermilionCity_ScriptPointers
ld a, [wVermilionCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ call .vermilionCityScript_19869
+ ret
+
+.vermilionCityScript_19869
+ CheckEventHL EVENT_152
+ ret nz
+ CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER
+ ret z
+ SetEventReuseHL EVENT_152
+ ret
.setFirstLockTrashCanIndex
call Random
+ ldh a, [hRandomAdd]
+ ld b, a
ldh a, [hRandomSub]
+ adc b
and $e
ld [wFirstLockTrashCanIndex], a
ret
@@ -40,10 +55,10 @@ VermilionCity_ScriptPointers:
VermilionCityScript0:
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
- ret nz
+ jr nz, .return
ld hl, SSAnneTicketCheckCoords
call ArePlayerCoordsInArray
- ret nc
+ jr nc, .return
xor a
ldh [hJoyHeld], a
ld [wcf0d], a
@@ -67,6 +82,9 @@ VermilionCityScript0:
ld [wVermilionCityCurScript], a
ret
+.return
+ ret
+
SSAnneTicketCheckCoords:
dbmapcoord 18, 30
db -1 ; end
@@ -122,11 +140,12 @@ VermilionCity_TextPointers:
dw VermilionCityText6
dw VermilionCityText7
dw VermilionCityText8
+ dw VermilionCityText9
dw MartSignText
dw PokeCenterSignText
- dw VermilionCityText11
dw VermilionCityText12
dw VermilionCityText13
+ dw VermilionCityText14
VermilionCityText1:
text_far _VermilionCityText1
@@ -225,33 +244,43 @@ VermilionCityText5:
ld a, MACHOP
call PlayCry
call WaitForSoundToFinish
- ld hl, VermilionCityText14
+ ld hl, VermilionCityText15
ret
-VermilionCityText14:
- text_far _VermilionCityText14
+VermilionCityText15:
+ text_far _VermilionCityText15
text_end
VermilionCityText6:
text_far _VermilionCityText6
text_end
-VermilionCityText7:
- text_far _VermilionCityText7
- text_end
-
VermilionCityText8:
- text_far _VermilionCityText8
- text_end
+ text_asm
+ farcall Func_f1a8a
+ jp TextScriptEnd
-VermilionCityText11:
- text_far _VermilionCityText11
- text_end
+VermilionCityText9:
+ text_asm
+ farcall Func_f1a96
+ jp TextScriptEnd
VermilionCityText12:
- text_far _VermilionCityText12
- text_end
+ text_asm
+ farcall Func_f1aa2
+ jp TextScriptEnd
VermilionCityText13:
- text_far _VermilionCityText13
- text_end
+ text_asm
+ farcall Func_f1aae
+ jp TextScriptEnd
+
+VermilionCityText14:
+ text_asm
+ farcall Func_f1aba
+ jp TextScriptEnd
+
+VermilionCityText7:
+ text_asm
+ farcall Func_f1a0f
+ jp TextScriptEnd
diff --git a/scripts/VermilionCity2.asm b/scripts/VermilionCity2.asm
new file mode 100755
index 00000000..93aa8df5
--- /dev/null
+++ b/scripts/VermilionCity2.asm
@@ -0,0 +1,111 @@
+Func_f1a0f::
+ CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ jr nz, .asm_f1a69
+ ld a, [wBeatGymFlags]
+ bit 2, a ; THUNDERBADGE
+ jr nz, .asm_f1a24
+ ld hl, OfficerJennyText1
+ call PrintText
+ ret
+
+.asm_f1a24
+ ld hl, OfficerJennyText2
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1a62
+ ld a, SQUIRTLE
+ ld [wd11e], a
+ ld [wcf91], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ lb bc, SQUIRTLE, 10
+ call GivePokemon
+ ret nc
+ ld a, [wAddedToParty]
+ and a
+ call z, WaitForTextScrollButtonPress
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OfficerJennyText3
+ call PrintText
+ SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY
+ ret
+
+.asm_f1a62
+ ld hl, OfficerJennyText4
+ call PrintText
+ ret
+
+.asm_f1a69
+ ld hl, OfficerJennyText5
+ call PrintText
+ ret
+
+OfficerJennyText1:
+ text_far _OfficerJennyText1
+ text_end
+
+OfficerJennyText2:
+ text_far _OfficerJennyText2
+ text_end
+
+OfficerJennyText3:
+ text_far _OfficerJennyText3
+ text_waitbutton
+ text_end
+
+OfficerJennyText4:
+ text_far _OfficerJennyText4
+ text_end
+
+OfficerJennyText5:
+ text_far _OfficerJennyText5
+ text_end
+
+Func_f1a8a::
+ ld hl, VermilionCityText_f1a91
+ call PrintText
+ ret
+
+VermilionCityText_f1a91:
+ text_far _VermilionCityText8
+ text_end
+
+Func_f1a96::
+ ld hl, VermilionCityText_f1a9d
+ call PrintText
+ ret
+
+VermilionCityText_f1a9d:
+ text_far _VermilionCityText9
+ text_end
+
+Func_f1aa2::
+ ld hl, VermilionCityText_f1aa9
+ call PrintText
+ ret
+
+VermilionCityText_f1aa9:
+ text_far _VermilionCityText12
+ text_end
+
+Func_f1aae::
+ ld hl, VermilionCityText_f1ab5
+ call PrintText
+ ret
+
+VermilionCityText_f1ab5:
+ text_far _VermilionCityText13
+ text_end
+
+Func_f1aba::
+ ld hl, VermilionCityText_f1ac1
+ call PrintText
+ ret
+
+VermilionCityText_f1ac1:
+ text_far _VermilionCityText14
+ text_end
diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm
index 728675eb..0263669f 100755
--- a/scripts/VermilionDock.asm
+++ b/scripts/VermilionDock.asm
@@ -38,10 +38,9 @@ VermilionDock_Script:
VermilionDock_1db9b:
SetEventForceReuseHL EVENT_SS_ANNE_LEFT
- ld a, SFX_STOP_ALL_MUSIC
+ ld a, $ff
ld [wJoyIgnore], a
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_Surfing)
ld a, MUSIC_SURFING
call PlayMusic
@@ -63,6 +62,7 @@ VermilionDock_1db9b:
ldh [hAutoBGTransferEnabled], a
ld [wSSAnneSmokeDriftAmount], a
ldh [rOBP1], a
+ call UpdateGBCPal_OBP1
ld a, 88
ld [wSSAnneSmokeX], a
ld hl, wMapViewVRAMPointer
@@ -124,7 +124,7 @@ VermilionDock_1db9b:
VermilionDock_AnimSmokePuffDriftRight:
push bc
push de
- ld hl, wOAMBuffer + $11
+ ld hl, wOAMBuffer + 4 * $4 + 1 ; x coord
ld a, [wSSAnneSmokeDriftAmount]
swap a
ld c, a
diff --git a/scripts/VermilionPokecenter.asm b/scripts/VermilionPokecenter.asm
index 65b5a3df..dd3b514e 100755
--- a/scripts/VermilionPokecenter.asm
+++ b/scripts/VermilionPokecenter.asm
@@ -7,6 +7,7 @@ VermilionPokecenter_TextPointers:
dw VermilionPokecenterText2
dw VermilionPokecenterText3
dw VermilionTradeNurseText
+ dw VermilionPokecenterText5
VermilionHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ VermilionPokecenterText3:
VermilionTradeNurseText:
script_cable_club_receptionist
+
+VermilionPokecenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/VermilionTradeHouse.asm b/scripts/VermilionTradeHouse.asm
index 7fdb9f40..6cdd849a 100755
--- a/scripts/VermilionTradeHouse.asm
+++ b/scripts/VermilionTradeHouse.asm
@@ -5,8 +5,5 @@ VermilionTradeHouse_TextPointers:
dw VermilionHouse3Text1
VermilionHouse3Text1:
- text_asm
- ld a, TRADE_FOR_DUX
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
- jp TextScriptEnd
+ text_far TeachingHMsText
+ text_end
diff --git a/scripts/VictoryRoad1F.asm b/scripts/VictoryRoad1F.asm
index b70f0dd4..9d566e6f 100755
--- a/scripts/VictoryRoad1F.asm
+++ b/scripts/VictoryRoad1F.asm
@@ -29,6 +29,9 @@ VictoryRoad1Script0:
ld hl, CoordsData_5da5c
call CheckBoulderCoords
jp nc, CheckFightingMapTrainers
+ ldh a, [hSpriteIndex]
+ cp $f
+ jp z, CheckFightingMapTrainers
ld hl, wCurrentMapScriptFlags
set 5, [hl]
SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
diff --git a/scripts/VictoryRoad2F.asm b/scripts/VictoryRoad2F.asm
index 9622206c..e5255674 100755
--- a/scripts/VictoryRoad2F.asm
+++ b/scripts/VictoryRoad2F.asm
@@ -17,7 +17,6 @@ VictoryRoad2F_Script:
VictoryRoad2Script_517c4:
ResetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
-
VictoryRoad2Script_517c9:
CheckEvent EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
jr z, .asm_517da
@@ -31,7 +30,6 @@ VictoryRoad2Script_517c9:
ret z
ld a, $1d
lb bc, 7, 11
-
VictoryRoad2Script_517e2:
ld [wNewTileBlockID], a
predef ReplaceTileBlock
@@ -46,6 +44,9 @@ VictoryRoad2Script0:
ld hl, CoordsData_51816
call CheckBoulderCoords
jp nc, CheckFightingMapTrainers
+ ldh a, [hSpriteIndexOrTextID]
+ cp $f
+ jp z, CheckFightingMapTrainers
EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
ld a, [wCoordIndex]
cp $2
diff --git a/scripts/VictoryRoad3F.asm b/scripts/VictoryRoad3F.asm
index 7febdd3d..f63a71e5 100755
--- a/scripts/VictoryRoad3F.asm
+++ b/scripts/VictoryRoad3F.asm
@@ -36,6 +36,9 @@ VictoryRoad3Script0:
ld a, [wCoordIndex]
cp $1
jr nz, .asm_449dc
+ ldh a, [hSpriteIndexOrTextID]
+ cp $f ; Pikachu
+ jp z, .asm_449fe
ld hl, wCurrentMapScriptFlags
set 5, [hl]
SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1
diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm
index 96e58a19..d960b9cb 100755
--- a/scripts/ViridianCity.asm
+++ b/scripts/ViridianCity.asm
@@ -2,19 +2,34 @@ ViridianCity_Script:
call EnableAutoTextBoxDrawing
ld hl, ViridianCity_ScriptPointers
ld a, [wViridianCityCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ViridianCity_ScriptPointers:
dw ViridianCityScript0
dw ViridianCityScript1
dw ViridianCityScript2
dw ViridianCityScript3
+ dw ViridianCityScript4
+ dw ViridianCityScript5
+ dw ViridianCityScript6
+ dw ViridianCityScript7
+ dw ViridianCityScript8
+ dw ViridianCityScript9
+ dw ViridianCityScript10
ViridianCityScript0:
- call ViridianCityScript_1900b
- jp ViridianCityScript_1903d
+ call ViridianCityScript_1905b
+ call ViridianCityScript_190ab
+ ret
+
+ViridianCityScript1:
+ call ViridianCityScript_19162
+ViridianCityScript2:
+ call ViridianCityScript_1905b
+ ret
-ViridianCityScript_1900b:
+ViridianCityScript_1905b:
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
ret nz
ld a, [wObtainedBadges]
@@ -29,19 +44,32 @@ ViridianCityScript_1900b:
ld a, [wXCoord]
cp 32
ret nz
- ld a, $e
+ ld a, $f
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
xor a
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld [wJoyIgnore], a
ldh [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ ld a, $6
ld [wViridianCityCurScript], a
ret
-ViridianCityScript_1903d:
- CheckEvent EVENT_GOT_POKEDEX
+ViridianCityScript6:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
ret nz
+ call Delay3
+ ld a, $2
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript_190ab:
ld a, [wYCoord]
cp 9
ret nz
@@ -53,12 +81,31 @@ ViridianCityScript_1903d:
call DisplayTextID
xor a
ldh [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ call ViridianCityScript_1914d
+ ld a, $5
ld [wViridianCityCurScript], a
ret
-ViridianCityScript1:
+ViridianCityScript3:
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ ResetEvent EVENT_02F
+ ld a, $4
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript_190db:
+ xor a
+ ld [wListScrollOffset], a
+ ld a, BATTLE_TYPE_OLD_MAN
+ ld [wBattleType], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
+ ld a, RATTATA
+ ld [wCurOpponent], a
+ ret
+
+ViridianCityScript_190ef:
ld a, [wSprite03StateData1YPixels]
ldh [hSpriteScreenYCoord], a
ld a, [wSprite03StateData1XPixels]
@@ -67,21 +114,26 @@ ViridianCityScript1:
ldh [hSpriteMapYCoord], a
ld a, [wSprite03StateData2MapX]
ldh [hSpriteMapXCoord], a
- xor a
- ld [wListScrollOffset], a
+ ret
- ; set up battle for Old Man
- ld a, BATTLE_TYPE_OLD_MAN
+ViridianCityScript4:
+ call ViridianCityScript_1912a
+ call UpdateSprites
+ call Delay3
+ SetEvent EVENT_02E
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $10
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
ld [wBattleType], a
- ld a, 5
- ld [wCurEnemyLVL], a
- ld a, WEEDLE
- ld [wCurOpponent], a
+ ld [wJoyIgnore], a
ld a, $2
ld [wViridianCityCurScript], a
ret
-ViridianCityScript2:
+ViridianCityScript_1912a:
ldh a, [hSpriteScreenYCoord]
ld [wSprite03StateData1YPixels], a
ldh a, [hSpriteScreenXCoord]
@@ -90,30 +142,18 @@ ViridianCityScript2:
ld [wSprite03StateData2MapY], a
ldh a, [hSpriteMapXCoord]
ld [wSprite03StateData2MapX], a
- call UpdateSprites
- call Delay3
- xor a
- ld [wJoyIgnore], a
- ld a, $f
- ldh [hSpriteIndexOrTextID], a
- call DisplayTextID
- xor a
- ld [wBattleType], a
- ld [wJoyIgnore], a
- ld a, $0
- ld [wViridianCityCurScript], a
ret
-ViridianCityScript3:
+ViridianCityScript5:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
- ld a, 0
+ ld a, $0
ld [wViridianCityCurScript], a
ret
-ViridianCityScript_190cf:
+ViridianCityScript_1914d:
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
@@ -124,204 +164,200 @@ ViridianCityScript_190cf:
ld [wJoyIgnore], a
ret
+ViridianCityScript_19162:
+ CheckEvent EVENT_02D
+ ret nz
+ ld a, [wYCoord]
+ cp 9
+ ret nz
+ ld a, [wXCoord]
+ cp 19
+ ret nz
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ ld a, SPRITE_FACING_RIGHT
+ ldh [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld a, $8
+ ld [wSpritePlayerStateData1FacingDirection], a
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ret
+
+ViridianCityScript7:
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ SetEvent EVENT_02F
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ld a, $8
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript8:
+ call ViridianCityScript_1912a
+ call UpdateSprites
+ call Delay3
+ SetEvent EVENT_02D
+ ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT
+ ld [wJoyIgnore], a
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wBattleType], a
+ dec a
+ ld [wJoyIgnore], a
+ ld a, $9
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript9:
+ ld de, ViridianCityOldManMovementData2
+ ld a, [wXCoord]
+ cp 19
+ jr z, .asm_191e4
+ callfar Func_f1a01
+ ld de, ViridianCityOldManMovementData1
+.asm_191e4
+ ld a, $8
+ ldh [hSpriteIndexOrTextID], a
+ call MoveSprite
+ ld a, $a
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityOldManMovementData1:
+ db NPC_MOVEMENT_RIGHT
+ViridianCityOldManMovementData2:
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_DOWN
+ db $ff
+
+ViridianCityScript10:
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ ld a, $3
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $2
+ ld [wViridianCityCurScript], a
+ ret
+
ViridianCity_TextPointers:
- dw ViridianCityText1
- dw ViridianCityText2
- dw ViridianCityText3
- dw ViridianCityText4
- dw ViridianCityText5
- dw ViridianCityText6
- dw ViridianCityText7
- dw ViridianCityText8
- dw ViridianCityText9
- dw ViridianCityText10
+ dw ViridianCityText_0
+ dw ViridianCityText_1
+ dw ViridianCityText_2
+ dw ViridianCityText_3
+ dw ViridianCityText_4
+ dw ViridianCityText_5
+ dw ViridianCityText_6
+ dw ViridianCityText_7
+ dw ViridianCityText_8
+ dw ViridianCityText_9
+ dw ViridianCityText_10
dw MartSignText
dw PokeCenterSignText
- dw ViridianCityText13
- dw ViridianCityText14
- dw ViridianCityText15
+ dw ViridianCityText_11
+ dw ViridianCityText_12
+ dw ViridianCityText_13
-ViridianCityText1:
- text_far _ViridianCityText1
- text_end
-
-ViridianCityText2:
+ViridianCityText_0:
text_asm
- ld a, [wObtainedBadges]
- cp $ff ^ (1 << BIT_EARTHBADGE)
- ld hl, ViridianCityText_19127
- jr z, .done
- CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
- jr nz, .done
- ld hl, ViridianCityText_19122
-.done
- call PrintText
+ farcall Func_f18bb
jp TextScriptEnd
-ViridianCityText_19122:
- text_far _ViridianCityText_19122
- text_end
-
-ViridianCityText_19127:
- text_far _ViridianCityText_19127
- text_end
-
-ViridianCityText3:
+ViridianCityText_1:
text_asm
- ld hl, ViridianCityText_1914d
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .no
- ld hl, ViridianCityText_19157
- call PrintText
- jr .done
-.no
- ld hl, ViridianCityText_19152
- call PrintText
-.done
+ farcall Func_f18c7
jp TextScriptEnd
-ViridianCityText_1914d:
- text_far _ViridianCityText_1914d
- text_end
-
-ViridianCityText_19152:
- text_far _ViridianCityText_19152
- text_end
-
-ViridianCityText_19157:
- text_far _ViridianCityText_19157
- text_end
-
-ViridianCityText4:
+ViridianCityText_2:
text_asm
- CheckEvent EVENT_GOT_POKEDEX
- jr nz, .gotPokedex
- ld hl, ViridianCityText_19175
- call PrintText
- jr .done
-.gotPokedex
- ld hl, ViridianCityText_1917a
- call PrintText
-.done
+ farcall Func_f18e9
jp TextScriptEnd
-ViridianCityText_19175:
- text_far _ViridianCityText_19175
- text_end
-
-ViridianCityText_1917a:
- text_far _ViridianCityText_1917a
- text_end
-
-ViridianCityText5:
+ViridianCityText_3:
text_asm
- ld hl, ViridianCityText_19191
- call PrintText
- call ViridianCityScript_190cf
- ld a, $3
- ld [wViridianCityCurScript], a
+ farcall Func_f1911
jp TextScriptEnd
-ViridianCityText_19191:
- text_far _ViridianCityText_19191
- text_end
-
-ViridianCityText6:
+ViridianCityText_4:
text_asm
- CheckEvent EVENT_GOT_TM42
- jr nz, .got_item
- ld hl, ViridianCityText_191ca
- call PrintText
- lb bc, TM_DREAM_EATER, 1
- call GiveItem
- jr nc, .bag_full
- ld hl, ReceivedTM42Text
- call PrintText
- SetEvent EVENT_GOT_TM42
- jr .done
-.bag_full
- ld hl, TM42NoRoomText
- call PrintText
- jr .done
-.got_item
- ld hl, TM42Explanation
- call PrintText
-.done
+ farcall Func_f192c
jp TextScriptEnd
-ViridianCityText_191ca:
- text_far _ViridianCityText_191ca
- text_end
-
-ReceivedTM42Text:
- text_far _ReceivedTM42Text
- sound_get_item_2
- text_end
+ViridianCityText_5:
+ text_asm
+ farcall Func_f194a
+ jp TextScriptEnd
-TM42Explanation:
- text_far _TM42Explanation
- text_end
+ViridianCityText_6:
+ text_asm
+ farcall Func_f198e
+ jp TextScriptEnd
-TM42NoRoomText:
- text_far _TM42NoRoomText
+ViridianCityText_13:
+ text_far _ViridianCityText_19219
text_end
-ViridianCityText7:
+ViridianCityText_7:
text_asm
- ld hl, ViridianCityText_1920a
+ CheckEvent EVENT_02D
+ jr nz, .asm_192a6
+ ld hl, ViridianCityText_192af
call PrintText
ld c, 2
call DelayFrames
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr z, .refused
- ld hl, ViridianCityText_1920f
- call PrintText
- ld a, $1
+ ld a, $7
ld [wViridianCityCurScript], a
- jr .done
-.refused
- ld hl, ViridianCityText_19214
+ jr .asm_192ac
+
+.asm_192a6
+ ld hl, ViridianCityText_192b4
call PrintText
-.done
+.asm_192ac
jp TextScriptEnd
-ViridianCityText_1920a:
+ViridianCityText_192af:
text_far _ViridianCityText_1920a
text_end
-ViridianCityText_1920f:
- text_far _ViridianCityText_1920f
- text_end
-
-ViridianCityText_19214:
- text_far _ViridianCityText_19214
+ViridianCityText_192b4:
+ text_far _OldManTextAfterBattle
text_end
-ViridianCityText15:
- text_far _ViridianCityText_19219
- text_end
-
-ViridianCityText8:
- text_far _ViridianCityText8
- text_end
+ViridianCityText_8:
+ text_asm
+ farcall Func_f19c5
+ jp TextScriptEnd
-ViridianCityText9:
- text_far _ViridianCityText9
- text_end
+ViridianCityText_9:
+ text_asm
+ farcall Func_f19d1
+ jp TextScriptEnd
-ViridianCityText10:
- text_far _ViridianCityText10
- text_end
+ViridianCityText_10:
+ text_asm
+ farcall Func_f19dd
+ jp TextScriptEnd
-ViridianCityText13:
- text_far _ViridianCityText13
- text_end
+ViridianCityText_11:
+ text_asm
+ farcall Func_f19e9
+ jp TextScriptEnd
-ViridianCityText14:
- text_far _ViridianCityText14
- text_end
+ViridianCityText_12:
+ text_asm
+ farcall Func_f19f5
+ jp TextScriptEnd
diff --git a/scripts/ViridianCity2.asm b/scripts/ViridianCity2.asm
new file mode 100755
index 00000000..c2e8254e
--- /dev/null
+++ b/scripts/ViridianCity2.asm
@@ -0,0 +1,215 @@
+Func_f18bb::
+ ld hl, ViridianCityText_f18c2
+ call PrintText
+ ret
+
+ViridianCityText_f18c2:
+ text_far _ViridianCityText1
+ text_end
+
+Func_f18c7::
+ ld hl, ViridianCityText_19127
+ ld a, [wObtainedBadges]
+ cp $ff ^ (1 << BIT_EARTHBADGE)
+ jr z, .done
+ CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
+ jr nz, .done
+ ld hl, ViridianCityText_19122
+.done
+ call PrintText
+ ret
+
+ViridianCityText_19122:
+ text_far _ViridianCityText_19122
+ text_end
+
+ViridianCityText_19127:
+ text_far _ViridianCityText_19127
+ text_end
+
+Func_f18e9::
+ ld hl, ViridianCityText_f1902
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, ViridianCityText_f1907
+ jr nz, .no
+ ld hl, ViridianCityText_f190c
+.no
+ call PrintText
+ ret
+
+ViridianCityText_f1902:
+ text_far _ViridianCityText_1914d
+ text_end
+
+ViridianCityText_f1907:
+ text_far _ViridianCityText_19152
+ text_end
+
+ViridianCityText_f190c:
+ text_far _ViridianCityText_19157
+ text_end
+
+Func_f1911::
+ ld hl, ViridianCityText_f1927
+ CheckEvent EVENT_GOT_POKEDEX
+ jr nz, .gotPokedex
+ ld hl, ViridianCityText_f1922
+.gotPokedex
+ call PrintText
+ ret
+
+ViridianCityText_f1922:
+ text_far _ViridianCityText_19175
+ text_end
+
+ViridianCityText_f1927:
+ text_far _ViridianCityText_1917a
+ text_end
+
+Func_f192c::
+ ld hl, ViridianCityText_f1945
+ call PrintText
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
+ ld a, $5
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityText_f1945:
+ text_far _ViridianCityText_19191
+ text_end
+
+Func_f194a::
+ CheckEvent EVENT_GOT_TM42
+ jr nz, .got_item
+ ld hl, ViridianCityText_191ca
+ call PrintText
+ lb bc, TM_DREAM_EATER, 1
+ call GiveItem
+ jr nc, .bag_full
+ ld hl, ReceivedTM42Text
+ call PrintText
+ SetEvent EVENT_GOT_TM42
+ ret
+.bag_full
+ ld hl, TM42NoRoomText
+ call PrintText
+ ret
+.got_item
+ ld hl, TM42Explanation
+ call PrintText
+ ret
+
+ViridianCityText_191ca:
+ text_far _ViridianCityText_191ca
+ text_end
+
+ReceivedTM42Text:
+ text_far _ReceivedTM42Text
+ sound_get_item_2
+ text_end
+
+TM42Explanation:
+ text_far _TM42Explanation
+ text_end
+
+TM42NoRoomText:
+ text_far _TM42NoRoomText
+ text_end
+
+Func_f198e::
+ ld hl, ViridianCityText_f19b6
+ call PrintText
+ ld c, 2
+ call DelayFrames
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .refused
+ ld hl, ViridianCityText_f19bb
+ call PrintText
+ ld a, $3
+ ld [wViridianCityCurScript], a
+ jr .done
+.refused
+ ld hl, ViridianCityText_f19c0
+ call PrintText
+.done
+ ret
+
+ViridianCityText_f19b6:
+ text_far _OldManAgainText1
+ text_end
+
+ViridianCityText_f19bb:
+ text_far _OldManAgainText2
+ text_end
+
+ViridianCityText_f19c0:
+ text_far _OldManAgainText3
+ text_end
+
+Func_f19c5::
+ ld hl, ViridianCityText_f19cc
+ call PrintText
+ ret
+
+ViridianCityText_f19cc:
+ text_far _ViridianCityText8
+ text_end
+
+Func_f19d1::
+ ld hl, ViridianCityText_f19d8
+ call PrintText
+ ret
+
+ViridianCityText_f19d8:
+ text_far _ViridianCityText9
+ text_end
+
+Func_f19dd::
+ ld hl, ViridianCityText_f19e4
+ call PrintText
+ ret
+
+ViridianCityText_f19e4:
+ text_far _ViridianCityText10
+ text_end
+
+Func_f19e9::
+ ld hl, ViridianCityText_f19f0
+ call PrintText
+ ret
+
+ViridianCityText_f19f0:
+ text_far _ViridianCityText13
+ text_end
+
+Func_f19f5::
+ ld hl, ViridianCityText_f19fc
+ call PrintText
+ ret
+
+ViridianCityText_f19fc:
+ text_far _ViridianCityText14
+ text_end
+
+
+Func_f1a01::
+ ld hl, Data_f1a0a
+ ld b, SPRITE_FACING_RIGHT
+ call TryApplyPikachuMovementData
+ ret
+
+Data_f1a0a:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/ViridianForest.asm b/scripts/ViridianForest.asm
index a7e4acf8..ca212d8e 100755
--- a/scripts/ViridianForest.asm
+++ b/scripts/ViridianForest.asm
@@ -17,16 +17,18 @@ ViridianForest_TextPointers:
dw ViridianForestText2
dw ViridianForestText3
dw ViridianForestText4
+ dw ViridianForestText5
+ dw ViridianForestText6
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
- dw ViridianForestText8
- dw ViridianForestText9
dw ViridianForestText10
dw ViridianForestText11
dw ViridianForestText12
dw ViridianForestText13
dw ViridianForestText14
+ dw ViridianForestText15
+ dw ViridianForestText16
ViridianForestTrainerHeader0:
trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0, 4, ViridianForestBattleText1, ViridianForestEndBattleText1, ViridianForestAfterBattleText1
@@ -34,6 +36,10 @@ ViridianForestTrainerHeader1:
trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1, 4, ViridianForestBattleText2, ViridianForestEndBattleText2, ViridianForestAfterBattleText2
ViridianForestTrainerHeader2:
trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2, 1, ViridianForestBattleText3, ViridianForestEndBattleText3, ViridianForestAfterBattleText3
+ViridianForestTrainerHeader3:
+ trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3, 0, ViridianForestBattleText4, ViridianForestEndBattleText4, ViridianForestAfterBattleText4
+ViridianForestTrainerHeader4:
+ trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4, 4, ViridianForestBattleText5, ViridianForestEndBattleText5, ViridianForestAfterBattleText5
db -1 ; end
ViridianForestText1:
@@ -43,18 +49,27 @@ ViridianForestText1:
ViridianForestText2:
text_asm
ld hl, ViridianForestTrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText3:
text_asm
ld hl, ViridianForestTrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText4:
text_asm
ld hl, ViridianForestTrainerHeader2
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText5:
+ text_asm
+ ld hl, ViridianForestTrainerHeader3
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText6:
+ text_asm
+ ld hl, ViridianForestTrainerHeader4
+ViridianForestTalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
@@ -94,30 +109,63 @@ ViridianForestAfterBattleText3:
text_far _ViridianFrstAfterBattleText3
text_end
-ViridianForestText8:
- text_far _ViridianForestText8
+ViridianForestBattleText4:
+ text_far _ViridianForestBattleTextPikaGirl
+ text_end
+
+ViridianForestEndBattleText4:
+ text_far _ViridianForestEndBattleTextPikaGirl
+ text_end
+
+ViridianForestAfterBattleText4:
+ text_far _ViridianForestAfterBattleTextPikaGirl
+ text_end
+
+ViridianForestBattleText5:
+ text_far _ViridianForestBattleTextSamurai
text_end
-ViridianForestText9:
- text_far _ViridianForestText9
+ViridianForestEndBattleText5:
+ text_far _ViridianForestEndBattleTextSamurai
+ text_end
+
+ViridianForestAfterBattleText5:
+ text_far _ViridianForestAfterBattleTextSamurai
text_end
ViridianForestText10:
- text_far _ViridianForestText10
+ text_far _ViridianForestText8
text_end
ViridianForestText11:
- text_far _ViridianForestText11
- text_end
+ text_asm
+ ld hl, Func_f2528
+ jp ViridianForestScript_6120d
ViridianForestText12:
- text_far _ViridianForestText12
- text_end
+ text_asm
+ ld hl, Func_f2534
+ jp ViridianForestScript_6120d
ViridianForestText13:
- text_far _ViridianForestText13
- text_end
+ text_asm
+ ld hl, Func_f2540
+ jp ViridianForestScript_6120d
ViridianForestText14:
- text_far _ViridianForestText14
- text_end
+ text_asm
+ ld hl, Func_f254c
+ jp ViridianForestScript_6120d
+
+ViridianForestText15:
+ text_asm
+ ld hl, Func_f2558
+ jp ViridianForestScript_6120d
+
+ViridianForestText16:
+ text_asm
+ ld hl, Func_f2528
+ViridianForestScript_6120d:
+ ld b, BANK(Func_f2528)
+ call Bankswitch
+ jp TextScriptEnd
diff --git a/scripts/ViridianForest2.asm b/scripts/ViridianForest2.asm
new file mode 100755
index 00000000..e5f03ccb
--- /dev/null
+++ b/scripts/ViridianForest2.asm
@@ -0,0 +1,53 @@
+Func_f2528::
+ ld hl, Text_f252f
+ call PrintText
+ ret
+
+Text_f252f:
+ text_far _ViridianForestText9
+ text_end
+
+Func_f2534::
+ ld hl, Text_f253b
+ call PrintText
+ ret
+
+Text_f253b:
+ text_far _ViridianForestText10
+ text_end
+
+Func_f2540::
+ ld hl, Text_f254a
+ call PrintText
+ ret
+
+Text_f254a:
+ text_far _ViridianForestText11
+ text_end
+
+Func_f254c::
+ ld hl, Text_f2553
+ call PrintText
+ ret
+
+Text_f2553:
+ text_far _ViridianForestText12
+ text_end
+
+Func_f2558::
+ ld hl, Text_f255f
+ call PrintText
+ ret
+
+Text_f255f:
+ text_far _ViridianForestText13
+ text_end
+
+Func_f2564:
+ ld hl, ViridianForestText_f256b
+ call PrintText
+ ret
+
+ViridianForestText_f256b:
+ text_far _ViridianForestText14
+ text_end
diff --git a/scripts/ViridianForestSouthGate.asm b/scripts/ViridianForestSouthGate.asm
index 996ac2ae..7ef66b85 100755
--- a/scripts/ViridianForestSouthGate.asm
+++ b/scripts/ViridianForestSouthGate.asm
@@ -1,5 +1,6 @@
ViridianForestSouthGate_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianForestSouthGate_TextPointers:
dw ViridianForestEntranceText1
diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm
index f71cc6ef..2d837018 100755
--- a/scripts/ViridianMart.asm
+++ b/scripts/ViridianMart.asm
@@ -3,7 +3,8 @@ ViridianMart_Script:
call EnableAutoTextBoxDrawing
ld hl, ViridianMart_ScriptPointers
ld a, [wViridianMartCurScript]
- jp CallFunctionInTable
+ call CallFunctionInTable
+ ret
ViridianMartScript_1d47d:
CheckEvent EVENT_OAK_GOT_PARCEL
@@ -57,8 +58,19 @@ ViridianMartScript1:
SetEvent EVENT_GOT_OAKS_PARCEL
ld a, $2
ld [wViridianMartCurScript], a
- ; fallthrough
+ ret
+
ViridianMartScript2:
+ CheckEventHL EVENT_02D
+ ret z
+ CheckAndSetEventReuseHL EVENT_02C
+ ret nz
+ ld a, HS_OLD_MAN
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld a, HS_OLD_MAN_1
+ ld [wMissableObjectIndex], a
+ predef ShowObject
ret
ViridianMart_TextPointers:
diff --git a/scripts/ViridianPokecenter.asm b/scripts/ViridianPokecenter.asm
index 08577678..25f4d637 100755
--- a/scripts/ViridianPokecenter.asm
+++ b/scripts/ViridianPokecenter.asm
@@ -7,6 +7,7 @@ ViridianPokecenter_TextPointers:
dw ViridianPokeCenterText2
dw ViridianPokeCenterText3
dw ViridianTradeNurseText
+ dw ViridianPokeCenterText5
ViridianHealNurseText:
script_pokecenter_nurse
@@ -21,3 +22,8 @@ ViridianPokeCenterText3:
ViridianTradeNurseText:
script_cable_club_receptionist
+
+ViridianPokeCenterText5:
+ text_asm
+ callfar PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/ViridianSchoolHouse.asm b/scripts/ViridianSchoolHouse.asm
index 731e2dac..77dffa38 100755
--- a/scripts/ViridianSchoolHouse.asm
+++ b/scripts/ViridianSchoolHouse.asm
@@ -1,14 +1,22 @@
ViridianSchoolHouse_Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianSchoolHouse_TextPointers:
dw SchoolText1
dw SchoolText2
+ dw SchoolText3
SchoolText1:
text_far _SchoolText1
text_end
SchoolText2:
- text_far _SchoolText2
- text_end
+ text_asm
+ farcall Func_f1c0f
+ jp TextScriptEnd
+
+SchoolText3:
+ text_asm
+ farcall Func_f1c03
+ jp TextScriptEnd
diff --git a/scripts/ViridianSchoolHouse2.asm b/scripts/ViridianSchoolHouse2.asm
new file mode 100755
index 00000000..e5644830
--- /dev/null
+++ b/scripts/ViridianSchoolHouse2.asm
@@ -0,0 +1,17 @@
+Func_f1c03::
+ ld hl, SchoolText_f1c0a
+ call PrintText
+ ret
+
+SchoolText_f1c0a:
+ text_far _SchoolText3
+ text_end
+
+Func_f1c0f::
+ ld hl, SchoolText_f1c16
+ call PrintText
+ ret
+
+SchoolText_f1c16:
+ text_far _SchoolText2
+ text_end