summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/agatha.asm3
-rw-r--r--scripts/beach_house.asm191
-rwxr-xr-xscripts/beach_house2.asm33
-rwxr-xr-xscripts/bikeshop.asm19
-rwxr-xr-xscripts/billshouse.asm253
-rwxr-xr-xscripts/billshouse2.asm158
-rwxr-xr-xscripts/blueshouse.asm14
-rwxr-xr-xscripts/bruno.asm1
-rwxr-xr-xscripts/celadoncity.asm14
-rwxr-xr-xscripts/celadoncity2.asm8
-rwxr-xr-xscripts/celadondiner.asm36
-rwxr-xr-xscripts/celadondiner2.asm38
-rwxr-xr-xscripts/celadongamecorner.asm28
-rwxr-xr-xscripts/celadongamecorner2.asm12
-rwxr-xr-xscripts/celadonmansion1.asm29
-rwxr-xr-xscripts/celadonmansion1_2.asm78
-rwxr-xr-xscripts/celadonmansion3.asm137
-rwxr-xr-xscripts/celadonmansion3_2.asm35
-rwxr-xr-xscripts/celadonmansion4.asm3
-rwxr-xr-xscripts/celadonmansion5.asm3
-rwxr-xr-xscripts/celadonmart1.asm3
-rwxr-xr-xscripts/celadonmart3.asm34
-rwxr-xr-xscripts/celadonmart3_2.asm38
-rwxr-xr-xscripts/celadonmart5.asm3
-rwxr-xr-xscripts/celadonmartroof.asm36
-rwxr-xr-xscripts/celadonpokecenter.asm6
-rwxr-xr-xscripts/ceruleancity.asm27
-rwxr-xr-xscripts/ceruleangym.asm3
-rwxr-xr-xscripts/ceruleanhouse1.asm99
-rwxr-xr-xscripts/ceruleanpokecenter.asm6
-rwxr-xr-xscripts/cinnabargym.asm210
-rwxr-xr-xscripts/cinnabargym2.asm18
-rwxr-xr-xscripts/cinnabargym3.asm64
-rwxr-xr-xscripts/cinnabarisland.asm4
-rwxr-xr-xscripts/cinnabarpokecenter.asm6
-rw-r--r--[-rwxr-xr-x]scripts/colosseum.asm0
-rwxr-xr-xscripts/copycatshouse2f.asm2
-rwxr-xr-xscripts/daycarem.asm29
-rwxr-xr-xscripts/fanclub.asm242
-rwxr-xr-xscripts/fuchsiahouse3.asm2
-rwxr-xr-xscripts/fuchsiamart.asm3
-rwxr-xr-xscripts/fuchsiapokecenter.asm6
-rwxr-xr-xscripts/gary.asm26
-rwxr-xr-xscripts/halloffameroom.asm2
-rwxr-xr-xscripts/indigoplateaulobby.asm6
-rwxr-xr-xscripts/lance.asm13
-rwxr-xr-xscripts/lavenderpokecenter.asm6
-rwxr-xr-xscripts/mansion1.asm2
-rwxr-xr-xscripts/mansion2.asm2
-rwxr-xr-xscripts/mansion3.asm2
-rwxr-xr-xscripts/mansion4.asm2
-rwxr-xr-xscripts/mtmoon1.asm19
-rwxr-xr-xscripts/mtmoon3.asm534
-rwxr-xr-xscripts/mtmoon3_2.asm28
-rwxr-xr-xscripts/mtmoonpokecenter.asm72
-rwxr-xr-xscripts/mtmoonpokecenter2.asm66
-rwxr-xr-xscripts/museum1f.asm197
-rwxr-xr-xscripts/museum1f2.asm211
-rwxr-xr-xscripts/museum2f.asm34
-rwxr-xr-xscripts/oakslab.asm1059
-rwxr-xr-xscripts/oakslab2.asm28
-rwxr-xr-xscripts/pallettown.asm288
-rwxr-xr-xscripts/pewtercity.asm18
-rwxr-xr-xscripts/pewtergym.asm22
-rwxr-xr-xscripts/pewterhouse1.asm3
-rwxr-xr-xscripts/pewtermart.asm2
-rwxr-xr-xscripts/pewterpokecenter.asm79
-rwxr-xr-xscripts/pewterpokecenter2.asm72
-rwxr-xr-xscripts/pokemontower1.asm3
-rwxr-xr-xscripts/pokemontower2.asm26
-rwxr-xr-xscripts/pokemontower2_2.asm12
-rwxr-xr-xscripts/pokemontower7.asm472
-rwxr-xr-xscripts/redshouse1f.asm64
-rwxr-xr-xscripts/redshouse1f2.asm58
-rwxr-xr-xscripts/redshouse2f.asm21
-rwxr-xr-xscripts/rockethideout4.asm423
-rwxr-xr-xscripts/rocktunnelpokecenter.asm10
-rwxr-xr-xscripts/route1.asm46
-rwxr-xr-xscripts/route11gateupstairs.asm4
-rwxr-xr-xscripts/route12gateupstairs.asm2
-rwxr-xr-xscripts/route16gate.asm2
-rwxr-xr-xscripts/route18.asm1
-rwxr-xr-xscripts/route18gate.asm2
-rwxr-xr-xscripts/route19.asm30
-rwxr-xr-xscripts/route1_2.asm53
-rwxr-xr-xscripts/route22.asm137
-rwxr-xr-xscripts/route22_2.asm50
-rwxr-xr-xscripts/route22gate.asm14
-rwxr-xr-xscripts/route23.asm4
-rwxr-xr-xscripts/route24.asm62
-rwxr-xr-xscripts/route25.asm23
-rwxr-xr-xscripts/route5gate.asm2
-rwxr-xr-xscripts/route6.asm6
-rwxr-xr-xscripts/route6gate.asm2
-rwxr-xr-xscripts/route7.asm3
-rwxr-xr-xscripts/route7gate.asm2
-rwxr-xr-xscripts/route8gate.asm4
-rwxr-xr-xscripts/route9.asm24
-rw-r--r--scripts/safarizoneentrance-yellow.asm255
-rwxr-xr-xscripts/safarizoneentrance.asm124
-rwxr-xr-xscripts/safarizoneentrance2.asm251
-rwxr-xr-xscripts/saffronpokecenter.asm6
-rwxr-xr-xscripts/school.asm14
-rwxr-xr-xscripts/school2.asm17
-rwxr-xr-xscripts/seafoamislands4.asm2
-rwxr-xr-xscripts/seafoamislands5.asm5
-rwxr-xr-xscripts/silphco11.asm542
-rwxr-xr-xscripts/silphco11_2.asm76
-rwxr-xr-xscripts/silphco7.asm24
-rwxr-xr-xscripts/ssanne2.asm25
-rwxr-xr-xscripts/ssanne7.asm12
-rwxr-xr-xscripts/ssanne9.asm33
-rwxr-xr-xscripts/ssanne9_2.asm35
-rw-r--r--[-rwxr-xr-x]scripts/tradecenter.asm0
-rwxr-xr-xscripts/unknowndungeon1.asm1
-rwxr-xr-xscripts/unknowndungeon2.asm1
-rwxr-xr-xscripts/unknowndungeon3.asm4
-rwxr-xr-xscripts/vermilioncity.asm75
-rwxr-xr-xscripts/vermilioncity2.asm111
-rwxr-xr-xscripts/vermiliondock.asm6
-rwxr-xr-xscripts/vermiliongym.asm41
-rwxr-xr-xscripts/vermilionhouse3.asm7
-rwxr-xr-xscripts/vermilionpokecenter.asm6
-rwxr-xr-xscripts/victoryroad1.asm3
-rwxr-xr-xscripts/victoryroad2.asm13
-rwxr-xr-xscripts/victoryroad3.asm3
-rwxr-xr-xscripts/viridiancity.asm452
-rwxr-xr-xscripts/viridiancity2.asm218
-rwxr-xr-xscripts/viridianforest.asm100
-rwxr-xr-xscripts/viridianforest2.asm53
-rwxr-xr-xscripts/viridianforestentrance.asm3
-rwxr-xr-xscripts/viridianmart.asm20
-rwxr-xr-xscripts/viridianpokecenter.asm6
133 files changed, 5736 insertions, 3097 deletions
diff --git a/scripts/agatha.asm b/scripts/agatha.asm
index 26068977..6f611071 100755
--- a/scripts/agatha.asm
+++ b/scripts/agatha.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/beach_house.asm b/scripts/beach_house.asm
new file mode 100644
index 00000000..19554ba7
--- /dev/null
+++ b/scripts/beach_house.asm
@@ -0,0 +1,191 @@
+BeachHouseScript:
+ call $3c29
+ ret
+
+BeachHouseTextPointers:
+ dw SurfinDudeText
+ dw BeachHousePikachuText
+ dw BeachHouseSign1Text
+ dw BeachHouseSign2Text
+ dw BeachHouseSign3Text
+ dw BeachHouseSign4Text
+
+SurfinDudeText:
+ TX_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
+ callba SurfingPikachuMinigame
+ ld hl, wd492
+ set 1, [hl]
+ jr .done
+.asm_f226b
+ ld hl, .SurfinDudeText2
+ call PrintText
+.done
+ jp TextScriptEnd
+
+.SurfinDudeText1
+ TX_FAR _SurfinDudeText1
+ db "@"
+.SurfinDudeText2
+ TX_FAR _SurfinDudeText2
+ db "@"
+.SurfinDudeText3
+ TX_FAR _SurfinDudeText3
+ db "@"
+.SurfinDudeText4
+ TX_FAR _SurfinDudeText4
+ db "@"
+
+BeachHousePikachuText:
+ TX_ASM
+ ld hl, .BeachHousePikachuText
+ call PrintText
+ ld a, PIKACHU
+ call PlayCry
+ call WaitForSoundToFinish
+ jp TextScriptEnd
+
+.BeachHousePikachuText
+ TX_FAR _BeachHousePikachuText
+ db "@"
+
+BeachHouseSign1Text:
+ TX_ASM
+ ld hl, .BeachHouseSign1Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign1Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign1Text1
+ TX_FAR _BeachHouseSign1Text1
+ db "@"
+.BeachHouseSign1Text2
+ TX_FAR _BeachHouseSign1Text2
+ db "@"
+
+BeachHouseSign2Text:
+ TX_ASM
+ ld hl, .BeachHouseSign2Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign2Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign2Text1
+ TX_FAR _BeachHouseSign2Text1
+ db "@"
+.BeachHouseSign2Text2
+ TX_FAR _BeachHouseSign2Text2
+ db "@"
+
+BeachHouseSign3Text:
+ TX_ASM
+ ld hl, .BeachHouseSign3Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign3Text1
+.next
+ call PrintText
+ jp TextScriptEnd
+
+.BeachHouseSign3Text1
+ TX_FAR _BeachHouseSign3Text1
+ db "@"
+.BeachHouseSign3Text2
+ TX_FAR _BeachHouseSign3Text2
+ db "@"
+
+BeachHouseSign4Text:
+ TX_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
+ callab 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
+ TX_FAR _BeachHousePrinterText1
+ db $d, "@"
+.BeachHousePrinterText2
+ TX_FAR _BeachHousePrinterText2
+ db $d, "@"
+.BeachHousePrinterText3
+ TX_FAR _BeachHousePrinterText3
+ db "@"
+.BeachHousePrinterText4
+ TX_FAR _BeachHousePrinterText4
+ db "@"
diff --git a/scripts/beach_house2.asm b/scripts/beach_house2.asm
new file mode 100755
index 00000000..03e77ecb
--- /dev/null
+++ b/scripts/beach_house2.asm
@@ -0,0 +1,33 @@
+Func_f23d0:
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callab PrintSurfingMinigameHighScore
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_f2412
+ ld a, [hOaksAideResult]
+ and a
+ jr nz, .asm_f2406
+ ld hl, Text_f240c
+.asm_f2406
+ call PrintText
+ jp TextScriptEnd
+
+Text_f240c:
+ TX_FAR _BeachHousePrinterText5
+ TX_WAIT_BUTTON
+ db "@"
+
+Text_f2412:
+ TX_FAR _BeachHousePrinterText6
+ TX_WAIT_BUTTON
+ db "@"
diff --git a/scripts/bikeshop.asm b/scripts/bikeshop.asm
index 866c04b0..5ebd1fb6 100755
--- a/scripts/bikeshop.asm
+++ b/scripts/bikeshop.asm
@@ -1,5 +1,6 @@
BikeShopScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
BikeShopTextPointers:
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]
coord hl, 0, 0
- ld b, $4
- ld c, $f
+ lb bc, 4, 15
call TextBoxBorder
call UpdateSprites
coord hl, 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
@@ -103,7 +107,8 @@ BikeShopText_1d81f:
BikeShopText_1d824:
TX_FAR _BikeShopText_1d824
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
BikeShopComeAgainText:
TX_FAR _BikeShopComeAgainText
diff --git a/scripts/billshouse.asm b/scripts/billshouse.asm
index c2d10f0e..c7fd74f9 100755
--- a/scripts/billshouse.asm
+++ b/scripts/billshouse.asm
@@ -1,8 +1,10 @@
BillsHouseScript:
+ call BillsHouseScript_1e09e
call EnableAutoTextBoxDrawing
ld a, [wBillsHouseCurScript]
ld hl, BillsHouseScriptPointers
- jp CallFunctionInTable
+ call JumpTable
+ ret
BillsHouseScriptPointers:
dw BillsHouseScript0
@@ -11,21 +13,64 @@ BillsHouseScriptPointers:
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
+ callab CheckPikachuFaintedOrStatused
+ jr c, .asm_1e0d2
+ callab Func_f24d5
+.asm_1e0d2
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wBillsHouseCurScript], a
ret
BillsHouseScript1:
- ld a, [wSpriteStateData1 + 9]
+ ret
+
+BillsHouseScript2:
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, [wPlayerFacingDirection]
and a ; cp SPRITE_FACING_DOWN
ld de, MovementData_1e79c
jr nz, .notDown
+ call CheckPikachuFollowingPlayer
+ jr nz, .asm_1e0f8
+ callab Func_f250b
+.asm_1e0f8
ld de, MovementData_1e7a0
.notDown
ld a, $1
ld [H_SPRITEINDEX], a
call MoveSprite
- ld a, $2
+ ld a, $3
ld [wBillsHouseCurScript], a
ret
@@ -44,25 +89,58 @@ MovementData_1e7a0:
db NPC_MOVEMENT_UP
db $FF
-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, [wPlayerFacingDirection]
+ and a ; cp SPRITE_FACING_DOWN
+ jr nz, .asm_1e133
+ ld hl, PikachuMovementData_1e152
+.asm_1e133
+ call ApplyPikachuMovementData
+ callab 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
+ ld [H_SPRITEINDEX], a
+ ld a, SPRITE_FACING_DOWN
+ ld [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld hl, PikachuMovementData_1e1a9
+ call ApplyPikachuMovementData
+ ld a, $f
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ callab InitializePikachuTextID
+.asm_1e1c6
ld a, $2
ld [H_SPRITEINDEX], 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 $FF
-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 [wPlayerFacingDirection], 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 [wPlayerFacingDirection], a
+ ld a, $2
+ ld [H_SPRITEINDEX], a
+ ld a, SPRITE_FACING_DOWN
+ ld [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $2
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $0
+ ld a, $9
ld [wBillsHouseCurScript], a
ret
+BillsHouseScript9:
+ ret
+
BillsHouseTextPointers:
dw BillsHouseText1
dw BillsHouseText2
@@ -122,93 +260,20 @@ BillsHouseTextPointers:
dw BillsHouseText4
BillsHouseText4:
- TX_BILLS_PC
+ TX_FAR _BillsHouseDontLeaveText
+ db "@"
BillsHouseText1:
TX_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
+ callba Func_f2418
jp TextScriptEnd
-BillsHouseText_1e865:
- TX_FAR _BillsHouseText_1e865
- db "@"
-
-BillsHouseText_1e86a:
- TX_FAR _BillsHouseText_1e86a
- db "@"
-
-BillsHouseText_1e86f:
- TX_FAR _BillsHouseText_1e86f
- db "@"
-
BillsHouseText2:
TX_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
+ callba Func_f244a
jp TextScriptEnd
-BillThankYouText:
- TX_FAR _BillThankYouText
- db "@"
-
-SSTicketReceivedText:
- TX_FAR _SSTicketReceivedText
- TX_SFX_KEY_ITEM
- TX_BUTTON_SOUND
- db "@"
-
-SSTicketNoRoomText:
- TX_FAR _SSTicketNoRoomText
- db "@"
-
-BillsHouseText_1e8cb:
- TX_FAR _BillsHouseText_1e8cb
- db "@"
-
BillsHouseText3:
TX_ASM
- ld hl, BillsHouseText_1e8da
- call PrintText
+ callba Func_f24a2
jp TextScriptEnd
-
-BillsHouseText_1e8da:
- TX_FAR _BillsHouseText_1e8da
- db "@"
diff --git a/scripts/billshouse2.asm b/scripts/billshouse2.asm
new file mode 100755
index 00000000..87016aa8
--- /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:
+ TX_FAR _BillsHouseText_1e865
+ db "@"
+
+BillsHouseText_f2440:
+ TX_FAR _BillsHouseText_1e86a
+ db "@"
+
+BillsHouseText_f2445:
+ TX_FAR _BillsHouseText_1e86f
+ db "@"
+
+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:
+ TX_FAR _BillThankYouText
+ db "@"
+
+BillsHouseText_f2491:
+ TX_FAR _SSTicketReceivedText
+ TX_SFX_KEY_ITEM
+ TX_BUTTON_SOUND
+ db "@"
+
+BillsHouseText_f2498:
+ TX_FAR _SSTicketNoRoomText
+ db "@"
+
+BillsHouseText_f249d:
+ TX_FAR _BillsHouseText_1e8cb
+ db "@"
+
+Func_f24a2:
+ ld hl, BillsHouseText_f24a9
+ call PrintText
+ ret
+
+BillsHouseText_f24a9:
+ TX_FAR _BillsHouseText_1e8da
+ db "@"
+
+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, $1
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ call DisablePikachuFollowingPlayer
+ callab 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 060d5b16..b727bbd1 100755
--- a/scripts/blueshouse.asm
+++ b/scripts/blueshouse.asm
@@ -1,8 +1,9 @@
BluesHouseScript:
call EnableAutoTextBoxDrawing
ld hl, BluesHouseScriptPointers
- ld a, [wBluesHouseCurScript]
- jp CallFunctionInTable
+ xor a
+ call JumpTable
+ ret
BluesHouseScriptPointers:
dw BluesHouseScript0
@@ -14,8 +15,6 @@ BluesHouseScript0:
; trigger the next script
ld a, 1
ld [wBluesHouseCurScript], a
- ret
-
BluesHouseScript1:
ret
@@ -33,7 +32,6 @@ BluesHouseText1:
ld hl, DaisyInitialText
call PrintText
jr .done
-
.GiveMap
ld hl, DaisyOfferMapText
call PrintText
@@ -47,12 +45,10 @@ BluesHouseText1:
call PrintText
SetEvent EVENT_GOT_TOWN_MAP
jr .done
-
.GotMap
ld hl, DaisyUseMapText
call PrintText
jr .done
-
.BagFull
ld hl, DaisyBagFullText
call PrintText
@@ -80,10 +76,10 @@ DaisyUseMapText:
TX_FAR _DaisyUseMapText
db "@"
-BluesHouseText2: ; 0x19bc4 Daisy, walking around
+BluesHouseText2: ; Daisy, walking around
TX_FAR _BluesHouseText2
db "@"
-BluesHouseText3: ; 0x19bc9 map on table
+BluesHouseText3: ; map on table
TX_FAR _BluesHouseText3
db "@"
diff --git a/scripts/bruno.asm b/scripts/bruno.asm
index 4a7ecdaf..a10a1e49 100755
--- a/scripts/bruno.asm
+++ b/scripts/bruno.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 d904f484..04fa0a28 100755
--- a/scripts/celadoncity.asm
+++ b/scripts/celadoncity.asm
@@ -1,5 +1,14 @@
CeladonCityScript:
call EnableAutoTextBoxDrawing
+ ld hl, CeladonCityScriptPointers
+ ld a, [wCeladonCityCurScript]
+ call JumpTable
+ ret
+
+CeladonCityScriptPointers:
+ dw CeladonCityScript1
+
+CeladonCityScript1:
ResetEvents EVENT_1B8, EVENT_1BF
ResetEvent EVENT_67F
ret
@@ -99,8 +108,9 @@ CeladonCityText9:
db "@"
CeladonCityText10:
- TX_FAR _CeladonCityText10
- db "@"
+ TX_ASM
+ callba Func_f1ac6
+ jp TextScriptEnd
CeladonCityText11:
TX_FAR _CeladonCityText11
diff --git a/scripts/celadoncity2.asm b/scripts/celadoncity2.asm
new file mode 100755
index 00000000..12f7b366
--- /dev/null
+++ b/scripts/celadoncity2.asm
@@ -0,0 +1,8 @@
+Func_f1ac6:
+ ld hl, Text_f1acd
+ call PrintText
+ ret
+
+Text_f1acd:
+ TX_FAR _CeladonCityText10
+ db "@"
diff --git a/scripts/celadondiner.asm b/scripts/celadondiner.asm
index 55263560..6ecada9e 100755
--- a/scripts/celadondiner.asm
+++ b/scripts/celadondiner.asm
@@ -27,39 +27,5 @@ CeladonDinerText4:
CeladonDinerText5:
TX_ASM
- CheckEvent EVENT_GOT_COIN_CASE
- jr nz, .asm_eb14d
- ld hl, CeladonDinerText_491a7
- call PrintText
- lb bc, COIN_CASE, 1
- call GiveItem
- jr nc, .BagFull
- SetEvent EVENT_GOT_COIN_CASE
- ld hl, ReceivedCoinCaseText
- call PrintText
- jr .asm_68b61
-.BagFull
- ld hl, CoinCaseNoRoomText
- call PrintText
- jr .asm_68b61
-.asm_eb14d
- ld hl, CeladonDinerText_491b7
- call PrintText
-.asm_68b61
+ callab Func_f1f31
jp TextScriptEnd
-
-CeladonDinerText_491a7:
- TX_FAR _CeladonDinerText_491a7
- db "@"
-
-ReceivedCoinCaseText:
- TX_FAR _ReceivedCoinCaseText
- db $11, "@"
-
-CoinCaseNoRoomText:
- TX_FAR _CoinCaseNoRoomText
- db "@"
-
-CeladonDinerText_491b7:
- TX_FAR _CeladonDinerText_491b7
- db "@"
diff --git a/scripts/celadondiner2.asm b/scripts/celadondiner2.asm
new file mode 100755
index 00000000..8cd66a19
--- /dev/null
+++ b/scripts/celadondiner2.asm
@@ -0,0 +1,38 @@
+Func_f1f31:
+ CheckEvent EVENT_GOT_COIN_CASE
+ jr nz, .asm_eb14d
+ ld hl, CeladonDinerText_491a7
+ call PrintText
+ lb bc, COIN_CASE, 1
+ call GiveItem
+ jr nc, .BagFull
+ SetEvent EVENT_GOT_COIN_CASE
+ ld hl, ReceivedCoinCaseText
+ call PrintText
+ jr .asm_68b61
+.BagFull
+ ld hl, CoinCaseNoRoomText
+ call PrintText
+ jr .asm_68b61
+.asm_eb14d
+ ld hl, CeladonDinerText_491b7
+ call PrintText
+.asm_68b61
+ ret
+
+CeladonDinerText_491a7:
+ TX_FAR _CeladonDinerText_491a7
+ db "@"
+
+ReceivedCoinCaseText:
+ TX_FAR _ReceivedCoinCaseText
+ TX_SFX_KEY_ITEM
+ db "@"
+
+CoinCaseNoRoomText:
+ TX_FAR _CoinCaseNoRoomText
+ db "@"
+
+CeladonDinerText_491b7:
+ TX_FAR _CeladonDinerText_491b7
+ db "@"
diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm
index 0c4fd963..43aae927 100755
--- a/scripts/celadongamecorner.asm
+++ b/scripts/celadongamecorner.asm
@@ -4,7 +4,7 @@ CeladonGameCornerScript:
call EnableAutoTextBoxDrawing
ld hl, CeladonGameCornerScriptPointers
ld a, [wCeladonGameCornerCurScript]
- jp CallFunctionInTable
+ jp JumpTable
CeladonGameCornerScript_48bcf:
ld hl, wCurrentMapScriptFlags
@@ -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
+ callab Func_f1f23
+ ld de, MovementData_48c5a
.asm_48c4d
ld a, $b
ld [H_SPRITEINDEX], 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
@@ -144,7 +148,7 @@ CeladonGameCornerText2:
ld a, [wCurrentMenuItem]
and a
jr nz, .asm_48d0f
- ld b,COIN_CASE
+ ld b, COIN_CASE
call IsItemInBag
jr z, .asm_48d19
call Has9990Coins
@@ -345,8 +349,7 @@ CeladonGameCornerText_48e26:
Received20CoinsText:
TX_FAR _Received20CoinsText
- TX_SFX_ITEM
- db "@"
+ db $0B, "@"
CeladonGameCornerText_48e31:
TX_FAR _CeladonGameCornerText_48e31
@@ -362,7 +365,7 @@ CeladonGameCornerText10:
jr nz, .asm_48e75
ld hl, CeladonGameCornerText_48e88
call PrintText
- ld b,COIN_CASE
+ ld b, COIN_CASE
call IsItemInBag
jr z, .asm_48e7f
call Has9990Coins
@@ -397,8 +400,7 @@ CeladonGameCornerText_48e88:
CeladonGameCornerText_48e8d:
TX_FAR _CeladonGameCornerText_48e8d
- TX_SFX_ITEM
- db "@"
+ db $0B, "@"
CeladonGameCornerText_48e93:
TX_FAR _CeladonGameCornerText_48e93
@@ -475,13 +477,11 @@ CeladonGameCornerScript_48f1e:
ld hl, wd730
set 6, [hl]
coord hl, 11, 0
- ld b, $5
- ld c, $7
+ lb bc, 5, 7
call TextBoxBorder
call UpdateSprites
coord hl, 12, 1
- ld b, 4
- ld c, 7
+ lb bc, 4, 7
call ClearScreenArea
coord hl, 12, 2
ld de, GameCornerMoneyText
@@ -491,7 +491,7 @@ CeladonGameCornerScript_48f1e:
call PlaceString
coord hl, 12, 3
ld de, wPlayerMoney
- ld c, $a3
+ ld c, 3 | MONEY_SIGN | LEADING_ZEROES
call PrintBCDNumber
coord hl, 12, 4
ld de, GameCornerCoinText
diff --git a/scripts/celadongamecorner2.asm b/scripts/celadongamecorner2.asm
new file mode 100755
index 00000000..f8d25905
--- /dev/null
+++ b/scripts/celadongamecorner2.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/celadonmansion1.asm b/scripts/celadonmansion1.asm
index f6ef7669..59d9d1d8 100755
--- a/scripts/celadonmansion1.asm
+++ b/scripts/celadonmansion1.asm
@@ -1,5 +1,6 @@
CeladonMansion1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansion1TextPointers:
dw CeladonMansion1Text1
@@ -8,31 +9,39 @@ CeladonMansion1TextPointers:
dw CeladonMansion1Text4
dw CeladonMansion1Text5
-CeladonMansion1_486a1:
- call PlayCry
- jp TextScriptEnd
-
CeladonMansion1Text1:
TX_FAR _CeladonMansion1Text1
TX_ASM
ld a, MEOWTH
- jp CeladonMansion1_486a1
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text2:
- TX_FAR _CeladonMansion1Text2
- db "@"
+ TX_ASM
+ callba Func_f1e70
+ ld a, [wPikachuHappiness]
+ cp 251
+ jr c, .asm_485d9
+ ld c, 50
+ call DelayFrames
+ ldpikacry e, PikachuCry23
+ callab PlayPikachuSoundClip
+.asm_485d9
+ jp TextScriptEnd
CeladonMansion1Text3:
TX_FAR _CeladonMansion1Text3
TX_ASM
ld a, CLEFAIRY
- jp CeladonMansion1_486a1
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text4:
TX_FAR _CeladonMansion1Text4
TX_ASM
ld a, NIDORAN_F
- jp CeladonMansion1_486a1
+ call PlayCry
+ jp TextScriptEnd
CeladonMansion1Text5:
TX_FAR _CeladonMansion1Text5
diff --git a/scripts/celadonmansion1_2.asm b/scripts/celadonmansion1_2.asm
new file mode 100755
index 00000000..0e1c2389
--- /dev/null
+++ b/scripts/celadonmansion1_2.asm
@@ -0,0 +1,78 @@
+Func_f1e70:
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeladonMansion1Text_f1e96
+ call PrintText
+ callab IsStarterPikachuInOurParty
+ ret nc
+ ld hl, CeladonMansionText_f1e9c
+ call PrintText
+ ld a, $0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call Func_f1ea2
+ call PrintText
+ ret
+
+CeladonMansion1Text_f1e96:
+ TX_FAR _CeladonMansion1Text2
+ TX_WAIT_BUTTON
+ db "@"
+
+CeladonMansionText_f1e9c:
+ TX_FAR _CeladonMansion1Text6
+ TX_BUTTON_SOUND
+ db "@"
+
+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:
+ TX_FAR _CeladonMansion1Text7
+ db "@"
+
+CeladonMansion1Text_f1eda:
+ TX_FAR _CeladonMansion1Text8
+ db "@"
+
+CeladonMansion1Text_f1edf:
+ TX_FAR _CeladonMansion1Text9
+ db "@"
+
+CeladonMansion1Text_f1ee4:
+ TX_FAR _CeladonMansion1Text10
+ db "@"
+
+CeladonMansion1Text_f1ee9:
+ TX_FAR _CeladonMansion1Text11
+ db "@"
+
+CeladonMansion1Text_f1eee:
+ TX_FAR _CeladonMansion1Text12
+ db "@"
diff --git a/scripts/celadonmansion3.asm b/scripts/celadonmansion3.asm
index be473ad0..6693f6a6 100755
--- a/scripts/celadonmansion3.asm
+++ b/scripts/celadonmansion3.asm
@@ -1,5 +1,13 @@
CeladonMansion3Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
+
+CeladonMansion3_PokedexCount:
+ ld hl, wPokedexOwned
+ ld b, wPokedexOwnedEnd - wPokedexOwned
+ call CountSetBits
+ ld a, [wNumSetBits]
+ ret
CeladonMansion3TextPointers:
dw ProgrammerText
@@ -12,60 +20,157 @@ CeladonMansion3TextPointers:
dw GameFreakSignText
ProgrammerText:
+ TX_ASM
+ call CeladonMansion3_PokedexCount
+ cp 150
+ ld hl, CeladonMansion3Text_486f5
+ jr nc, .print
+ ld hl, CeladonMansion3Text_486f0
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_486f0:
TX_FAR _ProgrammerText
db "@"
+CeladonMansion3Text_486f5:
+ TX_FAR _ProgrammerText2
+ db "@"
+
GraphicArtistText:
+ TX_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]
+ callab PrintDiploma
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, CeladonMansion3Text_4876b
+ ld a, [$ffdb]
+ and a
+ jr nz, .print
+ ld hl, CeladonMansion3Text_48766
+ jr .print
+
+.declined_print
+ ld hl, CeladonMansion3Text_48761
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_48757:
TX_FAR _GraphicArtistText
db "@"
+CeladonMansion3Text_4875c:
+ TX_FAR _GraphicArtistText2
+ db "@"
+
+CeladonMansion3Text_48761:
+ TX_FAR _GraphicArtistText3
+ db "@"
+
+CeladonMansion3Text_48766:
+ TX_FAR _GraphicArtistText4
+ db "@"
+
+CeladonMansion3Text_4876b:
+ TX_FAR _GraphicArtistText5
+ db "@"
+
WriterText:
+ TX_ASM
+ call CeladonMansion3_PokedexCount
+ cp 150
+ ld hl, CeladonMansion3Text_48789
+ jr nc, .print
+ ld hl, CeladonMansion3Text_48784
+.print
+ call PrintText
+ jp TextScriptEnd
+
+CeladonMansion3Text_48784:
TX_FAR _WriterText
db "@"
+CeladonMansion3Text_48789:
+ TX_FAR _WriterText2
+ db "@"
+
DirectorText:
TX_ASM
-
+ call CeladonMansion3_PokedexCount
; check pokédex
- ld hl, wPokedexOwned
- ld b, wPokedexOwnedEnd - wPokedexOwned
- call CountSetBits
- ld a, [wNumSetBits]
cp 150
jr nc, .CompletedDex
ld hl, .GameDesigner
jr .done
.CompletedDex
ld hl, .CompletedDexText
+ call PrintText
+ call Delay3
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .UnlockedDiplomaPrinting
.done
call PrintText
jp TextScriptEnd
-.GameDesigner ; 487d0 (12:47d0)
+.GameDesigner
TX_FAR _GameDesignerText
db "@"
.CompletedDexText
TX_FAR _CompletedDexText
- db $6
+ TX_BUTTON_SOUND
TX_ASM
callab DisplayDiploma
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
jp TextScriptEnd
-GameFreakPCText1:
- TX_FAR _CeladonMansion3Text5
+.UnlockedDiplomaPrinting
+ TX_FAR _CompletedDexText2
db "@"
+GameFreakPCText1:
+ TX_ASM
+ callba Func_f1ef3
+ jp TextScriptEnd
+
GameFreakPCText2:
- TX_FAR _CeladonMansion3Text6
- db "@"
+ TX_ASM
+ callba Func_f1eff
+ jp TextScriptEnd
GameFreakPCText3:
- TX_FAR _CeladonMansion3Text7
- db "@"
+ TX_ASM
+ callba Func_f1f0b
+ jp TextScriptEnd
GameFreakSignText:
- TX_FAR _CeladonMansion3Text8
- db "@"
+ TX_ASM
+ callba Func_f1f17
+ jp TextScriptEnd
diff --git a/scripts/celadonmansion3_2.asm b/scripts/celadonmansion3_2.asm
new file mode 100755
index 00000000..3a7035ba
--- /dev/null
+++ b/scripts/celadonmansion3_2.asm
@@ -0,0 +1,35 @@
+Func_f1ef3:
+ ld hl, CeladonMansion3Text_f1efa
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1efa:
+ TX_FAR _CeladonMansion3Text5
+ db "@"
+
+Func_f1eff:
+ ld hl, CeladonMansion3Text_f1f06
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f06:
+ TX_FAR _CeladonMansion3Text6
+ db "@"
+
+Func_f1f0b:
+ ld hl, CeladonMansion3Text_f1f12
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f12:
+ TX_FAR _CeladonMansion3Text7
+ db "@"
+
+Func_f1f17:
+ ld hl, CeladonMansion3Text_f1f1e
+ call PrintText
+ ret
+
+CeladonMansion3Text_f1f1e:
+ TX_FAR _CeladonMansion3Text8
+ db "@"
diff --git a/scripts/celadonmansion4.asm b/scripts/celadonmansion4.asm
index 80d887e9..483aa4fd 100755
--- a/scripts/celadonmansion4.asm
+++ b/scripts/celadonmansion4.asm
@@ -1,5 +1,6 @@
CeladonMansion4Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansion4TextPointers:
dw CeladonMansion4Text1
diff --git a/scripts/celadonmansion5.asm b/scripts/celadonmansion5.asm
index 197a0f54..c2da8c6d 100755
--- a/scripts/celadonmansion5.asm
+++ b/scripts/celadonmansion5.asm
@@ -1,5 +1,6 @@
CeladonMansion5Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMansion5TextPointers:
dw CeladonMansion5Text1
diff --git a/scripts/celadonmart1.asm b/scripts/celadonmart1.asm
index 0f67972b..64c4a087 100755
--- a/scripts/celadonmart1.asm
+++ b/scripts/celadonmart1.asm
@@ -1,5 +1,6 @@
CeladonMart1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart1TextPointers:
dw CeladonMart1Text1
diff --git a/scripts/celadonmart3.asm b/scripts/celadonmart3.asm
index 7b9940fa..25bf4e80 100755
--- a/scripts/celadonmart3.asm
+++ b/scripts/celadonmart3.asm
@@ -22,41 +22,9 @@ CeladonMart3TextPointers:
CeladonMart3Text1:
TX_ASM
- CheckEvent EVENT_GOT_TM18
- jr nz, .asm_a5463
- ld hl, TM18PreReceiveText
- call PrintText
- lb bc, TM_18, 1
- call GiveItem
- jr nc, .BagFull
- SetEvent EVENT_GOT_TM18
- ld hl, ReceivedTM18Text
- jr .asm_81359
-.BagFull
- ld hl, TM18NoRoomText
- jr .asm_81359
-.asm_a5463
- ld hl, TM18ExplanationText
-.asm_81359
- call PrintText
+ callab Func_f1e30
jp TextScriptEnd
-TM18PreReceiveText:
- TX_FAR _TM18PreReceiveText
- db "@"
-
-ReceivedTM18Text:
- TX_FAR _ReceivedTM18Text
- db $0B, "@"
-
-TM18ExplanationText:
- TX_FAR _TM18ExplanationText
- db "@"
-
-TM18NoRoomText:
- TX_FAR _TM18NoRoomText
- db "@"
-
CeladonMart3Text2:
TX_FAR _CeladonMart3Text2
db "@"
diff --git a/scripts/celadonmart3_2.asm b/scripts/celadonmart3_2.asm
new file mode 100755
index 00000000..1c9f0db1
--- /dev/null
+++ b/scripts/celadonmart3_2.asm
@@ -0,0 +1,38 @@
+Func_f1e30
+ CheckEvent EVENT_GOT_TM18
+ jr nz, .asm_f1e54
+ ld hl, CeladonMart3Text_f1e5b
+ call PrintText
+ lb bc, TM_18, 1
+ call GiveItem
+ jr nc, .asm_f1e4f
+ SetEvent EVENT_GOT_TM18
+ ld hl, CeladonMart3Text_f1e60
+ jr .asm_f1e57
+
+.asm_f1e4f
+ ld hl, CeladonMart3Text_f1e6b
+ jr .asm_f1e57
+
+.asm_f1e54
+ ld hl, CeladonMart3Text_f1e66
+.asm_f1e57
+ call PrintText
+ ret
+
+CeladonMart3Text_f1e5b:
+ TX_FAR _TM18PreReceiveText
+ db "@"
+
+CeladonMart3Text_f1e60:
+ TX_FAR _ReceivedTM18Text
+ TX_SFX_ITEM
+ db "@"
+
+CeladonMart3Text_f1e66:
+ TX_FAR _TM18ExplanationText
+ db "@"
+
+CeladonMart3Text_f1e6b:
+ TX_FAR _TM18NoRoomText
+ db "@"
diff --git a/scripts/celadonmart5.asm b/scripts/celadonmart5.asm
index 7b7371a7..f65b42bc 100755
--- a/scripts/celadonmart5.asm
+++ b/scripts/celadonmart5.asm
@@ -1,5 +1,6 @@
CeladonMart5Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeladonMart5TextPointers:
dw CeladonMart5Text1
diff --git a/scripts/celadonmartroof.asm b/scripts/celadonmartroof.asm
index 1f3bcb64..22a83780 100755
--- a/scripts/celadonmartroof.asm
+++ b/scripts/celadonmartroof.asm
@@ -1,5 +1,6 @@
CeladonMartRoofScript:
- 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:
- jpba RemoveItemByID
+ callba RemoveItemByID
+ ret
CeladonMartRoofText_484ee:
TX_FAR _CeladonMartRoofText_484ee
@@ -139,48 +143,48 @@ CeladonMartRoofText_484ee:
CeladonMartRoofText_484f3:
TX_FAR _CeladonMartRoofText_484f3
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_484f9:
TX_FAR _CeladonMartRoofText_484f9
- TX_SFX_ITEM
+ db $0b
TX_FAR _CeladonMartRoofText_484fe
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_48504:
TX_FAR _CeladonMartRoofText_48504
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_4850a:
TX_FAR _CeladonMartRoofText_4850a
- TX_SFX_ITEM
+ db $0b
TX_FAR _CeladonMartRoofText_4850f
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_48515:
TX_FAR _CeladonMartRoofText_48515
- TX_WAIT_BUTTON
+ db $0d
db "@"
ReceivedTM49Text:
TX_FAR _ReceivedTM49Text
- TX_SFX_ITEM
+ db $0b
TX_FAR _CeladonMartRoofText_48520
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_48526:
TX_FAR _CeladonMartRoofText_48526
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofText_4852c:
TX_FAR _CeladonMartRoofText_4852c
- TX_WAIT_BUTTON
+ db $0d
db "@"
CeladonMartRoofScript_PrintDrinksInBag:
diff --git a/scripts/celadonpokecenter.asm b/scripts/celadonpokecenter.asm
index bd91af20..acbae2ec 100755
--- a/scripts/celadonpokecenter.asm
+++ b/scripts/celadonpokecenter.asm
@@ -7,6 +7,7 @@ CeladonPokecenterTextPointers:
dw CeladonPokecenterText2
dw CeladonPokecenterText3
dw CeladonTradeNurseText
+ dw CeladonPokecenterText5
CeladonTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
@@ -21,3 +22,8 @@ CeladonPokecenterText2:
CeladonPokecenterText3:
TX_FAR _CeladonPokecenterText3
db "@"
+
+CeladonPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm
index 94f90f2b..4243d35c 100755
--- a/scripts/ceruleancity.asm
+++ b/scripts/ceruleancity.asm
@@ -2,7 +2,7 @@ CeruleanCityScript:
call EnableAutoTextBoxDrawing
ld hl, CeruleanCityScriptPointers
ld a, [wCeruleanCityCurScript]
- jp CallFunctionInTable
+ jp JumpTable
CeruleanCityScript_1948c:
xor a
@@ -64,9 +64,7 @@ CeruleanCityScript0:
ld a, [wWalkBikeSurfState]
and a
jr z, .asm_19512
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_19512
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -136,23 +134,8 @@ CeruleanCityScript1:
call SaveEndBattleTextPointers
ld a, OPP_SONY1
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
ld [hJoyHeld], a
call CeruleanCityScript_1955d
@@ -171,9 +154,7 @@ CeruleanCityScript2:
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $1
ld [H_SPRITEINDEX], a
diff --git a/scripts/ceruleangym.asm b/scripts/ceruleangym.asm
index ee71595f..448ce744 100755
--- a/scripts/ceruleangym.asm
+++ b/scripts/ceruleangym.asm
@@ -55,6 +55,7 @@ CeruleanGymScript_5c70d:
call DisplayTextID
SetEvent EVENT_GOT_TM11
jr .asm_5c736
+
.BagFull
ld a, $7
ld [hSpriteIndexOrTextID], a
@@ -158,7 +159,7 @@ CeruleanGymText7:
CeruleanGymText_5c7d8:
TX_FAR _CeruleanGymText_5c7d8
- db $11, $6, "@"
+ db "@"
CeruleanGymText2:
TX_ASM
diff --git a/scripts/ceruleanhouse1.asm b/scripts/ceruleanhouse1.asm
index 181a22c3..ba75c240 100755
--- a/scripts/ceruleanhouse1.asm
+++ b/scripts/ceruleanhouse1.asm
@@ -1,17 +1,106 @@
CeruleanHouse1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeruleanHouse1TextPointers:
dw CeruleanHouse1Text1
dw CeruleanHouse1Text2
+ dw CeruleanHouse1Text3
+ dw CeruleanHouse1Text4
CeruleanHouse1Text1:
- TX_FAR _CeruleanHouse1Text1
+ TX_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:
+ TX_FAR MelanieText1
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfce:
+ TX_FAR MelanieText2
+ db "@"
+
+CeruleanHouse1Text_1cfd3:
+ TX_FAR MelanieText3
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfd9:
+ TX_FAR MelanieText4
+ TX_WAIT_BUTTON
+ db "@"
+
+CeruleanHouse1Text_1cfdf:
+ TX_FAR MelanieText5
+ TX_WAIT_BUTTON
db "@"
CeruleanHouse1Text2:
+ TX_FAR MelanieBulbasaurText
+ TX_ASM
+ ld a, BULBASAUR
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text3:
+ TX_FAR MelanieOddishText
+ TX_ASM
+ ld a, ODDISH
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text4:
+ TX_FAR MelanieSandshrewText
TX_ASM
- ld a, $6
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
+ ld a, SANDSHREW
+ call PlayCry
jp TextScriptEnd
diff --git a/scripts/ceruleanpokecenter.asm b/scripts/ceruleanpokecenter.asm
index b758f497..876d2bbd 100755
--- a/scripts/ceruleanpokecenter.asm
+++ b/scripts/ceruleanpokecenter.asm
@@ -7,6 +7,7 @@ CeruleanPokecenterTextPointers:
dw CeruleanPokecenterText2
dw CeruleanPokecenterText3
dw CeruleanTradeNurseText
+ dw CeruleanPokecenterText5
CeruleanTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
@@ -21,3 +22,8 @@ CeruleanPokecenterText2:
CeruleanPokecenterText3:
TX_FAR _CeruleanPokecenterText3
db "@"
+
+CeruleanPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm
index 4cae9989..1ebf943a 100755
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -3,7 +3,7 @@ CinnabarGymScript:
call EnableAutoTextBoxDrawing
ld hl, CinnabarGymScriptPointers
ld a, [wCinnabarGymCurScript]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarGymScript_75759:
ld hl, wCurrentMapScriptFlags
@@ -35,11 +35,14 @@ CinnabarGymScript_75792:
ld [wOpponentAfterWrongAnswer], a
ret
-CinnabarGymScript_757a0:
+CinnabarGymScript_74f48:
ld a, [hSpriteIndexOrTextID]
ld [wTrainerHeaderFlagBit], a
ret
+CinnabarGymFlagAction:
+ predef_jump FlagActionPredef
+
CinnabarGymScriptPointers:
dw CinnabarGymScript0
dw CinnabarGymScript1
@@ -55,12 +58,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
@@ -73,10 +82,39 @@ MovementData_757d7:
db NPC_MOVEMENT_UP
db $FF
+PikachuMovementData_74f97:
+ db $00
+ db $20
+ db $1e
+ db $35
+ db $3f
+
MovementData_757da:
db NPC_MOVEMENT_LEFT
db $FF
+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
+ callab GetPikachuFacingDirectionAndReturnToE
+ pop bc
+ pop hl
+ ld a, b
+ cp e
+ ret nz
+ call ApplyPikachuMovementData
+ ret
+
CinnabarGymScript1:
ld a, [wd730]
bit 0, a
@@ -88,52 +126,74 @@ CinnabarGymScript1:
ld [hSpriteIndexOrTextID], a
jp DisplayTextID
-CinnabarGymFlagAction:
- predef_jump FlagActionPredef
-
CinnabarGymScript2:
+ call CinnabarGymScript_753e9
ld a, [wIsInBattle]
cp $ff
jp z, CinnabarGymScript_75792
ld a, [wTrainerHeaderFlagBit]
- ld [$ffdb], 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]
ld [$ffdb], 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
+ ld [$ffdb], 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
@@ -184,7 +244,7 @@ CinnabarGymTextPointers:
dw ReceivedTM38Text
dw TM38NoRoomText
-CinnabarGymScript_758b7:
+CinnabarGymScript_750c3:
ld a, [hSpriteIndexOrTextID]
ld [wSpriteIndex], a
call EngageMapTrainer
@@ -225,7 +285,7 @@ CinnabarGymText1:
call SaveEndBattleTextPointers
ld a, $7
ld [wGymLeaderNo], a
- jp CinnabarGymScript_758b7
+ jp CinnabarGymScript_750c3
BlaineBattleText:
TX_FAR _BlaineBattleText
@@ -257,7 +317,7 @@ TM38NoRoomText:
CinnabarGymText2:
TX_ASM
- call CinnabarGymScript_757a0
+ call CinnabarGymScript_74f48
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
jr nz, .asm_46bb4
ld hl, CinnabarGymText_7595f
@@ -265,7 +325,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
@@ -285,16 +345,25 @@ CinnabarGymText_75969:
CinnabarGymText3:
TX_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
@@ -313,16 +382,24 @@ CinnabarGymText_7599e:
CinnabarGymText4:
TX_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
@@ -341,16 +418,24 @@ CinnabarGymText_759d3:
CinnabarGymText5:
TX_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
@@ -369,15 +454,23 @@ CinnabarGymText_75a08:
CinnabarGymText6:
TX_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
@@ -397,15 +490,23 @@ CinnabarGymText_75a3d:
CinnabarGymText7:
TX_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
@@ -425,15 +526,23 @@ CinnabarGymText_75a72:
CinnabarGymText8:
TX_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
@@ -453,20 +562,5 @@ CinnabarGymText_75aa7:
CinnabarGymText9:
TX_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
+ callab Func_f2133
jp TextScriptEnd
-
-CinnabarGymText_75ac2:
- TX_FAR _CinnabarGymText_75ac2
- db "@"
-
-CinnabarGymText_75ac7:
- TX_FAR _CinnabarGymText_75ac7
- db "@"
diff --git a/scripts/cinnabargym2.asm b/scripts/cinnabargym2.asm
new file mode 100755
index 00000000..00118fb5
--- /dev/null
+++ b/scripts/cinnabargym2.asm
@@ -0,0 +1,18 @@
+CinnabarGymScript_753de:
+ callab 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/cinnabargym3.asm b/scripts/cinnabargym3.asm
new file mode 100755
index 00000000..9e8cad74
--- /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:
+ TX_FAR _CinnabarGymText_75ac2
+ db "@"
+
+CinnabarGymText_75ac7:
+ TX_FAR _CinnabarGymText_75ac7
+ db "@"
+
+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:
+ TX_FAR _CinnabarGymText_1
+ db "@"
+
+CinnabarGymText_f216e:
+ TX_FAR _CinnabarGymText_2
+ db "@"
+
+CinnabarGymText_f2173:
+ TX_FAR _CinnabarGymText_3
+ db "@"
+
+CinnabarGymText_f2178:
+ TX_FAR _CinnabarGymText_4
+ db "@"
+
+CinnabarGymText_f217d:
+ TX_FAR _CinnabarGymText_5
+ db "@"
+
+CinnabarGymText_f2182:
+ TX_FAR _CinnabarGymText_6
+ db "@"
+
+CinnabarGymText_f2187:
+ TX_FAR _CinnabarGymText_7 ; unused
+ db "@"
diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm
index 8549042f..4dbec159 100755
--- a/scripts/cinnabarisland.asm
+++ b/scripts/cinnabarisland.asm
@@ -6,7 +6,7 @@ CinnabarIslandScript:
ResetEvent EVENT_LAB_STILL_REVIVING_FOSSIL
ld hl, CinnabarIslandScriptPointers
ld a, [wCinnabarIslandCurScript]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarIslandScriptPointers:
dw CinnabarIslandScript0
@@ -35,7 +35,7 @@ CinnabarIslandScript0:
ld [wSimulatedJoypadStatesEnd], a
call StartSimulatingJoypadStates
xor a
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld [wJoyIgnore], a
ld a, $1
ld [wCinnabarIslandCurScript], a
diff --git a/scripts/cinnabarpokecenter.asm b/scripts/cinnabarpokecenter.asm
index 2f6d5791..a43e5385 100755
--- a/scripts/cinnabarpokecenter.asm
+++ b/scripts/cinnabarpokecenter.asm
@@ -7,6 +7,7 @@ CinnabarPokecenterTextPointers:
dw CinnabarPokecenterText2
dw CinnabarPokecenterText3
dw CinnabarTradeNurseText
+ dw CinnabarPokecenterText5
CinnabarHealNurseText:
TX_POKECENTER_NURSE
@@ -21,3 +22,8 @@ CinnabarPokecenterText3:
CinnabarTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+CinnabarPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/colosseum.asm b/scripts/colosseum.asm
index bdfa3c44..bdfa3c44 100755..100644
--- a/scripts/colosseum.asm
+++ b/scripts/colosseum.asm
diff --git a/scripts/copycatshouse2f.asm b/scripts/copycatshouse2f.asm
index 830bad50..7bf8d0e9 100755
--- a/scripts/copycatshouse2f.asm
+++ b/scripts/copycatshouse2f.asm
@@ -82,7 +82,7 @@ CopycatsHouse2FText6:
CopycatsHouse2FText7:
TX_ASM
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
ld hl, CopycatsHouse2FText_5cd1c
jr nz, .notUp
diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm
index 60daa3d5..187f8579 100755
--- a/scripts/daycarem.asm
+++ b/scripts/daycarem.asm
@@ -50,11 +50,21 @@ DayCareMText1:
ld a, PARTY_TO_DAYCARE
ld [wMoveMonType], a
call MoveMon
+ callab 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
+ callab 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
+ callab 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
+ callab PlayPikachuSoundClip
+.asm_56430
ld hl, DayCareGotMonBackText
jr .done
diff --git a/scripts/fanclub.asm b/scripts/fanclub.asm
index f4244e46..01d6269b 100755
--- a/scripts/fanclub.asm
+++ b/scripts/fanclub.asm
@@ -1,15 +1,72 @@
FanClubScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ld hl, FanClubScriptPointers
+ ld a, [wFanClubCurScript]
+ call JumpTable
+ 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
+FanClubScriptPointers:
+ 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
+ ld a, [hRandomAdd]
+ cp 25
+ call c, FanClubScript_59a44
+ ret
+
+FanClubScript_59a44:
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ callab CheckPikachuFaintedOrStatused
+ ret c
+ ld a, $1
+ ld [wFanClubCurScript], a
+ xor a
+ ld [wPlayerMovingDirection], a
+ call UpdateSprites
+ call UpdateSprites
+ ld a, $0
+ 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
+ callab InitializePikachuTextID
+ call DisablePikachuFollowingPlayer
+ ret
+
+PikachuMovementScript_59a8c:
+ db $00
+ db $26
+ db $20
+ db $20
+ db $20
+ db $1e
+ db $3f
FanClubTextPointers:
dw FanClubText1
@@ -18,22 +75,28 @@ FanClubTextPointers:
dw FanClubText4
dw FanClubText5
dw FanClubText6
- dw FanClubText7
- dw FanClubText8
FanClubText1:
-; pikachu fan
+; clefairy fan
TX_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:
TX_FAR PikachuFanBetterText
db "@"
+.yellowtext
+ TX_FAR PikachuFanPrintText
+ db "@"
+
FanClubText2:
; seel fan
TX_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:
TX_FAR SeelFanBetterText
db "@"
+.yellowtext
+ TX_FAR SeelFanPrintText
+ db "@"
+
FanClubText3:
; pikachu
TX_ASM
ld hl, .text
call PrintText
- ld a, PIKACHU
+ ld a, CLEFAIRY
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
@@ -100,74 +177,131 @@ FanClubText4:
FanClubText5:
; chair
TX_ASM
- call FanClubBikeInBag
- jr nz, .nothingleft
-
- ld hl, .meetchairtext
+ CheckEventHL EVENT_152
+ jr z, .check_bike_voucher
+ ld hl, Text_59c1f
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
- jr nz, .nothanks
+ jr z, .select_mon_to_print
+ ld hl, Text_59c24
+ jr .gbpals_print_text
- ; tell the story
- ld hl, .storytext
+.check_bike_voucher
+ CheckEvent EVENT_GOT_BIKE_VOUCHER
+ jr nz, .got_bike_voucher_already
+ ld hl, Text_59bfc
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .declined_story
+ ld hl, Text_59c01
call PrintText
lb bc, BIKE_VOUCHER, 1
call GiveItem
- jr nc, .BagFull
- ld hl, .receivedvouchertext
+ jr nc, .no_room_for_voucher
+ ld hl, Text_59c06
call PrintText
SetEvent EVENT_GOT_BIKE_VOUCHER
- jr .done
-.BagFull
- ld hl, .bagfulltext
- call PrintText
- jr .done
-.nothanks
- ld hl, .nostorytext
- call PrintText
- jr .done
-.nothingleft
- ld hl, .finaltext
+ jp TextScriptEnd
+
+.no_room_for_voucher
+ ld hl, Text_59c1a
+ jr .gbpals_print_text
+
+.declined_story
+ ld hl, Text_59c10
+ jr .gbpals_print_text
+
+.got_bike_voucher_already
+ ld hl, Text_59c15
+.gbpals_print_text
+ push hl
+ call LoadGBPal
+ pop hl
call PrintText
-.done
jp TextScriptEnd
-.meetchairtext
+.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]
+ callab PrintFanClubPortrait
+ ld hl, wd730
+ res 6, [hl]
+ call GBPalWhiteOutWithDelay3
+ call ReloadTilesetTilePatterns
+ call RestoreScreenTilesAndReloadTilePatterns
+ call LoadScreenTilesFromBuffer2
+ call Delay3
+ call GBPalNormal
+ ld hl, Text_59c2e
+ ld a, [hOaksAideResult]
+ and a
+ jr nz, .gbpals_print_text
+ ld hl, Text_59c29
+ jr .gbpals_print_text
+
+Text_59bfc:
TX_FAR FanClubMeetChairText
db "@"
-.storytext
+Text_59c01:
TX_FAR FanClubChairStoryText
db "@"
-.receivedvouchertext
+Text_59c06:
TX_FAR ReceivedBikeVoucherText
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR ExplainBikeVoucherText
db "@"
-.nostorytext
+Text_59c10:
TX_FAR FanClubNoStoryText
db "@"
-.finaltext
+Text_59c15:
TX_FAR FanClubChairFinalText
db "@"
-.bagfulltext
+Text_59c1a:
TX_FAR FanClubBagFullText
db "@"
-FanClubText6:
- TX_FAR _FanClubText6
+Text_59c1f:
+ TX_FAR FanClubChairPrintText1
+ db "@"
+
+Text_59c24:
+ TX_FAR FanClubChairPrintText2
+ db "@"
+
+Text_59c29:
+ TX_FAR FanClubChairPrintText3
db "@"
-FanClubText7:
- TX_FAR _FanClubText7
+Text_59c2e:
+ TX_FAR FanClubChairPrintText4
db "@"
-FanClubText8:
- TX_FAR _FanClubText8
+FanClubText6:
+ TX_FAR _FanClubText6
db "@"
diff --git a/scripts/fuchsiahouse3.asm b/scripts/fuchsiahouse3.asm
index 9e2c6d4b..fe1da024 100755
--- a/scripts/fuchsiahouse3.asm
+++ b/scripts/fuchsiahouse3.asm
@@ -52,7 +52,7 @@ FuchsiaHouse3Text_561c2:
db $0B
db "@"
-UnusedText_561c8: ; 561c8
+UnusedText_561c8:
para "つり こそ"
line "おとこの ロマン だ!"
diff --git a/scripts/fuchsiamart.asm b/scripts/fuchsiamart.asm
index 96df9290..32dbe773 100755
--- a/scripts/fuchsiamart.asm
+++ b/scripts/fuchsiamart.asm
@@ -1,5 +1,6 @@
FuchsiaMartScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
FuchsiaMartTextPointers:
dw FuchsiaCashierText
diff --git a/scripts/fuchsiapokecenter.asm b/scripts/fuchsiapokecenter.asm
index a6111e84..50f5ba76 100755
--- a/scripts/fuchsiapokecenter.asm
+++ b/scripts/fuchsiapokecenter.asm
@@ -7,6 +7,7 @@ FuchsiaPokecenterTextPointers:
dw FuchsiaPokecenterText2
dw FuchsiaPokecenterText3
dw FuchsiaTradeNurseText
+ dw FuchsiaPokecenterText5
FuchsiaHealNurseText:
TX_POKECENTER_NURSE
@@ -21,3 +22,8 @@ FuchsiaPokecenterText3:
FuchsiaTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+FuchsiaPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/gary.asm b/scripts/gary.asm
index 1fe65fb0..ef1a7328 100755
--- a/scripts/gary.asm
+++ b/scripts/gary.asm
@@ -2,7 +2,8 @@ GaryScript:
call EnableAutoTextBoxDrawing
ld hl, GaryScriptPointers
ld a, [wGaryCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
ResetGaryScript:
xor a
@@ -40,9 +41,9 @@ GaryScript1:
ret
GaryEntrance_RLEMovement:
- db D_UP,1
- db D_RIGHT,1
- db D_UP,3
+ db D_UP, 1
+ db D_RIGHT, 1
+ db D_UP, 3
db $ff
GaryScript2:
@@ -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
@@ -217,8 +207,8 @@ GaryScript9:
ret
WalkToHallOfFame_RLEMovment:
- db D_UP,4
- db D_LEFT,1
+ db D_UP, 4
+ db D_LEFT, 1
db $ff
GaryScript10:
diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm
index 94e64431..1bba347b 100755
--- a/scripts/halloffameroom.asm
+++ b/scripts/halloffameroom.asm
@@ -2,7 +2,7 @@ HallofFameRoomScript:
call EnableAutoTextBoxDrawing
ld hl, HallofFameRoomScriptPointers
ld a, [wHallOfFameRoomCurScript]
- jp CallFunctionInTable
+ jp JumpTable
HallofFameRoomScript_5a4aa:
xor a
diff --git a/scripts/indigoplateaulobby.asm b/scripts/indigoplateaulobby.asm
index c26f6f0c..36ed7fd5 100755
--- a/scripts/indigoplateaulobby.asm
+++ b/scripts/indigoplateaulobby.asm
@@ -20,6 +20,7 @@ IndigoPlateauLobbyTextPointers:
dw IndigoPlateauLobbyText3
dw IndigoCashierText
dw IndigoTradeNurseText
+ dw IndigoPlateauLobbyText6
IndigoHealNurseText:
TX_POKECENTER_NURSE
@@ -34,3 +35,8 @@ IndigoPlateauLobbyText3:
IndigoTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+IndigoPlateauLobbyText6:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/lance.asm b/scripts/lance.asm
index b0ec7f6a..7d67f6cd 100755
--- a/scripts/lance.asm
+++ b/scripts/lance.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, $0C
+ db D_UP, $0D
db D_LEFT, $0C
db D_DOWN, $07
db D_LEFT, $06
diff --git a/scripts/lavenderpokecenter.asm b/scripts/lavenderpokecenter.asm
index 61d0b887..67960c1b 100755
--- a/scripts/lavenderpokecenter.asm
+++ b/scripts/lavenderpokecenter.asm
@@ -7,6 +7,7 @@ LavenderPokecenterTextPointers:
dw LavenderPokecenterText2
dw LavenderPokecenterText3
dw LavenderTradeNurseText
+ dw LavenderPokecenterText5
LavenderTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
@@ -21,3 +22,8 @@ LavenderPokecenterText2:
LavenderPokecenterText3:
TX_FAR _LavenderPokecenterText3
db "@"
+
+LavenderPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/mansion1.asm b/scripts/mansion1.asm
index e37a09cd..fb0a92bc 100755
--- a/scripts/mansion1.asm
+++ b/scripts/mansion1.asm
@@ -46,7 +46,7 @@ Mansion1ReplaceBlock:
ret
Mansion1Script_Switches:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
ret nz
xor a
diff --git a/scripts/mansion2.asm b/scripts/mansion2.asm
index a9f9ffec..0ba8a245 100755
--- a/scripts/mansion2.asm
+++ b/scripts/mansion2.asm
@@ -42,7 +42,7 @@ Mansion2Script_5202f:
predef_jump ReplaceTileBlock
Mansion2Script_Switches:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
ret nz
xor a
diff --git a/scripts/mansion3.asm b/scripts/mansion3.asm
index afb46671..c71979d5 100755
--- a/scripts/mansion3.asm
+++ b/scripts/mansion3.asm
@@ -73,7 +73,7 @@ Mansion3Script_5225b:
ret
Mansion3Script_Switches:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
ret nz
xor a
diff --git a/scripts/mansion4.asm b/scripts/mansion4.asm
index 5ae3fea2..12420990 100755
--- a/scripts/mansion4.asm
+++ b/scripts/mansion4.asm
@@ -44,7 +44,7 @@ Mansion4Script_523cf:
ret
Mansion4Script_Switches:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
ret nz
xor a
diff --git a/scripts/mtmoon1.asm b/scripts/mtmoon1.asm
index 11f7e2e4..604e490a 100755
--- a/scripts/mtmoon1.asm
+++ b/scripts/mtmoon1.asm
@@ -97,42 +97,37 @@ MtMoon1TrainerHeader7:
MtMoon1Text1:
TX_ASM
ld hl, MtMoon1TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text2:
TX_ASM
ld hl, MtMoon1TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text3:
TX_ASM
ld hl, MtMoon1TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text4:
TX_ASM
ld hl, MtMoon1TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text5:
TX_ASM
ld hl, MtMoon1TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text6:
TX_ASM
ld hl, MtMoon1TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text7:
TX_ASM
ld hl, MtMoon1TrainerHeader7
+MtMoon1TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm
index 27651ef9..b8d14bd5 100755
--- a/scripts/mtmoon3.asm
+++ b/scripts/mtmoon3.asm
@@ -1,6 +1,6 @@
MtMoon3Script:
call EnableAutoTextBoxDrawing
- ld hl, MtMoon3TrainerHeader0
+ ld hl, MtMoon3TrainerHeaders
ld de, MtMoon3ScriptPointers
ld a, [wMtMoon3CurScript]
call ExecuteCurMapScriptInTable
@@ -37,13 +37,23 @@ CoordsData_49d37:
db $08,$0E
db $FF
-MtMoon3Script_49d58:
+MtMoon3Script_49cd7:
+ CheckAndResetEvent EVENT_57E
+ call nz, MtMoon3Script_49cec
xor a
ld [wJoyIgnore], a
+MtMoon3Script_49ce5:
ld [wMtMoon3CurScript], a
ld [wCurMapScript], a
ret
+MtMoon3Script_49cec:
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f93
+ ret
+
MtMoon3ScriptPointers:
dw MtMoon3Script0
dw DisplayEnemyTrainerTextAndStartBattle
@@ -51,23 +61,41 @@ MtMoon3ScriptPointers:
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 $d
- jp nz, MtMoon3Script_49d91
+ jp nz, .asm_49d4b
xor a
ld [hJoyHeld], a
ld a, $1
ld [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,57 +103,93 @@ 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 [wMtMoon3CurScript], a
- ld [wCurMapScript], a
+ call MtMoon3Script_49ce5
ret
MtMoon3Script4:
ld a, $1
ld [H_SPRITEINDEX], 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_49dd7
- ld hl, CoordsData_49df1
+ jr c, .asm_49db0
+ ld hl, CoordsData_49dd5
call ArePlayerCoordsInArray
- jp nc, CheckFightingMapTrainers
- ld de, MovementData_49df9
- jr .asm_49dda
-.asm_49dd7
- ld de, MovementData_49df8
-.asm_49dda
+ jr c, .asm_49d9b
+ ld hl, CoordsData_49dce
+ call ArePlayerCoordsInArray
+ 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
ld [H_SPRITEINDEX], a
call MoveSprite
ld a, $5
- ld [wMtMoon3CurScript], a
- ld [wCurMapScript], a
+ call MtMoon3Script_49ce5
ret
-CoordsData_49dea:
+CoordsData_49dc0:
db $07,$0C
db $06,$0B
db $05,$0C
db $FF
-CoordsData_49df1:
+CoordsData_49dc7:
+ db $07,$0C
+ db $FF
+
+PikachuMovementData_49dca:
+ db $00
+ db $35
+ db $33
+ db $3f
+
+CoordsData_49dce:
db $07,$0D
db $06,$0E
db $05,$0E
db $FF
-MovementData_49df8:
- db NPC_MOVEMENT_RIGHT
+CoordsData_49dd5:
+ db $07,$0D
+ db $FF
+
+PikachuMovementData_49dd8:
+ db $00
+ db $35
+ db $34
+ db $3f
-MovementData_49df9:
- db NPC_MOVEMENT_UP,$FF
+MovementData_49ddc:
+ db NPC_MOVEMENT_RIGHT
+MovementData_49ddd:
+ db NPC_MOVEMENT_UP
+ db $FF
MtMoon3Script5:
ld a, [wd730]
@@ -135,23 +199,213 @@ MtMoon3Script5:
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld a, $a
+ ld a, $b
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- CheckEvent EVENT_GOT_DOME_FOSSIL
+ CheckEvent EVENT_GOT_HELIX_FOSSIL
jr z, .asm_49e1d
- ld a, HS_MT_MOON_3_FOSSIL_2
+ ld a, HS_MT_MOON_3_FOSSIL_1
jr .asm_49e1f
.asm_49e1d
- ld a, HS_MT_MOON_3_FOSSIL_1
+ ld a, HS_MT_MOON_3_FOSSIL_2
.asm_49e1f
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
ld a, $0
- ld [wMtMoon3CurScript], 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
+ ld [hJoyHeld], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f84
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f84
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $c
+ ld [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
+ ld [H_SPRITEINDEX], 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
+ ld [H_SPRITEINDEX], 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
+ ld [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
+ ld [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
+ ld [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_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f93
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $f
+ call MtMoon3Script_49ce5
+ ret
+
+MtMoon3Script15:
+ call PlayDefaultMusic
+ xor a
+ ld [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
MtMoon3TextPointers:
@@ -162,208 +416,223 @@ MtMoon3TextPointers:
dw MtMoon3Text5
dw MtMoon3Text6
dw MtMoon3Text7
+ dw MtMoon3Text8
dw PickUpItemText
dw PickUpItemText
- dw MtMoon3Text_49f99
+ dw MtMoon3Text11
+ dw MtMoon3Text12
+ dw MtMoon3Text13
+ dw MtMoon3Text14
MtMoon3TrainerHeaders:
MtMoon3TrainerHeader0:
- dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0
- db ($4 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0
- dw MtMoon3BattleText2 ; TextBeforeBattle
- dw MtMoon3AfterBattleText2 ; TextAfterBattle
- dw MtMoon3EndBattleText2 ; TextEndBattle
- dw MtMoon3EndBattleText2 ; TextEndBattle
-
-MtMoon3TrainerHeader2:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2
- dw MtMoon3BattleText3 ; TextBeforeBattle
- dw MtMoon3AfterBattleText3 ; TextAfterBattle
- dw MtMoon3EndBattleText3 ; TextEndBattle
- dw MtMoon3EndBattleText3 ; TextEndBattle
+ dw MtMoon3BattleText3
+ dw MtMoon3AfterBattleText3
+ dw MtMoon3EndBattleText3
+ dw MtMoon3EndBattleText3
-MtMoon3TrainerHeader3:
+MtMoon3TrainerHeader1:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3
- dw MtMoon3BattleText4 ; TextBeforeBattle
- dw MtMoon3AfterBattleText4 ; TextAfterBattle
- dw MtMoon3EndBattleText4 ; TextEndBattle
- dw MtMoon3EndBattleText4 ; TextEndBattle
+ dw MtMoon3BattleText4
+ dw MtMoon3AfterBattleText4
+ dw MtMoon3EndBattleText4
+ dw MtMoon3EndBattleText4
-MtMoon3TrainerHeader4:
+MtMoon3TrainerHeader2:
dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_4
- db ($4 << 4) ; trainer's view range
+ db ($4 << 4)
dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_4
- dw MtMoon3BattleText5 ; TextBeforeBattle
- dw MtMoon3AfterBattleText5 ; TextAfterBattle
- dw MtMoon3EndBattleText5 ; TextEndBattle
- dw MtMoon3EndBattleText5 ; TextEndBattle
+ dw MtMoon3BattleText5
+ dw MtMoon3AfterBattleText5
+ dw MtMoon3EndBattleText5
+ dw MtMoon3EndBattleText5
+
+ db $FF
+
+MtMoon3Text2:
+MtMoon3Text6:
+ db "@"
+
+MtMoon3Text12:
+ TX_FAR _MtMoonJessieJamesText1
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
- db $ff
+MtMoon3Text13:
+ TX_FAR _MtMoonJessieJamesText2
+ db "@"
+
+MtMoon3JessieJamesEndBattleText:
+ TX_FAR _MtMoonJessieJamesText3
+ db "@"
+
+MtMoon3Text14:
+ TX_FAR _MtMoonJessieJamesText4
+ TX_ASM
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
MtMoon3Text1:
TX_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
+ and $81 ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
+ 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
ld a, [H_SPRITEINDEX]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $3
- ld [wMtMoon3CurScript], a
- ld [wCurMapScript], a
- jr .asm_49ebe
-.asm_49eb8
- ld hl, MtMoon3Text_49f94
- call PrintText
-.asm_49ebe
- jp TextScriptEnd
+ call MtMoon3Script_49ce5
+ jr .asm_4a05d
-MtMoon3Text2:
- TX_ASM
- ld hl, MtMoon3TrainerHeader0
- call TalkToTrainer
+.asm_4a057
+ ld hl, MtMoon3Text_4a11b
+ call PrintText
+.asm_4a05d
jp TextScriptEnd
MtMoon3Text3:
TX_ASM
- ld hl, MtMoon3TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ ld hl, MtMoon3TrainerHeader0
+ jr MtMoon3TalkToTrainer
MtMoon3Text4:
TX_ASM
- ld hl, MtMoon3TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ ld hl, MtMoon3TrainerHeader1
+ jr MtMoon3TalkToTrainer
+
MtMoon3Text5:
TX_ASM
- ld hl, MtMoon3TrainerHeader4
+ ld hl, MtMoon3TrainerHeader2
+MtMoon3TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
-MtMoon3Text6:
+MtMoon3Text7:
TX_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_3_FOSSIL_1
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_DOME_FOSSIL
ld a, $4
- ld [wMtMoon3CurScript], a
- ld [wCurMapScript], a
-.asm_49f21
+ call MtMoon3Script_49ce5
+.asm_4a0ab
jp TextScriptEnd
-MtMoon3Text_49f24:
+MtMoon3Text_4a0ae:
TX_FAR _MtMoon3Text_49f24
db "@"
-MtMoon3Text7:
+MtMoon3Text8:
TX_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_3_FOSSIL_2
ld [wMissableObjectIndex], a
predef HideObject
SetEvent EVENT_GOT_HELIX_FOSSIL
ld a, $4
- ld [wMtMoon3CurScript], a
- ld [wCurMapScript], a
-.asm_49f61
+ call MtMoon3Script_49ce5
+.asm_4a0e8
jp TextScriptEnd
-MtMoon3Text_49f64:
+MtMoon3Text_4a0eb:
TX_FAR _MtMoon3Text_49f64
db "@"
-MtMoon3Script_49f69:
- ld hl, MtMoon3Text_49f6f
+MtMoon3Script_4a0f0:
+ ld hl, MtMoon3Text_4a0f6
jp PrintText
-MtMoon3Text_49f6f:
+MtMoon3Text_4a0f6:
TX_FAR _MtMoon3Text_49f6f
- db $11, $d, "@"
+ TX_SFX_KEY_ITEM
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Script_49f76:
- ld hl, MtMoon3Text_49f7f
+MtMoon3Script_4a0fd:
+ ld hl, MtMoon3Text_4a106
call PrintText
jp TextScriptEnd
-MtMoon3Text_49f7f:
+MtMoon3Text_4a106:
TX_FAR _MtMoon3Text_49f7f
- db $d, "@"
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Text_49f85:
+MtMoon3Text_4a10c:
TX_FAR _MtMoon3Text_49f85
db "@"
-MtMoon3Text_49f8a:
+MtMoon3SuperNerdEndBattleText:
TX_FAR _MtMoon3Text_49f8a
db "@"
-MtMoon3Text_49f8f:
+MtMoon3Text_4a116:
TX_FAR _MtMoon3Text_49f8f
db "@"
-MtMoon3Text_49f94:
+MtMoon3Text_4a11b:
TX_FAR _MtMoon3Text_49f94
db "@"
-MtMoon3Text_49f99:
+MtMoon3Text11:
TX_FAR _MtMoon3Text_49f99
- db $11, "@"
-
-MtMoon3BattleText2:
- TX_FAR _MtMoon3BattleText2
- db "@"
-
-MtMoon3EndBattleText2:
- TX_FAR _MtMoon3EndBattleText2
- db "@"
-
-MtMoon3AfterBattleText2:
- TX_FAR _MtMoon3AfterBattleText2
+ TX_SFX_KEY_ITEM
db "@"
MtMoon3BattleText3:
@@ -401,3 +670,4 @@ MtMoon3EndBattleText5:
MtMoon3AfterBattleText5:
TX_FAR _MtMoon3AfterBattleText5
db "@"
+
diff --git a/scripts/mtmoon3_2.asm b/scripts/mtmoon3_2.asm
new file mode 100755
index 00000000..c6ec92b4
--- /dev/null
+++ b/scripts/mtmoon3_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
+ callab 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
+ callab LoadPikachuShadowIntoVRAM
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop hl
+ call ApplyPikachuMovementData
+ ret
diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm
index b5edee8d..76cc472a 100755
--- a/scripts/mtmoonpokecenter.asm
+++ b/scripts/mtmoonpokecenter.asm
@@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers:
dw MagikarpSalesmanText
dw MtMoonPokecenterText5
dw MtMoonTradeNurseText
+ dw MtMoonPokecenterText7
MtMoonHealNurseText:
- db $ff
+ TX_POKECENTER_NURSE
MtMoonPokecenterText2:
TX_FAR _MtMoonPokecenterText1
@@ -23,72 +24,17 @@ MtMoonPokecenterText3:
MagikarpSalesmanText:
TX_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
- ld [hMoney], a
- ld [hMoney + 2], a
- ld a, $5
- ld [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
+ callab MagikarpSalesman
jp TextScriptEnd
-.Text1
- TX_FAR _MagikarpSalesmanText1
- db "@"
-
-.RefuseText
- TX_FAR _MagikarpSalesmanNoText
- db "@"
-
-.NoMoneyText
- TX_FAR _MagikarpSalesmanNoMoneyText
- db "@"
-
-.Text2
- TX_FAR _MagikarpSalesmanText2
- db "@"
-
MtMoonPokecenterText5:
TX_FAR _MtMoonPokecenterText5
db "@"
MtMoonTradeNurseText:
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+MtMoonPokecenterText7:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/mtmoonpokecenter2.asm b/scripts/mtmoonpokecenter2.asm
new file mode 100755
index 00000000..6097342b
--- /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
+ ld [hMoney], a
+ ld [hMoney + 2], a
+ ld a, $5
+ ld [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
+ TX_FAR _MagikarpSalesmanText1
+ db "@"
+
+.RefuseText
+ TX_FAR _MagikarpSalesmanNoText
+ db "@"
+
+.NoMoneyText
+ TX_FAR _MagikarpSalesmanNoMoneyText
+ db "@"
+
+.Text2
+ TX_FAR _MagikarpSalesmanText2
+ db "@"
diff --git a/scripts/museum1f.asm b/scripts/museum1f.asm
index f24cc2c3..30e6f594 100755
--- a/scripts/museum1f.asm
+++ b/scripts/museum1f.asm
@@ -4,8 +4,9 @@ Museum1FScript:
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1FScriptPointers
- ld a, [wMuseum1fCurScript]
- jp CallFunctionInTable
+ ld a, [wMuseum1FCurScript]
+ call JumpTable
+ ret
Museum1FScriptPointers:
dw Museum1FScript0
@@ -40,207 +41,25 @@ Museum1FTextPointers:
Museum1FText1:
TX_ASM
- ld a, [wYCoord]
- cp $4
- jr nz, .asm_8774b
- ld a, [wXCoord]
- cp $d
- jp z, Museum1FScript_5c1f9
- jr .asm_b8709
-.asm_8774b
- cp $3
- jr nz, .asm_d49e7
- ld a, [wXCoord]
- cp $c
- 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
- ld [hJoyHeld], a
- ld hl, Museum1FText_5c21f
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_de133
- xor a
- ld [hMoney], a
- ld [hMoney + 1], a
- ld a, $50
- ld [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:
+ callba Func_f1c1b
jp TextScriptEnd
-Museum1FText_5c21a:
- TX_FAR _Museum1FText_5c21a
- db "@"
-
-Museum1FText_5c21f:
- TX_FAR _Museum1FText_5c21f
- db "@"
-
-Museum1FText_5c224:
- TX_FAR _Museum1FText_5c224
- db "@"
-
-Museum1FText_5c229:
- TX_FAR _Museum1FText_5c229
- db "@"
-
-Museum1FText_5c22e:
- TX_FAR _Museum1FText_5c22e
- db "@"
-
-Museum1FText_5c233:
- TX_FAR _Museum1FText_5c233
- db "@"
-
-Museum1FText_5c238:
- TX_FAR _Museum1FText_5c238
- db "@"
-
-Museum1FText_5c23d:
- TX_FAR _Museum1FText_5c23d
- db "@"
-
-Museum1FText_5c242:
- TX_FAR _Museum1FText_5c242
- db "@"
-
Museum1FText2:
TX_ASM
- ld hl, Museum1FText_5c251
- call PrintText
+ callba Func_f1d2a
jp TextScriptEnd
-Museum1FText_5c251:
- TX_FAR _Museum1FText_5c251
- db "@"
-
Museum1FText3:
TX_ASM
- CheckEvent EVENT_GOT_OLD_AMBER
- jr nz, .asm_5c285
- ld hl, Museum1FText_5c28e
- call PrintText
- lb bc, OLD_AMBER, 1
- call GiveItem
- jr nc, .BagFull
- SetEvent EVENT_GOT_OLD_AMBER
- ld a, HS_OLD_AMBER
- ld [wMissableObjectIndex], a
- predef HideObject
- ld hl, ReceivedOldAmberText
- jr .asm_5c288
-.BagFull
- ld hl, Museum1FText_5c29e
- jr .asm_5c288
-.asm_5c285
- ld hl, Museum1FText_5c299
-.asm_5c288
- call PrintText
+ callba Func_f1d36
jp TextScriptEnd
-Museum1FText_5c28e:
- TX_FAR _Museum1FText_5c28e
- db "@"
-
-ReceivedOldAmberText:
- TX_FAR _ReceivedOldAmberText
- db $0B, "@"
-
-Museum1FText_5c299:
- TX_FAR _Museum1FText_5c299
- db "@"
-
-Museum1FText_5c29e:
- TX_FAR _Museum1FText_5c29e
- db "@"
-
Museum1FText4:
TX_ASM
- ld hl, Museum1FText_5c2ad
- call PrintText
+ callba Func_f1d80
jp TextScriptEnd
-Museum1FText_5c2ad:
- TX_FAR _Museum1FText_5c2ad
- db "@"
-
Museum1FText5:
TX_ASM
- ld hl, Museum1FText_5c2bc
- call PrintText
+ callba Func_f1d8c
jp TextScriptEnd
-
-Museum1FText_5c2bc:
- TX_FAR _Museum1FText_5c2bc
- db "@"
diff --git a/scripts/museum1f2.asm b/scripts/museum1f2.asm
new file mode 100755
index 00000000..7e8878a2
--- /dev/null
+++ b/scripts/museum1f2.asm
@@ -0,0 +1,211 @@
+Func_f1c1b:
+ ld a, [wYCoord]
+ cp $4
+ jr nz, .asm_f1c2c
+ ld a, [wXCoord]
+ cp $d
+ jp z, .asm_f1cde
+ jr .asm_f1c48
+
+.asm_f1c2c
+ cp $3
+ jr nz, .asm_f1c38
+ ld a, [wXCoord]
+ cp a, $c
+ 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
+ ld [hJoyHeld], a
+ ld hl, Museum1FText_f1d02
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f1cbf
+ xor a
+ ld [hMoney], a
+ ld [hMoney + 1], a
+ ld a, $50
+ ld [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:
+ TX_FAR _Museum1FText_5c21a
+ db "@"
+
+Museum1FText_f1d02:
+ TX_FAR _Museum1FText_5c21f
+ db "@"
+
+Museum1FText_f1d07:
+ TX_FAR _Museum1FText_5c224
+ db "@"
+
+Museum1FText_f1d0c:
+ TX_FAR _Museum1FText_5c229
+ db "@"
+
+Museum1FText_f1d11:
+ TX_FAR _Museum1FText_5c22e
+ db "@"
+
+Museum1FText_f1d16:
+ TX_FAR _Museum1FText_5c233
+ db "@"
+
+Museum1FText_f1d1b:
+ TX_FAR _Museum1FText_5c238
+ db "@"
+
+Museum1FText_f1d20:
+ TX_FAR _Museum1FText_5c23d
+ db "@"
+
+Museum1FText_f1d25:
+ TX_FAR _Museum1FText_5c242
+ db "@"
+
+Func_f1d2a:
+ ld hl, Museum1FText_f1d31
+ call PrintText
+ ret
+
+Museum1FText_f1d31:
+ TX_FAR _Museum1FText_5c251
+ db "@"
+
+Func_f1d36:
+ CheckEvent EVENT_GOT_OLD_AMBER
+ jr nz, .asm_f1d64
+ ld hl, Museum1FText_f1d6b
+ call PrintText
+ lb bc, OLD_AMBER, 1
+ call GiveItem
+ jr nc, .asm_f1d5f
+ SetEvent EVENT_GOT_OLD_AMBER
+ ld a, HS_OLD_AMBER
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld hl, Museum1FText_f1d70
+ jr .asm_f1d67
+
+.asm_f1d5f
+ ld hl, Museum1FText_f1d7b
+ jr .asm_f1d67
+
+.asm_f1d64
+ ld hl, Museum1FText_f1d76
+.asm_f1d67
+ call PrintText
+ ret
+
+Museum1FText_f1d6b:
+ TX_FAR _Museum1FText_5c28e
+ db "@"
+
+Museum1FText_f1d70:
+ TX_FAR _ReceivedOldAmberText
+ TX_SFX_ITEM
+ db "@"
+
+Museum1FText_f1d76:
+ TX_FAR _Museum1FText_5c299
+ db "@"
+
+Museum1FText_f1d7b:
+ TX_FAR _Museum1FText_5c29e
+ db "@"
+
+Func_f1d80:
+ ld hl, Museum1FText_f1d87
+ call PrintText
+ ret
+
+Museum1FText_f1d87:
+ TX_FAR _Museum1FText_5c2ad
+ db "@"
+
+Func_f1d8c:
+ ld hl, Museum1FText_f1d93
+ call PrintText
+ ret
+
+Museum1FText_f1d93:
+ TX_FAR _Museum1FText_5c2bc
+ db "@"
diff --git a/scripts/museum2f.asm b/scripts/museum2f.asm
index 6ee8d72a..93a8396e 100755
--- a/scripts/museum2f.asm
+++ b/scripts/museum2f.asm
@@ -1,5 +1,6 @@
Museum2FScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Museum2FTextPointers:
dw Museum2FText1
@@ -27,9 +28,40 @@ Museum2FText4:
db "@"
Museum2FText5:
+ TX_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:
TX_FAR _Museum2FText5
db "@"
+Museum2FText_5c213:
+ TX_FAR _Museum2FPikachuText1
+ db "@"
+
+Museum2FText_5c218:
+ TX_FAR _Museum2FPikachuText2
+ db "@"
+
Museum2FText6:
TX_FAR _Museum2FText6
db "@"
diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm
index b91abd43..55b58b39 100755
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -7,7 +7,8 @@ OaksLabScript:
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLabScriptPointers
ld a, [wOaksLabCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
OaksLabScriptPointers:
dw OaksLabScript0
@@ -29,6 +30,10 @@ OaksLabScriptPointers:
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
ld [H_SPRITEINDEX], a
ld de, OakEntryMovement
call MoveSprite
@@ -90,7 +95,7 @@ OaksLabScript3:
xor a
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $5
+ ld a, $3
ld [H_SPRITEINDEX], a
xor a
ld [hSpriteFacingDirection], a
@@ -115,7 +120,6 @@ OaksLabScript4:
ld a, SPRITE_FACING_UP
ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $12
+ ld a, $e
ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
- ld a, $14
+ ld a, $10
ld [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
ld [H_SPRITEINDEX], a
xor a ; SPRITE_FACING_DOWN
ld [hSpriteFacingDirection], a
@@ -165,7 +173,7 @@ OaksLabScript6:
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call UpdateSprites
- ld a, $c
+ ld a, $a
ld [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, .asm_1ccf3
- ld de, .MiddleBallMovement2
- jr .asm_1ccf3
-
-.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 $FF
-
-.MiddleBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.Squirtle
- ld de, .RightBallMovement1
- ld a, [wYCoord]
- cp $4 ; is the player standing below the table?
- jr z, .asm_1ccf3
- ld de, .RightBallMovement2
- jr .asm_1ccf3
-
-.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 $FF
-
-.RightBallMovement2
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.Bulbasaur
- ld de, .LeftBallMovement1
- ld a, [wXCoord]
- cp $9 ; is the player standing to the right of the table?
- jr nz, .asm_1ccf3
- push hl
ld a, $1
- ld [H_SPRITEINDEX], a
- ld a, $4
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- push hl
- ld [hl], $4c
- inc hl
- inc hl
- ld [hl], $0
- pop hl
- inc h
- ld [hl], $8
- inc hl
- ld [hl], $9
- ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that
- pop hl
- jr .asm_1ccf3
-
-.LeftBallMovement1
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_RIGHT ; not yet terminated!
-.LeftBallMovement2
- db NPC_MOVEMENT_RIGHT
- db $FF
-
-.asm_1ccf3
- ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [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
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $d
- ld [hSpriteIndexOrTextID], a
- call DisplayTextID
- ld a, [wRivalStarterBallSpriteIndex]
- cp $2
- jr nz, .asm_1cd28
- ld a, HS_STARTER_BALL_1
- jr .asm_1cd32
-.asm_1cd28
- cp $3
- jr nz, .asm_1cd30
- ld a, HS_STARTER_BALL_2
- jr .asm_1cd32
-.asm_1cd30
- ld a, HS_STARTER_BALL_3
-.asm_1cd32
- 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
+ ld [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
- ld [H_SPRITEINDEX], a
- ld a, SPRITE_FACING_UP
- ld [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
ld [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
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
+ ld [hSpriteIndexOrTextID], a
+ xor a
ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
ld [hNPCPlayerRelativePosPerspective], a
ld a, $1
swap a
- ld [hNPCSpriteOffset], a
+ ld [hNPCPlayerYDistance], a
predef CalcPositionOfPlayerRelativeToNPC
ld a, [hNPCPlayerYDistance]
dec a
@@ -368,40 +330,25 @@ OaksLabScript10:
predef FindPathToPlayer
ld de, wNPCMovementDirections2
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], 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_SONY1
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,101 +386,123 @@ OaksLabScript12:
ld a, $1
ld [wSpriteIndex], a
call SetSpritePosition1
- ld a, $1
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
- ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
callba Music_RivalAlternateStart
ld a, $1
- ld [H_SPRITEINDEX], a
- ld de, .RivalExitMovement
+ ld [hSpriteIndexOrTextID], a
+ 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
- db $E0 ; change sprite facing direction
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db $FF
+.OaksLabMovement_RivalWalksOut1
+ db $e0
+ db $00
+ db $04
+ db $04
+ db $04
+ db $04
+ db $04
+ db $ff
-OaksLabScript14:
+OaksLabScript16:
ld a, [wd730]
bit 0, a
- jr nz, .asm_1ce8c
+ jr nz, .asm_1c6ed
+ 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
-; make the player keep facing the rival as he walks away
-.asm_1ce8c
+ ret
+
+.asm_1c6ed
ld a, [wNPCNumScriptedSteps]
- cp $5
- jr nz, .asm_1cea8
+ cp 5
+ jr nz, .asm_1c703
ld a, [wXCoord]
- cp $4
- jr nz, .asm_1cea1
+ cp 4
+ jr nz, .asm_1c6ff
ld a, SPRITE_FACING_RIGHT
- ld [wSpriteStateData1 + 9], a
- jr .done
-.asm_1cea1
+ jr .asm_1c707
+
+.asm_1c6ff
ld a, SPRITE_FACING_LEFT
- ld [wSpriteStateData1 + 9], a
- jr .done
-.asm_1cea8
- cp $4
+ jr .asm_1c707
+
+.asm_1c703
+ cp 4
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpriteStateData1 + 9], a
-.done
+ xor a
+.asm_1c707
+ ld [wPlayerFacingDirection], a
ret
-OaksLabScript15:
+OaksLabScript17:
+; Pikachu comes out
+ ld a, SPRITE_FACING_UP
+ ld [wPlayerFacingDirection], a
+ ld a, $2
+ ld [wPikachuSpawnState], a
+ callba SchedulePikachuSpawnForAfterText
+ call EnablePikachuOverworldSpriteDrawing
+ ld a, $1a
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $12
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabScript18:
+ ld a, $1b
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $16
+ ld [wOaksLabCurScript], a
+ ret
+
+OaksLabScript19:
xor a
ld [hJoyHeld], a
call EnableAutoTextBoxDrawing
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
- ld a, $15
+ ld a, $13
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- call OaksLabScript_1d02b
+ callab Func_f1be0
+ call OaksLabScript_1c8b9
ld a, HS_OAKS_LAB_RIVAL
ld [wMissableObjectIndex], a
predef ShowObject
@@ -530,50 +515,50 @@ OaksLabScript15:
call FillMemory
ld [hl], $ff
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $10
+ ld a, $14
ld [wOaksLabCurScript], a
ret
-OaksLabScript_1cefd:
+OaksLabScript_1c78e:
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $8
- ld [H_SPRITEINDEX], a
- xor a ; SPRITE_FACING_DOWN
+ ld a, $6
+ ld [hSpriteIndexOrTextID], a
+ xor a
ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $17
+ call OaksLabScript_1c78e
+ ld a, $15
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- call OaksLabScript_1cefd
- ld a, $18
+ call OaksLabScript_1c78e
+ ld a, $16
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call DelayFrame
- ld a, $19
+ ld a, $17
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
@@ -583,20 +568,22 @@ OaksLabScript16:
ld a, HS_POKEDEX_2
ld [wMissableObjectIndex], a
predef HideObject
- call OaksLabScript_1cefd
- ld a, $1a
+ call OaksLabScript_1c78e
+ ld a, $18
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
ld a, SPRITE_FACING_RIGHT
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a, $1b
+ ld a, $19
ld [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 +595,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, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [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,71 +622,73 @@ 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:
+OaksLabScript_1c897:
ld hl, wBagItems
- ld bc, $0000
-.loop
+ ld bc, 0
+.asm_1c89d
ld a, [hli]
cp $ff
ret z
cp OAKS_PARCEL
- jr z, .foundParcel
+ jr z, .asm_1c8a9
inc hl
inc c
- jr .loop
-.foundParcel
+ jr .asm_1c89d
+
+.asm_1c8a9
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
ld [$ffeb], a
ld a, $8
ld [$ffee], a
ld a, [wYCoord]
- cp $3
- jr nz, .asm_1d045
+ cp 3
+ jr nz, .asm_1c8d3
ld a, $4
ld [wNPCMovementDirections2Index], a
ld a, $30
ld b, $b
- 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, $a
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
ld [$ffec], a
ld a, b
ld [$ffed], a
@@ -712,11 +698,11 @@ OaksLabScript_1d02b:
ret
OaksLabScript_1d076:
- ld hl, OaksLabTextPointers + $36 ; starts at OaksLabText28
+ ld hl, OaksLabTextPointers2
ld a, l
ld [wMapTextPtr], a
ld a, h
- ld [wMapTextPtr+1], a
+ ld [wMapTextPtr + 1], a
ret
OaksLabTextPointers:
@@ -747,495 +733,428 @@ OaksLabTextPointers:
dw OaksLabText25
dw OaksLabText26
dw OaksLabText27
- dw OaksLabText28
- dw OaksLabText29
- dw OaksLabText30
- dw OaksLabText31
- dw OaksLabText32
- dw OaksLabText33
- dw OaksLabText34
- dw OaksLabText35
- dw OaksLabText36
- dw OaksLabText37
- dw OaksLabText38
-
-OaksLabText28:
+
+OaksLabTextPointers2:
+ dw OaksLabText1
+ dw OaksLabText2
+ dw OaksLabText3
+ dw OaksLabText4
+ dw OaksLabText5
+ dw OaksLabText6
+ dw OaksLabText7
+ dw OaksLabText8
+ dw OaksLabText9
+
OaksLabText1:
TX_ASM
CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2
- jr nz, .asm_1d0de
- ld hl, OaksLabGaryText1
+ jr nz, .asm_1c968
+ ld hl, OaksLabText_1c97d
call PrintText
- jr .asm_1d0f0
-.asm_1d0de
- bit 2, a
- jr nz, .asm_1d0ea
- ld hl, OaksLabText40
+ jr .asm_1c97a
+
+.asm_1c968
+ CheckEventReuseA EVENT_GOT_STARTER
+ jr nz, .asm_1c974
+ ld hl, OaksLabText_1c982
call PrintText
- jr .asm_1d0f0
-.asm_1d0ea
- ld hl, OaksLabText41
+ jr .asm_1c97a
+
+.asm_1c974
+ ld hl, OaksLabText_1c987
call PrintText
-.asm_1d0f0
+.asm_1c97a
jp TextScriptEnd
-OaksLabGaryText1:
+OaksLabText_1c97d:
TX_FAR _OaksLabGaryText1
db "@"
-OaksLabText40:
+OaksLabText_1c982:
TX_FAR _OaksLabText40
db "@"
-OaksLabText41:
+OaksLabText_1c987:
TX_FAR _OaksLabText41
db "@"
-OaksLabText29:
OaksLabText2:
TX_ASM
- ld a, STARTER2
- ld [wRivalStarterTemp], a
- ld a, $3
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER1
- ld b, $2
- jr OaksLabScript_1d133
-
-OaksLabText30:
-OaksLabText3:
- TX_ASM
- ld a, STARTER3
- ld [wRivalStarterTemp], a
- ld a, $4
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER2
- ld b, $3
- jr OaksLabScript_1d133
-
-OaksLabText31:
-OaksLabText4:
- TX_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 hl, OaksLabText39
+ 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, OaksLabText_1c9a7
call PrintText
jp TextScriptEnd
-OaksLabText39:
+OaksLabText_1c9a7:
TX_FAR _OaksLabText39
db "@"
-OaksLabScript_1d157:
- ld a, $5
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- ld [hl], SPRITE_FACING_DOWN
+OaksLabScript_1c9ac:
ld a, $1
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], 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:
- TX_FAR _OaksLabCharmanderText
- db "@"
-
-OaksLabLookAtSquirtle:
- ld hl, OaksLabSquirtleText
- jr OaksLabMonChoiceMenu
-OaksLabSquirtleText:
- TX_FAR _OaksLabSquirtleText
- db "@"
-
-OaksLabLookAtBulbasaur:
- ld hl, OaksLabBulbasaurText
- jr OaksLabMonChoiceMenu
-OaksLabBulbasaurText:
- TX_FAR _OaksLabBulbasaurText
- db "@"
-
-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
- 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
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
ld a, $8
ld [wOaksLabCurScript], a
-OaksLabMonChoiceEnd:
jp TextScriptEnd
-OaksLabMonEnergeticText:
- TX_FAR _OaksLabMonEnergeticText
- db "@"
-
-OaksLabReceivedMonText:
- TX_FAR _OaksLabReceivedMonText
- TX_SFX_KEY_ITEM
- db "@"
-
-OaksLabScript_1d22d:
- ld a, $5
- ld [H_SPRITEINDEX], a
- ld a, $9
- ld [H_SPRITEDATAOFFSET], a
- call GetPointerWithinSpriteStateData1
- ld [hl], $0
- ld hl, OaksLabLastMonText
- call PrintText
- jp TextScriptEnd
-
-OaksLabLastMonText:
- TX_FAR _OaksLabLastMonText
- db "@"
-
-OaksLabText32:
-OaksLabText5:
+OaksLabText3:
TX_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
- ld b,POKE_BALL
+ 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
- ld hl, OaksLabDeliverParcelText
+ jr .asm_1ca6f
+
+.asm_1ca3a
+ ld hl, OaksLabText_1ca81
call PrintText
- call OaksLabScript_RemoveParcel
- ld a, $f
+ call OaksLabScript_1c897
+ ld a, $13
ld [wOaksLabCurScript], a
- jr .asm_1d2ed
-.asm_1d2c8
- ld hl, OaksLabAroundWorldText
+ jr .asm_1ca6f
+
+.asm_1ca4a
+ ld hl, OaksLabText_1ca8b
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
+ ld hl, OaksLabText_1ca90
call PrintText
- jr .asm_1d2ed
-.asm_1d2e7
- ld hl, OaksLabPleaseVisitText
+ jr .asm_1ca6f
+
+.asm_1ca69
+ ld hl, OaksLabText_1ca9a
call PrintText
-.asm_1d2ed
+.asm_1ca6f
jp TextScriptEnd
-OaksLabText_1d2f0:
- TX_FAR _OaksLabText_1d2f0
+OaksLabText_1ca72:
+ TX_FAR _OaksLabPikachuText
db "@"
-OaksLabText_1d2f5:
+OaksLabText_1ca77:
TX_FAR _OaksLabText_1d2f5
db "@"
-OaksLabText_1d2fa:
+OaksLabText_1ca7c:
TX_FAR _OaksLabText_1d2fa
db "@"
-OaksLabDeliverParcelText:
+OaksLabText_1ca81:
TX_FAR _OaksLabDeliverParcelText1
TX_SFX_KEY_ITEM
TX_FAR _OaksLabDeliverParcelText2
db "@"
-OaksLabAroundWorldText:
+OaksLabText_1ca8b:
TX_FAR _OaksLabAroundWorldText
db "@"
-OaksLabGivePokeballsText:
+OaksLabText_1ca90:
TX_FAR _OaksLabGivePokeballsText1
TX_SFX_KEY_ITEM
TX_FAR _OaksLabGivePokeballsText2
db "@"
-OaksLabPleaseVisitText:
+OaksLabText_1ca9a:
TX_FAR _OaksLabPleaseVisitText
db "@"
-OaksLabText_1d31d:
+OaksLabText_1ca9f:
TX_FAR _OaksLabText_1d31d
db "@"
-OaksLabText34:
-OaksLabText33:
-OaksLabText7:
-OaksLabText6:
+OaksLabText4:
+OaksLabText5:
TX_ASM
- ld hl, OaksLabText_1d32c
+ ld hl, OaksLabText_1caae
call PrintText
jp TextScriptEnd
-OaksLabText_1d32c:
+OaksLabText_1caae:
TX_FAR _OaksLabText_1d32c
db "@"
-OaksLabText35:
-OaksLabText8:
+OaksLabText6:
TX_FAR _OaksLabText8
db "@"
-OaksLabText36:
-OaksLabText9:
+OaksLabText7:
TX_ASM
- ld hl, OaksLabText_1d340
+ ld hl, OaksLabText_1cac2
call PrintText
jp TextScriptEnd
-OaksLabText_1d340:
+OaksLabText_1cac2:
TX_FAR _OaksLabText_1d340
db "@"
-OaksLabText17:
+OaksLabText13:
TX_ASM
- ld hl, OaksLabRivalWaitingText
+ ld hl, OaksLabText_1cad1
call PrintText
jp TextScriptEnd
-OaksLabRivalWaitingText:
+OaksLabText_1cad1:
TX_FAR _OaksLabRivalWaitingText
db "@"
-OaksLabText18:
+OaksLabText14:
TX_ASM
- ld hl, OaksLabChooseMonText
+ ld hl, OaksLabText_1cae0
call PrintText
jp TextScriptEnd
-OaksLabChooseMonText:
+OaksLabText_1cae0:
TX_FAR _OaksLabChooseMonText
db "@"
-OaksLabText19:
+OaksLabText15:
TX_ASM
- ld hl, OaksLabRivalInterjectionText
+ ld hl, OaksLabText_1caef
call PrintText
jp TextScriptEnd
-OaksLabRivalInterjectionText:
+OaksLabText_1caef:
TX_FAR _OaksLabRivalInterjectionText
db "@"
-OaksLabText20:
+OaksLabText16:
TX_ASM
- ld hl, OaksLabBePatientText
+ ld hl, OaksLabText_1cafe
call PrintText
jp TextScriptEnd
-OaksLabBePatientText:
+OaksLabText_1cafe:
TX_FAR _OaksLabBePatientText
db "@"
-OaksLabText12:
+OaksLabText17:
TX_ASM
- ld hl, OaksLabLeavingText
+ ld hl, OaksLabText_1cb25
+ call PrintText
+ ld hl, OaksLabText_1cb2a
+ call PrintText
+ ld hl, OaksLabText_1cb30
+ call PrintText
+ ld hl, OaksLabText_1cb35
+ call PrintText
+ ld hl, OaksLabText_1cb3a
call PrintText
jp TextScriptEnd
-OaksLabLeavingText:
- TX_FAR _OaksLabLeavingText
+OaksLabText_1cb25:
+ TX_FAR _OaksLabRivalTakesText1
db "@"
-OaksLabText13:
+OaksLabText_1cb2a:
+ TX_FAR _OaksLabRivalTakesText2
+ TX_SFX_KEY_ITEM
+ db "@"
+
+OaksLabText_1cb30:
+ TX_FAR _OaksLabRivalTakesText3
+ db "@"
+
+OaksLabText_1cb35:
+ TX_FAR _OaksLabRivalTakesText4
+ db "@"
+
+OaksLabText_1cb3a:
+ TX_FAR _OaksLabRivalTakesText5
+ db "@"
+
+OaksLabText18:
TX_ASM
- ld hl, OaksLabRivalPickingMonText
+ ld a, PIKACHU
+ ld [wPlayerStarter], a
+ ld [wd11e], a
+ call GetMonName
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OaksLabText_1cb85
+ call PrintText
+ ld hl, OaksLabText_1cb8a
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:
- TX_FAR _OaksLabRivalPickingMonText
+OaksLabText_1cb85:
+ TX_FAR _OaksLabOakGivesText
db "@"
-OaksLabText14:
+OaksLabText_1cb8a:
+ TX_FAR _OaksLabReceivedText
+ TX_SFX_KEY_ITEM
+ db "@"
+
+OaksLabText10:
TX_ASM
- ld hl, OaksLabRivalReceivedMonText
+ ld hl, OaksLabText_1cb9a
call PrintText
jp TextScriptEnd
-OaksLabRivalReceivedMonText:
- TX_FAR _OaksLabRivalReceivedMonText
- TX_SFX_KEY_ITEM
+OaksLabText_1cb9a:
+ TX_FAR _OaksLabLeavingText
db "@"
-OaksLabText15:
+OaksLabText11:
TX_ASM
- ld hl, OaksLabRivalChallengeText
+ ld hl, OaksLabText_1cba9
call PrintText
jp TextScriptEnd
-OaksLabRivalChallengeText:
+OaksLabText_1cba9:
TX_FAR _OaksLabRivalChallengeText
db "@"
-OaksLabText_1d3be:
+OaksLabRivalDefeatedText:
TX_FAR _OaksLabText_1d3be
db "@"
-OaksLabText_1d3c3:
+OaksLabRivalBeatYouText:
TX_FAR _OaksLabText_1d3c3
db "@"
-OaksLabText16:
+OaksLabText12:
TX_ASM
- ld hl, OaksLabRivalToughenUpText
+ ld hl, OaksLabText_1cbc2
call PrintText
jp TextScriptEnd
-OaksLabRivalToughenUpText:
+OaksLabText_1cbc2:
TX_FAR _OaksLabRivalToughenUpText
db "@"
-OaksLabText21:
+OaksLabText26:
+ TX_ASM
+ ldpikacry e, PikachuCry2
+ callab PlayPikachuSoundClip
+ ld hl, OaksLabText_1cbdb
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabText_1cbdb:
+ TX_FAR _OaksLabPikachuDislikesPokeballsText1
+ db "@"
+
+OaksLabText27:
+ TX_ASM
+ ld hl, OaksLabText_1cbea
+ call PrintText
+ jp TextScriptEnd
+
+OaksLabText_1cbea:
+ TX_FAR _OaksLabPikachuDislikesPokeballsText2
+ db "@"
+
+OaksLabText19:
TX_FAR _OaksLabText21
db "@"
-OaksLabText22:
+OaksLabText20:
TX_FAR _OaksLabText22
db "@"
-OaksLabText23:
+OaksLabText21:
TX_FAR _OaksLabText23
db "@"
-OaksLabText24:
+OaksLabText22:
TX_FAR _OaksLabText24
db "@"
-OaksLabText25:
+OaksLabText23:
TX_FAR _OaksLabText25
TX_SFX_KEY_ITEM
db "@"
-OaksLabText26:
+OaksLabText24:
TX_FAR _OaksLabText26
db "@"
-OaksLabText27:
+OaksLabText25:
TX_FAR _OaksLabText27
db "@"
-OaksLabText38:
-OaksLabText37:
-OaksLabText11:
-OaksLabText10:
+OaksLabText8:
+OaksLabText9:
TX_ASM
- ld hl, OaksLabText_1d405
+ ld hl, OaksLabText_1c31d
call PrintText
jp TextScriptEnd
-OaksLabText_1d405:
+OaksLabText_1c31d:
TX_FAR _OaksLabText_1d405
db "@"
diff --git a/scripts/oakslab2.asm b/scripts/oakslab2.asm
new file mode 100755
index 00000000..5e4e98a4
--- /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 50cfb970..803aa4f3 100755
--- a/scripts/pallettown.asm
+++ b/scripts/pallettown.asm
@@ -1,12 +1,12 @@
PalletTownScript:
CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK
- jr z,.next
+ jr z, .next
SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS
.next
call EnableAutoTextBoxDrawing
- ld hl,PalletTownScriptPointers
- ld a,[wPalletTownCurScript]
- jp CallFunctionInTable
+ ld hl, PalletTownScriptPointers
+ ld a, [wPalletTownCurScript]
+ jp JumpTable
PalletTownScriptPointers:
dw PalletTownScript0
@@ -16,136 +16,208 @@ PalletTownScriptPointers:
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?
+ ld a, [wYCoord]
+ 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
- ld [hJoyHeld],a
- ld a,PLAYER_DIR_DOWN
- ld [wPlayerMovingDirection],a
- ld a,$FF
- call PlaySound ; stop music
+ ld [hJoyHeld], a
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, PLAYER_DIR_UP
+ ld [wPlayerMovingDirection], a
+ call StopAllMusic
ld a, BANK(Music_MeetProfOak)
- ld c,a
- ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music
+ ld c, a
+ ld a, MUSIC_MEET_PROF_OAK
call PlayMusic
- ld a,$FC
- ld [wJoyIgnore],a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
- ld a,1
- ld [wPalletTownCurScript],a
+ ld a, 1
+ ld [wPalletTownCurScript], a
ret
PalletTownScript1:
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
xor a
- ld [wcf0d],a
- ld a,1
- ld [hSpriteIndexOrTextID],a
+ ld [wcf0d], a
+ ld a, 1
+ ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a,$FF
- ld [wJoyIgnore],a
- ld a,HS_PALLET_TOWN_OAK
- ld [wMissableObjectIndex],a
+ 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 [wPalletTownCurScript],a
+ 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
- ld [H_SPRITEINDEX],a
- ld a,SPRITE_FACING_UP
- ld [hSpriteFacingDirection],a
- call SetSpriteFacingDirectionAndDelay
call Delay3
- ld a,1
- ld [wYCoord],a
- ld a,1
- ld [hNPCPlayerRelativePosPerspective],a
- ld a,1
+ ld a, 0
+ ld [wYCoord], a
+ ld a, 1
+ ld [hNPCPlayerRelativePosPerspective], a
+ ld a, 1
swap a
- ld [hNPCSpriteOffset],a
+ ld [hNPCSpriteOffset], a
predef CalcPositionOfPlayerRelativeToNPC
- ld hl,hNPCPlayerYDistance
+ ld hl, hNPCPlayerYDistance
dec [hl]
predef FindPathToPlayer ; load Oak’s movement into wNPCMovementDirections2
- ld de,wNPCMovementDirections2
- ld a,1 ; oak
- ld [H_SPRITEINDEX],a
+ ld de, wNPCMovementDirections2
+ ld a, 1 ; oak
+ ld [H_SPRITEINDEX], a
call MoveSprite
- ld a,$FF
- ld [wJoyIgnore],a
; trigger the next script
- ld a,3
- ld [wPalletTownCurScript],a
+ ld a, 3
+ ld [wPalletTownCurScript], a
ret
PalletTownScript3:
- ld a,[wd730]
- bit 0,a
+ ld a, [wd730]
+ bit 0, a
ret nz
- xor a ; ld a, SPRITE_FACING_DOWN
- ld [wSpriteStateData1 + 9],a
- ld a,1
- ld [wcf0d],a
- ld a,$FC
- ld [wJoyIgnore],a
- ld a,1
- ld [hSpriteIndexOrTextID],a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
+ ld [wJoyIgnore], a
+ ld a, 1
+ ld [wcf0d], a
+ ld a, $2
+ ld [wSpriteStateData1 + 1 * $10 + 1], a
+ ld a, SPRITE_FACING_UP
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
+ ld a, 1
+ ld [hSpriteIndexOrTextID], a
call DisplayTextID
-; set up movement script that causes the player to follow Oak to his lab
- ld a,$FF
- ld [wJoyIgnore],a
- ld a,1
- ld [wSpriteIndex],a
- xor a
- ld [wNPCMovementScriptFunctionNum],a
- ld a,1
- ld [wNPCMovementScriptPointerTableNum],a
- ld a,[H_LOADEDROMBANK]
- ld [wNPCMovementScriptBank],a
+ ; oak faces the horizontally adjacent patch of grass to face pikachu
+ ld a, $FF
+ ld [wJoyIgnore], a
+ 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
+ ld a, 4
+ ld [wPalletTownCurScript], a
ret
PalletTownScript4:
- ld a,[wNPCMovementScriptPointerTableNum]
- and a ; is the movement script over?
- ret nz
+ ; 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
+ ld a, 5
+ ld [wPalletTownCurScript], a
ret
PalletTownScript5:
+ ld a, $2
+ ld [wcf0d], a
+ ld a, $1
+ ld [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
+ ld [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 [wPlayerFacingDirection], a
+ ld a, $1
+ ld [wSpriteIndex], a
+ xor a
+ ld [wNPCMovementScriptFunctionNum], a
+ ld a, $1
+ ld [wNPCMovementScriptPointerTableNum], a
+ ld a, [H_LOADEDROMBANK]
+ ld [wNPCMovementScriptBank], a
+
+ ; trigger the next script
+ ld a, 7
+ ld [wPalletTownCurScript], a
+ ret
+
+PalletTownScript7:
+ ld a, [wNPCMovementScriptPointerTableNum]
+ and a
+ ret nz
+
+ ; trigger the next script
+ ld a, 8
+ ld [wPalletTownCurScript], a
+ ret
+
+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
+ ld a, HS_DAISY_SITTING
+ ld [wMissableObjectIndex], a
predef HideObject
- ld a,HS_DAISY_WALKING
- ld [wMissableObjectIndex],a
+ 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
PalletTownTextPointers:
@@ -156,18 +228,25 @@ PalletTownTextPointers:
dw PalletTownText5
dw PalletTownText6
dw PalletTownText7
+ dw PalletTownText8
PalletTownText1:
TX_ASM
- ld a,[wcf0d]
+ ld a, [wcf0d]
and a
- jr nz,.next
- ld a,1
- ld [wDoNotWaitForButtonPressAfterDisplayingText],a
- ld hl,OakAppearsText
+ jr nz, .next
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, OakAppearsText
jr .done
.next
- ld hl,OakWalksUpText
+ dec a
+ jr nz, .asm_18fd3
+ ld hl, OakWalksUpText
+ jr .done
+
+.asm_18fd3
+ ld hl, PalletTownText_19002
.done
call PrintText
jp TextScriptEnd
@@ -175,40 +254,49 @@ PalletTownText1:
OakAppearsText:
TX_FAR _OakAppearsText
TX_ASM
- ld c,10
+ ld c, 10
call DelayFrames
- xor a
- ld [wEmotionBubbleSpriteIndex],a ; player's sprite
- ld [wWhichEmotionBubble],a ; EXCLAMATION_BUBBLE
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerMovingDirection], a
+ ld a, 0
+ ld [wEmotionBubbleSpriteIndex], a ; player's sprite
+ ld a, 0
+ ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE
predef EmotionBubble
- ld a,PLAYER_DIR_DOWN
- ld [wPlayerMovingDirection],a
jp TextScriptEnd
OakWalksUpText:
TX_FAR _OakWalksUpText
db "@"
-PalletTownText2: ; 0x18fd3 girl
+PalletTownText_19002:
+ TX_FAR _OakWhewText
+ db "@"
+
+PalletTownText8: ; girl
+ TX_FAR _OakGrassText
+ db "@"
+
+PalletTownText2: ; fat man
TX_FAR _PalletTownText2
db "@"
-PalletTownText3: ; 0x18fd8 fat man
+PalletTownText3: ; sign by lab
TX_FAR _PalletTownText3
db "@"
-PalletTownText4: ; 0x18fdd sign by lab
+PalletTownText4: ; sign by fence
TX_FAR _PalletTownText4
db "@"
-PalletTownText5: ; 0x18fe2 sign by fence
+PalletTownText5: ; sign by Red’s house
TX_FAR _PalletTownText5
db "@"
-PalletTownText6: ; 0x18fe7 sign by Red’s house
+PalletTownText6: ; sign by Blue’s house
TX_FAR _PalletTownText6
db "@"
-PalletTownText7: ; 0x18fec sign by Blue’s house
+PalletTownText7:
TX_FAR _PalletTownText7
db "@"
diff --git a/scripts/pewtercity.asm b/scripts/pewtercity.asm
index 5ee83f34..b7271b05 100755
--- a/scripts/pewtercity.asm
+++ b/scripts/pewtercity.asm
@@ -1,8 +1,11 @@
PewterCityScript:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, PewterCityScriptPointers
ld a, [wPewterCityCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
PewterCityScriptPointers:
dw PewterCityScript0
@@ -15,7 +18,7 @@ PewterCityScriptPointers:
PewterCityScript0:
xor a
- ld [wMuseum1fCurScript], a
+ ld [wMuseum1FCurScript], a
ResetEvent EVENT_BOUGHT_MUSEUM_TICKET
call PewterCityScript_1925e
ret
@@ -26,7 +29,7 @@ PewterCityScript_1925e:
ld hl, CoordsData_19277
call ArePlayerCoordsInArray
ret nc
- ld a, $f0
+ ld a, $fc
ld [wJoyIgnore], a
ld a, $5
ld [hSpriteIndexOrTextID], a
@@ -48,9 +51,9 @@ PewterCityScript1:
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, ($3 << 4) | SPRITE_FACING_UP
+ ld a, SPRITE_FACING_UP
ld [hSpriteImageIndex], a
- call SetSpriteImageIndexAfterSettingFacingDirection
+ call SpriteFunc_34a1
call PlayDefaultMusic
ld hl, wFlags_0xcd60
set 4, [hl]
@@ -115,10 +118,7 @@ PewterCityScript4:
ld [H_SPRITEINDEX], a
ld a, SPRITE_FACING_LEFT
ld [hSpriteFacingDirection], a
- call SetSpriteFacingDirectionAndDelay
- ld a, ($1 << 4) | SPRITE_FACING_LEFT
- ld [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 7e5becf2..6014cf33 100755
--- a/scripts/pewtergym.asm
+++ b/scripts/pewtergym.asm
@@ -14,7 +14,8 @@ PewterGymScript:
PewterGymScript_5c3a4:
ld hl, Gym1CityName
ld de, Gym1LeaderName
- jp LoadGymLeaderAndCityName
+ call LoadGymLeaderAndCityName
+ ret
Gym1CityName:
db "PEWTER CITY@"
@@ -41,7 +42,6 @@ PewterGymScript3:
jp z, PewterGymScript_5c3bf
ld a, $f0
ld [wJoyIgnore], a
-
PewterGymScript_5c3df:
ld a, $4
ld [hSpriteIndexOrTextID], a
@@ -55,6 +55,7 @@ PewterGymScript_5c3df:
call DisplayTextID
SetEvent EVENT_GOT_TM34
jr .asm_5c408
+
.BagFull
ld a, $6
ld [hSpriteIndexOrTextID], a
@@ -149,7 +150,7 @@ PewterGymText4:
PewterGymText5:
TX_FAR _ReceivedTM34Text
- db $0B
+ TX_SFX_ITEM
TX_FAR _TM34ExplanationText
db "@"
@@ -159,7 +160,7 @@ PewterGymText6:
PewterGymText_5c4bc:
TX_FAR _PewterGymText_5c4bc
- db $0B
+ TX_SFX_ITEM
TX_FAR _PewterGymText_5c4c1
db "@"
@@ -192,6 +193,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
@@ -208,6 +212,11 @@ PewterGymText3:
.asm_5c512
jp TextScriptEnd
+.asm_5c3fa
+ ld hl, PewterGymText_5c41c
+ call PrintText
+ jp TextScriptEnd
+
PewterGymText_5c515:
TX_FAR _PewterGymText_5c515
db "@"
@@ -227,3 +236,8 @@ PewterGymText_5c524:
PewterGymText_5c529:
TX_FAR _PewterGymText_5c529
db "@"
+
+PewterGymText_5c41c:
+ TX_FAR _PewterGymGuyText
+ db "@"
+
diff --git a/scripts/pewterhouse1.asm b/scripts/pewterhouse1.asm
index 8fa8dc3c..ba0f631f 100755
--- a/scripts/pewterhouse1.asm
+++ b/scripts/pewterhouse1.asm
@@ -1,5 +1,6 @@
PewterHouse1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterHouse1TextPointers:
dw PewterHouse1Text1
diff --git a/scripts/pewtermart.asm b/scripts/pewtermart.asm
index d5281704..64915563 100755
--- a/scripts/pewtermart.asm
+++ b/scripts/pewtermart.asm
@@ -14,6 +14,7 @@ PewterMartText2:
ld hl, .Text
call PrintText
jp TextScriptEnd
+
.Text
TX_FAR _PewterMartText2
db "@"
@@ -23,6 +24,7 @@ PewterMartText3:
ld hl, .Text
call PrintText
jp TextScriptEnd
+
.Text
TX_FAR _PewterMartText3
db "@"
diff --git a/scripts/pewterpokecenter.asm b/scripts/pewterpokecenter.asm
index bea7a47d..78bfc9fa 100755
--- a/scripts/pewterpokecenter.asm
+++ b/scripts/pewterpokecenter.asm
@@ -1,12 +1,17 @@
PewterPokecenterScript:
+ ld hl, wd492
+ set 7, [hl]
call Serial_TryEstablishingExternallyClockedConnection
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterPokecenterTextPointers:
dw PewterHealNurseText
dw PewterPokecenterText2
dw PewterJigglypuffText
dw PewterTradeNurseText
+ dw PewterPokecenterText5
+ dw PewterPokecenterText6
PewterHealNurseText:
TX_POKECENTER_NURSE
@@ -17,68 +22,18 @@ PewterPokecenterText2:
PewterJigglypuffText:
TX_ASM
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, .Text
- call PrintText
- StopAllMusic
- ld c, 32
- call DelayFrames
- ld hl, JigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
-
- ld a, [Sprite03SpriteImageIdx]
- 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
-.loop
- ld a, [hl]
- ld [Sprite03SpriteImageIdx], 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 + CH1]
- or b
- jr nz, .loop
-
- ld c, 48
- call DelayFrames
- call PlayDefaultMusic
+ callba PewterJigglypuff
jp TextScriptEnd
-.Text
- TX_FAR _PewterJigglypuffText
- db "@"
-
-JigglypuffFacingDirections:
- db $30 | SPRITE_FACING_DOWN
- db $30 | SPRITE_FACING_LEFT
- db $30 | SPRITE_FACING_UP
- db $30 | SPRITE_FACING_RIGHT
-JigglypuffFacingDirectionsEnd:
-
PewterTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+PewterPokecenterText5:
+ TX_ASM
+ callba Func_f1d98
+ jp TextScriptEnd
+
+PewterPokecenterText6:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/pewterpokecenter2.asm b/scripts/pewterpokecenter2.asm
new file mode 100755
index 00000000..9f035fa9
--- /dev/null
+++ b/scripts/pewterpokecenter2.asm
@@ -0,0 +1,72 @@
+Func_f1d98:
+ ld hl, PewterPokecenterText_f1d9f
+ call PrintText
+ ret
+
+PewterPokecenterText_f1d9f:
+ TX_FAR _PewterPokecenterText3
+ db "@"
+
+PewterJigglypuff:
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .Text
+ call PrintText
+ call StopAllMusic
+ ld c, 32
+ call DelayFrames
+ ld hl, JigglypuffSpinData
+ ld de, wJigglypuffFacingDirections
+ ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData
+ call CopyData
+ ld a, [wSpriteStateData1 + 3 * $10 + 2]
+ ld hl, wJigglypuffFacingDirections
+.asm_f1dc9
+ cp [hl]
+ inc hl
+ jr nz, .asm_f1dc9
+ dec hl
+ push hl
+ ld c, BANK(Music_JigglypuffSong)
+ ld a, MUSIC_JIGGLYPUFF_SONG
+ call PlayMusic
+ pop hl
+.asm_f1dd7
+ ld a, [hl]
+ ld [wSpriteStateData1 + 3 * $10 + 2], a
+ push hl
+ ld hl, wJigglypuffFacingDirections
+ ld de, wJigglypuffFacingDirections2
+ ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData
+ call CopyData
+ ld a, [wJigglypuffFacingDirections2]
+ ld [wcd42], a
+ pop hl
+ ld c, 24
+ call DelayFrames
+ ld a, [wChannelSoundIDs]
+ ld b, a
+ ld a, [wChannelSoundIDs + 1]
+ or b
+ jr nz, .asm_f1dd7
+ ld c, 48
+ call DelayFrames
+ call PlayDefaultMusic
+ ld a, [wd472]
+ bit 7, a
+ ret z
+ callab CheckPikachuFaintedOrStatused
+ ret c
+ call DisablePikachuFollowingPlayer
+ ret
+
+.Text
+ TX_FAR _PewterJigglypuffText
+ db "@"
+
+JigglypuffSpinData:
+ db $40 | SPRITE_FACING_DOWN
+ db $40 | SPRITE_FACING_LEFT
+ db $40 | SPRITE_FACING_UP
+ db $40 | SPRITE_FACING_RIGHT
+JigglypuffSpinDataEnd:
diff --git a/scripts/pokemontower1.asm b/scripts/pokemontower1.asm
index 6d9d1b3f..1209b875 100755
--- a/scripts/pokemontower1.asm
+++ b/scripts/pokemontower1.asm
@@ -1,5 +1,6 @@
PokemonTower1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PokemonTower1TextPointers:
dw PokemonTower1Text1
diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm
index 383b175d..0a0aa3d5 100755
--- a/scripts/pokemontower2.asm
+++ b/scripts/pokemontower2.asm
@@ -2,7 +2,7 @@ PokemonTower2Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower2ScriptPointers
ld a, [wPokemonTower2CurScript]
- jp CallFunctionInTable
+ jp JumpTable
PokemonTower2Script_604fe:
xor a
@@ -22,9 +22,7 @@ PokemonTower2Script0:
ld hl, CoordsData_6055e
call ArePlayerCoordsInArray
ret nc
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -71,14 +69,13 @@ PokemonTower2Script1:
ld de, MovementData_605b2
CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
jr nz, .asm_60589
+ callab Func_f1e22
ld de, MovementData_605a9
.asm_60589
ld a, $1
ld [H_SPRITEINDEX], a
call MoveSprite
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $2
ld [wPokemonTower2CurScript], a
@@ -144,21 +141,8 @@ PokemonTower2Text1:
call SaveEndBattleTextPointers
ld a, OPP_SONY2
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/pokemontower2_2.asm b/scripts/pokemontower2_2.asm
new file mode 100755
index 00000000..42659da3
--- /dev/null
+++ b/scripts/pokemontower2_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/pokemontower7.asm b/scripts/pokemontower7.asm
index 15c79b4d..9a016d84 100755
--- a/scripts/pokemontower7.asm
+++ b/scripts/pokemontower7.asm
@@ -1,76 +1,241 @@
PokemonTower7Script:
call EnableAutoTextBoxDrawing
- ld hl, PokemonTower7TrainerHeaders
- ld de, PokemonTower7ScriptPointers
+ ld hl, PokemonTower7ScriptPointers
ld a, [wPokemonTower7CurScript]
- call ExecuteCurMapScriptInTable
- ld [wPokemonTower7CurScript], a
+ call JumpTable
ret
-PokemonTower7Script_60d18:
+PokemonTower7Script_60d01:
xor a
ld [wJoyIgnore], a
+PokemonTower7Script_60d05:
ld [wPokemonTower7CurScript], a
- ld [wCurMapScript], a
ret
PokemonTower7ScriptPointers:
- 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
+
+PokemonTower7Script0:
+ CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
+ call z, PokemonTower7Script_60d2a
+ ret
-PokemonTower7Script2:
- ld hl, wFlags_0xcd60
- res 0, [hl]
- ld a, [wIsInBattle]
- cp $ff
- jp z, PokemonTower7Script_60d18
- call EndTrainerBattle
- ld a, $f0
+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
+ ld [hJoyHeld], a
+ ld a, $FF ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
- ld a, [wSpriteIndex]
+ ld a, HS_POKEMONTOWER_7_JESSIE
+ call PokemonTower7Script_60eaf
+ ld a, HS_POKEMONTOWER_7_JAMES
+ call PokemonTower7Script_60eaf
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $4
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- call PokemonTower7Script_60db6
- ld a, $3
- ld [wPokemonTower7CurScript], 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
+ ld [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
+ ld [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
+ ld [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
+ ld [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
+ ld [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_POKEMONTOWER_7_JESSIE
+ call PokemonTower7Script_60ebe
+ ld a, HS_POKEMONTOWER_7_JAMES
+ call PokemonTower7Script_60ebe
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $a
+ call PokemonTower7Script_60d05
+ ret
+
+PokemonTower7Script10:
+ call PlayDefaultMusic
xor a
+ ld [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 [wPokemonTower7CurScript], 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_POKEMONTOWER_7_MR_FUJI
ld [wMissableObjectIndex], a
predef HideObject
ld a, SPRITE_FACING_UP
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld a, LAVENDER_HOUSE_1
ld [hWarpDestinationMap], a
ld a, $1
@@ -81,180 +246,54 @@ PokemonTower7Script4:
set 3, [hl]
ld a, $0
ld [wPokemonTower7CurScript], 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]
- ld [H_SPRITEINDEX], a
- jp MoveSprite
-.asm_60dde
- inc hl
-.asm_60ddf
- inc hl
- inc hl
- jr .asm_60dcb
-
-CoordsData_60de3:
- db $0C,$09
- dw MovementData_60e13
- db $0B,$0A
- dw MovementData_60e1b
- db $0B,$0B
- dw MovementData_60e22
- db $0B,$0C
- dw MovementData_60e22
- db $0A,$0C
- dw MovementData_60e28
- db $09,$0B
- dw MovementData_60e30
- db $09,$0A
- dw MovementData_60e22
- db $09,$09
- dw MovementData_60e22
- db $08,$09
- dw MovementData_60e37
- db $07,$0A
- dw MovementData_60e22
- db $07,$0B
- dw MovementData_60e22
- db $07,$0C
- dw MovementData_60e22
-
-MovementData_60e13: ; 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 $FF
-
-MovementData_60e1b: ; 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 $FF
-
-MovementData_60e22: ; 60e22
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db NPC_MOVEMENT_DOWN
- db $FF
-
-MovementData_60e28: ; 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 $FF
-
-MovementData_60e30: ; 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 $FF
-
-MovementData_60e37: ; 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 $FF
-
PokemonTower7TextPointers:
dw PokemonTower7Text1
dw PokemonTower7Text2
dw PokemonTower7Text3
- dw PokemonTower7FujiText
-
-PokemonTower7TrainerHeaders:
-PokemonTower7TrainerHeader0:
- dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
- db ($3 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_0
- dw PokemonTower7BattleText1 ; TextBeforeBattle
- dw PokemonTower7AfterBattleText1 ; TextAfterBattle
- dw PokemonTower7EndBattleText1 ; TextEndBattle
- dw PokemonTower7EndBattleText1 ; TextEndBattle
-
-PokemonTower7TrainerHeader1:
- dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
- db ($3 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_1
- dw PokemonTower7BattleText2 ; TextBeforeBattle
- dw PokemonTower7AfterBattleText2 ; TextAfterBattle
- dw PokemonTower7EndBattleText2 ; TextEndBattle
- dw PokemonTower7EndBattleText2 ; TextEndBattle
-
-PokemonTower7TrainerHeader2:
- dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_2
- db ($3 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_2
- dw PokemonTower7BattleText3 ; TextBeforeBattle
- dw PokemonTower7AfterBattleText3 ; TextAfterBattle
- dw PokemonTower7EndBattleText3 ; TextEndBattle
- dw PokemonTower7EndBattleText3 ; TextEndBattle
-
- db $ff
+ dw PokemonTower7Text4
+ dw PokemonTower7Text5
+ dw PokemonTower7Text6
PokemonTower7Text1:
- TX_ASM
- ld hl, PokemonTower7TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
PokemonTower7Text2:
+ db "@"
+
+PokemonTower7Text4:
+ TX_FAR _PokemonTowerJessieJamesText1
TX_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, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
jp TextScriptEnd
-PokemonTower7Text3:
+PokemonTower7Text5:
+ TX_FAR _PokemonTowerJessieJamesText2
+ db "@"
+
+PokemonTower7JessieJamesEndBattleText:
+ TX_FAR _PokemonTowerJessieJamesText3
+ db "@"
+
+PokemonTower7Text6:
+ TX_FAR _PokemonTowerJessieJamesText4
TX_ASM
- ld hl, PokemonTower7TrainerHeader2
- call TalkToTrainer
+ ld c, 64
+ call DelayFrames
jp TextScriptEnd
-PokemonTower7FujiText:
+PokemonTower7Text3:
TX_ASM
- ld hl, TowerRescueFujiText
+ ld hl, PokemonTower7Text_60f75
call PrintText
SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2
@@ -267,47 +306,10 @@ PokemonTower7FujiText:
ld a, HS_SAFFRON_CITY_F
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, $4
+ ld a, $b
ld [wPokemonTower7CurScript], a
- ld [wCurMapScript], a
jp TextScriptEnd
-TowerRescueFujiText:
+PokemonTower7Text_60f75:
TX_FAR _TowerRescueFujiText
db "@"
-
-PokemonTower7BattleText1:
- TX_FAR _PokemonTower7BattleText1
- db "@"
-
-PokemonTower7EndBattleText1:
- TX_FAR _PokemonTower7EndBattleText1
- db "@"
-
-PokemonTower7AfterBattleText1:
- TX_FAR _PokemonTower7AfterBattleText1
- db "@"
-
-PokemonTower7BattleText2:
- TX_FAR _PokemonTower7BattleText2
- db "@"
-
-PokemonTower7EndBattleText2:
- TX_FAR _PokemonTower7EndBattleText2
- db "@"
-
-PokemonTower7AfterBattleText2:
- TX_FAR _PokemonTower7AfterBattleText2
- db "@"
-
-PokemonTower7BattleText3:
- TX_FAR _PokemonTower7BattleText3
- db "@"
-
-PokemonTower7EndBattleText3:
- TX_FAR _PokemonTower7EndBattleText3
- db "@"
-
-PokemonTower7AfterBattleText3:
- TX_FAR _PokemonTower7AfterBattleText3
- db "@"
diff --git a/scripts/redshouse1f.asm b/scripts/redshouse1f.asm
index 4c0458a0..c302462d 100755
--- a/scripts/redshouse1f.asm
+++ b/scripts/redshouse1f.asm
@@ -1,69 +1,17 @@
RedsHouse1FScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
RedsHouse1FTextPointers:
dw RedsHouse1FText1
dw RedsHouse1FText2
-RedsHouse1FText1: ; 4816f (12:416f) Mom
+RedsHouse1FText1: ; Mom
TX_ASM
- ld a, [wd72e]
- bit 3, a
- jr nz, .heal ; if player has received a Pokémon from Oak, heal team
- ld hl, MomWakeUpText
- call PrintText
- jr .done
-.heal
- call MomHealPokemon
-.done
+ callab Func_f1b73
jp TextScriptEnd
-MomWakeUpText:
- TX_FAR _MomWakeUpText
- db "@"
-
-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:
- TX_FAR _MomHealText1
- db "@"
-MomHealText2:
- TX_FAR _MomHealText2
- db "@"
-
-RedsHouse1FText2: ; 0x481c6 TV
+RedsHouse1FText2: ; TV
TX_ASM
- ld a,[wSpriteStateData1 + 9]
- cp SPRITE_FACING_UP
- ld hl,TVWrongSideText
- jr nz,.notUp
- ld hl,StandByMeText
-.notUp
- call PrintText
+ callab Func_f1bc4
jp TextScriptEnd
-
-StandByMeText:
- TX_FAR _StandByMeText
- db "@"
-
-TVWrongSideText:
- TX_FAR _TVWrongSideText
- db "@"
diff --git a/scripts/redshouse1f2.asm b/scripts/redshouse1f2.asm
new file mode 100755
index 00000000..871f2e31
--- /dev/null
+++ b/scripts/redshouse1f2.asm
@@ -0,0 +1,58 @@
+Func_f1b73:
+ ld a, [wd72e]
+ bit 3, a
+ jp nz, MomHealPokemon ; if player has received a Pokémon from Oak, heal team
+ ld hl, MomWakeUpText
+ call PrintText
+ ret
+
+MomWakeUpText:
+ TX_FAR _MomWakeUpText
+ db "@"
+
+MomHealPokemon:
+ ld hl, MomHealText1
+ call PrintText
+ call GBFadeOutToWhite
+ call ReloadMapData
+ predef HealParty
+ ld a, MUSIC_PKMN_HEALED
+ ld [wNewSoundID], a
+ call PlaySound
+.loop
+ ld a, [wChannelSoundIDs]
+ cp MUSIC_PKMN_HEALED
+ jr z, .loop
+ ld a, [wMapMusicSoundID]
+ ld [wNewSoundID], a
+ call PlaySound
+ call GBFadeInFromWhite
+ ld hl, MomHealText2
+ call PrintText
+ ret
+
+MomHealText1:
+ TX_FAR _MomHealText1
+ db "@"
+MomHealText2:
+ TX_FAR _MomHealText2
+ db "@"
+
+Func_f1bc4:
+ ld hl, TVWrongSideText
+ ld a, [wPlayerFacingDirection]
+ cp SPRITE_FACING_UP
+ jp nz, .notUp
+ ld hl, StandByMeText
+.notUp
+ call PrintText
+ ret
+
+StandByMeText:
+ TX_FAR _StandByMeText
+ db "@"
+
+TVWrongSideText:
+ TX_FAR _TVWrongSideText
+ db "@"
+
diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm
index 60c3ea67..0945e901 100755
--- a/scripts/redshouse2f.asm
+++ b/scripts/redshouse2f.asm
@@ -1,23 +1,22 @@
RedsHouse2FScript:
call EnableAutoTextBoxDrawing
- ld hl,RedsHouse2FScriptPointers
- ld a,[wRedsHouse2CurScript]
- jp CallFunctionInTable
+ ld hl, RedsHouse2FScriptPointers
+ ld a, 0
+ call JumpTable
+ ret
RedsHouse2FScriptPointers:
dw RedsHouse2FScript0
dw RedsHouse2FScript1
+ dw RedsHouse2FScript2
+ dw RedsHouse2FScript3
+ dw RedsHouse2FScript4
RedsHouse2FScript0:
- xor a
- ld [hJoyHeld],a
- ld a,PLAYER_DIR_UP
- ld [wPlayerMovingDirection],a
- ld a,1
- ld [wRedsHouse2CurScript],a
- ret
-
RedsHouse2FScript1:
+RedsHouse2FScript2:
+RedsHouse2FScript3:
+RedsHouse2FScript4:
ret
RedsHouse2FTextPointers:
diff --git a/scripts/rockethideout4.asm b/scripts/rockethideout4.asm
index d918e4b2..2b3e0e89 100755
--- a/scripts/rockethideout4.asm
+++ b/scripts/rockethideout4.asm
@@ -1,5 +1,4 @@
RocketHideout4Script:
- call RocketHideout4Script_45473
call EnableAutoTextBoxDrawing
ld hl, RocketHideout4TrainerHeader0
ld de, RocketHideout4ScriptPointers
@@ -8,47 +7,44 @@ RocketHideout4Script:
ld [wRocketHideout4CurScript], 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_2, 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 [wRocketHideout4CurScript], a
ld [wCurMapScript], a
ret
-RocketHideout4ScriptPointers: ; 454ae (11:54ae)c
- dw CheckFightingMapTrainers
+RocketHideout4Script_45525:
+ ld a, HS_ROCKET_HIDEOUT_4_JAMES
+ call RocketHideout4Script_45756
+ ld a, HS_ROCKET_HIDEOUT_4_JESSIE
+ call RocketHideout4Script_45756
+ ret
+
+RocketHideout4ScriptPointers:
+ 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,61 +68,295 @@ 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_3
+ call z, CheckFightingMapTrainers
+ ret
+
+RocketHideout4Script_455a5:
+ ld a, [wYCoord]
+ cp $e
+ ret nz
+ ResetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
+ ld a, [wXCoord]
+ cp $18
+ jr z, .asm_455c2
+ ld a, [wXCoord]
+ cp $19
+ ret nz
+ SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
+.asm_455c2
+ xor a
+ ld [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
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $ff
+ ld [wJoyIgnore], a
+ ld a, HS_ROCKET_HIDEOUT_4_JAMES
+ call RocketHideout4Script_45747
+ ld a, HS_ROCKET_HIDEOUT_4_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_2
+ jr z, .asm_45617
+ ld de, RocketHideout4JessieJamesMovementData_45606
+.asm_45617
+ ld a, $2
+ ld [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_2
+ 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_2
+ jr z, .asm_4565f
+ ld de, RocketHideout4JessieJamesMovementData_45605
+.asm_4565f
+ ld a, $3
+ ld [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_2
+ jr z, .asm_45697
+ ld a, SPRITE_FACING_RIGHT
+ ld [wSpriteStateData1 + 3 * $10 + 9], a
+.asm_45697
+ call Delay3
+ ld a, $c
+ ld [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
+ ld [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
+ ld [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_4_JAMES
+ call RocketHideout4Script_45756
+ ld a, HS_ROCKET_HIDEOUT_4_JESSIE
+ call RocketHideout4Script_45756
+ call UpdateSprites
+ call Delay3
+ call GBFadeInFromBlack
+ ld a, $d
+ call RocketHideout4Script_4551e
+ ret
+
+RocketHideout4Script13:
+ call PlayDefaultMusic
+ xor a
+ ld [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
+
RocketHideout4TextPointers:
+ 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
RocketHideout4TrainerHeaders:
RocketHideout4TrainerHeader0:
- dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
- db ($0 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0
- dw RocketHideout4BattleText2 ; TextBeforeBattle
- dw RocketHideout4AfterBattleText2 ; TextAfterBattle
- dw RocketHideout4EndBattleText2 ; TextEndBattle
- dw RocketHideout4EndBattleText2 ; TextEndBattle
-
-RocketHideout4TrainerHeader2:
- dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
- db ($0 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2
- dw RocketHideout4BattleText3 ; TextBeforeBattle
- dw RocketHideout4AfterBattleText3 ; TextAfterBattle
- dw RocketHideout4EndBattleText3 ; TextEndBattle
- dw RocketHideout4EndBattleText3 ; TextEndBattle
-
-RocketHideout4TrainerHeader3:
dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3
- db ($1 << 4) ; trainer's view range
+ db ($1 << 4)
dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_3
- dw RocketHideout4BattleText4 ; TextBeforeBattle
- dw RocketHideout4AfterBattleText4 ; TextAfterBattle
- dw RocketHideout4EndBattleText4 ; TextEndBattle
- dw RocketHideout4EndBattleText4 ; TextEndBattle
-
+ dw RocketHideout4Trainer0BeforeText
+ dw RocketHideout4Trainer0AfterText
+ dw RocketHideout4Trainer0EndBattleText
+ dw RocketHideout4Trainer0EndBattleText
db $ff
RocketHideout4Text1:
+RocketHideout4Text2:
+ db "@"
+
+RocketHideout4Text10:
+ TX_FAR _RocketHideoutJessieJamesText1
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ ld a, $8
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+RocketHideout4Text11:
+ TX_FAR _RocketHideoutJessieJamesText2
+ db "@"
+
+RocketHideout4JessieJamesEndBattleText:
+ TX_FAR _RocketHideoutJessieJamesText3
+ db "@"
+
+RocketHideout4Text12:
+ TX_FAR _RocketHideoutJessieJamesText4
+ TX_ASM
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
+
+RocketHideout4Text0:
TX_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
- ld a, [H_SPRITEINDEX]
+ ld a, [hSpriteIndexOrTextID]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
@@ -135,87 +365,52 @@ RocketHideout4Text1:
ld a, $3
ld [wRocketHideout4CurScript], 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:
TX_FAR _RocketHideout4Text_4557a
db "@"
-RocketHideout4Text_4557f:
+RocketHideout4Text_45809:
TX_FAR _RocketHideout4Text_4557f
db "@"
-RocketHideout4Text10:
+RocketHideout4Text9:
TX_FAR _RocketHideout4Text_45584
db "@"
-RocketHideout4Text2:
- TX_ASM
- ld hl, RocketHideout4TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
-RocketHideout4BattleText2:
- TX_FAR _RocketHideout4BattleText2
- db "@"
-
-RocketHideout4EndBattleText2:
- TX_FAR _RocketHideout4EndBattleText2
- db "@"
-
-RocketHideout4AfterBattleText2:
- TX_FAR _RocketHide4AfterBattleText2
- db "@"
-
RocketHideout4Text3:
TX_ASM
- ld hl, RocketHideout4TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
-
-RocketHideout4BattleText3:
- TX_FAR _RocketHideout4BattleText3
- db "@"
-
-RocketHideout4EndBattleText3:
- TX_FAR _RocketHideout4EndBattleText3
- db "@"
-
-RocketHideout4AfterBattleText3:
- TX_FAR _RocketHide4AfterBattleText3
- db "@"
-
-RocketHideout4Text4:
- TX_ASM
- ld hl, RocketHideout4TrainerHeader3
+ ld hl, RocketHideout4TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-RocketHideout4BattleText4:
+RocketHideout4Trainer0BeforeText:
TX_FAR _RocketHideout4BattleText4
db "@"
-RocketHideout4EndBattleText4:
+RocketHideout4Trainer0EndBattleText:
TX_FAR _RocketHideout4EndBattleText4
- db "@"
-
-RocketHideout4AfterBattleText4:
+ TX_BUTTON_SOUND
TX_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_4_ITEM_5
ld [wMissableObjectIndex], a
predef ShowObject
-.asm_455e9
jp TextScriptEnd
-RocketHideout4Text_455ec:
+RocketHideout4Trainer0AfterText:
+ TX_ASM
+ ld hl, RocketHideout4Text_45844
+ call PrintText
+ jp TextScriptEnd
+
+RocketHideout4Text_45844:
TX_FAR _RocketHideout4Text_455ec
db "@"
diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm
index 7bcdc1ae..68c5f31a 100755
--- a/scripts/rocktunnelpokecenter.asm
+++ b/scripts/rocktunnelpokecenter.asm
@@ -7,9 +7,10 @@ RockTunnelPokecenterTextPointers:
dw RockTunnelPokecenterText2
dw RockTunnelPokecenterText3
dw RockTunnelTradeNurseText
+ dw RockTunnelPokecenterText5
RockTunnelHealNurseText:
- db $ff
+ TX_POKECENTER_NURSE
RockTunnelPokecenterText2:
TX_FAR _RockTunnelPokecenterText2
@@ -20,4 +21,9 @@ RockTunnelPokecenterText3:
db "@"
RockTunnelTradeNurseText:
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+RockTunnelPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/route1.asm b/scripts/route1.asm
index a4d6cde5..4d046124 100755
--- a/scripts/route1.asm
+++ b/scripts/route1.asm
@@ -1,5 +1,6 @@
Route1Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route1TextPointers:
dw Route1Text1
@@ -8,44 +9,15 @@ Route1TextPointers:
Route1Text1:
TX_ASM
- CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
- jr nz, .asm_1cada
- ld hl, Route1ViridianMartSampleText
- call PrintText
- lb bc, POTION, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, Route1Text_1cae8
- jr .asm_1cadd
-.BagFull
- ld hl, Route1Text_1caf3
- jr .asm_1cadd
-.asm_1cada
- ld hl, Route1Text_1caee
-.asm_1cadd
- call PrintText
+ callba Func_f1ad2
jp TextScriptEnd
-Route1ViridianMartSampleText:
- TX_FAR _Route1ViridianMartSampleText
- db "@"
-
-Route1Text_1cae8:
- TX_FAR _Route1Text_1cae8
- db $0b,"@"
-
-Route1Text_1caee:
- TX_FAR _Route1Text_1caee
- db "@"
-
-Route1Text_1caf3:
- TX_FAR _Route1Text_1caf3
- db "@"
-
Route1Text2:
- TX_FAR _Route1Text2
- db "@"
+ TX_ASM
+ callba Func_f1b0f
+ jp TextScriptEnd
Route1Text3:
- TX_FAR _Route1Text3
- db "@"
+ TX_ASM
+ callba Func_f1b1b
+ jp TextScriptEnd
diff --git a/scripts/route11gateupstairs.asm b/scripts/route11gateupstairs.asm
index 6c8d6e99..300b299a 100755
--- a/scripts/route11gateupstairs.asm
+++ b/scripts/route11gateupstairs.asm
@@ -9,7 +9,7 @@ Route11GateUpstairsTextPointers:
Route11GateUpstairsText1:
TX_ASM
- xor a
+ ld a, $0
ld [wWhichTrade], a
predef DoInGameTradeDialogue
Route11GateUpstairsScriptEnd:
@@ -47,7 +47,7 @@ Route11GateUpstairsText_494a3:
Route11GateUpstairsText3:
TX_ASM
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
jp nz, GateUpstairsScript_PrintIfFacingUp
CheckEvent EVENT_BEAT_ROUTE12_SNORLAX
diff --git a/scripts/route12gateupstairs.asm b/scripts/route12gateupstairs.asm
index 3c6c6231..bdbbf526 100755
--- a/scripts/route12gateupstairs.asm
+++ b/scripts/route12gateupstairs.asm
@@ -64,7 +64,7 @@ Route12GateUpstairsText_495c4:
db "@"
GateUpstairsScript_PrintIfFacingUp:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_UP
jr z, .up
ld a, $1
diff --git a/scripts/route16gate.asm b/scripts/route16gate.asm
index e20ba6f7..df478b1f 100755
--- a/scripts/route16gate.asm
+++ b/scripts/route16gate.asm
@@ -4,7 +4,7 @@ Route16GateScript:
call EnableAutoTextBoxDrawing
ld a, [wRoute16GateCurScript]
ld hl, Route16GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route16GateScriptPointers:
dw Route16GateScript0
diff --git a/scripts/route18.asm b/scripts/route18.asm
index b89e2613..7b654e7c 100755
--- a/scripts/route18.asm
+++ b/scripts/route18.asm
@@ -110,3 +110,4 @@ Route18Text4:
Route18Text5:
TX_FAR _Route18Text5
db "@"
+; 59b64
diff --git a/scripts/route18gate.asm b/scripts/route18gate.asm
index 893801a1..186ea61b 100755
--- a/scripts/route18gate.asm
+++ b/scripts/route18gate.asm
@@ -4,7 +4,7 @@ Route18GateScript:
call EnableAutoTextBoxDrawing
ld a, [wRoute18GateCurScript]
ld hl, Route18GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route18GateScriptPointers:
dw Route18GateScript0
diff --git a/scripts/route19.asm b/scripts/route19.asm
index 7b6aa8f0..162c4548 100755
--- a/scripts/route19.asm
+++ b/scripts/route19.asm
@@ -37,7 +37,7 @@ Route19TrainerHeader0:
Route19TrainerHeader1:
dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_1
- db ($3 << 4) ; trainer's view range
+ db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_1
dw Route19BattleText2 ; TextBeforeBattle
dw Route19AfterBattleText2 ; TextAfterBattle
@@ -121,60 +121,52 @@ Route19TrainerHeader9:
Route19Text1:
TX_ASM
ld hl, Route19TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text2:
TX_ASM
ld hl, Route19TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text3:
TX_ASM
ld hl, Route19TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text4:
TX_ASM
ld hl, Route19TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text5:
TX_ASM
ld hl, Route19TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text6:
TX_ASM
ld hl, Route19TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text7:
TX_ASM
ld hl, Route19TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text8:
TX_ASM
ld hl, Route19TrainerHeader7
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text9:
TX_ASM
ld hl, Route19TrainerHeader8
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text10:
TX_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..6e9b472e
--- /dev/null
+++ b/scripts/route1_2.asm
@@ -0,0 +1,53 @@
+Func_f1ad2:
+ CheckAndSetEvent EVENT_GOT_POTION_SAMPLE
+ jr nz, .asm_1cada
+ ld hl, Route1ViridianMartSampleText
+ call PrintText
+ lb bc, POTION, 1
+ call GiveItem
+ jr nc, .BagFull
+ ld hl, Route1Text_f1aff
+ jr .asm_1cadd
+.BagFull
+ ld hl, Route1Text_f1b0a
+ jr .asm_1cadd
+.asm_1cada
+ ld hl, Route1Text_f1b05
+.asm_1cadd
+ call PrintText
+ ret
+
+Route1ViridianMartSampleText:
+ TX_FAR _Route1ViridianMartSampleText
+ db "@"
+
+Route1Text_f1aff:
+ TX_FAR _Route1Text_1cae8
+ TX_SFX_ITEM
+ db "@"
+
+Route1Text_f1b05:
+ TX_FAR _Route1Text_1caee
+ db "@"
+
+Route1Text_f1b0a:
+ TX_FAR _Route1Text_1caf3
+ db "@"
+
+Func_f1b0f:
+ ld hl, Route1Text_f1b16
+ call PrintText
+ ret
+
+Route1Text_f1b16:
+ TX_FAR _Route1Text2
+ db "@"
+
+Func_f1b1b:
+ ld hl, Route1Text_f1b22
+ call PrintText
+ ret
+
+Route1Text_f1b22:
+ TX_FAR _Route1Text3
+ db "@"
diff --git a/scripts/route22.asm b/scripts/route22.asm
index 86c3768b..fe881366 100755
--- a/scripts/route22.asm
+++ b/scripts/route22.asm
@@ -2,7 +2,7 @@ Route22Script:
call EnableAutoTextBoxDrawing
ld hl, Route22ScriptPointers
ld a, [wRoute22CurScript]
- jp CallFunctionInTable
+ jp JumpTable
Route22ScriptPointers:
dw Route22Script0
@@ -22,16 +22,17 @@ Route22Script7:
ret
Route22Script_50ed6:
+ ld a, OPP_SONY1
+ ld [wCurOpponent], a
+ ld a, $2
+ ld [wTrainerNo], a
+ ret
+
+Route22Script_50ee1:
+ ld a, OPP_SONY2
+ 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, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.asm_50f4e
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
@@ -131,25 +130,30 @@ Route22Script1:
ld hl, Route22RivalDefeatedText1
ld de, Route22Text_511bc
call SaveEndBattleTextPointers
- ld a, OPP_SONY1
- 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,$04
- db STARTER3,$05
- db STARTER1,$06
+Route22RivalDefeatedText1:
+ TX_FAR _Route22RivalDefeatedText1
+ db "@"
+
+Route22Text_511bc:
+ TX_FAR _Route22Text_511bc
+ db "@"
Route22Script2:
ld a, [wIsInBattle]
cp $ff
jp z, Route22Script_50ece
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wRivalStarter]
+ cp 2
+ jr nz, .asm_50fc9
+ ld a, $1
+ ld [wRivalStarter], a
+.asm_50fc9
+ ld a, [wPlayerFacingDirection]
and a ; cp SPRITE_FACING_DOWN
jr nz, .notDown
ld a, SPRITE_FACING_UP
@@ -167,9 +171,7 @@ Route22Script2:
ld a, $1
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, [wcf0d]
cp $1
@@ -241,13 +243,9 @@ Route22Script_5104e:
ld a, [wWalkBikeSurfState]
and a
jr z, .skipYVisibilityTesta
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
.skipYVisibilityTesta
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateTempo
ld a, $2
ld [H_SPRITEINDEX], a
@@ -287,18 +285,18 @@ Route22Script4:
ld hl, Route22RivalDefeatedText2
ld de, Route22Text_511d0
call SaveEndBattleTextPointers
- ld a, OPP_SONY2
- ld [wCurOpponent], a
- ld hl, StarterMons_510d9
- call Route22Script_50ed6
+ call Route22Script_50ee1
ld a, $5
ld [wRoute22CurScript], a
ret
-StarterMons_510d9:
- db STARTER2,$0a
- db STARTER3,$0b
- db STARTER1,$0c
+Route22RivalDefeatedText2:
+ TX_FAR _Route22RivalDefeatedText2
+ db "@"
+
+Route22Text_511d0:
+ TX_FAR _Route22Text_511d0
+ db "@"
Route22Script5:
ld a, [wIsInBattle]
@@ -326,9 +324,7 @@ Route22Script5:
ld a, $2
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStartAndTempo
ld a, [wcf0d]
cp $1
@@ -384,62 +380,15 @@ Route22TextPointers:
Route22Text1:
TX_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
+ callba Func_f1b27
jp TextScriptEnd
Route22Text2:
TX_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
+ callba Func_f1b47
jp TextScriptEnd
-Route22RivalBeforeBattleText1:
- TX_FAR _Route22RivalBeforeBattleText1
- db "@"
-
-Route22RivalAfterBattleText1:
- TX_FAR _Route22RivalAfterBattleText1
- db "@"
-
-Route22RivalDefeatedText1:
- TX_FAR _Route22RivalDefeatedText1
- db "@"
-
-Route22Text_511bc:
- TX_FAR _Route22Text_511bc
- db "@"
-
-Route22RivalBeforeBattleText2:
- TX_FAR _Route22RivalBeforeBattleText2
- db "@"
-
-Route22RivalAfterBattleText2:
- TX_FAR _Route22RivalAfterBattleText2
- db "@"
-
-Route22RivalDefeatedText2:
- TX_FAR _Route22RivalDefeatedText2
- db "@"
-
-Route22Text_511d0:
- TX_FAR _Route22Text_511d0
- db "@"
-
Route22FrontGateText:
- TX_FAR _Route22FrontGateText
- db "@"
+ TX_ASM
+ callba Func_f1b67
+ jp TextScriptEnd
diff --git a/scripts/route22_2.asm b/scripts/route22_2.asm
new file mode 100755
index 00000000..1cd23ed2
--- /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:
+ TX_FAR _Route22RivalBeforeBattleText1
+ db "@"
+
+Route22RivalAfterBattleText1:
+ TX_FAR _Route22RivalAfterBattleText1
+ db "@"
+
+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:
+ TX_FAR _Route22RivalBeforeBattleText2
+ db "@"
+
+Route22RivalAfterBattleText2:
+ TX_FAR _Route22RivalAfterBattleText2
+ db "@"
+
+Func_f1b67:
+ ld hl, Route22FrontGateText_3c
+ call PrintText
+ ret
+
+Route22FrontGateText_3c:
+ TX_FAR _Route22FrontGateText
+ db "@"
diff --git a/scripts/route22gate.asm b/scripts/route22gate.asm
index ae9952a5..05fbc7e9 100755
--- a/scripts/route22gate.asm
+++ b/scripts/route22gate.asm
@@ -2,7 +2,7 @@ Route22GateScript:
call EnableAutoTextBoxDrawing
ld hl, Route22GateScriptPointers
ld a, [wRoute22GateCurScript]
- call CallFunctionInTable
+ call JumpTable
ld a, [wYCoord]
cp $4
ld a, ROUTE_23
@@ -23,9 +23,12 @@ Route22GateScript0:
ret nc
xor a
ld [hJoyHeld], a
+ ld a, SPRITE_FACING_LEFT
+ ld [wSpriteStateData1 + 1 * $10 + 9], a
ld a, $1
ld [hSpriteIndexOrTextID], a
- jp DisplayTextID
+ call DisplayTextID
+ ret
Route22GateScriptCoords:
db 2,4
@@ -37,7 +40,7 @@ Route22GateScript_1e6ba:
ld [wSimulatedJoypadStatesIndex], a
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld [wJoyIgnore], a
jp StartSimulatingJoypadStates
@@ -59,7 +62,7 @@ Route22GateTextPointers:
Route22GateText1:
TX_ASM
ld a, [wObtainedBadges]
- bit 0, a
+ bit 0, a ; BOULDERBADGE
jr nz, .asm_1e6f6
ld hl, Route22GateText_1e704
call PrintText
@@ -89,4 +92,5 @@ Route22GateText_1e715:
Route22GateText_1e71a:
TX_FAR _Route22GateText_1e71a
- db $0B, "@"
+ TX_SFX_ITEM
+ db "@"
diff --git a/scripts/route23.asm b/scripts/route23.asm
index ed94d95c..b82ab505 100755
--- a/scripts/route23.asm
+++ b/scripts/route23.asm
@@ -3,7 +3,7 @@ Route23Script:
call EnableAutoTextBoxDrawing
ld hl, Route23ScriptPointers
ld a, [wRoute23CurScript]
- jp CallFunctionInTable
+ jp JumpTable
Route23Script_511e9:
ld hl, wCurrentMapScriptFlags
@@ -118,7 +118,7 @@ Route23Script_512d8:
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
xor a
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld [wJoyIgnore], a
jp StartSimulatingJoypadStates
diff --git a/scripts/route24.asm b/scripts/route24.asm
index 711fb1ea..d2872ccc 100755
--- a/scripts/route24.asm
+++ b/scripts/route24.asm
@@ -84,6 +84,7 @@ Route24TextPointers:
dw Route24Text6
dw Route24Text7
dw PickUpItemText
+ dw Route24Text8
Route24TrainerHeaders:
Route24TrainerHeader0:
@@ -191,7 +192,9 @@ Route24Text_51510:
Route24Text_5151a:
TX_FAR _Route24Text_5151a
- db $0B, $6, "@"
+ TX_SFX_KEY_ITEM
+ TX_BUTTON_SOUND
+ db "@"
Route24Text_51521:
TX_FAR _Route24Text_51521
@@ -316,3 +319,60 @@ Route24EndBattleText6:
Route24AfterBattleText6:
TX_FAR _Route24AfterBattleText6
db "@"
+
+Route24Text8:
+ TX_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:
+ TX_FAR _Route24DamianText1
+ db "@"
+
+Route24Text_515e3:
+ TX_FAR _Route24DamianText2
+ db $d
+ db "@"
+
+Route24Text_515e9:
+ TX_FAR _Route24DamianText3
+ db "@"
+
+Route24Text_515ee:
+ TX_FAR _Route24DamianText4
+ db "@"
+
diff --git a/scripts/route25.asm b/scripts/route25.asm
index 7ebfaff6..cc2e1d9d 100755
--- a/scripts/route25.asm
+++ b/scripts/route25.asm
@@ -1,14 +1,21 @@
Route25Script:
- call Route25Script_515e1
call EnableAutoTextBoxDrawing
ld hl, Route25TrainerHeaders
ld de, Route25ScriptPointers
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
Route25ScriptPointers:
dw CheckFightingMapTrainers
diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm
index ae75aff2..b3ad0aa3 100755
--- a/scripts/route5gate.asm
+++ b/scripts/route5gate.asm
@@ -2,7 +2,7 @@ Route5GateScript:
call EnableAutoTextBoxDrawing
ld a, [wRoute5GateCurScript]
ld hl, Route5GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route5GateScriptPointers:
dw Route5GateScript0
diff --git a/scripts/route6.asm b/scripts/route6.asm
index 53653b39..7f3a5dda 100755
--- a/scripts/route6.asm
+++ b/scripts/route6.asm
@@ -36,7 +36,7 @@ Route6TrainerHeader1:
db ($0 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_1
dw Route6BattleText2 ; TextBeforeBattle
- dw Route6AfterBattleText1 ; TextAfterBattle
+ dw Route6AfterBattleText2 ; TextAfterBattle
dw Route6EndBattleText2 ; TextEndBattle
dw Route6EndBattleText2 ; TextEndBattle
@@ -110,6 +110,10 @@ Route6EndBattleText2:
TX_FAR _Route6EndBattleText2
db "@"
+Route6AfterBattleText2:
+ TX_FAR _Route6AfterBattleText2
+ db "@"
+
Route6Text3:
TX_ASM
ld hl, Route6TrainerHeader2
diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm
index cf872f69..001a295c 100755
--- a/scripts/route6gate.asm
+++ b/scripts/route6gate.asm
@@ -2,7 +2,7 @@ Route6GateScript:
call EnableAutoTextBoxDrawing
ld hl, Route6GateScriptPointers
ld a, [wRoute6GateCurScript]
- call CallFunctionInTable
+ call JumpTable
ret
Route6GateScriptPointers:
diff --git a/scripts/route7.asm b/scripts/route7.asm
index 5e8288ea..af353821 100755
--- a/scripts/route7.asm
+++ b/scripts/route7.asm
@@ -1,5 +1,6 @@
Route7Script:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route7TextPointers:
dw Route7Text1
diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm
index 6d4e27bb..6e62c73c 100755
--- a/scripts/route7gate.asm
+++ b/scripts/route7gate.asm
@@ -2,7 +2,7 @@ Route7GateScript:
call EnableAutoTextBoxDrawing
ld a, [wRoute7GateCurScript]
ld hl, Route7GateScriptPointers
- call CallFunctionInTable
+ call JumpTable
ret
Route7GateScriptPointers:
diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm
index 28835f9d..b86458d8 100755
--- a/scripts/route8gate.asm
+++ b/scripts/route8gate.asm
@@ -2,7 +2,7 @@ Route8GateScript:
call EnableAutoTextBoxDrawing
ld hl, Route8GateScriptPointers
ld a, [wRoute8GateCurScript]
- jp CallFunctionInTable
+ jp JumpTable
Route8GateScriptPointers:
dw Route8GateScript0
@@ -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
ld [hJoyHeld], a
diff --git a/scripts/route9.asm b/scripts/route9.asm
index 5776d4e6..f08e9790 100755
--- a/scripts/route9.asm
+++ b/scripts/route9.asm
@@ -14,7 +14,7 @@ Route9ScriptPointers:
Route9TextPointers:
dw Route9Text1
- dw Route9Text2
+ dw Route9TextAJ
dw Route9Text3
dw Route9Text4
dw Route9Text5
@@ -39,10 +39,10 @@ Route9TrainerHeader2:
dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_2
db ($2 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_2
- dw Route9BattleText2 ; TextBeforeBattle
- dw Route9AfterBattleText2 ; TextAfterBattle
- dw Route9EndBattleText2 ; TextEndBattle
- dw Route9EndBattleText2 ; TextEndBattle
+ dw Route9BattleTextAJ ; TextBeforeBattle
+ dw Route9AfterBattleTextAJ ; TextAfterBattle
+ dw Route9EndBattleTextAJ ; TextEndBattle
+ dw Route9EndBattleTextAJ ; TextEndBattle
Route9TrainerHeader3:
dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_3
@@ -114,7 +114,7 @@ Route9Text1:
ld hl, Route9TrainerHeader0
jr Route9TalkToTrainer
-Route9Text2:
+Route9TextAJ:
TX_ASM
ld hl, Route9TrainerHeader2
jr Route9TalkToTrainer
@@ -168,16 +168,16 @@ Route9AfterBattleText1:
TX_FAR _Route9AfterBattleText1
db "@"
-Route9BattleText2:
- TX_FAR _Route9BattleText2
+Route9BattleTextAJ:
+ TX_FAR _Route9BattleTextAJ
db "@"
-Route9EndBattleText2:
- TX_FAR _Route9EndBattleText2
+Route9EndBattleTextAJ:
+ TX_FAR _Route9EndBattleTextAJ
db "@"
-Route9AfterBattleText2:
- TX_FAR _Route9AfterBattleText2
+Route9AfterBattleTextAJ:
+ TX_FAR _Route9AfterBattleTextAJ
db "@"
Route9BattleText3:
diff --git a/scripts/safarizoneentrance-yellow.asm b/scripts/safarizoneentrance-yellow.asm
deleted file mode 100644
index da9a068e..00000000
--- a/scripts/safarizoneentrance-yellow.asm
+++ /dev/null
@@ -1,255 +0,0 @@
-.xf1f77
- ld hl,.ForJust500Text
- call PrintText
- ld a,MONEY_BOX
- ld [wTextBoxID],a
- call DisplayTextBoxID
- call YesNoChoice
- ld a,[wCurrentMenuItem]
- and a
- jp nz,.PleaseComeAgain
- ld hl,$d346 ; yellow d346
- ld a,[hli]
- or [hl]
- inc hl
- or [hl]
- jr nz,.xf1f9f
-.xf1f98
- call .xf20ce
- jr c,.CantPayWalkDown
- jr .xf1ff2
-
-.xf1f9f
- xor a
- ld [hMoney],a
- ld a,$05
- ld [hMoney + 1],a
- ld a,$00
- ld [hMoney + 2],a
- call HasEnoughMoney
- jr nc,.success
- ld hl,.NotEnoughMoneyText
- call PrintText
- call .xf2077
- jr c,.CantPayWalkDown
- jr .xf1ff2
-
-.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,$b2
- call $3736
- call $373e
- ld a,MONEY_BOX
- ld [wTextBoxID],a
- call DisplayTextBoxID
- ld hl,.MakePaymentText
- call PrintText
- ld a,30
- lb hl, (502 / $100), (502 % $100)
-.xf1ff2
- ld [wNumSafariBalls],a
- ld a,h
- ld [wSafariSteps],a
- ld a,l
- 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 [wSafariZoneEntranceCurScript],a
- jr .done
-
-.PleaseComeAgain
- ld hl,.PleaseComeAgainText
- call PrintText
-.CantPayWalkDown
- ld a,D_DOWN
- ld c,1
- call SafariZoneEntranceAutoWalk
- ld a,4
- ld [wSafariZoneEntranceCurScript],a
-.done
- ret
-
-.ForJust500Text
- TX_FAR SafariZoneEntranceText_9e6e4
- db "@"
-
-.MakePaymentText
- TX_FAR SafariZoneEntranceText_9e747
- db $b
- TX_FAR _SafariZoneEntranceText_75360
- db "@"
-
-.PleaseComeAgainText
- TX_FAR _SafariZoneEntranceText_75365
- db "@"
-
-.NotEnoughMoneyText
- TX_FAR _SafariZoneEntranceText_7536a
- db "@"
-
-.SafariZoneEntranceText2
- 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
- TX_FAR _SafariZoneEntranceText_753e6
- db "@"
-
-.ExplanationText
- TX_FAR _SafariZoneEntranceText_753eb
- db "@"
-
-.RegularText
- TX_FAR _SafariZoneEntranceText_753f0
- db "@"
-
-SafariZoneEntranceAutoWalk:
- push af
- ld b,0
- ld a,c
- ld [wSimulatedJoypadStatesIndex],a
- ld hl,wSimulatedJoypadStatesEnd
- pop af
- call FillMemory
- jp StartSimulatingJoypadStates
-
-.xf2077
- ld hl,wPlayerMoney
- ld de,$ff9f
- ld bc,3
- call $b1 ; yellow $00b1
- xor a
- ld [$ffa2],a
- ld [$ffa3],a
- ld a,$17 ; ¥17 per safari ball
- ld [$ffa4],a
- predef DivideBCDPredef3
- ld a,[$ffa4]
- call .xf211e
- pop af
- ld hl,$d346
- xor a
- ld bc,3
- call FillMemory
- ld hl,.OhAllRightText
- call PrintText_NoCreatingTextBox
- ld a,MONEY_BOX
- ld a,[$d124]
- call DisplayTextBoxID
- ld hl,.CantGive30BallsText
- call PrintText
- pop af
- inc a
- jr z,.xf20bd
- cp 29
- jr c,.xf20bf
-.xf20bd
- ld a,29
-.xf20bf
- ld hl,$1f6
- and a
- ret
-
-.OhAllRightText
- TX_FAR _SafariZoneLowCostText1
- db "@"
-
-.CantGive30BallsText
- TX_FAR _SafariZoneLowCostText2
- db "@"
-
-.xf20ce
- ld hl,$d70c
- ld a,[hl]
- push af
- inc [hl]
- ld e,a
- ld d,0
- ld hl,.lowcosttextpointers
- add hl,de
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
- call PrintText
- pop af
- cp 3
- jr z,.next
- scf
- ret
-
-.next
- ld hl,.xf20f6
- call $3c46
- ld a,1
- ld hl,$01f6
- and a
- ret
-
-.xf20f6
- TX_FAR _SafariZoneLowCostText3
- db $b
- TX_FAR _SafariZoneLowCostText4
- db "@"
-
-.lowcosttextpointers
- dw .xf210a
- dw .xf210f
- dw .xf2114
- dw .xf2119
- dw .xf2119
-
-.xf210a
- TX_FAR _SafariZoneLowCostText5
- db "@"
-
-.xf210f
- TX_FAR _SafariZoneLowCostText6
- db "@"
-
-.xf2114
- TX_FAR _SafariZoneLowCostText7
- db "@"
-
-.xf2119
- TX_FAR _SafariZoneLowCostText8
- db "@"
-
-.xf211e
- push hl
- ld c,a
- and $f
- ld l,a
- ld h,0
- ld a,c
- and $f0
- swap a
- ld bc,$a
- call $3a74
- ld a,l
- pop hl
- ret
-
-.xf2133
diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm
index 5f800987..97578475 100755
--- a/scripts/safarizoneentrance.asm
+++ b/scripts/safarizoneentrance.asm
@@ -2,7 +2,8 @@ SafariZoneEntranceScript:
call EnableAutoTextBoxDrawing
ld hl, SafariZoneEntranceScriptPointers
ld a, [wSafariZoneEntranceCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
SafariZoneEntranceScriptPointers:
dw .SafariZoneEntranceScript0
@@ -25,7 +26,7 @@ SafariZoneEntranceScriptPointers:
xor a
ld [hJoyHeld], a
ld a, SPRITE_FACING_RIGHT
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld a, [wCoordIndex]
cp $1
jr z, .asm_7520f
@@ -43,8 +44,8 @@ SafariZoneEntranceScriptPointers:
ret
.CoordsData_75221:
- db $02,$03
- db $02,$04
+ db $02, $03
+ db $02, $04
db $FF
.SafariZoneEntranceScript1
@@ -85,6 +86,8 @@ SafariZoneEntranceScriptPointers:
call DisplayTextID
xor a
ld [wNumSafariBalls], a
+ ld [wSafariSteps], a
+ ld [wSafariSteps], a ; ?????
ld a, D_DOWN
ld c, $3
call SafariZoneEntranceAutoWalk
@@ -117,10 +120,10 @@ SafariZoneEntranceScriptPointers:
SafariZoneEntranceAutoWalk:
push af
- ld b,0
- ld a,c
- ld [wSimulatedJoypadStatesIndex],a
- ld hl,wSimulatedJoypadStatesEnd
+ ld b, 0
+ ld a, c
+ ld [wSimulatedJoypadStatesIndex], a
+ ld hl, wSimulatedJoypadStatesEnd
pop af
call FillMemory
jp StartSimulatingJoypadStates
@@ -143,95 +146,21 @@ SafariZoneEntranceTextPointers:
db "@"
.SafariZoneEntranceText4
- TX_FAR SafariZoneEntranceText_9e6e4
TX_ASM
- ld a, MONEY_BOX
- ld [wTextBoxID],a
- call DisplayTextBoxID
- call YesNoChoice
- ld a,[wCurrentMenuItem]
- and a
- jp nz,.PleaseComeAgain
- xor a
- ld [hMoney],a
- ld a,$05
- ld [hMoney + 1],a
- ld a,$00
- ld [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,502 / $100
- ld [wSafariSteps],a
- ld a, 502 % $100
- 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 [wSafariZoneEntranceCurScript],a
- jr .done
-
-.PleaseComeAgain
- ld hl,.PleaseComeAgainText
- call PrintText
-.CantPayWalkDown
- ld a,D_DOWN
- ld c,1
- call SafariZoneEntranceAutoWalk
- ld a,4
- ld [wSafariZoneEntranceCurScript],a
-.done
+ callab Func_f1f77
jp TextScriptEnd
-.MakePaymentText
- TX_FAR SafariZoneEntranceText_9e747
- db $b
- TX_FAR _SafariZoneEntranceText_75360
- db "@"
-
-.PleaseComeAgainText
- TX_FAR _SafariZoneEntranceText_75365
- db "@"
-
-.NotEnoughMoneyText
- TX_FAR _SafariZoneEntranceText_7536a
- db "@"
-
.SafariZoneEntranceText5
TX_FAR SafariZoneEntranceText_9e814
TX_ASM
call YesNoChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
jr nz, .asm_7539c
ld hl, .SafariZoneEntranceText_753bb
call PrintText
xor a
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld a, D_DOWN
ld c, $3
call SafariZoneEntranceAutoWalk
@@ -243,7 +172,7 @@ SafariZoneEntranceTextPointers:
ld hl, .SafariZoneEntranceText_753c0
call PrintText
ld a, SPRITE_FACING_UP
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
ld a, D_UP
ld c, $1
call SafariZoneEntranceAutoWalk
@@ -268,26 +197,5 @@ SafariZoneEntranceTextPointers:
.SafariZoneEntranceText2
TX_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
+ callab Func_f203e
jp TextScriptEnd
-
-.FirstTimeQuestionText
- TX_FAR _SafariZoneEntranceText_753e6
- db "@"
-
-.ExplanationText
- TX_FAR _SafariZoneEntranceText_753eb
- db "@"
-
-.RegularText
- TX_FAR _SafariZoneEntranceText_753f0
- db "@"
diff --git a/scripts/safarizoneentrance2.asm b/scripts/safarizoneentrance2.asm
new file mode 100755
index 00000000..4a6c23e6
--- /dev/null
+++ b/scripts/safarizoneentrance2.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
+ ld [hMoney], a
+ ld a, $5
+ ld [hMoney + 1], a
+ ld a, $0
+ ld [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 [wSafariZoneEntranceCurScript], 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 [wSafariZoneEntranceCurScript], a
+.asm_f2024
+ ret
+
+.WelcomeText
+ TX_FAR SafariZoneEntranceText_9e6e4
+ db "@"
+
+.MakePaymentText
+ TX_FAR SafariZoneEntranceText_9e747
+ TX_SFX_ITEM
+ TX_FAR _SafariZoneEntranceText_75360
+ db "@"
+
+.PleaseComeAgainText
+ TX_FAR _SafariZoneEntranceText_75365
+ db "@"
+
+.NotEnoughMoneyText
+ TX_FAR _SafariZoneEntranceText_7536a
+ db "@"
+
+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
+ TX_FAR _SafariZoneEntranceText_753e6
+ db "@"
+
+.ExplanationText
+ TX_FAR _SafariZoneEntranceText_753eb
+ db "@"
+
+.RegularText
+ TX_FAR _SafariZoneEntranceText_753f0
+ db "@"
+
+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
+ ld [hDivideBCDDivisor], a
+ ld [hDivideBCDDivisor + 1], a
+ ld a, 23
+ ld [hDivideBCDDivisor + 2], a
+ predef DivideBCDPredef3
+ ld 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:
+ TX_FAR _SafariZoneLowCostText1
+ db "@"
+
+SafariZoneEntranceText_f20c9:
+ TX_FAR _SafariZoneLowCostText2
+ db "@"
+
+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:
+ TX_FAR _SafariZoneLowCostText3
+ TX_SFX_ITEM
+ TX_FAR _SafariZoneLowCostText4
+ db "@"
+
+Pointers_f2100:
+ dw SafariZoneEntranceText_f210a
+ dw SafariZoneEntranceText_f210f
+ dw SafariZoneEntranceText_f2114
+ dw SafariZoneEntranceText_f2119
+ dw SafariZoneEntranceText_f2119
+
+SafariZoneEntranceText_f210a:
+ TX_FAR _SafariZoneLowCostText5
+ db "@"
+
+SafariZoneEntranceText_f210f:
+ TX_FAR _SafariZoneLowCostText6
+ db "@"
+
+SafariZoneEntranceText_f2114:
+ TX_FAR _SafariZoneLowCostText7
+ db "@"
+
+SafariZoneEntranceText_f2119:
+ TX_FAR _SafariZoneLowCostText8
+ db "@"
+
+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 82467215..46667927 100755
--- a/scripts/saffronpokecenter.asm
+++ b/scripts/saffronpokecenter.asm
@@ -7,6 +7,7 @@ SaffronPokecenterTextPointers:
dw SaffronPokecenterText2
dw SaffronPokecenterText3
dw SaffronTradeNurseText
+ dw SaffronPokecenterText5
SaffronHealNurseText:
TX_POKECENTER_NURSE
@@ -21,3 +22,8 @@ SaffronPokecenterText3:
SaffronTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+SaffronPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/school.asm b/scripts/school.asm
index 2300946b..a64189e3 100755
--- a/scripts/school.asm
+++ b/scripts/school.asm
@@ -1,14 +1,22 @@
SchoolScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
SchoolTextPointers:
dw SchoolText1
dw SchoolText2
+ dw SchoolText3
SchoolText1:
TX_FAR _SchoolText1
db "@"
SchoolText2:
- TX_FAR _SchoolText2
- db "@"
+ TX_ASM
+ callba Func_f1c0f
+ jp TextScriptEnd
+
+SchoolText3:
+ TX_ASM
+ callba Func_f1c03
+ jp TextScriptEnd
diff --git a/scripts/school2.asm b/scripts/school2.asm
new file mode 100755
index 00000000..677a43ec
--- /dev/null
+++ b/scripts/school2.asm
@@ -0,0 +1,17 @@
+Func_f1c03:
+ ld hl, SchoolText_f1c0a
+ call PrintText
+ ret
+
+SchoolText_f1c0a:
+ TX_FAR _SchoolText3
+ db "@"
+
+Func_f1c0f:
+ ld hl, SchoolText_f1c16
+ call PrintText
+ ret
+
+SchoolText_f1c16:
+ TX_FAR _SchoolText2
+ db "@"
diff --git a/scripts/seafoamislands4.asm b/scripts/seafoamislands4.asm
index 34873004..a1e4b1d8 100755
--- a/scripts/seafoamislands4.asm
+++ b/scripts/seafoamislands4.asm
@@ -42,7 +42,7 @@ SeafoamIslands4Script:
.asm_465ed
ld hl, SeafoamIslands4ScriptPointers
ld a, [wSeafoamIslands4CurScript]
- jp CallFunctionInTable
+ jp JumpTable
Seafoam4HolesCoords:
db $10,$03
diff --git a/scripts/seafoamislands5.asm b/scripts/seafoamislands5.asm
index a233fb6a..478946fa 100755
--- a/scripts/seafoamislands5.asm
+++ b/scripts/seafoamislands5.asm
@@ -2,12 +2,13 @@ SeafoamIslands5Script:
call EnableAutoTextBoxDrawing
ld a, [wSeafoamIslands5CurScript]
ld hl, SeafoamIslands5ScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
SeafoamIslands5Script_467a5:
xor a
- ld [wSeafoamIslands5CurScript], a
ld [wJoyIgnore], a
+ ld [wSeafoamIslands5CurScript], a
+ ld [wCurMapScript], a
ret
SeafoamIslands5ScriptPointers:
diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm
index 994cd215..cd5a818d 100755
--- a/scripts/silphco11.asm
+++ b/scripts/silphco11.asm
@@ -1,5 +1,5 @@
SilphCo11Script:
- call SilphCo11Script_62110
+ call SilphCo11Script_62127
call EnableAutoTextBoxDrawing
ld hl, SilphCo11TrainerHeaders
ld de, SilphCo11ScriptPointers
@@ -8,26 +8,27 @@ SilphCo11Script:
ld [wSilphCo11CurScript], 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:
db $06,$03
db $FF
-SilphCo11Script_62137:
+SilphCo11Script_6214f:
push hl
ld hl, wCardKeyDoorY
ld a, [hli]
@@ -63,93 +64,17 @@ SilphCo11Script_62137:
ld [$ffe0], a
ret
-SilphCo11Script_62163:
+SilphCo11Script_6217b:
ld a, [$ffe0]
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 $ff
- 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 $FF
-
-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 $FF
-
-SilphCo11Script_621c4:
+SilphCo11Script_62185:
xor a
ld [wJoyIgnore], a
-
-SilphCo11Script_621c8:
+SilphCo11Script_62189:
ld [wSilphCo11CurScript], a
ld [wCurMapScript], a
ret
@@ -161,10 +86,26 @@ SilphCo11ScriptPointers:
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:
db $0D,$06
@@ -196,18 +138,18 @@ MovementData_62216:
db NPC_MOVEMENT_DOWN
db $FF
-SilphCo11Script_6221a:
+SilphCo11Script_621ff:
ld [wPlayerMovingDirection], a
- ld a, $3
- ld [H_SPRITEINDEX], a
ld a, b
- ld [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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
call GBFadeOutToBlack
- call SilphCo11Script_6216d
+ callba 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,276 @@ 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
ld a, [H_SPRITEINDEX]
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
+ ld [hJoyHeld], a
+ ld a, $fc
+ ld [wJoyIgnore], a
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, $8
+ ld [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
+; 622f4
+
+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
+ ld [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
+ ld [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
+ ld [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
+ ld [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
+ ld [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
+ ld [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
SilphCo11TextPointers:
dw SilphCo11Text1
@@ -279,64 +471,94 @@ SilphCo11TextPointers:
dw SilphCo11Text4
dw SilphCo11Text5
dw SilphCo11Text6
+ dw SilphCo11Text7
+ dw SilphCo11Text8
+ dw SilphCo11Text9
+ dw SilphCo11Text10
SilphCo11TrainerHeaders:
SilphCo11TrainerHeader0:
- dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_0
- db ($4 << 4) ; trainer's view range
- dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_0
- dw SilphCo11BattleText1 ; TextBeforeBattle
- dw SilphCo11AfterBattleText1 ; TextAfterBattle
- dw SilphCo11EndBattleText1 ; TextEndBattle
- dw SilphCo11EndBattleText1 ; TextEndBattle
-
-SilphCo11TrainerHeader1:
dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_1
- db ($3 << 4) ; trainer's view range
+ db ($3 << 4)
dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_1
- dw SilphCo11BattleText2 ; TextBeforeBattle
- dw SilphCo11AfterBattleText2 ; TextAfterBattle
- dw SilphCo11EndBattleText2 ; TextEndBattle
- dw SilphCo11EndBattleText2 ; TextEndBattle
+ dw SilphCo11Trainer1BattleText
+ dw SilphCo11Trainer1AfterBattleText
+ dw SilphCo11Trainer1EndBattleText
+ dw SilphCo11Trainer1EndBattleText
- db $ff
+ db $ff ; no more trainers
+
+SilphCo11Text4:
+SilphCo11Text6:
+SilphCo11Text8:
+ TX_FAR _SilphCoJessieJamesText1
+ TX_ASM
+ ld c, 10
+ call DelayFrames
+ ld a, $4
+ ld [wPlayerMovingDirection], a
+ ld a, $0
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $0
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ ld c, 20
+ call DelayFrames
+ jp TextScriptEnd
+
+SilphCo11Text9:
+ TX_FAR _SilphCoJessieJamesText2
+ db "@"
+
+SilphCo11Text_624c2:
+ TX_FAR _SilphCoJessieJamesText3
+ db "@"
+
+SilphCo11Text10:
+ TX_FAR _SilphCoJessieJamesText4
+ TX_ASM
+ ld c, 64
+ call DelayFrames
+ jp TextScriptEnd
SilphCo11Text1:
TX_ASM
CheckEvent EVENT_GOT_MASTER_BALL
- jp nz, .asm_62308
- ld hl, SilphCoPresidentText
+ jp nz, .asm_62500
+ ld hl, SilphCo11Text_62509
call PrintText
lb bc, MASTER_BALL, 1
call GiveItem
- jr nc, .BagFull
- ld hl, ReceivedSilphCoMasterBallText
+ jr nc, .asm_624f8
+ ld hl, SilphCo11Text_6250e
call PrintText
SetEvent EVENT_GOT_MASTER_BALL
- jr .asm_6230e
-.BagFull
- ld hl, SilphCoMasterBallNoRoomText
+ jr .asm_62506
+.asm_624f8
+ ld hl, SilphCo11Text_62519
call PrintText
- jr .asm_6230e
-.asm_62308
- ld hl, SilphCo10Text_6231c
+ jr .asm_62506
+
+.asm_62500
+ ld hl, SilphCo11Text_62514
call PrintText
-.asm_6230e
+.asm_62506
jp TextScriptEnd
-SilphCoPresidentText:
+SilphCo11Text_62509:
TX_FAR _SilphCoPresidentText
db "@"
-ReceivedSilphCoMasterBallText:
+SilphCo11Text_6250e:
TX_FAR _ReceivedSilphCoMasterBallText
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
-SilphCo10Text_6231c:
+SilphCo11Text_62514:
TX_FAR _SilphCo10Text_6231c
db "@"
-SilphCoMasterBallNoRoomText:
+SilphCo11Text_62519:
TX_FAR _SilphCoMasterBallNoRoomText
db "@"
@@ -348,58 +570,28 @@ SilphCo11Text3:
TX_FAR _SilphCo11Text3
db "@"
-SilphCo10Text_62330:
+SilphCo10Text_62528:
TX_FAR _SilphCo10Text_62330
db "@"
-SilphCo11Text6:
+SilphCo11Text7:
TX_FAR _SilphCo10Text_62335
db "@"
-SilphCo11Text4:
- TX_ASM
- ld hl, SilphCo11TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
-
-SilphCo11BattleText1:
- TX_FAR _SilphCo11BattleText1
- db "@"
-
-SilphCo11EndBattleText1:
- TX_FAR _SilphCo11EndBattleText1
- db "@"
-
-SilphCo11AfterBattleText1:
- TX_FAR _SilphCo11AfterBattleText1
- db "@"
-
SilphCo11Text5:
TX_ASM
- ld hl, SilphCo11TrainerHeader1
+ ld hl, SilphCo11TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-SilphCo11BattleText2:
+SilphCo11Trainer1BattleText:
TX_FAR _SilphCo11BattleText2
db "@"
-SilphCo11EndBattleText2:
+SilphCo11Trainer1EndBattleText:
TX_FAR _SilphCo11EndBattleText2
db "@"
-SilphCo11AfterBattleText2:
+SilphCo11Trainer1AfterBattleText:
TX_FAR _SilphCo11AfterBattleText2
db "@"
-
-SilphCo10Text_6236c:
- TX_ASM
- ld hl, SilphCo10Text_6237b
- call PrintText
- ld a, PORYGON
- call DisplayPokedex
- jp TextScriptEnd
-
-SilphCo10Text_6237b:
- TX_FAR _SilphCo10Text_6237b
- db "@"
diff --git a/scripts/silphco11_2.asm b/scripts/silphco11_2.asm
new file mode 100755
index 00000000..bf575de5
--- /dev/null
+++ b/scripts/silphco11_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/silphco7.asm b/scripts/silphco7.asm
index 9469d294..2e93d92a 100755
--- a/scripts/silphco7.asm
+++ b/scripts/silphco7.asm
@@ -130,9 +130,7 @@ SilphCo7Script0:
ld [wJoyIgnore], a
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
- ld a, $ff
- 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_SONY2
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
ld [hSpriteIndexOrTextID], a
call DisplayTextID
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld de, MovementData_51d1d
ld a, [wcf0d]
diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm
index 654b881a..4f0ffa2f 100755
--- a/scripts/ssanne2.asm
+++ b/scripts/ssanne2.asm
@@ -2,7 +2,7 @@ SSAnne2Script:
call EnableAutoTextBoxDrawing
ld hl, SSAnne2ScriptPointers
ld a, [wSSAnne2CurScript]
- jp CallFunctionInTable
+ jp JumpTable
SSAnne2Script_613ab:
xor a
@@ -24,9 +24,7 @@ SSAnne2Script0:
ld hl, CoordsData_61411
call ArePlayerCoordsInArray
ret nc
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
@@ -99,23 +97,8 @@ SSAnne2Script1:
call Delay3
ld a, OPP_SONY2
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 [wSSAnne2CurScript], a
@@ -145,9 +128,7 @@ SSAnne2Script2:
ld a, $2
ld [H_SPRITEINDEX], a
call MoveSprite
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
callba Music_RivalAlternateStart
ld a, $3
ld [wSSAnne2CurScript], a
diff --git a/scripts/ssanne7.asm b/scripts/ssanne7.asm
index a2fb1387..06789cd5 100755
--- a/scripts/ssanne7.asm
+++ b/scripts/ssanne7.asm
@@ -3,7 +3,7 @@ SSAnne7Script:
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 .asm_0faf5
.BagFull
ld hl, HM01NoRoomText
call PrintText
- ld hl, wd72d
- set 5, [hl]
jr .asm_0faf5
.asm_797c4
ld hl, SSAnne7Text_61932
@@ -45,12 +45,10 @@ SSAnne7RubText:
TX_FAR _SSAnne7RubText
TX_ASM
ld a, [wAudioROMBank]
- cp BANK(Audio3_UpdateMusic)
+ cp AUDIO_3
ld [wAudioSavedROMBank], a
jr nz, .asm_61908
- ld a, $ff
- ld [wNewSoundID], a
- call PlaySound
+ call StopAllMusic
ld a, Bank(Music_PkmnHealed)
ld [wAudioROMBank], a
.asm_61908
diff --git a/scripts/ssanne9.asm b/scripts/ssanne9.asm
index 789b0fa8..6e658e5f 100755
--- a/scripts/ssanne9.asm
+++ b/scripts/ssanne9.asm
@@ -1,8 +1,5 @@
SSAnne9Script:
- ld a, $1
- ld [wAutoTextBoxDrawingControl], a
- xor a
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ call DisableAutoTextBoxDrawing
ld hl, SSAnne9TrainerHeaders
ld de, SSAnne9ScriptPointers
ld a, [wSSAnne9CurScript]
@@ -129,44 +126,24 @@ SSAnne9Text_61c10:
SSAnne9Text10:
TX_ASM
- ld hl, SSAnne9Text_61c1f
- call PrintText
+ callba Func_f2570
jp TextScriptEnd
-SSAnne9Text_61c1f:
- TX_FAR _SSAnne9Text_61c1f
- db "@"
-
SSAnne9Text11:
TX_ASM
- ld hl, SSAnne9Text_61c2e
- call PrintText
+ callba Func_f257c
jp TextScriptEnd
-SSAnne9Text_61c2e:
- TX_FAR _SSAnne9Text_61c2e
- db "@"
-
SSAnne9Text12:
TX_ASM
- ld hl, SSAnne9Text_61c3d
- call PrintText
+ callba Func_f2588
jp TextScriptEnd
-SSAnne9Text_61c3d:
- TX_FAR _SSAnne9Text_61c3d
- db "@"
-
SSAnne9Text13:
TX_ASM
- ld hl, SSAnne9Text_61c4c
- call PrintText
+ callba Func_f2594
jp TextScriptEnd
-SSAnne9Text_61c4c:
- TX_FAR _SSAnne9Text_61c4c
- db "@"
-
SSAnne9BattleText1:
TX_FAR _SSAnne9BattleText1
db "@"
diff --git a/scripts/ssanne9_2.asm b/scripts/ssanne9_2.asm
new file mode 100755
index 00000000..f856221c
--- /dev/null
+++ b/scripts/ssanne9_2.asm
@@ -0,0 +1,35 @@
+Func_f2570:
+ ld hl, SSAnne9Text_f2577
+ call PrintText
+ ret
+
+SSAnne9Text_f2577:
+ TX_FAR _SSAnne9Text_61c1f
+ db "@"
+
+Func_f257c:
+ ld hl, SSAnne9Text_f2583
+ call PrintText
+ ret
+
+SSAnne9Text_f2583:
+ TX_FAR _SSAnne9Text_61c2e
+ db "@"
+
+Func_f2588:
+ ld hl, SSAnne9Text_f258f
+ call PrintText
+ ret
+
+SSAnne9Text_f258f:
+ TX_FAR _SSAnne9Text_61c3d
+ db "@"
+
+Func_f2594:
+ ld hl, SSAnne9Text_f259b
+ call PrintText
+ ret
+
+SSAnne9Text_f259b:
+ TX_FAR _SSAnne9Text_61c4c
+ db "@"
diff --git a/scripts/tradecenter.asm b/scripts/tradecenter.asm
index a200e719..a200e719 100755..100644
--- a/scripts/tradecenter.asm
+++ b/scripts/tradecenter.asm
diff --git a/scripts/unknowndungeon1.asm b/scripts/unknowndungeon1.asm
index 9d7f120e..3b5fae5d 100755
--- a/scripts/unknowndungeon1.asm
+++ b/scripts/unknowndungeon1.asm
@@ -5,3 +5,4 @@ UnknownDungeon1TextPointers:
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/unknowndungeon2.asm b/scripts/unknowndungeon2.asm
index 3ed00a45..55ebb752 100755
--- a/scripts/unknowndungeon2.asm
+++ b/scripts/unknowndungeon2.asm
@@ -5,3 +5,4 @@ UnknownDungeon2TextPointers:
dw PickUpItemText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
diff --git a/scripts/unknowndungeon3.asm b/scripts/unknowndungeon3.asm
index 2790694b..46a1cafd 100755
--- a/scripts/unknowndungeon3.asm
+++ b/scripts/unknowndungeon3.asm
@@ -7,7 +7,7 @@ UnknownDungeon3Script:
ld [wUnknownDungeon3CurScript], a
ret
-.ScriptPointers
+.ScriptPointers:
dw CheckFightingMapTrainers
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
@@ -16,6 +16,8 @@ UnknownDungeon3TextPointers:
dw MewtwoText
dw PickUpItemText
dw PickUpItemText
+ dw PickUpItemText
+ dw PickUpItemText
UnknownDungeon3TrainerHeaders:
MewtwoTrainerHeader:
diff --git a/scripts/vermilioncity.asm b/scripts/vermilioncity.asm
index 0a734e25..b73797bb 100755
--- a/scripts/vermilioncity.asm
+++ b/scripts/vermilioncity.asm
@@ -1,5 +1,7 @@
VermilionCityScript:
call EnableAutoTextBoxDrawing
+ ld hl, wd492
+ res 7, [hl]
ld hl, wCurrentMapScriptFlags
bit 6, [hl]
res 6, [hl]
@@ -11,11 +13,24 @@ VermilionCityScript:
call nz, VermilionCityScript_197c0
ld hl, VermilionCityScriptPointers
ld a, [wVermilionCityCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ call VermilionCityScript_19869
+ ret
+
+VermilionCityScript_19869:
+ CheckEventHL EVENT_152
+ ret nz
+ CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER
+ ret z
+ SetEventReuseHL EVENT_152
+ ret
VermilionCityScript_197c0:
call Random
- ld a, [$ffd4]
+ ld a, [hRandomAdd]
+ ld b, a
+ ld a, [hRandomSub]
+ adc b
and $e
ld [wFirstLockTrashCanIndex], a
ret
@@ -38,12 +53,12 @@ VermilionCityScriptPointers:
dw VermilionCityScript4
VermilionCityScript0:
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
and a ; cp SPRITE_FACING_DOWN
- ret nz
+ jr nz, .asm_198de
ld hl, CoordsData_19823
call ArePlayerCoordsInArray
- ret nc
+ jr nc, .asm_198de
xor a
ld [hJoyHeld], a
ld [wcf0d], a
@@ -67,6 +82,9 @@ VermilionCityScript0:
ld [wVermilionCityCurScript], a
ret
+.asm_198de
+ ret
+
CoordsData_19823:
db $1e,$12
db $ff
@@ -122,11 +140,12 @@ VermilionCityTextPointers:
dw VermilionCityText6
dw VermilionCityText7
dw VermilionCityText8
+ dw VermilionCityText9
dw MartSignText
dw PokeCenterSignText
- dw VermilionCityText11
dw VermilionCityText12
dw VermilionCityText13
+ dw VermilionCityText14
VermilionCityText1:
TX_FAR _VermilionCityText1
@@ -157,7 +176,7 @@ VermilionCityText3:
TX_ASM
CheckEvent EVENT_SS_ANNE_LEFT
jr nz, .asm_198f6
- ld a, [wSpriteStateData1 + 9]
+ ld a, [wPlayerFacingDirection]
cp SPRITE_FACING_RIGHT
jr z, .asm_198c8
ld hl, VermilionCityCoords1
@@ -225,33 +244,43 @@ VermilionCityText5:
ld a, MACHOP
call PlayCry
call WaitForSoundToFinish
- ld hl, VermilionCityText14
+ ld hl, VermilionCityText15
ret
-VermilionCityText14:
- TX_FAR _VermilionCityText14
+VermilionCityText15:
+ TX_FAR _VermilionCityText15
db "@"
VermilionCityText6:
TX_FAR _VermilionCityText6
db "@"
-VermilionCityText7:
- TX_FAR _VermilionCityText7
- db "@"
-
VermilionCityText8:
- TX_FAR _VermilionCityText8
- db "@"
+ TX_ASM
+ callba Func_f1a8a
+ jp TextScriptEnd
-VermilionCityText11:
- TX_FAR _VermilionCityText11
- db "@"
+VermilionCityText9:
+ TX_ASM
+ callba Func_f1a96
+ jp TextScriptEnd
VermilionCityText12:
- TX_FAR _VermilionCityText12
- db "@"
+ TX_ASM
+ callba Func_f1aa2
+ jp TextScriptEnd
VermilionCityText13:
- TX_FAR _VermilionCityText13
- db "@"
+ TX_ASM
+ callba Func_f1aae
+ jp TextScriptEnd
+
+VermilionCityText14:
+ TX_ASM
+ callba Func_f1aba
+ jp TextScriptEnd
+
+VermilionCityText7:
+ TX_ASM
+ callba Func_f1a0f
+ jp TextScriptEnd
diff --git a/scripts/vermilioncity2.asm b/scripts/vermilioncity2.asm
new file mode 100755
index 00000000..eb7ea37a
--- /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:
+ TX_FAR _OfficerJennyText1
+ db "@"
+
+OfficerJennyText2:
+ TX_FAR _OfficerJennyText2
+ db "@"
+
+OfficerJennyText3:
+ TX_FAR _OfficerJennyText3
+ db $d
+ db "@"
+
+OfficerJennyText4:
+ TX_FAR _OfficerJennyText4
+ db "@"
+
+OfficerJennyText5:
+ TX_FAR _OfficerJennyText5
+ db "@"
+
+Func_f1a8a:
+ ld hl, VermilionCityText_f1a91
+ call PrintText
+ ret
+
+VermilionCityText_f1a91:
+ TX_FAR _VermilionCityText8
+ db "@"
+
+Func_f1a96:
+ ld hl, VermilionCityText_f1a9d
+ call PrintText
+ ret
+
+VermilionCityText_f1a9d:
+ TX_FAR _VermilionCityText9
+ db "@"
+
+Func_f1aa2:
+ ld hl, VermilionCityText_f1aa9
+ call PrintText
+ ret
+
+VermilionCityText_f1aa9:
+ TX_FAR _VermilionCityText12
+ db "@"
+
+Func_f1aae:
+ ld hl, VermilionCityText_f1ab5
+ call PrintText
+ ret
+
+VermilionCityText_f1ab5:
+ TX_FAR _VermilionCityText13
+ db "@"
+
+Func_f1aba:
+ ld hl, VermilionCityText_f1ac1
+ call PrintText
+ ret
+
+VermilionCityText_f1ac1:
+ TX_FAR _VermilionCityText14
+ db "@"
diff --git a/scripts/vermiliondock.asm b/scripts/vermiliondock.asm
index 5b5d520b..e1378db3 100755
--- a/scripts/vermiliondock.asm
+++ b/scripts/vermiliondock.asm
@@ -40,8 +40,7 @@ VermilionDock_1db9b:
SetEventForceReuseHL EVENT_SS_ANNE_LEFT
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:
ld [H_AUTOBGTRANSFERENABLED], a
ld [wSSAnneSmokeDriftAmount], a
ld [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/vermiliongym.asm b/scripts/vermiliongym.asm
index eb726831..90ffc34c 100755
--- a/scripts/vermiliongym.asm
+++ b/scripts/vermiliongym.asm
@@ -29,14 +29,15 @@ Gym3LeaderName:
VermilionGymScript_5ca6d:
CheckEvent EVENT_2ND_LOCK_OPENED
- jr nz, .asm_5ca78
+ jr nz, .opened_second_lock
ld a, $24
- jr .asm_5ca7f
-.asm_5ca78
+ jr .load_door_tile
+
+.opened_second_lock
ld a, SFX_GO_INSIDE
call PlaySound
ld a, $5
-.asm_5ca7f
+.load_door_tile
ld [wNewTileBlockID], a
lb bc, 2, 2
predef_jump ReplaceTileBlock
@@ -73,12 +74,13 @@ VermilionGymScript_5caaa:
ld [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM24
- jr .asm_5cad3
+ jr .set_gym_flags
+
.BagFull
ld a, $8
ld [hSpriteIndexOrTextID], a
call DisplayTextID
-.asm_5cad3
+.set_gym_flags
ld hl, wObtainedBadges
set 2, [hl]
ld hl, wBeatGymFlags
@@ -132,17 +134,19 @@ VermilionGymTrainerHeader2:
VermilionGymText1:
TX_ASM
CheckEvent EVENT_BEAT_LT_SURGE
- jr z, .asm_5cb39
+ jr z, .engage_surge
CheckEventReuseA EVENT_GOT_TM24
- jr nz, .asm_5cb31
+ jr nz, .after_win_text
call z, VermilionGymScript_5caaa
call DisableWaitingAfterTextDisplay
- jr .asm_5cb6a
-.asm_5cb31
+ jr .text_script_end
+
+.after_win_text
ld hl, VermilionGymText_5cb72
call PrintText
- jr .asm_5cb6a
-.asm_5cb39
+ jr .text_script_end
+
+.engage_surge
ld hl, VermilionGymText_5cb6d
call PrintText
ld hl, wd72d
@@ -162,7 +166,7 @@ VermilionGymText1:
ld a, $3
ld [wVermilionGymCurScript], a
ld [wCurMapScript], a
-.asm_5cb6a
+.text_script_end
jp TextScriptEnd
VermilionGymText_5cb6d:
@@ -179,7 +183,7 @@ VermilionGymText6:
VermilionGymText7:
TX_FAR _ReceivedTM24Text
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _TM24ExplanationText
db "@"
@@ -249,14 +253,15 @@ VermilionGymText5:
TX_ASM
ld a, [wBeatGymFlags]
bit 2, a
- jr nz, .asm_5cbeb
+ jr nz, .beat_surge
ld hl, VermilionGymText_5cbf4
call PrintText
- jr .asm_5cbf1
-.asm_5cbeb
+ jr .text_script_end
+
+.beat_surge
ld hl, VermilionGymText_5cbf9
call PrintText
-.asm_5cbf1
+.text_script_end
jp TextScriptEnd
VermilionGymText_5cbf4:
diff --git a/scripts/vermilionhouse3.asm b/scripts/vermilionhouse3.asm
index 1f0af501..aeada0d0 100755
--- a/scripts/vermilionhouse3.asm
+++ b/scripts/vermilionhouse3.asm
@@ -5,8 +5,5 @@ VermilionHouse3TextPointers:
dw VermilionHouse3Text1
VermilionHouse3Text1:
- TX_ASM
- ld a, $4
- ld [wWhichTrade], a
- predef DoInGameTradeDialogue
- jp TextScriptEnd
+ TX_FAR TeachingHMsText
+ db "@"
diff --git a/scripts/vermilionpokecenter.asm b/scripts/vermilionpokecenter.asm
index f70aed31..af481a16 100755
--- a/scripts/vermilionpokecenter.asm
+++ b/scripts/vermilionpokecenter.asm
@@ -7,6 +7,7 @@ VermilionPokecenterTextPointers:
dw VermilionPokecenterText2
dw VermilionPokecenterText3
dw VermilionTradeNurseText
+ dw VermilionPokecenterText5
VermilionHealNurseText:
TX_POKECENTER_NURSE
@@ -21,3 +22,8 @@ VermilionPokecenterText3:
VermilionTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+VermilionPokecenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd
diff --git a/scripts/victoryroad1.asm b/scripts/victoryroad1.asm
index 8ec6725b..0f4de43e 100755
--- a/scripts/victoryroad1.asm
+++ b/scripts/victoryroad1.asm
@@ -29,6 +29,9 @@ VictoryRoad1Script0:
ld hl, CoordsData_5da5c
call CheckBoulderCoords
jp nc, CheckFightingMapTrainers
+ ld a, [H_SPRITEINDEX]
+ cp $f
+ jp z, CheckFightingMapTrainers
ld hl, wCurrentMapScriptFlags
set 5, [hl]
SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH
diff --git a/scripts/victoryroad2.asm b/scripts/victoryroad2.asm
index 5a3413ee..20a80461 100755
--- a/scripts/victoryroad2.asm
+++ b/scripts/victoryroad2.asm
@@ -17,7 +17,6 @@ VictoryRoad2Script:
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
+ ld a, [hSpriteIndexOrTextID]
+ cp $f
+ jp z, CheckFightingMapTrainers
EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1
ld a, [wCoordIndex]
cp $2
@@ -133,10 +134,10 @@ MoltresTrainerHeader:
dbEventFlagBit EVENT_BEAT_MOLTRES
db ($0 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_MOLTRES
- dw MoltresBattleText ; TextBeforeBattle
- dw MoltresBattleText ; TextAfterBattle
- dw MoltresBattleText ; TextEndBattle
- dw MoltresBattleText ; TextEndBattle
+ dw MoltresBattleText ; TextBeforeBattle
+ dw MoltresBattleText ; TextAfterBattle
+ dw MoltresBattleText ; TextEndBattle
+ dw MoltresBattleText ; TextEndBattle
db $ff
diff --git a/scripts/victoryroad3.asm b/scripts/victoryroad3.asm
index ef638a0f..31e06053 100755
--- a/scripts/victoryroad3.asm
+++ b/scripts/victoryroad3.asm
@@ -36,6 +36,9 @@ VictoryRoad3Script0:
ld a, [wCoordIndex]
cp $1
jr nz, .asm_449dc
+ ld 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 cd629d7e..5aa1dbbc 100755
--- a/scripts/viridiancity.asm
+++ b/scripts/viridiancity.asm
@@ -2,325 +2,363 @@ ViridianCityScript:
call EnableAutoTextBoxDrawing
ld hl, ViridianCityScriptPointers
ld a, [wViridianCityCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
ViridianCityScriptPointers:
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]
- cp %01111111
- jr nz, .asm_1901e
+ cp $7f ; all but Earthbadge
+ jr nz, .asm_1906e
SetEvent EVENT_VIRIDIAN_GYM_OPEN
ret
-.asm_1901e
+
+.asm_1906e
ld a, [wYCoord]
- cp $8
+ cp 8
ret nz
ld a, [wXCoord]
- cp $20
+ cp 32
ret nz
- ld a, $e
+ ld a, $f
ld [hSpriteIndexOrTextID], a
call DisplayTextID
+ call StartSimulatingJoypadStates
+ ld a, $1
+ ld [wSimulatedJoypadStatesIndex], a
+ ld a, D_DOWN
+ ld [wSimulatedJoypadStatesEnd], a
xor a
+ ld [wPlayerFacingDirection], a
+ ld [wJoyIgnore], a
ld [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
+ cp 9
ret nz
ld a, [wXCoord]
- cp $13
+ cp 19
ret nz
ld a, $5
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ call ViridianCityScript_1914d
+ ld a, $5
ld [wViridianCityCurScript], a
ret
-ViridianCityScript1:
- ld a, [wSpriteStateData1 + $34]
- ld [$ffeb], a
- ld a, [wSpriteStateData1 + $36]
- ld [$ffec], a
- ld a, [wSpriteStateData2 + $34]
- ld [$ffed], a
- ld a, [wSpriteStateData2 + $35]
- ld [$ffee], a
+ViridianCityScript3:
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ ResetEvent EVENT_02F
+ ld a, $4
+ ld [wViridianCityCurScript], a
+ ret
+
+ViridianCityScript_190db:
xor a
ld [wListScrollOffset], a
-
- ; set up battle for Old Man
ld a, BATTLE_TYPE_OLD_MAN
ld [wBattleType], a
ld a, 5
ld [wCurEnemyLVL], a
- ld a, WEEDLE
+ ld a, RATTATA
ld [wCurOpponent], a
- ld a, $2
- ld [wViridianCityCurScript], a
ret
-ViridianCityScript2:
- ld a, [$ffeb]
- ld [wSpriteStateData1 + $34], a
- ld a, [$ffec]
- ld [wSpriteStateData1 + $36], a
- ld a, [$ffed]
- ld [wSpriteStateData2 + $34], a
- ld a, [$ffee]
- ld [wSpriteStateData2 + $35], a
+ViridianCityScript_190ef:
+ ld a, [wSpriteStateData1 + 3 * $10 + 4]
+ ld [$ffeb], a
+ ld a, [wSpriteStateData1 + 3 * $10 + 6]
+ ld [$ffec], a
+ ld a, [wSpriteStateData2 + 3 * $10 + 4]
+ ld [$ffed], a
+ ld a, [wSpriteStateData2 + 3 * $10 + 5]
+ ld [$ffee], a
+ ret
+
+ViridianCityScript4:
+ call ViridianCityScript_1912a
call UpdateSprites
call Delay3
+ SetEvent EVENT_02E
xor a
ld [wJoyIgnore], a
- ld a, $f
+ ld a, $10
ld [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wBattleType], a
ld [wJoyIgnore], a
- ld a, $0
+ ld a, $2
ld [wViridianCityCurScript], a
ret
-ViridianCityScript3:
+ViridianCityScript_1912a:
+ ld a, [$ffeb]
+ ld [wSpriteStateData1 + 3 * $10 + 4], a
+ ld a, [$ffec]
+ ld [wSpriteStateData1 + 3 * $10 + 6], a
+ ld a, [$ffed]
+ ld [wSpriteStateData2 + 3 * $10 + 4], a
+ ld a, [$ffee]
+ ld [wSpriteStateData2 + 3 * $10 + 5], a
+ ret
+
+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
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
xor a
- ld [wSpriteStateData1 + 9], a
+ ld [wPlayerFacingDirection], a
+ 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
+ ld [hSpriteIndexOrTextID], a
+ ld a, SPRITE_FACING_RIGHT
+ ld [hSpriteFacingDirection], a
+ call SetSpriteFacingDirectionAndDelay
+ ld a, $8
+ ld [wPlayerFacingDirection], a
+ ld a, $8
+ ld [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
+ ld [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
+ callab Func_f1a01
+ ld de, ViridianCityOldManMovementData1
+.asm_191e4
+ ld a, $8
+ ld [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
ViridianCityTextPointers:
- 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:
- TX_FAR _ViridianCityText1
- db "@"
-
-ViridianCityText2:
+ViridianCityText_0:
TX_ASM
- ld a, [wObtainedBadges]
- cp %01111111
- ld hl, ViridianCityText_19127
- jr z, .asm_ae9fe
- CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
- jr nz, .asm_ae9fe
- ld hl, ViridianCityText_19122
-.asm_ae9fe
- call PrintText
+ callba Func_f18bb
jp TextScriptEnd
-ViridianCityText_19122:
- TX_FAR _ViridianCityText_19122
- db "@"
-
-ViridianCityText_19127:
- TX_FAR _ViridianCityText_19127
- db "@"
-
-ViridianCityText3:
+ViridianCityText_1:
TX_ASM
- ld hl, ViridianCityText_1914d
- call PrintText
- call YesNoChoice
- ld a, [wCurrentMenuItem]
- and a
- jr nz, .asm_6dfea
- ld hl, ViridianCityText_19157
- call PrintText
- jr .asm_d611f
-.asm_6dfea
- ld hl, ViridianCityText_19152
- call PrintText
-.asm_d611f
+ callba Func_f18c7
jp TextScriptEnd
-ViridianCityText_1914d:
- TX_FAR _ViridianCityText_1914d
- db "@"
-
-ViridianCityText_19152:
- TX_FAR _ViridianCityText_19152
- db "@"
-
-ViridianCityText_19157:
- TX_FAR _ViridianCityText_19157
- db "@"
-
-ViridianCityText4:
+ViridianCityText_2:
TX_ASM
- CheckEvent EVENT_GOT_POKEDEX
- jr nz, .asm_83894
- ld hl, ViridianCityText_19175
- call PrintText
- jr .asm_700a6
-.asm_83894
- ld hl, ViridianCityText_1917a
- call PrintText
-.asm_700a6
+ callba Func_f18e9
jp TextScriptEnd
-ViridianCityText_19175:
- TX_FAR _ViridianCityText_19175
- db "@"
-
-ViridianCityText_1917a:
- TX_FAR _ViridianCityText_1917a
- db "@"
-
-ViridianCityText5:
+ViridianCityText_3:
TX_ASM
- ld hl, ViridianCityText_19191
- call PrintText
- call ViridianCityScript_190cf
- ld a, $3
- ld [wViridianCityCurScript], a
+ callba Func_f1911
jp TextScriptEnd
-ViridianCityText_19191:
- TX_FAR _ViridianCityText_19191
- db "@"
-
-ViridianCityText6:
+ViridianCityText_4:
TX_ASM
- CheckEvent EVENT_GOT_TM42
- jr nz, .asm_4e5a0
- ld hl, ViridianCityText_191ca
- call PrintText
- lb bc, TM_42, 1
- call GiveItem
- jr nc, .BagFull
- ld hl, ReceivedTM42Text
- call PrintText
- SetEvent EVENT_GOT_TM42
- jr .asm_3c73c
-.BagFull
- ld hl, TM42NoRoomText
- call PrintText
- jr .asm_3c73c
-.asm_4e5a0
- ld hl, TM42Explanation
- call PrintText
-.asm_3c73c
+ callba Func_f192c
jp TextScriptEnd
-ViridianCityText_191ca:
- TX_FAR _ViridianCityText_191ca
- db "@"
-
-ReceivedTM42Text:
- TX_FAR _ReceivedTM42Text
- db $10, "@"
+ViridianCityText_5:
+ TX_ASM
+ callba Func_f194a
+ jp TextScriptEnd
-TM42Explanation:
- TX_FAR _TM42Explanation
- db "@"
+ViridianCityText_6:
+ TX_ASM
+ callba Func_f198e
+ jp TextScriptEnd
-TM42NoRoomText:
- TX_FAR _TM42NoRoomText
+ViridianCityText_13:
+ TX_FAR _ViridianCityText_19219
db "@"
-ViridianCityText7:
+ViridianCityText_7:
TX_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, .asm_42f68
- ld hl, ViridianCityText_1920f
- call PrintText
- ld a, $1
+ ld a, $7
ld [wViridianCityCurScript], a
- jr .asm_2413a
-.asm_42f68
- ld hl, ViridianCityText_19214
+ jr .asm_192ac
+
+.asm_192a6
+ ld hl, ViridianCityText_192b4
call PrintText
-.asm_2413a
+.asm_192ac
jp TextScriptEnd
-ViridianCityText_1920a:
+ViridianCityText_192af:
TX_FAR _ViridianCityText_1920a
db "@"
-ViridianCityText_1920f:
- TX_FAR _ViridianCityText_1920f
+ViridianCityText_192b4:
+ TX_FAR _OldManTextAfterBattle
db "@"
-ViridianCityText_19214:
- TX_FAR _ViridianCityText_19214
- db "@"
-
-ViridianCityText15:
- TX_FAR _ViridianCityText_19219
- db "@"
-
-ViridianCityText8:
- TX_FAR _ViridianCityText8
- db "@"
+ViridianCityText_8:
+ TX_ASM
+ callba Func_f19c5
+ jp TextScriptEnd
-ViridianCityText9:
- TX_FAR _ViridianCityText9
- db "@"
+ViridianCityText_9:
+ TX_ASM
+ callba Func_f19d1
+ jp TextScriptEnd
-ViridianCityText10:
- TX_FAR _ViridianCityText10
- db "@"
+ViridianCityText_10:
+ TX_ASM
+ callba Func_f19dd
+ jp TextScriptEnd
-ViridianCityText13:
- TX_FAR _ViridianCityText13
- db "@"
+ViridianCityText_11:
+ TX_ASM
+ callba Func_f19e9
+ jp TextScriptEnd
-ViridianCityText14:
- TX_FAR _ViridianCityText14
- db "@"
+ViridianCityText_12:
+ TX_ASM
+ callba Func_f19f5
+ jp TextScriptEnd
diff --git a/scripts/viridiancity2.asm b/scripts/viridiancity2.asm
new file mode 100755
index 00000000..532d57d7
--- /dev/null
+++ b/scripts/viridiancity2.asm
@@ -0,0 +1,218 @@
+Func_f18bb:
+ ld hl, ViridianCityText_f18c2
+ call PrintText
+ ret
+
+ViridianCityText_f18c2:
+ TX_FAR _ViridianCityText1
+ db "@"
+
+Func_f18c7:
+ ld hl, ViridianCityText_f18e4
+ ld a, [wObtainedBadges]
+ cp $7f ; all but EARTHBADGE
+ jr z, .asm_f18db
+ CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
+ jr nz, .asm_f18db
+ ld hl, ViridianCityText_f18df
+.asm_f18db
+ call PrintText
+ ret
+
+ViridianCityText_f18df:
+ TX_FAR _ViridianCityText_19122
+ db "@"
+
+ViridianCityText_f18e4:
+ TX_FAR _ViridianCityText_19127
+ db "@"
+
+Func_f18e9:
+ ld hl, ViridianCityText_f1902
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ ld hl, ViridianCityText_f1907
+ jr nz, .asm_f18fe
+ ld hl, ViridianCityText_f190c
+.asm_f18fe
+ call PrintText
+ ret
+
+ViridianCityText_f1902:
+ TX_FAR _ViridianCityText_1914d
+ db "@"
+
+ViridianCityText_f1907:
+ TX_FAR _ViridianCityText_19152
+ db "@"
+
+ViridianCityText_f190c:
+ TX_FAR _ViridianCityText_19157
+ db "@"
+
+Func_f1911:
+ ld hl, ViridianCityText_f1927
+ CheckEvent EVENT_GOT_POKEDEX
+ jr nz, .asm_f191e
+ ld hl, ViridianCityText_f1922
+.asm_f191e
+ call PrintText
+ ret
+
+ViridianCityText_f1922:
+ TX_FAR _ViridianCityText_19175
+ db "@"
+
+ViridianCityText_f1927:
+ TX_FAR _ViridianCityText_1917a
+ db "@"
+
+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:
+ TX_FAR _ViridianCityText_19191
+ db "@"
+
+Func_f194a:
+ CheckEvent EVENT_GOT_TM42
+ jr nz, .asm_f1972
+ ld hl, ViridianCityText_f1979
+ call PrintText
+ lb bc, TM_42, 1
+ call GiveItem
+ jr nc, .asm_f196b
+ ld hl, ViridianCityText_f197e
+ call PrintText
+ SetEvent EVENT_GOT_TM42
+ ret
+
+.asm_f196b
+ ld hl, ViridianCityText_f1989
+ call PrintText
+ ret
+
+.asm_f1972
+ ld hl, ViridianCityText_f1984
+ call PrintText
+ ret
+
+ViridianCityText_f1979:
+ TX_FAR _ViridianCityText_191ca
+ db "@"
+
+ViridianCityText_f197e:
+ TX_FAR _ReceivedTM42Text
+ TX_SFX_CONGRATS
+ db "@"
+
+ViridianCityText_f1984:
+ TX_FAR _TM42Explanation
+ db "@"
+
+ViridianCityText_f1989:
+ TX_FAR _TM42NoRoomText
+ db "@"
+
+Func_f198e:
+ ld hl, ViridianCityText_f19b6
+ call PrintText
+ ld c, 2
+ call DelayFrames
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_f19af
+ ld hl, ViridianCityText_f19bb
+ call PrintText
+ ld a, $3
+ ld [wViridianCityCurScript], a
+ jr .asm_f19b5
+
+.asm_f19af
+ ld hl, ViridianCityText_f19c0
+ call PrintText
+.asm_f19b5
+ ret
+
+ViridianCityText_f19b6:
+ TX_FAR _OldManAgainText1
+ db "@"
+
+ViridianCityText_f19bb:
+ TX_FAR _OldManAgainText2
+ db "@"
+
+ViridianCityText_f19c0:
+ TX_FAR _OldManAgainText3
+ db "@"
+
+Func_f19c5:
+ ld hl, ViridianCityText_f19cc
+ call PrintText
+ ret
+
+ViridianCityText_f19cc:
+ TX_FAR _ViridianCityText8
+ db "@"
+
+Func_f19d1:
+ ld hl, ViridianCityText_f19d8
+ call PrintText
+ ret
+
+ViridianCityText_f19d8:
+ TX_FAR _ViridianCityText9
+ db "@"
+
+Func_f19dd:
+ ld hl, ViridianCityText_f19e4
+ call PrintText
+ ret
+
+ViridianCityText_f19e4:
+ TX_FAR _ViridianCityText10
+ db "@"
+
+Func_f19e9:
+ ld hl, ViridianCityText_f19f0
+ call PrintText
+ ret
+
+ViridianCityText_f19f0:
+ TX_FAR _ViridianCityText13
+ db "@"
+
+Func_f19f5:
+ ld hl, ViridianCityText_f19fc
+ call PrintText
+ ret
+
+ViridianCityText_f19fc:
+ TX_FAR _ViridianCityText14
+ db "@"
+
+
+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 3dbfd8dd..b1b2f951 100755
--- a/scripts/viridianforest.asm
+++ b/scripts/viridianforest.asm
@@ -17,16 +17,18 @@ ViridianForestTextPointers:
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
ViridianForestTrainerHeaders:
ViridianForestTrainerHeader0:
@@ -56,6 +58,24 @@ ViridianForestTrainerHeader2:
dw ViridianForestEndBattleText3 ; TextEndBattle
dw ViridianForestEndBattleText3 ; TextEndBattle
+ViridianForestTrainerHeader3:
+ dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3
+ db ($0 << 4) ; trainer's view range
+ dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3
+ dw ViridianForestBattleText4 ; TextBeforeBattle
+ dw ViridianForestAfterBattleText4 ; TextAfterBattle
+ dw ViridianForestEndBattleText4 ; TextEndBattle
+ dw ViridianForestEndBattleText4 ; TextEndBattle
+
+ViridianForestTrainerHeader4:
+ dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4
+ db ($4 << 4) ; trainer's view range
+ dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4
+ dw ViridianForestBattleText5 ; TextBeforeBattle
+ dw ViridianForestAfterBattleText5 ; TextAfterBattle
+ dw ViridianForestEndBattleText5 ; TextEndBattle
+ dw ViridianForestEndBattleText5 ; TextEndBattle
+
db $ff
ViridianForestText1:
@@ -65,18 +85,27 @@ ViridianForestText1:
ViridianForestText2:
TX_ASM
ld hl, ViridianForestTrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText3:
TX_ASM
ld hl, ViridianForestTrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText4:
TX_ASM
ld hl, ViridianForestTrainerHeader2
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText5:
+ TX_ASM
+ ld hl, ViridianForestTrainerHeader3
+ jr ViridianForestTalkToTrainer
+
+ViridianForestText6:
+ TX_ASM
+ ld hl, ViridianForestTrainerHeader4
+ViridianForestTalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
@@ -116,30 +145,63 @@ ViridianForestAfterBattleText3:
TX_FAR _ViridianFrstAfterBattleText3
db "@"
-ViridianForestText8:
- TX_FAR _ViridianForestText8
+ViridianForestBattleText4:
+ TX_FAR _ViridianForestBattleTextPikaGirl
+ db "@"
+
+ViridianForestEndBattleText4:
+ TX_FAR _ViridianForestEndBattleTextPikaGirl
+ db "@"
+
+ViridianForestAfterBattleText4:
+ TX_FAR _ViridianForestAfterBattleTextPikaGirl
+ db "@"
+
+ViridianForestBattleText5:
+ TX_FAR _ViridianForestBattleTextSamurai
db "@"
-ViridianForestText9:
- TX_FAR _ViridianForestText9
+ViridianForestEndBattleText5:
+ TX_FAR _ViridianForestEndBattleTextSamurai
+ db "@"
+
+ViridianForestAfterBattleText5:
+ TX_FAR _ViridianForestAfterBattleTextSamurai
db "@"
ViridianForestText10:
- TX_FAR _ViridianForestText10
+ TX_FAR _ViridianForestText8
db "@"
ViridianForestText11:
- TX_FAR _ViridianForestText11
- db "@"
+ TX_ASM
+ ld hl, Func_f2528
+ jp ViridianForestScript_6120d
ViridianForestText12:
- TX_FAR _ViridianForestText12
- db "@"
+ TX_ASM
+ ld hl, Func_f2534
+ jp ViridianForestScript_6120d
ViridianForestText13:
- TX_FAR _ViridianForestText13
- db "@"
+ TX_ASM
+ ld hl, Func_f2540
+ jp ViridianForestScript_6120d
ViridianForestText14:
- TX_FAR _ViridianForestText14
- db "@"
+ TX_ASM
+ ld hl, Func_f254c
+ jp ViridianForestScript_6120d
+
+ViridianForestText15:
+ TX_ASM
+ ld hl, Func_f2558
+ jp ViridianForestScript_6120d
+
+ViridianForestText16:
+ TX_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..489db39c
--- /dev/null
+++ b/scripts/viridianforest2.asm
@@ -0,0 +1,53 @@
+Func_f2528:
+ ld hl, Text_f252f
+ call PrintText
+ ret
+
+Text_f252f:
+ TX_FAR _ViridianForestText9
+ db "@"
+
+Func_f2534:
+ ld hl, Text_f253b
+ call PrintText
+ ret
+
+Text_f253b:
+ TX_FAR _ViridianForestText10
+ db "@"
+
+Func_f2540:
+ ld hl, Text_f254a
+ call PrintText
+ ret
+
+Text_f254a:
+ TX_FAR _ViridianForestText11
+ db "@"
+
+Func_f254c:
+ ld hl, Text_f2553
+ call PrintText
+ ret
+
+Text_f2553:
+ TX_FAR _ViridianForestText12
+ db "@"
+
+Func_f2558:
+ ld hl, Text_f255f
+ call PrintText
+ ret
+
+Text_f255f:
+ TX_FAR _ViridianForestText13
+ db "@"
+
+Func_f2564:
+ ld hl, ViridianForestText_f256b
+ call PrintText
+ ret
+
+ViridianForestText_f256b:
+ TX_FAR _ViridianForestText14
+ db "@"
diff --git a/scripts/viridianforestentrance.asm b/scripts/viridianforestentrance.asm
index e24225ed..95db8bbc 100755
--- a/scripts/viridianforestentrance.asm
+++ b/scripts/viridianforestentrance.asm
@@ -1,5 +1,6 @@
ViridianForestEntranceScript:
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianForestEntranceTextPointers:
dw ViridianForestEntranceText1
diff --git a/scripts/viridianmart.asm b/scripts/viridianmart.asm
index 542040a6..e20ed48e 100755
--- a/scripts/viridianmart.asm
+++ b/scripts/viridianmart.asm
@@ -3,7 +3,8 @@ ViridianMartScript:
call EnableAutoTextBoxDrawing
ld hl, ViridianMartScriptPointers
ld a, [wViridianMarketCurScript]
- jp CallFunctionInTable
+ call JumpTable
+ ret
ViridianMartScript_1d47d:
CheckEvent EVENT_OAK_GOT_PARCEL
@@ -11,7 +12,7 @@ ViridianMartScript_1d47d:
ld hl, ViridianMartTextPointers
jr .asm_1d48c
.asm_1d489
- ld hl, ViridianMartTextPointers + $a ; starts at ViridianMartText6
+ ld hl, ViridianMartTextPointers + $a ; starts at ViridianCashierText
.asm_1d48c
ld a, l
ld [wMapTextPtr], a
@@ -57,8 +58,19 @@ ViridianMartScript1:
SetEvent EVENT_GOT_OAKS_PARCEL
ld a, $2
ld [wViridianMarketCurScript], 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
ViridianMartTextPointers:
@@ -81,7 +93,7 @@ ViridianMartText4:
ViridianMartText5:
TX_FAR ViridianMartParcelQuestText
- db $11
+ TX_SFX_KEY_ITEM
db "@"
ViridianMartText2:
diff --git a/scripts/viridianpokecenter.asm b/scripts/viridianpokecenter.asm
index 904ff47f..75e6ea6f 100755
--- a/scripts/viridianpokecenter.asm
+++ b/scripts/viridianpokecenter.asm
@@ -7,6 +7,7 @@ ViridianPokecenterTextPointers:
dw ViridianPokeCenterText2
dw ViridianPokeCenterText3
dw ViridianTradeNurseText
+ dw ViridianPokeCenterText5
ViridianHealNurseText:
TX_POKECENTER_NURSE
@@ -21,3 +22,8 @@ ViridianPokeCenterText3:
ViridianTradeNurseText:
TX_CABLE_CLUB_RECEPTIONIST
+
+ViridianPokeCenterText5:
+ TX_ASM
+ callab PokecenterChanseyText
+ jp TextScriptEnd