diff options
Diffstat (limited to 'scripts')
123 files changed, 5510 insertions, 2631 deletions
diff --git a/scripts/AgathasRoom.asm b/scripts/AgathasRoom.asm index a1dba196..20245166 100755 --- a/scripts/AgathasRoom.asm +++ b/scripts/AgathasRoom.asm @@ -20,7 +20,8 @@ AgathaShowOrHideExitBlock: jp .setExitBlock .blockExitToNextRoom ld a, $3b -.setExitBlock: + +.setExitBlock ld [wNewTileBlockID], a lb bc, 0, 2 predef_jump ReplaceTileBlock diff --git a/scripts/BeachHouse.asm b/scripts/BeachHouse.asm new file mode 100644 index 00000000..6a67c7ab --- /dev/null +++ b/scripts/BeachHouse.asm @@ -0,0 +1,191 @@ +BeachHouse_Script: + call EnableAutoTextBoxDrawing + ret + +BeachHouse_TextPointers: + dw SurfinDudeText + dw BeachHousePikachuText + dw BeachHouseSign1Text + dw BeachHouseSign2Text + dw BeachHouseSign3Text + dw BeachHouseSign4Text + +SurfinDudeText: + TX_ASM + ld a, [wd472] + bit 6, a + jr nz, .next + ld hl, .SurfinDudeText4 + call PrintText + jr .done +.next + ld hl, wd492 + bit 0, [hl] + set 0, [hl] + jr nz, .next2 + ld hl, .SurfinDudeText1 + jr .next3 +.next2 + ld hl, .SurfinDudeText3 +.next3 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f226b + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + callba SurfingPikachuMinigame + ld hl, wd492 + set 1, [hl] + jr .done +.asm_f226b + ld hl, .SurfinDudeText2 + call PrintText +.done + jp TextScriptEnd + +.SurfinDudeText1 + TX_FAR _SurfinDudeText1 + db "@" +.SurfinDudeText2 + TX_FAR _SurfinDudeText2 + db "@" +.SurfinDudeText3 + TX_FAR _SurfinDudeText3 + db "@" +.SurfinDudeText4 + TX_FAR _SurfinDudeText4 + db "@" + +BeachHousePikachuText: + TX_ASM + ld hl, .BeachHousePikachuText + call PrintText + ld a, PIKACHU + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +.BeachHousePikachuText + TX_FAR _BeachHousePikachuText + db "@" + +BeachHouseSign1Text: + TX_ASM + ld hl, .BeachHouseSign1Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign1Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign1Text1 + TX_FAR _BeachHouseSign1Text1 + db "@" +.BeachHouseSign1Text2 + TX_FAR _BeachHouseSign1Text2 + db "@" + +BeachHouseSign2Text: + TX_ASM + ld hl, .BeachHouseSign2Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign2Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign2Text1 + TX_FAR _BeachHouseSign2Text1 + db "@" +.BeachHouseSign2Text2 + TX_FAR _BeachHouseSign2Text2 + db "@" + +BeachHouseSign3Text: + TX_ASM + ld hl, .BeachHouseSign3Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign3Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign3Text1 + TX_FAR _BeachHouseSign3Text1 + db "@" +.BeachHouseSign3Text2 + TX_FAR _BeachHouseSign3Text2 + db "@" + +BeachHouseSign4Text: + TX_ASM + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, [wd472] + bit 6, a + jr z, .asm_f2369 + + ld hl, wd492 + bit 1, [hl] + jr z, .next2 + ld a, 0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a +.next2 + ld hl, .BeachHousePrinterText2 + call PrintText + ld a, [wd492] + bit 1, a + jr z, .asm_f236f + + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .BeachHousePrinterText3 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp z, Func_f23d0 + call SaveScreenTilesToBuffer2 + ld hl, wd730 + set 6, [hl] + xor a + ld [wUpdateSpritesEnabled], a + callab Printer_PrepareSurfingMinigameHighScoreTileMap + call WaitForTextScrollButtonPress + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld a, 1 + ld [wUpdateSpritesEnabled], a + jr .asm_f236f +.asm_f2369 + ld hl, .BeachHousePrinterText1 + call PrintText +.asm_f236f + jp TextScriptEnd + +.BeachHousePrinterText1 + TX_FAR _BeachHousePrinterText1 + db $d, "@" +.BeachHousePrinterText2 + TX_FAR _BeachHousePrinterText2 + db $d, "@" +.BeachHousePrinterText3 + TX_FAR _BeachHousePrinterText3 + db "@" +.BeachHousePrinterText4 + TX_FAR _BeachHousePrinterText4 + db "@" diff --git a/scripts/BeachHouse2.asm b/scripts/BeachHouse2.asm new file mode 100755 index 00000000..a5b7e7be --- /dev/null +++ b/scripts/BeachHouse2.asm @@ -0,0 +1,33 @@ +Func_f23d0: + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callab PrintSurfingMinigameHighScore + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_f2412 + ld a, [hOaksAideResult] + and a + jr nz, .asm_f2406 + ld hl, Text_f240c +.asm_f2406 + call PrintText + jp TextScriptEnd + +Text_f240c: + TX_FAR _BeachHousePrinterText5 + TX_WAIT + db "@" + +Text_f2412: + TX_FAR _BeachHousePrinterText6 + TX_WAIT + db "@" diff --git a/scripts/BikeShop.asm b/scripts/BikeShop.asm index 71149759..a554cf7c 100755 --- a/scripts/BikeShop.asm +++ b/scripts/BikeShop.asm @@ -1,5 +1,6 @@ BikeShop_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret BikeShop_TextPointers: dw BikeShopText1 @@ -13,6 +14,7 @@ BikeShopText1: ld hl, BikeShopText_1d82f call PrintText jp .Done + .asm_260d4 ld b, BIKE_VOUCHER call IsItemInBag @@ -29,10 +31,12 @@ BikeShopText1: ld hl, BikeShopText_1d824 call PrintText jr .Done + .BagFull ld hl, BikeShopText_1d834 call PrintText jr .Done + .asm_41190 ld hl, BikeShopText_1d810 call PrintText @@ -50,8 +54,7 @@ BikeShopText1: ld hl, wd730 set 6, [hl] coord hl, 0, 0 - ld b, $4 - ld c, $f + lb bc, 4, 15 call TextBoxBorder call UpdateSprites coord hl, 2, 2 @@ -62,11 +65,12 @@ BikeShopText1: call PlaceString ld hl, BikeShopText_1d815 call PrintText - call HandleMenuInput - bit 1, a - jr nz, .cancel + ; This fixes the bike shop instatext glitch ld hl, wd730 res 6, [hl] + call HandleMenuInput + bit BIT_B_BUTTON, a + jr nz, .cancel ld a, [wCurrentMenuItem] and a jr nz, .cancel diff --git a/scripts/BillsHouse.asm b/scripts/BillsHouse.asm index 74efc960..a9e09947 100755 --- a/scripts/BillsHouse.asm +++ b/scripts/BillsHouse.asm @@ -1,8 +1,10 @@ BillsHouse_Script: + call BillsHouseScript_1e09e call EnableAutoTextBoxDrawing ld a, [wBillsHouseCurScript] ld hl, BillsHouse_ScriptPointers - jp CallFunctionInTable + call CallFunctionInTable + ret BillsHouse_ScriptPointers: dw BillsHouseScript0 @@ -11,21 +13,64 @@ BillsHouse_ScriptPointers: dw BillsHouseScript3 dw BillsHouseScript4 dw BillsHouseScript5 + dw BillsHouseScript6 + dw BillsHouseScript7 + dw BillsHouseScript8 + dw BillsHouseScript9 + +BillsHouseScript_1e09e: + ld hl, wd492 + bit 7, [hl] + set 7, [hl] + ret nz + CheckEventHL EVENT_MET_BILL_2 + jr z, .asm_1e0af + jr .asm_1e0b3 + +.asm_1e0af + ld a, $0 + jr .asm_1e0b5 + +.asm_1e0b3 + ld a, $9 +.asm_1e0b5 + ld [wBillsHouseCurScript], a + ret BillsHouseScript0: + ld a, [wd472] + bit 7, a + jr z, .asm_1e0d2 + callab CheckPikachuFaintedOrStatused + jr c, .asm_1e0d2 + callab Func_f24d5 +.asm_1e0d2 + xor a + ld [wJoyIgnore], a + ld a, $1 + ld [wBillsHouseCurScript], a ret BillsHouseScript1: - ld a, [wSpriteStateData1 + 9] + ret + +BillsHouseScript2: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSpritePlayerStateData1FacingDirection] and a ; cp SPRITE_FACING_DOWN ld de, MovementData_1e79c jr nz, .notDown + call CheckPikachuFollowingPlayer + jr nz, .asm_1e0f8 + callab Func_f250b +.asm_1e0f8 ld de, MovementData_1e7a0 .notDown ld a, $1 ld [H_SPRITEINDEX], a call MoveSprite - ld a, $2 + ld a, $3 ld [wBillsHouseCurScript], a ret @@ -44,25 +89,58 @@ MovementData_1e7a0: db NPC_MOVEMENT_UP db $FF -BillsHouseScript2: +BillsHouseScript3: ld a, [wd730] bit 0, a ret nz ld a, HS_BILL_POKEMON ld [wMissableObjectIndex], a predef HideObject - SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR + call CheckPikachuFollowingPlayer + jr z, .asm_1e13e + ld hl, PikachuMovementData_1e14d + ld a, [wSpritePlayerStateData1FacingDirection] + and a ; cp SPRITE_FACING_DOWN + jr nz, .asm_1e133 + ld hl, PikachuMovementData_1e152 +.asm_1e133 + call ApplyPikachuMovementData + callab InitializePikachuTextID +.asm_1e13e xor a ld [wJoyIgnore], a - ld a, $3 + SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR + ld a, $4 ld [wBillsHouseCurScript], a ret -BillsHouseScript3: +PikachuMovementData_1e14d: + db $00 + db $1e + db $1e + db $1e + db $3f + +PikachuMovementData_1e152: + db $00 + db $1e + db $1f + db $1e + db $1e + db $20 + db $36 + db $3f + +BillsHouseScript4: CheckEvent EVENT_USED_CELL_SEPARATOR_ON_BILL ret z - ld a, $f0 + ld a, $fc ld [wJoyIgnore], a + ld a, $5 + ld [wBillsHouseCurScript], a + ret + +BillsHouseScript5: ld a, $2 ld [wSpriteIndex], a ld a, $c @@ -79,11 +157,30 @@ BillsHouseScript3: predef ShowObject ld c, 8 call DelayFrames + ld hl, wd472 + bit 7, [hl] + jr z, .asm_1e1c6 + call CheckPikachuFollowingPlayer + jr z, .asm_1e1c6 + ld a, $2 + ld [H_SPRITEINDEX], a + ld a, SPRITE_FACING_DOWN + ld [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld hl, PikachuMovementData_1e1a9 + call ApplyPikachuMovementData + ld a, $f + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + callab InitializePikachuTextID +.asm_1e1c6 ld a, $2 ld [H_SPRITEINDEX], a ld de, MovementData_1e807 call MoveSprite - ld a, $4 + ld a, $6 ld [wBillsHouseCurScript], a ret @@ -95,26 +192,67 @@ MovementData_1e807: db NPC_MOVEMENT_DOWN db $FF -BillsHouseScript4: +PikachuMovementData_1e1a9: + db $00 + db $37 + db $3f + +BillsHouseScript6: ld a, [wd730] bit 0, a ret nz - xor a - ld [wJoyIgnore], a SetEvent EVENT_MET_BILL_2 ; this event seems redundant SetEvent EVENT_MET_BILL - ld a, $0 + ld a, $7 ld [wBillsHouseCurScript], a ret -BillsHouseScript5: - ld a, $4 +BillsHouseScript7: + xor a + ld [wPlayerMovingDirection], a + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld de, RLE_1e219 + ld hl, wSimulatedJoypadStatesEnd + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + ld a, $8 + ld [wBillsHouseCurScript], a + ret + +RLE_1e219: + db D_RIGHT,$3 + db $FF + +BillsHouseScript8: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + xor a + ld [wPlayerMovingDirection], a + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $2 + ld [H_SPRITEINDEX], a + ld a, SPRITE_FACING_DOWN + ld [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + xor a + ld [wJoyIgnore], a + ld a, $2 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $0 + ld a, $9 ld [wBillsHouseCurScript], a ret +BillsHouseScript9: + ret + BillsHouse_TextPointers: dw BillsHouseText1 dw BillsHouseText2 @@ -122,93 +260,20 @@ BillsHouse_TextPointers: dw BillsHouseText4 BillsHouseText4: - TX_BILLS_PC + TX_FAR _BillsHouseDontLeaveText + db "@" BillsHouseText1: TX_ASM - ld hl, BillsHouseText_1e865 - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_1e85a -.asm_1e84d - ld hl, BillsHouseText_1e86a - call PrintText - ld a, $1 - ld [wBillsHouseCurScript], a - jr .asm_1e862 -.asm_1e85a - ld hl, BillsHouseText_1e86f - call PrintText - jr .asm_1e84d -.asm_1e862 + callba Func_f2418 jp TextScriptEnd -BillsHouseText_1e865: - TX_FAR _BillsHouseText_1e865 - db "@" - -BillsHouseText_1e86a: - TX_FAR _BillsHouseText_1e86a - db "@" - -BillsHouseText_1e86f: - TX_FAR _BillsHouseText_1e86f - db "@" - BillsHouseText2: TX_ASM - CheckEvent EVENT_GOT_SS_TICKET - jr nz, .asm_1e8a9 - ld hl, BillThankYouText - call PrintText - lb bc, S_S_TICKET, 1 - call GiveItem - jr nc, .BagFull - ld hl, SSTicketReceivedText - call PrintText - SetEvent EVENT_GOT_SS_TICKET - ld a, HS_CERULEAN_GUARD_1 - ld [wMissableObjectIndex], a - predef ShowObject - ld a, HS_CERULEAN_GUARD_2 - ld [wMissableObjectIndex], a - predef HideObject -.asm_1e8a9 - ld hl, BillsHouseText_1e8cb - call PrintText - jr .asm_1e8b7 -.BagFull - ld hl, SSTicketNoRoomText - call PrintText -.asm_1e8b7 + callba Func_f244a jp TextScriptEnd -BillThankYouText: - TX_FAR _BillThankYouText - db "@" - -SSTicketReceivedText: - TX_FAR _SSTicketReceivedText - TX_SFX_KEY_ITEM - TX_BLINK - db "@" - -SSTicketNoRoomText: - TX_FAR _SSTicketNoRoomText - db "@" - -BillsHouseText_1e8cb: - TX_FAR _BillsHouseText_1e8cb - db "@" - BillsHouseText3: TX_ASM - ld hl, BillsHouseText_1e8da - call PrintText + callba Func_f24a2 jp TextScriptEnd - -BillsHouseText_1e8da: - TX_FAR _BillsHouseText_1e8da - db "@" diff --git a/scripts/BillsHouse2.asm b/scripts/BillsHouse2.asm new file mode 100755 index 00000000..ce474004 --- /dev/null +++ b/scripts/BillsHouse2.asm @@ -0,0 +1,158 @@ +Func_f2418: + ld hl, BillsHouseText_f243b + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f2433 +.asm_f2427 + ld hl, BillsHouseText_f2440 + call PrintText + ld a, $2 + ld [wBillsHouseCurScript], a + ret + +.asm_f2433 + ld hl, BillsHouseText_f2445 + call PrintText + jr .asm_f2427 + +BillsHouseText_f243b: + TX_FAR _BillsHouseText_1e865 + db "@" + +BillsHouseText_f2440: + TX_FAR _BillsHouseText_1e86a + db "@" + +BillsHouseText_f2445: + TX_FAR _BillsHouseText_1e86f + db "@" + +Func_f244a: + CheckEvent EVENT_GOT_SS_TICKET + jr nz, .asm_f247e + ld hl, BillsHouseText_f248c + call PrintText + lb bc, S_S_TICKET, 1 + call GiveItem + jr nc, .asm_f2485 + ld hl, BillsHouseText_f2491 + call PrintText + SetEvent EVENT_GOT_SS_TICKET + ld a, HS_CERULEAN_GUARD_1 + ld [wMissableObjectIndex], a + predef ShowObject + ld a, HS_CERULEAN_GUARD_2 + ld [wMissableObjectIndex], a + predef HideObject +.asm_f247e + ld hl, BillsHouseText_f249d + call PrintText + ret + +.asm_f2485 + ld hl, BillsHouseText_f2498 + call PrintText + ret + +BillsHouseText_f248c: + TX_FAR _BillThankYouText + db "@" + +BillsHouseText_f2491: + TX_FAR _SSTicketReceivedText + TX_SFX_KEY_ITEM + TX_BLINK + db "@" + +BillsHouseText_f2498: + TX_FAR _SSTicketNoRoomText + db "@" + +BillsHouseText_f249d: + TX_FAR _BillsHouseText_1e8cb + db "@" + +Func_f24a2: + ld hl, BillsHouseText_f24a9 + call PrintText + ret + +BillsHouseText_f24a9: + TX_FAR _BillsHouseText_1e8da + db "@" + +Func_f24ae: + ld a, [wCurMap] + cp BILLS_HOUSE + jr nz, .asm_f24d2 + call CheckPikachuFollowingPlayer + jr z, .asm_f24d2 + ld a, [wBillsHouseCurScript] + cp $5 + ld e, $1b + ret z + cp $0 + ld e, $17 + ret z + CheckEventHL EVENT_MET_BILL_2 + ld e, $20 + ret z + ld e, $1f + ret + +.asm_f24d2 + ld e, $ff + ret + +Func_f24d5: + ld a, $ff + ld [wJoyIgnore], a + xor a + ld [wPlayerMovingDirection], a + call UpdateSprites + call UpdateSprites + ld hl, Data_f2505 + call ApplyPikachuMovementData + ld a, $f ; pikachu + ld [wEmotionBubbleSpriteIndex], a + ld a, QUESTION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + call DisablePikachuFollowingPlayer + callab InitializePikachuTextID + ret + +Data_f2505: + db $00 + db $20 + db $20 + db $20 + db $1e + db $3f + +Func_f250b: + ld hl, Data_f251c + ld b, SPRITE_FACING_UP + call TryApplyPikachuMovementData + ld hl, Data_f2521 + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +Data_f251c: + db $00 + db $1f + db $1d + db $38 + db $3f + +Data_f2521: + db $00 + db $1e + db $1f + db $1f + db $1d + db $38 + db $3f diff --git a/scripts/BluesHouse.asm b/scripts/BluesHouse.asm index f325049f..471e6989 100755 --- a/scripts/BluesHouse.asm +++ b/scripts/BluesHouse.asm @@ -1,8 +1,9 @@ BluesHouse_Script: call EnableAutoTextBoxDrawing ld hl, BluesHouse_ScriptPointers - ld a, [wBluesHouseCurScript] - jp CallFunctionInTable + xor a + call CallFunctionInTable + ret BluesHouse_ScriptPointers: dw BluesHouseScript0 @@ -14,8 +15,6 @@ BluesHouseScript0: ; trigger the next script ld a, 1 ld [wBluesHouseCurScript], a - ret - BluesHouseScript1: ret @@ -33,7 +32,6 @@ BluesHouseText1: ld hl, DaisyInitialText call PrintText jr .done - .GiveMap ld hl, DaisyOfferMapText call PrintText @@ -47,12 +45,10 @@ BluesHouseText1: call PrintText SetEvent EVENT_GOT_TOWN_MAP jr .done - .GotMap ld hl, DaisyUseMapText call PrintText jr .done - .BagFull ld hl, DaisyBagFullText call PrintText diff --git a/scripts/BrunosRoom.asm b/scripts/BrunosRoom.asm index 3b6385b7..a525e5bb 100755 --- a/scripts/BrunosRoom.asm +++ b/scripts/BrunosRoom.asm @@ -20,6 +20,7 @@ BrunoShowOrHideExitBlock: jp .setExitBlock .blockExitToNextRoom ld a, $24 + .setExitBlock ld [wNewTileBlockID], a lb bc, 0, 2 diff --git a/scripts/CeladonCity.asm b/scripts/CeladonCity.asm index e2d7d371..bd49f5af 100755 --- a/scripts/CeladonCity.asm +++ b/scripts/CeladonCity.asm @@ -1,5 +1,14 @@ CeladonCity_Script: call EnableAutoTextBoxDrawing + ld hl, CeladonCity_ScriptPointers + ld a, [wCeladonCityCurScript] + call CallFunctionInTable + ret + +CeladonCity_ScriptPointers: + dw CeladonCityScript1 + +CeladonCityScript1: ResetEvents EVENT_1B8, EVENT_1BF ResetEvent EVENT_67F ret @@ -100,8 +109,9 @@ CeladonCityText9: db "@" CeladonCityText10: - TX_FAR _CeladonCityText10 - db "@" + TX_ASM + callba Func_f1ac6 + jp TextScriptEnd CeladonCityText11: TX_FAR _CeladonCityText11 diff --git a/scripts/CeladonCity2.asm b/scripts/CeladonCity2.asm new file mode 100755 index 00000000..12f7b366 --- /dev/null +++ b/scripts/CeladonCity2.asm @@ -0,0 +1,8 @@ +Func_f1ac6: + ld hl, Text_f1acd + call PrintText + ret + +Text_f1acd: + TX_FAR _CeladonCityText10 + db "@" diff --git a/scripts/CeladonDiner.asm b/scripts/CeladonDiner.asm index 371205de..f444ec15 100755 --- a/scripts/CeladonDiner.asm +++ b/scripts/CeladonDiner.asm @@ -27,40 +27,5 @@ CeladonDinerText4: CeladonDinerText5: TX_ASM - CheckEvent EVENT_GOT_COIN_CASE - jr nz, .asm_eb14d - ld hl, CeladonDinerText_491a7 - call PrintText - lb bc, COIN_CASE, 1 - call GiveItem - jr nc, .BagFull - SetEvent EVENT_GOT_COIN_CASE - ld hl, ReceivedCoinCaseText - call PrintText - jr .asm_68b61 -.BagFull - ld hl, CoinCaseNoRoomText - call PrintText - jr .asm_68b61 -.asm_eb14d - ld hl, CeladonDinerText_491b7 - call PrintText -.asm_68b61 + callab Func_f1f31 jp TextScriptEnd - -CeladonDinerText_491a7: - TX_FAR _CeladonDinerText_491a7 - db "@" - -ReceivedCoinCaseText: - TX_FAR _ReceivedCoinCaseText - TX_SFX_KEY_ITEM - db "@" - -CoinCaseNoRoomText: - TX_FAR _CoinCaseNoRoomText - db "@" - -CeladonDinerText_491b7: - TX_FAR _CeladonDinerText_491b7 - db "@" diff --git a/scripts/CeladonDiner2.asm b/scripts/CeladonDiner2.asm new file mode 100755 index 00000000..8cd66a19 --- /dev/null +++ b/scripts/CeladonDiner2.asm @@ -0,0 +1,38 @@ +Func_f1f31: + CheckEvent EVENT_GOT_COIN_CASE + jr nz, .asm_eb14d + ld hl, CeladonDinerText_491a7 + call PrintText + lb bc, COIN_CASE, 1 + call GiveItem + jr nc, .BagFull + SetEvent EVENT_GOT_COIN_CASE + ld hl, ReceivedCoinCaseText + call PrintText + jr .asm_68b61 +.BagFull + ld hl, CoinCaseNoRoomText + call PrintText + jr .asm_68b61 +.asm_eb14d + ld hl, CeladonDinerText_491b7 + call PrintText +.asm_68b61 + ret + +CeladonDinerText_491a7: + TX_FAR _CeladonDinerText_491a7 + db "@" + +ReceivedCoinCaseText: + TX_FAR _ReceivedCoinCaseText + TX_SFX_KEY_ITEM + db "@" + +CoinCaseNoRoomText: + TX_FAR _CoinCaseNoRoomText + db "@" + +CeladonDinerText_491b7: + TX_FAR _CeladonDinerText_491b7 + db "@" diff --git a/scripts/CeladonMansion1F.asm b/scripts/CeladonMansion1F.asm index 41524983..1d7c37b4 100755 --- a/scripts/CeladonMansion1F.asm +++ b/scripts/CeladonMansion1F.asm @@ -1,5 +1,6 @@ CeladonMansion1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansion1F_TextPointers: dw CeladonMansion1Text1 @@ -8,31 +9,39 @@ CeladonMansion1F_TextPointers: dw CeladonMansion1Text4 dw CeladonMansion1Text5 -CeladonMansion1_486a1: - call PlayCry - jp TextScriptEnd - CeladonMansion1Text1: TX_FAR _CeladonMansion1Text1 TX_ASM ld a, MEOWTH - jp CeladonMansion1_486a1 + call PlayCry + jp TextScriptEnd CeladonMansion1Text2: - TX_FAR _CeladonMansion1Text2 - db "@" + TX_ASM + callba Func_f1e70 + ld a, [wPikachuHappiness] + cp 251 + jr c, .asm_485d9 + ld c, 50 + call DelayFrames + ldpikacry e, PikachuCry23 + callab PlayPikachuSoundClip +.asm_485d9 + jp TextScriptEnd CeladonMansion1Text3: TX_FAR _CeladonMansion1Text3 TX_ASM ld a, CLEFAIRY - jp CeladonMansion1_486a1 + call PlayCry + jp TextScriptEnd CeladonMansion1Text4: TX_FAR _CeladonMansion1Text4 TX_ASM ld a, NIDORAN_F - jp CeladonMansion1_486a1 + call PlayCry + jp TextScriptEnd CeladonMansion1Text5: TX_FAR _CeladonMansion1Text5 diff --git a/scripts/CeladonMansion1F_2.asm b/scripts/CeladonMansion1F_2.asm new file mode 100755 index 00000000..cdd56ab8 --- /dev/null +++ b/scripts/CeladonMansion1F_2.asm @@ -0,0 +1,78 @@ +Func_f1e70: + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeladonMansion1Text_f1e96 + call PrintText + callab IsStarterPikachuInOurParty + ret nc + ld hl, CeladonMansionText_f1e9c + call PrintText + ld a, $0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call Func_f1ea2 + call PrintText + ret + +CeladonMansion1Text_f1e96: + TX_FAR _CeladonMansion1Text2 + TX_WAIT + db "@" + +CeladonMansionText_f1e9c: + TX_FAR _CeladonMansion1Text6 + TX_BLINK + db "@" + +Func_f1ea2: + ld hl, PikachuHappinessThresholds_f1eb9 +.asm_f1ea5 + ld a, [hli] + inc hl + and a + jr z, .asm_f1eb5 + ld b, a + ld a, [wPikachuHappiness] + cp b + jr c, .asm_f1eb5 + inc hl + inc hl + jr .asm_f1ea5 + +.asm_f1eb5 + ld a, [hli] + ld h, [hl] + ld l, a + ret + +PikachuHappinessThresholds_f1eb9 + dw 51, CeladonMansion1Text_f1ed5 + dw 101, CeladonMansion1Text_f1eda + dw 131, CeladonMansion1Text_f1edf + dw 161, CeladonMansion1Text_f1ee4 + dw 201, CeladonMansion1Text_f1ee9 + dw 255, CeladonMansion1Text_f1eee + dbbw 0, $ff, CeladonMansion1Text_f1eee + +CeladonMansion1Text_f1ed5: + TX_FAR _CeladonMansion1Text7 + db "@" + +CeladonMansion1Text_f1eda: + TX_FAR _CeladonMansion1Text8 + db "@" + +CeladonMansion1Text_f1edf: + TX_FAR _CeladonMansion1Text9 + db "@" + +CeladonMansion1Text_f1ee4: + TX_FAR _CeladonMansion1Text10 + db "@" + +CeladonMansion1Text_f1ee9: + TX_FAR _CeladonMansion1Text11 + db "@" + +CeladonMansion1Text_f1eee: + TX_FAR _CeladonMansion1Text12 + db "@" diff --git a/scripts/CeladonMansion3F.asm b/scripts/CeladonMansion3F.asm index 43832f63..64a8343b 100755 --- a/scripts/CeladonMansion3F.asm +++ b/scripts/CeladonMansion3F.asm @@ -1,5 +1,13 @@ CeladonMansion3F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret + +CeladonMansion3_PokedexCount: + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [wNumSetBits] + ret CeladonMansion3F_TextPointers: dw ProgrammerText @@ -12,31 +20,120 @@ CeladonMansion3F_TextPointers: dw GameFreakSignText ProgrammerText: + TX_ASM + call CeladonMansion3_PokedexCount + cp 150 + ld hl, CeladonMansion3Text_486f5 + jr nc, .print + ld hl, CeladonMansion3Text_486f0 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_486f0: TX_FAR _ProgrammerText db "@" +CeladonMansion3Text_486f5: + TX_FAR _ProgrammerText2 + db "@" + GraphicArtistText: + TX_ASM + call CeladonMansion3_PokedexCount + cp 150 + jr nc, .completed + ld hl, CeladonMansion3Text_48757 + jr .print + +.completed + ld hl, CeladonMansion3Text_4875c + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .declined_print + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callab PrintDiploma + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, CeladonMansion3Text_4876b + ld a, [$ffdb] + and a + jr nz, .print + ld hl, CeladonMansion3Text_48766 + jr .print + +.declined_print + ld hl, CeladonMansion3Text_48761 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_48757: TX_FAR _GraphicArtistText db "@" +CeladonMansion3Text_4875c: + TX_FAR _GraphicArtistText2 + db "@" + +CeladonMansion3Text_48761: + TX_FAR _GraphicArtistText3 + db "@" + +CeladonMansion3Text_48766: + TX_FAR _GraphicArtistText4 + db "@" + +CeladonMansion3Text_4876b: + TX_FAR _GraphicArtistText5 + db "@" + WriterText: + TX_ASM + call CeladonMansion3_PokedexCount + cp 150 + ld hl, CeladonMansion3Text_48789 + jr nc, .print + ld hl, CeladonMansion3Text_48784 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_48784: TX_FAR _WriterText db "@" +CeladonMansion3Text_48789: + TX_FAR _WriterText2 + db "@" + DirectorText: TX_ASM - + call CeladonMansion3_PokedexCount ; check pokédex - ld hl, wPokedexOwned - ld b, wPokedexOwnedEnd - wPokedexOwned - call CountSetBits - ld a, [wNumSetBits] cp 150 jr nc, .CompletedDex ld hl, .GameDesigner jr .done .CompletedDex ld hl, .CompletedDexText + call PrintText + call Delay3 + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .UnlockedDiplomaPrinting .done call PrintText jp TextScriptEnd @@ -54,18 +151,26 @@ DirectorText: ld [wDoNotWaitForButtonPressAfterDisplayingText], a jp TextScriptEnd -GameFreakPCText1: - TX_FAR _CeladonMansion3Text5 +.UnlockedDiplomaPrinting + TX_FAR _CompletedDexText2 db "@" +GameFreakPCText1: + TX_ASM + callba Func_f1ef3 + jp TextScriptEnd + GameFreakPCText2: - TX_FAR _CeladonMansion3Text6 - db "@" + TX_ASM + callba Func_f1eff + jp TextScriptEnd GameFreakPCText3: - TX_FAR _CeladonMansion3Text7 - db "@" + TX_ASM + callba Func_f1f0b + jp TextScriptEnd GameFreakSignText: - TX_FAR _CeladonMansion3Text8 - db "@" + TX_ASM + callba Func_f1f17 + jp TextScriptEnd diff --git a/scripts/CeladonMansion3F_2.asm b/scripts/CeladonMansion3F_2.asm new file mode 100755 index 00000000..3a7035ba --- /dev/null +++ b/scripts/CeladonMansion3F_2.asm @@ -0,0 +1,35 @@ +Func_f1ef3: + ld hl, CeladonMansion3Text_f1efa + call PrintText + ret + +CeladonMansion3Text_f1efa: + TX_FAR _CeladonMansion3Text5 + db "@" + +Func_f1eff: + ld hl, CeladonMansion3Text_f1f06 + call PrintText + ret + +CeladonMansion3Text_f1f06: + TX_FAR _CeladonMansion3Text6 + db "@" + +Func_f1f0b: + ld hl, CeladonMansion3Text_f1f12 + call PrintText + ret + +CeladonMansion3Text_f1f12: + TX_FAR _CeladonMansion3Text7 + db "@" + +Func_f1f17: + ld hl, CeladonMansion3Text_f1f1e + call PrintText + ret + +CeladonMansion3Text_f1f1e: + TX_FAR _CeladonMansion3Text8 + db "@" diff --git a/scripts/CeladonMansionRoof.asm b/scripts/CeladonMansionRoof.asm index d5028537..1813e9ee 100755 --- a/scripts/CeladonMansionRoof.asm +++ b/scripts/CeladonMansionRoof.asm @@ -1,5 +1,6 @@ CeladonMansionRoof_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansionRoof_TextPointers: dw CeladonMansion4Text1 diff --git a/scripts/CeladonMansionRoofHouse.asm b/scripts/CeladonMansionRoofHouse.asm index e519d506..8e485352 100755 --- a/scripts/CeladonMansionRoofHouse.asm +++ b/scripts/CeladonMansionRoofHouse.asm @@ -1,5 +1,6 @@ CeladonMansionRoofHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMansionRoofHouse_TextPointers: dw CeladonMansion5Text1 diff --git a/scripts/CeladonMart1F.asm b/scripts/CeladonMart1F.asm index 8afd805a..e84eaae0 100755 --- a/scripts/CeladonMart1F.asm +++ b/scripts/CeladonMart1F.asm @@ -1,5 +1,6 @@ CeladonMart1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMart1F_TextPointers: dw CeladonMart1Text1 diff --git a/scripts/CeladonMart3F.asm b/scripts/CeladonMart3F.asm index e7e216d9..c8a108d7 100755 --- a/scripts/CeladonMart3F.asm +++ b/scripts/CeladonMart3F.asm @@ -22,42 +22,9 @@ CeladonMart3F_TextPointers: CeladonMart3Text1: TX_ASM - CheckEvent EVENT_GOT_TM18 - jr nz, .asm_a5463 - ld hl, TM18PreReceiveText - call PrintText - lb bc, TM_18, 1 - call GiveItem - jr nc, .BagFull - SetEvent EVENT_GOT_TM18 - ld hl, ReceivedTM18Text - jr .asm_81359 -.BagFull - ld hl, TM18NoRoomText - jr .asm_81359 -.asm_a5463 - ld hl, TM18ExplanationText -.asm_81359 - call PrintText + callab Func_f1e30 jp TextScriptEnd -TM18PreReceiveText: - TX_FAR _TM18PreReceiveText - db "@" - -ReceivedTM18Text: - TX_FAR _ReceivedTM18Text - TX_SFX_ITEM_1 - db "@" - -TM18ExplanationText: - TX_FAR _TM18ExplanationText - db "@" - -TM18NoRoomText: - TX_FAR _TM18NoRoomText - db "@" - CeladonMart3Text2: TX_FAR _CeladonMart3Text2 db "@" diff --git a/scripts/CeladonMart3F_2.asm b/scripts/CeladonMart3F_2.asm new file mode 100755 index 00000000..8c99e0e0 --- /dev/null +++ b/scripts/CeladonMart3F_2.asm @@ -0,0 +1,38 @@ +Func_f1e30 + CheckEvent EVENT_GOT_TM18 + jr nz, .asm_f1e54 + ld hl, CeladonMart3Text_f1e5b + call PrintText + lb bc, TM_18, 1 + call GiveItem + jr nc, .asm_f1e4f + SetEvent EVENT_GOT_TM18 + ld hl, CeladonMart3Text_f1e60 + jr .asm_f1e57 + +.asm_f1e4f + ld hl, CeladonMart3Text_f1e6b + jr .asm_f1e57 + +.asm_f1e54 + ld hl, CeladonMart3Text_f1e66 +.asm_f1e57 + call PrintText + ret + +CeladonMart3Text_f1e5b: + TX_FAR _TM18PreReceiveText + db "@" + +CeladonMart3Text_f1e60: + TX_FAR _ReceivedTM18Text + TX_SFX_ITEM_1 + db "@" + +CeladonMart3Text_f1e66: + TX_FAR _TM18ExplanationText + db "@" + +CeladonMart3Text_f1e6b: + TX_FAR _TM18NoRoomText + db "@" diff --git a/scripts/CeladonMart5F.asm b/scripts/CeladonMart5F.asm index 9f52f866..74c590be 100755 --- a/scripts/CeladonMart5F.asm +++ b/scripts/CeladonMart5F.asm @@ -1,5 +1,6 @@ CeladonMart5F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMart5F_TextPointers: dw CeladonMart5Text1 diff --git a/scripts/CeladonMartRoof.asm b/scripts/CeladonMartRoof.asm index 35c740b2..64871bdd 100755 --- a/scripts/CeladonMartRoof.asm +++ b/scripts/CeladonMartRoof.asm @@ -1,5 +1,6 @@ CeladonMartRoof_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeladonMartRoofScript_GetDrinksInBag: ; construct a list of all drinks in the player's bag @@ -71,7 +72,7 @@ CeladonMartRoofScript_GiveDrinkToGirl: ld hl, wd730 res 6, [hl] call HandleMenuInput - bit 1, a ; pressed b + bit BIT_B_BUTTON, a ; pressed b ret nz ld hl, wFilteredBagItems ld a, [wCurrentMenuItem] @@ -125,13 +126,16 @@ CeladonMartRoofScript_GiveDrinkToGirl: ret .bagFull ld hl, CeladonMartRoofText_48526 - jp PrintText + call PrintText + ret .alreadyGaveDrink ld hl, CeladonMartRoofText_4852c - jp PrintText + call PrintText + ret RemoveItemByIDBank12: - jpba RemoveItemByID + callba RemoveItemByID + ret CeladonMartRoofText_484ee: TX_FAR _CeladonMartRoofText_484ee diff --git a/scripts/CeladonPokecenter.asm b/scripts/CeladonPokecenter.asm index b5efb7d5..21b9452c 100755 --- a/scripts/CeladonPokecenter.asm +++ b/scripts/CeladonPokecenter.asm @@ -7,6 +7,7 @@ CeladonPokecenter_TextPointers: dw CeladonPokecenterText2 dw CeladonPokecenterText3 dw CeladonTradeNurseText + dw CeladonPokecenterText5 CeladonTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST @@ -21,3 +22,8 @@ CeladonPokecenterText2: CeladonPokecenterText3: TX_FAR _CeladonPokecenterText3 db "@" + +CeladonPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanCave1F.asm b/scripts/CeruleanCave1F.asm index 6f5c7b13..e2803587 100755 --- a/scripts/CeruleanCave1F.asm +++ b/scripts/CeruleanCave1F.asm @@ -5,3 +5,4 @@ CeruleanCave1F_TextPointers: dw PickUpItemText dw PickUpItemText dw PickUpItemText + dw PickUpItemText diff --git a/scripts/CeruleanCave2F.asm b/scripts/CeruleanCave2F.asm index 1bc8457b..e6a70082 100755 --- a/scripts/CeruleanCave2F.asm +++ b/scripts/CeruleanCave2F.asm @@ -5,3 +5,4 @@ CeruleanCave2F_TextPointers: dw PickUpItemText dw PickUpItemText dw PickUpItemText + dw PickUpItemText diff --git a/scripts/CeruleanCaveB1F.asm b/scripts/CeruleanCaveB1F.asm index a570ab18..b98ca4ba 100755 --- a/scripts/CeruleanCaveB1F.asm +++ b/scripts/CeruleanCaveB1F.asm @@ -7,7 +7,7 @@ CeruleanCaveB1F_Script: ld [wCeruleanCaveB1FCurScript], a ret -CeruleanCaveB1F_ScriptPointers +CeruleanCaveB1F_ScriptPointers: dw CheckFightingMapTrainers dw DisplayEnemyTrainerTextAndStartBattle dw EndTrainerBattle @@ -16,6 +16,8 @@ CeruleanCaveB1F_TextPointers: dw MewtwoText dw PickUpItemText dw PickUpItemText + dw PickUpItemText + dw PickUpItemText MewtwoTrainerHeader: dbEventFlagBit EVENT_BEAT_MEWTWO diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm index 117ec4da..c36b3dd6 100755 --- a/scripts/CeruleanCity.asm +++ b/scripts/CeruleanCity.asm @@ -64,9 +64,7 @@ CeruleanCityScript0: ld a, [wWalkBikeSurfState] and a jr z, .asm_19512 - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_19512 ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -136,23 +134,8 @@ CeruleanCityScript1: call SaveEndBattleTextPointers ld a, OPP_SONY1 ld [wCurOpponent], a - - ; select which team to use during the encounter - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle - ld a, $7 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $8 - jr .done -.Charmander - ld a, $9 -.done + ld a, 3 ld [wTrainerNo], a - xor a ld [hJoyHeld], a call CeruleanCityScript_1955d @@ -171,9 +154,7 @@ CeruleanCityScript2: ld a, $1 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $1 ld [H_SPRITEINDEX], a diff --git a/scripts/CeruleanGym.asm b/scripts/CeruleanGym.asm index c4aaf7de..d1dd66e4 100755 --- a/scripts/CeruleanGym.asm +++ b/scripts/CeruleanGym.asm @@ -157,8 +157,6 @@ CeruleanGymText7: CeruleanGymText_5c7d8: TX_FAR _CeruleanGymText_5c7d8 - TX_SFX_KEY_ITEM ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded - TX_BLINK db "@" CeruleanGymText2: diff --git a/scripts/CeruleanPokecenter.asm b/scripts/CeruleanPokecenter.asm index 82bd04f3..de4fd57d 100755 --- a/scripts/CeruleanPokecenter.asm +++ b/scripts/CeruleanPokecenter.asm @@ -7,6 +7,7 @@ CeruleanPokecenter_TextPointers: dw CeruleanPokecenterText2 dw CeruleanPokecenterText3 dw CeruleanTradeNurseText + dw CeruleanPokecenterText5 CeruleanTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST @@ -21,3 +22,8 @@ CeruleanPokecenterText2: CeruleanPokecenterText3: TX_FAR _CeruleanPokecenterText3 db "@" + +CeruleanPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanTradeHouse.asm b/scripts/CeruleanTradeHouse.asm index f80da19a..8b5d4495 100755 --- a/scripts/CeruleanTradeHouse.asm +++ b/scripts/CeruleanTradeHouse.asm @@ -1,17 +1,106 @@ CeruleanTradeHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeruleanTradeHouse_TextPointers: dw CeruleanHouse1Text1 dw CeruleanHouse1Text2 + dw CeruleanHouse1Text3 + dw CeruleanHouse1Text4 CeruleanHouse1Text1: - TX_FAR _CeruleanHouse1Text1 + TX_ASM + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN + jr nz, .asm_1cfbf + ld hl, CeruleanHouse1Text_1cfc8 + call PrintText + ld a, [wPikachuHappiness] + cp 147 + jr c, .asm_1cfb3 + ld hl, CeruleanHouse1Text_1cfce + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_1cfb6 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, BULBASAUR + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, BULBASAUR, 10 + call GivePokemon + jr nc, .asm_1cfb3 + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeruleanHouse1Text_1cfd3 + call PrintText + ld a, HS_CERULEAN_BULBASAUR + ld [wMissableObjectIndex], a + predef HideObject + SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN +.asm_1cfb3 + jp TextScriptEnd + +.asm_1cfb6 + ld hl, CeruleanHouse1Text_1cfdf + call PrintText + jp TextScriptEnd + +.asm_1cfbf + ld hl, CeruleanHouse1Text_1cfd9 + call PrintText + jp TextScriptEnd + +CeruleanHouse1Text_1cfc8: + TX_FAR MelanieText1 + TX_WAIT + db "@" + +CeruleanHouse1Text_1cfce: + TX_FAR MelanieText2 + db "@" + +CeruleanHouse1Text_1cfd3: + TX_FAR MelanieText3 + TX_WAIT + db "@" + +CeruleanHouse1Text_1cfd9: + TX_FAR MelanieText4 + TX_WAIT + db "@" + +CeruleanHouse1Text_1cfdf: + TX_FAR MelanieText5 + TX_WAIT db "@" CeruleanHouse1Text2: + TX_FAR MelanieBulbasaurText + TX_ASM + ld a, BULBASAUR + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text3: + TX_FAR MelanieOddishText + TX_ASM + ld a, ODDISH + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text4: + TX_FAR MelanieSandshrewText TX_ASM - ld a, $6 - ld [wWhichTrade], a - predef DoInGameTradeDialogue + ld a, SANDSHREW + call PlayCry jp TextScriptEnd diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm index e3cdc6d2..b8ce710b 100755 --- a/scripts/ChampionsRoom.asm +++ b/scripts/ChampionsRoom.asm @@ -2,7 +2,8 @@ ChampionsRoom_Script: call EnableAutoTextBoxDrawing ld hl, ChampionsRoom_ScriptPointers ld a, [wChampionsRoomCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret ResetGaryScript: xor a @@ -40,9 +41,9 @@ GaryScript1: ret GaryEntrance_RLEMovement: - db D_UP,1 - db D_RIGHT,1 - db D_UP,3 + db D_UP, 1 + db D_RIGHT, 1 + db D_UP, 3 db $ff GaryScript2: @@ -69,18 +70,7 @@ GaryScript2: ; select which team to use during the encounter ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotStarter2 - ld a, $1 - jr .saveTrainerId -.NotStarter2 - cp STARTER3 - jr nz, .NotStarter3 - ld a, $2 - jr .saveTrainerId -.NotStarter3 - ld a, $3 -.saveTrainerId + add $0 ; Wow GameFreak ld [wTrainerNo], a xor a @@ -217,8 +207,8 @@ GaryScript9: ret WalkToHallOfFame_RLEMovment: - db D_UP,4 - db D_LEFT,1 + db D_UP, 4 + db D_LEFT, 1 db $ff GaryScript10: diff --git a/scripts/CinnabarGym.asm b/scripts/CinnabarGym.asm index f8be5823..2dc07e58 100755 --- a/scripts/CinnabarGym.asm +++ b/scripts/CinnabarGym.asm @@ -35,11 +35,14 @@ CinnabarGymScript_75792: ld [wOpponentAfterWrongAnswer], a ret -CinnabarGymScript_757a0: +CinnabarGymScript_74f48: ld a, [hSpriteIndexOrTextID] ld [wTrainerHeaderFlagBit], a ret +CinnabarGymFlagAction: + predef_jump FlagActionPredef + CinnabarGym_ScriptPointers: dw CinnabarGymScript0 dw CinnabarGymScript1 @@ -55,12 +58,18 @@ CinnabarGymScript0: jr nz, .asm_757c3 ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a + ld hl, PikachuMovementData_74f97 + ld b, SPRITE_FACING_DOWN + call CinnabarGymScript_74fa3 ld de, MovementData_757d7 jr .asm_757cb .asm_757c3 - ld de, MovementData_757da ld a, PLAYER_DIR_RIGHT ld [wPlayerMovingDirection], a + ld hl, PikachuMovementData_74f9e + ld b, SPRITE_FACING_RIGHT + call CinnabarGymScript_74fa3 + ld de, MovementData_757da .asm_757cb call MoveSprite ld a, $1 @@ -73,10 +82,39 @@ MovementData_757d7: db NPC_MOVEMENT_UP db $FF +PikachuMovementData_74f97: + db $00 + db $20 + db $1e + db $35 + db $3f + MovementData_757da: db NPC_MOVEMENT_LEFT db $FF +PikachuMovementData_74f9e: + db $00 + db $1d + db $1f + db $38 + db $3f + +CinnabarGymScript_74fa3: + ld a, [wd472] + bit 7, a + ret z + push hl + push bc + callab GetPikachuFacingDirectionAndReturnToE + pop bc + pop hl + ld a, b + cp e + ret nz + call ApplyPikachuMovementData + ret + CinnabarGymScript1: ld a, [wd730] bit 0, a @@ -88,52 +126,74 @@ CinnabarGymScript1: ld [hSpriteIndexOrTextID], a jp DisplayTextID -CinnabarGymFlagAction: - predef_jump FlagActionPredef - CinnabarGymScript2: + call CinnabarGymScript_753e9 ld a, [wIsInBattle] cp $ff jp z, CinnabarGymScript_75792 ld a, [wTrainerHeaderFlagBit] - ld [$ffdb], a - AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2 + sub 2 ld c, a ld b, FLAG_TEST - EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 + EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED call CinnabarGymFlagAction ld a, c and a - jr nz, .asm_7581b + jr nz, .asm_7500d + ld a, [wTrainerHeaderFlagBit] + cp 2 + jr z, .asm_7500d + ld c, 30 + call DelayFrames + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 call WaitForSoundToFinish ld a, SFX_GO_INSIDE call PlaySound call WaitForSoundToFinish -.asm_7581b + jr .asm_75013 +.asm_7500d + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 +.asm_75013 + xor a + ld [wJoyIgnore], a + ld [wOpponentAfterWrongAnswer], a + ld a, $0 + ld [wCinnabarGymCurScript], a + ld [wCurMapScript], a + ret + +CinnabarGymScript_75023: ld a, [wTrainerHeaderFlagBit] ld [$ffdb], a - AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2 ld c, a ld b, FLAG_SET EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 call CinnabarGymFlagAction + ret + +CinnabarGymScript_75032: ld a, [wTrainerHeaderFlagBit] - sub $2 - AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0 + ld [$ffdb], a + ld c, a + ld b, FLAG_TEST + EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 + call CinnabarGymFlagAction + ret + +CinnabarGymScript_75041: + ld a, [wTrainerHeaderFlagBit] + sub 2 ld c, a ld b, FLAG_SET EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED call CinnabarGymFlagAction call UpdateCinnabarGymGateTileBlocks - xor a - ld [wJoyIgnore], a - ld [wOpponentAfterWrongAnswer], a - ld a, $0 - ld [wCinnabarGymCurScript], a - ld [wCurMapScript], a ret CinnabarGymScript3: + call CinnabarGymScript_753e9 ld a, [wIsInBattle] cp $ff jp z, CinnabarGymScript_75792 @@ -184,7 +244,7 @@ CinnabarGym_TextPointers: dw ReceivedTM38Text dw TM38NoRoomText -CinnabarGymScript_758b7: +CinnabarGymScript_750c3: ld a, [hSpriteIndexOrTextID] ld [wSpriteIndex], a call EngageMapTrainer @@ -225,7 +285,7 @@ CinnabarGymText1: call SaveEndBattleTextPointers ld a, $7 ld [wGymLeaderNo], a - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 BlaineBattleText: TX_FAR _BlaineBattleText @@ -257,7 +317,7 @@ TM38NoRoomText: CinnabarGymText2: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0 jr nz, .asm_46bb4 ld hl, CinnabarGymText_7595f @@ -265,7 +325,7 @@ CinnabarGymText2: ld hl, CinnabarGymText_75964 ld de, CinnabarGymText_75964 call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 .asm_46bb4 ld hl, CinnabarGymText_75969 call PrintText @@ -285,16 +345,25 @@ CinnabarGymText_75969: CinnabarGymText3: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1 - jr nz, .asm_4b406 + jr nz, .asm_751a8 + call CinnabarGymScript_753f3 + jr nz, .asm_75196 + CheckEvent EVENT_CINNABAR_GYM_GATE1_UNLOCKED + jr nz, .asm_75196 + ld e, $00 + jp CinnabarGymScript_753de + +.asm_75196 ld hl, CinnabarGymText_75994 call PrintText ld hl, CinnabarGymText_75999 ld de, CinnabarGymText_75999 call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 -.asm_4b406 + jp CinnabarGymScript_750c3 + +.asm_751a8 ld hl, CinnabarGymText_7599e call PrintText jp TextScriptEnd @@ -313,16 +382,24 @@ CinnabarGymText_7599e: CinnabarGymText4: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2 - jr nz, .asm_c0673 + jr nz, .asm_751ee + call CinnabarGymScript_753f3 + jr nz, .asm_751dc + CheckEvent EVENT_CINNABAR_GYM_GATE2_UNLOCKED + jr nz, .asm_751dc + ld e, $1 + jp CinnabarGymScript_753de + +.asm_751dc ld hl, CinnabarGymText_759c9 call PrintText ld hl, CinnabarGymText_759ce ld de, CinnabarGymText_759ce call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 -.asm_c0673 + jp CinnabarGymScript_750c3 +.asm_751ee ld hl, CinnabarGymText_759d3 call PrintText jp TextScriptEnd @@ -341,16 +418,24 @@ CinnabarGymText_759d3: CinnabarGymText5: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3 - jr nz, .asm_5cfd7 + jr nz, .asm_75234 + call CinnabarGymScript_753f3 + jr nz, .asm_75222 + CheckEvent EVENT_CINNABAR_GYM_GATE3_UNLOCKED + jr nz, .asm_75222 + ld e, $2 + jp CinnabarGymScript_753de + +.asm_75222 ld hl, CinnabarGymText_759fe call PrintText ld hl, CinnabarGymText_75a03 ld de, CinnabarGymText_75a03 call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 -.asm_5cfd7 + jp CinnabarGymScript_750c3 +.asm_75234 ld hl, CinnabarGymText_75a08 call PrintText jp TextScriptEnd @@ -369,15 +454,23 @@ CinnabarGymText_75a08: CinnabarGymText6: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4 jr nz, .asm_776b4 + call CinnabarGymScript_753f3 + jr nz, .asm_75222 + CheckEvent EVENT_CINNABAR_GYM_GATE4_UNLOCKED + jr nz, .asm_75222 + ld e, $3 + jp CinnabarGymScript_753de + +.asm_75222 ld hl, CinnabarGymText_75a33 call PrintText ld hl, CinnabarGymText_75a38 ld de, CinnabarGymText_75a38 call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 .asm_776b4 ld hl, CinnabarGymText_75a3d call PrintText @@ -397,15 +490,23 @@ CinnabarGymText_75a3d: CinnabarGymText7: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5 jr nz, .asm_2f755 + call CinnabarGymScript_753f3 + jr nz, .asm_75222 + CheckEvent EVENT_CINNABAR_GYM_GATE5_UNLOCKED + jr nz, .asm_75222 + ld e, $4 + jp CinnabarGymScript_753de + +.asm_75222 ld hl, CinnabarGymText_75a68 call PrintText ld hl, CinnabarGymText_75a6d ld de, CinnabarGymText_75a6d call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 .asm_2f755 ld hl, CinnabarGymText_75a72 call PrintText @@ -425,15 +526,23 @@ CinnabarGymText_75a72: CinnabarGymText8: TX_ASM - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6 jr nz, .asm_d87be + call CinnabarGymScript_753f3 + jr nz, .asm_75222 + CheckEvent EVENT_CINNABAR_GYM_GATE6_UNLOCKED + jr nz, .asm_75222 + ld e, $5 + jp CinnabarGymScript_753de + +.asm_75222 ld hl, CinnabarGymText_75a9d call PrintText ld hl, CinnabarGymText_75aa2 ld de, CinnabarGymText_75aa2 call SaveEndBattleTextPointers - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 .asm_d87be ld hl, CinnabarGymText_75aa7 call PrintText @@ -453,20 +562,5 @@ CinnabarGymText_75aa7: CinnabarGymText9: TX_ASM - CheckEvent EVENT_BEAT_BLAINE - jr nz, .asm_627d9 - ld hl, CinnabarGymText_75ac2 - jr .asm_0b11d -.asm_627d9 - ld hl, CinnabarGymText_75ac7 -.asm_0b11d - call PrintText + callab Func_f2133 jp TextScriptEnd - -CinnabarGymText_75ac2: - TX_FAR _CinnabarGymText_75ac2 - db "@" - -CinnabarGymText_75ac7: - TX_FAR _CinnabarGymText_75ac7 - db "@" diff --git a/scripts/CinnabarGym3.asm b/scripts/CinnabarGym3.asm new file mode 100755 index 00000000..9e8cad74 --- /dev/null +++ b/scripts/CinnabarGym3.asm @@ -0,0 +1,64 @@ +Func_f2133: + CheckEvent EVENT_BEAT_BLAINE + jr nz, .asm_627d9 + ld hl, CinnabarGymText_75ac2 + jr .asm_0b11d +.asm_627d9 + ld hl, CinnabarGymText_75ac7 +.asm_0b11d + call PrintText + ret + +CinnabarGymText_75ac2: + TX_FAR _CinnabarGymText_75ac2 + db "@" + +CinnabarGymText_75ac7: + TX_FAR _CinnabarGymText_75ac7 + db "@" + +Func_f2150: + ld hl, TextPointers_f215d + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp PrintText + +TextPointers_f215d: + dw CinnabarGymText_f2169 + dw CinnabarGymText_f216e + dw CinnabarGymText_f2173 + dw CinnabarGymText_f2178 + dw CinnabarGymText_f217d + dw CinnabarGymText_f2182 + +CinnabarGymText_f2169: + TX_FAR _CinnabarGymText_1 + db "@" + +CinnabarGymText_f216e: + TX_FAR _CinnabarGymText_2 + db "@" + +CinnabarGymText_f2173: + TX_FAR _CinnabarGymText_3 + db "@" + +CinnabarGymText_f2178: + TX_FAR _CinnabarGymText_4 + db "@" + +CinnabarGymText_f217d: + TX_FAR _CinnabarGymText_5 + db "@" + +CinnabarGymText_f2182: + TX_FAR _CinnabarGymText_6 + db "@" + +CinnabarGymText_f2187: + TX_FAR _CinnabarGymText_7 ; unused + db "@" diff --git a/scripts/CinnabarGym_2.asm b/scripts/CinnabarGym_2.asm new file mode 100755 index 00000000..00118fb5 --- /dev/null +++ b/scripts/CinnabarGym_2.asm @@ -0,0 +1,18 @@ +CinnabarGymScript_753de: + callab Func_f2150 + jp TextScriptEnd + +CinnabarGymScript_753e9: + push hl + ld hl, wd475 + bit 7, [hl] + res 7, [hl] + pop hl + ret + +CinnabarGymScript_753f3: + push hl + ld hl, wd475 + bit 7, [hl] + pop hl + ret diff --git a/scripts/CinnabarIsland.asm b/scripts/CinnabarIsland.asm index b6346a9c..5716428c 100755 --- a/scripts/CinnabarIsland.asm +++ b/scripts/CinnabarIsland.asm @@ -35,7 +35,7 @@ CinnabarIslandScript0: ld [wSimulatedJoypadStatesEnd], a call StartSimulatingJoypadStates xor a - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld [wJoyIgnore], a ld a, $1 ld [wCinnabarIslandCurScript], a diff --git a/scripts/CinnabarPokecenter.asm b/scripts/CinnabarPokecenter.asm index a6184bb0..53301266 100755 --- a/scripts/CinnabarPokecenter.asm +++ b/scripts/CinnabarPokecenter.asm @@ -7,6 +7,7 @@ CinnabarPokecenter_TextPointers: dw CinnabarPokecenterText2 dw CinnabarPokecenterText3 dw CinnabarTradeNurseText + dw CinnabarPokecenterText5 CinnabarHealNurseText: TX_POKECENTER_NURSE @@ -21,3 +22,8 @@ CinnabarPokecenterText3: CinnabarTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +CinnabarPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/Colosseum.asm b/scripts/Colosseum.asm index 8cc6b056..8cc6b056 100755..100644 --- a/scripts/Colosseum.asm +++ b/scripts/Colosseum.asm diff --git a/scripts/CopycatsHouse2F.asm b/scripts/CopycatsHouse2F.asm index b43234c3..e0ec5425 100755 --- a/scripts/CopycatsHouse2F.asm +++ b/scripts/CopycatsHouse2F.asm @@ -84,7 +84,7 @@ CopycatsHouse2FText6: CopycatsHouse2FText7: TX_ASM - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP ld hl, CopycatsHouse2FText_5cd1c jr nz, .notUp diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm index 81cf5534..5b65307e 100755 --- a/scripts/Daycare.asm +++ b/scripts/Daycare.asm @@ -50,11 +50,21 @@ DayCareMText1: ld a, PARTY_TO_DAYCARE ld [wMoveMonType], a call MoveMon + callab IsThisPartymonStarterPikachu + push af xor a ld [wRemoveMonFromBox], a call RemovePokemon + pop af + jr c, .depositedPikachuIntoDayCare ld a, [wcf91] call PlayCry + jr .asm_562e3 + +.depositedPikachuIntoDayCare + ldpikacry e, PikachuCry28 + callab PlayPikachuSoundClip +.asm_562e3 ld hl, DayCareComeSeeMeInAWhileText jp .done @@ -197,8 +207,27 @@ DayCareMText1: ld a, [hl] ld [de], a + ld a, [wPartyCount] + dec a + ld [wWhichPokemon], a + callab IsThisPartymonStarterPikachu + jr c, .withdrewPikachuFromDayCare ld a, [wcf91] call PlayCry + jr .asm_56430 + +.withdrewPikachuFromDayCare + ld a, $6 + ld [wPikachuSpawnState], a + + ; GameFreak... TriHard + ld hl, SchedulePikachuSpawnForAfterText + ld b, BANK(SchedulePikachuSpawnForAfterText) + ld hl, Bankswitch + + ldpikacry e, PikachuCry35 + callab PlayPikachuSoundClip +.asm_56430 ld hl, DayCareGotMonBackText jr .done diff --git a/scripts/FuchsiaMart.asm b/scripts/FuchsiaMart.asm index f17cac49..50786127 100755 --- a/scripts/FuchsiaMart.asm +++ b/scripts/FuchsiaMart.asm @@ -1,5 +1,6 @@ FuchsiaMart_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret FuchsiaMart_TextPointers: dw FuchsiaCashierText diff --git a/scripts/FuchsiaPokecenter.asm b/scripts/FuchsiaPokecenter.asm index 182ec8c3..40aa3d45 100755 --- a/scripts/FuchsiaPokecenter.asm +++ b/scripts/FuchsiaPokecenter.asm @@ -7,6 +7,7 @@ FuchsiaPokecenter_TextPointers: dw FuchsiaPokecenterText2 dw FuchsiaPokecenterText3 dw FuchsiaTradeNurseText + dw FuchsiaPokecenterText5 FuchsiaHealNurseText: TX_POKECENTER_NURSE @@ -21,3 +22,8 @@ FuchsiaPokecenterText3: FuchsiaTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +FuchsiaPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm index 265508e0..e2b7690c 100755 --- a/scripts/GameCorner.asm +++ b/scripts/GameCorner.asm @@ -71,8 +71,12 @@ CeladonGameCornerScript1: .asm_48c43 ld a, [wXCoord] cp $8 - jr nz, .asm_48c4d + jr nz, .pikachu ld de, MovementData_48c63 + jr .asm_48c4d +.pikachu + callab Func_f1f23 + ld de, MovementData_48c5a .asm_48c4d ld a, $b ld [H_SPRITEINDEX], a @@ -85,8 +89,8 @@ MovementData_48c5a: db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_UP db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT @@ -475,13 +479,11 @@ CeladonGameCornerScript_48f1e: ld hl, wd730 set 6, [hl] coord hl, 11, 0 - ld b, $5 - ld c, $7 + lb bc, 5, 7 call TextBoxBorder call UpdateSprites coord hl, 12, 1 - ld b, 4 - ld c, 7 + lb bc, 4, 7 call ClearScreenArea coord hl, 12, 2 ld de, GameCornerMoneyText @@ -491,7 +493,7 @@ CeladonGameCornerScript_48f1e: call PlaceString coord hl, 12, 3 ld de, wPlayerMoney - ld c, $a3 + ld c, 3 | MONEY_SIGN | LEADING_ZEROES call PrintBCDNumber coord hl, 12, 4 ld de, GameCornerCoinText diff --git a/scripts/GameCorner2.asm b/scripts/GameCorner2.asm new file mode 100755 index 00000000..f8d25905 --- /dev/null +++ b/scripts/GameCorner2.asm @@ -0,0 +1,12 @@ +Func_f1f23: + ld hl, PikachuMovementData_f1f2c + ld b, SPRITE_FACING_DOWN + call TryApplyPikachuMovementData + ret + +PikachuMovementData_f1f2c: + db $00 + db $20 + db $1e + db $35 + db $3f diff --git a/scripts/IndigoPlateauLobby.asm b/scripts/IndigoPlateauLobby.asm index f83c0ba4..d618d155 100755 --- a/scripts/IndigoPlateauLobby.asm +++ b/scripts/IndigoPlateauLobby.asm @@ -20,6 +20,7 @@ IndigoPlateauLobby_TextPointers: dw IndigoPlateauLobbyText3 dw IndigoCashierText dw IndigoTradeNurseText + dw IndigoPlateauLobbyText6 IndigoHealNurseText: TX_POKECENTER_NURSE @@ -34,3 +35,8 @@ IndigoPlateauLobbyText3: IndigoTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +IndigoPlateauLobbyText6: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm index 5e19ea7d..aec555a3 100755 --- a/scripts/LancesRoom.asm +++ b/scripts/LancesRoom.asm @@ -18,23 +18,22 @@ LanceShowOrHideEntranceBlocks: ; open entrance ld a, $31 ld b, $32 - jp LanceSetEntranceBlocks + jp .LanceSetEntranceBlocks + .closeEntrance ld a, $72 ld b, $73 - -LanceSetEntranceBlocks: +.LanceSetEntranceBlocks ; Replaces the tile blocks so the player can't leave. push bc ld [wNewTileBlockID], a lb bc, 6, 2 - call LanceSetEntranceBlock + call .LanceSetEntranceBlock pop bc ld a, b ld [wNewTileBlockID], a lb bc, 6, 3 - -LanceSetEntranceBlock: +.LanceSetEntranceBlock predef_jump ReplaceTileBlock ResetLanceScript: @@ -110,7 +109,7 @@ WalkToLance: ret WalkToLance_RLEList: - db D_UP, $0C + db D_UP, $0D db D_LEFT, $0C db D_DOWN, $07 db D_LEFT, $06 diff --git a/scripts/LavenderPokecenter.asm b/scripts/LavenderPokecenter.asm index 10482fef..21270313 100755 --- a/scripts/LavenderPokecenter.asm +++ b/scripts/LavenderPokecenter.asm @@ -7,6 +7,7 @@ LavenderPokecenter_TextPointers: dw LavenderPokecenterText2 dw LavenderPokecenterText3 dw LavenderTradeNurseText + dw LavenderPokecenterText5 LavenderTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST @@ -21,3 +22,8 @@ LavenderPokecenterText2: LavenderPokecenterText3: TX_FAR _LavenderPokecenterText3 db "@" + +LavenderPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoon1F.asm b/scripts/MtMoon1F.asm index b05b3f60..cb120420 100755 --- a/scripts/MtMoon1F.asm +++ b/scripts/MtMoon1F.asm @@ -96,42 +96,37 @@ MtMoon1TrainerHeader6: MtMoon1Text1: TX_ASM ld hl, MtMoon1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text2: TX_ASM ld hl, MtMoon1TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text3: TX_ASM ld hl, MtMoon1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text4: TX_ASM ld hl, MtMoon1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text5: TX_ASM ld hl, MtMoon1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text6: TX_ASM ld hl, MtMoon1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text7: TX_ASM ld hl, MtMoon1TrainerHeader6 +MtMoon1TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm index 863d9d22..cf4583d3 100755 --- a/scripts/MtMoonB2F.asm +++ b/scripts/MtMoonB2F.asm @@ -37,13 +37,23 @@ CoordsData_49d37: db $08,$0E db $FF -MtMoon3Script_49d58: +MtMoon3Script_49cd7: + CheckAndResetEvent EVENT_57E + call nz, MtMoon3Script_49cec xor a ld [wJoyIgnore], a +MtMoon3Script_49ce5: ld [wMtMoonB2FCurScript], a ld [wCurMapScript], a ret +MtMoon3Script_49cec: + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + ret + MtMoonB2F_ScriptPointers: dw MtMoon3Script0 dw DisplayEnemyTrainerTextAndStartBattle @@ -51,23 +61,41 @@ MtMoonB2F_ScriptPointers: dw MtMoon3Script3 dw MtMoon3Script4 dw MtMoon3Script5 + dw MtMoon3Script6 + dw MtMoon3Script7 + dw MtMoon3Script8 + dw MtMoon3Script9 + dw MtMoon3Script10 + dw MtMoon3Script11 + dw MtMoon3Script12 + dw MtMoon3Script13 + dw MtMoon3Script14 + dw MtMoon3Script15 MtMoon3Script0: + CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + call z, MtMoon3Script_49d28 + CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + call z, MtMoon3Script_49e15 + ret + +MtMoon3Script_49d28: CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wYCoord] cp $8 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wXCoord] cp $d - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b xor a ld [hJoyHeld], a ld a, $1 ld [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoon3Script_49d91: +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -75,57 +103,93 @@ MtMoon3Script_49d91: MtMoon3Script3: ld a, [wIsInBattle] cp $ff - jp z, MtMoon3Script_49d58 + jp z, MtMoon3Script_49cd7 call UpdateSprites call Delay3 SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret MtMoon3Script4: ld a, $1 ld [H_SPRITEINDEX], a call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 + call ArePlayerCoordsInArray + jr c, .asm_49db0 + ld hl, CoordsData_49dd5 call ArePlayerCoordsInArray - jr c, .asm_49dd7 - ld hl, CoordsData_49df1 + jr c, .asm_49d9b + ld hl, CoordsData_49dce call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MovementData_49df9 - jr .asm_49dda -.asm_49dd7 - ld de, MovementData_49df8 -.asm_49dda + jr c, .asm_49da3 + jp CheckFightingMapTrainers + +.asm_49d9b + ld b, SPRITE_FACING_LEFT + ld hl, PikachuMovementData_49dd8 + call MtMoon3Script_4a325 +.asm_49da3 + ld de, MovementData_49ddd + jr .asm_49db3 + +.asm_49da8 + ld b, SPRITE_FACING_RIGHT + ld hl, PikachuMovementData_49dca + call MtMoon3Script_4a325 +.asm_49db0 + ld de, MovementData_49ddc +.asm_49db3 ld a, $1 ld [H_SPRITEINDEX], a call MoveSprite ld a, $5 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret -CoordsData_49dea: +CoordsData_49dc0: db $07,$0C db $06,$0B db $05,$0C db $FF -CoordsData_49df1: +CoordsData_49dc7: + db $07,$0C + db $FF + +PikachuMovementData_49dca: + db $00 + db $35 + db $33 + db $3f + +CoordsData_49dce: db $07,$0D db $06,$0E db $05,$0E db $FF -MovementData_49df8: - db NPC_MOVEMENT_RIGHT +CoordsData_49dd5: + db $07,$0D + db $FF -MovementData_49df9: - db NPC_MOVEMENT_UP,$FF +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: + db NPC_MOVEMENT_RIGHT +MovementData_49ddd: + db NPC_MOVEMENT_UP + db $FF MtMoon3Script5: ld a, [wd730] @@ -135,23 +199,213 @@ MtMoon3Script5: ld [wJoyIgnore], a ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld a, $a + ld a, $b ld [hSpriteIndexOrTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL + CheckEvent EVENT_GOT_HELIX_FOSSIL jr z, .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_2 + ld a, HS_MT_MOON_B2F_FOSSIL_1 jr .asm_49e1f .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_1 + ld a, HS_MT_MOON_B2F_FOSSIL_2 .asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49e15: + ld a, [wXCoord] + cp $3 + ret nz + ld a, [wYCoord] + cp $5 + ret nz + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ld [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f84 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f84 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $c + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call MtMoon3Script_49ce5 + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoon3Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $7 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script7: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script8: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +MtMoon3Script9: + ld a, $6 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script10: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script11: + ld a, $2 + ld [wSpriteStateData1 + 6 * $10 + 1], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 6 * $10 + 9], a + call Delay3 + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $d + ld [hSpriteIndexOrTextID], a + call DisplayTextID +MtMoon3Script12: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3JessieJamesEndBattleText + ld de, MtMoon3JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2a + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_57E + ld a, $d + call MtMoon3Script_49ce5 + ret + +MtMoon3Script13: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoon3Script_49cd7 + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld [wSpriteStateData1 + 6 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld [wSpriteStateData1 + 6 * $10 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $e + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $e + call MtMoon3Script_49ce5 + ret + +MtMoon3Script14: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $f + call MtMoon3Script_49ce5 + ret + +MtMoon3Script15: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + ResetEventReuseHL EVENT_57E + ld a, $0 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49f84: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoon3Script_49f93: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoonB2F_TextPointers: @@ -162,213 +416,225 @@ MtMoonB2F_TextPointers: dw MtMoon3Text5 dw MtMoon3Text6 dw MtMoon3Text7 + dw MtMoon3Text8 dw PickUpItemText dw PickUpItemText - dw MtMoon3Text_49f99 + dw MtMoon3Text11 + dw MtMoon3Text12 + dw MtMoon3Text13 + dw MtMoon3Text14 MtMoon3TrainerHeader0: - dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0 - db ($4 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0 - dw MtMoon3BattleText2 ; TextBeforeBattle - dw MtMoon3AfterBattleText2 ; TextAfterBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - -MtMoon3TrainerHeader1: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_1 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_1 - dw MtMoon3BattleText3 ; TextBeforeBattle - dw MtMoon3AfterBattleText3 ; TextAfterBattle - dw MtMoon3EndBattleText3 ; TextEndBattle - dw MtMoon3EndBattleText3 ; TextEndBattle + dw MtMoon3BattleText3 + dw MtMoon3AfterBattleText3 + dw MtMoon3EndBattleText3 + dw MtMoon3EndBattleText3 -MtMoon3TrainerHeader2: +MtMoon3TrainerHeader1: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2 - dw MtMoon3BattleText4 ; TextBeforeBattle - dw MtMoon3AfterBattleText4 ; TextAfterBattle - dw MtMoon3EndBattleText4 ; TextEndBattle - dw MtMoon3EndBattleText4 ; TextEndBattle + dw MtMoon3BattleText4 + dw MtMoon3AfterBattleText4 + dw MtMoon3EndBattleText4 + dw MtMoon3EndBattleText4 -MtMoon3TrainerHeader3: +MtMoon3TrainerHeader2: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3 - dw MtMoon3BattleText5 ; TextBeforeBattle - dw MtMoon3AfterBattleText5 ; TextAfterBattle - dw MtMoon3EndBattleText5 ; TextEndBattle - dw MtMoon3EndBattleText5 ; TextEndBattle + dw MtMoon3BattleText5 + dw MtMoon3AfterBattleText5 + dw MtMoon3EndBattleText5 + dw MtMoon3EndBattleText5 + + db $FF + +MtMoon3Text2: +MtMoon3Text6: + db "@" + +MtMoon3Text12: + TX_FAR _MtMoonJessieJamesText1 + TX_ASM + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd - db $ff +MtMoon3Text13: + TX_FAR _MtMoonJessieJamesText2 + db "@" + +MtMoon3JessieJamesEndBattleText: + TX_FAR _MtMoonJessieJamesText3 + db "@" + +MtMoon3Text14: + TX_FAR _MtMoonJessieJamesText4 + TX_ASM + ld c, 64 + call DelayFrames + jp TextScriptEnd MtMoon3Text1: TX_ASM CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jr z, .asm_49e8d - and $c0 - jr nz, .asm_49eb8 - ld hl, MtMoon3Text_49f8f + jr z, .asm_4a02f + ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + and (1 << (EVENT_GOT_DOME_FOSSIL % 8)) | (1 << (EVENT_GOT_HELIX_FOSSIL % 8)) + jr nz, .asm_4a057 + ld hl, MtMoon3Text_4a116 call PrintText - jr .asm_49ebe -.asm_49e8d - ld hl, MtMoon3Text_49f85 + jr .asm_4a05d + +.asm_4a02f + ld hl, MtMoon3Text_4a10c call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, MtMoon3Text_49f8a - ld de, MtMoon3Text_49f8a + ld hl, MtMoon3SuperNerdEndBattleText + ld de, MtMoon3SuperNerdEndBattleText call SaveEndBattleTextPointers ld a, [H_SPRITEINDEX] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ld a, $3 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a - jr .asm_49ebe -.asm_49eb8 - ld hl, MtMoon3Text_49f94 + call MtMoon3Script_49ce5 + jr .asm_4a05d + +.asm_4a057 + ld hl, MtMoon3Text_4a11b call PrintText -.asm_49ebe +.asm_4a05d jp TextScriptEnd -MtMoon3Text2: +MtMoon3Text3: TX_ASM ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text3: +MtMoon3Text4: TX_ASM ld hl, MtMoon3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text4: - TX_ASM - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd MtMoon3Text5: TX_ASM - ld hl, MtMoon3TrainerHeader3 + ld hl, MtMoon3TrainerHeader2 +MtMoon3TalkToTrainer: call TalkToTrainer jp TextScriptEnd -MtMoon3Text6: +MtMoon3Text7: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f24 + ld hl, MtMoon3Text_4a0ae call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f21 + jr nz, .asm_4a0ab lb bc, DOME_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_1 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f21 + call MtMoon3Script_49ce5 +.asm_4a0ab jp TextScriptEnd -MtMoon3Text_49f24: +MtMoon3Text_4a0ae: TX_FAR _MtMoon3Text_49f24 db "@" -MtMoon3Text7: +MtMoon3Text8: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f64 + ld hl, MtMoon3Text_4a0eb call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f61 + jr nz, .asm_4a0e8 lb bc, HELIX_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_2 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f61 + call MtMoon3Script_49ce5 +.asm_4a0e8 jp TextScriptEnd -MtMoon3Text_49f64: +MtMoon3Text_4a0eb: TX_FAR _MtMoon3Text_49f64 db "@" -MtMoon3Script_49f69: - ld hl, MtMoon3Text_49f6f +MtMoon3Script_4a0f0: + ld hl, MtMoon3Text_4a0f6 jp PrintText -MtMoon3Text_49f6f: +MtMoon3Text_4a0f6: TX_FAR _MtMoon3Text_49f6f TX_SFX_KEY_ITEM TX_WAIT db "@" -MtMoon3Script_49f76: - ld hl, MtMoon3Text_49f7f +MtMoon3Script_4a0fd: + ld hl, MtMoon3Text_4a106 call PrintText jp TextScriptEnd -MtMoon3Text_49f7f: +MtMoon3Text_4a106: TX_FAR _MtMoon3Text_49f7f TX_WAIT db "@" -MtMoon3Text_49f85: +MtMoon3Text_4a10c: TX_FAR _MtMoon3Text_49f85 db "@" -MtMoon3Text_49f8a: +MtMoon3SuperNerdEndBattleText: TX_FAR _MtMoon3Text_49f8a db "@" -MtMoon3Text_49f8f: +MtMoon3Text_4a116: TX_FAR _MtMoon3Text_49f8f db "@" -MtMoon3Text_49f94: +MtMoon3Text_4a11b: TX_FAR _MtMoon3Text_49f94 db "@" -MtMoon3Text_49f99: +MtMoon3Text11: TX_FAR _MtMoon3Text_49f99 TX_SFX_KEY_ITEM db "@" -MtMoon3BattleText2: - TX_FAR _MtMoon3BattleText2 - db "@" - -MtMoon3EndBattleText2: - TX_FAR _MtMoon3EndBattleText2 - db "@" - -MtMoon3AfterBattleText2: - TX_FAR _MtMoon3AfterBattleText2 - db "@" - MtMoon3BattleText3: TX_FAR _MtMoon3BattleText3 db "@" @@ -404,3 +670,4 @@ MtMoon3EndBattleText5: MtMoon3AfterBattleText5: TX_FAR _MtMoon3AfterBattleText5 db "@" + diff --git a/scripts/MtMoonB2F_2.asm b/scripts/MtMoonB2F_2.asm new file mode 100755 index 00000000..c6ec92b4 --- /dev/null +++ b/scripts/MtMoonB2F_2.asm @@ -0,0 +1,28 @@ +MtMoon3Script_4a325: ; pikachu-related function? + ld a, [wd472] + bit 7, a + ret z + ld a, [wWalkBikeSurfState] + and a + ret nz + + push hl + push bc + callab GetPikachuFacingDirectionAndReturnToE + pop bc + pop hl + ld a, b + cp e + ret nz + + push hl + ld a, [wUpdateSpritesEnabled] + push af + ld a, $ff + ld [wUpdateSpritesEnabled], a + callab LoadPikachuShadowIntoVRAM + pop af + ld [wUpdateSpritesEnabled], a + pop hl + call ApplyPikachuMovementData + ret diff --git a/scripts/MtMoonPokecenter.asm b/scripts/MtMoonPokecenter.asm index 969031db..77386109 100755 --- a/scripts/MtMoonPokecenter.asm +++ b/scripts/MtMoonPokecenter.asm @@ -9,9 +9,10 @@ MtMoonPokecenter_TextPointers: dw MagikarpSalesmanText dw MtMoonPokecenterText5 dw MtMoonTradeNurseText + dw MtMoonPokecenterText7 MtMoonHealNurseText: - db $ff + TX_POKECENTER_NURSE MtMoonPokecenterText2: TX_FAR _MtMoonPokecenterText1 @@ -23,72 +24,17 @@ MtMoonPokecenterText3: MagikarpSalesmanText: TX_ASM - CheckEvent EVENT_BOUGHT_MAGIKARP, 1 - jp c, .alreadyBoughtMagikarp - ld hl, .Text1 - call PrintText - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .choseNo - ld [hMoney], a - ld [hMoney + 2], a - ld a, $5 - ld [hMoney + 1], a - call HasEnoughMoney - jr nc, .enoughMoney - ld hl, .NoMoneyText - jr .printText -.enoughMoney - lb bc, MAGIKARP, 5 - call GivePokemon - jr nc, .done - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 2], a - ld a, $5 - ld [wPriceTemp + 1], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - SetEvent EVENT_BOUGHT_MAGIKARP - jr .done -.choseNo - ld hl, .RefuseText - jr .printText -.alreadyBoughtMagikarp - ld hl, .Text2 -.printText - call PrintText -.done + callab MagikarpSalesman jp TextScriptEnd -.Text1 - TX_FAR _MagikarpSalesmanText1 - db "@" - -.RefuseText - TX_FAR _MagikarpSalesmanNoText - db "@" - -.NoMoneyText - TX_FAR _MagikarpSalesmanNoMoneyText - db "@" - -.Text2 - TX_FAR _MagikarpSalesmanText2 - db "@" - MtMoonPokecenterText5: TX_FAR _MtMoonPokecenterText5 db "@" MtMoonTradeNurseText: - db $f6 + TX_CABLE_CLUB_RECEPTIONIST + +MtMoonPokecenterText7: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoonPokecenter2.asm b/scripts/MtMoonPokecenter2.asm new file mode 100755 index 00000000..6097342b --- /dev/null +++ b/scripts/MtMoonPokecenter2.asm @@ -0,0 +1,66 @@ +MagikarpSalesman: + CheckEvent EVENT_BOUGHT_MAGIKARP, 1 + jp c, .alreadyBoughtMagikarp + ld hl, .Text1 + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .choseNo + ; $000500 + xor a + ld [hMoney], a + ld [hMoney + 2], a + ld a, $5 + ld [hMoney + 1], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, .NoMoneyText + jr .printText +.enoughMoney + lb bc, MAGIKARP, 5 + call GivePokemon + jr nc, .done + ; $000500 + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 2], a + ld a, $5 + ld [wPriceTemp + 1], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, $3 + predef SubBCDPredef + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + SetEvent EVENT_BOUGHT_MAGIKARP + jr .done +.choseNo + ld hl, .RefuseText + jr .printText +.alreadyBoughtMagikarp + ld hl, .Text2 +.printText + call PrintText +.done + ret + +.Text1 + TX_FAR _MagikarpSalesmanText1 + db "@" + +.RefuseText + TX_FAR _MagikarpSalesmanNoText + db "@" + +.NoMoneyText + TX_FAR _MagikarpSalesmanNoMoneyText + db "@" + +.Text2 + TX_FAR _MagikarpSalesmanText2 + db "@" diff --git a/scripts/Museum1F.asm b/scripts/Museum1F.asm index 712f1fc4..fdae9293 100755 --- a/scripts/Museum1F.asm +++ b/scripts/Museum1F.asm @@ -5,7 +5,8 @@ Museum1F_Script: ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, Museum1F_ScriptPointers ld a, [wMuseum1FCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret Museum1F_ScriptPointers: dw Museum1FScript0 @@ -40,208 +41,25 @@ Museum1F_TextPointers: Museum1FText1: TX_ASM - ld a, [wYCoord] - cp $4 - jr nz, .asm_8774b - ld a, [wXCoord] - cp $d - jp z, Museum1FScript_5c1f9 - jr .asm_b8709 -.asm_8774b - cp $3 - jr nz, .asm_d49e7 - ld a, [wXCoord] - cp $c - jp z, Museum1FScript_5c1f9 -.asm_d49e7 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr nz, .asm_31a16 - ld hl, Museum1FText_5c23d - call PrintText - jp Museum1FScriptEnd -.asm_b8709 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr z, .asm_3ded4 -.asm_31a16 - ld hl, Museum1FText_5c242 - call PrintText - jp Museum1FScriptEnd -.asm_3ded4 - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - xor a - ld [hJoyHeld], a - ld hl, Museum1FText_5c21f - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_de133 - xor a - ld [hMoney], a - ld [hMoney + 1], a - ld a, $50 - ld [hMoney + 2], a - call HasEnoughMoney - jr nc, .asm_0f3e3 - ld hl, Museum1FText_5c229 - call PrintText - jp .asm_de133 -.asm_0f3e3 - ld hl, Museum1FText_5c224 - call PrintText - SetEvent EVENT_BOUGHT_MUSEUM_TICKET - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 1], a - ld a, $50 - ld [wPriceTemp + 2], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - ld a, SFX_PURCHASE - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - jr .asm_0b094 -.asm_de133 - ld hl, Museum1FText_5c21a - call PrintText - ld a, $1 - ld [wSimulatedJoypadStatesIndex], a - ld a, D_DOWN - ld [wSimulatedJoypadStatesEnd], a - call StartSimulatingJoypadStates - call UpdateSprites - jr Museum1FScriptEnd -.asm_0b094 - ld a, $1 - ld [wMuseum1FCurScript], a - jr Museum1FScriptEnd - -Museum1FScript_5c1f9: - ld hl, Museum1FText_5c22e - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - cp $0 - jr nz, .asm_d1144 - ld hl, Museum1FText_5c233 - call PrintText - jr Museum1FScriptEnd -.asm_d1144 - ld hl, Museum1FText_5c238 - call PrintText -Museum1FScriptEnd: + callba Func_f1c1b jp TextScriptEnd -Museum1FText_5c21a: - TX_FAR _Museum1FText_5c21a - db "@" - -Museum1FText_5c21f: - TX_FAR _Museum1FText_5c21f - db "@" - -Museum1FText_5c224: - TX_FAR _Museum1FText_5c224 - db "@" - -Museum1FText_5c229: - TX_FAR _Museum1FText_5c229 - db "@" - -Museum1FText_5c22e: - TX_FAR _Museum1FText_5c22e - db "@" - -Museum1FText_5c233: - TX_FAR _Museum1FText_5c233 - db "@" - -Museum1FText_5c238: - TX_FAR _Museum1FText_5c238 - db "@" - -Museum1FText_5c23d: - TX_FAR _Museum1FText_5c23d - db "@" - -Museum1FText_5c242: - TX_FAR _Museum1FText_5c242 - db "@" - Museum1FText2: TX_ASM - ld hl, Museum1FText_5c251 - call PrintText + callba Func_f1d2a jp TextScriptEnd -Museum1FText_5c251: - TX_FAR _Museum1FText_5c251 - db "@" - Museum1FText3: TX_ASM - CheckEvent EVENT_GOT_OLD_AMBER - jr nz, .asm_5c285 - ld hl, Museum1FText_5c28e - call PrintText - lb bc, OLD_AMBER, 1 - call GiveItem - jr nc, .BagFull - SetEvent EVENT_GOT_OLD_AMBER - ld a, HS_OLD_AMBER - ld [wMissableObjectIndex], a - predef HideObject - ld hl, ReceivedOldAmberText - jr .asm_5c288 -.BagFull - ld hl, Museum1FText_5c29e - jr .asm_5c288 -.asm_5c285 - ld hl, Museum1FText_5c299 -.asm_5c288 - call PrintText + callba Func_f1d36 jp TextScriptEnd -Museum1FText_5c28e: - TX_FAR _Museum1FText_5c28e - db "@" - -ReceivedOldAmberText: - TX_FAR _ReceivedOldAmberText - TX_SFX_ITEM_1 - db "@" - -Museum1FText_5c299: - TX_FAR _Museum1FText_5c299 - db "@" - -Museum1FText_5c29e: - TX_FAR _Museum1FText_5c29e - db "@" - Museum1FText4: TX_ASM - ld hl, Museum1FText_5c2ad - call PrintText + callba Func_f1d80 jp TextScriptEnd -Museum1FText_5c2ad: - TX_FAR _Museum1FText_5c2ad - db "@" - Museum1FText5: TX_ASM - ld hl, Museum1FText_5c2bc - call PrintText + callba Func_f1d8c jp TextScriptEnd - -Museum1FText_5c2bc: - TX_FAR _Museum1FText_5c2bc - db "@" diff --git a/scripts/Museum1F2.asm b/scripts/Museum1F2.asm new file mode 100755 index 00000000..9b3df420 --- /dev/null +++ b/scripts/Museum1F2.asm @@ -0,0 +1,211 @@ +Func_f1c1b: + ld a, [wYCoord] + cp $4 + jr nz, .asm_f1c2c + ld a, [wXCoord] + cp $d + jp z, .asm_f1cde + jr .asm_f1c48 + +.asm_f1c2c + cp $3 + jr nz, .asm_f1c38 + ld a, [wXCoord] + cp a, $c + jp z, .asm_f1cde +.asm_f1c38 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr nz, .asm_f1c4f + ld hl, Museum1FText_f1d20 + call PrintText + jp .asm_f1cfc + +.asm_f1c48 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr z, .asm_f1c58 +.asm_f1c4f + ld hl, Museum1FText_f1d25 + call PrintText + jp .asm_f1cfc + +.asm_f1c58 + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + xor a + ld [hJoyHeld], a + ld hl, Museum1FText_f1d02 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1cbf + xor a + ld [hMoney], a + ld [hMoney + 1], a + ld a, $50 + ld [hMoney + 2], a + call HasEnoughMoney + jr nc, .asm_f1c89 + ld hl, Museum1FText_f1d0c + call PrintText + jp .asm_f1cbf + +.asm_f1c89 + ld hl, Museum1FText_f1d07 + call PrintText + SetEvent EVENT_BOUGHT_MUSEUM_TICKET + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 1], a + ld a, $50 + ld [wPriceTemp + 2], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, 3 + predef SubBCDPredef + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + ld a, SFX_PURCHASE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + jr .asm_f1cd7 + +.asm_f1cbf + ld hl, Museum1FText_f1cfd + call PrintText + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + call UpdateSprites + jr .asm_f1cfc + +.asm_f1cd7 + ld a, $1 + ld [wMuseum1FCurScript], a + jr .asm_f1cfc + +.asm_f1cde + ld hl, Museum1FText_f1d11 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + cp 0 + jr nz, .asm_f1cf6 + ld hl, Museum1FText_f1d16 + call PrintText + jr .asm_f1cfc + +.asm_f1cf6 + ld hl, Museum1FText_f1d1b + call PrintText +.asm_f1cfc + ret + +Museum1FText_f1cfd: + TX_FAR _Museum1FText_5c21a + db "@" + +Museum1FText_f1d02: + TX_FAR _Museum1FText_5c21f + db "@" + +Museum1FText_f1d07: + TX_FAR _Museum1FText_5c224 + db "@" + +Museum1FText_f1d0c: + TX_FAR _Museum1FText_5c229 + db "@" + +Museum1FText_f1d11: + TX_FAR _Museum1FText_5c22e + db "@" + +Museum1FText_f1d16: + TX_FAR _Museum1FText_5c233 + db "@" + +Museum1FText_f1d1b: + TX_FAR _Museum1FText_5c238 + db "@" + +Museum1FText_f1d20: + TX_FAR _Museum1FText_5c23d + db "@" + +Museum1FText_f1d25: + TX_FAR _Museum1FText_5c242 + db "@" + +Func_f1d2a: + ld hl, Museum1FText_f1d31 + call PrintText + ret + +Museum1FText_f1d31: + TX_FAR _Museum1FText_5c251 + db "@" + +Func_f1d36: + CheckEvent EVENT_GOT_OLD_AMBER + jr nz, .asm_f1d64 + ld hl, Museum1FText_f1d6b + call PrintText + lb bc, OLD_AMBER, 1 + call GiveItem + jr nc, .asm_f1d5f + SetEvent EVENT_GOT_OLD_AMBER + ld a, HS_OLD_AMBER + ld [wMissableObjectIndex], a + predef HideObject + ld hl, Museum1FText_f1d70 + jr .asm_f1d67 + +.asm_f1d5f + ld hl, Museum1FText_f1d7b + jr .asm_f1d67 + +.asm_f1d64 + ld hl, Museum1FText_f1d76 +.asm_f1d67 + call PrintText + ret + +Museum1FText_f1d6b: + TX_FAR _Museum1FText_5c28e + db "@" + +Museum1FText_f1d70: + TX_FAR _ReceivedOldAmberText + TX_SFX_ITEM_1 + db "@" + +Museum1FText_f1d76: + TX_FAR _Museum1FText_5c299 + db "@" + +Museum1FText_f1d7b: + TX_FAR _Museum1FText_5c29e + db "@" + +Func_f1d80: + ld hl, Museum1FText_f1d87 + call PrintText + ret + +Museum1FText_f1d87: + TX_FAR _Museum1FText_5c2ad + db "@" + +Func_f1d8c: + ld hl, Museum1FText_f1d93 + call PrintText + ret + +Museum1FText_f1d93: + TX_FAR _Museum1FText_5c2bc + db "@" diff --git a/scripts/Museum2F.asm b/scripts/Museum2F.asm index ce4d3d81..e97b8ded 100755 --- a/scripts/Museum2F.asm +++ b/scripts/Museum2F.asm @@ -1,5 +1,6 @@ Museum2F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Museum2F_TextPointers: dw Museum2FText1 @@ -27,9 +28,40 @@ Museum2FText4: db "@" Museum2FText5: + TX_ASM + ld a, [wd472] + bit 7, a + jr nz, .asm_5c1f6 + ld hl, Museum2FText_5c20e + call PrintText + jr .asm_5c20b + +.asm_5c1f6 + ld a, [wPikachuHappiness] + cp 101 + jr c, .asm_5c205 + ld hl, Museum2FText_5c218 + call PrintText + jr .asm_5c20b + +.asm_5c205 + ld hl, Museum2FText_5c213 + call PrintText +.asm_5c20b + jp TextScriptEnd + +Museum2FText_5c20e: TX_FAR _Museum2FText5 db "@" +Museum2FText_5c213: + TX_FAR _Museum2FPikachuText1 + db "@" + +Museum2FText_5c218: + TX_FAR _Museum2FPikachuText2 + db "@" + Museum2FText6: TX_FAR _Museum2FText6 db "@" diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm index 11abdf65..04f31d2a 100755 --- a/scripts/OaksLab.asm +++ b/scripts/OaksLab.asm @@ -7,7 +7,8 @@ OaksLab_Script: ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, OaksLab_ScriptPointers ld a, [wOaksLabCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret OaksLab_ScriptPointers: dw OaksLabScript0 @@ -29,6 +30,10 @@ OaksLab_ScriptPointers: dw OaksLabScript16 dw OaksLabScript17 dw OaksLabScript18 + dw OaksLabScript19 + dw OaksLabScript20 + dw OaksLabScript21 + dw OaksLabScript22 OaksLabScript0: CheckEvent EVENT_OAK_APPEARED_IN_PALLET @@ -47,7 +52,7 @@ OaksLabScript0: ret OaksLabScript1: - ld a, $8 + ld a, $6 ld [H_SPRITEINDEX], a ld de, OakEntryMovement call MoveSprite @@ -90,7 +95,7 @@ OaksLabScript3: xor a ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $5 + ld a, $3 ld [H_SPRITEINDEX], a xor a ld [hSpriteFacingDirection], a @@ -115,7 +120,6 @@ OaksLabScript4: ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - call UpdateSprites ld hl, wFlags_D733 res 1, [hl] call PlayDefaultMusic @@ -125,24 +129,28 @@ OaksLabScript4: ret OaksLabScript5: + SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON ld a, $fc ld [wJoyIgnore], a - ld a, $11 + ld a, $d ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $12 + ld a, $e ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $13 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $f ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $14 + ld a, $10 ld [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON xor a ld [wJoyIgnore], a @@ -154,7 +162,7 @@ OaksLabScript6: ld a, [wYCoord] cp $6 ret nz - ld a, $5 + ld a, $3 ld [H_SPRITEINDEX], a xor a ; SPRITE_FACING_DOWN ld [hSpriteFacingDirection], a @@ -165,7 +173,7 @@ OaksLabScript6: ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call UpdateSprites - ld a, $c + ld a, $a ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 @@ -191,176 +199,130 @@ OaksLabScript7: ret OaksLabScript8: - ld a, [wPlayerStarter] - cp STARTER1 - jr z, .Charmander - cp STARTER2 - jr z, .Squirtle - jr .Bulbasaur -.Charmander - ld de, .MiddleBallMovement1 - ld a, [wYCoord] - cp $4 ; is the player standing below the table? - jr z, .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 $FF - -.MiddleBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db $FF - -.Squirtle - ld de, .RightBallMovement1 - ld a, [wYCoord] - cp $4 ; is the player standing below the table? - jr z, .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 $FF - -.RightBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db $FF - -.Bulbasaur - ld de, .LeftBallMovement1 - ld a, [wXCoord] - cp $9 ; is the player standing to the right of the table? - jr nz, .moveBlue - push hl - ld a, $1 - ld [H_SPRITEINDEX], a - ld a, $4 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - push hl - ld [hl], $4c - inc hl - inc hl - ld [hl], $0 - pop hl - inc h - ld [hl], $8 - inc hl - ld [hl], $9 - ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that - pop hl - jr .moveBlue - -.LeftBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT ; not yet terminated! -.LeftBallMovement2 - db NPC_MOVEMENT_RIGHT - db $FF - -.moveBlue ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a + ld de, .SonyPushesPlayerAwayFromEeveeBall call MoveSprite - ld a, $9 ld [wOaksLabCurScript], a ret +.SonyPushesPlayerAwayFromEeveeBall + db $00 + db $07 + db $07 + db $07 + db $FF + OaksLabScript9: ld a, [wd730] bit 0, a - ret nz - ld a, $fc - ld [wJoyIgnore], a + jr nz, .asm_1c564 + ld a, HS_STARTER_BALL_1 + ld [wMissableObjectIndex], a + predef HideObject ld a, $1 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $d - ld [hSpriteIndexOrTextID], a - call DisplayTextID - ld a, [wRivalStarterBallSpriteIndex] - cp $2 - jr nz, .rivalDidNotChoseBall1 - ld a, HS_STARTER_BALL_1 - jr .hideBallAndContinue -.rivalDidNotChoseBall1 - cp $3 - jr nz, .rivalChoseBall3 - ld a, HS_STARTER_BALL_2 - jr .hideBallAndContinue -.rivalChoseBall3 - ld a, HS_STARTER_BALL_3 -.hideBallAndContinue - ld [wMissableObjectIndex], a - predef HideObject - call Delay3 - ld a, [wRivalStarterTemp] + ld a, 1 ld [wRivalStarter], a - ld [wcf91], a + ld a, EEVEE ld [wd11e], a call GetMonName + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $11 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + + ld a, $a + ld [wOaksLabCurScript], a + ret + +.asm_1c564 + ld a, [wYCoord] + cp $4 + ret nz + ld a, [wNPCNumScriptedSteps] + cp 1 + ret nz + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a + ld a, $2 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_RIGHT + ld [wSimulatedJoypadStatesEnd], a + ld [wSimulatedJoypadStatesEnd + 1], a + call StartSimulatingJoypadStates + ret + +OaksLabScript10: + ld a, [wYCoord] + cp $4 + jr z, .asm_1c599 ld a, $1 - ld [H_SPRITEINDEX], a - ld a, SPRITE_FACING_UP - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, $e + ld [wSimulatedJoypadStatesIndex], a + ld a, D_LEFT + ld [wSimulatedJoypadStatesEnd], a + jr .asm_1c5a6 + +.asm_1c599 + ld hl, wSimulatedJoypadStatesEnd + ld de, OaksLabRLE_PlayerWalksToOak + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a +.asm_1c5a6 + call StartSimulatingJoypadStates + ld a, $b + ld [wOaksLabCurScript], a + ret + +OaksLabRLE_PlayerWalksToOak: + db D_UP, 2 + db D_LEFT, 3 + db D_DOWN, 1 + db D_LEFT, 1 + db $FF + +OaksLabScript11: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + ld a, $12 ld [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_GOT_STARTER xor a ld [wJoyIgnore], a - ld a, $a + ld a, $c ld [wOaksLabCurScript], a ret -OaksLabScript10: +OaksLabScript12: ld a, [wYCoord] cp $6 ret nz + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $1 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN + ld [hSpriteIndexOrTextID], a + xor a ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic - ld a, $f + ld a, $b ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 ld [hNPCPlayerRelativePosPerspective], a ld a, $1 swap a - ld [hNPCSpriteOffset], a + ld [hNPCPlayerYDistance], a predef CalcPositionOfPlayerRelativeToNPC ld a, [hNPCPlayerYDistance] dec a @@ -368,40 +330,25 @@ OaksLabScript10: predef FindPathToPlayer ld de, wNPCMovementDirections2 ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a call MoveSprite - - ld a, $b + ld a, $d ld [wOaksLabCurScript], a ret -OaksLabScript11: +OaksLabScript13: ld a, [wd730] bit 0, a ret nz - - ; define which team rival uses, and fight it + ld a, $1 + ld [wSpriteIndex], a + call GetSpritePosition1 ld a, OPP_SONY1 ld [wCurOpponent], a - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle ld a, $1 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done ld [wTrainerNo], a - ld a, $1 - ld [wSpriteIndex], a - call GetSpritePosition1 - ld hl, OaksLabText_1d3be - ld de, OaksLabText_1d3c3 + ld hl, OaksLabRivalDefeatedText + ld de, OaksLabRivalBeatYouText call SaveEndBattleTextPointers ld hl, wd72d set 6, [hl] @@ -410,12 +357,28 @@ OaksLabScript11: ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, $c + ld a, $e ld [wOaksLabCurScript], a ret -OaksLabScript12: - ld a, $f0 +OaksLabScript14: + ld a, $ff + ld [wJoyIgnore], a + + ; If you beat your rival here, his Eevee will evolve into + ; Jolteon if you beat him on Route 22, or Flareon if you + ; skip or lose that battle. + ; Otherwise, it will evolve into Vaporeon. + ld a, [wBattleResult] + and a + ld b, $3 + jr nz, .asm_1c660 + ld b, $2 +.asm_1c660 + ld a, b + ld [wRivalStarter], a + + ld a, $ff ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a @@ -423,66 +386,64 @@ OaksLabScript12: ld a, $1 ld [wSpriteIndex], a call SetSpritePosition1 - ld a, $1 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 1 * $10 + 9], a predef HealParty SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB - - ld a, $d + ld a, $f ld [wOaksLabCurScript], a ret -OaksLabScript13: +OaksLabScript15: ld c, 20 call DelayFrames - ld a, $10 + ld a, $c ld [hSpriteIndexOrTextID], a call DisplayTextID callba Music_RivalAlternateStart ld a, $1 - ld [H_SPRITEINDEX], a - ld de, .RivalExitMovement + ld [hSpriteIndexOrTextID], a + ld de, .OaksLabMovement_RivalWalksOut1 call MoveSprite ld a, [wXCoord] cp $4 - ; move left or right depending on where the player is standing - jr nz, .moveLeft + jr nz, .asm_1c6bb ld a, NPC_MOVEMENT_RIGHT - jr .next -.moveLeft + jr .asm_1c6bd + +.asm_1c6bb ld a, NPC_MOVEMENT_LEFT -.next +.asm_1c6bd ld [wNPCMovementDirections], a - - ld a, $e + ld a, $10 ld [wOaksLabCurScript], a ret -.RivalExitMovement - db $E0 ; change sprite facing direction - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF +.OaksLabMovement_RivalWalksOut1 + db $e0 + db $00 + db $04 + db $04 + db $04 + db $04 + db $04 + db $ff -OaksLabScript14: +OaksLabScript16: ld a, [wd730] bit 0, a jr nz, .checkRivalPosition + ld a, $ff ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef HideObject - xor a - ld [wJoyIgnore], a - call PlayDefaultMusic ; reset to map music - ld a, $12 + call PlayDefaultMusic + ld a, $11 ld [wOaksLabCurScript], a - jr .done + ret ; make the player keep facing the rival as he walks away .checkRivalPosition ld a, [wNPCNumScriptedSteps] @@ -492,32 +453,54 @@ OaksLabScript14: cp $4 jr nz, .turnPlayerLeft ld a, SPRITE_FACING_RIGHT - ld [wSpriteStateData1 + 9], a jr .done .turnPlayerLeft ld a, SPRITE_FACING_LEFT - ld [wSpriteStateData1 + 9], a jr .done .turnPlayerDown cp $4 ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpriteStateData1 + 9], a + xor a .done + ld [wSpritePlayerStateData1FacingDirection], a ret -OaksLabScript15: +OaksLabScript17: +; Pikachu comes out + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $2 + ld [wPikachuSpawnState], a + callba SchedulePikachuSpawnForAfterText + call EnablePikachuOverworldSpriteDrawing + ld a, $1a + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $12 + ld [wOaksLabCurScript], a + ret + +OaksLabScript18: + ld a, $1b + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wJoyIgnore], a + ld a, $16 + ld [wOaksLabCurScript], a + ret + +OaksLabScript19: xor a ld [hJoyHeld], a call EnableAutoTextBoxDrawing - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart - ld a, $15 + ld a, $13 ld [hSpriteIndexOrTextID], a call DisplayTextID - call OaksLabScript_1d02b + callab Func_f1be0 + call OaksLabScript_1c8b9 ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef ShowObject @@ -530,50 +513,50 @@ OaksLabScript15: call FillMemory ld [hl], $ff ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $10 + ld a, $14 ld [wOaksLabCurScript], a ret -OaksLabScript_1cefd: +OaksLabScript_1c78e: ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $8 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN + ld a, $6 + ld [hSpriteIndexOrTextID], a + xor a ld [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + call SetSpriteFacingDirectionAndDelay + ret -OaksLabScript16: +OaksLabScript20: ld a, [wd730] bit 0, a ret nz call EnableAutoTextBoxDrawing call PlayDefaultMusic - ld a, $fc + ld a, $ff ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a - call OaksLabScript_1cefd - ld a, $16 + call OaksLabScript_1c78e + ld a, $14 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $17 + call OaksLabScript_1c78e + ld a, $15 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $18 + call OaksLabScript_1c78e + ld a, $16 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - ld a, $19 + ld a, $17 ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 @@ -583,20 +566,22 @@ OaksLabScript16: ld a, HS_POKEDEX_2 ld [wMissableObjectIndex], a predef HideObject - call OaksLabScript_1cefd - ld a, $1a + call OaksLabScript_1c78e + ld a, $18 ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld a, SPRITE_FACING_RIGHT ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, $1b + ld a, $19 ld [hSpriteIndexOrTextID], a call DisplayTextID SetEvent EVENT_GOT_POKEDEX + ld a, $1 + ld [wViridianCityCurScript], a SetEvent EVENT_OAK_GOT_PARCEL ld a, HS_LYING_OLD_MAN ld [wMissableObjectIndex], a @@ -608,23 +593,20 @@ OaksLabScript16: ld b, 0 ld c, a ld hl, wNPCMovementDirections2 - xor a ; NPC_MOVEMENT_DOWN + xor a call FillMemory ld [hl], $ff - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $11 + ld a, $15 ld [wOaksLabCurScript], a ret -OaksLabScript17: +OaksLabScript21: ld a, [wd730] bit 0, a ret nz @@ -638,21 +620,18 @@ OaksLabScript17: ld a, HS_ROUTE_22_RIVAL_1 ld [wMissableObjectIndex], a predef ShowObject - ld a, $5 - ld [wPalletTownCurScript], a xor a ld [wJoyIgnore], a - - ld a, $12 + ld a, $16 ld [wOaksLabCurScript], a ret -OaksLabScript18: +OaksLabScript22: ret OaksLabScript_RemoveParcel: ld hl, wBagItems - ld bc, $0000 + ld bc, 0 .loop ld a, [hli] cp $ff @@ -662,47 +641,52 @@ OaksLabScript_RemoveParcel: inc hl inc c jr .loop + .foundParcel ld hl, wNumBagItems ld a, c ld [wWhichPokemon], a - ld a, $1 + ld a, 1 ld [wItemQuantity], a - jp RemoveItemFromInventory + call RemoveItemFromInventory + ret -OaksLabScript_1d02b: +OaksLabScript_1c8b9: ld a, $7c ld [$ffeb], a ld a, $8 ld [$ffee], a ld a, [wYCoord] - cp $3 - jr nz, .asm_1d045 + cp 3 + jr nz, .asm_1c8d3 ld a, $4 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, $b - jr .asm_1d068 -.asm_1d045 + jr .asm_1c8f6 + +.asm_1c8d3 cp $1 - jr nz, .asm_1d054 + jr nz, .asm_1c8e2 ld a, $2 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, $9 - jr .asm_1d068 -.asm_1d054 + jr .asm_1c8f6 + +.asm_1c8e2 ld a, $3 ld [wNPCMovementDirections2Index], a ld b, $a ld a, [wXCoord] cp $4 - jr nz, .asm_1d066 + jr nz, .asm_1c8f4 ld a, $40 - jr .asm_1d068 -.asm_1d066 + jr .asm_1c8f6 + +.asm_1c8f4 ld a, $20 -.asm_1d068 +.asm_1c8f6 ld [$ffec], a ld a, b ld [$ffed], a @@ -716,7 +700,7 @@ OaksLabScript_1d076: ld a, l ld [wMapTextPtr], a ld a, h - ld [wMapTextPtr+1], a + ld [wMapTextPtr + 1], a ret OaksLab_TextPointers: @@ -758,8 +742,6 @@ OaksLab_TextPointers2: dw OaksLabText7 dw OaksLabText8 dw OaksLabText9 - dw OaksLabText10 - dw OaksLabText11 OaksLabText1: TX_ASM @@ -769,7 +751,7 @@ OaksLabText1: call PrintText jr .done .beforeChooseMon - bit 2, a + CheckEventReuseA EVENT_GOT_STARTER jr nz, .afterChooseMon ld hl, OaksLabText40 call PrintText @@ -794,42 +776,12 @@ OaksLabText41: OaksLabText2: TX_ASM - ld a, STARTER2 - ld [wRivalStarterTemp], a - ld a, $3 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER1 - ld b, $2 - jr OaksLabScript_1d133 - -OaksLabText3: - TX_ASM - ld a, STARTER3 - ld [wRivalStarterTemp], a - ld a, $4 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER2 - ld b, $3 - jr OaksLabScript_1d133 - -OaksLabText4: - TX_ASM - ld a, STARTER1 - ld [wRivalStarterTemp], a - ld a, $2 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER3 - ld b, $4 - -OaksLabScript_1d133: - ld [wcf91], a - ld [wd11e], a - ld a, b - ld [wSpriteIndex], a - CheckEvent EVENT_GOT_STARTER - jp nz, OaksLabScript_1d22d - CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON - jr nz, OaksLabScript_1d157 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON + jr nz, OaksLabScript_1c9ac + ld a, $0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, OaksLabText39 call PrintText jp TextScriptEnd @@ -838,209 +790,107 @@ OaksLabText39: TX_FAR _OaksLabText39 db "@" -OaksLabScript_1d157: - ld a, $5 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN - ld a, $1 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_RIGHT - ld hl, wd730 - set 6, [hl] - predef StarterDex - ld hl, wd730 - res 6, [hl] - call ReloadMapData - ld c, 10 - call DelayFrames - ld a, [wSpriteIndex] - cp $2 - jr z, OaksLabLookAtCharmander - cp $3 - jr z, OaksLabLookAtSquirtle - jr OaksLabLookAtBulbasaur - -OaksLabLookAtCharmander: - ld hl, OaksLabCharmanderText - jr OaksLabMonChoiceMenu -OaksLabCharmanderText: - TX_FAR _OaksLabCharmanderText - db "@" - -OaksLabLookAtSquirtle: - ld hl, OaksLabSquirtleText - jr OaksLabMonChoiceMenu -OaksLabSquirtleText: - TX_FAR _OaksLabSquirtleText - db "@" - -OaksLabLookAtBulbasaur: - ld hl, OaksLabBulbasaurText - jr OaksLabMonChoiceMenu -OaksLabBulbasaurText: - TX_FAR _OaksLabBulbasaurText - db "@" - -OaksLabMonChoiceMenu: - call PrintText - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - call YesNoChoice ; yes/no menu - ld a, [wCurrentMenuItem] - and a - jr nz, OaksLabMonChoiceEnd - ld a, [wcf91] - ld [wPlayerStarter], a - ld [wd11e], a - call GetMonName - ld a, [wSpriteIndex] - cp $2 - jr nz, .asm_1d1db - ld a, HS_STARTER_BALL_1 - jr .asm_1d1e5 -.asm_1d1db - cp $3 - jr nz, .asm_1d1e3 - ld a, HS_STARTER_BALL_2 - jr .asm_1d1e5 -.asm_1d1e3 - ld a, HS_STARTER_BALL_3 -.asm_1d1e5 - ld [wMissableObjectIndex], a - predef HideObject +OaksLabScript_1c9ac: ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, OaksLabMonEnergeticText - call PrintText - ld hl, OaksLabReceivedMonText - call PrintText - xor a ; PLAYER_PARTY_DATA - ld [wMonDataLocation], a - ld a, 5 - ld [wCurEnemyLVL], a - ld a, [wcf91] - ld [wd11e], a - call AddPartyMon - ld hl, wd72e - set 3, [hl] - ld a, $fc - ld [wJoyIgnore], a + ld [wEmotionBubbleSpriteIndex], a + xor a ; EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble ld a, $8 ld [wOaksLabCurScript], a -OaksLabMonChoiceEnd: - jp TextScriptEnd - -OaksLabMonEnergeticText: - TX_FAR _OaksLabMonEnergeticText - db "@" - -OaksLabReceivedMonText: - TX_FAR _OaksLabReceivedMonText - TX_SFX_KEY_ITEM - db "@" - -OaksLabScript_1d22d: - ld a, $5 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], $0 - ld hl, OaksLabLastMonText - call PrintText jp TextScriptEnd -OaksLabLastMonText: - TX_FAR _OaksLabLastMonText - db "@" - -OaksLabText32: -OaksLabText5: +OaksLabText3: TX_ASM CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS - jr nz, .asm_1d266 + jr nz, .asm_1c9d9 ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] cp 2 - jr c, .asm_1d279 - CheckEvent EVENT_GOT_POKEDEX - jr z, .asm_1d279 -.asm_1d266 - ld hl, OaksLabText_1d31d + jr c, .asm_1c9ec +.asm_1c9d9 + ld hl, OaksLabText_1ca9f call PrintText ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a predef DisplayDexRating - jp .asm_1d2ed -.asm_1d279 + jp .asm_1ca6f + +.asm_1c9ec ld b, POKE_BALL call IsItemInBag - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [wNumSetBits] + cp 2 + jr nc, .asm_1ca69 CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr nz, .asm_1d2d0 + jr nz, .asm_1ca52 CheckEvent EVENT_GOT_POKEDEX - jr nz, .asm_1d2c8 + jr nz, .asm_1ca4a CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB - jr nz, .asm_1d2a9 + jr nz, .asm_1ca2b ld a, [wd72e] bit 3, a - jr nz, .asm_1d2a1 - ld hl, OaksLabText_1d2f0 + jr nz, .asm_1ca23 + ld hl, OaksLabText_1ca72 call PrintText - jr .asm_1d2ed -.asm_1d2a1 - ld hl, OaksLabText_1d2f5 + jr .asm_1ca6f + +.asm_1ca23 + ld hl, OaksLabText_1ca77 call PrintText - jr .asm_1d2ed -.asm_1d2a9 + jr .asm_1ca6f + +.asm_1ca2b ld b, OAKS_PARCEL call IsItemInBag - jr nz, .asm_1d2b8 - ld hl, OaksLabText_1d2fa + jr nz, .asm_1ca3a + ld hl, OaksLabText_1ca7c call PrintText - jr .asm_1d2ed -.asm_1d2b8 + jr .asm_1ca6f + +.asm_1ca3a ld hl, OaksLabDeliverParcelText call PrintText call OaksLabScript_RemoveParcel - ld a, $f + ld a, $13 ld [wOaksLabCurScript], a - jr .asm_1d2ed -.asm_1d2c8 + jr .asm_1ca6f + +.asm_1ca4a ld hl, OaksLabAroundWorldText call PrintText - jr .asm_1d2ed -.asm_1d2d0 + jr .asm_1ca6f + +.asm_1ca52 CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 lb bc, POKE_BALL, 5 call GiveItem ld hl, OaksLabGivePokeballsText call PrintText - jr .asm_1d2ed -.asm_1d2e7 + jr .asm_1ca6f + +.asm_1ca69 ld hl, OaksLabPleaseVisitText call PrintText -.asm_1d2ed +.asm_1ca6f jp TextScriptEnd -OaksLabText_1d2f0: - TX_FAR _OaksLabText_1d2f0 +OaksLabText_1ca72: + TX_FAR _OaksLabPikachuText db "@" -OaksLabText_1d2f5: +OaksLabText_1ca77: TX_FAR _OaksLabText_1d2f5 db "@" -OaksLabText_1d2fa: +OaksLabText_1ca7c: TX_FAR _OaksLabText_1d2fa db "@" @@ -1064,36 +914,36 @@ OaksLabPleaseVisitText: TX_FAR _OaksLabPleaseVisitText db "@" -OaksLabText_1d31d: +OaksLabText_1ca9f: TX_FAR _OaksLabText_1d31d db "@" -OaksLabText7: -OaksLabText6: +OaksLabText4: +OaksLabText5: TX_ASM - ld hl, OaksLabText_1d32c + ld hl, OaksLabText_1caae call PrintText jp TextScriptEnd -OaksLabText_1d32c: +OaksLabText_1caae: TX_FAR _OaksLabText_1d32c db "@" -OaksLabText8: +OaksLabText6: TX_FAR _OaksLabText8 db "@" -OaksLabText9: +OaksLabText7: TX_ASM - ld hl, OaksLabText_1d340 + ld hl, OaksLabText_1cac2 call PrintText jp TextScriptEnd -OaksLabText_1d340: +OaksLabText_1cac2: TX_FAR _OaksLabText_1d340 db "@" -OaksLabText17: +OaksLabText13: TX_ASM ld hl, OaksLabRivalWaitingText call PrintText @@ -1103,7 +953,7 @@ OaksLabRivalWaitingText: TX_FAR _OaksLabRivalWaitingText db "@" -OaksLabText18: +OaksLabText14: TX_ASM ld hl, OaksLabChooseMonText call PrintText @@ -1113,7 +963,7 @@ OaksLabChooseMonText: TX_FAR _OaksLabChooseMonText db "@" -OaksLabText19: +OaksLabText15: TX_ASM ld hl, OaksLabRivalInterjectionText call PrintText @@ -1123,7 +973,7 @@ OaksLabRivalInterjectionText: TX_FAR _OaksLabRivalInterjectionText db "@" -OaksLabText20: +OaksLabText16: TX_ASM ld hl, OaksLabBePatientText call PrintText @@ -1133,38 +983,89 @@ OaksLabBePatientText: TX_FAR _OaksLabBePatientText db "@" -OaksLabText12: +OaksLabText17: TX_ASM - ld hl, OaksLabLeavingText + ld hl, OaksLabRivalTakesText1 + call PrintText + ld hl, OaksLabRivalTakesText2 + call PrintText + ld hl, OaksLabRivalTakesText3 + call PrintText + ld hl, OaksLabRivalTakesText4 + call PrintText + ld hl, OaksLabRivalTakesText5 call PrintText jp TextScriptEnd -OaksLabLeavingText: - TX_FAR _OaksLabLeavingText +OaksLabRivalTakesText1: + TX_FAR _OaksLabRivalTakesText1 db "@" -OaksLabText13: +OaksLabRivalTakesText2: + TX_FAR _OaksLabRivalTakesText2 + TX_SFX_KEY_ITEM + db "@" + +OaksLabRivalTakesText3: + TX_FAR _OaksLabRivalTakesText3 + db "@" + +OaksLabRivalTakesText4: + TX_FAR _OaksLabRivalTakesText4 + db "@" + +OaksLabRivalTakesText5: + TX_FAR _OaksLabRivalTakesText5 + db "@" + +OaksLabText18: TX_ASM - ld hl, OaksLabRivalPickingMonText + ld a, PIKACHU + ld [wPlayerStarter], a + ld [wd11e], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OaksLabOakGivesText call PrintText + ld hl, OaksLabRecievedText + call PrintText + xor a + ld [wMonDataLocation], a + ld a, 5 + ld [wCurEnemyLVL], a + ld a, PIKACHU + ld [wd11e], a + ld [wcf91], a + call AddPartyMon + ld a, 163 + ld [wPartyMon1CatchRate], a + call DisablePikachuOverworldSpriteDrawing + SetEvent EVENT_GOT_STARTER + ld hl, wd72e + set 3, [hl] jp TextScriptEnd -OaksLabRivalPickingMonText: - TX_FAR _OaksLabRivalPickingMonText +OaksLabOakGivesText: + TX_FAR _OaksLabOakGivesText db "@" -OaksLabText14: +OaksLabRecievedText: + TX_FAR _OaksLabReceivedText + TX_SFX_KEY_ITEM + db "@" + +OaksLabText10: TX_ASM - ld hl, OaksLabRivalReceivedMonText + ld hl, OaksLabLeavingText call PrintText jp TextScriptEnd -OaksLabRivalReceivedMonText: - TX_FAR _OaksLabRivalReceivedMonText - TX_SFX_KEY_ITEM +OaksLabLeavingText: + TX_FAR _OaksLabLeavingText db "@" -OaksLabText15: +OaksLabText11: TX_ASM ld hl, OaksLabRivalChallengeText call PrintText @@ -1174,15 +1075,15 @@ OaksLabRivalChallengeText: TX_FAR _OaksLabRivalChallengeText db "@" -OaksLabText_1d3be: +OaksLabRivalDefeatedText: TX_FAR _OaksLabText_1d3be db "@" -OaksLabText_1d3c3: +OaksLabRivalBeatYouText: TX_FAR _OaksLabText_1d3c3 db "@" -OaksLabText16: +OaksLabText12: TX_ASM ld hl, OaksLabRivalToughenUpText call PrintText @@ -1192,42 +1093,64 @@ OaksLabRivalToughenUpText: TX_FAR _OaksLabRivalToughenUpText db "@" -OaksLabText21: +OaksLabText26: + TX_ASM + ldpikacry e, PikachuCry2 + callab PlayPikachuSoundClip + ld hl, OaksLabPikachuDislikesPokeballsText1 + call PrintText + jp TextScriptEnd + +OaksLabPikachuDislikesPokeballsText1: + TX_FAR _OaksLabPikachuDislikesPokeballsText1 + db "@" + +OaksLabText27: + TX_ASM + ld hl, OaksLabPikachuDislikesPokeballsText2 + call PrintText + jp TextScriptEnd + +OaksLabPikachuDislikesPokeballsText2: + TX_FAR _OaksLabPikachuDislikesPokeballsText2 + db "@" + +OaksLabText19: TX_FAR _OaksLabText21 db "@" -OaksLabText22: +OaksLabText20: TX_FAR _OaksLabText22 db "@" -OaksLabText23: +OaksLabText21: TX_FAR _OaksLabText23 db "@" -OaksLabText24: +OaksLabText22: TX_FAR _OaksLabText24 db "@" -OaksLabText25: +OaksLabText23: TX_FAR _OaksLabText25 TX_SFX_KEY_ITEM db "@" -OaksLabText26: +OaksLabText24: TX_FAR _OaksLabText26 db "@" -OaksLabText27: +OaksLabText25: TX_FAR _OaksLabText27 db "@" -OaksLabText11: -OaksLabText10: +OaksLabText8: +OaksLabText9: TX_ASM - ld hl, OaksLabText_1d405 + ld hl, OaksLabText_1c31d call PrintText jp TextScriptEnd -OaksLabText_1d405: +OaksLabText_1c31d: TX_FAR _OaksLabText_1d405 db "@" diff --git a/scripts/OaksLab2.asm b/scripts/OaksLab2.asm new file mode 100755 index 00000000..5e4e98a4 --- /dev/null +++ b/scripts/OaksLab2.asm @@ -0,0 +1,28 @@ +Func_f1be0: + ld a, [wYCoord] + cp 3 + jr z, .asm_f1bf0 + ld b, SPRITE_FACING_DOWN + ld hl, Data_f1bf9 + call TryApplyPikachuMovementData + ret + +.asm_f1bf0 + ld b, SPRITE_FACING_LEFT + ld hl, Data_f1bfe + call TryApplyPikachuMovementData + ret + +Data_f1bf9: + db $00 + db $1f + db $1e + db $38 + db $3f + +Data_f1bfe: + db $00 + db $1d + db $20 + db $36 + db $3f diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm index 5ad7d40f..fbdee4bc 100755 --- a/scripts/PalletTown.asm +++ b/scripts/PalletTown.asm @@ -16,25 +16,33 @@ PalletTown_ScriptPointers: dw PalletTownScript4 dw PalletTownScript5 dw PalletTownScript6 + dw PalletTownScript7 + dw PalletTownScript8 + dw PalletTownScript9 PalletTownScript0: CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB ret nz ld a, [wYCoord] - cp 1 ; is player near north exit? + cp 0 ; is player at north exit? ret nz + ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, [wXCoord] + cp 10 + jr z, .asm_18e40 + SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN +.asm_18e40 xor a ld [hJoyHeld], a - ld a, PLAYER_DIR_DOWN + ld a, $ff + ld [wJoyIgnore], a + ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, $FF - call PlaySound ; stop music + call StopAllMusic ld a, BANK(Music_MeetProfOak) ld c, a - ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music + ld a, MUSIC_MEET_PROF_OAK call PlayMusic - ld a, $FC - ld [wJoyIgnore], a SetEvent EVENT_OAK_APPEARED_IN_PALLET ; trigger the next script @@ -43,6 +51,8 @@ PalletTownScript0: ret PalletTownScript1: + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a xor a ld [wcf0d], a ld a, 1 @@ -50,23 +60,27 @@ PalletTownScript1: call DisplayTextID ld a, $FF ld [wJoyIgnore], a + ld hl, wSpriteStateData2 + 1 * $10 + 4 + ld a, $8 + ld [hli], a + ld a, $e + ld [hl], a ld a, HS_PALLET_TOWN_OAK ld [wMissableObjectIndex], a predef ShowObject ; trigger the next script + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, 2 ld [wPalletTownCurScript], a ret PalletTownScript2: - ld a, 1 - ld [H_SPRITEINDEX], a - ld a, SPRITE_FACING_UP - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, 1 + ld a, 0 ld [wYCoord], a ld a, 1 ld [hNPCPlayerRelativePosPerspective], a @@ -81,8 +95,6 @@ PalletTownScript2: ld a, 1 ; oak ld [H_SPRITEINDEX], a call MoveSprite - ld a, $FF - ld [wJoyIgnore], a ; trigger the next script ld a, 3 @@ -93,47 +105,106 @@ PalletTownScript3: ld a, [wd730] bit 0, a ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpriteStateData1 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, 1 ld [wcf0d], a - ld a, $FC - ld [wJoyIgnore], a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, 1 ld [hSpriteIndexOrTextID], a call DisplayTextID -; set up movement script that causes the player to follow Oak to his lab + ; oak faces the horizontally adjacent patch of grass to face pikachu ld a, $FF ld [wJoyIgnore], a - ld a, 1 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, SPRITE_FACING_RIGHT + jr z, .asm_18f01 + ld a, SPRITE_FACING_LEFT +.asm_18f01 + ld [wSpriteStateData1 + 1 * $10 + 9], a + + ; trigger the next script + ld a, 4 + ld [wPalletTownCurScript], a + ret + +PalletTownScript4: + ; start the pikachu battle + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + xor a + ld [wListScrollOffset], a + ld a, BATTLE_TYPE_PIKACHU + ld [wBattleType], a + ld a, PIKACHU + ld [wCurOpponent], a + ld a, 5 + ld [wCurEnemyLVL], a + + ; trigger the next script + ld a, 5 + ld [wPalletTownCurScript], a + ret + +PalletTownScript5: + ld a, $2 + ld [wcf0d], a + ld a, $1 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $ff + ld [wJoyIgnore], a + + ; trigger the next script + ld a, 6 + ld [wPalletTownCurScript], a + ret + +PalletTownScript6: + xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $1 ld [wSpriteIndex], a xor a ld [wNPCMovementScriptFunctionNum], a - ld a, 1 + ld a, $1 ld [wNPCMovementScriptPointerTableNum], a ld a, [H_LOADEDROMBANK] ld [wNPCMovementScriptBank], a ; trigger the next script - ld a, 4 + ld a, 7 ld [wPalletTownCurScript], a ret -PalletTownScript4: +PalletTownScript7: ld a, [wNPCMovementScriptPointerTableNum] - and a ; is the movement script over? + and a ret nz ; trigger the next script - ld a, 5 + ld a, 8 ld [wPalletTownCurScript], a ret -PalletTownScript5: +PalletTownScript8: CheckEvent EVENT_DAISY_WALKING - jr nz, .next - CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1 - jr nz, .next + jr nz, .asm_18f9e + and $3 ; (EVENT_GOT_TOWN_MAP | EVENT_ENTERED_BLUES_HOUSE) + cp $3 + jr nz, .asm_18f9e SetEvent EVENT_DAISY_WALKING ld a, HS_DAISY_SITTING ld [wMissableObjectIndex], a @@ -141,11 +212,12 @@ PalletTownScript5: ld a, HS_DAISY_WALKING ld [wMissableObjectIndex], a predef_jump ShowObject -.next + +.asm_18f9e CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK ret z SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2 -PalletTownScript6: +PalletTownScript9: ret PalletTown_TextPointers: @@ -156,6 +228,7 @@ PalletTown_TextPointers: dw PalletTownText5 dw PalletTownText6 dw PalletTownText7 + dw PalletTownText8 PalletTownText1: TX_ASM @@ -167,7 +240,13 @@ PalletTownText1: ld hl, OakAppearsText jr .done .next + dec a + jr nz, .asm_18fd3 ld hl, OakWalksUpText + jr .done + +.asm_18fd3 + ld hl, PalletTownText_19002 .done call PrintText jp TextScriptEnd @@ -177,38 +256,47 @@ OakAppearsText: TX_ASM ld c, 10 call DelayFrames - xor a - ld [wEmotionBubbleSpriteIndex], a ; player's sprite - ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE - predef EmotionBubble ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a + ld a, 0 + ld [wEmotionBubbleSpriteIndex], a ; player's sprite + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble jp TextScriptEnd OakWalksUpText: TX_FAR _OakWalksUpText db "@" -PalletTownText2: ; girl +PalletTownText_19002: + TX_FAR _OakWhewText + db "@" + +PalletTownText8: ; girl + TX_FAR _OakGrassText + db "@" + +PalletTownText2: ; fat man TX_FAR _PalletTownText2 db "@" -PalletTownText3: ; fat man +PalletTownText3: ; sign by lab TX_FAR _PalletTownText3 db "@" -PalletTownText4: ; sign by lab +PalletTownText4: ; sign by fence TX_FAR _PalletTownText4 db "@" -PalletTownText5: ; sign by fence +PalletTownText5: ; sign by Red’s house TX_FAR _PalletTownText5 db "@" -PalletTownText6: ; sign by Red’s house +PalletTownText6: ; sign by Blue’s house TX_FAR _PalletTownText6 db "@" -PalletTownText7: ; sign by Blue’s house +PalletTownText7: TX_FAR _PalletTownText7 db "@" diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm index 18296675..63d0fe71 100755 --- a/scripts/PewterCity.asm +++ b/scripts/PewterCity.asm @@ -1,8 +1,11 @@ PewterCity_Script: call EnableAutoTextBoxDrawing + ld hl, wd492 + res 7, [hl] ld hl, PewterCity_ScriptPointers ld a, [wPewterCityCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret PewterCity_ScriptPointers: dw PewterCityScript0 @@ -26,7 +29,7 @@ PewterCityScript_1925e: ld hl, CoordsData_19277 call ArePlayerCoordsInArray ret nc - ld a, $f0 + ld a, $fc ld [wJoyIgnore], a ld a, $5 ld [hSpriteIndexOrTextID], a @@ -48,9 +51,9 @@ PewterCityScript1: ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, ($3 << 4) | SPRITE_FACING_UP + ld a, SPRITE_FACING_UP ld [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] @@ -115,10 +118,7 @@ PewterCityScript4: ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_LEFT ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, ($1 << 4) | SPRITE_FACING_LEFT - ld [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm index cf02b141..4ddec77e 100755 --- a/scripts/PewterGym.asm +++ b/scripts/PewterGym.asm @@ -14,7 +14,8 @@ PewterGym_Script: PewterGymScript_5c3a4: ld hl, Gym1CityName ld de, Gym1LeaderName - jp LoadGymLeaderAndCityName + call LoadGymLeaderAndCityName + ret Gym1CityName: db "PEWTER CITY@" @@ -41,7 +42,6 @@ PewterGymScript3: jp z, PewterGymScript_5c3bf ld a, $f0 ld [wJoyIgnore], a - PewterGymScript_5c3df: ld a, $4 ld [hSpriteIndexOrTextID], a @@ -158,7 +158,7 @@ PewterGymText6: PewterGymText_5c4bc: TX_FAR _PewterGymText_5c4bc - TX_SFX_LEVEL_UP ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded + TX_SFX_ITEM_1 TX_FAR _PewterGymText_5c4c1 db "@" @@ -191,6 +191,9 @@ PewterGymText3: ld a, [wCurrentMenuItem] and a jr nz, .asm_5c4fe + ld a, [wd472] + bit 7, a + jp nz, .asm_5c3fa ld hl, PewterGymText_5c51a call PrintText jr .asm_5c504 @@ -207,6 +210,11 @@ PewterGymText3: .asm_5c512 jp TextScriptEnd +.asm_5c3fa + ld hl, PewterGymText_5c41c + call PrintText + jp TextScriptEnd + PewterGymText_5c515: TX_FAR _PewterGymText_5c515 db "@" @@ -226,3 +234,8 @@ PewterGymText_5c524: PewterGymText_5c529: TX_FAR _PewterGymText_5c529 db "@" + +PewterGymText_5c41c: + TX_FAR _PewterGymGuyText + db "@" + diff --git a/scripts/PewterMart.asm b/scripts/PewterMart.asm index c71f8413..5b3e7617 100755 --- a/scripts/PewterMart.asm +++ b/scripts/PewterMart.asm @@ -14,6 +14,7 @@ PewterMartText2: ld hl, .Text call PrintText jp TextScriptEnd + .Text TX_FAR _PewterMartText2 db "@" @@ -23,6 +24,7 @@ PewterMartText3: ld hl, .Text call PrintText jp TextScriptEnd + .Text TX_FAR _PewterMartText3 db "@" diff --git a/scripts/PewterNidoranHouse.asm b/scripts/PewterNidoranHouse.asm index a4e85e08..2f3f4145 100755 --- a/scripts/PewterNidoranHouse.asm +++ b/scripts/PewterNidoranHouse.asm @@ -1,5 +1,6 @@ PewterNidoranHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterNidoranHouse_TextPointers: dw PewterHouse1Text1 diff --git a/scripts/PewterPokecenter.asm b/scripts/PewterPokecenter.asm index 22d2fb6b..add001bc 100755 --- a/scripts/PewterPokecenter.asm +++ b/scripts/PewterPokecenter.asm @@ -1,12 +1,17 @@ PewterPokecenter_Script: + ld hl, wd492 + set 7, [hl] call Serial_TryEstablishingExternallyClockedConnection - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterPokecenter_TextPointers: dw PewterHealNurseText dw PewterPokecenterText2 dw PewterJigglypuffText dw PewterTradeNurseText + dw PewterPokecenterText5 + dw PewterPokecenterText6 PewterHealNurseText: TX_POKECENTER_NURSE @@ -17,68 +22,18 @@ PewterPokecenterText2: PewterJigglypuffText: TX_ASM - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, .Text - call PrintText - StopAllMusic - ld c, 32 - call DelayFrames - ld hl, JigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - - ld a, [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 -.loop - ld a, [hl] - ld [wSprite03StateData1ImageIndex], a - -; rotate the array - push hl - ld hl, wJigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - 1 - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - ld a, [wJigglypuffFacingDirections - 1] - ld [wJigglypuffFacingDirections + 3], a - pop hl - - ld c, 24 - call DelayFrames - - ld a, [wChannelSoundIDs] - ld b, a - ld a, [wChannelSoundIDs + Ch2] - or b - jr nz, .loop - - ld c, 48 - call DelayFrames - call PlayDefaultMusic + callba PewterJigglypuff jp TextScriptEnd -.Text - TX_FAR _PewterJigglypuffText - db "@" - -JigglypuffFacingDirections: - db $30 | SPRITE_FACING_DOWN - db $30 | SPRITE_FACING_LEFT - db $30 | SPRITE_FACING_UP - db $30 | SPRITE_FACING_RIGHT -JigglypuffFacingDirectionsEnd: - PewterTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +PewterPokecenterText5: + TX_ASM + callba Func_f1d98 + jp TextScriptEnd + +PewterPokecenterText6: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/PewterPokecenter2.asm b/scripts/PewterPokecenter2.asm new file mode 100755 index 00000000..3d4de3f7 --- /dev/null +++ b/scripts/PewterPokecenter2.asm @@ -0,0 +1,78 @@ +Func_f1d98: + ld hl, PewterPokecenterText_f1d9f + call PrintText + ret + +PewterPokecenterText_f1d9f: + TX_FAR _PewterPokecenterText3 + db "@" + +PewterJigglypuff: + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .Text + call PrintText + call StopAllMusic + ld c, 32 + call DelayFrames + ld hl, JigglypuffFacingDirections + ld de, wJigglypuffFacingDirections + ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections + call CopyData + + ld a, [wSprite03StateData1ImageIndex] + ld hl, wJigglypuffFacingDirections +.findMatchingFacingDirectionLoop + cp [hl] + inc hl + jr nz, .findMatchingFacingDirectionLoop + dec hl + push hl + ld c, BANK(Music_JigglypuffSong) + ld a, MUSIC_JIGGLYPUFF_SONG + call PlayMusic + pop hl +.loop + ld a, [hl] + ld [wSprite03StateData1ImageIndex], a + +; rotate the array + push hl + ld hl, wJigglypuffFacingDirections + ld de, wJigglypuffFacingDirections - 1 + ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections + call CopyData + ld a, [wJigglypuffFacingDirections - 1] + ld [wJigglypuffFacingDirections + 3], a + pop hl + + ld c, 24 + call DelayFrames + + ld a, [wChannelSoundIDs] + ld b, a + ld a, [wChannelSoundIDs + Ch2] + or b + jr nz, .loop + + ld c, 48 + call DelayFrames + call PlayDefaultMusic + ld a, [wd472] + bit 7, a + ret z + callab CheckPikachuFaintedOrStatused + ret c + call DisablePikachuFollowingPlayer + ret + +.Text + TX_FAR _PewterJigglypuffText + db "@" + +JigglypuffFacingDirections: + db $40 | SPRITE_FACING_DOWN + db $40 | SPRITE_FACING_LEFT + db $40 | SPRITE_FACING_UP + db $40 | SPRITE_FACING_RIGHT +JigglypuffFacingDirectionsEnd: diff --git a/scripts/PokemonFanClub.asm b/scripts/PokemonFanClub.asm index 673d6011..3434f871 100755 --- a/scripts/PokemonFanClub.asm +++ b/scripts/PokemonFanClub.asm @@ -1,15 +1,72 @@ PokemonFanClub_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ld hl, PokemonFanClub_ScriptPointers + ld a, [wFanClubCurScript] + call CallFunctionInTable + ret -FanClubBikeInBag: -; check if any bike paraphernalia in bag - CheckEvent EVENT_GOT_BIKE_VOUCHER - ret nz - ld b, BICYCLE - call IsItemInBag - ret nz - ld b, BIKE_VOUCHER - jp IsItemInBag +PokemonFanClub_ScriptPointers: + dw FanClubScript1 + dw FanClubScript2 + +FanClubScript1: + ld hl, wd492 + bit 7, [hl] + call z, FanClubScript_59a44 + ld hl, wd492 + set 7, [hl] + ret + +FanClubScript2: + ld hl, wd492 + bit 7, [hl] + call z, FanClubScript_59a39 + ld hl, wd492 + set 7, [hl] + ret + +FanClubScript_59a39: + call Random + ld a, [hRandomAdd] + cp 25 + call c, FanClubScript_59a44 + ret + +FanClubScript_59a44: + ld a, [wd472] + bit 7, a + ret z + callab CheckPikachuFaintedOrStatused + ret c + ld a, $1 + ld [wFanClubCurScript], a + xor a + ld [wPlayerMovingDirection], a + call UpdateSprites + call UpdateSprites + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + ld a, $f ; Pikachu + ld [wEmotionBubbleSpriteIndex], a + predef EmotionBubble + ld hl, PikachuMovementScript_59a8c + call ApplyPikachuMovementData + ld a, $2 + ld [wSpriteStateData1 + 3 * $10 + 1], a ; Seel + xor a ; SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 3 * $10 + 9], a + callab InitializePikachuTextID + call DisablePikachuFollowingPlayer + ret + +PikachuMovementScript_59a8c: + db $00 + db $26 + db $20 + db $20 + db $20 + db $1e + db $3f PokemonFanClub_TextPointers: dw FanClubText1 @@ -18,22 +75,28 @@ PokemonFanClub_TextPointers: dw FanClubText4 dw FanClubText5 dw FanClubText6 - dw FanClubText7 - dw FanClubText8 FanClubText1: -; pikachu fan +; clefairy fan TX_ASM - CheckEvent EVENT_PIKACHU_FAN_BOAST + CheckEventHL EVENT_152 + jr z, .asm_59aaf + ld hl, .yellowtext + call PrintText + jr .done + +.asm_59aaf + CheckEventReuseHL EVENT_PIKACHU_FAN_BOAST jr nz, .mineisbetter + SetEventReuseHL EVENT_SEEL_FAN_BOAST ld hl, .normaltext call PrintText - SetEvent EVENT_SEEL_FAN_BOAST jr .done + .mineisbetter + ResetEventReuseHL EVENT_PIKACHU_FAN_BOAST ld hl, .bettertext call PrintText - ResetEvent EVENT_PIKACHU_FAN_BOAST .done jp TextScriptEnd @@ -45,19 +108,29 @@ FanClubText1: TX_FAR PikachuFanBetterText db "@" +.yellowtext + TX_FAR PikachuFanPrintText + db "@" + FanClubText2: ; seel fan TX_ASM - CheckEvent EVENT_SEEL_FAN_BOAST + CheckEventHL EVENT_152 + jr z, .asm_59ae7 + ld hl, .yellowtext + call PrintText + jr .done +.asm_59ae7 + CheckEventReuseHL EVENT_SEEL_FAN_BOAST jr nz, .mineisbetter + SetEventReuseHL EVENT_PIKACHU_FAN_BOAST ld hl, .normaltext call PrintText - SetEvent EVENT_PIKACHU_FAN_BOAST jr .done .mineisbetter + ResetEventReuseHL EVENT_SEEL_FAN_BOAST ld hl, .bettertext call PrintText - ResetEvent EVENT_SEEL_FAN_BOAST .done jp TextScriptEnd @@ -69,12 +142,16 @@ FanClubText2: TX_FAR SeelFanBetterText db "@" +.yellowtext + TX_FAR SeelFanPrintText + db "@" + FanClubText3: ; pikachu TX_ASM ld hl, .text call PrintText - ld a, PIKACHU + ld a, CLEFAIRY call PlayCry call WaitForSoundToFinish jp TextScriptEnd @@ -100,74 +177,131 @@ FanClubText4: FanClubText5: ; chair TX_ASM - call FanClubBikeInBag - jr nz, .nothingleft - - ld hl, .meetchairtext + CheckEventHL EVENT_152 + jr z, .check_bike_voucher + ld hl, Text_59c1f call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .nothanks + jr z, .select_mon_to_print + ld hl, Text_59c24 + jr .gbpals_print_text - ; tell the story - ld hl, .storytext +.check_bike_voucher + CheckEvent EVENT_GOT_BIKE_VOUCHER + jr nz, .got_bike_voucher_already + ld hl, Text_59bfc + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .declined_story + ld hl, Text_59c01 call PrintText lb bc, BIKE_VOUCHER, 1 call GiveItem - jr nc, .BagFull - ld hl, .receivedvouchertext + jr nc, .no_room_for_voucher + ld hl, Text_59c06 call PrintText SetEvent EVENT_GOT_BIKE_VOUCHER - jr .done -.BagFull - ld hl, .bagfulltext - call PrintText - jr .done -.nothanks - ld hl, .nostorytext - call PrintText - jr .done -.nothingleft - ld hl, .finaltext + jp TextScriptEnd + +.no_room_for_voucher + ld hl, Text_59c1a + jr .gbpals_print_text + +.declined_story + ld hl, Text_59c10 + jr .gbpals_print_text + +.got_bike_voucher_already + ld hl, Text_59c15 +.gbpals_print_text + push hl + call LoadGBPal + pop hl call PrintText -.done jp TextScriptEnd -.meetchairtext +.select_mon_to_print + call GBPalWhiteOutWithDelay3 + call LoadCurrentMapView + call SaveScreenTilesToBuffer2 + ld a, $ff + ld [wUpdateSpritesEnabled], a + ld a, $00 + ld [wTempTilesetNumTiles], a + call DisplayPartyMenu + jp nc, .print + call GBPalWhiteOutWithDelay3 + call RestoreScreenTilesAndReloadTilePatterns + ld hl, Text_59c24 + jr .gbpals_print_text + +.print + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callab PrintFanClubPortrait + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_59c2e + ld a, [hOaksAideResult] + and a + jr nz, .gbpals_print_text + ld hl, Text_59c29 + jr .gbpals_print_text + +Text_59bfc: TX_FAR FanClubMeetChairText db "@" -.storytext +Text_59c01: TX_FAR FanClubChairStoryText db "@" -.receivedvouchertext +Text_59c06: TX_FAR ReceivedBikeVoucherText TX_SFX_KEY_ITEM TX_FAR ExplainBikeVoucherText db "@" -.nostorytext +Text_59c10: TX_FAR FanClubNoStoryText db "@" -.finaltext +Text_59c15: TX_FAR FanClubChairFinalText db "@" -.bagfulltext +Text_59c1a: TX_FAR FanClubBagFullText db "@" -FanClubText6: - TX_FAR _FanClubText6 +Text_59c1f: + TX_FAR FanClubChairPrintText1 + db "@" + +Text_59c24: + TX_FAR FanClubChairPrintText2 + db "@" + +Text_59c29: + TX_FAR FanClubChairPrintText3 db "@" -FanClubText7: - TX_FAR _FanClubText7 +Text_59c2e: + TX_FAR FanClubChairPrintText4 db "@" -FanClubText8: - TX_FAR _FanClubText8 +FanClubText6: + TX_FAR _FanClubText6 db "@" diff --git a/scripts/PokemonMansion1F.asm b/scripts/PokemonMansion1F.asm index 41f40635..639a4acf 100755 --- a/scripts/PokemonMansion1F.asm +++ b/scripts/PokemonMansion1F.asm @@ -46,7 +46,7 @@ Mansion1ReplaceBlock: ret Mansion1Script_Switches: - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP ret nz xor a diff --git a/scripts/PokemonMansion2F.asm b/scripts/PokemonMansion2F.asm index a7b90bcd..8d05cdc9 100755 --- a/scripts/PokemonMansion2F.asm +++ b/scripts/PokemonMansion2F.asm @@ -42,7 +42,7 @@ Mansion2Script_5202f: predef_jump ReplaceTileBlock Mansion2Script_Switches: - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP ret nz xor a diff --git a/scripts/PokemonMansion3F.asm b/scripts/PokemonMansion3F.asm index ff172413..e19fec72 100755 --- a/scripts/PokemonMansion3F.asm +++ b/scripts/PokemonMansion3F.asm @@ -73,7 +73,7 @@ Mansion3Script_5225b: ret Mansion3Script_Switches: - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP ret nz xor a diff --git a/scripts/PokemonMansionB1F.asm b/scripts/PokemonMansionB1F.asm index 887b4762..0a668c09 100755 --- a/scripts/PokemonMansionB1F.asm +++ b/scripts/PokemonMansionB1F.asm @@ -44,7 +44,7 @@ Mansion4Script_523cf: ret Mansion4Script_Switches: - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP ret nz xor a diff --git a/scripts/PokemonTower1F.asm b/scripts/PokemonTower1F.asm index 66b5505c..b383c647 100755 --- a/scripts/PokemonTower1F.asm +++ b/scripts/PokemonTower1F.asm @@ -1,5 +1,6 @@ PokemonTower1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PokemonTower1F_TextPointers: dw PokemonTower1Text1 diff --git a/scripts/PokemonTower2F.asm b/scripts/PokemonTower2F.asm index 81f4c0b3..54f49cae 100755 --- a/scripts/PokemonTower2F.asm +++ b/scripts/PokemonTower2F.asm @@ -22,9 +22,7 @@ PokemonTower2Script0: ld hl, CoordsData_6055e call ArePlayerCoordsInArray ret nc - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -71,14 +69,13 @@ PokemonTower2Script1: ld de, MovementData_605b2 CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT jr nz, .asm_60589 + callab Func_f1e22 ld de, MovementData_605a9 .asm_60589 ld a, $1 ld [H_SPRITEINDEX], a call MoveSprite - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $2 ld [wPokemonTower2FCurScript], a @@ -144,21 +141,8 @@ PokemonTower2Text1: call SaveEndBattleTextPointers ld a, OPP_SONY2 ld [wCurOpponent], a - - ; select which team to use during the encounter ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle - ld a, $4 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $5 - jr .done -.Charmander - ld a, $6 -.done + add $1 ld [wTrainerNo], a ld a, $1 diff --git a/scripts/PokemonTower2F_2.asm b/scripts/PokemonTower2F_2.asm new file mode 100755 index 00000000..42659da3 --- /dev/null +++ b/scripts/PokemonTower2F_2.asm @@ -0,0 +1,12 @@ +Func_f1e22: + ld hl, PikachuMovementData_f1e2b + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +PikachuMovementData_f1e2b: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm index 4b2a1827..e34edf66 100755 --- a/scripts/PokemonTower7F.asm +++ b/scripts/PokemonTower7F.asm @@ -1,76 +1,241 @@ PokemonTower7F_Script: call EnableAutoTextBoxDrawing - ld hl, PokemonTower7TrainerHeader0 - ld de, PokemonTower7F_ScriptPointers + ld hl, PokemonTower7F_ScriptPointers ld a, [wPokemonTower7FCurScript] - call ExecuteCurMapScriptInTable - ld [wPokemonTower7FCurScript], a + call CallFunctionInTable ret -PokemonTower7Script_60d18: +PokemonTower7Script_60d01: xor a ld [wJoyIgnore], a +PokemonTower7Script_60d05: ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a ret PokemonTower7F_ScriptPointers: - dw CheckFightingMapTrainers - dw DisplayEnemyTrainerTextAndStartBattle + dw PokemonTower7Script0 + dw PokemonTower7Script1 dw PokemonTower7Script2 dw PokemonTower7Script3 dw PokemonTower7Script4 + dw PokemonTower7Script5 + dw PokemonTower7Script6 + dw PokemonTower7Script7 + dw PokemonTower7Script8 + dw PokemonTower7Script9 + dw PokemonTower7Script10 + dw PokemonTower7Script11 + +PokemonTower7Script0: + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 + call z, PokemonTower7Script_60d2a + ret -PokemonTower7Script2: - ld hl, wFlags_0xcd60 - res 0, [hl] - ld a, [wIsInBattle] - cp $ff - jp z, PokemonTower7Script_60d18 - call EndTrainerBattle - ld a, $f0 +PokemonTower7Script_60d2a: + ld a, [wYCoord] + cp $c + ret nz + ResetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + ld a, [wXCoord] + cp $a + jr z, .asm_60d47 + ld a, [wXCoord] ; why? + cp $b + ret nz + SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 +.asm_60d47 + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ld [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a - ld a, [wSpriteIndex] + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7Script_60eaf + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7Script_60eaf + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $4 ld [hSpriteIndexOrTextID], a call DisplayTextID - call PokemonTower7Script_60db6 - ld a, $3 - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + ld a, $ff + ld [wJoyIgnore], a + ld a, $1 + call PokemonTower7Script_60d05 ret +PokemonTower7MovementData_60d7a: + db $4 +PokemonTower7MovementData_60d7b: + db $4 + db $4 + db $4 + db $FF + +PokemonTower7Script1: + ld de, PokemonTower7MovementData_60d7b + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + jr z, .asm_60d8c + ld de, PokemonTower7MovementData_60d7a +.asm_60d8c + ld a, $1 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $2 + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script2: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz PokemonTower7Script3: + ld a, $0 + ld [wSpriteStateData1 + 1 * $10 + 9], a + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + jr z, .asm_60dba + ld a, $c + ld [wSpriteStateData1 + 1 * $10 + 9], a +.asm_60dba + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a +PokemonTower7Script4: + ld de, PokemonTower7MovementData_60d7a + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + jr z, .asm_60dcc + ld de, PokemonTower7MovementData_60d7b +.asm_60dcc + ld a, $2 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $5 + call PokemonTower7Script_60d05 + ret +PokemonTower7Script5: + ld a, $ff + ld [wJoyIgnore], a ld a, [wd730] bit 0, a ret nz - ld hl, wMissableObjectList - ld a, [wSpriteIndex] - ld b, a -.missableObjectsListLoop - ld a, [hli] - cp b ; search for sprite ID in missing objects list - ld a, [hli] - jr nz, .missableObjectsListLoop - ld [wMissableObjectIndex], a ; remove missable object - predef HideObject +PokemonTower7Script6: + ld a, $2 + ld [wSpriteStateData1 + $2 * $10 + $1], a + ld a, $8 + ld [wSpriteStateData1 + $2 * $10 + $9], a + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + jr z, .asm_60dff + ld a, $0 + ld [wSpriteStateData1 + $2 * $10 + $9], a +.asm_60dff + call Delay3 + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $5 + ld [hSpriteIndexOrTextID], a + call DisplayTextID +PokemonTower7Script7: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, PokemonTower7JessieJamesEndBattleText + ld de, PokemonTower7JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2c + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + ld a, $8 + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script8: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, PokemonTower7Script_60d01 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld [wSpriteStateData1 + 2 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $6 + ld [hSpriteIndexOrTextID], a + call DisplayTextID xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $9 + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script9: + ld a, $ff ld [wJoyIgnore], a - ld [wSpriteIndex], a - ld [wTrainerHeaderFlagBit], a - ld [wUnusedDA38], a + call GBFadeOutToBlack + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7Script_60ebe + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7Script_60ebe + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $a + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script10: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 ld a, $0 - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + call PokemonTower7Script_60d05 ret -PokemonTower7Script4: +PokemonTower7Script_60eaf: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +PokemonTower7Script_60ebe + ld [wMissableObjectIndex], a + predef HideObject + ret + +PokemonTower7Script11: ld a, $ff ld [wJoyIgnore], a ld a, HS_POKEMON_TOWER_7F_MR_FUJI ld [wMissableObjectIndex], a predef HideObject ld a, SPRITE_FACING_UP - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld a, MR_FUJIS_HOUSE ld [hWarpDestinationMap], a ld a, $1 @@ -81,179 +246,54 @@ PokemonTower7Script4: set 3, [hl] ld a, $0 ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a ret -PokemonTower7Script_60db6: - ld hl, CoordsData_60de3 - ld a, [wSpriteIndex] - dec a - swap a - ld d, $0 - ld e, a - add hl, de - ld a, [wYCoord] - ld b, a - ld a, [wXCoord] - ld c, a -.asm_60dcb - ld a, [hli] - cp b - jr nz, .asm_60dde - ld a, [hli] - cp c - jr nz, .asm_60ddf - ld a, [hli] - ld d, [hl] - ld e, a - ld a, [wSpriteIndex] - ld [H_SPRITEINDEX], a - jp MoveSprite -.asm_60dde - inc hl -.asm_60ddf - inc hl - inc hl - jr .asm_60dcb - -CoordsData_60de3: - db $0C,$09 - dw MovementData_60e13 - db $0B,$0A - dw MovementData_60e1b - db $0B,$0B - dw MovementData_60e22 - db $0B,$0C - dw MovementData_60e22 - db $0A,$0C - dw MovementData_60e28 - db $09,$0B - dw MovementData_60e30 - db $09,$0A - dw MovementData_60e22 - db $09,$09 - dw MovementData_60e22 - db $08,$09 - dw MovementData_60e37 - db $07,$0A - dw MovementData_60e22 - db $07,$0B - dw MovementData_60e22 - db $07,$0C - dw MovementData_60e22 - -MovementData_60e13: - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_LEFT - db $FF - -MovementData_60e1b: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF - -MovementData_60e22: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF - -MovementData_60e28: - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF - -MovementData_60e30: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF - -MovementData_60e37: - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF - PokemonTower7F_TextPointers: dw PokemonTower7Text1 dw PokemonTower7Text2 dw PokemonTower7Text3 - dw PokemonTower7FujiText - -PokemonTower7TrainerHeader0: - dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 - db ($3 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 - dw PokemonTower7BattleText1 ; TextBeforeBattle - dw PokemonTower7AfterBattleText1 ; TextAfterBattle - dw PokemonTower7EndBattleText1 ; TextEndBattle - dw PokemonTower7EndBattleText1 ; TextEndBattle - -PokemonTower7TrainerHeader1: - dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 - db ($3 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 - dw PokemonTower7BattleText2 ; TextBeforeBattle - dw PokemonTower7AfterBattleText2 ; TextAfterBattle - dw PokemonTower7EndBattleText2 ; TextEndBattle - dw PokemonTower7EndBattleText2 ; TextEndBattle - -PokemonTower7TrainerHeader2: - dbEventFlagBit EVENT_BEAT_POKEMONTOWER_7_TRAINER_2 - db ($3 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_POKEMONTOWER_7_TRAINER_2 - dw PokemonTower7BattleText3 ; TextBeforeBattle - dw PokemonTower7AfterBattleText3 ; TextAfterBattle - dw PokemonTower7EndBattleText3 ; TextEndBattle - dw PokemonTower7EndBattleText3 ; TextEndBattle - - db $ff + dw PokemonTower7Text4 + dw PokemonTower7Text5 + dw PokemonTower7Text6 PokemonTower7Text1: - TX_ASM - ld hl, PokemonTower7TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - PokemonTower7Text2: + db "@" + +PokemonTower7Text4: + TX_FAR _PokemonTowerJessieJamesText1 TX_ASM - ld hl, PokemonTower7TrainerHeader1 - call TalkToTrainer + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames jp TextScriptEnd -PokemonTower7Text3: +PokemonTower7Text5: + TX_FAR _PokemonTowerJessieJamesText2 + db "@" + +PokemonTower7JessieJamesEndBattleText: + TX_FAR _PokemonTowerJessieJamesText3 + db "@" + +PokemonTower7Text6: + TX_FAR _PokemonTowerJessieJamesText4 TX_ASM - ld hl, PokemonTower7TrainerHeader2 - call TalkToTrainer + ld c, 64 + call DelayFrames jp TextScriptEnd -PokemonTower7FujiText: +PokemonTower7Text3: TX_ASM - ld hl, TowerRescueFujiText + ld hl, PokemonTower7Text_60f75 call PrintText SetEvent EVENT_RESCUED_MR_FUJI SetEvent EVENT_RESCUED_MR_FUJI_2 @@ -266,47 +306,10 @@ PokemonTower7FujiText: ld a, HS_SAFFRON_CITY_F ld [wMissableObjectIndex], a predef ShowObject - ld a, $4 + ld a, $b ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a jp TextScriptEnd -TowerRescueFujiText: +PokemonTower7Text_60f75: TX_FAR _TowerRescueFujiText db "@" - -PokemonTower7BattleText1: - TX_FAR _PokemonTower7BattleText1 - db "@" - -PokemonTower7EndBattleText1: - TX_FAR _PokemonTower7EndBattleText1 - db "@" - -PokemonTower7AfterBattleText1: - TX_FAR _PokemonTower7AfterBattleText1 - db "@" - -PokemonTower7BattleText2: - TX_FAR _PokemonTower7BattleText2 - db "@" - -PokemonTower7EndBattleText2: - TX_FAR _PokemonTower7EndBattleText2 - db "@" - -PokemonTower7AfterBattleText2: - TX_FAR _PokemonTower7AfterBattleText2 - db "@" - -PokemonTower7BattleText3: - TX_FAR _PokemonTower7BattleText3 - db "@" - -PokemonTower7EndBattleText3: - TX_FAR _PokemonTower7EndBattleText3 - db "@" - -PokemonTower7AfterBattleText3: - TX_FAR _PokemonTower7AfterBattleText3 - db "@" diff --git a/scripts/PowerPlant.asm b/scripts/PowerPlant.asm index 35b4893f..f720b6f8 100755 --- a/scripts/PowerPlant.asm +++ b/scripts/PowerPlant.asm @@ -7,7 +7,7 @@ PowerPlant_Script: ld [wPowerPlantCurScript], a ret -PowerPlant_ScriptPointers +PowerPlant_ScriptPointers: dw CheckFightingMapTrainers dw DisplayEnemyTrainerTextAndStartBattle dw EndTrainerBattle diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm index b982d71c..e4fa2094 100755 --- a/scripts/RedsHouse1F.asm +++ b/scripts/RedsHouse1F.asm @@ -1,5 +1,6 @@ RedsHouse1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret RedsHouse1F_TextPointers: dw RedsHouse1FText1 @@ -7,63 +8,10 @@ RedsHouse1F_TextPointers: RedsHouse1FText1: ; Mom TX_ASM - ld a, [wd72e] - bit 3, a - jr nz, .heal ; if player has received a Pokémon from Oak, heal team - ld hl, MomWakeUpText - call PrintText - jr .done -.heal - call MomHealPokemon -.done + callab Func_f1b73 jp TextScriptEnd -MomWakeUpText: - TX_FAR _MomWakeUpText - db "@" - -MomHealPokemon: - ld hl, MomHealText1 - call PrintText - call GBFadeOutToWhite - call ReloadMapData - predef HealParty - ld a, MUSIC_PKMN_HEALED - ld [wNewSoundID], a - call PlaySound -.next - ld a, [wChannelSoundIDs] - cp MUSIC_PKMN_HEALED - jr z, .next - ld a, [wMapMusicSoundID] - ld [wNewSoundID], a - call PlaySound - call GBFadeInFromWhite - ld hl, MomHealText2 - jp PrintText - -MomHealText1: - TX_FAR _MomHealText1 - db "@" -MomHealText2: - TX_FAR _MomHealText2 - db "@" - RedsHouse1FText2: ; TV TX_ASM - ld a, [wSpriteStateData1 + 9] - cp SPRITE_FACING_UP - ld hl, TVWrongSideText - jr nz, .notUp - ld hl, StandByMeText -.notUp - call PrintText + callab Func_f1bc4 jp TextScriptEnd - -StandByMeText: - TX_FAR _StandByMeText - db "@" - -TVWrongSideText: - TX_FAR _TVWrongSideText - db "@" diff --git a/scripts/RedsHouse1F2.asm b/scripts/RedsHouse1F2.asm new file mode 100755 index 00000000..8f44d30d --- /dev/null +++ b/scripts/RedsHouse1F2.asm @@ -0,0 +1,58 @@ +Func_f1b73: + ld a, [wd72e] + bit 3, a + jp nz, MomHealPokemon ; if player has received a Pokémon from Oak, heal team + ld hl, MomWakeUpText + call PrintText + ret + +MomWakeUpText: + TX_FAR _MomWakeUpText + db "@" + +MomHealPokemon: + ld hl, MomHealText1 + call PrintText + call GBFadeOutToWhite + call ReloadMapData + predef HealParty + ld a, MUSIC_PKMN_HEALED + ld [wNewSoundID], a + call PlaySound +.loop + ld a, [wChannelSoundIDs] + cp MUSIC_PKMN_HEALED + jr z, .loop + ld a, [wMapMusicSoundID] + ld [wNewSoundID], a + call PlaySound + call GBFadeInFromWhite + ld hl, MomHealText2 + call PrintText + ret + +MomHealText1: + TX_FAR _MomHealText1 + db "@" +MomHealText2: + TX_FAR _MomHealText2 + db "@" + +Func_f1bc4: + ld hl, TVWrongSideText + ld a, [wSpritePlayerStateData1FacingDirection] + cp SPRITE_FACING_UP + jp nz, .notUp + ld hl, StandByMeText +.notUp + call PrintText + ret + +StandByMeText: + TX_FAR _StandByMeText + db "@" + +TVWrongSideText: + TX_FAR _TVWrongSideText + db "@" + diff --git a/scripts/RedsHouse2F.asm b/scripts/RedsHouse2F.asm index 5ec86678..e692a0fa 100755 --- a/scripts/RedsHouse2F.asm +++ b/scripts/RedsHouse2F.asm @@ -1,23 +1,22 @@ RedsHouse2F_Script: call EnableAutoTextBoxDrawing ld hl, RedsHouse2F_ScriptPointers - ld a, [wRedsHouse2FCurScript] - jp CallFunctionInTable + ld a, 0 + call CallFunctionInTable + ret RedsHouse2F_ScriptPointers: dw RedsHouse2FScript0 dw RedsHouse2FScript1 + dw RedsHouse2FScript2 + dw RedsHouse2FScript3 + dw RedsHouse2FScript4 RedsHouse2FScript0: - xor a - ld [hJoyHeld], a - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a - ld a, 1 - ld [wRedsHouse2FCurScript], a - ret - RedsHouse2FScript1: +RedsHouse2FScript2: +RedsHouse2FScript3: +RedsHouse2FScript4: ret RedsHouse2F_TextPointers: diff --git a/scripts/RockTunnelPokecenter.asm b/scripts/RockTunnelPokecenter.asm index cbcd6318..2fcace67 100755 --- a/scripts/RockTunnelPokecenter.asm +++ b/scripts/RockTunnelPokecenter.asm @@ -7,9 +7,10 @@ RockTunnelPokecenter_TextPointers: dw RockTunnelPokecenterText2 dw RockTunnelPokecenterText3 dw RockTunnelTradeNurseText + dw RockTunnelPokecenterText5 RockTunnelHealNurseText: - db $ff + TX_POKECENTER_NURSE RockTunnelPokecenterText2: TX_FAR _RockTunnelPokecenterText2 @@ -20,4 +21,9 @@ RockTunnelPokecenterText3: db "@" RockTunnelTradeNurseText: - db $f6 + TX_CABLE_CLUB_RECEPTIONIST + +RockTunnelPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm index b2ce21f4..89fd37e1 100755 --- a/scripts/RocketHideoutB4F.asm +++ b/scripts/RocketHideoutB4F.asm @@ -1,5 +1,4 @@ RocketHideoutB4F_Script: - call RocketHideout4Script_45473 call EnableAutoTextBoxDrawing ld hl, RocketHideout4TrainerHeader0 ld de, RocketHideoutB4F_ScriptPointers @@ -8,47 +7,44 @@ RocketHideoutB4F_Script: ld [wRocketHideoutB4FCurScript], a ret -RocketHideout4Script_45473: - ld hl, wCurrentMapScriptFlags - bit 5, [hl] - res 5, [hl] - ret z - CheckEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED - jr nz, .asm_45496 - CheckBothEventsSet EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 1 - jr z, .asm_4548c - ld a, $2d - jr .asm_45498 -.asm_4548c - ld a, SFX_GO_INSIDE - call PlaySound - SetEvent EVENT_ROCKET_HIDEOUT_4_DOOR_UNLOCKED -.asm_45496 - ld a, $e -.asm_45498 - ld [wNewTileBlockID], a - lb bc, 5, 12 - predef_jump ReplaceTileBlock - -RocketHideout4Script_454a3: +RocketHideout4Script_45510: + CheckAndResetEvent EVENT_6A0 + call nz, RocketHideout4Script_45525 xor a ld [wJoyIgnore], a +RocketHideout4Script_4551e: ld [wRocketHideoutB4FCurScript], a ld [wCurMapScript], a ret +RocketHideout4Script_45525: + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideout4Script_45756 + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideout4Script_45756 + ret + RocketHideoutB4F_ScriptPointers: - dw CheckFightingMapTrainers + dw RocketHideout4Script0 dw DisplayEnemyTrainerTextAndStartBattle dw EndTrainerBattle dw RocketHideout4Script3 + dw RocketHideout4Script4 + dw RocketHideout4Script5 + dw RocketHideout4Script6 + dw RocketHideout4Script7 + dw RocketHideout4Script8 + dw RocketHideout4Script9 + dw RocketHideout4Script10 + dw RocketHideout4Script11 + dw RocketHideout4Script12 + dw RocketHideout4Script13 RocketHideout4Script3: ld a, [wIsInBattle] cp $ff - jp z, RocketHideout4Script_454a3 - call UpdateSprites - ld a, $f0 + jp z, RocketHideout4Script_45510 + ld a, $fc ld [wJoyIgnore], a SetEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI ld a, $a @@ -72,60 +68,294 @@ RocketHideout4Script3: ld [wCurMapScript], a ret +RocketHideout4Script0: + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 + call z, RocketHideout4Script_455a5 + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2 + call z, CheckFightingMapTrainers + ret + +RocketHideout4Script_455a5: + ld a, [wYCoord] + cp $e + ret nz + ResetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + ld a, [wXCoord] + cp $18 + jr z, .asm_455c2 + ld a, [wXCoord] + cp $19 + ret nz + SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 +.asm_455c2 + xor a + ld [hJoyHeld], a + ld a, $fc + ld [wJoyIgnore], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + call UpdateSprites + call Delay3 + call UpdateSprites + call Delay3 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $b + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $ff + ld [wJoyIgnore], a + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideout4Script_45747 + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideout4Script_45747 + ld a, $4 + call RocketHideout4Script_4551e + ret + +RocketHideout4JessieJamesMovementData_45605: + db $4 +RocketHideout4JessieJamesMovementData_45606: + db $4 + db $4 + db $4 + db $ff + +RocketHideout4Script4: + ld de, RocketHideout4JessieJamesMovementData_45605 + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + jr z, .asm_45617 + ld de, RocketHideout4JessieJamesMovementData_45606 +.asm_45617 + ld a, $2 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $5 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script5: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +RocketHideout4Script6: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 2 * $10 + 9], a + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + jr z, .asm_4564a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +.asm_4564a + call Delay3 + ld a, $fc + ld [wJoyIgnore], a +RocketHideout4Script7: + ld de, RocketHideout4JessieJamesMovementData_45606 + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + jr z, .asm_4565f + ld de, RocketHideout4JessieJamesMovementData_45605 +.asm_4565f + ld a, $3 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $8 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script8: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz + ld a, $fc + ld [wJoyIgnore], a +RocketHideout4Script9: + ld a, $2 + ld [wSpriteStateData1 + 3 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 3 * $10 + 9], a + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + jr z, .asm_45697 + ld a, SPRITE_FACING_RIGHT + ld [wSpriteStateData1 + 3 * $10 + 9], a +.asm_45697 + call Delay3 + ld a, $c + ld [hSpriteIndexOrTextID], a + call DisplayTextID +RocketHideout4Script10: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, RocketHideout4JessieJamesEndBattleText + ld de, RocketHideout4JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2b + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_6A0 + ld a, $b + call RocketHideout4Script_4551e + ret + +RocketHideout4Script11: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, RocketHideout4Script_45510 + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld [wSpriteStateData1 + 3 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld [wSpriteStateData1 + 3 * $10 + 9], a + ld a, $fc + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $d + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $c + call RocketHideout4Script_4551e + ret + +RocketHideout4Script12: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideout4Script_45756 + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideout4Script_45756 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $d + call RocketHideout4Script_4551e + ret + +RocketHideout4Script13: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 + ld a, $0 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script_45747: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +RocketHideout4Script_45756: + ld [wMissableObjectIndex], a + predef HideObject + ret + RocketHideoutB4F_TextPointers: + dw RocketHideout4Text0 dw RocketHideout4Text1 dw RocketHideout4Text2 dw RocketHideout4Text3 - dw RocketHideout4Text4 dw PickUpItemText dw PickUpItemText dw PickUpItemText dw PickUpItemText dw PickUpItemText + dw RocketHideout4Text9 dw RocketHideout4Text10 + dw RocketHideout4Text11 + dw RocketHideout4Text12 RocketHideout4TrainerHeader0: - dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 - db ($0 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 - dw RocketHideout4BattleText2 ; TextBeforeBattle - dw RocketHideout4AfterBattleText2 ; TextAfterBattle - dw RocketHideout4EndBattleText2 ; TextEndBattle - dw RocketHideout4EndBattleText2 ; TextEndBattle - -RocketHideout4TrainerHeader1: - dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 - db ($0 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 - dw RocketHideout4BattleText3 ; TextBeforeBattle - dw RocketHideout4AfterBattleText3 ; TextAfterBattle - dw RocketHideout4EndBattleText3 ; TextEndBattle - dw RocketHideout4EndBattleText3 ; TextEndBattle - -RocketHideout4TrainerHeader2: dbEventFlagBit EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2 - db ($1 << 4) ; trainer's view range + db ($1 << 4) dwEventFlagAddress EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2 - dw RocketHideout4BattleText4 ; TextBeforeBattle - dw RocketHideout4AfterBattleText4 ; TextAfterBattle - dw RocketHideout4EndBattleText4 ; TextEndBattle - dw RocketHideout4EndBattleText4 ; TextEndBattle - + dw RocketHideout4Trainer0BeforeText + dw RocketHideout4Trainer0AfterText + dw RocketHideout4Trainer0EndBattleText + dw RocketHideout4Trainer0EndBattleText db $ff RocketHideout4Text1: +RocketHideout4Text2: + db "@" + +RocketHideout4Text10: + TX_FAR _RocketHideoutJessieJamesText1 + TX_ASM + ld c, 10 + call DelayFrames + ld a, $8 + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +RocketHideout4Text11: + TX_FAR _RocketHideoutJessieJamesText2 + db "@" + +RocketHideout4JessieJamesEndBattleText: + TX_FAR _RocketHideoutJessieJamesText3 + db "@" + +RocketHideout4Text12: + TX_FAR _RocketHideoutJessieJamesText4 + TX_ASM + ld c, 64 + call DelayFrames + jp TextScriptEnd + +RocketHideout4Text0: TX_ASM CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI - jp nz, .asm_545571 - ld hl, RocketHideout4Text_4557a + jp nz, .asm_457fb + ld hl, RocketHideout4Text_45804 call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, RocketHideout4Text_4557f - ld de, RocketHideout4Text_4557f + ld hl, RocketHideout4Text_45809 + ld de, RocketHideout4Text_45809 call SaveEndBattleTextPointers - ld a, [H_SPRITEINDEX] + ld a, [hSpriteIndexOrTextID] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters @@ -134,87 +364,52 @@ RocketHideout4Text1: ld a, $3 ld [wRocketHideoutB4FCurScript], a ld [wCurMapScript], a - jr .asm_209f0 -.asm_545571 - ld hl, RocketHideout4Text10 + jr .asm_45801 + +.asm_457fb + ld hl, RocketHideout4Text9 call PrintText -.asm_209f0 +.asm_45801 jp TextScriptEnd -RocketHideout4Text_4557a: +RocketHideout4Text_45804: TX_FAR _RocketHideout4Text_4557a db "@" -RocketHideout4Text_4557f: +RocketHideout4Text_45809: TX_FAR _RocketHideout4Text_4557f db "@" -RocketHideout4Text10: +RocketHideout4Text9: TX_FAR _RocketHideout4Text_45584 db "@" -RocketHideout4Text2: - TX_ASM - ld hl, RocketHideout4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText2: - TX_FAR _RocketHideout4BattleText2 - db "@" - -RocketHideout4EndBattleText2: - TX_FAR _RocketHideout4EndBattleText2 - db "@" - -RocketHideout4AfterBattleText2: - TX_FAR _RocketHide4AfterBattleText2 - db "@" - RocketHideout4Text3: TX_ASM - ld hl, RocketHideout4TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText3: - TX_FAR _RocketHideout4BattleText3 - db "@" - -RocketHideout4EndBattleText3: - TX_FAR _RocketHideout4EndBattleText3 - db "@" - -RocketHideout4AfterBattleText3: - TX_FAR _RocketHide4AfterBattleText3 - db "@" - -RocketHideout4Text4: - TX_ASM - ld hl, RocketHideout4TrainerHeader2 + ld hl, RocketHideout4TrainerHeader0 call TalkToTrainer jp TextScriptEnd -RocketHideout4BattleText4: +RocketHideout4Trainer0BeforeText: TX_FAR _RocketHideout4BattleText4 db "@" -RocketHideout4EndBattleText4: +RocketHideout4Trainer0EndBattleText: TX_FAR _RocketHideout4EndBattleText4 - db "@" - -RocketHideout4AfterBattleText4: + TX_BLINK TX_ASM - ld hl, RocketHideout4Text_455ec - call PrintText - CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY - jr nz, .asm_455e9 + SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5 ld [wMissableObjectIndex], a predef ShowObject -.asm_455e9 jp TextScriptEnd -RocketHideout4Text_455ec: +RocketHideout4Trainer0AfterText: + TX_ASM + ld hl, RocketHideout4Text_45844 + call PrintText + jp TextScriptEnd + +RocketHideout4Text_45844: TX_FAR _RocketHideout4Text_455ec db "@" diff --git a/scripts/Route1.asm b/scripts/Route1.asm index e733b54d..d41360b2 100755 --- a/scripts/Route1.asm +++ b/scripts/Route1.asm @@ -1,5 +1,6 @@ Route1_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Route1_TextPointers: dw Route1Text1 @@ -8,45 +9,15 @@ Route1_TextPointers: Route1Text1: TX_ASM - CheckAndSetEvent EVENT_GOT_POTION_SAMPLE - jr nz, .asm_1cada - ld hl, Route1ViridianMartSampleText - call PrintText - lb bc, POTION, 1 - call GiveItem - jr nc, .BagFull - ld hl, Route1Text_1cae8 - jr .asm_1cadd -.BagFull - ld hl, Route1Text_1caf3 - jr .asm_1cadd -.asm_1cada - ld hl, Route1Text_1caee -.asm_1cadd - call PrintText + callba Func_f1ad2 jp TextScriptEnd -Route1ViridianMartSampleText: - TX_FAR _Route1ViridianMartSampleText - db "@" - -Route1Text_1cae8: - TX_FAR _Route1Text_1cae8 - TX_SFX_ITEM_1 - db "@" - -Route1Text_1caee: - TX_FAR _Route1Text_1caee - db "@" - -Route1Text_1caf3: - TX_FAR _Route1Text_1caf3 - db "@" - Route1Text2: - TX_FAR _Route1Text2 - db "@" + TX_ASM + callba Func_f1b0f + jp TextScriptEnd Route1Text3: - TX_FAR _Route1Text3 - db "@" + TX_ASM + callba Func_f1b1b + jp TextScriptEnd diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm index c140937d..fde7fdd6 100755 --- a/scripts/Route11Gate2F.asm +++ b/scripts/Route11Gate2F.asm @@ -9,7 +9,7 @@ Route11Gate2F_TextPointers: Route11GateUpstairsText1: TX_ASM - xor a + ld a, $0 ld [wWhichTrade], a predef DoInGameTradeDialogue Route11GateUpstairsScriptEnd: @@ -47,7 +47,7 @@ Route11GateUpstairsText_494a3: Route11GateUpstairsText3: TX_ASM - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP jp nz, GateUpstairsScript_PrintIfFacingUp CheckEvent EVENT_BEAT_ROUTE12_SNORLAX diff --git a/scripts/Route12Gate2F.asm b/scripts/Route12Gate2F.asm index 0cc2768b..4fe120e8 100755 --- a/scripts/Route12Gate2F.asm +++ b/scripts/Route12Gate2F.asm @@ -65,7 +65,7 @@ Route12GateUpstairsText_495c4: db "@" GateUpstairsScript_PrintIfFacingUp: - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_UP jr z, .up ld a, $1 diff --git a/scripts/Route19.asm b/scripts/Route19.asm index 6f603e05..febeb9a4 100755 --- a/scripts/Route19.asm +++ b/scripts/Route19.asm @@ -36,7 +36,7 @@ Route19TrainerHeader0: Route19TrainerHeader1: dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_1 - db ($3 << 4) ; trainer's view range + db ($4 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_1 dw Route19BattleText2 ; TextBeforeBattle dw Route19AfterBattleText2 ; TextAfterBattle @@ -120,60 +120,52 @@ Route19TrainerHeader9: Route19Text1: TX_ASM ld hl, Route19TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text2: TX_ASM ld hl, Route19TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text3: TX_ASM ld hl, Route19TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text4: TX_ASM ld hl, Route19TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text5: TX_ASM ld hl, Route19TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text6: TX_ASM ld hl, Route19TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text7: TX_ASM ld hl, Route19TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text8: TX_ASM ld hl, Route19TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text9: TX_ASM ld hl, Route19TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text10: TX_ASM ld hl, Route19TrainerHeader9 +Route19_TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/Route1_2.asm b/scripts/Route1_2.asm new file mode 100755 index 00000000..ee34ce55 --- /dev/null +++ b/scripts/Route1_2.asm @@ -0,0 +1,53 @@ +Func_f1ad2: + CheckAndSetEvent EVENT_GOT_POTION_SAMPLE + jr nz, .asm_1cada + ld hl, Route1ViridianMartSampleText + call PrintText + lb bc, POTION, 1 + call GiveItem + jr nc, .BagFull + ld hl, Route1Text_f1aff + jr .asm_1cadd +.BagFull + ld hl, Route1Text_f1b0a + jr .asm_1cadd +.asm_1cada + ld hl, Route1Text_f1b05 +.asm_1cadd + call PrintText + ret + +Route1ViridianMartSampleText: + TX_FAR _Route1ViridianMartSampleText + db "@" + +Route1Text_f1aff: + TX_FAR _Route1Text_1cae8 + TX_SFX_ITEM_1 + db "@" + +Route1Text_f1b05: + TX_FAR _Route1Text_1caee + db "@" + +Route1Text_f1b0a: + TX_FAR _Route1Text_1caf3 + db "@" + +Func_f1b0f: + ld hl, Route1Text_f1b16 + call PrintText + ret + +Route1Text_f1b16: + TX_FAR _Route1Text2 + db "@" + +Func_f1b1b: + ld hl, Route1Text_f1b22 + call PrintText + ret + +Route1Text_f1b22: + TX_FAR _Route1Text3 + db "@" diff --git a/scripts/Route22.asm b/scripts/Route22.asm index 7226e509..ff57f902 100755 --- a/scripts/Route22.asm +++ b/scripts/Route22.asm @@ -22,16 +22,17 @@ Route22Script7: ret Route22Script_50ed6: + ld a, OPP_SONY1 + ld [wCurOpponent], a + ld a, $2 + ld [wTrainerNo], a + ret + +Route22Script_50ee1: + ld a, OPP_SONY2 + ld [wCurOpponent], a ld a, [wRivalStarter] - ld b, a -.asm_50eda - ld a, [hli] - cp b - jr z, .asm_50ee1 - inc hl - jr .asm_50eda -.asm_50ee1 - ld a, [hl] + add 7 ld [wTrainerNo], a ret @@ -88,9 +89,7 @@ Route22Script0: ld a, [wWalkBikeSurfState] and a jr z, .asm_50f4e - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_50f4e ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -131,25 +130,30 @@ Route22Script1: ld hl, Route22RivalDefeatedText1 ld de, Route22Text_511bc call SaveEndBattleTextPointers - ld a, OPP_SONY1 - ld [wCurOpponent], a - ld hl, StarterMons_50faf call Route22Script_50ed6 ld a, $2 ld [wRoute22CurScript], a ret -StarterMons_50faf: -; starter the rival picked, rival trainer number - db STARTER2,$04 - db STARTER3,$05 - db STARTER1,$06 +Route22RivalDefeatedText1: + TX_FAR _Route22RivalDefeatedText1 + db "@" + +Route22Text_511bc: + TX_FAR _Route22Text_511bc + db "@" Route22Script2: ld a, [wIsInBattle] cp $ff jp z, Route22Script_50ece - ld a, [wSpriteStateData1 + 9] + ld a, [wRivalStarter] + cp 2 + jr nz, .asm_50fc9 + ld a, $1 + ld [wRivalStarter], a +.asm_50fc9 + ld a, [wSpritePlayerStateData1FacingDirection] and a ; cp SPRITE_FACING_DOWN jr nz, .notDown ld a, SPRITE_FACING_UP @@ -167,9 +171,7 @@ Route22Script2: ld a, $1 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, [wcf0d] cp $1 @@ -241,13 +243,9 @@ Route22Script_5104e: ld a, [wWalkBikeSurfState] and a jr z, .skipYVisibilityTesta - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .skipYVisibilityTesta - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateTempo ld a, $2 ld [H_SPRITEINDEX], a @@ -287,18 +285,18 @@ Route22Script4: ld hl, Route22RivalDefeatedText2 ld de, Route22Text_511d0 call SaveEndBattleTextPointers - ld a, OPP_SONY2 - ld [wCurOpponent], a - ld hl, StarterMons_510d9 - call Route22Script_50ed6 + call Route22Script_50ee1 ld a, $5 ld [wRoute22CurScript], a ret -StarterMons_510d9: - db STARTER2,$0a - db STARTER3,$0b - db STARTER1,$0c +Route22RivalDefeatedText2: + TX_FAR _Route22RivalDefeatedText2 + db "@" + +Route22Text_511d0: + TX_FAR _Route22Text_511d0 + db "@" Route22Script5: ld a, [wIsInBattle] @@ -326,9 +324,7 @@ Route22Script5: ld a, $2 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStartAndTempo ld a, [wcf0d] cp $1 @@ -384,62 +380,15 @@ Route22_TextPointers: Route22Text1: TX_ASM - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr z, .asm_5118b - ld hl, Route22RivalAfterBattleText1 - call PrintText - jr .asm_51191 -.asm_5118b - ld hl, Route22RivalBeforeBattleText1 - call PrintText -.asm_51191 + callba Func_f1b27 jp TextScriptEnd Route22Text2: TX_ASM - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE - jr z, .asm_511a4 - ld hl, Route22RivalAfterBattleText2 - call PrintText - jr .asm_511aa -.asm_511a4 - ld hl, Route22RivalBeforeBattleText2 - call PrintText -.asm_511aa + callba Func_f1b47 jp TextScriptEnd -Route22RivalBeforeBattleText1: - TX_FAR _Route22RivalBeforeBattleText1 - db "@" - -Route22RivalAfterBattleText1: - TX_FAR _Route22RivalAfterBattleText1 - db "@" - -Route22RivalDefeatedText1: - TX_FAR _Route22RivalDefeatedText1 - db "@" - -Route22Text_511bc: - TX_FAR _Route22Text_511bc - db "@" - -Route22RivalBeforeBattleText2: - TX_FAR _Route22RivalBeforeBattleText2 - db "@" - -Route22RivalAfterBattleText2: - TX_FAR _Route22RivalAfterBattleText2 - db "@" - -Route22RivalDefeatedText2: - TX_FAR _Route22RivalDefeatedText2 - db "@" - -Route22Text_511d0: - TX_FAR _Route22Text_511d0 - db "@" - Route22FrontGateText: - TX_FAR _Route22FrontGateText - db "@" + TX_ASM + callba Func_f1b67 + jp TextScriptEnd diff --git a/scripts/Route22Gate.asm b/scripts/Route22Gate.asm index 86b1220d..946366b5 100755 --- a/scripts/Route22Gate.asm +++ b/scripts/Route22Gate.asm @@ -23,9 +23,12 @@ Route22GateScript0: ret nc xor a ld [hJoyHeld], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, $1 ld [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret Route22GateScriptCoords: db 2,4 @@ -37,7 +40,7 @@ Route22GateScript_1e6ba: ld [wSimulatedJoypadStatesIndex], a ld a, D_DOWN ld [wSimulatedJoypadStatesEnd], a - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld [wJoyIgnore], a jp StartSimulatingJoypadStates @@ -59,7 +62,7 @@ Route22Gate_TextPointers: Route22GateText1: TX_ASM ld a, [wObtainedBadges] - bit 0, a + bit 0, a ; BOULDERBADGE jr nz, .asm_1e6f6 ld hl, Route22GateText_1e704 call PrintText diff --git a/scripts/Route22_2.asm b/scripts/Route22_2.asm new file mode 100755 index 00000000..1cd23ed2 --- /dev/null +++ b/scripts/Route22_2.asm @@ -0,0 +1,50 @@ +Func_f1b27: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE + jr z, .asm_5118b + ld hl, Route22RivalAfterBattleText1 + call PrintText + jr .asm_51191 + +.asm_5118b + ld hl, Route22RivalBeforeBattleText1 + call PrintText +.asm_51191 + ret + +Route22RivalBeforeBattleText1: + TX_FAR _Route22RivalBeforeBattleText1 + db "@" + +Route22RivalAfterBattleText1: + TX_FAR _Route22RivalAfterBattleText1 + db "@" + +Func_f1b47: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE + jr z, .asm_511a4 + ld hl, Route22RivalAfterBattleText2 + call PrintText + jr .asm_511aa + +.asm_511a4 + ld hl, Route22RivalBeforeBattleText2 + call PrintText +.asm_511aa + ret + +Route22RivalBeforeBattleText2: + TX_FAR _Route22RivalBeforeBattleText2 + db "@" + +Route22RivalAfterBattleText2: + TX_FAR _Route22RivalAfterBattleText2 + db "@" + +Func_f1b67: + ld hl, Route22FrontGateText_3c + call PrintText + ret + +Route22FrontGateText_3c: + TX_FAR _Route22FrontGateText + db "@" diff --git a/scripts/Route23.asm b/scripts/Route23.asm index e91e2c98..34d95b84 100755 --- a/scripts/Route23.asm +++ b/scripts/Route23.asm @@ -118,7 +118,7 @@ Route23Script_512d8: ld a, D_DOWN ld [wSimulatedJoypadStatesEnd], a xor a - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld [wJoyIgnore], a jp StartSimulatingJoypadStates diff --git a/scripts/Route24.asm b/scripts/Route24.asm index a8e16e7d..58f71981 100755 --- a/scripts/Route24.asm +++ b/scripts/Route24.asm @@ -84,6 +84,7 @@ Route24_TextPointers: dw Route24Text6 dw Route24Text7 dw PickUpItemText + dw Route24Text8 Route24TrainerHeader0: dbEventFlagBit EVENT_BEAT_ROUTE_24_TRAINER_0 @@ -190,7 +191,7 @@ Route24Text_51510: Route24Text_5151a: TX_FAR _Route24Text_5151a - TX_SFX_ITEM_1 + TX_SFX_KEY_ITEM TX_BLINK db "@" @@ -317,3 +318,60 @@ Route24EndBattleText6: Route24AfterBattleText6: TX_FAR _Route24AfterBattleText6 db "@" + +Route24Text8: + TX_ASM + CheckEvent EVENT_54F + jr nz, .asm_515d5 + ld hl, Route24Text_515de + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_515d0 + ld a, CHARMANDER + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, CHARMANDER, 10 + call GivePokemon + jp nc, TextScriptEnd + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, Route24Text_515e3 + call PrintText + SetEvent EVENT_54F + jp TextScriptEnd + +.asm_515d0 + ld hl, Route24Text_515e9 + jr .asm_515d8 + +.asm_515d5 + ld hl, Route24Text_515ee +.asm_515d8 + call PrintText + jp TextScriptEnd + +Route24Text_515de: + TX_FAR _Route24DamianText1 + db "@" + +Route24Text_515e3: + TX_FAR _Route24DamianText2 + db $d + db "@" + +Route24Text_515e9: + TX_FAR _Route24DamianText3 + db "@" + +Route24Text_515ee: + TX_FAR _Route24DamianText4 + db "@" + diff --git a/scripts/Route25.asm b/scripts/Route25.asm index 7166919d..c3c11ed5 100755 --- a/scripts/Route25.asm +++ b/scripts/Route25.asm @@ -1,14 +1,21 @@ Route25_Script: - call Route25Script_515e1 call EnableAutoTextBoxDrawing ld hl, Route25TrainerHeader0 ld de, Route25_ScriptPointers ld a, [wRoute25CurScript] call ExecuteCurMapScriptInTable ld [wRoute25CurScript], a + call Route25Script_515e1 ret Route25Script_515e1: + ld hl, wd492 + res 2, [hl] + res 3, [hl] + res 4, [hl] + res 7, [hl] + xor a + ld [wBillsHouseCurScript], a ld hl, wCurrentMapScriptFlags bit 6, [hl] res 6, [hl] @@ -16,14 +23,16 @@ Route25Script_515e1: CheckEventHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING ret nz CheckEventReuseHL EVENT_MET_BILL_2 - jr nz, .asm_515ff + jr nz, .asm_51638 ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR ld a, HS_BILL_POKEMON ld [wMissableObjectIndex], a - predef_jump ShowObject -.asm_515ff + predef ShowObject + jr .asm_5165c + +.asm_51638 CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2 - ret z + jr z, .asm_5165c SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING ld a, HS_NUGGET_BRIDGE_GUY ld [wMissableObjectIndex], a @@ -33,7 +42,9 @@ Route25Script_515e1: predef HideObject ld a, HS_BILL_2 ld [wMissableObjectIndex], a - predef_jump ShowObject + predef ShowObject +.asm_5165c + ret Route25_ScriptPointers: dw CheckFightingMapTrainers diff --git a/scripts/Route6.asm b/scripts/Route6.asm index 9f43b800..6ee3f317 100755 --- a/scripts/Route6.asm +++ b/scripts/Route6.asm @@ -35,7 +35,7 @@ Route6TrainerHeader1: db ($0 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_1 dw Route6BattleText2 ; TextBeforeBattle - dw Route6AfterBattleText1 ; TextAfterBattle + dw Route6AfterBattleText2 ; TextAfterBattle dw Route6EndBattleText2 ; TextEndBattle dw Route6EndBattleText2 ; TextEndBattle @@ -109,6 +109,10 @@ Route6EndBattleText2: TX_FAR _Route6EndBattleText2 db "@" +Route6AfterBattleText2: + TX_FAR _Route6AfterBattleText2 + db "@" + Route6Text3: TX_ASM ld hl, Route6TrainerHeader2 diff --git a/scripts/Route7.asm b/scripts/Route7.asm index 55774553..27d07a7a 100755 --- a/scripts/Route7.asm +++ b/scripts/Route7.asm @@ -1,5 +1,6 @@ Route7_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Route7_TextPointers: dw Route7Text1 diff --git a/scripts/Route8Gate.asm b/scripts/Route8Gate.asm index 8ecea68e..49f605a2 100755 --- a/scripts/Route8Gate.asm +++ b/scripts/Route8Gate.asm @@ -27,7 +27,7 @@ Route8GateScript0: ld hl, CoordsData_1e22c call ArePlayerCoordsInArray ret nc - ld a, PLAYER_DIR_LEFT + ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a diff --git a/scripts/Route9.asm b/scripts/Route9.asm index a18096f0..8b346ee8 100755 --- a/scripts/Route9.asm +++ b/scripts/Route9.asm @@ -14,7 +14,7 @@ Route9_ScriptPointers: Route9_TextPointers: dw Route9Text1 - dw Route9Text2 + dw Route9TextAJ dw Route9Text3 dw Route9Text4 dw Route9Text5 @@ -38,10 +38,10 @@ Route9TrainerHeader1: dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_1 db ($2 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_1 - dw Route9BattleText2 ; TextBeforeBattle - dw Route9AfterBattleText2 ; TextAfterBattle - dw Route9EndBattleText2 ; TextEndBattle - dw Route9EndBattleText2 ; TextEndBattle + dw Route9BattleTextAJ ; TextBeforeBattle + dw Route9AfterBattleTextAJ ; TextAfterBattle + dw Route9EndBattleTextAJ ; TextEndBattle + dw Route9EndBattleTextAJ ; TextEndBattle Route9TrainerHeader2: dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_2 @@ -113,7 +113,7 @@ Route9Text1: ld hl, Route9TrainerHeader0 jr Route9TalkToTrainer -Route9Text2: +Route9TextAJ: TX_ASM ld hl, Route9TrainerHeader1 jr Route9TalkToTrainer @@ -167,16 +167,16 @@ Route9AfterBattleText1: TX_FAR _Route9AfterBattleText1 db "@" -Route9BattleText2: - TX_FAR _Route9BattleText2 +Route9BattleTextAJ: + TX_FAR _Route9BattleTextAJ db "@" -Route9EndBattleText2: - TX_FAR _Route9EndBattleText2 +Route9EndBattleTextAJ: + TX_FAR _Route9EndBattleTextAJ db "@" -Route9AfterBattleText2: - TX_FAR _Route9AfterBattleText2 +Route9AfterBattleTextAJ: + TX_FAR _Route9AfterBattleTextAJ db "@" Route9BattleText3: diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm index ba900748..77b283d2 100755 --- a/scripts/SSAnne2F.asm +++ b/scripts/SSAnne2F.asm @@ -24,9 +24,7 @@ SSAnne2Script0: ld hl, CoordsData_61411 call ArePlayerCoordsInArray ret nc - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -99,23 +97,8 @@ SSAnne2Script1: call Delay3 ld a, OPP_SONY2 ld [wCurOpponent], a - - ; select which team to use during the encounter - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle ld a, $1 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done ld [wTrainerNo], a - call SSAnne2Script_61416 ld a, $2 ld [wSSAnne2FCurScript], a @@ -145,9 +128,7 @@ SSAnne2Script2: ld a, $2 ld [H_SPRITEINDEX], a call MoveSprite - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $3 ld [wSSAnne2FCurScript], a diff --git a/scripts/SSAnne2FRooms.asm b/scripts/SSAnne2FRooms.asm index a79e1be8..fb57cf37 100755 --- a/scripts/SSAnne2FRooms.asm +++ b/scripts/SSAnne2FRooms.asm @@ -1,8 +1,5 @@ SSAnne2FRooms_Script: - ld a, $1 - ld [wAutoTextBoxDrawingControl], a - xor a - ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call DisableAutoTextBoxDrawing ld hl, SSAnne9TrainerHeader0 ld de, SSAnne2FRooms_ScriptPointers ld a, [wSSAnne2FRoomsCurScript] @@ -128,44 +125,24 @@ SSAnne9Text_61c10: SSAnne9Text10: TX_ASM - ld hl, SSAnne9Text_61c1f - call PrintText + callba Func_f2570 jp TextScriptEnd -SSAnne9Text_61c1f: - TX_FAR _SSAnne9Text_61c1f - db "@" - SSAnne9Text11: TX_ASM - ld hl, SSAnne9Text_61c2e - call PrintText + callba Func_f257c jp TextScriptEnd -SSAnne9Text_61c2e: - TX_FAR _SSAnne9Text_61c2e - db "@" - SSAnne9Text12: TX_ASM - ld hl, SSAnne9Text_61c3d - call PrintText + callba Func_f2588 jp TextScriptEnd -SSAnne9Text_61c3d: - TX_FAR _SSAnne9Text_61c3d - db "@" - SSAnne9Text13: TX_ASM - ld hl, SSAnne9Text_61c4c - call PrintText + callba Func_f2594 jp TextScriptEnd -SSAnne9Text_61c4c: - TX_FAR _SSAnne9Text_61c4c - db "@" - SSAnne9BattleText1: TX_FAR _SSAnne9BattleText1 db "@" diff --git a/scripts/SSAnne2FRooms_2.asm b/scripts/SSAnne2FRooms_2.asm new file mode 100755 index 00000000..f856221c --- /dev/null +++ b/scripts/SSAnne2FRooms_2.asm @@ -0,0 +1,35 @@ +Func_f2570: + ld hl, SSAnne9Text_f2577 + call PrintText + ret + +SSAnne9Text_f2577: + TX_FAR _SSAnne9Text_61c1f + db "@" + +Func_f257c: + ld hl, SSAnne9Text_f2583 + call PrintText + ret + +SSAnne9Text_f2583: + TX_FAR _SSAnne9Text_61c2e + db "@" + +Func_f2588: + ld hl, SSAnne9Text_f258f + call PrintText + ret + +SSAnne9Text_f258f: + TX_FAR _SSAnne9Text_61c3d + db "@" + +Func_f2594: + ld hl, SSAnne9Text_f259b + call PrintText + ret + +SSAnne9Text_f259b: + TX_FAR _SSAnne9Text_61c4c + db "@" diff --git a/scripts/SSAnneCaptainsRoom.asm b/scripts/SSAnneCaptainsRoom.asm index de0272e4..94918118 100755 --- a/scripts/SSAnneCaptainsRoom.asm +++ b/scripts/SSAnneCaptainsRoom.asm @@ -3,7 +3,7 @@ SSAnneCaptainsRoom_Script: jp EnableAutoTextBoxDrawing SSAnne7Script_6189b: - CheckEvent EVENT_RUBBED_CAPTAINS_BACK + CheckEvent EVENT_GOT_HM01 ret nz ld hl, wd72d set 5, [hl] @@ -28,12 +28,12 @@ SSAnne7Text1: ld hl, ReceivedHM01Text call PrintText SetEvent EVENT_GOT_HM01 + ld hl, wd72d + res 5, [hl] jr .asm_0faf5 .BagFull ld hl, HM01NoRoomText call PrintText - ld hl, wd72d - set 5, [hl] jr .asm_0faf5 .asm_797c4 ld hl, SSAnne7Text_61932 @@ -45,13 +45,11 @@ SSAnne7RubText: TX_FAR _SSAnne7RubText TX_ASM ld a, [wAudioROMBank] - cp BANK(Audio3_UpdateMusic) + cp BANK(AudioEngine3) ld [wAudioSavedROMBank], a jr nz, .asm_61908 - ld a, $ff - ld [wNewSoundID], a - call PlaySound - ld a, Bank(Music_PkmnHealed) + call StopAllMusic + ld a, BANK(Music_PkmnHealed) ld [wAudioROMBank], a .asm_61908 ld a, MUSIC_PKMN_HEALED diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm index f3de556b..217001dd 100755 --- a/scripts/SafariZoneGate.asm +++ b/scripts/SafariZoneGate.asm @@ -2,7 +2,8 @@ SafariZoneGate_Script: call EnableAutoTextBoxDrawing ld hl, SafariZoneGate_ScriptPointers ld a, [wSafariZoneGateCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret SafariZoneGate_ScriptPointers: dw .SafariZoneEntranceScript0 @@ -25,7 +26,7 @@ SafariZoneGate_ScriptPointers: xor a ld [hJoyHeld], a ld a, SPRITE_FACING_RIGHT - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld a, [wCoordIndex] cp $1 jr z, .asm_7520f @@ -43,8 +44,8 @@ SafariZoneGate_ScriptPointers: ret .CoordsData_75221: - db $02,$03 - db $02,$04 + db $02, $03 + db $02, $04 db $FF .SafariZoneEntranceScript1 @@ -85,6 +86,8 @@ SafariZoneGate_ScriptPointers: call DisplayTextID xor a ld [wNumSafariBalls], a + ld [wSafariSteps], a + ld [wSafariSteps], a ; ????? ld a, D_DOWN ld c, $3 call SafariZoneEntranceAutoWalk @@ -143,84 +146,10 @@ SafariZoneGate_TextPointers: db "@" .SafariZoneEntranceText4 - TX_FAR SafariZoneEntranceText_9e6e4 TX_ASM - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .PleaseComeAgain - xor a - ld [hMoney], a - ld a, $05 - ld [hMoney + 1], a - ld a, $00 - ld [hMoney + 2], a - call HasEnoughMoney - jr nc, .success - ld hl, .NotEnoughMoneyText - call PrintText - jr .CantPayWalkDown - -.success - xor a - ld [wPriceTemp], a - ld a, $05 - ld [wPriceTemp + 1], a - ld a, $00 - ld [wPriceTemp + 2], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, 3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - ld hl, .MakePaymentText - call PrintText - ld a, 30 - ld [wNumSafariBalls], a - ld a, 502 / $100 - ld [wSafariSteps], a - ld a, 502 % $100 - ld [wSafariSteps + 1], a - ld a, D_UP - ld c, 3 - call SafariZoneEntranceAutoWalk - SetEvent EVENT_IN_SAFARI_ZONE - ResetEventReuseHL EVENT_SAFARI_GAME_OVER - ld a, 3 - ld [wSafariZoneGateCurScript], a - jr .done - -.PleaseComeAgain - ld hl, .PleaseComeAgainText - call PrintText -.CantPayWalkDown - ld a, D_DOWN - ld c, 1 - call SafariZoneEntranceAutoWalk - ld a, 4 - ld [wSafariZoneGateCurScript], a -.done + callab Func_f1f77 jp TextScriptEnd -.MakePaymentText - TX_FAR SafariZoneEntranceText_9e747 - TX_SFX_ITEM_1 - TX_FAR _SafariZoneEntranceText_75360 - db "@" - -.PleaseComeAgainText - TX_FAR _SafariZoneEntranceText_75365 - db "@" - -.NotEnoughMoneyText - TX_FAR _SafariZoneEntranceText_7536a - db "@" - .SafariZoneEntranceText5 TX_FAR SafariZoneEntranceText_9e814 TX_ASM @@ -231,7 +160,7 @@ SafariZoneGate_TextPointers: ld hl, .SafariZoneEntranceText_753bb call PrintText xor a - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld a, D_DOWN ld c, $3 call SafariZoneEntranceAutoWalk @@ -243,7 +172,7 @@ SafariZoneGate_TextPointers: ld hl, .SafariZoneEntranceText_753c0 call PrintText ld a, SPRITE_FACING_UP - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld a, D_UP ld c, $1 call SafariZoneEntranceAutoWalk @@ -268,26 +197,5 @@ SafariZoneGate_TextPointers: .SafariZoneEntranceText2 TX_ASM - ld hl, .FirstTimeQuestionText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - ld hl, .RegularText - jr nz, .Explanation - ld hl, .ExplanationText -.Explanation - call PrintText + callab Func_f203e jp TextScriptEnd - -.FirstTimeQuestionText - TX_FAR _SafariZoneEntranceText_753e6 - db "@" - -.ExplanationText - TX_FAR _SafariZoneEntranceText_753eb - db "@" - -.RegularText - TX_FAR _SafariZoneEntranceText_753f0 - db "@" diff --git a/scripts/SafariZoneGate2.asm b/scripts/SafariZoneGate2.asm new file mode 100755 index 00000000..a99bad6a --- /dev/null +++ b/scripts/SafariZoneGate2.asm @@ -0,0 +1,251 @@ +Func_f1f77: + ld hl, .WelcomeText + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .declined + ld hl, wPlayerMoney + ld a, [hli] + or [hl] + inc hl + or [hl] + jr nz, .has_positive_balance + call SafariZoneEntranceGetLowCostAdmissionText + jr c, .deny_entry + jr .poor_mans_discount + +.has_positive_balance + xor a + ld [hMoney], a + ld a, $5 + ld [hMoney + 1], a + ld a, $0 + ld [hMoney + 2], a + call HasEnoughMoney + jr nc, .has_enough_money + ld hl, .NotEnoughMoneyText + call PrintText + call SafariZoneEntranceCalculateLowCostAdmission + jr c, .deny_entry + jr .poor_mans_discount + +.has_enough_money + xor a + ld [wPriceTemp + 0], a + ld a, $5 + ld [wPriceTemp + 1], a + ld a, $0 + ld [wPriceTemp + 2], a + ld hl, wTrainerInfoTextBoxNextRowOffset + ld de, wPlayerMoney + 2 + ld c, 3 + predef SubBCDPredef + ld a, SFX_PURCHASE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + ld hl, .MakePaymentText + call PrintText + ld a, 30 + ld hl, 502 +.poor_mans_discount + ld [wNumSafariBalls], a + ld a, h + ld [wSafariSteps], a + ld a, l + ld [wSafariSteps + 1], a + ld a, D_UP + ld c, 3 + call SafariZoneEntranceStartSimulatingJoypadStates + SetEvent EVENT_IN_SAFARI_ZONE + ResetEventReuseHL EVENT_SAFARI_GAME_OVER + ld a, $3 + ld [wSafariZoneGateCurScript], a + jr .asm_f2024 +.declined: + ld hl, .PleaseComeAgainText + call PrintText +.deny_entry + ld a, D_DOWN + ld c, 1 + call SafariZoneEntranceStartSimulatingJoypadStates + ld a, $4 + ld [wSafariZoneGateCurScript], a +.asm_f2024 + ret + +.WelcomeText + TX_FAR SafariZoneEntranceText_9e6e4 + db "@" + +.MakePaymentText + TX_FAR SafariZoneEntranceText_9e747 + TX_SFX_ITEM_1 + TX_FAR _SafariZoneEntranceText_75360 + db "@" + +.PleaseComeAgainText + TX_FAR _SafariZoneEntranceText_75365 + db "@" + +.NotEnoughMoneyText + TX_FAR _SafariZoneEntranceText_7536a + db "@" + +Func_f203e: + ld hl, .FirstTimeQuestionText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, .RegularText + jr nz, .Explanation + ld hl, .ExplanationText +.Explanation + call PrintText + ret + +.FirstTimeQuestionText + TX_FAR _SafariZoneEntranceText_753e6 + db "@" + +.ExplanationText + TX_FAR _SafariZoneEntranceText_753eb + db "@" + +.RegularText + TX_FAR _SafariZoneEntranceText_753f0 + db "@" + +SafariZoneEntranceStartSimulatingJoypadStates: + push af + ld b, $0 + ld a, c + ld [wSimulatedJoypadStatesIndex], a + ld hl, wParentMenuItem + pop af + call FillMemory + jp StartSimulatingJoypadStates + +SafariZoneEntranceCalculateLowCostAdmission: + ld hl, wPlayerMoney + ld de, hMoney + ld bc, $3 + call CopyData + xor a + ld [hDivideBCDDivisor], a + ld [hDivideBCDDivisor + 1], a + ld a, 23 + ld [hDivideBCDDivisor + 2], a + predef DivideBCDPredef3 + ld a, [hDivideBCDQuotient + 2] + call SafariZoneEntranceConvertBCDtoNumber + push af + ld hl, wPlayerMoney + xor a + ld bc, $3 + call FillMemory + ld hl, SafariZoneEntranceText_f20c4 + call PrintText_NoCreatingTextBox + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + ld hl, SafariZoneEntranceText_f20c9 + call PrintText + pop af + inc a + jr z, .max_balls + cp 29 + jr c, .load_balls +.max_balls + ld a, 29 +.load_balls + ld hl, 502 + and a + ret + +SafariZoneEntranceText_f20c4: + TX_FAR _SafariZoneLowCostText1 + db "@" + +SafariZoneEntranceText_f20c9: + TX_FAR _SafariZoneLowCostText2 + db "@" + +SafariZoneEntranceGetLowCostAdmissionText: + ld hl, wSafariSteps + ld a, [hl] + push af + inc [hl] + ld e, a + ld d, $0 + ld hl, Pointers_f2100 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + pop af + cp $3 + jr z, .give_one_ball + scf + ret + +.give_one_ball + ld hl, SafariZoneEntranceText_f20f6 + call PrintText_NoCreatingTextBox + ld a, $1 + ld hl, 502 + and a + ret + +SafariZoneEntranceText_f20f6: + TX_FAR _SafariZoneLowCostText3 + TX_SFX_ITEM_1 + TX_FAR _SafariZoneLowCostText4 + db "@" + +Pointers_f2100: + dw SafariZoneEntranceText_f210a + dw SafariZoneEntranceText_f210f + dw SafariZoneEntranceText_f2114 + dw SafariZoneEntranceText_f2119 + dw SafariZoneEntranceText_f2119 + +SafariZoneEntranceText_f210a: + TX_FAR _SafariZoneLowCostText5 + db "@" + +SafariZoneEntranceText_f210f: + TX_FAR _SafariZoneLowCostText6 + db "@" + +SafariZoneEntranceText_f2114: + TX_FAR _SafariZoneLowCostText7 + db "@" + +SafariZoneEntranceText_f2119: + TX_FAR _SafariZoneLowCostText8 + db "@" + +SafariZoneEntranceConvertBCDtoNumber: + push hl + ld c, a + and $f + ld l, a + ld h, $0 + ld a, c + and $f0 + swap a + ld bc, 10 + call AddNTimes + ld a, l + pop hl + ret diff --git a/scripts/SaffronPokecenter.asm b/scripts/SaffronPokecenter.asm index a1d73628..435367ea 100755 --- a/scripts/SaffronPokecenter.asm +++ b/scripts/SaffronPokecenter.asm @@ -7,6 +7,7 @@ SaffronPokecenter_TextPointers: dw SaffronPokecenterText2 dw SaffronPokecenterText3 dw SaffronTradeNurseText + dw SaffronPokecenterText5 SaffronHealNurseText: TX_POKECENTER_NURSE @@ -21,3 +22,8 @@ SaffronPokecenterText3: SaffronTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +SaffronPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/SeafoamIslandsB4F.asm b/scripts/SeafoamIslandsB4F.asm index d08628d0..1383a561 100755 --- a/scripts/SeafoamIslandsB4F.asm +++ b/scripts/SeafoamIslandsB4F.asm @@ -6,8 +6,9 @@ SeafoamIslandsB4F_Script: SeafoamIslands5Script_467a5: xor a - ld [wSeafoamIslandsB4FCurScript], a ld [wJoyIgnore], a + ld [wSeafoamIslandsB4FCurScript], a + ld [wCurMapScript], a ret SeafoamIslandsB4F_ScriptPointers: diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm index 483082a1..e58dbebe 100755 --- a/scripts/SilphCo11F.asm +++ b/scripts/SilphCo11F.asm @@ -1,5 +1,5 @@ SilphCo11F_Script: - call SilphCo11Script_62110 + call SilphCo11Script_62127 call EnableAutoTextBoxDrawing ld hl, SilphCo11TrainerHeader0 ld de, SilphCo11F_ScriptPointers @@ -8,26 +8,27 @@ SilphCo11F_Script: ld [wSilphCo11FCurScript], a ret -SilphCo11Script_62110: +SilphCo11Script_62127: ld hl, wCurrentMapScriptFlags bit 5, [hl] res 5, [hl] ret z ld hl, SilphCo11GateCoords - call SilphCo11Script_62137 - call SilphCo11Script_62163 + call SilphCo11Script_6214f + call SilphCo11Script_6217b CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret nz ld a, $20 ld [wNewTileBlockID], a lb bc, 6, 3 - predef_jump ReplaceTileBlock + predef ReplaceTileBlock + ret SilphCo11GateCoords: db $06,$03 db $FF -SilphCo11Script_62137: +SilphCo11Script_6214f: push hl ld hl, wCardKeyDoorY ld a, [hli] @@ -63,93 +64,17 @@ SilphCo11Script_62137: ld [$ffe0], a ret -SilphCo11Script_62163: +SilphCo11Script_6217b: ld a, [$ffe0] and a ret z SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret -SilphCo11Script_6216d: - ld hl, MissableObjectIDs_6219b -.asm_62170 - ld a, [hli] - cp $ff - jr z, .asm_62181 - push hl - ld [wMissableObjectIndex], a - predef HideObject - pop hl - jr .asm_62170 -.asm_62181 - ld hl, MissableObjectIDs_62194 -.asm_62184 - ld a, [hli] - cp $ff - ret z - push hl - ld [wMissableObjectIndex], a - predef ShowObject - pop hl - jr .asm_62184 - -MissableObjectIDs_62194: - db HS_SAFFRON_CITY_8 - db HS_SAFFRON_CITY_9 - db HS_SAFFRON_CITY_A - db HS_SAFFRON_CITY_B - db HS_SAFFRON_CITY_C - db HS_SAFFRON_CITY_D - db $FF - -MissableObjectIDs_6219b: - db HS_SAFFRON_CITY_1 - db HS_SAFFRON_CITY_2 - db HS_SAFFRON_CITY_3 - db HS_SAFFRON_CITY_4 - db HS_SAFFRON_CITY_5 - db HS_SAFFRON_CITY_6 - db HS_SAFFRON_CITY_7 - db HS_SAFFRON_CITY_E - db HS_SAFFRON_CITY_F - db HS_SILPH_CO_2F_2 - db HS_SILPH_CO_2F_3 - db HS_SILPH_CO_2F_4 - db HS_SILPH_CO_2F_5 - db HS_SILPH_CO_3F_1 - db HS_SILPH_CO_3F_2 - db HS_SILPH_CO_4F_1 - db HS_SILPH_CO_4F_2 - db HS_SILPH_CO_4F_3 - db HS_SILPH_CO_5F_1 - db HS_SILPH_CO_5F_2 - db HS_SILPH_CO_5F_3 - db HS_SILPH_CO_5F_4 - db HS_SILPH_CO_6F_1 - db HS_SILPH_CO_6F_2 - db HS_SILPH_CO_6F_3 - db HS_SILPH_CO_7F_1 - db HS_SILPH_CO_7F_2 - db HS_SILPH_CO_7F_3 - db HS_SILPH_CO_7F_4 - db HS_SILPH_CO_8F_1 - db HS_SILPH_CO_8F_2 - db HS_SILPH_CO_8F_3 - db HS_SILPH_CO_9F_1 - db HS_SILPH_CO_9F_2 - db HS_SILPH_CO_9F_3 - db HS_SILPH_CO_10F_1 - db HS_SILPH_CO_10F_2 - db HS_SILPH_CO_11F_1 - db HS_SILPH_CO_11F_2 - db HS_SILPH_CO_11F_3 - db $FF - -SilphCo11Script_621c4: +SilphCo11Script_62185: xor a ld [wJoyIgnore], a - -SilphCo11Script_621c8: +SilphCo11Script_62189: ld [wSilphCo11FCurScript], a ld [wCurMapScript], a ret @@ -161,10 +86,26 @@ SilphCo11F_ScriptPointers: dw SilphCo11Script3 dw SilphCo11Script4 dw SilphCo11Script5 + dw SilphCo11Script6 + dw SilphCo11Script7 + dw SilphCo11Script8 + dw SilphCo11Script9 + dw SilphCo11Script10 + dw SilphCo11Script11 + dw SilphCo11Script12 + dw SilphCo11Script13 + dw SilphCo11Script14 SilphCo11Script0: - CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + call z, SilphCo11Script_6229c + CheckEvent EVENT_782 ret nz + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + call z, SilphCo11Script_621c5 + ret + +SilphCo11Script_621c5: ld hl, CoordsData_62211 call ArePlayerCoordsInArray jp nc, CheckFightingMapTrainers @@ -182,8 +123,9 @@ SilphCo11Script0: call SetSpriteMovementBytesToFF ld de, MovementData_62216 call MoveSprite - ld a, $3 - jp SilphCo11Script_621c8 + ld a, $4 + call SilphCo11Script_62189 + ret CoordsData_62211: db $0D,$06 @@ -196,18 +138,18 @@ MovementData_62216: db NPC_MOVEMENT_DOWN db $FF -SilphCo11Script_6221a: +SilphCo11Script_621ff: ld [wPlayerMovingDirection], a - ld a, $3 - ld [H_SPRITEINDEX], a ld a, b - ld [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + ld [wSpriteStateData1 + 3 * $10 + 9], a + ld a, $2 + ld [wSpriteStateData1 + 3 * $10 + 1], a + ret -SilphCo11Script5: +SilphCo11Script3: ld a, [wIsInBattle] cp $ff - jp z, SilphCo11Script_621c4 + jp z, SilphCo11Script_62185 ld a, [wcf0d] cp $1 jr z, .asm_6223c @@ -218,23 +160,23 @@ SilphCo11Script5: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62240 - call SilphCo11Script_6221a + call SilphCo11Script_621ff ld a, $f0 ld [wJoyIgnore], a - ld a, $6 + ld a, $7 ld [hSpriteIndexOrTextID], a call DisplayTextID call GBFadeOutToBlack - call SilphCo11Script_6216d + callba Func_f25a0 call UpdateSprites call Delay3 call GBFadeInFromBlack SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI xor a ld [wJoyIgnore], a - jp SilphCo11Script_621c8 + jp SilphCo11Script_62189 -SilphCo11Script3: +SilphCo11Script4: ld a, [wd730] bit 0, a ret nz @@ -251,26 +193,275 @@ SilphCo11Script3: ld a, PLAYER_DIR_UP ld b, SPRITE_FACING_DOWN .asm_62288 - call SilphCo11Script_6221a + call SilphCo11Script_621ff call Delay3 - ld a, $4 - jp SilphCo11Script_621c8 - -SilphCo11Script4: + xor a + ld [wJoyIgnore], a ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, SilphCo10Text_62330 - ld de, SilphCo10Text_62330 + ld hl, SilphCo10Text_62528 + ld de, SilphCo10Text_62528 call SaveEndBattleTextPointers ld a, [H_SPRITEINDEX] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters + ld a, $3 + jp SilphCo11Script_62189 + +SilphCo11Script_6229c: + ld a, [wYCoord] + cp $3 + ret nz + ld a, [wXCoord] + cp $4 + ret nc + ResetEvents EVENT_780, EVENT_781 + ld a, [wXCoord] + cp $3 + jr z, .asm_622c3 + SetEventReuseHL EVENT_780 + ld a, [wXCoord] + cp $2 + jr z, .asm_622c3 + ResetEventReuseHL EVENT_780 + SetEventReuseHL EVENT_781 +.asm_622c3 + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ld [hJoyHeld], a + ld a, $fc + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $ff ld [wJoyIgnore], a + SetEvent EVENT_782 ld a, $5 - jp SilphCo11Script_621c8 + call SilphCo11Script_62189 + ret + +SilphCo11MovementData_622f5: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_622fb: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62300: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62305: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_6230b: + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62311: + db $5 + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11Script5: + ld de, SilphCo11MovementData_622f5 + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6232d + ld de, SilphCo11MovementData_62300 + cp $1 + jr z, .asm_6232d + ld de, SilphCo11MovementData_6230b +.asm_6232d + ld a, $4 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call SilphCo11Script_62189 + ret + +SilphCo11Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +SilphCo11Script7: + ld a, $2 + ld [wSpriteStateData1 + 4 * $10 + 1], a + ld hl, wSpriteStateData1 + 4 * $10 + 9 + ld [hl], SPRITE_FACING_RIGHT + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6235e + ld [hl], SPRITE_FACING_UP +.asm_6235e + call Delay3 + ld a, $fc + ld [wJoyIgnore], a +SilphCo11Script8: + ld de, SilphCo11MovementData_622fb + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6237b + ld de, SilphCo11MovementData_62305 + cp $1 + jr z, .asm_6237b + ld de, SilphCo11MovementData_62311 +.asm_6237b + ld a, $6 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $9 + call SilphCo11Script_62189 + ret + +SilphCo11Script9: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz + ld a, $fc + ld [wJoyIgnore], a +SilphCo11Script10: + ld a, $2 + ld [wSpriteStateData1 + 6 * $10 + 1], a + ld hl, wSpriteStateData1 + 6 * $10 + 9 + ld [hl], SPRITE_FACING_UP + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_623b1 + ld [hl], SPRITE_FACING_LEFT +.asm_623b1 + call Delay3 + ld a, $9 + ld [hSpriteIndexOrTextID], a + call DisplayTextID +SilphCo11Script11: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo11Text_624c2 + ld de, SilphCo11Text_624c2 + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2d + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + ld a, $c + call SilphCo11Script_62189 + ret + +SilphCo11Script12: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo11Script_62185 + ld a, $2 + ld [wSpriteStateData1 + 4 * $10 + 1], a + ld [wSpriteStateData1 + 6 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 4 * $10 + 9], a + ld [wSpriteStateData1 + 6 * $10 + 9], a + ld a, $fc + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $a + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $d + call SilphCo11Script_62189 + ret + +SilphCo11Script13: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_SILPH_CO_11F_JAMES + call SilphCo11Script_6246d + ld a, HS_SILPH_CO_11F_JESSIE + call SilphCo11Script_6246d + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $e + call SilphCo11Script_62189 + ret + +SilphCo11Script14: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + ResetEvent EVENT_782 + SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + ld a, $0 + call SilphCo11Script_62189 + ret + +SilphCo11Script_6245e: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +SilphCo11Script_6246d: + ld [wMissableObjectIndex], a + predef HideObject + ret SilphCo11F_TextPointers: dw SilphCo11Text1 @@ -279,64 +470,93 @@ SilphCo11F_TextPointers: dw SilphCo11Text4 dw SilphCo11Text5 dw SilphCo11Text6 + dw SilphCo11Text7 + dw SilphCo11Text8 + dw SilphCo11Text9 + dw SilphCo11Text10 SilphCo11TrainerHeader0: - dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_0 - db ($4 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_0 - dw SilphCo11BattleText1 ; TextBeforeBattle - dw SilphCo11AfterBattleText1 ; TextAfterBattle - dw SilphCo11EndBattleText1 ; TextEndBattle - dw SilphCo11EndBattleText1 ; TextEndBattle - -SilphCo11TrainerHeader1: dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_1 - db ($3 << 4) ; trainer's view range + db ($3 << 4) dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_1 - dw SilphCo11BattleText2 ; TextBeforeBattle - dw SilphCo11AfterBattleText2 ; TextAfterBattle - dw SilphCo11EndBattleText2 ; TextEndBattle - dw SilphCo11EndBattleText2 ; TextEndBattle + dw SilphCo11Trainer1BattleText + dw SilphCo11Trainer1AfterBattleText + dw SilphCo11Trainer1EndBattleText + dw SilphCo11Trainer1EndBattleText - db $ff + db $ff ; no more trainers + +SilphCo11Text4: +SilphCo11Text6: +SilphCo11Text8: + TX_FAR _SilphCoJessieJamesText1 + TX_ASM + ld c, 10 + call DelayFrames + ld a, $4 + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +SilphCo11Text9: + TX_FAR _SilphCoJessieJamesText2 + db "@" + +SilphCo11Text_624c2: + TX_FAR _SilphCoJessieJamesText3 + db "@" + +SilphCo11Text10: + TX_FAR _SilphCoJessieJamesText4 + TX_ASM + ld c, 64 + call DelayFrames + jp TextScriptEnd SilphCo11Text1: TX_ASM CheckEvent EVENT_GOT_MASTER_BALL - jp nz, .asm_62308 - ld hl, SilphCoPresidentText + jp nz, .asm_62500 + ld hl, SilphCo11Text_62509 call PrintText lb bc, MASTER_BALL, 1 call GiveItem - jr nc, .BagFull - ld hl, ReceivedSilphCoMasterBallText + jr nc, .asm_624f8 + ld hl, SilphCo11Text_6250e call PrintText SetEvent EVENT_GOT_MASTER_BALL - jr .asm_6230e -.BagFull - ld hl, SilphCoMasterBallNoRoomText + jr .asm_62506 +.asm_624f8 + ld hl, SilphCo11Text_62519 call PrintText - jr .asm_6230e -.asm_62308 - ld hl, SilphCo10Text_6231c + jr .asm_62506 + +.asm_62500 + ld hl, SilphCo11Text_62514 call PrintText -.asm_6230e +.asm_62506 jp TextScriptEnd -SilphCoPresidentText: +SilphCo11Text_62509: TX_FAR _SilphCoPresidentText db "@" -ReceivedSilphCoMasterBallText: +SilphCo11Text_6250e: TX_FAR _ReceivedSilphCoMasterBallText TX_SFX_KEY_ITEM db "@" -SilphCo10Text_6231c: +SilphCo11Text_62514: TX_FAR _SilphCo10Text_6231c db "@" -SilphCoMasterBallNoRoomText: +SilphCo11Text_62519: TX_FAR _SilphCoMasterBallNoRoomText db "@" @@ -348,58 +568,28 @@ SilphCo11Text3: TX_FAR _SilphCo11Text3 db "@" -SilphCo10Text_62330: +SilphCo10Text_62528: TX_FAR _SilphCo10Text_62330 db "@" -SilphCo11Text6: +SilphCo11Text7: TX_FAR _SilphCo10Text_62335 db "@" -SilphCo11Text4: - TX_ASM - ld hl, SilphCo11TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo11BattleText1: - TX_FAR _SilphCo11BattleText1 - db "@" - -SilphCo11EndBattleText1: - TX_FAR _SilphCo11EndBattleText1 - db "@" - -SilphCo11AfterBattleText1: - TX_FAR _SilphCo11AfterBattleText1 - db "@" - SilphCo11Text5: TX_ASM - ld hl, SilphCo11TrainerHeader1 + ld hl, SilphCo11TrainerHeader0 call TalkToTrainer jp TextScriptEnd -SilphCo11BattleText2: +SilphCo11Trainer1BattleText: TX_FAR _SilphCo11BattleText2 db "@" -SilphCo11EndBattleText2: +SilphCo11Trainer1EndBattleText: TX_FAR _SilphCo11EndBattleText2 db "@" -SilphCo11AfterBattleText2: +SilphCo11Trainer1AfterBattleText: TX_FAR _SilphCo11AfterBattleText2 db "@" - -SilphCo10Text_6236c: - TX_ASM - ld hl, SilphCo10Text_6237b - call PrintText - ld a, PORYGON - call DisplayPokedex - jp TextScriptEnd - -SilphCo10Text_6237b: - TX_FAR _SilphCo10Text_6237b - db "@" diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm new file mode 100755 index 00000000..bf575de5 --- /dev/null +++ b/scripts/SilphCo11F_2.asm @@ -0,0 +1,76 @@ +Func_f25a0: + ld hl, MissableObjects_f25ce +.asm_f25a3 + ld a, [hli] + cp $ff + jr z, .asm_f25b4 + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .asm_f25a3 + +.asm_f25b4 + ld hl, MissableObjects_f25c7 +.asm_f25b7 + ld a, [hli] + cp $ff + ret z + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .asm_f25b7 + +MissableObjects_f25c7: + db HS_SAFFRON_CITY_8 + db HS_SAFFRON_CITY_9 + db HS_SAFFRON_CITY_A + db HS_SAFFRON_CITY_B + db HS_SAFFRON_CITY_C + db HS_SAFFRON_CITY_D + db $FF + +MissableObjects_f25ce + db HS_SAFFRON_CITY_1 + db HS_SAFFRON_CITY_2 + db HS_SAFFRON_CITY_3 + db HS_SAFFRON_CITY_4 + db HS_SAFFRON_CITY_5 + db HS_SAFFRON_CITY_6 + db HS_SAFFRON_CITY_7 + db HS_SAFFRON_CITY_E + db HS_SAFFRON_CITY_F + db HS_SILPH_CO_2F_2 + db HS_SILPH_CO_2F_3 + db HS_SILPH_CO_2F_4 + db HS_SILPH_CO_2F_5 + db HS_SILPH_CO_3F_1 + db HS_SILPH_CO_3F_2 + db HS_SILPH_CO_4F_1 + db HS_SILPH_CO_4F_2 + db HS_SILPH_CO_4F_3 + db HS_SILPH_CO_5F_1 + db HS_SILPH_CO_5F_2 + db HS_SILPH_CO_5F_3 + db HS_SILPH_CO_5F_4 + db HS_SILPH_CO_6F_1 + db HS_SILPH_CO_6F_2 + db HS_SILPH_CO_6F_3 + db HS_SILPH_CO_7F_1 + db HS_SILPH_CO_7F_2 + db HS_SILPH_CO_7F_3 + db HS_SILPH_CO_7F_4 + db HS_SILPH_CO_8F_1 + db HS_SILPH_CO_8F_2 + db HS_SILPH_CO_8F_3 + db HS_SILPH_CO_9F_1 + db HS_SILPH_CO_9F_2 + db HS_SILPH_CO_9F_3 + db HS_SILPH_CO_10F_1 + db HS_SILPH_CO_10F_2 + db HS_SILPH_CO_11F_1 + db HS_SILPH_CO_11F_JAMES + db HS_SILPH_CO_11F_2 + db HS_SILPH_CO_11F_JESSIE + db $ff diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm index e7594663..a8dc032d 100755 --- a/scripts/SilphCo7F.asm +++ b/scripts/SilphCo7F.asm @@ -130,9 +130,7 @@ SilphCo7Script0: ld [wJoyIgnore], a ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -186,21 +184,11 @@ SilphCo7Script3: ld a, OPP_SONY2 ld [wCurOpponent], a ld a, [wRivalStarter] - cp STARTER2 - jr nz, .asm_51cb6 - ld a, $7 - jr .asm_51cc0 -.asm_51cb6 - cp STARTER3 - jr nz, .asm_51cbe - ld a, $8 - jr .asm_51cc0 -.asm_51cbe - ld a, $9 -.asm_51cc0 + add 4 ld [wTrainerNo], a ld a, $4 - jp SilphCo7Text_51c10 + call SilphCo7Text_51c10 + ret SilphCo7Script4: ld a, [wIsInBattle] @@ -219,9 +207,7 @@ SilphCo7Script4: ld a, $f ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld de, MovementData_51d1d ld a, [wcf0d] diff --git a/scripts/TradeCenter.asm b/scripts/TradeCenter.asm index ddb3061e..ddb3061e 100755..100644 --- a/scripts/TradeCenter.asm +++ b/scripts/TradeCenter.asm diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm index b253fea6..a9336970 100755 --- a/scripts/VermilionCity.asm +++ b/scripts/VermilionCity.asm @@ -1,5 +1,7 @@ VermilionCity_Script: call EnableAutoTextBoxDrawing + ld hl, wd492 + res 7, [hl] ld hl, wCurrentMapScriptFlags bit 6, [hl] res 6, [hl] @@ -11,11 +13,24 @@ VermilionCity_Script: call nz, .setFirstLockTrashCanIndex ld hl, VermilionCity_ScriptPointers ld a, [wVermilionCityCurScript] - jp CallFunctionInTable + call CallFunctionInTable + call .vermilionCityScript_19869 + ret + +.vermilionCityScript_19869 + CheckEventHL EVENT_152 + ret nz + CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER + ret z + SetEventReuseHL EVENT_152 + ret .setFirstLockTrashCanIndex call Random + ld a, [hRandomAdd] + ld b, a ld a, [hRandomSub] + adc b and $e ld [wFirstLockTrashCanIndex], a ret @@ -38,12 +53,12 @@ VermilionCity_ScriptPointers: dw VermilionCityScript4 VermilionCityScript0: - ld a, [wSpriteStateData1 + 9] + 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 ld [hJoyHeld], a ld [wcf0d], a @@ -67,6 +82,9 @@ VermilionCityScript0: ld [wVermilionCityCurScript], a ret +.return + ret + SSAnneTicketCheckCoords: db $1e,$12 ; y, x db $ff @@ -122,11 +140,12 @@ VermilionCity_TextPointers: dw VermilionCityText6 dw VermilionCityText7 dw VermilionCityText8 + dw VermilionCityText9 dw MartSignText dw PokeCenterSignText - dw VermilionCityText11 dw VermilionCityText12 dw VermilionCityText13 + dw VermilionCityText14 VermilionCityText1: TX_FAR _VermilionCityText1 @@ -157,7 +176,7 @@ VermilionCityText3: TX_ASM CheckEvent EVENT_SS_ANNE_LEFT jr nz, .shipHasDeparted - ld a, [wSpriteStateData1 + 9] + ld a, [wSpritePlayerStateData1FacingDirection] cp SPRITE_FACING_RIGHT jr z, .greetPlayer ld hl, .inFrontOfOrBehindGuardCoords @@ -225,33 +244,43 @@ VermilionCityText5: ld a, MACHOP call PlayCry call WaitForSoundToFinish - ld hl, VermilionCityText14 + ld hl, VermilionCityText15 ret -VermilionCityText14: - TX_FAR _VermilionCityText14 +VermilionCityText15: + TX_FAR _VermilionCityText15 db "@" VermilionCityText6: TX_FAR _VermilionCityText6 db "@" -VermilionCityText7: - TX_FAR _VermilionCityText7 - db "@" - VermilionCityText8: - TX_FAR _VermilionCityText8 - db "@" + TX_ASM + callba Func_f1a8a + jp TextScriptEnd -VermilionCityText11: - TX_FAR _VermilionCityText11 - db "@" +VermilionCityText9: + TX_ASM + callba Func_f1a96 + jp TextScriptEnd VermilionCityText12: - TX_FAR _VermilionCityText12 - db "@" + TX_ASM + callba Func_f1aa2 + jp TextScriptEnd VermilionCityText13: - TX_FAR _VermilionCityText13 - db "@" + TX_ASM + callba Func_f1aae + jp TextScriptEnd + +VermilionCityText14: + TX_ASM + callba Func_f1aba + jp TextScriptEnd + +VermilionCityText7: + TX_ASM + callba Func_f1a0f + jp TextScriptEnd diff --git a/scripts/VermilionCity2.asm b/scripts/VermilionCity2.asm new file mode 100755 index 00000000..eb7ea37a --- /dev/null +++ b/scripts/VermilionCity2.asm @@ -0,0 +1,111 @@ +Func_f1a0f: + CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + jr nz, .asm_f1a69 + ld a, [wBeatGymFlags] + bit 2, a ; THUNDERBADGE + jr nz, .asm_f1a24 + ld hl, OfficerJennyText1 + call PrintText + ret + +.asm_f1a24 + ld hl, OfficerJennyText2 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1a62 + ld a, SQUIRTLE + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, SQUIRTLE, 10 + call GivePokemon + ret nc + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OfficerJennyText3 + call PrintText + SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + ret + +.asm_f1a62 + ld hl, OfficerJennyText4 + call PrintText + ret + +.asm_f1a69 + ld hl, OfficerJennyText5 + call PrintText + ret + +OfficerJennyText1: + TX_FAR _OfficerJennyText1 + db "@" + +OfficerJennyText2: + TX_FAR _OfficerJennyText2 + db "@" + +OfficerJennyText3: + TX_FAR _OfficerJennyText3 + db $d + db "@" + +OfficerJennyText4: + TX_FAR _OfficerJennyText4 + db "@" + +OfficerJennyText5: + TX_FAR _OfficerJennyText5 + db "@" + +Func_f1a8a: + ld hl, VermilionCityText_f1a91 + call PrintText + ret + +VermilionCityText_f1a91: + TX_FAR _VermilionCityText8 + db "@" + +Func_f1a96: + ld hl, VermilionCityText_f1a9d + call PrintText + ret + +VermilionCityText_f1a9d: + TX_FAR _VermilionCityText9 + db "@" + +Func_f1aa2: + ld hl, VermilionCityText_f1aa9 + call PrintText + ret + +VermilionCityText_f1aa9: + TX_FAR _VermilionCityText12 + db "@" + +Func_f1aae: + ld hl, VermilionCityText_f1ab5 + call PrintText + ret + +VermilionCityText_f1ab5: + TX_FAR _VermilionCityText13 + db "@" + +Func_f1aba: + ld hl, VermilionCityText_f1ac1 + call PrintText + ret + +VermilionCityText_f1ac1: + TX_FAR _VermilionCityText14 + db "@" diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm index 65b66c52..f5807dd4 100755 --- a/scripts/VermilionDock.asm +++ b/scripts/VermilionDock.asm @@ -40,8 +40,7 @@ VermilionDock_1db9b: SetEventForceReuseHL EVENT_SS_ANNE_LEFT ld a, $ff ld [wJoyIgnore], a - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_Surfing) ld a, MUSIC_SURFING call PlayMusic @@ -63,6 +62,7 @@ VermilionDock_1db9b: ld [H_AUTOBGTRANSFERENABLED], a ld [wSSAnneSmokeDriftAmount], a ld [rOBP1], a + call UpdateGBCPal_OBP1 ld a, 88 ld [wSSAnneSmokeX], a ld hl, wMapViewVRAMPointer @@ -124,7 +124,7 @@ VermilionDock_1db9b: VermilionDock_AnimSmokePuffDriftRight: push bc push de - ld hl, wOAMBuffer + $11 + ld hl, wOAMBuffer + 4 * $4 + 1 ; x coord ld a, [wSSAnneSmokeDriftAmount] swap a ld c, a diff --git a/scripts/VermilionPokecenter.asm b/scripts/VermilionPokecenter.asm index 60b28c57..e470b028 100755 --- a/scripts/VermilionPokecenter.asm +++ b/scripts/VermilionPokecenter.asm @@ -7,6 +7,7 @@ VermilionPokecenter_TextPointers: dw VermilionPokecenterText2 dw VermilionPokecenterText3 dw VermilionTradeNurseText + dw VermilionPokecenterText5 VermilionHealNurseText: TX_POKECENTER_NURSE @@ -21,3 +22,8 @@ VermilionPokecenterText3: VermilionTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +VermilionPokecenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/VermilionTradeHouse.asm b/scripts/VermilionTradeHouse.asm index 828e3716..7f720364 100755 --- a/scripts/VermilionTradeHouse.asm +++ b/scripts/VermilionTradeHouse.asm @@ -5,8 +5,5 @@ VermilionTradeHouse_TextPointers: dw VermilionHouse3Text1 VermilionHouse3Text1: - TX_ASM - ld a, $4 - ld [wWhichTrade], a - predef DoInGameTradeDialogue - jp TextScriptEnd + TX_FAR TeachingHMsText + db "@" diff --git a/scripts/VictoryRoad1F.asm b/scripts/VictoryRoad1F.asm index 0a2588a7..07f203b1 100755 --- a/scripts/VictoryRoad1F.asm +++ b/scripts/VictoryRoad1F.asm @@ -29,6 +29,9 @@ VictoryRoad1Script0: ld hl, CoordsData_5da5c call CheckBoulderCoords jp nc, CheckFightingMapTrainers + ld a, [H_SPRITEINDEX] + cp $f + jp z, CheckFightingMapTrainers ld hl, wCurrentMapScriptFlags set 5, [hl] SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH diff --git a/scripts/VictoryRoad2F.asm b/scripts/VictoryRoad2F.asm index 9dfb05ed..a09e6f04 100755 --- a/scripts/VictoryRoad2F.asm +++ b/scripts/VictoryRoad2F.asm @@ -17,7 +17,6 @@ VictoryRoad2F_Script: VictoryRoad2Script_517c4: ResetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH - VictoryRoad2Script_517c9: CheckEvent EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1 jr z, .asm_517da @@ -31,7 +30,6 @@ VictoryRoad2Script_517c9: ret z ld a, $1d lb bc, 7, 11 - VictoryRoad2Script_517e2: ld [wNewTileBlockID], a predef ReplaceTileBlock @@ -46,6 +44,9 @@ VictoryRoad2Script0: ld hl, CoordsData_51816 call CheckBoulderCoords jp nc, CheckFightingMapTrainers + ld a, [hSpriteIndexOrTextID] + cp $f + jp z, CheckFightingMapTrainers EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1 ld a, [wCoordIndex] cp $2 @@ -132,10 +133,10 @@ MoltresTrainerHeader: dbEventFlagBit EVENT_BEAT_MOLTRES db ($0 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_MOLTRES - dw MoltresBattleText ; TextBeforeBattle - dw MoltresBattleText ; TextAfterBattle - dw MoltresBattleText ; TextEndBattle - dw MoltresBattleText ; TextEndBattle + dw MoltresBattleText ; TextBeforeBattle + dw MoltresBattleText ; TextAfterBattle + dw MoltresBattleText ; TextEndBattle + dw MoltresBattleText ; TextEndBattle db $ff diff --git a/scripts/VictoryRoad3F.asm b/scripts/VictoryRoad3F.asm index d145c4a1..dc7a2aac 100755 --- a/scripts/VictoryRoad3F.asm +++ b/scripts/VictoryRoad3F.asm @@ -36,6 +36,9 @@ VictoryRoad3Script0: ld a, [wCoordIndex] cp $1 jr nz, .asm_449dc + ld a, [hSpriteIndexOrTextID] + cp $f ; Pikachu + jp z, .asm_449fe ld hl, wCurrentMapScriptFlags set 5, [hl] SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1 diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm index 643431a4..6dc68d4f 100755 --- a/scripts/ViridianCity.asm +++ b/scripts/ViridianCity.asm @@ -2,19 +2,34 @@ ViridianCity_Script: call EnableAutoTextBoxDrawing ld hl, ViridianCity_ScriptPointers ld a, [wViridianCityCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret ViridianCity_ScriptPointers: dw ViridianCityScript0 dw ViridianCityScript1 dw ViridianCityScript2 dw ViridianCityScript3 + dw ViridianCityScript4 + dw ViridianCityScript5 + dw ViridianCityScript6 + dw ViridianCityScript7 + dw ViridianCityScript8 + dw ViridianCityScript9 + dw ViridianCityScript10 ViridianCityScript0: - call ViridianCityScript_1900b - jp ViridianCityScript_1903d + call ViridianCityScript_1905b + call ViridianCityScript_190ab + ret + +ViridianCityScript1: + call ViridianCityScript_19162 +ViridianCityScript2: + call ViridianCityScript_1905b + ret -ViridianCityScript_1900b: +ViridianCityScript_1905b: CheckEvent EVENT_VIRIDIAN_GYM_OPEN ret nz ld a, [wObtainedBadges] @@ -24,304 +39,325 @@ ViridianCityScript_1900b: ret .gymClosed ld a, [wYCoord] - cp $8 + cp 8 ret nz ld a, [wXCoord] - cp $20 + cp 32 ret nz - ld a, $e + ld a, $f ld [hSpriteIndexOrTextID], a call DisplayTextID + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld [wJoyIgnore], a ld [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + ld a, $6 ld [wViridianCityCurScript], a ret -ViridianCityScript_1903d: - CheckEvent EVENT_GOT_POKEDEX +ViridianCityScript6: + ld a, [wSimulatedJoypadStatesIndex] + and a ret nz + call Delay3 + ld a, $2 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript_190ab: ld a, [wYCoord] - cp $9 + cp 9 ret nz ld a, [wXCoord] - cp $13 + cp 19 ret nz ld a, $5 ld [hSpriteIndexOrTextID], a call DisplayTextID xor a ld [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + call ViridianCityScript_1914d + ld a, $5 ld [wViridianCityCurScript], a ret -ViridianCityScript1: - ld a, [wSpriteStateData1 + $34] - ld [$ffeb], a - ld a, [wSpriteStateData1 + $36] - ld [$ffec], a - ld a, [wSpriteStateData2 + $34] - ld [$ffed], a - ld a, [wSpriteStateData2 + $35] - ld [$ffee], a +ViridianCityScript3: + call ViridianCityScript_190ef + call ViridianCityScript_190db + ResetEvent EVENT_02F + ld a, $4 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript_190db: xor a ld [wListScrollOffset], a - - ; set up battle for Old Man ld a, BATTLE_TYPE_OLD_MAN ld [wBattleType], a ld a, 5 ld [wCurEnemyLVL], a - ld a, WEEDLE + ld a, RATTATA ld [wCurOpponent], a - ld a, $2 - ld [wViridianCityCurScript], a ret -ViridianCityScript2: - ld a, [$ffeb] - ld [wSpriteStateData1 + $34], a - ld a, [$ffec] - ld [wSpriteStateData1 + $36], a - ld a, [$ffed] - ld [wSpriteStateData2 + $34], a - ld a, [$ffee] - ld [wSpriteStateData2 + $35], a +ViridianCityScript_190ef: + ld a, [wSpriteStateData1 + 3 * $10 + 4] + ld [$ffeb], a + ld a, [wSpriteStateData1 + 3 * $10 + 6] + ld [$ffec], a + ld a, [wSpriteStateData2 + 3 * $10 + 4] + ld [$ffed], a + ld a, [wSpriteStateData2 + 3 * $10 + 5] + ld [$ffee], a + ret + +ViridianCityScript4: + call ViridianCityScript_1912a call UpdateSprites call Delay3 + SetEvent EVENT_02E xor a ld [wJoyIgnore], a - ld a, $f + ld a, $10 ld [hSpriteIndexOrTextID], a call DisplayTextID xor a ld [wBattleType], a ld [wJoyIgnore], a - ld a, $0 + ld a, $2 ld [wViridianCityCurScript], a ret -ViridianCityScript3: +ViridianCityScript_1912a: + ld a, [$ffeb] + ld [wSpriteStateData1 + 3 * $10 + 4], a + ld a, [$ffec] + ld [wSpriteStateData1 + 3 * $10 + 6], a + ld a, [$ffed] + ld [wSpriteStateData2 + 3 * $10 + 4], a + ld a, [$ffee] + ld [wSpriteStateData2 + 3 * $10 + 5], a + ret + +ViridianCityScript5: ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 - ld a, 0 + ld a, $0 ld [wViridianCityCurScript], a ret -ViridianCityScript_190cf: +ViridianCityScript_1914d: call StartSimulatingJoypadStates ld a, $1 ld [wSimulatedJoypadStatesIndex], a ld a, D_DOWN ld [wSimulatedJoypadStatesEnd], a xor a - ld [wSpriteStateData1 + 9], a + ld [wSpritePlayerStateData1FacingDirection], a ld [wJoyIgnore], a ret +ViridianCityScript_19162: + CheckEvent EVENT_02D + ret nz + ld a, [wYCoord] + cp 9 + ret nz + ld a, [wXCoord] + cp 19 + ret nz + ld a, $8 + ld [hSpriteIndexOrTextID], a + ld a, SPRITE_FACING_RIGHT + ld [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld a, $8 + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ret + +ViridianCityScript7: + call ViridianCityScript_190ef + call ViridianCityScript_190db + SetEvent EVENT_02F + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript8: + call ViridianCityScript_1912a + call UpdateSprites + call Delay3 + SetEvent EVENT_02D + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wBattleType], a + dec a + ld [wJoyIgnore], a + ld a, $9 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript9: + ld de, ViridianCityOldManMovementData2 + ld a, [wXCoord] + cp 19 + jr z, .asm_191e4 + callab Func_f1a01 + ld de, ViridianCityOldManMovementData1 +.asm_191e4 + ld a, $8 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $a + ld [wViridianCityCurScript], a + ret + +ViridianCityOldManMovementData1: + db NPC_MOVEMENT_RIGHT +ViridianCityOldManMovementData2: + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db $ff + +ViridianCityScript10: + ld a, [wd730] + bit 0, a + ret nz + ld a, $3 + ld [wMissableObjectIndex], a + predef HideObject + xor a + ld [wJoyIgnore], a + ld a, $2 + ld [wViridianCityCurScript], a + ret + ViridianCity_TextPointers: - dw ViridianCityText1 - dw ViridianCityText2 - dw ViridianCityText3 - dw ViridianCityText4 - dw ViridianCityText5 - dw ViridianCityText6 - dw ViridianCityText7 - dw ViridianCityText8 - dw ViridianCityText9 - dw ViridianCityText10 + dw ViridianCityText_0 + dw ViridianCityText_1 + dw ViridianCityText_2 + dw ViridianCityText_3 + dw ViridianCityText_4 + dw ViridianCityText_5 + dw ViridianCityText_6 + dw ViridianCityText_7 + dw ViridianCityText_8 + dw ViridianCityText_9 + dw ViridianCityText_10 dw MartSignText dw PokeCenterSignText - dw ViridianCityText13 - dw ViridianCityText14 - dw ViridianCityText15 - -ViridianCityText1: - TX_FAR _ViridianCityText1 - db "@" + dw ViridianCityText_11 + dw ViridianCityText_12 + dw ViridianCityText_13 -ViridianCityText2: +ViridianCityText_0: TX_ASM - ld a, [wObtainedBadges] - cp %01111111 - ld hl, ViridianCityText_19127 - jr z, .printAndDone - CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI - jr nz, .printAndDone - ld hl, ViridianCityText_19122 -.printAndDone - call PrintText + callba Func_f18bb jp TextScriptEnd -ViridianCityText_19122: - TX_FAR _ViridianCityText_19122 - db "@" - -ViridianCityText_19127: - TX_FAR _ViridianCityText_19127 - db "@" - -ViridianCityText3: +ViridianCityText_1: TX_ASM - ld hl, ViridianCityText_1914d - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .no - ld hl, ViridianCityText_19157 - call PrintText - jr .done -.no - ld hl, ViridianCityText_19152 - call PrintText -.done + callba Func_f18c7 jp TextScriptEnd -ViridianCityText_1914d: - TX_FAR _ViridianCityText_1914d - db "@" - -ViridianCityText_19152: - TX_FAR _ViridianCityText_19152 - db "@" - -ViridianCityText_19157: - TX_FAR _ViridianCityText_19157 - db "@" - -ViridianCityText4: +ViridianCityText_2: TX_ASM - CheckEvent EVENT_GOT_POKEDEX - jr nz, .gotPokedex - ld hl, ViridianCityText_19175 - call PrintText - jr .done -.gotPokedex - ld hl, ViridianCityText_1917a - call PrintText -.done + callba Func_f18e9 jp TextScriptEnd -ViridianCityText_19175: - TX_FAR _ViridianCityText_19175 - db "@" - -ViridianCityText_1917a: - TX_FAR _ViridianCityText_1917a - db "@" - -ViridianCityText5: +ViridianCityText_3: TX_ASM - ld hl, ViridianCityText_19191 - call PrintText - call ViridianCityScript_190cf - ld a, $3 - ld [wViridianCityCurScript], a + callba Func_f1911 jp TextScriptEnd -ViridianCityText_19191: - TX_FAR _ViridianCityText_19191 - db "@" - -ViridianCityText6: +ViridianCityText_4: TX_ASM - CheckEvent EVENT_GOT_TM42 - jr nz, .gotTm42 - ld hl, ViridianCityText_191ca - call PrintText - lb bc, TM_42, 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM42Text - call PrintText - SetEvent EVENT_GOT_TM42 - jr .done -.BagFull - ld hl, TM42NoRoomText - call PrintText - jr .done -.gotTm42 - ld hl, TM42Explanation - call PrintText -.done + callba Func_f192c jp TextScriptEnd -ViridianCityText_191ca: - TX_FAR _ViridianCityText_191ca - db "@" - -ReceivedTM42Text: - TX_FAR _ReceivedTM42Text - TX_SFX_ITEM_2 - db "@" +ViridianCityText_5: + TX_ASM + callba Func_f194a + jp TextScriptEnd -TM42Explanation: - TX_FAR _TM42Explanation - db "@" +ViridianCityText_6: + TX_ASM + callba Func_f198e + jp TextScriptEnd -TM42NoRoomText: - TX_FAR _TM42NoRoomText +ViridianCityText_13: + TX_FAR _ViridianCityText_19219 db "@" -ViridianCityText7: +ViridianCityText_7: TX_ASM - ld hl, ViridianCityText_1920a + CheckEvent EVENT_02D + jr nz, .asm_192a6 + ld hl, ViridianCityText_192af call PrintText ld c, 2 call DelayFrames - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr z, .hurry - ld hl, ViridianCityText_1920f - call PrintText - ld a, $1 + ld a, $7 ld [wViridianCityCurScript], a - jr .done -.hurry - ld hl, ViridianCityText_19214 + jr .asm_192ac + +.asm_192a6 + ld hl, ViridianCityText_192b4 call PrintText -.done +.asm_192ac jp TextScriptEnd -ViridianCityText_1920a: +ViridianCityText_192af: TX_FAR _ViridianCityText_1920a db "@" -ViridianCityText_1920f: - TX_FAR _ViridianCityText_1920f +ViridianCityText_192b4: + TX_FAR _OldManTextAfterBattle db "@" -ViridianCityText_19214: - TX_FAR _ViridianCityText_19214 - db "@" - -ViridianCityText15: - TX_FAR _ViridianCityText_19219 - db "@" - -ViridianCityText8: - TX_FAR _ViridianCityText8 - db "@" +ViridianCityText_8: + TX_ASM + callba Func_f19c5 + jp TextScriptEnd -ViridianCityText9: - TX_FAR _ViridianCityText9 - db "@" +ViridianCityText_9: + TX_ASM + callba Func_f19d1 + jp TextScriptEnd -ViridianCityText10: - TX_FAR _ViridianCityText10 - db "@" +ViridianCityText_10: + TX_ASM + callba Func_f19dd + jp TextScriptEnd -ViridianCityText13: - TX_FAR _ViridianCityText13 - db "@" +ViridianCityText_11: + TX_ASM + callba Func_f19e9 + jp TextScriptEnd -ViridianCityText14: - TX_FAR _ViridianCityText14 - db "@" +ViridianCityText_12: + TX_ASM + callba Func_f19f5 + jp TextScriptEnd diff --git a/scripts/ViridianCity2.asm b/scripts/ViridianCity2.asm new file mode 100755 index 00000000..ffaeb4e2 --- /dev/null +++ b/scripts/ViridianCity2.asm @@ -0,0 +1,215 @@ +Func_f18bb: + ld hl, ViridianCityText_f18c2 + call PrintText + ret + +ViridianCityText_f18c2: + TX_FAR _ViridianCityText1 + db "@" + +Func_f18c7: + ld hl, ViridianCityText_f18e4 + ld a, [wObtainedBadges] + cp %01111111 + jr z, .printAndDone + CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI + jr nz, .printAndDone + ld hl, ViridianCityText_f18df +.printAndDone + call PrintText + ret + +ViridianCityText_f18df: + TX_FAR _ViridianCityText_19122 + db "@" + +ViridianCityText_f18e4: + TX_FAR _ViridianCityText_19127 + db "@" + +Func_f18e9: + ld hl, ViridianCityText_f1902 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, ViridianCityText_f1907 + jr nz, .no + ld hl, ViridianCityText_f190c +.no + call PrintText + ret + +ViridianCityText_f1902: + TX_FAR _ViridianCityText_1914d + db "@" + +ViridianCityText_f1907: + TX_FAR _ViridianCityText_19152 + db "@" + +ViridianCityText_f190c: + TX_FAR _ViridianCityText_19157 + db "@" + +Func_f1911: + ld hl, ViridianCityText_f1927 + CheckEvent EVENT_GOT_POKEDEX + jr nz, .gotPokedex + ld hl, ViridianCityText_f1922 +.gotPokedex + call PrintText + ret + +ViridianCityText_f1922: + TX_FAR _ViridianCityText_19175 + db "@" + +ViridianCityText_f1927: + TX_FAR _ViridianCityText_1917a + db "@" + +Func_f192c: + ld hl, ViridianCityText_f1945 + call PrintText + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + ld a, $5 + ld [wViridianCityCurScript], a + ret + +ViridianCityText_f1945: + TX_FAR _ViridianCityText_19191 + db "@" + +Func_f194a: + CheckEvent EVENT_GOT_TM42 + jr nz, .gotTm42 + ld hl, ViridianCityText_f1979 + call PrintText + lb bc, TM_42, 1 + call GiveItem + jr nc, .BagFull + ld hl, ViridianCityText_f197e + call PrintText + SetEvent EVENT_GOT_TM42 + ret +.BagFull + ld hl, ViridianCityText_f1989 + call PrintText + ret +.gotTm42 + ld hl, ViridianCityText_f1984 + call PrintText + ret + +ViridianCityText_f1979: + TX_FAR _ViridianCityText_191ca + db "@" + +ViridianCityText_f197e: + TX_FAR _ReceivedTM42Text + TX_SFX_ITEM_2 + db "@" + +ViridianCityText_f1984: + TX_FAR _TM42Explanation + db "@" + +ViridianCityText_f1989: + TX_FAR _TM42NoRoomText + db "@" + +Func_f198e: + ld hl, ViridianCityText_f19b6 + call PrintText + ld c, 2 + call DelayFrames + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .hurry + ld hl, ViridianCityText_f19bb + call PrintText + ld a, $3 + ld [wViridianCityCurScript], a + jr .done +.hurry + ld hl, ViridianCityText_f19c0 + call PrintText +.done + ret + +ViridianCityText_f19b6: + TX_FAR _OldManAgainText1 + db "@" + +ViridianCityText_f19bb: + TX_FAR _OldManAgainText2 + db "@" + +ViridianCityText_f19c0: + TX_FAR _OldManAgainText3 + db "@" + +Func_f19c5: + ld hl, ViridianCityText_f19cc + call PrintText + ret + +ViridianCityText_f19cc: + TX_FAR _ViridianCityText8 + db "@" + +Func_f19d1: + ld hl, ViridianCityText_f19d8 + call PrintText + ret + +ViridianCityText_f19d8: + TX_FAR _ViridianCityText9 + db "@" + +Func_f19dd: + ld hl, ViridianCityText_f19e4 + call PrintText + ret + +ViridianCityText_f19e4: + TX_FAR _ViridianCityText10 + db "@" + +Func_f19e9: + ld hl, ViridianCityText_f19f0 + call PrintText + ret + +ViridianCityText_f19f0: + TX_FAR _ViridianCityText13 + db "@" + +Func_f19f5: + ld hl, ViridianCityText_f19fc + call PrintText + ret + +ViridianCityText_f19fc: + TX_FAR _ViridianCityText14 + db "@" + + +Func_f1a01: + ld hl, Data_f1a0a + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +Data_f1a0a: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/ViridianForest.asm b/scripts/ViridianForest.asm index acd26b8a..fb9a71e3 100755 --- a/scripts/ViridianForest.asm +++ b/scripts/ViridianForest.asm @@ -17,16 +17,18 @@ ViridianForest_TextPointers: dw ViridianForestText2 dw ViridianForestText3 dw ViridianForestText4 + dw ViridianForestText5 + dw ViridianForestText6 dw PickUpItemText dw PickUpItemText dw PickUpItemText - dw ViridianForestText8 - dw ViridianForestText9 dw ViridianForestText10 dw ViridianForestText11 dw ViridianForestText12 dw ViridianForestText13 dw ViridianForestText14 + dw ViridianForestText15 + dw ViridianForestText16 ViridianForestTrainerHeader0: dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0 @@ -55,6 +57,24 @@ ViridianForestTrainerHeader2: dw ViridianForestEndBattleText3 ; TextEndBattle dw ViridianForestEndBattleText3 ; TextEndBattle +ViridianForestTrainerHeader3: + dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3 + db ($0 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3 + dw ViridianForestBattleText4 ; TextBeforeBattle + dw ViridianForestAfterBattleText4 ; TextAfterBattle + dw ViridianForestEndBattleText4 ; TextEndBattle + dw ViridianForestEndBattleText4 ; TextEndBattle + +ViridianForestTrainerHeader4: + dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4 + db ($4 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4 + dw ViridianForestBattleText5 ; TextBeforeBattle + dw ViridianForestAfterBattleText5 ; TextAfterBattle + dw ViridianForestEndBattleText5 ; TextEndBattle + dw ViridianForestEndBattleText5 ; TextEndBattle + db $ff ViridianForestText1: @@ -64,18 +84,27 @@ ViridianForestText1: ViridianForestText2: TX_ASM ld hl, ViridianForestTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText3: TX_ASM ld hl, ViridianForestTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText4: TX_ASM ld hl, ViridianForestTrainerHeader2 + jr ViridianForestTalkToTrainer + +ViridianForestText5: + TX_ASM + ld hl, ViridianForestTrainerHeader3 + jr ViridianForestTalkToTrainer + +ViridianForestText6: + TX_ASM + ld hl, ViridianForestTrainerHeader4 +ViridianForestTalkToTrainer: call TalkToTrainer jp TextScriptEnd @@ -115,30 +144,63 @@ ViridianForestAfterBattleText3: TX_FAR _ViridianFrstAfterBattleText3 db "@" -ViridianForestText8: - TX_FAR _ViridianForestText8 +ViridianForestBattleText4: + TX_FAR _ViridianForestBattleTextPikaGirl + db "@" + +ViridianForestEndBattleText4: + TX_FAR _ViridianForestEndBattleTextPikaGirl + db "@" + +ViridianForestAfterBattleText4: + TX_FAR _ViridianForestAfterBattleTextPikaGirl + db "@" + +ViridianForestBattleText5: + TX_FAR _ViridianForestBattleTextSamurai db "@" -ViridianForestText9: - TX_FAR _ViridianForestText9 +ViridianForestEndBattleText5: + TX_FAR _ViridianForestEndBattleTextSamurai + db "@" + +ViridianForestAfterBattleText5: + TX_FAR _ViridianForestAfterBattleTextSamurai db "@" ViridianForestText10: - TX_FAR _ViridianForestText10 + TX_FAR _ViridianForestText8 db "@" ViridianForestText11: - TX_FAR _ViridianForestText11 - db "@" + TX_ASM + ld hl, Func_f2528 + jp ViridianForestScript_6120d ViridianForestText12: - TX_FAR _ViridianForestText12 - db "@" + TX_ASM + ld hl, Func_f2534 + jp ViridianForestScript_6120d ViridianForestText13: - TX_FAR _ViridianForestText13 - db "@" + TX_ASM + ld hl, Func_f2540 + jp ViridianForestScript_6120d ViridianForestText14: - TX_FAR _ViridianForestText14 - db "@" + TX_ASM + ld hl, Func_f254c + jp ViridianForestScript_6120d + +ViridianForestText15: + TX_ASM + ld hl, Func_f2558 + jp ViridianForestScript_6120d + +ViridianForestText16: + TX_ASM + ld hl, Func_f2528 +ViridianForestScript_6120d + ld b, BANK(Func_f2528) + call Bankswitch + jp TextScriptEnd diff --git a/scripts/ViridianForest2.asm b/scripts/ViridianForest2.asm new file mode 100755 index 00000000..489db39c --- /dev/null +++ b/scripts/ViridianForest2.asm @@ -0,0 +1,53 @@ +Func_f2528: + ld hl, Text_f252f + call PrintText + ret + +Text_f252f: + TX_FAR _ViridianForestText9 + db "@" + +Func_f2534: + ld hl, Text_f253b + call PrintText + ret + +Text_f253b: + TX_FAR _ViridianForestText10 + db "@" + +Func_f2540: + ld hl, Text_f254a + call PrintText + ret + +Text_f254a: + TX_FAR _ViridianForestText11 + db "@" + +Func_f254c: + ld hl, Text_f2553 + call PrintText + ret + +Text_f2553: + TX_FAR _ViridianForestText12 + db "@" + +Func_f2558: + ld hl, Text_f255f + call PrintText + ret + +Text_f255f: + TX_FAR _ViridianForestText13 + db "@" + +Func_f2564: + ld hl, ViridianForestText_f256b + call PrintText + ret + +ViridianForestText_f256b: + TX_FAR _ViridianForestText14 + db "@" diff --git a/scripts/ViridianForestSouthGate.asm b/scripts/ViridianForestSouthGate.asm index 397f0eca..6eaaaace 100755 --- a/scripts/ViridianForestSouthGate.asm +++ b/scripts/ViridianForestSouthGate.asm @@ -1,5 +1,6 @@ ViridianForestSouthGate_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret ViridianForestSouthGate_TextPointers: dw ViridianForestEntranceText1 diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm index b90d331c..d1145778 100755 --- a/scripts/ViridianMart.asm +++ b/scripts/ViridianMart.asm @@ -3,7 +3,8 @@ ViridianMart_Script: call EnableAutoTextBoxDrawing ld hl, ViridianMart_ScriptPointers ld a, [wViridianMartCurScript] - jp CallFunctionInTable + call CallFunctionInTable + ret ViridianMartScript_1d47d: CheckEvent EVENT_OAK_GOT_PARCEL @@ -57,8 +58,19 @@ ViridianMartScript1: SetEvent EVENT_GOT_OAKS_PARCEL ld a, $2 ld [wViridianMartCurScript], a - ; fallthrough + ret + ViridianMartScript2: + CheckEventHL EVENT_02D + ret z + CheckAndSetEventReuseHL EVENT_02C + ret nz + ld a, HS_OLD_MAN + ld [wMissableObjectIndex], a + predef HideObject + ld a, HS_OLD_MAN_1 + ld [wMissableObjectIndex], a + predef ShowObject ret ViridianMart_TextPointers: diff --git a/scripts/ViridianPokecenter.asm b/scripts/ViridianPokecenter.asm index 14c25b9f..5f324bf7 100755 --- a/scripts/ViridianPokecenter.asm +++ b/scripts/ViridianPokecenter.asm @@ -7,6 +7,7 @@ ViridianPokecenter_TextPointers: dw ViridianPokeCenterText2 dw ViridianPokeCenterText3 dw ViridianTradeNurseText + dw ViridianPokeCenterText5 ViridianHealNurseText: TX_POKECENTER_NURSE @@ -21,3 +22,8 @@ ViridianPokeCenterText3: ViridianTradeNurseText: TX_CABLE_CLUB_RECEPTIONIST + +ViridianPokeCenterText5: + TX_ASM + callab PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse.asm b/scripts/ViridianSchoolHouse.asm index 2d9579b7..ccfda145 100755 --- a/scripts/ViridianSchoolHouse.asm +++ b/scripts/ViridianSchoolHouse.asm @@ -1,14 +1,22 @@ ViridianSchoolHouse_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret ViridianSchoolHouse_TextPointers: dw SchoolText1 dw SchoolText2 + dw SchoolText3 SchoolText1: TX_FAR _SchoolText1 db "@" SchoolText2: - TX_FAR _SchoolText2 - db "@" + TX_ASM + callba Func_f1c0f + jp TextScriptEnd + +SchoolText3: + TX_ASM + callba Func_f1c03 + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse2.asm b/scripts/ViridianSchoolHouse2.asm new file mode 100755 index 00000000..677a43ec --- /dev/null +++ b/scripts/ViridianSchoolHouse2.asm @@ -0,0 +1,17 @@ +Func_f1c03: + ld hl, SchoolText_f1c0a + call PrintText + ret + +SchoolText_f1c0a: + TX_FAR _SchoolText3 + db "@" + +Func_f1c0f: + ld hl, SchoolText_f1c16 + call PrintText + ret + +SchoolText_f1c16: + TX_FAR _SchoolText2 + db "@" |