summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
commit3330662296eabb6b3b7f0eed1c79003c8873c712 (patch)
treedae9a2f40425a236a3ef6ecce453cf16b4359c26 /scripts
parent5b53dbe15d0f24c0ebcb537d7e11c106abd99867 (diff)
parentd00b70b33ee909ad163f2cb1c639ce799db118d0 (diff)
Merge pull request #9 from PikalaxALT/master
Disassemble banks 3A, 3F, and all outdoor maps
Diffstat (limited to 'scripts')
-rw-r--r--scripts/beach_house.asm160
-rwxr-xr-xscripts/beach_house2.asm33
-rwxr-xr-xscripts/bikeshop.asm23
-rwxr-xr-xscripts/billshouse.asm2
-rwxr-xr-xscripts/billshouse2.asm158
-rwxr-xr-xscripts/blueshouse.asm33
-rwxr-xr-xscripts/celadoncity.asm16
-rwxr-xr-xscripts/celadoncity2.asm8
-rwxr-xr-xscripts/celadongamecorner.asm2
-rwxr-xr-xscripts/ceruleancity.asm27
-rwxr-xr-xscripts/ceruleangym.asm3
-rwxr-xr-xscripts/ceruleanhouse1.asm99
-rwxr-xr-xscripts/ceruleanpokecenter.asm6
-rwxr-xr-xscripts/cinnabargym.asm2
-rwxr-xr-xscripts/cinnabarisland.asm2
-rwxr-xr-xscripts/daycarem.asm29
-rwxr-xr-xscripts/gary.asm2
-rwxr-xr-xscripts/halloffameroom.asm2
-rwxr-xr-xscripts/mtmoon1.asm19
-rwxr-xr-xscripts/mtmoon3.asm562
-rwxr-xr-xscripts/mtmoonpokecenter.asm72
-rwxr-xr-xscripts/mtmoonpokecenter2.asm66
-rwxr-xr-xscripts/museum1f.asm203
-rwxr-xr-xscripts/museum1f2.asm211
-rwxr-xr-xscripts/museum2f.asm34
-rwxr-xr-xscripts/oakslab.asm1080
-rwxr-xr-xscripts/oakslab2.asm28
-rwxr-xr-xscripts/pallettown.asm288
-rwxr-xr-xscripts/pewtercity.asm22
-rwxr-xr-xscripts/pewtergym.asm22
-rwxr-xr-xscripts/pewterhouse1.asm3
-rwxr-xr-xscripts/pewterpokecenter.asm80
-rwxr-xr-xscripts/pewterpokecenter2.asm72
-rwxr-xr-xscripts/pokemontower2.asm2
-rwxr-xr-xscripts/redshouse1f.asm60
-rwxr-xr-xscripts/redshouse1f2.asm58
-rwxr-xr-xscripts/redshouse2f.asm23
-rwxr-xr-xscripts/rockethideout2.asm2
-rwxr-xr-xscripts/rocktunnelpokecenter.asm10
-rwxr-xr-xscripts/route1.asm46
-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.asm135
-rwxr-xr-xscripts/route22_2.asm50
-rwxr-xr-xscripts/route22gate.asm2
-rwxr-xr-xscripts/route23.asm2
-rwxr-xr-xscripts/route24.asm64
-rwxr-xr-xscripts/route25.asm23
-rwxr-xr-xscripts/route5.asm6
-rwxr-xr-xscripts/route5gate.asm2
-rwxr-xr-xscripts/route6.asm6
-rwxr-xr-xscripts/route6gate.asm2
-rwxr-xr-xscripts/route7.asm9
-rwxr-xr-xscripts/route7gate.asm2
-rwxr-xr-xscripts/route8gate.asm4
-rwxr-xr-xscripts/route9.asm24
-rwxr-xr-xscripts/safarizoneentrance.asm2
-rwxr-xr-xscripts/school.asm14
-rwxr-xr-xscripts/school2.asm17
-rwxr-xr-xscripts/seafoamislands4.asm2
-rwxr-xr-xscripts/seafoamislands5.asm2
-rwxr-xr-xscripts/silphco11_2.asm76
-rwxr-xr-xscripts/ssanne2.asm2
-rwxr-xr-xscripts/ssanne9_2.asm35
-rwxr-xr-xscripts/vermilioncity.asm75
-rwxr-xr-xscripts/vermilioncity2.asm111
-rwxr-xr-xscripts/viridiancity.asm470
-rwxr-xr-xscripts/viridiancity2.asm218
-rwxr-xr-xscripts/viridianforest.asm102
-rwxr-xr-xscripts/viridianforest2.asm53
-rwxr-xr-xscripts/viridianforestentrance.asm3
-rwxr-xr-xscripts/viridianmart.asm16
-rwxr-xr-xscripts/viridianpokecenter.asm6
76 files changed, 3349 insertions, 1844 deletions
diff --git a/scripts/beach_house.asm b/scripts/beach_house.asm
index d6112df7..6d53b7ce 100644
--- a/scripts/beach_house.asm
+++ b/scripts/beach_house.asm
@@ -12,37 +12,35 @@ BeachHouseTextPointers:
SurfinDudeText:
TX_ASM
- ld a,[$d471]
- bit 6,a
- jr nz,.next
- ld hl,.SurfinDudeText4
+ ld a, [wd472]
+ bit 6, a
+ jr nz, .next
+ ld hl, .SurfinDudeText4
call PrintText
jr .done
.next
- ld hl,$d492
- bit 0,[hl]
- set 0,[hl]
- jr nz,.next2
- ld hl,.SurfinDudeText1
+ ld hl, wPreventBlackout
+ bit 0, [hl]
+ set 0, [hl]
+ jr nz, .next2
+ ld hl, .SurfinDudeText1
jr .next3
.next2
- ld hl,.SurfinDudeText3
+ ld hl, .SurfinDudeText3
.next3
call PrintText
call YesNoChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jr nz,.xf226b
- ld a,1
- ld [$cc3c],a
- ld b,$3e
- ld hl,$4000
- call $3e84
- ld hl,$d492
- set 1,[hl]
+ jr nz, .asm_f226b
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ callba Func_f8000
+ ld hl, wPreventBlackout
+ set 1, [hl]
jr .done
-.xf226b
- ld hl,.SurfinDudeText2
+.asm_f226b
+ ld hl, .SurfinDudeText2
call PrintText
.done
jp TextScriptEnd
@@ -62,9 +60,9 @@ SurfinDudeText:
BeachHousePikachuText:
TX_ASM
- ld hl,.BeachHousePikachuText
+ ld hl, .BeachHousePikachuText
call PrintText
- ld a,PIKACHU
+ ld a, PIKACHU
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
@@ -75,11 +73,11 @@ BeachHousePikachuText:
BeachHouseSign1Text:
TX_ASM
- ld hl,.BeachHouseSign1Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign1Text1
+ ld hl, .BeachHouseSign1Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign1Text1
.next
call PrintText
jp TextScriptEnd
@@ -93,11 +91,11 @@ BeachHouseSign1Text:
BeachHouseSign2Text:
TX_ASM
- ld hl,.BeachHouseSign2Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign2Text1
+ ld hl, .BeachHouseSign2Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign2Text1
.next
call PrintText
jp TextScriptEnd
@@ -111,11 +109,11 @@ BeachHouseSign2Text:
BeachHouseSign3Text:
TX_ASM
- ld hl,.BeachHouseSign3Text2
- ld a,[$d471]
- bit 6,a
- jr z,.next
- ld hl,.BeachHouseSign3Text1
+ ld hl, .BeachHouseSign3Text2
+ ld a, [wd472]
+ bit 6, a
+ jr z, .next
+ ld hl, .BeachHouseSign3Text1
.next
call PrintText
jp TextScriptEnd
@@ -129,67 +127,65 @@ BeachHouseSign3Text:
BeachHouseSign4Text:
TX_ASM
- ld a,1
- ld [$cc3c],a
- ld a,[$d471]
- bit 6,a
- jr z,.xf2369
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld a, [wd472]
+ bit 6, a
+ jr z, .asm_f2369
- ld hl,$d492
- bit 1,[hl]
- jr z,.next2
- ld a,0
- ld [$cc3c],a
+ ld hl, wPreventBlackout
+ bit 1, [hl]
+ jr z, .next2
+ ld a, 0
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
.next2
- ld hl,.BeachHousePrinterText2
+ ld hl, .BeachHousePrinterText2
call PrintText
- ld a,[$d492]
- bit 1,a
- jr z,.xf236f
+ ld a, [wPreventBlackout]
+ bit 1, a
+ jr z, .asm_f236f
- ld a,1
- ld [$cc3c],a
- ld hl,.BeachHousePrinterText3
+ ld a, 1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, .BeachHousePrinterText3
call PrintText
call YesNoChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jp z,$63d0 ; 0xf23d0
- call $36ec
- ld hl,$d72f
- set 6,[hl]
+ jp z, Func_f23d0 ; 0xf23d0
+ call SaveScreenTilesToBuffer2
+ ld hl, wd730
+ set 6, [hl]
xor a
- ld [$cfca],a
- ld hl,$510a
- ld b,$3a
- call $3e84
- call $3852
- ld hl,$d72f
- res 6,[hl]
- call $3dd8
- call $2f83
- call $3dc2
- call $36f8
- call $3ddb
- call $3de0
- ld a,1
- ld [$cfca],a
- jr .xf236f
-.xf2369
- ld hl,.BeachHousePrinterText1
+ ld [wUpdateSpritesEnabled], a
+ callab Func_e910a
+ 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
-.xf236f
+.asm_f236f
jp TextScriptEnd
.BeachHousePrinterText1
TX_FAR _BeachHousePrinterText1
- db $d,"@"
+ db $d, "@"
.BeachHousePrinterText2
TX_FAR _BeachHousePrinterText2
- db $d,"@"
+ db $d, "@"
.BeachHousePrinterText3
TX_FAR _BeachHousePrinterText3
db "@"
-.xf2383
+.BeachHousePrinterText4
TX_FAR _BeachHousePrinterText4
db "@"
diff --git a/scripts/beach_house2.asm b/scripts/beach_house2.asm
new file mode 100755
index 00000000..a2dd2114
--- /dev/null
+++ b/scripts/beach_house2.asm
@@ -0,0 +1,33 @@
+Func_f23d0: ; f23d0
+ call SaveScreenTilesToBuffer2
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld hl, wd730
+ set 6, [hl]
+ callab Func_e8c5c
+ 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 e639caf9..5723849d 100755
--- a/scripts/bikeshop.asm
+++ b/scripts/bikeshop.asm
@@ -1,5 +1,6 @@
BikeShopScript: ; 1d73c (7:573c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
BikeShopTextPointers: ; 1d73f (7:573f)
dw BikeShopText1
@@ -13,6 +14,7 @@ BikeShopText1: ; 1d745 (7:5745)
ld hl, BikeShopText_1d82f
call PrintText
jp .Done
+
.asm_260d4
ld b, BIKE_VOUCHER
call IsItemInBag
@@ -29,10 +31,12 @@ BikeShopText1: ; 1d745 (7:5745)
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: ; 1d745 (7:5745)
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: ; 1d745 (7:5745)
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
@@ -94,7 +98,7 @@ BikeShopText_1d815: ; 1d815 (7:5815)
db "@"
BikeShopCantAffordText: ; 1d81a (7:581a)
- TX_FAR _BikeShopCantAffordText
+ TX_FAR _BikeShopText_1d81a
db "@"
BikeShopText_1d81f: ; 1d81f (7:581f)
@@ -103,10 +107,11 @@ BikeShopText_1d81f: ; 1d81f (7:581f)
BikeShopText_1d824: ; 1d824 (7:5824)
TX_FAR _BikeShopText_1d824
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
BikeShopComeAgainText: ; 1d82a (7:582a)
- TX_FAR _BikeShopComeAgainText
+ TX_FAR _BikeShopText_1d82a
db "@"
BikeShopText_1d82f: ; 1d82f (7:582f)
diff --git a/scripts/billshouse.asm b/scripts/billshouse.asm
index 56f2204f..4f01021e 100755
--- a/scripts/billshouse.asm
+++ b/scripts/billshouse.asm
@@ -2,7 +2,7 @@ BillsHouseScript: ; 1e76a (7:676a)
call EnableAutoTextBoxDrawing
ld a, [W_BILLSHOUSECURSCRIPT]
ld hl, BillsHouseScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
BillsHouseScriptPointers: ; 1e776 (7:6776)
dw BillsHouseScript0
diff --git a/scripts/billshouse2.asm b/scripts/billshouse2.asm
new file mode 100755
index 00000000..6f62a79f
--- /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 [W_BILLSHOUSECURSCRIPT], 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: ; f24ae
+ ld a, [wCurMap]
+ cp BILLS_HOUSE
+ jr nz, .asm_f24d2
+ call CheckPikachuAsleep
+ jr z, .asm_f24d2
+ ld a, [W_BILLSHOUSECURSCRIPT]
+ 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 Func_159b
+ ld a, $f ; pikachu
+ ld [wEmotionBubbleSpriteIndex], a
+ ld a, $1
+ ld [wWhichEmotionBubble], a
+ predef EmotionBubble
+ call SetPikachuAsleep
+ 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 Func_f0a82
+ ld hl, Data_f2521
+ ld b, SPRITE_FACING_RIGHT
+ call Func_f0a82
+ 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 6aa2eaec..959fb23e 100755
--- a/scripts/blueshouse.asm
+++ b/scripts/blueshouse.asm
@@ -1,8 +1,9 @@
BluesHouseScript: ; 19b3b (6:5b3b)
call EnableAutoTextBoxDrawing
- ld hl,BluesHouseScriptPointers
- ld a,[W_BLUESHOUSECURSCRIPT]
- jp CallFunctionInTable
+ ld hl, BluesHouseScriptPointers
+ xor a
+ call JumpTable
+ ret
BluesHouseScriptPointers: ; 19b47 (6:5b47)
dw BluesHouseScript0
@@ -12,10 +13,8 @@ BluesHouseScript0: ; 19b4b (6:5b4b)
SetEvent EVENT_ENTERED_BLUES_HOUSE
; trigger the next script
- ld a,1
- ld [W_BLUESHOUSECURSCRIPT],a
- ret
-
+ ld a, 1
+ ld [W_BLUESHOUSECURSCRIPT], a
BluesHouseScript1: ; 19b56 (6:5b56)
ret
@@ -27,31 +26,31 @@ BluesHouseTextPointers: ; 19b57 (6:5b57)
BluesHouseText1: ; 19b5d (6:5b5d)
TX_ASM
CheckEvent EVENT_GOT_TOWN_MAP
- jr nz,.GotMap
+ jr nz, .GotMap
CheckEvent EVENT_GOT_POKEDEX
- jr nz,.GiveMap
- ld hl,DaisyInitialText
+ jr nz, .GiveMap
+ ld hl, DaisyInitialText
call PrintText
jr .done
.GiveMap
- ld hl,DaisyOfferMapText
+ ld hl, DaisyOfferMapText
call PrintText
lb bc, TOWN_MAP, 1
call GiveItem
jr nc, .BagFull
- ld a,HS_TOWN_MAP
- ld [wMissableObjectIndex],a
+ ld a, HS_TOWN_MAP
+ ld [wMissableObjectIndex], a
predef HideObject ; hide table map object
- ld hl,GotMapText
+ ld hl, GotMapText
call PrintText
SetEvent EVENT_GOT_TOWN_MAP
jr .done
.GotMap
- ld hl,DaisyUseMapText
+ ld hl, DaisyUseMapText
call PrintText
jr .done
.BagFull
- ld hl,DaisyBagFullText
+ ld hl, DaisyBagFullText
call PrintText
.done
jp TextScriptEnd
@@ -66,7 +65,7 @@ DaisyOfferMapText: ; 19baf (6:5baf)
GotMapText: ; 19bb4 (6:5bb4)
TX_FAR _GotMapText
- db $11,"@"
+ db $11, "@"
DaisyBagFullText: ; 19bba (6:5bba)
TX_FAR _DaisyBagFullText
diff --git a/scripts/celadoncity.asm b/scripts/celadoncity.asm
index cfc8f197..233b38bd 100755
--- a/scripts/celadoncity.asm
+++ b/scripts/celadoncity.asm
@@ -1,5 +1,14 @@
-CeladonCityScript: ; 19956 (6:5956)
+CeladonCityScript: ; 19a43 (6:5a43)
call EnableAutoTextBoxDrawing
+ ld hl, CeladonCityScriptPointers
+ ld a, [W_CELADONCITYCURSCRIPT]
+ call JumpTable
+ ret
+
+CeladonCityScriptPointers:
+ dw CeladonCityScript1
+
+CeladonCityScript1:
ResetEvents EVENT_1B8, EVENT_1BF
ResetEvent EVENT_67F
ret
@@ -99,8 +108,9 @@ CeladonCityText9: ; 199fe (6:59fe)
db "@"
CeladonCityText10: ; 19a03 (6:5a03)
- TX_FAR _CeladonCityText10
- db "@"
+ TX_ASM
+ callba Func_f1ac6
+ jp TextScriptEnd
CeladonCityText11: ; 19a08 (6:5a08)
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/celadongamecorner.asm b/scripts/celadongamecorner.asm
index c3872bab..5fc9cf97 100755
--- a/scripts/celadongamecorner.asm
+++ b/scripts/celadongamecorner.asm
@@ -4,7 +4,7 @@ CeladonGameCornerScript: ; 48bbd (12:4bbd)
call EnableAutoTextBoxDrawing
ld hl, CeladonGameCornerScriptPointers
ld a, [W_CELADONGAMECORNERCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CeladonGameCornerScript_48bcf: ; 48bcf (12:4bcf)
ld hl, wd126
diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm
index 55254adc..59b0e525 100755
--- a/scripts/ceruleancity.asm
+++ b/scripts/ceruleancity.asm
@@ -2,7 +2,7 @@ CeruleanCityScript: ; 19480 (6:5480)
call EnableAutoTextBoxDrawing
ld hl, CeruleanCityScriptPointers
ld a, [W_CERULEANCITYCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CeruleanCityScript_1948c: ; 1948c (6:548c)
xor a
@@ -64,9 +64,7 @@ CeruleanCityScript0: ; 194c8 (6:54c8)
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: ; 19567 (6:5567)
call SaveEndBattleTextPointers
ld a, OPP_SONY1
ld [wCurOpponent], a
-
- ; select which team to use during the encounter
- ld a, [W_RIVALSTARTER]
- 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: ; 195b1 (6:55b1)
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 fe0faea0..f1ef4c43 100755
--- a/scripts/ceruleangym.asm
+++ b/scripts/ceruleangym.asm
@@ -55,6 +55,7 @@ CeruleanGymScript_5c70d: ; 5c70d (17:470d)
call DisplayTextID
SetEvent EVENT_GOT_TM11
jr .asm_5c736
+
.BagFull
ld a, $7
ld [hSpriteIndexOrTextID], a
@@ -158,7 +159,7 @@ CeruleanGymText7: ; 5c7d3 (17:47d3)
CeruleanGymText_5c7d8: ; 5c7d8 (17:47d8)
TX_FAR _CeruleanGymText_5c7d8
- db $11, $6, "@"
+ db "@"
CeruleanGymText2: ; 5c7df (17:47df)
TX_ASM
diff --git a/scripts/ceruleanhouse1.asm b/scripts/ceruleanhouse1.asm
index e703d830..0b9a9052 100755
--- a/scripts/ceruleanhouse1.asm
+++ b/scripts/ceruleanhouse1.asm
@@ -1,17 +1,106 @@
CeruleanHouse1Script: ; 1d6f6 (7:56f6)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9)
dw CeruleanHouse1Text1
dw CeruleanHouse1Text2
+ dw CeruleanHouse1Text3
+ dw CeruleanHouse1Text4
CeruleanHouse1Text1: ; 1d6fd (7:56fd)
- 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: ; 1d702 (7:5702)
+ TX_FAR MelanieBulbasaurText
+ TX_ASM
+ ld a, BULBASAUR
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text3: ; 1d702 (7:5702)
+ TX_FAR MelanieOddishText
+ TX_ASM
+ ld a, ODDISH
+ call PlayCry
+ jp TextScriptEnd
+
+CeruleanHouse1Text4: ; 1d702 (7:5702)
+ 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 5d888317..f4eb68ae 100755
--- a/scripts/ceruleanpokecenter.asm
+++ b/scripts/ceruleanpokecenter.asm
@@ -7,6 +7,7 @@ CeruleanPokecenterTextPointers: ; 5c64b (17:464b)
dw CeruleanPokecenterText2
dw CeruleanPokecenterText3
dw CeruleanPokecenterText4
+ dw CeruleanPokecenterText5
CeruleanPokecenterText4: ; 5c653 (17:4653)
db $f6
@@ -21,3 +22,8 @@ CeruleanPokecenterText2: ; 5c655 (17:4655)
CeruleanPokecenterText3: ; 5c65a (17:465a)
TX_FAR _CeruleanPokecenterText3
db "@"
+
+CeruleanPokecenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm
index 649609b3..c5d462b3 100755
--- a/scripts/cinnabargym.asm
+++ b/scripts/cinnabargym.asm
@@ -3,7 +3,7 @@ CinnabarGymScript: ; 7574a (1d:574a)
call EnableAutoTextBoxDrawing
ld hl, CinnabarGymScriptPointers
ld a, [W_CINNABARGYMCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarGymScript_75759: ; 75759 (1d:5759)
ld hl, wd126
diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm
index 48ded740..3a2e9a2b 100755
--- a/scripts/cinnabarisland.asm
+++ b/scripts/cinnabarisland.asm
@@ -6,7 +6,7 @@ CinnabarIslandScript: ; 1ca19 (7:4a19)
ResetEvent EVENT_LAB_STILL_REVIVING_FOSSIL
ld hl, CinnabarIslandScriptPointers
ld a, [W_CINNABARISLANDCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
CinnabarIslandScriptPointers: ; 1ca34 (7:4a34)
dw CinnabarIslandScript0
diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm
index 4a46e648..b80b3dac 100755
--- a/scripts/daycarem.asm
+++ b/scripts/daycarem.asm
@@ -50,11 +50,21 @@ DayCareMText1: ; 56254 (15:6254)
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: ; 56254 (15:6254)
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 [wd431], a
+
+ ; GameFreak... TriHard
+ ld hl, Func_fc4fa
+ ld b, BANK(Func_fc4fa)
+ ld hl, Bankswitch
+
+ ldpikacry e, PikachuCry35
+ callab PlayPikachuSoundClip
+.asm_56430
ld hl, DayCareGotMonBackText
jr .done
diff --git a/scripts/gary.asm b/scripts/gary.asm
index 685e18fe..64734c58 100755
--- a/scripts/gary.asm
+++ b/scripts/gary.asm
@@ -2,7 +2,7 @@ GaryScript: ; 75f1d (1d:5f1d)
call EnableAutoTextBoxDrawing
ld hl, GaryScriptPointers
ld a, [W_GARYCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
GaryScript_75f29: ; 75f29 (1d:5f29)
xor a
diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm
index 466ce77d..0f975673 100755
--- a/scripts/halloffameroom.asm
+++ b/scripts/halloffameroom.asm
@@ -2,7 +2,7 @@ HallofFameRoomScript: ; 5a49e (16:649e)
call EnableAutoTextBoxDrawing
ld hl, HallofFameRoomScriptPointers
ld a, [W_HALLOFFAMEROOMCURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
HallofFameRoomScript_5a4aa: ; 5a4aa (16:64aa)
xor a
diff --git a/scripts/mtmoon1.asm b/scripts/mtmoon1.asm
index 4a5eeae3..a649481c 100755
--- a/scripts/mtmoon1.asm
+++ b/scripts/mtmoon1.asm
@@ -97,42 +97,37 @@ MtMoon1TrainerHeader7: ; 49a45 (12:5a45)
MtMoon1Text1: ; 49a52 (12:5a52)
TX_ASM
ld hl, MtMoon1TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text2: ; 49a5c (12:5a5c)
TX_ASM
ld hl, MtMoon1TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text3: ; 49a66 (12:5a66)
TX_ASM
ld hl, MtMoon1TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text4: ; 49a70 (12:5a70)
TX_ASM
ld hl, MtMoon1TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text5: ; 49a7a (12:5a7a)
TX_ASM
ld hl, MtMoon1TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text6: ; 49a84 (12:5a84)
TX_ASM
ld hl, MtMoon1TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon1TalkToTrainer
MtMoon1Text7: ; 49a8e (12:5a8e)
TX_ASM
ld hl, MtMoon1TrainerHeader7
+MtMoon1TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm
index b3a994e2..1de3445d 100755
--- a/scripts/mtmoon3.asm
+++ b/scripts/mtmoon3.asm
@@ -1,6 +1,6 @@
MtMoon3Script: ; 49d0b (12:5d0b)
call EnableAutoTextBoxDrawing
- ld hl, MtMoon3TrainerHeader0
+ ld hl, MtMoon3TrainerHeaders
ld de, MtMoon3ScriptPointers
ld a, [W_MTMOON3CURSCRIPT]
call ExecuteCurMapScriptInTable
@@ -37,13 +37,23 @@ CoordsData_49d37: ; 49d37 (12:5d37)
db $08,$0E
db $FF
-MtMoon3Script_49d58: ; 49d58 (12:5d58)
+MtMoon3Script_49cd7: ; 49d58 (12:5d58)
+ CheckAndResetEvent EVENT_57E
+ call nz, MtMoon3Script_49cec
xor a
ld [wJoyIgnore], a
+MtMoon3Script_49ce5:
ld [W_MTMOON3CURSCRIPT], a
ld [W_CURMAPSCRIPT], a
ret
+MtMoon3Script_49cec:
+ ld a, HS_MT_MOON_JESSIE
+ call MtMoon3Script_49f93
+ ld a, HS_MT_MOON_JAMES
+ call MtMoon3Script_49f93
+ ret
+
MtMoon3ScriptPointers: ; 49d63 (12:5d63)
dw MtMoon3Script0
dw DisplayEnemyTrainerTextAndStartBattle
@@ -51,23 +61,41 @@ MtMoon3ScriptPointers: ; 49d63 (12:5d63)
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: ; 49d6f (12:5d6f)
+ 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: ; 49d91 (12:5d91)
+.asm_49d4b
CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL
jp z, CheckFightingMapTrainers
ret
@@ -75,57 +103,93 @@ MtMoon3Script_49d91: ; 49d91 (12:5d91)
MtMoon3Script3: ; 49d9a (12:5d9a)
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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ call MtMoon3Script_49ce5
ret
MtMoon3Script4: ; 49dba (12:5dba)
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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ call MtMoon3Script_49ce5
ret
-CoordsData_49dea: ; 49dea (12:5dea)
+CoordsData_49dc0:
db $07,$0C
db $06,$0B
db $05,$0C
db $FF
-CoordsData_49df1: ; 49df1 (12:5df1)
+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: ; 49df8 (12:5df8)
- db NPC_MOVEMENT_RIGHT
+CoordsData_49dd5:
+ db $07,$0D
+ db $FF
-MovementData_49df9: ; 49df9 (12:5df9)
- db NPC_MOVEMENT_UP,$FF
+PikachuMovementData_49dd8:
+ db $00
+ db $35
+ db $34
+ db $3f
+
+MovementData_49ddc: ; 49df8 (12:5df8)
+ db NPC_MOVEMENT_RIGHT
+MovementData_49ddd: ; 49df9 (12:5df9)
+ db NPC_MOVEMENT_UP
+ db $FF
MtMoon3Script5: ; 49dfb (12:5dfb)
ld a, [wd730]
@@ -135,23 +199,213 @@ MtMoon3Script5: ; 49dfb (12:5dfb)
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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], 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_JessieAndJames)
+ ld a, MUSIC_JESSIE_AND_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_JessieAndJames)
+ ld a, MUSIC_JESSIE_AND_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: ; 49e34 (12:5e34)
@@ -162,242 +416,258 @@ MtMoon3TextPointers: ; 49e34 (12:5e34)
dw MtMoon3Text5
dw MtMoon3Text6
dw MtMoon3Text7
+ dw MtMoon3Text8
dw PickUpItemText
dw PickUpItemText
- dw MtMoon3Text_49f99
-
-MtMoon3TrainerHeaders: ; 49e48 (12:5e48)
-MtMoon3TrainerHeader0: ; 49e48 (12:5e48)
- 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: ; 49e54 (12:5e54)
+ dw MtMoon3Text11
+ dw MtMoon3Text12
+ dw MtMoon3Text13
+ dw MtMoon3Text14
+
+MtMoon3TrainerHeaders:
+MtMoon3TrainerHeader0:
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: ; 49e60 (12:5e60)
+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: ; 49e6c (12:5e6c)
+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
+ 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
+
+MtMoon3Text13:
+ TX_FAR _MtMoonJessieJamesText2
+ db "@"
-MtMoon3Text1: ; 49e79 (12:5e79)
+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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
- jr .asm_49ebe
-.asm_49eb8
- ld hl, MtMoon3Text_49f94
+ call MtMoon3Script_49ce5
+ jr .asm_4a05d
+
+.asm_4a057
+ ld hl, MtMoon3Text_4a11b
call PrintText
-.asm_49ebe
+.asm_4a05d
jp TextScriptEnd
-MtMoon3Text2: ; 49ec1 (12:5ec1)
+MtMoon3Text3:
TX_ASM
ld hl, MtMoon3TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr MtMoon3TalkToTrainer
-MtMoon3Text3: ; 49ecb (12:5ecb)
+MtMoon3Text4:
TX_ASM
- ld hl, MtMoon3TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ ld hl, MtMoon3TrainerHeader1
+ jr MtMoon3TalkToTrainer
-MtMoon3Text4: ; 49ed5 (12:5ed5)
- TX_ASM
- ld hl, MtMoon3TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
-MtMoon3Text5: ; 49edf (12:5edf)
+MtMoon3Text5:
TX_ASM
- ld hl, MtMoon3TrainerHeader4
+ ld hl, MtMoon3TrainerHeader2
+MtMoon3TalkToTrainer:
call TalkToTrainer
jp TextScriptEnd
-MtMoon3Text6: ; 49ee9 (12:5ee9)
+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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
-.asm_49f21
+ call MtMoon3Script_49ce5
+.asm_4a0ab
jp TextScriptEnd
-MtMoon3Text_49f24: ; 49f24 (12:5f24)
+MtMoon3Text_4a0ae:
TX_FAR _MtMoon3Text_49f24
db "@"
-MtMoon3Text7: ; 49f29 (12:5f29)
+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 [W_MTMOON3CURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
-.asm_49f61
+ call MtMoon3Script_49ce5
+.asm_4a0e8
jp TextScriptEnd
-MtMoon3Text_49f64: ; 49f64 (12:5f64)
+MtMoon3Text_4a0eb:
TX_FAR _MtMoon3Text_49f64
db "@"
-MtMoon3Script_49f69: ; 49f69 (12:5f69)
- ld hl, MtMoon3Text_49f6f
+MtMoon3Script_4a0f0:
+ ld hl, MtMoon3Text_4a0f6
jp PrintText
-MtMoon3Text_49f6f: ; 49f6f (12:5f6f)
+MtMoon3Text_4a0f6:
TX_FAR _MtMoon3Text_49f6f
- db $11, $d, "@"
+ TX_SFX_KEY_ITEM
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Script_49f76: ; 49f76 (12:5f76)
- ld hl, MtMoon3Text_49f7f
+MtMoon3Script_4a0fd:
+ ld hl, MtMoon3Text_4a106
call PrintText
jp TextScriptEnd
-MtMoon3Text_49f7f: ; 49f7f (12:5f7f)
+MtMoon3Text_4a106:
TX_FAR _MtMoon3Text_49f7f
- db $d, "@"
+ TX_WAIT_BUTTON
+ db "@"
-MtMoon3Text_49f85: ; 49f85 (12:5f85)
+MtMoon3Text_4a10c:
TX_FAR _MtMoon3Text_49f85
db "@"
-MtMoon3Text_49f8a: ; 49f8a (12:5f8a)
+MtMoon3SuperNerdEndBattleText:
TX_FAR _MtMoon3Text_49f8a
db "@"
-MtMoon3Text_49f8f: ; 49f8f (12:5f8f)
+MtMoon3Text_4a116:
TX_FAR _MtMoon3Text_49f8f
db "@"
-MtMoon3Text_49f94: ; 49f94 (12:5f94)
+MtMoon3Text_4a11b:
TX_FAR _MtMoon3Text_49f94
db "@"
-MtMoon3Text_49f99: ; 49f99 (12:5f99)
+MtMoon3Text11:
TX_FAR _MtMoon3Text_49f99
- db $11, "@"
-
-MtMoon3BattleText2: ; 49f9f (12:5f9f)
- TX_FAR _MtMoon3BattleText2
+ TX_SFX_KEY_ITEM
db "@"
-MtMoon3EndBattleText2: ; 49fa4 (12:5fa4)
- TX_FAR _MtMoon3EndBattleText2
- db "@"
-
-MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9)
- TX_FAR _MtMoon3AfterBattleText2
- db "@"
-
-MtMoon3BattleText3: ; 49fae (12:5fae)
+MtMoon3BattleText3:
TX_FAR _MtMoon3BattleText3
db "@"
-MtMoon3EndBattleText3: ; 49fb3 (12:5fb3)
+MtMoon3EndBattleText3:
TX_FAR _MtMoon3EndBattleText3
db "@"
-MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8)
+MtMoon3AfterBattleText3:
TX_FAR _MtMoon3AfterBattleText3
db "@"
-MtMoon3BattleText4: ; 49fbd (12:5fbd)
+MtMoon3BattleText4:
TX_FAR _MtMoon3BattleText4
db "@"
-MtMoon3EndBattleText4: ; 49fc2 (12:5fc2)
+MtMoon3EndBattleText4:
TX_FAR _MtMoon3EndBattleText4
db "@"
-MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7)
+MtMoon3AfterBattleText4:
TX_FAR _MtMoon3AfterBattleText4
db "@"
-MtMoon3BattleText5: ; 49fcc (12:5fcc)
+MtMoon3BattleText5:
TX_FAR _MtMoon3BattleText5
db "@"
-MtMoon3EndBattleText5: ; 49fd1 (12:5fd1)
+MtMoon3EndBattleText5:
TX_FAR _MtMoon3EndBattleText5
db "@"
-MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6)
+MtMoon3AfterBattleText5:
TX_FAR _MtMoon3AfterBattleText5
db "@"
+
diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm
index fd3e4e53..320ed070 100755
--- a/scripts/mtmoonpokecenter.asm
+++ b/scripts/mtmoonpokecenter.asm
@@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers: ; 492d5 (12:52d5)
dw MtMoonPokecenterText4
dw MtMoonPokecenterText5
dw MtMoonPokecenterText6
+ dw MtMoonPokecenterText7
MtMoonPokecenterText1: ; 492e1 (12:52e1)
- db $ff
+ TX_POKECENTER_NURSE
MtMoonPokecenterText2: ; 492e2 (12:52e2)
TX_FAR _MtMoonPokecenterText1
@@ -23,72 +24,17 @@ MtMoonPokecenterText3: ; 492e7 (12:52e7)
MtMoonPokecenterText4: ; 492ec (12:52ec)
TX_ASM
- CheckEvent EVENT_BOUGHT_MAGIKARP, 1
- jp c, .alreadyBoughtMagikarp
- ld hl, MtMoonPokecenterText_4935c
- 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, MtMoonPokecenterText_49366
- 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, MtMoonPokecenterText_49361
- jr .printText
-.alreadyBoughtMagikarp
- ld hl, MtMoonPokecenterText_4936b
-.printText
- call PrintText
-.done
+ callab Func_f218c
jp TextScriptEnd
-MtMoonPokecenterText_4935c: ; 4935c (12:535c)
- TX_FAR _MtMoonPokecenterText_4935c
- db "@"
-
-MtMoonPokecenterText_49361: ; 49361 (12:5361)
- TX_FAR _MtMoonPokecenterText_49361
- db "@"
-
-MtMoonPokecenterText_49366: ; 49366 (12:5366)
- TX_FAR _MtMoonPokecenterText_49366
- db "@"
-
-MtMoonPokecenterText_4936b: ; 4936b (12:536b)
- TX_FAR _MtMoonPokecenterText_4936b
- db "@"
-
MtMoonPokecenterText5: ; 49370 (12:5370)
TX_FAR _MtMoonPokecenterText5
db "@"
MtMoonPokecenterText6: ; 49375 (12:5375)
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+MtMoonPokecenterText7:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/mtmoonpokecenter2.asm b/scripts/mtmoonpokecenter2.asm
new file mode 100755
index 00000000..fa42f440
--- /dev/null
+++ b/scripts/mtmoonpokecenter2.asm
@@ -0,0 +1,66 @@
+Func_f218c:
+ CheckEvent EVENT_BOUGHT_MAGIKARP, 1
+ jp c, .alreadyBoughtMagikarp
+ ld hl, MtMoonPokecenterText_4935c
+ 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, MtMoonPokecenterText_49366
+ 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, MtMoonPokecenterText_49361
+ jr .printText
+.alreadyBoughtMagikarp
+ ld hl, MtMoonPokecenterText_4936b
+.printText
+ call PrintText
+.done
+ ret
+
+MtMoonPokecenterText_4935c: ; 4935c (12:535c)
+ TX_FAR _MtMoonPokecenterText_4935c
+ db "@"
+
+MtMoonPokecenterText_49361: ; 49361 (12:5361)
+ TX_FAR _MtMoonPokecenterText_49361
+ db "@"
+
+MtMoonPokecenterText_49366: ; 49366 (12:5366)
+ TX_FAR _MtMoonPokecenterText_49366
+ db "@"
+
+MtMoonPokecenterText_4936b: ; 4936b (12:536b)
+ TX_FAR _MtMoonPokecenterText_4936b
+ db "@"
diff --git a/scripts/museum1f.asm b/scripts/museum1f.asm
index 75dc1ce8..75c0d74e 100755
--- a/scripts/museum1f.asm
+++ b/scripts/museum1f.asm
@@ -5,7 +5,8 @@ Museum1FScript: ; 5c0f7 (17:40f7)
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1FScriptPointers
ld a, [W_MUSEUM1FCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
Museum1FScriptPointers: ; 5c109 (17:4109)
dw Museum1FScript0
@@ -40,207 +41,25 @@ Museum1FTextPointers: ; 5c12b (17:412b)
Museum1FText1: ; 5c135 (17:4135)
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 [W_MUSEUM1FCURSCRIPT], a
- jr Museum1FScriptEnd
-
-Museum1FScript_5c1f9: ; 5c1f9 (17:41f9)
- 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: ; 5c217 (17:4217)
+ callba Func_f1c1b
jp TextScriptEnd
-Museum1FText_5c21a: ; 5c21a (17:421a)
- TX_FAR _Museum1FText_5c21a
- db "@"
-
-Museum1FText_5c21f: ; 5c21f (17:421f)
- TX_FAR _Museum1FText_5c21f
- db "@"
-
-Museum1FText_5c224: ; 5c224 (17:4224)
- TX_FAR _Museum1FText_5c224
- db "@"
-
-Museum1FText_5c229: ; 5c229 (17:4229)
- TX_FAR _Museum1FText_5c229
- db "@"
-
-Museum1FText_5c22e: ; 5c22e (17:422e)
- TX_FAR _Museum1FText_5c22e
- db "@"
-
-Museum1FText_5c233: ; 5c233 (17:4233)
- TX_FAR _Museum1FText_5c233
- db "@"
-
-Museum1FText_5c238: ; 5c238 (17:4238)
- TX_FAR _Museum1FText_5c238
- db "@"
-
-Museum1FText_5c23d: ; 5c23d (17:423d)
- TX_FAR _Museum1FText_5c23d
- db "@"
-
-Museum1FText_5c242: ; 5c242 (17:4242)
- TX_FAR _Museum1FText_5c242
- db "@"
-
-Museum1FText2: ; 5c247 (17:4247)
+Museum1FText2: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c251
- call PrintText
+ callba Func_f1d2a
jp TextScriptEnd
-Museum1FText_5c251: ; 5c251 (17:4251)
- TX_FAR _Museum1FText_5c251
- db "@"
-
-Museum1FText3: ; 5c256 (17:4256)
+Museum1FText3: ; 5c135 (17:4135)
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: ; 5c28e (17:428e)
- TX_FAR _Museum1FText_5c28e
- db "@"
-
-ReceivedOldAmberText: ; 5c293 (17:4293)
- TX_FAR _ReceivedOldAmberText
- db $0B, "@"
-
-Museum1FText_5c299: ; 5c299 (17:4299)
- TX_FAR _Museum1FText_5c299
- db "@"
-
-Museum1FText_5c29e: ; 5c29e (17:429e)
- TX_FAR _Museum1FText_5c29e
- db "@"
-
-Museum1FText4: ; 5c2a3 (17:42a3)
+Museum1FText4: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c2ad
- call PrintText
+ callba Func_f1d80
jp TextScriptEnd
-Museum1FText_5c2ad: ; 5c2ad (17:42ad)
- TX_FAR _Museum1FText_5c2ad
- db "@"
-
-Museum1FText5: ; 5c2b2 (17:42b2)
+Museum1FText5: ; 5c135 (17:4135)
TX_ASM
- ld hl, Museum1FText_5c2bc
- call PrintText
+ callba Func_f1d8c
jp TextScriptEnd
-
-Museum1FText_5c2bc: ; 5c2bc (17:42bc)
- TX_FAR _Museum1FText_5c2bc
- db "@"
diff --git a/scripts/museum1f2.asm b/scripts/museum1f2.asm
new file mode 100755
index 00000000..f6dfa509
--- /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 [W_MUSEUM1FCURSCRIPT], 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 0f8a63ec..56d113ae 100755
--- a/scripts/museum2f.asm
+++ b/scripts/museum2f.asm
@@ -1,5 +1,6 @@
Museum2FScript: ; 5c317 (17:4317)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Museum2FTextPointers: ; 5c31a (17:431a)
dw Museum2FText1
@@ -27,9 +28,40 @@ Museum2FText4: ; 5c337 (17:4337)
db "@"
Museum2FText5: ; 5c33c (17:433c)
+ 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: ; 5c341 (17:4341)
TX_FAR _Museum2FText6
db "@"
diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm
index aff39cbc..43464d77 100755
--- a/scripts/oakslab.asm
+++ b/scripts/oakslab.asm
@@ -7,7 +7,8 @@ OaksLabScript: ; 1cb0e (7:4b0e)
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, OaksLabScriptPointers
ld a, [W_OAKSLABCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
OaksLabScriptPointers: ; 1cb28 (7:4b28)
dw OaksLabScript0
@@ -29,6 +30,10 @@ OaksLabScriptPointers: ; 1cb28 (7:4b28)
dw OaksLabScript16
dw OaksLabScript17
dw OaksLabScript18
+ dw OaksLabScript19
+ dw OaksLabScript20
+ dw OaksLabScript21
+ dw OaksLabScript22
OaksLabScript0: ; 1cb4e (7:4b4e)
CheckEvent EVENT_OAK_APPEARED_IN_PALLET
@@ -47,7 +52,7 @@ OaksLabScript0: ; 1cb4e (7:4b4e)
ret
OaksLabScript1: ; 1cb6e (7:4b6e)
- ld a, $8
+ ld a, $6
ld [H_SPRITEINDEX], a
ld de, OakEntryMovement
call MoveSprite
@@ -90,7 +95,7 @@ OaksLabScript3: ; 1cba2 (7:4ba2)
xor a
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- ld a, $5
+ ld a, $3
ld [H_SPRITEINDEX], a
xor a
ld [hSpriteFacingDirection], a
@@ -104,7 +109,7 @@ PlayerEntryMovementRLE: ; 1cbcf (7:4bcf)
db D_UP,$8
db $ff
-OaksLabScript4: ; 1cbd2 (7:4bd2)
+OaksLabScript4: ; 1cbd2 (7:445f)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
@@ -115,7 +120,6 @@ OaksLabScript4: ; 1cbd2 (7:4bd2)
ld a, SPRITE_FACING_UP
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
- call UpdateSprites
ld hl, wFlags_D733
res 1, [hl]
call PlayDefaultMusic
@@ -125,24 +129,29 @@ OaksLabScript4: ; 1cbd2 (7:4bd2)
ret
OaksLabScript5: ; 1cbfd (7:4bfd)
+ ld hl, wd74b
+ set 1, [hl]
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 +163,7 @@ OaksLabScript6: ; 1cc36 (7:4c36)
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 +174,7 @@ OaksLabScript6: ; 1cc36 (7:4c36)
ld [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call UpdateSprites
- ld a, $c
+ ld a, $a
ld [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $1
@@ -191,176 +200,130 @@ OaksLabScript7: ; 1cc72 (7:4c72)
ret
OaksLabScript8: ; 1cc80 (7:4c80)
- ld a, [W_PLAYERSTARTER]
- 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 [W_OAKSLABCURSCRIPT], a
ret
+.SonyPushesPlayerAwayFromEeveeBall
+ db $00
+ db $07
+ db $07
+ db $07
+ db $FF
+
OaksLabScript9: ; 1cd00 (7:4d00)
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 [W_RIVALSTARTER], 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 [W_OAKSLABCURSCRIPT], 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: ; 1cd6d (7:4d6d)
+ 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 [W_OAKSLABCURSCRIPT], 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 [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript10: ; 1cd6d (7:4d6d)
+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 +331,25 @@ OaksLabScript10: ; 1cd6d (7:4d6d)
predef FindPathToPlayer
ld de, wNPCMovementDirections2
ld a, $1
- ld [H_SPRITEINDEX], a
+ ld [hSpriteIndexOrTextID], a
call MoveSprite
-
- ld a, $b
+ ld a, $d
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript11: ; 1cdb9 (7:4db9)
+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, [W_RIVALSTARTER]
- 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 +358,28 @@ OaksLabScript11: ; 1cdb9 (7:4db9)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
- ld a, $c
+ ld a, $e
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript12: ; 1ce03 (7:4e03)
- 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 [W_RIVALSTARTER], a
+
+ ld a, $ff ^ (A_BUTTON | B_BUTTON)
ld [wJoyIgnore], a
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
@@ -423,101 +387,124 @@ OaksLabScript12: ; 1ce03 (7:4e03)
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 hl, wd74b
+ set 3, [hl]
+ ld a, $f
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript13: ; 1ce32 (7:4e32)
+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 [W_OAKSLABCURSCRIPT], 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: ; 1ce6d (7:4e6d)
+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 [W_OAKSLABCURSCRIPT], 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
+ xor a
+.asm_1c707
+ ld [wSpriteStateData1 + 9], a
+ ret
+
+OaksLabScript17:
+; Pikachu comes out
+ ld a, SPRITE_FACING_UP
ld [wSpriteStateData1 + 9], a
-.done
+ ld a, $2
+ ld [wd431], a
+ callba Func_fc4fa
+ call Func_1525
+ ld a, $1a
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $12
+ ld [W_OAKSLABCURSCRIPT], a
+ ret
+
+OaksLabScript18:
+ ld a, $1b
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ xor a
+ ld [wJoyIgnore], a
+ ld a, $16
+ ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript15: ; 1ceb0 (7:4eb0)
+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 +517,50 @@ OaksLabScript15: ; 1ceb0 (7:4eb0)
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 [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript_1cefd: ; 1cefd (7:4efd)
+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: ; 1cf12 (7:4f12)
+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 +570,22 @@ OaksLabScript16: ; 1cf12 (7:4f12)
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 [W_VIRIDIANCITYCURSCRIPT], a
SetEvent EVENT_OAK_GOT_PARCEL
ld a, HS_LYING_OLD_MAN
ld [wMissableObjectIndex], a
@@ -608,23 +597,20 @@ OaksLabScript16: ; 1cf12 (7:4f12)
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 de, wNPCMovementDirections2
+ ld [hSpriteIndexOrTextID], a
+ ld de, wNPCMovementDirections2
call MoveSprite
-
- ld a, $11
+ ld a, $15
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript17: ; 1cfd4 (7:4fd4)
+OaksLabScript21:
ld a, [wd730]
bit 0, a
ret nz
@@ -638,71 +624,73 @@ OaksLabScript17: ; 1cfd4 (7:4fd4)
ld a, HS_ROUTE_22_RIVAL_1
ld [wMissableObjectIndex], a
predef ShowObject
- ld a, $5
- ld [W_PALLETTOWNCURSCRIPT], a
xor a
ld [wJoyIgnore], a
-
- ld a, $12
+ ld a, $16
ld [W_OAKSLABCURSCRIPT], a
ret
-OaksLabScript18: ; 1d009 (7:5009)
+OaksLabScript22:
ret
-OaksLabScript_RemoveParcel: ; 1d00a (7:500a)
+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: ; 1d02b (7:502b)
+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
@@ -711,12 +699,12 @@ OaksLabScript_1d02b: ; 1d02b (7:502b)
call SetSpritePosition1
ret
-OaksLabScript_1d076: ; 1d076 (7:5076)
- ld hl, OaksLabTextPointers + $36 ; starts at OaksLabText28
+OaksLabScript_1d076:
+ ld hl, OaksLabTextPointers2
ld a, l
ld [wMapTextPtr], a
ld a, h
- ld [wMapTextPtr+1], a
+ ld [wMapTextPtr + 1], a
ret
OaksLabTextPointers: ; 1d082 (7:5082)
@@ -747,492 +735,428 @@ OaksLabTextPointers: ; 1d082 (7:5082)
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: ; 1d0ce (7:50ce)
-OaksLabText1: ; 1d0ce (7:50ce)
+
+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: ; 1d0f3 (7:50f3)
+OaksLabText_1c97d:
TX_FAR _OaksLabGaryText1
db "@"
-OaksLabText40: ; 1d0f8 (7:50f8)
+OaksLabText_1c982:
TX_FAR _OaksLabText40
db "@"
-OaksLabText41: ; 1d0fd (7:50fd)
+OaksLabText_1c987:
TX_FAR _OaksLabText41
db "@"
-OaksLabText29: ; 1d102 (7:5102)
-OaksLabText2: ; 1d102 (7:5102)
- TX_ASM
- ld a, STARTER2
- ld [wRivalStarterTemp], a
- ld a, $3
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER1
- ld b, $2
- jr OaksLabScript_1d133
-
-OaksLabText30: ; 1d113 (7:5113)
-OaksLabText3: ; 1d113 (7:5113)
+OaksLabText2:
TX_ASM
- ld a, STARTER3
- ld [wRivalStarterTemp], a
- ld a, $4
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER2
- ld b, $3
- jr OaksLabScript_1d133
-
-OaksLabText31: ; 1d124 (7:5124)
-OaksLabText4: ; 1d124 (7:5124)
- TX_ASM
- ld a, STARTER1
- ld [wRivalStarterTemp], a
- ld a, $2
- ld [wRivalStarterBallSpriteIndex], a
- ld a, STARTER3
- ld b, $4
-
-OaksLabScript_1d133: ; 1d133 (7:5133)
- 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: ; 1d152 (7:5152)
+OaksLabText_1c9a7:
TX_FAR _OaksLabText39
db "@"
-OaksLabScript_1d157: ; 1d157 (7:5157)
- 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: ; 1d195 (7:5195)
- ld hl, OaksLabCharmanderText
- jr OaksLabMonChoiceMenu
-OaksLabCharmanderText: ; 1d19a (7:519a)
- TX_FAR _OaksLabCharmanderText
- db "@"
-
-OaksLabLookAtSquirtle: ; 1d19f (7:519f)
- ld hl, OaksLabSquirtleText
- jr OaksLabMonChoiceMenu
-OaksLabSquirtleText: ; 1d1a4 (7:51a4)
- TX_FAR _OaksLabSquirtleText
- db "@"
-
-OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9)
- ld hl, OaksLabBulbasaurText
- jr OaksLabMonChoiceMenu
-OaksLabBulbasaurText: ; 1d1ae (7:51ae)
- TX_FAR _OaksLabBulbasaurText
- db "@"
-
-OaksLabMonChoiceMenu: ; 1d1b3 (7:51b3)
- 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 [W_PLAYERSTARTER], 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 [W_OAKSLABCURSCRIPT], a
-OaksLabMonChoiceEnd: ; 1d21f (7:521f)
jp TextScriptEnd
-OaksLabMonEnergeticText: ; 1d222 (7:5222)
- TX_FAR _OaksLabMonEnergeticText
- db "@"
-
-OaksLabReceivedMonText: ; 1d227 (7:5227)
- TX_FAR _OaksLabReceivedMonText
- db $11, "@"
-
-OaksLabScript_1d22d: ; 1d22d (7:522d)
- 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: ; 1d243 (7:5243)
- TX_FAR _OaksLabLastMonText
- db "@"
-
-OaksLabText32: ; 1d248 (7:5248)
-OaksLabText5: ; 1d248 (7:5248)
+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 [W_OAKSLABCURSCRIPT], 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: ; 1d2f0 (7:52f0)
- TX_FAR _OaksLabText_1d2f0
+
+OaksLabText_1ca72:
+ TX_FAR _OaksLabPikachuText
db "@"
-OaksLabText_1d2f5: ; 1d2f5 (7:52f5)
+OaksLabText_1ca77:
TX_FAR _OaksLabText_1d2f5
db "@"
-OaksLabText_1d2fa: ; 1d2fa (7:52fa)
+OaksLabText_1ca7c:
TX_FAR _OaksLabText_1d2fa
db "@"
-OaksLabDeliverParcelText: ; 1d2ff (7:52ff)
+OaksLabText_1ca81:
TX_FAR _OaksLabDeliverParcelText1
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _OaksLabDeliverParcelText2
db "@"
-OaksLabAroundWorldText: ; 1d309 (7:5309)
+OaksLabText_1ca8b:
TX_FAR _OaksLabAroundWorldText
db "@"
-OaksLabGivePokeballsText: ; 1d30e (7:530e)
+OaksLabText_1ca90:
TX_FAR _OaksLabGivePokeballsText1
- db $11
+ TX_SFX_KEY_ITEM
TX_FAR _OaksLabGivePokeballsText2
db "@"
-OaksLabPleaseVisitText: ; 1d318 (7:5318)
+OaksLabText_1ca9a:
TX_FAR _OaksLabPleaseVisitText
db "@"
-OaksLabText_1d31d: ; 1d31d (7:531d)
+OaksLabText_1ca9f:
TX_FAR _OaksLabText_1d31d
db "@"
-OaksLabText34: ; 1d322 (7:5322)
-OaksLabText33: ; 1d322 (7:5322)
-OaksLabText7: ; 1d322 (7:5322)
-OaksLabText6: ; 1d322 (7:5322)
+OaksLabText4:
+OaksLabText5:
TX_ASM
- ld hl, OaksLabText_1d32c
+ ld hl, OaksLabText_1caae
call PrintText
jp TextScriptEnd
-OaksLabText_1d32c: ; 1d32c (7:532c)
+OaksLabText_1caae:
TX_FAR _OaksLabText_1d32c
db "@"
-OaksLabText35: ; 1d331 (7:5331)
-OaksLabText8: ; 1d331 (7:5331)
+OaksLabText6:
TX_FAR _OaksLabText8
db "@"
-OaksLabText36: ; 1d336 (7:5336)
-OaksLabText9: ; 1d336 (7:5336)
+OaksLabText7:
TX_ASM
- ld hl, OaksLabText_1d340
+ ld hl, OaksLabText_1cac2
call PrintText
jp TextScriptEnd
-OaksLabText_1d340: ; 1d340 (7:5340)
+OaksLabText_1cac2:
TX_FAR _OaksLabText_1d340
db "@"
-OaksLabText17: ; 1d345 (7:5345)
+OaksLabText13:
TX_ASM
- ld hl, OaksLabRivalWaitingText
+ ld hl, OaksLabText_1cad1
call PrintText
jp TextScriptEnd
-OaksLabRivalWaitingText: ; 1d34f (7:534f)
+OaksLabText_1cad1:
TX_FAR _OaksLabRivalWaitingText
db "@"
-OaksLabText18: ; 1d354 (7:5354)
+OaksLabText14:
TX_ASM
- ld hl, OaksLabChooseMonText
+ ld hl, OaksLabText_1cae0
call PrintText
jp TextScriptEnd
-OaksLabChooseMonText: ; 1d35e (7:535e)
+OaksLabText_1cae0:
TX_FAR _OaksLabChooseMonText
db "@"
-OaksLabText19: ; 1d363 (7:5363)
+OaksLabText15:
TX_ASM
- ld hl, OaksLabRivalInterjectionText
+ ld hl, OaksLabText_1caef
call PrintText
jp TextScriptEnd
-OaksLabRivalInterjectionText: ; 1d36d (7:536d)
+OaksLabText_1caef:
TX_FAR _OaksLabRivalInterjectionText
db "@"
-OaksLabText20: ; 1d372 (7:5372)
+OaksLabText16:
TX_ASM
- ld hl, OaksLabBePatientText
+ ld hl, OaksLabText_1cafe
call PrintText
jp TextScriptEnd
-OaksLabBePatientText: ; 1d37c (7:537c)
+OaksLabText_1cafe:
TX_FAR _OaksLabBePatientText
db "@"
-OaksLabText12: ; 1d381 (7:5381)
+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: ; 1d38b (7:538b)
- TX_FAR _OaksLabLeavingText
+OaksLabText_1cb25:
+ TX_FAR _OaksLabRivalTakesText1
+ db "@"
+
+OaksLabText_1cb2a:
+ TX_FAR _OaksLabRivalTakesText2
+ TX_SFX_KEY_ITEM
db "@"
-OaksLabText13: ; 1d390 (7:5390)
+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 [W_PLAYERSTARTER], 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 Func_152d
+ SetEvent EVENT_GOT_STARTER
+ ld hl, wd72e
+ set 3, [hl]
jp TextScriptEnd
-OaksLabRivalPickingMonText: ; 1d39a (7:539a)
- TX_FAR _OaksLabRivalPickingMonText
+OaksLabText_1cb85:
+ TX_FAR _OaksLabOakGivesText
+ db "@"
+
+OaksLabText_1cb8a:
+ TX_FAR _OaksLabReceivedText
+ TX_SFX_KEY_ITEM
db "@"
-OaksLabText14: ; 1d39f (7:539f)
+OaksLabText10:
TX_ASM
- ld hl, OaksLabRivalReceivedMonText
+ ld hl, OaksLabText_1cb9a
call PrintText
jp TextScriptEnd
-OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9)
- TX_FAR _OaksLabRivalReceivedMonText
- db $11, "@"
+OaksLabText_1cb9a:
+ TX_FAR _OaksLabLeavingText
+ db "@"
-OaksLabText15: ; 1d3af (7:53af)
+OaksLabText11:
TX_ASM
- ld hl, OaksLabRivalChallengeText
+ ld hl, OaksLabText_1cba9
call PrintText
jp TextScriptEnd
-OaksLabRivalChallengeText: ; 1d3b9 (7:53b9)
+OaksLabText_1cba9:
TX_FAR _OaksLabRivalChallengeText
db "@"
-OaksLabText_1d3be: ; 1d3be (7:53be)
+OaksLabRivalDefeatedText:
TX_FAR _OaksLabText_1d3be
db "@"
-OaksLabText_1d3c3: ; 1d3c3 (7:53c3)
+OaksLabRivalBeatYouText:
TX_FAR _OaksLabText_1d3c3
db "@"
-OaksLabText16: ; 1d3c8 (7:53c8)
+OaksLabText12:
TX_ASM
- ld hl, OaksLabRivalToughenUpText
+ ld hl, OaksLabText_1cbc2
call PrintText
jp TextScriptEnd
-OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2)
+OaksLabText_1cbc2:
TX_FAR _OaksLabRivalToughenUpText
db "@"
-OaksLabText21: ; 1d3d7 (7:53d7)
+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: ; 1d3dc (7:53dc)
+OaksLabText20:
TX_FAR _OaksLabText22
db "@"
-OaksLabText23: ; 1d3e1 (7:53e1)
+OaksLabText21:
TX_FAR _OaksLabText23
db "@"
-OaksLabText24: ; 1d3e6 (7:53e6)
+OaksLabText22:
TX_FAR _OaksLabText24
db "@"
-OaksLabText25: ; 1d3eb (7:53eb)
+OaksLabText23:
TX_FAR _OaksLabText25
- db $11, "@"
+ TX_SFX_KEY_ITEM
+ db "@"
-OaksLabText26: ; 1d3f1 (7:53f1)
+OaksLabText24:
TX_FAR _OaksLabText26
db "@"
-OaksLabText27: ; 1d3f6 (7:53f6)
+OaksLabText25:
TX_FAR _OaksLabText27
db "@"
-OaksLabText38: ; 1d3fb (7:53fb)
-OaksLabText37: ; 1d3fb (7:53fb)
-OaksLabText11: ; 1d3fb (7:53fb)
-OaksLabText10: ; 1d3fb (7:53fb)
+OaksLabText8:
+OaksLabText9:
TX_ASM
- ld hl, OaksLabText_1d405
+ ld hl, OaksLabText_1c31d
call PrintText
jp TextScriptEnd
-OaksLabText_1d405: ; 1d405 (7:5405)
+OaksLabText_1c31d:
TX_FAR _OaksLabText_1d405
db "@"
diff --git a/scripts/oakslab2.asm b/scripts/oakslab2.asm
new file mode 100755
index 00000000..fef72470
--- /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 Func_f0a82
+ ret
+
+.asm_f1bf0
+ ld b, SPRITE_FACING_LEFT
+ ld hl, Data_f1bfe
+ call Func_f0a82
+ 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 106d8ec0..73f50e3e 100755
--- a/scripts/pallettown.asm
+++ b/scripts/pallettown.asm
@@ -1,12 +1,12 @@
PalletTownScript: ; 18e5b (6:4e5b)
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,[W_PALLETTOWNCURSCRIPT]
- jp CallFunctionInTable
+ ld hl, PalletTownScriptPointers
+ ld a, [W_PALLETTOWNCURSCRIPT]
+ jp JumpTable
PalletTownScriptPointers: ; 18e73 (6:4e73)
dw PalletTownScript0
@@ -16,136 +16,208 @@ PalletTownScriptPointers: ; 18e73 (6:4e73)
dw PalletTownScript4
dw PalletTownScript5
dw PalletTownScript6
+ dw PalletTownScript7
+ dw PalletTownScript8
+ dw PalletTownScript9
PalletTownScript0: ; 18e81 (6:4e81)
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 c, a
ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music
call PlayMusic
- ld a,$FC
- ld [wJoyIgnore],a
SetEvent EVENT_OAK_APPEARED_IN_PALLET
; trigger the next script
- ld a,1
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 1
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript1: ; 18eb2 (6:4eb2)
+ 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 [W_PALLETTOWNCURSCRIPT],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 [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript2: ; 18ed2 (6:4ed2)
- 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 [W_PALLETTOWNCURSCRIPT],a
+ ld a, 3
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript3: ; 18f12 (6:4f12)
- 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 [W_PALLETTOWNCURSCRIPT],a
+ ld a, 4
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript4: ; 18f4b (6:4f4b)
- 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, STARTER_PIKACHU_BATTLE
+ ld [wBattleType], a
+ ld a, PIKACHU
+ ld [wCurOpponent], a
+ ld a, 5
+ ld [wCurEnemyLVL], a
; trigger the next script
- ld a,5
- ld [W_PALLETTOWNCURSCRIPT],a
+ ld a, 5
+ ld [W_PALLETTOWNCURSCRIPT], a
ret
PalletTownScript5: ; 18f56 (6:4f56)
+ 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 [W_PALLETTOWNCURSCRIPT], a
+ ret
+
+PalletTownScript6: ; 18f87 (6:4f87)
+ xor a
+ ld [wSpriteStateData1 + 9], 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 [W_PALLETTOWNCURSCRIPT], a
+ ret
+
+PalletTownScript7:
+ ld a, [wNPCMovementScriptPointerTableNum]
+ and a
+ ret nz
+
+ ; trigger the next script
+ ld a, 8
+ ld [W_PALLETTOWNCURSCRIPT], 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: ; 18f87 (6:4f87)
+PalletTownScript9:
ret
PalletTownTextPointers: ; 18f88 (6:4f88)
@@ -156,18 +228,25 @@ PalletTownTextPointers: ; 18f88 (6:4f88)
dw PalletTownText5
dw PalletTownText6
dw PalletTownText7
+ dw PalletTownText8
PalletTownText1: ; 18f96 (6:4f96)
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: ; 18f96 (6:4f96)
OakAppearsText: ; 18fb0 (6:4fb0)
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: ; 18fce (6:4fce)
TX_FAR _OakWalksUpText
db "@"
-PalletTownText2: ; 0x18fd3 girl
+PalletTownText_19002:
+ TX_FAR _OakWhewText
+ db "@"
+
+PalletTownText8: ; 0x18fd3 girl
+ TX_FAR _OakGrassText
+ db "@"
+
+PalletTownText2: ; 0x18fd8 fat man
TX_FAR _PalletTownText2
db "@"
-PalletTownText3: ; 0x18fd8 fat man
+PalletTownText3: ; 0x18fdd sign by lab
TX_FAR _PalletTownText3
db "@"
-PalletTownText4: ; 0x18fdd sign by lab
+PalletTownText4: ; 0x18fe2 sign by fence
TX_FAR _PalletTownText4
db "@"
-PalletTownText5: ; 0x18fe2 sign by fence
+PalletTownText5: ; 0x18fe7 sign by Red’s house
TX_FAR _PalletTownText5
db "@"
-PalletTownText6: ; 0x18fe7 sign by Red’s house
+PalletTownText6: ; 0x18fec 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 66589d52..1e9a922a 100755
--- a/scripts/pewtercity.asm
+++ b/scripts/pewtercity.asm
@@ -1,10 +1,13 @@
-PewterCityScript: ; 19237 (6:5237)
+PewterCityScript: ; 192f5 (6:52f5)
call EnableAutoTextBoxDrawing
+ ld hl, wPreventBlackout
+ res 7, [hl]
ld hl, PewterCityScriptPointers
ld a, [W_PEWTERCITYCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
-PewterCityScriptPointers: ; 19243 (6:5243)
+PewterCityScriptPointers: ; 19307 (6:5307)
dw PewterCityScript0
dw PewterCityScript1
dw PewterCityScript2
@@ -13,7 +16,7 @@ PewterCityScriptPointers: ; 19243 (6:5243)
dw PewterCityScript5
dw PewterCityScript6
-PewterCityScript0: ; 19251 (6:5251)
+PewterCityScript0: ; 19315 (6:5315)
xor a
ld [W_MUSEUM1FCURSCRIPT], a
ResetEvent EVENT_BOUGHT_MUSEUM_TICKET
@@ -26,7 +29,7 @@ PewterCityScript_1925e: ; 1925e (6:525e)
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: ; 19280 (6:5280)
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: ; 19305 (6:5305)
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 1e6e5476..3e9ab693 100755
--- a/scripts/pewtergym.asm
+++ b/scripts/pewtergym.asm
@@ -14,7 +14,8 @@ PewterGymScript: ; 5c387 (17:4387)
PewterGymScript_5c3a4: ; 5c3a4 (17:43a4)
ld hl, Gym1CityName
ld de, Gym1LeaderName
- jp LoadGymLeaderAndCityName
+ call LoadGymLeaderAndCityName
+ ret
Gym1CityName: ; 5c3ad (17:43ad)
db "PEWTER CITY@"
@@ -41,7 +42,6 @@ PewterGymScript3: ; 5c3d2 (17:43d2)
jp z, PewterGymScript_5c3bf
ld a, $f0
ld [wJoyIgnore], a
-
PewterGymScript_5c3df: ; 5c3df (17:43df)
ld a, $4
ld [hSpriteIndexOrTextID], a
@@ -55,6 +55,7 @@ PewterGymScript_5c3df: ; 5c3df (17:43df)
call DisplayTextID
SetEvent EVENT_GOT_TM34
jr .asm_5c408
+
.BagFull
ld a, $6
ld [hSpriteIndexOrTextID], a
@@ -149,7 +150,7 @@ PewterGymText4: ; 5c4a8 (17:44a8)
PewterGymText5: ; 5c4ad (17:44ad)
TX_FAR _ReceivedTM34Text
- db $0B
+ TX_SFX_ITEM
TX_FAR _TM34ExplanationText
db "@"
@@ -159,7 +160,7 @@ PewterGymText6: ; 5c4b7 (17:44b7)
PewterGymText_5c4bc: ; 5c4bc (17:44bc)
TX_FAR _PewterGymText_5c4bc
- db $0B
+ TX_SFX_ITEM
TX_FAR _PewterGymText_5c4c1
db "@"
@@ -192,6 +193,9 @@ PewterGymText3: ; 5c4df (17:44df)
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: ; 5c4df (17:44df)
.asm_5c512
jp TextScriptEnd
+.asm_5c3fa
+ ld hl, PewterGymText_5c41c
+ call PrintText
+ jp TextScriptEnd
+
PewterGymText_5c515: ; 5c515 (17:4515)
TX_FAR _PewterGymText_5c515
db "@"
@@ -227,3 +236,8 @@ PewterGymText_5c524: ; 5c524 (17:4524)
PewterGymText_5c529: ; 5c529 (17:4529)
TX_FAR _PewterGymText_5c529
db "@"
+
+PewterGymText_5c41c:
+ TX_FAR _PewterGymGuyText
+ db "@"
+
diff --git a/scripts/pewterhouse1.asm b/scripts/pewterhouse1.asm
index a670f23c..a825b303 100755
--- a/scripts/pewterhouse1.asm
+++ b/scripts/pewterhouse1.asm
@@ -1,5 +1,6 @@
PewterHouse1Script: ; 1d5f3 (7:55f3)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterHouse1TextPointers: ; 1d5f6 (7:55f6)
dw PewterHouse1Text1
diff --git a/scripts/pewterpokecenter.asm b/scripts/pewterpokecenter.asm
index 46d4d509..90f5e2b9 100755
--- a/scripts/pewterpokecenter.asm
+++ b/scripts/pewterpokecenter.asm
@@ -1,12 +1,17 @@
PewterPokecenterScript: ; 5c587 (17:4587)
+ ld hl, wPreventBlackout
+ set 7, [hl]
call Serial_TryEstablishingExternallyClockedConnection
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
PewterPokecenterTextPointers: ; 5c58d (17:458d)
dw PewterPokecenterText1
dw PewterPokecenterText2
dw PewterPokecenterText3
dw PewterPokecenterText4
+ dw PewterPokecenterText5
+ dw PewterPokecenterText6
PewterPokecenterText1: ; 5c595 (17:4595)
db $ff
@@ -17,69 +22,18 @@ PewterPokecenterText2: ; 5c596 (17:4596)
PewterPokecenterText3: ; 5c59b (17:459b)
TX_ASM
- ld a, $1
- ld [wDoNotWaitForButtonPressAfterDisplayingText], a
- ld hl, PewterPokecenterText5
- call PrintText
- ld a, $ff
- call PlaySound
- ld c, 32
- call DelayFrames
- ld hl, JigglypuffFacingDirections
- ld de, wJigglypuffFacingDirections
- ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections
- call CopyData
-
- ld a, [wSpriteStateData1 + 3 * $10 + $2]
- 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 [wSpriteStateData1 + 3 * $10 + $2], 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 Func_f1da4
jp TextScriptEnd
-PewterPokecenterText5: ; 5c603 (17:4603)
- TX_FAR _PewterPokecenterText5
- db "@"
-
-JigglypuffFacingDirections: ; 5c608 (17:4608)
- db $30 | SPRITE_FACING_DOWN
- db $30 | SPRITE_FACING_LEFT
- db $30 | SPRITE_FACING_UP
- db $30 | SPRITE_FACING_RIGHT
-JigglypuffFacingDirectionsEnd:
-
PewterPokecenterText4: ; 5c60c (17:460c)
db $f6
+
+PewterPokecenterText5: ; 5c603 (17:4603)
+ TX_ASM
+ callba Func_f1d98
+ jp TextScriptEnd
+
+PewterPokecenterText6:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/pewterpokecenter2.asm b/scripts/pewterpokecenter2.asm
new file mode 100755
index 00000000..1aae37d1
--- /dev/null
+++ b/scripts/pewterpokecenter2.asm
@@ -0,0 +1,72 @@
+Func_f1d98:
+ ld hl, PewterPokecenterText_f1d9f
+ call PrintText
+ ret
+
+PewterPokecenterText_f1d9f:
+ TX_FAR _PewterPokecenterText2
+ db "@"
+
+Func_f1da4:
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, PewterPokecenterText_f1e19
+ 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 Func_fce73
+ ret c
+ call SetPikachuAsleep
+ ret
+
+PewterPokecenterText_f1e19:
+ TX_FAR _PewterPokecenterText5
+ 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/pokemontower2.asm b/scripts/pokemontower2.asm
index d498f88e..7aebf81b 100755
--- a/scripts/pokemontower2.asm
+++ b/scripts/pokemontower2.asm
@@ -2,7 +2,7 @@ PokemonTower2Script: ; 604f2 (18:44f2)
call EnableAutoTextBoxDrawing
ld hl, PokemonTower2ScriptPointers
ld a, [W_POKEMONTOWER2CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
PokemonTower2Script_604fe: ; 604fe (18:44fe)
xor a
diff --git a/scripts/redshouse1f.asm b/scripts/redshouse1f.asm
index f9c7193f..602e8ecf 100755
--- a/scripts/redshouse1f.asm
+++ b/scripts/redshouse1f.asm
@@ -1,5 +1,6 @@
RedsHouse1FScript: ; 48168 (12:4168)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
RedsHouse1FTextPointers: ; 4816b (12:416b)
dw RedsHouse1FText1
@@ -7,63 +8,10 @@ RedsHouse1FTextPointers: ; 4816b (12:416b)
RedsHouse1FText1: ; 4816f (12:416f) 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: ; 48185 (12:4185)
- TX_FAR _MomWakeUpText
- db "@"
-
-MomHealPokemon: ; 4818a (12:418a)
- 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: ; 481bc (12:41bc)
- TX_FAR _MomHealText1
- db "@"
-MomHealText2: ; 481c1 (12:41c1)
- TX_FAR _MomHealText2
- db "@"
-
RedsHouse1FText2: ; 0x481c6 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: ; 481da (12:41da)
- TX_FAR _StandByMeText
- db "@"
-
-TVWrongSideText: ; 481df (12:41df)
- TX_FAR _TVWrongSideText
- db "@"
diff --git a/scripts/redshouse1f2.asm b/scripts/redshouse1f2.asm
new file mode 100755
index 00000000..0ddd22d6
--- /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: ; 48185 (12:4185)
+ TX_FAR _MomWakeUpText
+ db "@"
+
+MomHealPokemon: ; 4818a (12:418a)
+ 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: ; 481bc (12:41bc)
+ TX_FAR _MomHealText1
+ db "@"
+MomHealText2: ; 481c1 (12:41c1)
+ TX_FAR _MomHealText2
+ db "@"
+
+Func_f1bc4:
+ ld hl, TVWrongSideText
+ ld a, [wSpriteStateData1 + 9]
+ cp SPRITE_FACING_UP
+ jp nz, .notUp
+ ld hl, StandByMeText
+.notUp
+ call PrintText
+ ret
+
+StandByMeText: ; 481da (12:41da)
+ TX_FAR _StandByMeText
+ db "@"
+
+TVWrongSideText: ; 481df (12:41df)
+ TX_FAR _TVWrongSideText
+ db "@"
+
diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm
index 2335e6d1..3a0421a6 100755
--- a/scripts/redshouse2f.asm
+++ b/scripts/redshouse2f.asm
@@ -1,23 +1,22 @@
RedsHouse2FScript: ; 5c0b0 (17:40b0)
call EnableAutoTextBoxDrawing
- ld hl,RedsHouse2FScriptPointers
- ld a,[W_REDSHOUSE2CURSCRIPT]
- jp CallFunctionInTable
+ ld hl, RedsHouse2FScriptPointers
+ ld a, 0
+ call JumpTable
+ ret
RedsHouse2FScriptPointers: ; 5c0bc (17:40bc)
dw RedsHouse2FScript0
dw RedsHouse2FScript1
+ dw RedsHouse2FScript2
+ dw RedsHouse2FScript3
+ dw RedsHouse2FScript4
-RedsHouse2FScript0: ; 5c0c0 (17:40c0)
- xor a
- ld [hJoyHeld],a
- ld a,PLAYER_DIR_UP
- ld [wPlayerMovingDirection],a
- ld a,1
- ld [W_REDSHOUSE2CURSCRIPT],a
- ret
-
+RedsHouse2FScript0: ; 5c0ce (17:40ce)
RedsHouse2FScript1: ; 5c0ce (17:40ce)
+RedsHouse2FScript2: ; 5c0ce (17:40ce)
+RedsHouse2FScript3: ; 5c0ce (17:40ce)
+RedsHouse2FScript4: ; 5c0ce (17:40ce)
ret
RedsHouse2FTextPointers: ; 5c0cf (17:40cf)
diff --git a/scripts/rockethideout2.asm b/scripts/rockethideout2.asm
index 0b45967f..621e19e6 100755
--- a/scripts/rockethideout2.asm
+++ b/scripts/rockethideout2.asm
@@ -313,7 +313,7 @@ RocketHideout2Script3: ; 44fc2 (11:4fc2)
ld [W_CURMAPSCRIPT], a
ret
-LoadSpinnerArrowTiles: ; 44fd7 (11:4fd7)
+LoadSpinnerArrowTiles: ; 45077 (11:5077)
ld a, [wSpriteStateData1 + 2]
srl a
srl a
diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm
index 5e822bca..7d8f4bf6 100755
--- a/scripts/rocktunnelpokecenter.asm
+++ b/scripts/rocktunnelpokecenter.asm
@@ -7,9 +7,10 @@ RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0)
dw RockTunnelPokecenterText2
dw RockTunnelPokecenterText3
dw RockTunnelPokecenterText4
+ dw RockTunnelPokecenterText5
RockTunnelPokecenterText1: ; 493c8 (12:53c8)
- db $ff
+ TX_POKECENTER_NURSE
RockTunnelPokecenterText2: ; 493c9 (12:53c9)
TX_FAR _RockTunnelPokecenterText1
@@ -20,4 +21,9 @@ RockTunnelPokecenterText3: ; 493ce (12:53ce)
db "@"
RockTunnelPokecenterText4: ; 493d3 (12:53d3)
- db $f6
+ TX_CABLE_CLUB_RECEPTIONIST
+
+RockTunnelPokecenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd
diff --git a/scripts/route1.asm b/scripts/route1.asm
index 926ffd20..8c7cc0e9 100755
--- a/scripts/route1.asm
+++ b/scripts/route1.asm
@@ -1,5 +1,6 @@
Route1Script: ; 1caaf (7:4aaf)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
Route1TextPointers: ; 1cab2 (7:4ab2)
dw Route1Text1
@@ -8,44 +9,15 @@ Route1TextPointers: ; 1cab2 (7:4ab2)
Route1Text1: ; 1cab8 (7:4ab8)
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: ; 1cae3 (7:4ae3)
- TX_FAR _Route1ViridianMartSampleText
- db "@"
-
-Route1Text_1cae8: ; 1cae8 (7:4ae8)
- TX_FAR _Route1Text_1cae8
- db $0b,"@"
-
-Route1Text_1caee: ; 1caee (7:4aee)
- TX_FAR _Route1Text_1caee
- db "@"
-
-Route1Text_1caf3: ; 1caf3 (7:4af3)
- TX_FAR _Route1Text_1caf3
- db "@"
-
Route1Text2: ; 1caf8 (7:4af8)
- TX_FAR _Route1Text2
- db "@"
+ TX_ASM
+ callba Func_f1b0f
+ jp TextScriptEnd
Route1Text3: ; 1cafd (7:4afd)
- TX_FAR _Route1Text3
- db "@"
+ TX_ASM
+ callba Func_f1b1b
+ jp TextScriptEnd
diff --git a/scripts/route16gate.asm b/scripts/route16gate.asm
index 801e577e..197b12b2 100755
--- a/scripts/route16gate.asm
+++ b/scripts/route16gate.asm
@@ -4,7 +4,7 @@ Route16GateScript: ; 496be (12:56be)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE16GATECURSCRIPT]
ld hl, Route16GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route16GateScriptPointers: ; 496cf (12:56cf)
dw Route16GateScript0
diff --git a/scripts/route18.asm b/scripts/route18.asm
index 9a077faf..9544b1ec 100755
--- a/scripts/route18.asm
+++ b/scripts/route18.asm
@@ -110,3 +110,4 @@ Route18Text4: ; 59b5a (16:5b5a)
Route18Text5: ; 59b5f (16:5b5f)
TX_FAR _Route18Text5
db "@"
+; 59b64
diff --git a/scripts/route18gate.asm b/scripts/route18gate.asm
index 060a6bbf..33f67e97 100755
--- a/scripts/route18gate.asm
+++ b/scripts/route18gate.asm
@@ -4,7 +4,7 @@ Route18GateScript: ; 49876 (12:5876)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE18GATECURSCRIPT]
ld hl, Route18GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route18GateScriptPointers: ; 49887 (12:5887)
dw Route18GateScript0
diff --git a/scripts/route19.asm b/scripts/route19.asm
index 4a60e40f..9ed6080b 100755
--- a/scripts/route19.asm
+++ b/scripts/route19.asm
@@ -37,7 +37,7 @@ Route19TrainerHeader0: ; 55d73 (15:5d73)
Route19TrainerHeader1: ; 55d7f (15:5d7f)
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: ; 55ddf (15:5ddf)
Route19Text1: ; 55dec (15:5dec)
TX_ASM
ld hl, Route19TrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text2: ; 55df6 (15:5df6)
TX_ASM
ld hl, Route19TrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text3: ; 55e00 (15:5e00)
TX_ASM
ld hl, Route19TrainerHeader2
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text4: ; 55e0a (15:5e0a)
TX_ASM
ld hl, Route19TrainerHeader3
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text5: ; 55e14 (15:5e14)
TX_ASM
ld hl, Route19TrainerHeader4
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text6: ; 55e1e (15:5e1e)
TX_ASM
ld hl, Route19TrainerHeader5
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text7: ; 55e28 (15:5e28)
TX_ASM
ld hl, Route19TrainerHeader6
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text8: ; 55e32 (15:5e32)
TX_ASM
ld hl, Route19TrainerHeader7
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text9: ; 55e3c (15:5e3c)
TX_ASM
ld hl, Route19TrainerHeader8
- call TalkToTrainer
- jp TextScriptEnd
+ jr Route19_TalkToTrainer
Route19Text10: ; 55e46 (15:5e46)
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..35ffb137
--- /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: ; 1cae3 (7:4ae3)
+ TX_FAR _Route1ViridianMartSampleText
+ db "@"
+
+Route1Text_f1aff: ; 1cae8 (7:4ae8)
+ TX_FAR _Route1Text_1cae8
+ TX_SFX_ITEM
+ db "@"
+
+Route1Text_f1b05: ; 1caee (7:4aee)
+ TX_FAR _Route1Text_1caee
+ db "@"
+
+Route1Text_f1b0a: ; 1caf3 (7:4af3)
+ TX_FAR _Route1Text_1caf3
+ db "@"
+
+Func_f1b0f: ; 1caf8 (7:4af8)
+ ld hl, Route1Text_f1b16
+ call PrintText
+ ret
+
+Route1Text_f1b16:
+ TX_FAR _Route1Text2
+ db "@"
+
+Func_f1b1b: ; 1cafd (7:4afd)
+ ld hl, Route1Text_f1b22
+ call PrintText
+ ret
+
+Route1Text_f1b22:
+ TX_FAR _Route1Text3
+ db "@"
diff --git a/scripts/route22.asm b/scripts/route22.asm
index 5c3d2b21..5ea8178f 100755
--- a/scripts/route22.asm
+++ b/scripts/route22.asm
@@ -2,7 +2,7 @@ Route22Script: ; 50eb2 (14:4eb2)
call EnableAutoTextBoxDrawing
ld hl, Route22ScriptPointers
ld a, [W_ROUTE22CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route22ScriptPointers: ; 50ebe (14:4ebe)
dw Route22Script0
@@ -22,16 +22,17 @@ Route22Script7: ; 50ed5 (14:4ed5)
ret
Route22Script_50ed6: ; 50ed6 (14:4ed6)
+ 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, [W_RIVALSTARTER]
- 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: ; 50f00 (14:4f00)
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,24 +130,29 @@ Route22Script1: ; 50f62 (14:4f62)
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 [W_ROUTE22CURSCRIPT], a
ret
-StarterMons_50faf: ; 50faf (14:4faf)
-; starter the rival picked, rival trainer number
- db STARTER2,$04
- db STARTER3,$05
- db STARTER1,$06
+Route22RivalDefeatedText1: ; 511b7 (14:51b7)
+ TX_FAR _Route22RivalDefeatedText1
+ db "@"
+
+Route22Text_511bc: ; 511bc (14:51bc)
+ TX_FAR _Route22Text_511bc
+ db "@"
Route22Script2: ; 50fb5 (14:4fb5)
ld a, [wIsInBattle]
cp $ff
jp z, Route22Script_50ece
+ ld a, [W_RIVALSTARTER]
+ cp 2
+ jr nz, .asm_50fc9
+ ld a, $1
+ ld [W_RIVALSTARTER], a
+.asm_50fc9
ld a, [wSpriteStateData1 + 9]
and a ; cp SPRITE_FACING_DOWN
jr nz, .notDown
@@ -167,9 +171,7 @@ Route22Script2: ; 50fb5 (14:4fb5)
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: ; 5104e (14:504e)
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: ; 51087 (14:5087)
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 [W_ROUTE22CURSCRIPT], a
ret
-StarterMons_510d9: ; 510d9 (14:50d9)
- db STARTER2,$0a
- db STARTER3,$0b
- db STARTER1,$0c
+Route22RivalDefeatedText2: ; 511cb (14:51cb)
+ TX_FAR _Route22RivalDefeatedText2
+ db "@"
+
+Route22Text_511d0: ; 511d0 (14:51d0)
+ TX_FAR _Route22Text_511d0
+ db "@"
Route22Script5: ; 510df (14:50df)
ld a, [wIsInBattle]
@@ -326,9 +324,7 @@ Route22Script5: ; 510df (14:50df)
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: ; 51175 (14:5175)
Route22Text1: ; 5117b (14:517b)
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: ; 51194 (14:5194)
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: ; 511ad (14:51ad)
- TX_FAR _Route22RivalBeforeBattleText1
- db "@"
-
-Route22RivalAfterBattleText1: ; 511b2 (14:51b2)
- TX_FAR _Route22RivalAfterBattleText1
- db "@"
-
-Route22RivalDefeatedText1: ; 511b7 (14:51b7)
- TX_FAR _Route22RivalDefeatedText1
- db "@"
-
-Route22Text_511bc: ; 511bc (14:51bc)
- TX_FAR _Route22Text_511bc
- db "@"
-
-Route22RivalBeforeBattleText2: ; 511c1 (14:51c1)
- TX_FAR _Route22RivalBeforeBattleText2
- db "@"
-
-Route22RivalAfterBattleText2: ; 511c6 (14:51c6)
- TX_FAR _Route22RivalAfterBattleText2
- db "@"
-
-Route22RivalDefeatedText2: ; 511cb (14:51cb)
- TX_FAR _Route22RivalDefeatedText2
- db "@"
-
-Route22Text_511d0: ; 511d0 (14:51d0)
- TX_FAR _Route22Text_511d0
- db "@"
-
Route22FrontGateText: ; 511d5 (14:51d5)
- 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..89ecdcf3
--- /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: ; 511ad (14:51ad)
+ TX_FAR _Route22RivalBeforeBattleText1
+ db "@"
+
+Route22RivalAfterBattleText1: ; 511b2 (14:51b2)
+ 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: ; 511c1 (14:51c1)
+ TX_FAR _Route22RivalBeforeBattleText2
+ db "@"
+
+Route22RivalAfterBattleText2: ; 511c6 (14:51c6)
+ 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 f0b5b92d..5fdd70c8 100755
--- a/scripts/route22gate.asm
+++ b/scripts/route22gate.asm
@@ -2,7 +2,7 @@ Route22GateScript: ; 1e683 (7:6683)
call EnableAutoTextBoxDrawing
ld hl, Route22GateScriptPointers
ld a, [W_ROUTE22GATECURSCRIPT]
- call CallFunctionInTable
+ call JumpTable
ld a, [wYCoord]
cp $4
ld a, ROUTE_23
diff --git a/scripts/route23.asm b/scripts/route23.asm
index 6fc0eef1..f324963b 100755
--- a/scripts/route23.asm
+++ b/scripts/route23.asm
@@ -3,7 +3,7 @@ Route23Script: ; 511da (14:51da)
call EnableAutoTextBoxDrawing
ld hl, Route23ScriptPointers
ld a, [W_ROUTE23CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route23Script_511e9: ; 511e9 (14:51e9)
ld hl, wd126
diff --git a/scripts/route24.asm b/scripts/route24.asm
index 61df4377..15fe78b8 100755
--- a/scripts/route24.asm
+++ b/scripts/route24.asm
@@ -1,4 +1,4 @@
-Route24Script: ; 513ad (14:53ad)
+Route24Script: ; 51366 (14:5366)
call EnableAutoTextBoxDrawing
ld hl, Route24TrainerHeaders
ld de, Route24ScriptPointers
@@ -84,6 +84,7 @@ Route24TextPointers: ; 5144b (14:544b)
dw Route24Text6
dw Route24Text7
dw PickUpItemText
+ dw Route24Text8
Route24TrainerHeaders: ; 5145b (14:545b)
Route24TrainerHeader0: ; 5145b (14:545b)
@@ -191,7 +192,9 @@ Route24Text_51510: ; 51510 (14:5510)
Route24Text_5151a: ; 5151a (14:551a)
TX_FAR _Route24Text_5151a
- db $0B, $6, "@"
+ TX_SFX_KEY_ITEM
+ TX_BUTTON_SOUND
+ db "@"
Route24Text_51521: ; 51521 (14:5521)
TX_FAR _Route24Text_51521
@@ -316,3 +319,60 @@ Route24EndBattleText6: ; 515c1 (14:55c1)
Route24AfterBattleText6: ; 515c6 (14:55c6)
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 49580ba6..20dcc890 100755
--- a/scripts/route25.asm
+++ b/scripts/route25.asm
@@ -1,14 +1,21 @@
Route25Script: ; 515cb (14:55cb)
- call Route25Script_515e1
call EnableAutoTextBoxDrawing
ld hl, Route25TrainerHeaders
ld de, Route25ScriptPointers
ld a, [W_ROUTE25CURSCRIPT]
call ExecuteCurMapScriptInTable
ld [W_ROUTE25CURSCRIPT], a
+ call Route25Script_515e1
ret
Route25Script_515e1: ; 515e1 (14:55e1)
+ ld hl, wPreventBlackout
+ res 2, [hl]
+ res 3, [hl]
+ res 4, [hl]
+ res 7, [hl]
+ xor a
+ ld [W_BILLSHOUSECURSCRIPT], a
ld hl, wd126
bit 6, [hl]
res 6, [hl]
@@ -16,14 +23,16 @@ Route25Script_515e1: ; 515e1 (14:55e1)
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: ; 515e1 (14:55e1)
predef HideObject
ld a, HS_BILL_2
ld [wMissableObjectIndex], a
- predef_jump ShowObject
+ predef ShowObject
+.asm_5165c
+ ret
Route25ScriptPointers: ; 51622 (14:5622)
dw CheckFightingMapTrainers
diff --git a/scripts/route5.asm b/scripts/route5.asm
index 1fad3939..1f42bc4e 100755
--- a/scripts/route5.asm
+++ b/scripts/route5.asm
@@ -1,9 +1,9 @@
-Route5Script: ; 556b2 (15:56b2)
+Route5Script: ; 556c6 (15:56c6)
jp EnableAutoTextBoxDrawing
-Route5TextPointers: ; 556b5 (15:56b5)
+Route5TextPointers: ; 556c9 (15:56c9)
dw Route5Text1
-Route5Text1: ; 556b7 (15:56b7)
+Route5Text1: ; 556cb (15:56cb)
TX_FAR _Route5Text1
db "@"
diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm
index 35f3a020..6442fd83 100755
--- a/scripts/route5gate.asm
+++ b/scripts/route5gate.asm
@@ -2,7 +2,7 @@ Route5GateScript: ; 1df33 (7:5f33)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE5GATECURSCRIPT]
ld hl, Route5GateScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
Route5GateScriptPointers: ; 1df3f (7:5f3f)
dw Route5GateScript0
diff --git a/scripts/route6.asm b/scripts/route6.asm
index e748fed1..8ef32a42 100755
--- a/scripts/route6.asm
+++ b/scripts/route6.asm
@@ -36,7 +36,7 @@ Route6TrainerHeader1: ; 590e3 (16:50e3)
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: ; 59148 (16:5148)
TX_FAR _Route6EndBattleText2
db "@"
+Route6AfterBattleText2:
+ TX_FAR _Route6AfterBattleText2
+ db "@"
+
Route6Text3: ; 5914d (16:514d)
TX_ASM
ld hl, Route6TrainerHeader2
diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm
index a4b6149c..dd179e28 100755
--- a/scripts/route6gate.asm
+++ b/scripts/route6gate.asm
@@ -2,7 +2,7 @@ Route6GateScript: ; 1e03d (7:603d)
call EnableAutoTextBoxDrawing
ld hl, Route6GateScriptPointers
ld a, [W_ROUTE6GATECURSCRIPT]
- call CallFunctionInTable
+ call JumpTable
ret
Route6GateScriptPointers: ; 1e04a (7:604a)
diff --git a/scripts/route7.asm b/scripts/route7.asm
index 484fc539..55183d16 100755
--- a/scripts/route7.asm
+++ b/scripts/route7.asm
@@ -1,9 +1,10 @@
-Route7Script: ; 48152 (12:4152)
- jp EnableAutoTextBoxDrawing
+Route7Script: ; 480eb (12:40eb)
+ call EnableAutoTextBoxDrawing
+ ret
-Route7TextPointers: ; 48155 (12:4155)
+Route7TextPointers: ; 480ef (12:40ef)
dw Route7Text1
-Route7Text1: ; 48157 (12:4157)
+Route7Text1: ; 480f1 (12:40f1)
TX_FAR _Route7Text1
db "@"
diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm
index b55f813c..7f87b78c 100755
--- a/scripts/route7gate.asm
+++ b/scripts/route7gate.asm
@@ -2,7 +2,7 @@ Route7GateScript: ; 1e100 (7:6100)
call EnableAutoTextBoxDrawing
ld a, [W_ROUTE7GATECURSCRIPT]
ld hl, Route7GateScriptPointers
- call CallFunctionInTable
+ call JumpTable
ret
Route7GateScriptPointers: ; 1e10d (7:610d)
diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm
index 96bfa875..5a26b424 100755
--- a/scripts/route8gate.asm
+++ b/scripts/route8gate.asm
@@ -2,7 +2,7 @@ Route8GateScript: ; 1e1c7 (7:61c7)
call EnableAutoTextBoxDrawing
ld hl, Route8GateScriptPointers
ld a, [W_ROUTE8GATECURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
Route8GateScriptPointers: ; 1e1d3 (7:61d3)
dw Route8GateScript0
@@ -27,7 +27,7 @@ Route8GateScript0: ; 1e1ee (7:61ee)
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 9d26ee96..5de98173 100755
--- a/scripts/route9.asm
+++ b/scripts/route9.asm
@@ -14,7 +14,7 @@ Route9ScriptPointers: ; 556cf (15:56cf)
Route9TextPointers: ; 556d5 (15:56d5)
dw Route9Text1
- dw Route9Text2
+ dw Route9TextAJ
dw Route9Text3
dw Route9Text4
dw Route9Text5
@@ -39,10 +39,10 @@ Route9TrainerHeader2: ; 556f7 (15:56f7)
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: ; 55703 (15:5703)
dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_3
@@ -114,7 +114,7 @@ Route9Text1: ; 55758 (15:5758)
ld hl, Route9TrainerHeader0
jr Route9TalkToTrainer
-Route9Text2: ; 5575e (15:575e)
+Route9TextAJ: ; 5575e (15:575e)
TX_ASM
ld hl, Route9TrainerHeader2
jr Route9TalkToTrainer
@@ -168,16 +168,16 @@ Route9AfterBattleText1: ; 5579c (15:579c)
TX_FAR _Route9AfterBattleText1
db "@"
-Route9BattleText2: ; 557a1 (15:57a1)
- TX_FAR _Route9BattleText2
+Route9BattleTextAJ: ; 557a1 (15:57a1)
+ TX_FAR _Route9BattleTextAJ
db "@"
-Route9EndBattleText2: ; 557a6 (15:57a6)
- TX_FAR _Route9EndBattleText2
+Route9EndBattleTextAJ: ; 557a6 (15:57a6)
+ TX_FAR _Route9EndBattleTextAJ
db "@"
-Route9AfterBattleText2: ; 557ab (15:57ab)
- TX_FAR _Route9AfterBattleText2
+Route9AfterBattleTextAJ: ; 557ab (15:57ab)
+ TX_FAR _Route9AfterBattleTextAJ
db "@"
Route9BattleText3: ; 557b0 (15:57b0)
diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm
index 2f8ff34b..a0a0ffda 100755
--- a/scripts/safarizoneentrance.asm
+++ b/scripts/safarizoneentrance.asm
@@ -2,7 +2,7 @@ SafariZoneEntranceScript: ; 751cd (1d:51cd)
call EnableAutoTextBoxDrawing
ld hl, SafariZoneEntranceScriptPointers
ld a, [wSafariZoneEntranceCurScript]
- jp CallFunctionInTable
+ jp JumpTable
SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9)
dw .SafariZoneEntranceScript0
diff --git a/scripts/school.asm b/scripts/school.asm
index 57eb58c8..6ee0d36e 100755
--- a/scripts/school.asm
+++ b/scripts/school.asm
@@ -1,14 +1,22 @@
SchoolScript: ; 1d54c (7:554c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
SchoolTextPointers: ; 1d54f (7:554f)
dw SchoolText1
dw SchoolText2
+ dw SchoolText3
SchoolText1: ; 1d553 (7:5553)
TX_FAR _SchoolText1
db "@"
SchoolText2: ; 1d558 (7:5558)
- TX_FAR _SchoolText2
- db "@"
+ TX_ASM
+ callba Func_f1c0f
+ jp TextScriptEnd
+
+SchoolText3: ; 1d558 (7:5558)
+ 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 e3234b0a..56ccd2e3 100755
--- a/scripts/seafoamislands4.asm
+++ b/scripts/seafoamislands4.asm
@@ -42,7 +42,7 @@ SeafoamIslands4Script: ; 4658d (11:658d)
.asm_465ed
ld hl, SeafoamIslands4ScriptPointers
ld a, [wSeafoamIslands4CurScript]
- jp CallFunctionInTable
+ jp JumpTable
Seafoam4HolesCoords: ; 465f6 (11:65f6)
db $10,$03
diff --git a/scripts/seafoamislands5.asm b/scripts/seafoamislands5.asm
index 98c27666..f8b7aed7 100755
--- a/scripts/seafoamislands5.asm
+++ b/scripts/seafoamislands5.asm
@@ -2,7 +2,7 @@ SeafoamIslands5Script: ; 46799 (11:6799)
call EnableAutoTextBoxDrawing
ld a, [wSeafoamIslands5CurScript]
ld hl, SeafoamIslands5ScriptPointers
- jp CallFunctionInTable
+ jp JumpTable
SeafoamIslands5Script_467a5: ; 467a5 (11:67a5)
xor a
diff --git a/scripts/silphco11_2.asm b/scripts/silphco11_2.asm
new file mode 100755
index 00000000..e7b59757
--- /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_2
+ db HS_SILPH_CO_11F_3
+ db HS_MAP_F4_1
+ db $ff \ No newline at end of file
diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm
index eea27ec9..7bdafe2c 100755
--- a/scripts/ssanne2.asm
+++ b/scripts/ssanne2.asm
@@ -2,7 +2,7 @@ SSAnne2Script: ; 6139f (18:539f)
call EnableAutoTextBoxDrawing
ld hl, SSAnne2ScriptPointers
ld a, [W_SSANNE2CURSCRIPT]
- jp CallFunctionInTable
+ jp JumpTable
SSAnne2Script_613ab: ; 613ab (18:53ab)
xor a
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/vermilioncity.asm b/scripts/vermilioncity.asm
index 67e3cddd..a8fc8ce7 100755
--- a/scripts/vermilioncity.asm
+++ b/scripts/vermilioncity.asm
@@ -1,5 +1,7 @@
VermilionCityScript: ; 197a1 (6:57a1)
call EnableAutoTextBoxDrawing
+ ld hl, wPreventBlackout
+ res 7, [hl]
ld hl, wd126
bit 6, [hl]
res 6, [hl]
@@ -11,11 +13,24 @@ VermilionCityScript: ; 197a1 (6:57a1)
call nz, VermilionCityScript_197c0
ld hl, VermilionCityScriptPointers
ld a, [W_VERMILIONCITYCURSCRIPT]
- 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: ; 197c0 (6:57c0)
call Random
- ld a, [$ffd4]
+ ld a, [hRandomAdd]
+ ld b, a
+ ld a, [hRandomSub]
+ adc b
and $e
ld [wFirstLockTrashCanIndex], a
ret
@@ -40,10 +55,10 @@ VermilionCityScriptPointers: ; 197dc (6:57dc)
VermilionCityScript0: ; 197e6 (6:57e6)
ld a, [wSpriteStateData1 + 9]
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: ; 197e6 (6:57e6)
ld [W_VERMILIONCITYCURSCRIPT], a
ret
+.asm_198de
+ ret
+
CoordsData_19823: ; 19823 (6:5823)
db $1e,$12
db $ff
@@ -122,11 +140,12 @@ VermilionCityTextPointers: ; 1986f (6:586f)
dw VermilionCityText6
dw VermilionCityText7
dw VermilionCityText8
+ dw VermilionCityText9
dw MartSignText
dw PokeCenterSignText
- dw VermilionCityText11
dw VermilionCityText12
dw VermilionCityText13
+ dw VermilionCityText14
VermilionCityText1: ; 19889 (6:5889)
TX_FAR _VermilionCityText1
@@ -225,33 +244,43 @@ VermilionCityText5: ; 19922 (6:5922)
ld a, MACHOP
call PlayCry
call WaitForSoundToFinish
- ld hl, VermilionCityText14
+ ld hl, VermilionCityText15
ret
-VermilionCityText14: ; 19933 (6:5933)
- TX_FAR _VermilionCityText14
+VermilionCityText15: ; 19933 (6:5933)
+ TX_FAR _VermilionCityText15
db "@"
VermilionCityText6: ; 19938 (6:5938)
TX_FAR _VermilionCityText6
db "@"
-VermilionCityText7: ; 1993d (6:593d)
- TX_FAR _VermilionCityText7
- db "@"
+VermilionCityText8: ; 1993d (6:593d)
+ TX_ASM
+ callba Func_f1a8a
+ jp TextScriptEnd
-VermilionCityText8: ; 19942 (6:5942)
- TX_FAR _VermilionCityText8
- db "@"
+VermilionCityText9: ; 19942 (6:5942)
+ TX_ASM
+ callba Func_f1a96
+ jp TextScriptEnd
-VermilionCityText11: ; 19947 (6:5947)
- TX_FAR _VermilionCityText11
- db "@"
+VermilionCityText12:
+ TX_ASM
+ callba Func_f1aa2
+ jp TextScriptEnd
-VermilionCityText12: ; 1994c (6:594c)
- TX_FAR _VermilionCityText12
- db "@"
+VermilionCityText13: ; 19947 (6:5947)
+ TX_ASM
+ callba Func_f1aae
+ jp TextScriptEnd
-VermilionCityText13: ; 19951 (6:5951)
- TX_FAR _VermilionCityText13
- db "@"
+VermilionCityText14: ; 1994c (6:594c)
+ TX_ASM
+ callba Func_f1aba
+ jp TextScriptEnd
+
+VermilionCityText7: ; 19951 (6:5951)
+ 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/viridiancity.asm b/scripts/viridiancity.asm
index ece2c4a1..c20285bc 100755
--- a/scripts/viridiancity.asm
+++ b/scripts/viridiancity.asm
@@ -1,119 +1,160 @@
-ViridianCityScript: ; 18ff1 (6:4ff1)
+ViridianCityScript: ; 1902a (6:502a)
call EnableAutoTextBoxDrawing
ld hl, ViridianCityScriptPointers
ld a, [W_VIRIDIANCITYCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
-ViridianCityScriptPointers: ; 18ffd (6:4ffd)
- dw ViridianCityScript0
- dw ViridianCityScript1
- dw ViridianCityScript2
- dw ViridianCityScript3
+ViridianCityScriptPointers: ; 19037 (6:5037)
+ dw ViridianCityScript0 ; 1904d
+ dw ViridianCityScript1 ; 19054
+ dw ViridianCityScript2 ; 19057
+ dw ViridianCityScript3 ; 190ca
+ dw ViridianCityScript4 ; 19104
+ dw ViridianCityScript5 ; 1913f
+ dw ViridianCityScript6 ; 1909d
+ dw ViridianCityScript7 ; 19191
+ dw ViridianCityScript8 ; 191a7
+ dw ViridianCityScript9 ; 191cf
+ dw ViridianCityScript10 ; 191f9
+
+ViridianCityScript0:
+ call ViridianCityScript_1905b
+ call ViridianCityScript_190ab
+ ret
-ViridianCityScript0: ; 19005 (6:5005)
- call ViridianCityScript_1900b
- jp ViridianCityScript_1903d
+ViridianCityScript1: ; 19054
+ call ViridianCityScript_19162
+ViridianCityScript2: ; 19057
+ call ViridianCityScript_1905b
+ ret
-ViridianCityScript_1900b: ; 1900b (6:500b)
+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 [wSpriteStateData1 + 9], a
+ ld [wJoyIgnore], a
ld [hJoyHeld], a
- call ViridianCityScript_190cf
- ld a, $3
+ ld a, $6
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript_1903d: ; 1903d (6:503d)
- CheckEvent EVENT_GOT_POKEDEX
+ViridianCityScript6: ; 1909d
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
ret nz
+ call Delay3
+ ld a, $2
+ ld [W_VIRIDIANCITYCURSCRIPT], 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 [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript1: ; 19062 (6:5062)
- 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: ; 190ca
+ call ViridianCityScript_190ef
+ call ViridianCityScript_190db
+ ResetEvent EVENT_02F
+ ld a, $4
+ ld [W_VIRIDIANCITYCURSCRIPT], a
+ ret
+
+ViridianCityScript_190db:
xor a
ld [wListScrollOffset], a
-
- ; set up battle for Old Man
- ld a, $1
+ ld a, OLD_MAN_BATTLE
ld [wBattleType], a
ld a, 5
ld [wCurEnemyLVL], a
- ld a, WEEDLE
+ ld a, RATTATA
ld [wCurOpponent], a
- ld a, $2
- ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript2: ; 1908f (6:508f)
- 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: ; 19104
+ 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 [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript3: ; 190c1 (6:50c1)
+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: ; 1913f
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
- ld a, 0
+ ld a, $0
ld [W_VIRIDIANCITYCURSCRIPT], a
ret
-ViridianCityScript_190cf: ; 190cf (6:50cf)
+ViridianCityScript_1914d:
call StartSimulatingJoypadStates
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
@@ -124,203 +165,200 @@ ViridianCityScript_190cf: ; 190cf (6:50cf)
ld [wJoyIgnore], a
ret
-ViridianCityTextPointers: ; 190e4 (6:50e4)
- dw ViridianCityText1
- dw ViridianCityText2
- dw ViridianCityText3
- dw ViridianCityText4
- dw ViridianCityText5
- dw ViridianCityText6
- dw ViridianCityText7
- dw ViridianCityText8
- dw ViridianCityText9
- dw ViridianCityText10
- dw MartSignText
- dw PokeCenterSignText
- dw ViridianCityText13
- dw ViridianCityText14
- dw ViridianCityText15
-
-ViridianCityText1: ; 19102 (6:5102)
- TX_FAR _ViridianCityText1
- db "@"
+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 [wSpriteStateData1 + 9], 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
-ViridianCityText2: ; 19107 (6:5107)
- 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
- jp TextScriptEnd
+ViridianCityScript7: ; 19191
+ 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 [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText_19122: ; 19122 (6:5122)
- TX_FAR _ViridianCityText_19122
- db "@"
+ViridianCityScript8: ; 191a7
+ 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 [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText_19127: ; 19127 (6:5127)
- TX_FAR _ViridianCityText_19127
- db "@"
+ViridianCityScript9: ; 191cf
+ 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 [W_VIRIDIANCITYCURSCRIPT], 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: ; 191f9
+ 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 [W_VIRIDIANCITYCURSCRIPT], a
+ ret
-ViridianCityText3: ; 1912c (6:512c)
+ViridianCityTextPointers:
+ dw ViridianCityText_0 ; 19233
+ dw ViridianCityText_1 ; 1923f
+ dw ViridianCityText_2 ; 1924b
+ dw ViridianCityText_3 ; 19257
+ dw ViridianCityText_4 ; 19263
+ dw ViridianCityText_5 ; 1926f
+ dw ViridianCityText_6 ; 1927b
+ dw ViridianCityText_7 ; 1928c
+ dw ViridianCityText_8 ; 192b9
+ dw ViridianCityText_9 ; 192c5
+ dw ViridianCityText_10 ; 192d1
+ dw MartSignText ; 23e5
+ dw PokeCenterSignText ; 23ea
+ dw ViridianCityText_11 ; 192dd
+ dw ViridianCityText_12 ; 192e9
+ dw ViridianCityText_13 ; 19287
+
+ViridianCityText_0:
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_f18bb
jp TextScriptEnd
-ViridianCityText_1914d: ; 1914d (6:514d)
- TX_FAR _ViridianCityText_1914d
- db "@"
-
-ViridianCityText_19152: ; 19152 (6:5152)
- TX_FAR _ViridianCityText_19152
- db "@"
-
-ViridianCityText_19157: ; 19157 (6:5157)
- TX_FAR _ViridianCityText_19157
- db "@"
-
-ViridianCityText4: ; 1915c (6:515c)
+ViridianCityText_1:
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_f18c7
jp TextScriptEnd
-ViridianCityText_19175: ; 19175 (6:5175)
- TX_FAR _ViridianCityText_19175
- db "@"
-
-ViridianCityText_1917a: ; 1917a (6:517a)
- TX_FAR _ViridianCityText_1917a
- db "@"
-
-ViridianCityText5: ; 1917f (6:517f)
+ViridianCityText_2:
TX_ASM
- ld hl, ViridianCityText_19191
- call PrintText
- call ViridianCityScript_190cf
- ld a, $3
- ld [W_VIRIDIANCITYCURSCRIPT], a
+ callba Func_f18e9
jp TextScriptEnd
-ViridianCityText_19191: ; 19191 (6:5191)
- TX_FAR _ViridianCityText_19191
- db "@"
-
-ViridianCityText6: ; 19196 (6:5196)
+ViridianCityText_3:
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_f1911
jp TextScriptEnd
-ViridianCityText_191ca: ; 191ca (6:51ca)
- TX_FAR _ViridianCityText_191ca
- db "@"
+ViridianCityText_4:
+ TX_ASM
+ callba Func_f192c
+ jp TextScriptEnd
-ReceivedTM42Text: ; 191cf (6:51cf)
- TX_FAR _ReceivedTM42Text
- db $10, "@"
+ViridianCityText_5:
+ TX_ASM
+ callba Func_f194a
+ jp TextScriptEnd
-TM42Explanation: ; 191d5 (6:51d5)
- TX_FAR _TM42Explanation
- db "@"
+ViridianCityText_6:
+ TX_ASM
+ callba Func_f198e
+ jp TextScriptEnd
-TM42NoRoomText: ; 191da (6:51da)
- TX_FAR _TM42NoRoomText
+ViridianCityText_13:
+ TX_FAR _ViridianCityText_19219
db "@"
-ViridianCityText7: ; 191df (6:51df)
+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 [W_VIRIDIANCITYCURSCRIPT], 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: ; 1920a (6:520a)
+ViridianCityText_192af:
TX_FAR _ViridianCityText_1920a
db "@"
-ViridianCityText_1920f: ; 1920f (6:520f)
- TX_FAR _ViridianCityText_1920f
- db "@"
-
-ViridianCityText_19214: ; 19214 (6:5214)
- TX_FAR _ViridianCityText_19214
+ViridianCityText_192b4:
+ TX_FAR _OldManTextAfterBattle
db "@"
-ViridianCityText15: ; 19219 (6:5219)
- TX_FAR _ViridianCityText_19219
- db "@"
-
-ViridianCityText8: ; 1921e (6:521e)
- TX_FAR _ViridianCityText8
- db "@"
+ViridianCityText_8:
+ TX_ASM
+ callba Func_f19c5
+ jp TextScriptEnd
-ViridianCityText9: ; 19223 (6:5223)
- TX_FAR _ViridianCityText9
- db "@"
+ViridianCityText_9:
+ TX_ASM
+ callba Func_f19d1
+ jp TextScriptEnd
-ViridianCityText10: ; 19228 (6:5228)
- TX_FAR _ViridianCityText10
- db "@"
+ViridianCityText_10:
+ TX_ASM
+ callba Func_f19dd
+ jp TextScriptEnd
-ViridianCityText13: ; 1922d (6:522d)
- TX_FAR _ViridianCityText13
- db "@"
+ViridianCityText_11:
+ TX_ASM
+ callba Func_f19e9
+ jp TextScriptEnd
-ViridianCityText14: ; 19232 (6:5232)
- 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..80ae3924
--- /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 [W_VIRIDIANCITYCURSCRIPT], 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 [W_VIRIDIANCITYCURSCRIPT], 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 Func_f0a82
+ ret
+
+Data_f1a0a:
+ db $00
+ db $1d
+ db $1f
+ db $38
+ db $3f
diff --git a/scripts/viridianforest.asm b/scripts/viridianforest.asm
index 892eeef2..8ac0d8a8 100755
--- a/scripts/viridianforest.asm
+++ b/scripts/viridianforest.asm
@@ -17,16 +17,18 @@ ViridianForestTextPointers: ; 61126 (18:5126)
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: ; 61142 (18:5142)
ViridianForestTrainerHeader0: ; 61142 (18:5142)
@@ -56,6 +58,24 @@ ViridianForestTrainerHeader2: ; 6115a (18:515a)
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: ; 61167 (18:5167)
@@ -65,18 +85,27 @@ ViridianForestText1: ; 61167 (18:5167)
ViridianForestText2: ; 6116c (18:516c)
TX_ASM
ld hl, ViridianForestTrainerHeader0
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText3: ; 61176 (18:5176)
TX_ASM
ld hl, ViridianForestTrainerHeader1
- call TalkToTrainer
- jp TextScriptEnd
+ jr ViridianForestTalkToTrainer
ViridianForestText4: ; 61180 (18:5180)
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: ; 611b2 (18:51b2)
TX_FAR _ViridianFrstAfterBattleText3
db "@"
-ViridianForestText8: ; 611b7 (18:51b7)
- TX_FAR _ViridianForestText8
+ViridianForestBattleText4: ; 611a8 (18:51a8)
+ TX_FAR _ViridianForestBattleTextPikaGirl
db "@"
-ViridianForestText9: ; 611bc (18:51bc)
- TX_FAR _ViridianForestText9
+ViridianForestEndBattleText4: ; 611ad (18:51ad)
+ TX_FAR _ViridianForestEndBattleTextPikaGirl
db "@"
-ViridianForestText10: ; 611c1 (18:51c1)
- TX_FAR _ViridianForestText10
+ViridianForestAfterBattleText4: ; 611b2 (18:51b2)
+ TX_FAR _ViridianForestAfterBattleTextPikaGirl
db "@"
-ViridianForestText11: ; 611c6 (18:51c6)
- TX_FAR _ViridianForestText11
+ViridianForestBattleText5: ; 611a8 (18:51a8)
+ TX_FAR _ViridianForestBattleTextSamurai
db "@"
-ViridianForestText12: ; 611cb (18:51cb)
- TX_FAR _ViridianForestText12
+ViridianForestEndBattleText5: ; 611ad (18:51ad)
+ TX_FAR _ViridianForestEndBattleTextSamurai
db "@"
-ViridianForestText13: ; 611d0 (18:51d0)
- TX_FAR _ViridianForestText13
+ViridianForestAfterBattleText5: ; 611b2 (18:51b2)
+ TX_FAR _ViridianForestAfterBattleTextSamurai
db "@"
-ViridianForestText14: ; 611d5 (18:51d5)
- TX_FAR _ViridianForestText14
+ViridianForestText10: ; 611b7 (18:51b7)
+ TX_FAR _ViridianForestText8
db "@"
+
+ViridianForestText11: ; 611bc (18:51bc)
+ TX_ASM
+ ld hl, Func_f2528
+ jp ViridianForestScript_6120d
+
+ViridianForestText12: ; 611c1 (18:51c1)
+ TX_ASM
+ ld hl, Func_f2534
+ jp ViridianForestScript_6120d
+
+ViridianForestText13: ; 611c6 (18:51c6)
+ TX_ASM
+ ld hl, Func_f2540
+ jp ViridianForestScript_6120d
+
+ViridianForestText14: ; 611cb (18:51cb)
+ TX_ASM
+ ld hl, Func_f254c
+ jp ViridianForestScript_6120d
+
+ViridianForestText15: ; 611d0 (18:51d0)
+ TX_ASM
+ ld hl, Func_f2558
+ jp ViridianForestScript_6120d
+
+ViridianForestText16: ; 611d5 (18:51d5)
+ 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 14b6cf49..dcfa03ba 100755
--- a/scripts/viridianforestentrance.asm
+++ b/scripts/viridianforestentrance.asm
@@ -1,5 +1,6 @@
ViridianForestEntranceScript: ; 5d65c (17:565c)
- jp EnableAutoTextBoxDrawing
+ call EnableAutoTextBoxDrawing
+ ret
ViridianForestEntranceTextPointers: ; 5d65f (17:565f)
dw ViridianForestEntranceText1
diff --git a/scripts/viridianmart.asm b/scripts/viridianmart.asm
index 4f4b2875..05e566fb 100755
--- a/scripts/viridianmart.asm
+++ b/scripts/viridianmart.asm
@@ -3,7 +3,8 @@ ViridianMartScript: ; 1d46e (7:546e)
call EnableAutoTextBoxDrawing
ld hl, ViridianMartScriptPointers
ld a, [W_VIRIDIANMARKETCURSCRIPT]
- jp CallFunctionInTable
+ call JumpTable
+ ret
ViridianMartScript_1d47d: ; 1d47d (7:547d)
CheckEvent EVENT_OAK_GOT_PARCEL
@@ -57,8 +58,19 @@ ViridianMartScript1: ; 1d4c0 (7:54c0)
SetEvent EVENT_GOT_OAKS_PARCEL
ld a, $2
ld [W_VIRIDIANMARKETCURSCRIPT], a
- ; fallthrough
+ ret
+
ViridianMartScript2: ; 1d4df (7:54df)
+ 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: ; 1d4e0 (7:54e0)
diff --git a/scripts/viridianpokecenter.asm b/scripts/viridianpokecenter.asm
index ae5e32c8..f8aed602 100755
--- a/scripts/viridianpokecenter.asm
+++ b/scripts/viridianpokecenter.asm
@@ -7,6 +7,7 @@ ViridianPokecenterTextPointers: ; 44263 (11:4263)
dw ViridianPokeCenterText2
dw ViridianPokeCenterText3
dw ViridianPokeCenterText4
+ dw ViridianPokeCenterText5
ViridianPokeCenterText1: ; 4426b (11:426b)
db $ff
@@ -21,3 +22,8 @@ ViridianPokeCenterText3: ; 44271 (11:4271)
ViridianPokeCenterText4: ; 44276 (11:4276)
db $f6
+
+ViridianPokeCenterText5:
+ TX_ASM
+ callab Func_f0f12
+ jp TextScriptEnd