diff options
Diffstat (limited to 'scripts')
115 files changed, 5252 insertions, 2328 deletions
diff --git a/scripts/BikeShop.asm b/scripts/BikeShop.asm index a245b657..66b2a1e6 100644 --- a/scripts/BikeShop.asm +++ b/scripts/BikeShop.asm @@ -1,5 +1,6 @@ BikeShop_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret BikeShop_TextPointers: def_text_pointers @@ -51,8 +52,7 @@ BikeShopClerkText: ld hl, wStatusFlags5 set BIT_NO_TEXT_DELAY, [hl] hlcoord 0, 0 - ld b, 4 - ld c, 15 + lb bc, 4, 15 call TextBoxBorder call UpdateSprites hlcoord 2, 2 @@ -63,11 +63,12 @@ BikeShopClerkText: call PlaceString ld hl, BikeShopClerkDoYouLikeItText call PrintText + ; This fixes the bike shop instatext glitch + ld hl, wStatusFlags5 + res BIT_NO_TEXT_DELAY, [hl] call HandleMenuInput bit B_PAD_B, a jr nz, .cancel - ld hl, wStatusFlags5 - res BIT_NO_TEXT_DELAY, [hl] ld a, [wCurrentMenuItem] and a jr nz, .cancel diff --git a/scripts/BillsHouse.asm b/scripts/BillsHouse.asm index 6b65aa38..cb1afbdd 100644 --- a/scripts/BillsHouse.asm +++ b/scripts/BillsHouse.asm @@ -1,43 +1,88 @@ BillsHouse_Script: + call BillsHouseScript_1e09e call EnableAutoTextBoxDrawing ld a, [wBillsHouseCurScript] ld hl, BillsHouse_ScriptPointers - jp CallFunctionInTable + call CallFunctionInTable + ret BillsHouse_ScriptPointers: def_script_pointers - dw_const BillsHouseDefaultScript, SCRIPT_BILLSHOUSE_DEFAULT - dw_const BillsHousePokemonWalkToMachineScript, SCRIPT_BILLSHOUSE_POKEMON_WALK_TO_MACHINE - dw_const BillsHousePokemonEntersMachineScript, SCRIPT_BILLSHOUSE_POKEMON_ENTERS_MACHINE - dw_const BillsHouseBillExitsMachineScript, SCRIPT_BILLSHOUSE_BILL_EXITS_MACHINE - dw_const BillsHouseCleanupScript, SCRIPT_BILLSHOUSE_CLEANUP - dw_const BillsHousePCScript, SCRIPT_BILLSHOUSE_PC + dw_const BillsHouseScript0, SCRIPT_BILLSHOUSE_SCRIPT0 + dw_const BillsHouseScript1, SCRIPT_BILLSHOUSE_SCRIPT1 + dw_const BillsHouseScript2, SCRIPT_BILLSHOUSE_SCRIPT2 + dw_const BillsHouseScript3, SCRIPT_BILLSHOUSE_SCRIPT3 + dw_const BillsHouseScript4, SCRIPT_BILLSHOUSE_SCRIPT4 + dw_const BillsHouseScript5, SCRIPT_BILLSHOUSE_SCRIPT5 + dw_const BillsHouseScript6, SCRIPT_BILLSHOUSE_SCRIPT6 + dw_const BillsHouseScript7, SCRIPT_BILLSHOUSE_SCRIPT7 + dw_const BillsHouseScript8, SCRIPT_BILLSHOUSE_SCRIPT8 + dw_const BillsHouseScript9, SCRIPT_BILLSHOUSE_SCRIPT9 + +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 -BillsHouseDefaultScript: +.asm_1e0af + ld a, SCRIPT_BILLSHOUSE_SCRIPT0 + jr .asm_1e0b5 + +.asm_1e0b3 + ld a, SCRIPT_BILLSHOUSE_SCRIPT9 +.asm_1e0b5 + ld [wBillsHouseCurScript], a ret -BillsHousePokemonWalkToMachineScript: +BillsHouseScript0: + ld a, [wd471] + bit 7, a + jr z, .asm_1e0d2 + callfar CheckPikachuStatusCondition + jr c, .asm_1e0d2 + callfar Func_f24d5 +.asm_1e0d2 + xor a + ld [wJoyIgnore], a + ld a, SCRIPT_BILLSHOUSE_SCRIPT1 + ld [wBillsHouseCurScript], a + ret + +BillsHouseScript1: + ret + +BillsHouseScript2: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a ld a, [wSpritePlayerStateData1FacingDirection] and a ; cp SPRITE_FACING_DOWN - ld de, .PokemonWalkToMachineMovement + ld de, MovementData_1e79c jr nz, .notDown - ld de, .PokemonWalkAroundPlayerMovement + call CheckPikachuFollowingPlayer + jr nz, .asm_1e0f8 + callfar Func_f250b +.asm_1e0f8 + ld de, MovementData_1e7a0 .notDown ld a, BILLSHOUSE_BILL_POKEMON ldh [hSpriteIndex], a call MoveSprite - ld a, SCRIPT_BILLSHOUSE_POKEMON_ENTERS_MACHINE + ld a, SCRIPT_BILLSHOUSE_SCRIPT3 ld [wBillsHouseCurScript], a ret -.PokemonWalkToMachineMovement: +MovementData_1e79c: db NPC_MOVEMENT_UP db NPC_MOVEMENT_UP db NPC_MOVEMENT_UP db -1 ; end ; make Bill walk around the player -.PokemonWalkAroundPlayerMovement: +MovementData_1e7a0: db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_UP db NPC_MOVEMENT_UP @@ -45,25 +90,58 @@ BillsHousePokemonWalkToMachineScript: db NPC_MOVEMENT_UP db -1 ; end -BillsHousePokemonEntersMachineScript: +BillsHouseScript3: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, 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, SCRIPT_BILLSHOUSE_BILL_EXITS_MACHINE + SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR + ld a, SCRIPT_BILLSHOUSE_SCRIPT4 ld [wBillsHouseCurScript], a ret -BillsHouseBillExitsMachineScript: +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, PAD_CTRL_PAD + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a + ld a, SCRIPT_BILLSHOUSE_SCRIPT5 + ld [wBillsHouseCurScript], a + ret + +BillsHouseScript5: ld a, BILLSHOUSE_BILL1 ld [wSpriteIndex], a ld a, $c @@ -80,15 +158,34 @@ BillsHouseBillExitsMachineScript: predef ShowObject ld c, 8 call DelayFrames + ld hl, wd471 + bit 7, [hl] + jr z, .asm_1e1c6 + call CheckPikachuFollowingPlayer + jr z, .asm_1e1c6 + ld a, BILLSHOUSE_BILL1 + 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, BILLSHOUSE_BILL1 ldh [hSpriteIndex], a - ld de, BillExitMachineMovement + ld de, MovementData_1e807 call MoveSprite - ld a, SCRIPT_BILLSHOUSE_CLEANUP + ld a, SCRIPT_BILLSHOUSE_SCRIPT6 ld [wBillsHouseCurScript], a ret -BillExitMachineMovement: +MovementData_1e807: db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT @@ -96,121 +193,89 @@ BillExitMachineMovement: db NPC_MOVEMENT_DOWN db -1 ; end -BillsHouseCleanupScript: +PikachuMovementData_1e1a9: + db $00 + db $37 + db $3f + +BillsHouseScript6: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a ret nz - xor a - ld [wJoyIgnore], a SetEvent EVENT_MET_BILL_2 ; this event seems redundant SetEvent EVENT_MET_BILL - ld a, SCRIPT_BILLSHOUSE_DEFAULT + ld a, SCRIPT_BILLSHOUSE_SCRIPT7 + ld [wBillsHouseCurScript], a + ret + +BillsHouseScript7: + xor a + ld [wPlayerMovingDirection], a + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld de, RLE_1e219 + ld hl, wSimulatedJoypadStatesEnd + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + ld a, SCRIPT_BILLSHOUSE_SCRIPT8 ld [wBillsHouseCurScript], a ret -BillsHousePCScript: - ld a, TEXT_BILLSHOUSE_ACTIVATE_PC +RLE_1e219: + db PAD_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, BILLSHOUSE_BILL1 + ldh [hSpriteIndex], a + ld a, SPRITE_FACING_DOWN + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + xor a + ld [wJoyIgnore], a + ld a, TEXT_BILLSHOUSE_BILL_SS_TICKET ldh [hTextID], a call DisplayTextID - ld a, SCRIPT_BILLSHOUSE_DEFAULT + ld a, SCRIPT_BILLSHOUSE_SCRIPT9 ld [wBillsHouseCurScript], a ret +BillsHouseScript9: + ret + BillsHouse_TextPointers: def_text_pointers dw_const BillsHouseBillPokemonText, TEXT_BILLSHOUSE_BILL_POKEMON dw_const BillsHouseBillSSTicketText, TEXT_BILLSHOUSE_BILL_SS_TICKET dw_const BillsHouseBillCheckOutMyRarePokemonText, TEXT_BILLSHOUSE_BILL_CHECK_OUT_MY_RARE_POKEMON - dw_const BillsHouseActivatePCScript, TEXT_BILLSHOUSE_ACTIVATE_PC + dw_const BillsHouseBillDontLeaveText, TEXT_BILLSHOUSE_BILL_DONT_LEAVE -BillsHouseActivatePCScript: - script_bills_pc +BillsHouseBillDontLeaveText: + text_far _BillsHouseBillDontLeaveText + text_end BillsHouseBillPokemonText: text_asm - ld hl, .ImNotAPokemonText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .answered_no -.use_machine - ld hl, .UseSeparationSystemText - call PrintText - ld a, SCRIPT_BILLSHOUSE_POKEMON_WALK_TO_MACHINE - ld [wBillsHouseCurScript], a - jr .text_script_end -.answered_no - ld hl, .NoYouGottaHelpText - call PrintText - jr .use_machine -.text_script_end + farcall BillsHousePrintBillPokemonText jp TextScriptEnd -.ImNotAPokemonText: - text_far _BillsHouseBillImNotAPokemonText - text_end - -.UseSeparationSystemText: - text_far _BillsHouseBillUseSeparationSystemText - text_end - -.NoYouGottaHelpText: - text_far _BillsHouseBillNoYouGottaHelpText - text_end - BillsHouseBillSSTicketText: text_asm - CheckEvent EVENT_GOT_SS_TICKET - jr nz, .got_ss_ticket - ld hl, .ThankYouText - call PrintText - lb bc, S_S_TICKET, 1 - call GiveItem - jr nc, .bag_full - 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 -.got_ss_ticket - ld hl, .WhyDontYouGoInsteadOfMeText - call PrintText - jr .text_script_end -.bag_full - ld hl, .SSTicketNoRoomText - call PrintText -.text_script_end + farcall BillsHousePrintBillSSTicketText jp TextScriptEnd -.ThankYouText: - text_far _BillsHouseBillThankYouText - text_end - -.SSTicketReceivedText: - text_far _SSTicketReceivedText - sound_get_key_item - text_promptbutton - text_end - -.SSTicketNoRoomText: - text_far _SSTicketNoRoomText - text_end - -.WhyDontYouGoInsteadOfMeText: - text_far _BillsHouseBillWhyDontYouGoInsteadOfMeText - text_end - BillsHouseBillCheckOutMyRarePokemonText: text_asm - ld hl, .Text - call PrintText + farcall BillsHousePrintBillCheckOutMyRarePokemonText jp TextScriptEnd - -.Text: - text_far _BillsHouseBillCheckOutMyRarePokemonText - text_end diff --git a/scripts/BillsHouse_2.asm b/scripts/BillsHouse_2.asm new file mode 100644 index 00000000..f75ab204 --- /dev/null +++ b/scripts/BillsHouse_2.asm @@ -0,0 +1,156 @@ +BillsHousePrintBillPokemonText:: + ld hl, .ImNotAPokemonText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .answered_no +.use_machine + ld hl, .UseSeparationSystemText + call PrintText + ld a, SCRIPT_BILLSHOUSE_SCRIPT2 + ld [wBillsHouseCurScript], a + ret +.answered_no + ld hl, .NoYouGottaHelpText + call PrintText + jr .use_machine + +.ImNotAPokemonText: + text_far _BillsHouseBillImNotAPokemonText + text_end + +.UseSeparationSystemText: + text_far _BillsHouseBillUseSeparationSystemText + text_end + +.NoYouGottaHelpText: + text_far _BillsHouseBillNoYouGottaHelpText + text_end + +BillsHousePrintBillSSTicketText:: + CheckEvent EVENT_GOT_SS_TICKET + jr nz, .got_ss_ticket + ld hl, .ThankYouText + call PrintText + lb bc, S_S_TICKET, 1 + call GiveItem + jr nc, .bag_full + 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 +.got_ss_ticket + ld hl, .WhyDontYouGoInsteadOfMeText + call PrintText + ret +.bag_full + ld hl, .SSTicketNoRoomText + call PrintText + ret + +.ThankYouText: + text_far _BillsHouseBillThankYouText + text_end + +.SSTicketReceivedText: + text_far _SSTicketReceivedText + sound_get_key_item + text_promptbutton + text_end + +.SSTicketNoRoomText: + text_far _SSTicketNoRoomText + text_end + +.WhyDontYouGoInsteadOfMeText: + text_far _BillsHouseBillWhyDontYouGoInsteadOfMeText + text_end + +BillsHousePrintBillCheckOutMyRarePokemonText:: + ld hl, .text + call PrintText + ret + +.text + text_far _BillsHouseBillCheckOutMyRarePokemonText + text_end + +Func_f24ae:: + ld a, [wCurMap] + cp BILLS_HOUSE + jr nz, .asm_f24d2 + call CheckPikachuFollowingPlayer + jr z, .asm_f24d2 + ld a, [wBillsHouseCurScript] + cp SCRIPT_BILLSHOUSE_SCRIPT5 + ldpikaemotion e, PikachuEmotion27 + ret z + cp SCRIPT_BILLSHOUSE_SCRIPT0 + ldpikaemotion e, PikachuEmotion23 + ret z + CheckEventHL EVENT_MET_BILL_2 + ldpikaemotion e, PikachuEmotion32 + ret z + ldpikaemotion e, PikachuEmotion31 + ret + +.asm_f24d2 + ld e, $ff + ret + +Func_f24d5:: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + 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 0a16abbf..834a24e4 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: def_script_pointers @@ -13,8 +14,6 @@ BluesHouseDefaultScript: SetEvent EVENT_ENTERED_BLUES_HOUSE ld a, SCRIPT_BLUESHOUSE_NOOP ld [wBluesHouseCurScript], a - ret - BluesHouseNoopScript: ret diff --git a/scripts/CeladonCity.asm b/scripts/CeladonCity.asm index 60ca58c3..b70a48bf 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 @@ -101,8 +110,9 @@ CeladonCityRocket2Text: text_end CeladonCityTrainerTips1Text: - text_far _CeladonCityTrainerTips1Text - text_end + text_asm + farcall CeladonCityPrintTrainerTips1Text + jp TextScriptEnd CeladonCitySignText: text_far _CeladonCitySignText diff --git a/scripts/CeladonCity_2.asm b/scripts/CeladonCity_2.asm new file mode 100644 index 00000000..d2c1c4a3 --- /dev/null +++ b/scripts/CeladonCity_2.asm @@ -0,0 +1,8 @@ +CeladonCityPrintTrainerTips1Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _CeladonCityTrainerTips1Text + text_end diff --git a/scripts/CeladonDiner.asm b/scripts/CeladonDiner.asm index ca54af4f..426d6296 100644 --- a/scripts/CeladonDiner.asm +++ b/scripts/CeladonDiner.asm @@ -28,40 +28,5 @@ CeladonDinerFisherText: CeladonDinerGymGuideText: text_asm - CheckEvent EVENT_GOT_COIN_CASE - jr nz, .got_item - ld hl, .ImFlatOutBustedText - 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, .WinItBackText - call PrintText -.done + callfar CeladonDinerPrintGymGuideText jp TextScriptEnd - -.ImFlatOutBustedText: - text_far _CeladonDinerGymGuideImFlatOutBustedText - text_end - -.ReceivedCoinCaseText: - text_far _CeladonDinerGymGuideReceivedCoinCaseText - sound_get_key_item - text_end - -.CoinCaseNoRoomText: - text_far _CeladonDinerGymGuideCoinCaseNoRoomText - text_end - -.WinItBackText: - text_far _CeladonDinerGymGuideWinItBackText - text_end diff --git a/scripts/CeladonDiner_2.asm b/scripts/CeladonDiner_2.asm new file mode 100644 index 00000000..28e6f11a --- /dev/null +++ b/scripts/CeladonDiner_2.asm @@ -0,0 +1,38 @@ +CeladonDinerPrintGymGuideText:: + CheckEvent EVENT_GOT_COIN_CASE + jr nz, .got_item + ld hl, .ImFlatOutBustedText + 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, .WinItBackText + call PrintText +.done + ret + +.ImFlatOutBustedText: + text_far _CeladonDinerGymGuideImFlatOutBustedText + text_end + +.ReceivedCoinCaseText: + text_far _CeladonDinerGymGuideReceivedCoinCaseText + sound_get_key_item + text_end + +.CoinCaseNoRoomText: + text_far _CeladonDinerGymGuideCoinCaseNoRoomText + text_end + +.WinItBackText: + text_far _CeladonDinerGymGuideWinItBackText + text_end diff --git a/scripts/CeladonMansion1F.asm b/scripts/CeladonMansion1F.asm index 4ef67258..ca276973 100644 --- a/scripts/CeladonMansion1F.asm +++ b/scripts/CeladonMansion1F.asm @@ -1,5 +1,6 @@ CeladonMansion1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansion1F_TextPointers: def_text_pointers @@ -9,31 +10,39 @@ CeladonMansion1F_TextPointers: dw_const CeladonMansion1FNidoranFText, TEXT_CELADONMANSION1F_NIDORANF dw_const CeladonMansion1FManagersSuiteSignText, TEXT_CELADONMANSION1F_MANAGERS_SUITE_SIGN -CeladonMansion1_PlayCryScript: - call PlayCry - jp TextScriptEnd - CeladonMansion1FMeowthText: text_far _CeladonMansion1FMeowthText text_asm ld a, MEOWTH - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1FGrannyText: - text_far _CeladonMansion1FGrannyText - text_end + text_asm + farcall CeladonMansion1FPrintGrannyText + ld a, [wPikachuHappiness] + cp 251 + jr c, .asm_485d9 + ld c, 50 + call DelayFrames + ldpikacry e, PikachuCry23 + callfar PlayPikachuSoundClip +.asm_485d9 + jp TextScriptEnd CeladonMansion1FClefairyText: text_far _CeladonMansion1FClefairyText text_asm ld a, CLEFAIRY - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1FNidoranFText: text_far _CeladonMansion1FNidoranFText text_asm ld a, NIDORAN_F - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1FManagersSuiteSignText: text_far _CeladonMansion1FManagersSuiteSignText diff --git a/scripts/CeladonMansion1F_2.asm b/scripts/CeladonMansion1F_2.asm new file mode 100644 index 00000000..ab366e7d --- /dev/null +++ b/scripts/CeladonMansion1F_2.asm @@ -0,0 +1,78 @@ +CeladonMansion1FPrintGrannyText:: + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeladonMansion1Text_f1e96 + call PrintText + callfar IsStarterPikachuAliveInOurParty + 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 e977bb62..8453d0e5 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: def_text_pointers @@ -13,29 +21,119 @@ CeladonMansion3F_TextPointers: dw_const CeladonMansion3FDevRoomSignText, TEXT_CELADONMANSION3F_DEV_ROOM_SIGN CeladonMansion3FProgrammerText: + 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 _CeladonMansion3FProgrammerText text_end +CeladonMansion3Text_486f5: + text_far _CeladonMansion3FProgrammerText2 + text_end + CeladonMansion3FGraphicArtistText: + text_asm + call CeladonMansion3_PokedexCount + cp NUM_POKEMON - 1 ; discount Mew + jr nc, .completed + ld hl, .Text1 + jr .print + +.completed + ld hl, .Text2 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .declined_print + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wStatusFlags5 + set BIT_NO_TEXT_DELAY, [hl] + callfar PrintDiploma + ld hl, wStatusFlags5 + res BIT_NO_TEXT_DELAY, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, .Text5 + ldh a, [hCanceledPrinting] + and a + jr nz, .print + ld hl, .Text4 + jr .print + +.declined_print + ld hl, .Text3 +.print + call PrintText + jp TextScriptEnd + +.Text1: text_far _CeladonMansion3FGraphicArtistText text_end +.Text2: + text_far _CeladonMansion3FGraphicArtistText2 + text_end + +.Text3: + text_far _CeladonMansion3FGraphicArtistText3 + text_end + +.Text4: + text_far _CeladonMansion3FGraphicArtistText4 + text_end + +.Text5: + text_far _CeladonMansion3FGraphicArtistText5 + text_end + CeladonMansion3FWriterText: + text_asm + call CeladonMansion3_PokedexCount + cp NUM_POKEMON - 1 ; discount Mew + ld hl, .Text2 + jr nc, .print + ld hl, .Text1 +.print + call PrintText + jp TextScriptEnd + +.Text1: text_far _CeladonMansion3FWriterText text_end +.Text2: + text_far _CeladonMansion3FWriterText2 + text_end + CeladonMansion3FGameDesignerText: 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, .Text jr .done .completed_dex ld hl, .CompletedDexText + call PrintText + call Delay3 + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .UnlockedDiplomaPrinting .done call PrintText jp TextScriptEnd @@ -53,18 +151,26 @@ CeladonMansion3FGameDesignerText: ld [wDoNotWaitForButtonPressAfterDisplayingText], a jp TextScriptEnd -CeladonMansion3FGameProgramPCText: - text_far _CeladonMansion3FGameProgramPCText +.UnlockedDiplomaPrinting + text_far _CeladonMansion3FGameDesignerCompletedDexText2 text_end +CeladonMansion3FGameProgramPCText: + text_asm + farcall CeladonMansion3FPrintGameProgramPCText + jp TextScriptEnd + CeladonMansion3FPlayingGamePCText: - text_far _CeladonMansion3FPlayingGamePCText - text_end + text_asm + farcall CeladonMansion3FPrintPlayingGamePCText + jp TextScriptEnd CeladonMansion3FGameScriptPCText: - text_far _CeladonMansion3FGameScriptPCText - text_end + text_asm + farcall CeladonMansion3FPrintGameScriptPCText + jp TextScriptEnd CeladonMansion3FDevRoomSignText: - text_far _CeladonMansion3FDevRoomSignText - text_end + text_asm + farcall CeladonMansion3FPrintDevRoomSignText + jp TextScriptEnd diff --git a/scripts/CeladonMansion3F_2.asm b/scripts/CeladonMansion3F_2.asm new file mode 100644 index 00000000..cfb18988 --- /dev/null +++ b/scripts/CeladonMansion3F_2.asm @@ -0,0 +1,35 @@ +CeladonMansion3FPrintGameProgramPCText:: + ld hl, .text + call PrintText + ret + +.text + text_far _CeladonMansion3FGameProgramPCText + text_end + +CeladonMansion3FPrintPlayingGamePCText:: + ld hl, .text + call PrintText + ret + +.text + text_far _CeladonMansion3FPlayingGamePCText + text_end + +CeladonMansion3FPrintGameScriptPCText:: + ld hl, .text + call PrintText + ret + +.text + text_far _CeladonMansion3FGameScriptPCText + text_end + +CeladonMansion3FPrintDevRoomSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _CeladonMansion3FDevRoomSignText + text_end diff --git a/scripts/CeladonMansionRoof.asm b/scripts/CeladonMansionRoof.asm index 0c39288c..f55bfa92 100644 --- a/scripts/CeladonMansionRoof.asm +++ b/scripts/CeladonMansionRoof.asm @@ -1,5 +1,6 @@ CeladonMansionRoof_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansionRoof_TextPointers: def_text_pointers diff --git a/scripts/CeladonMansionRoofHouse.asm b/scripts/CeladonMansionRoofHouse.asm index d3c03290..e71d14d5 100644 --- a/scripts/CeladonMansionRoofHouse.asm +++ b/scripts/CeladonMansionRoofHouse.asm @@ -1,5 +1,6 @@ CeladonMansionRoofHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansionRoofHouse_TextPointers: def_text_pointers diff --git a/scripts/CeladonMart1F.asm b/scripts/CeladonMart1F.asm index 9bdc031d..72b99423 100644 --- a/scripts/CeladonMart1F.asm +++ b/scripts/CeladonMart1F.asm @@ -1,5 +1,6 @@ CeladonMart1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMart1F_TextPointers: def_text_pointers diff --git a/scripts/CeladonMart3F.asm b/scripts/CeladonMart3F.asm index bf354764..0c277d57 100644 --- a/scripts/CeladonMart3F.asm +++ b/scripts/CeladonMart3F.asm @@ -23,42 +23,9 @@ CeladonMart3F_TextPointers: CeladonMart3FClerkText: 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 CeladonMart3FPrintClerkText jp TextScriptEnd -.TM18PreReceiveText: - text_far _CeladonMart3FClerkTM18PreReceiveText - text_end - -.ReceivedTM18Text: - text_far _CeladonMart3FClerkReceivedTM18Text - sound_get_item_1 - text_end - -.TM18ExplanationText: - text_far _CeladonMart3FClerkTM18ExplanationText - text_end - -.TM18NoRoomText: - text_far _CeladonMart3FClerkTM18NoRoomText - text_end - CeladonMart3FGameBoyKid1Text: text_far _CeladonMart3FGameBoyKid1Text text_end diff --git a/scripts/CeladonMart3F_2.asm b/scripts/CeladonMart3F_2.asm new file mode 100644 index 00000000..81c219e4 --- /dev/null +++ b/scripts/CeladonMart3F_2.asm @@ -0,0 +1,36 @@ +CeladonMart3FPrintClerkText:: + 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 _CeladonMart3FClerkTM18PreReceiveText + text_end + +.ReceivedTM18Text: + text_far _CeladonMart3FClerkReceivedTM18Text + sound_get_item_1 + text_end + +.TM18ExplanationText: + text_far _CeladonMart3FClerkTM18ExplanationText + text_end + +.TM18NoRoomText: + text_far _CeladonMart3FClerkTM18NoRoomText + text_end diff --git a/scripts/CeladonMart5F.asm b/scripts/CeladonMart5F.asm index f3fc5036..ae79297d 100644 --- a/scripts/CeladonMart5F.asm +++ b/scripts/CeladonMart5F.asm @@ -1,5 +1,6 @@ CeladonMart5F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMart5F_TextPointers: def_text_pointers diff --git a/scripts/CeladonMartRoof.asm b/scripts/CeladonMartRoof.asm index 9a1f8834..4bb4d596 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 @@ -126,13 +127,16 @@ CeladonMartRoofScript_GiveDrinkToGirl: ret .bagFull ld hl, CeladonMartRoofLittleGirlNoRoomText - jp PrintText + call PrintText + ret .alreadyGaveDrink ld hl, CeladonMartRoofLittleGirlImNotThirstyText - jp PrintText + call PrintText + ret RemoveItemByIDBank12: - farjp RemoveItemByID + farcall RemoveItemByID + ret CeladonMartRoofLittleGirlGiveHerWhichDrinkText: text_far _CeladonMartRoofLittleGirlGiveHerWhichDrinkText diff --git a/scripts/CeladonPokecenter.asm b/scripts/CeladonPokecenter.asm index f2b0bf65..b9d73bc1 100644 --- a/scripts/CeladonPokecenter.asm +++ b/scripts/CeladonPokecenter.asm @@ -8,6 +8,7 @@ CeladonPokecenter_TextPointers: dw_const CeladonPokecenterGentlemanText, TEXT_CELADONPOKECENTER_GENTLEMAN dw_const CeladonPokecenterBeautyText, TEXT_CELADONPOKECENTER_BEAUTY dw_const CeladonPokecenterLinkReceptionistText, TEXT_CELADONPOKECENTER_LINK_RECEPTIONIST + dw_const CeladonPokecenterChanseyText, TEXT_CELADONPOKECENTER_CHANSEY CeladonPokecenterLinkReceptionistText: script_cable_club_receptionist @@ -22,3 +23,8 @@ CeladonPokecenterGentlemanText: CeladonPokecenterBeautyText: text_far _CeladonPokecenterBeautyText text_end + +CeladonPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanCave1F.asm b/scripts/CeruleanCave1F.asm index d340f689..835c6977 100644 --- a/scripts/CeruleanCave1F.asm +++ b/scripts/CeruleanCave1F.asm @@ -3,6 +3,7 @@ CeruleanCave1F_Script: CeruleanCave1F_TextPointers: def_text_pointers - dw_const PickUpItemText, TEXT_CERULEANCAVE1F_FULL_RESTORE + dw_const PickUpItemText, TEXT_CERULEANCAVE1F_RARE_CANDY dw_const PickUpItemText, TEXT_CERULEANCAVE1F_MAX_ELIXER - dw_const PickUpItemText, TEXT_CERULEANCAVE1F_NUGGET + dw_const PickUpItemText, TEXT_CERULEANCAVE1F_MAX_REVIVE + dw_const PickUpItemText, TEXT_CERULEANCAVE1F_ULTRA_BALL diff --git a/scripts/CeruleanCave2F.asm b/scripts/CeruleanCave2F.asm index de423343..7170c2a9 100644 --- a/scripts/CeruleanCave2F.asm +++ b/scripts/CeruleanCave2F.asm @@ -3,6 +3,7 @@ CeruleanCave2F_Script: CeruleanCave2F_TextPointers: def_text_pointers - dw_const PickUpItemText, TEXT_CERULEANCAVE2F_PP_UP + dw_const PickUpItemText, TEXT_CERULEANCAVE2F_RARE_CANDY dw_const PickUpItemText, TEXT_CERULEANCAVE2F_ULTRA_BALL + dw_const PickUpItemText, TEXT_CERULEANCAVE2F_MAX_REVIVE dw_const PickUpItemText, TEXT_CERULEANCAVE2F_FULL_RESTORE diff --git a/scripts/CeruleanCaveB1F.asm b/scripts/CeruleanCaveB1F.asm index f35ee1e6..401ba44f 100644 --- a/scripts/CeruleanCaveB1F.asm +++ b/scripts/CeruleanCaveB1F.asm @@ -16,8 +16,10 @@ CeruleanCaveB1F_ScriptPointers: CeruleanCaveB1F_TextPointers: def_text_pointers dw_const CeruleanCaveB1FMewtwoText, TEXT_CERULEANCAVEB1F_MEWTWO - dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL + dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL1 + dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_ULTRA_BALL2 dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_MAX_REVIVE + dw_const PickUpItemText, TEXT_CERULEANCAVEB1F_MAX_ELIXER CeruleanCaveB1FTrainerHeaders: def_trainers diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm index 4412b49c..0bc77b42 100644 --- a/scripts/CeruleanCity.asm +++ b/scripts/CeruleanCity.asm @@ -69,9 +69,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 @@ -141,23 +139,8 @@ CeruleanCityRivalBattleScript: 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 CeruleanCityFaceRivalScript @@ -176,9 +159,7 @@ CeruleanCityRivalDefeatedScript: ld a, TEXT_CERULEANCITY_RIVAL ldh [hTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, CERULEANCITY_RIVAL ldh [hSpriteIndex], a @@ -241,7 +222,7 @@ CeruleanCity_TextPointers: dw_const CeruleanCitySuperNerd2Text, TEXT_CERULEANCITY_SUPER_NERD2 dw_const CeruleanCityGuardText, TEXT_CERULEANCITY_GUARD1 dw_const CeruleanCityCooltrainerF1Text, TEXT_CERULEANCITY_COOLTRAINER_F1 - dw_const CeruleanCitySlowbroText, TEXT_CERULEANCITY_SLOWBRO + dw_const CeruleanCityElectrodeText, TEXT_CERULEANCITY_ELECTRODE dw_const CeruleanCityCooltrainerF2Text, TEXT_CERULEANCITY_COOLTRAINER_F2 dw_const CeruleanCitySuperNerd3Text, TEXT_CERULEANCITY_SUPER_NERD3 dw_const CeruleanCityGuardText, TEXT_CERULEANCITY_GUARD2 @@ -364,35 +345,35 @@ CeruleanCityCooltrainerF1Text: ldh a, [hRandomAdd] cp 180 ; 76/256 chance of 1st dialogue jr c, .notFirstText - ld hl, .SlowbroUseSonicboomText + ld hl, .ElectrodeUseSonicboomText call PrintText jr .end .notFirstText cp 100 ; 80/256 chance of 2nd dialogue jr c, .notSecondText - ld hl, .SlowbroPunchText + ld hl, .ElectrodePunchText call PrintText jr .end .notSecondText ; 100/256 chance of 3rd dialogue - ld hl, .SlowbroWithdrawText + ld hl, .ElectrodeWithdrawText call PrintText .end jp TextScriptEnd -.SlowbroUseSonicboomText: - text_far _CeruleanCityCooltrainerF1SlowbroUseSonicboomText +.ElectrodeUseSonicboomText: + text_far _CeruleanCityCooltrainerF1ElectrodeUseSonicboomText text_end -.SlowbroPunchText: - text_far _CeruleanCityCooltrainerF1SlowbroPunchText +.ElectrodePunchText: + text_far _CeruleanCityCooltrainerF1ElectrodePunchText text_end -.SlowbroWithdrawText: - text_far _CeruleanCityCooltrainerF1SlowbroWithdrawText +.ElectrodeWithdrawText: + text_far _CeruleanCityCooltrainerF1ElectrodeWithdrawText text_end -CeruleanCitySlowbroText: +CeruleanCityElectrodeText: text_asm ldh a, [hRandomAdd] cp 180 ; 76/256 chance of 1st dialogue @@ -420,19 +401,19 @@ CeruleanCitySlowbroText: jp TextScriptEnd .TookASnoozeText: - text_far _CeruleanCitySlowbroTookASnoozeText + text_far _CeruleanCityElectrodeTookASnoozeText text_end .IsLoafingAroundText: - text_far _CeruleanCitySlowbroIsLoafingAroundText + text_far _CeruleanCityElectrodeIsLoafingAroundText text_end .TurnedAwayText: - text_far _CeruleanCitySlowbroTurnedAwayText + text_far _CeruleanCityElectrodeTurnedAwayText text_end .IgnoredOrdersText: - text_far _CeruleanCitySlowbroIgnoredOrdersText + text_far _CeruleanCityElectrodeIgnoredOrdersText text_end CeruleanCityCooltrainerF2Text: diff --git a/scripts/CeruleanGym.asm b/scripts/CeruleanGym.asm index 752891f9..a899fcc0 100644 --- a/scripts/CeruleanGym.asm +++ b/scripts/CeruleanGym.asm @@ -147,8 +147,6 @@ CeruleanGymMistyTM11NoRoomText: CeruleanGymMistyReceivedCascadeBadgeText: text_far _CeruleanGymMistyReceivedCascadeBadgeText - 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 CeruleanGymCooltrainerFText: diff --git a/scripts/CeruleanMelaniesHouse.asm b/scripts/CeruleanMelaniesHouse.asm new file mode 100644 index 00000000..1d2b817d --- /dev/null +++ b/scripts/CeruleanMelaniesHouse.asm @@ -0,0 +1,107 @@ +CeruleanMelaniesHouse_Script: + call EnableAutoTextBoxDrawing + ret + +CeruleanMelaniesHouse_TextPointers: + def_text_pointers + dw_const CeruleanMelanieHouseMelanieText, TEXT_CERULEANMELANIESHOUSE_MELANIE + dw_const CeruleanMelanieHouseBulbasaurText, TEXT_CERULEANMELANIESHOUSE_BULBASAUR + dw_const CeruleanMelanieHouseOddishText, TEXT_CERULEANMELANIESHOUSE_ODDISH + dw_const CeruleanMelanieHouseSandshrewText, TEXT_CERULEANMELANIESHOUSE_SANDSHREW + +CeruleanMelanieHouseMelanieText: + 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 [wNamedObjectIndex], a + ld [wCurPartySpecies], 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 + +CeruleanMelanieHouseBulbasaurText: + text_far MelanieBulbasaurText + text_asm + ld a, BULBASAUR + call PlayCry + jp TextScriptEnd + +CeruleanMelanieHouseOddishText: + text_far MelanieOddishText + text_asm + ld a, ODDISH + call PlayCry + jp TextScriptEnd + +CeruleanMelanieHouseSandshrewText: + text_far MelanieSandshrewText + text_asm + ld a, SANDSHREW + call PlayCry + jp TextScriptEnd diff --git a/scripts/CeruleanPokecenter.asm b/scripts/CeruleanPokecenter.asm index e143efb2..65154e43 100644 --- a/scripts/CeruleanPokecenter.asm +++ b/scripts/CeruleanPokecenter.asm @@ -8,6 +8,7 @@ CeruleanPokecenter_TextPointers: dw_const CeruleanPokecenterSuperNerdText, TEXT_CERULEANPOKECENTER_SUPER_NERD dw_const CeruleanPokecenterGentlemanText, TEXT_CERULEANPOKECENTER_GENTLEMAN dw_const CeruleanPokecenterLinkReceptionistText, TEXT_CERULEANPOKECENTER_LINK_RECEPTIONIST + dw_const CeruleanPokecenterChanseyText, TEXT_CERULEANPOKECENTER_CHANSEY CeruleanPokecenterLinkReceptionistText: script_cable_club_receptionist @@ -22,3 +23,8 @@ CeruleanPokecenterSuperNerdText: CeruleanPokecenterGentlemanText: text_far _CeruleanPokecenterGentlemanText text_end + +CeruleanPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanTradeHouse.asm b/scripts/CeruleanTradeHouse.asm deleted file mode 100644 index d2301693..00000000 --- a/scripts/CeruleanTradeHouse.asm +++ /dev/null @@ -1,18 +0,0 @@ -CeruleanTradeHouse_Script: - jp EnableAutoTextBoxDrawing - -CeruleanTradeHouse_TextPointers: - def_text_pointers - dw_const CeruleanTradeHouseGrannyText, TEXT_CERULEANTRADEHOUSE_GRANNY - dw_const CeruleanTradeHouseGamblerText, TEXT_CERULEANTRADEHOUSE_GAMBLER - -CeruleanTradeHouseGrannyText: - text_far _CeruleanTradeHouseGrannyText - text_end - -CeruleanTradeHouseGamblerText: - 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 68448b3d..8db95e56 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 ResetRivalScript: xor a ; SCRIPT_CHAMPIONSROOM_DEFAULT @@ -70,18 +71,7 @@ ChampionsRoomRivalReadyToBattleScript: ; 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 a4fc3c9d..fd3ceda1 100644 --- a/scripts/CinnabarGym.asm +++ b/scripts/CinnabarGym.asm @@ -42,6 +42,9 @@ CinnabarGymSetTrainerHeader: ld [wTrainerHeaderFlagBit], a ret +CinnabarGymFlagAction: + predef_jump FlagActionPredef + CinnabarGym_ScriptPointers: def_script_pointers dw_const CinnabarGymDefaultScript, SCRIPT_CINNABARGYM_DEFAULT @@ -58,12 +61,18 @@ CinnabarGymDefaultScript: jr nz, .not_super_nerd3 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 .not_super_nerd3 - 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, SCRIPT_CINNABARGYM_GET_OPPONENT_TEXT @@ -76,10 +85,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, [wd471] + 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 + CinnabarGymGetOpponentTextScript: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a @@ -91,52 +129,74 @@ CinnabarGymGetOpponentTextScript: ldh [hTextID], a jp DisplayTextID -CinnabarGymFlagAction: - predef_jump FlagActionPredef - CinnabarGymOpenGateScript: + 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, .no_sound + ld a, [wTrainerHeaderFlagBit] + cp 2 + jr z, .no_sound + ld c, 30 + call DelayFrames + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 call WaitForSoundToFinish ld a, SFX_GO_INSIDE call PlaySound call WaitForSoundToFinish + jr .asm_75013 .no_sound + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 +.asm_75013 + xor a + ld [wJoyIgnore], a + ld [wOpponentAfterWrongAnswer], a + ld a, SCRIPT_CINNABARGYM_DEFAULT + 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, SCRIPT_CINNABARGYM_DEFAULT - ld [wCinnabarGymCurScript], a - ld [wCurMapScript], a ret CinnabarGymBlainePostBattleScript: + call CinnabarGymScript_753e9 ld a, [wIsInBattle] cp $ff jp z, CinnabarGymResetScripts @@ -293,6 +353,13 @@ CinnabarGymSuperNerd2: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -321,6 +388,13 @@ CinnabarGymSuperNerd3: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -349,6 +423,13 @@ CinnabarGymSuperNerd4: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -377,6 +458,13 @@ CinnabarGymSuperNerd5: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -405,6 +493,13 @@ CinnabarGymSuperNerd6: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -433,6 +528,13 @@ CinnabarGymSuperNerd7: call CinnabarGymSetTrainerHeader CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6 jr nz, .defeated + 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, .BattleText call PrintText ld hl, .EndBattleText @@ -458,20 +560,5 @@ CinnabarGymSuperNerd7: CinnabarGymGymGuideText: text_asm - CheckEvent EVENT_BEAT_BLAINE - jr nz, .afterBeat - ld hl, .ChampInMakingText - jr .done -.afterBeat - ld hl, .BeatBlaineText -.done - call PrintText + callfar CinnabarGymPrintGymGuideText jp TextScriptEnd - -.ChampInMakingText: - text_far _CinnabarGymGymGuideChampInMakingText - text_end - -.BeatBlaineText: - text_far _CinnabarGymGymGuideBeatBlaineText - text_end diff --git a/scripts/CinnabarGym_2.asm b/scripts/CinnabarGym_2.asm new file mode 100644 index 00000000..9a59eec4 --- /dev/null +++ b/scripts/CinnabarGym_2.asm @@ -0,0 +1,18 @@ +CinnabarGymScript_753de: + callfar Func_f2150 + jp TextScriptEnd + +CinnabarGymScript_753e9: + push hl + ld hl, wd474 + bit 7, [hl] + res 7, [hl] + pop hl + ret + +CinnabarGymScript_753f3: + push hl + ld hl, wd474 + bit 7, [hl] + pop hl + ret diff --git a/scripts/CinnabarGym_3.asm b/scripts/CinnabarGym_3.asm new file mode 100644 index 00000000..a738de89 --- /dev/null +++ b/scripts/CinnabarGym_3.asm @@ -0,0 +1,64 @@ +CinnabarGymPrintGymGuideText:: + CheckEvent EVENT_BEAT_BLAINE + jr nz, .afterBeat + ld hl, .ChampInMakingText + jr .done +.afterBeat + ld hl, .BeatBlaineText +.done + call PrintText + ret + +.ChampInMakingText: + text_far _CinnabarGymGymGuideChampInMakingText + text_end + +.BeatBlaineText: + text_far _CinnabarGymGymGuideBeatBlaineText + 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/CinnabarLabFossilRoom.asm b/scripts/CinnabarLabFossilRoom.asm index e5928144..daa14412 100644 --- a/scripts/CinnabarLabFossilRoom.asm +++ b/scripts/CinnabarLabFossilRoom.asm @@ -100,7 +100,7 @@ CinnabarLabFossilRoomScientist1Text: CinnabarLabFossilRoomScientist2Text: text_asm - ld a, TRADE_FOR_SAILOR + ld a, TRADE_FOR_STICKY ld [wWhichTrade], a predef DoInGameTradeDialogue jp TextScriptEnd diff --git a/scripts/CinnabarLabTradeRoom.asm b/scripts/CinnabarLabTradeRoom.asm index ad40f2fe..452aff5d 100644 --- a/scripts/CinnabarLabTradeRoom.asm +++ b/scripts/CinnabarLabTradeRoom.asm @@ -13,13 +13,13 @@ CinnabarLabTradeRoomSuperNerdText: CinnabarLabTradeRoomGrampsText: text_asm - ld a, TRADE_FOR_DORIS + ld a, TRADE_FOR_BUFFY ld [wWhichTrade], a jr CinnabarLabTradeRoomDoTrade CinnabarLabTradeRoomBeautyText: text_asm - ld a, TRADE_FOR_CRINKLES + ld a, TRADE_FOR_CEZANNE ld [wWhichTrade], a CinnabarLabTradeRoomDoTrade: predef DoInGameTradeDialogue diff --git a/scripts/CinnabarPokecenter.asm b/scripts/CinnabarPokecenter.asm index 736d4a8c..8197a94d 100644 --- a/scripts/CinnabarPokecenter.asm +++ b/scripts/CinnabarPokecenter.asm @@ -8,6 +8,7 @@ CinnabarPokecenter_TextPointers: dw_const CinnabarPokecenterCooltrainerFText, TEXT_CINNABARPOKECENTER_COOLTRAINER_F dw_const CinnabarPokecenterGentlemanText, TEXT_CINNABARPOKECENTER_GENTLEMAN dw_const CinnabarPokecenterLinkReceptionistText, TEXT_CINNABARPOKECENTER_LINK_RECEPTIONIST + dw_const CinnabarPokecenterChanseyText, TEXT_CINNABARPOKECENTER_CHANSEY CinnabarPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ CinnabarPokecenterGentlemanText: CinnabarPokecenterLinkReceptionistText: script_cable_club_receptionist + +CinnabarPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm index 05b69935..f9c41edf 100644 --- a/scripts/Daycare.asm +++ b/scripts/Daycare.asm @@ -51,11 +51,21 @@ DaycareGentlemanText: 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, [wCurPartySpecies] call PlayCry + jr .asm_562e3 + +.depositedPikachuIntoDayCare + ldpikacry e, PikachuCry28 + callfar PlayPikachuSoundClip +.asm_562e3 ld hl, .ComeSeeMeInAWhileText jp .done @@ -198,8 +208,27 @@ DaycareGentlemanText: ld a, [hl] ld [de], a + ld a, [wPartyCount] + dec a + ld [wWhichPokemon], a + callfar IsThisPartyMonStarterPikachu + jr c, .withdrewPikachuFromDayCare ld a, [wCurPartySpecies] 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, .GotMonBackText jr .done diff --git a/scripts/FuchsiaMart.asm b/scripts/FuchsiaMart.asm index abb61302..b575d4b3 100644 --- a/scripts/FuchsiaMart.asm +++ b/scripts/FuchsiaMart.asm @@ -1,5 +1,6 @@ FuchsiaMart_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret FuchsiaMart_TextPointers: def_text_pointers diff --git a/scripts/FuchsiaPokecenter.asm b/scripts/FuchsiaPokecenter.asm index 7c0d3def..6b13e224 100644 --- a/scripts/FuchsiaPokecenter.asm +++ b/scripts/FuchsiaPokecenter.asm @@ -8,6 +8,7 @@ FuchsiaPokecenter_TextPointers: dw_const FuchsiaPokecenterRockerText, TEXT_FUCHSIAPOKECENTER_ROCKER dw_const FuchsiaPokecenterCooltrainerFText, TEXT_FUCHSIAPOKECENTER_COOLTRAINER_F dw_const FuchsiaPokecenterLinkReceptionistText, TEXT_FUCHSIAPOKECENTER_LINK_RECEPTIONIST + dw_const FuchsiaPokecenterChanseyText, TEXT_FUCHSIAPOKECENTER_CHANSEY FuchsiaPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ FuchsiaPokecenterCooltrainerFText: FuchsiaPokecenterLinkReceptionistText: script_cable_club_receptionist + +FuchsiaPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm index 028b5c88..5aaa998c 100644 --- a/scripts/GameCorner.asm +++ b/scripts/GameCorner.asm @@ -72,8 +72,12 @@ GameCornerRocketBattleScript: .not_direct_movement ld a, [wXCoord] cp 8 - jr nz, .got_rocket_movement + jr nz, .pikachu ld de, GameCornerMovement_Rocket_WalkDirect + jr .got_rocket_movement +.pikachu + callfar GameCornerPikachuMovementScript + ld de, GameCornerMovement_Rocket_WalkAroundPlayer .got_rocket_movement ld a, GAMECORNER_ROCKET ldh [hSpriteIndex], a @@ -86,8 +90,8 @@ GameCornerMovement_Rocket_WalkAroundPlayer: 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 @@ -120,15 +124,15 @@ GameCornerRocketExitScript: GameCorner_TextPointers: def_text_pointers dw_const GameCornerBeauty1Text, TEXT_GAMECORNER_BEAUTY1 - dw_const GameCornerClerk1Text, TEXT_GAMECORNER_CLERK1 + dw_const GameCornerClerkText, TEXT_GAMECORNER_CLERK dw_const GameCornerMiddleAgedMan1Text, TEXT_GAMECORNER_MIDDLE_AGED_MAN1 dw_const GameCornerBeauty2Text, TEXT_GAMECORNER_BEAUTY2 - dw_const GameCornerFishingGuruText, TEXT_GAMECORNER_FISHING_GURU + dw_const GameCornerFishingGuru1Text, TEXT_GAMECORNER_FISHING_GURU1 dw_const GameCornerMiddleAgedWomanText, TEXT_GAMECORNER_MIDDLE_AGED_WOMAN dw_const GameCornerGymGuideText, TEXT_GAMECORNER_GYM_GUIDE dw_const GameCornerGamblerText, TEXT_GAMECORNER_GAMBLER - dw_const GameCornerClerk2Text, TEXT_GAMECORNER_CLERK2 - dw_const GameCornerGentlemanText, TEXT_GAMECORNER_GENTLEMAN + dw_const GameCornerMiddleAgedMan2Text, TEXT_GAMECORNER_MIDDLE_AGED_MAN2 + dw_const GameCornerFishingGuru2Text, TEXT_GAMECORNER_FISHING_GURU2 dw_const GameCornerRocketText, TEXT_GAMECORNER_ROCKET dw_const GameCornerPosterText, TEXT_GAMECORNER_POSTER dw_const GameCornerRocketAfterBattleText, TEXT_GAMECORNER_ROCKET_AFTER_BATTLE @@ -137,7 +141,7 @@ GameCornerBeauty1Text: text_far _GameCornerBeauty1Text text_end -GameCornerClerk1Text: +GameCornerClerkText: text_asm ; Show player's coins call GameCornerDrawCoinBox @@ -203,27 +207,27 @@ GameCornerClerk1Text: jp TextScriptEnd .DoYouNeedSomeGameCoins: - text_far _GameCornerClerk1DoYouNeedSomeGameCoinsText + text_far _GameCornerClerkDoYouNeedSomeGameCoinsText text_end .ThanksHereAre50Coins: - text_far _GameCornerClerk1ThanksHereAre50CoinsText + text_far _GameCornerClerkThanksHereAre50CoinsText text_end .PleaseComePlaySometime: - text_far _GameCornerClerk1PleaseComePlaySometimeText + text_far _GameCornerClerkPleaseComePlaySometimeText text_end .CantAffordTheCoins: - text_far _GameCornerClerk1CantAffordTheCoinsText + text_far _GameCornerClerkCantAffordTheCoinsText text_end .CoinCaseIsFull: - text_far _GameCornerClerk1CoinCaseIsFullText + text_far _GameCornerClerkCoinCaseIsFullText text_end .DontHaveCoinCase: - text_far _GameCornerClerk1DontHaveCoinCaseText + text_far _GameCornerClerkDontHaveCoinCaseText text_end GameCornerMiddleAgedMan1Text: @@ -234,7 +238,7 @@ GameCornerBeauty2Text: text_far _GameCornerBeauty2Text text_end -GameCornerFishingGuruText: +GameCornerFishingGuru1Text: text_asm CheckEvent EVENT_GOT_10_COINS jr nz, .alreadyGotNpcCoins @@ -272,20 +276,20 @@ GameCornerFishingGuruText: jp TextScriptEnd .WantToPlayText: - text_far _GameCornerFishingGuruWantToPlayText + text_far _GameCornerFishingGuru1WantToPlayText text_end .Received10CoinsText: - text_far _GameCornerFishingGuruReceived10CoinsText + text_far _GameCornerFishingGuru1Received10CoinsText sound_get_item_1 text_end .DontNeedMyCoinsText: - text_far _GameCornerFishingGuruDontNeedMyCoinsText + text_far _GameCornerFishingGuru1DontNeedMyCoinsText text_end .WinsComeAndGoText: - text_far _GameCornerFishingGuruWinsComeAndGoText + text_far _GameCornerFishingGuru1WinsComeAndGoText text_end GameCornerMiddleAgedWomanText: @@ -314,7 +318,7 @@ GameCornerGamblerText: text_far _GameCornerGamblerText text_end -GameCornerClerk2Text: +GameCornerMiddleAgedMan2Text: text_asm CheckEvent EVENT_GOT_20_COINS_2 jr nz, .alreadyGotNpcCoins @@ -350,23 +354,23 @@ GameCornerClerk2Text: jp TextScriptEnd .WantSomeCoinsText: - text_far _GameCornerClerk2WantSomeCoinsText + text_far _GameCornerMiddleAgedMan2WantSomeCoinsText text_end .Received20CoinsText: - text_far _GameCornerClerk2Received20CoinsText + text_far _GameCornerMiddleAgedMan2Received20CoinsText sound_get_item_1 text_end .YouHaveLotsOfCoinsText: - text_far _GameCornerClerk2YouHaveLotsOfCoinsText + text_far _GameCornerMiddleAgedMan2YouHaveLotsOfCoinsText text_end .INeedMoreCoinsText: - text_far _GameCornerClerk2INeedMoreCoinsText + text_far _GameCornerMiddleAgedMan2INeedMoreCoinsText text_end -GameCornerGentlemanText: +GameCornerFishingGuru2Text: text_asm CheckEvent EVENT_GOT_20_COINS jr nz, .alreadyGotNpcCoins @@ -402,20 +406,20 @@ GameCornerGentlemanText: jp TextScriptEnd .ThrowingMeOffText: - text_far _GameCornerGentlemanThrowingMeOffText + text_far _GameCornerFishingGuru2ThrowingMeOffText text_end .Received20CoinsText: - text_far _GameCornerGentlemanReceived20CoinsText + text_far _GameCornerFishingGuru2Received20CoinsText sound_get_item_1 text_end .YouGotYourOwnCoinsText: - text_far _GameCornerGentlemanYouGotYourOwnCoinsText + text_far _GameCornerFishingGuru2YouGotYourOwnCoinsText text_end .CloselyWatchTheReelsText: - text_far _GameCornerGentlemanCloselyWatchTheReelsText + text_far _GameCornerFishingGuru2CloselyWatchTheReelsText text_end GameCornerRocketText: @@ -485,13 +489,11 @@ GameCornerDrawCoinBox: ld hl, wStatusFlags5 set BIT_NO_TEXT_DELAY, [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/GameCorner_2.asm b/scripts/GameCorner_2.asm new file mode 100644 index 00000000..0569ec0f --- /dev/null +++ b/scripts/GameCorner_2.asm @@ -0,0 +1,12 @@ +GameCornerPikachuMovementScript:: + ld hl, GameCornerPikachuMovementData + ld b, SPRITE_FACING_DOWN + call TryApplyPikachuMovementData + ret + +GameCornerPikachuMovementData: + db $00 + db $20 + db $1e + db $35 + db $3f diff --git a/scripts/IndigoPlateauLobby.asm b/scripts/IndigoPlateauLobby.asm index 8ac87030..ee757ef7 100644 --- a/scripts/IndigoPlateauLobby.asm +++ b/scripts/IndigoPlateauLobby.asm @@ -21,6 +21,7 @@ IndigoPlateauLobby_TextPointers: dw_const IndigoPlateauLobbyCooltrainerFText, TEXT_INDIGOPLATEAULOBBY_COOLTRAINER_F dw_const IndigoPlateauLobbyClerkText, TEXT_INDIGOPLATEAULOBBY_CLERK dw_const IndigoPlateauLobbyLinkReceptionistText, TEXT_INDIGOPLATEAULOBBY_LINK_RECEPTIONIST + dw_const IndigoPlateauLobbyChanseyText, TEXT_INDIGOPLATEAULOBBY_CHANSEY IndigoPlateauLobbyNurseText: script_pokecenter_nurse @@ -35,3 +36,8 @@ IndigoPlateauLobbyCooltrainerFText: IndigoPlateauLobbyLinkReceptionistText: script_cable_club_receptionist + +IndigoPlateauLobbyChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm index 0a040ea6..f54a0511 100644 --- a/scripts/LancesRoom.asm +++ b/scripts/LancesRoom.asm @@ -109,7 +109,7 @@ WalkToLance: ret WalkToLance_RLEList: - db PAD_UP, 12 + db PAD_UP, 13 db PAD_LEFT, 12 db PAD_DOWN, 7 db PAD_LEFT, 6 diff --git a/scripts/LavenderPokecenter.asm b/scripts/LavenderPokecenter.asm index 6bcc330b..8d92c3af 100644 --- a/scripts/LavenderPokecenter.asm +++ b/scripts/LavenderPokecenter.asm @@ -8,6 +8,7 @@ LavenderPokecenter_TextPointers: dw_const LavenderPokecenterGentlemanText, TEXT_LAVENDERPOKECENTER_GENTLEMAN dw_const LavenderPokecenterLittleGirlText, TEXT_LAVENDERPOKECENTER_LITTLE_GIRL dw_const LavenderPokecenterLinkReceptionistText, TEXT_LAVENDERPOKECENTER_LINK_RECEPTIONIST + dw_const LavenderPokecenterChanseyText, TEXT_LAVENDERPOKECENTER_CHANSEY LavenderPokecenterLinkReceptionistText: script_cable_club_receptionist @@ -22,3 +23,8 @@ LavenderPokecenterGentlemanText: LavenderPokecenterLittleGirlText: text_far _LavenderPokecenterLittleGirlText text_end + +LavenderPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoon1F.asm b/scripts/MtMoon1F.asm index 43ab3e3f..260f7b93 100644 --- a/scripts/MtMoon1F.asm +++ b/scripts/MtMoon1F.asm @@ -51,42 +51,37 @@ MtMoon1TrainerHeader6: MtMoon1FHikerText: text_asm ld hl, MtMoon1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FYoungster1Text: text_asm ld hl, MtMoon1TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FCooltrainerF1Text: text_asm ld hl, MtMoon1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FSuperNerdText: text_asm ld hl, MtMoon1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FCooltrainerF2Text: text_asm ld hl, MtMoon1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FYoungster2Text: text_asm ld hl, MtMoon1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1FYoungster3Text: text_asm ld hl, MtMoon1TrainerHeader6 +MtMoon1TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm index 34f11d99..4b82ea12 100644 --- a/scripts/MtMoonB2F.asm +++ b/scripts/MtMoonB2F.asm @@ -38,12 +38,22 @@ MtMoonB2FFossilAreaCoords: db -1 ; end MtMoonB2FResetScripts: - xor a ; SCRIPT_MTMOONB2F_DEFAULT + CheckAndResetEvent EVENT_57E + call nz, MtMoonB2FScript_HideJessieJames + xor a ld [wJoyIgnore], a +MtMoonB2FSetScript: ld [wMtMoonB2FCurScript], a ld [wCurMapScript], a ret +MtMoonB2FScript_HideJessieJames: + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoonB2FScript_HideObject + ld a, HS_MT_MOON_B2F_JAMES + call MtMoonB2FScript_HideObject + ret + MtMoonB2F_ScriptPointers: def_script_pointers dw_const MtMoonB2FDefaultScript, SCRIPT_MTMOONB2F_DEFAULT @@ -52,23 +62,45 @@ MtMoonB2F_ScriptPointers: dw_const MtMoonB2FDefeatedSuperNerdScript, SCRIPT_MTMOONB2F_DEFEATED_SUPER_NERD dw_const MtMoonB2FMoveSuperNerdScript, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD dw_const MtMoonB2FSuperNerdTakesOtherFossilScript, SCRIPT_MTMOONB2F_SUPER_NERD_TAKES_OTHER_FOSSIL + dw_const MtMoonB2FScript6, SCRIPT_MTMOONB2F_SCRIPT6 + dw_const MtMoonB2FScript7, SCRIPT_MTMOONB2F_SCRIPT7 + dw_const MtMoonB2FScript8, SCRIPT_MTMOONB2F_SCRIPT8 + dw_const MtMoonB2FScript9, SCRIPT_MTMOONB2F_SCRIPT9 + dw_const MtMoonB2FScript10, SCRIPT_MTMOONB2F_SCRIPT10 + dw_const MtMoonB2FScript11, SCRIPT_MTMOONB2F_SCRIPT11 + dw_const MtMoonB2FScript12, SCRIPT_MTMOONB2F_SCRIPT12 + dw_const MtMoonB2FScript13, SCRIPT_MTMOONB2F_SCRIPT13 + dw_const MtMoonB2FScript14, SCRIPT_MTMOONB2F_SCRIPT14 + dw_const MtMoonB2FScript15, SCRIPT_MTMOONB2F_SCRIPT15 MtMoonB2FDefaultScript: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC + CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + call z, MtMoonB2FScript_49d28 + CheckEvent EVENT_BEAT_MT_MOON_3_JESSIE_JAMES + call z, MtMoonB2FScript_49e15 + ret + +MtMoonB2FScript_49d28: CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jp nz, MtMoonB2FCheckGotAFossil + jp nz, .asm_49d4b ld a, [wYCoord] cp 8 - jp nz, MtMoonB2FCheckGotAFossil + jp nz, .asm_49d4b ld a, [wXCoord] cp 13 - jp nz, MtMoonB2FCheckGotAFossil + jp nz, .asm_49d4b xor a ldh [hJoyHeld], a ld a, TEXT_MTMOONB2F_SUPER_NERD ldh [hTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoonB2FCheckGotAFossil: +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -83,48 +115,84 @@ MtMoonB2FDefeatedSuperNerdScript: xor a ld [wJoyIgnore], a ld a, SCRIPT_MTMOONB2F_DEFAULT - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript ret MtMoonB2FMoveSuperNerdScript: ld a, MTMOONB2F_SUPER_NERD ldh [hSpriteIndex], a call SetSpriteMovementBytesToFF - ld hl, MtMoonB2FPlayerNearDomeFossilCoords + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 + call ArePlayerCoordsInArray + jr c, .asm_49db0 + ld hl, CoordsData_49dd5 call ArePlayerCoordsInArray - jr c, .player_near_dome_fossil - ld hl, MtMoonB2FPlayerNearHelixFossilCoords + jr c, .asm_49d9b + ld hl, CoordsData_49dce call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MtMoon3FSuperNerdMoveUpMovementData - jr .continue -.player_near_dome_fossil - ld de, MtMoon3FSuperNerdMoveRightMovementData -.continue + jr c, .asm_49da3 + jp CheckFightingMapTrainers + +.asm_49d9b + ld b, SPRITE_FACING_LEFT + ld hl, PikachuMovementData_49dd8 + call MtMoonB2FScript_ApplyPikachuMovementData +.asm_49da3 + ld de, MovementData_49ddd + jr .asm_49db3 + +.asm_49da8 + ld b, SPRITE_FACING_RIGHT + ld hl, PikachuMovementData_49dca + call MtMoonB2FScript_ApplyPikachuMovementData +.asm_49db0 + ld de, MovementData_49ddc +.asm_49db3 ld a, MTMOONB2F_SUPER_NERD ldh [hSpriteIndex], a call MoveSprite ld a, SCRIPT_MTMOONB2F_SUPER_NERD_TAKES_OTHER_FOSSIL - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript ret -MtMoonB2FPlayerNearDomeFossilCoords: +CoordsData_49dc0: dbmapcoord 12, 7 dbmapcoord 11, 6 dbmapcoord 12, 5 db -1 ; end -MtMoonB2FPlayerNearHelixFossilCoords: +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 -MtMoon3FSuperNerdMoveRightMovementData: +CoordsData_49dd5: + dbmapcoord 13, 7 + db -1 ; end + +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: db NPC_MOVEMENT_RIGHT -MtMoon3FSuperNerdMoveUpMovementData: +MovementData_49ddd: db NPC_MOVEMENT_UP db -1 ; end @@ -139,47 +207,273 @@ MtMoonB2FSuperNerdTakesOtherFossilScript: ld a, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE ldh [hTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL - jr z, .got_dome_fossil - ld a, HS_MT_MOON_B2F_FOSSIL_2 - jr .continue -.got_dome_fossil + CheckEvent EVENT_GOT_HELIX_FOSSIL + jr z, .asm_49e1d ld a, HS_MT_MOON_B2F_FOSSIL_1 -.continue + jr .asm_49e1f +.asm_49e1d + ld a, HS_MT_MOON_B2F_FOSSIL_2 +.asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, SCRIPT_MTMOONB2F_DEFAULT - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript + ret + +MtMoonB2FScript_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, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoonB2FScript_ShowObject + ld a, HS_MT_MOON_B2F_JAMES + call MtMoonB2FScript_ShowObject + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_MTMOONB2F_TEXT12 + ldh [hTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, PAD_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_MTMOONB2F_SCRIPT6 + call MtMoonB2FSetScript + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoonB2FScript6: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, MTMOONB2F_JESSIE + ldh [hSpriteIndex], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_MTMOONB2F_SCRIPT7 + call MtMoonB2FSetScript + ret + +MtMoonB2FScript7: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz +MtMoonB2FScript8: + ld a, $2 + ld [wSprite02StateData1MovementStatus], a + ld a, SPRITE_FACING_DOWN + ld [wSprite02StateData1FacingDirection], a +MtMoonB2FScript9: + ld a, MTMOONB2F_JAMES + ldh [hSpriteIndex], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_MTMOONB2F_SCRIPT10 + call MtMoonB2FSetScript + ret + +MtMoonB2FScript10: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz +MtMoonB2FScript11: + ld a, $2 + ld [wSprite06StateData1MovementStatus], a + ld a, SPRITE_FACING_LEFT + ld [wSprite06StateData1FacingDirection], a + call Delay3 + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, TEXT_MTMOONB2F_TEXT13 + ldh [hTextID], a + call DisplayTextID +MtMoonB2FScript12: + ld hl, wStatusFlags3 + set BIT_TALKED_TO_TRAINER, [hl] + set BIT_PRINT_END_BATTLE_TEXT, [hl] + ld hl, MtMoonB2FJessieJamesEndBattleText + ld de, MtMoonB2FJessieJamesEndBattleText + 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, SCRIPT_MTMOONB2F_SCRIPT13 + call MtMoonB2FSetScript + ret + +MtMoonB2FScript13: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoonB2FResetScripts + ld a, $2 + ld [wSprite02StateData1MovementStatus], a + ld [wSprite06StateData1MovementStatus], a + xor a + ld [wSprite02StateData1FacingDirection], a + ld [wSprite06StateData1FacingDirection], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_MTMOONB2F_TEXT14 + ldh [hTextID], 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, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_MTMOONB2F_SCRIPT14 + call MtMoonB2FSetScript + ret + +MtMoonB2FScript14: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoonB2FScript_HideObject + ld a, HS_MT_MOON_B2F_JAMES + call MtMoonB2FScript_HideObject + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, SCRIPT_MTMOONB2F_SCRIPT15 + call MtMoonB2FSetScript + ret + +MtMoonB2FScript15: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_JESSIE_JAMES + ResetEventReuseHL EVENT_57E + ld a, SCRIPT_MTMOONB2F_DEFAULT + call MtMoonB2FSetScript + ret + +MtMoonB2FScript_ShowObject: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoonB2FScript_HideObject: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoonB2F_TextPointers: def_text_pointers - dw_const MtMoonB2FSuperNerdText, TEXT_MTMOONB2F_SUPER_NERD - dw_const MtMoonB2FRocket1Text, TEXT_MTMOONB2F_ROCKET1 - dw_const MtMoonB2FRocket2Text, TEXT_MTMOONB2F_ROCKET2 - dw_const MtMoonB2FRocket3Text, TEXT_MTMOONB2F_ROCKET3 - dw_const MtMoonB2FRocket4Text, TEXT_MTMOONB2F_ROCKET4 - dw_const MtMoonB2FDomeFossilText, TEXT_MTMOONB2F_DOME_FOSSIL - dw_const MtMoonB2FHelixFossilText, TEXT_MTMOONB2F_HELIX_FOSSIL - dw_const PickUpItemText, TEXT_MTMOONB2F_HP_UP - dw_const PickUpItemText, TEXT_MTMOONB2F_TM_MEGA_PUNCH - dw_const MtMoonB2FSuperNerdThenThisIsMineText, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE + dw_const MtMoonB2FSuperNerdText, TEXT_MTMOONB2F_SUPER_NERD + dw_const MtMoonB2FJessieJamesText, TEXT_MTMOONB2F_JESSIE + dw_const MtMoonB2FRocket1Text, TEXT_MTMOONB2F_ROCKET1 + dw_const MtMoonB2FRocket2Text, TEXT_MTMOONB2F_ROCKET2 + dw_const MtMoonB2FRocket3Text, TEXT_MTMOONB2F_ROCKET3 + dw_const MtMoonB2FJessieJamesText, TEXT_MTMOONB2F_JAMES + dw_const MtMoonB2FDomeFossilText, TEXT_MTMOONB2F_DOME_FOSSIL + dw_const MtMoonB2FHelixFossilText, TEXT_MTMOONB2F_HELIX_FOSSIL + dw_const PickUpItemText, TEXT_MTMOONB2F_HP_UP + dw_const PickUpItemText, TEXT_MTMOONB2F_TM_MEGA_PUNCH + dw_const MtMoonB2FSuperNerdThenThisIsMineText, TEXT_MTMOONB2F_SUPER_NERD_THEN_THIS_IS_MINE + dw_const MtMoonB2FText12, TEXT_MTMOONB2F_TEXT12 + dw_const MtMoonB2FText13, TEXT_MTMOONB2F_TEXT13 + dw_const MtMoonB2FText14, TEXT_MTMOONB2F_TEXT14 MtMoon3TrainerHeaders: - def_trainers 2 + def_trainers 3 MtMoon3TrainerHeader0: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoonB2FRocket1BattleText, MtMoonB2FRocket1EndBattleText, MtMoonB2FRocket1AfterBattleText + trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoonB2FRocket2BattleText, MtMoonB2FRocket2EndBattleText, MtMoonB2FRocket2AfterBattleText MtMoon3TrainerHeader1: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoonB2FRocket2BattleText, MtMoonB2FRocket2EndBattleText, MtMoonB2FRocket2AfterBattleText + trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoonB2FRocket3BattleText, MtMoonB2FRocket3EndBattleText, MtMoonB2FRocket3AfterBattleText MtMoon3TrainerHeader2: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoonB2FRocket3BattleText, MtMoonB2FRocket3EndBattleText, MtMoonB2FRocket3AfterBattleText -MtMoon3TrainerHeader3: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_3, 4, MtMoonB2FRocket4BattleText, MtMoonB2FRocket4EndBattleText, MtMoonB2FRocket4AfterBattleText + trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoonB2FRocket4BattleText, MtMoonB2FRocket4EndBattleText, MtMoonB2FRocket4AfterBattleText db -1 ; end +MtMoonB2FJessieJamesText: + text_end + +MtMoonB2FText12: + 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 + +MtMoonB2FText13: + text_far _MtMoonJessieJamesText2 + text_end + +MtMoonB2FJessieJamesEndBattleText: + text_far _MtMoonJessieJamesText3 + text_end + +MtMoonB2FText14: + text_far _MtMoonJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + MtMoonB2FSuperNerdText: text_asm CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD @@ -203,8 +497,7 @@ MtMoonB2FSuperNerdText: call EngageMapTrainer call InitBattleEnemyParameters ld a, SCRIPT_MTMOONB2F_DEFEATED_SUPER_NERD - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript jr .done .got_a_fossil ld hl, MtMoonB2FSuperNerdTheresAPokemonLabText @@ -215,24 +508,17 @@ MtMoonB2FSuperNerdText: MtMoonB2FRocket1Text: text_asm ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoonB2FTalkToTrainer MtMoonB2FRocket2Text: text_asm ld hl, MtMoon3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoonB2FTalkToTrainer MtMoonB2FRocket3Text: text_asm ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd - -MtMoonB2FRocket4Text: - text_asm - ld hl, MtMoon3TrainerHeader3 +MtMoonB2FTalkToTrainer: call TalkToTrainer jp TextScriptEnd @@ -255,8 +541,7 @@ MtMoonB2FDomeFossilText: predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript .done jp TextScriptEnd @@ -283,8 +568,7 @@ MtMoonB2FHelixFossilText: predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, SCRIPT_MTMOONB2F_MOVE_SUPER_NERD - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoonB2FSetScript .done jp TextScriptEnd @@ -333,18 +617,6 @@ MtMoonB2FSuperNerdThenThisIsMineText: sound_get_key_item text_end -MtMoonB2FRocket1BattleText: - text_far _MtMoonB2FRocket1BattleText - text_end - -MtMoonB2FRocket1EndBattleText: - text_far _MtMoonB2FRocket1EndBattleText - text_end - -MtMoonB2FRocket1AfterBattleText: - text_far _MtMoonB2FRocket1AfterBattleText - text_end - MtMoonB2FRocket2BattleText: text_far _MtMoonB2FRocket2BattleText text_end diff --git a/scripts/MtMoonB2F_2.asm b/scripts/MtMoonB2F_2.asm new file mode 100644 index 00000000..c2515abd --- /dev/null +++ b/scripts/MtMoonB2F_2.asm @@ -0,0 +1,28 @@ +MtMoonB2FScript_ApplyPikachuMovementData: + ld a, [wd471] + 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 da3d3bc5..acf05548 100644 --- a/scripts/MtMoonPokecenter.asm +++ b/scripts/MtMoonPokecenter.asm @@ -10,6 +10,7 @@ MtMoonPokecenter_TextPointers: dw_const MtMoonPokecenterMagikarpSalesmanText, TEXT_MTMOONPOKECENTER_MAGIKARP_SALESMAN dw_const MtMoonPokecenterClipboardText, TEXT_MTMOONPOKECENTER_CLIPBOARD dw_const MtMoonPokecenterLinkReceptionistText, TEXT_MTMOONPOKECENTER_LINK_RECEPTIONIST + dw_const MtMoonPokecenterChanseyText, TEXT_MTMOONPOKECENTER_CHANSEY MtMoonPokecenterNurseText: script_pokecenter_nurse @@ -24,72 +25,17 @@ MtMoonPokecenterGentlemanText: MtMoonPokecenterMagikarpSalesmanText: text_asm - CheckEvent EVENT_BOUGHT_MAGIKARP, 1 - jp c, .alreadyBoughtMagikarp - ld hl, .IGotADealText - 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, .NoText - jr .printText -.alreadyBoughtMagikarp - ld hl, .NoRefundsText -.printText - call PrintText -.done + callfar MagikarpSalesman jp TextScriptEnd -.IGotADealText - text_far _MtMoonPokecenterMagikarpSalesmanIGotADealText - text_end - -.NoText - text_far _MtMoonPokecenterMagikarpSalesmanNoText - text_end - -.NoMoneyText - text_far _MtMoonPokecenterMagikarpSalesmanNoMoneyText - text_end - -.NoRefundsText - text_far _MtMoonPokecenterMagikarpSalesmanNoRefundsText - text_end - MtMoonPokecenterClipboardText: text_far _MtMoonPokecenterClipboardText text_end MtMoonPokecenterLinkReceptionistText: script_cable_club_receptionist + +MtMoonPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoonPokecenter_2.asm b/scripts/MtMoonPokecenter_2.asm new file mode 100644 index 00000000..ba5650a2 --- /dev/null +++ b/scripts/MtMoonPokecenter_2.asm @@ -0,0 +1,64 @@ +MagikarpSalesman:: + CheckEvent EVENT_BOUGHT_MAGIKARP, 1 + jp c, .alreadyBoughtMagikarp + ld hl, .IGotADealText + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .choseNo + 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 + 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, .NoText + jr .printText +.alreadyBoughtMagikarp + ld hl, .NoRefundsText +.printText + call PrintText +.done + ret + +.IGotADealText + text_far _MtMoonPokecenterMagikarpSalesmanIGotADealText + text_end + +.NoText + text_far _MtMoonPokecenterMagikarpSalesmanNoText + text_end + +.NoMoneyText + text_far _MtMoonPokecenterMagikarpSalesmanNoMoneyText + text_end + +.NoRefundsText + text_far _MtMoonPokecenterMagikarpSalesmanNoRefundsText + text_end diff --git a/scripts/Museum1F.asm b/scripts/Museum1F.asm index 6cb6889a..0e65accd 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: def_script_pointers @@ -42,208 +43,25 @@ Museum1F_TextPointers: Museum1FScientist1Text: text_asm - ld a, [wYCoord] - cp 4 - jr nz, .not_right_of_scientist - ld a, [wXCoord] - cp 13 - jp z, .behind_counter - jr .check_ticket -.not_right_of_scientist - cp 3 - jr nz, .not_behind_counter - ld a, [wXCoord] - cp 12 - jp z, .behind_counter -.not_behind_counter - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr nz, .already_bought_ticket - ld hl, .GoToOtherSideText - call PrintText - jp .done -.check_ticket - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr z, .no_ticket -.already_bought_ticket - ld hl, .TakePlentyOfTimeText - call PrintText - jp .done -.no_ticket - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - xor a - ldh [hJoyHeld], a - ld hl, .WouldYouLikeToComeInText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .deny_entry - xor a - ldh [hMoney], a - ldh [hMoney + 1], a - ld a, $50 - ldh [hMoney + 2], a - call HasEnoughMoney - jr nc, .buy_ticket - ld hl, .DontHaveEnoughMoneyText - call PrintText - jp .deny_entry -.buy_ticket - ld hl, .ThankYouText - 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 .allow_entry -.deny_entry - ld hl, .ComeAgainText - call PrintText - ld a, $1 - ld [wSimulatedJoypadStatesIndex], a - ld a, PAD_DOWN - ld [wSimulatedJoypadStatesEnd], a - call StartSimulatingJoypadStates - call UpdateSprites - jr .done -.allow_entry - ld a, SCRIPT_MUSEUM1F_NOOP - ld [wMuseum1FCurScript], a - jr .done - -.behind_counter - ld hl, .DoYouKnowWhatAmberIsText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - cp $0 - jr nz, .explain_amber - ld hl, .TheresALabSomewhereText - call PrintText - jr .done -.explain_amber - ld hl, .AmberIsFossilizedTreeSapText - call PrintText -.done + farcall Museum1FPrintScientist1Text jp TextScriptEnd -.ComeAgainText: - text_far _Museum1FScientist1ComeAgainText - text_end - -.WouldYouLikeToComeInText: - text_far _Museum1FScientist1WouldYouLikeToComeInText - text_end - -.ThankYouText: - text_far _Museum1FScientist1ThankYouText - text_end - -.DontHaveEnoughMoneyText: - text_far _Museum1FScientist1DontHaveEnoughMoneyText - text_end - -.DoYouKnowWhatAmberIsText: - text_far _Museum1FScientist1DoYouKnowWhatAmberIsText - text_end - -.TheresALabSomewhereText: - text_far _Museum1FScientist1TheresALabSomewhereText - text_end - -.AmberIsFossilizedTreeSapText: - text_far _Museum1FScientist1AmberIsFossilizedTreeSapText - text_end - -.GoToOtherSideText: - text_far _Museum1FScientist1GoToOtherSideText - text_end - -.TakePlentyOfTimeText: - text_far _Museum1FScientist1TakePlentyOfTimeText - text_end - Museum1FGamblerText: text_asm - ld hl, .Text - call PrintText + farcall Museum1FPrintGamblerText jp TextScriptEnd -.Text: - text_far _Museum1FGamblerText - text_end - Museum1FScientist2Text: text_asm - CheckEvent EVENT_GOT_OLD_AMBER - jr nz, .got_item - ld hl, .TakeThisToAPokemonLabText - 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, .YouDontHaveSpaceText - jr .done -.got_item - ld hl, .GetTheOldAmberCheckText -.done - call PrintText + farcall Museum1FPrintScientist2Text jp TextScriptEnd -.TakeThisToAPokemonLabText: - text_far _Museum1FScientist2TakeThisToAPokemonLabText - text_end - -.ReceivedOldAmberText: - text_far _Museum1FScientist2ReceivedOldAmberText - sound_get_item_1 - text_end - -.GetTheOldAmberCheckText: - text_far _Museum1FScientist2GetTheOldAmberCheckText - text_end - -.YouDontHaveSpaceText: - text_far _Museum1FScientist2YouDontHaveSpaceText - text_end - Museum1FScientist3Text: text_asm - ld hl, .Text - call PrintText + farcall Museum1FPrintScientist3Text jp TextScriptEnd -.Text: - text_far _Museum1FScientist3Text - text_end - Museum1FOldAmberText: text_asm - ld hl, .Text - call PrintText + farcall Museum1FPrintOldAmberText jp TextScriptEnd - -.Text: - text_far _Museum1FOldAmberText - text_end diff --git a/scripts/Museum1F_2.asm b/scripts/Museum1F_2.asm new file mode 100644 index 00000000..9a848f50 --- /dev/null +++ b/scripts/Museum1F_2.asm @@ -0,0 +1,202 @@ +Museum1FPrintScientist1Text:: + ld a, [wYCoord] + cp 4 + jr nz, .not_right_of_scientist + ld a, [wXCoord] + cp 13 + jp z, .behind_counter + jr .check_ticket +.not_right_of_scientist + cp 3 + jr nz, .not_behind_counter + ld a, [wXCoord] + cp 12 + jp z, .behind_counter +.not_behind_counter + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr nz, .already_bought_ticket + ld hl, .GoToOtherSideText + call PrintText + jp .done +.check_ticket + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr z, .no_ticket +.already_bought_ticket + ld hl, .TakePlentyOfTimeText + call PrintText + jp .done +.no_ticket + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + xor a + ldh [hJoyHeld], a + ld hl, .WouldYouLikeToComeInText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .deny_entry + xor a + ldh [hMoney], a + ldh [hMoney + 1], a + ld a, $50 + ldh [hMoney + 2], a + call HasEnoughMoney + jr nc, .buy_ticket + ld hl, .DontHaveEnoughMoneyText + call PrintText + jp .deny_entry +.buy_ticket + ld hl, .ThankYouText + 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 .allow_entry +.deny_entry + ld hl, .ComeAgainText + call PrintText + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, PAD_DOWN + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + call UpdateSprites + jr .done +.allow_entry + ld a, SCRIPT_MUSEUM1F_NOOP + ld [wMuseum1FCurScript], a + jr .done + +.behind_counter + ld hl, .DoYouKnowWhatAmberIsText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + cp $0 + jr nz, .explain_amber + ld hl, .TheresALabSomewhereText + call PrintText + jr .done +.explain_amber + ld hl, .AmberIsFossilizedTreeSapText + call PrintText +.done + ret + +.ComeAgainText: + text_far _Museum1FScientist1ComeAgainText + text_end + +.WouldYouLikeToComeInText: + text_far _Museum1FScientist1WouldYouLikeToComeInText + text_end + +.ThankYouText: + text_far _Museum1FScientist1ThankYouText + text_end + +.DontHaveEnoughMoneyText: + text_far _Museum1FScientist1DontHaveEnoughMoneyText + text_end + +.DoYouKnowWhatAmberIsText: + text_far _Museum1FScientist1DoYouKnowWhatAmberIsText + text_end + +.TheresALabSomewhereText: + text_far _Museum1FScientist1TheresALabSomewhereText + text_end + +.AmberIsFossilizedTreeSapText: + text_far _Museum1FScientist1AmberIsFossilizedTreeSapText + text_end + +.GoToOtherSideText: + text_far _Museum1FScientist1GoToOtherSideText + text_end + +.TakePlentyOfTimeText: + text_far _Museum1FScientist1TakePlentyOfTimeText + text_end + +Museum1FPrintGamblerText:: + ld hl, .Text + call PrintText + ret + +.Text: + text_far _Museum1FGamblerText + text_end + +Museum1FPrintScientist2Text:: + CheckEvent EVENT_GOT_OLD_AMBER + jr nz, .got_item + ld hl, .TakeThisToAPokemonLabText + 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, .YouDontHaveSpaceText + jr .done +.got_item + ld hl, .GetTheOldAmberCheckText +.done + call PrintText + ret + +.TakeThisToAPokemonLabText: + text_far _Museum1FScientist2TakeThisToAPokemonLabText + text_end + +.ReceivedOldAmberText: + text_far _Museum1FScientist2ReceivedOldAmberText + sound_get_item_1 + text_end + +.GetTheOldAmberCheckText: + text_far _Museum1FScientist2GetTheOldAmberCheckText + text_end + +.YouDontHaveSpaceText: + text_far _Museum1FScientist2YouDontHaveSpaceText + text_end + +Museum1FPrintScientist3Text:: + ld hl, .Text + call PrintText + ret + +.Text: + text_far _Museum1FScientist3Text + text_end + +Museum1FPrintOldAmberText:: + ld hl, .Text + call PrintText + ret + +.Text: + text_far _Museum1FOldAmberText + text_end diff --git a/scripts/Museum2F.asm b/scripts/Museum2F.asm index 28bffa0c..6a0a15a4 100644 --- a/scripts/Museum2F.asm +++ b/scripts/Museum2F.asm @@ -1,5 +1,6 @@ Museum2F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Museum2F_TextPointers: def_text_pointers @@ -28,9 +29,40 @@ Museum2FBrunetteGirlText: text_end Museum2FHikerText: + text_asm + ld a, [wd471] + 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 _Museum2FHikerText text_end +Museum2FText_5c213: + text_far _Museum2FPikachuText1 + text_end + +Museum2FText_5c218: + text_far _Museum2FPikachuText2 + text_end + Museum2FSpaceShuttleSignText: text_far _Museum2FSpaceShuttleSignText text_end diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm index 9695b99e..c7197cb9 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: def_script_pointers @@ -20,12 +21,16 @@ OaksLab_ScriptPointers: dw_const OaksLabPlayerDontGoAwayScript, SCRIPT_OAKSLAB_PLAYER_DONT_GO_AWAY_SCRIPT dw_const OaksLabPlayerForcedToWalkBackScript, SCRIPT_OAKSLAB_PLAYER_FORCED_TO_WALK_BACK_SCRIPT dw_const OaksLabChoseStarterScript, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT - dw_const OaksLabRivalChoosesStarterScript, SCRIPT_OAKSLAB_RIVAL_CHOOSES_STARTER + dw_const OaksLabRivalTakesPokeballScript, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL + dw_const OaksLabPlayerWalksToOakScript, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK + dw_const OaksLabPlayerReceivesPikachuScript, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU dw_const OaksLabRivalChallengesPlayerScript, SCRIPT_OAKSLAB_RIVAL_CHALLENGES_PLAYER dw_const OaksLabRivalStartBattleScript, SCRIPT_OAKSLAB_RIVAL_START_BATTLE dw_const OaksLabRivalEndBattleScript, SCRIPT_OAKSLAB_RIVAL_END_BATTLE dw_const OaksLabRivalStartsExitScript, SCRIPT_OAKSLAB_RIVAL_STARTS_EXIT dw_const OaksLabPlayerWatchRivalExitScript, SCRIPT_OAKSLAB_PLAYER_WATCH_RIVAL_EXIT + dw_const OaksLabPikachuEscapesPokeballScript, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL + dw_const OaksLabPikachuDislikesPokeballsScript, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS dw_const OaksLabRivalArrivesAtOaksRequestScript, SCRIPT_OAKSLAB_RIVAL_ARRIVES_AT_OAKS_REQUEST dw_const OaksLabOakGivesPokedexScript, SCRIPT_OAKSLAB_OAK_GIVES_POKEDEX dw_const OaksLabRivalLeavesWithPokedexScript, SCRIPT_OAKSLAB_RIVAL_LEAVES_WITH_POKEDEX @@ -116,7 +121,6 @@ OaksLabFollowedOakScript: ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - call UpdateSprites ld hl, wStatusFlags7 res BIT_NO_MAP_MUSIC, [hl] call PlayDefaultMusic @@ -126,6 +130,7 @@ OaksLabFollowedOakScript: ret OaksLabOakChooseMonSpeechScript: + SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a ld a, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING @@ -136,6 +141,10 @@ OaksLabOakChooseMonSpeechScript: ldh [hTextID], a call DisplayTextID call Delay3 + ld a, $2 + ld [wSprite01StateData1MovementStatus], a + ld a, SPRITE_FACING_UP + ld [wSprite01StateData1FacingDirection], a ld a, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME ldh [hTextID], a call DisplayTextID @@ -143,7 +152,6 @@ OaksLabOakChooseMonSpeechScript: ld a, TEXT_OAKSLAB_OAK_BE_PATIENT ldh [hTextID], a call DisplayTextID - SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON xor a ld [wJoyIgnore], a @@ -162,7 +170,7 @@ OaksLabPlayerDontGoAwayScript: call SetSpriteFacingDirectionAndDelay ld a, OAKSLAB_RIVAL ldh [hSpriteIndex], a - xor a ; SPRITE_FACING_DOWN + xor a ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call UpdateSprites @@ -192,147 +200,101 @@ OaksLabPlayerForcedToWalkBackScript: ret OaksLabChoseStarterScript: - 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, OAKSLAB_RIVAL - 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, OAKSLAB_RIVAL ldh [hSpriteIndex], a + ld de, .RivalPushesPlayerAwayFromEeveeBall call MoveSprite - - ld a, SCRIPT_OAKSLAB_RIVAL_CHOOSES_STARTER + ld a, SCRIPT_OAKSLAB_RIVAL_TAKES_POKEBALL ld [wOaksLabCurScript], a ret -OaksLabRivalChoosesStarterScript: +.RivalPushesPlayerAwayFromEeveeBall + db $00 + db $07 + db $07 + db $07 + db $FF + +OaksLabRivalTakesPokeballScript: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a - ret nz - ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD - ld [wJoyIgnore], a - ld a, OAKSLAB_RIVAL - ldh [hSpriteIndex], a - ld a, SPRITE_FACING_UP - ldh [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, TEXT_OAKSLAB_RIVAL_ILL_TAKE_THIS_ONE - ldh [hTextID], a - call DisplayTextID - ld a, [wRivalStarterBallSpriteIndex] - cp OAKSLAB_CHARMANDER_POKE_BALL - jr nz, .not_charmander + jr nz, .asm_1c564 ld a, HS_STARTER_BALL_1 - jr .hideBallAndContinue -.not_charmander - cp OAKSLAB_SQUIRTLE_POKE_BALL - jr nz, .not_squirtle - ld a, HS_STARTER_BALL_2 - jr .hideBallAndContinue -.not_squirtle - ld a, HS_STARTER_BALL_3 -.hideBallAndContinue ld [wMissableObjectIndex], a predef HideObject - call Delay3 - ld a, [wRivalStarterTemp] - ld [wRivalStarter], a - ld [wCurPartySpecies], a - ld [wNamedObjectIndex], a - call GetMonName ld a, OAKSLAB_RIVAL ldh [hSpriteIndex], a ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay + ld a, RIVAL_STARTER_JOLTEON + ld [wRivalStarter], a + ld a, EEVEE + ld [wNamedObjectIndex], a + call GetMonName + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a ld a, TEXT_OAKSLAB_RIVAL_RECEIVED_MON ldh [hTextID], a call DisplayTextID - SetEvent EVENT_GOT_STARTER + + ld a, SCRIPT_OAKSLAB_PLAYER_WALKS_TO_OAK + 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, PAD_RIGHT + ld [wSimulatedJoypadStatesEnd], a + ld [wSimulatedJoypadStatesEnd + 1], a + call StartSimulatingJoypadStates + ret + +OaksLabPlayerWalksToOakScript: + ld a, [wYCoord] + cp 4 + jr z, .asm_1c599 + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, PAD_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, SCRIPT_OAKSLAB_PLAYER_RECEIVES_PIKACHU + ld [wOaksLabCurScript], a + ret + +OaksLabRLE_PlayerWalksToOak: + db PAD_UP, 2 + db PAD_LEFT, 3 + db PAD_DOWN, 1 + db PAD_LEFT, 1 + db $FF + +OaksLabPlayerReceivesPikachuScript: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + ld a, TEXT_OAKSLAB_PLAYER_RECEIVED_MON + ldh [hTextID], a + call DisplayTextID xor a ld [wJoyIgnore], a @@ -344,13 +306,13 @@ OaksLabRivalChallengesPlayerScript: ld a, [wYCoord] cp 6 ret nz + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, OAKSLAB_RIVAL 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 @@ -361,7 +323,7 @@ OaksLabRivalChallengesPlayerScript: ldh [hNPCPlayerRelativePosPerspective], a ld a, $1 swap a - ldh [hNPCSpriteOffset], a + ldh [hNPCPlayerYDistance], a predef CalcPositionOfPlayerRelativeToNPC ldh a, [hNPCPlayerYDistance] dec a @@ -371,7 +333,6 @@ OaksLabRivalChallengesPlayerScript: ld a, OAKSLAB_RIVAL ldh [hSpriteIndex], a call MoveSprite - ld a, SCRIPT_OAKSLAB_RIVAL_START_BATTLE ld [wOaksLabCurScript], a ret @@ -381,26 +342,13 @@ OaksLabRivalStartBattleScript: bit BIT_SCRIPTED_NPC_MOVEMENT, a ret nz - ; define which team rival uses, and fight it + ld a, OAKSLAB_RIVAL + ld [wSpriteIndex], a + call GetSpritePosition1 ld a, OPP_RIVAL1 ld [wCurOpponent], a - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .not_squirtle ld a, $1 - jr .done -.not_squirtle - cp STARTER3 - jr nz, .not_bulbasaur - ld a, $2 - jr .done -.not_bulbasaur - ld a, $3 -.done ld [wTrainerNo], a - ld a, OAKSLAB_RIVAL - ld [wSpriteIndex], a - call GetSpritePosition1 ld hl, OaksLabRivalIPickedTheWrongPokemonText ld de, OaksLabRivalAmIGreatOrWhatText call SaveEndBattleTextPointers @@ -416,7 +364,23 @@ OaksLabRivalStartBattleScript: ret OaksLabRivalEndBattleScript: - ld a, PAD_CTRL_PAD + ld a, PAD_BUTTONS | PAD_CTRL_PAD + 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, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a @@ -424,11 +388,10 @@ OaksLabRivalEndBattleScript: ld a, OAKSLAB_RIVAL ld [wSpriteIndex], a call SetSpritePosition1 - ld a, OAKSLAB_RIVAL - 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 @@ -465,25 +428,26 @@ OaksLabRivalStartsExitScript: .RivalExitMovement 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 OaksLabPlayerWatchRivalExitScript: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a jr nz, .checkRivalPosition + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + 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, SCRIPT_OAKSLAB_NOOP + call PlayDefaultMusic + ld a, SCRIPT_OAKSLAB_PIKACHU_ESCAPES_POKEBALL ld [wOaksLabCurScript], a - jr .done + ret ; make the player keep facing the rival as he walks away .checkRivalPosition ld a, [wNPCNumScriptedSteps] @@ -493,31 +457,53 @@ OaksLabPlayerWatchRivalExitScript: 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 + +OaksLabPikachuEscapesPokeballScript: +; Pikachu comes out + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $2 + ld [wPikachuSpawnState], a + farcall SchedulePikachuSpawnForAfterText + call EnablePikachuOverworldSpriteDrawing + ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1 + ldh [hTextID], a + call DisplayTextID + ld a, SCRIPT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS + ld [wOaksLabCurScript], a + ret + +OaksLabPikachuDislikesPokeballsScript: + ld a, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2 + ldh [hTextID], a + call DisplayTextID + xor a + ld [wJoyIgnore], a + ld a, SCRIPT_OAKSLAB_NOOP + ld [wOaksLabCurScript], a ret OaksLabRivalArrivesAtOaksRequestScript: 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, TEXT_OAKSLAB_RIVAL_GRAMPS ldh [hTextID], a call DisplayTextID + callfar OaksLabPikachuMovementScript call OaksLabCalcRivalMovementScript ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a @@ -549,7 +535,8 @@ OaksLabRivalFaceUpOakFaceDownScript: ldh [hSpriteIndex], a xor a ; SPRITE_FACING_DOWN ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + call SetSpriteFacingDirectionAndDelay + ret OaksLabOakGivesPokedexScript: ld a, [wStatusFlags5] @@ -560,7 +547,7 @@ OaksLabOakGivesPokedexScript: ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a call OaksLabRivalFaceUpOakFaceDownScript - ld a, TEXT_OAKSLAB_RIVAL_WHAT_DID_YOU_CALL_ME_FOR + ld a, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER ldh [hTextID], a call DisplayTextID call DelayFrame @@ -598,11 +585,13 @@ OaksLabOakGivesPokedexScript: ldh [hTextID], a call DisplayTextID SetEvent EVENT_GOT_POKEDEX + ld a, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX + ld [wViridianCityCurScript], a SetEvent EVENT_OAK_GOT_PARCEL ld a, HS_LYING_OLD_MAN ld [wMissableObjectIndex], a predef HideObject - ld a, HS_OLD_MAN + ld a, HS_OLD_MAN_2 ld [wMissableObjectIndex], a predef ShowObject ld a, [wSavedNPCMovementDirections2Index] @@ -612,9 +601,7 @@ OaksLabOakGivesPokedexScript: 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, OAKSLAB_RIVAL ldh [hSpriteIndex], a @@ -639,8 +626,6 @@ OaksLabRivalLeavesWithPokedexScript: ld a, HS_ROUTE_22_RIVAL_1 ld [wMissableObjectIndex], a predef ShowObject - ld a, SCRIPT_PALLETTOWN_DAISY - ld [wPalletTownCurScript], a xor a ld [wJoyIgnore], a @@ -669,7 +654,8 @@ OaksLabScript_RemoveParcel: ld [wWhichPokemon], a ld a, 1 ld [wItemQuantity], a - jp RemoveItemFromInventory + call RemoveItemFromInventory + ret OaksLabCalcRivalMovementScript: ld a, $7c @@ -722,39 +708,37 @@ OaksLabLoadTextPointers2Script: OaksLab_TextPointers: def_text_pointers - dw_const OaksLabRivalText, TEXT_OAKSLAB_RIVAL - dw_const OaksLabCharmanderPokeBallText, TEXT_OAKSLAB_CHARMANDER_POKE_BALL - dw_const OaksLabSquirtlePokeBallText, TEXT_OAKSLAB_SQUIRTLE_POKE_BALL - dw_const OaksLabBulbasaurPokeBallText, TEXT_OAKSLAB_BULBASAUR_POKE_BALL - dw_const OaksLabOak1Text, TEXT_OAKSLAB_OAK1 - dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX1 - dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX2 - dw_const OaksLabOak2Text, TEXT_OAKSLAB_OAK2 - dw_const OaksLabGirlText, TEXT_OAKSLAB_GIRL - dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST1 - dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST2 - dw_const OaksLabOakDontGoAwayYetText, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET - dw_const OaksLabRivalIllTakeThisOneText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_THIS_ONE - dw_const OaksLabRivalReceivedMonText, TEXT_OAKSLAB_RIVAL_RECEIVED_MON - dw_const OaksLabRivalIllTakeYouOnText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON - dw_const OaksLabRivalSmellYouLaterText, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER - dw_const OaksLabRivalFedUpWithWaitingText, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING - dw_const OaksLabOakChooseMonText, TEXT_OAKSLAB_OAK_CHOOSE_MON - dw_const OaksLabRivalWhatAboutMeText, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME - dw_const OaksLabOakBePatientText, TEXT_OAKSLAB_OAK_BE_PATIENT - dw_const OaksLabRivalGrampsText, TEXT_OAKSLAB_RIVAL_GRAMPS - dw_const OaksLabRivalWhatDidYouCallMeForText, TEXT_OAKSLAB_RIVAL_WHAT_DID_YOU_CALL_ME_FOR - dw_const OaksLabOakIHaveARequestText, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST - dw_const OaksLabOakMyInventionPokedexText, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX - dw_const OaksLabOakGotPokedexText, TEXT_OAKSLAB_OAK_GOT_POKEDEX - dw_const OaksLabOakThatWasMyDreamText, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM - dw_const OaksLabRivalLeaveItAllToMeText, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME + dw_const OaksLabRivalText, TEXT_OAKSLAB_RIVAL + dw_const OaksLabEeveePokeBallText, TEXT_OAKSLAB_EEVEE_POKE_BALL + dw_const OaksLabOak1Text, TEXT_OAKSLAB_OAK1 + dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX1 + dw_const OaksLabPokedexText, TEXT_OAKSLAB_POKEDEX2 + dw_const OaksLabOak2Text, TEXT_OAKSLAB_OAK2 + dw_const OaksLabGirlText, TEXT_OAKSLAB_GIRL + dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST1 + dw_const OaksLabScientistText, TEXT_OAKSLAB_SCIENTIST2 + dw_const OaksLabOakDontGoAwayYetText, TEXT_OAKSLAB_OAK_DONT_GO_AWAY_YET + dw_const OaksLabRivalIllTakeYouOnText, TEXT_OAKSLAB_RIVAL_ILL_TAKE_YOU_ON + dw_const OaksLabRivalSmellYouLaterText, TEXT_OAKSLAB_RIVAL_SMELL_YOU_LATER + dw_const OaksLabRivalFedUpWithWaitingText, TEXT_OAKSLAB_RIVAL_FED_UP_WITH_WAITING + dw_const OaksLabOakChooseMonText, TEXT_OAKSLAB_OAK_CHOOSE_MON + dw_const OaksLabRivalWhatAboutMeText, TEXT_OAKSLAB_RIVAL_WHAT_ABOUT_ME + dw_const OaksLabOakBePatientText, TEXT_OAKSLAB_OAK_BE_PATIENT + dw_const OaksLabRivalReceivedMonText, TEXT_OAKSLAB_RIVAL_RECEIVED_MON + dw_const OaksLabPlayerReceivedMonText, TEXT_OAKSLAB_PLAYER_RECEIVED_MON + dw_const OaksLabRivalGrampsText, TEXT_OAKSLAB_RIVAL_GRAMPS + dw_const OaksLabRivalMyPokemonHasGrownStrongerText, TEXT_OAKSLAB_RIVAL_MY_POKEMON_HAS_GROWN_STRONGER + dw_const OaksLabOakIHaveARequestText, TEXT_OAKSLAB_OAK_I_HAVE_A_REQUEST + dw_const OaksLabOakMyInventionPokedexText, TEXT_OAKSLAB_OAK_MY_INVENTION_POKEDEX + dw_const OaksLabOakGotPokedexText, TEXT_OAKSLAB_OAK_GOT_POKEDEX + dw_const OaksLabOakThatWasMyDreamText, TEXT_OAKSLAB_OAK_THAT_WAS_MY_DREAM + dw_const OaksLabRivalLeaveItAllToMeText, TEXT_OAKSLAB_RIVAL_LEAVE_IT_ALL_TO_ME + dw_const OaksLabPikachuDislikesPokeballsText1, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS1 + dw_const OaksLabPikachuDislikesPokeballsText2, TEXT_OAKSLAB_PIKACHU_DISLIKES_POKEBALLS2 OaksLab_TextPointers2: dw OaksLabRivalText - dw OaksLabCharmanderPokeBallText - dw OaksLabSquirtlePokeBallText - dw OaksLabBulbasaurPokeBallText + dw OaksLabEeveePokeBallText dw OaksLabOak1Text dw OaksLabPokedexText dw OaksLabPokedexText @@ -773,7 +757,7 @@ OaksLabRivalText: .beforeChooseMon CheckEventReuseA EVENT_GOT_STARTER jr nz, .afterChooseMon - ld hl, .GoAheadAndChooseText + ld hl, .IllGetABetterPokemonThanYou call PrintText jr .done .afterChooseMon @@ -786,182 +770,40 @@ OaksLabRivalText: text_far _OaksLabRivalGrampsIsntAroundText text_end -.GoAheadAndChooseText: - text_far _OaksLabRivalGoAheadAndChooseText +.IllGetABetterPokemonThanYou: + text_far _OaksLabRivalIllGetABetterPokemonThanYou text_end .MyPokemonLooksStrongerText: text_far _OaksLabRivalMyPokemonLooksStrongerText text_end -OaksLabCharmanderPokeBallText: - text_asm - ld a, STARTER2 - ld [wRivalStarterTemp], a - ld a, OAKSLAB_SQUIRTLE_POKE_BALL - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER1 - ld b, OAKSLAB_CHARMANDER_POKE_BALL - jr OaksLabSelectedPokeBallScript - -OaksLabSquirtlePokeBallText: +OaksLabEeveePokeBallText: text_asm - ld a, STARTER3 - ld [wRivalStarterTemp], a - ld a, OAKSLAB_BULBASAUR_POKE_BALL - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER2 - ld b, OAKSLAB_SQUIRTLE_POKE_BALL - jr OaksLabSelectedPokeBallScript - -OaksLabBulbasaurPokeBallText: - text_asm - ld a, STARTER1 - ld [wRivalStarterTemp], a - ld a, OAKSLAB_CHARMANDER_POKE_BALL - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER3 - ld b, OAKSLAB_BULBASAUR_POKE_BALL - -OaksLabSelectedPokeBallScript: - ld [wCurPartySpecies], a - ld [wPokedexNum], a - ld a, b - ld [wSpriteIndex], a - CheckEvent EVENT_GOT_STARTER - jp nz, OaksLabLastMonScript - CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON - jr nz, OaksLabShowPokeBallPokemonScript - ld hl, OaksLabThoseArePokeBallsText - call PrintText - jp TextScriptEnd - -OaksLabThoseArePokeBallsText: - text_far _OaksLabThoseArePokeBallsText - text_end - -OaksLabShowPokeBallPokemonScript: - ld a, OAKSLAB_OAK1 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN - ld a, OAKSLAB_RIVAL - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_RIGHT - ld hl, wStatusFlags5 - set BIT_NO_TEXT_DELAY, [hl] - predef StarterDex - ld hl, wStatusFlags5 - res BIT_NO_TEXT_DELAY, [hl] - call ReloadMapData - ld c, 10 - call DelayFrames - ld a, [wSpriteIndex] - cp OAKSLAB_CHARMANDER_POKE_BALL - jr z, OaksLabYouWantCharmanderText - cp OAKSLAB_SQUIRTLE_POKE_BALL - jr z, OaksLabYouWantSquirtleText - jr OaksLabYouWantBulbasaurText - -OaksLabYouWantCharmanderText: - ld hl, .Text - jr OaksLabMonChoiceMenu -.Text: - text_far _OaksLabYouWantCharmanderText - text_end - -OaksLabYouWantSquirtleText: - ld hl, .Text - jr OaksLabMonChoiceMenu -.Text: - text_far _OaksLabYouWantSquirtleText - text_end - -OaksLabYouWantBulbasaurText: - ld hl, .Text - jr OaksLabMonChoiceMenu -.Text: - text_far _OaksLabYouWantBulbasaurText - 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, [wCurPartySpecies] - ld [wPlayerStarter], a - ld [wNamedObjectIndex], a - call GetMonName - ld a, [wSpriteIndex] - cp OAKSLAB_CHARMANDER_POKE_BALL - jr nz, .not_charmander - ld a, HS_STARTER_BALL_1 - jr .continue -.not_charmander - cp OAKSLAB_SQUIRTLE_POKE_BALL - jr nz, .not_squirtle - ld a, HS_STARTER_BALL_2 - jr .continue -.not_squirtle - ld a, HS_STARTER_BALL_3 -.continue - ld [wMissableObjectIndex], a - predef HideObject - ld a, $1 + CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON + jr nz, OaksLabRivalExclamationScript + ld a, $0 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, OaksLabMonEnergeticText - call PrintText - ld hl, OaksLabReceivedMonText + ld hl, .Text call PrintText - xor a ; PLAYER_PARTY_DATA - ld [wMonDataLocation], a - ld a, 5 - ld [wCurEnemyLevel], a - ld a, [wCurPartySpecies] - ld [wPokedexNum], a - call AddPartyMon - ld hl, wStatusFlags4 - set BIT_GOT_STARTER, [hl] - ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD - ld [wJoyIgnore], a - ld a, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT - ld [wOaksLabCurScript], a -OaksLabMonChoiceEnd: jp TextScriptEnd -OaksLabMonEnergeticText: - text_far _OaksLabMonEnergeticText - text_end - -OaksLabReceivedMonText: - text_far _OaksLabReceivedMonText - sound_get_key_item +.Text: + text_far _OaksLabThatsAPokeball text_end -OaksLabLastMonScript: - ld a, OAKSLAB_OAK1 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN - ld hl, OaksLabLastMonText - call PrintText +OaksLabRivalExclamationScript: + ld a, OAKSLAB_RIVAL + ld [wEmotionBubbleSpriteIndex], a + xor a ; EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld a, SCRIPT_OAKSLAB_CHOSE_STARTER_SCRIPT + ld [wOaksLabCurScript], a jp TextScriptEnd -OaksLabLastMonText: - text_far _OaksLabLastMonText - text_end - OaksLabOak1Text: text_asm CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS @@ -972,8 +814,6 @@ OaksLabOak1Text: ld a, [wNumSetBits] cp 2 jr c, .check_for_poke_balls - CheckEvent EVENT_GOT_POKEDEX - jr z, .check_for_poke_balls .already_got_poke_balls ld hl, .HowIsYourPokedexComingText call PrintText @@ -985,6 +825,12 @@ OaksLabOak1Text: ld b, POKE_BALL call IsItemInBag jr nz, .come_see_me_sometimes + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [wNumSetBits] + cp 2 + jr nc, .come_see_me_sometimes CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE jr nz, .give_poke_balls CheckEvent EVENT_GOT_POKEDEX @@ -994,7 +840,7 @@ OaksLabOak1Text: ld a, [wStatusFlags4] bit BIT_GOT_STARTER, a jr nz, .already_got_pokemon - ld hl, .WhichPokemonDoYouWantText + ld hl, .GoAheadItsYours call PrintText jr .done .already_got_pokemon @@ -1005,7 +851,7 @@ OaksLabOak1Text: ld b, OAKS_PARCEL call IsItemInBag jr nz, .got_parcel - ld hl, .RaiseYourYoungPokemonText + ld hl, .YouShouldTalkToIt call PrintText jr .done .got_parcel @@ -1033,16 +879,16 @@ OaksLabOak1Text: .done jp TextScriptEnd -.WhichPokemonDoYouWantText: - text_far _OaksLabOak1WhichPokemonDoYouWantText +.GoAheadItsYours: + text_far _OaksLabOak1GoAheadItsYours text_end .YourPokemonCanFightText: text_far _OaksLabOak1YourPokemonCanFightText text_end -.RaiseYourYoungPokemonText: - text_far _OaksLabOak1RaiseYourYoungPokemonText +.YouShouldTalkToIt: + text_far _OaksLabOak1YouShouldTalkToIt text_end .DeliverParcelText: @@ -1133,35 +979,86 @@ OaksLabOakBePatientText: text_far _OaksLabOakBePatientText text_end -OaksLabOakDontGoAwayYetText: +OaksLabRivalReceivedMonText: text_asm - ld hl, .Text + 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 -.Text: - text_far _OaksLabOakDontGoAwayYetText +OaksLabRivalTakesText1: + text_far _OaksLabRivalTakesText1 + text_end + +OaksLabRivalTakesText2: + text_far _OaksLabRivalTakesText2 + sound_get_key_item + text_end + +OaksLabRivalTakesText3: + text_far _OaksLabRivalTakesText3 text_end -OaksLabRivalIllTakeThisOneText: +OaksLabRivalTakesText4: + text_far _OaksLabRivalTakesText4 + text_end + +OaksLabRivalTakesText5: + text_far _OaksLabRivalTakesText5 + text_end + +OaksLabPlayerReceivedMonText: text_asm - ld hl, .Text + ld a, STARTER_PIKACHU + ld [wPlayerStarter], a + ld [wNamedObjectIndex], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OaksLabOakGivesText + call PrintText + ld hl, OaksLabReceivedText call PrintText + xor a + ld [wMonDataLocation], a + ld a, 5 + ld [wCurEnemyLevel], a + ld a, STARTER_PIKACHU + ld [wPokedexNum], a + ld [wCurPartySpecies], a + call AddPartyMon + ld a, LIGHT_BALL_GSC + ld [wPartyMon1CatchRate], a + call DisablePikachuOverworldSpriteDrawing + SetEvent EVENT_GOT_STARTER + ld hl, wStatusFlags4 + set BIT_GOT_STARTER, [hl] jp TextScriptEnd -.Text: - text_far _OaksLabRivalIllTakeThisOneText +OaksLabOakGivesText: + text_far _OaksLabOakGivesText text_end -OaksLabRivalReceivedMonText: +OaksLabReceivedText: + text_far _OaksLabReceivedText + sound_get_key_item + text_end + +OaksLabOakDontGoAwayYetText: text_asm ld hl, .Text call PrintText jp TextScriptEnd .Text: - text_far _OaksLabRivalReceivedMonText - sound_get_key_item + text_far _OaksLabOakDontGoAwayYetText text_end OaksLabRivalIllTakeYouOnText: @@ -1192,12 +1089,34 @@ OaksLabRivalSmellYouLaterText: text_far _OaksLabRivalSmellYouLaterText text_end +OaksLabPikachuDislikesPokeballsText1: + text_asm + ldpikacry e, PikachuCry2 + callfar PlayPikachuSoundClip + ld hl, .Text + call PrintText + jp TextScriptEnd + +.Text: + text_far _OaksLabPikachuDislikesPokeballsText1 + text_end + +OaksLabPikachuDislikesPokeballsText2: + text_asm + ld hl, .Text + call PrintText + jp TextScriptEnd + +.Text: + text_far _OaksLabPikachuDislikesPokeballsText2 + text_end + OaksLabRivalGrampsText: text_far _OaksLabRivalGrampsText text_end -OaksLabRivalWhatDidYouCallMeForText: - text_far _OaksLabRivalWhatDidYouCallMeForText +OaksLabRivalMyPokemonHasGrownStrongerText: + text_far _OaksLabRivalMyPokemonHasGrownStrongerText text_end OaksLabOakIHaveARequestText: diff --git a/scripts/OaksLab_2.asm b/scripts/OaksLab_2.asm new file mode 100644 index 00000000..f642aa7b --- /dev/null +++ b/scripts/OaksLab_2.asm @@ -0,0 +1,28 @@ +OaksLabPikachuMovementScript:: + ld a, [wYCoord] + cp 3 + jr z, .movement2 + ld b, SPRITE_FACING_DOWN + ld hl, OaksLabPikachuMovementData1 + call TryApplyPikachuMovementData + ret + +.movement2 + ld b, SPRITE_FACING_LEFT + ld hl, OaksLabPikachuMovementData2 + call TryApplyPikachuMovementData + ret + +OaksLabPikachuMovementData1: + db $00 + db $1f + db $1e + db $38 + db $3f + +OaksLabPikachuMovementData2: + db $00 + db $1d + db $20 + db $36 + db $3f diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm index 57c231fa..42e3ea3e 100644 --- a/scripts/PalletTown.asm +++ b/scripts/PalletTown.asm @@ -13,6 +13,9 @@ PalletTown_ScriptPointers: dw_const PalletTownDefaultScript, SCRIPT_PALLETTOWN_DEFAULT dw_const PalletTownOakHeyWaitScript, SCRIPT_PALLETTOWN_OAK_HEY_WAIT dw_const PalletTownOakWalksToPlayerScript, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER + dw_const PalletTownOakGreetsPlayerScript, SCRIPT_PALLETTOWN_OAK_GREETS_PLAYER + dw_const PalletTownPikachuBattleScript, SCRIPT_PALLETTOWN_PIKACHU_BATTLE + dw_const PalletTownAfterPikachuBattleScript, SCRIPT_PALLETTOWN_AFTER_PIKACHU_BATTLE dw_const PalletTownOakNotSafeComeWithMeScript, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME dw_const PalletTownPlayerFollowsOakScript, SCRIPT_PALLETTOWN_PLAYER_FOLLOWS_OAK dw_const PalletTownDaisyScript, SCRIPT_PALLETTOWN_DAISY @@ -22,20 +25,25 @@ PalletTownDefaultScript: 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, PAD_BUTTONS | PAD_CTRL_PAD + 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, PAD_SELECT | PAD_START | PAD_CTRL_PAD - ld [wJoyIgnore], a SetEvent EVENT_OAK_APPEARED_IN_PALLET ; trigger the next script @@ -44,6 +52,8 @@ PalletTownDefaultScript: ret PalletTownOakHeyWaitScript: + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a xor a ld [wOakWalkedToPlayer], a ld a, TEXT_PALLETTOWN_OAK @@ -51,9 +61,18 @@ PalletTownOakHeyWaitScript: call DisplayTextID ld a, PAD_BUTTONS | PAD_CTRL_PAD 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 + ld a, $2 + ld [wSprite01StateData1MovementStatus], a + ld a, SPRITE_FACING_UP + ld [wSprite01StateData1FacingDirection], a ; trigger the next script ld a, SCRIPT_PALLETTOWN_OAK_WALKS_TO_PLAYER @@ -61,13 +80,8 @@ PalletTownOakHeyWaitScript: ret PalletTownOakWalksToPlayerScript: - ld a, PALLETTOWN_OAK - 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 @@ -82,30 +96,86 @@ PalletTownOakWalksToPlayerScript: ld a, PALLETTOWN_OAK ldh [hSpriteIndex], a call MoveSprite - ld a, PAD_BUTTONS | PAD_CTRL_PAD - ld [wJoyIgnore], a ; trigger the next script - ld a, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME + ld a, SCRIPT_PALLETTOWN_OAK_GREETS_PLAYER ld [wPalletTownCurScript], a ret -PalletTownOakNotSafeComeWithMeScript: +PalletTownOakGreetsPlayerScript: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpritePlayerStateData1FacingDirection], a - ld a, TRUE + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, 1 ld [wOakWalkedToPlayer], a + ld a, $2 + ld [wSprite01StateData1MovementStatus], a + ld a, SPRITE_FACING_UP + ld [wSprite01StateData1FacingDirection], a + ld a, TEXT_PALLETTOWN_OAK + ldh [hTextID], a + call DisplayTextID + ; oak faces the horizontally adjacent patch of grass to face pikachu + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + 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, SCRIPT_PALLETTOWN_PIKACHU_BATTLE + ld [wPalletTownCurScript], a + ret + +PalletTownPikachuBattleScript: + ; start the pikachu battle ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD 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 [wCurEnemyLevel], a + + ; trigger the next script + ld a, SCRIPT_PALLETTOWN_AFTER_PIKACHU_BATTLE + ld [wPalletTownCurScript], a + ret + +PalletTownAfterPikachuBattleScript: + ld a, 2 + ld [wOakWalkedToPlayer], a ld a, TEXT_PALLETTOWN_OAK ldh [hTextID], a call DisplayTextID -; set up movement script that causes the player to follow Oak to his lab + ld a, $2 + ld [wSprite01StateData1MovementStatus], a + ld a, SPRITE_FACING_UP + ld [wSprite01StateData1FacingDirection], a + ld a, TEXT_PALLETTOWN_OAK_COME_WITH_ME + ldh [hTextID], a + call DisplayTextID ld a, PAD_BUTTONS | PAD_CTRL_PAD ld [wJoyIgnore], a + + ; trigger the next script + ld a, SCRIPT_PALLETTOWN_OAK_NOT_SAFE_COME_WITH_ME + ld [wPalletTownCurScript], a + ret + +PalletTownOakNotSafeComeWithMeScript: + xor a + ld [wSpritePlayerStateData1FacingDirection], a ld a, PALLETTOWN_OAK ld [wSpriteIndex], a xor a @@ -158,6 +228,7 @@ PalletTown_TextPointers: dw_const PalletTownSignText, TEXT_PALLETTOWN_SIGN dw_const PalletTownPlayersHouseSignText, TEXT_PALLETTOWN_PLAYERSHOUSE_SIGN dw_const PalletTownRivalsHouseSignText, TEXT_PALLETTOWN_RIVALSHOUSE_SIGN + dw_const PalletTownOakComeWithMe, TEXT_PALLETTOWN_OAK_COME_WITH_ME PalletTownOakText: text_asm @@ -169,7 +240,12 @@ PalletTownOakText: ld hl, .HeyWaitDontGoOutText jr .done .next - ld hl, .ItsUnsafeText + dec a + jr nz, .whew + ld hl, .ThatWasCloseText + jr .done +.whew + ld hl, .WhewText .done call PrintText jp TextScriptEnd @@ -179,16 +255,25 @@ PalletTownOakText: 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 -.ItsUnsafeText: - text_far _PalletTownOakItsUnsafeText +.ThatWasCloseText: + text_far _PalletTownOakThatWasCloseText + text_end + +.WhewText: + text_far _PalletTownOakWhewText + text_end + +PalletTownOakComeWithMe: + text_far _PalletTownOakComeWithMe text_end PalletTownGirlText: @@ -204,8 +289,23 @@ PalletTownOaksLabSignText: text_end PalletTownSignText: +IF DEF(_DEBUG) + text_asm + ld a, 239 + inc a + ld [wWhichPewterGuy], a + ld hl, .Text + call PrintText + jp TextScriptEnd + +.Text: + text_decimal wWhichPewterGuy, 1, 3 + text "bit" + done +ELSE text_far _PalletTownSignText text_end +ENDC PalletTownPlayersHouseSignText: text_far _PalletTownPlayersHouseSignText diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm index 9693b88f..ffe546ca 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: def_script_pointers @@ -31,7 +34,7 @@ ENDC ld hl, PewterCityPlayerLeavingEastCoords call ArePlayerCoordsInArray ret nc - ld a, PAD_CTRL_PAD + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a ld a, TEXT_PEWTERCITY_YOUNGSTER ldh [hTextID], a @@ -53,9 +56,9 @@ PewterCitySuperNerd1ShowsPlayerMuseumScript: 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, wMiscFlags set BIT_NO_SPRITE_UPDATES, [hl] @@ -120,10 +123,7 @@ PewterCityYoungsterShowsPlayerGymScript: 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, wMiscFlags set BIT_NO_SPRITE_UPDATES, [hl] diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm index 0f4b9ebe..4cb13fa4 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@" @@ -155,7 +156,7 @@ PewterGymTM34NoRoomText: PewterGymBrockReceivedBoulderBadgeText: text_far _PewterGymBrockReceivedBoulderBadgeText - sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded + sound_get_item_1 text_far _PewterGymBrockBoulderBadgeInfoText ; Text to tell that the flash technique can be used text_end @@ -188,6 +189,9 @@ PewterGymGuideText: ld a, [wCurrentMenuItem] and a jr nz, .PewterGymGuideBeginAdviceText + ld a, [wd471] + bit 7, a + jp nz, .asm_5c3fa ld hl, PewterGymGuideBeginAdviceText call PrintText jr .PewterGymGuideAdviceText @@ -203,6 +207,10 @@ PewterGymGuideText: call PrintText .done jp TextScriptEnd +.asm_5c3fa + ld hl, PewterGymText_5c41c + call PrintText + jp TextScriptEnd PewterGymGuidePreAdviceText: text_far _PewterGymGuidePreAdviceText @@ -223,3 +231,7 @@ PewterGymGuideFreeServiceText: PewterGymGuidePostBattleText: text_far _PewterGymGuidePostBattleText text_end + +PewterGymText_5c41c: + text_far _PewterGymGuyText + text_end diff --git a/scripts/PewterNidoranHouse.asm b/scripts/PewterNidoranHouse.asm index bd2de197..6c5820ab 100644 --- a/scripts/PewterNidoranHouse.asm +++ b/scripts/PewterNidoranHouse.asm @@ -1,5 +1,6 @@ PewterNidoranHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterNidoranHouse_TextPointers: def_text_pointers diff --git a/scripts/PewterPokecenter.asm b/scripts/PewterPokecenter.asm index e5bda65e..ae5c6349 100644 --- a/scripts/PewterPokecenter.asm +++ b/scripts/PewterPokecenter.asm @@ -1,6 +1,9 @@ PewterPokecenter_Script: + ld hl, wd492 + set 7, [hl] call Serial_TryEstablishingExternallyClockedConnection - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterPokecenter_TextPointers: def_text_pointers @@ -8,6 +11,8 @@ PewterPokecenter_TextPointers: dw_const PewterPokecenterGentlemanText, TEXT_PEWTERPOKECENTER_GENTLEMAN dw_const PewterPokecenterJigglypuffText, TEXT_PEWTERPOKECENTER_JIGGLYPUFF dw_const PewterPokecenterLinkReceptionistText, TEXT_PEWTERPOKECENTER_LINK_RECEPTIONIST + dw_const PewterPokecenterCooltrainerFText, TEXT_PEWTERPOKECENTER_COOLTRAINER_F + dw_const PewterPokecenterChanseyText, TEXT_PEWTERPOKECENTER_CHANSEY PewterPokecenterNurseText: script_pokecenter_nurse @@ -18,70 +23,18 @@ PewterPokecenterGentlemanText: PewterPokecenterJigglypuffText: text_asm - ld a, TRUE - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, .Text - call PrintText - - ld a, SFX_STOP_ALL_MUSIC - call PlaySound - ld c, 32 - call DelayFrames - - ld hl, .FacingDirections - ld de, wJigglypuffFacingDirections - ld bc, .FacingDirectionsEnd - .FacingDirections - 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, .FacingDirectionsEnd - .FacingDirections - 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 + CHAN2] - or b - jr nz, .spinMovementLoop - - ld c, 48 - call DelayFrames - call PlayDefaultMusic + farcall PewterJigglypuff jp TextScriptEnd -.Text: - text_far _PewterPokecenterJigglypuffText - text_end - -.FacingDirections: - db $30 | SPRITE_FACING_DOWN - db $30 | SPRITE_FACING_LEFT - db $30 | SPRITE_FACING_UP - db $30 | SPRITE_FACING_RIGHT -.FacingDirectionsEnd: - PewterPokecenterLinkReceptionistText: script_cable_club_receptionist + +PewterPokecenterCooltrainerFText: + text_asm + farcall PewterPokecenterPrintCooltrainerFText + jp TextScriptEnd + +PewterPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/PewterPokecenter_2.asm b/scripts/PewterPokecenter_2.asm new file mode 100644 index 00000000..2aeb23f7 --- /dev/null +++ b/scripts/PewterPokecenter_2.asm @@ -0,0 +1,79 @@ +PewterPokecenterPrintCooltrainerFText:: + ld hl, .text + call PrintText + ret + +.text + text_far _PewterPokecenterText3 + text_end + +PewterJigglypuff:: + ld a, TRUE + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .Text + call PrintText + + call StopAllMusic + ld c, 32 + call DelayFrames + + ld hl, .FacingDirections + ld de, wJigglypuffFacingDirections + ld bc, .FacingDirectionsEnd - .FacingDirections + 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, .FacingDirectionsEnd - .FacingDirections + 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 + CHAN2] + or b + jr nz, .spinMovementLoop + + ld c, 48 + call DelayFrames + call PlayDefaultMusic + ld a, [wd471] + bit 7, a + ret z + callfar CheckPikachuStatusCondition + ret c + call DisablePikachuFollowingPlayer + ret + +.Text: + text_far _PewterPokecenterJigglypuffText + text_end + +.FacingDirections: + db $40 | SPRITE_FACING_DOWN + db $40 | SPRITE_FACING_LEFT + db $40 | SPRITE_FACING_UP + db $40 | SPRITE_FACING_RIGHT +.FacingDirectionsEnd: diff --git a/scripts/PokemonFanClub.asm b/scripts/PokemonFanClub.asm index e14eb7ed..4c8acd39 100644 --- a/scripts/PokemonFanClub.asm +++ b/scripts/PokemonFanClub.asm @@ -1,84 +1,162 @@ PokemonFanClub_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ld hl, PokemonFanClub_ScriptPointers + ld a, [wPokemonFanClubCurScript] + call CallFunctionInTable + ret -PokemonFanClub_CheckBikeInBag: -; 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: + def_script_pointers + dw_const PokemonFanClubScript0, SCRIPT_POKEMONFANCLUB_SCRIPT0 + dw_const PokemonFanClubScript1, SCRIPT_POKEMONFANCLUB_SCRIPT1 + +PokemonFanClubScript0: + ld hl, wd492 + bit 7, [hl] + call z, PokemonFanClubScript_59a44 + ld hl, wd492 + set 7, [hl] + ret + +PokemonFanClubScript1: + ld hl, wd492 + bit 7, [hl] + call z, PokemonFanClubScript_59a39 + ld hl, wd492 + set 7, [hl] + ret + +PokemonFanClubScript_59a39: + call Random + ldh a, [hRandomAdd] + cp 25 + call c, PokemonFanClubScript_59a44 + ret + +PokemonFanClubScript_59a44: + ld a, [wd471] + bit 7, a + ret z + callfar CheckPikachuStatusCondition + ret c + ld a, SCRIPT_POKEMONFANCLUB_SCRIPT1 + ld [wPokemonFanClubCurScript], 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, PokemonFanClubPikachuMovementData + call ApplyPikachuMovementData + ld a, $2 ; Seel + ld [wSprite03StateData1MovementStatus], a + xor a ; SPRITE_FACING_DOWN + ld [wSprite03StateData1FacingDirection], a + callfar InitializePikachuTextID + call DisablePikachuFollowingPlayer + ret + +PokemonFanClubPikachuMovementData: + db $00 + db $26 + db $20 + db $20 + db $20 + db $1e + db $3f PokemonFanClub_TextPointers: def_text_pointers - dw_const PokemonFanClubPikachuFanText, TEXT_POKEMONFANCLUB_PIKACHU_FAN + dw_const PokemonFanClubClefairyFanText, TEXT_POKEMONFANCLUB_CLEFAIRY_FAN dw_const PokemonFanClubSeelFanText, TEXT_POKEMONFANCLUB_SEEL_FAN - dw_const PokemonFanClubPikachuText, TEXT_POKEMONFANCLUB_PIKACHU + dw_const PokemonFanClubClefairyText, TEXT_POKEMONFANCLUB_CLEFAIRY dw_const PokemonFanClubSeelText, TEXT_POKEMONFANCLUB_SEEL dw_const PokemonFanClubChairmanText, TEXT_POKEMONFANCLUB_CHAIRMAN dw_const PokemonFanClubReceptionistText, TEXT_POKEMONFANCLUB_RECEPTIONIST - dw_const PokemonFanClubSign1Text, TEXT_POKEMONFANCLUB_SIGN_1 - dw_const PokemonFanClubSign2Text, TEXT_POKEMONFANCLUB_SIGN_2 -PokemonFanClubPikachuFanText: +PokemonFanClubClefairyFanText: text_asm - CheckEvent EVENT_PIKACHU_FAN_BOAST + CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER + jr z, .asm_59aaf + ld hl, .yellowtext + call PrintText + jr .done + +.asm_59aaf + CheckEventReuseHL EVENT_PIKACHU_FAN_BOAST jr nz, .mineisbetter - ld hl, .NormalText + SetEventReuseHL EVENT_SEEL_FAN_BOAST + ld hl, .normaltext call PrintText - SetEvent EVENT_SEEL_FAN_BOAST jr .done .mineisbetter - ld hl, .BetterText + ResetEventReuseHL EVENT_PIKACHU_FAN_BOAST + ld hl, .bettertext call PrintText - ResetEvent EVENT_PIKACHU_FAN_BOAST .done jp TextScriptEnd -.NormalText: - text_far _PokemonFanClubPikachuFanNormalText +.normaltext + text_far _PokemonFanClubClefairyFanNormalText + text_end + +.bettertext + text_far _PokemonFanClubClefairyFanBetterText text_end -.BetterText: - text_far _PokemonFanClubPikachuFanBetterText +.yellowtext + text_far _PokemonFanClubClefairyFanText text_end PokemonFanClubSeelFanText: text_asm - CheckEvent EVENT_SEEL_FAN_BOAST + CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER + jr z, .asm_59ae7 + ld hl, .yellowtext + call PrintText + jr .done + +.asm_59ae7 + CheckEventReuseHL EVENT_SEEL_FAN_BOAST jr nz, .mineisbetter - ld hl, .NormalText + SetEventReuseHL EVENT_PIKACHU_FAN_BOAST + ld hl, .normaltext call PrintText - SetEvent EVENT_PIKACHU_FAN_BOAST jr .done .mineisbetter - ld hl, .BetterText + ResetEventReuseHL EVENT_SEEL_FAN_BOAST + ld hl, .bettertext call PrintText - ResetEvent EVENT_SEEL_FAN_BOAST .done jp TextScriptEnd -.NormalText: +.normaltext text_far _PokemonFanClubSeelFanNormalText text_end -.BetterText: +.bettertext text_far _PokemonFanClubSeelFanBetterText text_end -PokemonFanClubPikachuText: +.yellowtext + text_far _PokemonFanClubSeelFanText + text_end + +PokemonFanClubClefairyText: text_asm ld hl, .Text call PrintText - ld a, PIKACHU + ld a, CLEFAIRY call PlayCry call WaitForSoundToFinish jp TextScriptEnd .Text - text_far _PokemonFanClubPikachuText + text_far _PokemonFanClubClefairyText text_end PokemonFanClubSeelText: @@ -90,15 +168,26 @@ PokemonFanClubSeelText: call WaitForSoundToFinish jp TextScriptEnd -.Text: +.Text text_far _PokemonFanClubSeelText text_end PokemonFanClubChairmanText: text_asm - call PokemonFanClub_CheckBikeInBag - jr nz, .nothingleft + CheckEventHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER + 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, .IntroText call PrintText call YesNoChoice @@ -115,21 +204,58 @@ PokemonFanClubChairmanText: ld hl, .BikeVoucherText 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, wStatusFlags5 + set BIT_NO_TEXT_DELAY, [hl] + callfar PrintFanClubPortrait + ld hl, wStatusFlags5 + res BIT_NO_TEXT_DELAY, [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 + .IntroText: text_far _PokemonFanClubChairmanIntroText text_end @@ -156,14 +282,22 @@ PokemonFanClubChairmanText: text_far _PokemonFanClubBagFullText text_end -PokemonFanClubReceptionistText: - text_far _PokemonFanClubReceptionistText +Text_59c1f: + text_far FanClubChairPrintText1 + text_end + +Text_59c24: + text_far FanClubChairPrintText2 + text_end + +Text_59c29: + text_far FanClubChairPrintText3 text_end -PokemonFanClubSign1Text: - text_far _PokemonFanClubSign1Text +Text_59c2e: + text_far FanClubChairPrintText4 text_end -PokemonFanClubSign2Text: - text_far _PokemonFanClubSign2Text +PokemonFanClubReceptionistText: + text_far _PokemonFanClubReceptionistText text_end diff --git a/scripts/PokemonTower1F.asm b/scripts/PokemonTower1F.asm index 72509f52..011627ed 100644 --- a/scripts/PokemonTower1F.asm +++ b/scripts/PokemonTower1F.asm @@ -1,5 +1,6 @@ PokemonTower1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PokemonTower1F_TextPointers: def_text_pointers diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm index d3b6c9a4..d5fbd932 100644 --- a/scripts/PokemonTower2F.asm +++ b/scripts/PokemonTower2F.asm @@ -27,9 +27,7 @@ ENDC ld hl, PokemonTower2FRivalEncounterEventCoords 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 @@ -76,14 +74,13 @@ PokemonTower2FDefeatedRivalScript: ld de, PokemonTower2FRivalDownThenRightMovement CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT jr nz, .got_movement + callfar PokemonTower2FPikachuMovementScript ld de, PokemonTower2FRivalRightThenDownMovement .got_movement ld a, POKEMONTOWER2F_RIVAL ldh [hSpriteIndex], a call MoveSprite - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, SCRIPT_POKEMONTOWER2F_RIVAL_EXITS ld [wPokemonTower2FCurScript], a @@ -150,21 +147,8 @@ PokemonTower2FRivalText: 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, SCRIPT_POKEMONTOWER2F_DEFEATED_RIVAL diff --git a/scripts/PokemonTower2F_2.asm b/scripts/PokemonTower2F_2.asm new file mode 100644 index 00000000..9e801efa --- /dev/null +++ b/scripts/PokemonTower2F_2.asm @@ -0,0 +1,12 @@ +PokemonTower2FPikachuMovementScript:: + ld hl, PokemonTower2FPikachuMovement + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +PokemonTower2FPikachuMovement: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm index 3d8cd636..3e30db56 100644 --- a/scripts/PokemonTower7F.asm +++ b/scripts/PokemonTower7F.asm @@ -1,67 +1,237 @@ 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 PokemonTower7FSetDefaultScript: xor a ld [wJoyIgnore], a - ld [wPokemonTower7FCurScript], a ; SCRIPT_POKEMONTOWER7F_DEFAULT - ld [wCurMapScript], a ; SCRIPT_POKEMONTOWER7F_DEFAULT +PokemonTower7FSetScript: + ld [wPokemonTower7FCurScript], a ret PokemonTower7F_ScriptPointers: def_script_pointers - dw_const CheckFightingMapTrainers, SCRIPT_POKEMONTOWER7F_DEFAULT - dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_POKEMONTOWER7F_START_BATTLE - dw_const PokemonTower7FEndBattleScript, SCRIPT_POKEMONTOWER7F_END_BATTLE - dw_const PokemonTower7FHideNPCScript, SCRIPT_POKEMONTOWER7F_HIDE_NPC + dw_const PokemonTower7FScript0, SCRIPT_POKEMONTOWER7F_SCRIPT0 + dw_const PokemonTower7FScript1, SCRIPT_POKEMONTOWER7F_SCRIPT1 + dw_const PokemonTower7FScript2, SCRIPT_POKEMONTOWER7F_SCRIPT2 + dw_const PokemonTower7FScript3, SCRIPT_POKEMONTOWER7F_SCRIPT3 + dw_const PokemonTower7FScript4, SCRIPT_POKEMONTOWER7F_SCRIPT4 + dw_const PokemonTower7FScript5, SCRIPT_POKEMONTOWER7F_SCRIPT5 + dw_const PokemonTower7FScript6, SCRIPT_POKEMONTOWER7F_SCRIPT6 + dw_const PokemonTower7FScript7, SCRIPT_POKEMONTOWER7F_SCRIPT7 + dw_const PokemonTower7FScript8, SCRIPT_POKEMONTOWER7F_SCRIPT8 + dw_const PokemonTower7FScript9, SCRIPT_POKEMONTOWER7F_SCRIPT9 + dw_const PokemonTower7FScript10, SCRIPT_POKEMONTOWER7F_SCRIPT10 dw_const PokemonTower7FWarpToMrFujiHouseScript, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE -PokemonTower7FEndBattleScript: - ld hl, wMiscFlags - res BIT_SEEN_BY_TRAINER, [hl] - ld a, [wIsInBattle] - cp $ff - jp z, PokemonTower7FSetDefaultScript - call EndTrainerBattle - ld a, PAD_CTRL_PAD +PokemonTower7FScript0: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC + CheckEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES + call z, PokemonTower7FScript_60d2a + ret + +PokemonTower7FScript_60d2a: + ld a, [wYCoord] + cp $c + ret nz + ResetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + ld a, [wXCoord] + cp $a + jr z, .asm_60d47 + ld a, [wXCoord] ; why? + cp $b + ret nz + SetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT +.asm_60d47 + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ldh [hJoyHeld], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a - ld a, [wSpriteIndex] - ldh [hSpriteIndex], a + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7FScript_ShowObject + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7FScript_ShowObject + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_POKEMONTOWER7F_TEXT4 + ldh [hTextID], a call DisplayTextID - call PokemonTower7FRocketLeaveMovementScript - ld a, SCRIPT_POKEMONTOWER7F_HIDE_NPC - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT1 + call PokemonTower7FSetScript ret -PokemonTower7FHideNPCScript: +PokemonTower7FMovementData_60d7a: + db $4 +PokemonTower7FMovementData_60d7b: + db $4 + db $4 + db $4 + db $FF + +PokemonTower7FScript1: + ld de, PokemonTower7FMovementData_60d7b + CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + jr z, .asm_60d8c + ld de, PokemonTower7FMovementData_60d7a +.asm_60d8c + ld a, POKEMONTOWER7F_JESSIE + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT2 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript2: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, 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 +PokemonTower7FScript3: + ld a, SPRITE_FACING_DOWN + ld [wSprite01StateData1FacingDirection], a + CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + jr z, .asm_60dba + ld a, SPRITE_FACING_RIGHT + ld [wSprite01StateData1FacingDirection], a +.asm_60dba + ld a, $2 + ld [wSprite01StateData1MovementStatus], a +PokemonTower7FScript4: + ld de, PokemonTower7FMovementData_60d7a + CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + jr z, .asm_60dcc + ld de, PokemonTower7FMovementData_60d7b +.asm_60dcc + ld a, POKEMONTOWER7F_JAMES + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT5 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript5: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz +PokemonTower7FScript6: + ld a, $2 + ld [wSprite02StateData1MovementStatus], a + ld a, SPRITE_FACING_LEFT + ld [wSprite02StateData1FacingDirection], a + CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT + jr z, .asm_60dff + ld a, SPRITE_FACING_DOWN + ld [wSprite02StateData1FacingDirection], a +.asm_60dff + call Delay3 + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, TEXT_POKEMONTOWER7F_TEXT5 + ldh [hTextID], a + call DisplayTextID +PokemonTower7FScript7: + ld hl, wStatusFlags3 + set BIT_TALKED_TO_TRAINER, [hl] + set BIT_PRINT_END_BATTLE_TEXT, [hl] + ld hl, PokemonTower7FJessieJamesEndBattleText + ld de, PokemonTower7FJessieJamesEndBattleText + 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 [wOpponentAfterWrongAnswer], a ; not used here; likely a mistake copied from maps/CinnabarGym.asm - ld a, SCRIPT_POKEMONTOWER7F_DEFAULT - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT8 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript8: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, PokemonTower7FSetDefaultScript + ld a, $2 + ld [wSprite01StateData1MovementStatus], a + ld [wSprite02StateData1MovementStatus], a + xor a + ld [wSprite01StateData1FacingDirection], a + ld [wSprite02StateData1FacingDirection], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_POKEMONTOWER7F_TEXT6 + ldh [hTextID], 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, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT9 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript9: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7FScript_HideObject + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7FScript_HideObject + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT10 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript10: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0 + call PokemonTower7FSetScript + ret + +PokemonTower7FScript_ShowObject: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +PokemonTower7FScript_HideObject: + ld [wMissableObjectIndex], a + predef HideObject ret PokemonTower7FWarpToMrFujiHouseScript: @@ -80,146 +250,51 @@ PokemonTower7FWarpToMrFujiHouseScript: ld [wLastMap], a ld hl, wStatusFlags3 set BIT_WARP_FROM_CUR_SCRIPT, [hl] - ld a, SCRIPT_POKEMONTOWER7F_DEFAULT + ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0 ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a ret -PokemonTower7FRocketLeaveMovementScript: - ld hl, PokemonTower7FNPCCoordMovementTable - 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 -.loop - ld a, [hli] - cp b - jr nz, .inc_and_skip - ld a, [hli] - cp c - jr nz, .skip - ld a, [hli] - ld d, [hl] - ld e, a - ld a, [wSpriteIndex] - ldh [hSpriteIndex], a - jp MoveSprite -.inc_and_skip - inc hl -.skip - inc hl - inc hl - jr .loop - -PokemonTower7FNPCCoordMovementTable: - map_coord_movement 9, 12, PokemonTower7FRocket1ExitRightDownMovement - map_coord_movement 10, 11, PokemonTower7FRocket1ExitDownRightMovement - map_coord_movement 11, 11, PokemonTower7FRocketExitDownMovement - map_coord_movement 12, 11, PokemonTower7FRocketExitDownMovement - map_coord_movement 12, 10, PokemonTower7FRocket2ExitLeftDownMovement - map_coord_movement 11, 9, PokemonTower7FRocket2ExitDownLeftMovement - map_coord_movement 10, 9, PokemonTower7FRocketExitDownMovement - map_coord_movement 9, 9, PokemonTower7FRocketExitDownMovement - map_coord_movement 9, 8, PokemonTower7FRocket3ExitRightDownMovement - map_coord_movement 10, 7, PokemonTower7FRocketExitDownMovement - map_coord_movement 11, 7, PokemonTower7FRocketExitDownMovement - map_coord_movement 12, 7, PokemonTower7FRocketExitDownMovement - -PokemonTower7FRocket1ExitRightDownMovement: - 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 - -PokemonTower7FRocket1ExitDownRightMovement: - 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 - -PokemonTower7FRocketExitDownMovement: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - -PokemonTower7FRocket2ExitLeftDownMovement: - 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 - -PokemonTower7FRocket2ExitDownLeftMovement: - 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 - -PokemonTower7FRocket3ExitRightDownMovement: - 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: def_text_pointers - dw_const PokemonTower7FRocket1Text, TEXT_POKEMONTOWER7F_ROCKET1 - dw_const PokemonTower7FRocket2Text, TEXT_POKEMONTOWER7F_ROCKET2 - dw_const PokemonTower7FRocket3Text, TEXT_POKEMONTOWER7F_ROCKET3 - dw_const PokemonTower7FMrFujiText, TEXT_POKEMONTOWER7F_MR_FUJI + dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JESSIE + dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JAMES + dw_const PokemonTower7FMrFujiText, TEXT_POKEMONTOWER7F_MR_FUJI + dw_const PokemonTower7FText4, TEXT_POKEMONTOWER7F_TEXT4 + dw_const PokemonTower7FText5, TEXT_POKEMONTOWER7F_TEXT5 + dw_const PokemonTower7FText6, TEXT_POKEMONTOWER7F_TEXT6 -PokemonTower7TrainerHeaders: - def_trainers -PokemonTower7TrainerHeader0: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_0, 3, PokemonTower7FRocket1BattleText, PokemonTower7FRocket1EndBattleText, PokemonTower7FRocket1AfterBattleText -PokemonTower7TrainerHeader1: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_1, 3, PokemonTower7FRocket2BattleText, PokemonTower7FRocket2EndBattleText, PokemonTower7FRocket2AfterBattleText -PokemonTower7TrainerHeader2: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_2, 3, PokemonTower7FRocket3BattleText, PokemonTower7FRocket3EndBattleText, PokemonTower7FRocket3AfterBattleText - db -1 ; end +PokemonTower7FJessieJamesText: + text_end -PokemonTower7FRocket1Text: +PokemonTower7FText4: + text_far _PokemonTowerJessieJamesText1 text_asm - ld hl, PokemonTower7TrainerHeader0 - 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 -PokemonTower7FRocket2Text: - text_asm - ld hl, PokemonTower7TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd +PokemonTower7FText5: + text_far _PokemonTowerJessieJamesText2 + text_end -PokemonTower7FRocket3Text: +PokemonTower7FJessieJamesEndBattleText: + text_far _PokemonTowerJessieJamesText3 + text_end + +PokemonTower7FText6: + text_far _PokemonTowerJessieJamesText4 text_asm - ld hl, PokemonTower7TrainerHeader2 - call TalkToTrainer + ld c, 64 + call DelayFrames jp TextScriptEnd PokemonTower7FMrFujiText: @@ -239,45 +314,8 @@ PokemonTower7FMrFujiText: predef ShowObject ld a, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a jp TextScriptEnd .RescueText: text_far _PokemonTower7FMrFujiRescueText text_end - -PokemonTower7FRocket1BattleText: - text_far _PokemonTower7FRocket1BattleText - text_end - -PokemonTower7FRocket1EndBattleText: - text_far _PokemonTower7FRocket1EndBattleText - text_end - -PokemonTower7FRocket1AfterBattleText: - text_far _PokemonTower7FRocket1AfterBattleText - text_end - -PokemonTower7FRocket2BattleText: - text_far _PokemonTower7FRocket2BattleText - text_end - -PokemonTower7FRocket2EndBattleText: - text_far _PokemonTower7FRocket2EndBattleText - text_end - -PokemonTower7FRocket2AfterBattleText: - text_far _PokemonTower7FRocket2AfterBattleText - text_end - -PokemonTower7FRocket3BattleText: - text_far _PokemonTower7FRocket3BattleText - text_end - -PokemonTower7FRocket3EndBattleText: - text_far _PokemonTower7FRocket3EndBattleText - text_end - -PokemonTower7FRocket3AfterBattleText: - text_far _PokemonTower7FRocket3AfterBattleText - text_end diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm index a91ede80..84ace5ad 100644 --- a/scripts/RedsHouse1F.asm +++ b/scripts/RedsHouse1F.asm @@ -1,5 +1,6 @@ RedsHouse1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret RedsHouse1F_TextPointers: def_text_pointers @@ -8,63 +9,10 @@ RedsHouse1F_TextPointers: RedsHouse1FMomText: text_asm - ld a, [wStatusFlags4] - bit BIT_GOT_STARTER, a - jr nz, .heal - ld hl, .WakeUpText - call PrintText - jr .done -.heal - call RedsHouse1FMomHealScript -.done + callfar RedsHouse1FPrintMomText jp TextScriptEnd -.WakeUpText: - text_far _RedsHouse1FMomWakeUpText - text_end - -RedsHouse1FMomHealScript: - ld hl, RedsHouse1FMomYouShouldRestText - 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, RedsHouse1FMomLookingGreatText - jp PrintText - -RedsHouse1FMomYouShouldRestText: - text_far _RedsHouse1FMomYouShouldRestText - text_end -RedsHouse1FMomLookingGreatText: - text_far _RedsHouse1FMomLookingGreatText - text_end - RedsHouse1FTVText: text_asm - ld a, [wSpritePlayerStateData1FacingDirection] - cp SPRITE_FACING_UP - ld hl, .WrongSideText - jr nz, .got_text - ld hl, .StandByMeMovieText -.got_text - call PrintText + callfar RedsHouse1FPrintTVText jp TextScriptEnd - -.StandByMeMovieText: - text_far _RedsHouse1FTVStandByMeMovieText - text_end - -.WrongSideText: - text_far _RedsHouse1FTVWrongSideText - text_end diff --git a/scripts/RedsHouse1F_2.asm b/scripts/RedsHouse1F_2.asm new file mode 100644 index 00000000..a7c8d051 --- /dev/null +++ b/scripts/RedsHouse1F_2.asm @@ -0,0 +1,57 @@ +RedsHouse1FPrintMomText:: + ld a, [wStatusFlags4] + bit BIT_GOT_STARTER, a + jp nz, RedsHouse1FMomHealScript + ld hl, .WakeUpText + call PrintText + ret + +.WakeUpText: + text_far _RedsHouse1FMomWakeUpText + text_end + +RedsHouse1FMomHealScript: + ld hl, RedsHouse1FMomYouShouldRestText + 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, RedsHouse1FMomLookingGreatText + call PrintText + ret + +RedsHouse1FMomYouShouldRestText: + text_far _RedsHouse1FMomYouShouldRestText + text_end +RedsHouse1FMomLookingGreatText: + text_far _RedsHouse1FMomLookingGreatText + text_end + +RedsHouse1FPrintTVText:: + ld hl, .WrongSideText + ld a, [wSpritePlayerStateData1FacingDirection] + cp SPRITE_FACING_UP + jp nz, .got_text + ld hl, .StandByMeMovieText +.got_text + call PrintText + ret + +.StandByMeMovieText: + text_far _RedsHouse1FTVStandByMeMovieText + text_end + +.WrongSideText: + text_far _RedsHouse1FTVWrongSideText + text_end diff --git a/scripts/RedsHouse2F.asm b/scripts/RedsHouse2F.asm index 9b2575b7..6e8bd2dd 100644 --- a/scripts/RedsHouse2F.asm +++ b/scripts/RedsHouse2F.asm @@ -1,24 +1,19 @@ RedsHouse2F_Script: call EnableAutoTextBoxDrawing ld hl, RedsHouse2F_ScriptPointers - ld a, [wRedsHouse2FCurScript] - jp CallFunctionInTable + ld a, 0 + call CallFunctionInTable + ret RedsHouse2F_ScriptPointers: def_script_pointers - dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT - dw_const RedsHouse2FNoopScript, SCRIPT_REDSHOUSE2F_NOOP + dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT0 + dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT1 + dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT2 + dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT3 + dw_const RedsHouse2FDefaultScript, SCRIPT_REDSHOUSE2F_DEFAULT4 RedsHouse2FDefaultScript: - xor a - ldh [hJoyHeld], a - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a - ld a, SCRIPT_REDSHOUSE2F_NOOP - ld [wRedsHouse2FCurScript], a - ret - -RedsHouse2FNoopScript: ret RedsHouse2F_TextPointers: diff --git a/scripts/RockTunnelPokecenter.asm b/scripts/RockTunnelPokecenter.asm index 89aad6a3..8a980490 100644 --- a/scripts/RockTunnelPokecenter.asm +++ b/scripts/RockTunnelPokecenter.asm @@ -8,6 +8,7 @@ RockTunnelPokecenter_TextPointers: dw_const RockTunnelPokecenterGentlemanText, TEXT_ROCKTUNNELPOKECENTER_GENTLEMAN dw_const RockTunnelPokecenterFisherText, TEXT_ROCKTUNNELPOKECENTER_FISHER dw_const RockTunnelPokecenterLinkReceptionistText, TEXT_ROCKTUNNELPOKECENTER_LINK_RECEPTIONIST + dw_const RockTunnelPokecenterChanseyText, TEXT_ROCKTUNNELPOKECENTER_CHANSEY RockTunnelPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ RockTunnelPokecenterFisherText: RockTunnelPokecenterLinkReceptionistText: script_cable_club_receptionist + +RockTunnelPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm index edc51351..15a98853 100644 --- a/scripts/RocketHideoutB4F.asm +++ b/scripts/RocketHideoutB4F.asm @@ -1,5 +1,4 @@ RocketHideoutB4F_Script: - call RocketHideoutB4FDoorCallbackScript call EnableAutoTextBoxDrawing ld hl, RocketHideout4TrainerHeaders ld de, RocketHideoutB4F_ScriptPointers @@ -8,48 +7,45 @@ RocketHideoutB4F_Script: ld [wRocketHideoutB4FCurScript], a ret -RocketHideoutB4FDoorCallbackScript: - ld hl, wCurrentMapScriptFlags - bit BIT_CUR_MAP_LOADED_1, [hl] - res BIT_CUR_MAP_LOADED_1, [hl] - ret z - CheckEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED - jr nz, .door_already_unlocked - CheckBothEventsSet EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 1 - jr z, .unlock_door - ld a, $2d ; Door block - jr .set_block -.unlock_door - ld a, SFX_GO_INSIDE - call PlaySound - SetEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED -.door_already_unlocked - ld a, $e ; Floor block -.set_block - ld [wNewTileBlockID], a - lb bc, 5, 12 - predef_jump ReplaceTileBlock - -RocketHideoutB4FSetDefaultScript: +RocketHideoutB4FResetScripts: + CheckAndResetEvent EVENT_6A0 + call nz, RocketHideoutB4FScript_HideJessieJames xor a ld [wJoyIgnore], a +RocketHideoutB4FSetScript: ld [wRocketHideoutB4FCurScript], a ld [wCurMapScript], a ret +RocketHideoutB4FScript_HideJessieJames: + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideoutB4FScript_HideObject + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideoutB4FScript_HideObject + ret + RocketHideoutB4F_ScriptPointers: def_script_pointers - dw_const CheckFightingMapTrainers, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT - dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_ROCKETHIDEOUTB4F_START_BATTLE - dw_const EndTrainerBattle, SCRIPT_ROCKETHIDEOUTB4F_END_BATTLE + dw_const RocketHideoutB4FDefaultScript, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT + dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT1 + dw_const EndTrainerBattle, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT2 dw_const RocketHideoutB4FBeatGiovanniScript, SCRIPT_ROCKETHIDEOUTB4F_BEAT_GIOVANNI + dw_const RocketHideoutB4FScript4, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT4 + dw_const RocketHideoutB4FScript5, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT5 + dw_const RocketHideoutB4FScript6, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT6 + dw_const RocketHideoutB4FScript7, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT7 + dw_const RocketHideoutB4FScript8, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT8 + dw_const RocketHideoutB4FScript9, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT9 + dw_const RocketHideoutB4FScript10, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT10 + dw_const RocketHideoutB4FScript11, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT11 + dw_const RocketHideoutB4FScript12, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT12 + dw_const RocketHideoutB4FScript13, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT13 RocketHideoutB4FBeatGiovanniScript: ld a, [wIsInBattle] cp $ff - jp z, RocketHideoutB4FSetDefaultScript - call UpdateSprites - ld a, PAD_CTRL_PAD + jp z, RocketHideoutB4FResetScripts + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD ld [wJoyIgnore], a SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI ld a, TEXT_ROCKETHIDEOUTB4F_GIOVANNI_HOPE_WE_MEET_AGAIN @@ -73,29 +69,281 @@ RocketHideoutB4FBeatGiovanniScript: ld [wCurMapScript], a ret +RocketHideoutB4FDefaultScript: +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES + call z, RocketHideoutB4FScript_455a5 + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2 + call z, CheckFightingMapTrainers + ret + +RocketHideoutB4FScript_455a5: + ld a, [wYCoord] + cp $e + ret nz + ResetEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT + ld a, [wXCoord] + cp $18 + jr z, .asm_455c2 + ld a, [wXCoord] + cp $19 + ret nz + SetEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT +.asm_455c2 + xor a + ldh [hJoyHeld], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + 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, TEXT_ROCKETHIDEOUTB4F_TEXT11 + ldh [hTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideoutB4FScript_ShowObject + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideoutB4FScript_ShowObject + ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT4 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FJessieJamesMovementData_45605: + db $4 +RocketHideoutB4FJessieJamesMovementData_45606: + db $4 + db $4 + db $4 + db $ff + +RocketHideoutB4FScript4: + ld de, RocketHideoutB4FJessieJamesMovementData_45605 + CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT + jr z, .asm_45617 + ld de, RocketHideoutB4FJessieJamesMovementData_45606 +.asm_45617 + ld a, ROCKETHIDEOUTB4F_JAMES + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT5 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript5: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz +RocketHideoutB4FScript6: + ld a, $2 + ld [wSprite02StateData1MovementStatus], a + ld a, SPRITE_FACING_LEFT + ld [wSprite02StateData1FacingDirection], a + CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT + jr z, .asm_4564a + ld a, SPRITE_FACING_DOWN + ld [wSprite02StateData1FacingDirection], a +.asm_4564a + call Delay3 + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a +RocketHideoutB4FScript7: + ld de, RocketHideoutB4FJessieJamesMovementData_45606 + CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT + jr z, .asm_4565f + ld de, RocketHideoutB4FJessieJamesMovementData_45605 +.asm_4565f + ld a, ROCKETHIDEOUTB4F_JESSIE + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT8 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript8: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a +RocketHideoutB4FScript9: + ld a, $2 + ld [wSprite03StateData1MovementStatus], a + ld a, SPRITE_FACING_DOWN + ld [wSprite03StateData1FacingDirection], a + CheckEvent EVENT_ROCKET_HIDEOUT_4_JESSIE_JAMES_ON_LEFT + jr z, .asm_45697 + ld a, SPRITE_FACING_RIGHT + ld [wSprite03StateData1FacingDirection], a +.asm_45697 + call Delay3 + ld a, TEXT_ROCKETHIDEOUTB4F_TEXT12 + ldh [hTextID], a + call DisplayTextID +RocketHideoutB4FScript10: + ld hl, wStatusFlags3 + set BIT_TALKED_TO_TRAINER, [hl] + set BIT_PRINT_END_BATTLE_TEXT, [hl] + ld hl, RocketHideoutB4FJessieJamesEndBattleText + ld de, RocketHideoutB4FJessieJamesEndBattleText + 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, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT11 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript11: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, RocketHideoutB4FResetScripts + ld a, $2 + ld [wSprite02StateData1MovementStatus], a + ld [wSprite03StateData1MovementStatus], a + xor a + ld [wSprite02StateData1FacingDirection], a + ld [wSprite03StateData1FacingDirection], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_ROCKETHIDEOUTB4F_TEXT13 + ldh [hTextID], 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, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT12 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript12: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideoutB4FScript_HideObject + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideoutB4FScript_HideObject + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, SCRIPT_ROCKETHIDEOUTB4F_SCRIPT13 + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript13: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_JESSIE_JAMES + ld a, SCRIPT_ROCKETHIDEOUTB4F_DEFAULT + call RocketHideoutB4FSetScript + ret + +RocketHideoutB4FScript_ShowObject: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +RocketHideoutB4FScript_HideObject: + ld [wMissableObjectIndex], a + predef HideObject + ret + RocketHideoutB4F_TextPointers: def_text_pointers dw_const RocketHideoutB4FGiovanniText, TEXT_ROCKETHIDEOUTB4F_GIOVANNI - dw_const RocketHideoutB4FRocket1Text, TEXT_ROCKETHIDEOUTB4F_ROCKET1 - dw_const RocketHideoutB4FRocket2Text, TEXT_ROCKETHIDEOUTB4F_ROCKET2 - dw_const RocketHideoutB4FRocket3Text, TEXT_ROCKETHIDEOUTB4F_ROCKET3 + dw_const RocketHideoutB4FJessieJamesText, TEXT_ROCKETHIDEOUTB4F_JAMES + dw_const RocketHideoutB4FJessieJamesText, TEXT_ROCKETHIDEOUTB4F_JESSIE + dw_const RocketHideoutB4FRocketText, TEXT_ROCKETHIDEOUTB4F_ROCKET dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_HP_UP dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_TM_RAZOR_WIND dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_IRON dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_SILPH_SCOPE dw_const PickUpItemText, TEXT_ROCKETHIDEOUTB4F_LIFT_KEY dw_const RocketHideoutB4FGiovanniHopeWeMeetAgainText, TEXT_ROCKETHIDEOUTB4F_GIOVANNI_HOPE_WE_MEET_AGAIN + dw_const RocketHideoutB4FText11, TEXT_ROCKETHIDEOUTB4F_TEXT11 + dw_const RocketHideoutB4FText12, TEXT_ROCKETHIDEOUTB4F_TEXT12 + dw_const RocketHideoutB4FText13, TEXT_ROCKETHIDEOUTB4F_TEXT13 RocketHideout4TrainerHeaders: - def_trainers 2 + def_trainers 4 RocketHideout4TrainerHeader0: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, 0, RocketHideoutB4FRocket1BattleText, RocketHideoutB4FRocket1EndBattleText, RocketHideoutB4FRocket1AfterBattleText -RocketHideout4TrainerHeader1: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 0, RocketHideoutB4FRocket2BattleText, RocketHideoutB4FRocket2EndBattleText, RocketHideoutB4FRocket2AfterBattleText -RocketHideout4TrainerHeader2: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideoutB4FRocket3BattleText, RocketHideoutB4FRocket3EndBattleText, RocketHideoutB4FRocket3AfterBattleText + trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideoutB4FRocketBattleText, RocketHideoutB4FRocketEndBattleText, RocketHideoutB4FRocketAfterBattleText db -1 ; end +RocketHideoutB4FJessieJamesText: + text_end + +RocketHideoutB4FText11: + 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 + +RocketHideoutB4FText12: + text_far _RocketHideoutJessieJamesText2 + text_end + +RocketHideoutB4FJessieJamesEndBattleText: + text_far _RocketHideoutJessieJamesText3 + text_end + +RocketHideoutB4FText13: + text_far _RocketHideoutJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + RocketHideoutB4FGiovanniText: text_asm CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI @@ -136,68 +384,32 @@ RocketHideoutB4FGiovanniHopeWeMeetAgainText: text_far _RocketHideoutB4FGiovanniHopeWeMeetAgainText text_end -RocketHideoutB4FRocket1Text: +RocketHideoutB4FRocketText: text_asm ld hl, RocketHideout4TrainerHeader0 call TalkToTrainer jp TextScriptEnd -RocketHideoutB4FRocket1BattleText: - text_far _RocketHideoutB4FRocket1BattleText - text_end - -RocketHideoutB4FRocket1EndBattleText: - text_far _RocketHideoutB4FRocket1EndBattleText +RocketHideoutB4FRocketBattleText: + text_far _RocketHideoutB4FRocketBattleText text_end -RocketHideoutB4FRocket1AfterBattleText: - text_far _RocketHideoutB4FRocket1AfterBattleText - text_end - -RocketHideoutB4FRocket2Text: +RocketHideoutB4FRocketEndBattleText: + text_far _RocketHideoutB4FRocketEndBattleText + text_promptbutton text_asm - ld hl, RocketHideout4TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -RocketHideoutB4FRocket2BattleText: - text_far _RocketHideoutB4FRocket2BattleText - text_end - -RocketHideoutB4FRocket2EndBattleText: - text_far _RocketHideoutB4FRocket2EndBattleText - text_end - -RocketHideoutB4FRocket2AfterBattleText: - text_far _RocketHideoutB4FRocket2AfterBattleText - text_end - -RocketHideoutB4FRocket3Text: - text_asm - ld hl, RocketHideout4TrainerHeader2 - call TalkToTrainer + SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY + ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5 + ld [wMissableObjectIndex], a + predef ShowObject jp TextScriptEnd -RocketHideoutB4FRocket3BattleText: - text_far _RocketHideoutB4FRocket3BattleText - text_end - -RocketHideoutB4FRocket3EndBattleText: - text_far _RocketHideoutB4FRocket3EndBattleText - text_end - -RocketHideoutB4FRocket3AfterBattleText: +RocketHideoutB4FRocketAfterBattleText: text_asm ld hl, .Text call PrintText - CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY - jr nz, .done - ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5 - ld [wMissableObjectIndex], a - predef ShowObject -.done jp TextScriptEnd .Text: - text_far _RocketHideoutB4FRocket3AfterBattleText + text_far _RocketHideoutB4FRocketAfterBattleText text_end diff --git a/scripts/Route1.asm b/scripts/Route1.asm index 4b9be6e7..a784d0a8 100644 --- a/scripts/Route1.asm +++ b/scripts/Route1.asm @@ -1,5 +1,6 @@ Route1_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Route1_TextPointers: def_text_pointers @@ -9,45 +10,15 @@ Route1_TextPointers: Route1Youngster1Text: text_asm - CheckAndSetEvent EVENT_GOT_POTION_SAMPLE - jr nz, .got_item - ld hl, .MartSampleText - call PrintText - lb bc, POTION, 1 - call GiveItem - jr nc, .bag_full - ld hl, .GotPotionText - jr .done -.bag_full - ld hl, .NoRoomText - jr .done -.got_item - ld hl, .AlsoGotPokeballsText -.done - call PrintText + farcall Route1PrintYoungster1Text jp TextScriptEnd -.MartSampleText: - text_far _Route1Youngster1MartSampleText - text_end - -.GotPotionText: - text_far _Route1Youngster1GotPotionText - sound_get_item_1 - text_end - -.AlsoGotPokeballsText: - text_far _Route1Youngster1AlsoGotPokeballsText - text_end - -.NoRoomText: - text_far _Route1Youngster1NoRoomText - text_end - Route1Youngster2Text: - text_far _Route1Youngster2Text - text_end + text_asm + farcall Route1PrintYoungster2Text + jp TextScriptEnd Route1SignText: - text_far _Route1SignText - text_end + text_asm + farcall Route1PrintSignText + jp TextScriptEnd diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm index bc1e2e90..c9f183e1 100644 --- a/scripts/Route11Gate2F.asm +++ b/scripts/Route11Gate2F.asm @@ -10,7 +10,7 @@ Route11Gate2F_TextPointers: Route11Gate2FYoungsterText: text_asm - xor a ; TRADE_FOR_TERRY + ld a, TRADE_FOR_GURIO ld [wWhichTrade], a predef DoInGameTradeDialogue Route11Gate2FScriptEnd: diff --git a/scripts/Route18Gate2F.asm b/scripts/Route18Gate2F.asm index 0300966e..5065b696 100644 --- a/scripts/Route18Gate2F.asm +++ b/scripts/Route18Gate2F.asm @@ -3,13 +3,13 @@ Route18Gate2F_Script: Route18Gate2F_TextPointers: def_text_pointers - dw_const Route18Gate2FYoungsterText, TEXT_ROUTE18GATE2F_YOUNGSTER + dw_const Route18Gate2FCookText, TEXT_ROUTE18GATE2F_COOK dw_const Route18Gate2FLeftBinocularsText, TEXT_ROUTE18GATE2F_LEFT_BINOCULARS dw_const Route18Gate2FRightBinocularsText, TEXT_ROUTE18GATE2F_RIGHT_BINOCULARS -Route18Gate2FYoungsterText: +Route18Gate2FCookText: text_asm - ld a, TRADE_FOR_MARC + ld a, TRADE_FOR_SPIKE ld [wWhichTrade], a predef DoInGameTradeDialogue jp TextScriptEnd diff --git a/scripts/Route19.asm b/scripts/Route19.asm index ef289b5f..9733ca05 100644 --- a/scripts/Route19.asm +++ b/scripts/Route19.asm @@ -32,7 +32,7 @@ Route19TrainerHeaders: Route19TrainerHeader0: trainer EVENT_BEAT_ROUTE_19_TRAINER_0, 4, Route19CooltrainerM1BattleText, Route19CooltrainerM1EndBattleText, Route19CooltrainerM1AfterBattleText Route19TrainerHeader1: - trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 3, Route19CooltrainerM2BattleText, Route19CooltrainerM2EndBattleText, Route19CooltrainerM2AfterBattleText + trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 4, Route19CooltrainerM2BattleText, Route19CooltrainerM2EndBattleText, Route19CooltrainerM2AfterBattleText Route19TrainerHeader2: trainer EVENT_BEAT_ROUTE_19_TRAINER_2, 3, Route19Swimmer1BattleText, Route19Swimmer1EndBattleText, Route19Swimmer1AfterBattleText Route19TrainerHeader3: @@ -54,60 +54,52 @@ Route19TrainerHeader9: Route19CooltrainerM1Text: text_asm ld hl, Route19TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19CooltrainerM2Text: text_asm ld hl, Route19TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer1Text: text_asm ld hl, Route19TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer2Text: text_asm ld hl, Route19TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer3Text: text_asm ld hl, Route19TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer4Text: text_asm ld hl, Route19TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer5Text: text_asm ld hl, Route19TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer6Text: text_asm ld hl, Route19TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer7Text: text_asm ld hl, Route19TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Swimmer8Text: 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..24cabbde --- /dev/null +++ b/scripts/Route1_2.asm @@ -0,0 +1,53 @@ +Route1PrintYoungster1Text:: + CheckAndSetEvent EVENT_GOT_POTION_SAMPLE + jr nz, .got_item + ld hl, .MartSampleText + call PrintText + lb bc, POTION, 1 + call GiveItem + jr nc, .bag_full + ld hl, .GotPotionText + jr .done +.bag_full + ld hl, .NoRoomText + jr .done +.got_item + ld hl, .AlsoGotPokeballsText +.done + call PrintText + ret + +.MartSampleText: + text_far _Route1Youngster1MartSampleText + text_end + +.GotPotionText: + text_far _Route1Youngster1GotPotionText + sound_get_item_1 + text_end + +.AlsoGotPokeballsText: + text_far _Route1Youngster1AlsoGotPokeballsText + text_end + +.NoRoomText: + text_far _Route1Youngster1NoRoomText + text_end + +Route1PrintYoungster2Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _Route1Youngster2Text + text_end + +Route1PrintSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _Route1SignText + text_end diff --git a/scripts/Route22.asm b/scripts/Route22.asm index 80f54290..77ad1ad0 100644 --- a/scripts/Route22.asm +++ b/scripts/Route22.asm @@ -22,17 +22,18 @@ Route22SetDefaultScript: Route22NoopScript: ret -Route22GetRivalTrainerNoByStarterScript: +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 -.next_trainer_no - ld a, [hli] - cp b - jr z, .got_trainer_no - inc hl - jr .next_trainer_no -.got_trainer_no - ld a, [hl] + add 7 ld [wTrainerNo], a ret @@ -89,9 +90,7 @@ Route22FirstRivalBattleScript: 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 @@ -132,24 +131,29 @@ Route22Rival1StartBattleScript: ld hl, Route22Rival1DefeatedText ld de, Route22Rival1VictoryText call SaveEndBattleTextPointers - ld a, OPP_RIVAL1 - ld [wCurOpponent], a - ld hl, .StarterTable - call Route22GetRivalTrainerNoByStarterScript + call Route22Script_50ed6 ld a, SCRIPT_ROUTE22_RIVAL1_AFTER_BATTLE ld [wRoute22CurScript], a ret -.StarterTable: -; starter the rival picked, rival trainer number - db STARTER2, 4 - db STARTER3, 5 - db STARTER1, 6 +Route22Rival1DefeatedText: + text_far _Route22Rival1DefeatedText + text_end + +Route22Rival1VictoryText: + text_far _Route22Rival1VictoryText + text_end Route22Rival1AfterBattleScript: ld a, [wIsInBattle] cp $ff jp z, Route22SetDefaultScript + 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, .not_facing_down @@ -168,9 +172,7 @@ Route22Rival1AfterBattleScript: ld a, TEXT_ROUTE22_RIVAL1 ldh [hTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, [wSavedCoordIndex] cp 1 ; index of second, lower entry in Route22DefaultScript.Route22RivalBattleCoords @@ -242,13 +244,9 @@ Route22SecondRivalBattleScript: ld a, [wWalkBikeSurfState] and a jr z, .walking - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .walking - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateTempo ld a, ROUTE22_RIVAL2 ldh [hSpriteIndex], a @@ -288,18 +286,18 @@ Route22Rival2StartBattleScript: ld hl, Route22Rival2DefeatedText ld de, Route22Rival2VictoryText call SaveEndBattleTextPointers - ld a, OPP_RIVAL2 - ld [wCurOpponent], a - ld hl, .StarterTable - call Route22GetRivalTrainerNoByStarterScript + call Route22Script_50ee1 ld a, SCRIPT_ROUTE22_RIVAL2_AFTER_BATTLE ld [wRoute22CurScript], a ret -.StarterTable: - db STARTER2, 10 - db STARTER3, 11 - db STARTER1, 12 +Route22Rival2DefeatedText: + text_far _Route22Rival2DefeatedText + text_end + +Route22Rival2VictoryText: + text_far _Route22Rival2VictoryText + text_end Route22Rival2AfterBattleScript: ld a, [wIsInBattle] @@ -327,9 +325,7 @@ Route22Rival2AfterBattleScript: ld a, TEXT_ROUTE22_RIVAL2 ldh [hTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStartAndTempo ld a, [wSavedCoordIndex] cp 1 ; index of second, lower entry in Route22DefaultScript.Route22RivalBattleCoords @@ -385,62 +381,15 @@ Route22_TextPointers: Route22Rival1Text: text_asm - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr z, .before_battle - ld hl, Route22RivalAfterBattleText1 - call PrintText - jr .text_script_end -.before_battle - ld hl, Route22RivalBeforeBattleText1 - call PrintText -.text_script_end + farcall Route22PrintRival1Text jp TextScriptEnd Route22Rival2Text: text_asm - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE - jr z, .before_battle - ld hl, Route22RivalAfterBattleText2 - call PrintText - jr .text_script_end -.before_battle - ld hl, Route22RivalBeforeBattleText2 - call PrintText -.text_script_end + farcall Route22PrintRival2Text jp TextScriptEnd -Route22RivalBeforeBattleText1: - text_far _Route22RivalBeforeBattleText1 - text_end - -Route22RivalAfterBattleText1: - text_far _Route22RivalAfterBattleText1 - text_end - -Route22Rival1DefeatedText: - text_far _Route22Rival1DefeatedText - text_end - -Route22Rival1VictoryText: - text_far _Route22Rival1VictoryText - text_end - -Route22RivalBeforeBattleText2: - text_far _Route22RivalBeforeBattleText2 - text_end - -Route22RivalAfterBattleText2: - text_far _Route22RivalAfterBattleText2 - text_end - -Route22Rival2DefeatedText: - text_far _Route22Rival2DefeatedText - text_end - -Route22Rival2VictoryText: - text_far _Route22Rival2VictoryText - text_end - Route22PokemonLeagueSignText: - text_far _Route22PokemonLeagueSignText - text_end + text_asm + farcall Route22PrintPokemonLeagueSignText + jp TextScriptEnd diff --git a/scripts/Route22Gate.asm b/scripts/Route22Gate.asm index e8e13b3c..b8ff0ed2 100644 --- a/scripts/Route22Gate.asm +++ b/scripts/Route22Gate.asm @@ -24,9 +24,12 @@ Route22GateDefaultScript: ret nc xor a ldh [hJoyHeld], a + ld a, SPRITE_FACING_LEFT + ld [wSprite01StateData1FacingDirection], a ld a, TEXT_ROUTE22GATE_GUARD ldh [hTextID], 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..9d40bafc --- /dev/null +++ b/scripts/Route22_2.asm @@ -0,0 +1,48 @@ +Route22PrintRival1Text:: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE + jr z, .before_battle + ld hl, Route22RivalAfterBattleText1 + call PrintText + jr .text_script_end +.before_battle + ld hl, Route22RivalBeforeBattleText1 + call PrintText +.text_script_end + ret + +Route22RivalBeforeBattleText1: + text_far _Route22RivalBeforeBattleText1 + text_end + +Route22RivalAfterBattleText1: + text_far _Route22RivalAfterBattleText1 + text_end + +Route22PrintRival2Text:: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE + jr z, .before_battle + ld hl, Route22RivalAfterBattleText2 + call PrintText + jr .text_script_end +.before_battle + ld hl, Route22RivalBeforeBattleText2 + call PrintText +.text_script_end + ret + +Route22RivalBeforeBattleText2: + text_far _Route22RivalBeforeBattleText2 + text_end + +Route22RivalAfterBattleText2: + text_far _Route22RivalAfterBattleText2 + text_end + +Route22PrintPokemonLeagueSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _Route22PokemonLeagueSignText + text_end diff --git a/scripts/Route24.asm b/scripts/Route24.asm index b66e6703..24a5281a 100644 --- a/scripts/Route24.asm +++ b/scripts/Route24.asm @@ -87,6 +87,7 @@ Route24_TextPointers: dw_const Route24CooltrainerF2Text, TEXT_ROUTE24_COOLTRAINER_F2 dw_const Route24Youngster2Text, TEXT_ROUTE24_YOUNGSTER2 dw_const PickUpItemText, TEXT_ROUTE24_TM_THUNDER_WAVE + dw_const Route24CooltrainerM4Text, TEXT_ROUTE24_COOLTRAINER_M4 Route24TrainerHeaders: def_trainers 2 @@ -153,7 +154,7 @@ Route24CooltrainerM1Text: .ReceivedNuggetText: text_far _Route24CooltrainerM1ReceivedNuggetText - sound_get_item_1 + sound_get_key_item text_promptbutton text_end @@ -280,3 +281,59 @@ Route24Youngster2EndBattleText: Route24Youngster2AfterBattleText: text_far _Route24Youngster2AfterBattleText text_end + +Route24CooltrainerM4Text: + 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 [wNamedObjectIndex], a + ld [wCurPartySpecies], 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 a85144a8..8cb59c30 100644 --- a/scripts/Route25.asm +++ b/scripts/Route25.asm @@ -1,14 +1,21 @@ Route25_Script: - call Route25ShowHideBillScript call EnableAutoTextBoxDrawing ld hl, Route25TrainerHeaders ld de, Route25_ScriptPointers ld a, [wRoute25CurScript] call ExecuteCurMapScriptInTable ld [wRoute25CurScript], a + call Route25ShowHideBillScript ret Route25ShowHideBillScript: + ld hl, wd492 + res 2, [hl] + res 3, [hl] + res 4, [hl] + res 7, [hl] + xor a + ld [wBillsHouseCurScript], a ld hl, wCurrentMapScriptFlags bit BIT_CUR_MAP_LOADED_2, [hl] res BIT_CUR_MAP_LOADED_2, [hl] @@ -20,10 +27,11 @@ Route25ShowHideBillScript: ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR ld a, HS_BILL_POKEMON ld [wMissableObjectIndex], a - predef_jump ShowObject + predef ShowObject + jr .done .met_bill CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2 - ret z + jr z, .done SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING ld a, HS_NUGGET_BRIDGE_GUY ld [wMissableObjectIndex], a @@ -33,7 +41,9 @@ Route25ShowHideBillScript: predef HideObject ld a, HS_BILL_2 ld [wMissableObjectIndex], a - predef_jump ShowObject + predef ShowObject +.done + ret Route25_ScriptPointers: def_script_pointers diff --git a/scripts/Route2TradeHouse.asm b/scripts/Route2TradeHouse.asm index f439db7b..0e5fcff3 100644 --- a/scripts/Route2TradeHouse.asm +++ b/scripts/Route2TradeHouse.asm @@ -12,7 +12,7 @@ Route2TradeHouseScientistText: Route2TradeHouseGameboyKidText: text_asm - ld a, TRADE_FOR_MARCEL + ld a, TRADE_FOR_MILES ld [wWhichTrade], a predef DoInGameTradeDialogue jp TextScriptEnd diff --git a/scripts/Route6.asm b/scripts/Route6.asm index 0151c924..5fb24bac 100644 --- a/scripts/Route6.asm +++ b/scripts/Route6.asm @@ -26,9 +26,9 @@ Route6_TextPointers: Route6TrainerHeaders: def_trainers Route6TrainerHeader0: - trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6CooltrainerM1BattleText, Route6CooltrainerM1EndBattleText, Route6CooltrainerAfterBattleText + trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6CooltrainerM1BattleText, Route6CooltrainerM1EndBattleText, Route6CooltrainerM1AfterBattleText Route6TrainerHeader1: - trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6CooltrainerF1BattleText, Route6CooltrainerF1EndBattleText, Route6CooltrainerAfterBattleText + trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6CooltrainerF1BattleText, Route6CooltrainerF1EndBattleText, Route6CooltrainerF1AfterBattleText Route6TrainerHeader2: trainer EVENT_BEAT_ROUTE_6_TRAINER_2, 4, Route6Youngster1BattleText, Route6Youngster1EndBattleText, Route6Youngster1AfterBattleText Route6TrainerHeader3: @@ -53,8 +53,8 @@ Route6CooltrainerM1EndBattleText: text_far _Route6CooltrainerM1EndBattleText text_end -Route6CooltrainerAfterBattleText: ; used by both COOLTRAINER_M1 and COOLTRAINER_F1 - text_far _Route6CooltrainerAfterBattleText +Route6CooltrainerM1AfterBattleText: + text_far _Route6CooltrainerM1AfterBattleText text_end Route6CooltrainerF1Text: @@ -71,6 +71,10 @@ Route6CooltrainerF1EndBattleText: text_far _Route6CooltrainerF1EndBattleText text_end +Route6CooltrainerF1AfterBattleText: + text_far _Route6CooltrainerF1AfterBattleText + text_end + Route6Youngster1Text: text_asm ld hl, Route6TrainerHeader2 diff --git a/scripts/Route7.asm b/scripts/Route7.asm index f49822b3..7270a83c 100644 --- a/scripts/Route7.asm +++ b/scripts/Route7.asm @@ -1,5 +1,6 @@ Route7_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Route7_TextPointers: def_text_pointers diff --git a/scripts/Route8Gate.asm b/scripts/Route8Gate.asm index 533e45f6..d1204f74 100644 --- a/scripts/Route8Gate.asm +++ b/scripts/Route8Gate.asm @@ -28,7 +28,7 @@ Route8GateDefaultScript: ld hl, .PlayerInCoordsArray 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 a2bb6abb..281a44f3 100644 --- a/scripts/Route9.asm +++ b/scripts/Route9.asm @@ -16,7 +16,7 @@ Route9_ScriptPointers: Route9_TextPointers: def_text_pointers dw_const Route9CooltrainerF1Text, TEXT_ROUTE9_COOLTRAINER_F1 - dw_const Route9CooltrainerM1Text, TEXT_ROUTE9_COOLTRAINER_M1 + dw_const Route9AJText, TEXT_ROUTE9_COOLTRAINER_M1 dw_const Route9CooltrainerM2Text, TEXT_ROUTE9_COOLTRAINER_M2 dw_const Route9CooltrainerF2Text, TEXT_ROUTE9_COOLTRAINER_F2 dw_const Route9Hiker1Text, TEXT_ROUTE9_HIKER1 @@ -32,7 +32,7 @@ Route9TrainerHeaders: Route9TrainerHeader0: trainer EVENT_BEAT_ROUTE_9_TRAINER_0, 3, Route9CooltrainerF1BattleText, Route9CooltrainerF1EndBattleText, Route9CooltrainerF1AfterBattleText Route9TrainerHeader1: - trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9CooltrainerM1BattleText, Route9CooltrainerM1EndBattleText, Route9CooltrainerM1AfterBattleText + trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9AJBattleText, Route9AJEndBattleText, Route9AJAfterBattleText Route9TrainerHeader2: trainer EVENT_BEAT_ROUTE_9_TRAINER_2, 4, Route9CooltrainerM2BattleText, Route9CooltrainerM2EndBattleText, Route9CooltrainerM2AfterBattleText Route9TrainerHeader3: @@ -54,7 +54,7 @@ Route9CooltrainerF1Text: ld hl, Route9TrainerHeader0 jr Route9TalkToTrainer -Route9CooltrainerM1Text: +Route9AJText: text_asm ld hl, Route9TrainerHeader1 jr Route9TalkToTrainer @@ -108,16 +108,16 @@ Route9CooltrainerF1AfterBattleText: text_far _Route9CooltrainerF1AfterBattleText text_end -Route9CooltrainerM1BattleText: - text_far _Route9CooltrainerM1BattleText +Route9AJBattleText: + text_far _Route9AJBattleText text_end -Route9CooltrainerM1EndBattleText: - text_far _Route9CooltrainerM1EndBattleText +Route9AJEndBattleText: + text_far _Route9AJEndBattleText text_end -Route9CooltrainerM1AfterBattleText: - text_far _Route9CooltrainerM1AfterBattleText +Route9AJAfterBattleText: + text_far _Route9AJAfterBattleText text_end Route9CooltrainerM2BattleText: diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm index ee860fd9..2d98c513 100644 --- a/scripts/SSAnne2F.asm +++ b/scripts/SSAnne2F.asm @@ -25,9 +25,7 @@ SSAnne2FDefaultScript: ld hl, .PlayerCoordinatesArray 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 @@ -99,23 +97,8 @@ SSAnne2FRivalStartBattleScript: 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 SSAnne2FSetFacingDirectionScript ld a, SCRIPT_SSANNE2F_RIVAL_AFTER_BATTLE ld [wSSAnne2FCurScript], a @@ -145,9 +128,7 @@ SSAnne2FRivalAfterBattleScript: ld a, SSANNE2F_RIVAL ldh [hSpriteIndex], a call MoveSprite - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, SCRIPT_SSANNE2F_RIVAL_EXIT ld [wSSAnne2FCurScript], a diff --git a/scripts/SSAnne2FRooms.asm b/scripts/SSAnne2FRooms.asm index 3358759d..30266610 100644 --- a/scripts/SSAnne2FRooms.asm +++ b/scripts/SSAnne2FRooms.asm @@ -1,8 +1,5 @@ SSAnne2FRooms_Script: - ld a, 1 << BIT_NO_AUTO_TEXT_BOX - ld [wAutoTextBoxDrawingControl], a - xor a - ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call DisableAutoTextBoxDrawing ld hl, SSAnne9TrainerHeaders ld de, SSAnne2FRooms_ScriptPointers ld a, [wSSAnne2FRoomsCurScript] @@ -104,44 +101,24 @@ SSAnne2FRoomsGrampsText: SSAnne2FRoomsGentleman5Text: text_asm - ld hl, .Text - call PrintText + farcall SSAnne2FRoomsPrintGentleman5Text jp TextScriptEnd -.Text: - text_far _SSAnne2FRoomsGentleman5Text - text_end - SSAnne2FRoomsLittleBoyText: text_asm - ld hl, .Text - call PrintText + farcall SSAnne2FRoomsPrintLittleBoyText jp TextScriptEnd -.Text: - text_far _SSAnne2FRoomsLittleBoyText - text_end - SSAnne2FRoomsBrunetteGirlText: text_asm - ld hl, .Text - call PrintText + farcall SSAnne2FRoomsPrintBrunetteGirlText jp TextScriptEnd -.Text: - text_far _SSAnne2FRoomsBrunetteGirlText - text_end - SSAnne2FRoomsBeautyText: text_asm - ld hl, .Text - call PrintText + farcall SSAnne2FRoomsPrintBeautyText jp TextScriptEnd -.Text: - text_far _SSAnne2FRoomsBeautyText - text_end - SSAnne2FRoomsGentleman1BattleText: text_far _SSAnne2FRoomsGentleman1BattleText text_end diff --git a/scripts/SSAnne2FRooms_2.asm b/scripts/SSAnne2FRooms_2.asm new file mode 100644 index 00000000..a6029ac2 --- /dev/null +++ b/scripts/SSAnne2FRooms_2.asm @@ -0,0 +1,35 @@ +SSAnne2FRoomsPrintGentleman5Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _SSAnne2FRoomsGentleman5Text + text_end + +SSAnne2FRoomsPrintLittleBoyText:: + ld hl, .text + call PrintText + ret + +.text + text_far _SSAnne2FRoomsLittleBoyText + text_end + +SSAnne2FRoomsPrintBrunetteGirlText:: + ld hl, .text + call PrintText + ret + +.text + text_far _SSAnne2FRoomsBrunetteGirlText + text_end + +SSAnne2FRoomsPrintBeautyText:: + ld hl, .text + call PrintText + ret + +.text + text_far _SSAnne2FRoomsBeautyText + text_end diff --git a/scripts/SSAnneCaptainsRoom.asm b/scripts/SSAnneCaptainsRoom.asm index bac424e8..1c49245b 100644 --- a/scripts/SSAnneCaptainsRoom.asm +++ b/scripts/SSAnneCaptainsRoom.asm @@ -3,7 +3,7 @@ SSAnneCaptainsRoom_Script: jp EnableAutoTextBoxDrawing SSAnneCaptainsRoomEventScript: - CheckEvent EVENT_RUBBED_CAPTAINS_BACK + CheckEvent EVENT_GOT_HM01 ret nz ld hl, wStatusFlags3 set BIT_NO_NPC_FACE_PLAYER, [hl] @@ -29,12 +29,12 @@ SSAnneCaptainsRoomCaptainText: ld hl, SSAnneCaptainsRoomCaptainReceivedHM01Text call PrintText SetEvent EVENT_GOT_HM01 + ld hl, wStatusFlags3 + res BIT_NO_NPC_FACE_PLAYER, [hl] jr .done .bag_full ld hl, SSAnneCaptainsRoomCaptainHM01NoRoomText call PrintText - ld hl, wStatusFlags3 - set BIT_NO_NPC_FACE_PLAYER, [hl] jr .done .got_item ld hl, SSAnneCaptainsRoomCaptainNotSickAnymoreText @@ -49,9 +49,7 @@ SSAnneCaptainsRoomRubCaptainsBackText: cp BANK("Audio Engine 3") ld [wAudioSavedROMBank], a jr nz, .not_audio_engine_3 - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld a, BANK(Music_PkmnHealed) ld [wAudioROMBank], a .not_audio_engine_3 diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm index 3052cac9..0e1a05bf 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: def_script_pointers @@ -87,6 +88,8 @@ SafariZoneGateLeavingSafariScript: call DisplayTextID xor a ld [wNumSafariBalls], a + ld [wSafariSteps], a + ld [wSafariSteps], a ; ????? ld a, PAD_DOWN ld c, 3 call SafariZoneEntranceAutoWalk @@ -146,84 +149,10 @@ SafariZoneGateSafariZoneWorker1Text: text_end SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText: - text_far _SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText 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, PAD_UP - ld c, 3 - call SafariZoneEntranceAutoWalk - SetEvent EVENT_IN_SAFARI_ZONE - ResetEventReuseHL EVENT_SAFARI_GAME_OVER - ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING - ld [wSafariZoneGateCurScript], a - jr .done - -.PleaseComeAgain - ld hl, .PleaseComeAgainText - call PrintText -.CantPayWalkDown - ld a, PAD_DOWN - ld c, 1 - call SafariZoneEntranceAutoWalk - ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN - ld [wSafariZoneGateCurScript], a -.done + callfar SafariZoneGatePrintSafariZoneWorker1WouldYouLikeToJoinText jp TextScriptEnd -.MakePaymentText - text_far _SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText - sound_get_item_1 - text_far _SafariZoneGateSafariZoneWorker1CallYouOnThePAText - text_end - -.PleaseComeAgainText - text_far _SafariZoneGateSafariZoneWorker1PleaseComeAgainText - text_end - -.NotEnoughMoneyText - text_far _SafariZoneGateSafariZoneWorker1NotEnoughMoneyText - text_end - SafariZoneGateSafariZoneWorker1LeavingEarlyText: text_far _SafariZoneGateSafariZoneWorker1LeavingEarlyText text_asm @@ -271,26 +200,5 @@ SafariZoneGateSafariZoneWorker1GoodHaulComeAgainText: SafariZoneGateSafariZoneWorker2Text: text_asm - ld hl, .FirstTimeHereText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - ld hl, .YoureARegularHereText - jr nz, .print_text - ld hl, .SafariZoneExplanationText -.print_text - call PrintText + callfar SafariZoneGatePrintSafariZoneWorker2Text jp TextScriptEnd - -.FirstTimeHereText - text_far _SafariZoneGateSafariZoneWorker2FirstTimeHereText - text_end - -.SafariZoneExplanationText - text_far _SafariZoneGateSafariZoneWorker2SafariZoneExplanationText - text_end - -.YoureARegularHereText - text_far _SafariZoneGateSafariZoneWorker2YoureARegularHereText - text_end diff --git a/scripts/SafariZoneGate_2.asm b/scripts/SafariZoneGate_2.asm new file mode 100644 index 00000000..819c2cc2 --- /dev/null +++ b/scripts/SafariZoneGate_2.asm @@ -0,0 +1,252 @@ +SafariZoneGatePrintSafariZoneWorker1WouldYouLikeToJoinText:: + ld hl, .WelcomeText + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .PleaseComeAgain + ld hl, wPlayerMoney + ld a, [hli] + or [hl] + inc hl + or [hl] + jr nz, .has_positive_balance + call SafariZoneEntranceGetLowCostAdmissionText + jr c, .CantPayWalkDown + jr .poor_mans_discount + +.has_positive_balance + 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 + call SafariZoneEntranceCalculateLowCostAdmission + jr c, .CantPayWalkDown + jr .poor_mans_discount + +.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, 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, PAD_UP + ld c, 3 + call SafariZoneEntranceAutoWalk2 + SetEvent EVENT_IN_SAFARI_ZONE + ResetEventReuseHL EVENT_SAFARI_GAME_OVER + ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING + ld [wSafariZoneGateCurScript], a + jr .done + +.PleaseComeAgain + ld hl, .PleaseComeAgainText + call PrintText +.CantPayWalkDown + ld a, PAD_DOWN + ld c, 1 + call SafariZoneEntranceAutoWalk2 + ld a, SCRIPT_SAFARIZONEGATE_PLAYER_MOVING_DOWN + ld [wSafariZoneGateCurScript], a +.done + ret + +.WelcomeText + text_far _SafariZoneGateSafariZoneWorker1WouldYouLikeToJoinText + text_end + +.MakePaymentText + text_far _SafariZoneGateSafariZoneWorker1ThatllBe500PleaseText + sound_get_item_1 + text_far _SafariZoneGateSafariZoneWorker1CallYouOnThePAText + text_end + +.PleaseComeAgainText + text_far _SafariZoneGateSafariZoneWorker1PleaseComeAgainText + text_end + +.NotEnoughMoneyText + text_far _SafariZoneGateSafariZoneWorker1NotEnoughMoneyText + text_end + +SafariZoneGatePrintSafariZoneWorker2Text:: + ld hl, .FirstTimeHereText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, .YoureARegularHereText + jr nz, .print_text + ld hl, .SafariZoneExplanationText +.print_text + call PrintText + ret + +.FirstTimeHereText + text_far _SafariZoneGateSafariZoneWorker2FirstTimeHereText + text_end + +.SafariZoneExplanationText + text_far _SafariZoneGateSafariZoneWorker2SafariZoneExplanationText + text_end + +.YoureARegularHereText + text_far _SafariZoneGateSafariZoneWorker2YoureARegularHereText + text_end + +SafariZoneEntranceAutoWalk2: + push af + ld b, 0 + ld a, c + ld [wSimulatedJoypadStatesIndex], a + ld hl, wSimulatedJoypadStatesEnd + 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 4a21b463..6b116aee 100644 --- a/scripts/SaffronPokecenter.asm +++ b/scripts/SaffronPokecenter.asm @@ -8,6 +8,7 @@ SaffronPokecenter_TextPointers: dw_const SaffronPokecenterBeautyText, TEXT_SAFFRONPOKECENTER_BEAUTY dw_const SaffronPokecenterGentlemanText, TEXT_SAFFRONPOKECENTER_GENTLEMAN dw_const SaffronPokecenterLinkReceptionistText, TEXT_SAFFRONPOKECENTER_LINK_RECEPTIONIST + dw_const SaffronPokecenterChanseyText, TEXT_SAFFRONPOKECENTER_CHANSEY SaffronPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ SaffronPokecenterGentlemanText: SaffronPokecenterLinkReceptionistText: script_cable_club_receptionist + +SaffronPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/SeafoamIslandsB4F.asm b/scripts/SeafoamIslandsB4F.asm index 40ecee0a..e4df261d 100644 --- a/scripts/SeafoamIslandsB4F.asm +++ b/scripts/SeafoamIslandsB4F.asm @@ -6,8 +6,9 @@ SeafoamIslandsB4F_Script: SeafoamIslandsB4FResetScript: 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 75c545e3..5b72e3f8 100644 --- a/scripts/SilphCo11F.asm +++ b/scripts/SilphCo11F.asm @@ -21,7 +21,8 @@ SilphCo11FGateCallbackScript: ld a, $20 ld [wNewTileBlockID], a lb bc, 6, 3 - predef_jump ReplaceTileBlock + predef ReplaceTileBlock + ret SilphCo11GateCoords: dbmapcoord 3, 6 @@ -70,81 +71,6 @@ SilphCo11FSetUnlockedDoorEventScript: SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret -SilphCo11FTeamRocketLeavesScript: - ld hl, .HideMissableObjectIDs -.hide_loop - ld a, [hli] - cp $ff - jr z, .done_hiding - push hl - ld [wMissableObjectIndex], a - predef HideObject - pop hl - jr .hide_loop -.done_hiding - ld hl, .ShowMissableObjectIDs -.show_loop - ld a, [hli] - cp -1 - ret z - push hl - ld [wMissableObjectIndex], a - predef ShowObject - pop hl - jr .show_loop - -.ShowMissableObjectIDs: - 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 - -.HideMissableObjectIDs: - 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 - SilphCo11FResetCurScript: xor a ld [wJoyIgnore], a @@ -159,13 +85,33 @@ SilphCo11F_ScriptPointers: dw_const SilphCo11FDefaultScript, SCRIPT_SILPHCO11F_DEFAULT dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_SILPHCO11F_START_BATTLE dw_const EndTrainerBattle, SCRIPT_SILPHCO11F_END_BATTLE - dw_const SilphCo11FGiovanniBattleFacingScript, SCRIPT_SILPHCO11F_GIOVANNI_FACING - dw_const SilphCo11FGiovanniStartBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE dw_const SilphCo11FGiovanniAfterBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE + dw_const SilphCo11FGiovanniStartBattleScript, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE + dw_const SilphCo11FScript5, SCRIPT_SILPHCO11F_SCRIPT5 + dw_const SilphCo11FScript6, SCRIPT_SILPHCO11F_SCRIPT6 + dw_const SilphCo11FScript7, SCRIPT_SILPHCO11F_SCRIPT7 + dw_const SilphCo11FScript8, SCRIPT_SILPHCO11F_SCRIPT8 + dw_const SilphCo11FScript9, SCRIPT_SILPHCO11F_SCRIPT9 + dw_const SilphCo11FScript10, SCRIPT_SILPHCO11F_SCRIPT10 + dw_const SilphCo11FScript11, SCRIPT_SILPHCO11F_SCRIPT11 + dw_const SilphCo11FScript12, SCRIPT_SILPHCO11F_SCRIPT12 + dw_const SilphCo11FScript13, SCRIPT_SILPHCO11F_SCRIPT13 + dw_const SilphCo11FScript14, SCRIPT_SILPHCO11F_SCRIPT14 SilphCo11FDefaultScript: - CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI +IF DEF(_DEBUG) + call DebugPressedOrHeldB + ret nz +ENDC + CheckEvent EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES + call z, SilphCo11FScript_6229c + CheckEvent EVENT_782 ret nz + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + call z, SilphCo11FScript_621c5 + ret + +SilphCo11FScript_621c5: ld hl, .PlayerCoordsArray call ArePlayerCoordsInArray jp nc, CheckFightingMapTrainers @@ -183,8 +129,9 @@ SilphCo11FDefaultScript: call SetSpriteMovementBytesToFF ld de, .GiovanniMovement call MoveSprite - ld a, SCRIPT_SILPHCO11F_GIOVANNI_FACING - jp SilphCo11FSetCurScript + ld a, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE + call SilphCo11FSetCurScript + ret .PlayerCoordsArray: dbmapcoord 6, 13 @@ -197,13 +144,13 @@ SilphCo11FDefaultScript: db NPC_MOVEMENT_DOWN db -1 ; end -SilphCo11FSetPlayerAndSpriteFacingDirectionScript: +SilphCo11FScript_621ff: ld [wPlayerMovingDirection], a - ld a, SILPHCO11F_GIOVANNI - ldh [hSpriteIndex], a ld a, b - ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + ld [wSprite03StateData1FacingDirection], a + ld a, $2 + ld [wSprite03StateData1MovementStatus], a + ret SilphCo11FGiovanniAfterBattleScript: ld a, [wIsInBattle] @@ -219,14 +166,14 @@ SilphCo11FGiovanniAfterBattleScript: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .continue - call SilphCo11FSetPlayerAndSpriteFacingDirectionScript + call SilphCo11FScript_621ff ld a, PAD_CTRL_PAD ld [wJoyIgnore], a ld a, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS ldh [hTextID], a call DisplayTextID call GBFadeOutToBlack - call SilphCo11FTeamRocketLeavesScript + farcall SilphCo11FTeamRocketLeavesScript call UpdateSprites call Delay3 call GBFadeInFromBlack @@ -235,7 +182,7 @@ SilphCo11FGiovanniAfterBattleScript: ld [wJoyIgnore], a jp SilphCo11FSetCurScript -SilphCo11FGiovanniBattleFacingScript: +SilphCo11FGiovanniStartBattleScript: ld a, [wStatusFlags5] bit BIT_SCRIPTED_NPC_MOVEMENT, a ret nz @@ -252,12 +199,10 @@ SilphCo11FGiovanniBattleFacingScript: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .continue - call SilphCo11FSetPlayerAndSpriteFacingDirectionScript + call SilphCo11FScript_621ff call Delay3 - ld a, SCRIPT_SILPHCO11F_GIOVANNI_START_BATTLE - jp SilphCo11FSetCurScript - -SilphCo11FGiovanniStartBattleScript: + xor a + ld [wJoyIgnore], a ld hl, wStatusFlags3 set BIT_TALKED_TO_TRAINER, [hl] set BIT_PRINT_END_BATTLE_TEXT, [hl] @@ -268,28 +213,312 @@ SilphCo11FGiovanniStartBattleScript: ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters - xor a - ld [wJoyIgnore], a ld a, SCRIPT_SILPHCO11F_GIOVANNI_AFTER_BATTLE jp SilphCo11FSetCurScript +SilphCo11FScript_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, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_SILPHCO11F_TEXT8 + ldh [hTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + SetEvent EVENT_782 + ld a, SCRIPT_SILPHCO11F_SCRIPT5 + call SilphCo11FSetCurScript + ret + +SilphCo11FMovementData_622f5: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11FMovementData_622fb: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11FMovementData_62300: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11FMovementData_62305: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11FMovementData_6230b: + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11FMovementData_62311: + db $5 + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11FScript5: + ld de, SilphCo11FMovementData_622f5 + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6232d + ld de, SilphCo11FMovementData_62300 + cp $1 + jr z, .asm_6232d + ld de, SilphCo11FMovementData_6230b +.asm_6232d + ld a, SILPHCO11F_JAMES + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_SILPHCO11F_SCRIPT6 + call SilphCo11FSetCurScript + ret + +SilphCo11FScript6: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz +SilphCo11FScript7: + 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, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a +SilphCo11FScript8: + ld de, SilphCo11FMovementData_622fb + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6237b + ld de, SilphCo11FMovementData_62305 + cp $1 + jr z, .asm_6237b + ld de, SilphCo11FMovementData_62311 +.asm_6237b + ld a, SILPHCO11F_JESSIE + ldh [hSpriteIndex], a + call MoveSprite + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_SILPHCO11F_SCRIPT9 + call SilphCo11FSetCurScript + ret + +SilphCo11FScript9: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a +SilphCo11FScript10: + 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, TEXT_SILPHCO11F_TEXT9 + ldh [hTextID], a + call DisplayTextID +SilphCo11FScript11: + ld hl, wStatusFlags3 + set BIT_TALKED_TO_TRAINER, [hl] + set BIT_PRINT_END_BATTLE_TEXT, [hl] + ld hl, SilphCo11FText_624c2 + ld de, SilphCo11FText_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, SCRIPT_SILPHCO11F_SCRIPT12 + call SilphCo11FSetCurScript + ret + +SilphCo11FScript12: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo11FResetCurScript + ld a, $2 + ld [wSprite04StateData1MovementStatus], a + ld [wSprite06StateData1MovementStatus], a + xor a + ld [wSprite04StateData1FacingDirection], a + ld [wSprite06StateData1FacingDirection], a + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, TEXT_SILPHCO11F_TEXT10 + ldh [hTextID], 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, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_SILPHCO11F_SCRIPT13 + call SilphCo11FSetCurScript + ret + +SilphCo11FScript13: + ld a, PAD_BUTTONS | PAD_CTRL_PAD + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_SILPH_CO_11F_JAMES + call SilphCo11FScript_HideObject + ld a, HS_SILPH_CO_11F_JESSIE + call SilphCo11FScript_HideObject + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, SCRIPT_SILPHCO11F_SCRIPT14 + call SilphCo11FSetCurScript + ret + +SilphCo11FScript14: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ResetEvent EVENT_782 + SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_JESSIE_JAMES + ld a, SCRIPT_SILPHCO11F_DEFAULT + call SilphCo11FSetCurScript + ret + +SilphCo11FScript_ShowObject: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +SilphCo11FScript_HideObject: + ld [wMissableObjectIndex], a + predef HideObject + ret + SilphCo11F_TextPointers: def_text_pointers dw_const SilphCo11FSilphPresidentText, TEXT_SILPHCO11F_SILPH_PRESIDENT dw_const SilphCo11FBeautyText, TEXT_SILPHCO11F_BEAUTY dw_const SilphCo11FGiovanniText, TEXT_SILPHCO11F_GIOVANNI - dw_const SilphCo11FRocket1Text, TEXT_SILPHCO11F_ROCKET1 - dw_const SilphCo11FRocket2Text, TEXT_SILPHCO11F_ROCKET2 + dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_JAMES + dw_const SilphCo11FRocketText, TEXT_SILPHCO11F_ROCKET + dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_JESSIE dw_const SilphCo11FGiovanniYouRuinedOurPlansText, TEXT_SILPHCO11F_GIOVANNI_YOU_RUINED_OUR_PLANS + dw_const SilphCo11FJessieJamesText, TEXT_SILPHCO11F_TEXT8 + dw_const SilphCo11FText9, TEXT_SILPHCO11F_TEXT9 + dw_const SilphCo11FText10, TEXT_SILPHCO11F_TEXT10 SilphCo11TrainerHeaders: - def_trainers 4 + def_trainers 5 SilphCo11TrainerHeader0: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11FRocket1BattleText, SilphCo11FRocket1EndBattleText, SilphCo11FRocket1AfterBattleText -SilphCo11TrainerHeader1: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11FRocket2BattleText, SilphCo11FRocket2EndBattleText, SilphCo11FRocket2AfterBattleText + trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 3, SilphCo11FRocketBattleText, SilphCo11FRocketEndBattleText, SilphCo11FRocketAfterBattleText db -1 ; end +SilphCo11FJessieJamesText: + 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 + +SilphCo11FText9: + text_far _SilphCoJessieJamesText2 + text_end + +SilphCo11FText_624c2: + text_far _SilphCoJessieJamesText3 + text_end + +SilphCo11FText10: + text_far _SilphCoJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + SilphCo11FSilphPresidentText: text_asm CheckEvent EVENT_GOT_MASTER_BALL @@ -346,50 +575,20 @@ SilphCo11FGiovanniYouRuinedOurPlansText: text_far _SilphCo11FGiovanniYouRuinedOurPlansText text_end -SilphCo11FRocket1Text: +SilphCo11FRocketText: text_asm ld hl, SilphCo11TrainerHeader0 call TalkToTrainer jp TextScriptEnd -SilphCo11FRocket1BattleText: - text_far _SilphCo11FRocket1BattleText - text_end - -SilphCo11FRocket1EndBattleText: - text_far _SilphCo11FRocket1EndBattleText - text_end - -SilphCo11FRocket1AfterBattleText: - text_far _SilphCo11FRocket1AfterBattleText - text_end - -SilphCo11FRocket2Text: - text_asm - ld hl, SilphCo11TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -SilphCo11FRocket2BattleText: +SilphCo11FRocketBattleText: text_far _SilphCo11FRocket2BattleText text_end -SilphCo11FRocket2EndBattleText: +SilphCo11FRocketEndBattleText: text_far _SilphCo11FRocket2EndBattleText text_end -SilphCo11FRocket2AfterBattleText: +SilphCo11FRocketAfterBattleText: text_far _SilphCo11FRocket2AfterBattleText text_end - -SilphCo10FPorygonText: ; unreferenced - text_asm - ld hl, .Text - call PrintText - ld a, PORYGON - call DisplayPokedex - jp TextScriptEnd - -.Text: - text_far _SilphCo10FPorygonText - text_end diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm new file mode 100644 index 00000000..fbc5bb1b --- /dev/null +++ b/scripts/SilphCo11F_2.asm @@ -0,0 +1,75 @@ +SilphCo11FTeamRocketLeavesScript:: + ld hl, .HideMissableObjectIDs +.hide_loop + ld a, [hli] + cp $ff + jr z, .done_hiding + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .hide_loop +.done_hiding + ld hl, .ShowMissableObjectIDs +.show_loop + ld a, [hli] + cp -1 + ret z + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .show_loop + +.ShowMissableObjectIDs: + 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 + +.HideMissableObjectIDs: + 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 -1 ; end diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm index 29e5fdd3..dd67a6a2 100644 --- a/scripts/SilphCo7F.asm +++ b/scripts/SilphCo7F.asm @@ -131,9 +131,7 @@ SilphCo7FDefaultScript: 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 @@ -187,21 +185,11 @@ SilphCo7FRivalStartBattleScript: ld a, OPP_RIVAL2 ld [wCurOpponent], a ld a, [wRivalStarter] - cp STARTER2 - jr nz, .not_starter_2 - ld a, $7 - jr .set_trainer_no -.not_starter_2 - cp STARTER3 - jr nz, .no_starter_3 - ld a, $8 - jr .set_trainer_no -.no_starter_3 - ld a, $9 -.set_trainer_no + add 4 ld [wTrainerNo], a ld a, SCRIPT_SILPHCO7F_RIVAL_AFTER_BATTLE - jp SilphCo7FSetCurScript + call SilphCo7FSetCurScript + ret SilphCo7FRivalAfterBattleScript: ld a, [wIsInBattle] @@ -220,9 +208,7 @@ SilphCo7FRivalAfterBattleScript: ld a, TEXT_SILPHCO7F_RIVAL_GOOD_LUCK_TO_YOU ldh [hTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld de, .RivalWalkAroundPlayerMovement ld a, [wSavedCoordIndex] diff --git a/scripts/SummerBeachHouse.asm b/scripts/SummerBeachHouse.asm new file mode 100644 index 00000000..3842b45c --- /dev/null +++ b/scripts/SummerBeachHouse.asm @@ -0,0 +1,209 @@ +SummerBeachHouse_Script: + call EnableAutoTextBoxDrawing + ret + +SummerBeachHouse_TextPointers: + def_text_pointers + dw_const SummerBeachHouseSurfinDudeText, TEXT_SUMMERBEACHHOUSE_SURFINDUDE + dw_const SummerBeachHousePikachuText, TEXT_SUMMERBEACHHOUSE_PIKACHU + dw_const SummerBeachHousePoster1Text, TEXT_SUMMERBEACHHOUSE_POSTER1 + dw_const SummerBeachHousePoster2Text, TEXT_SUMMERBEACHHOUSE_POSTER2 + dw_const SummerBeachHousePoster3Text, TEXT_SUMMERBEACHHOUSE_POSTER3 + dw_const SummerBeachHousePrinterText, TEXT_SUMMERBEACHHOUSE_PRINTER + +SummerBeachHouseSurfinDudeText: + text_asm + ld a, [wd471] + vc_patch Bypass_need_Pikachu_with_Surf_for_minigame +IF DEF (_YELLOW_VC) + bit 7, a +ELSE + bit 6, a +ENDC + vc_patch_end + 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 _SummerBeachHouseSurfinDudeText1 + text_end +.SurfinDudeText2 + text_far _SummerBeachHouseSurfinDudeText2 + text_end +.SurfinDudeText3 + text_far _SummerBeachHouseSurfinDudeText3 + text_end +.SurfinDudeText4 + text_far _SummerBeachHouseSurfinDudeText4 + 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 + +SummerBeachHousePoster1Text: + text_asm + ld hl, .SummerBeachHousePoster1Text2 + ld a, [wd471] + bit 6, a + jr z, .next + ld hl, .SummerBeachHousePoster1Text1 +.next + call PrintText + jp TextScriptEnd + +.SummerBeachHousePoster1Text1 + text_far _SummerBeachHousePoster1Text1 + text_end +.SummerBeachHousePoster1Text2 + text_far _SummerBeachHousePoster1Text2 + text_end + +SummerBeachHousePoster2Text: + text_asm + ld hl, .SummerBeachHousePoster2Text2 + ld a, [wd471] + bit 6, a + jr z, .next + ld hl, .SummerBeachHousePoster2Text1 +.next + call PrintText + jp TextScriptEnd + +.SummerBeachHousePoster2Text1 + text_far _SummerBeachHousePoster2Text1 + text_end +.SummerBeachHousePoster2Text2 + text_far _SummerBeachHousePoster2Text2 + text_end + +SummerBeachHousePoster3Text: + text_asm + ld hl, .SummerBeachHousePoster3Text2 + ld a, [wd471] + bit 6, a + jr z, .next + ld hl, .SummerBeachHousePoster3Text1 +.next + call PrintText + jp TextScriptEnd + +.SummerBeachHousePoster3Text1 + text_far _SummerBeachHousePoster3Text1 + text_end +.SummerBeachHousePoster3Text2 + text_far _SummerBeachHousePoster3Text2 + text_end + +SummerBeachHousePrinterText: + text_asm + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, [wd471] + vc_patch Bypass_need_Pikachu_with_Surf_for_high_score +IF DEF(_YELLOW_VC) + bit 7, a +ELSE + bit 6, a +ENDC + vc_patch_end + 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, wStatusFlags5 + set BIT_NO_TEXT_DELAY, [hl] + xor a + ld [wUpdateSpritesEnabled], a + callfar Printer_PrepareSurfingMinigameHighScoreTileMap + call WaitForTextScrollButtonPress + ld hl, wStatusFlags5 + res BIT_NO_TEXT_DELAY, [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/SummerBeachHouse_2.asm b/scripts/SummerBeachHouse_2.asm new file mode 100644 index 00000000..6349a479 --- /dev/null +++ b/scripts/SummerBeachHouse_2.asm @@ -0,0 +1,33 @@ +Func_f23d0: + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wStatusFlags5 + set BIT_NO_TEXT_DELAY, [hl] + callfar PrintSurfingMinigameHighScore + ld hl, wStatusFlags5 + res BIT_NO_TEXT_DELAY, [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/UndergroundPathRoute5.asm b/scripts/UndergroundPathRoute5.asm index 6959c5a8..dead20ce 100644 --- a/scripts/UndergroundPathRoute5.asm +++ b/scripts/UndergroundPathRoute5.asm @@ -12,7 +12,7 @@ UndergroundPathRoute5_TextPointers: UndergroundPathRoute5LittleGirlText: text_asm - ld a, TRADE_FOR_SPOT + ld a, TRADE_FOR_RICKY ld [wWhichTrade], a predef DoInGameTradeDialogue ld hl, UndergroundPathEntranceRoute5_TextScriptEndingText diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm index 591e180c..1d9d790d 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 BIT_CUR_MAP_LOADED_2, [hl] res BIT_CUR_MAP_LOADED_2, [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_LEFT_FANCLUB_AFTER_BIKE_VOUCHER + ret nz + CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER + ret z + SetEventReuseHL EVENT_LEFT_FANCLUB_AFTER_BIKE_VOUCHER + ret .setFirstLockTrashCanIndex call Random + ldh a, [hRandomAdd] + ld b, a ldh a, [hRandomSub] + adc b and $e ld [wFirstLockTrashCanIndex], a ret @@ -41,10 +56,10 @@ VermilionCity_ScriptPointers: VermilionCityDefaultScript: 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 [wSavedCoordIndex], a ; unnecessary @@ -68,6 +83,9 @@ VermilionCityDefaultScript: ld [wVermilionCityCurScript], a ret +.return + ret + SSAnneTicketCheckCoords: dbmapcoord 18, 30 db -1 ; end @@ -122,6 +140,7 @@ VermilionCity_TextPointers: dw_const VermilionCityGambler2Text, TEXT_VERMILIONCITY_GAMBLER2 dw_const VermilionCityMachopText, TEXT_VERMILIONCITY_MACHOP dw_const VermilionCitySailor2Text, TEXT_VERMILIONCITY_SAILOR2 + dw_const VermilionCityOfficerJennyText, TEXT_VERMILIONCITY_OFFICER_JENNY dw_const VermilionCitySignText, TEXT_VERMILIONCITY_SIGN dw_const VermilionCityNoticeSignText, TEXT_VERMILIONCITY_NOTICE_SIGN dw_const MartSignText, TEXT_VERMILIONCITY_MART_SIGN @@ -239,21 +258,31 @@ VermilionCitySailor2Text: text_end VermilionCitySignText: - text_far _VermilionCitySignText - text_end + text_asm + farcall VermilionCityPrintSignText + jp TextScriptEnd VermilionCityNoticeSignText: - text_far _VermilionCityNoticeSignText - text_end + text_asm + farcall VermilionCityPrintNoticeSignText + jp TextScriptEnd VermilionCityPokemonFanClubSignText: - text_far _VermilionCityPokemonFanClubSignText - text_end + text_asm + farcall VermilionCityPrintPokemonFanClubSignText + jp TextScriptEnd VermilionCityGymSignText: - text_far _VermilionCityGymSignText - text_end + text_asm + farcall VermilionCityPrintGymSignText + jp TextScriptEnd VermilionCityHarborSignText: - text_far _VermilionCityHarborSignText - text_end + text_asm + farcall VermilionCityPrintHarborSignText + jp TextScriptEnd + +VermilionCityOfficerJennyText: + text_asm + farcall VermilionCityPrintOfficerJennyText + jp TextScriptEnd diff --git a/scripts/VermilionCity_2.asm b/scripts/VermilionCity_2.asm new file mode 100644 index 00000000..c6cd9478 --- /dev/null +++ b/scripts/VermilionCity_2.asm @@ -0,0 +1,111 @@ +VermilionCityPrintOfficerJennyText:: + CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + jr nz, .asm_f1a69 + ld a, [wBeatGymFlags] + bit BIT_THUNDERBADGE, a + 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 [wNamedObjectIndex], a + ld [wCurPartySpecies], 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 + +VermilionCityPrintSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _VermilionCitySignText + text_end + +VermilionCityPrintNoticeSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _VermilionCityNoticeSignText + text_end + +VermilionCityPrintPokemonFanClubSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _VermilionCityPokemonFanClubSignText + text_end + +VermilionCityPrintGymSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _VermilionCityGymSignText + text_end + +VermilionCityPrintHarborSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _VermilionCityHarborSignText + text_end diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm index 237b4175..3cd26619 100644 --- a/scripts/VermilionDock.asm +++ b/scripts/VermilionDock.asm @@ -38,10 +38,9 @@ VermilionDock_Script: VermilionDockSSAnneLeavesScript: 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 @@ VermilionDockSSAnneLeavesScript: ldh [hAutoBGTransferEnabled], a ld [wSSAnneSmokeDriftAmount], a ldh [rOBP1], a + call UpdateCGBPal_OBP1 ld a, 88 ld [wSSAnneSmokeX], a ld hl, wMapViewVRAMPointer diff --git a/scripts/VermilionPokecenter.asm b/scripts/VermilionPokecenter.asm index 481a8148..0db74128 100644 --- a/scripts/VermilionPokecenter.asm +++ b/scripts/VermilionPokecenter.asm @@ -8,6 +8,7 @@ VermilionPokecenter_TextPointers: dw_const VermilionPokecenterFishingGuruText, TEXT_VERMILIONPOKECENTER_FISHING_GURU dw_const VermilionPokecenterSailorText, TEXT_VERMILIONPOKECENTER_SAILOR dw_const VermilionPokecenterLinkReceptionistText, TEXT_VERMILIONPOKECENTER_LINK_RECEPTIONIST + dw_const VermilionPokecenterChanseyText, TEXT_VERMILIONPOKECENTER_CHANSEY VermilionPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ VermilionPokecenterSailorText: VermilionPokecenterLinkReceptionistText: script_cable_club_receptionist + +VermilionPokecenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/VermilionTradeHouse.asm b/scripts/VermilionTradeHouse.asm index 67ce62ee..f190eded 100644 --- a/scripts/VermilionTradeHouse.asm +++ b/scripts/VermilionTradeHouse.asm @@ -3,11 +3,8 @@ VermilionTradeHouse_Script: VermilionTradeHouse_TextPointers: def_text_pointers - dw_const VermilionTradeHouseLittleGirlText, TEXT_VERMILIONTRADEHOUSE_LITTLE_GIRL + dw_const VermilionTradeHouseGentlemanText, TEXT_VERMILIONTRADEHOUSE_GENTLEMAN -VermilionTradeHouseLittleGirlText: - text_asm - ld a, TRADE_FOR_DUX - ld [wWhichTrade], a - predef DoInGameTradeDialogue - jp TextScriptEnd +VermilionTradeHouseGentlemanText: + text_far TeachingHMsText + text_end diff --git a/scripts/VictoryRoad1F.asm b/scripts/VictoryRoad1F.asm index 554ae39f..1ba1a069 100644 --- a/scripts/VictoryRoad1F.asm +++ b/scripts/VictoryRoad1F.asm @@ -30,6 +30,9 @@ VictoryRoad1FDefaultScript: ld hl, .SwitchCoords call CheckBoulderCoords jp nc, CheckFightingMapTrainers + ldh a, [hSpriteIndex] + cp PIKACHU_SPRITE_INDEX + jp z, CheckFightingMapTrainers ld hl, wCurrentMapScriptFlags set BIT_CUR_MAP_LOADED_1, [hl] SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH diff --git a/scripts/VictoryRoad2F.asm b/scripts/VictoryRoad2F.asm index 85356247..0d91ce33 100644 --- a/scripts/VictoryRoad2F.asm +++ b/scripts/VictoryRoad2F.asm @@ -46,6 +46,9 @@ VictoryRoad2FDefaultScript: ld hl, .SwitchCoords call CheckBoulderCoords jp nc, CheckFightingMapTrainers + ldh a, [hSpriteIndex] + cp PIKACHU_SPRITE_INDEX + 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 2b1b11c0..ec042e48 100644 --- a/scripts/VictoryRoad3F.asm +++ b/scripts/VictoryRoad3F.asm @@ -37,6 +37,9 @@ VictoryRoad3FDefaultScript: ld a, [wCoordIndex] cp $1 jr nz, .handle_hole + ldh a, [hSpriteIndex] + cp $f ; Pikachu + jp z, .check_switch_hole ld hl, wCurrentMapScriptFlags set BIT_CUR_MAP_LOADED_1, [hl] SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1 diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm index e30f41f1..07646f1a 100644 --- a/scripts/ViridianCity.asm +++ b/scripts/ViridianCity.asm @@ -2,18 +2,33 @@ ViridianCity_Script: call EnableAutoTextBoxDrawing ld hl, ViridianCity_ScriptPointers ld a, [wViridianCityCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret ViridianCity_ScriptPointers: def_script_pointers - dw_const ViridianCityDefaultScript, SCRIPT_VIRIDIANCITY_DEFAULT - dw_const ViridianCityOldManStartCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING - dw_const ViridianCityOldManEndCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING - dw_const ViridianCityPlayerMovingDownScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN + dw_const ViridianCityDefaultScript, SCRIPT_VIRIDIANCITY_DEFAULT + dw_const ViridianCityAfterPokedexScript, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX + dw_const ViridianCityPostCatchTraining, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING + dw_const ViridianCityOldManStartCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING + dw_const ViridianCityOldManEndCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING + dw_const ViridianCityPlayerMovingDownScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN + dw_const ViridianCityPlayerMovingDownPostTrainingScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING + dw_const ViridianCityOldManInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING + dw_const ViridianCityOldManEndInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING + dw_const ViridianCityPostInitialCatchTraining, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING + dw_const ViridianCityOldManMovingDownScript, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN ViridianCityDefaultScript: call ViridianCityCheckGymOpenScript - jp ViridianCityCheckGotPokedexScript + call ViridianCityCheckSleepingOldMan + ret + +ViridianCityAfterPokedexScript: + call ViridianCityCheckWaitingOldMan +ViridianCityPostCatchTraining: + call ViridianCityCheckGymOpenScript + ret ViridianCityCheckGymOpenScript: CheckEvent EVENT_VIRIDIAN_GYM_OPEN @@ -33,16 +48,29 @@ ViridianCityCheckGymOpenScript: ld a, TEXT_VIRIDIANCITY_GYM_LOCKED ldh [hTextID], a call DisplayTextID + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, PAD_DOWN + ld [wSimulatedJoypadStatesEnd], a xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld [wJoyIgnore], a ldh [hJoyHeld], a - call ViridianCityMovePlayerDownScript - ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN + ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING ld [wViridianCityCurScript], a ret -ViridianCityCheckGotPokedexScript: - CheckEvent EVENT_GOT_POKEDEX +ViridianCityPlayerMovingDownPostTrainingScript: + ld a, [wSimulatedJoypadStatesIndex] + and a ret nz + call Delay3 + ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING + ld [wViridianCityCurScript], a + ret + +ViridianCityCheckSleepingOldMan: ld a, [wYCoord] cp 9 ret nz @@ -60,6 +88,25 @@ ViridianCityCheckGotPokedexScript: ret ViridianCityOldManStartCatchTrainingScript: + call .SetupSprite + call .SetupBattle + ResetEvent EVENT_INITIAL_CATCH_TRAINING + ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING + ld [wViridianCityCurScript], a + ret + +.SetupBattle: + xor a + ld [wListScrollOffset], a + ld a, BATTLE_TYPE_OLD_MAN + ld [wBattleType], a + ld a, 5 + ld [wCurEnemyLevel], a + ld a, RATTATA + ld [wCurOpponent], a + ret + +.SetupSprite: ld a, [wSprite03StateData1YPixels] ldh [hSpriteScreenYCoord], a ld a, [wSprite03StateData1XPixels] @@ -68,31 +115,13 @@ ViridianCityOldManStartCatchTrainingScript: ldh [hSpriteMapYCoord], a ld a, [wSprite03StateData2MapX] ldh [hSpriteMapXCoord], a - xor a - ld [wListScrollOffset], a - - ; set up battle for Old Man - ld a, BATTLE_TYPE_OLD_MAN - ld [wBattleType], a - ld a, 5 - ld [wCurEnemyLevel], a - ld a, WEEDLE - ld [wCurOpponent], a - ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING - ld [wViridianCityCurScript], a ret ViridianCityOldManEndCatchTrainingScript: - ldh a, [hSpriteScreenYCoord] - ld [wSprite03StateData1YPixels], a - ldh a, [hSpriteScreenXCoord] - ld [wSprite03StateData1XPixels], a - ldh a, [hSpriteMapYCoord] - ld [wSprite03StateData2MapY], a - ldh a, [hSpriteMapXCoord] - ld [wSprite03StateData2MapX], a + call .SetupSprite call UpdateSprites call Delay3 + SetEvent EVENT_COMPLETED_CATCH_TRAINING_AGAIN xor a ld [wJoyIgnore], a ld a, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET @@ -101,10 +130,21 @@ ViridianCityOldManEndCatchTrainingScript: xor a ld [wBattleType], a ld [wJoyIgnore], a - ld a, SCRIPT_VIRIDIANCITY_DEFAULT + ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING ld [wViridianCityCurScript], a ret +.SetupSprite: + ldh a, [hSpriteScreenYCoord] + ld [wSprite03StateData1YPixels], a + ldh a, [hSpriteScreenXCoord] + ld [wSprite03StateData1XPixels], a + ldh a, [hSpriteMapYCoord] + ld [wSprite03StateData2MapY], a + ldh a, [hSpriteMapXCoord] + ld [wSprite03StateData2MapX], a + ret + ViridianCityPlayerMovingDownScript: ld a, [wSimulatedJoypadStatesIndex] and a @@ -125,6 +165,96 @@ ViridianCityMovePlayerDownScript: ld [wJoyIgnore], a ret +ViridianCityCheckWaitingOldMan: + CheckEvent EVENT_COMPLETED_CATCH_TRAINING + ret nz + ld a, [wYCoord] + cp 9 + ret nz + ld a, [wXCoord] + cp 19 + ret nz + ld a, VIRIDIANCITY_OLD_MAN2 + ldh [hSpriteIndex], a + ld a, SPRITE_FACING_RIGHT + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld a, SPRITE_FACING_LEFT + ld [wSpritePlayerStateData1FacingDirection], a + ld a, TEXT_VIRIDIANCITY_OLD_MAN2 + ldh [hTextID], a + call DisplayTextID + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ret + +ViridianCityOldManInitialCatchTrainingScript: + call ViridianCityOldManStartCatchTrainingScript.SetupSprite + call ViridianCityOldManStartCatchTrainingScript.SetupBattle + SetEvent EVENT_INITIAL_CATCH_TRAINING + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING + ld [wViridianCityCurScript], a + ret + +ViridianCityOldManEndInitialCatchTrainingScript: + call ViridianCityOldManEndCatchTrainingScript.SetupSprite + call UpdateSprites + call Delay3 + SetEvent EVENT_COMPLETED_CATCH_TRAINING + ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD + ld [wJoyIgnore], a + ld a, TEXT_VIRIDIANCITY_OLD_MAN2 + ldh [hTextID], a + call DisplayTextID + xor a + ld [wBattleType], a + dec a + ld [wJoyIgnore], a + ld a, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING + ld [wViridianCityCurScript], a + ret + +ViridianCityPostInitialCatchTraining: + ld de, ViridianCityOldManMovementData2 + ld a, [wXCoord] + cp 19 + jr z, .move_old_man + callfar ViridianCityMovePikachu + ld de, ViridianCityOldManMovementData1 +.move_old_man + ld a, VIRIDIANCITY_OLD_MAN2 + ldh [hSpriteIndex], a + call MoveSprite + ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN + 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 + +ViridianCityOldManMovingDownScript: + ld a, [wStatusFlags5] + bit BIT_SCRIPTED_NPC_MOVEMENT, a + ret nz + ld a, HS_OLD_MAN_2 + ld [wMissableObjectIndex], a + predef HideObject + xor a + ld [wJoyIgnore], a + ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING + ld [wViridianCityCurScript], a + ret + ViridianCity_TextPointers: def_text_pointers dw_const ViridianCityYoungster1Text, TEXT_VIRIDIANCITY_YOUNGSTER1 @@ -134,6 +264,7 @@ ViridianCity_TextPointers: dw_const ViridianCityOldManSleepyText, TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY dw_const ViridianCityFisherText, TEXT_VIRIDIANCITY_FISHER dw_const ViridianCityOldManText, TEXT_VIRIDIANCITY_OLD_MAN + dw_const ViridianCityOldMan2Text, TEXT_VIRIDIANCITY_OLD_MAN2 dw_const ViridianCitySignText, TEXT_VIRIDIANCITY_SIGN dw_const ViridianCityTrainerTips1Text, TEXT_VIRIDIANCITY_TRAINER_TIPS1 dw_const ViridianCityTrainerTips2Text, TEXT_VIRIDIANCITY_TRAINER_TIPS2 @@ -144,150 +275,58 @@ ViridianCity_TextPointers: dw_const ViridianCityOldManYouNeedToWeakenTheTargetText, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET ViridianCityYoungster1Text: - text_far _ViridianCityYoungster1Text - text_end + text_asm + farcall ViridianCityPrintYoungster1Text + jp TextScriptEnd ViridianCityGambler1Text: text_asm - ld a, [wObtainedBadges] - cp ~(1 << BIT_EARTHBADGE) - ld hl, .GymLeaderReturnedText - jr z, .print_text - CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI - jr nz, .print_text - ld hl, .GymAlwaysClosedText -.print_text - call PrintText + farcall ViridianCityPrintGambler1Text jp TextScriptEnd -.GymAlwaysClosedText: - text_far _ViridianCityGambler1GymAlwaysClosedText - text_end - -.GymLeaderReturnedText: - text_far _ViridianCityGambler1GymLeaderReturnedText - text_end - ViridianCityYoungster2Text: text_asm - ld hl, .YouWantToKnowAboutText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .no - ld hl, .CaterpieAndWeedleDescriptionText - call PrintText - jr .text_script_end -.no - ld hl, .OkThenText - call PrintText -.text_script_end + farcall ViridianCityPrintYoungster2Text jp TextScriptEnd -.YouWantToKnowAboutText: - text_far _ViridianCityYoungster2YouWantToKnowAboutText - text_end - -.OkThenText: - text_far ViridianCityYoungster2OkThenText - text_end - -.CaterpieAndWeedleDescriptionText: - text_far ViridianCityYoungster2CaterpieAndWeedleDescriptionText - text_end - ViridianCityGirlText: text_asm - CheckEvent EVENT_GOT_POKEDEX - jr nz, .got_pokedex - ld hl, .HasntHadHisCoffeeYetText - call PrintText - jr .text_script_end -.got_pokedex - ld hl, .WhenIGoShopText - call PrintText -.text_script_end + farcall ViridianCityPrintGirlText jp TextScriptEnd -.HasntHadHisCoffeeYetText: - text_far _ViridianCityGirlHasntHadHisCoffeeYetText - text_end - -.WhenIGoShopText: - text_far _ViridianCityGirlWhenIGoShopText - text_end - ViridianCityOldManSleepyText: text_asm - ld hl, .PrivatePropertyText - call PrintText - call ViridianCityMovePlayerDownScript - ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN - ld [wViridianCityCurScript], a + farcall ViridianCityPrintOldManSleepyText jp TextScriptEnd -.PrivatePropertyText: - text_far _ViridianCityOldManSleepyPrivatePropertyText - text_end - ViridianCityFisherText: text_asm - CheckEvent EVENT_GOT_TM42 - jr nz, .got_item - ld hl, .YouCanHaveThisText - 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, .TM42ExplanationText - call PrintText -.done + farcall ViridianCityPrintFisherText jp TextScriptEnd -.YouCanHaveThisText: - text_far ViridianCityFisherYouCanHaveThisText - text_end - -.ReceivedTM42Text: - text_far _ViridianCityFisherReceivedTM42Text - sound_get_item_2 - text_end - -.TM42ExplanationText: - text_far _ViridianCityFisherTM42ExplanationText - text_end +ViridianCityOldManText: + text_asm + farcall ViridianCityPrintOldManText + jp TextScriptEnd -.TM42NoRoomText: - text_far _ViridianCityFisherTM42NoRoomText +ViridianCityOldManYouNeedToWeakenTheTargetText: + text_far _ViridianCityOldManYouNeedToWeakenTheTargetText text_end -ViridianCityOldManText: +ViridianCityOldMan2Text: text_asm + CheckEvent EVENT_COMPLETED_CATCH_TRAINING + jr nz, .completed_training ld hl, .HadMyCoffeeNowText call PrintText ld c, 2 call DelayFrames - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr z, .refused - ld hl, .KnowHowToCatchPokemonText - call PrintText - ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING + ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING ld [wViridianCityCurScript], a jr .done -.refused - ld hl, .TimeIsMoneyText + +.completed_training + ld hl, .LosingMyTouchText call PrintText .done jp TextScriptEnd @@ -296,34 +335,31 @@ ViridianCityOldManText: text_far _ViridianCityOldManHadMyCoffeeNowText text_end -.KnowHowToCatchPokemonText: - text_far _ViridianCityOldManKnowHowToCatchPokemonText - text_end - -.TimeIsMoneyText: - text_far _ViridianCityOldManTimeIsMoneyText - text_end - -ViridianCityOldManYouNeedToWeakenTheTargetText: - text_far _ViridianCityOldManYouNeedToWeakenTheTargetText +.LosingMyTouchText: + text_far _ViridianCityOldManLosingMyTouchText text_end ViridianCitySignText: - text_far _ViridianCitySignText - text_end + text_asm + farcall ViridianCityPrintSignText + jp TextScriptEnd ViridianCityTrainerTips1Text: - text_far _ViridianCityTrainerTips1Text - text_end + text_asm + farcall ViridianCityPrintTrainerTips1Text + jp TextScriptEnd ViridianCityTrainerTips2Text: - text_far _ViridianCityTrainerTips2Text - text_end + text_asm + farcall ViridianCityPrintTrainerTips2Text + jp TextScriptEnd ViridianCityGymSignText: - text_far _ViridianCityGymSignText - text_end + text_asm + farcall ViridianCityPrintGymSignText + jp TextScriptEnd ViridianCityGymLockedText: - text_far _ViridianCityGymLockedText - text_end + text_asm + farcall ViridianCityPrintGymLockedText + jp TextScriptEnd diff --git a/scripts/ViridianCity_2.asm b/scripts/ViridianCity_2.asm new file mode 100644 index 00000000..cd48e67b --- /dev/null +++ b/scripts/ViridianCity_2.asm @@ -0,0 +1,215 @@ +ViridianCityPrintYoungster1Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCityYoungster1Text + text_end + +ViridianCityPrintGambler1Text:: + ld hl, .GymLeaderReturnedText + ld a, [wObtainedBadges] + cp ~(1 << BIT_EARTHBADGE) + jr z, .print_text + CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI + jr nz, .print_text + ld hl, .GymAlwaysClosedText +.print_text + call PrintText + ret + +.GymAlwaysClosedText: + text_far _ViridianCityGambler1GymAlwaysClosedText + text_end + +.GymLeaderReturnedText: + text_far _ViridianCityGambler1GymLeaderReturnedText + text_end + +ViridianCityPrintYoungster2Text:: + ld hl, .YouWantToKnowAboutText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, .OkThenText + jr nz, .no + ld hl, .CaterpieAndWeedleDescriptionText +.no + call PrintText + ret + +.YouWantToKnowAboutText: + text_far _ViridianCityYoungster2YouWantToKnowAboutText + text_end + +.OkThenText: + text_far ViridianCityYoungster2OkThenText + text_end + +.CaterpieAndWeedleDescriptionText: + text_far ViridianCityYoungster2CaterpieAndWeedleDescriptionText + text_end + +ViridianCityPrintGirlText:: + ld hl, .WhenIGoShopText + CheckEvent EVENT_GOT_POKEDEX + jr nz, .got_pokedex + ld hl, .HasntHadHisCoffeeYetText +.got_pokedex + call PrintText + ret + +.HasntHadHisCoffeeYetText: + text_far _ViridianCityGirlHasntHadHisCoffeeYetText + text_end + +.WhenIGoShopText: + text_far _ViridianCityGirlWhenIGoShopText + text_end + +ViridianCityPrintOldManSleepyText:: + ld hl, .PrivatePropertyText + call PrintText + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, PAD_DOWN + ld [wSimulatedJoypadStatesEnd], a + ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN + ld [wViridianCityCurScript], a + ret + +.PrivatePropertyText: + text_far _ViridianCityOldManSleepyPrivatePropertyText + text_end + +ViridianCityPrintFisherText:: + CheckEvent EVENT_GOT_TM42 + jr nz, .got_item + ld hl, .YouCanHaveThisText + 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, .TM42ExplanationText + call PrintText + ret + +.YouCanHaveThisText: + text_far ViridianCityFisherYouCanHaveThisText + text_end + +.ReceivedTM42Text: + text_far _ViridianCityFisherReceivedTM42Text + sound_get_item_2 + text_end + +.TM42ExplanationText: + text_far _ViridianCityFisherTM42ExplanationText + text_end + +.TM42NoRoomText: + text_far _ViridianCityFisherTM42NoRoomText + text_end + +ViridianCityPrintOldManText:: + ld hl, .WantMeToShowYouAgainText + call PrintText + ld c, 2 + call DelayFrames + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .refused + ld hl, .WatchCloselyText + call PrintText + ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING + ld [wViridianCityCurScript], a + jr .done +.refused + ld hl, .NotGoodEnoughForYouText + call PrintText +.done + ret + +.WantMeToShowYouAgainText: + text_far _ViridianCityOldManWantMeToShowYouAgainText + text_end + +.WatchCloselyText: + text_far _ViridianCityOldManWatchCloselyText + text_end + +.NotGoodEnoughForYouText: + text_far _ViridianCityOldManNotGoodEnoughForYouText + text_end + +ViridianCityPrintSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCitySignText + text_end + +ViridianCityPrintTrainerTips1Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCityTrainerTips1Text + text_end + +ViridianCityPrintTrainerTips2Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCityTrainerTips2Text + text_end + +ViridianCityPrintGymSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCityGymSignText + text_end + +ViridianCityPrintGymLockedText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianCityGymLockedText + text_end + + +ViridianCityMovePikachu:: + ld hl, ViridianCityPikachuMovementData + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +ViridianCityPikachuMovementData: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/ViridianForest.asm b/scripts/ViridianForest.asm index 4eeb9226..d8a570cd 100644 --- a/scripts/ViridianForest.asm +++ b/scripts/ViridianForest.asm @@ -19,10 +19,12 @@ ViridianForest_TextPointers: dw_const ViridianForestYoungster2Text, TEXT_VIRIDIANFOREST_YOUNGSTER2 dw_const ViridianForestYoungster3Text, TEXT_VIRIDIANFOREST_YOUNGSTER3 dw_const ViridianForestYoungster4Text, TEXT_VIRIDIANFOREST_YOUNGSTER4 - dw_const PickUpItemText, TEXT_VIRIDIANFOREST_ANTIDOTE - dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION - dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POKE_BALL + dw_const ViridianForestCooltrainerFText, TEXT_VIRIDIANFOREST_COOLTRAINER_F dw_const ViridianForestYoungster5Text, TEXT_VIRIDIANFOREST_YOUNGSTER5 + dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION1 + dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POTION2 + dw_const PickUpItemText, TEXT_VIRIDIANFOREST_POKE_BALL + dw_const ViridianForestYoungster6Text, TEXT_VIRIDIANFOREST_YOUNGSTER6 dw_const ViridianForestTrainerTips1Text, TEXT_VIRIDIANFOREST_TRAINER_TIPS1 dw_const ViridianForestUseAntidoteSignText, TEXT_VIRIDIANFOREST_USE_ANTIDOTE_SIGN dw_const ViridianForestTrainerTips2Text, TEXT_VIRIDIANFOREST_TRAINER_TIPS2 @@ -38,6 +40,10 @@ ViridianForestTrainerHeader1: trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1, 4, ViridianForestYoungster3BattleText, ViridianForestYoungster3EndBattleText, ViridianForestYoungster3AfterBattleText ViridianForestTrainerHeader2: trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2, 1, ViridianForestYoungster4BattleText, ViridianForestYoungster4EndBattleText, ViridianForestYoungster4AfterBattleText +ViridianForestTrainerHeader3: + trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3, 0, ViridianForestCooltrainerFBattleText, ViridianForestCooltrainerFEndBattleText, ViridianForestCooltrainerFAfterBattleText +ViridianForestTrainerHeader4: + trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4, 4, ViridianForestYoungster5BattleText, ViridianForestYoungster5EndBattleText, ViridianForestYoungster5AfterBattleText db -1 ; end ViridianForestYoungster1Text: @@ -47,18 +53,27 @@ ViridianForestYoungster1Text: ViridianForestYoungster2Text: text_asm ld hl, ViridianForestTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestYoungster3Text: text_asm ld hl, ViridianForestTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestYoungster4Text: text_asm ld hl, ViridianForestTrainerHeader2 + jr ViridianForestTalkToTrainer + +ViridianForestCooltrainerFText: + text_asm + ld hl, ViridianForestTrainerHeader3 + jr ViridianForestTalkToTrainer + +ViridianForestYoungster5Text: + text_asm + ld hl, ViridianForestTrainerHeader4 +ViridianForestTalkToTrainer: call TalkToTrainer jp TextScriptEnd @@ -98,30 +113,63 @@ ViridianForestYoungster4AfterBattleText: text_far _ViridianForestYoungster4AfterBattleText text_end -ViridianForestYoungster5Text: - text_far _ViridianForestYoungster5Text +ViridianForestCooltrainerFBattleText: + text_far _ViridianForestCooltrainerFBattleText text_end -ViridianForestTrainerTips1Text: - text_far _ViridianForestTrainerTips1Text +ViridianForestCooltrainerFEndBattleText: + text_far _ViridianForestCooltrainerFEndBattleText text_end -ViridianForestUseAntidoteSignText: - text_far _ViridianForestUseAntidoteSignText +ViridianForestCooltrainerFAfterBattleText: + text_far _ViridianForestCooltrainerFAfterBattleText text_end -ViridianForestTrainerTips2Text: - text_far _ViridianForestTrainerTips2Text +ViridianForestYoungster5BattleText: + text_far _ViridianForestYoungster5BattleText text_end -ViridianForestTrainerTips3Text: - text_far _ViridianForestTrainerTips3Text +ViridianForestYoungster5EndBattleText: + text_far _ViridianForestYoungster5EndBattleText text_end -ViridianForestTrainerTips4Text: - text_far _ViridianForestTrainerTips4Text +ViridianForestYoungster5AfterBattleText: + text_far _ViridianForestYoungster5AfterBattleText text_end -ViridianForestLeavingSignText: - text_far _ViridianForestLeavingSignText +ViridianForestYoungster6Text: + text_far _ViridianForestYoungster6Text text_end + +ViridianForestTrainerTips1Text: + text_asm + ld hl, ViridianForestPrintTrainerTips1Text + jp ViridianForestSign_Common + +ViridianForestUseAntidoteSignText: + text_asm + ld hl, ViridianForestPrintUseAntidoteSignText + jp ViridianForestSign_Common + +ViridianForestTrainerTips2Text: + text_asm + ld hl, ViridianForestPrintTrainerTips2Text + jp ViridianForestSign_Common + +ViridianForestTrainerTips3Text: + text_asm + ld hl, ViridianForestPrintTrainerTips3Text + jp ViridianForestSign_Common + +ViridianForestTrainerTips4Text: + text_asm + ld hl, ViridianForestPrintTrainerTips4Text + jp ViridianForestSign_Common + +ViridianForestLeavingSignText: + text_asm + ld hl, ViridianForestPrintTrainerTips1Text ; supposed to be ViridianForestPrintLeavingSignText +ViridianForestSign_Common: + ld b, BANK(ViridianForestPrintTrainerTips1Text) + call Bankswitch + jp TextScriptEnd diff --git a/scripts/ViridianForestSouthGate.asm b/scripts/ViridianForestSouthGate.asm index 29bbd95f..92cf0438 100644 --- a/scripts/ViridianForestSouthGate.asm +++ b/scripts/ViridianForestSouthGate.asm @@ -1,5 +1,6 @@ ViridianForestSouthGate_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret ViridianForestSouthGate_TextPointers: def_text_pointers diff --git a/scripts/ViridianForest_2.asm b/scripts/ViridianForest_2.asm new file mode 100644 index 00000000..a9b157d5 --- /dev/null +++ b/scripts/ViridianForest_2.asm @@ -0,0 +1,53 @@ +ViridianForestPrintTrainerTips1Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestTrainerTips1Text + text_end + +ViridianForestPrintUseAntidoteSignText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestUseAntidoteSignText + text_end + +ViridianForestPrintTrainerTips2Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestTrainerTips2Text + text_end + +ViridianForestPrintTrainerTips3Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestTrainerTips3Text + text_end + +ViridianForestPrintTrainerTips4Text:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestTrainerTips4Text + text_end + +ViridianForestPrintLeavingSignText: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianForestLeavingSignText + text_end diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm index 34e1281c..f118b475 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 ViridianMartCheckParcelDeliveredScript: CheckEvent EVENT_OAK_GOT_PARCEL @@ -23,7 +24,7 @@ ViridianMart_ScriptPointers: def_script_pointers dw_const ViridianMartDefaultScript, SCRIPT_VIRIDIANMART_DEFAULT dw_const ViridianMartOaksParcelScript, SCRIPT_VIRIDIANMART_OAKS_PARCEL - dw_const ViridianMartNoopScript, SCRIPT_VIRIDIANMART_NOOP + dw_const ViridianMartScript2, SCRIPT_VIRIDIANMART_SCRIPT2 ViridianMartDefaultScript: call UpdateSprites @@ -56,10 +57,21 @@ ViridianMartOaksParcelScript: lb bc, OAKS_PARCEL, 1 call GiveItem SetEvent EVENT_GOT_OAKS_PARCEL - ld a, SCRIPT_VIRIDIANMART_NOOP + ld a, SCRIPT_VIRIDIANMART_SCRIPT2 ld [wViridianMartCurScript], a - ; fallthrough -ViridianMartNoopScript: + ret + +ViridianMartScript2: + CheckEventHL EVENT_COMPLETED_CATCH_TRAINING + ret z + CheckAndSetEventReuseHL EVENT_SPAWNED_OLD_MAN_1 + ret nz + ld a, HS_OLD_MAN_2 + 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 37d39ff9..5e6135ac 100644 --- a/scripts/ViridianPokecenter.asm +++ b/scripts/ViridianPokecenter.asm @@ -8,6 +8,7 @@ ViridianPokecenter_TextPointers: dw_const ViridianPokecenterGentlemanText, TEXT_VIRIDIANPOKECENTER_GENTLEMAN dw_const ViridianPokecenterCooltrainerMText, TEXT_VIRIDIANPOKECENTER_COOLTRAINER_M dw_const ViridianPokecenterLinkReceptionistText, TEXT_VIRIDIANPOKECENTER_LINK_RECEPTIONIST + dw_const ViridianPokeCenterChanseyText, TEXT_VIRIDIANPOKECENTER_CHANSEY ViridianPokecenterNurseText: script_pokecenter_nurse @@ -22,3 +23,8 @@ ViridianPokecenterCooltrainerMText: ViridianPokecenterLinkReceptionistText: script_cable_club_receptionist + +ViridianPokeCenterChanseyText: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse.asm b/scripts/ViridianSchoolHouse.asm index a7beb1b5..771e970e 100644 --- a/scripts/ViridianSchoolHouse.asm +++ b/scripts/ViridianSchoolHouse.asm @@ -1,15 +1,23 @@ ViridianSchoolHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret ViridianSchoolHouse_TextPointers: def_text_pointers dw_const ViridianSchoolHouseBrunetteGirlText, TEXT_VIRIDIANSCHOOLHOUSE_BRUNETTE_GIRL dw_const ViridianSchoolHouseCooltrainerFText, TEXT_VIRIDIANSCHOOLHOUSE_COOLTRAINER_F + dw_const ViridianSchoolHouseLittleGirlText, TEXT_VIRIDIANSCHOOLHOUSE_LITTLE_GIRL ViridianSchoolHouseBrunetteGirlText: text_far _ViridianSchoolHouseBrunetteGirlText text_end ViridianSchoolHouseCooltrainerFText: - text_far _ViridianSchoolHouseCooltrainerFText - text_end + text_asm + farcall ViridianSchoolHousePrintCooltrainerFText + jp TextScriptEnd + +ViridianSchoolHouseLittleGirlText: + text_asm + farcall ViridianSchoolHousePrintLittleGirlText + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse_2.asm b/scripts/ViridianSchoolHouse_2.asm new file mode 100644 index 00000000..057b2640 --- /dev/null +++ b/scripts/ViridianSchoolHouse_2.asm @@ -0,0 +1,17 @@ +ViridianSchoolHousePrintLittleGirlText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianSchoolHouseLittleGirlText + text_end + +ViridianSchoolHousePrintCooltrainerFText:: + ld hl, .text + call PrintText + ret + +.text + text_far _ViridianSchoolHouseCooltrainerFText + text_end |
