diff options
Diffstat (limited to 'scripts')
114 files changed, 5369 insertions, 2455 deletions
diff --git a/scripts/AgathasRoom.asm b/scripts/AgathasRoom.asm index b0c53571..9aa957f5 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..2059f59d --- /dev/null +++ b/scripts/BeachHouse.asm @@ -0,0 +1,193 @@ +BeachHouse_Script: + call EnableAutoTextBoxDrawing + ret + +BeachHouse_TextPointers: + dw SurfinDudeText + dw BeachHousePikachuText + dw BeachHouseSign1Text + dw BeachHouseSign2Text + dw BeachHouseSign3Text + dw BeachHouseSign4Text + +SurfinDudeText: + text_asm + ld a, [wd472] + bit 6, a + jr nz, .next + ld hl, .SurfinDudeText4 + call PrintText + jr .done +.next + ld hl, wd492 + bit 0, [hl] + set 0, [hl] + jr nz, .next2 + ld hl, .SurfinDudeText1 + jr .next3 +.next2 + ld hl, .SurfinDudeText3 +.next3 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f226b + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + farcall SurfingPikachuMinigame + ld hl, wd492 + set 1, [hl] + jr .done +.asm_f226b + ld hl, .SurfinDudeText2 + call PrintText +.done + jp TextScriptEnd + +.SurfinDudeText1 + text_far _SurfinDudeText1 + text_end +.SurfinDudeText2 + text_far _SurfinDudeText2 + text_end +.SurfinDudeText3 + text_far _SurfinDudeText3 + text_end +.SurfinDudeText4 + text_far _SurfinDudeText4 + text_end + +BeachHousePikachuText: + text_asm + ld hl, .BeachHousePikachuText + call PrintText + ld a, PIKACHU + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +.BeachHousePikachuText + text_far _BeachHousePikachuText + text_end + +BeachHouseSign1Text: + text_asm + ld hl, .BeachHouseSign1Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign1Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign1Text1 + text_far _BeachHouseSign1Text1 + text_end +.BeachHouseSign1Text2 + text_far _BeachHouseSign1Text2 + text_end + +BeachHouseSign2Text: + text_asm + ld hl, .BeachHouseSign2Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign2Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign2Text1 + text_far _BeachHouseSign2Text1 + text_end +.BeachHouseSign2Text2 + text_far _BeachHouseSign2Text2 + text_end + +BeachHouseSign3Text: + text_asm + ld hl, .BeachHouseSign3Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign3Text1 +.next + call PrintText + jp TextScriptEnd + +.BeachHouseSign3Text1 + text_far _BeachHouseSign3Text1 + text_end +.BeachHouseSign3Text2 + text_far _BeachHouseSign3Text2 + text_end + +BeachHouseSign4Text: + text_asm + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, [wd472] + bit 6, a + jr z, .asm_f2369 + + ld hl, wd492 + bit 1, [hl] + jr z, .next2 + ld a, 0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a +.next2 + ld hl, .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 + callfar Printer_PrepareSurfingMinigameHighScoreTileMap + call WaitForTextScrollButtonPress + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld a, 1 + ld [wUpdateSpritesEnabled], a + jr .asm_f236f +.asm_f2369 + ld hl, .BeachHousePrinterText1 + call PrintText +.asm_f236f + jp TextScriptEnd + +.BeachHousePrinterText1 + text_far _BeachHousePrinterText1 + text_waitbutton + text_end +.BeachHousePrinterText2 + text_far _BeachHousePrinterText2 + text_waitbutton + text_end +.BeachHousePrinterText3 + text_far _BeachHousePrinterText3 + text_end +.BeachHousePrinterText4 + text_far _BeachHousePrinterText4 + text_end diff --git a/scripts/BeachHouse2.asm b/scripts/BeachHouse2.asm new file mode 100755 index 00000000..1cf570bc --- /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] + callfar PrintSurfingMinigameHighScore + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_f2412 + ldh a, [hOaksAideResult] + and a + jr nz, .asm_f2406 + ld hl, Text_f240c +.asm_f2406 + call PrintText + jp TextScriptEnd + +Text_f240c: + text_far _BeachHousePrinterText5 + text_waitbutton + text_end + +Text_f2412: + text_far _BeachHousePrinterText6 + text_waitbutton + text_end diff --git a/scripts/BikeShop.asm b/scripts/BikeShop.asm index 7b290f31..e4345e8e 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] hlcoord 0, 0 - ld b, $4 - ld c, $f + lb bc, 4, 15 call TextBoxBorder call UpdateSprites hlcoord 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 2085f417..8559c0b1 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 + callfar CheckPikachuFaintedOrStatused + jr c, .asm_1e0d2 + callfar Func_f24d5 +.asm_1e0d2 + xor a + ld [wJoyIgnore], a + ld a, $1 + ld [wBillsHouseCurScript], a ret BillsHouseScript1: + ret + +BillsHouseScript2: + ld a, $ff + ld [wJoyIgnore], a ld a, [wSpritePlayerStateData1FacingDirection] and a ; cp SPRITE_FACING_DOWN ld de, MovementData_1e79c jr nz, .notDown + call CheckPikachuFollowingPlayer + jr nz, .asm_1e0f8 + callfar Func_f250b +.asm_1e0f8 ld de, MovementData_1e7a0 .notDown ld a, $1 ldh [hSpriteIndex], a call MoveSprite - ld a, $2 + ld a, $3 ld [wBillsHouseCurScript], a ret @@ -44,25 +89,58 @@ MovementData_1e7a0: db NPC_MOVEMENT_UP db -1 ; end -BillsHouseScript2: +BillsHouseScript3: ld a, [wd730] bit 0, a ret nz ld a, HS_BILL_POKEMON ld [wMissableObjectIndex], a predef HideObject - SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR + call CheckPikachuFollowingPlayer + jr z, .asm_1e13e + ld hl, PikachuMovementData_1e14d + ld a, [wSpritePlayerStateData1FacingDirection] + and a ; cp SPRITE_FACING_DOWN + jr nz, .asm_1e133 + ld hl, PikachuMovementData_1e152 +.asm_1e133 + call ApplyPikachuMovementData + callfar InitializePikachuTextID +.asm_1e13e xor a ld [wJoyIgnore], a - ld a, $3 + SetEvent EVENT_BILL_SAID_USE_CELL_SEPARATOR + ld a, $4 ld [wBillsHouseCurScript], a ret -BillsHouseScript3: +PikachuMovementData_1e14d: + db $00 + db $1e + db $1e + db $1e + db $3f + +PikachuMovementData_1e152: + db $00 + db $1e + db $1f + db $1e + db $1e + db $20 + db $36 + db $3f + +BillsHouseScript4: CheckEvent EVENT_USED_CELL_SEPARATOR_ON_BILL ret z - ld a, $f0 + ld a, $fc ld [wJoyIgnore], a + ld a, $5 + ld [wBillsHouseCurScript], a + ret + +BillsHouseScript5: ld a, $2 ld [wSpriteIndex], a ld a, $c @@ -79,11 +157,30 @@ BillsHouseScript3: predef ShowObject ld c, 8 call DelayFrames + ld hl, wd472 + bit 7, [hl] + jr z, .asm_1e1c6 + call CheckPikachuFollowingPlayer + jr z, .asm_1e1c6 + ld a, $2 + ldh [hSpriteIndex], a + ld a, SPRITE_FACING_DOWN + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld hl, PikachuMovementData_1e1a9 + call ApplyPikachuMovementData + ld a, $f + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + callfar InitializePikachuTextID +.asm_1e1c6 ld a, $2 ldh [hSpriteIndex], a ld de, MovementData_1e807 call MoveSprite - ld a, $4 + ld a, $6 ld [wBillsHouseCurScript], a ret @@ -95,26 +192,67 @@ MovementData_1e807: db NPC_MOVEMENT_DOWN db -1 ; end -BillsHouseScript4: +PikachuMovementData_1e1a9: + db $00 + db $37 + db $3f + +BillsHouseScript6: ld a, [wd730] bit 0, a ret nz - xor a - ld [wJoyIgnore], a SetEvent EVENT_MET_BILL_2 ; this event seems redundant SetEvent EVENT_MET_BILL - ld a, $0 + ld a, $7 ld [wBillsHouseCurScript], a ret -BillsHouseScript5: - ld a, $4 +BillsHouseScript7: + xor a + ld [wPlayerMovingDirection], a + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld de, RLE_1e219 + ld hl, wSimulatedJoypadStatesEnd + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a + call StartSimulatingJoypadStates + ld a, $8 + ld [wBillsHouseCurScript], a + ret + +RLE_1e219: + db D_RIGHT, $3 + db $FF + +BillsHouseScript8: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + xor a + ld [wPlayerMovingDirection], a + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $2 + ldh [hSpriteIndex], a + ld a, SPRITE_FACING_DOWN + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + xor a + ld [wJoyIgnore], a + ld a, $2 ldh [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $0 + ld a, $9 ld [wBillsHouseCurScript], a ret +BillsHouseScript9: + ret + BillsHouse_TextPointers: dw BillsHouseText1 dw BillsHouseText2 @@ -122,93 +260,20 @@ BillsHouse_TextPointers: dw BillsHouseText4 BillsHouseText4: - script_bills_pc + text_far _BillsHouseDontLeaveText + text_end BillsHouseText1: text_asm - ld hl, BillsHouseText_1e865 - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_1e85a -.asm_1e84d - ld hl, BillsHouseText_1e86a - call PrintText - ld a, $1 - ld [wBillsHouseCurScript], a - jr .asm_1e862 -.asm_1e85a - ld hl, BillsHouseText_1e86f - call PrintText - jr .asm_1e84d -.asm_1e862 + farcall Func_f2418 jp TextScriptEnd -BillsHouseText_1e865: - text_far _BillsHouseText_1e865 - text_end - -BillsHouseText_1e86a: - text_far _BillsHouseText_1e86a - text_end - -BillsHouseText_1e86f: - text_far _BillsHouseText_1e86f - text_end - BillsHouseText2: text_asm - CheckEvent EVENT_GOT_SS_TICKET - jr nz, .asm_1e8a9 - ld hl, BillThankYouText - call PrintText - lb bc, S_S_TICKET, 1 - call GiveItem - jr nc, .BagFull - ld hl, SSTicketReceivedText - call PrintText - SetEvent EVENT_GOT_SS_TICKET - ld a, HS_CERULEAN_GUARD_1 - ld [wMissableObjectIndex], a - predef ShowObject - ld a, HS_CERULEAN_GUARD_2 - ld [wMissableObjectIndex], a - predef HideObject -.asm_1e8a9 - ld hl, BillsHouseText_1e8cb - call PrintText - jr .asm_1e8b7 -.BagFull - ld hl, SSTicketNoRoomText - call PrintText -.asm_1e8b7 + farcall Func_f244a jp TextScriptEnd -BillThankYouText: - text_far _BillThankYouText - text_end - -SSTicketReceivedText: - text_far _SSTicketReceivedText - sound_get_key_item - text_promptbutton - text_end - -SSTicketNoRoomText: - text_far _SSTicketNoRoomText - text_end - -BillsHouseText_1e8cb: - text_far _BillsHouseText_1e8cb - text_end - BillsHouseText3: text_asm - ld hl, BillsHouseText_1e8da - call PrintText + farcall Func_f24a2 jp TextScriptEnd - -BillsHouseText_1e8da: - text_far _BillsHouseText_1e8da - text_end diff --git a/scripts/BillsHouse2.asm b/scripts/BillsHouse2.asm new file mode 100755 index 00000000..b1c6e820 --- /dev/null +++ b/scripts/BillsHouse2.asm @@ -0,0 +1,158 @@ +Func_f2418:: + ld hl, BillsHouseText_f243b + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f2433 +.asm_f2427 + ld hl, BillsHouseText_f2440 + call PrintText + ld a, $2 + ld [wBillsHouseCurScript], a + ret + +.asm_f2433 + ld hl, BillsHouseText_f2445 + call PrintText + jr .asm_f2427 + +BillsHouseText_f243b: + text_far _BillsHouseText_1e865 + text_end + +BillsHouseText_f2440: + text_far _BillsHouseText_1e86a + text_end + +BillsHouseText_f2445: + text_far _BillsHouseText_1e86f + text_end + +Func_f244a:: + CheckEvent EVENT_GOT_SS_TICKET + jr nz, .asm_f247e + ld hl, BillsHouseText_f248c + call PrintText + lb bc, S_S_TICKET, 1 + call GiveItem + jr nc, .asm_f2485 + ld hl, BillsHouseText_f2491 + call PrintText + SetEvent EVENT_GOT_SS_TICKET + ld a, HS_CERULEAN_GUARD_1 + ld [wMissableObjectIndex], a + predef ShowObject + ld a, HS_CERULEAN_GUARD_2 + ld [wMissableObjectIndex], a + predef HideObject +.asm_f247e + ld hl, BillsHouseText_f249d + call PrintText + ret + +.asm_f2485 + ld hl, BillsHouseText_f2498 + call PrintText + ret + +BillsHouseText_f248c: + text_far _BillThankYouText + text_end + +BillsHouseText_f2491: + text_far _SSTicketReceivedText + sound_get_key_item + text_promptbutton + text_end + +BillsHouseText_f2498: + text_far _SSTicketNoRoomText + text_end + +BillsHouseText_f249d: + text_far _BillsHouseText_1e8cb + text_end + +Func_f24a2:: + ld hl, BillsHouseText_f24a9 + call PrintText + ret + +BillsHouseText_f24a9: + text_far _BillsHouseText_1e8da + text_end + +Func_f24ae: + ld a, [wCurMap] + cp BILLS_HOUSE + jr nz, .asm_f24d2 + call CheckPikachuFollowingPlayer + jr z, .asm_f24d2 + ld a, [wBillsHouseCurScript] + cp $5 + ld e, $1b + ret z + cp $0 + ld e, $17 + ret z + CheckEventHL EVENT_MET_BILL_2 + ld e, $20 + ret z + ld e, $1f + ret + +.asm_f24d2 + ld e, $ff + ret + +Func_f24d5:: + ld a, $ff + ld [wJoyIgnore], a + xor a + ld [wPlayerMovingDirection], a + call UpdateSprites + call UpdateSprites + ld hl, Data_f2505 + call ApplyPikachuMovementData + ld a, $f ; pikachu + ld [wEmotionBubbleSpriteIndex], a + ld a, QUESTION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + call DisablePikachuFollowingPlayer + callfar InitializePikachuTextID + ret + +Data_f2505: + db $00 + db $20 + db $20 + db $20 + db $1e + db $3f + +Func_f250b:: + ld hl, Data_f251c + ld b, SPRITE_FACING_UP + call TryApplyPikachuMovementData + ld hl, Data_f2521 + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +Data_f251c: + db $00 + db $1f + db $1d + db $38 + db $3f + +Data_f2521: + db $00 + db $1e + db $1f + db $1f + db $1d + db $38 + db $3f diff --git a/scripts/BluesHouse.asm b/scripts/BluesHouse.asm index 1ab0fd06..9d9bf33a 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 @@ -12,8 +13,6 @@ BluesHouseScript0: SetEvent EVENT_ENTERED_BLUES_HOUSE ld a, $1 ld [wBluesHouseCurScript], a - ret - BluesHouseScript1: ret diff --git a/scripts/BrunosRoom.asm b/scripts/BrunosRoom.asm index 578cbb98..e5ecc1af 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 bd0228d8..b6280980 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: text_end CeladonCityText10: - text_far _CeladonCityText10 - text_end + text_asm + farcall Func_f1ac6 + jp TextScriptEnd CeladonCityText11: text_far _CeladonCityText11 diff --git a/scripts/CeladonCity2.asm b/scripts/CeladonCity2.asm new file mode 100755 index 00000000..56824c9a --- /dev/null +++ b/scripts/CeladonCity2.asm @@ -0,0 +1,8 @@ +Func_f1ac6:: + ld hl, Text_f1acd + call PrintText + ret + +Text_f1acd: + text_far _CeladonCityText10 + text_end diff --git a/scripts/CeladonDiner.asm b/scripts/CeladonDiner.asm index e95035f0..b4936e75 100755 --- a/scripts/CeladonDiner.asm +++ b/scripts/CeladonDiner.asm @@ -27,40 +27,5 @@ CeladonDinerText4: CeladonDinerText5: text_asm - CheckEvent EVENT_GOT_COIN_CASE - jr nz, .got_item - ld hl, CeladonDinerText_491a7 - call PrintText - lb bc, COIN_CASE, 1 - call GiveItem - jr nc, .bag_full - SetEvent EVENT_GOT_COIN_CASE - ld hl, ReceivedCoinCaseText - call PrintText - jr .done -.bag_full - ld hl, CoinCaseNoRoomText - call PrintText - jr .done -.got_item - ld hl, CeladonDinerText_491b7 - call PrintText -.done + callfar Func_f1f31 jp TextScriptEnd - -CeladonDinerText_491a7: - text_far _CeladonDinerText_491a7 - text_end - -ReceivedCoinCaseText: - text_far _ReceivedCoinCaseText - sound_get_key_item - text_end - -CoinCaseNoRoomText: - text_far _CoinCaseNoRoomText - text_end - -CeladonDinerText_491b7: - text_far _CeladonDinerText_491b7 - text_end diff --git a/scripts/CeladonDiner2.asm b/scripts/CeladonDiner2.asm new file mode 100755 index 00000000..ceef9f52 --- /dev/null +++ b/scripts/CeladonDiner2.asm @@ -0,0 +1,38 @@ +Func_f1f31:: + CheckEvent EVENT_GOT_COIN_CASE + jr nz, .got_item + ld hl, CeladonDinerText_491a7 + call PrintText + lb bc, COIN_CASE, 1 + call GiveItem + jr nc, .bag_full + SetEvent EVENT_GOT_COIN_CASE + ld hl, ReceivedCoinCaseText + call PrintText + jr .done +.bag_full + ld hl, CoinCaseNoRoomText + call PrintText + jr .done +.got_item + ld hl, CeladonDinerText_491b7 + call PrintText +.done + ret + +CeladonDinerText_491a7: + text_far _CeladonDinerText_491a7 + text_end + +ReceivedCoinCaseText: + text_far _ReceivedCoinCaseText + sound_get_key_item + text_end + +CoinCaseNoRoomText: + text_far _CoinCaseNoRoomText + text_end + +CeladonDinerText_491b7: + text_far _CeladonDinerText_491b7 + text_end diff --git a/scripts/CeladonMansion1F.asm b/scripts/CeladonMansion1F.asm index fa901ff9..61d53da7 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_PlayCryScript: - call PlayCry - jp TextScriptEnd - CeladonMansion1Text1: text_far _CeladonMansion1Text1 text_asm ld a, MEOWTH - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1Text2: - text_far _CeladonMansion1Text2 - text_end + text_asm + farcall Func_f1e70 + ld a, [wPikachuHappiness] + cp 251 + jr c, .asm_485d9 + ld c, 50 + call DelayFrames + ldpikacry e, PikachuCry23 + callfar PlayPikachuSoundClip +.asm_485d9 + jp TextScriptEnd CeladonMansion1Text3: text_far _CeladonMansion1Text3 text_asm ld a, CLEFAIRY - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1Text4: text_far _CeladonMansion1Text4 text_asm ld a, NIDORAN_F - jp CeladonMansion1_PlayCryScript + call PlayCry + jp TextScriptEnd CeladonMansion1Text5: text_far _CeladonMansion1Text5 diff --git a/scripts/CeladonMansion1F_2.asm b/scripts/CeladonMansion1F_2.asm new file mode 100755 index 00000000..70bf6c88 --- /dev/null +++ b/scripts/CeladonMansion1F_2.asm @@ -0,0 +1,78 @@ +Func_f1e70:: + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeladonMansion1Text_f1e96 + call PrintText + callfar IsStarterPikachuInOurParty + ret nc + ld hl, CeladonMansionText_f1e9c + call PrintText + ld a, $0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call Func_f1ea2 + call PrintText + ret + +CeladonMansion1Text_f1e96: + text_far _CeladonMansion1Text2 + text_waitbutton + text_end + +CeladonMansionText_f1e9c: + text_far _CeladonMansion1Text6 + text_promptbutton + text_end + +Func_f1ea2: + ld hl, PikachuHappinessThresholds_f1eb9 +.asm_f1ea5 + ld a, [hli] + inc hl + and a + jr z, .asm_f1eb5 + ld b, a + ld a, [wPikachuHappiness] + cp b + jr c, .asm_f1eb5 + inc hl + inc hl + jr .asm_f1ea5 + +.asm_f1eb5 + ld a, [hli] + ld h, [hl] + ld l, a + ret + +PikachuHappinessThresholds_f1eb9: + dw 51, CeladonMansion1Text_f1ed5 + dw 101, CeladonMansion1Text_f1eda + dw 131, CeladonMansion1Text_f1edf + dw 161, CeladonMansion1Text_f1ee4 + dw 201, CeladonMansion1Text_f1ee9 + dw 255, CeladonMansion1Text_f1eee + dbbw 0, $ff, CeladonMansion1Text_f1eee + +CeladonMansion1Text_f1ed5: + text_far _CeladonMansion1Text7 + text_end + +CeladonMansion1Text_f1eda: + text_far _CeladonMansion1Text8 + text_end + +CeladonMansion1Text_f1edf: + text_far _CeladonMansion1Text9 + text_end + +CeladonMansion1Text_f1ee4: + text_far _CeladonMansion1Text10 + text_end + +CeladonMansion1Text_f1ee9: + text_far _CeladonMansion1Text11 + text_end + +CeladonMansion1Text_f1eee: + text_far _CeladonMansion1Text12 + text_end diff --git a/scripts/CeladonMansion3F.asm b/scripts/CeladonMansion3F.asm index f8972793..0cea70cc 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,29 +20,120 @@ CeladonMansion3F_TextPointers: dw GameFreakSignText ProgrammerText: + text_asm + call CeladonMansion3_PokedexCount + cp 150 + ld hl, CeladonMansion3Text_486f5 + jr nc, .print + ld hl, CeladonMansion3Text_486f0 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_486f0: text_far _ProgrammerText text_end +CeladonMansion3Text_486f5: + text_far _ProgrammerText2 + text_end + GraphicArtistText: + text_asm + call CeladonMansion3_PokedexCount + cp 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] + callfar PrintDiploma + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, CeladonMansion3Text_4876b + ldh a, [hCanceledPrinting] + and a + jr nz, .print + ld hl, CeladonMansion3Text_48766 + jr .print + +.declined_print + ld hl, CeladonMansion3Text_48761 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_48757: text_far _GraphicArtistText text_end +CeladonMansion3Text_4875c: + text_far _GraphicArtistText2 + text_end + +CeladonMansion3Text_48761: + text_far _GraphicArtistText3 + text_end + +CeladonMansion3Text_48766: + text_far _GraphicArtistText4 + text_end + +CeladonMansion3Text_4876b: + text_far _GraphicArtistText5 + text_end + WriterText: + text_asm + call CeladonMansion3_PokedexCount + cp 150 + ld hl, CeladonMansion3Text_48789 + jr nc, .print + ld hl, CeladonMansion3Text_48784 +.print + call PrintText + jp TextScriptEnd + +CeladonMansion3Text_48784: text_far _WriterText text_end +CeladonMansion3Text_48789: + text_far _WriterText2 + text_end + DirectorText: text_asm - ld hl, wPokedexOwned - ld b, wPokedexOwnedEnd - wPokedexOwned - call CountSetBits - ld a, [wNumSetBits] + call CeladonMansion3_PokedexCount + ; check pokédex cp NUM_POKEMON - 1 ; discount Mew jr nc, .completed_dex ld hl, .GameDesignerText jr .done .completed_dex ld hl, .CompletedDexText + call PrintText + call Delay3 + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .UnlockedDiplomaPrinting .done call PrintText jp TextScriptEnd @@ -52,18 +151,26 @@ DirectorText: ld [wDoNotWaitForButtonPressAfterDisplayingText], a jp TextScriptEnd -GameFreakPCText1: - text_far _CeladonMansion3Text5 +.UnlockedDiplomaPrinting + text_far _CompletedDexText2 text_end +GameFreakPCText1: + text_asm + farcall Func_f1ef3 + jp TextScriptEnd + GameFreakPCText2: - text_far _CeladonMansion3Text6 - text_end + text_asm + farcall Func_f1eff + jp TextScriptEnd GameFreakPCText3: - text_far _CeladonMansion3Text7 - text_end + text_asm + farcall Func_f1f0b + jp TextScriptEnd GameFreakSignText: - text_far _CeladonMansion3Text8 - text_end + text_asm + farcall Func_f1f17 + jp TextScriptEnd diff --git a/scripts/CeladonMansion3F_2.asm b/scripts/CeladonMansion3F_2.asm new file mode 100755 index 00000000..f0b7c395 --- /dev/null +++ b/scripts/CeladonMansion3F_2.asm @@ -0,0 +1,35 @@ +Func_f1ef3:: + ld hl, CeladonMansion3Text_f1efa + call PrintText + ret + +CeladonMansion3Text_f1efa: + text_far _CeladonMansion3Text5 + text_end + +Func_f1eff:: + ld hl, CeladonMansion3Text_f1f06 + call PrintText + ret + +CeladonMansion3Text_f1f06: + text_far _CeladonMansion3Text6 + text_end + +Func_f1f0b:: + ld hl, CeladonMansion3Text_f1f12 + call PrintText + ret + +CeladonMansion3Text_f1f12: + text_far _CeladonMansion3Text7 + text_end + +Func_f1f17:: + ld hl, CeladonMansion3Text_f1f1e + call PrintText + ret + +CeladonMansion3Text_f1f1e: + text_far _CeladonMansion3Text8 + text_end diff --git a/scripts/CeladonMansionRoof.asm b/scripts/CeladonMansionRoof.asm index 860fcbdf..47c093dd 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 bd564dcc..3b7e3914 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 dca3c796..54176e01 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 55081982..01ab73ce 100755 --- a/scripts/CeladonMart3F.asm +++ b/scripts/CeladonMart3F.asm @@ -22,42 +22,9 @@ CeladonMart3F_TextPointers: CeladonMart3Text1: text_asm - CheckEvent EVENT_GOT_TM18 - jr nz, .got_item - ld hl, TM18PreReceiveText - call PrintText - lb bc, TM_COUNTER, 1 - call GiveItem - jr nc, .bag_full - SetEvent EVENT_GOT_TM18 - ld hl, ReceivedTM18Text - jr .done -.bag_full - ld hl, TM18NoRoomText - jr .done -.got_item - ld hl, TM18ExplanationText -.done - call PrintText + callfar Func_f1e30 jp TextScriptEnd -TM18PreReceiveText: - text_far _TM18PreReceiveText - text_end - -ReceivedTM18Text: - text_far _ReceivedTM18Text - sound_get_item_1 - text_end - -TM18ExplanationText: - text_far _TM18ExplanationText - text_end - -TM18NoRoomText: - text_far _TM18NoRoomText - text_end - CeladonMart3Text2: text_far _CeladonMart3Text2 text_end diff --git a/scripts/CeladonMart3F_2.asm b/scripts/CeladonMart3F_2.asm new file mode 100755 index 00000000..239f84d1 --- /dev/null +++ b/scripts/CeladonMart3F_2.asm @@ -0,0 +1,36 @@ +Func_f1e30:: + CheckEvent EVENT_GOT_TM18 + jr nz, .got_item + ld hl, TM18PreReceiveText + call PrintText + lb bc, TM_COUNTER, 1 + call GiveItem + jr nc, .bag_full + SetEvent EVENT_GOT_TM18 + ld hl, ReceivedTM18Text + jr .done +.bag_full + ld hl, TM18NoRoomText + jr .done +.got_item + ld hl, TM18ExplanationText +.done + call PrintText + ret + +TM18PreReceiveText: + text_far _TM18PreReceiveText + text_end + +ReceivedTM18Text: + text_far _ReceivedTM18Text + sound_get_item_1 + text_end + +TM18ExplanationText: + text_far _TM18ExplanationText + text_end + +TM18NoRoomText: + text_far _TM18NoRoomText + text_end diff --git a/scripts/CeladonMart5F.asm b/scripts/CeladonMart5F.asm index 91748706..a6e97405 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 0f71aa51..1d39670d 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: - farjp RemoveItemByID + farcall RemoveItemByID + ret CeladonMartRoofText_484ee: text_far _CeladonMartRoofText_484ee diff --git a/scripts/CeladonPokecenter.asm b/scripts/CeladonPokecenter.asm index 0f28e1b2..febc21f8 100755 --- a/scripts/CeladonPokecenter.asm +++ b/scripts/CeladonPokecenter.asm @@ -7,6 +7,7 @@ CeladonPokecenter_TextPointers: dw CeladonPokecenterText2 dw CeladonPokecenterText3 dw CeladonTradeNurseText + dw CeladonPokecenterText5 CeladonTradeNurseText: script_cable_club_receptionist @@ -21,3 +22,8 @@ CeladonPokecenterText2: CeladonPokecenterText3: text_far _CeladonPokecenterText3 text_end + +CeladonPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanCave1F.asm b/scripts/CeruleanCave1F.asm index 6f5c7b13..e2803587 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 621815b0..a94a7fe3 100755 --- a/scripts/CeruleanCaveB1F.asm +++ b/scripts/CeruleanCaveB1F.asm @@ -16,6 +16,8 @@ CeruleanCaveB1F_TextPointers: dw MewtwoText dw PickUpItemText dw PickUpItemText + dw PickUpItemText + dw PickUpItemText MewtwoTrainerHeader: trainer EVENT_BEAT_MEWTWO, 0, MewtwoBattleText, MewtwoBattleText, MewtwoBattleText diff --git a/scripts/CeruleanCity.asm b/scripts/CeruleanCity.asm index 7505cb20..5a8ce978 100755 --- a/scripts/CeruleanCity.asm +++ b/scripts/CeruleanCity.asm @@ -35,10 +35,6 @@ CeruleanCityScript4: ret CeruleanCityScript0: -IF DEF(_DEBUG) - call DebugPressedOrHeldB - ret nz -ENDC CheckEvent EVENT_BEAT_CERULEAN_ROCKET_THIEF jr nz, .asm_194f7 ld hl, CeruleanCityCoords1 @@ -68,9 +64,7 @@ ENDC ld a, [wWalkBikeSurfState] and a jr z, .asm_19512 - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_19512 ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -140,23 +134,8 @@ CeruleanCityScript1: call SaveEndBattleTextPointers ld a, OPP_RIVAL1 ld [wCurOpponent], a - - ; select which team to use during the encounter - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle - ld a, $7 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $8 - jr .done -.Charmander - ld a, $9 -.done + ld a, 3 ld [wTrainerNo], a - xor a ldh [hJoyHeld], a call CeruleanCityScript_1955d @@ -175,9 +154,7 @@ CeruleanCityScript2: ld a, $1 ldh [hSpriteIndexOrTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, $1 ldh [hSpriteIndex], a diff --git a/scripts/CeruleanGym.asm b/scripts/CeruleanGym.asm index a6630cf8..13a00da2 100755 --- a/scripts/CeruleanGym.asm +++ b/scripts/CeruleanGym.asm @@ -143,8 +143,6 @@ CeruleanGymText7: CeruleanGymText_5c7d8: text_far _CeruleanGymText_5c7d8 - sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded - text_promptbutton text_end CeruleanGymText2: diff --git a/scripts/CeruleanPokecenter.asm b/scripts/CeruleanPokecenter.asm index 680640f4..3aa465ca 100755 --- a/scripts/CeruleanPokecenter.asm +++ b/scripts/CeruleanPokecenter.asm @@ -7,6 +7,7 @@ CeruleanPokecenter_TextPointers: dw CeruleanPokecenterText2 dw CeruleanPokecenterText3 dw CeruleanTradeNurseText + dw CeruleanPokecenterText5 CeruleanTradeNurseText: script_cable_club_receptionist @@ -21,3 +22,8 @@ CeruleanPokecenterText2: CeruleanPokecenterText3: text_far _CeruleanPokecenterText3 text_end + +CeruleanPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/CeruleanTradeHouse.asm b/scripts/CeruleanTradeHouse.asm index 66952cd4..a6820fdb 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: - text_far _CeruleanHouse1Text1 + text_asm + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN + jr nz, .asm_1cfbf + ld hl, CeruleanHouse1Text_1cfc8 + call PrintText + ld a, [wPikachuHappiness] + cp 147 + jr c, .asm_1cfb3 + ld hl, CeruleanHouse1Text_1cfce + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_1cfb6 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, BULBASAUR + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, BULBASAUR, 10 + call GivePokemon + jr nc, .asm_1cfb3 + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeruleanHouse1Text_1cfd3 + call PrintText + ld a, HS_CERULEAN_BULBASAUR + ld [wMissableObjectIndex], a + predef HideObject + SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN +.asm_1cfb3 + jp TextScriptEnd + +.asm_1cfb6 + ld hl, CeruleanHouse1Text_1cfdf + call PrintText + jp TextScriptEnd + +.asm_1cfbf + ld hl, CeruleanHouse1Text_1cfd9 + call PrintText + jp TextScriptEnd + +CeruleanHouse1Text_1cfc8: + text_far MelanieText1 + text_waitbutton + text_end + +CeruleanHouse1Text_1cfce: + text_far MelanieText2 + text_end + +CeruleanHouse1Text_1cfd3: + text_far MelanieText3 + text_waitbutton + text_end + +CeruleanHouse1Text_1cfd9: + text_far MelanieText4 + text_waitbutton + text_end + +CeruleanHouse1Text_1cfdf: + text_far MelanieText5 + text_waitbutton text_end CeruleanHouse1Text2: + text_far MelanieBulbasaurText + text_asm + ld a, BULBASAUR + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text3: + text_far MelanieOddishText + text_asm + ld a, ODDISH + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text4: + text_far MelanieSandshrewText text_asm - ld a, TRADE_FOR_LOLA - ld [wWhichTrade], a - predef DoInGameTradeDialogue + ld a, SANDSHREW + call PlayCry jp TextScriptEnd diff --git a/scripts/ChampionsRoom.asm b/scripts/ChampionsRoom.asm index 11f99ee1..d500e1d2 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 @@ -69,18 +70,7 @@ GaryScript2: ; select which team to use during the encounter ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotStarter2 - ld a, $1 - jr .saveTrainerId -.NotStarter2 - cp STARTER3 - jr nz, .NotStarter3 - ld a, $2 - jr .saveTrainerId -.NotStarter3 - ld a, $3 -.saveTrainerId + add $0 ; Wow GameFreak ld [wTrainerNo], a xor a diff --git a/scripts/CinnabarGym.asm b/scripts/CinnabarGym.asm index 5703bb1d..529b3be2 100755 --- a/scripts/CinnabarGym.asm +++ b/scripts/CinnabarGym.asm @@ -37,11 +37,14 @@ CinnabarGymScript_75792: ld [wOpponentAfterWrongAnswer], a ret -CinnabarGymScript_757a0: +CinnabarGymScript_74f48: ldh a, [hSpriteIndexOrTextID] ld [wTrainerHeaderFlagBit], a ret +CinnabarGymFlagAction: + predef_jump FlagActionPredef + CinnabarGym_ScriptPointers: dw CinnabarGymScript0 dw CinnabarGymScript1 @@ -57,12 +60,18 @@ CinnabarGymScript0: jr nz, .asm_757c3 ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a + ld hl, PikachuMovementData_74f97 + ld b, SPRITE_FACING_DOWN + call CinnabarGymScript_74fa3 ld de, 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 @@ -75,10 +84,39 @@ MovementData_757d7: db NPC_MOVEMENT_UP db -1 ; end +PikachuMovementData_74f97: + db $00 + db $20 + db $1e + db $35 + db $3f + MovementData_757da: db NPC_MOVEMENT_LEFT db -1 ; end +PikachuMovementData_74f9e: + db $00 + db $1d + db $1f + db $38 + db $3f + +CinnabarGymScript_74fa3: + ld a, [wd472] + bit 7, a + ret z + push hl + push bc + callfar GetPikachuFacingDirectionAndReturnToE + pop bc + pop hl + ld a, b + cp e + ret nz + call ApplyPikachuMovementData + ret + CinnabarGymScript1: ld a, [wd730] bit 0, a @@ -90,52 +128,74 @@ CinnabarGymScript1: ldh [hSpriteIndexOrTextID], a jp DisplayTextID -CinnabarGymFlagAction: - predef_jump FlagActionPredef - CinnabarGymScript2: + call CinnabarGymScript_753e9 ld a, [wIsInBattle] cp $ff jp z, CinnabarGymScript_75792 ld a, [wTrainerHeaderFlagBit] - ldh [hGymGateIndex], a - AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2 + sub 2 ld c, a ld b, FLAG_TEST - EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 + EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED call CinnabarGymFlagAction ld a, c and a - jr nz, .asm_7581b + jr nz, .asm_7500d + ld a, [wTrainerHeaderFlagBit] + cp 2 + jr z, .asm_7500d + ld c, 30 + call DelayFrames + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 call WaitForSoundToFinish ld a, SFX_GO_INSIDE call PlaySound call WaitForSoundToFinish -.asm_7581b + jr .asm_75013 +.asm_7500d + call CinnabarGymScript_75023 + call CinnabarGymScript_75041 +.asm_75013 + xor a + ld [wJoyIgnore], a + ld [wOpponentAfterWrongAnswer], a + ld a, $0 + ld [wCinnabarGymCurScript], a + ld [wCurMapScript], a + ret + +CinnabarGymScript_75023: ld a, [wTrainerHeaderFlagBit] ldh [hGymGateIndex], a - AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2 ld c, a ld b, FLAG_SET EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 call CinnabarGymFlagAction + ret + +CinnabarGymScript_75032: ld a, [wTrainerHeaderFlagBit] - sub $2 - AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0 + ldh [hGymGateIndex], a + ld c, a + ld b, FLAG_TEST + EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0 + call CinnabarGymFlagAction + ret + +CinnabarGymScript_75041: + ld a, [wTrainerHeaderFlagBit] + sub 2 ld c, a ld b, FLAG_SET EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED call CinnabarGymFlagAction call UpdateCinnabarGymGateTileBlocks - xor a - ld [wJoyIgnore], a - ld [wOpponentAfterWrongAnswer], a - ld a, $0 - ld [wCinnabarGymCurScript], a - ld [wCurMapScript], a ret CinnabarGymScript3: + call CinnabarGymScript_753e9 ld a, [wIsInBattle] cp $ff jp z, CinnabarGymScript_75792 @@ -186,7 +246,7 @@ CinnabarGym_TextPointers: dw ReceivedTM38Text dw TM38NoRoomText -CinnabarGymScript_758b7: +CinnabarGymScript_750c3: ldh a, [hSpriteIndexOrTextID] ld [wSpriteIndex], a call EngageMapTrainer @@ -227,7 +287,7 @@ CinnabarGymText1: call SaveEndBattleTextPointers ld a, $7 ld [wGymLeaderNo], a - jp CinnabarGymScript_758b7 + jp CinnabarGymScript_750c3 BlaineBattleText: text_far _BlaineBattleText @@ -259,7 +319,7 @@ TM38NoRoomText: CinnabarGymText2: text_asm - call CinnabarGymScript_757a0 + call CinnabarGymScript_74f48 CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0 jr nz, .asm_46bb4 ld hl, CinnabarGymText_7595f @@ -267,7 +327,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 @@ -287,16 +347,25 @@ CinnabarGymText_75969: CinnabarGymText3: text_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 @@ -315,16 +384,24 @@ CinnabarGymText_7599e: CinnabarGymText4: text_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 @@ -343,16 +420,24 @@ CinnabarGymText_759d3: CinnabarGymText5: text_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 @@ -371,15 +456,23 @@ CinnabarGymText_75a08: CinnabarGymText6: text_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 @@ -399,15 +492,23 @@ CinnabarGymText_75a3d: CinnabarGymText7: text_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 @@ -427,15 +528,23 @@ CinnabarGymText_75a72: CinnabarGymText8: text_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 @@ -455,20 +564,5 @@ CinnabarGymText_75aa7: CinnabarGymText9: text_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 + callfar Func_f2133 jp TextScriptEnd - -CinnabarGymText_75ac2: - text_far _CinnabarGymText_75ac2 - text_end - -CinnabarGymText_75ac7: - text_far _CinnabarGymText_75ac7 - text_end diff --git a/scripts/CinnabarGym3.asm b/scripts/CinnabarGym3.asm new file mode 100755 index 00000000..af3db510 --- /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: + text_far _CinnabarGymText_75ac2 + text_end + +CinnabarGymText_75ac7: + text_far _CinnabarGymText_75ac7 + text_end + +Func_f2150:: + ld hl, TextPointers_f215d + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp PrintText + +TextPointers_f215d: + dw CinnabarGymText_f2169 + dw CinnabarGymText_f216e + dw CinnabarGymText_f2173 + dw CinnabarGymText_f2178 + dw CinnabarGymText_f217d + dw CinnabarGymText_f2182 + +CinnabarGymText_f2169: + text_far _CinnabarGymText_1 + text_end + +CinnabarGymText_f216e: + text_far _CinnabarGymText_2 + text_end + +CinnabarGymText_f2173: + text_far _CinnabarGymText_3 + text_end + +CinnabarGymText_f2178: + text_far _CinnabarGymText_4 + text_end + +CinnabarGymText_f217d: + text_far _CinnabarGymText_5 + text_end + +CinnabarGymText_f2182: + text_far _CinnabarGymText_6 + text_end + +CinnabarGymText_f2187: + text_far _CinnabarGymText_7 ; unused + text_end diff --git a/scripts/CinnabarGym_2.asm b/scripts/CinnabarGym_2.asm new file mode 100755 index 00000000..4c296cf7 --- /dev/null +++ b/scripts/CinnabarGym_2.asm @@ -0,0 +1,18 @@ +CinnabarGymScript_753de: + callfar Func_f2150 + jp TextScriptEnd + +CinnabarGymScript_753e9: + push hl + ld hl, wd475 + bit 7, [hl] + res 7, [hl] + pop hl + ret + +CinnabarGymScript_753f3: + push hl + ld hl, wd475 + bit 7, [hl] + pop hl + ret diff --git a/scripts/CinnabarPokecenter.asm b/scripts/CinnabarPokecenter.asm index 9396f851..3a229ca3 100755 --- a/scripts/CinnabarPokecenter.asm +++ b/scripts/CinnabarPokecenter.asm @@ -7,6 +7,7 @@ CinnabarPokecenter_TextPointers: dw CinnabarPokecenterText2 dw CinnabarPokecenterText3 dw CinnabarTradeNurseText + dw CinnabarPokecenterText5 CinnabarHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ CinnabarPokecenterText3: CinnabarTradeNurseText: script_cable_club_receptionist + +CinnabarPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/Colosseum.asm b/scripts/Colosseum.asm index 83d41bdc..83d41bdc 100755..100644 --- a/scripts/Colosseum.asm +++ b/scripts/Colosseum.asm diff --git a/scripts/Daycare.asm b/scripts/Daycare.asm index 481d7e14..164664b4 100755 --- a/scripts/Daycare.asm +++ b/scripts/Daycare.asm @@ -50,11 +50,21 @@ DayCareMText1: ld a, PARTY_TO_DAYCARE ld [wMoveMonType], a call MoveMon + callfar IsThisPartymonStarterPikachu + push af xor a ld [wRemoveMonFromBox], a call RemovePokemon + pop af + jr c, .depositedPikachuIntoDayCare ld a, [wcf91] call PlayCry + jr .asm_562e3 + +.depositedPikachuIntoDayCare + ldpikacry e, PikachuCry28 + callfar PlayPikachuSoundClip +.asm_562e3 ld hl, DayCareComeSeeMeInAWhileText jp .done @@ -197,8 +207,27 @@ DayCareMText1: ld a, [hl] ld [de], a + ld a, [wPartyCount] + dec a + ld [wWhichPokemon], a + callfar IsThisPartymonStarterPikachu + jr c, .withdrewPikachuFromDayCare ld a, [wcf91] call PlayCry + jr .asm_56430 + +.withdrewPikachuFromDayCare + ld a, $6 + ld [wPikachuSpawnState], a + + ; GameFreak... TriHard + ld hl, SchedulePikachuSpawnForAfterText + ld b, BANK(SchedulePikachuSpawnForAfterText) + ld hl, Bankswitch + + ldpikacry e, PikachuCry35 + callfar PlayPikachuSoundClip +.asm_56430 ld hl, DayCareGotMonBackText jr .done diff --git a/scripts/FuchsiaMart.asm b/scripts/FuchsiaMart.asm index e6d64c53..75e9a45d 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 788ee24b..2d98ca17 100755 --- a/scripts/FuchsiaPokecenter.asm +++ b/scripts/FuchsiaPokecenter.asm @@ -7,6 +7,7 @@ FuchsiaPokecenter_TextPointers: dw FuchsiaPokecenterText2 dw FuchsiaPokecenterText3 dw FuchsiaTradeNurseText + dw FuchsiaPokecenterText5 FuchsiaHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ FuchsiaPokecenterText3: FuchsiaTradeNurseText: script_cable_club_receptionist + +FuchsiaPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm index 94c35883..b2d4d96a 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 + callfar Func_f1f23 + ld de, MovementData_48c5a .asm_48c4d ld a, $b ldh [hSpriteIndex], a @@ -85,8 +89,8 @@ MovementData_48c5a: db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_UP db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_RIGHT @@ -475,13 +479,11 @@ CeladonGameCornerScript_48f1e: ld hl, wd730 set 6, [hl] hlcoord 11, 0 - ld b, $5 - ld c, $7 + lb bc, 5, 7 call TextBoxBorder call UpdateSprites hlcoord 12, 1 - ld b, 4 - ld c, 7 + lb bc, 4, 7 call ClearScreenArea hlcoord 12, 2 ld de, GameCornerMoneyText @@ -491,7 +493,7 @@ CeladonGameCornerScript_48f1e: call PlaceString hlcoord 12, 3 ld de, wPlayerMoney - ld c, $a3 + ld c, 3 | MONEY_SIGN | LEADING_ZEROES call PrintBCDNumber hlcoord 12, 4 ld de, GameCornerCoinText diff --git a/scripts/GameCorner2.asm b/scripts/GameCorner2.asm new file mode 100755 index 00000000..3571e9d9 --- /dev/null +++ b/scripts/GameCorner2.asm @@ -0,0 +1,12 @@ +Func_f1f23:: + ld hl, PikachuMovementData_f1f2c + ld b, SPRITE_FACING_DOWN + call TryApplyPikachuMovementData + ret + +PikachuMovementData_f1f2c: + db $00 + db $20 + db $1e + db $35 + db $3f diff --git a/scripts/IndigoPlateauLobby.asm b/scripts/IndigoPlateauLobby.asm index a9b549e3..0a532d9a 100755 --- a/scripts/IndigoPlateauLobby.asm +++ b/scripts/IndigoPlateauLobby.asm @@ -20,6 +20,7 @@ IndigoPlateauLobby_TextPointers: dw IndigoPlateauLobbyText3 dw IndigoCashierText dw IndigoTradeNurseText + dw IndigoPlateauLobbyText6 IndigoHealNurseText: script_pokecenter_nurse @@ -34,3 +35,8 @@ IndigoPlateauLobbyText3: IndigoTradeNurseText: script_cable_club_receptionist + +IndigoPlateauLobbyText6: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/LancesRoom.asm b/scripts/LancesRoom.asm index 5c7301ef..68d2020e 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, 12 + db D_UP, 13 db D_LEFT, 12 db D_DOWN, 7 db D_LEFT, 6 diff --git a/scripts/LavenderPokecenter.asm b/scripts/LavenderPokecenter.asm index b8a1d2a5..a15bfcfa 100755 --- a/scripts/LavenderPokecenter.asm +++ b/scripts/LavenderPokecenter.asm @@ -7,6 +7,7 @@ LavenderPokecenter_TextPointers: dw LavenderPokecenterText2 dw LavenderPokecenterText3 dw LavenderTradeNurseText + dw LavenderPokecenterText5 LavenderTradeNurseText: script_cable_club_receptionist @@ -21,3 +22,8 @@ LavenderPokecenterText2: LavenderPokecenterText3: text_far _LavenderPokecenterText3 text_end + +LavenderPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoon1F.asm b/scripts/MtMoon1F.asm index 68dacf29..2653016f 100755 --- a/scripts/MtMoon1F.asm +++ b/scripts/MtMoon1F.asm @@ -47,42 +47,37 @@ MtMoon1TrainerHeader6: MtMoon1Text1: text_asm ld hl, MtMoon1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text2: text_asm ld hl, MtMoon1TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text3: text_asm ld hl, MtMoon1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text4: text_asm ld hl, MtMoon1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text5: text_asm ld hl, MtMoon1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text6: text_asm ld hl, MtMoon1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text7: text_asm ld hl, MtMoon1TrainerHeader6 +MtMoon1TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/MtMoonB2F.asm b/scripts/MtMoonB2F.asm index 9faf038a..a02d7d42 100755 --- a/scripts/MtMoonB2F.asm +++ b/scripts/MtMoonB2F.asm @@ -37,13 +37,23 @@ CoordsData_49d37: dbmapcoord 14, 8 db -1 ; end -MtMoon3Script_49d58: +MtMoon3Script_49cd7: + CheckAndResetEvent EVENT_57E + call nz, MtMoon3Script_49cec xor a ld [wJoyIgnore], a +MtMoon3Script_49ce5: ld [wMtMoonB2FCurScript], a ld [wCurMapScript], a ret +MtMoon3Script_49cec: + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + ret + MtMoonB2F_ScriptPointers: dw MtMoon3Script0 dw DisplayEnemyTrainerTextAndStartBattle @@ -51,23 +61,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 13 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b xor a ldh [hJoyHeld], a ld a, $1 ldh [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoon3Script_49d91: +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -75,55 +103,91 @@ MtMoon3Script_49d91: MtMoon3Script3: ld a, [wIsInBattle] cp $ff - jp z, MtMoon3Script_49d58 + jp z, MtMoon3Script_49cd7 call UpdateSprites call Delay3 SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret MtMoon3Script4: ld a, $1 ldh [hSpriteIndex], a call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 + call ArePlayerCoordsInArray + jr c, .asm_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 ldh [hSpriteIndex], a call MoveSprite ld a, $5 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 ret -CoordsData_49dea: +CoordsData_49dc0: dbmapcoord 12, 7 dbmapcoord 11, 6 dbmapcoord 12, 5 db -1 ; end -CoordsData_49df1: +CoordsData_49dc7: + dbmapcoord 12, 7 + db -1 ; end + +PikachuMovementData_49dca: + db $00 + db $35 + db $33 + db $3f + +CoordsData_49dce: dbmapcoord 13, 7 dbmapcoord 14, 6 dbmapcoord 14, 5 db -1 ; end -MovementData_49df8: +CoordsData_49dd5: + dbmapcoord 13, 7 + db -1 ; end + +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: db NPC_MOVEMENT_RIGHT -MovementData_49df9: +MovementData_49ddd: db NPC_MOVEMENT_UP db -1 ; end @@ -135,23 +199,213 @@ MtMoon3Script5: ld [wJoyIgnore], a ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld a, $a + ld a, $b ldh [hSpriteIndexOrTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL + CheckEvent EVENT_GOT_HELIX_FOSSIL jr z, .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_2 + ld a, HS_MT_MOON_B2F_FOSSIL_1 jr .asm_49e1f .asm_49e1d - ld a, HS_MT_MOON_B2F_FOSSIL_1 + ld a, HS_MT_MOON_B2F_FOSSIL_2 .asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, $0 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49e15: + ld a, [wXCoord] + cp $3 + ret nz + ld a, [wYCoord] + cp $5 + ret nz + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ldh [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f84 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f84 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $c + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call MtMoon3Script_49ce5 + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoon3Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ldh [hSpriteIndex], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $7 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script7: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script8: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +MtMoon3Script9: + ld a, $6 + ldh [hSpriteIndex], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script10: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script11: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +MtMoon3Script12: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3JessieJamesEndBattleText + ld de, MtMoon3JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2a + ld [wTrainerNo], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_57E + ld a, $d + call MtMoon3Script_49ce5 + ret + +MtMoon3Script13: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoon3Script_49cd7 + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $e + call MtMoon3Script_49ce5 + ret + +MtMoon3Script14: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_B2F_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_B2F_JAMES + call MtMoon3Script_49f93 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $f + call MtMoon3Script_49ce5 + ret + +MtMoon3Script15: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + ResetEventReuseHL EVENT_57E + ld a, $0 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49f84: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoon3Script_49f93: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoonB2F_TextPointers: @@ -162,185 +416,204 @@ 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: - trainer EVENT_BEAT_MT_MOON_3_TRAINER_0, 4, MtMoon3BattleText2, MtMoon3EndBattleText2, MtMoon3AfterBattleText2 -MtMoon3TrainerHeader1: trainer EVENT_BEAT_MT_MOON_3_TRAINER_1, 4, MtMoon3BattleText3, MtMoon3EndBattleText3, MtMoon3AfterBattleText3 -MtMoon3TrainerHeader2: +MtMoon3TrainerHeader1: trainer EVENT_BEAT_MT_MOON_3_TRAINER_2, 4, MtMoon3BattleText4, MtMoon3EndBattleText4, MtMoon3AfterBattleText4 -MtMoon3TrainerHeader3: +MtMoon3TrainerHeader2: trainer EVENT_BEAT_MT_MOON_3_TRAINER_3, 4, MtMoon3BattleText5, MtMoon3EndBattleText5, MtMoon3AfterBattleText5 db -1 ; end +MtMoon3Text2: +MtMoon3Text6: + text_end + +MtMoon3Text12: + text_far _MtMoonJessieJamesText1 + text_asm + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +MtMoon3Text13: + text_far _MtMoonJessieJamesText2 + text_end + +MtMoon3JessieJamesEndBattleText: + text_far _MtMoonJessieJamesText3 + text_end + +MtMoon3Text14: + text_far _MtMoonJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + MtMoon3Text1: text_asm CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jr z, .asm_49e8d - 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 ldh a, [hSpriteIndex] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ld a, $3 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a - jr .asm_49ebe -.asm_49eb8 - ld hl, MtMoon3Text_49f94 + call MtMoon3Script_49ce5 + jr .asm_4a05d + +.asm_4a057 + ld hl, MtMoon3Text_4a11b call PrintText -.asm_49ebe +.asm_4a05d jp TextScriptEnd -MtMoon3Text2: +MtMoon3Text3: text_asm ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text3: +MtMoon3Text4: text_asm ld hl, MtMoon3TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text4: - text_asm - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd MtMoon3Text5: text_asm - ld hl, MtMoon3TrainerHeader3 + ld hl, MtMoon3TrainerHeader2 +MtMoon3TalkToTrainer: call TalkToTrainer jp TextScriptEnd -MtMoon3Text6: +MtMoon3Text7: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f24 + ld hl, MtMoon3Text_4a0ae call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f21 + jr nz, .asm_4a0ab lb bc, DOME_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_1 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f21 + call MtMoon3Script_49ce5 +.asm_4a0ab jp TextScriptEnd -MtMoon3Text_49f24: +MtMoon3Text_4a0ae: text_far _MtMoon3Text_49f24 text_end -MtMoon3Text7: +MtMoon3Text8: text_asm ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f64 + ld hl, MtMoon3Text_4a0eb call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f61 + jr nz, .asm_4a0e8 lb bc, HELIX_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_B2F_FOSSIL_2 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, $4 - ld [wMtMoonB2FCurScript], a - ld [wCurMapScript], a -.asm_49f61 + call MtMoon3Script_49ce5 +.asm_4a0e8 jp TextScriptEnd -MtMoon3Text_49f64: +MtMoon3Text_4a0eb: text_far _MtMoon3Text_49f64 text_end -MtMoon3Script_49f69: - ld hl, MtMoon3Text_49f6f +MtMoon3Script_4a0f0: + ld hl, MtMoon3Text_4a0f6 jp PrintText -MtMoon3Text_49f6f: +MtMoon3Text_4a0f6: text_far _MtMoon3Text_49f6f sound_get_key_item text_waitbutton text_end -MtMoon3Script_49f76: - ld hl, MtMoon3Text_49f7f +MtMoon3Script_4a0fd: + ld hl, MtMoon3Text_4a106 call PrintText jp TextScriptEnd -MtMoon3Text_49f7f: +MtMoon3Text_4a106: text_far _MtMoon3Text_49f7f text_waitbutton text_end -MtMoon3Text_49f85: +MtMoon3Text_4a10c: text_far _MtMoon3Text_49f85 text_end -MtMoon3Text_49f8a: +MtMoon3SuperNerdEndBattleText: text_far _MtMoon3Text_49f8a text_end -MtMoon3Text_49f8f: +MtMoon3Text_4a116: text_far _MtMoon3Text_49f8f text_end -MtMoon3Text_49f94: +MtMoon3Text_4a11b: text_far _MtMoon3Text_49f94 text_end -MtMoon3Text_49f99: +MtMoon3Text11: text_far _MtMoon3Text_49f99 sound_get_key_item text_end -MtMoon3BattleText2: - text_far _MtMoon3BattleText2 - text_end - -MtMoon3EndBattleText2: - text_far _MtMoon3EndBattleText2 - text_end - -MtMoon3AfterBattleText2: - text_far _MtMoon3AfterBattleText2 - text_end - MtMoon3BattleText3: text_far _MtMoon3BattleText3 text_end @@ -376,3 +649,4 @@ MtMoon3EndBattleText5: MtMoon3AfterBattleText5: text_far _MtMoon3AfterBattleText5 text_end + diff --git a/scripts/MtMoonB2F_2.asm b/scripts/MtMoonB2F_2.asm new file mode 100755 index 00000000..c983bb0d --- /dev/null +++ b/scripts/MtMoonB2F_2.asm @@ -0,0 +1,28 @@ +MtMoon3Script_4a325: ; pikachu-related function? + ld a, [wd472] + bit 7, a + ret z + ld a, [wWalkBikeSurfState] + and a + ret nz + + push hl + push bc + callfar GetPikachuFacingDirectionAndReturnToE + pop bc + pop hl + ld a, b + cp e + ret nz + + push hl + ld a, [wUpdateSpritesEnabled] + push af + ld a, $ff + ld [wUpdateSpritesEnabled], a + callfar LoadPikachuShadowIntoVRAM + pop af + ld [wUpdateSpritesEnabled], a + pop hl + call ApplyPikachuMovementData + ret diff --git a/scripts/MtMoonPokecenter.asm b/scripts/MtMoonPokecenter.asm index e4b881d1..302c5f19 100755 --- a/scripts/MtMoonPokecenter.asm +++ b/scripts/MtMoonPokecenter.asm @@ -9,6 +9,7 @@ MtMoonPokecenter_TextPointers: dw MagikarpSalesmanText dw MtMoonPokecenterText5 dw MtMoonTradeNurseText + dw MtMoonPokecenterText7 MtMoonHealNurseText: script_pokecenter_nurse @@ -23,72 +24,17 @@ MtMoonPokecenterText3: MagikarpSalesmanText: text_asm - CheckEvent EVENT_BOUGHT_MAGIKARP, 1 - jp c, .alreadyBoughtMagikarp - ld hl, .Text1 - call PrintText - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .choseNo - ldh [hMoney], a - ldh [hMoney + 2], a - ld a, $5 - ldh [hMoney + 1], a - call HasEnoughMoney - jr nc, .enoughMoney - ld hl, .NoMoneyText - jr .printText -.enoughMoney - lb bc, MAGIKARP, 5 - call GivePokemon - jr nc, .done - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 2], a - ld a, $5 - ld [wPriceTemp + 1], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - SetEvent EVENT_BOUGHT_MAGIKARP - jr .done -.choseNo - ld hl, .RefuseText - jr .printText -.alreadyBoughtMagikarp - ld hl, .Text2 -.printText - call PrintText -.done + callfar MagikarpSalesman jp TextScriptEnd -.Text1 - text_far _MagikarpSalesmanText1 - text_end - -.RefuseText - text_far _MagikarpSalesmanNoText - text_end - -.NoMoneyText - text_far _MagikarpSalesmanNoMoneyText - text_end - -.Text2 - text_far _MagikarpSalesmanText2 - text_end - MtMoonPokecenterText5: text_far _MtMoonPokecenterText5 text_end MtMoonTradeNurseText: script_cable_club_receptionist + +MtMoonPokecenterText7: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/MtMoonPokecenter2.asm b/scripts/MtMoonPokecenter2.asm new file mode 100755 index 00000000..9abc0286 --- /dev/null +++ b/scripts/MtMoonPokecenter2.asm @@ -0,0 +1,66 @@ +MagikarpSalesman:: + CheckEvent EVENT_BOUGHT_MAGIKARP, 1 + jp c, .alreadyBoughtMagikarp + ld hl, .Text1 + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .choseNo + ; $000500 + xor a + ldh [hMoney], a + ldh [hMoney + 2], a + ld a, $5 + ldh [hMoney + 1], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, .NoMoneyText + jr .printText +.enoughMoney + lb bc, MAGIKARP, 5 + call GivePokemon + jr nc, .done + ; $000500 + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 2], a + ld a, $5 + ld [wPriceTemp + 1], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, $3 + predef SubBCDPredef + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + SetEvent EVENT_BOUGHT_MAGIKARP + jr .done +.choseNo + ld hl, .RefuseText + jr .printText +.alreadyBoughtMagikarp + ld hl, .Text2 +.printText + call PrintText +.done + ret + +.Text1 + text_far _MagikarpSalesmanText1 + text_end + +.RefuseText + text_far _MagikarpSalesmanNoText + text_end + +.NoMoneyText + text_far _MagikarpSalesmanNoMoneyText + text_end + +.Text2 + text_far _MagikarpSalesmanText2 + text_end diff --git a/scripts/Museum1F.asm b/scripts/Museum1F.asm index ee3473ff..c89eacda 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: text_asm - ld a, [wYCoord] - cp 4 - jr nz, .asm_8774b - ld a, [wXCoord] - cp 13 - jp z, Museum1FScript_5c1f9 - jr .asm_b8709 -.asm_8774b - cp $3 - jr nz, .asm_d49e7 - ld a, [wXCoord] - cp 12 - jp z, Museum1FScript_5c1f9 -.asm_d49e7 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr nz, .asm_31a16 - ld hl, Museum1FText_5c23d - call PrintText - jp Museum1FScriptEnd -.asm_b8709 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr z, .asm_3ded4 -.asm_31a16 - ld hl, Museum1FText_5c242 - call PrintText - jp Museum1FScriptEnd -.asm_3ded4 - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - xor a - ldh [hJoyHeld], a - ld hl, Museum1FText_5c21f - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_de133 - xor a - ldh [hMoney], a - ldh [hMoney + 1], a - ld a, $50 - ldh [hMoney + 2], a - call HasEnoughMoney - jr nc, .asm_0f3e3 - ld hl, Museum1FText_5c229 - call PrintText - jp .asm_de133 -.asm_0f3e3 - ld hl, Museum1FText_5c224 - call PrintText - SetEvent EVENT_BOUGHT_MUSEUM_TICKET - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 1], a - ld a, $50 - ld [wPriceTemp + 2], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - ld a, SFX_PURCHASE - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - jr .asm_0b094 -.asm_de133 - ld hl, Museum1FText_5c21a - call PrintText - ld a, $1 - ld [wSimulatedJoypadStatesIndex], a - ld a, D_DOWN - ld [wSimulatedJoypadStatesEnd], a - call StartSimulatingJoypadStates - call UpdateSprites - jr Museum1FScriptEnd -.asm_0b094 - ld a, $1 - ld [wMuseum1FCurScript], a - jr Museum1FScriptEnd - -Museum1FScript_5c1f9: - ld hl, Museum1FText_5c22e - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - cp $0 - jr nz, .asm_d1144 - ld hl, Museum1FText_5c233 - call PrintText - jr Museum1FScriptEnd -.asm_d1144 - ld hl, Museum1FText_5c238 - call PrintText -Museum1FScriptEnd: + farcall Func_f1c1b jp TextScriptEnd -Museum1FText_5c21a: - text_far _Museum1FText_5c21a - text_end - -Museum1FText_5c21f: - text_far _Museum1FText_5c21f - text_end - -Museum1FText_5c224: - text_far _Museum1FText_5c224 - text_end - -Museum1FText_5c229: - text_far _Museum1FText_5c229 - text_end - -Museum1FText_5c22e: - text_far _Museum1FText_5c22e - text_end - -Museum1FText_5c233: - text_far _Museum1FText_5c233 - text_end - -Museum1FText_5c238: - text_far _Museum1FText_5c238 - text_end - -Museum1FText_5c23d: - text_far _Museum1FText_5c23d - text_end - -Museum1FText_5c242: - text_far _Museum1FText_5c242 - text_end - Museum1FText2: text_asm - ld hl, Museum1FText_5c251 - call PrintText + farcall Func_f1d2a jp TextScriptEnd -Museum1FText_5c251: - text_far _Museum1FText_5c251 - text_end - Museum1FText3: text_asm - CheckEvent EVENT_GOT_OLD_AMBER - jr nz, .got_item - ld hl, Museum1FText_5c28e - call PrintText - lb bc, OLD_AMBER, 1 - call GiveItem - jr nc, .bag_full - SetEvent EVENT_GOT_OLD_AMBER - ld a, HS_OLD_AMBER - ld [wMissableObjectIndex], a - predef HideObject - ld hl, ReceivedOldAmberText - jr .done -.bag_full - ld hl, Museum1FText_5c29e - jr .done -.got_item - ld hl, Museum1FText_5c299 -.done - call PrintText + farcall Func_f1d36 jp TextScriptEnd -Museum1FText_5c28e: - text_far _Museum1FText_5c28e - text_end - -ReceivedOldAmberText: - text_far _ReceivedOldAmberText - sound_get_item_1 - text_end - -Museum1FText_5c299: - text_far _Museum1FText_5c299 - text_end - -Museum1FText_5c29e: - text_far _Museum1FText_5c29e - text_end - Museum1FText4: text_asm - ld hl, Museum1FText_5c2ad - call PrintText + farcall Func_f1d80 jp TextScriptEnd -Museum1FText_5c2ad: - text_far _Museum1FText_5c2ad - text_end - Museum1FText5: text_asm - ld hl, Museum1FText_5c2bc - call PrintText + farcall Func_f1d8c jp TextScriptEnd - -Museum1FText_5c2bc: - text_far _Museum1FText_5c2bc - text_end diff --git a/scripts/Museum1F2.asm b/scripts/Museum1F2.asm new file mode 100755 index 00000000..512a3295 --- /dev/null +++ b/scripts/Museum1F2.asm @@ -0,0 +1,209 @@ +Func_f1c1b:: + ld a, [wYCoord] + cp 4 + jr nz, .asm_f1c2c + ld a, [wXCoord] + cp 13 + jp z, .asm_f1cde + jr .asm_f1c48 + +.asm_f1c2c + cp $3 + jr nz, .asm_f1c38 + ld a, [wXCoord] + cp 12 + jp z, .asm_f1cde +.asm_f1c38 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr nz, .asm_f1c4f + ld hl, Museum1FText_f1d20 + call PrintText + jp .asm_f1cfc + +.asm_f1c48 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr z, .asm_f1c58 +.asm_f1c4f + ld hl, Museum1FText_f1d25 + call PrintText + jp .asm_f1cfc + +.asm_f1c58 + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + xor a + ldh [hJoyHeld], a + ld hl, Museum1FText_f1d02 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1cbf + xor a + ldh [hMoney], a + ldh [hMoney + 1], a + ld a, $50 + ldh [hMoney + 2], a + call HasEnoughMoney + jr nc, .asm_f1c89 + ld hl, Museum1FText_f1d0c + call PrintText + jp .asm_f1cbf + +.asm_f1c89 + ld hl, Museum1FText_f1d07 + call PrintText + SetEvent EVENT_BOUGHT_MUSEUM_TICKET + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 1], a + ld a, $50 + ld [wPriceTemp + 2], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, 3 + predef SubBCDPredef + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + ld a, SFX_PURCHASE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + jr .asm_f1cd7 + +.asm_f1cbf + ld hl, Museum1FText_f1cfd + call PrintText + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + call UpdateSprites + jr .asm_f1cfc + +.asm_f1cd7 + ld a, $1 + ld [wMuseum1FCurScript], a + jr .asm_f1cfc + +.asm_f1cde + ld hl, Museum1FText_f1d11 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + cp 0 + jr nz, .asm_f1cf6 + ld hl, Museum1FText_f1d16 + call PrintText + jr .asm_f1cfc + +.asm_f1cf6 + ld hl, Museum1FText_f1d1b + call PrintText +.asm_f1cfc + ret + +Museum1FText_f1cfd: + text_far _Museum1FText_5c21a + text_end + +Museum1FText_f1d02: + text_far _Museum1FText_5c21f + text_end + +Museum1FText_f1d07: + text_far _Museum1FText_5c224 + text_end + +Museum1FText_f1d0c: + text_far _Museum1FText_5c229 + text_end + +Museum1FText_f1d11: + text_far _Museum1FText_5c22e + text_end + +Museum1FText_f1d16: + text_far _Museum1FText_5c233 + text_end + +Museum1FText_f1d1b: + text_far _Museum1FText_5c238 + text_end + +Museum1FText_f1d20: + text_far _Museum1FText_5c23d + text_end + +Museum1FText_f1d25: + text_far _Museum1FText_5c242 + text_end + +Func_f1d2a:: + ld hl, Museum1FText_f1d31 + call PrintText + ret + +Museum1FText_f1d31: + text_far _Museum1FText_5c251 + text_end + +Func_f1d36:: + CheckEvent EVENT_GOT_OLD_AMBER + jr nz, .got_item + ld hl, Museum1FText_5c28e + call PrintText + lb bc, OLD_AMBER, 1 + call GiveItem + jr nc, .bag_full + SetEvent EVENT_GOT_OLD_AMBER + ld a, HS_OLD_AMBER + ld [wMissableObjectIndex], a + predef HideObject + ld hl, ReceivedOldAmberText + jr .done +.bag_full + ld hl, Museum1FText_5c29e + jr .done +.got_item + ld hl, Museum1FText_5c299 +.done + call PrintText + ret + +Museum1FText_5c28e: + text_far _Museum1FText_5c28e + text_end + +ReceivedOldAmberText: + text_far _ReceivedOldAmberText + sound_get_item_1 + text_end + +Museum1FText_5c299: + text_far _Museum1FText_5c299 + text_end + +Museum1FText_5c29e: + text_far _Museum1FText_5c29e + text_end + +Func_f1d80:: + ld hl, Museum1FText_f1d87 + call PrintText + ret + +Museum1FText_f1d87: + text_far _Museum1FText_5c2ad + text_end + +Func_f1d8c:: + ld hl, Museum1FText_f1d93 + call PrintText + ret + +Museum1FText_f1d93: + text_far _Museum1FText_5c2bc + text_end diff --git a/scripts/Museum2F.asm b/scripts/Museum2F.asm index 8b1aa0bf..fe02f544 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: text_end Museum2FText5: + text_asm + ld a, [wd472] + bit 7, a + jr nz, .asm_5c1f6 + ld hl, Museum2FText_5c20e + call PrintText + jr .asm_5c20b + +.asm_5c1f6 + ld a, [wPikachuHappiness] + cp 101 + jr c, .asm_5c205 + ld hl, Museum2FText_5c218 + call PrintText + jr .asm_5c20b + +.asm_5c205 + ld hl, Museum2FText_5c213 + call PrintText +.asm_5c20b + jp TextScriptEnd + +Museum2FText_5c20e: text_far _Museum2FText5 text_end +Museum2FText_5c213: + text_far _Museum2FPikachuText1 + text_end + +Museum2FText_5c218: + text_far _Museum2FPikachuText2 + text_end + Museum2FText6: text_far _Museum2FText6 text_end diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm index 0df74dcf..e8ef4cbe 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 ldh [hSpriteIndex], a ld de, OakEntryMovement call MoveSprite @@ -90,7 +95,7 @@ OaksLabScript3: xor a ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $5 + ld a, $3 ldh [hSpriteIndex], a xor a ldh [hSpriteFacingDirection], a @@ -115,7 +120,6 @@ OaksLabScript4: ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - call UpdateSprites ld hl, wFlags_D733 res 1, [hl] call PlayDefaultMusic @@ -125,24 +129,28 @@ OaksLabScript4: ret OaksLabScript5: + SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON ld a, $fc ld [wJoyIgnore], a - ld a, $11 + ld a, $d ldh [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $12 + ld a, $e ldh [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $13 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $f ldh [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $14 + ld a, $10 ldh [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON xor a ld [wJoyIgnore], a @@ -154,7 +162,7 @@ OaksLabScript6: ld a, [wYCoord] cp 6 ret nz - ld a, $5 + ld a, $3 ldh [hSpriteIndex], a xor a ; SPRITE_FACING_DOWN ldh [hSpriteFacingDirection], a @@ -165,7 +173,7 @@ OaksLabScript6: ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call UpdateSprites - ld a, $c + ld a, $a ldh [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 @@ -191,176 +199,130 @@ OaksLabScript7: ret OaksLabScript8: - ld a, [wPlayerStarter] - cp STARTER1 - jr z, .Charmander - cp STARTER2 - jr z, .Squirtle - jr .Bulbasaur -.Charmander - ld de, .MiddleBallMovement1 - ld a, [wYCoord] - cp 4 ; is the player standing below the table? - jr z, .moveBlue - ld de, .MiddleBallMovement2 - jr .moveBlue - -.MiddleBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP - db -1 ; end - -.MiddleBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db -1 ; end - -.Squirtle - ld de, .RightBallMovement1 - ld a, [wYCoord] - cp 4 ; is the player standing below the table? - jr z, .moveBlue - ld de, .RightBallMovement2 - jr .moveBlue - -.RightBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP - db -1 ; end - -.RightBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db -1 ; end - -.Bulbasaur - ld de, .LeftBallMovement1 - ld a, [wXCoord] - cp 9 ; is the player standing to the right of the table? - jr nz, .moveBlue - push hl ld a, $1 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_YPIXELS - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - push hl - ld [hl], $4c ; SPRITESTATEDATA1_YPIXELS - inc hl - inc hl - ld [hl], $0 ; SPRITESTATEDATA1_XPIXELS - pop hl - inc h - ld [hl], 8 ; SPRITESTATEDATA2_MAPY - inc hl - ld [hl], 9 ; SPRITESTATEDATA2_MAPX - ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that - pop hl - jr .moveBlue - -.LeftBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT -.LeftBallMovement2 - db NPC_MOVEMENT_RIGHT - db -1 ; end - -.moveBlue - ld a, $1 - ldh [hSpriteIndex], a + ldh [hSpriteIndexOrTextID], a + ld de, .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 ldh [hSpriteIndex], a ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $d - ldh [hSpriteIndexOrTextID], a - call DisplayTextID - ld a, [wRivalStarterBallSpriteIndex] - cp $2 - jr nz, .rivalDidNotChoseBall1 - ld a, HS_STARTER_BALL_1 - jr .hideBallAndContinue -.rivalDidNotChoseBall1 - cp $3 - jr nz, .rivalChoseBall3 - ld a, HS_STARTER_BALL_2 - jr .hideBallAndContinue -.rivalChoseBall3 - ld a, HS_STARTER_BALL_3 -.hideBallAndContinue - ld [wMissableObjectIndex], a - predef HideObject - call Delay3 - ld a, [wRivalStarterTemp] + ld a, 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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + + ld a, $a + ld [wOaksLabCurScript], a + ret + +.asm_1c564 + ld a, [wYCoord] + cp 4 + ret nz + ld a, [wNPCNumScriptedSteps] + cp 1 + ret nz + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a + ld a, $2 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_RIGHT + ld [wSimulatedJoypadStatesEnd], a + ld [wSimulatedJoypadStatesEnd + 1], a + call StartSimulatingJoypadStates + ret + +OaksLabScript10: + ld a, [wYCoord] + cp 4 + jr z, .asm_1c599 ld a, $1 - ldh [hSpriteIndex], a - ld a, SPRITE_FACING_UP - ldh [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, $e + ld [wSimulatedJoypadStatesIndex], a + ld a, D_LEFT + ld [wSimulatedJoypadStatesEnd], a + jr .asm_1c5a6 + +.asm_1c599 + ld hl, wSimulatedJoypadStatesEnd + ld de, OaksLabRLE_PlayerWalksToOak + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a +.asm_1c5a6 + call StartSimulatingJoypadStates + ld a, $b + ld [wOaksLabCurScript], a + ret + +OaksLabRLE_PlayerWalksToOak: + db D_UP, 2 + db D_LEFT, 3 + db D_DOWN, 1 + db D_LEFT, 1 + db $FF + +OaksLabScript11: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + ld a, $12 ldh [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_GOT_STARTER xor a ld [wJoyIgnore], a - ld a, $a + ld a, $c ld [wOaksLabCurScript], a ret -OaksLabScript10: +OaksLabScript12: ld a, [wYCoord] cp 6 ret nz + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $1 ldh [hSpriteIndex], a xor a ; SPRITE_FACING_DOWN ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic - ld a, $f + ld a, $b ldh [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 ldh [hNPCPlayerRelativePosPerspective], a ld a, $1 swap a - ldh [hNPCSpriteOffset], a + ldh [hNPCPlayerYDistance], a predef CalcPositionOfPlayerRelativeToNPC ldh a, [hNPCPlayerYDistance] dec a @@ -370,38 +332,23 @@ OaksLabScript10: ld a, $1 ldh [hSpriteIndex], a call MoveSprite - - ld a, $b + ld a, $d ld [wOaksLabCurScript], a ret -OaksLabScript11: +OaksLabScript13: ld a, [wd730] bit 0, a ret nz - - ; define which team rival uses, and fight it + ld a, $1 + ld [wSpriteIndex], a + call GetSpritePosition1 ld a, OPP_RIVAL1 ld [wCurOpponent], a - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle ld a, $1 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done ld [wTrainerNo], a - ld a, $1 - ld [wSpriteIndex], a - call GetSpritePosition1 - ld hl, OaksLabText_1d3be - ld de, OaksLabText_1d3c3 + ld hl, OaksLabRivalDefeatedText + ld de, OaksLabRivalBeatYouText call SaveEndBattleTextPointers ld hl, wd72d set 6, [hl] @@ -410,12 +357,28 @@ OaksLabScript11: ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, $c + ld a, $e ld [wOaksLabCurScript], a ret -OaksLabScript12: - ld a, $f0 +OaksLabScript14: + ld a, $ff + ld [wJoyIgnore], a + + ; If you beat your rival here, his Eevee will evolve into + ; Jolteon if you beat him on Route 22, or Flareon if you + ; skip or lose that battle. + ; Otherwise, it will evolve into Vaporeon. + ld a, [wBattleResult] + and a + ld b, $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 - ldh [hSpriteIndex], a - xor a ; SPRITE_FACING_DOWN - ldh [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 ldh [hSpriteIndexOrTextID], a call DisplayTextID farcall Music_RivalAlternateStart ld a, $1 ldh [hSpriteIndex], a - ld de, .RivalExitMovement + ld de, .OaksLabMovement_RivalWalksOut1 call MoveSprite ld a, [wXCoord] cp 4 - ; move left or right depending on where the player is standing - jr nz, .moveLeft + jr nz, .asm_1c6bb ld a, NPC_MOVEMENT_RIGHT - jr .next -.moveLeft + jr .asm_1c6bd + +.asm_1c6bb ld a, NPC_MOVEMENT_LEFT -.next +.asm_1c6bd ld [wNPCMovementDirections], a - - ld a, $e + ld a, $10 ld [wOaksLabCurScript], a ret -.RivalExitMovement +.OaksLabMovement_RivalWalksOut1 db NPC_CHANGE_FACING db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN + db $04 + db $04 + db $04 + db $04 + db $04 db -1 ; end -OaksLabScript14: +OaksLabScript16: ld a, [wd730] bit 0, a jr nz, .checkRivalPosition + ld a, $ff ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef HideObject - xor a - ld [wJoyIgnore], a - call PlayDefaultMusic ; reset to map music - ld a, $12 + call PlayDefaultMusic + ld a, $11 ld [wOaksLabCurScript], a - jr .done + ret ; make the player keep facing the rival as he walks away .checkRivalPosition ld a, [wNPCNumScriptedSteps] @@ -492,32 +453,54 @@ OaksLabScript14: cp 4 jr nz, .turnPlayerLeft ld a, SPRITE_FACING_RIGHT - ld [wSpritePlayerStateData1FacingDirection], a jr .done .turnPlayerLeft ld a, SPRITE_FACING_LEFT - ld [wSpritePlayerStateData1FacingDirection], a jr .done .turnPlayerDown cp $4 ret nz xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpritePlayerStateData1FacingDirection], a .done + ld [wSpritePlayerStateData1FacingDirection], a ret -OaksLabScript15: +OaksLabScript17: +; Pikachu comes out + ld a, SPRITE_FACING_UP + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $2 + ld [wPikachuSpawnState], a + farcall SchedulePikachuSpawnForAfterText + call EnablePikachuOverworldSpriteDrawing + ld a, $1a + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $12 + ld [wOaksLabCurScript], a + ret + +OaksLabScript18: + ld a, $1b + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wJoyIgnore], a + ld a, $16 + ld [wOaksLabCurScript], a + ret + +OaksLabScript19: xor a ldh [hJoyHeld], a call EnableAutoTextBoxDrawing - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart - ld a, $15 + ld a, $13 ldh [hSpriteIndexOrTextID], a call DisplayTextID - call OaksLabScript_1d02b + callfar Func_f1be0 + call OaksLabScript_1c8b9 ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef ShowObject @@ -533,47 +516,47 @@ OaksLabScript15: ldh [hSpriteIndex], a ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $10 + ld a, $14 ld [wOaksLabCurScript], a ret -OaksLabScript_1cefd: +OaksLabScript_1c78e: ld a, $1 ldh [hSpriteIndex], a ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $8 + ld a, $6 ldh [hSpriteIndex], a xor a ; SPRITE_FACING_DOWN ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + call SetSpriteFacingDirectionAndDelay + ret -OaksLabScript16: +OaksLabScript20: ld a, [wd730] bit 0, a ret nz call EnableAutoTextBoxDrawing call PlayDefaultMusic - ld a, $fc + ld a, $ff ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a - call OaksLabScript_1cefd - ld a, $16 + call OaksLabScript_1c78e + ld a, $14 ldh [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $17 + call OaksLabScript_1c78e + ld a, $15 ldh [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $18 + call OaksLabScript_1c78e + ld a, $16 ldh [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - ld a, $19 + ld a, $17 ldh [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 @@ -583,8 +566,8 @@ OaksLabScript16: ld a, HS_POKEDEX_2 ld [wMissableObjectIndex], a predef HideObject - call OaksLabScript_1cefd - ld a, $1a + call OaksLabScript_1c78e + ld a, $18 ldh [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 @@ -593,10 +576,12 @@ OaksLabScript16: ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, $1b + ld a, $19 ldh [hSpriteIndexOrTextID], a call DisplayTextID SetEvent EVENT_GOT_POKEDEX + ld a, $1 + ld [wViridianCityCurScript], a SetEvent EVENT_OAK_GOT_PARCEL ld a, HS_LYING_OLD_MAN ld [wMissableObjectIndex], a @@ -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, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, $1 - ldh [hSpriteIndex], a + ldh [hSpriteIndexOrTextID], a ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $11 + ld a, $15 ld [wOaksLabCurScript], a ret -OaksLabScript17: +OaksLabScript21: ld a, [wd730] bit 0, a ret nz @@ -638,16 +620,13 @@ OaksLabScript17: ld a, HS_ROUTE_22_RIVAL_1 ld [wMissableObjectIndex], a predef ShowObject - ld a, $5 - ld [wPalletTownCurScript], a xor a ld [wJoyIgnore], a - - ld a, $12 + ld a, $16 ld [wOaksLabCurScript], a ret -OaksLabScript18: +OaksLabScript22: ret OaksLabScript_RemoveParcel: @@ -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 ldh [hSpriteScreenYCoord], a ld a, 8 ldh [hSpriteMapXCoord], a ld a, [wYCoord] cp 3 - jr nz, .asm_1d045 + jr nz, .asm_1c8d3 ld a, $4 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, 11 - jr .asm_1d068 -.asm_1d045 + jr .asm_1c8f6 + +.asm_1c8d3 cp 1 - jr nz, .asm_1d054 + jr nz, .asm_1c8e2 ld a, $2 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, 9 - jr .asm_1d068 -.asm_1d054 + jr .asm_1c8f6 + +.asm_1c8e2 ld a, $3 ld [wNPCMovementDirections2Index], a ld b, 10 ld a, [wXCoord] cp 4 - jr nz, .asm_1d066 + jr nz, .asm_1c8f4 ld a, $40 - jr .asm_1d068 -.asm_1d066 + jr .asm_1c8f6 + +.asm_1c8f4 ld a, $20 -.asm_1d068 +.asm_1c8f6 ldh [hSpriteScreenXCoord], a ld a, b ldh [hSpriteMapYCoord], a @@ -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: text_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: text_asm - ld a, STARTER2 - ld [wRivalStarterTemp], a - ld a, $3 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER1 - ld b, $2 - jr OaksLabScript_1d133 - -OaksLabText3: - text_asm - ld a, STARTER3 - ld [wRivalStarterTemp], a - ld a, $4 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER2 - ld b, $3 - jr OaksLabScript_1d133 - -OaksLabText4: - text_asm - ld a, STARTER1 - ld [wRivalStarterTemp], a - ld a, $2 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER3 - ld b, $4 - -OaksLabScript_1d133: - ld [wcf91], a - ld [wd11e], a - ld a, b - ld [wSpriteIndex], a - CheckEvent EVENT_GOT_STARTER - jp nz, OaksLabScript_1d22d - CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON - jr nz, OaksLabScript_1d157 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON + jr nz, OaksLabScript_1c9ac + ld a, $0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, OaksLabText39 call PrintText jp TextScriptEnd @@ -838,209 +790,107 @@ OaksLabText39: text_far _OaksLabText39 text_end -OaksLabScript_1d157: - ld a, $5 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN - ld a, $1 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_RIGHT - ld hl, wd730 - set 6, [hl] - predef StarterDex - ld hl, wd730 - res 6, [hl] - call ReloadMapData - ld c, 10 - call DelayFrames - ld a, [wSpriteIndex] - cp $2 - jr z, OaksLabLookAtCharmander - cp $3 - jr z, OaksLabLookAtSquirtle - jr OaksLabLookAtBulbasaur - -OaksLabLookAtCharmander: - ld hl, OaksLabCharmanderText - jr OaksLabMonChoiceMenu -OaksLabCharmanderText: - text_far _OaksLabCharmanderText - text_end - -OaksLabLookAtSquirtle: - ld hl, OaksLabSquirtleText - jr OaksLabMonChoiceMenu -OaksLabSquirtleText: - text_far _OaksLabSquirtleText - text_end - -OaksLabLookAtBulbasaur: - ld hl, OaksLabBulbasaurText - jr OaksLabMonChoiceMenu -OaksLabBulbasaurText: - text_far _OaksLabBulbasaurText - text_end - -OaksLabMonChoiceMenu: - call PrintText - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - call YesNoChoice ; yes/no menu - ld a, [wCurrentMenuItem] - and a - jr nz, OaksLabMonChoiceEnd - ld a, [wcf91] - ld [wPlayerStarter], a - ld [wd11e], a - call GetMonName - ld a, [wSpriteIndex] - cp $2 - jr nz, .asm_1d1db - ld a, HS_STARTER_BALL_1 - jr .asm_1d1e5 -.asm_1d1db - cp $3 - jr nz, .asm_1d1e3 - ld a, HS_STARTER_BALL_2 - jr .asm_1d1e5 -.asm_1d1e3 - ld a, HS_STARTER_BALL_3 -.asm_1d1e5 - ld [wMissableObjectIndex], a - predef HideObject +OaksLabScript_1c9ac: ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, OaksLabMonEnergeticText - call PrintText - ld hl, OaksLabReceivedMonText - call PrintText - xor a ; PLAYER_PARTY_DATA - ld [wMonDataLocation], a - ld a, 5 - ld [wCurEnemyLVL], a - ld a, [wcf91] - ld [wd11e], a - call AddPartyMon - ld hl, wd72e - set 3, [hl] - ld a, $fc - ld [wJoyIgnore], a + ld [wEmotionBubbleSpriteIndex], a + xor a ; EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble ld a, $8 ld [wOaksLabCurScript], a -OaksLabMonChoiceEnd: jp TextScriptEnd -OaksLabMonEnergeticText: - text_far _OaksLabMonEnergeticText - text_end - -OaksLabReceivedMonText: - text_far _OaksLabReceivedMonText - sound_get_key_item - text_end - -OaksLabScript_1d22d: - ld a, $5 - ldh [hSpriteIndex], a - ld a, SPRITESTATEDATA1_FACINGDIRECTION - ldh [hSpriteDataOffset], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN - ld hl, OaksLabLastMonText - call PrintText - jp TextScriptEnd - -OaksLabLastMonText: - text_far _OaksLabLastMonText - text_end - -OaksLabText32: -OaksLabText5: +OaksLabText3: text_asm CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS - jr nz, .asm_1d266 + jr nz, .asm_1c9d9 ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] cp 2 - jr c, .asm_1d279 - CheckEvent EVENT_GOT_POKEDEX - jr z, .asm_1d279 -.asm_1d266 - ld hl, OaksLabText_1d31d + jr c, .asm_1c9ec +.asm_1c9d9 + ld hl, OaksLabText_1ca9f call PrintText ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a predef DisplayDexRating - jp .asm_1d2ed -.asm_1d279 + jp .asm_1ca6f + +.asm_1c9ec ld b, POKE_BALL call IsItemInBag - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [wNumSetBits] + cp 2 + jr nc, .asm_1ca69 CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr nz, .asm_1d2d0 + jr nz, .asm_1ca52 CheckEvent EVENT_GOT_POKEDEX - jr nz, .asm_1d2c8 + jr nz, .asm_1ca4a CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB - jr nz, .asm_1d2a9 + jr nz, .asm_1ca2b ld a, [wd72e] bit 3, a - jr nz, .asm_1d2a1 - ld hl, OaksLabText_1d2f0 + jr nz, .asm_1ca23 + ld hl, OaksLabText_1ca72 call PrintText - jr .asm_1d2ed -.asm_1d2a1 - ld hl, OaksLabText_1d2f5 + jr .asm_1ca6f + +.asm_1ca23 + ld hl, OaksLabText_1ca77 call PrintText - jr .asm_1d2ed -.asm_1d2a9 + jr .asm_1ca6f + +.asm_1ca2b ld b, OAKS_PARCEL call IsItemInBag - jr nz, .asm_1d2b8 - ld hl, OaksLabText_1d2fa + jr nz, .asm_1ca3a + ld hl, OaksLabText_1ca7c call PrintText - jr .asm_1d2ed -.asm_1d2b8 + jr .asm_1ca6f + +.asm_1ca3a ld hl, OaksLabDeliverParcelText call PrintText call OaksLabScript_RemoveParcel - ld a, $f + ld a, $13 ld [wOaksLabCurScript], a - jr .asm_1d2ed -.asm_1d2c8 + jr .asm_1ca6f + +.asm_1ca4a ld hl, OaksLabAroundWorldText call PrintText - jr .asm_1d2ed -.asm_1d2d0 + jr .asm_1ca6f + +.asm_1ca52 CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 lb bc, POKE_BALL, 5 call GiveItem ld hl, OaksLabGivePokeballsText call PrintText - jr .asm_1d2ed -.asm_1d2e7 + jr .asm_1ca6f + +.asm_1ca69 ld hl, OaksLabPleaseVisitText call PrintText -.asm_1d2ed +.asm_1ca6f jp TextScriptEnd -OaksLabText_1d2f0: - text_far _OaksLabText_1d2f0 +OaksLabText_1ca72: + text_far _OaksLabPikachuText text_end -OaksLabText_1d2f5: +OaksLabText_1ca77: text_far _OaksLabText_1d2f5 text_end -OaksLabText_1d2fa: +OaksLabText_1ca7c: text_far _OaksLabText_1d2fa text_end @@ -1064,36 +914,36 @@ OaksLabPleaseVisitText: text_far _OaksLabPleaseVisitText text_end -OaksLabText_1d31d: +OaksLabText_1ca9f: text_far _OaksLabText_1d31d text_end -OaksLabText7: -OaksLabText6: +OaksLabText4: +OaksLabText5: text_asm - ld hl, OaksLabText_1d32c + ld hl, OaksLabText_1caae call PrintText jp TextScriptEnd -OaksLabText_1d32c: +OaksLabText_1caae: text_far _OaksLabText_1d32c text_end -OaksLabText8: +OaksLabText6: text_far _OaksLabText8 text_end -OaksLabText9: +OaksLabText7: text_asm - ld hl, OaksLabText_1d340 + ld hl, OaksLabText_1cac2 call PrintText jp TextScriptEnd -OaksLabText_1d340: +OaksLabText_1cac2: text_far _OaksLabText_1d340 text_end -OaksLabText17: +OaksLabText13: text_asm ld hl, OaksLabRivalWaitingText call PrintText @@ -1103,7 +953,7 @@ OaksLabRivalWaitingText: text_far _OaksLabRivalWaitingText text_end -OaksLabText18: +OaksLabText14: text_asm ld hl, OaksLabChooseMonText call PrintText @@ -1113,7 +963,7 @@ OaksLabChooseMonText: text_far _OaksLabChooseMonText text_end -OaksLabText19: +OaksLabText15: text_asm ld hl, OaksLabRivalInterjectionText call PrintText @@ -1123,7 +973,7 @@ OaksLabRivalInterjectionText: text_far _OaksLabRivalInterjectionText text_end -OaksLabText20: +OaksLabText16: text_asm ld hl, OaksLabBePatientText call PrintText @@ -1133,38 +983,89 @@ OaksLabBePatientText: text_far _OaksLabBePatientText text_end -OaksLabText12: +OaksLabText17: text_asm - ld hl, OaksLabLeavingText + ld hl, OaksLabRivalTakesText1 + call PrintText + ld hl, OaksLabRivalTakesText2 + call PrintText + ld hl, OaksLabRivalTakesText3 + call PrintText + ld hl, OaksLabRivalTakesText4 + call PrintText + ld hl, OaksLabRivalTakesText5 call PrintText jp TextScriptEnd -OaksLabLeavingText: - text_far _OaksLabLeavingText +OaksLabRivalTakesText1: + text_far _OaksLabRivalTakesText1 text_end -OaksLabText13: +OaksLabRivalTakesText2: + text_far _OaksLabRivalTakesText2 + sound_get_key_item + text_end + +OaksLabRivalTakesText3: + text_far _OaksLabRivalTakesText3 + text_end + +OaksLabRivalTakesText4: + text_far _OaksLabRivalTakesText4 + text_end + +OaksLabRivalTakesText5: + text_far _OaksLabRivalTakesText5 + text_end + +OaksLabText18: text_asm - ld hl, OaksLabRivalPickingMonText + ld a, 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: - text_far _OaksLabRivalPickingMonText +OaksLabOakGivesText: + text_far _OaksLabOakGivesText text_end -OaksLabText14: +OaksLabRecievedText: + text_far _OaksLabReceivedText + sound_get_key_item + text_end + +OaksLabText10: text_asm - ld hl, OaksLabRivalReceivedMonText + ld hl, OaksLabLeavingText call PrintText jp TextScriptEnd -OaksLabRivalReceivedMonText: - text_far _OaksLabRivalReceivedMonText - sound_get_key_item +OaksLabLeavingText: + text_far _OaksLabLeavingText text_end -OaksLabText15: +OaksLabText11: text_asm ld hl, OaksLabRivalChallengeText call PrintText @@ -1174,15 +1075,15 @@ OaksLabRivalChallengeText: text_far _OaksLabRivalChallengeText text_end -OaksLabText_1d3be: +OaksLabRivalDefeatedText: text_far _OaksLabText_1d3be text_end -OaksLabText_1d3c3: +OaksLabRivalBeatYouText: text_far _OaksLabText_1d3c3 text_end -OaksLabText16: +OaksLabText12: text_asm ld hl, OaksLabRivalToughenUpText call PrintText @@ -1192,42 +1093,64 @@ OaksLabRivalToughenUpText: text_far _OaksLabRivalToughenUpText text_end -OaksLabText21: +OaksLabText26: + text_asm + ldpikacry e, PikachuCry2 + callfar PlayPikachuSoundClip + ld hl, OaksLabPikachuDislikesPokeballsText1 + call PrintText + jp TextScriptEnd + +OaksLabPikachuDislikesPokeballsText1: + text_far _OaksLabPikachuDislikesPokeballsText1 + text_end + +OaksLabText27: + text_asm + ld hl, OaksLabPikachuDislikesPokeballsText2 + call PrintText + jp TextScriptEnd + +OaksLabPikachuDislikesPokeballsText2: + text_far _OaksLabPikachuDislikesPokeballsText2 + text_end + +OaksLabText19: text_far _OaksLabText21 text_end -OaksLabText22: +OaksLabText20: text_far _OaksLabText22 text_end -OaksLabText23: +OaksLabText21: text_far _OaksLabText23 text_end -OaksLabText24: +OaksLabText22: text_far _OaksLabText24 text_end -OaksLabText25: +OaksLabText23: text_far _OaksLabText25 sound_get_key_item text_end -OaksLabText26: +OaksLabText24: text_far _OaksLabText26 text_end -OaksLabText27: +OaksLabText25: text_far _OaksLabText27 text_end -OaksLabText11: -OaksLabText10: +OaksLabText8: +OaksLabText9: text_asm - ld hl, OaksLabText_1d405 + ld hl, OaksLabText_1c31d call PrintText jp TextScriptEnd -OaksLabText_1d405: +OaksLabText_1c31d: text_far _OaksLabText_1d405 text_end diff --git a/scripts/OaksLab2.asm b/scripts/OaksLab2.asm new file mode 100755 index 00000000..b0519827 --- /dev/null +++ b/scripts/OaksLab2.asm @@ -0,0 +1,28 @@ +Func_f1be0:: + ld a, [wYCoord] + cp 3 + jr z, .asm_f1bf0 + ld b, SPRITE_FACING_DOWN + ld hl, Data_f1bf9 + call TryApplyPikachuMovementData + ret + +.asm_f1bf0 + ld b, SPRITE_FACING_LEFT + ld hl, Data_f1bfe + call TryApplyPikachuMovementData + ret + +Data_f1bf9: + db $00 + db $1f + db $1e + db $38 + db $3f + +Data_f1bfe: + db $00 + db $1d + db $20 + db $36 + db $3f diff --git a/scripts/PalletTown.asm b/scripts/PalletTown.asm index 5c26fc55..28f93411 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 ldh [hJoyHeld], a - ld a, PLAYER_DIR_DOWN + ld a, $ff + ld [wJoyIgnore], a + ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, SFX_STOP_ALL_MUSIC - call PlaySound + call StopAllMusic ld a, BANK(Music_MeetProfOak) ld c, a ld a, MUSIC_MEET_PROF_OAK ; "oak appears" music call PlayMusic - ld a, $FC - ld [wJoyIgnore], a SetEvent EVENT_OAK_APPEARED_IN_PALLET ; trigger the next script @@ -43,6 +51,8 @@ PalletTownScript0: ret PalletTownScript1: + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a xor a ld [wcf0d], a ld a, 1 @@ -50,23 +60,27 @@ PalletTownScript1: call DisplayTextID ld a, $FF ld [wJoyIgnore], a + ld hl, 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 - ldh [hSpriteIndex], a - ld a, SPRITE_FACING_UP - ldh [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, 1 + ld a, 0 ld [wYCoord], a ld a, 1 ldh [hNPCPlayerRelativePosPerspective], a @@ -81,8 +95,6 @@ PalletTownScript2: ld a, 1 ; oak ldh [hSpriteIndex], a call MoveSprite - ld a, $FF - ld [wJoyIgnore], a ; trigger the next script ld a, 3 @@ -93,47 +105,106 @@ PalletTownScript3: ld a, [wd730] bit 0, a ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpritePlayerStateData1FacingDirection], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, 1 ld [wcf0d], a - ld a, $FC - ld [wJoyIgnore], a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, 1 ldh [hSpriteIndexOrTextID], a call DisplayTextID -; set up movement script that causes the player to follow Oak to his lab + ; oak faces the horizontally adjacent patch of grass to face pikachu ld a, $FF ld [wJoyIgnore], a - ld a, 1 + ld a, $2 + ld [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 + ldh [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $ff + ld [wJoyIgnore], a + + ; trigger the next script + ld a, 6 + ld [wPalletTownCurScript], a + ret + +PalletTownScript6: + xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $1 ld [wSpriteIndex], a xor a ld [wNPCMovementScriptFunctionNum], a - ld a, 1 + ld a, $1 ld [wNPCMovementScriptPointerTableNum], a ldh a, [hLoadedROMBank] 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: text_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: text_asm ld c, 10 call DelayFrames - xor a - ld [wEmotionBubbleSpriteIndex], a ; player's sprite - ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE - predef EmotionBubble ld a, PLAYER_DIR_DOWN ld [wPlayerMovingDirection], a + ld a, 0 + ld [wEmotionBubbleSpriteIndex], a ; player's sprite + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble jp TextScriptEnd OakWalksUpText: text_far _OakWalksUpText text_end -PalletTownText2: ; girl +PalletTownText_19002: + text_far _OakWhewText + text_end + +PalletTownText8: ; girl + text_far _OakGrassText + text_end + +PalletTownText2: ; fat man text_far _PalletTownText2 text_end -PalletTownText3: ; fat man +PalletTownText3: ; sign by lab text_far _PalletTownText3 text_end -PalletTownText4: ; sign by lab +PalletTownText4: ; sign by fence text_far _PalletTownText4 text_end -PalletTownText5: ; sign by fence +PalletTownText5: ; sign by Red's house text_far _PalletTownText5 text_end -PalletTownText6: ; sign by Red's house +PalletTownText6: ; sign by Blue's house text_far _PalletTownText6 text_end -PalletTownText7: ; sign by Blue's house +PalletTownText7: text_far _PalletTownText7 text_end diff --git a/scripts/PewterCity.asm b/scripts/PewterCity.asm index 221834de..26827bef 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 @@ -23,14 +26,10 @@ PewterCityScript0: PewterCityScript_1925e: CheckEvent EVENT_BEAT_BROCK ret nz -IF DEF(_DEBUG) - call DebugPressedOrHeldB - ret nz -ENDC ld hl, CoordsData_19277 call ArePlayerCoordsInArray ret nc - ld a, $f0 + ld a, $fc ld [wJoyIgnore], a ld a, $5 ldh [hSpriteIndexOrTextID], a @@ -52,9 +51,9 @@ PewterCityScript1: ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, ($3 << 4) | SPRITE_FACING_UP + ld a, SPRITE_FACING_UP ldh [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] @@ -119,10 +118,7 @@ PewterCityScript4: ldh [hSpriteIndex], a ld a, SPRITE_FACING_LEFT ldh [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, ($1 << 4) | SPRITE_FACING_LEFT - ldh [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] diff --git a/scripts/PewterGym.asm b/scripts/PewterGym.asm index a1fda3b9..76a58b71 100755 --- a/scripts/PewterGym.asm +++ b/scripts/PewterGym.asm @@ -14,7 +14,8 @@ PewterGym_Script: .LoadNames: ld hl, .CityName ld de, .LeaderName - jp LoadGymLeaderAndCityName + call LoadGymLeaderAndCityName + ret .CityName: db "PEWTER CITY@" @@ -41,7 +42,6 @@ PewterGymScript3: jp z, PewterGymScript_5c3bf ld a, $f0 ld [wJoyIgnore], a - PewterGymScript_5c3df: ld a, $4 ldh [hSpriteIndexOrTextID], a @@ -151,7 +151,7 @@ PewterGymText6: PewterGymText_5c4bc: text_far _PewterGymText_5c4bc - sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded + sound_get_item_1 text_far _PewterGymText_5c4c1 text_end @@ -184,6 +184,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 @@ -200,6 +203,11 @@ PewterGymText3: .asm_5c512 jp TextScriptEnd +.asm_5c3fa + ld hl, PewterGymText_5c41c + call PrintText + jp TextScriptEnd + PewterGymText_5c515: text_far _PewterGymText_5c515 text_end @@ -219,3 +227,8 @@ PewterGymText_5c524: PewterGymText_5c529: text_far _PewterGymText_5c529 text_end + +PewterGymText_5c41c: + text_far _PewterGymGuyText + text_end + diff --git a/scripts/PewterMart.asm b/scripts/PewterMart.asm index 2b732129..a0e9e63e 100755 --- a/scripts/PewterMart.asm +++ b/scripts/PewterMart.asm @@ -14,6 +14,7 @@ PewterMartText2: ld hl, .Text call PrintText jp TextScriptEnd + .Text text_far _PewterMartText2 text_end @@ -23,6 +24,7 @@ PewterMartText3: ld hl, .Text call PrintText jp TextScriptEnd + .Text text_far _PewterMartText3 text_end diff --git a/scripts/PewterNidoranHouse.asm b/scripts/PewterNidoranHouse.asm index 93d430c0..77fb12c0 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 5030244c..247ecb03 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: script_pokecenter_nurse @@ -17,70 +22,18 @@ PewterPokecenterText2: PewterJigglypuffText: text_asm - ld a, TRUE - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, .JigglypuffText - call PrintText - - ld a, SFX_STOP_ALL_MUSIC - call PlaySound - ld c, 32 - call DelayFrames - - ld hl, JigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - - ld a, [wSprite03StateData1ImageIndex] - ld hl, wJigglypuffFacingDirections -.findMatchingFacingDirectionLoop - cp [hl] - inc hl - jr nz, .findMatchingFacingDirectionLoop - dec hl - - push hl - ld c, BANK(Music_JigglypuffSong) - ld a, MUSIC_JIGGLYPUFF_SONG - call PlayMusic - pop hl - -.spinMovementLoop - ld a, [hl] - ld [wSprite03StateData1ImageIndex], a -; rotate the array - push hl - ld hl, wJigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - 1 - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - ld a, [wJigglypuffFacingDirections - 1] - ld [wJigglypuffFacingDirections + 3], a - pop hl - ld c, 24 - call DelayFrames - ld a, [wChannelSoundIDs] - ld b, a - ld a, [wChannelSoundIDs + Ch2] - or b - jr nz, .spinMovementLoop - - ld c, 48 - call DelayFrames - call PlayDefaultMusic + farcall PewterJigglypuff jp TextScriptEnd -.JigglypuffText: - text_far _PewterJigglypuffText - text_end - -JigglypuffFacingDirections: - db $30 | SPRITE_FACING_DOWN - db $30 | SPRITE_FACING_LEFT - db $30 | SPRITE_FACING_UP - db $30 | SPRITE_FACING_RIGHT -JigglypuffFacingDirectionsEnd: - PewterTradeNurseText: script_cable_club_receptionist + +PewterPokecenterText5: + text_asm + farcall Func_f1d98 + jp TextScriptEnd + +PewterPokecenterText6: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/PewterPokecenter2.asm b/scripts/PewterPokecenter2.asm new file mode 100755 index 00000000..79d22b2f --- /dev/null +++ b/scripts/PewterPokecenter2.asm @@ -0,0 +1,79 @@ +Func_f1d98:: + ld hl, PewterPokecenterText_f1d9f + call PrintText + ret + +PewterPokecenterText_f1d9f: + text_far _PewterPokecenterText3 + text_end + +PewterJigglypuff:: + ld a, TRUE + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .JigglypuffText + call PrintText + + call StopAllMusic + ld c, 32 + call DelayFrames + + ld hl, JigglypuffFacingDirections + ld de, wJigglypuffFacingDirections + ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections + call CopyData + + ld a, [wSprite03StateData1ImageIndex] + ld hl, wJigglypuffFacingDirections +.findMatchingFacingDirectionLoop + cp [hl] + inc hl + jr nz, .findMatchingFacingDirectionLoop + dec hl + + push hl + ld c, BANK(Music_JigglypuffSong) + ld a, MUSIC_JIGGLYPUFF_SONG + call PlayMusic + pop hl + +.spinMovementLoop + ld a, [hl] + ld [wSprite03StateData1ImageIndex], a +; rotate the array + push hl + ld hl, wJigglypuffFacingDirections + ld de, wJigglypuffFacingDirections - 1 + ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections + call CopyData + ld a, [wJigglypuffFacingDirections - 1] + ld [wJigglypuffFacingDirections + 3], a + pop hl + ld c, 24 + call DelayFrames + ld a, [wChannelSoundIDs] + ld b, a + ld a, [wChannelSoundIDs + Ch2] + or b + jr nz, .spinMovementLoop + + ld c, 48 + call DelayFrames + call PlayDefaultMusic + ld a, [wd472] + bit 7, a + ret z + callfar CheckPikachuFaintedOrStatused + ret c + call DisablePikachuFollowingPlayer + ret + +.JigglypuffText: + text_far _PewterJigglypuffText + text_end + +JigglypuffFacingDirections: + db $40 | SPRITE_FACING_DOWN + db $40 | SPRITE_FACING_LEFT + db $40 | SPRITE_FACING_UP + db $40 | SPRITE_FACING_RIGHT +JigglypuffFacingDirectionsEnd: diff --git a/scripts/PokemonFanClub.asm b/scripts/PokemonFanClub.asm index 717ba4bb..c7990f19 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 + ldh a, [hRandomAdd] + cp 25 + call c, FanClubScript_59a44 + ret + +FanClubScript_59a44: + ld a, [wd472] + bit 7, a + ret z + callfar CheckPikachuFaintedOrStatused + ret c + ld a, $1 + ld [wFanClubCurScript], a + xor a + ld [wPlayerMovingDirection], a + call UpdateSprites + call UpdateSprites + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + ld a, $f ; Pikachu + ld [wEmotionBubbleSpriteIndex], a + predef EmotionBubble + ld hl, PikachuMovementScript_59a8c + call ApplyPikachuMovementData + ld a, $2 + ld [wSpriteStateData1 + 3 * $10 + 1], a ; Seel + xor a ; SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 3 * $10 + 9], a + callfar InitializePikachuTextID + call DisablePikachuFollowingPlayer + ret + +PikachuMovementScript_59a8c: + db $00 + db $26 + db $20 + db $20 + db $20 + db $1e + db $3f PokemonFanClub_TextPointers: dw FanClubText1 @@ -18,22 +75,28 @@ PokemonFanClub_TextPointers: dw FanClubText4 dw FanClubText5 dw FanClubText6 - dw FanClubText7 - dw FanClubText8 FanClubText1: -; pikachu fan +; clefairy fan text_asm - CheckEvent EVENT_PIKACHU_FAN_BOAST + CheckEventHL EVENT_152 + jr z, .asm_59aaf + ld hl, .yellowtext + call PrintText + jr .done + +.asm_59aaf + CheckEventReuseHL EVENT_PIKACHU_FAN_BOAST jr nz, .mineisbetter + SetEventReuseHL EVENT_SEEL_FAN_BOAST ld hl, .normaltext call PrintText - SetEvent EVENT_SEEL_FAN_BOAST jr .done + .mineisbetter + ResetEventReuseHL EVENT_PIKACHU_FAN_BOAST ld hl, .bettertext call PrintText - ResetEvent EVENT_PIKACHU_FAN_BOAST .done jp TextScriptEnd @@ -45,19 +108,29 @@ FanClubText1: text_far PikachuFanBetterText text_end +.yellowtext + text_far PikachuFanPrintText + text_end + FanClubText2: ; seel fan text_asm - CheckEvent EVENT_SEEL_FAN_BOAST + CheckEventHL EVENT_152 + jr z, .asm_59ae7 + ld hl, .yellowtext + call PrintText + jr .done +.asm_59ae7 + CheckEventReuseHL EVENT_SEEL_FAN_BOAST jr nz, .mineisbetter + SetEventReuseHL EVENT_PIKACHU_FAN_BOAST ld hl, .normaltext call PrintText - SetEvent EVENT_PIKACHU_FAN_BOAST jr .done .mineisbetter + ResetEventReuseHL EVENT_SEEL_FAN_BOAST ld hl, .bettertext call PrintText - ResetEvent EVENT_SEEL_FAN_BOAST .done jp TextScriptEnd @@ -69,12 +142,16 @@ FanClubText2: text_far SeelFanBetterText text_end +.yellowtext + text_far SeelFanPrintText + text_end + FanClubText3: ; pikachu text_asm ld hl, .text call PrintText - ld a, PIKACHU + ld a, CLEFAIRY call PlayCry call WaitForSoundToFinish jp TextScriptEnd @@ -100,9 +177,20 @@ FanClubText4: FanClubText5: ; chair text_asm - call FanClubBikeInBag - jr nz, .nothingleft + CheckEventHL EVENT_152 + jr z, .check_bike_voucher + ld hl, Text_59c1f + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr z, .select_mon_to_print + ld hl, Text_59c24 + jr .gbpals_print_text +.check_bike_voucher + CheckEvent EVENT_GOT_BIKE_VOUCHER + jr nz, .nothingleft ld hl, .meetchairtext call PrintText call YesNoChoice @@ -119,21 +207,58 @@ FanClubText5: ld hl, .receivedvouchertext call PrintText SetEvent EVENT_GOT_BIKE_VOUCHER - jr .done + jp TextScriptEnd .bag_full ld hl, .bagfulltext - call PrintText - jr .done + jr .gbpals_print_text .nothanks ld hl, .nostorytext - call PrintText - jr .done + jr .gbpals_print_text .nothingleft ld hl, .finaltext +.gbpals_print_text + push hl + call LoadGBPal + pop hl call PrintText -.done jp TextScriptEnd +.select_mon_to_print + call GBPalWhiteOutWithDelay3 + call LoadCurrentMapView + call SaveScreenTilesToBuffer2 + ld a, $ff + ld [wUpdateSpritesEnabled], a + ld a, $00 + ld [wTempTilesetNumTiles], a + call DisplayPartyMenu + jp nc, .print + call GBPalWhiteOutWithDelay3 + call RestoreScreenTilesAndReloadTilePatterns + ld hl, Text_59c24 + jr .gbpals_print_text + +.print + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callfar PrintFanClubPortrait + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_59c2e + ldh a, [hOaksAideResult] + and a + jr nz, .gbpals_print_text + ld hl, Text_59c29 + jr .gbpals_print_text + .meetchairtext text_far FanClubMeetChairText text_end @@ -160,14 +285,22 @@ FanClubText5: text_far FanClubBagFullText text_end -FanClubText6: - text_far _FanClubText6 +Text_59c1f: + text_far FanClubChairPrintText1 + text_end + +Text_59c24: + text_far FanClubChairPrintText2 + text_end + +Text_59c29: + text_far FanClubChairPrintText3 text_end -FanClubText7: - text_far _FanClubText7 +Text_59c2e: + text_far FanClubChairPrintText4 text_end -FanClubText8: - text_far _FanClubText8 +FanClubText6: + text_far _FanClubText6 text_end diff --git a/scripts/PokemonTower1F.asm b/scripts/PokemonTower1F.asm index 65614523..0870364c 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 be3b5b89..5065e559 100755 --- a/scripts/PokemonTower2F.asm +++ b/scripts/PokemonTower2F.asm @@ -17,18 +17,12 @@ PokemonTower2F_ScriptPointers: dw PokemonTower2Script2 PokemonTower2Script0: -IF DEF(_DEBUG) - call DebugPressedOrHeldB - ret nz -ENDC CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL ret nz ld hl, CoordsData_6055e call ArePlayerCoordsInArray ret nc - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -75,14 +69,13 @@ PokemonTower2Script1: ld de, MovementData_605b2 CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT jr nz, .asm_60589 + callfar Func_f1e22 ld de, MovementData_605a9 .asm_60589 ld a, $1 ldh [hSpriteIndex], a call MoveSprite - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, $2 ld [wPokemonTower2FCurScript], a @@ -148,21 +141,8 @@ PokemonTower2Text1: call SaveEndBattleTextPointers ld a, OPP_RIVAL2 ld [wCurOpponent], a - - ; select which team to use during the encounter ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle - ld a, $4 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $5 - jr .done -.Charmander - ld a, $6 -.done + add $1 ld [wTrainerNo], a ld a, $1 diff --git a/scripts/PokemonTower2F_2.asm b/scripts/PokemonTower2F_2.asm new file mode 100755 index 00000000..0dfbb965 --- /dev/null +++ b/scripts/PokemonTower2F_2.asm @@ -0,0 +1,12 @@ +Func_f1e22:: + ld hl, PikachuMovementData_f1e2b + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +PikachuMovementData_f1e2b: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/PokemonTower7F.asm b/scripts/PokemonTower7F.asm index e098b95f..75e67a72 100755 --- a/scripts/PokemonTower7F.asm +++ b/scripts/PokemonTower7F.asm @@ -1,69 +1,234 @@ 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 -PokemonTower7Script2: - ld hl, wFlags_0xcd60 - res 0, [hl] - ld a, [wIsInBattle] - cp $ff - jp z, PokemonTower7Script_60d18 - call EndTrainerBattle - ld a, $f0 +PokemonTower7Script0: + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 + call z, PokemonTower7Script_60d2a + ret + +PokemonTower7Script_60d2a: + ld a, [wYCoord] + cp $c + ret nz + ResetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + ld a, [wXCoord] + cp $a + jr z, .asm_60d47 + ld a, [wXCoord] ; why? + cp $b + ret nz + SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 +.asm_60d47 + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ldh [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a - ld a, [wSpriteIndex] + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7Script_60eaf + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7Script_60eaf + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $4 ldh [hSpriteIndexOrTextID], a call DisplayTextID - call PokemonTower7Script_60db6 - ld a, $3 - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + ld a, $ff + ld [wJoyIgnore], a + ld a, $1 + call PokemonTower7Script_60d05 ret +PokemonTower7MovementData_60d7a: + db $4 +PokemonTower7MovementData_60d7b: + db $4 + db $4 + db $4 + db $FF + +PokemonTower7Script1: + ld de, PokemonTower7MovementData_60d7b + CheckEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_1 + jr z, .asm_60d8c + ld de, PokemonTower7MovementData_60d7a +.asm_60d8c + ld a, $1 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $2 + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script2: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz PokemonTower7Script3: + ld a, $0 + ld [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 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $5 + call PokemonTower7Script_60d05 + ret +PokemonTower7Script5: + ld a, $ff + ld [wJoyIgnore], a ld a, [wd730] bit 0, a ret nz - ld hl, wMissableObjectList - ld a, [wSpriteIndex] - ld b, a -.missableObjectsListLoop - ld a, [hli] - cp b ; search for sprite ID in missing objects list - ld a, [hli] - jr nz, .missableObjectsListLoop - ld [wMissableObjectIndex], a ; remove missable object - predef HideObject +PokemonTower7Script6: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +PokemonTower7Script7: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, PokemonTower7JessieJamesEndBattleText + ld de, PokemonTower7JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2c + ld [wTrainerNo], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ld 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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $9 + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script9: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_POKEMON_TOWER_7F_JESSIE + call PokemonTower7Script_60ebe + ld a, HS_POKEMON_TOWER_7F_JAMES + call PokemonTower7Script_60ebe + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $a + call PokemonTower7Script_60d05 + ret + +PokemonTower7Script10: + call PlayDefaultMusic xor a + ldh [hJoyHeld], a ld [wJoyIgnore], a - ld [wSpriteIndex], a - ld [wTrainerHeaderFlagBit], a - ld [wUnusedDA38], a + SetEvent EVENT_BEAT_POKEMONTOWER_7_TRAINER_0 ld a, $0 - ld [wPokemonTower7FCurScript], a - ld [wCurMapScript], a + call PokemonTower7Script_60d05 ret -PokemonTower7Script4: +PokemonTower7Script_60eaf: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +PokemonTower7Script_60ebe: + ld [wMissableObjectIndex], a + predef HideObject + ret + +PokemonTower7Script11: ld a, $ff ld [wJoyIgnore], a ld a, HS_POKEMON_TOWER_7F_MR_FUJI @@ -81,146 +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] - ldh [hSpriteIndex], a - jp MoveSprite -.asm_60dde - inc hl -.asm_60ddf - inc hl - inc hl - jr .asm_60dcb - -CoordsData_60de3: - map_coord_movement 9, 12, MovementData_60e13 - map_coord_movement 10, 11, MovementData_60e1b - map_coord_movement 11, 11, MovementData_60e22 - map_coord_movement 12, 11, MovementData_60e22 - map_coord_movement 12, 10, MovementData_60e28 - map_coord_movement 11, 9, MovementData_60e30 - map_coord_movement 10, 9, MovementData_60e22 - map_coord_movement 9, 9, MovementData_60e22 - map_coord_movement 9, 8, MovementData_60e37 - map_coord_movement 10, 7, MovementData_60e22 - map_coord_movement 11, 7, MovementData_60e22 - map_coord_movement 12, 7, MovementData_60e22 - -MovementData_60e13: - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_LEFT - db -1 ; end - -MovementData_60e1b: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - -MovementData_60e22: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - -MovementData_60e28: - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - -MovementData_60e30: - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - -MovementData_60e37: - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db -1 ; end - PokemonTower7F_TextPointers: dw PokemonTower7Text1 dw PokemonTower7Text2 dw PokemonTower7Text3 - dw PokemonTower7FujiText - -PokemonTower7TrainerHeader0: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_0, 3, PokemonTower7BattleText1, PokemonTower7EndBattleText1, PokemonTower7AfterBattleText1 -PokemonTower7TrainerHeader1: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_1, 3, PokemonTower7BattleText2, PokemonTower7EndBattleText2, PokemonTower7AfterBattleText2 -PokemonTower7TrainerHeader2: - trainer EVENT_BEAT_POKEMONTOWER_7_TRAINER_2, 3, PokemonTower7BattleText3, PokemonTower7EndBattleText3, PokemonTower7AfterBattleText3 - db -1 ; end + dw PokemonTower7Text4 + dw PokemonTower7Text5 + dw PokemonTower7Text6 PokemonTower7Text1: - text_asm - ld hl, PokemonTower7TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - PokemonTower7Text2: + text_end + +PokemonTower7Text4: + text_far _PokemonTowerJessieJamesText1 text_asm - ld hl, PokemonTower7TrainerHeader1 - call TalkToTrainer + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames jp TextScriptEnd -PokemonTower7Text3: +PokemonTower7Text5: + text_far _PokemonTowerJessieJamesText2 + text_end + +PokemonTower7JessieJamesEndBattleText: + text_far _PokemonTowerJessieJamesText3 + text_end + +PokemonTower7Text6: + text_far _PokemonTowerJessieJamesText4 text_asm - ld hl, PokemonTower7TrainerHeader2 - call TalkToTrainer + ld c, 64 + call DelayFrames jp TextScriptEnd -PokemonTower7FujiText: +PokemonTower7Text3: text_asm - ld hl, TowerRescueFujiText + ld hl, PokemonTower7Text_60f75 call PrintText SetEvent EVENT_RESCUED_MR_FUJI SetEvent EVENT_RESCUED_MR_FUJI_2 @@ -233,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: text_far _TowerRescueFujiText text_end - -PokemonTower7BattleText1: - text_far _PokemonTower7BattleText1 - text_end - -PokemonTower7EndBattleText1: - text_far _PokemonTower7EndBattleText1 - text_end - -PokemonTower7AfterBattleText1: - text_far _PokemonTower7AfterBattleText1 - text_end - -PokemonTower7BattleText2: - text_far _PokemonTower7BattleText2 - text_end - -PokemonTower7EndBattleText2: - text_far _PokemonTower7EndBattleText2 - text_end - -PokemonTower7AfterBattleText2: - text_far _PokemonTower7AfterBattleText2 - text_end - -PokemonTower7BattleText3: - text_far _PokemonTower7BattleText3 - text_end - -PokemonTower7EndBattleText3: - text_far _PokemonTower7EndBattleText3 - text_end - -PokemonTower7AfterBattleText3: - text_far _PokemonTower7AfterBattleText3 - text_end diff --git a/scripts/RedsHouse1F.asm b/scripts/RedsHouse1F.asm index bdeb96d7..4af4a2e6 100755 --- a/scripts/RedsHouse1F.asm +++ b/scripts/RedsHouse1F.asm @@ -1,5 +1,6 @@ RedsHouse1F_Script: - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret RedsHouse1F_TextPointers: dw RedsHouse1FMomText @@ -7,63 +8,10 @@ RedsHouse1F_TextPointers: RedsHouse1FMomText: text_asm - ld a, [wd72e] - bit 3, a ; received a Pokémon from Oak? - jr nz, .heal - ld hl, MomWakeUpText - call PrintText - jr .done -.heal - call MomHealPokemon -.done + callfar Func_f1b73 jp TextScriptEnd -MomWakeUpText: - text_far _MomWakeUpText - text_end - -MomHealPokemon: - ld hl, MomHealText1 - call PrintText - call GBFadeOutToWhite - call ReloadMapData - predef HealParty - ld a, MUSIC_PKMN_HEALED - ld [wNewSoundID], a - call PlaySound -.next - ld a, [wChannelSoundIDs] - cp MUSIC_PKMN_HEALED - jr z, .next - ld a, [wMapMusicSoundID] - ld [wNewSoundID], a - call PlaySound - call GBFadeInFromWhite - ld hl, MomHealText2 - jp PrintText - -MomHealText1: - text_far _MomHealText1 - text_end -MomHealText2: - text_far _MomHealText2 - text_end - RedsHouse1FTVText: text_asm - ld a, [wSpritePlayerStateData1FacingDirection] - cp SPRITE_FACING_UP - ld hl, TVWrongSideText - jr nz, .got_text - ld hl, StandByMeText -.got_text - call PrintText + callfar Func_f1bc4 jp TextScriptEnd - -StandByMeText: - text_far _StandByMeText - text_end - -TVWrongSideText: - text_far _TVWrongSideText - text_end diff --git a/scripts/RedsHouse1F2.asm b/scripts/RedsHouse1F2.asm new file mode 100755 index 00000000..e1b2145b --- /dev/null +++ b/scripts/RedsHouse1F2.asm @@ -0,0 +1,58 @@ +Func_f1b73:: + ld a, [wd72e] + bit 3, a ; received a Pokémon from Oak? + jp nz, MomHealPokemon + ld hl, MomWakeUpText + call PrintText + ret + +MomWakeUpText: + text_far _MomWakeUpText + text_end + +MomHealPokemon: + ld hl, MomHealText1 + call PrintText + call GBFadeOutToWhite + call ReloadMapData + predef HealParty + ld a, MUSIC_PKMN_HEALED + ld [wNewSoundID], a + call PlaySound +.next + ld a, [wChannelSoundIDs] + cp MUSIC_PKMN_HEALED + jr z, .next + ld a, [wMapMusicSoundID] + ld [wNewSoundID], a + call PlaySound + call GBFadeInFromWhite + ld hl, MomHealText2 + call PrintText + ret + +MomHealText1: + text_far _MomHealText1 + text_end +MomHealText2: + text_far _MomHealText2 + text_end + +Func_f1bc4:: + ld hl, TVWrongSideText + ld a, [wSpritePlayerStateData1FacingDirection] + cp SPRITE_FACING_UP + jp nz, .got_text + ld hl, StandByMeText +.got_text + call PrintText + ret + +StandByMeText: + text_far _StandByMeText + text_end + +TVWrongSideText: + text_far _TVWrongSideText + text_end + diff --git a/scripts/RedsHouse2F.asm b/scripts/RedsHouse2F.asm index b44b9f98..4eb465c4 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 - ldh [hJoyHeld], a - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a - ld a, 1 - ld [wRedsHouse2FCurScript], a - ret - RedsHouse2FScript1: +RedsHouse2FScript2: +RedsHouse2FScript3: +RedsHouse2FScript4: ret RedsHouse2F_TextPointers: diff --git a/scripts/RockTunnelPokecenter.asm b/scripts/RockTunnelPokecenter.asm index 755bb8f8..3b3da387 100755 --- a/scripts/RockTunnelPokecenter.asm +++ b/scripts/RockTunnelPokecenter.asm @@ -7,6 +7,7 @@ RockTunnelPokecenter_TextPointers: dw RockTunnelPokecenterText2 dw RockTunnelPokecenterText3 dw RockTunnelTradeNurseText + dw RockTunnelPokecenterText5 RockTunnelHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ RockTunnelPokecenterText3: RockTunnelTradeNurseText: script_cable_club_receptionist + +RockTunnelPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/RocketHideoutB4F.asm b/scripts/RocketHideoutB4F.asm index bc13da12..564adc2a 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,37 +68,286 @@ 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 + ldh [hJoyHeld], a + ld a, $fc + ld [wJoyIgnore], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + call UpdateSprites + call Delay3 + call UpdateSprites + call Delay3 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $b + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $ff + ld [wJoyIgnore], a + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideout4Script_45747 + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideout4Script_45747 + ld a, $4 + call RocketHideout4Script_4551e + ret + +RocketHideout4JessieJamesMovementData_45605: + db $4 +RocketHideout4JessieJamesMovementData_45606: + db $4 + db $4 + db $4 + db $ff + +RocketHideout4Script4: + ld de, RocketHideout4JessieJamesMovementData_45605 + CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1 + jr z, .asm_45617 + ld de, RocketHideout4JessieJamesMovementData_45606 +.asm_45617 + ld a, $2 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $5 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script5: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +RocketHideout4Script6: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $8 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script8: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz + ld a, $fc + ld [wJoyIgnore], a +RocketHideout4Script9: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +RocketHideout4Script10: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, RocketHideout4JessieJamesEndBattleText + ld de, RocketHideout4JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2b + ld [wTrainerNo], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_6A0 + ld a, $b + call RocketHideout4Script_4551e + ret + +RocketHideout4Script11: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, RocketHideout4Script_45510 + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $c + call RocketHideout4Script_4551e + ret + +RocketHideout4Script12: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_ROCKET_HIDEOUT_B4F_JAMES + call RocketHideout4Script_45756 + ld a, HS_ROCKET_HIDEOUT_B4F_JESSIE + call RocketHideout4Script_45756 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $d + call RocketHideout4Script_4551e + ret + +RocketHideout4Script13: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0 + ld a, $0 + call RocketHideout4Script_4551e + ret + +RocketHideout4Script_45747: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +RocketHideout4Script_45756: + ld [wMissableObjectIndex], a + predef HideObject + ret + RocketHideoutB4F_TextPointers: + dw RocketHideout4Text0 dw RocketHideout4Text1 dw RocketHideout4Text2 dw RocketHideout4Text3 - dw RocketHideout4Text4 dw PickUpItemText dw PickUpItemText dw PickUpItemText dw PickUpItemText dw PickUpItemText + dw RocketHideout4Text9 dw RocketHideout4Text10 + dw RocketHideout4Text11 + dw RocketHideout4Text12 RocketHideout4TrainerHeader0: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_0, 0, RocketHideout4BattleText2, RocketHideout4EndBattleText2, RocketHideout4AfterBattleText2 -RocketHideout4TrainerHeader1: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_1, 0, RocketHideout4BattleText3, RocketHideout4EndBattleText3, RocketHideout4AfterBattleText3 -RocketHideout4TrainerHeader2: - trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideout4BattleText4, RocketHideout4EndBattleText4, RocketHideout4AfterBattleText4 + trainer EVENT_BEAT_ROCKET_HIDEOUT_4_TRAINER_2, 1, RocketHideout4Trainer0BeforeText, RocketHideout4Trainer0EndBattleText, RocketHideout4Trainer0AfterText db -1 ; end RocketHideout4Text1: +RocketHideout4Text2: + text_end + +RocketHideout4Text10: + text_far _RocketHideoutJessieJamesText1 + text_asm + ld c, 10 + call DelayFrames + ld a, $8 + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +RocketHideout4Text11: + text_far _RocketHideoutJessieJamesText2 + text_end + +RocketHideout4JessieJamesEndBattleText: + text_far _RocketHideoutJessieJamesText3 + text_end + +RocketHideout4Text12: + text_far _RocketHideoutJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + +RocketHideout4Text0: text_asm CheckEvent EVENT_BEAT_ROCKET_HIDEOUT_GIOVANNI - jp nz, .asm_545571 - ld hl, RocketHideout4Text_4557a + jp nz, .asm_457fb + ld hl, RocketHideout4Text_45804 call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, RocketHideout4Text_4557f - ld de, RocketHideout4Text_4557f + ld hl, RocketHideout4Text_45809 + ld de, RocketHideout4Text_45809 call SaveEndBattleTextPointers ldh a, [hSpriteIndex] ld [wSpriteIndex], a @@ -113,87 +358,52 @@ RocketHideout4Text1: ld a, $3 ld [wRocketHideoutB4FCurScript], a ld [wCurMapScript], a - jr .asm_209f0 -.asm_545571 - ld hl, RocketHideout4Text10 + jr .asm_45801 + +.asm_457fb + ld hl, RocketHideout4Text9 call PrintText -.asm_209f0 +.asm_45801 jp TextScriptEnd -RocketHideout4Text_4557a: +RocketHideout4Text_45804: text_far _RocketHideout4Text_4557a text_end -RocketHideout4Text_4557f: +RocketHideout4Text_45809: text_far _RocketHideout4Text_4557f text_end -RocketHideout4Text10: +RocketHideout4Text9: text_far _RocketHideout4Text_45584 text_end -RocketHideout4Text2: - text_asm - ld hl, RocketHideout4TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText2: - text_far _RocketHideout4BattleText2 - text_end - -RocketHideout4EndBattleText2: - text_far _RocketHideout4EndBattleText2 - text_end - -RocketHideout4AfterBattleText2: - text_far _RocketHide4AfterBattleText2 - text_end - RocketHideout4Text3: text_asm - ld hl, RocketHideout4TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd - -RocketHideout4BattleText3: - text_far _RocketHideout4BattleText3 - text_end - -RocketHideout4EndBattleText3: - text_far _RocketHideout4EndBattleText3 - text_end - -RocketHideout4AfterBattleText3: - text_far _RocketHide4AfterBattleText3 - text_end - -RocketHideout4Text4: - text_asm - ld hl, RocketHideout4TrainerHeader2 + ld hl, RocketHideout4TrainerHeader0 call TalkToTrainer jp TextScriptEnd -RocketHideout4BattleText4: +RocketHideout4Trainer0BeforeText: text_far _RocketHideout4BattleText4 text_end -RocketHideout4EndBattleText4: +RocketHideout4Trainer0EndBattleText: text_far _RocketHideout4EndBattleText4 - text_end - -RocketHideout4AfterBattleText4: + text_promptbutton text_asm - ld hl, RocketHideout4Text_455ec - call PrintText - CheckAndSetEvent EVENT_ROCKET_DROPPED_LIFT_KEY - jr nz, .asm_455e9 + SetEvent EVENT_ROCKET_DROPPED_LIFT_KEY ld a, HS_ROCKET_HIDEOUT_B4F_ITEM_5 ld [wMissableObjectIndex], a predef ShowObject -.asm_455e9 jp TextScriptEnd -RocketHideout4Text_455ec: +RocketHideout4Trainer0AfterText: + text_asm + ld hl, RocketHideout4Text_45844 + call PrintText + jp TextScriptEnd + +RocketHideout4Text_45844: text_far _RocketHideout4Text_455ec text_end diff --git a/scripts/Route1.asm b/scripts/Route1.asm index bd9afea3..d2f0b766 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: text_asm - CheckAndSetEvent EVENT_GOT_POTION_SAMPLE - jr nz, .got_item - ld hl, Route1ViridianMartSampleText - call PrintText - lb bc, POTION, 1 - call GiveItem - jr nc, .bag_full - ld hl, Route1Text_1cae8 - jr .done -.bag_full - ld hl, Route1Text_1caf3 - jr .done -.got_item - ld hl, Route1Text_1caee -.done - call PrintText + farcall Func_f1ad2 jp TextScriptEnd -Route1ViridianMartSampleText: - text_far _Route1ViridianMartSampleText - text_end - -Route1Text_1cae8: - text_far _Route1Text_1cae8 - sound_get_item_1 - text_end - -Route1Text_1caee: - text_far _Route1Text_1caee - text_end - -Route1Text_1caf3: - text_far _Route1Text_1caf3 - text_end - Route1Text2: - text_far _Route1Text2 - text_end + text_asm + farcall Func_f1b0f + jp TextScriptEnd Route1Text3: - text_far _Route1Text3 - text_end + text_asm + farcall Func_f1b1b + jp TextScriptEnd diff --git a/scripts/Route11Gate2F.asm b/scripts/Route11Gate2F.asm index 47c8db22..65352cd9 100755 --- a/scripts/Route11Gate2F.asm +++ b/scripts/Route11Gate2F.asm @@ -9,7 +9,7 @@ Route11Gate2F_TextPointers: Route11GateUpstairsText1: text_asm - xor a ; TRADE_FOR_TERRY + ld a, TRADE_FOR_TERRY ld [wWhichTrade], a predef DoInGameTradeDialogue Route11GateUpstairsScriptEnd: diff --git a/scripts/Route19.asm b/scripts/Route19.asm index 8d0c9629..7e09c5e3 100755 --- a/scripts/Route19.asm +++ b/scripts/Route19.asm @@ -28,7 +28,7 @@ Route19_TextPointers: Route19TrainerHeader0: trainer EVENT_BEAT_ROUTE_19_TRAINER_0, 4, Route19BattleText1, Route19EndBattleText1, Route19AfterBattleText1 Route19TrainerHeader1: - trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 3, Route19BattleText2, Route19EndBattleText2, Route19AfterBattleText2 + trainer EVENT_BEAT_ROUTE_19_TRAINER_1, 4, Route19BattleText2, Route19EndBattleText2, Route19AfterBattleText2 Route19TrainerHeader2: trainer EVENT_BEAT_ROUTE_19_TRAINER_2, 3, Route19BattleText3, Route19EndBattleText3, Route19AfterBattleText3 Route19TrainerHeader3: @@ -50,60 +50,52 @@ Route19TrainerHeader9: Route19Text1: text_asm ld hl, Route19TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text2: text_asm ld hl, Route19TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text3: text_asm ld hl, Route19TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text4: text_asm ld hl, Route19TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text5: text_asm ld hl, Route19TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text6: text_asm ld hl, Route19TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text7: text_asm ld hl, Route19TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text8: text_asm ld hl, Route19TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text9: text_asm ld hl, Route19TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text10: text_asm ld hl, Route19TrainerHeader9 +Route19_TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/Route1_2.asm b/scripts/Route1_2.asm new file mode 100755 index 00000000..94748252 --- /dev/null +++ b/scripts/Route1_2.asm @@ -0,0 +1,53 @@ +Func_f1ad2:: + CheckAndSetEvent EVENT_GOT_POTION_SAMPLE + jr nz, .got_item + ld hl, Route1ViridianMartSampleText + call PrintText + lb bc, POTION, 1 + call GiveItem + jr nc, .bag_full + ld hl, Route1Text_1cae8 + jr .done +.bag_full + ld hl, Route1Text_1caf3 + jr .done +.got_item + ld hl, Route1Text_1caee +.done + call PrintText + ret + +Route1ViridianMartSampleText: + text_far _Route1ViridianMartSampleText + text_end + +Route1Text_1cae8: + text_far _Route1Text_1cae8 + sound_get_item_1 + text_end + +Route1Text_1caee: + text_far _Route1Text_1caee + text_end + +Route1Text_1caf3: + text_far _Route1Text_1caf3 + text_end + +Func_f1b0f:: + ld hl, Route1Text_f1b16 + call PrintText + ret + +Route1Text_f1b16: + text_far _Route1Text2 + text_end + +Func_f1b1b:: + ld hl, Route1Text_f1b22 + call PrintText + ret + +Route1Text_f1b22: + text_far _Route1Text3 + text_end diff --git a/scripts/Route22.asm b/scripts/Route22.asm index 1b02752f..5dfdc67e 100755 --- a/scripts/Route22.asm +++ b/scripts/Route22.asm @@ -22,16 +22,17 @@ Route22Script7: ret Route22Script_50ed6: + ld a, OPP_RIVAL1 + ld [wCurOpponent], a + ld a, $2 + ld [wTrainerNo], a + ret + +Route22Script_50ee1: + ld a, OPP_RIVAL2 + ld [wCurOpponent], a ld a, [wRivalStarter] - ld b, a -.asm_50eda - ld a, [hli] - cp b - jr z, .asm_50ee1 - inc hl - jr .asm_50eda -.asm_50ee1 - ld a, [hl] + add 7 ld [wTrainerNo], a ret @@ -88,9 +89,7 @@ Route22Script0: ld a, [wWalkBikeSurfState] and a jr z, .asm_50f4e - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_50f4e ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -131,24 +130,29 @@ Route22Script1: ld hl, Route22RivalDefeatedText1 ld de, Route22Text_511bc call SaveEndBattleTextPointers - ld a, OPP_RIVAL1 - ld [wCurOpponent], a - ld hl, StarterMons_50faf call Route22Script_50ed6 ld a, $2 ld [wRoute22CurScript], a ret -StarterMons_50faf: -; starter the rival picked, rival trainer number - db STARTER2, 4 - db STARTER3, 5 - db STARTER1, 6 +Route22RivalDefeatedText1: + text_far _Route22RivalDefeatedText1 + text_end + +Route22Text_511bc: + text_far _Route22Text_511bc + text_end Route22Script2: ld a, [wIsInBattle] cp $ff jp z, Route22Script_50ece + ld a, [wRivalStarter] + cp 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 @@ -167,9 +171,7 @@ Route22Script2: ld a, $1 ldh [hSpriteIndexOrTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, [wcf0d] cp $1 @@ -241,13 +243,9 @@ Route22Script_5104e: ld a, [wWalkBikeSurfState] and a jr z, .skipYVisibilityTesta - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .skipYVisibilityTesta - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateTempo ld a, $2 ldh [hSpriteIndex], a @@ -287,18 +285,18 @@ Route22Script4: ld hl, Route22RivalDefeatedText2 ld de, Route22Text_511d0 call SaveEndBattleTextPointers - ld a, OPP_RIVAL2 - ld [wCurOpponent], a - ld hl, StarterMons_510d9 - call Route22Script_50ed6 + call Route22Script_50ee1 ld a, $5 ld [wRoute22CurScript], a ret -StarterMons_510d9: - db STARTER2, 10 - db STARTER3, 11 - db STARTER1, 12 +Route22RivalDefeatedText2: + text_far _Route22RivalDefeatedText2 + text_end + +Route22Text_511d0: + text_far _Route22Text_511d0 + text_end Route22Script5: ld a, [wIsInBattle] @@ -326,9 +324,7 @@ Route22Script5: ld a, $2 ldh [hSpriteIndexOrTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStartAndTempo ld a, [wcf0d] cp $1 @@ -383,62 +379,15 @@ Route22_TextPointers: Route22Text1: text_asm - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr z, .asm_5118b - ld hl, Route22RivalAfterBattleText1 - call PrintText - jr .asm_51191 -.asm_5118b - ld hl, Route22RivalBeforeBattleText1 - call PrintText -.asm_51191 + farcall Func_f1b27 jp TextScriptEnd Route22Text2: text_asm - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE - jr z, .asm_511a4 - ld hl, Route22RivalAfterBattleText2 - call PrintText - jr .asm_511aa -.asm_511a4 - ld hl, Route22RivalBeforeBattleText2 - call PrintText -.asm_511aa + farcall Func_f1b47 jp TextScriptEnd -Route22RivalBeforeBattleText1: - text_far _Route22RivalBeforeBattleText1 - text_end - -Route22RivalAfterBattleText1: - text_far _Route22RivalAfterBattleText1 - text_end - -Route22RivalDefeatedText1: - text_far _Route22RivalDefeatedText1 - text_end - -Route22Text_511bc: - text_far _Route22Text_511bc - text_end - -Route22RivalBeforeBattleText2: - text_far _Route22RivalBeforeBattleText2 - text_end - -Route22RivalAfterBattleText2: - text_far _Route22RivalAfterBattleText2 - text_end - -Route22RivalDefeatedText2: - text_far _Route22RivalDefeatedText2 - text_end - -Route22Text_511d0: - text_far _Route22Text_511d0 - text_end - Route22FrontGateText: - text_far _Route22FrontGateText - text_end + text_asm + farcall Func_f1b67 + jp TextScriptEnd diff --git a/scripts/Route22Gate.asm b/scripts/Route22Gate.asm index 5acc343c..adbefe8a 100755 --- a/scripts/Route22Gate.asm +++ b/scripts/Route22Gate.asm @@ -23,9 +23,12 @@ Route22GateScript0: ret nc xor a ldh [hJoyHeld], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 1 * $10 + 9], a ld a, $1 ldh [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret Route22GateScriptCoords: dbmapcoord 4, 2 @@ -59,7 +62,7 @@ Route22Gate_TextPointers: Route22GateText1: text_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..7f3fa54d --- /dev/null +++ b/scripts/Route22_2.asm @@ -0,0 +1,50 @@ +Func_f1b27:: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE + jr z, .asm_5118b + ld hl, Route22RivalAfterBattleText1 + call PrintText + jr .asm_51191 + +.asm_5118b + ld hl, Route22RivalBeforeBattleText1 + call PrintText +.asm_51191 + ret + +Route22RivalBeforeBattleText1: + text_far _Route22RivalBeforeBattleText1 + text_end + +Route22RivalAfterBattleText1: + text_far _Route22RivalAfterBattleText1 + text_end + +Func_f1b47:: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE + jr z, .asm_511a4 + ld hl, Route22RivalAfterBattleText2 + call PrintText + jr .asm_511aa + +.asm_511a4 + ld hl, Route22RivalBeforeBattleText2 + call PrintText +.asm_511aa + ret + +Route22RivalBeforeBattleText2: + text_far _Route22RivalBeforeBattleText2 + text_end + +Route22RivalAfterBattleText2: + text_far _Route22RivalAfterBattleText2 + text_end + +Func_f1b67:: + ld hl, Route22FrontGateText_3c + call PrintText + ret + +Route22FrontGateText_3c: + text_far _Route22FrontGateText + text_end diff --git a/scripts/Route24.asm b/scripts/Route24.asm index aed112ac..fc4633e7 100755 --- a/scripts/Route24.asm +++ b/scripts/Route24.asm @@ -85,6 +85,7 @@ Route24_TextPointers: dw Route24Text6 dw Route24Text7 dw PickUpItemText + dw Route24Text8 Route24TrainerHeader0: trainer EVENT_BEAT_ROUTE_24_TRAINER_0, 4, Route24BattleText1, Route24EndBattleText1, Route24AfterBattleText1 @@ -149,7 +150,7 @@ Route24Text_51510: Route24Text_5151a: text_far _Route24Text_5151a - sound_get_item_1 + sound_get_key_item text_promptbutton text_end @@ -276,3 +277,59 @@ Route24EndBattleText6: Route24AfterBattleText6: text_far _Route24AfterBattleText6 text_end + +Route24Text8: + text_asm + CheckEvent EVENT_54F + jr nz, .asm_515d5 + ld hl, Route24Text_515de + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_515d0 + ld a, CHARMANDER + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, CHARMANDER, 10 + call GivePokemon + jp nc, TextScriptEnd + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, Route24Text_515e3 + call PrintText + SetEvent EVENT_54F + jp TextScriptEnd + +.asm_515d0 + ld hl, Route24Text_515e9 + jr .asm_515d8 + +.asm_515d5 + ld hl, Route24Text_515ee +.asm_515d8 + call PrintText + jp TextScriptEnd + +Route24Text_515de: + text_far _Route24DamianText1 + text_end + +Route24Text_515e3: + text_far _Route24DamianText2 + text_waitbutton + text_end + +Route24Text_515e9: + text_far _Route24DamianText3 + text_end + +Route24Text_515ee: + text_far _Route24DamianText4 + text_end diff --git a/scripts/Route25.asm b/scripts/Route25.asm index fba28bc4..400ac9ed 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 36883e09..01d5414d 100755 --- a/scripts/Route6.asm +++ b/scripts/Route6.asm @@ -24,7 +24,7 @@ Route6_TextPointers: Route6TrainerHeader0: trainer EVENT_BEAT_ROUTE_6_TRAINER_0, 0, Route6BattleText1, Route6EndBattleText1, Route6AfterBattleText1 Route6TrainerHeader1: - trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6BattleText2, Route6EndBattleText2, Route6AfterBattleText1 + trainer EVENT_BEAT_ROUTE_6_TRAINER_1, 0, Route6BattleText2, Route6EndBattleText2, Route6AfterBattleText2 Route6TrainerHeader2: trainer EVENT_BEAT_ROUTE_6_TRAINER_2, 4, Route6BattleText3, Route6EndBattleText3, Route6AfterBattleText3 Route6TrainerHeader3: @@ -67,6 +67,10 @@ Route6EndBattleText2: text_far _Route6EndBattleText2 text_end +Route6AfterBattleText2: + text_far _Route6AfterBattleText2 + text_end + Route6Text3: text_asm ld hl, Route6TrainerHeader2 diff --git a/scripts/Route7.asm b/scripts/Route7.asm index 1fd38abb..648cbb58 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 3167cd76..55443931 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 ldh [hJoyHeld], a diff --git a/scripts/Route9.asm b/scripts/Route9.asm index 5dc060c4..e69d4d35 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 @@ -28,7 +28,7 @@ Route9_TextPointers: Route9TrainerHeader0: trainer EVENT_BEAT_ROUTE_9_TRAINER_0, 3, Route9BattleText1, Route9EndBattleText1, Route9AfterBattleText1 Route9TrainerHeader1: - trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9BattleText2, Route9EndBattleText2, Route9AfterBattleText2 + trainer EVENT_BEAT_ROUTE_9_TRAINER_1, 2, Route9BattleTextAJ, Route9EndBattleTextAJ, Route9AfterBattleTextAJ Route9TrainerHeader2: trainer EVENT_BEAT_ROUTE_9_TRAINER_2, 4, Route9BattleText3, Route9EndBattleText3, Route9AfterBattleText3 Route9TrainerHeader3: @@ -50,7 +50,7 @@ Route9Text1: ld hl, Route9TrainerHeader0 jr Route9TalkToTrainer -Route9Text2: +Route9TextAJ: text_asm ld hl, Route9TrainerHeader1 jr Route9TalkToTrainer @@ -104,16 +104,16 @@ Route9AfterBattleText1: text_far _Route9AfterBattleText1 text_end -Route9BattleText2: - text_far _Route9BattleText2 +Route9BattleTextAJ: + text_far _Route9BattleTextAJ text_end -Route9EndBattleText2: - text_far _Route9EndBattleText2 +Route9EndBattleTextAJ: + text_far _Route9EndBattleTextAJ text_end -Route9AfterBattleText2: - text_far _Route9AfterBattleText2 +Route9AfterBattleTextAJ: + text_far _Route9AfterBattleTextAJ text_end Route9BattleText3: diff --git a/scripts/SSAnne2F.asm b/scripts/SSAnne2F.asm index d15ec180..d00917fe 100755 --- a/scripts/SSAnne2F.asm +++ b/scripts/SSAnne2F.asm @@ -24,9 +24,7 @@ SSAnne2Script0: ld hl, CoordsData_61411 call ArePlayerCoordsInArray ret nc - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -98,23 +96,8 @@ SSAnne2Script1: call Delay3 ld a, OPP_RIVAL2 ld [wCurOpponent], a - - ; select which team to use during the encounter - ld a, [wRivalStarter] - cp STARTER2 - jr nz, .NotSquirtle ld a, $1 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done ld [wTrainerNo], a - call SSAnne2Script_61416 ld a, $2 ld [wSSAnne2FCurScript], a @@ -144,9 +127,7 @@ SSAnne2Script2: ld a, $2 ldh [hSpriteIndex], a call MoveSprite - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld a, $3 ld [wSSAnne2FCurScript], a diff --git a/scripts/SSAnne2FRooms.asm b/scripts/SSAnne2FRooms.asm index 3fe2d34f..ff1dcfaf 100755 --- a/scripts/SSAnne2FRooms.asm +++ b/scripts/SSAnne2FRooms.asm @@ -1,8 +1,5 @@ SSAnne2FRooms_Script: - ld a, TRUE - ld [wAutoTextBoxDrawingControl], a - xor a - ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call DisableAutoTextBoxDrawing ld hl, SSAnne9TrainerHeader0 ld de, SSAnne2FRooms_ScriptPointers ld a, [wSSAnne2FRoomsCurScript] @@ -100,44 +97,24 @@ SSAnne9Text_61c10: SSAnne9Text10: text_asm - ld hl, SSAnne9Text_61c1f - call PrintText + farcall Func_f2570 jp TextScriptEnd -SSAnne9Text_61c1f: - text_far _SSAnne9Text_61c1f - text_end - SSAnne9Text11: text_asm - ld hl, SSAnne9Text_61c2e - call PrintText + farcall Func_f257c jp TextScriptEnd -SSAnne9Text_61c2e: - text_far _SSAnne9Text_61c2e - text_end - SSAnne9Text12: text_asm - ld hl, SSAnne9Text_61c3d - call PrintText + farcall Func_f2588 jp TextScriptEnd -SSAnne9Text_61c3d: - text_far _SSAnne9Text_61c3d - text_end - SSAnne9Text13: text_asm - ld hl, SSAnne9Text_61c4c - call PrintText + farcall Func_f2594 jp TextScriptEnd -SSAnne9Text_61c4c: - text_far _SSAnne9Text_61c4c - text_end - SSAnne9BattleText1: text_far _SSAnne9BattleText1 text_end diff --git a/scripts/SSAnne2FRooms_2.asm b/scripts/SSAnne2FRooms_2.asm new file mode 100755 index 00000000..2271e83d --- /dev/null +++ b/scripts/SSAnne2FRooms_2.asm @@ -0,0 +1,35 @@ +Func_f2570:: + ld hl, SSAnne9Text_f2577 + call PrintText + ret + +SSAnne9Text_f2577: + text_far _SSAnne9Text_61c1f + text_end + +Func_f257c:: + ld hl, SSAnne9Text_f2583 + call PrintText + ret + +SSAnne9Text_f2583: + text_far _SSAnne9Text_61c2e + text_end + +Func_f2588:: + ld hl, SSAnne9Text_f258f + call PrintText + ret + +SSAnne9Text_f258f: + text_far _SSAnne9Text_61c3d + text_end + +Func_f2594:: + ld hl, SSAnne9Text_f259b + call PrintText + ret + +SSAnne9Text_f259b: + text_far _SSAnne9Text_61c4c + text_end diff --git a/scripts/SSAnneCaptainsRoom.asm b/scripts/SSAnneCaptainsRoom.asm index 3d5c5645..593cd872 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 .done .bag_full ld hl, HM01NoRoomText call PrintText - ld hl, wd72d - set 5, [hl] jr .done .got_item ld hl, SSAnne7Text_61932 @@ -45,12 +45,10 @@ SSAnne7RubText: text_far _SSAnne7RubText text_asm ld a, [wAudioROMBank] - cp BANK(Audio3_UpdateMusic) + cp BANK(AudioEngine3) ld [wAudioSavedROMBank], a jr nz, .asm_61908 - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld a, BANK(Music_PkmnHealed) ld [wAudioROMBank], a .asm_61908 diff --git a/scripts/SafariZoneGate.asm b/scripts/SafariZoneGate.asm index fd9a0884..9e4cc5dd 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 @@ -85,6 +86,8 @@ SafariZoneGate_ScriptPointers: call DisplayTextID xor a ld [wNumSafariBalls], a + ld [wSafariSteps], a + ld [wSafariSteps], a ; ????? ld a, D_DOWN ld c, $3 call SafariZoneEntranceAutoWalk @@ -143,84 +146,10 @@ SafariZoneGate_TextPointers: text_end .SafariZoneEntranceText4 - text_far SafariZoneEntranceText_9e6e4 text_asm - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .PleaseComeAgain - xor a - ldh [hMoney], a - ld a, $05 - ldh [hMoney + 1], a - ld a, $00 - ldh [hMoney + 2], a - call HasEnoughMoney - jr nc, .success - ld hl, .NotEnoughMoneyText - call PrintText - jr .CantPayWalkDown - -.success - xor a - ld [wPriceTemp], a - ld a, $05 - ld [wPriceTemp + 1], a - ld a, $00 - ld [wPriceTemp + 2], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, 3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - ld hl, .MakePaymentText - call PrintText - ld a, 30 - ld [wNumSafariBalls], a - ld a, HIGH(502) - ld [wSafariSteps], a - ld a, LOW(502) - ld [wSafariSteps + 1], a - ld a, D_UP - ld c, 3 - call SafariZoneEntranceAutoWalk - SetEvent EVENT_IN_SAFARI_ZONE - ResetEventReuseHL EVENT_SAFARI_GAME_OVER - ld a, 3 - ld [wSafariZoneGateCurScript], a - jr .done - -.PleaseComeAgain - ld hl, .PleaseComeAgainText - call PrintText -.CantPayWalkDown - ld a, D_DOWN - ld c, 1 - call SafariZoneEntranceAutoWalk - ld a, 4 - ld [wSafariZoneGateCurScript], a -.done + callfar Func_f1f77 jp TextScriptEnd -.MakePaymentText - text_far SafariZoneEntranceText_9e747 - sound_get_item_1 - text_far _SafariZoneEntranceText_75360 - text_end - -.PleaseComeAgainText - text_far _SafariZoneEntranceText_75365 - text_end - -.NotEnoughMoneyText - text_far _SafariZoneEntranceText_7536a - text_end - .SafariZoneEntranceText5 text_far SafariZoneEntranceText_9e814 text_asm @@ -268,26 +197,5 @@ SafariZoneGate_TextPointers: .SafariZoneEntranceText2 text_asm - ld hl, .FirstTimeQuestionText - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - ld hl, .RegularText - jr nz, .Explanation - ld hl, .ExplanationText -.Explanation - call PrintText + callfar Func_f203e jp TextScriptEnd - -.FirstTimeQuestionText - text_far _SafariZoneEntranceText_753e6 - text_end - -.ExplanationText - text_far _SafariZoneEntranceText_753eb - text_end - -.RegularText - text_far _SafariZoneEntranceText_753f0 - text_end diff --git a/scripts/SafariZoneGate2.asm b/scripts/SafariZoneGate2.asm new file mode 100755 index 00000000..6187b2c6 --- /dev/null +++ b/scripts/SafariZoneGate2.asm @@ -0,0 +1,251 @@ +Func_f1f77:: + ld hl, .WelcomeText + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .declined + ld hl, wPlayerMoney + ld a, [hli] + or [hl] + inc hl + or [hl] + jr nz, .has_positive_balance + call SafariZoneEntranceGetLowCostAdmissionText + jr c, .deny_entry + jr .poor_mans_discount + +.has_positive_balance + xor a + ldh [hMoney], a + ld a, $5 + ldh [hMoney + 1], a + ld a, $0 + ldh [hMoney + 2], a + call HasEnoughMoney + jr nc, .has_enough_money + ld hl, .NotEnoughMoneyText + call PrintText + call SafariZoneEntranceCalculateLowCostAdmission + jr c, .deny_entry + jr .poor_mans_discount + +.has_enough_money + xor a + ld [wPriceTemp + 0], a + ld a, $5 + ld [wPriceTemp + 1], a + ld a, $0 + ld [wPriceTemp + 2], a + ld hl, wTrainerInfoTextBoxNextRowOffset + ld de, wPlayerMoney + 2 + ld c, 3 + predef SubBCDPredef + ld a, SFX_PURCHASE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + ld hl, .MakePaymentText + call PrintText + ld a, 30 + ld hl, 502 +.poor_mans_discount + ld [wNumSafariBalls], a + ld a, h + ld [wSafariSteps], a + ld a, l + ld [wSafariSteps + 1], a + ld a, D_UP + ld c, 3 + call SafariZoneEntranceStartSimulatingJoypadStates + SetEvent EVENT_IN_SAFARI_ZONE + ResetEventReuseHL EVENT_SAFARI_GAME_OVER + ld a, $3 + ld [wSafariZoneGateCurScript], a + jr .asm_f2024 +.declined: + ld hl, .PleaseComeAgainText + call PrintText +.deny_entry + ld a, D_DOWN + ld c, 1 + call SafariZoneEntranceStartSimulatingJoypadStates + ld a, $4 + ld [wSafariZoneGateCurScript], a +.asm_f2024 + ret + +.WelcomeText + text_far SafariZoneEntranceText_9e6e4 + text_end + +.MakePaymentText + text_far SafariZoneEntranceText_9e747 + sound_get_item_1 + text_far _SafariZoneEntranceText_75360 + text_end + +.PleaseComeAgainText + text_far _SafariZoneEntranceText_75365 + text_end + +.NotEnoughMoneyText + text_far _SafariZoneEntranceText_7536a + text_end + +Func_f203e:: + ld hl, .FirstTimeQuestionText + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, .RegularText + jr nz, .Explanation + ld hl, .ExplanationText +.Explanation + call PrintText + ret + +.FirstTimeQuestionText + text_far _SafariZoneEntranceText_753e6 + text_end + +.ExplanationText + text_far _SafariZoneEntranceText_753eb + text_end + +.RegularText + text_far _SafariZoneEntranceText_753f0 + text_end + +SafariZoneEntranceStartSimulatingJoypadStates: + push af + ld b, $0 + ld a, c + ld [wSimulatedJoypadStatesIndex], a + ld hl, wParentMenuItem + pop af + call FillMemory + jp StartSimulatingJoypadStates + +SafariZoneEntranceCalculateLowCostAdmission: + ld hl, wPlayerMoney + ld de, hMoney + ld bc, $3 + call CopyData + xor a + ldh [hDivideBCDDivisor], a + ldh [hDivideBCDDivisor + 1], a + ld a, 23 + ldh [hDivideBCDDivisor + 2], a + predef DivideBCDPredef3 + ldh a, [hDivideBCDQuotient + 2] + call SafariZoneEntranceConvertBCDtoNumber + push af + ld hl, wPlayerMoney + xor a + ld bc, $3 + call FillMemory + ld hl, SafariZoneEntranceText_f20c4 + call PrintText_NoCreatingTextBox + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + ld hl, SafariZoneEntranceText_f20c9 + call PrintText + pop af + inc a + jr z, .max_balls + cp 29 + jr c, .load_balls +.max_balls + ld a, 29 +.load_balls + ld hl, 502 + and a + ret + +SafariZoneEntranceText_f20c4: + text_far _SafariZoneLowCostText1 + text_end + +SafariZoneEntranceText_f20c9: + text_far _SafariZoneLowCostText2 + text_end + +SafariZoneEntranceGetLowCostAdmissionText: + ld hl, wSafariSteps + ld a, [hl] + push af + inc [hl] + ld e, a + ld d, $0 + ld hl, Pointers_f2100 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call PrintText + pop af + cp $3 + jr z, .give_one_ball + scf + ret + +.give_one_ball + ld hl, SafariZoneEntranceText_f20f6 + call PrintText_NoCreatingTextBox + ld a, $1 + ld hl, 502 + and a + ret + +SafariZoneEntranceText_f20f6: + text_far _SafariZoneLowCostText3 + sound_get_item_1 + text_far _SafariZoneLowCostText4 + text_end + +Pointers_f2100: + dw SafariZoneEntranceText_f210a + dw SafariZoneEntranceText_f210f + dw SafariZoneEntranceText_f2114 + dw SafariZoneEntranceText_f2119 + dw SafariZoneEntranceText_f2119 + +SafariZoneEntranceText_f210a: + text_far _SafariZoneLowCostText5 + text_end + +SafariZoneEntranceText_f210f: + text_far _SafariZoneLowCostText6 + text_end + +SafariZoneEntranceText_f2114: + text_far _SafariZoneLowCostText7 + text_end + +SafariZoneEntranceText_f2119: + text_far _SafariZoneLowCostText8 + text_end + +SafariZoneEntranceConvertBCDtoNumber: + push hl + ld c, a + and $f + ld l, a + ld h, $0 + ld a, c + and $f0 + swap a + ld bc, 10 + call AddNTimes + ld a, l + pop hl + ret diff --git a/scripts/SaffronPokecenter.asm b/scripts/SaffronPokecenter.asm index 68eb4fc6..f4d9f192 100755 --- a/scripts/SaffronPokecenter.asm +++ b/scripts/SaffronPokecenter.asm @@ -7,6 +7,7 @@ SaffronPokecenter_TextPointers: dw SaffronPokecenterText2 dw SaffronPokecenterText3 dw SaffronTradeNurseText + dw SaffronPokecenterText5 SaffronHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ SaffronPokecenterText3: SaffronTradeNurseText: script_cable_club_receptionist + +SaffronPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/SeafoamIslandsB4F.asm b/scripts/SeafoamIslandsB4F.asm index bf80d3e0..1dd0b7f9 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 f3a7088b..113ceecc 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: dbmapcoord 3, 6 db -1 ; end -SilphCo11Script_62137: +SilphCo11Script_6214f: push hl ld hl, wCardKeyDoorY ld a, [hli] @@ -63,93 +64,17 @@ SilphCo11Script_62137: ldh [hUnlockedSilphCoDoors], a ret -SilphCo11Script_62163: +SilphCo11Script_6217b: ldh a, [hUnlockedSilphCoDoors] and a ret z SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret -SilphCo11Script_6216d: - ld hl, MissableObjectIDs_6219b -.asm_62170 - ld a, [hli] - cp $ff - jr z, .asm_62181 - push hl - ld [wMissableObjectIndex], a - predef HideObject - pop hl - jr .asm_62170 -.asm_62181 - ld hl, MissableObjectIDs_62194 -.asm_62184 - ld a, [hli] - cp -1 - ret z - push hl - ld [wMissableObjectIndex], a - predef ShowObject - pop hl - jr .asm_62184 - -MissableObjectIDs_62194: - db HS_SAFFRON_CITY_8 - db HS_SAFFRON_CITY_9 - db HS_SAFFRON_CITY_A - db HS_SAFFRON_CITY_B - db HS_SAFFRON_CITY_C - db HS_SAFFRON_CITY_D - db -1 ; end - -MissableObjectIDs_6219b: - db HS_SAFFRON_CITY_1 - db HS_SAFFRON_CITY_2 - db HS_SAFFRON_CITY_3 - db HS_SAFFRON_CITY_4 - db HS_SAFFRON_CITY_5 - db HS_SAFFRON_CITY_6 - db HS_SAFFRON_CITY_7 - db HS_SAFFRON_CITY_E - db HS_SAFFRON_CITY_F - db HS_SILPH_CO_2F_2 - db HS_SILPH_CO_2F_3 - db HS_SILPH_CO_2F_4 - db HS_SILPH_CO_2F_5 - db HS_SILPH_CO_3F_1 - db HS_SILPH_CO_3F_2 - db HS_SILPH_CO_4F_1 - db HS_SILPH_CO_4F_2 - db HS_SILPH_CO_4F_3 - db HS_SILPH_CO_5F_1 - db HS_SILPH_CO_5F_2 - db HS_SILPH_CO_5F_3 - db HS_SILPH_CO_5F_4 - db HS_SILPH_CO_6F_1 - db HS_SILPH_CO_6F_2 - db HS_SILPH_CO_6F_3 - db HS_SILPH_CO_7F_1 - db HS_SILPH_CO_7F_2 - db HS_SILPH_CO_7F_3 - db HS_SILPH_CO_7F_4 - db HS_SILPH_CO_8F_1 - db HS_SILPH_CO_8F_2 - db HS_SILPH_CO_8F_3 - db HS_SILPH_CO_9F_1 - db HS_SILPH_CO_9F_2 - db HS_SILPH_CO_9F_3 - db HS_SILPH_CO_10F_1 - db HS_SILPH_CO_10F_2 - db HS_SILPH_CO_11F_1 - db HS_SILPH_CO_11F_2 - db HS_SILPH_CO_11F_3 - db -1 ; end - -SilphCo11Script_621c4: +SilphCo11Script_62185: xor a ld [wJoyIgnore], a - -SilphCo11Script_621c8: +SilphCo11Script_62189: ld [wSilphCo11FCurScript], a ld [wCurMapScript], a ret @@ -161,10 +86,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: dbmapcoord 6, 13 @@ -196,18 +138,18 @@ MovementData_62216: db NPC_MOVEMENT_DOWN db -1 ; end -SilphCo11Script_6221a: +SilphCo11Script_621ff: ld [wPlayerMovingDirection], a - ld a, $3 - ldh [hSpriteIndex], a ld a, b - ldh [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + ld [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 ldh [hSpriteIndexOrTextID], a call DisplayTextID call GBFadeOutToBlack - call SilphCo11Script_6216d + farcall Func_f25a0 call UpdateSprites call Delay3 call GBFadeInFromBlack SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI xor a ld [wJoyIgnore], a - jp SilphCo11Script_621c8 + jp SilphCo11Script_62189 -SilphCo11Script3: +SilphCo11Script4: ld a, [wd730] bit 0, a ret nz @@ -251,26 +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 ldh a, [hSpriteIndex] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters + ld a, $3 + jp SilphCo11Script_62189 + +SilphCo11Script_6229c: + ld a, [wYCoord] + cp $3 + ret nz + ld a, [wXCoord] + cp $4 + ret nc + ResetEvents EVENT_780, EVENT_781 + ld a, [wXCoord] + cp $3 + jr z, .asm_622c3 + SetEventReuseHL EVENT_780 + ld a, [wXCoord] + cp $2 + jr z, .asm_622c3 + ResetEventReuseHL EVENT_780 + SetEventReuseHL EVENT_781 +.asm_622c3 + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + xor a + ldh [hJoyHeld], a + ld a, $fc + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $8 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $ff ld [wJoyIgnore], a + SetEvent EVENT_782 ld a, $5 - jp SilphCo11Script_621c8 + call SilphCo11Script_62189 + ret + +SilphCo11MovementData_622f5: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_622fb: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62300: + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62305: + db $5 + db $5 + db $5 + db $5 + db $5 + db $ff + +SilphCo11MovementData_6230b: + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11MovementData_62311: + db $5 + db $5 + db $5 + db $6 + db $5 + db $5 + db $ff + +SilphCo11Script5: + ld de, SilphCo11MovementData_622f5 + CheckEitherEventSet EVENT_780, EVENT_781 + and a + jr z, .asm_6232d + ld de, SilphCo11MovementData_62300 + cp $1 + jr z, .asm_6232d + ld de, SilphCo11MovementData_6230b +.asm_6232d + ld a, $4 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call SilphCo11Script_62189 + ret + +SilphCo11Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +SilphCo11Script7: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $9 + call SilphCo11Script_62189 + ret + +SilphCo11Script9: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz + ld a, $fc + ld [wJoyIgnore], a +SilphCo11Script10: + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID +SilphCo11Script11: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo11Text_624c2 + ld de, SilphCo11Text_624c2 + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2d + ld [wTrainerNo], a + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ld a, $c + call SilphCo11Script_62189 + ret + +SilphCo11Script12: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo11Script_62185 + ld a, $2 + ld [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 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_MeetJessieJames) + ld a, MUSIC_MEET_JESSIE_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $d + call SilphCo11Script_62189 + ret + +SilphCo11Script13: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_SILPH_CO_11F_JAMES + call SilphCo11Script_6246d + ld a, HS_SILPH_CO_11F_JESSIE + call SilphCo11Script_6246d + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $e + call SilphCo11Script_62189 + ret + +SilphCo11Script14: + call PlayDefaultMusic + xor a + ldh [hJoyHeld], a + ld [wJoyIgnore], a + ResetEvent EVENT_782 + SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + ld a, $0 + call SilphCo11Script_62189 + ret + +SilphCo11Script_6245e: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +SilphCo11Script_6246d: + ld [wMissableObjectIndex], a + predef HideObject + ret SilphCo11F_TextPointers: dw SilphCo11Text1 @@ -279,13 +470,48 @@ SilphCo11F_TextPointers: dw SilphCo11Text4 dw SilphCo11Text5 dw SilphCo11Text6 + dw SilphCo11Text7 + dw SilphCo11Text8 + dw SilphCo11Text9 + dw SilphCo11Text10 SilphCo11TrainerHeader0: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11BattleText1, SilphCo11EndBattleText1, SilphCo11AfterBattleText1 -SilphCo11TrainerHeader1: - trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11BattleText2, SilphCo11EndBattleText2, SilphCo11AfterBattleText2 + trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11Trainer1BattleText, SilphCo11Trainer1EndBattleText, SilphCo11Trainer1AfterBattleText db -1 ; end +SilphCo11Text4: +SilphCo11Text6: +SilphCo11Text8: + text_far _SilphCoJessieJamesText1 + text_asm + ld c, 10 + call DelayFrames + ld a, $4 + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, EXCLAMATION_BUBBLE + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +SilphCo11Text9: + text_far _SilphCoJessieJamesText2 + text_end + +SilphCo11Text_624c2: + text_far _SilphCoJessieJamesText3 + text_end + +SilphCo11Text10: + text_far _SilphCoJessieJamesText4 + text_asm + ld c, 64 + call DelayFrames + jp TextScriptEnd + SilphCo11Text1: text_asm CheckEvent EVENT_GOT_MASTER_BALL @@ -334,58 +560,28 @@ SilphCo11Text3: text_far _SilphCo11Text3 text_end -SilphCo10Text_62330: +SilphCo10Text_62528: text_far _SilphCo10Text_62330 text_end -SilphCo11Text6: +SilphCo11Text7: text_far _SilphCo10Text_62335 text_end -SilphCo11Text4: - text_asm - ld hl, SilphCo11TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd - -SilphCo11BattleText1: - text_far _SilphCo11BattleText1 - text_end - -SilphCo11EndBattleText1: - text_far _SilphCo11EndBattleText1 - text_end - -SilphCo11AfterBattleText1: - text_far _SilphCo11AfterBattleText1 - text_end - SilphCo11Text5: text_asm - ld hl, SilphCo11TrainerHeader1 + ld hl, SilphCo11TrainerHeader0 call TalkToTrainer jp TextScriptEnd -SilphCo11BattleText2: +SilphCo11Trainer1BattleText: text_far _SilphCo11BattleText2 text_end -SilphCo11EndBattleText2: +SilphCo11Trainer1EndBattleText: text_far _SilphCo11EndBattleText2 text_end -SilphCo11AfterBattleText2: +SilphCo11Trainer1AfterBattleText: text_far _SilphCo11AfterBattleText2 text_end - -SilphCo10Text_6236c: - text_asm - ld hl, SilphCo10Text_6237b - call PrintText - ld a, PORYGON - call DisplayPokedex - jp TextScriptEnd - -SilphCo10Text_6237b: - text_far _SilphCo10Text_6237b - text_end diff --git a/scripts/SilphCo11F_2.asm b/scripts/SilphCo11F_2.asm new file mode 100755 index 00000000..c8fd9c3e --- /dev/null +++ b/scripts/SilphCo11F_2.asm @@ -0,0 +1,76 @@ +Func_f25a0:: + ld hl, MissableObjects_f25ce +.asm_f25a3 + ld a, [hli] + cp $ff + jr z, .asm_f25b4 + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .asm_f25a3 + +.asm_f25b4 + ld hl, MissableObjects_f25c7 +.asm_f25b7 + ld a, [hli] + cp $ff + ret z + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .asm_f25b7 + +MissableObjects_f25c7: + db HS_SAFFRON_CITY_8 + db HS_SAFFRON_CITY_9 + db HS_SAFFRON_CITY_A + db HS_SAFFRON_CITY_B + db HS_SAFFRON_CITY_C + db HS_SAFFRON_CITY_D + db $FF + +MissableObjects_f25ce: + db HS_SAFFRON_CITY_1 + db HS_SAFFRON_CITY_2 + db HS_SAFFRON_CITY_3 + db HS_SAFFRON_CITY_4 + db HS_SAFFRON_CITY_5 + db HS_SAFFRON_CITY_6 + db HS_SAFFRON_CITY_7 + db HS_SAFFRON_CITY_E + db HS_SAFFRON_CITY_F + db HS_SILPH_CO_2F_2 + db HS_SILPH_CO_2F_3 + db HS_SILPH_CO_2F_4 + db HS_SILPH_CO_2F_5 + db HS_SILPH_CO_3F_1 + db HS_SILPH_CO_3F_2 + db HS_SILPH_CO_4F_1 + db HS_SILPH_CO_4F_2 + db HS_SILPH_CO_4F_3 + db HS_SILPH_CO_5F_1 + db HS_SILPH_CO_5F_2 + db HS_SILPH_CO_5F_3 + db HS_SILPH_CO_5F_4 + db HS_SILPH_CO_6F_1 + db HS_SILPH_CO_6F_2 + db HS_SILPH_CO_6F_3 + db HS_SILPH_CO_7F_1 + db HS_SILPH_CO_7F_2 + db HS_SILPH_CO_7F_3 + db HS_SILPH_CO_7F_4 + db HS_SILPH_CO_8F_1 + db HS_SILPH_CO_8F_2 + db HS_SILPH_CO_8F_3 + db HS_SILPH_CO_9F_1 + db HS_SILPH_CO_9F_2 + db HS_SILPH_CO_9F_3 + db HS_SILPH_CO_10F_1 + db HS_SILPH_CO_10F_2 + db HS_SILPH_CO_11F_1 + db HS_SILPH_CO_11F_JAMES + db HS_SILPH_CO_11F_2 + db HS_SILPH_CO_11F_JESSIE + db $ff diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm index 59f90f0e..b32f967b 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, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic @@ -186,21 +184,11 @@ SilphCo7Script3: ld a, OPP_RIVAL2 ld [wCurOpponent], a ld a, [wRivalStarter] - cp STARTER2 - jr nz, .asm_51cb6 - ld a, $7 - jr .asm_51cc0 -.asm_51cb6 - cp STARTER3 - jr nz, .asm_51cbe - ld a, $8 - jr .asm_51cc0 -.asm_51cbe - ld a, $9 -.asm_51cc0 + add 4 ld [wTrainerNo], a ld a, $4 - jp SilphCo7Text_51c10 + call SilphCo7Text_51c10 + ret SilphCo7Script4: ld a, [wIsInBattle] @@ -219,9 +207,7 @@ SilphCo7Script4: ld a, $f ldh [hSpriteIndexOrTextID], a call DisplayTextID - ld a, SFX_STOP_ALL_MUSIC - ld [wNewSoundID], a - call PlaySound + call StopAllMusic farcall Music_RivalAlternateStart ld de, MovementData_51d1d ld a, [wcf0d] diff --git a/scripts/TradeCenter.asm b/scripts/TradeCenter.asm index dbed79c1..dbed79c1 100755..100644 --- a/scripts/TradeCenter.asm +++ b/scripts/TradeCenter.asm diff --git a/scripts/VermilionCity.asm b/scripts/VermilionCity.asm index 629bb0c8..8a93b6da 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 + ldh a, [hRandomAdd] + ld b, a ldh a, [hRandomSub] + adc b and $e ld [wFirstLockTrashCanIndex], a ret @@ -40,10 +55,10 @@ VermilionCity_ScriptPointers: VermilionCityScript0: ld a, [wSpritePlayerStateData1FacingDirection] and a ; cp SPRITE_FACING_DOWN - ret nz + jr nz, .return ld hl, SSAnneTicketCheckCoords call ArePlayerCoordsInArray - ret nc + jr nc, .return xor a ldh [hJoyHeld], a ld [wcf0d], a @@ -67,6 +82,9 @@ VermilionCityScript0: ld [wVermilionCityCurScript], a ret +.return + ret + SSAnneTicketCheckCoords: dbmapcoord 18, 30 db -1 ; end @@ -122,11 +140,12 @@ VermilionCity_TextPointers: dw VermilionCityText6 dw VermilionCityText7 dw VermilionCityText8 + dw VermilionCityText9 dw MartSignText dw PokeCenterSignText - dw VermilionCityText11 dw VermilionCityText12 dw VermilionCityText13 + dw VermilionCityText14 VermilionCityText1: text_far _VermilionCityText1 @@ -225,33 +244,43 @@ VermilionCityText5: ld a, MACHOP call PlayCry call WaitForSoundToFinish - ld hl, VermilionCityText14 + ld hl, VermilionCityText15 ret -VermilionCityText14: - text_far _VermilionCityText14 +VermilionCityText15: + text_far _VermilionCityText15 text_end VermilionCityText6: text_far _VermilionCityText6 text_end -VermilionCityText7: - text_far _VermilionCityText7 - text_end - VermilionCityText8: - text_far _VermilionCityText8 - text_end + text_asm + farcall Func_f1a8a + jp TextScriptEnd -VermilionCityText11: - text_far _VermilionCityText11 - text_end +VermilionCityText9: + text_asm + farcall Func_f1a96 + jp TextScriptEnd VermilionCityText12: - text_far _VermilionCityText12 - text_end + text_asm + farcall Func_f1aa2 + jp TextScriptEnd VermilionCityText13: - text_far _VermilionCityText13 - text_end + text_asm + farcall Func_f1aae + jp TextScriptEnd + +VermilionCityText14: + text_asm + farcall Func_f1aba + jp TextScriptEnd + +VermilionCityText7: + text_asm + farcall Func_f1a0f + jp TextScriptEnd diff --git a/scripts/VermilionCity2.asm b/scripts/VermilionCity2.asm new file mode 100755 index 00000000..93aa8df5 --- /dev/null +++ b/scripts/VermilionCity2.asm @@ -0,0 +1,111 @@ +Func_f1a0f:: + CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + jr nz, .asm_f1a69 + ld a, [wBeatGymFlags] + bit 2, a ; THUNDERBADGE + jr nz, .asm_f1a24 + ld hl, OfficerJennyText1 + call PrintText + ret + +.asm_f1a24 + ld hl, OfficerJennyText2 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1a62 + ld a, SQUIRTLE + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, SQUIRTLE, 10 + call GivePokemon + ret nc + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OfficerJennyText3 + call PrintText + SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + ret + +.asm_f1a62 + ld hl, OfficerJennyText4 + call PrintText + ret + +.asm_f1a69 + ld hl, OfficerJennyText5 + call PrintText + ret + +OfficerJennyText1: + text_far _OfficerJennyText1 + text_end + +OfficerJennyText2: + text_far _OfficerJennyText2 + text_end + +OfficerJennyText3: + text_far _OfficerJennyText3 + text_waitbutton + text_end + +OfficerJennyText4: + text_far _OfficerJennyText4 + text_end + +OfficerJennyText5: + text_far _OfficerJennyText5 + text_end + +Func_f1a8a:: + ld hl, VermilionCityText_f1a91 + call PrintText + ret + +VermilionCityText_f1a91: + text_far _VermilionCityText8 + text_end + +Func_f1a96:: + ld hl, VermilionCityText_f1a9d + call PrintText + ret + +VermilionCityText_f1a9d: + text_far _VermilionCityText9 + text_end + +Func_f1aa2:: + ld hl, VermilionCityText_f1aa9 + call PrintText + ret + +VermilionCityText_f1aa9: + text_far _VermilionCityText12 + text_end + +Func_f1aae:: + ld hl, VermilionCityText_f1ab5 + call PrintText + ret + +VermilionCityText_f1ab5: + text_far _VermilionCityText13 + text_end + +Func_f1aba:: + ld hl, VermilionCityText_f1ac1 + call PrintText + ret + +VermilionCityText_f1ac1: + text_far _VermilionCityText14 + text_end diff --git a/scripts/VermilionDock.asm b/scripts/VermilionDock.asm index 728675eb..0263669f 100755 --- a/scripts/VermilionDock.asm +++ b/scripts/VermilionDock.asm @@ -38,10 +38,9 @@ VermilionDock_Script: VermilionDock_1db9b: SetEventForceReuseHL EVENT_SS_ANNE_LEFT - ld a, SFX_STOP_ALL_MUSIC + ld a, $ff ld [wJoyIgnore], a - ld [wNewSoundID], a - call PlaySound + call StopAllMusic ld c, BANK(Music_Surfing) ld a, MUSIC_SURFING call PlayMusic @@ -63,6 +62,7 @@ VermilionDock_1db9b: ldh [hAutoBGTransferEnabled], a ld [wSSAnneSmokeDriftAmount], a ldh [rOBP1], a + call UpdateGBCPal_OBP1 ld a, 88 ld [wSSAnneSmokeX], a ld hl, wMapViewVRAMPointer @@ -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 65b5a3df..dd3b514e 100755 --- a/scripts/VermilionPokecenter.asm +++ b/scripts/VermilionPokecenter.asm @@ -7,6 +7,7 @@ VermilionPokecenter_TextPointers: dw VermilionPokecenterText2 dw VermilionPokecenterText3 dw VermilionTradeNurseText + dw VermilionPokecenterText5 VermilionHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ VermilionPokecenterText3: VermilionTradeNurseText: script_cable_club_receptionist + +VermilionPokecenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/VermilionTradeHouse.asm b/scripts/VermilionTradeHouse.asm index 7fdb9f40..6cdd849a 100755 --- a/scripts/VermilionTradeHouse.asm +++ b/scripts/VermilionTradeHouse.asm @@ -5,8 +5,5 @@ VermilionTradeHouse_TextPointers: dw VermilionHouse3Text1 VermilionHouse3Text1: - text_asm - ld a, TRADE_FOR_DUX - ld [wWhichTrade], a - predef DoInGameTradeDialogue - jp TextScriptEnd + text_far TeachingHMsText + text_end diff --git a/scripts/VictoryRoad1F.asm b/scripts/VictoryRoad1F.asm index b70f0dd4..9d566e6f 100755 --- a/scripts/VictoryRoad1F.asm +++ b/scripts/VictoryRoad1F.asm @@ -29,6 +29,9 @@ VictoryRoad1Script0: ld hl, CoordsData_5da5c call CheckBoulderCoords jp nc, CheckFightingMapTrainers + ldh a, [hSpriteIndex] + cp $f + jp z, CheckFightingMapTrainers ld hl, wCurrentMapScriptFlags set 5, [hl] SetEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH diff --git a/scripts/VictoryRoad2F.asm b/scripts/VictoryRoad2F.asm index 9622206c..e5255674 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 + ldh a, [hSpriteIndexOrTextID] + cp $f + jp z, CheckFightingMapTrainers EventFlagAddress hl, EVENT_VICTORY_ROAD_2_BOULDER_ON_SWITCH1 ld a, [wCoordIndex] cp $2 diff --git a/scripts/VictoryRoad3F.asm b/scripts/VictoryRoad3F.asm index 7febdd3d..f63a71e5 100755 --- a/scripts/VictoryRoad3F.asm +++ b/scripts/VictoryRoad3F.asm @@ -36,6 +36,9 @@ VictoryRoad3Script0: ld a, [wCoordIndex] cp $1 jr nz, .asm_449dc + ldh a, [hSpriteIndexOrTextID] + cp $f ; Pikachu + jp z, .asm_449fe ld hl, wCurrentMapScriptFlags set 5, [hl] SetEvent EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1 diff --git a/scripts/ViridianCity.asm b/scripts/ViridianCity.asm index 96e58a19..d960b9cb 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] @@ -29,19 +44,32 @@ ViridianCityScript_1900b: ld a, [wXCoord] cp 32 ret nz - ld a, $e + ld a, $f ldh [hSpriteIndexOrTextID], a call DisplayTextID + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a xor a + ld [wSpritePlayerStateData1FacingDirection], a + ld [wJoyIgnore], a ldh [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + ld a, $6 ld [wViridianCityCurScript], a ret -ViridianCityScript_1903d: - CheckEvent EVENT_GOT_POKEDEX +ViridianCityScript6: + ld a, [wSimulatedJoypadStatesIndex] + and a ret nz + call Delay3 + ld a, $2 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript_190ab: ld a, [wYCoord] cp 9 ret nz @@ -53,12 +81,31 @@ ViridianCityScript_1903d: call DisplayTextID xor a ldh [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + call ViridianCityScript_1914d + ld a, $5 ld [wViridianCityCurScript], a ret -ViridianCityScript1: +ViridianCityScript3: + call ViridianCityScript_190ef + call ViridianCityScript_190db + ResetEvent EVENT_02F + ld a, $4 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript_190db: + xor a + ld [wListScrollOffset], a + ld a, BATTLE_TYPE_OLD_MAN + ld [wBattleType], a + ld a, 5 + ld [wCurEnemyLVL], a + ld a, RATTATA + ld [wCurOpponent], a + ret + +ViridianCityScript_190ef: ld a, [wSprite03StateData1YPixels] ldh [hSpriteScreenYCoord], a ld a, [wSprite03StateData1XPixels] @@ -67,21 +114,26 @@ ViridianCityScript1: ldh [hSpriteMapYCoord], a ld a, [wSprite03StateData2MapX] ldh [hSpriteMapXCoord], a - xor a - ld [wListScrollOffset], a + ret - ; set up battle for Old Man - ld a, BATTLE_TYPE_OLD_MAN +ViridianCityScript4: + call ViridianCityScript_1912a + call UpdateSprites + call Delay3 + SetEvent EVENT_02E + xor a + ld [wJoyIgnore], a + ld a, $10 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a ld [wBattleType], a - ld a, 5 - ld [wCurEnemyLVL], a - ld a, WEEDLE - ld [wCurOpponent], a + ld [wJoyIgnore], a ld a, $2 ld [wViridianCityCurScript], a ret -ViridianCityScript2: +ViridianCityScript_1912a: ldh a, [hSpriteScreenYCoord] ld [wSprite03StateData1YPixels], a ldh a, [hSpriteScreenXCoord] @@ -90,30 +142,18 @@ ViridianCityScript2: ld [wSprite03StateData2MapY], a ldh a, [hSpriteMapXCoord] ld [wSprite03StateData2MapX], a - call UpdateSprites - call Delay3 - xor a - ld [wJoyIgnore], a - ld a, $f - ldh [hSpriteIndexOrTextID], a - call DisplayTextID - xor a - ld [wBattleType], a - ld [wJoyIgnore], a - ld a, $0 - ld [wViridianCityCurScript], a ret -ViridianCityScript3: +ViridianCityScript5: ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 - ld a, 0 + ld a, $0 ld [wViridianCityCurScript], a ret -ViridianCityScript_190cf: +ViridianCityScript_1914d: call StartSimulatingJoypadStates ld a, $1 ld [wSimulatedJoypadStatesIndex], a @@ -124,204 +164,200 @@ ViridianCityScript_190cf: ld [wJoyIgnore], a ret +ViridianCityScript_19162: + CheckEvent EVENT_02D + ret nz + ld a, [wYCoord] + cp 9 + ret nz + ld a, [wXCoord] + cp 19 + ret nz + ld a, $8 + ldh [hSpriteIndexOrTextID], a + ld a, SPRITE_FACING_RIGHT + ldh [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld a, $8 + ld [wSpritePlayerStateData1FacingDirection], a + ld a, $8 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ret + +ViridianCityScript7: + call ViridianCityScript_190ef + call ViridianCityScript_190db + SetEvent EVENT_02F + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript8: + call ViridianCityScript_1912a + call UpdateSprites + call Delay3 + SetEvent EVENT_02D + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ldh [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wBattleType], a + dec a + ld [wJoyIgnore], a + ld a, $9 + ld [wViridianCityCurScript], a + ret + +ViridianCityScript9: + ld de, ViridianCityOldManMovementData2 + ld a, [wXCoord] + cp 19 + jr z, .asm_191e4 + callfar Func_f1a01 + ld de, ViridianCityOldManMovementData1 +.asm_191e4 + ld a, $8 + ldh [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $a + ld [wViridianCityCurScript], a + ret + +ViridianCityOldManMovementData1: + db NPC_MOVEMENT_RIGHT +ViridianCityOldManMovementData2: + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db $ff + +ViridianCityScript10: + ld a, [wd730] + bit 0, a + ret nz + ld a, $3 + ld [wMissableObjectIndex], a + predef HideObject + xor a + ld [wJoyIgnore], a + ld a, $2 + ld [wViridianCityCurScript], a + ret + ViridianCity_TextPointers: - dw ViridianCityText1 - dw ViridianCityText2 - dw ViridianCityText3 - dw ViridianCityText4 - dw ViridianCityText5 - dw ViridianCityText6 - dw ViridianCityText7 - dw ViridianCityText8 - dw ViridianCityText9 - dw ViridianCityText10 + dw ViridianCityText_0 + dw ViridianCityText_1 + dw ViridianCityText_2 + dw ViridianCityText_3 + dw ViridianCityText_4 + dw ViridianCityText_5 + dw ViridianCityText_6 + dw ViridianCityText_7 + dw ViridianCityText_8 + dw ViridianCityText_9 + dw ViridianCityText_10 dw MartSignText dw PokeCenterSignText - dw ViridianCityText13 - dw ViridianCityText14 - dw ViridianCityText15 + dw ViridianCityText_11 + dw ViridianCityText_12 + dw ViridianCityText_13 -ViridianCityText1: - text_far _ViridianCityText1 - text_end - -ViridianCityText2: +ViridianCityText_0: text_asm - ld a, [wObtainedBadges] - cp $ff ^ (1 << BIT_EARTHBADGE) - ld hl, ViridianCityText_19127 - jr z, .done - CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI - jr nz, .done - ld hl, ViridianCityText_19122 -.done - call PrintText + farcall Func_f18bb jp TextScriptEnd -ViridianCityText_19122: - text_far _ViridianCityText_19122 - text_end - -ViridianCityText_19127: - text_far _ViridianCityText_19127 - text_end - -ViridianCityText3: +ViridianCityText_1: text_asm - ld hl, ViridianCityText_1914d - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .no - ld hl, ViridianCityText_19157 - call PrintText - jr .done -.no - ld hl, ViridianCityText_19152 - call PrintText -.done + farcall Func_f18c7 jp TextScriptEnd -ViridianCityText_1914d: - text_far _ViridianCityText_1914d - text_end - -ViridianCityText_19152: - text_far _ViridianCityText_19152 - text_end - -ViridianCityText_19157: - text_far _ViridianCityText_19157 - text_end - -ViridianCityText4: +ViridianCityText_2: text_asm - CheckEvent EVENT_GOT_POKEDEX - jr nz, .gotPokedex - ld hl, ViridianCityText_19175 - call PrintText - jr .done -.gotPokedex - ld hl, ViridianCityText_1917a - call PrintText -.done + farcall Func_f18e9 jp TextScriptEnd -ViridianCityText_19175: - text_far _ViridianCityText_19175 - text_end - -ViridianCityText_1917a: - text_far _ViridianCityText_1917a - text_end - -ViridianCityText5: +ViridianCityText_3: text_asm - ld hl, ViridianCityText_19191 - call PrintText - call ViridianCityScript_190cf - ld a, $3 - ld [wViridianCityCurScript], a + farcall Func_f1911 jp TextScriptEnd -ViridianCityText_19191: - text_far _ViridianCityText_19191 - text_end - -ViridianCityText6: +ViridianCityText_4: text_asm - CheckEvent EVENT_GOT_TM42 - jr nz, .got_item - ld hl, ViridianCityText_191ca - call PrintText - lb bc, TM_DREAM_EATER, 1 - call GiveItem - jr nc, .bag_full - ld hl, ReceivedTM42Text - call PrintText - SetEvent EVENT_GOT_TM42 - jr .done -.bag_full - ld hl, TM42NoRoomText - call PrintText - jr .done -.got_item - ld hl, TM42Explanation - call PrintText -.done + farcall Func_f192c jp TextScriptEnd -ViridianCityText_191ca: - text_far _ViridianCityText_191ca - text_end - -ReceivedTM42Text: - text_far _ReceivedTM42Text - sound_get_item_2 - text_end +ViridianCityText_5: + text_asm + farcall Func_f194a + jp TextScriptEnd -TM42Explanation: - text_far _TM42Explanation - text_end +ViridianCityText_6: + text_asm + farcall Func_f198e + jp TextScriptEnd -TM42NoRoomText: - text_far _TM42NoRoomText +ViridianCityText_13: + text_far _ViridianCityText_19219 text_end -ViridianCityText7: +ViridianCityText_7: text_asm - ld hl, ViridianCityText_1920a + CheckEvent EVENT_02D + jr nz, .asm_192a6 + ld hl, ViridianCityText_192af call PrintText ld c, 2 call DelayFrames - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr z, .refused - ld hl, ViridianCityText_1920f - call PrintText - ld a, $1 + ld a, $7 ld [wViridianCityCurScript], a - jr .done -.refused - ld hl, ViridianCityText_19214 + jr .asm_192ac + +.asm_192a6 + ld hl, ViridianCityText_192b4 call PrintText -.done +.asm_192ac jp TextScriptEnd -ViridianCityText_1920a: +ViridianCityText_192af: text_far _ViridianCityText_1920a text_end -ViridianCityText_1920f: - text_far _ViridianCityText_1920f - text_end - -ViridianCityText_19214: - text_far _ViridianCityText_19214 +ViridianCityText_192b4: + text_far _OldManTextAfterBattle text_end -ViridianCityText15: - text_far _ViridianCityText_19219 - text_end - -ViridianCityText8: - text_far _ViridianCityText8 - text_end +ViridianCityText_8: + text_asm + farcall Func_f19c5 + jp TextScriptEnd -ViridianCityText9: - text_far _ViridianCityText9 - text_end +ViridianCityText_9: + text_asm + farcall Func_f19d1 + jp TextScriptEnd -ViridianCityText10: - text_far _ViridianCityText10 - text_end +ViridianCityText_10: + text_asm + farcall Func_f19dd + jp TextScriptEnd -ViridianCityText13: - text_far _ViridianCityText13 - text_end +ViridianCityText_11: + text_asm + farcall Func_f19e9 + jp TextScriptEnd -ViridianCityText14: - text_far _ViridianCityText14 - text_end +ViridianCityText_12: + text_asm + farcall Func_f19f5 + jp TextScriptEnd diff --git a/scripts/ViridianCity2.asm b/scripts/ViridianCity2.asm new file mode 100755 index 00000000..c2e8254e --- /dev/null +++ b/scripts/ViridianCity2.asm @@ -0,0 +1,215 @@ +Func_f18bb:: + ld hl, ViridianCityText_f18c2 + call PrintText + ret + +ViridianCityText_f18c2: + text_far _ViridianCityText1 + text_end + +Func_f18c7:: + ld hl, ViridianCityText_19127 + ld a, [wObtainedBadges] + cp $ff ^ (1 << BIT_EARTHBADGE) + jr z, .done + CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI + jr nz, .done + ld hl, ViridianCityText_19122 +.done + call PrintText + ret + +ViridianCityText_19122: + text_far _ViridianCityText_19122 + text_end + +ViridianCityText_19127: + text_far _ViridianCityText_19127 + text_end + +Func_f18e9:: + ld hl, ViridianCityText_f1902 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, ViridianCityText_f1907 + jr nz, .no + ld hl, ViridianCityText_f190c +.no + call PrintText + ret + +ViridianCityText_f1902: + text_far _ViridianCityText_1914d + text_end + +ViridianCityText_f1907: + text_far _ViridianCityText_19152 + text_end + +ViridianCityText_f190c: + text_far _ViridianCityText_19157 + text_end + +Func_f1911:: + ld hl, ViridianCityText_f1927 + CheckEvent EVENT_GOT_POKEDEX + jr nz, .gotPokedex + ld hl, ViridianCityText_f1922 +.gotPokedex + call PrintText + ret + +ViridianCityText_f1922: + text_far _ViridianCityText_19175 + text_end + +ViridianCityText_f1927: + text_far _ViridianCityText_1917a + text_end + +Func_f192c:: + ld hl, ViridianCityText_f1945 + call PrintText + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + ld a, $5 + ld [wViridianCityCurScript], a + ret + +ViridianCityText_f1945: + text_far _ViridianCityText_19191 + text_end + +Func_f194a:: + CheckEvent EVENT_GOT_TM42 + jr nz, .got_item + ld hl, ViridianCityText_191ca + call PrintText + lb bc, TM_DREAM_EATER, 1 + call GiveItem + jr nc, .bag_full + ld hl, ReceivedTM42Text + call PrintText + SetEvent EVENT_GOT_TM42 + ret +.bag_full + ld hl, TM42NoRoomText + call PrintText + ret +.got_item + ld hl, TM42Explanation + call PrintText + ret + +ViridianCityText_191ca: + text_far _ViridianCityText_191ca + text_end + +ReceivedTM42Text: + text_far _ReceivedTM42Text + sound_get_item_2 + text_end + +TM42Explanation: + text_far _TM42Explanation + text_end + +TM42NoRoomText: + text_far _TM42NoRoomText + text_end + +Func_f198e:: + ld hl, ViridianCityText_f19b6 + call PrintText + ld c, 2 + call DelayFrames + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .refused + ld hl, ViridianCityText_f19bb + call PrintText + ld a, $3 + ld [wViridianCityCurScript], a + jr .done +.refused + ld hl, ViridianCityText_f19c0 + call PrintText +.done + ret + +ViridianCityText_f19b6: + text_far _OldManAgainText1 + text_end + +ViridianCityText_f19bb: + text_far _OldManAgainText2 + text_end + +ViridianCityText_f19c0: + text_far _OldManAgainText3 + text_end + +Func_f19c5:: + ld hl, ViridianCityText_f19cc + call PrintText + ret + +ViridianCityText_f19cc: + text_far _ViridianCityText8 + text_end + +Func_f19d1:: + ld hl, ViridianCityText_f19d8 + call PrintText + ret + +ViridianCityText_f19d8: + text_far _ViridianCityText9 + text_end + +Func_f19dd:: + ld hl, ViridianCityText_f19e4 + call PrintText + ret + +ViridianCityText_f19e4: + text_far _ViridianCityText10 + text_end + +Func_f19e9:: + ld hl, ViridianCityText_f19f0 + call PrintText + ret + +ViridianCityText_f19f0: + text_far _ViridianCityText13 + text_end + +Func_f19f5:: + ld hl, ViridianCityText_f19fc + call PrintText + ret + +ViridianCityText_f19fc: + text_far _ViridianCityText14 + text_end + + +Func_f1a01:: + ld hl, Data_f1a0a + ld b, SPRITE_FACING_RIGHT + call TryApplyPikachuMovementData + ret + +Data_f1a0a: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/ViridianForest.asm b/scripts/ViridianForest.asm index a7e4acf8..ca212d8e 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: trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_0, 4, ViridianForestBattleText1, ViridianForestEndBattleText1, ViridianForestAfterBattleText1 @@ -34,6 +36,10 @@ ViridianForestTrainerHeader1: trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_1, 4, ViridianForestBattleText2, ViridianForestEndBattleText2, ViridianForestAfterBattleText2 ViridianForestTrainerHeader2: trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_2, 1, ViridianForestBattleText3, ViridianForestEndBattleText3, ViridianForestAfterBattleText3 +ViridianForestTrainerHeader3: + trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3, 0, ViridianForestBattleText4, ViridianForestEndBattleText4, ViridianForestAfterBattleText4 +ViridianForestTrainerHeader4: + trainer EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4, 4, ViridianForestBattleText5, ViridianForestEndBattleText5, ViridianForestAfterBattleText5 db -1 ; end ViridianForestText1: @@ -43,18 +49,27 @@ ViridianForestText1: ViridianForestText2: text_asm ld hl, ViridianForestTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText3: text_asm ld hl, ViridianForestTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText4: text_asm ld hl, ViridianForestTrainerHeader2 + jr ViridianForestTalkToTrainer + +ViridianForestText5: + text_asm + ld hl, ViridianForestTrainerHeader3 + jr ViridianForestTalkToTrainer + +ViridianForestText6: + text_asm + ld hl, ViridianForestTrainerHeader4 +ViridianForestTalkToTrainer: call TalkToTrainer jp TextScriptEnd @@ -94,30 +109,63 @@ ViridianForestAfterBattleText3: text_far _ViridianFrstAfterBattleText3 text_end -ViridianForestText8: - text_far _ViridianForestText8 +ViridianForestBattleText4: + text_far _ViridianForestBattleTextPikaGirl + text_end + +ViridianForestEndBattleText4: + text_far _ViridianForestEndBattleTextPikaGirl + text_end + +ViridianForestAfterBattleText4: + text_far _ViridianForestAfterBattleTextPikaGirl + text_end + +ViridianForestBattleText5: + text_far _ViridianForestBattleTextSamurai text_end -ViridianForestText9: - text_far _ViridianForestText9 +ViridianForestEndBattleText5: + text_far _ViridianForestEndBattleTextSamurai + text_end + +ViridianForestAfterBattleText5: + text_far _ViridianForestAfterBattleTextSamurai text_end ViridianForestText10: - text_far _ViridianForestText10 + text_far _ViridianForestText8 text_end ViridianForestText11: - text_far _ViridianForestText11 - text_end + text_asm + ld hl, Func_f2528 + jp ViridianForestScript_6120d ViridianForestText12: - text_far _ViridianForestText12 - text_end + text_asm + ld hl, Func_f2534 + jp ViridianForestScript_6120d ViridianForestText13: - text_far _ViridianForestText13 - text_end + text_asm + ld hl, Func_f2540 + jp ViridianForestScript_6120d ViridianForestText14: - text_far _ViridianForestText14 - text_end + text_asm + ld hl, Func_f254c + jp ViridianForestScript_6120d + +ViridianForestText15: + text_asm + ld hl, Func_f2558 + jp ViridianForestScript_6120d + +ViridianForestText16: + text_asm + ld hl, Func_f2528 +ViridianForestScript_6120d: + ld b, BANK(Func_f2528) + call Bankswitch + jp TextScriptEnd diff --git a/scripts/ViridianForest2.asm b/scripts/ViridianForest2.asm new file mode 100755 index 00000000..e5f03ccb --- /dev/null +++ b/scripts/ViridianForest2.asm @@ -0,0 +1,53 @@ +Func_f2528:: + ld hl, Text_f252f + call PrintText + ret + +Text_f252f: + text_far _ViridianForestText9 + text_end + +Func_f2534:: + ld hl, Text_f253b + call PrintText + ret + +Text_f253b: + text_far _ViridianForestText10 + text_end + +Func_f2540:: + ld hl, Text_f254a + call PrintText + ret + +Text_f254a: + text_far _ViridianForestText11 + text_end + +Func_f254c:: + ld hl, Text_f2553 + call PrintText + ret + +Text_f2553: + text_far _ViridianForestText12 + text_end + +Func_f2558:: + ld hl, Text_f255f + call PrintText + ret + +Text_f255f: + text_far _ViridianForestText13 + text_end + +Func_f2564: + ld hl, ViridianForestText_f256b + call PrintText + ret + +ViridianForestText_f256b: + text_far _ViridianForestText14 + text_end diff --git a/scripts/ViridianForestSouthGate.asm b/scripts/ViridianForestSouthGate.asm index 996ac2ae..7ef66b85 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 f71cc6ef..2d837018 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 08577678..25f4d637 100755 --- a/scripts/ViridianPokecenter.asm +++ b/scripts/ViridianPokecenter.asm @@ -7,6 +7,7 @@ ViridianPokecenter_TextPointers: dw ViridianPokeCenterText2 dw ViridianPokeCenterText3 dw ViridianTradeNurseText + dw ViridianPokeCenterText5 ViridianHealNurseText: script_pokecenter_nurse @@ -21,3 +22,8 @@ ViridianPokeCenterText3: ViridianTradeNurseText: script_cable_club_receptionist + +ViridianPokeCenterText5: + text_asm + callfar PokecenterChanseyText + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse.asm b/scripts/ViridianSchoolHouse.asm index 731e2dac..77dffa38 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: text_far _SchoolText1 text_end SchoolText2: - text_far _SchoolText2 - text_end + text_asm + farcall Func_f1c0f + jp TextScriptEnd + +SchoolText3: + text_asm + farcall Func_f1c03 + jp TextScriptEnd diff --git a/scripts/ViridianSchoolHouse2.asm b/scripts/ViridianSchoolHouse2.asm new file mode 100755 index 00000000..e5644830 --- /dev/null +++ b/scripts/ViridianSchoolHouse2.asm @@ -0,0 +1,17 @@ +Func_f1c03:: + ld hl, SchoolText_f1c0a + call PrintText + ret + +SchoolText_f1c0a: + text_far _SchoolText3 + text_end + +Func_f1c0f:: + ld hl, SchoolText_f1c16 + call PrintText + ret + +SchoolText_f1c16: + text_far _SchoolText2 + text_end |