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